dev
dart 2,280 lines 29.7 KB
Raw
1 part of 'zcash.dart';
2
3 class CWZcash extends Zcash {
4 @override
5 WalletCredentials createZcashNewWalletCredentials(
6 {required String name,
7 WalletInfo? walletInfo,
8 String? password,
9 String? mnemonic,
10 required String? passphrase,
11 int network = 0}) {
12 return ZcashNewWalletCredentials(
13 name: name,
14 passphrase: passphrase,
15 password: password,
16 mnemonic: mnemonic,
17 network: network,
18 );
19 }
20
21 @override
22 WalletCredentials createZcashRestoreWalletFromPrivateKey(
23 {required String name,
24 required String privateKey,
25 required String password,
26 required int height}) {
27 return ZcashFromKeysWalletCredentials(
28 name: name,
29 height: height,
30 privateKey: privateKey,
31 password: password,
32 );
33 }
34
35 @override
36 WalletCredentials createZcashRestoreWalletFromSeedCredentials(
37 {required String name,
38 required String mnemonic,
39 required String password,
40 String? passphrase,
41 required int? height,
42 int network = 0}) {
43 return ZcashFromSeedWalletCredentials(
44 name: name, seed: mnemonic, passphrase: passphrase, password: password, height: height, network: network);
45 }
46
47 @override
48 Object createZcashTransactionCredentials(List<Output> outputs,
49 {required CryptoCurrency currency, int? feeRate, TransactionPriority? priority}) {
50 final txPriority =
51 (priority ?? getZcashTransactionPriorityAutomatic()) as MoneroTransactionPriority;
52 return ZcashTransactionCredentials(
53 outputs: outputs
54 .map((out) => OutputInfo(
55 fiatAmount: out.fiatAmount,
56 cryptoAmount: out.cryptoAmountMoney,
57 address: out.address,
58 note: out.note,
59 memo: out.memo,
60 sendAll: out.sendAll,
61 extractedAddress: out.extractedAddress,
62 isParsedAddress: out.isParsedAddress,
63 ))
64 .toList(),
65 priority: txPriority,
66 currency: currency,
67 );
68 }
69
70 @override
71 Object createZcashTransactionCredentialsRaw(List<OutputInfo> outputs,
72 {required CryptoCurrency currency, required int feeRate}) {
73 return ZcashTransactionCredentials(
74 outputs: outputs,
75 priority: getZcashTransactionPriorityAutomatic() as MoneroTransactionPriority,
76 currency: currency,
77 );
78 }
79
80 @override
81 WalletService<WalletCredentials, WalletCredentials, WalletCredentials, WalletCredentials>
82 createZcashWalletService(bool isDirect) {
83 return ZcashWalletService();
84 }
85
86 @override
87 double formatterZcashAmountToDouble({TransactionInfo? transaction, BigInt? amount}) {
88 return cryptoAmountToDouble(amount: amount?.toInt() ?? 0, divider: 1e8);
89 }
90
91 @override
92 int formatterZcashParseAmount(String amount) {
93 return CryptoCurrency.zec.parseAmount(amount).amount.toInt();
94 }
95
96 @override
97 String formatterZcashAmountToString({required int amount}) {
98 return CryptoCurrency.zec.formatAmount(BigInt.from(amount));
99 }
100
101 @override
102 String getAddress(
103 WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> wallet) {
104 final zcashWallet = wallet as ZcashWallet;
105 return zcashWallet.walletAddresses.address;
106 }
107
108 @override
109 String getPrivateKey(
110 WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> wallet) {
111 final zcashWallet = wallet as ZcashWallet;
112 final seed = zcashWallet.seed;
113 return seed ?? '';
114 }
115
116 @override
117 String getPublicKey(
118 WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> wallet) {
119 return getAddress(wallet);
120 }
121
122 @override
123 Map<String, String> getKeys(Object wallet) {
124 final zcashWallet = wallet as ZcashWallet;
125 final seed = zcashWallet.seed;
126
127 return <String, String>{
128 if (seed != null) 'seed': seed,
129 ...(zcashWallet.keys as Map<String, String?>).map((final k, final v) => MapEntry(k, v ?? '')),
130 };
131 }
132
133 @override
134 List<String> getZcashWordList(String language) {
135 return wordList;
136 }
137
138 @override
139 List<WalletInfoAddressInfo> getAddressInfos(Object wallet) {
140 final zcashWallet = wallet as ZcashWallet;
141 return (zcashWallet.walletAddresses as ZcashWalletAddresses).getAddressInfos();
142 }
143
144 @override
145 TransactionPriority getDefaultTransactionPriority() {
146 return MoneroTransactionPriority.automatic;
147 }
148
149 @override
150 TransactionPriority getZcashTransactionPriorityAutomatic() {
151 return MoneroTransactionPriority.automatic;
152 }
153
154 @override
155 TransactionPriority deserializeZcashTransactionPriority({required int raw}) {
156 return MoneroTransactionPriority.deserialize(raw: raw);
157 }
158
159 @override
160 List<TransactionPriority> getTransactionPriorities() {
161 return MoneroTransactionPriority.all;
162 }
163
164 @override
165 ReceivePageOption getSelectedAddressType(Object wallet) {
166 final zcashWallet = wallet as ZcashWallet;
167 final addresses = zcashWallet.walletAddresses as ZcashWalletAddresses;
168 final type = ZcashReceivePageOption.typeFromString(addresses.walletInfo.addressPageType ?? "");
169 if (type == ZcashAddressType.shieldedOrchard) {
170 return ZcashReceivePageOption.shieldedOrchard(ironwood: addresses.ironwoodActive);
171 }
172 return ZcashReceivePageOption.fromType(type);
173 }
174
175 bool hasSelectedTransparentAddress(Object wallet) {
176 return getSelectedAddressType(wallet) == ZcashReceivePageOption.transparentRotated;
177 }
178
179 /// The disposable transparent type is the only Zcash address type that
180 /// rotates. The public transparent address, both shielded types and the
181 /// unified address are all derived from the account and stay the same.
182 @override
183 bool isRotatingAddressOption(ReceivePageOption option) {
184 return option == ZcashReceivePageOption.transparentRotated;
185 }
186
187 @override
188 dynamic getZcashAddressType(ReceivePageOption option) {
189 return (option as ZcashReceivePageOption).toType();
190 }
191
192 @override
193 Future<void> setAddressType(Object wallet, dynamic option) async {
194 final zcashWallet = wallet as ZcashWallet;
195 await (zcashWallet.walletAddresses as ZcashWalletAddresses)
196 .setAddressType(option as ZcashAddressType);
197 }
198
199 @override
200 dynamic getOptionToType(ReceivePageOption option) {
201 return (option as ZcashReceivePageOption).toType();
202 }
203
204 @override
205 void unlockDatabase(String password) {
206 return ZcashWalletBase.unlockDatabase(password);
207 }
208
209 @override
210 Future<int> getHeightByDate(DateTime date) {
211 return ZcashWalletBase.getHeightByDate(date);
212 }
213
214 @override
215 bool showMissingFundsCard(WalletBase wallet) => false;
216
217 @override
218 Future<void> rescanInternalChange(WalletBase wallet) async {}
219
220 @override
221 bool ironwoodActive(WalletAddresses walletAddresses) {
222 return (walletAddresses as ZcashWalletAddresses).ironwoodActive;
223 }
224
225 @override
226 Future<bool> hasOrchardMigratableBalance(WalletBase wallet) {
227 return (wallet as ZcashWallet).hasOrchardMigratableBalance();
228 }
229 }
230
231 const wordList = [
232 'abandon',
233 'ability',
234 'able',
235 'about',
236 'above',
237 'absent',
238 'absorb',
239 'abstract',
240 'absurd',
241 'abuse',
242 'access',
243 'accident',
244 'account',
245 'accuse',
246 'achieve',
247 'acid',
248 'acoustic',
249 'acquire',
250 'across',
251 'act',
252 'action',
253 'actor',
254 'actress',
255 'actual',
256 'adapt',
257 'add',
258 'addict',
259 'address',
260 'adjust',
261 'admit',
262 'adult',
263 'advance',
264 'advice',
265 'aerobic',
266 'affair',
267 'afford',
268 'afraid',
269 'again',
270 'age',
271 'agent',
272 'agree',
273 'ahead',
274 'aim',
275 'air',
276 'airport',
277 'aisle',
278 'alarm',
279 'album',
280 'alcohol',
281 'alert',
282 'alien',
283 'all',
284 'alley',
285 'allow',
286 'almost',
287 'alone',
288 'alpha',
289 'already',
290 'also',
291 'alter',
292 'always',
293 'amateur',
294 'amazing',
295 'among',
296 'amount',
297 'amused',
298 'analyst',
299 'anchor',
300 'ancient',
301 'anger',
302 'angle',
303 'angry',
304 'animal',
305 'ankle',
306 'announce',
307 'annual',
308 'another',
309 'answer',
310 'antenna',
311 'antique',
312 'anxiety',
313 'any',
314 'apart',
315 'apology',
316 'appear',
317 'apple',
318 'approve',
319 'april',
320 'arch',
321 'arctic',
322 'area',
323 'arena',
324 'argue',
325 'arm',
326 'armed',
327 'armor',
328 'army',
329 'around',
330 'arrange',
331 'arrest',
332 'arrive',
333 'arrow',
334 'art',
335 'artefact',
336 'artist',
337 'artwork',
338 'ask',
339 'aspect',
340 'assault',
341 'asset',
342 'assist',
343 'assume',
344 'asthma',
345 'athlete',
346 'atom',
347 'attack',
348 'attend',
349 'attitude',
350 'attract',
351 'auction',
352 'audit',
353 'august',
354 'aunt',
355 'author',
356 'auto',
357 'autumn',
358 'average',
359 'avocado',
360 'avoid',
361 'awake',
362 'aware',
363 'away',
364 'awesome',
365 'awful',
366 'awkward',
367 'axis',
368 'baby',
369 'bachelor',
370 'bacon',
371 'badge',
372 'bag',
373 'balance',
374 'balcony',
375 'ball',
376 'bamboo',
377 'banana',
378 'banner',
379 'bar',
380 'barely',
381 'bargain',
382 'barrel',
383 'base',
384 'basic',
385 'basket',
386 'battle',
387 'beach',
388 'bean',
389 'beauty',
390 'because',
391 'become',
392 'beef',
393 'before',
394 'begin',
395 'behave',
396 'behind',
397 'believe',
398 'below',
399 'belt',
400 'bench',
401 'benefit',
402 'best',
403 'betray',
404 'better',
405 'between',
406 'beyond',
407 'bicycle',
408 'bid',
409 'bike',
410 'bind',
411 'biology',
412 'bird',
413 'birth',
414 'bitter',
415 'black',
416 'blade',
417 'blame',
418 'blanket',
419 'blast',
420 'bleak',
421 'bless',
422 'blind',
423 'blood',
424 'blossom',
425 'blouse',
426 'blue',
427 'blur',
428 'blush',
429 'board',
430 'boat',
431 'body',
432 'boil',
433 'bomb',
434 'bone',
435 'bonus',
436 'book',
437 'boost',
438 'border',
439 'boring',
440 'borrow',
441 'boss',
442 'bottom',
443 'bounce',
444 'box',
445 'boy',
446 'bracket',
447 'brain',
448 'brand',
449 'brass',
450 'brave',
451 'bread',
452 'breeze',
453 'brick',
454 'bridge',
455 'brief',
456 'bright',
457 'bring',
458 'brisk',
459 'broccoli',
460 'broken',
461 'bronze',
462 'broom',
463 'brother',
464 'brown',
465 'brush',
466 'bubble',
467 'buddy',
468 'budget',
469 'buffalo',
470 'build',
471 'bulb',
472 'bulk',
473 'bullet',
474 'bundle',
475 'bunker',
476 'burden',
477 'burger',
478 'burst',
479 'bus',
480 'business',
481 'busy',
482 'butter',
483 'buyer',
484 'buzz',
485 'cabbage',
486 'cabin',
487 'cable',
488 'cactus',
489 'cage',
490 'cake',
491 'call',
492 'calm',
493 'camera',
494 'camp',
495 'can',
496 'canal',
497 'cancel',
498 'candy',
499 'cannon',
500 'canoe',
501 'canvas',
502 'canyon',
503 'capable',
504 'capital',
505 'captain',
506 'car',
507 'carbon',
508 'card',
509 'cargo',
510 'carpet',
511 'carry',
512 'cart',
513 'case',
514 'cash',
515 'casino',
516 'castle',
517 'casual',
518 'cat',
519 'catalog',
520 'catch',
521 'category',
522 'cattle',
523 'caught',
524 'cause',
525 'caution',
526 'cave',
527 'ceiling',
528 'celery',
529 'cement',
530 'census',
531 'century',
532 'cereal',
533 'certain',
534 'chair',
535 'chalk',
536 'champion',
537 'change',
538 'chaos',
539 'chapter',
540 'charge',
541 'chase',
542 'chat',
543 'cheap',
544 'check',
545 'cheese',
546 'chef',
547 'cherry',
548 'chest',
549 'chicken',
550 'chief',
551 'child',
552 'chimney',
553 'choice',
554 'choose',
555 'chronic',
556 'chuckle',
557 'chunk',
558 'churn',
559 'cigar',
560 'cinnamon',
561 'circle',
562 'citizen',
563 'city',
564 'civil',
565 'claim',
566 'clap',
567 'clarify',
568 'claw',
569 'clay',
570 'clean',
571 'clerk',
572 'clever',
573 'click',
574 'client',
575 'cliff',
576 'climb',
577 'clinic',
578 'clip',
579 'clock',
580 'clog',
581 'close',
582 'cloth',
583 'cloud',
584 'clown',
585 'club',
586 'clump',
587 'cluster',
588 'clutch',
589 'coach',
590 'coast',
591 'coconut',
592 'code',
593 'coffee',
594 'coil',
595 'coin',
596 'collect',
597 'color',
598 'column',
599 'combine',
600 'come',
601 'comfort',
602 'comic',
603 'common',
604 'company',
605 'concert',
606 'conduct',
607 'confirm',
608 'congress',
609 'connect',
610 'consider',
611 'control',
612 'convince',
613 'cook',
614 'cool',
615 'copper',
616 'copy',
617 'coral',
618 'core',
619 'corn',
620 'correct',
621 'cost',
622 'cotton',
623 'couch',
624 'country',
625 'couple',
626 'course',
627 'cousin',
628 'cover',
629 'coyote',
630 'crack',
631 'cradle',
632 'craft',
633 'cram',
634 'crane',
635 'crash',
636 'crater',
637 'crawl',
638 'crazy',
639 'cream',
640 'credit',
641 'creek',
642 'crew',
643 'cricket',
644 'crime',
645 'crisp',
646 'critic',
647 'crop',
648 'cross',
649 'crouch',
650 'crowd',
651 'crucial',
652 'cruel',
653 'cruise',
654 'crumble',
655 'crunch',
656 'crush',
657 'cry',
658 'crystal',
659 'cube',
660 'culture',
661 'cup',
662 'cupboard',
663 'curious',
664 'current',
665 'curtain',
666 'curve',
667 'cushion',
668 'custom',
669 'cute',
670 'cycle',
671 'dad',
672 'damage',
673 'damp',
674 'dance',
675 'danger',
676 'daring',
677 'dash',
678 'daughter',
679 'dawn',
680 'day',
681 'deal',
682 'debate',
683 'debris',
684 'decade',
685 'december',
686 'decide',
687 'decline',
688 'decorate',
689 'decrease',
690 'deer',
691 'defense',
692 'define',
693 'defy',
694 'degree',
695 'delay',
696 'deliver',
697 'demand',
698 'demise',
699 'denial',
700 'dentist',
701 'deny',
702 'depart',
703 'depend',
704 'deposit',
705 'depth',
706 'deputy',
707 'derive',
708 'describe',
709 'desert',
710 'design',
711 'desk',
712 'despair',
713 'destroy',
714 'detail',
715 'detect',
716 'develop',
717 'device',
718 'devote',
719 'diagram',
720 'dial',
721 'diamond',
722 'diary',
723 'dice',
724 'diesel',
725 'diet',
726 'differ',
727 'digital',
728 'dignity',
729 'dilemma',
730 'dinner',
731 'dinosaur',
732 'direct',
733 'dirt',
734 'disagree',
735 'discover',
736 'disease',
737 'dish',
738 'dismiss',
739 'disorder',
740 'display',
741 'distance',
742 'divert',
743 'divide',
744 'divorce',
745 'dizzy',
746 'doctor',
747 'document',
748 'dog',
749 'doll',
750 'dolphin',
751 'domain',
752 'donate',
753 'donkey',
754 'donor',
755 'door',
756 'dose',
757 'double',
758 'dove',
759 'draft',
760 'dragon',
761 'drama',
762 'drastic',
763 'draw',
764 'dream',
765 'dress',
766 'drift',
767 'drill',
768 'drink',
769 'drip',
770 'drive',
771 'drop',
772 'drum',
773 'dry',
774 'duck',
775 'dumb',
776 'dune',
777 'during',
778 'dust',
779 'dutch',
780 'duty',
781 'dwarf',
782 'dynamic',
783 'eager',
784 'eagle',
785 'early',
786 'earn',
787 'earth',
788 'easily',
789 'east',
790 'easy',
791 'echo',
792 'ecology',
793 'economy',
794 'edge',
795 'edit',
796 'educate',
797 'effort',
798 'egg',
799 'eight',
800 'either',
801 'elbow',
802 'elder',
803 'electric',
804 'elegant',
805 'element',
806 'elephant',
807 'elevator',
808 'elite',
809 'else',
810 'embark',
811 'embody',
812 'embrace',
813 'emerge',
814 'emotion',
815 'employ',
816 'empower',
817 'empty',
818 'enable',
819 'enact',
820 'end',
821 'endless',
822 'endorse',
823 'enemy',
824 'energy',
825 'enforce',
826 'engage',
827 'engine',
828 'enhance',
829 'enjoy',
830 'enlist',
831 'enough',
832 'enrich',
833 'enroll',
834 'ensure',
835 'enter',
836 'entire',
837 'entry',
838 'envelope',
839 'episode',
840 'equal',
841 'equip',
842 'era',
843 'erase',
844 'erode',
845 'erosion',
846 'error',
847 'erupt',
848 'escape',
849 'essay',
850 'essence',
851 'estate',
852 'eternal',
853 'ethics',
854 'evidence',
855 'evil',
856 'evoke',
857 'evolve',
858 'exact',
859 'example',
860 'excess',
861 'exchange',
862 'excite',
863 'exclude',
864 'excuse',
865 'execute',
866 'exercise',
867 'exhaust',
868 'exhibit',
869 'exile',
870 'exist',
871 'exit',
872 'exotic',
873 'expand',
874 'expect',
875 'expire',
876 'explain',
877 'expose',
878 'express',
879 'extend',
880 'extra',
881 'eye',
882 'eyebrow',
883 'fabric',
884 'face',
885 'faculty',
886 'fade',
887 'faint',
888 'faith',
889 'fall',
890 'false',
891 'fame',
892 'family',
893 'famous',
894 'fan',
895 'fancy',
896 'fantasy',
897 'farm',
898 'fashion',
899 'fat',
900 'fatal',
901 'father',
902 'fatigue',
903 'fault',
904 'favorite',
905 'feature',
906 'february',
907 'federal',
908 'fee',
909 'feed',
910 'feel',
911 'female',
912 'fence',
913 'festival',
914 'fetch',
915 'fever',
916 'few',
917 'fiber',
918 'fiction',
919 'field',
920 'figure',
921 'file',
922 'film',
923 'filter',
924 'final',
925 'find',
926 'fine',
927 'finger',
928 'finish',
929 'fire',
930 'firm',
931 'first',
932 'fiscal',
933 'fish',
934 'fit',
935 'fitness',
936 'fix',
937 'flag',
938 'flame',
939 'flash',
940 'flat',
941 'flavor',
942 'flee',
943 'flight',
944 'flip',
945 'float',
946 'flock',
947 'floor',
948 'flower',
949 'fluid',
950 'flush',
951 'fly',
952 'foam',
953 'focus',
954 'fog',
955 'foil',
956 'fold',
957 'follow',
958 'food',
959 'foot',
960 'force',
961 'forest',
962 'forget',
963 'fork',
964 'fortune',
965 'forum',
966 'forward',
967 'fossil',
968 'foster',
969 'found',
970 'fox',
971 'fragile',
972 'frame',
973 'frequent',
974 'fresh',
975 'friend',
976 'fringe',
977 'frog',
978 'front',
979 'frost',
980 'frown',
981 'frozen',
982 'fruit',
983 'fuel',
984 'fun',
985 'funny',
986 'furnace',
987 'fury',
988 'future',
989 'gadget',
990 'gain',
991 'galaxy',
992 'gallery',
993 'game',
994 'gap',
995 'garage',
996 'garbage',
997 'garden',
998 'garlic',
999 'garment',
1000 'gas',
1001 'gasp',
1002 'gate',
1003 'gather',
1004 'gauge',
1005 'gaze',
1006 'general',
1007 'genius',
1008 'genre',
1009 'gentle',
1010 'genuine',
1011 'gesture',
1012 'ghost',
1013 'giant',
1014 'gift',
1015 'giggle',
1016 'ginger',
1017 'giraffe',
1018 'girl',
1019 'give',
1020 'glad',
1021 'glance',
1022 'glare',
1023 'glass',
1024 'glide',
1025 'glimpse',
1026 'globe',
1027 'gloom',
1028 'glory',
1029 'glove',
1030 'glow',
1031 'glue',
1032 'goat',
1033 'goddess',
1034 'gold',
1035 'good',
1036 'goose',
1037 'gorilla',
1038 'gospel',
1039 'gossip',
1040 'govern',
1041 'gown',
1042 'grab',
1043 'grace',
1044 'grain',
1045 'grant',
1046 'grape',
1047 'grass',
1048 'gravity',
1049 'great',
1050 'green',
1051 'grid',
1052 'grief',
1053 'grit',
1054 'grocery',
1055 'group',
1056 'grow',
1057 'grunt',
1058 'guard',
1059 'guess',
1060 'guide',
1061 'guilt',
1062 'guitar',
1063 'gun',
1064 'gym',
1065 'habit',
1066 'hair',
1067 'half',
1068 'hammer',
1069 'hamster',
1070 'hand',
1071 'happy',
1072 'harbor',
1073 'hard',
1074 'harsh',
1075 'harvest',
1076 'hat',
1077 'have',
1078 'hawk',
1079 'hazard',
1080 'head',
1081 'health',
1082 'heart',
1083 'heavy',
1084 'hedgehog',
1085 'height',
1086 'hello',
1087 'helmet',
1088 'help',
1089 'hen',
1090 'hero',
1091 'hidden',
1092 'high',
1093 'hill',
1094 'hint',
1095 'hip',
1096 'hire',
1097 'history',
1098 'hobby',
1099 'hockey',
1100 'hold',
1101 'hole',
1102 'holiday',
1103 'hollow',
1104 'home',
1105 'honey',
1106 'hood',
1107 'hope',
1108 'horn',
1109 'horror',
1110 'horse',
1111 'hospital',
1112 'host',
1113 'hotel',
1114 'hour',
1115 'hover',
1116 'hub',
1117 'huge',
1118 'human',
1119 'humble',
1120 'humor',
1121 'hundred',
1122 'hungry',
1123 'hunt',
1124 'hurdle',
1125 'hurry',
1126 'hurt',
1127 'husband',
1128 'hybrid',
1129 'ice',
1130 'icon',
1131 'idea',
1132 'identify',
1133 'idle',
1134 'ignore',
1135 'ill',
1136 'illegal',
1137 'illness',
1138 'image',
1139 'imitate',
1140 'immense',
1141 'immune',
1142 'impact',
1143 'impose',
1144 'improve',
1145 'impulse',
1146 'inch',
1147 'include',
1148 'income',
1149 'increase',
1150 'index',
1151 'indicate',
1152 'indoor',
1153 'industry',
1154 'infant',
1155 'inflict',
1156 'inform',
1157 'inhale',
1158 'inherit',
1159 'initial',
1160 'inject',
1161 'injury',
1162 'inmate',
1163 'inner',
1164 'innocent',
1165 'input',
1166 'inquiry',
1167 'insane',
1168 'insect',
1169 'inside',
1170 'inspire',
1171 'install',
1172 'intact',
1173 'interest',
1174 'into',
1175 'invest',
1176 'invite',
1177 'involve',
1178 'iron',
1179 'island',
1180 'isolate',
1181 'issue',
1182 'item',
1183 'ivory',
1184 'jacket',
1185 'jaguar',
1186 'jar',
1187 'jazz',
1188 'jealous',
1189 'jeans',
1190 'jelly',
1191 'jewel',
1192 'job',
1193 'join',
1194 'joke',
1195 'journey',
1196 'joy',
1197 'judge',
1198 'juice',
1199 'jump',
1200 'jungle',
1201 'junior',
1202 'junk',
1203 'just',
1204 'kangaroo',
1205 'keen',
1206 'keep',
1207 'ketchup',
1208 'key',
1209 'kick',
1210 'kid',
1211 'kidney',
1212 'kind',
1213 'kingdom',
1214 'kiss',
1215 'kit',
1216 'kitchen',
1217 'kite',
1218 'kitten',
1219 'kiwi',
1220 'knee',
1221 'knife',
1222 'knock',
1223 'know',
1224 'lab',
1225 'label',
1226 'labor',
1227 'ladder',
1228 'lady',
1229 'lake',
1230 'lamp',
1231 'language',
1232 'laptop',
1233 'large',
1234 'later',
1235 'latin',
1236 'laugh',
1237 'laundry',
1238 'lava',
1239 'law',
1240 'lawn',
1241 'lawsuit',
1242 'layer',
1243 'lazy',
1244 'leader',
1245 'leaf',
1246 'learn',
1247 'leave',
1248 'lecture',
1249 'left',
1250 'leg',
1251 'legal',
1252 'legend',
1253 'leisure',
1254 'lemon',
1255 'lend',
1256 'length',
1257 'lens',
1258 'leopard',
1259 'lesson',
1260 'letter',
1261 'level',
1262 'liar',
1263 'liberty',
1264 'library',
1265 'license',
1266 'life',
1267 'lift',
1268 'light',
1269 'like',
1270 'limb',
1271 'limit',
1272 'link',
1273 'lion',
1274 'liquid',
1275 'list',
1276 'little',
1277 'live',
1278 'lizard',
1279 'load',
1280 'loan',
1281 'lobster',
1282 'local',
1283 'lock',
1284 'logic',
1285 'lonely',
1286 'long',
1287 'loop',
1288 'lottery',
1289 'loud',
1290 'lounge',
1291 'love',
1292 'loyal',
1293 'lucky',
1294 'luggage',
1295 'lumber',
1296 'lunar',
1297 'lunch',
1298 'luxury',
1299 'lyrics',
1300 'machine',
1301 'mad',
1302 'magic',
1303 'magnet',
1304 'maid',
1305 'mail',
1306 'main',
1307 'major',
1308 'make',
1309 'mammal',
1310 'man',
1311 'manage',
1312 'mandate',
1313 'mango',
1314 'mansion',
1315 'manual',
1316 'maple',
1317 'marble',
1318 'march',
1319 'margin',
1320 'marine',
1321 'market',
1322 'marriage',
1323 'mask',
1324 'mass',
1325 'master',
1326 'match',
1327 'material',
1328 'math',
1329 'matrix',
1330 'matter',
1331 'maximum',
1332 'maze',
1333 'meadow',
1334 'mean',
1335 'measure',
1336 'meat',
1337 'mechanic',
1338 'medal',
1339 'media',
1340 'melody',
1341 'melt',
1342 'member',
1343 'memory',
1344 'mention',
1345 'menu',
1346 'mercy',
1347 'merge',
1348 'merit',
1349 'merry',
1350 'mesh',
1351 'message',
1352 'metal',
1353 'method',
1354 'middle',
1355 'midnight',
1356 'milk',
1357 'million',
1358 'mimic',
1359 'mind',
1360 'minimum',
1361 'minor',
1362 'minute',
1363 'miracle',
1364 'mirror',
1365 'misery',
1366 'miss',
1367 'mistake',
1368 'mix',
1369 'mixed',
1370 'mixture',
1371 'mobile',
1372 'model',
1373 'modify',
1374 'mom',
1375 'moment',
1376 'monitor',
1377 'monkey',
1378 'monster',
1379 'month',
1380 'moon',
1381 'moral',
1382 'more',
1383 'morning',
1384 'mosquito',
1385 'mother',
1386 'motion',
1387 'motor',
1388 'mountain',
1389 'mouse',
1390 'move',
1391 'movie',
1392 'much',
1393 'muffin',
1394 'mule',
1395 'multiply',
1396 'muscle',
1397 'museum',
1398 'mushroom',
1399 'music',
1400 'must',
1401 'mutual',
1402 'myself',
1403 'mystery',
1404 'myth',
1405 'naive',
1406 'name',
1407 'napkin',
1408 'narrow',
1409 'nasty',
1410 'nation',
1411 'nature',
1412 'near',
1413 'neck',
1414 'need',
1415 'negative',
1416 'neglect',
1417 'neither',
1418 'nephew',
1419 'nerve',
1420 'nest',
1421 'net',
1422 'network',
1423 'neutral',
1424 'never',
1425 'news',
1426 'next',
1427 'nice',
1428 'night',
1429 'noble',
1430 'noise',
1431 'nominee',
1432 'noodle',
1433 'normal',
1434 'north',
1435 'nose',
1436 'notable',
1437 'note',
1438 'nothing',
1439 'notice',
1440 'novel',
1441 'now',
1442 'nuclear',
1443 'number',
1444 'nurse',
1445 'nut',
1446 'oak',
1447 'obey',
1448 'object',
1449 'oblige',
1450 'obscure',
1451 'observe',
1452 'obtain',
1453 'obvious',
1454 'occur',
1455 'ocean',
1456 'october',
1457 'odor',
1458 'off',
1459 'offer',
1460 'office',
1461 'often',
1462 'oil',
1463 'okay',
1464 'old',
1465 'olive',
1466 'olympic',
1467 'omit',
1468 'once',
1469 'one',
1470 'onion',
1471 'online',
1472 'only',
1473 'open',
1474 'opera',
1475 'opinion',
1476 'oppose',
1477 'option',
1478 'orange',
1479 'orbit',
1480 'orchard',
1481 'order',
1482 'ordinary',
1483 'organ',
1484 'orient',
1485 'original',
1486 'orphan',
1487 'ostrich',
1488 'other',
1489 'outdoor',
1490 'outer',
1491 'output',
1492 'outside',
1493 'oval',
1494 'oven',
1495 'over',
1496 'own',
1497 'owner',
1498 'oxygen',
1499 'oyster',
1500 'ozone',
1501 'pact',
1502 'paddle',
1503 'page',
1504 'pair',
1505 'palace',
1506 'palm',
1507 'panda',
1508 'panel',
1509 'panic',
1510 'panther',
1511 'paper',
1512 'parade',
1513 'parent',
1514 'park',
1515 'parrot',
1516 'party',
1517 'pass',
1518 'patch',
1519 'path',
1520 'patient',
1521 'patrol',
1522 'pattern',
1523 'pause',
1524 'pave',
1525 'payment',
1526 'peace',
1527 'peanut',
1528 'pear',
1529 'peasant',
1530 'pelican',
1531 'pen',
1532 'penalty',
1533 'pencil',
1534 'people',
1535 'pepper',
1536 'perfect',
1537 'permit',
1538 'person',
1539 'pet',
1540 'phone',
1541 'photo',
1542 'phrase',
1543 'physical',
1544 'piano',
1545 'picnic',
1546 'picture',
1547 'piece',
1548 'pig',
1549 'pigeon',
1550 'pill',
1551 'pilot',
1552 'pink',
1553 'pioneer',
1554 'pipe',
1555 'pistol',
1556 'pitch',
1557 'pizza',
1558 'place',
1559 'planet',
1560 'plastic',
1561 'plate',
1562 'play',
1563 'please',
1564 'pledge',
1565 'pluck',
1566 'plug',
1567 'plunge',
1568 'poem',
1569 'poet',
1570 'point',
1571 'polar',
1572 'pole',
1573 'police',
1574 'pond',
1575 'pony',
1576 'pool',
1577 'popular',
1578 'portion',
1579 'position',
1580 'possible',
1581 'post',
1582 'potato',
1583 'pottery',
1584 'poverty',
1585 'powder',
1586 'power',
1587 'practice',
1588 'praise',
1589 'predict',
1590 'prefer',
1591 'prepare',
1592 'present',
1593 'pretty',
1594 'prevent',
1595 'price',
1596 'pride',
1597 'primary',
1598 'print',
1599 'priority',
1600 'prison',
1601 'private',
1602 'prize',
1603 'problem',
1604 'process',
1605 'produce',
1606 'profit',
1607 'program',
1608 'project',
1609 'promote',
1610 'proof',
1611 'property',
1612 'prosper',
1613 'protect',
1614 'proud',
1615 'provide',
1616 'public',
1617 'pudding',
1618 'pull',
1619 'pulp',
1620 'pulse',
1621 'pumpkin',
1622 'punch',
1623 'pupil',
1624 'puppy',
1625 'purchase',
1626 'purity',
1627 'purpose',
1628 'purse',
1629 'push',
1630 'put',
1631 'puzzle',
1632 'pyramid',
1633 'quality',
1634 'quantum',
1635 'quarter',
1636 'question',
1637 'quick',
1638 'quit',
1639 'quiz',
1640 'quote',
1641 'rabbit',
1642 'raccoon',
1643 'race',
1644 'rack',
1645 'radar',
1646 'radio',
1647 'rail',
1648 'rain',
1649 'raise',
1650 'rally',
1651 'ramp',
1652 'ranch',
1653 'random',
1654 'range',
1655 'rapid',
1656 'rare',
1657 'rate',
1658 'rather',
1659 'raven',
1660 'raw',
1661 'razor',
1662 'ready',
1663 'real',
1664 'reason',
1665 'rebel',
1666 'rebuild',
1667 'recall',
1668 'receive',
1669 'recipe',
1670 'record',
1671 'recycle',
1672 'reduce',
1673 'reflect',
1674 'reform',
1675 'refuse',
1676 'region',
1677 'regret',
1678 'regular',
1679 'reject',
1680 'relax',
1681 'release',
1682 'relief',
1683 'rely',
1684 'remain',
1685 'remember',
1686 'remind',
1687 'remove',
1688 'render',
1689 'renew',
1690 'rent',
1691 'reopen',
1692 'repair',
1693 'repeat',
1694 'replace',
1695 'report',
1696 'require',
1697 'rescue',
1698 'resemble',
1699 'resist',
1700 'resource',
1701 'response',
1702 'result',
1703 'retire',
1704 'retreat',
1705 'return',
1706 'reunion',
1707 'reveal',
1708 'review',
1709 'reward',
1710 'rhythm',
1711 'rib',
1712 'ribbon',
1713 'rice',
1714 'rich',
1715 'ride',
1716 'ridge',
1717 'rifle',
1718 'right',
1719 'rigid',
1720 'ring',
1721 'riot',
1722 'ripple',
1723 'risk',
1724 'ritual',
1725 'rival',
1726 'river',
1727 'road',
1728 'roast',
1729 'robot',
1730 'robust',
1731 'rocket',
1732 'romance',
1733 'roof',
1734 'rookie',
1735 'room',
1736 'rose',
1737 'rotate',
1738 'rough',
1739 'round',
1740 'route',
1741 'royal',
1742 'rubber',
1743 'rude',
1744 'rug',
1745 'rule',
1746 'run',
1747 'runway',
1748 'rural',
1749 'sad',
1750 'saddle',
1751 'sadness',
1752 'safe',
1753 'sail',
1754 'salad',
1755 'salmon',
1756 'salon',
1757 'salt',
1758 'salute',
1759 'same',
1760 'sample',
1761 'sand',
1762 'satisfy',
1763 'satoshi',
1764 'sauce',
1765 'sausage',
1766 'save',
1767 'say',
1768 'scale',
1769 'scan',
1770 'scare',
1771 'scatter',
1772 'scene',
1773 'scheme',
1774 'school',
1775 'science',
1776 'scissors',
1777 'scorpion',
1778 'scout',
1779 'scrap',
1780 'screen',
1781 'script',
1782 'scrub',
1783 'sea',
1784 'search',
1785 'season',
1786 'seat',
1787 'second',
1788 'secret',
1789 'section',
1790 'security',
1791 'seed',
1792 'seek',
1793 'segment',
1794 'select',
1795 'sell',
1796 'seminar',
1797 'senior',
1798 'sense',
1799 'sentence',
1800 'series',
1801 'service',
1802 'session',
1803 'settle',
1804 'setup',
1805 'seven',
1806 'shadow',
1807 'shaft',
1808 'shallow',
1809 'share',
1810 'shed',
1811 'shell',
1812 'sheriff',
1813 'shield',
1814 'shift',
1815 'shine',
1816 'ship',
1817 'shiver',
1818 'shock',
1819 'shoe',
1820 'shoot',
1821 'shop',
1822 'short',
1823 'shoulder',
1824 'shove',
1825 'shrimp',
1826 'shrug',
1827 'shuffle',
1828 'shy',
1829 'sibling',
1830 'sick',
1831 'side',
1832 'siege',
1833 'sight',
1834 'sign',
1835 'silent',
1836 'silk',
1837 'silly',
1838 'silver',
1839 'similar',
1840 'simple',
1841 'since',
1842 'sing',
1843 'siren',
1844 'sister',
1845 'situate',
1846 'six',
1847 'size',
1848 'skate',
1849 'sketch',
1850 'ski',
1851 'skill',
1852 'skin',
1853 'skirt',
1854 'skull',
1855 'slab',
1856 'slam',
1857 'sleep',
1858 'slender',
1859 'slice',
1860 'slide',
1861 'slight',
1862 'slim',
1863 'slogan',
1864 'slot',
1865 'slow',
1866 'slush',
1867 'small',
1868 'smart',
1869 'smile',
1870 'smoke',
1871 'smooth',
1872 'snack',
1873 'snake',
1874 'snap',
1875 'sniff',
1876 'snow',
1877 'soap',
1878 'soccer',
1879 'social',
1880 'sock',
1881 'soda',
1882 'soft',
1883 'solar',
1884 'soldier',
1885 'solid',
1886 'solution',
1887 'solve',
1888 'someone',
1889 'song',
1890 'soon',
1891 'sorry',
1892 'sort',
1893 'soul',
1894 'sound',
1895 'soup',
1896 'source',
1897 'south',
1898 'space',
1899 'spare',
1900 'spatial',
1901 'spawn',
1902 'speak',
1903 'special',
1904 'speed',
1905 'spell',
1906 'spend',
1907 'sphere',
1908 'spice',
1909 'spider',
1910 'spike',
1911 'spin',
1912 'spirit',
1913 'split',
1914 'spoil',
1915 'sponsor',
1916 'spoon',
1917 'sport',
1918 'spot',
1919 'spray',
1920 'spread',
1921 'spring',
1922 'spy',
1923 'square',
1924 'squeeze',
1925 'squirrel',
1926 'stable',
1927 'stadium',
1928 'staff',
1929 'stage',
1930 'stairs',
1931 'stamp',
1932 'stand',
1933 'start',
1934 'state',
1935 'stay',
1936 'steak',
1937 'steel',
1938 'stem',
1939 'step',
1940 'stereo',
1941 'stick',
1942 'still',
1943 'sting',
1944 'stock',
1945 'stomach',
1946 'stone',
1947 'stool',
1948 'story',
1949 'stove',
1950 'strategy',
1951 'street',
1952 'strike',
1953 'strong',
1954 'struggle',
1955 'student',
1956 'stuff',
1957 'stumble',
1958 'style',
1959 'subject',
1960 'submit',
1961 'subway',
1962 'success',
1963 'such',
1964 'sudden',
1965 'suffer',
1966 'sugar',
1967 'suggest',
1968 'suit',
1969 'summer',
1970 'sun',
1971 'sunny',
1972 'sunset',
1973 'super',
1974 'supply',
1975 'supreme',
1976 'sure',
1977 'surface',
1978 'surge',
1979 'surprise',
1980 'surround',
1981 'survey',
1982 'suspect',
1983 'sustain',
1984 'swallow',
1985 'swamp',
1986 'swap',
1987 'swarm',
1988 'swear',
1989 'sweet',
1990 'swift',
1991 'swim',
1992 'swing',
1993 'switch',
1994 'sword',
1995 'symbol',
1996 'symptom',
1997 'syrup',
1998 'system',
1999 'table',
2000 'tackle',
2001 'tag',
2002 'tail',
2003 'talent',
2004 'talk',
2005 'tank',
2006 'tape',
2007 'target',
2008 'task',
2009 'taste',
2010 'tattoo',
2011 'taxi',
2012 'teach',
2013 'team',
2014 'tell',
2015 'ten',
2016 'tenant',
2017 'tennis',
2018 'tent',
2019 'term',
2020 'test',
2021 'text',
2022 'thank',
2023 'that',
2024 'theme',
2025 'then',
2026 'theory',
2027 'there',
2028 'they',
2029 'thing',
2030 'this',
2031 'thought',
2032 'three',
2033 'thrive',
2034 'throw',
2035 'thumb',
2036 'thunder',
2037 'ticket',
2038 'tide',
2039 'tiger',
2040 'tilt',
2041 'timber',
2042 'time',
2043 'tiny',
2044 'tip',
2045 'tired',
2046 'tissue',
2047 'title',
2048 'toast',
2049 'tobacco',
2050 'today',
2051 'toddler',
2052 'toe',
2053 'together',
2054 'toilet',
2055 'token',
2056 'tomato',
2057 'tomorrow',
2058 'tone',
2059 'tongue',
2060 'tonight',
2061 'tool',
2062 'tooth',
2063 'top',
2064 'topic',
2065 'topple',
2066 'torch',
2067 'tornado',
2068 'tortoise',
2069 'toss',
2070 'total',
2071 'tourist',
2072 'toward',
2073 'tower',
2074 'town',
2075 'toy',
2076 'track',
2077 'trade',
2078 'traffic',
2079 'tragic',
2080 'train',
2081 'transfer',
2082 'trap',
2083 'trash',
2084 'travel',
2085 'tray',
2086 'treat',
2087 'tree',
2088 'trend',
2089 'trial',
2090 'tribe',
2091 'trick',
2092 'trigger',
2093 'trim',
2094 'trip',
2095 'trophy',
2096 'trouble',
2097 'truck',
2098 'true',
2099 'truly',
2100 'trumpet',
2101 'trust',
2102 'truth',
2103 'try',
2104 'tube',
2105 'tuition',
2106 'tumble',
2107 'tuna',
2108 'tunnel',
2109 'turkey',
2110 'turn',
2111 'turtle',
2112 'twelve',
2113 'twenty',
2114 'twice',
2115 'twin',
2116 'twist',
2117 'two',
2118 'type',
2119 'typical',
2120 'ugly',
2121 'umbrella',
2122 'unable',
2123 'unaware',
2124 'uncle',
2125 'uncover',
2126 'under',
2127 'undo',
2128 'unfair',
2129 'unfold',
2130 'unhappy',
2131 'uniform',
2132 'unique',
2133 'unit',
2134 'universe',
2135 'unknown',
2136 'unlock',
2137 'until',
2138 'unusual',
2139 'unveil',
2140 'update',
2141 'upgrade',
2142 'uphold',
2143 'upon',
2144 'upper',
2145 'upset',
2146 'urban',
2147 'urge',
2148 'usage',
2149 'use',
2150 'used',
2151 'useful',
2152 'useless',
2153 'usual',
2154 'utility',
2155 'vacant',
2156 'vacuum',
2157 'vague',
2158 'valid',
2159 'valley',
2160 'valve',
2161 'van',
2162 'vanish',
2163 'vapor',
2164 'various',
2165 'vast',
2166 'vault',
2167 'vehicle',
2168 'velvet',
2169 'vendor',
2170 'venture',
2171 'venue',
2172 'verb',
2173 'verify',
2174 'version',
2175 'very',
2176 'vessel',
2177 'veteran',
2178 'viable',
2179 'vibrant',
2180 'vicious',
2181 'victory',
2182 'video',
2183 'view',
2184 'village',
2185 'vintage',
2186 'violin',
2187 'virtual',
2188 'virus',
2189 'visa',
2190 'visit',
2191 'visual',
2192 'vital',
2193 'vivid',
2194 'vocal',
2195 'voice',
2196 'void',
2197 'volcano',
2198 'volume',
2199 'vote',
2200 'voyage',
2201 'wage',
2202 'wagon',
2203 'wait',
2204 'walk',
2205 'wall',
2206 'walnut',
2207 'want',
2208 'warfare',
2209 'warm',
2210 'warrior',
2211 'wash',
2212 'wasp',
2213 'waste',
2214 'water',
2215 'wave',
2216 'way',
2217 'wealth',
2218 'weapon',
2219 'wear',
2220 'weasel',
2221 'weather',
2222 'web',
2223 'wedding',
2224 'weekend',
2225 'weird',
2226 'welcome',
2227 'west',
2228 'wet',
2229 'whale',
2230 'what',
2231 'wheat',
2232 'wheel',
2233 'when',
2234 'where',
2235 'whip',
2236 'whisper',
2237 'wide',
2238 'width',
2239 'wife',
2240 'wild',
2241 'will',
2242 'win',
2243 'window',
2244 'wine',
2245 'wing',
2246 'wink',
2247 'winner',
2248 'winter',
2249 'wire',
2250 'wisdom',
2251 'wise',
2252 'wish',
2253 'witness',
2254 'wolf',
2255 'woman',
2256 'wonder',
2257 'wood',
2258 'wool',
2259 'word',
2260 'work',
2261 'world',
2262 'worry',
2263 'worth',
2264 'wrap',
2265 'wreck',
2266 'wrestle',
2267 'wrist',
2268 'write',
2269 'wrong',
2270 'yard',
2271 'year',
2272 'yellow',
2273 'you',
2274 'young',
2275 'youth',
2276 'zebra',
2277 'zero',
2278 'zone',
2279 'zoo'
2280 ];