URI: 
       told_mnemonic.py - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       told_mnemonic.py (17857B)
       ---
            1 #!/usr/bin/env python
            2 #
            3 # Electrum - lightweight Bitcoin client
            4 # Copyright (C) 2011 thomasv@gitorious
            5 #
            6 # Permission is hereby granted, free of charge, to any person
            7 # obtaining a copy of this software and associated documentation files
            8 # (the "Software"), to deal in the Software without restriction,
            9 # including without limitation the rights to use, copy, modify, merge,
           10 # publish, distribute, sublicense, and/or sell copies of the Software,
           11 # and to permit persons to whom the Software is furnished to do so,
           12 # subject to the following conditions:
           13 #
           14 # The above copyright notice and this permission notice shall be
           15 # included in all copies or substantial portions of the Software.
           16 #
           17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
           18 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
           19 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
           20 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
           21 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
           22 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
           23 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
           24 # SOFTWARE.
           25 
           26 from .mnemonic import Wordlist
           27 
           28 
           29 # list of words from http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Contemporary_poetry
           30 
           31 _words = (
           32 "like",
           33 "just",
           34 "love",
           35 "know",
           36 "never",
           37 "want",
           38 "time",
           39 "out",
           40 "there",
           41 "make",
           42 "look",
           43 "eye",
           44 "down",
           45 "only",
           46 "think",
           47 "heart",
           48 "back",
           49 "then",
           50 "into",
           51 "about",
           52 "more",
           53 "away",
           54 "still",
           55 "them",
           56 "take",
           57 "thing",
           58 "even",
           59 "through",
           60 "long",
           61 "always",
           62 "world",
           63 "too",
           64 "friend",
           65 "tell",
           66 "try",
           67 "hand",
           68 "thought",
           69 "over",
           70 "here",
           71 "other",
           72 "need",
           73 "smile",
           74 "again",
           75 "much",
           76 "cry",
           77 "been",
           78 "night",
           79 "ever",
           80 "little",
           81 "said",
           82 "end",
           83 "some",
           84 "those",
           85 "around",
           86 "mind",
           87 "people",
           88 "girl",
           89 "leave",
           90 "dream",
           91 "left",
           92 "turn",
           93 "myself",
           94 "give",
           95 "nothing",
           96 "really",
           97 "off",
           98 "before",
           99 "something",
          100 "find",
          101 "walk",
          102 "wish",
          103 "good",
          104 "once",
          105 "place",
          106 "ask",
          107 "stop",
          108 "keep",
          109 "watch",
          110 "seem",
          111 "everything",
          112 "wait",
          113 "got",
          114 "yet",
          115 "made",
          116 "remember",
          117 "start",
          118 "alone",
          119 "run",
          120 "hope",
          121 "maybe",
          122 "believe",
          123 "body",
          124 "hate",
          125 "after",
          126 "close",
          127 "talk",
          128 "stand",
          129 "own",
          130 "each",
          131 "hurt",
          132 "help",
          133 "home",
          134 "god",
          135 "soul",
          136 "new",
          137 "many",
          138 "two",
          139 "inside",
          140 "should",
          141 "true",
          142 "first",
          143 "fear",
          144 "mean",
          145 "better",
          146 "play",
          147 "another",
          148 "gone",
          149 "change",
          150 "use",
          151 "wonder",
          152 "someone",
          153 "hair",
          154 "cold",
          155 "open",
          156 "best",
          157 "any",
          158 "behind",
          159 "happen",
          160 "water",
          161 "dark",
          162 "laugh",
          163 "stay",
          164 "forever",
          165 "name",
          166 "work",
          167 "show",
          168 "sky",
          169 "break",
          170 "came",
          171 "deep",
          172 "door",
          173 "put",
          174 "black",
          175 "together",
          176 "upon",
          177 "happy",
          178 "such",
          179 "great",
          180 "white",
          181 "matter",
          182 "fill",
          183 "past",
          184 "please",
          185 "burn",
          186 "cause",
          187 "enough",
          188 "touch",
          189 "moment",
          190 "soon",
          191 "voice",
          192 "scream",
          193 "anything",
          194 "stare",
          195 "sound",
          196 "red",
          197 "everyone",
          198 "hide",
          199 "kiss",
          200 "truth",
          201 "death",
          202 "beautiful",
          203 "mine",
          204 "blood",
          205 "broken",
          206 "very",
          207 "pass",
          208 "next",
          209 "forget",
          210 "tree",
          211 "wrong",
          212 "air",
          213 "mother",
          214 "understand",
          215 "lip",
          216 "hit",
          217 "wall",
          218 "memory",
          219 "sleep",
          220 "free",
          221 "high",
          222 "realize",
          223 "school",
          224 "might",
          225 "skin",
          226 "sweet",
          227 "perfect",
          228 "blue",
          229 "kill",
          230 "breath",
          231 "dance",
          232 "against",
          233 "fly",
          234 "between",
          235 "grow",
          236 "strong",
          237 "under",
          238 "listen",
          239 "bring",
          240 "sometimes",
          241 "speak",
          242 "pull",
          243 "person",
          244 "become",
          245 "family",
          246 "begin",
          247 "ground",
          248 "real",
          249 "small",
          250 "father",
          251 "sure",
          252 "feet",
          253 "rest",
          254 "young",
          255 "finally",
          256 "land",
          257 "across",
          258 "today",
          259 "different",
          260 "guy",
          261 "line",
          262 "fire",
          263 "reason",
          264 "reach",
          265 "second",
          266 "slowly",
          267 "write",
          268 "eat",
          269 "smell",
          270 "mouth",
          271 "step",
          272 "learn",
          273 "three",
          274 "floor",
          275 "promise",
          276 "breathe",
          277 "darkness",
          278 "push",
          279 "earth",
          280 "guess",
          281 "save",
          282 "song",
          283 "above",
          284 "along",
          285 "both",
          286 "color",
          287 "house",
          288 "almost",
          289 "sorry",
          290 "anymore",
          291 "brother",
          292 "okay",
          293 "dear",
          294 "game",
          295 "fade",
          296 "already",
          297 "apart",
          298 "warm",
          299 "beauty",
          300 "heard",
          301 "notice",
          302 "question",
          303 "shine",
          304 "began",
          305 "piece",
          306 "whole",
          307 "shadow",
          308 "secret",
          309 "street",
          310 "within",
          311 "finger",
          312 "point",
          313 "morning",
          314 "whisper",
          315 "child",
          316 "moon",
          317 "green",
          318 "story",
          319 "glass",
          320 "kid",
          321 "silence",
          322 "since",
          323 "soft",
          324 "yourself",
          325 "empty",
          326 "shall",
          327 "angel",
          328 "answer",
          329 "baby",
          330 "bright",
          331 "dad",
          332 "path",
          333 "worry",
          334 "hour",
          335 "drop",
          336 "follow",
          337 "power",
          338 "war",
          339 "half",
          340 "flow",
          341 "heaven",
          342 "act",
          343 "chance",
          344 "fact",
          345 "least",
          346 "tired",
          347 "children",
          348 "near",
          349 "quite",
          350 "afraid",
          351 "rise",
          352 "sea",
          353 "taste",
          354 "window",
          355 "cover",
          356 "nice",
          357 "trust",
          358 "lot",
          359 "sad",
          360 "cool",
          361 "force",
          362 "peace",
          363 "return",
          364 "blind",
          365 "easy",
          366 "ready",
          367 "roll",
          368 "rose",
          369 "drive",
          370 "held",
          371 "music",
          372 "beneath",
          373 "hang",
          374 "mom",
          375 "paint",
          376 "emotion",
          377 "quiet",
          378 "clear",
          379 "cloud",
          380 "few",
          381 "pretty",
          382 "bird",
          383 "outside",
          384 "paper",
          385 "picture",
          386 "front",
          387 "rock",
          388 "simple",
          389 "anyone",
          390 "meant",
          391 "reality",
          392 "road",
          393 "sense",
          394 "waste",
          395 "bit",
          396 "leaf",
          397 "thank",
          398 "happiness",
          399 "meet",
          400 "men",
          401 "smoke",
          402 "truly",
          403 "decide",
          404 "self",
          405 "age",
          406 "book",
          407 "form",
          408 "alive",
          409 "carry",
          410 "escape",
          411 "damn",
          412 "instead",
          413 "able",
          414 "ice",
          415 "minute",
          416 "throw",
          417 "catch",
          418 "leg",
          419 "ring",
          420 "course",
          421 "goodbye",
          422 "lead",
          423 "poem",
          424 "sick",
          425 "corner",
          426 "desire",
          427 "known",
          428 "problem",
          429 "remind",
          430 "shoulder",
          431 "suppose",
          432 "toward",
          433 "wave",
          434 "drink",
          435 "jump",
          436 "woman",
          437 "pretend",
          438 "sister",
          439 "week",
          440 "human",
          441 "joy",
          442 "crack",
          443 "grey",
          444 "pray",
          445 "surprise",
          446 "dry",
          447 "knee",
          448 "less",
          449 "search",
          450 "bleed",
          451 "caught",
          452 "clean",
          453 "embrace",
          454 "future",
          455 "king",
          456 "son",
          457 "sorrow",
          458 "chest",
          459 "hug",
          460 "remain",
          461 "sat",
          462 "worth",
          463 "blow",
          464 "daddy",
          465 "final",
          466 "parent",
          467 "tight",
          468 "also",
          469 "create",
          470 "lonely",
          471 "safe",
          472 "cross",
          473 "dress",
          474 "evil",
          475 "silent",
          476 "bone",
          477 "fate",
          478 "perhaps",
          479 "anger",
          480 "class",
          481 "scar",
          482 "snow",
          483 "tiny",
          484 "tonight",
          485 "continue",
          486 "control",
          487 "dog",
          488 "edge",
          489 "mirror",
          490 "month",
          491 "suddenly",
          492 "comfort",
          493 "given",
          494 "loud",
          495 "quickly",
          496 "gaze",
          497 "plan",
          498 "rush",
          499 "stone",
          500 "town",
          501 "battle",
          502 "ignore",
          503 "spirit",
          504 "stood",
          505 "stupid",
          506 "yours",
          507 "brown",
          508 "build",
          509 "dust",
          510 "hey",
          511 "kept",
          512 "pay",
          513 "phone",
          514 "twist",
          515 "although",
          516 "ball",
          517 "beyond",
          518 "hidden",
          519 "nose",
          520 "taken",
          521 "fail",
          522 "float",
          523 "pure",
          524 "somehow",
          525 "wash",
          526 "wrap",
          527 "angry",
          528 "cheek",
          529 "creature",
          530 "forgotten",
          531 "heat",
          532 "rip",
          533 "single",
          534 "space",
          535 "special",
          536 "weak",
          537 "whatever",
          538 "yell",
          539 "anyway",
          540 "blame",
          541 "job",
          542 "choose",
          543 "country",
          544 "curse",
          545 "drift",
          546 "echo",
          547 "figure",
          548 "grew",
          549 "laughter",
          550 "neck",
          551 "suffer",
          552 "worse",
          553 "yeah",
          554 "disappear",
          555 "foot",
          556 "forward",
          557 "knife",
          558 "mess",
          559 "somewhere",
          560 "stomach",
          561 "storm",
          562 "beg",
          563 "idea",
          564 "lift",
          565 "offer",
          566 "breeze",
          567 "field",
          568 "five",
          569 "often",
          570 "simply",
          571 "stuck",
          572 "win",
          573 "allow",
          574 "confuse",
          575 "enjoy",
          576 "except",
          577 "flower",
          578 "seek",
          579 "strength",
          580 "calm",
          581 "grin",
          582 "gun",
          583 "heavy",
          584 "hill",
          585 "large",
          586 "ocean",
          587 "shoe",
          588 "sigh",
          589 "straight",
          590 "summer",
          591 "tongue",
          592 "accept",
          593 "crazy",
          594 "everyday",
          595 "exist",
          596 "grass",
          597 "mistake",
          598 "sent",
          599 "shut",
          600 "surround",
          601 "table",
          602 "ache",
          603 "brain",
          604 "destroy",
          605 "heal",
          606 "nature",
          607 "shout",
          608 "sign",
          609 "stain",
          610 "choice",
          611 "doubt",
          612 "glance",
          613 "glow",
          614 "mountain",
          615 "queen",
          616 "stranger",
          617 "throat",
          618 "tomorrow",
          619 "city",
          620 "either",
          621 "fish",
          622 "flame",
          623 "rather",
          624 "shape",
          625 "spin",
          626 "spread",
          627 "ash",
          628 "distance",
          629 "finish",
          630 "image",
          631 "imagine",
          632 "important",
          633 "nobody",
          634 "shatter",
          635 "warmth",
          636 "became",
          637 "feed",
          638 "flesh",
          639 "funny",
          640 "lust",
          641 "shirt",
          642 "trouble",
          643 "yellow",
          644 "attention",
          645 "bare",
          646 "bite",
          647 "money",
          648 "protect",
          649 "amaze",
          650 "appear",
          651 "born",
          652 "choke",
          653 "completely",
          654 "daughter",
          655 "fresh",
          656 "friendship",
          657 "gentle",
          658 "probably",
          659 "six",
          660 "deserve",
          661 "expect",
          662 "grab",
          663 "middle",
          664 "nightmare",
          665 "river",
          666 "thousand",
          667 "weight",
          668 "worst",
          669 "wound",
          670 "barely",
          671 "bottle",
          672 "cream",
          673 "regret",
          674 "relationship",
          675 "stick",
          676 "test",
          677 "crush",
          678 "endless",
          679 "fault",
          680 "itself",
          681 "rule",
          682 "spill",
          683 "art",
          684 "circle",
          685 "join",
          686 "kick",
          687 "mask",
          688 "master",
          689 "passion",
          690 "quick",
          691 "raise",
          692 "smooth",
          693 "unless",
          694 "wander",
          695 "actually",
          696 "broke",
          697 "chair",
          698 "deal",
          699 "favorite",
          700 "gift",
          701 "note",
          702 "number",
          703 "sweat",
          704 "box",
          705 "chill",
          706 "clothes",
          707 "lady",
          708 "mark",
          709 "park",
          710 "poor",
          711 "sadness",
          712 "tie",
          713 "animal",
          714 "belong",
          715 "brush",
          716 "consume",
          717 "dawn",
          718 "forest",
          719 "innocent",
          720 "pen",
          721 "pride",
          722 "stream",
          723 "thick",
          724 "clay",
          725 "complete",
          726 "count",
          727 "draw",
          728 "faith",
          729 "press",
          730 "silver",
          731 "struggle",
          732 "surface",
          733 "taught",
          734 "teach",
          735 "wet",
          736 "bless",
          737 "chase",
          738 "climb",
          739 "enter",
          740 "letter",
          741 "melt",
          742 "metal",
          743 "movie",
          744 "stretch",
          745 "swing",
          746 "vision",
          747 "wife",
          748 "beside",
          749 "crash",
          750 "forgot",
          751 "guide",
          752 "haunt",
          753 "joke",
          754 "knock",
          755 "plant",
          756 "pour",
          757 "prove",
          758 "reveal",
          759 "steal",
          760 "stuff",
          761 "trip",
          762 "wood",
          763 "wrist",
          764 "bother",
          765 "bottom",
          766 "crawl",
          767 "crowd",
          768 "fix",
          769 "forgive",
          770 "frown",
          771 "grace",
          772 "loose",
          773 "lucky",
          774 "party",
          775 "release",
          776 "surely",
          777 "survive",
          778 "teacher",
          779 "gently",
          780 "grip",
          781 "speed",
          782 "suicide",
          783 "travel",
          784 "treat",
          785 "vein",
          786 "written",
          787 "cage",
          788 "chain",
          789 "conversation",
          790 "date",
          791 "enemy",
          792 "however",
          793 "interest",
          794 "million",
          795 "page",
          796 "pink",
          797 "proud",
          798 "sway",
          799 "themselves",
          800 "winter",
          801 "church",
          802 "cruel",
          803 "cup",
          804 "demon",
          805 "experience",
          806 "freedom",
          807 "pair",
          808 "pop",
          809 "purpose",
          810 "respect",
          811 "shoot",
          812 "softly",
          813 "state",
          814 "strange",
          815 "bar",
          816 "birth",
          817 "curl",
          818 "dirt",
          819 "excuse",
          820 "lord",
          821 "lovely",
          822 "monster",
          823 "order",
          824 "pack",
          825 "pants",
          826 "pool",
          827 "scene",
          828 "seven",
          829 "shame",
          830 "slide",
          831 "ugly",
          832 "among",
          833 "blade",
          834 "blonde",
          835 "closet",
          836 "creek",
          837 "deny",
          838 "drug",
          839 "eternity",
          840 "gain",
          841 "grade",
          842 "handle",
          843 "key",
          844 "linger",
          845 "pale",
          846 "prepare",
          847 "swallow",
          848 "swim",
          849 "tremble",
          850 "wheel",
          851 "won",
          852 "cast",
          853 "cigarette",
          854 "claim",
          855 "college",
          856 "direction",
          857 "dirty",
          858 "gather",
          859 "ghost",
          860 "hundred",
          861 "loss",
          862 "lung",
          863 "orange",
          864 "present",
          865 "swear",
          866 "swirl",
          867 "twice",
          868 "wild",
          869 "bitter",
          870 "blanket",
          871 "doctor",
          872 "everywhere",
          873 "flash",
          874 "grown",
          875 "knowledge",
          876 "numb",
          877 "pressure",
          878 "radio",
          879 "repeat",
          880 "ruin",
          881 "spend",
          882 "unknown",
          883 "buy",
          884 "clock",
          885 "devil",
          886 "early",
          887 "false",
          888 "fantasy",
          889 "pound",
          890 "precious",
          891 "refuse",
          892 "sheet",
          893 "teeth",
          894 "welcome",
          895 "add",
          896 "ahead",
          897 "block",
          898 "bury",
          899 "caress",
          900 "content",
          901 "depth",
          902 "despite",
          903 "distant",
          904 "marry",
          905 "purple",
          906 "threw",
          907 "whenever",
          908 "bomb",
          909 "dull",
          910 "easily",
          911 "grasp",
          912 "hospital",
          913 "innocence",
          914 "normal",
          915 "receive",
          916 "reply",
          917 "rhyme",
          918 "shade",
          919 "someday",
          920 "sword",
          921 "toe",
          922 "visit",
          923 "asleep",
          924 "bought",
          925 "center",
          926 "consider",
          927 "flat",
          928 "hero",
          929 "history",
          930 "ink",
          931 "insane",
          932 "muscle",
          933 "mystery",
          934 "pocket",
          935 "reflection",
          936 "shove",
          937 "silently",
          938 "smart",
          939 "soldier",
          940 "spot",
          941 "stress",
          942 "train",
          943 "type",
          944 "view",
          945 "whether",
          946 "bus",
          947 "energy",
          948 "explain",
          949 "holy",
          950 "hunger",
          951 "inch",
          952 "magic",
          953 "mix",
          954 "noise",
          955 "nowhere",
          956 "prayer",
          957 "presence",
          958 "shock",
          959 "snap",
          960 "spider",
          961 "study",
          962 "thunder",
          963 "trail",
          964 "admit",
          965 "agree",
          966 "bag",
          967 "bang",
          968 "bound",
          969 "butterfly",
          970 "cute",
          971 "exactly",
          972 "explode",
          973 "familiar",
          974 "fold",
          975 "further",
          976 "pierce",
          977 "reflect",
          978 "scent",
          979 "selfish",
          980 "sharp",
          981 "sink",
          982 "spring",
          983 "stumble",
          984 "universe",
          985 "weep",
          986 "women",
          987 "wonderful",
          988 "action",
          989 "ancient",
          990 "attempt",
          991 "avoid",
          992 "birthday",
          993 "branch",
          994 "chocolate",
          995 "core",
          996 "depress",
          997 "drunk",
          998 "especially",
          999 "focus",
         1000 "fruit",
         1001 "honest",
         1002 "match",
         1003 "palm",
         1004 "perfectly",
         1005 "pillow",
         1006 "pity",
         1007 "poison",
         1008 "roar",
         1009 "shift",
         1010 "slightly",
         1011 "thump",
         1012 "truck",
         1013 "tune",
         1014 "twenty",
         1015 "unable",
         1016 "wipe",
         1017 "wrote",
         1018 "coat",
         1019 "constant",
         1020 "dinner",
         1021 "drove",
         1022 "egg",
         1023 "eternal",
         1024 "flight",
         1025 "flood",
         1026 "frame",
         1027 "freak",
         1028 "gasp",
         1029 "glad",
         1030 "hollow",
         1031 "motion",
         1032 "peer",
         1033 "plastic",
         1034 "root",
         1035 "screen",
         1036 "season",
         1037 "sting",
         1038 "strike",
         1039 "team",
         1040 "unlike",
         1041 "victim",
         1042 "volume",
         1043 "warn",
         1044 "weird",
         1045 "attack",
         1046 "await",
         1047 "awake",
         1048 "built",
         1049 "charm",
         1050 "crave",
         1051 "despair",
         1052 "fought",
         1053 "grant",
         1054 "grief",
         1055 "horse",
         1056 "limit",
         1057 "message",
         1058 "ripple",
         1059 "sanity",
         1060 "scatter",
         1061 "serve",
         1062 "split",
         1063 "string",
         1064 "trick",
         1065 "annoy",
         1066 "blur",
         1067 "boat",
         1068 "brave",
         1069 "clearly",
         1070 "cling",
         1071 "connect",
         1072 "fist",
         1073 "forth",
         1074 "imagination",
         1075 "iron",
         1076 "jock",
         1077 "judge",
         1078 "lesson",
         1079 "milk",
         1080 "misery",
         1081 "nail",
         1082 "naked",
         1083 "ourselves",
         1084 "poet",
         1085 "possible",
         1086 "princess",
         1087 "sail",
         1088 "size",
         1089 "snake",
         1090 "society",
         1091 "stroke",
         1092 "torture",
         1093 "toss",
         1094 "trace",
         1095 "wise",
         1096 "bloom",
         1097 "bullet",
         1098 "cell",
         1099 "check",
         1100 "cost",
         1101 "darling",
         1102 "during",
         1103 "footstep",
         1104 "fragile",
         1105 "hallway",
         1106 "hardly",
         1107 "horizon",
         1108 "invisible",
         1109 "journey",
         1110 "midnight",
         1111 "mud",
         1112 "nod",
         1113 "pause",
         1114 "relax",
         1115 "shiver",
         1116 "sudden",
         1117 "value",
         1118 "youth",
         1119 "abuse",
         1120 "admire",
         1121 "blink",
         1122 "breast",
         1123 "bruise",
         1124 "constantly",
         1125 "couple",
         1126 "creep",
         1127 "curve",
         1128 "difference",
         1129 "dumb",
         1130 "emptiness",
         1131 "gotta",
         1132 "honor",
         1133 "plain",
         1134 "planet",
         1135 "recall",
         1136 "rub",
         1137 "ship",
         1138 "slam",
         1139 "soar",
         1140 "somebody",
         1141 "tightly",
         1142 "weather",
         1143 "adore",
         1144 "approach",
         1145 "bond",
         1146 "bread",
         1147 "burst",
         1148 "candle",
         1149 "coffee",
         1150 "cousin",
         1151 "crime",
         1152 "desert",
         1153 "flutter",
         1154 "frozen",
         1155 "grand",
         1156 "heel",
         1157 "hello",
         1158 "language",
         1159 "level",
         1160 "movement",
         1161 "pleasure",
         1162 "powerful",
         1163 "random",
         1164 "rhythm",
         1165 "settle",
         1166 "silly",
         1167 "slap",
         1168 "sort",
         1169 "spoken",
         1170 "steel",
         1171 "threaten",
         1172 "tumble",
         1173 "upset",
         1174 "aside",
         1175 "awkward",
         1176 "bee",
         1177 "blank",
         1178 "board",
         1179 "button",
         1180 "card",
         1181 "carefully",
         1182 "complain",
         1183 "crap",
         1184 "deeply",
         1185 "discover",
         1186 "drag",
         1187 "dread",
         1188 "effort",
         1189 "entire",
         1190 "fairy",
         1191 "giant",
         1192 "gotten",
         1193 "greet",
         1194 "illusion",
         1195 "jeans",
         1196 "leap",
         1197 "liquid",
         1198 "march",
         1199 "mend",
         1200 "nervous",
         1201 "nine",
         1202 "replace",
         1203 "rope",
         1204 "spine",
         1205 "stole",
         1206 "terror",
         1207 "accident",
         1208 "apple",
         1209 "balance",
         1210 "boom",
         1211 "childhood",
         1212 "collect",
         1213 "demand",
         1214 "depression",
         1215 "eventually",
         1216 "faint",
         1217 "glare",
         1218 "goal",
         1219 "group",
         1220 "honey",
         1221 "kitchen",
         1222 "laid",
         1223 "limb",
         1224 "machine",
         1225 "mere",
         1226 "mold",
         1227 "murder",
         1228 "nerve",
         1229 "painful",
         1230 "poetry",
         1231 "prince",
         1232 "rabbit",
         1233 "shelter",
         1234 "shore",
         1235 "shower",
         1236 "soothe",
         1237 "stair",
         1238 "steady",
         1239 "sunlight",
         1240 "tangle",
         1241 "tease",
         1242 "treasure",
         1243 "uncle",
         1244 "begun",
         1245 "bliss",
         1246 "canvas",
         1247 "cheer",
         1248 "claw",
         1249 "clutch",
         1250 "commit",
         1251 "crimson",
         1252 "crystal",
         1253 "delight",
         1254 "doll",
         1255 "existence",
         1256 "express",
         1257 "fog",
         1258 "football",
         1259 "gay",
         1260 "goose",
         1261 "guard",
         1262 "hatred",
         1263 "illuminate",
         1264 "mass",
         1265 "math",
         1266 "mourn",
         1267 "rich",
         1268 "rough",
         1269 "skip",
         1270 "stir",
         1271 "student",
         1272 "style",
         1273 "support",
         1274 "thorn",
         1275 "tough",
         1276 "yard",
         1277 "yearn",
         1278 "yesterday",
         1279 "advice",
         1280 "appreciate",
         1281 "autumn",
         1282 "bank",
         1283 "beam",
         1284 "bowl",
         1285 "capture",
         1286 "carve",
         1287 "collapse",
         1288 "confusion",
         1289 "creation",
         1290 "dove",
         1291 "feather",
         1292 "girlfriend",
         1293 "glory",
         1294 "government",
         1295 "harsh",
         1296 "hop",
         1297 "inner",
         1298 "loser",
         1299 "moonlight",
         1300 "neighbor",
         1301 "neither",
         1302 "peach",
         1303 "pig",
         1304 "praise",
         1305 "screw",
         1306 "shield",
         1307 "shimmer",
         1308 "sneak",
         1309 "stab",
         1310 "subject",
         1311 "throughout",
         1312 "thrown",
         1313 "tower",
         1314 "twirl",
         1315 "wow",
         1316 "army",
         1317 "arrive",
         1318 "bathroom",
         1319 "bump",
         1320 "cease",
         1321 "cookie",
         1322 "couch",
         1323 "courage",
         1324 "dim",
         1325 "guilt",
         1326 "howl",
         1327 "hum",
         1328 "husband",
         1329 "insult",
         1330 "led",
         1331 "lunch",
         1332 "mock",
         1333 "mostly",
         1334 "natural",
         1335 "nearly",
         1336 "needle",
         1337 "nerd",
         1338 "peaceful",
         1339 "perfection",
         1340 "pile",
         1341 "price",
         1342 "remove",
         1343 "roam",
         1344 "sanctuary",
         1345 "serious",
         1346 "shiny",
         1347 "shook",
         1348 "sob",
         1349 "stolen",
         1350 "tap",
         1351 "vain",
         1352 "void",
         1353 "warrior",
         1354 "wrinkle",
         1355 "affection",
         1356 "apologize",
         1357 "blossom",
         1358 "bounce",
         1359 "bridge",
         1360 "cheap",
         1361 "crumble",
         1362 "decision",
         1363 "descend",
         1364 "desperately",
         1365 "dig",
         1366 "dot",
         1367 "flip",
         1368 "frighten",
         1369 "heartbeat",
         1370 "huge",
         1371 "lazy",
         1372 "lick",
         1373 "odd",
         1374 "opinion",
         1375 "process",
         1376 "puzzle",
         1377 "quietly",
         1378 "retreat",
         1379 "score",
         1380 "sentence",
         1381 "separate",
         1382 "situation",
         1383 "skill",
         1384 "soak",
         1385 "square",
         1386 "stray",
         1387 "taint",
         1388 "task",
         1389 "tide",
         1390 "underneath",
         1391 "veil",
         1392 "whistle",
         1393 "anywhere",
         1394 "bedroom",
         1395 "bid",
         1396 "bloody",
         1397 "burden",
         1398 "careful",
         1399 "compare",
         1400 "concern",
         1401 "curtain",
         1402 "decay",
         1403 "defeat",
         1404 "describe",
         1405 "double",
         1406 "dreamer",
         1407 "driver",
         1408 "dwell",
         1409 "evening",
         1410 "flare",
         1411 "flicker",
         1412 "grandma",
         1413 "guitar",
         1414 "harm",
         1415 "horrible",
         1416 "hungry",
         1417 "indeed",
         1418 "lace",
         1419 "melody",
         1420 "monkey",
         1421 "nation",
         1422 "object",
         1423 "obviously",
         1424 "rainbow",
         1425 "salt",
         1426 "scratch",
         1427 "shown",
         1428 "shy",
         1429 "stage",
         1430 "stun",
         1431 "third",
         1432 "tickle",
         1433 "useless",
         1434 "weakness",
         1435 "worship",
         1436 "worthless",
         1437 "afternoon",
         1438 "beard",
         1439 "boyfriend",
         1440 "bubble",
         1441 "busy",
         1442 "certain",
         1443 "chin",
         1444 "concrete",
         1445 "desk",
         1446 "diamond",
         1447 "doom",
         1448 "drawn",
         1449 "due",
         1450 "felicity",
         1451 "freeze",
         1452 "frost",
         1453 "garden",
         1454 "glide",
         1455 "harmony",
         1456 "hopefully",
         1457 "hunt",
         1458 "jealous",
         1459 "lightning",
         1460 "mama",
         1461 "mercy",
         1462 "peel",
         1463 "physical",
         1464 "position",
         1465 "pulse",
         1466 "punch",
         1467 "quit",
         1468 "rant",
         1469 "respond",
         1470 "salty",
         1471 "sane",
         1472 "satisfy",
         1473 "savior",
         1474 "sheep",
         1475 "slept",
         1476 "social",
         1477 "sport",
         1478 "tuck",
         1479 "utter",
         1480 "valley",
         1481 "wolf",
         1482 "aim",
         1483 "alas",
         1484 "alter",
         1485 "arrow",
         1486 "awaken",
         1487 "beaten",
         1488 "belief",
         1489 "brand",
         1490 "ceiling",
         1491 "cheese",
         1492 "clue",
         1493 "confidence",
         1494 "connection",
         1495 "daily",
         1496 "disguise",
         1497 "eager",
         1498 "erase",
         1499 "essence",
         1500 "everytime",
         1501 "expression",
         1502 "fan",
         1503 "flag",
         1504 "flirt",
         1505 "foul",
         1506 "fur",
         1507 "giggle",
         1508 "glorious",
         1509 "ignorance",
         1510 "law",
         1511 "lifeless",
         1512 "measure",
         1513 "mighty",
         1514 "muse",
         1515 "north",
         1516 "opposite",
         1517 "paradise",
         1518 "patience",
         1519 "patient",
         1520 "pencil",
         1521 "petal",
         1522 "plate",
         1523 "ponder",
         1524 "possibly",
         1525 "practice",
         1526 "slice",
         1527 "spell",
         1528 "stock",
         1529 "strife",
         1530 "strip",
         1531 "suffocate",
         1532 "suit",
         1533 "tender",
         1534 "tool",
         1535 "trade",
         1536 "velvet",
         1537 "verse",
         1538 "waist",
         1539 "witch",
         1540 "aunt",
         1541 "bench",
         1542 "bold",
         1543 "cap",
         1544 "certainly",
         1545 "click",
         1546 "companion",
         1547 "creator",
         1548 "dart",
         1549 "delicate",
         1550 "determine",
         1551 "dish",
         1552 "dragon",
         1553 "drama",
         1554 "drum",
         1555 "dude",
         1556 "everybody",
         1557 "feast",
         1558 "forehead",
         1559 "former",
         1560 "fright",
         1561 "fully",
         1562 "gas",
         1563 "hook",
         1564 "hurl",
         1565 "invite",
         1566 "juice",
         1567 "manage",
         1568 "moral",
         1569 "possess",
         1570 "raw",
         1571 "rebel",
         1572 "royal",
         1573 "scale",
         1574 "scary",
         1575 "several",
         1576 "slight",
         1577 "stubborn",
         1578 "swell",
         1579 "talent",
         1580 "tea",
         1581 "terrible",
         1582 "thread",
         1583 "torment",
         1584 "trickle",
         1585 "usually",
         1586 "vast",
         1587 "violence",
         1588 "weave",
         1589 "acid",
         1590 "agony",
         1591 "ashamed",
         1592 "awe",
         1593 "belly",
         1594 "blend",
         1595 "blush",
         1596 "character",
         1597 "cheat",
         1598 "common",
         1599 "company",
         1600 "coward",
         1601 "creak",
         1602 "danger",
         1603 "deadly",
         1604 "defense",
         1605 "define",
         1606 "depend",
         1607 "desperate",
         1608 "destination",
         1609 "dew",
         1610 "duck",
         1611 "dusty",
         1612 "embarrass",
         1613 "engine",
         1614 "example",
         1615 "explore",
         1616 "foe",
         1617 "freely",
         1618 "frustrate",
         1619 "generation",
         1620 "glove",
         1621 "guilty",
         1622 "health",
         1623 "hurry",
         1624 "idiot",
         1625 "impossible",
         1626 "inhale",
         1627 "jaw",
         1628 "kingdom",
         1629 "mention",
         1630 "mist",
         1631 "moan",
         1632 "mumble",
         1633 "mutter",
         1634 "observe",
         1635 "ode",
         1636 "pathetic",
         1637 "pattern",
         1638 "pie",
         1639 "prefer",
         1640 "puff",
         1641 "rape",
         1642 "rare",
         1643 "revenge",
         1644 "rude",
         1645 "scrape",
         1646 "spiral",
         1647 "squeeze",
         1648 "strain",
         1649 "sunset",
         1650 "suspend",
         1651 "sympathy",
         1652 "thigh",
         1653 "throne",
         1654 "total",
         1655 "unseen",
         1656 "weapon",
         1657 "weary",
         1658 )
         1659 
         1660 wordlist = Wordlist(_words)
         1661 
         1662 n = len(wordlist)
         1663 assert n == 1626
         1664 
         1665 
         1666 # Note about US patent no 5892470: Here each word does not represent a given digit.
         1667 # Instead, the digit represented by a word is variable, it depends on the previous word.
         1668 
         1669 def mn_encode( message ):
         1670     assert len(message) % 8 == 0
         1671     out = []
         1672     for i in range(len(message)//8):
         1673         word = message[8*i:8*i+8]
         1674         x = int(word, 16)
         1675         w1 = (x%n)
         1676         w2 = ((x//n) + w1)%n
         1677         w3 = ((x//n//n) + w2)%n
         1678         out += [ wordlist[w1], wordlist[w2], wordlist[w3] ]
         1679     return out
         1680 
         1681 
         1682 def mn_decode( wlist ):
         1683     out = ''
         1684     for i in range(len(wlist)//3):
         1685         word1, word2, word3 = wlist[3*i:3*i+3]
         1686         w1 =  wordlist.index(word1)
         1687         w2 = (wordlist.index(word2)) % n
         1688         w3 = (wordlist.index(word3)) % n
         1689         x = w1 +n*((w2-w1)%n) +n*n*((w3-w2)%n)
         1690         out += '%08x'%x
         1691     return out
         1692 
         1693 
         1694 if __name__ == '__main__':
         1695     import sys
         1696     if len(sys.argv) == 1:
         1697         print('I need arguments: a hex string to encode, or a list of words to decode')
         1698     elif len(sys.argv) == 2:
         1699         print(' '.join(mn_encode(sys.argv[1])))
         1700     else:
         1701         print(mn_decode(sys.argv[1:]))