pub(crate) const PREFIXES: [&str; 256] = [
"doz", "mar", "bin", "wan", "sam", "lit", "sig", "hid", "fid", "lis", "sog", "dir", "wac",
"sab", "wis", "sib", "rig", "sol", "dop", "mod", "fog", "lid", "hop", "dar", "dor", "lor",
"hod", "fol", "rin", "tog", "sil", "mir", "hol", "pas", "lac", "rov", "liv", "dal", "sat",
"lib", "tab", "han", "tic", "pid", "tor", "bol", "fos", "dot", "los", "dil", "for", "pil",
"ram", "tir", "win", "tad", "bic", "dif", "roc", "wid", "bis", "das", "mid", "lop", "ril",
"nar", "dap", "mol", "san", "loc", "nov", "sit", "nid", "tip", "sic", "rop", "wit", "nat",
"pan", "min", "rit", "pod", "mot", "tam", "tol", "sav", "pos", "nap", "nop", "som", "fin",
"fon", "ban", "mor", "wor", "sip", "ron", "nor", "bot", "wic", "soc", "wat", "dol", "mag",
"pic", "dav", "bid", "bal", "tim", "tas", "mal", "lig", "siv", "tag", "pad", "sal", "div",
"dac", "tan", "sid", "fab", "tar", "mon", "ran", "nis", "wol", "mis", "pal", "las", "dis",
"map", "rab", "tob", "rol", "lat", "lon", "nod", "nav", "fig", "nom", "nib", "pag", "sop",
"ral", "bil", "had", "doc", "rid", "moc", "pac", "rav", "rip", "fal", "tod", "til", "tin",
"hap", "mic", "fan", "pat", "tac", "lab", "mog", "sim", "son", "pin", "lom", "ric", "tap",
"fir", "has", "bos", "bat", "poc", "hac", "tid", "hav", "sap", "lin", "dib", "hos", "dab",
"bit", "bar", "rac", "par", "lod", "dos", "bor", "toc", "hil", "mac", "tom", "dig", "fil",
"fas", "mit", "hob", "har", "mig", "hin", "rad", "mas", "hal", "rag", "lag", "fad", "top",
"mop", "hab", "nil", "nos", "mil", "fop", "fam", "dat", "nol", "din", "hat", "nac", "ris",
"fot", "rib", "hoc", "nim", "lar", "fit", "wal", "rap", "sar", "nal", "mos", "lan", "don",
"dan", "lad", "dov", "riv", "bac", "pol", "lap", "tal", "pit", "nam", "bon", "ros", "ton",
"fod", "pon", "sov", "noc", "sor", "lav", "mat", "mip", "fip",
];
pub(crate) static PREFIXES_MAP: phf::Map<[u8; 3], u8> = phf::phf_map! {
[100, 111, 122] => 0, [109, 97, 114] => 1, [98, 105, 110] => 2, [119, 97, 110] => 3, [115, 97, 109] => 4, [108, 105, 116] => 5, [115, 105, 103] => 6, [104, 105, 100] => 7, [102, 105, 100] => 8, [108, 105, 115] => 9, [115, 111, 103] => 10, [100, 105, 114] => 11, [119, 97, 99] => 12, [115, 97, 98] => 13, [119, 105, 115] => 14, [115, 105, 98] => 15, [114, 105, 103] => 16, [115, 111, 108] => 17, [100, 111, 112] => 18, [109, 111, 100] => 19, [102, 111, 103] => 20, [108, 105, 100] => 21, [104, 111, 112] => 22, [100, 97, 114] => 23, [100, 111, 114] => 24, [108, 111, 114] => 25, [104, 111, 100] => 26, [102, 111, 108] => 27, [114, 105, 110] => 28, [116, 111, 103] => 29, [115, 105, 108] => 30, [109, 105, 114] => 31, [104, 111, 108] => 32, [112, 97, 115] => 33, [108, 97, 99] => 34, [114, 111, 118] => 35, [108, 105, 118] => 36, [100, 97, 108] => 37, [115, 97, 116] => 38, [108, 105, 98] => 39, [116, 97, 98] => 40, [104, 97, 110] => 41, [116, 105, 99] => 42, [112, 105, 100] => 43, [116, 111, 114] => 44, [98, 111, 108] => 45, [102, 111, 115] => 46, [100, 111, 116] => 47, [108, 111, 115] => 48, [100, 105, 108] => 49, [102, 111, 114] => 50, [112, 105, 108] => 51, [114, 97, 109] => 52, [116, 105, 114] => 53, [119, 105, 110] => 54, [116, 97, 100] => 55, [98, 105, 99] => 56, [100, 105, 102] => 57, [114, 111, 99] => 58, [119, 105, 100] => 59, [98, 105, 115] => 60, [100, 97, 115] => 61, [109, 105, 100] => 62, [108, 111, 112] => 63, [114, 105, 108] => 64, [110, 97, 114] => 65, [100, 97, 112] => 66, [109, 111, 108] => 67, [115, 97, 110] => 68, [108, 111, 99] => 69, [110, 111, 118] => 70, [115, 105, 116] => 71, [110, 105, 100] => 72, [116, 105, 112] => 73, [115, 105, 99] => 74, [114, 111, 112] => 75, [119, 105, 116] => 76, [110, 97, 116] => 77, [112, 97, 110] => 78, [109, 105, 110] => 79, [114, 105, 116] => 80, [112, 111, 100] => 81, [109, 111, 116] => 82, [116, 97, 109] => 83, [116, 111, 108] => 84, [115, 97, 118] => 85, [112, 111, 115] => 86, [110, 97, 112] => 87, [110, 111, 112] => 88, [115, 111, 109] => 89, [102, 105, 110] => 90, [102, 111, 110] => 91, [98, 97, 110] => 92, [109, 111, 114] => 93, [119, 111, 114] => 94, [115, 105, 112] => 95, [114, 111, 110] => 96, [110, 111, 114] => 97, [98, 111, 116] => 98, [119, 105, 99] => 99, [115, 111, 99] => 100, [119, 97, 116] => 101, [100, 111, 108] => 102, [109, 97, 103] => 103, [112, 105, 99] => 104, [100, 97, 118] => 105, [98, 105, 100] => 106, [98, 97, 108] => 107, [116, 105, 109] => 108, [116, 97, 115] => 109, [109, 97, 108] => 110, [108, 105, 103] => 111, [115, 105, 118] => 112, [116, 97, 103] => 113, [112, 97, 100] => 114, [115, 97, 108] => 115, [100, 105, 118] => 116, [100, 97, 99] => 117, [116, 97, 110] => 118, [115, 105, 100] => 119, [102, 97, 98] => 120, [116, 97, 114] => 121, [109, 111, 110] => 122, [114, 97, 110] => 123, [110, 105, 115] => 124, [119, 111, 108] => 125, [109, 105, 115] => 126, [112, 97, 108] => 127, [108, 97, 115] => 128, [100, 105, 115] => 129, [109, 97, 112] => 130, [114, 97, 98] => 131, [116, 111, 98] => 132, [114, 111, 108] => 133, [108, 97, 116] => 134, [108, 111, 110] => 135, [110, 111, 100] => 136, [110, 97, 118] => 137, [102, 105, 103] => 138, [110, 111, 109] => 139, [110, 105, 98] => 140, [112, 97, 103] => 141, [115, 111, 112] => 142, [114, 97, 108] => 143, [98, 105, 108] => 144, [104, 97, 100] => 145, [100, 111, 99] => 146, [114, 105, 100] => 147, [109, 111, 99] => 148, [112, 97, 99] => 149, [114, 97, 118] => 150, [114, 105, 112] => 151, [102, 97, 108] => 152, [116, 111, 100] => 153, [116, 105, 108] => 154, [116, 105, 110] => 155, [104, 97, 112] => 156, [109, 105, 99] => 157, [102, 97, 110] => 158, [112, 97, 116] => 159, [116, 97, 99] => 160, [108, 97, 98] => 161, [109, 111, 103] => 162, [115, 105, 109] => 163, [115, 111, 110] => 164, [112, 105, 110] => 165, [108, 111, 109] => 166, [114, 105, 99] => 167, [116, 97, 112] => 168, [102, 105, 114] => 169, [104, 97, 115] => 170, [98, 111, 115] => 171, [98, 97, 116] => 172, [112, 111, 99] => 173, [104, 97, 99] => 174, [116, 105, 100] => 175, [104, 97, 118] => 176, [115, 97, 112] => 177, [108, 105, 110] => 178, [100, 105, 98] => 179, [104, 111, 115] => 180, [100, 97, 98] => 181, [98, 105, 116] => 182, [98, 97, 114] => 183, [114, 97, 99] => 184, [112, 97, 114] => 185, [108, 111, 100] => 186, [100, 111, 115] => 187, [98, 111, 114] => 188, [116, 111, 99] => 189, [104, 105, 108] => 190, [109, 97, 99] => 191, [116, 111, 109] => 192, [100, 105, 103] => 193, [102, 105, 108] => 194, [102, 97, 115] => 195, [109, 105, 116] => 196, [104, 111, 98] => 197, [104, 97, 114] => 198, [109, 105, 103] => 199, [104, 105, 110] => 200, [114, 97, 100] => 201, [109, 97, 115] => 202, [104, 97, 108] => 203, [114, 97, 103] => 204, [108, 97, 103] => 205, [102, 97, 100] => 206, [116, 111, 112] => 207, [109, 111, 112] => 208, [104, 97, 98] => 209, [110, 105, 108] => 210, [110, 111, 115] => 211, [109, 105, 108] => 212, [102, 111, 112] => 213, [102, 97, 109] => 214, [100, 97, 116] => 215, [110, 111, 108] => 216, [100, 105, 110] => 217, [104, 97, 116] => 218, [110, 97, 99] => 219, [114, 105, 115] => 220, [102, 111, 116] => 221, [114, 105, 98] => 222, [104, 111, 99] => 223, [110, 105, 109] => 224, [108, 97, 114] => 225, [102, 105, 116] => 226, [119, 97, 108] => 227, [114, 97, 112] => 228, [115, 97, 114] => 229, [110, 97, 108] => 230, [109, 111, 115] => 231, [108, 97, 110] => 232, [100, 111, 110] => 233, [100, 97, 110] => 234, [108, 97, 100] => 235, [100, 111, 118] => 236, [114, 105, 118] => 237, [98, 97, 99] => 238, [112, 111, 108] => 239, [108, 97, 112] => 240, [116, 97, 108] => 241, [112, 105, 116] => 242, [110, 97, 109] => 243, [98, 111, 110] => 244, [114, 111, 115] => 245, [116, 111, 110] => 246, [102, 111, 100] => 247, [112, 111, 110] => 248, [115, 111, 118] => 249, [110, 111, 99] => 250, [115, 111, 114] => 251, [108, 97, 118] => 252, [109, 97, 116] => 253, [109, 105, 112] => 254, [102, 105, 112] => 255,
};
pub(crate) const SUFFIXES: [&str; 256] = [
"zod", "nec", "bud", "wes", "sev", "per", "sut", "let", "ful", "pen", "syt", "dur", "wep",
"ser", "wyl", "sun", "ryp", "syx", "dyr", "nup", "heb", "peg", "lup", "dep", "dys", "put",
"lug", "hec", "ryt", "tyv", "syd", "nex", "lun", "mep", "lut", "sep", "pes", "del", "sul",
"ped", "tem", "led", "tul", "met", "wen", "byn", "hex", "feb", "pyl", "dul", "het", "mev",
"rut", "tyl", "wyd", "tep", "bes", "dex", "sef", "wyc", "bur", "der", "nep", "pur", "rys",
"reb", "den", "nut", "sub", "pet", "rul", "syn", "reg", "tyd", "sup", "sem", "wyn", "rec",
"meg", "net", "sec", "mul", "nym", "tev", "web", "sum", "mut", "nyx", "rex", "teb", "fus",
"hep", "ben", "mus", "wyx", "sym", "sel", "ruc", "dec", "wex", "syr", "wet", "dyl", "myn",
"mes", "det", "bet", "bel", "tux", "tug", "myr", "pel", "syp", "ter", "meb", "set", "dut",
"deg", "tex", "sur", "fel", "tud", "nux", "rux", "ren", "wyt", "nub", "med", "lyt", "dus",
"neb", "rum", "tyn", "seg", "lyx", "pun", "res", "red", "fun", "rev", "ref", "mec", "ted",
"rus", "bex", "leb", "dux", "ryn", "num", "pyx", "ryg", "ryx", "fep", "tyr", "tus", "tyc",
"leg", "nem", "fer", "mer", "ten", "lus", "nus", "syl", "tec", "mex", "pub", "rym", "tuc",
"fyl", "lep", "deb", "ber", "mug", "hut", "tun", "byl", "sud", "pem", "dev", "lur", "def",
"bus", "bep", "run", "mel", "pex", "dyt", "byt", "typ", "lev", "myl", "wed", "duc", "fur",
"fex", "nul", "luc", "len", "ner", "lex", "rup", "ned", "lec", "ryd", "lyd", "fen", "wel",
"nyd", "hus", "rel", "rud", "nes", "hes", "fet", "des", "ret", "dun", "ler", "nyr", "seb",
"hul", "ryl", "lud", "rem", "lys", "fyn", "wer", "ryc", "sug", "nys", "nyl", "lyn", "dyn",
"dem", "lux", "fed", "sed", "bec", "mun", "lyr", "tes", "mud", "nyt", "byr", "sen", "weg",
"fyr", "mur", "tel", "rep", "teg", "pec", "nel", "nev", "fes",
];
pub(crate) static SUFFIXES_MAP: phf::Map<[u8; 3], u8> = phf::phf_map! {
[122, 111, 100] => 0, [110, 101, 99] => 1, [98, 117, 100] => 2, [119, 101, 115] => 3, [115, 101, 118] => 4, [112, 101, 114] => 5, [115, 117, 116] => 6, [108, 101, 116] => 7, [102, 117, 108] => 8, [112, 101, 110] => 9, [115, 121, 116] => 10, [100, 117, 114] => 11, [119, 101, 112] => 12, [115, 101, 114] => 13, [119, 121, 108] => 14, [115, 117, 110] => 15, [114, 121, 112] => 16, [115, 121, 120] => 17, [100, 121, 114] => 18, [110, 117, 112] => 19, [104, 101, 98] => 20, [112, 101, 103] => 21, [108, 117, 112] => 22, [100, 101, 112] => 23, [100, 121, 115] => 24, [112, 117, 116] => 25, [108, 117, 103] => 26, [104, 101, 99] => 27, [114, 121, 116] => 28, [116, 121, 118] => 29, [115, 121, 100] => 30, [110, 101, 120] => 31, [108, 117, 110] => 32, [109, 101, 112] => 33, [108, 117, 116] => 34, [115, 101, 112] => 35, [112, 101, 115] => 36, [100, 101, 108] => 37, [115, 117, 108] => 38, [112, 101, 100] => 39, [116, 101, 109] => 40, [108, 101, 100] => 41, [116, 117, 108] => 42, [109, 101, 116] => 43, [119, 101, 110] => 44, [98, 121, 110] => 45, [104, 101, 120] => 46, [102, 101, 98] => 47, [112, 121, 108] => 48, [100, 117, 108] => 49, [104, 101, 116] => 50, [109, 101, 118] => 51, [114, 117, 116] => 52, [116, 121, 108] => 53, [119, 121, 100] => 54, [116, 101, 112] => 55, [98, 101, 115] => 56, [100, 101, 120] => 57, [115, 101, 102] => 58, [119, 121, 99] => 59, [98, 117, 114] => 60, [100, 101, 114] => 61, [110, 101, 112] => 62, [112, 117, 114] => 63, [114, 121, 115] => 64, [114, 101, 98] => 65, [100, 101, 110] => 66, [110, 117, 116] => 67, [115, 117, 98] => 68, [112, 101, 116] => 69, [114, 117, 108] => 70, [115, 121, 110] => 71, [114, 101, 103] => 72, [116, 121, 100] => 73, [115, 117, 112] => 74, [115, 101, 109] => 75, [119, 121, 110] => 76, [114, 101, 99] => 77, [109, 101, 103] => 78, [110, 101, 116] => 79, [115, 101, 99] => 80, [109, 117, 108] => 81, [110, 121, 109] => 82, [116, 101, 118] => 83, [119, 101, 98] => 84, [115, 117, 109] => 85, [109, 117, 116] => 86, [110, 121, 120] => 87, [114, 101, 120] => 88, [116, 101, 98] => 89, [102, 117, 115] => 90, [104, 101, 112] => 91, [98, 101, 110] => 92, [109, 117, 115] => 93, [119, 121, 120] => 94, [115, 121, 109] => 95, [115, 101, 108] => 96, [114, 117, 99] => 97, [100, 101, 99] => 98, [119, 101, 120] => 99, [115, 121, 114] => 100, [119, 101, 116] => 101, [100, 121, 108] => 102, [109, 121, 110] => 103, [109, 101, 115] => 104, [100, 101, 116] => 105, [98, 101, 116] => 106, [98, 101, 108] => 107, [116, 117, 120] => 108, [116, 117, 103] => 109, [109, 121, 114] => 110, [112, 101, 108] => 111, [115, 121, 112] => 112, [116, 101, 114] => 113, [109, 101, 98] => 114, [115, 101, 116] => 115, [100, 117, 116] => 116, [100, 101, 103] => 117, [116, 101, 120] => 118, [115, 117, 114] => 119, [102, 101, 108] => 120, [116, 117, 100] => 121, [110, 117, 120] => 122, [114, 117, 120] => 123, [114, 101, 110] => 124, [119, 121, 116] => 125, [110, 117, 98] => 126, [109, 101, 100] => 127, [108, 121, 116] => 128, [100, 117, 115] => 129, [110, 101, 98] => 130, [114, 117, 109] => 131, [116, 121, 110] => 132, [115, 101, 103] => 133, [108, 121, 120] => 134, [112, 117, 110] => 135, [114, 101, 115] => 136, [114, 101, 100] => 137, [102, 117, 110] => 138, [114, 101, 118] => 139, [114, 101, 102] => 140, [109, 101, 99] => 141, [116, 101, 100] => 142, [114, 117, 115] => 143, [98, 101, 120] => 144, [108, 101, 98] => 145, [100, 117, 120] => 146, [114, 121, 110] => 147, [110, 117, 109] => 148, [112, 121, 120] => 149, [114, 121, 103] => 150, [114, 121, 120] => 151, [102, 101, 112] => 152, [116, 121, 114] => 153, [116, 117, 115] => 154, [116, 121, 99] => 155, [108, 101, 103] => 156, [110, 101, 109] => 157, [102, 101, 114] => 158, [109, 101, 114] => 159, [116, 101, 110] => 160, [108, 117, 115] => 161, [110, 117, 115] => 162, [115, 121, 108] => 163, [116, 101, 99] => 164, [109, 101, 120] => 165, [112, 117, 98] => 166, [114, 121, 109] => 167, [116, 117, 99] => 168, [102, 121, 108] => 169, [108, 101, 112] => 170, [100, 101, 98] => 171, [98, 101, 114] => 172, [109, 117, 103] => 173, [104, 117, 116] => 174, [116, 117, 110] => 175, [98, 121, 108] => 176, [115, 117, 100] => 177, [112, 101, 109] => 178, [100, 101, 118] => 179, [108, 117, 114] => 180, [100, 101, 102] => 181, [98, 117, 115] => 182, [98, 101, 112] => 183, [114, 117, 110] => 184, [109, 101, 108] => 185, [112, 101, 120] => 186, [100, 121, 116] => 187, [98, 121, 116] => 188, [116, 121, 112] => 189, [108, 101, 118] => 190, [109, 121, 108] => 191, [119, 101, 100] => 192, [100, 117, 99] => 193, [102, 117, 114] => 194, [102, 101, 120] => 195, [110, 117, 108] => 196, [108, 117, 99] => 197, [108, 101, 110] => 198, [110, 101, 114] => 199, [108, 101, 120] => 200, [114, 117, 112] => 201, [110, 101, 100] => 202, [108, 101, 99] => 203, [114, 121, 100] => 204, [108, 121, 100] => 205, [102, 101, 110] => 206, [119, 101, 108] => 207, [110, 121, 100] => 208, [104, 117, 115] => 209, [114, 101, 108] => 210, [114, 117, 100] => 211, [110, 101, 115] => 212, [104, 101, 115] => 213, [102, 101, 116] => 214, [100, 101, 115] => 215, [114, 101, 116] => 216, [100, 117, 110] => 217, [108, 101, 114] => 218, [110, 121, 114] => 219, [115, 101, 98] => 220, [104, 117, 108] => 221, [114, 121, 108] => 222, [108, 117, 100] => 223, [114, 101, 109] => 224, [108, 121, 115] => 225, [102, 121, 110] => 226, [119, 101, 114] => 227, [114, 121, 99] => 228, [115, 117, 103] => 229, [110, 121, 115] => 230, [110, 121, 108] => 231, [108, 121, 110] => 232, [100, 121, 110] => 233, [100, 101, 109] => 234, [108, 117, 120] => 235, [102, 101, 100] => 236, [115, 101, 100] => 237, [98, 101, 99] => 238, [109, 117, 110] => 239, [108, 121, 114] => 240, [116, 101, 115] => 241, [109, 117, 100] => 242, [110, 121, 116] => 243, [98, 121, 114] => 244, [115, 101, 110] => 245, [119, 101, 103] => 246, [102, 121, 114] => 247, [109, 117, 114] => 248, [116, 101, 108] => 249, [114, 101, 112] => 250, [116, 101, 103] => 251, [112, 101, 99] => 252, [110, 101, 108] => 253, [110, 101, 118] => 254, [102, 101, 115] => 255,
};