From 2872a18c039f8a2de47336947936b77b5f2e6fda Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sun, 19 Jul 2020 14:52:47 +0900 Subject: [PATCH 1/8] Added Initial Code --- kadai3-1/segakazzz/.gitignore | 1 + kadai3-1/segakazzz/command/go.mod | 7 + kadai3-1/segakazzz/command/go.sum | 1 + kadai3-1/segakazzz/command/main.go | 17 + kadai3-1/segakazzz/testdata/words.json | 10002 +++++++++++++++++++++++ kadai3-1/segakazzz/tpgame/go.mod | 3 + kadai3-1/segakazzz/tpgame/tygame.go | 157 + 7 files changed, 10188 insertions(+) create mode 100644 kadai3-1/segakazzz/.gitignore create mode 100644 kadai3-1/segakazzz/command/go.mod create mode 100644 kadai3-1/segakazzz/command/go.sum create mode 100644 kadai3-1/segakazzz/command/main.go create mode 100644 kadai3-1/segakazzz/testdata/words.json create mode 100644 kadai3-1/segakazzz/tpgame/go.mod create mode 100644 kadai3-1/segakazzz/tpgame/tygame.go diff --git a/kadai3-1/segakazzz/.gitignore b/kadai3-1/segakazzz/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/kadai3-1/segakazzz/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/kadai3-1/segakazzz/command/go.mod b/kadai3-1/segakazzz/command/go.mod new file mode 100644 index 0000000..8a40b73 --- /dev/null +++ b/kadai3-1/segakazzz/command/go.mod @@ -0,0 +1,7 @@ +module github.com/gopherdojo/dojo8/kadai3-1/segakazzz/command + +go 1.14 + +replace github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame => ../tpgame + +require github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame v0.0.0-00010101000000-000000000000 // indirect diff --git a/kadai3-1/segakazzz/command/go.sum b/kadai3-1/segakazzz/command/go.sum new file mode 100644 index 0000000..a632da4 --- /dev/null +++ b/kadai3-1/segakazzz/command/go.sum @@ -0,0 +1 @@ +github.com/gopherdojo/dojo8 v0.0.0-20200703052727-6a79d18126bf h1:lpYevjFQMxI5VNBc3WXV6Z5pDDrdppdDKwmeBoyt5BE= diff --git a/kadai3-1/segakazzz/command/main.go b/kadai3-1/segakazzz/command/main.go new file mode 100644 index 0000000..162be24 --- /dev/null +++ b/kadai3-1/segakazzz/command/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame" + "os" + "time" +) + +func main (){ + + err := tpgame.Run("../testdata/words.json", 10 * time.Second) + if err != nil { + os.Exit(1) + } + os.Exit(0) +} + diff --git a/kadai3-1/segakazzz/testdata/words.json b/kadai3-1/segakazzz/testdata/words.json new file mode 100644 index 0000000..952fcff --- /dev/null +++ b/kadai3-1/segakazzz/testdata/words.json @@ -0,0 +1,10002 @@ +[ + "recall", + "work", + "cold", + "star", + "stick", + "bell", + "remove", + "cannot", + "transportation", + "primitive", + "combination", + "serious", + "stream", + "take", + "bread", + "over", + "belt", + "spend", + "married", + "depend", + "nobody", + "corn", + "visitor", + "of", + "oil", + "boy", + "slabs", + "fastened", + "park", + "black", + "breath", + "death", + "faster", + "queen", + "mysterious", + "cross", + "shop", + "queen", + "plenty", + "composition", + "stuck", + "pocket", + "brain", + "shells", + "above", + "soldier", + "mine", + "than", + "collect", + "color", + "among", + "dirty", + "completely", + "news", + "gate", + "skill", + "feathers", + "degree", + "service", + "electricity", + "room", + "no", + "mice", + "act", + "eager", + "guard", + "highest", + "support", + "too", + "change", + "plant", + "street", + "old", + "engineer", + "ride", + "upon", + "lunch", + "social", + "example", + "children", + "darkness", + "road", + "breeze", + "ago", + "dark", + "caught", + "war", + "wave", + "driven", + "mass", + "only", + "spell", + "bit", + "than", + "wrong", + "hang", + "sheet", + "safe", + "consider", + "laugh", + "including", + "tribe", + "rubber", + "army", + "she", + "held", + "therefore", + "clean", + "mixture", + "manufacturing", + "weight", + "happen", + "secret", + "original", + "far", + "seeing", + "sun", + "earth", + "thousand", + "dried", + "now", + "difficulty", + "course", + "closely", + "fix", + "program", + "pilot", + "traffic", + "period", + "split", + "personal", + "kind", + "sat", + "muscle", + "serve", + "angry", + "early", + "flag", + "rays", + "social", + "dried", + "nuts", + "warm", + "knowledge", + "shall", + "leg", + "attempt", + "driver", + "heard", + "this", + "car", + "available", + "late", + "shape", + "finest", + "location", + "claws", + "dozen", + "stream", + "score", + "store", + "buy", + "putting", + "completely", + "than", + "policeman", + "newspaper", + "package", + "product", + "common", + "nearest", + "red", + "beat", + "skill", + "stop", + "told", + "captain", + "worth", + "dream", + "volume", + "valuable", + "grass", + "result", + "wish", + "inch", + "clear", + "quarter", + "affect", + "angry", + "protection", + "mail", + "toy", + "familiar", + "summer", + "equally", + "straw", + "clothing", + "outline", + "surprise", + "machine", + "second", + "themselves", + "complete", + "through", + "hurried", + "citizen", + "gray", + "allow", + "hold", + "beginning", + "fall", + "glass", + "tobacco", + "affect", + "consonant", + "carbon", + "led", + "break", + "scientist", + "higher", + "loss", + "swimming", + "wild", + "orbit", + "know", + "lay", + "onlinetools", + "giving", + "chief", + "kill", + "recall", + "south", + "muscle", + "pour", + "popular", + "below", + "horn", + "repeat", + "knew", + "mud", + "cross", + "soil", + "tail", + "pick", + "slabs", + "shells", + "rock", + "wild", + "spirit", + "still", + "vapor", + "setting", + "fall", + "trick", + "tears", + "memory", + "heavy", + "mighty", + "close", + "courage", + "trade", + "whom", + "during", + "storm", + "ordinary", + "help", + "half", + "worried", + "farmer", + "thought", + "kill", + "familiar", + "mile", + "wonder", + "brick", + "hungry", + "instance", + "all", + "nice", + "discussion", + "particularly", + "kids", + "fewer", + "pole", + "been", + "vast", + "soft", + "spread", + "straight", + "hurt", + "court", + "yet", + "visitor", + "base", + "nuts", + "safe", + "everybody", + "ancient", + "bit", + "rate", + "forgotten", + "noon", + "bat", + "lamp", + "close", + "far", + "machinery", + "extra", + "anyone", + "sets", + "victory", + "taught", + "allow", + "develop", + "closer", + "fight", + "floor", + "element", + "doing", + "worse", + "common", + "exercise", + "answer", + "make", + "wheat", + "parallel", + "wrong", + "star", + "enough", + "speed", + "twelve", + "bowl", + "unknown", + "audience", + "butter", + "transportation", + "unit", + "have", + "large", + "felt", + "nearly", + "give", + "refer", + "animal", + "political", + "saw", + "small", + "earlier", + "believed", + "rule", + "waste", + "whatever", + "direction", + "completely", + "had", + "full", + "free", + "pure", + "climate", + "fewer", + "count", + "dig", + "whole", + "free", + "stove", + "hurried", + "are", + "some", + "kill", + "ability", + "wonder", + "within", + "freedom", + "refused", + "square", + "impossible", + "closer", + "began", + "obtain", + "valley", + "wrapped", + "tea", + "met", + "tip", + "common", + "until", + "spin", + "explore", + "his", + "pink", + "tightly", + "eat", + "sitting", + "kids", + "monkey", + "care", + "beyond", + "hope", + "fort", + "hide", + "our", + "chart", + "longer", + "favorite", + "rays", + "grade", + "crop", + "central", + "farm", + "headed", + "prepare", + "slope", + "finger", + "none", + "seven", + "start", + "ate", + "history", + "tent", + "stretch", + "locate", + "living", + "bottle", + "fill", + "slabs", + "waste", + "hunt", + "western", + "sold", + "baseball", + "do", + "yesterday", + "movie", + "snake", + "quite", + "home", + "so", + "beat", + "tower", + "ordinary", + "upper", + "gold", + "gray", + "rapidly", + "condition", + "having", + "year", + "machine", + "boat", + "discovery", + "mouse", + "smell", + "clean", + "newspaper", + "middle", + "get", + "hollow", + "excited", + "tax", + "met", + "surface", + "bring", + "now", + "larger", + "fellow", + "sand", + "shall", + "theory", + "useful", + "gentle", + "leave", + "explanation", + "lion", + "pine", + "except", + "right", + "skill", + "memory", + "meet", + "dinner", + "ice", + "feel", + "nearby", + "song", + "deeply", + "though", + "pupil", + "importance", + "were", + "grandfather", + "bigger", + "egg", + "island", + "angry", + "charge", + "shallow", + "gently", + "basic", + "angle", + "family", + "cup", + "automobile", + "sent", + "tired", + "garage", + "decide", + "attack", + "roll", + "today", + "worry", + "north", + "brown", + "spread", + "room", + "black", + "enough", + "mathematics", + "continent", + "construction", + "upward", + "good", + "enjoy", + "eleven", + "interest", + "store", + "mission", + "whether", + "screen", + "pain", + "soap", + "minerals", + "chemical", + "wife", + "needed", + "government", + "deer", + "stood", + "land", + "arrive", + "think", + "bottle", + "proper", + "brain", + "green", + "visitor", + "old", + "finger", + "involved", + "paragraph", + "here", + "straight", + "thousand", + "value", + "crowd", + "instant", + "thy", + "thing", + "ride", + "lying", + "throat", + "instant", + "music", + "situation", + "traffic", + "space", + "jump", + "history", + "replace", + "bowl", + "inch", + "similar", + "goose", + "began", + "title", + "balloon", + "suddenly", + "worse", + "draw", + "stove", + "sound", + "brass", + "subject", + "floor", + "shine", + "fallen", + "settlers", + "government", + "swung", + "winter", + "must", + "opinion", + "factor", + "shadow", + "sides", + "shells", + "everything", + "snake", + "row", + "met", + "perfect", + "baseball", + "likely", + "spirit", + "image", + "poem", + "his", + "second", + "storm", + "poem", + "property", + "former", + "purpose", + "bear", + "flat", + "give", + "his", + "mouth", + "ocean", + "port", + "pale", + "winter", + "chart", + "party", + "including", + "attention", + "speak", + "trace", + "space", + "have", + "though", + "sit", + "climb", + "mainly", + "station", + "careful", + "kind", + "excitement", + "rest", + "remain", + "husband", + "without", + "string", + "definition", + "review", + "train", + "modern", + "establish", + "account", + "sides", + "plane", + "wealth", + "ran", + "cloth", + "bottle", + "fair", + "mission", + "quarter", + "ride", + "disease", + "dried", + "heat", + "said", + "easily", + "vapor", + "week", + "hardly", + "appearance", + "beginning", + "possible", + "central", + "pony", + "pleasant", + "eaten", + "seldom", + "public", + "fur", + "brass", + "frozen", + "idea", + "husband", + "airplane", + "distance", + "hearing", + "dance", + "bean", + "planning", + "express", + "rod", + "however", + "frighten", + "return", + "bat", + "learn", + "rate", + "him", + "sheep", + "favorite", + "seat", + "camera", + "basic", + "fruit", + "smile", + "why", + "three", + "prepare", + "slave", + "frog", + "sheet", + "office", + "stand", + "damage", + "ought", + "listen", + "proper", + "private", + "stream", + "fresh", + "double", + "beyond", + "laid", + "office", + "climb", + "plates", + "correct", + "brass", + "expression", + "worry", + "putting", + "leaf", + "original", + "high", + "camera", + "smooth", + "outer", + "proud", + "sudden", + "example", + "fewer", + "heat", + "street", + "climb", + "meant", + "window", + "older", + "mental", + "fog", + "area", + "call", + "tide", + "film", + "tip", + "topic", + "headed", + "become", + "whole", + "sense", + "finest", + "coal", + "motion", + "grown", + "pony", + "top", + "land", + "empty", + "powder", + "temperature", + "could", + "center", + "pen", + "within", + "college", + "giant", + "step", + "were", + "eight", + "way", + "who", + "central", + "planning", + "lovely", + "example", + "stopped", + "check", + "spirit", + "policeman", + "transportation", + "package", + "closer", + "hospital", + "attached", + "jungle", + "evidence", + "honor", + "fellow", + "corner", + "heading", + "thousand", + "lack", + "brief", + "value", + "sheet", + "various", + "tent", + "third", + "manufacturing", + "program", + "shinning", + "manner", + "usual", + "colony", + "row", + "rhyme", + "require", + "former", + "drive", + "police", + "hurry", + "young", + "fruit", + "reader", + "our", + "water", + "variety", + "principle", + "direct", + "invented", + "take", + "record", + "breakfast", + "view", + "men", + "flame", + "metal", + "wonder", + "weight", + "begun", + "goes", + "season", + "stomach", + "high", + "stared", + "daily", + "different", + "shells", + "spring", + "soap", + "write", + "there", + "count", + "though", + "detail", + "softly", + "remember", + "through", + "type", + "shown", + "draw", + "increase", + "suddenly", + "telephone", + "border", + "will", + "pony", + "dark", + "floor", + "something", + "variety", + "just", + "under", + "edge", + "children", + "firm", + "middle", + "there", + "owner", + "enjoy", + "women", + "slightly", + "soft", + "tube", + "produce", + "boy", + "coming", + "possible", + "record", + "something", + "bill", + "most", + "call", + "from", + "base", + "pain", + "master", + "rain", + "rubber", + "eager", + "wide", + "improve", + "truck", + "furniture", + "function", + "fuel", + "piece", + "breakfast", + "grandmother", + "already", + "hard", + "power", + "common", + "angry", + "amount", + "various", + "while", + "from", + "thou", + "each", + "limited", + "lucky", + "rapidly", + "sister", + "arrive", + "growth", + "distant", + "past", + "since", + "many", + "soft", + "jack", + "children", + "child", + "word", + "construction", + "nest", + "vertical", + "easily", + "population", + "discussion", + "satellites", + "garage", + "lips", + "corn", + "felt", + "combine", + "brave", + "enough", + "leave", + "practice", + "food", + "stepped", + "whatever", + "happily", + "consider", + "activity", + "rain", + "quite", + "price", + "somebody", + "fix", + "somebody", + "lesson", + "alone", + "asleep", + "train", + "negative", + "putting", + "oil", + "cream", + "mice", + "finger", + "bigger", + "wide", + "coming", + "contrast", + "program", + "chosen", + "stems", + "method", + "fall", + "simple", + "especially", + "political", + "cowboy", + "fall", + "easily", + "carbon", + "fall", + "knife", + "discover", + "hung", + "name", + "spell", + "shaking", + "every", + "silk", + "tape", + "certainly", + "parallel", + "break", + "detail", + "conversation", + "whole", + "beautiful", + "swim", + "shinning", + "impossible", + "concerned", + "themselves", + "bottom", + "until", + "find", + "announced", + "unless", + "cannot", + "imagine", + "care", + "explain", + "loss", + "west", + "milk", + "eager", + "term", + "ruler", + "past", + "known", + "program", + "deer", + "cap", + "partly", + "sat", + "found", + "scientific", + "line", + "make", + "over", + "symbol", + "laid", + "clock", + "pack", + "five", + "but", + "president", + "rock", + "fastened", + "produce", + "cotton", + "please", + "ten", + "sharp", + "he", + "call", + "trap", + "thin", + "thumb", + "why", + "trail", + "easier", + "long", + "chapter", + "depth", + "circus", + "milk", + "throw", + "brown", + "matter", + "explain", + "noted", + "disease", + "red", + "constantly", + "wise", + "bright", + "object", + "there", + "provide", + "date", + "something", + "wore", + "substance", + "smile", + "due", + "fight", + "underline", + "citizen", + "sing", + "shout", + "everywhere", + "tiny", + "air", + "building", + "strike", + "various", + "suppose", + "fed", + "cap", + "likely", + "explanation", + "battle", + "piece", + "twice", + "harbor", + "mile", + "attention", + "tried", + "join", + "train", + "leaving", + "fresh", + "author", + "program", + "stock", + "method", + "camp", + "skill", + "pupil", + "baby", + "shape", + "ought", + "owner", + "gray", + "path", + "jungle", + "vowel", + "alike", + "today", + "shine", + "new", + "price", + "oxygen", + "corn", + "this", + "eager", + "not", + "she", + "scientist", + "on", + "itself", + "happen", + "saw", + "fear", + "find", + "money", + "together", + "was", + "ear", + "jump", + "practical", + "neck", + "material", + "known", + "shot", + "badly", + "discussion", + "real", + "truck", + "worth", + "flag", + "full", + "avoid", + "else", + "indicate", + "wash", + "describe", + "mice", + "stuck", + "shoe", + "instrument", + "term", + "cast", + "quietly", + "below", + "monkey", + "immediately", + "occur", + "between", + "snow", + "speech", + "condition", + "suddenly", + "stood", + "town", + "throughout", + "age", + "special", + "game", + "shade", + "other", + "steady", + "wild", + "create", + "happen", + "might", + "then", + "laid", + "cool", + "raise", + "front", + "east", + "harbor", + "thrown", + "sheet", + "herself", + "already", + "percent", + "round", + "mistake", + "wolf", + "impossible", + "full", + "trace", + "rear", + "idea", + "nature", + "accept", + "lay", + "by", + "future", + "duty", + "shoe", + "eager", + "cup", + "replied", + "complete", + "too", + "hunt", + "describe", + "rich", + "agree", + "adult", + "influence", + "order", + "generally", + "industrial", + "rate", + "outer", + "sharp", + "maybe", + "meat", + "fighting", + "drove", + "enjoy", + "aloud", + "poet", + "bad", + "ago", + "melted", + "peace", + "atmosphere", + "silly", + "hide", + "fish", + "mix", + "range", + "thick", + "earth", + "grass", + "piano", + "copy", + "string", + "eager", + "tales", + "bridge", + "kept", + "either", + "ride", + "wish", + "middle", + "people", + "north", + "power", + "mission", + "egg", + "liquid", + "driven", + "discussion", + "market", + "full", + "nearly", + "force", + "only", + "rapidly", + "shelter", + "fellow", + "fellow", + "sight", + "include", + "maybe", + "phrase", + "straight", + "story", + "afraid", + "moving", + "by", + "both", + "dull", + "ought", + "fallen", + "floor", + "shall", + "newspaper", + "whale", + "coast", + "brown", + "chance", + "show", + "himself", + "consist", + "pair", + "baseball", + "local", + "happen", + "account", + "disease", + "center", + "deep", + "labor", + "pan", + "production", + "caught", + "do", + "compound", + "just", + "scared", + "how", + "remarkable", + "job", + "frequently", + "tie", + "cheese", + "poor", + "can", + "importance", + "support", + "board", + "row", + "salt", + "aloud", + "manner", + "strip", + "you", + "experiment", + "instance", + "few", + "someone", + "therefore", + "electric", + "lying", + "brother", + "earth", + "chamber", + "party", + "birds", + "not", + "burn", + "industrial", + "slight", + "invented", + "garage", + "mark", + "perhaps", + "tiny", + "amount", + "jack", + "dark", + "command", + "dish", + "red", + "fast", + "date", + "nearer", + "farmer", + "draw", + "life", + "something", + "solve", + "today", + "happily", + "elephant", + "product", + "friend", + "am", + "mysterious", + "swept", + "vote", + "verb", + "thee", + "before", + "early", + "surprise", + "dirty", + "get", + "party", + "sky", + "die", + "apartment", + "best", + "education", + "hide", + "nervous", + "success", + "children", + "condition", + "pine", + "ordinary", + "earth", + "live", + "beside", + "building", + "missing", + "bone", + "some", + "sunlight", + "material", + "due", + "leg", + "detail", + "itself", + "discussion", + "pen", + "high", + "year", + "welcome", + "congress", + "bill", + "guide", + "sunlight", + "automobile", + "eventually", + "had", + "he", + "built", + "slide", + "nearby", + "stay", + "trunk", + "giant", + "money", + "letter", + "speed", + "milk", + "mother", + "planned", + "political", + "warm", + "having", + "nails", + "hit", + "fight", + "black", + "yet", + "jack", + "at", + "vessels", + "powerful", + "combination", + "alone", + "activity", + "strike", + "girl", + "fox", + "memory", + "affect", + "later", + "wolf", + "shout", + "yellow", + "consonant", + "plan", + "add", + "wore", + "earlier", + "certainly", + "plane", + "audience", + "motion", + "volume", + "right", + "satisfied", + "forest", + "transportation", + "specific", + "rocket", + "meant", + "check", + "ride", + "disease", + "fog", + "hope", + "rush", + "joy", + "feet", + "noun", + "brick", + "around", + "indeed", + "chart", + "store", + "raise", + "effort", + "hello", + "caught", + "brave", + "wild", + "want", + "slept", + "rate", + "cent", + "then", + "hung", + "sent", + "letter", + "decide", + "solution", + "machine", + "motor", + "daughter", + "numeral", + "warm", + "children", + "than", + "strength", + "advice", + "road", + "various", + "driver", + "invented", + "mirror", + "card", + "perhaps", + "done", + "price", + "mysterious", + "own", + "note", + "about", + "safe", + "replace", + "still", + "movement", + "am", + "enter", + "wear", + "wave", + "view", + "cold", + "hung", + "knew", + "love", + "queen", + "call", + "ill", + "but", + "moon", + "southern", + "arm", + "natural", + "hair", + "search", + "realize", + "port", + "judge", + "improve", + "use", + "invented", + "function", + "original", + "machinery", + "either", + "shade", + "milk", + "slope", + "desert", + "pressure", + "cannot", + "sets", + "electric", + "dirt", + "way", + "been", + "deer", + "offer", + "nearer", + "fun", + "again", + "grow", + "rapidly", + "either", + "silly", + "forget", + "equator", + "species", + "floating", + "powder", + "lying", + "pupil", + "him", + "family", + "air", + "anything", + "stomach", + "ten", + "fox", + "dropped", + "congress", + "offer", + "nuts", + "health", + "machinery", + "within", + "newspaper", + "swam", + "view", + "slight", + "dance", + "camera", + "dry", + "rocky", + "rays", + "danger", + "ranch", + "pupil", + "race", + "sale", + "scientific", + "garden", + "useful", + "bus", + "clothing", + "television", + "wall", + "pass", + "organization", + "thumb", + "nearer", + "coat", + "audience", + "branch", + "include", + "cloud", + "daily", + "parent", + "modern", + "rear", + "including", + "local", + "lunch", + "crack", + "attached", + "moment", + "twelve", + "scientific", + "cowboy", + "volume", + "appropriate", + "scale", + "is", + "grandfather", + "child", + "suit", + "promised", + "ought", + "having", + "him", + "post", + "selection", + "camp", + "castle", + "enter", + "prize", + "group", + "street", + "sat", + "simplest", + "fully", + "ants", + "nest", + "product", + "grow", + "fast", + "give", + "smaller", + "merely", + "repeat", + "parent", + "neck", + "tent", + "development", + "drove", + "buried", + "cave", + "equally", + "size", + "college", + "object", + "willing", + "amount", + "dog", + "worried", + "trick", + "largest", + "excitement", + "promised", + "sport", + "mountain", + "usually", + "per", + "enjoy", + "sheep", + "spread", + "can", + "additional", + "space", + "single", + "oxygen", + "broke", + "swim", + "experiment", + "city", + "shelter", + "drew", + "walk", + "welcome", + "meal", + "bear", + "former", + "pine", + "needs", + "discovery", + "dangerous", + "valley", + "whale", + "shells", + "shirt", + "tone", + "depth", + "piano", + "clothing", + "lift", + "pupil", + "independent", + "brief", + "coast", + "shall", + "copper", + "rule", + "income", + "bet", + "its", + "gone", + "provide", + "he", + "we", + "surrounded", + "blood", + "income", + "tightly", + "brush", + "bell", + "barn", + "sunlight", + "present", + "eye", + "everyone", + "section", + "anyone", + "able", + "car", + "religious", + "writer", + "stairs", + "shown", + "paper", + "salt", + "start", + "cloth", + "branch", + "at", + "death", + "officer", + "noon", + "knife", + "anybody", + "wire", + "deer", + "image", + "straight", + "push", + "run", + "develop", + "grown", + "cool", + "mud", + "check", + "dream", + "uncle", + "part", + "except", + "hall", + "complex", + "actual", + "branch", + "until", + "struck", + "pour", + "ten", + "organization", + "bent", + "newspaper", + "structure", + "nation", + "got", + "two", + "step", + "supper", + "should", + "person", + "flew", + "caught", + "cloth", + "carry", + "congress", + "highway", + "correct", + "receive", + "citizen", + "pay", + "contain", + "browserling", + "grain", + "second", + "eye", + "rope", + "stiff", + "national", + "jungle", + "trouble", + "fill", + "pink", + "package", + "engineer", + "instead", + "fastened", + "mountain", + "bet", + "tribe", + "drive", + "house", + "musical", + "growth", + "week", + "spread", + "property", + "silver", + "afraid", + "cast", + "leave", + "business", + "success", + "fall", + "dry", + "life", + "pure", + "danger", + "hello", + "life", + "dig", + "behind", + "fireplace", + "now", + "breath", + "exactly", + "reason", + "central", + "satellites", + "birthday", + "correct", + "loose", + "ball", + "idea", + "doctor", + "stove", + "tin", + "most", + "thirty", + "darkness", + "liquid", + "kitchen", + "actually", + "importance", + "ate", + "seat", + "dish", + "naturally", + "keep", + "signal", + "symbol", + "sure", + "driver", + "hole", + "luck", + "smooth", + "sunlight", + "angry", + "weather", + "trap", + "seems", + "serious", + "earn", + "choose", + "practice", + "someone", + "positive", + "blank", + "shaking", + "problem", + "thy", + "somewhere", + "zero", + "itself", + "search", + "sort", + "aside", + "song", + "biggest", + "official", + "guess", + "muscle", + "sail", + "gun", + "club", + "path", + "carbon", + "opposite", + "transportation", + "observe", + "was", + "thee", + "atomic", + "force", + "sum", + "taken", + "automobile", + "changing", + "about", + "package", + "biggest", + "unless", + "was", + "score", + "brain", + "valuable", + "cattle", + "finish", + "operation", + "condition", + "oil", + "eleven", + "president", + "gather", + "worry", + "strip", + "interest", + "various", + "gulf", + "using", + "luck", + "age", + "horn", + "steel", + "establish", + "some", + "may", + "quietly", + "definition", + "nearly", + "closely", + "hand", + "recall", + "reach", + "continent", + "weak", + "perhaps", + "throw", + "direction", + "star", + "closer", + "electric", + "dance", + "tell", + "shelf", + "ship", + "hat", + "forward", + "physical", + "explore", + "pay", + "dozen", + "worse", + "particular", + "became", + "zero", + "drawn", + "indeed", + "merely", + "printed", + "college", + "former", + "adult", + "aloud", + "by", + "screen", + "bush", + "beautiful", + "sale", + "automobile", + "addition", + "master", + "fort", + "troops", + "clothes", + "section", + "gun", + "soft", + "quite", + "design", + "sum", + "during", + "cross", + "chair", + "some", + "label", + "run", + "thrown", + "exciting", + "branch", + "printed", + "giant", + "up", + "dug", + "or", + "needed", + "carried", + "circus", + "stopped", + "this", + "area", + "hair", + "swam", + "standard", + "coast", + "slow", + "radio", + "college", + "soft", + "warm", + "imagine", + "must", + "fear", + "dead", + "dark", + "course", + "lead", + "stand", + "laid", + "soldier", + "ill", + "led", + "folks", + "remember", + "eager", + "path", + "join", + "people", + "base", + "rain", + "saw", + "service", + "means", + "pink", + "column", + "youth", + "park", + "name", + "express", + "press", + "matter", + "shade", + "firm", + "face", + "wonderful", + "plant", + "forth", + "pride", + "got", + "may", + "gun", + "pain", + "flew", + "ocean", + "correctly", + "queen", + "nice", + "offer", + "busy", + "earn", + "join", + "advice", + "done", + "press", + "still", + "into", + "individual", + "indeed", + "plain", + "stepped", + "base", + "please", + "inch", + "wish", + "please", + "riding", + "represent", + "wore", + "both", + "saw", + "knowledge", + "modern", + "begun", + "middle", + "fastened", + "throat", + "breathing", + "deer", + "small", + "climate", + "money", + "gas", + "have", + "space", + "syllable", + "climate", + "dance", + "cell", + "wing", + "village", + "floor", + "local", + "round", + "stairs", + "trade", + "arrive", + "began", + "however", + "said", + "church", + "bottle", + "chance", + "automobile", + "limited", + "low", + "nuts", + "they", + "late", + "move", + "pilot", + "nose", + "mighty", + "company", + "such", + "ability", + "light", + "sea", + "herd", + "dead", + "unhappy", + "hard", + "apartment", + "divide", + "behavior", + "tall", + "example", + "owner", + "escape", + "uncle", + "river", + "beginning", + "single", + "hello", + "far", + "total", + "travel", + "continued", + "loose", + "beyond", + "joined", + "select", + "dress", + "mood", + "greatly", + "union", + "parallel", + "realize", + "receive", + "tail", + "love", + "lose", + "apartment", + "indeed", + "yard", + "rock", + "muscle", + "selection", + "political", + "arrangement", + "else", + "park", + "verb", + "press", + "pictured", + "experience", + "wood", + "roar", + "yes", + "south", + "height", + "grew", + "glass", + "smell", + "which", + "sometime", + "political", + "kitchen", + "voyage", + "jungle", + "condition", + "tin", + "review", + "thou", + "pine", + "band", + "ought", + "pet", + "expect", + "plan", + "shore", + "difference", + "mice", + "arrive", + "principal", + "promised", + "straight", + "roar", + "state", + "none", + "meat", + "cage", + "flame", + "tell", + "mother", + "honor", + "cream", + "product", + "equal", + "produce", + "related", + "using", + "strange", + "suppose", + "famous", + "surrounded", + "taken", + "twice", + "birthday", + "burn", + "near", + "sets", + "wagon", + "consonant", + "shot", + "nearer", + "impossible", + "next", + "engine", + "many", + "cave", + "loss", + "team", + "yesterday", + "fought", + "replace", + "characteristic", + "tool", + "broke", + "missing", + "cool", + "local", + "southern", + "edge", + "eventually", + "stay", + "fly", + "pick", + "within", + "top", + "five", + "television", + "born", + "brown", + "let", + "hit", + "form", + "similar", + "base", + "slept", + "day", + "collect", + "identity", + "task", + "nature", + "soap", + "brave", + "kitchen", + "operation", + "speech", + "or", + "bar", + "thing", + "yourself", + "for", + "shadow", + "arrive", + "bread", + "pitch", + "human", + "hit", + "foot", + "sometime", + "whenever", + "next", + "declared", + "ground", + "struggle", + "hang", + "thing", + "larger", + "instead", + "trunk", + "nodded", + "prepare", + "ranch", + "command", + "night", + "summer", + "shall", + "greater", + "already", + "green", + "blew", + "hair", + "exist", + "wild", + "band", + "onlinetools", + "hearing", + "sight", + "when", + "complete", + "tears", + "tail", + "system", + "unless", + "stay", + "quickly", + "older", + "once", + "instrument", + "planet", + "burst", + "exist", + "mark", + "farmer", + "meal", + "cave", + "skin", + "greatest", + "egg", + "famous", + "happily", + "ride", + "original", + "done", + "balloon", + "increase", + "broken", + "valley", + "health", + "also", + "build", + "drive", + "talk", + "small", + "tobacco", + "property", + "clock", + "noted", + "construction", + "customs", + "huge", + "lie", + "bread", + "grew", + "trace", + "sugar", + "want", + "sort", + "movie", + "rabbit", + "thing", + "steep", + "bowl", + "strong", + "center", + "social", + "soon", + "importance", + "bar", + "pine", + "surface", + "steady", + "loss", + "phrase", + "eat", + "each", + "fuel", + "age", + "shown", + "gas", + "flag", + "partly", + "shallow", + "alike", + "tongue", + "applied", + "direction", + "strike", + "facing", + "prize", + "object", + "exactly", + "basic", + "studying", + "using", + "composed", + "detail", + "girl", + "wrapped", + "directly", + "while", + "dawn", + "kept", + "voice", + "immediately", + "low", + "aware", + "direction", + "missing", + "drink", + "swing", + "driving", + "amount", + "because", + "neighbor", + "actual", + "speech", + "recently", + "science", + "determine", + "attention", + "first", + "measure", + "easier", + "disappear", + "hungry", + "vertical", + "connected", + "hill", + "pleasure", + "use", + "themselves", + "careful", + "horn", + "getting", + "lungs", + "page", + "book", + "number", + "mathematics", + "with", + "future", + "yesterday", + "proper", + "market", + "stove", + "cause", + "shine", + "conversation", + "rough", + "safe", + "farm", + "we", + "ago", + "think", + "believed", + "sense", + "chapter", + "above", + "missing", + "temperature", + "arrangement", + "softly", + "accurate", + "hall", + "drink", + "model", + "body", + "on", + "toward", + "nor", + "diameter", + "castle", + "pool", + "lost", + "express", + "between", + "die", + "swim", + "laid", + "whole", + "cage", + "ordinary", + "speak", + "done", + "mainly", + "behavior", + "worker", + "car", + "brush", + "verb", + "desert", + "attack", + "another", + "column", + "dark", + "garage", + "broad", + "himself", + "boy", + "making", + "chosen", + "sold", + "end", + "volume", + "mixture", + "take", + "men", + "follow", + "favorite", + "fresh", + "headed", + "getting", + "represent", + "offer", + "central", + "lips", + "swing", + "bridge", + "but", + "positive", + "dust", + "life", + "chosen", + "pool", + "suggest", + "us", + "explanation", + "face", + "ear", + "felt", + "both", + "highway", + "dig", + "all", + "selection", + "captain", + "inside", + "progress", + "second", + "broke", + "check", + "island", + "voyage", + "with", + "outer", + "free", + "teeth", + "tropical", + "canal", + "lips", + "discussion", + "offer", + "carbon", + "broken", + "century", + "saved", + "brief", + "selection", + "round", + "castle", + "physical", + "automobile", + "rock", + "stronger", + "compound", + "lungs", + "magic", + "ill", + "wonder", + "eaten", + "examine", + "result", + "bowl", + "half", + "parallel", + "stepped", + "copper", + "square", + "atomic", + "reason", + "underline", + "gold", + "thus", + "three", + "fought", + "point", + "thumb", + "pie", + "worse", + "expression", + "heavy", + "particles", + "night", + "using", + "equally", + "live", + "harbor", + "muscle", + "level", + "buy", + "most", + "giant", + "raw", + "nothing", + "popular", + "teeth", + "bet", + "firm", + "blank", + "family", + "laid", + "moon", + "increase", + "pet", + "toy", + "free", + "then", + "compass", + "toward", + "evidence", + "lonely", + "advice", + "enough", + "fought", + "tiny", + "voice", + "rough", + "told", + "theory", + "move", + "time", + "congress", + "gain", + "joined", + "percent", + "without", + "keep", + "continent", + "express", + "travel", + "thought", + "go", + "environment", + "floating", + "image", + "path", + "return", + "mean", + "community", + "clock", + "section", + "those", + "test", + "dear", + "bare", + "cookies", + "job", + "foreign", + "minerals", + "rest", + "metal", + "soft", + "brain", + "half", + "tie", + "distance", + "nuts", + "bowl", + "merely", + "use", + "wool", + "younger", + "composed", + "morning", + "birds", + "yes", + "house", + "angry", + "victory", + "fewer", + "determine", + "record", + "itself", + "quickly", + "seat", + "action", + "pencil", + "refer", + "club", + "crowd", + "shorter", + "list", + "purple", + "essential", + "action", + "command", + "fifty", + "sound", + "good", + "taste", + "as", + "deer", + "wonder", + "drew", + "willing", + "whether", + "chamber", + "five", + "turn", + "repeat", + "as", + "situation", + "ever", + "snake", + "his", + "queen", + "about", + "wonderful", + "building", + "mission", + "material", + "nine", + "everywhere", + "summer", + "pool", + "during", + "although", + "shine", + "bound", + "kill", + "choose", + "opinion", + "hold", + "disease", + "thumb", + "slept", + "band", + "whatever", + "but", + "population", + "double", + "short", + "egg", + "famous", + "early", + "skin", + "establish", + "pole", + "related", + "fat", + "wind", + "its", + "jack", + "middle", + "silent", + "model", + "cold", + "roar", + "plural", + "peace", + "mistake", + "felt", + "package", + "advice", + "should", + "news", + "got", + "cattle", + "without", + "someone", + "judge", + "industrial", + "nation", + "edge", + "tired", + "finger", + "regular", + "section", + "together", + "possible", + "college", + "ring", + "rapidly", + "fresh", + "wide", + "hidden", + "population", + "shape", + "live", + "street", + "policeman", + "sang", + "driving", + "weak", + "comfortable", + "way", + "line", + "brave", + "sale", + "slave", + "north", + "behind", + "handsome", + "practical", + "prevent", + "nails", + "away", + "egg", + "success", + "can", + "middle", + "stepped", + "yes", + "note", + "unhappy", + "experiment", + "police", + "tobacco", + "been", + "lie", + "activity", + "bright", + "speech", + "south", + "vertical", + "three", + "steady", + "very", + "place", + "plural", + "ride", + "someone", + "particularly", + "helpful", + "tongue", + "guide", + "carry", + "dance", + "cent", + "spend", + "notice", + "to", + "price", + "needle", + "wave", + "rain", + "hunter", + "statement", + "probably", + "shinning", + "pressure", + "test", + "trip", + "hardly", + "happen", + "keep", + "vapor", + "flat", + "wonderful", + "freedom", + "moving", + "railroad", + "situation", + "happen", + "love", + "lack", + "replace", + "animal", + "heat", + "tone", + "wild", + "under", + "cookies", + "figure", + "indeed", + "beautiful", + "heavy", + "room", + "pound", + "fewer", + "completely", + "drink", + "season", + "soon", + "court", + "dead", + "journey", + "log", + "for", + "author", + "badly", + "potatoes", + "gone", + "told", + "canal", + "hour", + "were", + "knew", + "copper", + "basket", + "property", + "practical", + "settlers", + "manufacturing", + "cent", + "hurried", + "standard", + "author", + "put", + "egg", + "sister", + "sharp", + "late", + "of", + "proper", + "cloth", + "rough", + "correctly", + "gun", + "gasoline", + "century", + "easy", + "street", + "case", + "journey", + "merely", + "wear", + "balance", + "upon", + "sale", + "drive", + "red", + "afternoon", + "available", + "whispered", + "up", + "fruit", + "eat", + "both", + "pictured", + "cent", + "over", + "running", + "universe", + "equipment", + "seems", + "thus", + "satellites", + "freedom", + "bell", + "about", + "title", + "power", + "buy", + "swung", + "couple", + "official", + "detail", + "tin", + "broad", + "ride", + "properly", + "simplest", + "ear", + "driver", + "fine", + "fuel", + "eat", + "instance", + "form", + "beneath", + "slowly", + "becoming", + "copy", + "refused", + "care", + "mine", + "aboard", + "by", + "tie", + "yes", + "right", + "prove", + "becoming", + "affect", + "organized", + "trap", + "highway", + "needed", + "according", + "cheese", + "tip", + "seen", + "nor", + "fine", + "deal", + "luck", + "blank", + "positive", + "rather", + "outer", + "quiet", + "definition", + "circle", + "wonder", + "belong", + "tide", + "sick", + "additional", + "quiet", + "satisfied", + "stems", + "doing", + "automobile", + "afternoon", + "fish", + "tree", + "chicken", + "military", + "writing", + "organized", + "mysterious", + "might", + "dream", + "clothing", + "partly", + "brain", + "plant", + "sort", + "return", + "mouse", + "customs", + "joined", + "cat", + "thee", + "voice", + "push", + "congress", + "sport", + "throw", + "call", + "service", + "rough", + "behind", + "higher", + "factory", + "against", + "dollar", + "care", + "government", + "upon", + "favorite", + "drew", + "leg", + "height", + "specific", + "find", + "attempt", + "rope", + "corn", + "flat", + "frozen", + "seven", + "duck", + "way", + "surface", + "traffic", + "remove", + "attached", + "down", + "swept", + "sleep", + "travel", + "finest", + "live", + "damage", + "present", + "spell", + "bet", + "interest", + "research", + "was", + "enter", + "coast", + "feel", + "other", + "dull", + "gas", + "science", + "oldest", + "came", + "indeed", + "book", + "sand", + "pale", + "hearing", + "respect", + "doubt", + "mighty", + "fewer", + "who", + "whenever", + "attention", + "atomic", + "she", + "hundred", + "mile", + "basis", + "neighbor", + "saddle", + "dug", + "height", + "specific", + "population", + "other", + "led", + "car", + "so", + "combination", + "to", + "team", + "wind", + "capital", + "pen", + "spider", + "while", + "pipe", + "definition", + "student", + "flow", + "darkness", + "involved", + "anything", + "mad", + "race", + "kill", + "popular", + "able", + "fewer", + "regular", + "impossible", + "free", + "gravity", + "unhappy", + "universe", + "shop", + "quite", + "review", + "bowl", + "dance", + "gift", + "quite", + "fire", + "weigh", + "owner", + "sound", + "gulf", + "wheel", + "station", + "member", + "already", + "silly", + "poet", + "pen", + "sweet", + "source", + "skill", + "cat", + "however", + "mostly", + "attack", + "wood", + "scientific", + "changing", + "way", + "glad", + "adult", + "fallen", + "habit", + "storm", + "solid", + "such", + "nose", + "arrange", + "clean", + "taken", + "fly", + "properly", + "grandmother", + "mysterious", + "purple", + "cent", + "bag", + "claws", + "meal", + "west", + "yellow", + "written", + "shells", + "here", + "problem", + "joined", + "left", + "solution", + "modern", + "standard", + "man", + "constantly", + "graph", + "neighbor", + "whale", + "help", + "provide", + "title", + "general", + "snake", + "rhyme", + "coal", + "old", + "deep", + "exercise", + "tropical", + "drew", + "farther", + "great", + "troops", + "pour", + "wealth", + "pleasant", + "frighten", + "bell", + "heat", + "middle", + "put", + "gently", + "weigh", + "progress", + "may", + "dress", + "thumb", + "myself", + "your", + "pure", + "fought", + "bottle", + "powder", + "bee", + "distance", + "consist", + "slight", + "weak", + "tales", + "clock", + "entire", + "melted", + "port", + "drop", + "recent", + "per", + "hollow", + "government", + "heard", + "port", + "sides", + "silver", + "push", + "importance", + "vessels", + "carry", + "wear", + "ground", + "symbol", + "coming", + "east", + "carried", + "life", + "gently", + "gas", + "copper", + "high", + "motor", + "customs", + "powerful", + "through", + "whom", + "for", + "graph", + "idea", + "zero", + "writer", + "being", + "one", + "feathers", + "radio", + "beyond", + "at", + "research", + "running", + "save", + "pass", + "labor", + "contrast", + "collect", + "string", + "scale", + "adjective", + "jump", + "terrible", + "forth", + "distance", + "needs", + "atmosphere", + "older", + "ice", + "flies", + "rocky", + "alike", + "carbon", + "recall", + "spider", + "natural", + "leather", + "specific", + "wheat", + "land", + "driver", + "composed", + "one", + "paper", + "war", + "practical", + "plural", + "several", + "close", + "arm", + "different", + "grown", + "angry", + "contain", + "brain", + "expect", + "six", + "mix", + "strength", + "load", + "symbol", + "dream", + "kind", + "behind", + "wild", + "organized", + "sea", + "struck", + "sand", + "fireplace", + "rod", + "sound", + "number", + "careful", + "moving", + "simply", + "bell", + "pilot", + "other", + "gate", + "rod", + "tightly", + "until", + "day", + "avoid", + "who", + "blue", + "box", + "remove", + "individual", + "choose", + "model", + "given", + "perhaps", + "same", + "swung", + "beautiful", + "captured", + "produce", + "dirt", + "buffalo", + "on", + "so", + "include", + "cotton", + "explain", + "zero", + "should", + "outside", + "fuel", + "bring", + "blow", + "wheat", + "tie", + "anything", + "structure", + "hurry", + "basis", + "shall", + "sides", + "police", + "information", + "vegetable", + "replace", + "root", + "energy", + "blow", + "useful", + "shelter", + "nearby", + "apartment", + "perhaps", + "society", + "rain", + "slowly", + "facing", + "work", + "leaf", + "dull", + "disease", + "you", + "beautiful", + "task", + "smooth", + "reason", + "row", + "greatly", + "wheel", + "afraid", + "roof", + "warm", + "nervous", + "voyage", + "note", + "farther", + "catch", + "level", + "butter", + "done", + "dead", + "child", + "exciting", + "fort", + "symbol", + "nice", + "space", + "nature", + "however", + "correct", + "question", + "positive", + "pretty", + "without", + "president", + "thing", + "ring", + "upper", + "motion", + "base", + "local", + "burn", + "effort", + "safe", + "condition", + "slide", + "diameter", + "road", + "us", + "consider", + "regular", + "milk", + "present", + "heat", + "seed", + "active", + "finger", + "syllable", + "kind", + "rhythm", + "bee", + "whether", + "drew", + "call", + "discuss", + "whistle", + "opinion", + "minerals", + "image", + "loss", + "may", + "farmer", + "setting", + "yourself", + "mathematics", + "bad", + "command", + "listen", + "daughter", + "swimming", + "glad", + "me", + "firm", + "before", + "college", + "left", + "brain", + "write", + "pipe", + "birth", + "become", + "age", + "percent", + "speed", + "adventure", + "idea", + "needle", + "born", + "horn", + "curious", + "adventure", + "pale", + "locate", + "cell", + "combine", + "hunt", + "aside", + "keep", + "is", + "how", + "tube", + "income", + "beauty", + "examine", + "negative", + "men", + "receive", + "interior", + "driving", + "gas", + "price", + "practical", + "clothes", + "western", + "rose", + "feed", + "both", + "business", + "bicycle", + "surprise", + "fell", + "motion", + "ordinary", + "its", + "hole", + "people", + "size", + "pride", + "amount", + "arm", + "facing", + "life", + "cold", + "when", + "industrial", + "careful", + "motor", + "rocky", + "out", + "tonight", + "maybe", + "from", + "river", + "blew", + "life", + "hand", + "jar", + "took", + "breath", + "steam", + "time", + "grandfather", + "southern", + "brother", + "single", + "train", + "needle", + "caught", + "struggle", + "practical", + "beautiful", + "whistle", + "addition", + "tried", + "property", + "police", + "appropriate", + "himself", + "create", + "personal", + "fat", + "toward", + "neck", + "sort", + "bow", + "plural", + "floating", + "beat", + "climate", + "tall", + "hard", + "also", + "recently", + "smooth", + "tears", + "excited", + "sky", + "motion", + "problem", + "partly", + "rate", + "single", + "practical", + "force", + "me", + "national", + "numeral", + "nose", + "industrial", + "slow", + "pie", + "organization", + "log", + "swim", + "least", + "will", + "numeral", + "case", + "back", + "show", + "type", + "most", + "plates", + "burst", + "list", + "change", + "inside", + "class", + "differ", + "before", + "court", + "break", + "order", + "drink", + "sense", + "cave", + "basket", + "kind", + "settle", + "helpful", + "able", + "food", + "old", + "rather", + "jar", + "coming", + "potatoes", + "importance", + "location", + "putting", + "me", + "root", + "scientist", + "line", + "so", + "image", + "figure", + "darkness", + "birth", + "further", + "national", + "cup", + "art", + "blanket", + "earlier", + "center", + "stared", + "burst", + "rest", + "cat", + "floating", + "shaking", + "influence", + "cat", + "classroom", + "fierce", + "congress", + "sound", + "high", + "driven", + "drive", + "arrow", + "effect", + "star", + "baseball", + "blue", + "design", + "mother", + "operation", + "tropical", + "newspaper", + "generally", + "dangerous", + "beautiful", + "list", + "government", + "cotton", + "energy", + "listen", + "laid", + "material", + "soldier", + "escape", + "heart", + "alike", + "done", + "hope", + "easily", + "supply", + "winter", + "remove", + "after", + "popular", + "rice", + "expect", + "wave", + "slipped", + "list", + "wire", + "fair", + "enter", + "point", + "softly", + "jar", + "daughter", + "tobacco", + "row", + "to", + "almost", + "bow", + "avoid", + "relationship", + "thou", + "equal", + "electricity", + "accident", + "hung", + "skin", + "wish", + "continent", + "subject", + "mysterious", + "television", + "pocket", + "other", + "poem", + "settlers", + "entire", + "pan", + "band", + "among", + "giant", + "new", + "far", + "whale", + "everyone", + "shot", + "every", + "nation", + "stopped", + "mark", + "lion", + "dress", + "us", + "tried", + "root", + "plates", + "square", + "supply", + "city", + "gulf", + "walk", + "sale", + "atomic", + "local", + "shaking", + "stomach", + "answer", + "recall", + "crew", + "heading", + "whale", + "flat", + "grew", + "blood", + "oldest", + "bound", + "vertical", + "difference", + "tin", + "loss", + "serve", + "bean", + "be", + "seldom", + "wide", + "final", + "elephant", + "upward", + "near", + "bow", + "satellites", + "excited", + "saved", + "rush", + "master", + "deeply", + "more", + "railroad", + "dark", + "rabbit", + "seeing", + "me", + "danger", + "verb", + "gas", + "sun", + "entire", + "faster", + "program", + "necessary", + "difficulty", + "lay", + "teach", + "forgotten", + "term", + "steel", + "me", + "though", + "slide", + "hair", + "variety", + "date", + "accept", + "catch", + "eager", + "move", + "held", + "dozen", + "industrial", + "vowel", + "threw", + "dawn", + "push", + "fellow", + "usual", + "later", + "end", + "already", + "eaten", + "pupil", + "dark", + "fell", + "step", + "nothing", + "came", + "symbol", + "contrast", + "who", + "disease", + "ground", + "excited", + "president", + "full", + "running", + "picture", + "noted", + "story", + "everywhere", + "contrast", + "task", + "statement", + "iron", + "usually", + "greatest", + "gift", + "train", + "value", + "bridge", + "machine", + "breeze", + "hang", + "potatoes", + "copy", + "afraid", + "shape", + "familiar", + "exercise", + "public", + "load", + "yesterday", + "visit", + "nation", + "light", + "town", + "store", + "we", + "variety", + "rose", + "vapor", + "whenever", + "fix", + "frequently", + "experiment", + "tent", + "graph", + "victory", + "actually", + "scale", + "customs", + "lower", + "beneath", + "thought", + "failed", + "settlers", + "speed", + "ate", + "he", + "rather", + "minerals", + "carbon", + "gently", + "draw", + "us", + "step", + "function", + "distance", + "composed", + "without", + "higher", + "bound", + "chapter", + "definition", + "trail", + "piece", + "strong", + "studied", + "bad", + "construction", + "season", + "mistake", + "quick", + "room", + "cabin", + "once", + "speed", + "struck", + "unusual", + "south", + "chapter", + "pond", + "canal", + "shinning", + "treated", + "scientific", + "step", + "change", + "image", + "appearance", + "throat", + "as", + "small", + "sense", + "buried", + "event", + "avoid", + "fear", + "along", + "pilot", + "win", + "crack", + "promised", + "chest", + "explore", + "force", + "month", + "ranch", + "soil", + "mail", + "exchange", + "muscle", + "declared", + "from", + "lower", + "circle", + "lot", + "fix", + "exact", + "thrown", + "average", + "citizen", + "mixture", + "yellow", + "now", + "ill", + "spoken", + "tonight", + "experience", + "kept", + "clearly", + "told", + "settlers", + "large", + "trick", + "acres", + "during", + "cross", + "eleven", + "purpose", + "aid", + "rubber", + "recognize", + "design", + "copper", + "light", + "ride", + "pole", + "fifteen", + "club", + "force", + "clay", + "invented", + "fifty", + "office", + "valuable", + "horse", + "south", + "saw", + "upper", + "captain", + "someone", + "serve", + "teach", + "energy", + "west", + "usually", + "putting", + "sum", + "vessels", + "hour", + "amount", + "purple", + "roar", + "slowly", + "student", + "skill", + "escape", + "means", + "song", + "airplane", + "underline", + "sold", + "declared", + "loud", + "smoke", + "total", + "silent", + "choose", + "night", + "lovely", + "judge", + "thee", + "finish", + "current", + "prize", + "interior", + "universe", + "feathers", + "spite", + "palace", + "expression", + "having", + "shoot", + "rose", + "ancient", + "correct", + "scared", + "failed", + "world", + "wonder", + "angry", + "newspaper", + "regular", + "tank", + "classroom", + "needed", + "bread", + "language", + "bit", + "paragraph", + "curve", + "notice", + "opportunity", + "sheet", + "silver", + "hundred", + "pass", + "school", + "blanket", + "driven", + "represent", + "about", + "beauty", + "forget", + "settle", + "won", + "applied", + "cage", + "spite", + "thin", + "mix", + "safety", + "full", + "pick", + "year", + "act", + "value", + "even", + "one", + "back", + "riding", + "realize", + "freedom", + "quite", + "those", + "yet", + "gas", + "happily", + "rapidly", + "right", + "relationship", + "nearly", + "occur", + "gift", + "kill", + "garage", + "order", + "happen", + "fallen", + "yellow", + "teach", + "die", + "handsome", + "tip", + "earth", + "sat", + "summer", + "through", + "further", + "your", + "chamber", + "moving", + "act", + "massage", + "situation", + "another", + "life", + "phrase", + "aboard", + "in", + "reader", + "sale", + "fifty", + "dirt", + "alone", + "vessels", + "species", + "race", + "plural", + "immediately", + "given", + "business", + "supply", + "stronger", + "body", + "born", + "scale", + "catch", + "bell", + "race", + "possible", + "affect", + "action", + "separate", + "swing", + "diagram", + "thou", + "had", + "tongue", + "old", + "atom", + "manner", + "most", + "gather", + "key", + "send", + "taken", + "lower", + "thy", + "quickly", + "blood", + "sheep", + "swam", + "therefore", + "zoo", + "satisfied", + "strength", + "equally", + "card", + "gas", + "exciting", + "title", + "declared", + "library", + "flow", + "golden", + "variety", + "handsome", + "factory", + "solution", + "sentence", + "personal", + "jar", + "mad", + "fought", + "pitch", + "path", + "entire", + "thirty", + "soil", + "account", + "it", + "active", + "manner", + "college", + "concerned", + "thumb", + "studying", + "leg", + "hide", + "blue", + "sick", + "farm", + "connected", + "inch", + "shelf", + "single", + "drive", + "house", + "shaking", + "chain", + "courage", + "lost", + "eager", + "hall", + "boat", + "shoot", + "hat", + "flight", + "choose", + "meet", + "prepare", + "neighborhood", + "everyone", + "show", + "enter", + "though", + "frequently", + "sale", + "friend", + "powder", + "shore", + "job", + "standard", + "sheep", + "draw", + "kids", + "determine", + "level", + "view", + "popular", + "widely", + "ate", + "nice", + "familiar", + "apartment", + "dream", + "top", + "twice", + "courage", + "temperature", + "who", + "silent", + "wait", + "pole", + "strong", + "born", + "education", + "proper", + "cream", + "blew", + "carried", + "fought", + "thy", + "might", + "prize", + "box", + "find", + "breakfast", + "its", + "has", + "worth", + "seeing", + "fewer", + "replied", + "graph", + "school", + "without", + "gain", + "wind", + "cattle", + "leave", + "burst", + "trouble", + "drawn", + "composed", + "union", + "meal", + "recall", + "slight", + "laid", + "they", + "syllable", + "reader", + "catch", + "yes", + "else", + "nearly", + "supply", + "doctor", + "signal", + "prize", + "victory", + "burn", + "understanding", + "busy", + "interest", + "dug", + "scientific", + "every", + "evening", + "quite", + "danger", + "leader", + "away", + "rather", + "key", + "atmosphere", + "beautiful", + "passage", + "definition", + "party", + "chicken", + "basket", + "income", + "himself", + "easier", + "determine", + "blanket", + "aware", + "claws", + "average", + "line", + "collect", + "collect", + "crack", + "central", + "some", + "copy", + "smooth", + "dry", + "gun", + "built", + "flame", + "steep", + "piano", + "foot", + "then", + "globe", + "unknown", + "satellites", + "fur", + "exclaimed", + "explanation", + "system", + "atmosphere", + "lucky", + "too", + "fed", + "greatest", + "wave", + "brown", + "brave", + "molecular", + "busy", + "favorite", + "dog", + "radio", + "yellow", + "anything", + "pure", + "state", + "parts", + "halfway", + "aid", + "want", + "rush", + "page", + "later", + "its", + "stay", + "move", + "our", + "solar", + "explanation", + "gun", + "expression", + "suggest", + "music", + "planning", + "else", + "wall", + "board", + "put", + "graph", + "officer", + "weather", + "provide", + "sold", + "than", + "struggle", + "afraid", + "active", + "gradually", + "cabin", + "week", + "shut", + "save", + "basic", + "frequently", + "swimming", + "complex", + "broke", + "aware", + "experience", + "talk", + "brave", + "against", + "entire", + "pleasure", + "scared", + "what", + "fifth", + "kids", + "when", + "meant", + "little", + "mighty", + "roar", + "believed", + "give", + "boy", + "add", + "lesson", + "duty", + "volume", + "forest", + "hurt", + "shout", + "across", + "pan", + "stiff", + "death", + "season", + "climb", + "produce", + "science", + "donkey", + "island", + "could", + "property", + "strip", + "below", + "vapor", + "hall", + "part", + "popular", + "burn", + "smoke", + "want", + "enemy", + "mixture", + "snow", + "cost", + "tip", + "same", + "chair", + "pupil", + "far", + "whatever", + "thirty", + "bicycle", + "ship", + "molecular", + "damage", + "process", + "queen", + "importance", + "doing", + "then", + "us", + "fifteen", + "is", + "felt", + "record", + "knew", + "ask", + "heard", + "jack", + "close", + "wash", + "slight", + "cast", + "use", + "similar", + "felt", + "now", + "straight", + "please", + "catch", + "halfway", + "sort", + "slide", + "powerful", + "pressure", + "object", + "nearly", + "mysterious", + "proper", + "prize", + "among", + "worse", + "plates", + "card", + "child", + "alike", + "political", + "parent", + "speed", + "bicycle", + "diagram", + "rise", + "cattle", + "social", + "hardly", + "treated", + "against", + "felt", + "first", + "definition", + "knife", + "indicate", + "ball", + "soon", + "satisfied", + "now", + "mill", + "cause", + "electric", + "stranger", + "settle", + "may", + "husband", + "reason", + "condition", + "break", + "growth", + "beneath", + "zero", + "stock", + "recall", + "start", + "seeing", + "environment", + "nature", + "lonely", + "material", + "decide", + "policeman", + "taken", + "copper", + "nice", + "plant", + "shells", + "stared", + "per", + "frozen", + "tiny", + "frame", + "crop", + "crowd", + "wrote", + "duty", + "source", + "box", + "blank", + "eight", + "none", + "mixture", + "announced", + "flower", + "interest", + "handle", + "remarkable", + "trade", + "regular", + "century", + "distance", + "us", + "browserling", + "moment", + "children", + "citizen", + "almost", + "age", + "model", + "wrapped", + "leaf", + "honor", + "compare", + "trouble", + "avoid", + "consist", + "spoken", + "probably", + "nearly", + "official", + "century", + "vowel", + "disappear", + "careful", + "expect", + "will", + "sound", + "front", + "although", + "unit", + "nation", + "reach", + "peace", + "nails", + "environment", + "instance", + "additional", + "barn", + "problem", + "happen", + "stop", + "sleep", + "sport", + "finest", + "soap", + "funny", + "upward", + "fastened", + "freedom", + "brass", + "look", + "end", + "reason", + "hardly", + "consonant", + "obtain", + "apart", + "color", + "five", + "unless", + "several", + "fall", + "liquid", + "to", + "lady", + "story", + "gain", + "snow", + "home", + "allow", + "basis", + "pen", + "printed", + "cut", + "knew", + "label", + "note", + "guard", + "warn", + "tie", + "gave", + "egg", + "small", + "behavior", + "friend", + "again", + "frequently", + "direct", + "becoming", + "island", + "shown", + "known", + "answer", + "native", + "mission", + "research", + "highway", + "both", + "army", + "browserling", + "turn", + "railroad", + "fruit", + "reader", + "pattern", + "became", + "swing", + "atomic", + "growth", + "hit", + "class", + "rain", + "slept", + "worry", + "mine", + "call", + "many", + "rain", + "physical", + "pour", + "examine", + "collect", + "bush", + "mostly", + "terrible", + "bag", + "properly", + "attention", + "division", + "ship", + "weigh", + "able", + "slip", + "paid", + "wave", + "carbon", + "vegetable", + "picture", + "noon", + "mix", + "waste", + "bound", + "kids", + "mouse", + "imagine", + "sun", + "whistle", + "fight", + "printed", + "becoming", + "experiment", + "express", + "wash", + "lift", + "sure", + "lie", + "parallel", + "direct", + "pressure", + "beginning", + "longer", + "slip", + "speed", + "while", + "car", + "dig", + "support", + "plates", + "sense", + "leader", + "church", + "owner", + "last", + "flight", + "church", + "gain", + "unknown", + "living", + "check", + "underline", + "income", + "lift", + "dream", + "construction", + "tall", + "making", + "oldest", + "ability", + "airplane", + "cook", + "tube", + "square", + "in", + "hair", + "time", + "tower", + "slightly", + "unknown", + "top", + "good", + "frighten", + "bite", + "store", + "think", + "made", + "bill", + "progress", + "new", + "brief", + "her", + "onto", + "east", + "design", + "valley", + "sail", + "forward", + "twice", + "mill", + "loss", + "ruler", + "adult", + "comfortable", + "enjoy", + "off", + "baseball", + "job", + "triangle", + "shoot", + "copy", + "toward", + "lips", + "oldest", + "serve", + "consider", + "victory", + "seems", + "smaller", + "knowledge", + "political", + "although", + "prove", + "planning", + "victory", + "recently", + "chair", + "field", + "still", + "directly", + "tone", + "roll", + "improve", + "near", + "base", + "thy", + "grain", + "scene", + "laid", + "gave", + "without", + "rest", + "none", + "bicycle", + "air", + "build", + "cage", + "seven", + "stick", + "empty", + "afraid", + "waste", + "be", + "leader", + "saved", + "rise", + "neck", + "herself", + "spirit", + "present", + "chain", + "bad", + "shore", + "corn", + "change", + "rain", + "house", + "after", + "them", + "tent", + "troops", + "rising", + "than", + "because", + "respect", + "stared", + "know", + "locate", + "tribe", + "chart", + "halfway", + "brain", + "rays", + "ought", + "bet", + "stream", + "still", + "pleasure", + "guide", + "both", + "directly", + "horse", + "from", + "science", + "flow", + "spend", + "finest", + "example", + "done", + "root", + "shoe", + "spite", + "life", + "join", + "future", + "visitor", + "pour", + "former", + "pair", + "driving", + "college", + "scared", + "folks", + "gentle", + "remarkable", + "stick", + "health", + "arrow", + "angry", + "shade", + "sheet", + "satellites", + "band", + "me", + "raise", + "beside", + "bark", + "truck", + "street", + "hat", + "draw", + "queen", + "out", + "serve", + "string", + "chance", + "plenty", + "teacher", + "queen", + "building", + "car", + "verb", + "mark", + "zero", + "fifth", + "acres", + "birthday", + "local", + "camera", + "pleasant", + "breath", + "amount", + "he", + "shelter", + "basic", + "rough", + "board", + "sun", + "can", + "court", + "girl", + "top", + "doll", + "bet", + "happen", + "knowledge", + "stop", + "situation", + "arrive", + "boat", + "carbon", + "available", + "reader", + "bank", + "thou", + "summer", + "observe", + "feet", + "view", + "allow", + "race", + "crowd", + "cost", + "gray", + "paper", + "mad", + "dish", + "railroad", + "day", + "canal", + "shape", + "operation", + "border", + "receive", + "also", + "group", + "between", + "wagon", + "fear", + "national", + "doing", + "loud", + "simple", + "wing", + "pride", + "worry", + "let", + "conversation", + "breeze", + "film", + "road", + "maybe", + "condition", + "industrial", + "glass", + "plane", + "split", + "topic", + "as", + "somebody", + "orange", + "possible", + "tree", + "stomach", + "far", + "step", + "bell", + "plates", + "poor", + "upper", + "brave", + "pressure", + "corn", + "guard", + "safe", + "sea", + "young", + "mountain", + "difference", + "writing", + "former", + "death", + "experience", + "lips", + "reason", + "magic", + "down", + "truth", + "reader", + "behavior", + "sky", + "asleep", + "finish", + "once", + "setting", + "lose", + "pack", + "sort", + "sign", + "wife", + "range", + "pack", + "attached", + "country", + "suggest", + "person", + "guide", + "traffic", + "now", + "top", + "sister", + "lesson", + "game", + "plate", + "lot", + "private", + "powerful", + "good", + "has", + "old", + "pair", + "capital", + "sad", + "limited", + "iron", + "memory", + "screen", + "clock", + "clothing", + "distance", + "freedom", + "red", + "congress", + "wise", + "well", + "remember", + "law", + "increase", + "poem", + "done", + "alike", + "solar", + "signal", + "topic", + "history", + "root", + "movie", + "fewer", + "selection", + "attached", + "trick", + "key", + "ants", + "else", + "eager", + "stairs", + "badly", + "open", + "hurt", + "nodded", + "string", + "act", + "crowd", + "unit", + "saved", + "drink", + "feature", + "faster", + "touch", + "nose", + "radio", + "spider", + "smell", + "region", + "tropical", + "correctly", + "blow", + "lion", + "mirror", + "single", + "sense", + "parts", + "moon", + "blew", + "call", + "within", + "discover", + "increase", + "inside", + "pair", + "speak", + "box", + "paper", + "back", + "underline", + "greatest", + "valley", + "longer", + "recent", + "composition", + "back", + "went", + "street", + "duck", + "captain", + "education", + "change", + "loose", + "political", + "complex", + "found", + "hour", + "group", + "meet", + "that", + "dot", + "did", + "coffee", + "sweet", + "center", + "market", + "detail", + "read", + "next", + "clay", + "people", + "population", + "slept", + "hunt", + "yourself", + "middle", + "push", + "stretch", + "boy", + "farther", + "feel", + "motion", + "stranger", + "farm", + "nor", + "opposite", + "room", + "jungle", + "hurry", + "invented", + "prepare", + "six", + "problem", + "football", + "wear", + "open", + "immediately", + "cannot", + "simplest", + "birthday", + "compare", + "basis", + "beneath", + "darkness", + "ocean", + "rope", + "coal", + "fall", + "equator", + "ruler", + "suddenly", + "reach", + "medicine", + "quarter", + "layers", + "solution", + "hair", + "smaller", + "say", + "grain", + "cannot", + "himself", + "broke", + "tape", + "took", + "managed", + "taken", + "original", + "wire", + "stronger", + "clay", + "on", + "my", + "wall", + "corner", + "dug", + "entirely", + "continued", + "highest", + "directly", + "future", + "further", + "claws", + "graph", + "breath", + "calm", + "book", + "chemical", + "rays", + "force", + "feed", + "hurt", + "smoke", + "nature", + "wife", + "reader", + "school", + "force", + "divide", + "airplane", + "shells", + "took", + "crack", + "easily", + "temperature", + "stream", + "old", + "solve", + "shake", + "wish", + "stretch", + "map", + "square", + "understanding", + "birds", + "eager", + "either", + "signal", + "skill", + "halfway", + "basket", + "of", + "man", + "becoming", + "wolf", + "taught", + "distant", + "tight", + "wool", + "mean", + "actual", + "use", + "acres", + "object", + "shoulder", + "indicate", + "favorite", + "softly", + "rod", + "waste", + "hunt", + "hollow", + "globe", + "whispered", + "this", + "author", + "her", + "wrong", + "hay", + "chicken", + "round", + "suggest", + "consonant", + "those", + "properly", + "by", + "year", + "box", + "outer", + "pony", + "fireplace", + "review", + "do", + "grew", + "kitchen", + "exclaimed", + "live", + "exact", + "airplane", + "knew", + "stared", + "arrange", + "various", + "into", + "accident", + "chapter", + "pictured", + "joined", + "sheet", + "men", + "slide", + "away", + "whale", + "nature", + "potatoes", + "creature", + "chicken", + "courage", + "answer", + "distance", + "grandmother", + "glass", + "possible", + "luck", + "positive", + "written", + "drink", + "plastic", + "principal", + "till", + "difficult", + "mainly", + "stepped", + "taught", + "slowly", + "fewer", + "brief", + "size", + "war", + "dig", + "seems", + "stems", + "dangerous", + "free", + "satisfied", + "shoot", + "flat", + "business", + "discuss", + "pencil", + "kept", + "his", + "in", + "divide", + "position", + "everyone", + "make", + "shirt", + "political", + "explain", + "suppose", + "beautiful", + "smallest", + "leaf", + "carbon", + "know", + "youth", + "close", + "stared", + "floor", + "dark", + "dry", + "gain", + "satellites", + "worth", + "finally", + "stood", + "foot", + "freedom", + "struck", + "shaking", + "receive", + "powerful", + "hope", + "at", + "limited", + "fort", + "difference", + "support", + "gone", + "plain", + "brain", + "grabbed", + "upper", + "obtain", + "weight", + "voyage", + "variety", + "stay", + "hunt", + "fact", + "are", + "forward", + "long", + "plural", + "everything", + "needed", + "speech", + "question", + "beside", + "involved", + "stomach", + "over", + "buffalo", + "back", + "standard", + "size", + "add", + "put", + "art", + "bicycle", + "through", + "chicken", + "review", + "supper", + "mice", + "belt", + "nor", + "hurt", + "bring", + "once", + "surprise", + "surprise", + "in", + "wave", + "remain", + "getting", + "idea", + "steady", + "meat", + "national", + "principle", + "specific", + "agree", + "occur", + "extra", + "room", + "worried", + "rays", + "writer", + "crew", + "statement", + "gentle", + "struck", + "daughter", + "so", + "anybody", + "jack", + "collect", + "for", + "planned", + "various", + "more", + "mother", + "group", + "yesterday", + "sense", + "trouble", + "cotton", + "third", + "library", + "should", + "already", + "original", + "six", + "poetry", + "wagon", + "held", + "or", + "managed", + "essential", + "hardly", + "again", + "clock", + "completely", + "already", + "instance", + "correctly", + "vegetable", + "ball", + "we", + "protection", + "more", + "fastened", + "sound", + "shout", + "report", + "rod", + "baby", + "travel", + "environment", + "lesson", + "origin", + "food", + "negative", + "gray", + "gun", + "indicate", + "block", + "ship", + "sum", + "far", + "bean", + "mind", + "attention", + "collect", + "wind", + "design", + "bite", + "instant", + "upward", + "gift", + "move", + "glad", + "hidden", + "tank", + "bend", + "outside", + "choose", + "fall", + "onto", + "consider", + "too", + "hay", + "atmosphere", + "scared", + "frozen", + "brick", + "state", + "slip", + "except", + "usual", + "coffee", + "noted", + "central", + "plural", + "typical", + "about", + "mostly", + "stop", + "audience", + "eight", + "master", + "courage", + "package", + "another", + "chest", + "ability", + "clean", + "foot", + "pond", + "birth", + "soldier", + "various", + "pot", + "bear", + "chicken", + "hurried", + "unhappy", + "ice", + "unit", + "happily", + "something", + "rich", + "frighten", + "is", + "carried", + "plane", + "baby", + "hollow", + "electric", + "noun", + "first", + "work", + "after", + "all", + "be", + "struck", + "layers", + "bush", + "please", + "yard", + "fifteen", + "reason", + "public", + "needed", + "mirror", + "avoid", + "asleep", + "pocket", + "hurry", + "differ", + "sheet", + "perhaps", + "hunt", + "young", + "feed", + "fine", + "area", + "fair", + "wool", + "bad", + "beauty", + "shut", + "typical", + "moving", + "tone", + "who", + "tight", + "draw", + "electric", + "adult", + "course", + "morning", + "horn", + "managed", + "learn", + "either", + "lake", + "chance", + "experience", + "invented", + "year", + "rapidly", + "successful", + "cake", + "back", + "poor", + "anyway", + "private", + "population", + "route", + "notice", + "action", + "from", + "label", + "triangle", + "public", + "higher", + "certain", + "shells", + "people", + "twice", + "pull", + "seed", + "disease", + "dead", + "area", + "thou", + "person", + "bottle", + "divide", + "throughout", + "gulf", + "pond", + "spell", + "iron", + "bar", + "rice", + "hold", + "force", + "strange", + "hand", + "promised", + "simple", + "dried", + "simple", + "only", + "worker", + "slope", + "certainly", + "fruit", + "trouble", + "basic", + "select", + "former", + "high", + "hurt", + "came", + "pale", + "including", + "eventually", + "tank", + "function", + "mixture", + "hope", + "fight", + "dress", + "rock", + "winter", + "statement", + "lips", + "industry", + "review", + "bee", + "blind", + "slept", + "oldest", + "day", + "give", + "oxygen", + "facing", + "whenever", + "modern", + "plain", + "solar", + "motion", + "relationship", + "recent", + "won", + "ear", + "sometime", + "love", + "scale", + "joined", + "these", + "clay", + "onto", + "liquid", + "race", + "fat", + "below", + "dollar", + "perfect", + "grow", + "unknown", + "bean", + "is", + "reader", + "story", + "disease", + "soil", + "across", + "board", + "locate", + "list", + "property", + "goose", + "track", + "grass", + "length", + "square", + "unit", + "board", + "lift", + "shallow", + "flame", + "direct", + "first", + "lesson", + "cook", + "value", + "anyone", + "captain", + "made", + "mind", + "swam", + "hospital", + "essential", + "pocket", + "cookies", + "wind", + "crowd", + "machine", + "knew", + "crop", + "ever", + "tonight", + "wolf", + "order", + "entire", + "topic", + "situation", + "cave", + "younger", + "limited", + "line", + "control", + "being", + "army", + "tried", + "newspaper", + "jack", + "done", + "fought", + "enjoy", + "before", + "floor", + "express", + "thread", + "degree", + "busy", + "truth", + "lady", + "field", + "planned", + "evening", + "expression", + "barn", + "former", + "mill", + "nearer", + "cowboy", + "exact", + "wash", + "written", + "stepped", + "than", + "practice", + "cold", + "thought", + "for", + "coast", + "organized", + "physical", + "board", + "paid", + "cross", + "route", + "frequently", + "spoken", + "command", + "examine", + "somewhere", + "film", + "else", + "rubber", + "wide", + "eleven", + "widely", + "house", + "thirty", + "seed", + "plant", + "snake", + "kill", + "afraid", + "herself", + "corner", + "sing", + "bank", + "north", + "bank", + "beauty", + "division", + "sheep", + "refer", + "write", + "diameter", + "both", + "morning", + "snow", + "teacher", + "shirt", + "test", + "victory", + "anyway", + "of", + "lift", + "different", + "escape", + "store", + "horse", + "flies", + "shut", + "close", + "call", + "mind", + "purpose", + "letter", + "journey", + "cold", + "fire", + "mice", + "ranch", + "donkey", + "your", + "replace", + "lot", + "gain", + "entirely", + "discover", + "pack", + "slabs", + "careful", + "road", + "quietly", + "box", + "arm", + "worth", + "place", + "grow", + "western", + "liquid", + "lonely", + "baseball", + "article", + "garage", + "color", + "itself", + "ran", + "unusual", + "secret", + "soil", + "voice", + "mean", + "has", + "direct", + "roar", + "sleep", + "substance", + "return", + "railroad", + "ask", + "cause", + "anywhere", + "card", + "frequently", + "friendly", + "horn", + "collect", + "teeth", + "force", + "soil", + "bat", + "picture", + "entirely", + "said", + "pressure", + "rain", + "young", + "essential", + "build", + "molecular", + "graph", + "river", + "scientist", + "forgotten", + "five", + "energy", + "ship", + "coat", + "buy", + "diameter", + "master", + "worry", + "smile", + "themselves", + "taken", + "wire", + "seen", + "stiff", + "open", + "divide", + "mountain", + "egg", + "steel", + "die", + "oil", + "remain", + "stage", + "have", + "halfway", + "plane", + "breakfast", + "skill", + "skill", + "printed", + "son", + "face", + "spent", + "choose", + "cowboy", + "operation", + "top", + "copy", + "wonder", + "careful", + "else", + "feel", + "ability", + "willing", + "rocket", + "deer", + "stop", + "son", + "final", + "plain", + "bare", + "bill", + "never", + "medicine", + "horn", + "nails", + "unknown", + "whispered", + "girl", + "lot", + "instance", + "month", + "direct", + "task", + "education", + "theory", + "school", + "least", + "stage", + "front", + "identity", + "selection", + "its", + "send", + "needed", + "trace", + "lead", + "fence", + "quietly", + "shot", + "dig", + "wheat", + "anything", + "personal", + "count", + "climate", + "want", + "silk", + "lift", + "thick", + "seed", + "ancient", + "joy", + "vowel", + "create", + "shoe", + "itself", + "dust", + "label", + "actually", + "balance", + "wealth", + "military", + "solid", + "arrow", + "likely", + "touch", + "tell", + "softly", + "shoe", + "century", + "across", + "chart", + "usually", + "powder", + "shore", + "watch", + "aloud", + "frame", + "layers", + "disease", + "since", + "basis", + "hide", + "my", + "badly", + "cool", + "vertical", + "passage", + "nearer", + "attempt", + "prize", + "across", + "sweet", + "importance", + "star", + "scientific", + "storm", + "possibly", + "stranger", + "point", + "silence", + "energy", + "powerful", + "gain", + "trunk", + "certainly", + "current", + "stock", + "bottom", + "floating", + "floor", + "organization", + "pack", + "wrong", + "heavy", + "by", + "search", + "field", + "breathe", + "wrong", + "per", + "interest", + "purple", + "nervous", + "hole", + "hay", + "tree", + "pet", + "fur", + "due", + "name", + "layers", + "willing", + "ear", + "mental", + "check", + "ranch", + "income", + "cell", + "fun", + "continued", + "angle", + "thy", + "motion", + "country", + "vegetable", + "butter", + "regular", + "satellites", + "nuts", + "plane", + "stairs", + "tool", + "live", + "basket", + "huge", + "package", + "alive", + "airplane", + "ourselves", + "there", + "country", + "bridge", + "opposite", + "factory", + "free", + "aside", + "idea", + "roof", + "plane", + "shown", + "introduced", + "busy", + "once", + "end", + "written", + "cell", + "mainly", + "hope", + "lack", + "fly", + "adjective", + "remarkable", + "belong", + "weight", + "potatoes", + "organized", + "dinner", + "experience", + "together", + "more", + "slave", + "shelf", + "welcome", + "strength", + "football", + "state", + "discover", + "thus", + "whenever", + "course", + "eight", + "drive", + "bound", + "ten", + "victory", + "task", + "lose", + "twice", + "produce", + "tin", + "salmon", + "wise", + "military", + "pretty", + "country", + "diameter", + "born", + "courage", + "carried", + "fear", + "lungs", + "victory", + "land", + "nation", + "toy", + "bread", + "part", + "fewer", + "hill", + "split", + "manner", + "fairly", + "peace", + "tree", + "quick", + "kept", + "enough", + "music", + "double", + "continent", + "said", + "office", + "brush", + "not", + "consider", + "numeral", + "enter", + "hundred", + "closer", + "replied", + "shinning", + "total", + "order", + "behavior", + "disease", + "tears", + "ability", + "guard", + "straw", + "carried", + "week", + "flag", + "because", + "hungry", + "vegetable", + "pattern", + "buffalo", + "just", + "chance", + "connected", + "basket", + "conversation", + "upper", + "inch", + "per", + "molecular", + "felt", + "silence", + "opposite", + "nose", + "noise", + "expression", + "fully", + "heat", + "throw", + "yourself", + "beneath", + "seldom", + "central", + "visit", + "bridge", + "label", + "control", + "definition", + "movie", + "became", + "gift", + "again", + "away", + "anything", + "blue", + "movie", + "pan", + "check", + "lay", + "rise", + "carefully", + "farmer", + "central", + "call", + "balloon", + "whether", + "desert", + "leg", + "obtain", + "harbor", + "sick", + "due", + "aside", + "past", + "garage", + "browserling", + "bigger", + "specific", + "hide", + "conversation", + "temperature", + "development", + "engineer", + "task", + "opportunity", + "cookies", + "understanding", + "walk", + "regular", + "liquid", + "job", + "stairs", + "hill", + "eaten", + "position", + "straw", + "region", + "order", + "supply", + "dress", + "follow", + "physical", + "swimming", + "vapor", + "stopped", + "decide", + "noun", + "command", + "lot", + "tomorrow", + "personal", + "arrangement", + "production", + "balance", + "people", + "tongue", + "explanation", + "degree", + "hundred", + "compound", + "old", + "gave", + "choose", + "nine", + "light", + "lead", + "stranger", + "ball", + "if", + "creature", + "probably", + "realize", + "listen", + "animal", + "activity", + "duty", + "grade", + "also", + "usual", + "reason", + "sheet", + "per", + "bad", + "usually", + "largest", + "job", + "sides", + "poem", + "or", + "apart", + "equator", + "hair", + "stepped", + "chart", + "suppose", + "fall", + "in", + "cost", + "health", + "feed", + "telephone", + "vote", + "laid", + "improve", + "recently", + "book", + "difficult", + "ants", + "wild", + "canal", + "another", + "believed", + "work", + "rule", + "come", + "century", + "poetry", + "balance", + "hay", + "continued", + "represent", + "taste", + "lonely", + "build", + "nearly", + "numeral", + "struck", + "burn", + "may", + "roar", + "luck", + "dance", + "type", + "maybe", + "spend", + "me", + "level", + "arrange", + "affect", + "cover", + "lovely", + "ever", + "getting", + "lead", + "trail", + "old", + "whom", + "process", + "shadow", + "engineer", + "receive", + "proper", + "within", + "team", + "expression", + "salt", + "empty", + "pass", + "star", + "price", + "struck", + "human", + "thousand", + "daily", + "blanket", + "age", + "excitement", + "enemy", + "available", + "offer", + "stems", + "are", + "measure", + "wash", + "nails", + "journey", + "whale", + "birds", + "occasionally", + "bar", + "simple", + "captain", + "being", + "include", + "show", + "value", + "model", + "cheese", + "way", + "chief", + "bowl", + "success", + "fairly", + "note", + "mile", + "wet", + "vast", + "hole", + "into", + "oldest", + "whispered", + "well", + "movie", + "immediately", + "design", + "outer", + "worried", + "happily", + "light", + "warm", + "bad", + "aid", + "exist", + "two", + "evening", + "teacher", + "building", + "plane", + "blanket", + "wool", + "excited", + "season", + "title", + "suggest", + "organization", + "door", + "name", + "gate", + "what", + "tales", + "religious", + "in", + "shut", + "forth", + "straw", + "sound", + "gain", + "love", + "threw", + "surrounded", + "planet", + "disease", + "young", + "shells", + "wonder", + "numeral", + "wood", + "chapter", + "headed", + "farther", + "jet", + "snow", + "extra", + "bank", + "list", + "made", + "barn", + "related", + "pot", + "want", + "hung", + "say", + "sharp", + "shake", + "station", + "possibly", + "grandfather", + "death", + "inch", + "turn", + "nearby", + "nation", + "fear", + "open", + "change", + "arrange", + "driving", + "basket", + "visit", + "pie", + "yet", + "colony", + "asleep", + "upward", + "blood", + "blue", + "depth", + "pound", + "bill", + "note", + "universe", + "angle", + "dream", + "whose", + "determine", + "review", + "lost", + "decide", + "cover", + "charge", + "soft", + "clothes", + "highway", + "husband", + "fine", + "paint", + "attempt", + "cook", + "angle", + "pile", + "faster", + "raw", + "date", + "boy", + "pen", + "addition", + "trunk", + "shoulder", + "skin", + "against", + "when", + "tiny", + "rear", + "office", + "course", + "chose", + "seed", + "winter", + "everybody", + "environment", + "child", + "purple", + "street", + "syllable", + "caught", + "detail", + "surprise", + "combine", + "nuts", + "catch", + "handsome", + "package", + "white", + "warn", + "merely", + "personal", + "crop", + "raw", + "gate", + "snow", + "paper", + "suppose", + "asleep", + "height", + "round", + "state", + "treated", + "various", + "pull", + "lonely", + "angry", + "vowel", + "been", + "generally", + "amount", + "somewhere", + "negative", + "alive", + "finish", + "pen", + "contain", + "divide", + "dried", + "till", + "whenever", + "ring", + "government", + "expect", + "large", + "rest", + "mail", + "finger", + "indicate", + "if", + "easy", + "pack", + "took", + "carried", + "calm", + "halfway", + "fat", + "command", + "organized", + "slabs", + "tightly", + "someone", + "dress", + "piece", + "wave", + "catch", + "function", + "late", + "end", + "signal", + "active", + "someone", + "experience", + "nails", + "foot", + "shut", + "willing", + "driver", + "jar", + "tobacco", + "furniture", + "muscle", + "slow", + "silent", + "fewer", + "dropped", + "how", + "around", + "reader", + "fairly", + "cent", + "edge", + "available", + "provide", + "wrapped", + "six", + "carry", + "satellites", + "however", + "box", + "truck", + "pass", + "market", + "rain", + "earth", + "determine", + "additional", + "subject", + "instance", + "bee", + "rock", + "no", + "compass", + "heading", + "lose", + "somehow", + "pictured", + "load", + "upper", + "clock", + "information", + "except", + "difficult", + "another", + "appropriate", + "she", + "battle", + "likely", + "blind", + "couple", + "upward", + "part", + "wind", + "record", + "satellites", + "snow", + "halfway", + "cost", + "rope", + "equator", + "exercise", + "nice", + "weather", + "habit", + "ground", + "chart", + "bread", + "smell", + "task", + "guard", + "western", + "blank", + "television", + "range", + "during", + "wheat", + "caught", + "began", + "trace", + "date", + "happened", + "noon", + "practical", + "snow", + "wrong", + "heart", + "seems", + "native", + "layers", + "possibly", + "term", + "leather", + "circus", + "oil", + "shout", + "community", + "breathe", + "trunk", + "swim", + "birds", + "stems", + "behind", + "engine", + "continued", + "cause", + "rock", + "title", + "arrangement", + "consider", + "prevent", + "crowd", + "swimming", + "passage", + "higher", + "available", + "street", + "possible", + "together", + "chair", + "length", + "distant", + "sold", + "tent", + "wind", + "powder", + "saddle", + "phrase", + "sunlight", + "play", + "safety", + "frighten", + "grandmother", + "leather", + "strong", + "lost", + "lonely", + "could", + "carry", + "whatever", + "upper", + "coming", + "hour", + "quite", + "dance", + "world", + "greater", + "swing", + "living", + "jack", + "fireplace", + "favorite", + "related", + "they", + "hearing", + "glad", + "upper", + "anywhere", + "smoke", + "square", + "himself", + "burst", + "laid", + "now", + "turn", + "century", + "equally", + "is", + "lady", + "pie", + "exist", + "value", + "gently", + "finish", + "port", + "mill", + "accurate", + "hold", + "fog", + "it", + "breathing", + "captain", + "require", + "grass", + "band", + "lungs", + "college", + "curve", + "produce", + "anyway", + "greater", + "forest", + "shoot", + "fill", + "hair", + "in", + "except", + "fence", + "curious", + "outside", + "this", + "hardly", + "laid", + "afternoon", + "view", + "top", + "cook", + "top", + "manner", + "worker", + "which", + "careful", + "dig", + "course", + "star", + "bet", + "principle", + "ahead", + "safe", + "selection", + "instance", + "pass", + "greater", + "trace", + "journey", + "see", + "slip", + "paid", + "tell", + "progress", + "number", + "studying", + "all", + "divide", + "turn", + "sea", + "jet", + "type", + "sink", + "settlers", + "swept", + "correctly", + "herself", + "car", + "whom", + "cowboy", + "numeral", + "fruit", + "another", + "support", + "belt", + "complete", + "line", + "nervous", + "end", + "closely", + "involved", + "knife", + "wide", + "crew", + "upward", + "tonight", + "recognize", + "development", + "whispered", + "western", + "enough", + "blew", + "about", + "tool", + "dinner", + "island", + "medicine", + "distant", + "vegetable", + "place", + "neighborhood", + "command", + "rate", + "powerful", + "improve", + "never", + "symbol", + "quietly", + "door", + "average", + "cabin", + "tightly", + "as", + "twice", + "wrong", + "properly", + "listen", + "beat", + "shelf", + "willing", + "church", + "forth", + "ear", + "new", + "throw", + "title", + "begun", + "chain", + "action", + "camera", + "needed", + "pot", + "shoot", + "land", + "safety", + "ran", + "area", + "telephone", + "married", + "source", + "store", + "thank", + "crowd", + "simple", + "managed", + "upper", + "day", + "driven", + "secret", + "corn", + "birthday", + "son", + "perfectly", + "threw", + "guess", + "clay", + "hearing", + "harder", + "affect", + "necessary", + "burst", + "fat", + "trick", + "sport", + "title", + "leg", + "both", + "slave", + "either", + "highway", + "nothing", + "within", + "accurate", + "scene", + "village", + "journey", + "compare", + "shout", + "giving", + "plant", + "rule", + "community", + "gray", + "card", + "fallen", + "maybe", + "travel", + "deeply", + "building", + "bag", + "fifteen", + "since", + "sudden", + "diameter", + "quietly", + "shelf", + "chief", + "partly", + "act", + "town", + "melted", + "property", + "discussion", + "bone", + "cat", + "straight", + "bowl", + "belt", + "secret", + "concerned", + "reader", + "hardly", + "free", + "morning", + "affect", + "happy", + "island", + "unit", + "bet", + "enemy", + "seeing", + "camp", + "visit", + "afternoon", + "home", + "chart", + "human", + "noise", + "done", + "purpose", + "mood", + "voice", + "join", + "good", + "huge", + "worried", + "deer", + "purple", + "score", + "distant", + "dot", + "old", + "long", + "thank", + "section", + "thousand", + "rod", + "fruit", + "ranch", + "report", + "shout", + "sight", + "fur", + "adventure", + "usual", + "tight", + "jet", + "thus", + "fast", + "stick", + "cent", + "lead", + "aid", + "ship", + "citizen", + "view", + "queen", + "mouse", + "white", + "no", + "hurt", + "tiny", + "greater", + "chose", + "extra", + "yellow", + "thick", + "written", + "require", + "guard", + "including", + "struggle", + "till", + "breathing", + "complete", + "muscle", + "honor", + "city", + "might", + "soil", + "region", + "deep", + "collect", + "wrote", + "flow", + "simply", + "add", + "close", + "simply", + "method", + "older", + "more", + "compass", + "measure", + "reason", + "sight", + "born", + "across", + "capital", + "mouse", + "metal", + "before", + "am", + "wife", + "fine", + "element", + "all", + "gold", + "ball", + "race", + "drink", + "position", + "answer", + "off", + "needs", + "frozen", + "very", + "sent", + "environment", + "maybe", + "suggest", + "buffalo", + "letter", + "cookies", + "effect", + "capital", + "tropical", + "needle", + "outline", + "speak", + "taken", + "those", + "answer", + "aboard", + "molecular", + "send", + "cell", + "accident", + "nation", + "lips", + "freedom", + "mighty", + "husband", + "clearly", + "dug", + "command", + "told", + "highest", + "toy", + "teeth", + "ourselves", + "ocean", + "goose", + "certainly", + "extra", + "quarter", + "soldier", + "none", + "near", + "sunlight", + "tree", + "customs", + "tail", + "rays", + "later", + "gulf", + "rubbed", + "strong", + "home", + "back", + "came", + "rising", + "angle", + "naturally", + "suppose", + "judge", + "condition", + "breathe", + "congress", + "duty", + "printed", + "occur", + "foreign", + "until", + "dinner", + "barn", + "band", + "grow", + "by", + "bring", + "slope", + "local", + "double", + "include", + "street", + "kids", + "health", + "welcome", + "wait", + "pride", + "city", + "musical", + "sum", + "dug", + "heard", + "proper", + "mathematics", + "actual", + "physical", + "grandfather", + "brush", + "whole", + "young", + "harder", + "early", + "dug", + "rush", + "rule", + "grandfather", + "fog", + "blew", + "born", + "base", + "tight", + "mice", + "whatever", + "setting", + "hello", + "journey", + "nearest", + "pleasure", + "rain", + "apartment", + "coast", + "further", + "construction", + "environment", + "key", + "ancient", + "rubber", + "newspaper", + "dried", + "hold", + "moving", + "daughter", + "frame", + "map", + "copper", + "progress", + "log", + "printed", + "hollow", + "himself", + "lion", + "remarkable", + "president", + "path", + "composed", + "sad", + "complex", + "everyone", + "greatly", + "tide", + "real", + "practice", + "article", + "glad", + "imagine", + "pool", + "eventually", + "sea", + "ring", + "leaving", + "tape", + "sum", + "laid", + "sun", + "army", + "belt", + "reach", + "strength", + "another", + "corn", + "favorite", + "gradually", + "enemy", + "show", + "grandmother", + "only", + "tower", + "slope", + "pour", + "molecular", + "diameter", + "jump", + "lost", + "fairly", + "planned", + "happily", + "hard", + "prove", + "write", + "dirty", + "flame", + "upper", + "meat", + "sit", + "easily", + "plate", + "sing", + "triangle", + "join", + "noted", + "bat", + "danger", + "barn", + "voice", + "state", + "field", + "hay", + "spring", + "factory", + "mother", + "tune", + "living", + "laid", + "television", + "ground", + "between", + "built", + "road", + "horn", + "angry", + "along", + "carefully", + "made", + "alive", + "shallow", + "on", + "muscle", + "remain", + "pour", + "in", + "about", + "tail", + "recently", + "worth", + "giant", + "afraid", + "throat", + "even", + "practice", + "official", + "live", + "fresh", + "problem", + "pony", + "gift", + "symbol", + "dry", + "wheat", + "gun", + "bear", + "stretch", + "uncle", + "want", + "bat", + "tape", + "more", + "office", + "world", + "whole", + "stepped", + "root", + "explore", + "dropped", + "bowl", + "talk", + "balance", + "hundred", + "basic", + "price", + "should", + "operation", + "planned", + "swimming", + "size", + "settle", + "rays", + "way", + "bend", + "bound", + "flies", + "eager", + "air", + "sky", + "as", + "red", + "by", + "cannot", + "solve", + "park", + "had", + "anyone", + "lovely", + "likely", + "themselves", + "remarkable", + "hair", + "factory", + "thick", + "sort", + "slabs", + "damage", + "sides", + "here", + "plate", + "paper", + "mud", + "laid", + "material", + "suppose", + "mile", + "my", + "paragraph", + "offer", + "war", + "foreign", + "travel", + "statement", + "character", + "yellow", + "tiny", + "wing", + "palace", + "earn", + "contain", + "having", + "draw", + "eight", + "oldest", + "library", + "surprise", + "boy", + "development", + "belt", + "gun", + "block", + "child", + "wonderful", + "yard", + "failed", + "shinning", + "gift", + "picture", + "member", + "at", + "end", + "shadow", + "half", + "discover", + "greatly", + "globe", + "climate", + "ranch", + "equally", + "nest", + "broke", + "thirty", + "parent", + "origin", + "gone", + "native", + "thrown", + "except", + "previous", + "degree", + "mail", + "valley", + "theory", + "thou", + "bus", + "exchange", + "shoulder", + "to", + "worried", + "night", + "to", + "satellites", + "man", + "stronger", + "principal", + "future", + "musical", + "clock", + "fuel", + "real", + "village", + "die", + "exclaimed", + "try", + "properly", + "naturally", + "close", + "found", + "poem", + "stay", + "adult", + "musical", + "language", + "master", + "sheep", + "officer", + "happily", + "yes", + "fewer", + "her", + "bent", + "coal", + "took", + "police", + "win", + "longer", + "twenty", + "more", + "myself", + "parts", + "agree", + "wife", + "term", + "between", + "however", + "per", + "building", + "name", + "attempt", + "native", + "island", + "understanding", + "dinner", + "worth", + "sad", + "driver", + "rise", + "list", + "cotton", + "noise", + "general", + "north", + "half", + "youth", + "close", + "fought", + "herself", + "ants", + "themselves", + "related", + "men", + "morning", + "victory", + "machine", + "tight", + "cabin", + "forty", + "join", + "particles", + "repeat", + "mass", + "same", + "not", + "canal", + "struck", + "pie", + "ear", + "construction", + "porch", + "twenty", + "paid", + "bound", + "driven", + "safety", + "variety", + "mostly", + "percent", + "daily", + "source", + "poetry", + "clock", + "string", + "light", + "larger", + "stood", + "hello", + "material", + "contain", + "minute", + "through", + "vast", + "vessels", + "shade", + "without", + "object", + "hope", + "slowly", + "excitement", + "ants", + "wide", + "dinner", + "leg", + "movie", + "folks", + "harbor", + "divide", + "speak", + "teacher", + "harbor", + "feet", + "twice", + "up", + "rich", + "satisfied", + "near", + "gave", + "find", + "push", + "order", + "reason", + "mix", + "day", + "safety", + "smell", + "cover", + "border", + "driven", + "review", + "was", + "local", + "old", + "story", + "too", + "oil", + "duck", + "influence", + "bend", + "fierce", + "tax", + "length", + "fairly", + "sand", + "matter", + "highway", + "very", + "wing", + "work", + "joy", + "cake", + "least", + "unit", + "satellites", + "seems", + "enjoy", + "hungry", + "shout", + "army", + "mathematics", + "observe", + "blanket", + "large", + "closely", + "surprise", + "seed", + "represent", + "various", + "dance", + "merely", + "facing", + "record", + "origin", + "adult", + "stems", + "number", + "basis", + "donkey", + "car", + "post", + "like", + "love", + "pile", + "lying", + "usually", + "hung", + "duck", + "grandfather", + "negative", + "health", + "sister", + "than", + "mass", + "compound", + "land", + "distance", + "screen", + "attempt", + "luck", + "whether", + "fell", + "hurt", + "thousand", + "brother", + "soil", + "settlers", + "tune", + "due", + "full", + "past", + "environment", + "anybody", + "route", + "forget", + "coast", + "far", + "somehow", + "help", + "shape", + "work", + "herd", + "seeing", + "week", + "musical", + "take", + "government", + "silver", + "throughout", + "slightly", + "larger", + "biggest", + "shall", + "happened", + "parallel", + "order", + "stop", + "meant", + "ants", + "yard", + "himself", + "rough", + "basis", + "neck", + "mathematics", + "stiff", + "late", + "never", + "crowd", + "motion", + "telephone", + "repeat", + "origin", + "among", + "cost", + "diagram", + "flies", + "numeral", + "information", + "shadow", + "process", + "explain", + "compound", + "twelve", + "plus", + "bus", + "except", + "balloon", + "remarkable", + "rocky", + "agree", + "wrong", + "rhythm", + "soon", + "recent", + "advice", + "whatever", + "one", + "edge", + "fall", + "of", + "told", + "got", + "football", + "easier", + "with", + "failed", + "laid", + "farm", + "dig", + "equally", + "perhaps", + "those", + "hunter", + "floating", + "slope", + "chart", + "rule", + "quiet", + "scared", + "swept", + "special", + "operation", + "longer", + "key", + "carry", + "amount", + "be", + "breakfast", + "pack", + "grew", + "electric", + "duck", + "pack", + "understanding", + "flew", + "pet", + "upon", + "deeply", + "work", + "process", + "everywhere", + "characteristic", + "bicycle", + "refused", + "hearing", + "whistle", + "largest", + "political", + "merely", + "degree", + "grade", + "hearing", + "changing", + "sing", + "medicine", + "tube", + "drove", + "planning", + "fed", + "distance", + "continent", + "search", + "depth", + "balloon", + "load", + "layers", + "run", + "make", + "shallow", + "period", + "try", + "mountain", + "spread", + "further", + "were", + "native", + "color", + "notice", + "shoulder", + "noted", + "fallen", + "allow", + "look", + "funny", + "fun", + "day", + "pressure", + "burst", + "tail", + "naturally", + "occasionally", + "silence", + "though", + "mood", + "spoken", + "together", + "welcome", + "doing", + "such", + "fun", + "wall", + "leg", + "nation", + "least", + "view", + "park", + "origin", + "becoming", + "simply", + "purpose", + "cap", + "fair", + "simply", + "announced", + "those", + "tell", + "acres", + "light", + "power", + "increase", + "spin", + "am", + "range", + "simple", + "daily", + "wild", + "trouble", + "television", + "sun", + "replace", + "engine", + "television", + "driven", + "coal", + "grade", + "away", + "ask", + "pool", + "brain", + "consider", + "lose", + "were", + "court", + "announced", + "disease", + "tin", + "church", + "distant", + "open", + "rhythm", + "clock", + "mighty", + "scientist", + "clay", + "thee", + "perfect", + "went", + "funny", + "nose", + "hall", + "by", + "comfortable", + "policeman", + "sentence", + "track", + "harder", + "powder", + "free", + "hang", + "call", + "equally", + "land", + "enough", + "force", + "heart", + "printed", + "specific", + "talk", + "heat", + "army", + "waste", + "flower", + "are", + "kept", + "chamber", + "her", + "unusual", + "form", + "road", + "firm", + "necessary", + "plan", + "sentence", + "theory", + "dinner", + "tonight", + "order", + "town", + "slept", + "to", + "worth", + "social", + "function", + "electricity", + "youth", + "steady", + "buy", + "put", + "health", + "age", + "class", + "can", + "railroad", + "organization", + "milk", + "wind", + "dream", + "pen", + "mind", + "library", + "carbon", + "soft", + "degree", + "pony", + "bring", + "letter", + "crowd", + "camera", + "familiar", + "article", + "equal", + "at", + "earth", + "plan", + "thrown", + "maybe", + "desert", + "star", + "food", + "manner", + "far", + "train", + "excited", + "piece", + "contrast", + "page", + "two", + "trouble", + "support", + "bicycle", + "summer", + "solid", + "lake", + "successful", + "glad", + "longer", + "rear", + "helpful", + "fellow", + "himself", + "natural", + "push", + "into", + "mental", + "pound", + "tongue", + "voyage", + "plastic", + "leg", + "mice", + "horse", + "atmosphere", + "over", + "rush", + "port", + "hat", + "small", + "them", + "whose", + "mainly", + "copper", + "note", + "cry", + "cage", + "during", + "brown", + "notice", + "greatly", + "country", + "wise", + "community", + "funny", + "solution", + "pull", + "valley", + "learn", + "warn", + "action", + "damage", + "whether", + "field", + "heart", + "perfect", + "chest", + "anything", + "building", + "tone", + "piano", + "shelter", + "determine", + "level", + "took", + "taste", + "busy", + "period", + "hill", + "express", + "food", + "identity", + "mountain", + "little", + "slightly", + "children", + "little", + "swimming", + "exact", + "compass", + "fifteen", + "symbol", + "smile", + "shinning", + "leaving", + "chain", + "radio", + "basis", + "iron", + "spite", + "bow", + "ahead", + "fellow", + "tune", + "leaving", + "not", + "date", + "seems", + "land", + "cap", + "cause", + "means", + "poor", + "felt", + "officer", + "total", + "rocky", + "level", + "thread", + "card", + "break", + "once", + "angle", + "heard", + "tears", + "under", + "tobacco", + "walk", + "ride", + "system", + "explain", + "worried", + "can", + "finally", + "light", + "discovery", + "brush", + "rays", + "ready", + "service", + "cage", + "ancient", + "gave", + "bound", + "consist", + "obtain", + "matter", + "bit", + "said", + "coal", + "act", + "leave", + "porch", + "pencil", + "bottom", + "question", + "worry", + "understanding", + "from", + "condition", + "forest", + "river", + "pull", + "plant", + "symbol", + "fresh", + "bad", + "noon", + "dozen", + "above", + "should", + "box", + "judge", + "cat", + "busy", + "related", + "solid", + "river", + "facing", + "generally", + "count", + "sentence", + "creature", + "judge", + "school", + "layers", + "basket", + "riding", + "dot", + "studied", + "foot", + "climate", + "bank", + "sang", + "fire", + "distant", + "shoot", + "twelve", + "softly", + "north", + "medicine", + "mostly", + "motion", + "tropical", + "powerful", + "damage", + "moment", + "silly", + "sat", + "naturally", + "poetry", + "certain", + "influence", + "research", + "community", + "smaller", + "noted", + "sort", + "before", + "planning", + "accurate", + "ourselves", + "acres", + "electricity", + "badly", + "volume", + "battle", + "everything", + "folks", + "stock", + "importance", + "settle", + "pie", + "block", + "soon", + "telephone", + "finish", + "about", + "birthday", + "purpose", + "teacher", + "hurry", + "typical", + "travel", + "giant", + "good", + "given", + "lunch", + "probably", + "hit", + "bad", + "wood", + "noun", + "rays", + "fine", + "its", + "track", + "tide", + "distant", + "adult", + "satellites", + "yesterday", + "advice", + "bag", + "question", + "quick", + "again", + "join", + "careful", + "most", + "adventure", + "wore", + "sight", + "floor", + "silly", + "tight", + "simply", + "vessels", + "belong", + "brought", + "shut", + "wrong", + "quiet", + "eaten", + "sound", + "younger", + "massage", + "becoming", + "week", + "gold", + "valuable", + "stick", + "consider", + "song", + "herd", + "find", + "giant", + "sang", + "planning", + "sun", + "design", + "circle", + "gasoline", + "cattle", + "where", + "come", + "printed", + "pattern", + "addition", + "chamber", + "guide", + "heard", + "cake", + "until", + "subject", + "wind", + "fireplace", + "bottle", + "quite", + "fight", + "sang", + "sing", + "strong", + "dirty", + "army", + "bus", + "combination", + "say", + "nor", + "travel", + "arrow", + "smooth", + "anyway", + "threw", + "kind", + "nearby", + "tongue", + "be", + "party", + "become", + "carried", + "local", + "young", + "in", + "noun", + "setting", + "labor", + "river", + "around", + "pole", + "remain", + "bend", + "swung", + "won", + "collect", + "another", + "suggest", + "frame", + "tie", + "station", + "source", + "stock", + "fix", + "region", + "atmosphere", + "milk", + "monkey", + "observe", + "current", + "pressure", + "negative", + "laugh", + "source", + "jungle", + "probably", + "who", + "wealth", + "mistake", + "winter", + "gray", + "shoe", + "over", + "character", + "steel", + "wherever", + "equipment", + "score", + "breathe", + "pure", + "bush", + "pan", + "forgotten", + "weak", + "only", + "lion", + "else", + "select", + "finger", + "easy", + "map", + "twelve", + "mainly", + "list", + "useful", + "handle", + "closer", + "noted", + "is", + "height", + "bar", + "grass", + "owner", + "treated", + "courage", + "vote", + "throughout", + "women", + "though", + "crack", + "about", + "tight", + "whom", + "wall", + "suit", + "hard", + "law", + "stopped", + "swim", + "bow", + "does", + "eye", + "city", + "us", + "onto", + "count", + "plane", + "like", + "previous", + "thus", + "tiny", + "nobody", + "trail", + "season", + "valuable", + "planet", + "have", + "diameter", + "specific", + "nose", + "sing", + "principal", + "necessary", + "flow", + "finally", + "queen", + "current", + "length", + "easier", + "safe", + "your", + "terrible", + "pass", + "shinning", + "represent", + "cause", + "sat", + "blood", + "attention", + "way", + "rest", + "practical", + "something", + "window", + "wash", + "equal", + "die", + "enjoy", + "coal", + "blue", + "serve", + "while", + "sit", + "bit", + "bank", + "provide", + "writing", + "ability", + "creature", + "room", + "as", + "table", + "cloud", + "part", + "wind", + "edge", + "vessels", + "writer", + "wrote", + "eye", + "three", + "thank", + "lamp", + "tone", + "huge", + "over", + "map", + "smooth", + "lead", + "broad", + "bite", + "short", + "half", + "column", + "detail", + "red", + "board", + "its", + "tightly", + "as", + "known", + "character", + "managed", + "teacher", + "perfectly", + "consider", + "hall", + "low", + "leaf", + "allow", + "obtain", + "pictured", + "state", + "organization", + "new", + "airplane", + "naturally", + "chance", + "had", + "rich", + "symbol", + "tone", + "related", + "doing", + "coffee", + "hill", + "someone", + "image", + "took", + "extra", + "busy", + "magic", + "slide", + "swing", + "worried", + "perfect", + "swim", + "term", + "physical", + "bush", + "pig", + "potatoes", + "car", + "account", + "nearest", + "forth", + "given", + "seldom", + "loss", + "ride", + "specific", + "honor", + "count", + "hunter", + "purple", + "jar", + "enter", + "became", + "charge", + "six", + "herd", + "poet", + "wheel", + "eleven", + "pot", + "thy", + "taste", + "joined", + "trail", + "become", + "border", + "gift", + "making", + "spent", + "cross", + "golden", + "fairly", + "movement", + "thing", + "not", + "them", + "helpful", + "again", + "connected", + "concerned", + "medicine", + "several", + "nation", + "chief", + "which", + "go", + "stay", + "brown", + "still", + "pour", + "after", + "stick", + "ranch", + "vote", + "dry", + "suggest", + "raw", + "useful", + "read", + "remarkable", + "difficult", + "recognize", + "dream", + "heat", + "thin", + "cold", + "heart", + "special", + "anywhere", + "fish", + "fall", + "regular", + "supply", + "save", + "husband", + "right", + "pet", + "cut", + "industry", + "express", + "north", + "comfortable", + "where", + "essential", + "recently", + "tie", + "today", + "angle", + "arrangement", + "large", + "cat", + "forward", + "outer", + "nails", + "slope", + "spite", + "shout", + "hit", + "meet", + "six", + "sang", + "sport", + "characteristic", + "deal", + "win", + "headed", + "dropped", + "laugh", + "dance", + "tired", + "does", + "coal", + "pictured", + "salt", + "zero", + "pound", + "making", + "sheet", + "hello", + "gift", + "serious", + "meal", + "tail", + "mathematics", + "therefore", + "fix", + "eventually", + "red", + "lesson", + "fresh", + "among", + "stay", + "country", + "spirit", + "funny", + "sail", + "combine", + "as", + "swim", + "merely", + "combination", + "up", + "thirty", + "forgotten", + "road", + "raw", + "growth", + "lake", + "highway", + "crack", + "particular", + "composed", + "forgotten", + "pitch", + "spite", + "quarter", + "wonderful", + "pony", + "year", + "income", + "none", + "exist", + "later", + "sink", + "heat", + "duty", + "cookies", + "across", + "brick", + "know", + "not", + "active", + "bridge", + "industry", + "small", + "skill", + "property", + "voyage", + "structure", + "variety", + "master", + "field", + "scale", + "over", + "teach", + "phrase", + "claws", + "mighty", + "spend", + "series", + "current", + "close", + "ice", + "smell", + "porch", + "fourth", + "library", + "skill", + "troops", + "lower", + "make", + "swam", + "furniture", + "day", + "actually", + "position", + "magnet", + "still", + "knowledge", + "than", + "pond", + "smoke", + "complete", + "practical", + "excellent", + "vapor", + "leave", + "behind", + "loose", + "wish", + "essential", + "lose", + "upward", + "track", + "composition", + "frog", + "jack", + "past", + "gulf", + "tropical", + "nothing", + "twelve", + "ten", + "success", + "government", + "crowd", + "ask", + "sure", + "women", + "method", + "nature", + "include", + "into", + "drove", + "pour", + "pictured", + "parts", + "mad", + "poet", + "paragraph", + "six", + "plane", + "anybody", + "leave", + "apartment", + "western", + "were", + "taken", + "weight", + "shape", + "sight", + "sport", + "onto", + "congress", + "did", + "slightly", + "how", + "guess", + "fresh", + "equipment", + "tried", + "donkey", + "afraid", + "tower", + "stage", + "off", + "floating", + "origin", + "least", + "similar", + "main", + "consist", + "promised", + "behavior", + "bright", + "ring", + "train", + "fast", + "sick", + "graph", + "several", + "anybody", + "hungry", + "nearer", + "thought", + "them", + "meet", + "do", + "sang", + "arrangement", + "football", + "unit", + "feature", + "triangle", + "useful", + "within", + "settle", + "pleasure", + "fear", + "memory", + "tall", + "bottom", + "today", + "one", + "cage", + "plenty", + "behind", + "difficult", + "themselves", + "throat", + "column", + "hardly", + "quarter", + "make", + "your", + "poor", + "quite", + "title", + "identity", + "receive", + "split", + "moon", + "damage", + "poet", + "cattle", + "year", + "rhyme", + "easily", + "fresh", + "seldom", + "enough", + "wash", + "mind", + "bank", + "mouth", + "map", + "tent", + "bag", + "exist", + "rear", + "already", + "fighting", + "pleasant", + "smooth", + "slipped", + "as", + "shells", + "fully", + "difficult", + "appearance", + "loud", + "hour", + "thou", + "sand", + "courage", + "wild", + "doing", + "fix", + "wild", + "when", + "front", + "myself", + "given", + "neck", + "general", + "clay", + "discussion", + "fairly", + "farmer", + "busy", + "load", + "excited", + "exist", + "deeply", + "began", + "lay", + "command", + "final", + "thick", + "face", + "seems", + "his", + "refer", + "independent", + "death", + "carry", + "heart", + "horse", + "mind", + "rush", + "climb", + "mighty", + "therefore", + "idea", + "wagon", + "club", + "applied", + "note", + "month", + "dry", + "easier", + "air", + "individual", + "add", + "myself", + "plenty", + "individual", + "move", + "winter", + "roof", + "inch", + "generally", + "printed", + "parent", + "weak", + "log", + "saw", + "coal", + "instant", + "three", + "why", + "line", + "provide", + "traffic", + "younger", + "pipe", + "rough", + "all", + "highway", + "proud", + "promised", + "development", + "thrown", + "river", + "crew", + "his", + "remain", + "boat", + "desk", + "angle", + "adventure", + "trace", + "sugar", + "combine", + "threw", + "onto", + "result", + "distant", + "element", + "duck", + "plant", + "material", + "way", + "has", + "milk", + "brief", + "three", + "sing", + "accept", + "neighborhood", + "animal", + "clay", + "kept", + "against", + "scene", + "for", + "sleep", + "several", + "lying", + "steady", + "escape", + "further", + "charge", + "birds", + "art", + "bottle", + "series", + "organization", + "shoe", + "wild", + "locate", + "first", + "block", + "horn", + "her", + "principal", + "rubber", + "active", + "excitement", + "yourself", + "early", + "larger", + "rhyme", + "upper", + "family", + "for", + "eager", + "if", + "said", + "board", + "through", + "sit", + "larger", + "research", + "five", + "naturally", + "rising", + "positive", + "sense", + "camera", + "small", + "return", + "his", + "group", + "walk", + "or", + "school", + "famous", + "many", + "take", + "happy", + "official", + "putting", + "faster", + "shall", + "glad", + "tree", + "greatest", + "magnet", + "represent", + "simplest", + "walk", + "dream", + "better", + "ride", + "property", + "per", + "paid", + "balance", + "mail", + "jar", + "pack", + "concerned", + "rhyme", + "southern", + "realize", + "one", + "failed", + "climate", + "case", + "lake", + "needle", + "government", + "again", + "knife", + "carbon", + "instead", + "unless", + "medicine", + "largest", + "quick", + "solve", + "smile", + "changing", + "excited", + "being", + "oxygen", + "paint", + "must", + "exact", + "pretty", + "worth", + "upper", + "built", + "week", + "public", + "plan", + "story", + "personal", + "cat", + "climate", + "led", + "degree", + "door", + "remember", + "sort", + "meat", + "travel", + "strip", + "group", + "quick", + "improve", + "offer", + "material", + "dull", + "discover", + "return", + "clear", + "grow", + "angry", + "affect", + "sharp", + "single", + "slow", + "stage", + "least", + "leader", + "report", + "dish", + "health", + "crack", + "cost", + "smallest", + "near", + "or", + "stronger", + "pick", + "brain", + "alphabet", + "third", + "shoot", + "faster", + "anyone", + "breathing", + "duty", + "summer", + "curve", + "small", + "explain", + "wood", + "brother", + "our", + "gone", + "face", + "accept", + "slope", + "ruler", + "oil", + "series", + "came", + "rest", + "sitting", + "later", + "girl", + "over", + "desert", + "one", + "understanding", + "dance", + "swept", + "living", + "lay", + "bear", + "beauty", + "ate", + "whole", + "balance", + "central", + "shells", + "brought", + "paper", + "shape", + "worse", + "blew", + "president", + "behind", + "youth", + "locate", + "develop", + "hearing", + "joy", + "fully", + "coal", + "tall", + "white", + "shinning", + "no", + "page", + "wrapped", + "acres", + "various", + "dirt", + "sold", + "wide", + "therefore", + "medicine", + "rush", + "plenty", + "someone", + "increase", + "gas", + "dark", + "directly", + "beneath", + "gasoline", + "leaf", + "second", + "finish", + "cotton", + "valuable", + "path", + "given", + "indicate", + "power", + "visitor", + "word", + "larger", + "deeply", + "certainly", + "already", + "silent", + "egg", + "carefully", + "log", + "gate", + "gun", + "solution", + "breathing", + "near", + "atomic", + "system", + "butter", + "material", + "alive", + "oxygen", + "slide", + "slight", + "corner", + "article", + "again", + "tower", + "fellow", + "statement", + "outline", + "worker", + "cover", + "feed", + "second", + "later", + "cookies", + "measure", + "design", + "your", + "customs", + "land", + "hurt", + "pay", + "bus", + "engineer", + "breakfast", + "along", + "spite", + "test", + "circle", + "forty", + "harbor", + "journey", + "than", + "daughter", + "done", + "night", + "low", + "mouse", + "leaving", + "solution", + "expression", + "slightly", + "hurt", + "plant", + "congress", + "park", + "again", + "bean", + "review", + "official", + "indicate", + "limited", + "would", + "layers", + "gently", + "car", + "sight", + "born", + "oldest", + "clearly", + "sea", + "larger", + "trace", + "silence", + "night", + "complete", + "house", + "composition", + "nearer", + "bright", + "freedom", + "young", + "require", + "potatoes", + "adjective", + "shoulder", + "among", + "pen", + "owner", + "there", + "bring", + "avoid", + "golden", + "complex", + "fill", + "open", + "basic", + "try", + "saved", + "blew", + "owner", + "picture", + "manner", + "thick", + "twelve", + "period", + "middle", + "plant", + "population", + "fourth", + "matter", + "pretty", + "highest", + "captured", + "beat", + "nervous", + "bent", + "spin", + "came", + "father", + "love", + "younger", + "sweet", + "bark", + "molecular", + "arm", + "gently", + "follow", + "next", + "know", + "together", + "sort", + "which", + "they", + "grandfather", + "till", + "whether", + "moving", + "spoken", + "prove", + "common", + "beauty", + "building", + "pass", + "clearly", + "feed", + "his", + "yourself", + "ill", + "range", + "atomic", + "war", + "element", + "roar", + "slowly", + "difference", + "outline", + "hold", + "heart", + "grain", + "ahead", + "nails", + "result", + "electric", + "fastened", + "aloud", + "secret", + "water", + "equipment", + "win", + "perfect", + "discover", + "did", + "came", + "made", + "quietly", + "without", + "heard", + "ground", + "broken", + "yellow", + "leather", + "mathematics", + "give", + "animal", + "bright", + "further", + "pattern", + "dug", + "dirty", + "harder", + "kind", + "thus", + "tip", + "sides", + "basis", + "middle", + "shirt", + "beginning", + "see", + "diameter", + "aid", + "sitting", + "chain", + "becoming", + "price", + "cheese", + "kind", + "movement", + "some", + "arrange", + "bent", + "slowly", + "sight", + "cutting", + "service", + "husband", + "plus", + "breathe", + "short", + "smile", + "raw", + "plant", + "battle", + "walk", + "bet", + "order", + "station", + "rock", + "average", + "worse", + "butter", + "fourth", + "announced", + "earlier", + "courage", + "burn", + "minerals", + "cool", + "fat", + "moving", + "necessary", + "pig", + "decide", + "full", + "horse", + "oldest", + "discussion", + "case", + "numeral", + "fox", + "against", + "create", + "drew", + "impossible", + "myself", + "such", + "slow", + "worse", + "subject", + "sell", + "hat", + "advice", + "joy", + "bend", + "contain", + "hand", + "jet", + "cross", + "scale", + "choose", + "loud", + "lamp", + "birth", + "dug", + "refer", + "dark", + "broke", + "lying", + "told", + "boy", + "pine", + "work", + "smallest", + "mistake", + "sister", + "voyage", + "traffic", + "reach", + "natural", + "limited", + "universe", + "screen", + "earlier", + "flew", + "information", + "cry", + "title", + "atomic", + "eat", + "finest", + "no", + "foot", + "gain", + "among", + "colony", + "underline", + "doctor", + "apple", + "women", + "birth", + "terrible", + "wonder", + "pine", + "window", + "further", + "balloon", + "enjoy", + "apartment", + "our", + "attached", + "lungs", + "are", + "closer", + "running", + "golden", + "recently", + "town", + "who", + "sharp", + "extra", + "cloud", + "wherever", + "living", + "sister", + "contain", + "theory", + "threw", + "rabbit", + "depend", + "frame", + "came", + "load", + "single", + "well", + "mostly", + "term", + "loud", + "aloud", + "information", + "open", + "sort", + "town", + "rain", + "stop", + "brief", + "fifteen", + "solution", + "again", + "ago", + "property", + "identity", + "yet", + "especially", + "duty", + "rabbit", + "compare", + "rich", + "mostly", + "purpose", + "paragraph", + "then", + "event", + "century", + "basket", + "reader", + "magnet", + "tea", + "tip", + "call", + "sail", + "instant", + "sink", + "lips", + "slope", + "seat", + "finest", + "public", + "finger", + "few", + "flower", + "spend", + "lost", + "catch", + "pool", + "calm", + "exciting", + "provide", + "carry", + "chemical", + "known", + "had", + "stranger", + "hearing", + "quick", + "broken", + "sheet", + "make", + "pound", + "facing", + "struck", + "cost", + "might", + "sure", + "represent", + "western", + "doctor", + "mine", + "live", + "chain", + "event", + "child", + "brick" +] \ No newline at end of file diff --git a/kadai3-1/segakazzz/tpgame/go.mod b/kadai3-1/segakazzz/tpgame/go.mod new file mode 100644 index 0000000..c0e3b59 --- /dev/null +++ b/kadai3-1/segakazzz/tpgame/go.mod @@ -0,0 +1,3 @@ +module tpgame + +go 1.14 diff --git a/kadai3-1/segakazzz/tpgame/tygame.go b/kadai3-1/segakazzz/tpgame/tygame.go new file mode 100644 index 0000000..b7fda18 --- /dev/null +++ b/kadai3-1/segakazzz/tpgame/tygame.go @@ -0,0 +1,157 @@ +package tpgame + +import ( + "bufio" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "math/rand" + "os" + "strings" + "sync" + "time" +) + +type game struct { + in io.Reader + out io.Writer + buffReader *bufio.Reader + source []string + questions []singleGame + matchRatio float64 + timeout time.Duration + gch *gameCh +} + +type singleGame struct { + input string + answer string + match bool + cumulativeMatch int +} + +type gameCh struct { + ch chan singleGame + closed bool + mutex sync.Mutex +} + +func (gc *gameCh) safeClose() { + gc.mutex.Lock() + defer gc.mutex.Unlock() + if !gc.closed { + close(gc.ch) + gc.closed = true + } +} + +func (gc *gameCh) isClosed() bool { + gc.mutex.Lock() + defer gc.mutex.Unlock() + return gc.closed +} + +func Run(filename string, timeout time.Duration) error { + g, err := newGame(filename, timeout) + if err != nil { + return err + } + + go func() { + var sg singleGame + for i, v := range g.source { + fmt.Fprintf(g.out, "[%d] %s >>> ", i + 1, v) + input, _ := g.buffReader.ReadString('\n') + input = strings.TrimSuffix(input, "\n") + + sg.input = input + sg.answer = v + sg.match = (input == v) + if input == v { + sg.cumulativeMatch++ + } + + if !g.gch.isClosed() { + g.gch.ch <- sg + } + } + }() + + select { + case <-time.After(g.timeout): + g.displayResult() + return nil + } + +} + +func (g *game) calcResult() { + nMatch := g.questions[len(g.questions)-1].cumulativeMatch + nTotal := len(g.questions) + g.matchRatio = (float64(nMatch) / float64(nTotal)) * 100 +} + +func (g *game) displayResult() { + fmt.Fprintln(g.out) + fmt.Fprintln(g.out, strings.Repeat("-", 80)) + fmt.Fprintln(g.out, "Timeout!") + g.gch.safeClose() + for rec := range g.gch.ch { + g.questions = append(g.questions, rec) + } + fmt.Fprintf(g.out, "%-10s %-20s %-20s %-5s\n", "#", "Your Input", "Answer", "Correct?") + fmt.Fprintln(g.out, strings.Repeat("=", 80)) + for i, q := range g.questions { + var correct rune + if q.match { + correct = '⭕' + } else { + correct = '❌' + } + fmt.Fprintf(g.out, "%-10d %-20s %-20s %-5c\n", i+1, q.input, q.answer, correct) + } + g.calcResult() + + fmt.Fprintf(g.out, "[Summary]\n") + fmt.Fprintf(g.out, "%-20s %-20s %-20s\n", "Num of Questions", "Num of Correct Ans", "Match Ratio") + fmt.Fprintln(g.out, strings.Repeat("=", 80)) + fmt.Fprintf(g.out, "%-20d %-20d %.2f\n", len(g.questions), g.questions[len(g.questions)-1].cumulativeMatch, g.matchRatio) +} + +func newGame(filename string, timeout time.Duration) (g *game, err error) { + var words []string + jsonFile, err := os.Open(filename) + if err != nil { + return nil, err + } + defer func() { + err = jsonFile.Close() + }() + byteValue, err := ioutil.ReadAll(jsonFile) + if err != nil { + return nil, err + } + json.Unmarshal(byteValue, &words) + + rand.Seed(time.Now().UnixNano()) + rand.Shuffle(len(words), func(i, j int) { words[i], words[j] = words[j], words[i] }) + + gch := &gameCh{ch: make(chan singleGame, len(words))} + buffReader := bufio.NewReader(os.Stdin) + return &game{source: words, timeout: timeout, gch: gch, in: os.Stdin, out: os.Stdout, buffReader: buffReader}, nil +} + +func (g *game) display(iw int, to io.Writer) error { + return nil +} + +func (g *game) check(iw int) error { + // TODO : increment nRightAns, nQuestions + + return nil +} + +func (g *game) wait() error { + return nil +} From 3aa055663dc72c7a6a45ecef49dcf63acb82901f Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sun, 19 Jul 2020 21:41:04 +0900 Subject: [PATCH 2/8] Added flags etc. --- kadai3-1/segakazzz/command/main.go | 12 ++- kadai3-1/segakazzz/tpgame/tygame.go | 116 +++++++++++----------------- 2 files changed, 55 insertions(+), 73 deletions(-) diff --git a/kadai3-1/segakazzz/command/main.go b/kadai3-1/segakazzz/command/main.go index 162be24..7327332 100644 --- a/kadai3-1/segakazzz/command/main.go +++ b/kadai3-1/segakazzz/command/main.go @@ -1,17 +1,23 @@ package main import ( + "flag" "github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame" "os" "time" ) -func main (){ +func main() { + var ( + json string + sec int + ) + flag.StringVar(&json, "json", "../testdata/words.json", "Path to source json file to import") + flag.IntVar(&sec, "sec", 10, "Seconds to timeout") - err := tpgame.Run("../testdata/words.json", 10 * time.Second) + err := tpgame.Run(json, time.Duration(sec) * time.Second) if err != nil { os.Exit(1) } os.Exit(0) } - diff --git a/kadai3-1/segakazzz/tpgame/tygame.go b/kadai3-1/segakazzz/tpgame/tygame.go index b7fda18..279a04b 100644 --- a/kadai3-1/segakazzz/tpgame/tygame.go +++ b/kadai3-1/segakazzz/tpgame/tygame.go @@ -9,7 +9,6 @@ import ( "math/rand" "os" "strings" - "sync" "time" ) @@ -20,36 +19,15 @@ type game struct { source []string questions []singleGame matchRatio float64 + numMatch int timeout time.Duration - gch *gameCh + errCh chan error } type singleGame struct { - input string - answer string - match bool - cumulativeMatch int -} - -type gameCh struct { - ch chan singleGame - closed bool - mutex sync.Mutex -} - -func (gc *gameCh) safeClose() { - gc.mutex.Lock() - defer gc.mutex.Unlock() - if !gc.closed { - close(gc.ch) - gc.closed = true - } -} - -func (gc *gameCh) isClosed() bool { - gc.mutex.Lock() - defer gc.mutex.Unlock() - return gc.closed + input string + answer string + match bool } func Run(filename string, timeout time.Duration) error { @@ -57,28 +35,16 @@ func Run(filename string, timeout time.Duration) error { if err != nil { return err } - go func() { - var sg singleGame - for i, v := range g.source { - fmt.Fprintf(g.out, "[%d] %s >>> ", i + 1, v) - input, _ := g.buffReader.ReadString('\n') - input = strings.TrimSuffix(input, "\n") - - sg.input = input - sg.answer = v - sg.match = (input == v) - if input == v { - sg.cumulativeMatch++ - } - - if !g.gch.isClosed() { - g.gch.ch <- sg - } + err := g.processGame() + if err !=nil { + g.errCh <- err } }() select { + case err=<-g.errCh: + return err case <-time.After(g.timeout): g.displayResult() return nil @@ -86,20 +52,37 @@ func Run(filename string, timeout time.Duration) error { } -func (g *game) calcResult() { - nMatch := g.questions[len(g.questions)-1].cumulativeMatch - nTotal := len(g.questions) - g.matchRatio = (float64(nMatch) / float64(nTotal)) * 100 +func (g *game) processGame() error{ + + var sg singleGame + for i, v := range g.source { + fmt.Fprintf(g.out, "[%d] %s >>> ", i+1, v) + input, err := g.buffReader.ReadString('\n') + if err != nil { + return err + } + input = strings.TrimSuffix(input, "\n") + sg.input = input + sg.answer = v + sg.match = (input == v) + g.updateSingleGameResult(sg) + } + + return nil + +} +func (g *game) updateSingleGameResult(sg singleGame) { + g.questions = append(g.questions, sg) + if sg.match { + g.numMatch++ + } + g.matchRatio = (float64(g.numMatch) / float64(len(g.questions))) * 100 } func (g *game) displayResult() { fmt.Fprintln(g.out) fmt.Fprintln(g.out, strings.Repeat("-", 80)) fmt.Fprintln(g.out, "Timeout!") - g.gch.safeClose() - for rec := range g.gch.ch { - g.questions = append(g.questions, rec) - } fmt.Fprintf(g.out, "%-10s %-20s %-20s %-5s\n", "#", "Your Input", "Answer", "Correct?") fmt.Fprintln(g.out, strings.Repeat("=", 80)) for i, q := range g.questions { @@ -111,12 +94,11 @@ func (g *game) displayResult() { } fmt.Fprintf(g.out, "%-10d %-20s %-20s %-5c\n", i+1, q.input, q.answer, correct) } - g.calcResult() fmt.Fprintf(g.out, "[Summary]\n") - fmt.Fprintf(g.out, "%-20s %-20s %-20s\n", "Num of Questions", "Num of Correct Ans", "Match Ratio") + fmt.Fprintf(g.out, "%-20s %-20s %-20s %-20s\n", "Num of Questions", "Num of Correct ANS", "Match Ratio[%]", "Timeout Duration[sec]") fmt.Fprintln(g.out, strings.Repeat("=", 80)) - fmt.Fprintf(g.out, "%-20d %-20d %.2f\n", len(g.questions), g.questions[len(g.questions)-1].cumulativeMatch, g.matchRatio) + fmt.Fprintf(g.out, "%-20d %-20d %-20.2f %-20s\n", len(g.questions), g.numMatch, g.matchRatio, g.timeout) } func newGame(filename string, timeout time.Duration) (g *game, err error) { @@ -137,21 +119,15 @@ func newGame(filename string, timeout time.Duration) (g *game, err error) { rand.Seed(time.Now().UnixNano()) rand.Shuffle(len(words), func(i, j int) { words[i], words[j] = words[j], words[i] }) - gch := &gameCh{ch: make(chan singleGame, len(words))} buffReader := bufio.NewReader(os.Stdin) - return &game{source: words, timeout: timeout, gch: gch, in: os.Stdin, out: os.Stdout, buffReader: buffReader}, nil -} -func (g *game) display(iw int, to io.Writer) error { - return nil -} - -func (g *game) check(iw int) error { - // TODO : increment nRightAns, nQuestions - - return nil -} - -func (g *game) wait() error { - return nil + errCh := make(chan error) + return &game{ + source: words, + timeout: timeout, + in: os.Stdin, + out: os.Stdout, + buffReader: buffReader, + errCh:errCh, + }, nil } From 7a7022cc28b94b14c52711fdbad814e4af371e51 Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Fri, 24 Jul 2020 20:08:42 +0900 Subject: [PATCH 3/8] Done Kadai 3-2 --- kadai3-2/segakazzz/.gitignore | 2 + kadai3-2/segakazzz/cmd/go.mod | 7 + kadai3-2/segakazzz/cmd/main.go | 25 +++ kadai3-2/segakazzz/download/download.go | 210 ++++++++++++++++++++++++ kadai3-2/segakazzz/download/go.mod | 3 + 5 files changed, 247 insertions(+) create mode 100644 kadai3-2/segakazzz/.gitignore create mode 100644 kadai3-2/segakazzz/cmd/go.mod create mode 100644 kadai3-2/segakazzz/cmd/main.go create mode 100644 kadai3-2/segakazzz/download/download.go create mode 100644 kadai3-2/segakazzz/download/go.mod diff --git a/kadai3-2/segakazzz/.gitignore b/kadai3-2/segakazzz/.gitignore new file mode 100644 index 0000000..ec2bff2 --- /dev/null +++ b/kadai3-2/segakazzz/.gitignore @@ -0,0 +1,2 @@ +testdata +.idea \ No newline at end of file diff --git a/kadai3-2/segakazzz/cmd/go.mod b/kadai3-2/segakazzz/cmd/go.mod new file mode 100644 index 0000000..33d4027 --- /dev/null +++ b/kadai3-2/segakazzz/cmd/go.mod @@ -0,0 +1,7 @@ +module github.com/gopherdojo/dojo8/kadai3-2/segakazzz/cmd + +go 1.14 + +replace github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download => ../download + +require github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download v0.0.0-00010101000000-000000000000 // indirect diff --git a/kadai3-2/segakazzz/cmd/main.go b/kadai3-2/segakazzz/cmd/main.go new file mode 100644 index 0000000..e0d4a15 --- /dev/null +++ b/kadai3-2/segakazzz/cmd/main.go @@ -0,0 +1,25 @@ +package main + +import "github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download" + +func main() { + + download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 10) + download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 50) + download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 100) + download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 1000) + + + //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 1) + //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 2) + //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 50) + //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 100) + + + //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 1) + //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 2) + //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 50) + //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 100) + +} + diff --git a/kadai3-2/segakazzz/download/download.go b/kadai3-2/segakazzz/download/download.go new file mode 100644 index 0000000..af399ad --- /dev/null +++ b/kadai3-2/segakazzz/download/download.go @@ -0,0 +1,210 @@ +package download + +import ( + //"bytes" + "fmt" + "io" + "net/http" + "net/url" + "os" + "path/filepath" + "strconv" + "strings" + "sync" + "time" +) + +type downloader struct { + url string + tmpFiles []string + outPath string + totalSize int + nChunk int + size int + outputSize int + byteMap []byteLocation + wg sync.WaitGroup + err chan error +} + +type byteLocation struct { + start int + end int + size int +} + +func newDownloader(urlStr string, outDir string, nChunk int) (*downloader, error) { + u, err := url.Parse(urlStr) + if err != nil { + return nil, err + } + _, filename := filepath.Split(u.Path) + + if _, err := os.Stat(outDir); os.IsNotExist(err) { + return nil, err + } + var tmpFiles []string + for i := 0; i < nChunk; i++ { + tmpFiles = append(tmpFiles, filepath.Join(outDir, filename+strconv.Itoa(i))) + } + + downloader := downloader{ + url: urlStr, + outPath: filepath.Join(outDir, filename), + tmpFiles: tmpFiles, + nChunk: nChunk, + byteMap: make([]byteLocation, nChunk), + } + err = downloader.getFileSize() + if err != nil { + return nil, err + } + downloader.calcByteMap() + return &downloader, nil +} + +func Download(url string, outDir string, nChunk int) error { + start := time.Now() + + d, err := newDownloader(url, outDir, nChunk) + if err != nil { + return err + } + + for i, v := range d.byteMap { + d.wg.Add(1) + go d.downloadChunk(v, i) + } + select { + case err := <-d.err: + return err + default: + d.wg.Wait() + if err = d.writeFile(); err != nil { + d.deleteChunks() + return err + } + if err = d.getOutputFileSize(); err != nil { + return err + } + elapsed := time.Since(start) + + d.displaySummary(elapsed) + return nil + } +} + +func (d *downloader) displaySummary(elapsed time.Duration) { + format := "%-30s %-30s\n" + fmt.Println(strings.Repeat("=", 100)) + fmt.Printf("Download Completed!\n") + fmt.Printf("[Summary]\n") + fmt.Println(strings.Repeat("-", 100)) + fmt.Printf(format, "URL", d.url) + fmt.Printf(format, "Output File", d.outPath) + fmt.Printf(format, "Split Count", strconv.Itoa(d.nChunk)) + fmt.Printf(format, "Remote Size (Bytes)", strconv.Itoa(d.totalSize)) + fmt.Printf(format, "Local Size (Bytes)", strconv.Itoa(d.outputSize)) + fmt.Printf(format, "Elapsed", elapsed) + fmt.Println(strings.Repeat("=", 100)) +} + +func (d *downloader) downloadChunk(loc byteLocation, idx int) { + client := &http.Client{} + req, err := http.NewRequest("GET", d.url, nil) + if err != nil { + d.err <- err + } + headerRange := "bytes=" + strconv.Itoa(loc.start) + "-" + strconv.Itoa(loc.end) + req.Header.Add("Range", headerRange) + resp, err := client.Do(req) + if err != nil { + d.err <- err + } + defer resp.Body.Close() + + f, err := os.Create(d.tmpFiles[idx]) + defer f.Close() + + _, err = io.Copy(f, resp.Body) + if err != nil { + d.err <- err + } + //fmt.Printf("[%d]...Downloaded. Start: %d, End: %d, Size:%d\n", idx, loc.start, loc.end, loc.size) + d.wg.Done() +} + +func (d *downloader) writeFile() error { + file, err := os.Create(d.outPath) + defer file.Close() + if err != nil { + return err + } + + if err = d.mergeChunks(file); err != nil { + return err + } + if err = d.deleteChunks(); err != nil { + return err + } + return nil +} + +func (d *downloader) mergeChunks(to *os.File) error { + for _, p := range d.tmpFiles { + f, _ := os.Open(p) + defer f.Close() + if _, err := io.Copy(to, f); err != nil { + return err + } + //fmt.Println(p, " merged") + } + return nil +} + +func (d *downloader) deleteChunks() error { + for _, p := range d.tmpFiles { + if _, err := os.Stat(p); err == nil { + err := os.Remove(p) + if err != nil { + return err + } + //fmt.Println(p, " deleted") + } + } + return nil +} + +func (d *downloader) getFileSize() error { + resp, err := http.Head(d.url) + if err != nil { + return err + } + //fmt.Println(resp) + d.totalSize = int(resp.ContentLength) + d.size = d.totalSize / d.nChunk + //fmt.Println("total sizes ... ", d.totalSize) + return nil +} + +func (d *downloader) calcByteMap() { + var startByte, endByte int + for i := 0; i < d.nChunk; i++ { + startByte = d.size * i + if i == d.nChunk-1 { + endByte = d.totalSize - 1 + } else { + endByte = d.size*(i+1) - 1 + } + d.byteMap[i] = byteLocation{startByte, endByte, endByte - startByte} + } +} + +func (d *downloader) getOutputFileSize() error { + fi, err := os.Stat(d.outPath) + if err != nil { + return err + } + d.outputSize = int(fi.Size()) + return nil +} diff --git a/kadai3-2/segakazzz/download/go.mod b/kadai3-2/segakazzz/download/go.mod new file mode 100644 index 0000000..ff1b8ab --- /dev/null +++ b/kadai3-2/segakazzz/download/go.mod @@ -0,0 +1,3 @@ +module github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download + +go 1.14 From 5e862bc358d7abe62453c1bce312a9156a5ae70f Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Fri, 24 Jul 2020 23:34:01 +0900 Subject: [PATCH 4/8] Added sync.errorGroup --- kadai3-2/segakazzz/cmd/go.sum | 2 + kadai3-2/segakazzz/cmd/main.go | 21 ++++-- kadai3-2/segakazzz/download/download.go | 92 +++++++++++++++---------- kadai3-2/segakazzz/download/go.mod | 2 + kadai3-2/segakazzz/download/go.sum | 2 + 5 files changed, 76 insertions(+), 43 deletions(-) create mode 100644 kadai3-2/segakazzz/cmd/go.sum create mode 100644 kadai3-2/segakazzz/download/go.sum diff --git a/kadai3-2/segakazzz/cmd/go.sum b/kadai3-2/segakazzz/cmd/go.sum new file mode 100644 index 0000000..507ebea --- /dev/null +++ b/kadai3-2/segakazzz/cmd/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/kadai3-2/segakazzz/cmd/main.go b/kadai3-2/segakazzz/cmd/main.go index e0d4a15..a47a51d 100644 --- a/kadai3-2/segakazzz/cmd/main.go +++ b/kadai3-2/segakazzz/cmd/main.go @@ -1,16 +1,20 @@ package main -import "github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download" +import ( + "fmt" + "github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download" + "os" +) func main() { - download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 10) - download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 50) - download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 100) - download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 1000) + //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 10) + //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 50) + //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 100) + //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 1000) - //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 1) + err:=download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./testdata", 10) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 2) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 50) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 100) @@ -21,5 +25,10 @@ func main() { //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 50) //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 100) + if err != nil { + fmt.Println(err.Error()) + os.Exit(1) + } + os.Exit(0) } diff --git a/kadai3-2/segakazzz/download/download.go b/kadai3-2/segakazzz/download/download.go index af399ad..eca0593 100644 --- a/kadai3-2/segakazzz/download/download.go +++ b/kadai3-2/segakazzz/download/download.go @@ -1,8 +1,10 @@ package download import ( + "context" //"bytes" "fmt" + "golang.org/x/sync/errgroup" "io" "net/http" "net/url" @@ -71,55 +73,47 @@ func Download(url string, outDir string, nChunk int) error { return err } - for i, v := range d.byteMap { - d.wg.Add(1) - go d.downloadChunk(v, i) + bc := context.Background() + eg, ctx := errgroup.WithContext(bc) + //ctx, cancel := context.WithTimeout(ctx, 1* time.Second) + //defer cancel() + + for i := range d.byteMap { + i := i + eg.Go(func() error { + return d.downloadChunk(i, ctx) + }) } - select { - case err := <-d.err: + if err := eg.Wait(); err != nil { return err - default: - d.wg.Wait() - if err = d.writeFile(); err != nil { - d.deleteChunks() - return err - } - if err = d.getOutputFileSize(); err != nil { - return err - } - elapsed := time.Since(start) + } - d.displaySummary(elapsed) - return nil + if err = d.writeFile(); err != nil { + d.deleteChunks() + return err } -} + if err = d.getOutputFileSize(); err != nil { + return err + } + elapsed := time.Since(start) -func (d *downloader) displaySummary(elapsed time.Duration) { - format := "%-30s %-30s\n" - fmt.Println(strings.Repeat("=", 100)) - fmt.Printf("Download Completed!\n") - fmt.Printf("[Summary]\n") - fmt.Println(strings.Repeat("-", 100)) - fmt.Printf(format, "URL", d.url) - fmt.Printf(format, "Output File", d.outPath) - fmt.Printf(format, "Split Count", strconv.Itoa(d.nChunk)) - fmt.Printf(format, "Remote Size (Bytes)", strconv.Itoa(d.totalSize)) - fmt.Printf(format, "Local Size (Bytes)", strconv.Itoa(d.outputSize)) - fmt.Printf(format, "Elapsed", elapsed) - fmt.Println(strings.Repeat("=", 100)) + d.displaySummary(elapsed) + return nil } -func (d *downloader) downloadChunk(loc byteLocation, idx int) { +func (d *downloader) downloadChunk(idx int, ctx context.Context) error { + //ctx, cancel := context.WithCancel(ctx) + loc := d.byteMap[idx] client := &http.Client{} req, err := http.NewRequest("GET", d.url, nil) if err != nil { - d.err <- err + return err } headerRange := "bytes=" + strconv.Itoa(loc.start) + "-" + strconv.Itoa(loc.end) req.Header.Add("Range", headerRange) resp, err := client.Do(req) if err != nil { - d.err <- err + return err } defer resp.Body.Close() @@ -128,10 +122,19 @@ func (d *downloader) downloadChunk(loc byteLocation, idx int) { _, err = io.Copy(f, resp.Body) if err != nil { - d.err <- err + return err + } + fmt.Printf("[%d]...Downloaded. Start: %d, End: %d, Size:%d\n", idx, loc.start, loc.end, loc.size) + + select { + case <-ctx.Done(): + fmt.Println("Cancelled >> ", idx) + return nil + case <-time.After(1 * time.Second): + return fmt.Errorf("Timeout >> ", idx) + default: + return nil } - //fmt.Printf("[%d]...Downloaded. Start: %d, End: %d, Size:%d\n", idx, loc.start, loc.end, loc.size) - d.wg.Done() } func (d *downloader) writeFile() error { @@ -208,3 +211,18 @@ func (d *downloader) getOutputFileSize() error { d.outputSize = int(fi.Size()) return nil } + +func (d *downloader) displaySummary(elapsed time.Duration) { + format := "%-30s %-30s\n" + fmt.Println(strings.Repeat("=", 100)) + fmt.Printf("Download Completed!\n") + fmt.Printf("[Summary]\n") + fmt.Println(strings.Repeat("-", 100)) + fmt.Printf(format, "URL", d.url) + fmt.Printf(format, "Output File", d.outPath) + fmt.Printf(format, "Split Count", strconv.Itoa(d.nChunk)) + fmt.Printf(format, "Remote Size (Bytes)", strconv.Itoa(d.totalSize)) + fmt.Printf(format, "Local Size (Bytes)", strconv.Itoa(d.outputSize)) + fmt.Printf(format, "Elapsed", elapsed) + fmt.Println(strings.Repeat("=", 100)) +} diff --git a/kadai3-2/segakazzz/download/go.mod b/kadai3-2/segakazzz/download/go.mod index ff1b8ab..6916edb 100644 --- a/kadai3-2/segakazzz/download/go.mod +++ b/kadai3-2/segakazzz/download/go.mod @@ -1,3 +1,5 @@ module github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download go 1.14 + +require golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 diff --git a/kadai3-2/segakazzz/download/go.sum b/kadai3-2/segakazzz/download/go.sum new file mode 100644 index 0000000..507ebea --- /dev/null +++ b/kadai3-2/segakazzz/download/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 2922667edd6c2eba93068dd1b0e5a53b30a094df Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sat, 25 Jul 2020 08:43:25 +0900 Subject: [PATCH 5/8] Added Flags --- kadai3-2/segakazzz/cmd/go.mod | 2 +- kadai3-2/segakazzz/cmd/main.go | 37 +++++++++++++++++------ kadai3-2/segakazzz/download/download.go | 39 ++++++++++++++----------- 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/kadai3-2/segakazzz/cmd/go.mod b/kadai3-2/segakazzz/cmd/go.mod index 33d4027..54197ea 100644 --- a/kadai3-2/segakazzz/cmd/go.mod +++ b/kadai3-2/segakazzz/cmd/go.mod @@ -4,4 +4,4 @@ go 1.14 replace github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download => ../download -require github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download v0.0.0-00010101000000-000000000000 // indirect +require github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download v0.0.0-00010101000000-000000000000 diff --git a/kadai3-2/segakazzz/cmd/main.go b/kadai3-2/segakazzz/cmd/main.go index a47a51d..e0ffe4b 100644 --- a/kadai3-2/segakazzz/cmd/main.go +++ b/kadai3-2/segakazzz/cmd/main.go @@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "github.com/gopherdojo/dojo8/kadai3-2/segakazzz/download" "os" @@ -8,27 +9,45 @@ import ( func main() { + var ( + url string + outDir string + nChunk int + secTimeout int + ) + flag.StringVar(&url, + "url", + "https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", + "Target URL to download") + + flag.StringVar(&outDir, + "dir", + "./testdata/", + "Directory to save file") + + flag.IntVar(&nChunk, "n", 10, "Number of parallel process") + flag.IntVar(&secTimeout, "sec", 10, "Seconds to timeout") + + err := download.Download(url, outDir, nChunk, secTimeout) + + if err != nil { + fmt.Println(err.Error()) + os.Exit(1) + } + os.Exit(0) + //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 10) //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 50) //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 100) //download.Download("http://ipv4.download.thinkbroadband.com/1GB.zip", "./testdata/", 1000) - - err:=download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./testdata", 10) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 2) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 50) //download.Download("https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4", "./", 100) - //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 1) //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 2) //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 50) //download.Download("https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "./", 100) - if err != nil { - fmt.Println(err.Error()) - os.Exit(1) - } - os.Exit(0) } - diff --git a/kadai3-2/segakazzz/download/download.go b/kadai3-2/segakazzz/download/download.go index eca0593..59371f6 100644 --- a/kadai3-2/segakazzz/download/download.go +++ b/kadai3-2/segakazzz/download/download.go @@ -27,6 +27,7 @@ type downloader struct { byteMap []byteLocation wg sync.WaitGroup err chan error + timeout time.Duration } type byteLocation struct { @@ -35,7 +36,7 @@ type byteLocation struct { size int } -func newDownloader(urlStr string, outDir string, nChunk int) (*downloader, error) { +func newDownloader(urlStr string, outDir string, nChunk int, secTimeout int) (*downloader, error) { u, err := url.Parse(urlStr) if err != nil { return nil, err @@ -56,6 +57,7 @@ func newDownloader(urlStr string, outDir string, nChunk int) (*downloader, error tmpFiles: tmpFiles, nChunk: nChunk, byteMap: make([]byteLocation, nChunk), + timeout: time.Duration(secTimeout) * time.Second, } err = downloader.getFileSize() if err != nil { @@ -65,26 +67,31 @@ func newDownloader(urlStr string, outDir string, nChunk int) (*downloader, error return &downloader, nil } -func Download(url string, outDir string, nChunk int) error { +func Download(url string, outDir string, nChunk int, secTimeout int) error { start := time.Now() - d, err := newDownloader(url, outDir, nChunk) + d, err := newDownloader(url, outDir, nChunk, secTimeout) if err != nil { return err } - bc := context.Background() - eg, ctx := errgroup.WithContext(bc) - //ctx, cancel := context.WithTimeout(ctx, 1* time.Second) - //defer cancel() + ctx, cancel := context.WithCancel(context.Background()) + g, gctx := errgroup.WithContext(ctx) for i := range d.byteMap { i := i - eg.Go(func() error { - return d.downloadChunk(i, ctx) + g.Go(func() error { + return d.downloadChunk(i, gctx) }) } - if err := eg.Wait(); err != nil { + + time.AfterFunc(d.timeout, func() { + fmt.Printf("Cancelled due to timeout %s\n", d.timeout) + cancel() + d.deleteChunks() + }) + + if err := g.Wait(); err != nil { return err } @@ -101,8 +108,7 @@ func Download(url string, outDir string, nChunk int) error { return nil } -func (d *downloader) downloadChunk(idx int, ctx context.Context) error { - //ctx, cancel := context.WithCancel(ctx) +func (d *downloader) downloadChunk(idx int, gctx context.Context) error { loc := d.byteMap[idx] client := &http.Client{} req, err := http.NewRequest("GET", d.url, nil) @@ -124,17 +130,16 @@ func (d *downloader) downloadChunk(idx int, ctx context.Context) error { if err != nil { return err } - fmt.Printf("[%d]...Downloaded. Start: %d, End: %d, Size:%d\n", idx, loc.start, loc.end, loc.size) select { - case <-ctx.Done(): + case <-gctx.Done(): fmt.Println("Cancelled >> ", idx) - return nil - case <-time.After(1 * time.Second): - return fmt.Errorf("Timeout >> ", idx) + return gctx.Err() default: + fmt.Printf("[%d]...Downloaded. Start: %d, End: %d, Size:%d\n", idx, loc.start, loc.end, loc.size) return nil } + } func (d *downloader) writeFile() error { From f27b8faa84be87c6efc0e293d14365955da24cda Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sat, 25 Jul 2020 10:55:33 +0900 Subject: [PATCH 6/8] Added README.md for kadai3-2 --- kadai3-2/segakazzz/.gitignore | 3 +- kadai3-2/segakazzz/README.md | 72 ++++++++++++++++++++++++++++++++++ kadai3-2/segakazzz/cmd/main.go | 8 ++-- 3 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 kadai3-2/segakazzz/README.md diff --git a/kadai3-2/segakazzz/.gitignore b/kadai3-2/segakazzz/.gitignore index ec2bff2..7283855 100644 --- a/kadai3-2/segakazzz/.gitignore +++ b/kadai3-2/segakazzz/.gitignore @@ -1,2 +1,3 @@ testdata -.idea \ No newline at end of file +.idea +cmd/kadai3-2 \ No newline at end of file diff --git a/kadai3-2/segakazzz/README.md b/kadai3-2/segakazzz/README.md new file mode 100644 index 0000000..91b547f --- /dev/null +++ b/kadai3-2/segakazzz/README.md @@ -0,0 +1,72 @@ +# 【TRY】分割ダウンローダを作ろう +## 分割ダウンロードを行う + +- Rangeアクセスを用いる +- いくつかのゴルーチンでダウンロードしてマージする +- エラー処理を工夫する +- golang.org/x/sync/errgourpパッケージなどを使ってみる +- キャンセルが発生した場合の実装を行う + + +## 回答 +### 実行方法 +~~~ +cd cmd +go build -o kadai3-2 +./kadai3-2 -u https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4 -d ../testdata/ -s 10 -n 10 +~~~ + +### オプション +- -d 出力先のディレクトリを指定 +- -n ダウンロード分割数を指定 +- -s タイムアウト秒を指定 +- -u ダウンロードするファイルのURLを指定 +~~~ +$ ./kadai3-2 -h +Usage of ./kadai3-2: + -d string + Directory to save file (default "./testdata/") + -n int + Number of parallel process (default 10) + -s int + Seconds to timeout (default 10) + -u string + Target URL to download (default "https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4") +~~~ + +### 実行出力例 +~~~ +$ ./kadai3-2 -u https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4 -d ../testdata/ -s 10 -n 10 +[4]...Downloaded. Start: 7135936, End: 8919919, Size:1783983 +[5]...Downloaded. Start: 8919920, End: 10703903, Size:1783983 +[0]...Downloaded. Start: 0, End: 1783983, Size:1783983 +[3]...Downloaded. Start: 5351952, End: 7135935, Size:1783983 +[6]...Downloaded. Start: 10703904, End: 12487887, Size:1783983 +[8]...Downloaded. Start: 14271872, End: 16055855, Size:1783983 +[9]...Downloaded. Start: 16055856, End: 17839844, Size:1783988 +[1]...Downloaded. Start: 1783984, End: 3567967, Size:1783983 +[7]...Downloaded. Start: 12487888, End: 14271871, Size:1783983 +[2]...Downloaded. Start: 3567968, End: 5351951, Size:1783983 +==================================================================================================== +Download Completed! +[Summary] +---------------------------------------------------------------------------------------------------- +URL https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4 +Output File ../testdata/file_example_MP4_1920_18MG.mp4 +Split Count 10 +Remote Size (Bytes) 17839845 +Local Size (Bytes) 17839845 +Elapsed 3.520312025s +==================================================================================================== +~~~ + +### 処理の説明 +- http.Clientで対象ファイルのヘッダー情報から、ファイルサイズを取得 +- サイズをn分割して、ダウンロードするバイト位置を計算 +- Go Routineを用い、各々ダウンロードを行う +- 一つのGo Routineでエラーが発生した場合は処理をキャンセルする +- 指定のタイムアウト秒数を過ぎたら、親処理をキャンセルし、contextを用い子処理(分割ダウンローダー)を全てキャンセルする + +## 感想及び課題 +- テストコードをしっかり書きたい。Go Routine仕様時のテストの書き方など、調査が必要。 +- contextでの処理はもっと色々なことができそうなので、勉強したい。 \ No newline at end of file diff --git a/kadai3-2/segakazzz/cmd/main.go b/kadai3-2/segakazzz/cmd/main.go index e0ffe4b..3672067 100644 --- a/kadai3-2/segakazzz/cmd/main.go +++ b/kadai3-2/segakazzz/cmd/main.go @@ -16,17 +16,19 @@ func main() { secTimeout int ) flag.StringVar(&url, - "url", + "u", "https://d2qguwbxlx1sbt.cloudfront.net/TextInMotion-VideoSample-1080p.mp4", "Target URL to download") flag.StringVar(&outDir, - "dir", + "d", "./testdata/", "Directory to save file") flag.IntVar(&nChunk, "n", 10, "Number of parallel process") - flag.IntVar(&secTimeout, "sec", 10, "Seconds to timeout") + flag.IntVar(&secTimeout, "s", 10, "Seconds to timeout") + + flag.Parse() err := download.Download(url, outDir, nChunk, secTimeout) From 783908e6f8c226183adb3f1466e1c007778ed906 Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sat, 25 Jul 2020 10:59:51 +0900 Subject: [PATCH 7/8] Fixed README.md --- kadai3-2/segakazzz/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kadai3-2/segakazzz/README.md b/kadai3-2/segakazzz/README.md index 91b547f..df932ab 100644 --- a/kadai3-2/segakazzz/README.md +++ b/kadai3-2/segakazzz/README.md @@ -16,11 +16,12 @@ go build -o kadai3-2 ./kadai3-2 -u https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_1920_18MG.mp4 -d ../testdata/ -s 10 -n 10 ~~~ -### オプション +### オプション - -d 出力先のディレクトリを指定 - -n ダウンロード分割数を指定 - -s タイムアウト秒を指定 - -u ダウンロードするファイルのURLを指定 + ~~~ $ ./kadai3-2 -h Usage of ./kadai3-2: From 02f4e5f2ad8e39b2613b2fc8c3ba1a007ea8a20d Mon Sep 17 00:00:00 2001 From: Kazue Sasatani Date: Sat, 25 Jul 2020 11:22:07 +0900 Subject: [PATCH 8/8] Updated README.md for kadai3-1 --- kadai3-1/segakazzz/.gitignore | 3 +- kadai3-1/segakazzz/README.md | 63 +++++++++++++++++++++ kadai3-1/segakazzz/{command => cmd}/go.mod | 2 +- kadai3-1/segakazzz/{command => cmd}/go.sum | 0 kadai3-1/segakazzz/{command => cmd}/main.go | 2 + 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 kadai3-1/segakazzz/README.md rename kadai3-1/segakazzz/{command => cmd}/go.mod (82%) rename kadai3-1/segakazzz/{command => cmd}/go.sum (100%) rename kadai3-1/segakazzz/{command => cmd}/main.go (96%) diff --git a/kadai3-1/segakazzz/.gitignore b/kadai3-1/segakazzz/.gitignore index 723ef36..70100f3 100644 --- a/kadai3-1/segakazzz/.gitignore +++ b/kadai3-1/segakazzz/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +cmd/kadai3-1 \ No newline at end of file diff --git a/kadai3-1/segakazzz/README.md b/kadai3-1/segakazzz/README.md new file mode 100644 index 0000000..88cc956 --- /dev/null +++ b/kadai3-1/segakazzz/README.md @@ -0,0 +1,63 @@ +# 【TRY】タイピングゲームを作ろう +- 標準出力に英単語を出す(出すものは自由) +- 標準入力から1行受け取る +-制限時間内に何問解けたか表示する + +## 回答 +### 実行方法 +~~~ +cd cmd +go build -o kadai3-1 + ./kadai3-1 -json ../testdata/words.json +~~~ + +### オプション +- -json 入力データをjsonfileで指定 +- -sec 制限秒数を指定 + +~~~ +$ ./kadai3-1 -h +Usage of ./kadai3-1: + -json string + Path to source json file to import (default "../testdata/words.json") + -sec int + Seconds to timeout (default 10) +~~~ + +### 実行出力例 +~~~ +$ ./kadai3-1 -json ../testdata/words.json +[1] drive >>> drive +[2] part >>> part +[3] available >>> available +[4] yellow >>> yellow +[5] hollow >>> +-------------------------------------------------------------------------------- +Timeout! +# Your Input Answer Correct? +================================================================================ +1 drive drive ⭕ +2 part part ⭕ +3 available available ⭕ +4 yellow yellow ⭕ +[Summary] +Num of Questions Num of Correct ANS Match Ratio[%] Timeout Duration[sec] +================================================================================ +4 4 100.00 10s +~~~ + +### jsonのデータ形式 +- オンラインでランダムワードから生成できるツールを用いて、10000個のワードを作成 https://onlinerandomtools.com/generate-random-json +- 実行時には、ランダムソートを行うので、10000個の中からランダムに出題できる +~~~ +[ + "recall", + "work", + "cold", + "star", + ... + ] +~~~ + +## 感想及び課題 +- テストコード生成をする。コード生成と同時にテストを書く癖をつけたい。 diff --git a/kadai3-1/segakazzz/command/go.mod b/kadai3-1/segakazzz/cmd/go.mod similarity index 82% rename from kadai3-1/segakazzz/command/go.mod rename to kadai3-1/segakazzz/cmd/go.mod index 8a40b73..786e28f 100644 --- a/kadai3-1/segakazzz/command/go.mod +++ b/kadai3-1/segakazzz/cmd/go.mod @@ -4,4 +4,4 @@ go 1.14 replace github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame => ../tpgame -require github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame v0.0.0-00010101000000-000000000000 // indirect +require github.com/gopherdojo/dojo8/kadai3-1/segakazzz/tpgame v0.0.0-00010101000000-000000000000 diff --git a/kadai3-1/segakazzz/command/go.sum b/kadai3-1/segakazzz/cmd/go.sum similarity index 100% rename from kadai3-1/segakazzz/command/go.sum rename to kadai3-1/segakazzz/cmd/go.sum diff --git a/kadai3-1/segakazzz/command/main.go b/kadai3-1/segakazzz/cmd/main.go similarity index 96% rename from kadai3-1/segakazzz/command/main.go rename to kadai3-1/segakazzz/cmd/main.go index 7327332..cd49d9d 100644 --- a/kadai3-1/segakazzz/command/main.go +++ b/kadai3-1/segakazzz/cmd/main.go @@ -15,6 +15,8 @@ func main() { flag.StringVar(&json, "json", "../testdata/words.json", "Path to source json file to import") flag.IntVar(&sec, "sec", 10, "Seconds to timeout") + flag.Parse() + err := tpgame.Run(json, time.Duration(sec) * time.Second) if err != nil { os.Exit(1)