cleft 0.1.0

Unicode character properties, and grapheme, word and line segmentation with dictionaries, case mapping and CSS classes, for no_std.
Documentation
//! The case mapping tables: runs of characters that map alike, the
//! exceptions, and what the conditional mappings read.
//!
//! Generated from the Unicode 18.0.0 character database files in
//! `support/unicode_gen/data/18.0.0` by `cargo run --release -p unicode_gen`,
//! then `cargo fmt`. Do not edit: change the generator and run it again. The
//! generator's documentation (`support/unicode_gen/src/main.rs`) says what
//! each field holds and why, and `super` reads them.

// The case runs: each its first character shifted left by 11, over its
// length less one shifted left by 3, over its kind.
pub(super) const RUN_LENGTH_SHIFT: u32 = 3;
pub(super) const RUN_START_SHIFT: u32 = 11;
pub(super) const RUN_KIND_MASK: u32 = 7;
pub(super) const RUN_LENGTH_MASK: u32 = 255;
pub(super) const RUN_LOWER: u32 = 0;
pub(super) const RUN_UPPER: u32 = 1;
pub(super) const RUN_PAIRS: u32 = 2;
pub(super) const RUN_EXCEPTIONS: u32 = 3;

/// Every run of characters that map alike, in code point order.
pub(super) static CASE_RUNS: [u32; 351] = [
    133321, 198856, 370688, 393393, 442417, 456707, 458928, 507952, 522240, 524666, 622595, 624640,
    626730, 641146, 673795, 676202, 770049, 772138, 784384, 786432, 788481, 790554, 798721, 800778,
    804873, 808970, 815105, 817153, 819201, 821258, 825345, 827393, 829440, 831489, 833537, 835594,
    839680, 841728, 843777, 845825, 847872, 849921, 852010, 864257, 866314, 870401, 876554, 880641,
    882698, 886793, 890906, 899073, 901130, 909322, 915456, 925763, 944250, 976896, 979082,
    1015835, 1024010, 1028097, 1030145, 1032506, 1114113, 1118346, 1167361, 1169418, 1173505,
    1175553, 1177608, 1181706, 1185793, 1187841, 1189889, 1192010, 1212416, 1214464, 1216512,
    1218560, 1220608, 1224712, 1230848, 1234944, 1236992, 1245184, 1247232, 1251328, 1253376,
    1255424, 1257472, 1261568, 1263616, 1265664, 1267712, 1269760, 1275904, 1280000, 1282048,
    1288192, 1292288, 1302528, 1304576, 1310720, 1314816, 1316864, 1325056, 1327104, 1329152,
    1331208, 1335296, 1347584, 1370112, 1372160, 1714176, 1802266, 1814538, 1824784, 1832961,
    1847297, 1851409, 1859585, 1863689, 1867779, 1869953, 1906753, 1925120, 1927184, 1933315,
    1935488, 1970176, 1972288, 1990656, 1992712, 1996801, 1998848, 2000896, 2009088, 2011136,
    2013184, 2015418, 2064384, 2066432, 2068480, 2070528, 2072577, 2074624, 2078730, 2082817,
    2084874, 2091025, 2097273, 2130169, 2195704, 2261112, 2294026, 2380202, 2490369, 2492522,
    2521088, 2523898, 2722089, 2820392, 2897923, 8716585, 8796161, 8808449, 10289785, 10453033,
    10469416, 14942208, 14944256, 14946304, 14948360, 14952448, 14954496, 14956544, 14958592,
    14960650, 14975313, 15067153, 15452160, 15460352, 15495168, 15729834, 16035875, 16046080,
    16052225, 16057082, 16252984, 16269369, 16285736, 16302121, 16318520, 16334905, 16351288,
    16367673, 16384040, 16400425, 16416771, 16418816, 16420867, 16422912, 16424963, 16427008,
    16429059, 16431104, 16435201, 16439297, 16443393, 16447489, 16449592, 16465977, 16482312,
    16486424, 16494600, 16498696, 16502792, 16506888, 16515451, 16613384, 16617491, 16625675,
    16629769, 16633865, 16637955, 16642048, 16650259, 16658443, 16662553, 16670723, 16678920,
    16683019, 16691211, 16695305, 16699401, 16711688, 16715795, 16721920, 16723979, 16728073,
    16732169, 16736257, 16748563, 16756747, 16760841, 16764937, 16769027, 17379329, 17387521,
    17389569, 17403905, 17461248, 17498233, 17531000, 17569802, 19247305, 19300552, 23069049,
    23167352, 23265290, 23269377, 23271425, 23273473, 23275520, 23277568, 23279658, 23291905,
    23293953, 23296001, 23298049, 23302154, 23308298, 23326729, 23331610, 23549978, 23564298,
    23593256, 23672832, 23685120, 87163242, 87294170, 87625834, 87658986, 87803930, 87812097,
    87814218, 87840778, 87844865, 87851034, 87859200, 87863450, 87904257, 87906305, 87908353,
    87910401, 87912449, 87916545, 87918593, 87920641, 87922689, 87924858, 87957505, 87959553,
    87961601, 87963674, 87971841, 87974010, 88006657, 88008705, 88018945, 88057866, 89806856,
    89823232, 89874441, 89883256, 131596339, 131635235, 133761225, 133826760, 136315193, 136397112,
    136675609, 136757528, 137068625, 137093233, 137125937, 137142281, 137148496, 137173104,
    137205808, 137222152, 140771729, 140902800, 141197481, 141263016, 147128569, 147194104,
    192020729, 192086264, 192217281, 192272576, 251265034, 251281434, 251291658, 251299850,
    251347002, 251367530, 251439107, 256377097, 256446728,
];

/// Each run's delta, as an index into [`CASE_DELTAS`], or its first
/// exception, as an index into [`CASE_EXCEPTIONS`].
pub(super) static CASE_RUN_DATA: [u8; 351] = [
    0, 1, 2, 0, 0, 0, 1, 1, 3, 0, 1, 4, 0, 0, 2, 0, 5, 0, 6, 7, 8, 0, 9, 0, 10, 0, 11, 12, 13, 0,
    10, 14, 15, 16, 17, 0, 18, 19, 16, 20, 21, 22, 0, 23, 0, 23, 0, 23, 0, 24, 0, 25, 0, 0, 26, 3,
    0, 27, 0, 12, 0, 28, 29, 0, 30, 0, 31, 0, 32, 33, 34, 0, 35, 36, 37, 0, 38, 39, 40, 41, 42, 43,
    44, 45, 46, 43, 47, 48, 49, 50, 51, 52, 53, 51, 54, 55, 53, 56, 57, 58, 59, 59, 60, 61, 62, 61,
    63, 61, 64, 65, 66, 67, 68, 69, 70, 0, 0, 21, 71, 72, 73, 74, 75, 16, 0, 0, 76, 77, 17, 1, 78,
    1, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 88, 89, 90, 91, 92, 0, 93, 0, 30, 94, 0, 1, 88, 0, 0,
    95, 0, 96, 0, 97, 98, 18, 99, 99, 99, 100, 81, 86, 101, 102, 103, 104, 105, 106, 107, 108, 0,
    109, 109, 110, 111, 112, 0, 19, 113, 114, 0, 81, 86, 81, 86, 81, 86, 81, 86, 81, 86, 24, 81,
    25, 81, 26, 81, 27, 81, 86, 86, 86, 86, 81, 86, 115, 116, 117, 118, 119, 120, 28, 81, 76, 79,
    86, 121, 81, 122, 82, 85, 87, 87, 81, 88, 90, 86, 123, 81, 92, 89, 95, 86, 124, 93, 97, 100,
    125, 126, 102, 127, 128, 129, 130, 131, 132, 133, 0, 134, 135, 97, 98, 0, 136, 137, 138, 139,
    140, 0, 141, 142, 143, 144, 0, 0, 145, 0, 0, 0, 146, 146, 146, 0, 0, 0, 0, 0, 147, 0, 0, 148,
    0, 97, 0, 149, 150, 151, 152, 149, 153, 154, 155, 156, 0, 98, 157, 158, 0, 159, 0, 160, 161,
    161, 0, 162, 163, 164, 165, 103, 110, 0, 1, 166, 167, 166, 167, 168, 168, 168, 168, 169, 169,
    169, 169, 74, 79, 0, 1, 0, 1, 0, 1, 170, 171, 0, 0, 0, 0, 0, 0, 115, 172, 173,
];

/// The deltas the runs add to a character to map it.
pub(super) static CASE_DELTAS: [i32; 174] = [
    32, -32, 743, 121, -232, -121, -300, 195, 210, 206, 205, 79, 202, 203, 207, 97, 211, 209, 163,
    42561, 213, 130, 214, 218, 217, 219, 56, -79, -97, -56, -130, 10795, -163, 10792, 10815, -195,
    69, 71, 10783, 10780, 10782, -210, -206, -205, -202, -203, 42319, 42315, -207, 42343, 42280,
    42308, -209, -211, 10743, 42305, 10749, -213, -214, 42342, 10727, -218, 42307, 42282, -69,
    -217, -71, -219, 42261, 42258, 84, 116, 38, 37, 64, 63, -38, -37, -31, -64, -63, 8, -62, -57,
    -47, -54, -8, -86, -80, 7, -116, -60, -96, -7, 80, 15, -15, 48, -48, 7264, 38864, -6254, -6253,
    -6244, -6242, -6243, -6236, -6181, 35266, -3008, 35332, 3814, 35384, -59, -7615, 74, 86, 100,
    128, 112, 126, -74, -7205, -100, -112, -128, -126, -7517, -8383, -8262, 28, -28, 16, -16, 26,
    -26, -10743, -3814, -10727, -10795, -10792, -10780, -10749, -10783, -10782, -10815, -7264,
    -35332, -42280, -42308, -42319, -42315, -42305, -42258, -42282, -42261, 928, -42307, -35384,
    -42343, -42561, -42342, 33, -928, -33, -38864, 40, -40, 39, -39, 27, -27, 34, -34,
];

/// Each exception's full lowercase, uppercase and titlecase mappings, three
/// in a row: each its offset into [`CASE_STRINGS`] shifted left by two,
/// over its length in characters.
pub(super) static CASE_EXCEPTIONS: [u16; 348] = [
    1, 6, 14, 22, 29, 29, 33, 38, 38, 45, 49, 53, 45, 49, 53, 45, 49, 53, 57, 61, 65, 57, 61, 65,
    57, 61, 65, 69, 73, 77, 69, 73, 77, 69, 73, 77, 81, 86, 86, 93, 97, 101, 93, 97, 101, 93, 97,
    101, 105, 111, 111, 121, 127, 127, 137, 142, 150, 157, 162, 162, 169, 174, 174, 181, 186, 186,
    193, 198, 198, 205, 210, 210, 217, 222, 222, 229, 235, 235, 245, 251, 251, 261, 267, 267, 277,
    282, 289, 293, 298, 305, 309, 314, 321, 325, 330, 337, 341, 346, 353, 357, 362, 369, 373, 378,
    385, 389, 394, 401, 277, 282, 289, 293, 298, 305, 309, 314, 321, 325, 330, 337, 341, 346, 353,
    357, 362, 369, 373, 378, 385, 389, 394, 401, 405, 410, 417, 421, 426, 433, 437, 442, 449, 453,
    458, 465, 469, 474, 481, 485, 490, 497, 501, 506, 513, 517, 522, 529, 405, 410, 417, 421, 426,
    433, 437, 442, 449, 453, 458, 465, 469, 474, 481, 485, 490, 497, 501, 506, 513, 517, 522, 529,
    533, 538, 545, 549, 554, 561, 565, 570, 577, 581, 586, 593, 597, 602, 609, 613, 618, 625, 629,
    634, 641, 645, 650, 657, 533, 538, 545, 549, 554, 561, 565, 570, 577, 581, 586, 593, 597, 602,
    609, 613, 618, 625, 629, 634, 641, 645, 650, 657, 661, 666, 674, 681, 686, 693, 697, 702, 710,
    717, 722, 722, 729, 735, 747, 681, 686, 693, 757, 762, 770, 777, 782, 789, 793, 798, 806, 813,
    818, 818, 825, 831, 843, 777, 782, 789, 853, 859, 859, 869, 111, 111, 873, 878, 878, 885, 891,
    891, 901, 907, 907, 917, 127, 127, 921, 926, 926, 933, 938, 938, 945, 951, 951, 961, 966, 974,
    981, 986, 993, 997, 1002, 1010, 1017, 1022, 1022, 1029, 1035, 1047, 981, 986, 993, 1057, 1062,
    1070, 1077, 1082, 1090, 1097, 1102, 1110, 1117, 1123, 1135, 1145, 1151, 1163, 1173, 1178, 1186,
    1193, 1178, 1186, 1197, 1202, 1210, 1217, 1222, 1230, 1237, 1242, 1250, 1257, 1262, 1270, 1277,
    1282, 1290, 0, 6, 14,
];

/// The exceptions' mappings, spelled out, each character in the BMP.
pub(super) static CASE_STRINGS: [u16; 324] = [
    223, 83, 83, 83, 115, 105, 775, 304, 329, 700, 78, 454, 452, 453, 457, 455, 456, 460, 458, 459,
    496, 74, 780, 499, 497, 498, 912, 921, 776, 769, 944, 933, 776, 769, 1415, 1333, 1362, 1333,
    1410, 7830, 72, 817, 7831, 84, 776, 7832, 87, 778, 7833, 89, 778, 7834, 65, 702, 8016, 933,
    787, 8018, 933, 787, 768, 8020, 933, 787, 769, 8022, 933, 787, 834, 8064, 7944, 921, 8072,
    8065, 7945, 921, 8073, 8066, 7946, 921, 8074, 8067, 7947, 921, 8075, 8068, 7948, 921, 8076,
    8069, 7949, 921, 8077, 8070, 7950, 921, 8078, 8071, 7951, 921, 8079, 8080, 7976, 921, 8088,
    8081, 7977, 921, 8089, 8082, 7978, 921, 8090, 8083, 7979, 921, 8091, 8084, 7980, 921, 8092,
    8085, 7981, 921, 8093, 8086, 7982, 921, 8094, 8087, 7983, 921, 8095, 8096, 8040, 921, 8104,
    8097, 8041, 921, 8105, 8098, 8042, 921, 8106, 8099, 8043, 921, 8107, 8100, 8044, 921, 8108,
    8101, 8045, 921, 8109, 8102, 8046, 921, 8110, 8103, 8047, 921, 8111, 8114, 8122, 921, 8122,
    837, 8115, 913, 921, 8124, 8116, 902, 921, 902, 837, 8118, 913, 834, 8119, 913, 834, 921, 913,
    834, 837, 8130, 8138, 921, 8138, 837, 8131, 919, 921, 8140, 8132, 905, 921, 905, 837, 8134,
    919, 834, 8135, 919, 834, 921, 919, 834, 837, 8146, 921, 776, 768, 8147, 8150, 921, 834, 8151,
    921, 776, 834, 8162, 933, 776, 768, 8163, 8164, 929, 787, 8166, 933, 834, 8167, 933, 776, 834,
    8178, 8186, 921, 8186, 837, 8179, 937, 921, 8188, 8180, 911, 921, 911, 837, 8182, 937, 834,
    8183, 937, 834, 921, 937, 834, 837, 64256, 70, 70, 70, 102, 64257, 70, 73, 70, 105, 64258, 70,
    76, 70, 108, 64259, 70, 70, 73, 70, 102, 105, 64260, 70, 70, 76, 70, 102, 108, 64261, 83, 84,
    83, 116, 64262, 64275, 1348, 1350, 1348, 1398, 64276, 1348, 1333, 1348, 1381, 64277, 1348,
    1339, 1348, 1387, 64278, 1358, 1350, 1358, 1398, 64279, 1348, 1341, 1348, 1389,
];

/// Soft_Dotted, each range its first character shifted left by eight,
/// over its length less one.
pub(super) static SOFT_DOTTED: [u32; 36] = [
    26881, 77568, 149760, 157696, 171264, 176640, 258816, 284160, 284672, 1925632, 1938944,
    1942528, 1943552, 1977600, 2018048, 2126080, 2181121, 2915328, 30679553, 30692865, 30706177,
    30719489, 30732801, 30746113, 30759425, 30772737, 30786049, 30799361, 30812673, 30825985,
    30839297, 31398400, 31420162, 31447296, 31476737, 31483904,
];

/// The characters of nonzero Canonical_Combining_Class, each range its
/// first character shifted left by eight, over its length less one
/// shifted left by one, over whether the class is 230 (Above).
pub(super) static ACCENTS: [u32; 350] = [
    196649, 202062, 212239, 214272, 214529, 214788, 215557, 216322, 217093, 217862, 218881, 219140,
    219905, 220172, 221977, 295689, 364800, 365063, 366080, 366341, 367106, 367627, 369162, 370691,
    371200, 371459, 371970, 372481, 372762, 376576, 377090, 377857, 378112, 378628, 397327, 399364,
    412430, 414467, 414978, 415497, 416768, 417027, 417536, 421888, 448013, 450311, 451328, 451585,
    452355, 453120, 453379, 453888, 463104, 471041, 471296, 471555, 472064, 472323, 472836, 473601,
    473858, 474369, 474624, 474885, 475648, 475905, 476160, 476417, 476672, 476929, 477184, 477443,
    518925, 520704, 520961, 523520, 529927, 531217, 533765, 534793, 547076, 562947, 563460, 564231,
    576009, 577288, 578587, 582400, 582659, 583168, 583427, 583936, 584197, 584970, 586501, 587264,
    587523, 588034, 588553, 605184, 609536, 610561, 610816, 611075, 637952, 642304, 654849, 670720,
    675072, 703488, 707840, 736256, 740608, 773376, 801792, 806144, 808194, 834560, 838912, 867074,
    871680, 903680, 931844, 935942, 964612, 968710, 989186, 996608, 997120, 997632, 1011970,
    1012736, 1014278, 1015808, 1016323, 1016832, 1017347, 1033728, 1062656, 1063170, 1084672,
    1268997, 1512450, 1520640, 1561088, 1563905, 1616128, 1652992, 1653249, 1653504, 1709825,
    1710080, 1728512, 1733903, 1736448, 1749001, 1750282, 1751811, 1752320, 1752834, 1753347,
    1753858, 1754377, 1755648, 1755939, 1760512, 1760783, 1762816, 1763079, 1764096, 1764355,
    1764866, 1765377, 1782784, 1786880, 1796865, 1797120, 1797389, 1812994, 1828352, 1831426,
    1849088, 1888261, 1889290, 1890819, 1891334, 1892353, 1892876, 1895680, 1897473, 1898499,
    1949699, 1950208, 1950477, 1952256, 1952515, 1953030, 1954121, 1963528, 1964801, 1965058,
    1965569, 1965824, 2150403, 2150914, 2151431, 2152452, 2153219, 2154753, 2155778, 2156289,
    2156544, 2156801, 2157066, 2158593, 2944773, 2981632, 3006527, 3156490, 3184898, 10907393,
    10908691, 10919427, 10940419, 11011584, 11021312, 11060224, 11067427, 11086596, 11096832,
    11121408, 11124736, 11186177, 11186691, 11187200, 11187971, 11189763, 11190529, 11204096,
    11267328, 16457216, 16654349, 16656140, 16657923, 16907520, 16965632, 17004041, 17435904,
    17436417, 17446913, 17447170, 17448704, 17491201, 17491456, 17638407, 17656073, 17738499,
    17746689, 17746946, 17747459, 17756164, 17756929, 17757184, 17757441, 17757696, 17757957,
    17758722, 17759492, 17778178, 17778693, 17779456, 17779713, 17779974, 17793537, 17793792,
    17794049, 17794304, 17843712, 17854464, 17858304, 17873154, 17891333, 17904386, 17920768,
    17940480, 17943040, 17970434, 18016514, 18037506, 18042112, 18048525, 18051081, 18075140,
    18104832, 18105856, 18112001, 18137602, 18202370, 18235136, 18265602, 18295552, 18364674,
    18431234, 18432768, 18472960, 18494464, 18499328, 18520320, 18628352, 18694656, 18695170,
    18716416, 18825474, 23146240, 23785480, 23801869, 24113154, 29138432, 30484226, 30500104,
    30502154, 30505742, 30508297, 30509570, 30517767, 30556677, 30560260, 30563074, 30564096,
    30572546, 31457293, 31459361, 31464205, 31466243, 31467017, 31493889, 31535117, 31632897,
    31648775, 31779844, 31780609, 31845889, 31846144, 31908609, 31909377, 31911427, 31913217,
    32034828, 32064523, 32066048,
];

// The Greek letter flags, above the ten bits of the capital.
pub(super) const GREEK_UPPER_MASK: u32 = 0x3FF;
pub(super) const GREEK_VOWEL: u32 = 1 << 10;
pub(super) const GREEK_YPOGEGRAMMENI: u32 = 1 << 11;
pub(super) const GREEK_ACCENT: u32 = 1 << 12;
pub(super) const GREEK_DIALYTIKA: u32 = 1 << 13;

/// What Greek uppercasing reads of each character of U+0370 to U+03FF and
/// then U+1F00 to U+1FFF: its base letter's capital and the flags its
/// diacritics set, or zero where it is no Greek letter.
pub(super) static GREEK_LETTERS: [u16; 400] = [
    0x370, 0x370, 0x372, 0x372, 0x0, 0x0, 0x376, 0x376, 0x0, 0x0, 0x37A, 0x3FD, 0x3FE, 0x3FF, 0x0,
    0x37F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1791, 0x0, 0x1795, 0x1797, 0x1799, 0x0, 0x179F, 0x0,
    0x17A5, 0x17A9, 0x3799, 0x791, 0x392, 0x393, 0x394, 0x795, 0x396, 0x797, 0x398, 0x799, 0x39A,
    0x39B, 0x39C, 0x39D, 0x39E, 0x79F, 0x3A0, 0x3A1, 0x0, 0x3A3, 0x3A4, 0x7A5, 0x3A6, 0x3A7, 0x3A8,
    0x7A9, 0x2799, 0x27A5, 0x1791, 0x1795, 0x1797, 0x1799, 0x37A5, 0x791, 0x392, 0x393, 0x394,
    0x795, 0x396, 0x797, 0x398, 0x799, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x79F, 0x3A0, 0x3A1,
    0x3A3, 0x3A3, 0x3A4, 0x7A5, 0x3A6, 0x3A7, 0x3A8, 0x7A9, 0x2799, 0x27A5, 0x179F, 0x17A5, 0x17A9,
    0x3CF, 0x392, 0x398, 0x3D2, 0x13D2, 0x23D2, 0x3A6, 0x3A0, 0x3CF, 0x3D8, 0x3D8, 0x3DA, 0x3DA,
    0x3DC, 0x3DC, 0x3DE, 0x3DE, 0x3E0, 0x3E0, 0x3E2, 0x3E2, 0x3E4, 0x3E4, 0x3E6, 0x3E6, 0x3E8,
    0x3E8, 0x3EA, 0x3EA, 0x3EC, 0x3EC, 0x3EE, 0x3EE, 0x39A, 0x3A1, 0x3F9, 0x37F, 0x3F4, 0x795, 0x0,
    0x3F7, 0x3F7, 0x3F9, 0x3FA, 0x3FA, 0x3FC, 0x3FD, 0x3FE, 0x3FF, 0x791, 0x791, 0x1791, 0x1791,
    0x1791, 0x1791, 0x1791, 0x1791, 0x791, 0x791, 0x1791, 0x1791, 0x1791, 0x1791, 0x1791, 0x1791,
    0x795, 0x795, 0x1795, 0x1795, 0x1795, 0x1795, 0x0, 0x0, 0x795, 0x795, 0x1795, 0x1795, 0x1795,
    0x1795, 0x0, 0x0, 0x797, 0x797, 0x1797, 0x1797, 0x1797, 0x1797, 0x1797, 0x1797, 0x797, 0x797,
    0x1797, 0x1797, 0x1797, 0x1797, 0x1797, 0x1797, 0x799, 0x799, 0x1799, 0x1799, 0x1799, 0x1799,
    0x1799, 0x1799, 0x799, 0x799, 0x1799, 0x1799, 0x1799, 0x1799, 0x1799, 0x1799, 0x79F, 0x79F,
    0x179F, 0x179F, 0x179F, 0x179F, 0x0, 0x0, 0x79F, 0x79F, 0x179F, 0x179F, 0x179F, 0x179F, 0x0,
    0x0, 0x7A5, 0x7A5, 0x17A5, 0x17A5, 0x17A5, 0x17A5, 0x17A5, 0x17A5, 0x0, 0x7A5, 0x0, 0x17A5,
    0x0, 0x17A5, 0x0, 0x17A5, 0x7A9, 0x7A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x7A9,
    0x7A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x17A9, 0x1791, 0x1791, 0x1795, 0x1795, 0x1797,
    0x1797, 0x1799, 0x1799, 0x179F, 0x179F, 0x17A5, 0x17A5, 0x17A9, 0x17A9, 0x0, 0x0, 0xF91, 0xF91,
    0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0xF91, 0xF91, 0x1F91, 0x1F91, 0x1F91, 0x1F91,
    0x1F91, 0x1F91, 0xF97, 0xF97, 0x1F97, 0x1F97, 0x1F97, 0x1F97, 0x1F97, 0x1F97, 0xF97, 0xF97,
    0x1F97, 0x1F97, 0x1F97, 0x1F97, 0x1F97, 0x1F97, 0xFA9, 0xFA9, 0x1FA9, 0x1FA9, 0x1FA9, 0x1FA9,
    0x1FA9, 0x1FA9, 0xFA9, 0xFA9, 0x1FA9, 0x1FA9, 0x1FA9, 0x1FA9, 0x1FA9, 0x1FA9, 0x791, 0x791,
    0x1F91, 0xF91, 0x1F91, 0x0, 0x1791, 0x1F91, 0x791, 0x791, 0x1791, 0x1791, 0xF91, 0x0, 0x799,
    0x0, 0x0, 0x0, 0x1F97, 0xF97, 0x1F97, 0x0, 0x1797, 0x1F97, 0x1795, 0x1795, 0x1797, 0x1797,
    0xF97, 0x0, 0x0, 0x0, 0x799, 0x799, 0x3799, 0x3799, 0x0, 0x0, 0x1799, 0x3799, 0x799, 0x799,
    0x1799, 0x1799, 0x0, 0x0, 0x0, 0x0, 0x7A5, 0x7A5, 0x37A5, 0x37A5, 0x3A1, 0x3A1, 0x17A5, 0x37A5,
    0x7A5, 0x7A5, 0x17A5, 0x17A5, 0x3A1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1FA9, 0xFA9, 0x1FA9, 0x0,
    0x17A9, 0x1FA9, 0x179F, 0x179F, 0x17A9, 0x17A9, 0xFA9, 0x0, 0x0, 0x0,
];