From 8d6fe9a6a10edefe304de26c988a45ac4eec77ea Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Mon, 16 Jan 2023 18:03:35 +0800 Subject: [PATCH] feat: benchmark for 10-bits offset list --- src/main.cc | 37 +- src/short_code/convert.cc | 119 ++ src/short_code/data_loader.cc | 48 +- src/short_code/offset/basic_ranges_offset.h | 131 ++ src/short_code/offset/range_prefix_offset.h | 2067 +++++++++++++++++++ src/short_code/short_code.h | 13 +- 6 files changed, 2374 insertions(+), 41 deletions(-) diff --git a/src/main.cc b/src/main.cc index 3869f8d..b16ac73 100644 --- a/src/main.cc +++ b/src/main.cc @@ -174,15 +174,17 @@ int main() { // } // } - ShortCode::speed_up(ShortCode::FAST); - AllCases::build(); +// ShortCode::speed_up(ShortCode::FAST); +// AllCases::build(); + BasicRanges::build(); std::vector all_cases; for (uint64_t head = 0; head < 16; ++head) { - for (const auto &range : BasicRanges::fetch()) { + for (const auto &range : AllCases::fetch()[head]) { all_cases.emplace_back(head << 32 | range); } } + std::cout << "test data size: " << all_cases.size() << std::endl; // std::cout << "start benchmark" << std::endl; auto start_time = clock(); @@ -269,18 +271,29 @@ int main() { // } // } - for (uint32_t i = 0; i < 29334498; ++i) { +// for (uint32_t i = 0; i < 29334498; ++i) { // if (ShortCode::fast_encode(ShortCode::fast_decode(i)) != i) { // std::cout << "error" << std::endl; // } // ShortCode::fast_encode_legacy(i); // ShortCode::fast_decode(i); - ShortCode::fast_encode(all_cases[i]); +// ShortCode::fast_encode(all_cases[i]); +// } + + for (uint32_t i = 1000000; i < 1100000; ++i) { +// ShortCode::tiny_decode(i); +// ShortCode::tiny_decode_10b(i); +// ShortCode::tiny_encode(all_cases[i]); + ShortCode::tiny_encode_10b(all_cases[i]); } + // printf("%09lX\n", ShortCode::tiny_decode(14323231)); // std::cout << ShortCode::tiny_encode_demo(0x6EC0F8800) << std::endl; +// printf("%09lX\n", ShortCode::tiny_decode_10b(14323231)); +// std::cout << ShortCode::tiny_encode_10b(0x6EC0F8800) << std::endl; + // auto br = BasicRanges::fetch(); // for (auto &range : br) { // range = Common::range_reverse(range); @@ -290,8 +303,8 @@ int main() { /// 1017985: 1000000C // int sum = 0; // printf(" "); -// for (uint32_t prefix = 0; prefix < 0x1000; ++prefix) { -// printf("%7td, ", std::lower_bound(br.begin(), br.end(), prefix << 20) - br.begin()); +// for (uint32_t prefix = 0; prefix < 0x400; ++prefix) { +// printf("%7td, ", std::lower_bound(br.begin(), br.end(), prefix << 22) - br.begin()); // if (sum++ % 8 == 7) { // printf("\n "); // } @@ -300,9 +313,9 @@ int main() { // for (int head = 0; head < 16; ++head) { // auto &a = AllCases::fetch()[head]; // printf("\n/// --------------------------------- 0x%X ---------------------------------\n ", head); -// for (uint32_t prefix = 0; prefix < 0x1000; ++prefix) { -// printf("%7td, ", std::lower_bound(a.begin(), a.end(), prefix << 20) - a.begin()); -// if (sum++ % 8 == 7 and prefix != 0xFFF) { +// for (uint32_t prefix = 0; prefix < 0x400; ++prefix) { +// printf("%7td, ", std::lower_bound(a.begin(), a.end(), prefix << 22) - a.begin()); +// if (sum++ % 8 == 7 and prefix != 0x3FF) { // printf("\n "); // } // } @@ -312,8 +325,8 @@ int main() { // printf("%09lX\n", ShortCode::fast_decode(14323231)); // std::cout << ShortCode::fast_encode(0x6EC0F8800) << std::endl; -// std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl; - std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl; + std::cerr << (clock() - start_time) * 1000 / CLOCKS_PER_SEC << "ms" << std::endl; +// std::cerr << (clock() - start_time) * 1000000 / CLOCKS_PER_SEC << "us" << std::endl; // std::cout << "complete benchmark" << std::endl; // pause(); diff --git a/src/short_code/convert.cc b/src/short_code/convert.cc index eb931a8..8cd457e 100644 --- a/src/short_code/convert.cc +++ b/src/short_code/convert.cc @@ -136,10 +136,14 @@ uint64_t ShortCode::tiny_decode(uint32_t short_code) { return 0; // never reach when input valid } +#include + uint32_t ShortCode::tiny_encode(uint64_t common_code) { // printf("%09lX\n", common_code); +// uint64_t raw = common_code; + uint32_t head = common_code >> 32; uint32_t prefix = (common_code >> 20) & 0xFFF; @@ -149,15 +153,36 @@ uint32_t ShortCode::tiny_encode(uint64_t common_code) { uint32_t offset = 0; auto target = Common::range_reverse((uint32_t)common_code); // target range +// printf("target range: %08X\n", target); +// printf("start search at %d\n", BASIC_RANGES_OFFSET[prefix]); +// const auto &basic_ranges = BasicRanges::fetch(); +// auto true_index = std::find(basic_ranges.begin(), basic_ranges.end(), 0x0FF00F34) - basic_ranges.begin(); + +// printf("true index: %td\n", true_index); +// printf("basic_ranges[1294828] = %08X\n", basic_ranges[1294828]); + for (auto index = BASIC_RANGES_OFFSET[prefix]; index < basic_ranges.size(); ++index) { // traverse basic ranges uint32_t range = basic_ranges[index]; +// bool flag = false; +// if (range == 0x0FF00F34) { +// flag = true; +// std::cout << "get target range" << std::endl; +// std::cout << "check result -> " << Common::check_case(head, range) << std::endl; +// } + + // TODO: using Common::check_range if (Common::check_case(head, range)) { // search for valid cases +// if (flag) { +// std::cout << "check ok" << std::endl; +// } + if (range == target) { // found target range +// std::cout << "sum = " << sum << std::endl; return ALL_CASES_OFFSET[head] + RANGE_PREFIX_OFFSET[head][prefix] + offset; } @@ -169,6 +194,100 @@ uint32_t ShortCode::tiny_encode(uint64_t common_code) { } +// std::cout << "sum = " << sum << std::endl; + +// printf("error common code -> %09lX\n", raw); + printf("error\n"); + + return 0; +} + + + + + + +uint64_t ShortCode::tiny_decode_10b(uint32_t short_code) { + /// match head index + auto offset = std::upper_bound( // binary search + ALL_CASES_OFFSET, ALL_CASES_OFFSET + 16, short_code + ) - 1; + uint64_t head = offset - ALL_CASES_OFFSET; // head index + short_code -= *offset; + + /// match range prefix + offset = std::upper_bound( // binary search + RANGE_PREFIX_OFFSET_10b[head], RANGE_PREFIX_OFFSET_10b[head] + 1024, short_code + ) - 1; + uint32_t prefix = offset - RANGE_PREFIX_OFFSET_10b[head]; // range prefix + short_code -= *offset; + + /// search target range + const auto &basic_ranges = BasicRanges::fetch(); + for (auto index = BASIC_RANGES_OFFSET_10b[prefix]; index < basic_ranges.size(); ++index) { + + uint32_t range = basic_ranges[index]; // traverse basic ranges + + uint32_t broken = Common::check_range(head, basic_ranges[index]); // check and get broken address + + auto range_rev = Common::range_reverse(basic_ranges[index]); // reversed range + + if (broken) { // invalid case + auto delta = (uint32_t)1 << (32 - broken * 2); // this --delta--> next possible range + auto next_min = (range_rev & ~(delta - 1)) + delta; + while (Common::range_reverse(basic_ranges[++index]) < next_min); // located next range + --index; + } else { + + if (!short_code--) { // short code approximate + + /// found target range + return head << 32 | range_rev; + + } + + } + + } + + return 0; // never reach when input valid +} + +uint32_t ShortCode::tiny_encode_10b(uint64_t common_code) { + +// printf("%09lX\n", common_code); + + uint32_t head = common_code >> 32; + uint32_t prefix = (common_code >> 22) & 0x3FF; + +// printf("head = %d\n", head); +// printf("prefix = %X\n", prefix); + + uint32_t offset = 0; + auto target = Common::range_reverse((uint32_t)common_code); // target range + + const auto &basic_ranges = BasicRanges::fetch(); + + for (auto index = BASIC_RANGES_OFFSET_10b[prefix]; index < basic_ranges.size(); ++index) { // traverse basic ranges + + uint32_t range = basic_ranges[index]; + + if (Common::check_case(head, range)) { // search for valid cases + + if (range == target) { // found target range + return ALL_CASES_OFFSET[head] + RANGE_PREFIX_OFFSET_10b[head][prefix] + offset; + + } + + ++offset; // record sub offset + + } + + } + + return 0; } + + diff --git a/src/short_code/data_loader.cc b/src/short_code/data_loader.cc index 6970e2b..679b853 100644 --- a/src/short_code/data_loader.cc +++ b/src/short_code/data_loader.cc @@ -3,19 +3,19 @@ #include "basic_ranges.h" #include "short_code_mark.h" -std::mutex ShortCode::map_building; +//std::mutex ShortCode::map_building; bool ShortCode::fast_mode_available = false; bool ShortCode::normal_mode_available = false; -std::vector ShortCode::all_cases_list; -std::unordered_map ShortCode::all_cases_dict; +//std::vector ShortCode::all_cases_list; +//std::unordered_map ShortCode::all_cases_dict; void ShortCode::speed_up(ShortCode::Mode mode) { if (fast_mode_available) { return; // fast mode already available } if (mode == ShortCode::FAST) { // build fast mode data - build_mappings(); +// build_mappings(); // TODO: confirm AllCases data available AllCases::build(); @@ -38,27 +38,27 @@ ShortCode::Mode ShortCode::check_mode() { // ensure speed up enabled and return } /// ensure that fast_mode_available == false -void ShortCode::build_mappings() { // build fast search mappings - if (map_building.try_lock()) { // lock success -> start building - for (int head = 0; head < 16; ++head) { - uint64_t prefix = (uint64_t)head << 32; - for (const auto &range : AllCases::fetch()[head]) { // blocking function - all_cases_list.emplace_back(prefix | range); // short_code -> common_code - } - } - for (int index = 0; index < all_cases_list.size(); ++index) { - all_cases_dict[all_cases_list[index]] = index; // common_code -> short_code - } - fast_mode_available = true; // set available flag - } else { // another thread building - map_building.lock(); // blocking waiting - } - map_building.unlock(); -} +//void ShortCode::build_mappings() { // build fast search mappings +// if (map_building.try_lock()) { // lock success -> start building +// for (int head = 0; head < 16; ++head) { +// uint64_t prefix = (uint64_t)head << 32; +// for (const auto &range : AllCases::fetch()[head]) { // blocking function +// all_cases_list.emplace_back(prefix | range); // short_code -> common_code +// } +// } +// for (int index = 0; index < all_cases_list.size(); ++index) { +// all_cases_dict[all_cases_list[index]] = index; // common_code -> short_code +// } +// fast_mode_available = true; // set available flag +// } else { // another thread building +// map_building.lock(); // blocking waiting +// } +// map_building.unlock(); +//} -uint32_t ShortCode::fast_encode_legacy(uint64_t common_code) { - return all_cases_dict[common_code]; -} +//uint32_t ShortCode::fast_encode_legacy(uint64_t common_code) { +// return all_cases_dict[common_code]; +//} #include diff --git a/src/short_code/offset/basic_ranges_offset.h b/src/short_code/offset/basic_ranges_offset.h index cc75586..f0e29f1 100644 --- a/src/short_code/offset/basic_ranges_offset.h +++ b/src/short_code/offset/basic_ranges_offset.h @@ -2,6 +2,137 @@ #include +const uint32_t BASIC_RANGES_OFFSET_10b[1024] = { + 0, 49920, 68192, 86464, 136384, 154656, 161344, 168032, + 186304, 204576, 211264, 217952, 236224, 286144, 304416, 322688, + 372608, 390880, 397568, 404256, 422528, 429216, 431664, 434112, + 440800, 447488, 449936, 452384, 459072, 477344, 484032, 490720, + 508992, 527264, 533952, 540640, 558912, 565600, 568048, 570496, + 577184, 583872, 586320, 588768, 595456, 613728, 620416, 627104, + 645376, 695296, 713568, 731840, 781760, 800032, 806720, 813408, + 831680, 849952, 856640, 863328, 881600, 931520, 949792, 968064, + 1017984, 1036256, 1042944, 1049632, 1067904, 1074592, 1077040, 1079488, + 1086176, 1092864, 1095312, 1097760, 1104448, 1122720, 1129408, 1136096, + 1154368, 1161056, 1163504, 1165952, 1172640, 1175088, 1175899, 1176710, + 1178987, 1181435, 1182246, 1183057, 1185334, 1192022, 1194299, 1196576, + 1202923, 1209611, 1212059, 1214507, 1221195, 1223643, 1224454, 1225265, + 1227542, 1229990, 1230801, 1231612, 1233889, 1240577, 1242854, 1245131, + 1251478, 1269750, 1276438, 1283126, 1301398, 1308086, 1310363, 1312640, + 1318987, 1325675, 1327952, 1330229, 1336576, 1354848, 1361195, 1367542, + 1385131, 1403403, 1410091, 1416779, 1435051, 1441739, 1444187, 1446635, + 1453323, 1460011, 1462459, 1464907, 1471595, 1489867, 1496555, 1503243, + 1521515, 1528203, 1530651, 1533099, 1539787, 1542235, 1543046, 1543857, + 1546134, 1548582, 1549393, 1550204, 1552481, 1559169, 1561446, 1563723, + 1570070, 1576758, 1579206, 1581654, 1588342, 1590790, 1591601, 1592412, + 1594689, 1597137, 1597948, 1598759, 1601036, 1607724, 1610001, 1612278, + 1618625, 1636897, 1643585, 1650273, 1668545, 1675233, 1677510, 1679787, + 1686134, 1692822, 1695099, 1697376, 1703723, 1721995, 1728342, 1734689, + 1752278, 1802198, 1820470, 1838742, 1888662, 1906934, 1913622, 1920310, + 1938582, 1956854, 1963542, 1970230, 1988502, 2038422, 2056694, 2074966, + 2124886, 2143158, 2149846, 2156534, 2174806, 2181494, 2183771, 2186048, + 2192395, 2199083, 2201360, 2203637, 2209984, 2228256, 2234603, 2240950, + 2258539, 2276811, 2283499, 2290187, 2308459, 2315147, 2317424, 2319701, + 2326048, 2332736, 2335013, 2337290, 2343637, 2361909, 2368256, 2374603, + 2392192, 2442112, 2460384, 2478656, 2528576, 2546848, 2553195, 2559542, + 2577131, 2595403, 2601750, 2608097, 2625686, 2675606, 2693195, 2710784, + 2759339, 2777611, 2784299, 2790987, 2809259, 2815947, 2818395, 2820843, + 2827531, 2834219, 2836667, 2839115, 2845803, 2864075, 2870763, 2877451, + 2895723, 2902411, 2904859, 2907307, 2913995, 2916443, 2917254, 2918065, + 2920342, 2922790, 2923601, 2924412, 2926689, 2933377, 2935654, 2937931, + 2944278, 2950966, 2953414, 2955862, 2962550, 2964998, 2965809, 2966620, + 2968897, 2971345, 2972156, 2972967, 2975244, 2981932, 2984209, 2986486, + 2992833, 3011105, 3017793, 3024481, 3042753, 3049441, 3051718, 3053995, + 3060342, 3067030, 3069307, 3071584, 3077931, 3096203, 3102550, 3108897, + 3126486, 3133174, 3135622, 3138070, 3144758, 3147206, 3148017, 3148828, + 3151105, 3153553, 3154364, 3155175, 3157452, 3164140, 3166417, 3168694, + 3175041, 3177489, 3178300, 3179111, 3181388, 3182199, 3182390, 3182581, + 3183173, 3183984, 3184175, 3184366, 3184958, 3187235, 3187827, 3188419, + 3190204, 3192652, 3193463, 3194274, 3196551, 3197362, 3197553, 3197744, + 3198336, 3199147, 3199338, 3199529, 3200121, 3202398, 3202990, 3203582, + 3205367, 3212055, 3214332, 3216609, 3222956, 3225233, 3225825, 3226417, + 3228202, 3230479, 3231071, 3231663, 3233448, 3239795, 3241580, 3243365, + 3248611, 3255299, 3257747, 3260195, 3266883, 3269331, 3270142, 3270953, + 3273230, 3275678, 3276489, 3277300, 3279577, 3286265, 3288542, 3290819, + 3297166, 3299614, 3300425, 3301236, 3303513, 3304324, 3304515, 3304706, + 3305298, 3306109, 3306300, 3306491, 3307083, 3309360, 3309952, 3310544, + 3312329, 3314777, 3315588, 3316399, 3318676, 3319487, 3319678, 3319869, + 3320461, 3321272, 3321463, 3321654, 3322246, 3324523, 3325115, 3325707, + 3327492, 3334180, 3336457, 3338734, 3345081, 3347358, 3347950, 3348542, + 3350327, 3352604, 3353196, 3353788, 3355573, 3361920, 3363705, 3365490, + 3370736, 3389008, 3395696, 3402384, 3420656, 3427344, 3429621, 3431898, + 3438245, 3444933, 3447210, 3449487, 3455834, 3474106, 3480453, 3486800, + 3504389, 3511077, 3513354, 3515631, 3521978, 3524255, 3524847, 3525439, + 3527224, 3529501, 3530093, 3530685, 3532470, 3538817, 3540602, 3542387, + 3547633, 3554321, 3556598, 3558875, 3565222, 3567499, 3568091, 3568683, + 3570468, 3572745, 3573337, 3573929, 3575714, 3582061, 3583846, 3585631, + 3590877, 3609149, 3615496, 3621843, 3639432, 3645779, 3647564, 3649349, + 3654595, 3660942, 3662727, 3664512, 3669758, 3687347, 3692593, 3697839, + 3713002, 3731274, 3737962, 3744650, 3762922, 3769610, 3772058, 3774506, + 3781194, 3787882, 3790330, 3792778, 3799466, 3817738, 3824426, 3831114, + 3849386, 3856074, 3858522, 3860970, 3867658, 3870106, 3870917, 3871728, + 3874005, 3876453, 3877264, 3878075, 3880352, 3887040, 3889317, 3891594, + 3897941, 3904629, 3907077, 3909525, 3916213, 3918661, 3919472, 3920283, + 3922560, 3925008, 3925819, 3926630, 3928907, 3935595, 3937872, 3940149, + 3946496, 3964768, 3971456, 3978144, 3996416, 4003104, 4005381, 4007658, + 4014005, 4020693, 4022970, 4025247, 4031594, 4049866, 4056213, 4062560, + 4080149, 4086837, 4089285, 4091733, 4098421, 4100869, 4101680, 4102491, + 4104768, 4107216, 4108027, 4108838, 4111115, 4117803, 4120080, 4122357, + 4128704, 4131152, 4131963, 4132774, 4135051, 4135862, 4136053, 4136244, + 4136836, 4137647, 4137838, 4138029, 4138621, 4140898, 4141490, 4142082, + 4143867, 4146315, 4147126, 4147937, 4150214, 4151025, 4151216, 4151407, + 4151999, 4152810, 4153001, 4153192, 4153784, 4156061, 4156653, 4157245, + 4159030, 4165718, 4167995, 4170272, 4176619, 4178896, 4179488, 4180080, + 4181865, 4184142, 4184734, 4185326, 4187111, 4193458, 4195243, 4197028, + 4202274, 4208962, 4211410, 4213858, 4220546, 4222994, 4223805, 4224616, + 4226893, 4229341, 4230152, 4230963, 4233240, 4239928, 4242205, 4244482, + 4250829, 4253277, 4254088, 4254899, 4257176, 4257987, 4258178, 4258369, + 4258961, 4259772, 4259963, 4260154, 4260746, 4263023, 4263615, 4264207, + 4265992, 4268440, 4269251, 4270062, 4272339, 4273150, 4273341, 4273532, + 4274124, 4274935, 4275126, 4275317, 4275909, 4278186, 4278778, 4279370, + 4281155, 4287843, 4290120, 4292397, 4298744, 4301021, 4301613, 4302205, + 4303990, 4306267, 4306859, 4307451, 4309236, 4315583, 4317368, 4319153, + 4324399, 4342671, 4349359, 4356047, 4374319, 4381007, 4383284, 4385561, + 4391908, 4398596, 4400873, 4403150, 4409497, 4427769, 4434116, 4440463, + 4458052, 4464740, 4467017, 4469294, 4475641, 4477918, 4478510, 4479102, + 4480887, 4483164, 4483756, 4484348, 4486133, 4492480, 4494265, 4496050, + 4501296, 4507984, 4510261, 4512538, 4518885, 4521162, 4521754, 4522346, + 4524131, 4526408, 4527000, 4527592, 4529377, 4535724, 4537509, 4539294, + 4544540, 4562812, 4569159, 4575506, 4593095, 4599442, 4601227, 4603012, + 4608258, 4614605, 4616390, 4618175, 4623421, 4641010, 4646256, 4651502, + 4666665, 4716585, 4734857, 4753129, 4803049, 4821321, 4828009, 4834697, + 4852969, 4871241, 4877929, 4884617, 4902889, 4952809, 4971081, 4989353, + 5039273, 5057545, 5064233, 5070921, 5089193, 5095881, 5098158, 5100435, + 5106782, 5113470, 5115747, 5118024, 5124371, 5142643, 5148990, 5155337, + 5172926, 5191198, 5197886, 5204574, 5222846, 5229534, 5231811, 5234088, + 5240435, 5247123, 5249400, 5251677, 5258024, 5276296, 5282643, 5288990, + 5306579, 5356499, 5374771, 5393043, 5442963, 5461235, 5467582, 5473929, + 5491518, 5509790, 5516137, 5522484, 5540073, 5589993, 5607582, 5625171, + 5673726, 5691998, 5698686, 5705374, 5723646, 5730334, 5732611, 5734888, + 5741235, 5747923, 5750200, 5752477, 5758824, 5777096, 5783443, 5789790, + 5807379, 5814067, 5816344, 5818621, 5824968, 5827245, 5827837, 5828429, + 5830214, 5832491, 5833083, 5833675, 5835460, 5841807, 5843592, 5845377, + 5850623, 5857311, 5859588, 5861865, 5868212, 5870489, 5871081, 5871673, + 5873458, 5875735, 5876327, 5876919, 5878704, 5885051, 5886836, 5888621, + 5893867, 5912139, 5918486, 5924833, 5942422, 5948769, 5950554, 5952339, + 5957585, 5963932, 5965717, 5967502, 5972748, 5990337, 5995583, 6000829, + 6015992, 6034264, 6040952, 6047640, 6065912, 6072600, 6074877, 6077154, + 6083501, 6090189, 6092466, 6094743, 6101090, 6119362, 6125709, 6132056, + 6149645, 6156333, 6158610, 6160887, 6167234, 6169511, 6170103, 6170695, + 6172480, 6174757, 6175349, 6175941, 6177726, 6184073, 6185858, 6187643, + 6192889, 6199577, 6201854, 6204131, 6210478, 6212755, 6213347, 6213939, + 6215724, 6218001, 6218593, 6219185, 6220970, 6227317, 6229102, 6230887, + 6236133, 6254405, 6260752, 6267099, 6284688, 6291035, 6292820, 6294605, + 6299851, 6306198, 6307983, 6309768, 6315014, 6332603, 6337849, 6343095, + 6358258, 6408178, 6426450, 6444722, 6494642, 6512914, 6519261, 6525608, + 6543197, 6561469, 6567816, 6574163, 6591752, 6641672, 6659261, 6676850, + 6725405, 6743677, 6750024, 6756371, 6773960, 6780307, 6782092, 6783877, + 6789123, 6795470, 6797255, 6799040, 6804286, 6821875, 6827121, 6832367, + 6847530, 6865802, 6872149, 6878496, 6896085, 6902432, 6904217, 6906002, + 6911248, 6917595, 6919380, 6921165, 6926411, 6944000, 6949246, 6954492, + 6969655, 7019575, 7037164, 7054753, 7103308, 7120897, 7126143, 7131389, + 7146552, 7164141, 7169387, 7174633, 7189796, 7238351, 7253514, 7268677, +}; + const uint32_t BASIC_RANGES_OFFSET[4096] = { 0, 18272, 24960, 31648, 49920, 56608, 59056, 61504, 68192, 74880, 77328, 79776, 86464, 104736, 111424, 118112, diff --git a/src/short_code/offset/range_prefix_offset.h b/src/short_code/offset/range_prefix_offset.h index d45e17d..526be21 100644 --- a/src/short_code/offset/range_prefix_offset.h +++ b/src/short_code/offset/range_prefix_offset.h @@ -2,6 +2,2073 @@ #include +const uint32_t RANGE_PREFIX_OFFSET_10b[16][1024] = { +/// --------------------------------- 0x0 --------------------------------- + 0, 25594, 35121, 44445, 70039, 70039, 70039, 70039, + 70039, 79425, 82831, 86247, 95633, 121227, 130754, 140078, + 165672, 175199, 178663, 181739, 191266, 194730, 196199, 197329, + 200793, 204197, 205438, 206713, 210117, 219644, 223108, 226184, + 235711, 243739, 247203, 250141, 258169, 258169, 258169, 258169, + 258169, 261575, 263044, 264290, 267696, 275724, 279188, 282126, + 290154, 315748, 325275, 334599, 360193, 360193, 360193, 360193, + 360193, 369579, 372985, 376401, 385787, 411381, 420908, 430232, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 465353, 468817, 471893, 481420, 484884, 486353, 487483, + 490947, 494351, 495592, 496867, 500271, 509798, 513262, 516338, + 525865, 525865, 525865, 525865, 525865, 525865, 525865, 525865, + 525865, 525865, 525865, 525865, 525865, 525865, 525865, 525865, + 525865, 529329, 529329, 530429, 533893, 535362, 535362, 535856, + 537254, 538495, 538495, 538927, 540121, 543585, 543585, 544647, + 548008, 557535, 560999, 564075, 573602, 577066, 578464, 579550, + 582911, 586315, 587509, 588730, 592037, 601564, 604925, 607915, + 617224, 642818, 652345, 661669, 687263, 687263, 687263, 687263, + 687263, 696649, 700055, 703471, 712857, 738451, 747978, 757302, + 782896, 792423, 795887, 798963, 808490, 811954, 813352, 814438, + 817799, 821203, 822397, 823618, 826925, 836452, 839813, 842803, + 852112, 860140, 863604, 866542, 874570, 874570, 874570, 874570, + 874570, 877976, 879374, 880571, 883879, 891907, 895268, 898135, + 906022, 931616, 941143, 950467, 976061, 976061, 976061, 976061, + 976061, 985447, 988755, 992071, 1001248, 1026842, 1036151, 1045277, + 1070464, 1079991, 1083455, 1086531, 1096058, 1099522, 1100991, 1102121, + 1105585, 1108989, 1110230, 1111505, 1114909, 1124436, 1127900, 1130976, + 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, + 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, 1140503, + 1140503, 1143909, 1145378, 1146483, 1149889, 1151358, 1151358, 1151799, + 1153197, 1154413, 1154907, 1155340, 1156513, 1159919, 1161317, 1162382, + 1165690, 1175217, 1178681, 1181757, 1191284, 1194748, 1196146, 1197232, + 1200593, 1203997, 1205191, 1206412, 1209719, 1219246, 1222607, 1225597, + 1234906, 1238370, 1239839, 1240969, 1244433, 1245902, 1245902, 1246396, + 1247794, 1248894, 1249335, 1249722, 1250784, 1254248, 1255646, 1256732, + 1260093, 1261562, 1261562, 1262056, 1263454, 1263948, 1264079, 1264224, + 1264616, 1265057, 1265057, 1265188, 1265542, 1266940, 1266940, 1267332, + 1268494, 1269735, 1270229, 1270607, 1271801, 1272295, 1272295, 1272425, + 1272817, 1273249, 1273380, 1273498, 1273848, 1275042, 1275434, 1275746, + 1276762, 1280226, 1281624, 1282710, 1286071, 1287469, 1287469, 1287861, + 1289023, 1290085, 1290439, 1290755, 1291667, 1295028, 1296190, 1297116, + 1300068, 1303532, 1303532, 1304632, 1308096, 1309565, 1309565, 1310059, + 1311457, 1312698, 1312698, 1313130, 1314324, 1317788, 1317788, 1318850, + 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, + 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, 1322211, + 1322211, 1323680, 1323680, 1324121, 1325519, 1326013, 1326144, 1326289, + 1326681, 1327175, 1327175, 1327306, 1327698, 1329096, 1329096, 1329450, + 1330612, 1334076, 1334076, 1335138, 1338499, 1339897, 1339897, 1340289, + 1341451, 1342645, 1342645, 1342995, 1344011, 1347372, 1347372, 1348284, + 1351236, 1360763, 1364227, 1367303, 1376830, 1380294, 1381692, 1382778, + 1386139, 1389543, 1390737, 1391958, 1395265, 1404792, 1408153, 1411143, + 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, + 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, 1420452, + 1420452, 1423858, 1425256, 1426321, 1429629, 1431027, 1431027, 1431381, + 1432543, 1433716, 1434108, 1434458, 1435461, 1438769, 1439931, 1440844, + 1443758, 1453285, 1456646, 1459636, 1468945, 1472306, 1473468, 1474394, + 1477346, 1480653, 1481669, 1482700, 1485614, 1494923, 1497875, 1500519, + 1508920, 1518447, 1521911, 1524987, 1534514, 1537978, 1539447, 1540577, + 1544041, 1547445, 1548686, 1549961, 1553365, 1562892, 1566356, 1569432, + 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, + 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, 1578959, + 1578959, 1582365, 1583834, 1584939, 1588345, 1589814, 1589814, 1590255, + 1591653, 1592869, 1593363, 1593796, 1594969, 1598375, 1599773, 1600838, + 1604146, 1613673, 1617137, 1620213, 1629740, 1633204, 1634602, 1635688, + 1639049, 1642453, 1643647, 1644868, 1648175, 1657702, 1661063, 1664053, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1676826, 1678295, 1679425, 1682889, 1684358, 1684358, 1684852, + 1686250, 1687350, 1687791, 1688178, 1689240, 1692704, 1694102, 1695188, + 1698549, 1700018, 1700018, 1700512, 1701910, 1702404, 1702535, 1702680, + 1703072, 1703513, 1703513, 1703644, 1703998, 1705396, 1705396, 1705788, + 1706950, 1708191, 1708685, 1709063, 1710257, 1710751, 1710751, 1710881, + 1711273, 1711705, 1711836, 1711954, 1712304, 1713498, 1713890, 1714202, + 1715218, 1718682, 1720080, 1721166, 1724527, 1725925, 1725925, 1726317, + 1727479, 1728541, 1728895, 1729211, 1730123, 1733484, 1734646, 1735572, + 1738524, 1748051, 1751515, 1754591, 1764118, 1767582, 1768980, 1770066, + 1773427, 1776831, 1778025, 1779246, 1782553, 1792080, 1795441, 1798431, + 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, + 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, + 1807740, 1811146, 1812544, 1813609, 1816917, 1818315, 1818315, 1818669, + 1819831, 1821004, 1821396, 1821746, 1822749, 1826057, 1827219, 1828132, + 1831046, 1840573, 1843934, 1846924, 1856233, 1859594, 1860756, 1861682, + 1864634, 1867941, 1868957, 1869988, 1872902, 1882211, 1885163, 1887807, + 1896208, 1921802, 1931329, 1940653, 1966247, 1966247, 1966247, 1966247, + 1966247, 1975633, 1979039, 1982455, 1991841, 2017435, 2026962, 2036286, + 2061880, 2071407, 2074871, 2077947, 2087474, 2090938, 2092336, 2093422, + 2096783, 2100187, 2101381, 2102602, 2105909, 2115436, 2118797, 2121787, + 2131096, 2139124, 2142588, 2145526, 2153554, 2153554, 2153554, 2153554, + 2153554, 2156960, 2158358, 2159555, 2162863, 2170891, 2174252, 2177119, + 2185006, 2210600, 2220127, 2229451, 2255045, 2255045, 2255045, 2255045, + 2255045, 2264431, 2267739, 2271055, 2280232, 2305826, 2315135, 2324261, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, 2349448, + 2349448, 2358975, 2362439, 2365515, 2375042, 2378506, 2379904, 2380990, + 2384351, 2387755, 2388949, 2390170, 2393477, 2403004, 2406365, 2409355, + 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, + 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, 2418664, + 2418664, 2422128, 2422128, 2423190, 2426551, 2427949, 2427949, 2428341, + 2429503, 2430697, 2430697, 2431047, 2432063, 2435424, 2435424, 2436336, + 2439288, 2448815, 2452176, 2455166, 2464475, 2467836, 2468998, 2469924, + 2472876, 2476183, 2477199, 2478230, 2481144, 2490453, 2493405, 2496049, + 2504450, 2530044, 2539571, 2548895, 2574489, 2574489, 2574489, 2574489, + 2574489, 2583875, 2587183, 2590499, 2599676, 2625270, 2634579, 2643705, + 2668892, 2678419, 2681780, 2684770, 2694079, 2697440, 2698602, 2699528, + 2702480, 2705787, 2706803, 2707834, 2710748, 2720057, 2723009, 2725653, + 2734054, 2742082, 2745443, 2748310, 2756197, 2756197, 2756197, 2756197, + 2756197, 2759505, 2760667, 2761684, 2764598, 2772485, 2775437, 2777997, + 2785222, 2810816, 2820125, 2829251, 2854438, 2854438, 2854438, 2854438, + 2854438, 2863615, 2866529, 2869447, 2877744, 2902931, 2911332, 2919600, +/// --------------------------------- 0x1 --------------------------------- + 0, 25594, 35121, 44445, 70039, 70039, 70039, 70039, + 70039, 79425, 82831, 86247, 95633, 121227, 130754, 140078, + 165672, 165672, 165672, 165672, 165672, 165672, 165672, 165672, + 165672, 165672, 165672, 165672, 165672, 165672, 165672, 165672, + 165672, 175199, 178663, 181739, 191266, 191266, 191266, 191266, + 191266, 194672, 196141, 197246, 200652, 210179, 213643, 216719, + 226246, 251840, 261367, 270691, 296285, 296285, 296285, 296285, + 296285, 305671, 309077, 312493, 321879, 347473, 357000, 366324, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 391918, 391918, 391918, 391918, 391918, 391918, 391918, + 391918, 401445, 404909, 407985, 417512, 420976, 422445, 423575, + 427039, 430443, 431684, 432959, 436363, 445890, 449354, 452430, + 461957, 461957, 461957, 461957, 461957, 461957, 461957, 461957, + 461957, 461957, 461957, 461957, 461957, 461957, 461957, 461957, + 461957, 465421, 466890, 468020, 471484, 472953, 472953, 473447, + 474845, 475945, 476386, 476773, 477835, 481299, 482697, 483783, + 487144, 496671, 500135, 503211, 512738, 516202, 517600, 518686, + 522047, 525451, 526645, 527866, 531173, 540700, 544061, 547051, + 556360, 581954, 591481, 600805, 626399, 626399, 626399, 626399, + 626399, 635785, 639191, 642607, 651993, 677587, 687114, 696438, + 722032, 722032, 722032, 722032, 722032, 722032, 722032, 722032, + 722032, 722032, 722032, 722032, 722032, 722032, 722032, 722032, + 722032, 731559, 735023, 738099, 747626, 747626, 747626, 747626, + 747626, 751032, 752430, 753495, 756803, 766330, 769691, 772681, + 781990, 807584, 817111, 826435, 852029, 852029, 852029, 852029, + 852029, 861415, 864723, 868039, 877216, 902810, 912119, 921245, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 946432, 946432, 946432, 946432, 946432, 946432, 946432, + 946432, 955959, 959423, 962499, 972026, 975490, 976959, 978089, + 981553, 984957, 986198, 987473, 990877, 1000404, 1003868, 1006944, + 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, + 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, 1016471, + 1016471, 1019877, 1021346, 1022451, 1025857, 1027326, 1027326, 1027767, + 1029165, 1030381, 1030875, 1031308, 1032481, 1035887, 1037285, 1038350, + 1041658, 1051185, 1054649, 1057725, 1067252, 1070716, 1072114, 1073200, + 1076561, 1079965, 1081159, 1082380, 1085687, 1095214, 1098575, 1101565, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, 1110874, + 1110874, 1114338, 1115807, 1116937, 1120401, 1121870, 1121870, 1122364, + 1123762, 1124862, 1125303, 1125690, 1126752, 1130216, 1131614, 1132700, + 1136061, 1137530, 1137530, 1138024, 1139422, 1139916, 1140047, 1140192, + 1140584, 1141025, 1141025, 1141156, 1141510, 1142908, 1142908, 1143300, + 1144462, 1145703, 1146197, 1146575, 1147769, 1148263, 1148263, 1148393, + 1148785, 1149217, 1149348, 1149466, 1149816, 1151010, 1151402, 1151714, + 1152730, 1156194, 1157592, 1158678, 1162039, 1163437, 1163437, 1163829, + 1164991, 1166053, 1166407, 1166723, 1167635, 1170996, 1172158, 1173084, + 1176036, 1185563, 1189027, 1192103, 1201630, 1205094, 1206492, 1207578, + 1210939, 1214343, 1215537, 1216758, 1220065, 1229592, 1232953, 1235943, + 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, + 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, 1245252, + 1245252, 1248658, 1250056, 1251121, 1254429, 1255827, 1255827, 1256181, + 1257343, 1258516, 1258908, 1259258, 1260261, 1263569, 1264731, 1265644, + 1268558, 1278085, 1281446, 1284436, 1293745, 1297106, 1298268, 1299194, + 1302146, 1305453, 1306469, 1307500, 1310414, 1319723, 1322675, 1325319, + 1333720, 1359314, 1368841, 1378165, 1403759, 1403759, 1403759, 1403759, + 1403759, 1413145, 1416551, 1419967, 1429353, 1454947, 1464474, 1473798, + 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, + 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, 1499392, + 1499392, 1508919, 1512383, 1515459, 1524986, 1524986, 1524986, 1524986, + 1524986, 1528392, 1529790, 1530855, 1534163, 1543690, 1547051, 1550041, + 1559350, 1584944, 1594471, 1603795, 1629389, 1629389, 1629389, 1629389, + 1629389, 1638775, 1642083, 1645399, 1654576, 1680170, 1689479, 1698605, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, 1723792, + 1723792, 1733319, 1736783, 1739859, 1749386, 1752850, 1754248, 1755334, + 1758695, 1762099, 1763293, 1764514, 1767821, 1777348, 1780709, 1783699, + 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, + 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, 1793008, + 1793008, 1796472, 1797870, 1798956, 1802317, 1803715, 1803715, 1804107, + 1805269, 1806331, 1806685, 1807001, 1807913, 1811274, 1812436, 1813362, + 1816314, 1825841, 1829202, 1832192, 1841501, 1844862, 1846024, 1846950, + 1849902, 1853209, 1854225, 1855256, 1858170, 1867479, 1870431, 1873075, + 1881476, 1907070, 1916597, 1925921, 1951515, 1951515, 1951515, 1951515, + 1951515, 1960901, 1964209, 1967525, 1976702, 2002296, 2011605, 2020731, + 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, + 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, 2045918, + 2045918, 2055445, 2058806, 2061796, 2071105, 2071105, 2071105, 2071105, + 2071105, 2074413, 2075575, 2076488, 2079402, 2088711, 2091663, 2094307, + 2102708, 2128302, 2137611, 2146737, 2171924, 2171924, 2171924, 2171924, + 2171924, 2181101, 2184015, 2186933, 2195230, 2220417, 2228818, 2237086, +/// --------------------------------- 0x2 --------------------------------- + 0, 25594, 35121, 44445, 70039, 70039, 70039, 70039, + 70039, 79566, 79566, 82970, 92497, 118091, 127618, 136942, + 162536, 172063, 175527, 178603, 188130, 191594, 193063, 194193, + 197657, 201061, 202302, 203577, 206981, 216508, 219972, 223048, + 232575, 242102, 245566, 248642, 258169, 258169, 258169, 258169, + 258169, 261633, 263102, 264232, 267696, 277223, 280687, 283763, + 293290, 318884, 328411, 337735, 363329, 363329, 363329, 363329, + 363329, 372856, 372856, 376260, 385787, 411381, 420908, 430232, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 455826, 455826, 455826, 455826, 455826, 455826, 455826, + 455826, 465353, 468817, 471893, 481420, 484884, 486353, 487483, + 490947, 494351, 495592, 496867, 500271, 509798, 513262, 516338, + 525865, 525865, 525865, 525865, 525865, 525865, 525865, 525865, + 525865, 525865, 525865, 525865, 525865, 525865, 525865, 525865, + 525865, 529329, 530798, 531928, 535392, 536861, 536861, 537355, + 538753, 539853, 540294, 540681, 541743, 545207, 546605, 547691, + 551052, 560579, 564043, 567119, 576646, 580110, 581508, 582594, + 585955, 589359, 590553, 591774, 595081, 604608, 607969, 610959, + 620268, 645862, 655389, 664713, 690307, 690307, 690307, 690307, + 690307, 699834, 699834, 703238, 712765, 738359, 747886, 757210, + 782804, 792331, 795795, 798871, 808398, 811862, 813260, 814346, + 817707, 821111, 822305, 823526, 826833, 836360, 839721, 842711, + 852020, 861547, 865011, 868087, 877614, 877614, 877614, 877614, + 877614, 881078, 882476, 883562, 886923, 896450, 899811, 902801, + 912110, 937704, 947231, 956555, 982149, 982149, 982149, 982149, + 982149, 991676, 991676, 994983, 1004292, 1029886, 1039195, 1048321, + 1073508, 1083035, 1086499, 1089575, 1099102, 1102566, 1104035, 1105165, + 1108629, 1112033, 1113274, 1114549, 1117953, 1127480, 1130944, 1134020, + 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, + 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, 1143547, + 1143547, 1147011, 1148480, 1149610, 1153074, 1153074, 1153074, 1153074, + 1153074, 1154315, 1154809, 1155187, 1156381, 1159845, 1161243, 1162329, + 1165690, 1175217, 1178681, 1181757, 1191284, 1194748, 1196146, 1197232, + 1200593, 1203997, 1205191, 1206412, 1209719, 1219246, 1222607, 1225597, + 1234906, 1238370, 1239839, 1240969, 1244433, 1245902, 1245902, 1246396, + 1247794, 1248894, 1249335, 1249722, 1250784, 1254248, 1255646, 1256732, + 1260093, 1261562, 1261562, 1262056, 1263454, 1263948, 1264079, 1264224, + 1264616, 1265057, 1265057, 1265188, 1265542, 1266940, 1266940, 1267332, + 1268494, 1269735, 1270229, 1270607, 1271801, 1272295, 1272295, 1272425, + 1272817, 1273249, 1273380, 1273498, 1273848, 1275042, 1275434, 1275746, + 1276762, 1280226, 1281624, 1282710, 1286071, 1287469, 1287469, 1287861, + 1289023, 1290085, 1290439, 1290755, 1291667, 1295028, 1296190, 1297116, + 1300068, 1303532, 1305001, 1306131, 1309595, 1311064, 1311064, 1311558, + 1312956, 1314056, 1314497, 1314884, 1315946, 1319410, 1320808, 1321894, + 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, + 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, 1325255, + 1325255, 1326724, 1326724, 1327218, 1328616, 1329110, 1329241, 1329386, + 1329778, 1330219, 1330219, 1330350, 1330704, 1332102, 1332102, 1332494, + 1333656, 1337120, 1338518, 1339604, 1342965, 1344363, 1344363, 1344755, + 1345917, 1346979, 1347333, 1347649, 1348561, 1351922, 1353084, 1354010, + 1356962, 1366489, 1369953, 1373029, 1382556, 1386020, 1387418, 1388504, + 1391865, 1395269, 1396463, 1397684, 1400991, 1410518, 1413879, 1416869, + 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, + 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, 1426178, + 1426178, 1429642, 1431040, 1432126, 1435487, 1435487, 1435487, 1435487, + 1435487, 1436681, 1437073, 1437385, 1438401, 1441762, 1442924, 1443850, + 1446802, 1456329, 1459690, 1462680, 1471989, 1475350, 1476512, 1477438, + 1480390, 1483697, 1484713, 1485744, 1488658, 1497967, 1500919, 1503563, + 1511964, 1521491, 1524955, 1528031, 1537558, 1541022, 1542491, 1543621, + 1547085, 1550489, 1551730, 1553005, 1556409, 1565936, 1569400, 1572476, + 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, + 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, 1582003, + 1582003, 1585467, 1586936, 1588066, 1591530, 1591530, 1591530, 1591530, + 1591530, 1592771, 1593265, 1593643, 1594837, 1598301, 1599699, 1600785, + 1604146, 1613673, 1617137, 1620213, 1629740, 1633204, 1634602, 1635688, + 1639049, 1642453, 1643647, 1644868, 1648175, 1657702, 1661063, 1664053, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, 1673362, + 1673362, 1676826, 1678295, 1679425, 1682889, 1684358, 1684358, 1684852, + 1686250, 1687350, 1687791, 1688178, 1689240, 1692704, 1694102, 1695188, + 1698549, 1700018, 1700018, 1700512, 1701910, 1702404, 1702535, 1702680, + 1703072, 1703513, 1703513, 1703644, 1703998, 1705396, 1705396, 1705788, + 1706950, 1708191, 1708685, 1709063, 1710257, 1710751, 1710751, 1710881, + 1711273, 1711705, 1711836, 1711954, 1712304, 1713498, 1713890, 1714202, + 1715218, 1718682, 1720080, 1721166, 1724527, 1725925, 1725925, 1726317, + 1727479, 1728541, 1728895, 1729211, 1730123, 1733484, 1734646, 1735572, + 1738524, 1748051, 1751515, 1754591, 1764118, 1767582, 1768980, 1770066, + 1773427, 1776831, 1778025, 1779246, 1782553, 1792080, 1795441, 1798431, + 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, + 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, 1807740, + 1807740, 1811204, 1812602, 1813688, 1817049, 1817049, 1817049, 1817049, + 1817049, 1818243, 1818635, 1818947, 1819963, 1823324, 1824486, 1825412, + 1828364, 1837891, 1841252, 1844242, 1853551, 1856912, 1858074, 1859000, + 1861952, 1865259, 1866275, 1867306, 1870220, 1879529, 1882481, 1885125, + 1893526, 1919120, 1928647, 1937971, 1963565, 1963565, 1963565, 1963565, + 1963565, 1973092, 1973092, 1976496, 1986023, 2011617, 2021144, 2030468, + 2056062, 2065589, 2069053, 2072129, 2081656, 2085120, 2086518, 2087604, + 2090965, 2094369, 2095563, 2096784, 2100091, 2109618, 2112979, 2115969, + 2125278, 2134805, 2138269, 2141345, 2150872, 2150872, 2150872, 2150872, + 2150872, 2154336, 2155734, 2156820, 2160181, 2169708, 2173069, 2176059, + 2185368, 2210962, 2220489, 2229813, 2255407, 2255407, 2255407, 2255407, + 2255407, 2264934, 2264934, 2268241, 2277550, 2303144, 2312453, 2321579, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, 2346766, + 2346766, 2356293, 2359757, 2362833, 2372360, 2375824, 2377222, 2378308, + 2381669, 2385073, 2386267, 2387488, 2390795, 2400322, 2403683, 2406673, + 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, + 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, 2415982, + 2415982, 2419446, 2420844, 2421930, 2425291, 2426689, 2426689, 2427081, + 2428243, 2429305, 2429659, 2429975, 2430887, 2434248, 2435410, 2436336, + 2439288, 2448815, 2452176, 2455166, 2464475, 2467836, 2468998, 2469924, + 2472876, 2476183, 2477199, 2478230, 2481144, 2490453, 2493405, 2496049, + 2504450, 2530044, 2539571, 2548895, 2574489, 2574489, 2574489, 2574489, + 2574489, 2584016, 2584016, 2587323, 2596632, 2622226, 2631535, 2640661, + 2665848, 2675375, 2678736, 2681726, 2691035, 2694396, 2695558, 2696484, + 2699436, 2702743, 2703759, 2704790, 2707704, 2717013, 2719965, 2722609, + 2731010, 2740537, 2743898, 2746888, 2756197, 2756197, 2756197, 2756197, + 2756197, 2759558, 2760720, 2761646, 2764598, 2773907, 2776859, 2779503, + 2787904, 2813498, 2822807, 2831933, 2857120, 2857120, 2857120, 2857120, + 2857120, 2866429, 2866429, 2869343, 2877744, 2902931, 2911332, 2919600, +/// --------------------------------- 0x3 --------------------------------- + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/// --------------------------------- 0x4 --------------------------------- + 0, 22460, 31987, 40384, 62844, 62844, 62844, 62844, + 62844, 72371, 72371, 75835, 85362, 107822, 117349, 125746, + 148206, 157733, 157733, 161139, 170666, 174130, 175599, 176729, + 180193, 183657, 183657, 185126, 188590, 198117, 198117, 201523, + 211050, 220577, 220577, 223983, 233510, 233510, 233510, 233510, + 233510, 236974, 238443, 239573, 243037, 252564, 252564, 255970, + 265497, 287957, 297484, 305881, 328341, 328341, 328341, 328341, + 328341, 337868, 337868, 341332, 350859, 373319, 382846, 391243, + 413703, 423230, 423230, 426636, 436163, 439627, 441096, 442226, + 445690, 449154, 449154, 450623, 454087, 463614, 463614, 467020, + 476547, 476547, 476547, 476547, 476547, 476547, 476547, 476547, + 476547, 476547, 476547, 476547, 476547, 476547, 476547, 476547, + 476547, 480011, 481480, 482610, 486074, 486074, 486074, 486074, + 486074, 487543, 487543, 488037, 489435, 492899, 494297, 495383, + 498744, 508271, 508271, 511677, 521204, 524668, 526066, 527152, + 530513, 533977, 533977, 535375, 538736, 548263, 548263, 551571, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 560880, 560880, 560880, 560880, 560880, 560880, 560880, + 560880, 583340, 592867, 601264, 623724, 623724, 623724, 623724, + 623724, 633251, 633251, 636715, 646242, 668702, 678229, 686626, + 709086, 718613, 718613, 722019, 731546, 735010, 736408, 737494, + 740855, 744319, 744319, 745717, 749078, 758605, 758605, 761913, + 771222, 780749, 780749, 784155, 793682, 793682, 793682, 793682, + 793682, 797146, 798544, 799630, 802991, 812518, 812518, 815826, + 825135, 847595, 857122, 865519, 887979, 887979, 887979, 887979, + 887979, 897506, 897506, 900867, 910176, 932636, 941945, 950168, + 972312, 981839, 981839, 985245, 994772, 998236, 999705, 1000835, + 1004299, 1007763, 1007763, 1009232, 1012696, 1022223, 1022223, 1025629, + 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, + 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, 1035156, + 1035156, 1038620, 1040089, 1041219, 1044683, 1044683, 1044683, 1044683, + 1044683, 1046152, 1046152, 1046646, 1048044, 1051508, 1052906, 1053992, + 1057353, 1066880, 1066880, 1070286, 1079813, 1083277, 1084675, 1085761, + 1089122, 1092586, 1092586, 1093984, 1097345, 1106872, 1106872, 1110180, + 1119489, 1122953, 1124422, 1125552, 1129016, 1129016, 1129016, 1129016, + 1129016, 1130485, 1130485, 1130926, 1132324, 1135788, 1137186, 1138272, + 1141633, 1143102, 1143102, 1143596, 1144994, 1145488, 1145619, 1145764, + 1146156, 1146597, 1146597, 1146728, 1147082, 1148480, 1148480, 1148872, + 1150034, 1151503, 1151503, 1151997, 1153395, 1153395, 1153395, 1153395, + 1153395, 1153889, 1154020, 1154165, 1154557, 1155955, 1155955, 1156347, + 1157509, 1160973, 1162371, 1163457, 1166818, 1166818, 1166818, 1166818, + 1166818, 1168216, 1168216, 1168570, 1169732, 1173093, 1174255, 1175181, + 1178133, 1181597, 1183066, 1184196, 1187660, 1187660, 1187660, 1187660, + 1187660, 1189129, 1189129, 1189570, 1190968, 1194432, 1195830, 1196916, + 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, + 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, 1200277, + 1200277, 1201746, 1201746, 1202240, 1203638, 1204132, 1204263, 1204408, + 1204800, 1205241, 1205241, 1205372, 1205726, 1207124, 1207124, 1207516, + 1208678, 1212142, 1213540, 1214626, 1217987, 1217987, 1217987, 1217987, + 1217987, 1219385, 1219385, 1219739, 1220901, 1224262, 1225424, 1226350, + 1229302, 1238829, 1238829, 1242235, 1251762, 1255226, 1256624, 1257710, + 1261071, 1264535, 1264535, 1265933, 1269294, 1278821, 1278821, 1282129, + 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, + 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, 1291438, + 1291438, 1294902, 1296300, 1297386, 1300747, 1300747, 1300747, 1300747, + 1300747, 1302145, 1302145, 1302537, 1303699, 1307060, 1308222, 1309148, + 1312100, 1321627, 1321627, 1324935, 1334244, 1337605, 1338767, 1339693, + 1342645, 1346006, 1346006, 1347168, 1350120, 1359429, 1359429, 1362343, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, 1370744, + 1370744, 1393204, 1402731, 1411128, 1433588, 1433588, 1433588, 1433588, + 1433588, 1443115, 1443115, 1446579, 1456106, 1478566, 1488093, 1496490, + 1518950, 1528477, 1528477, 1531883, 1541410, 1544874, 1546272, 1547358, + 1550719, 1554183, 1554183, 1555581, 1558942, 1568469, 1568469, 1571777, + 1581086, 1590613, 1590613, 1594019, 1603546, 1603546, 1603546, 1603546, + 1603546, 1607010, 1608408, 1609494, 1612855, 1622382, 1622382, 1625690, + 1634999, 1657459, 1666986, 1675383, 1697843, 1697843, 1697843, 1697843, + 1697843, 1707370, 1707370, 1710731, 1720040, 1742500, 1751809, 1760032, + 1782176, 1791703, 1791703, 1795109, 1804636, 1808100, 1809498, 1810584, + 1813945, 1817409, 1817409, 1818807, 1822168, 1831695, 1831695, 1835003, + 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, + 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, 1844312, + 1844312, 1847776, 1849174, 1850260, 1853621, 1853621, 1853621, 1853621, + 1853621, 1855019, 1855019, 1855411, 1856573, 1859934, 1861096, 1862022, + 1864974, 1874501, 1874501, 1877809, 1887118, 1890479, 1891641, 1892567, + 1895519, 1898880, 1898880, 1900042, 1902994, 1912303, 1912303, 1915217, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, 1923618, + 1923618, 1946078, 1955605, 1964002, 1986462, 1986462, 1986462, 1986462, + 1986462, 1995989, 1995989, 1999350, 2008659, 2031119, 2040428, 2048651, + 2070795, 2080322, 2080322, 2083630, 2092939, 2096300, 2097462, 2098388, + 2101340, 2104701, 2104701, 2105863, 2108815, 2118124, 2118124, 2121038, + 2129439, 2138966, 2138966, 2142274, 2151583, 2151583, 2151583, 2151583, + 2151583, 2154944, 2156106, 2157032, 2159984, 2169293, 2169293, 2172207, + 2180608, 2203068, 2212377, 2220600, 2242744, 2242744, 2242744, 2242744, + 2242744, 2252053, 2252053, 2255005, 2263406, 2285550, 2293951, 2301426, +/// --------------------------------- 0x5 --------------------------------- + 0, 19802, 19802, 28199, 48001, 48001, 48001, 48001, + 48001, 56170, 56170, 59634, 67803, 87605, 87605, 96002, + 115804, 123973, 123973, 127437, 135606, 135606, 135606, 135606, + 135606, 139070, 139070, 140539, 144003, 152172, 152172, 155636, + 163805, 163805, 163805, 163805, 163805, 163805, 163805, 163805, + 163805, 163805, 163805, 163805, 163805, 163805, 163805, 163805, + 163805, 183607, 183607, 192004, 211806, 211806, 211806, 211806, + 211806, 219975, 219975, 223439, 231608, 251410, 251410, 259807, + 279609, 287778, 287778, 291242, 299411, 299411, 299411, 299411, + 299411, 302875, 302875, 304344, 307808, 315977, 315977, 319441, + 327610, 327610, 327610, 327610, 327610, 327610, 327610, 327610, + 327610, 327610, 327610, 327610, 327610, 327610, 327610, 327610, + 327610, 331074, 331074, 332315, 335779, 335779, 335779, 335779, + 335779, 337248, 337248, 337742, 339140, 342604, 342604, 343798, + 347159, 355328, 355328, 358792, 366961, 366961, 366961, 366961, + 366961, 370425, 370425, 371823, 375184, 383353, 383353, 386714, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 394733, 394733, 394733, 394733, 394733, 394733, 394733, + 394733, 414535, 414535, 422932, 442734, 442734, 442734, 442734, + 442734, 450903, 450903, 454367, 462536, 482338, 482338, 490735, + 510537, 518706, 518706, 522170, 530339, 530339, 530339, 530339, + 530339, 533803, 533803, 535201, 538562, 546731, 546731, 550092, + 558111, 558111, 558111, 558111, 558111, 558111, 558111, 558111, + 558111, 558111, 558111, 558111, 558111, 558111, 558111, 558111, + 558111, 577913, 577913, 586310, 606112, 606112, 606112, 606112, + 606112, 614281, 614281, 617642, 625661, 645463, 645463, 653686, + 673235, 681404, 681404, 684868, 693037, 693037, 693037, 693037, + 693037, 696501, 696501, 697970, 701434, 709603, 709603, 713067, + 721236, 721236, 721236, 721236, 721236, 721236, 721236, 721236, + 721236, 721236, 721236, 721236, 721236, 721236, 721236, 721236, + 721236, 724700, 724700, 725941, 729405, 729405, 729405, 729405, + 729405, 730874, 730874, 731368, 732766, 736230, 736230, 737424, + 740785, 748954, 748954, 752418, 760587, 760587, 760587, 760587, + 760587, 764051, 764051, 765449, 768810, 776979, 776979, 780340, + 788359, 791823, 791823, 793064, 796528, 796528, 796528, 796528, + 796528, 797997, 797997, 798491, 799889, 803353, 803353, 804547, + 807908, 807908, 807908, 807908, 807908, 807908, 807908, 807908, + 807908, 807908, 807908, 807908, 807908, 807908, 807908, 807908, + 807908, 809377, 809377, 809871, 811269, 811269, 811269, 811269, + 811269, 811763, 811894, 812039, 812431, 813829, 813829, 814221, + 815383, 818847, 818847, 820041, 823402, 823402, 823402, 823402, + 823402, 824800, 824800, 825192, 826354, 829715, 829715, 830731, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 833683, 833683, 833683, 833683, 833683, 833683, 833683, + 833683, 841852, 841852, 845316, 853485, 853485, 853485, 853485, + 853485, 856949, 856949, 858347, 861708, 869877, 869877, 873238, + 881257, 881257, 881257, 881257, 881257, 881257, 881257, 881257, + 881257, 881257, 881257, 881257, 881257, 881257, 881257, 881257, + 881257, 884721, 884721, 885915, 889276, 889276, 889276, 889276, + 889276, 890674, 890674, 891066, 892228, 895589, 895589, 896605, + 899557, 907726, 907726, 911087, 919106, 919106, 919106, 919106, + 919106, 922467, 922467, 923629, 926581, 934600, 934600, 937552, + 944881, 953050, 953050, 956514, 964683, 964683, 964683, 964683, + 964683, 968147, 968147, 969388, 972852, 981021, 981021, 984485, + 992654, 996118, 996118, 997359, 1000823, 1000823, 1000823, 1000823, + 1000823, 1002292, 1002292, 1002786, 1004184, 1007648, 1007648, 1008842, + 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, + 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, 1012203, + 1012203, 1020372, 1020372, 1023836, 1032005, 1032005, 1032005, 1032005, + 1032005, 1035469, 1035469, 1036663, 1040024, 1048193, 1048193, 1051554, + 1059573, 1063037, 1063037, 1064278, 1067742, 1067742, 1067742, 1067742, + 1067742, 1069211, 1069211, 1069705, 1071103, 1074567, 1074567, 1075761, + 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, + 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, 1079122, + 1079122, 1080591, 1080591, 1081085, 1082483, 1082483, 1082483, 1082483, + 1082483, 1082977, 1082977, 1083107, 1083499, 1084897, 1084897, 1085289, + 1086451, 1089915, 1089915, 1091109, 1094470, 1094470, 1094470, 1094470, + 1094470, 1095868, 1095868, 1096260, 1097422, 1100783, 1100783, 1101799, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, 1104751, + 1104751, 1112920, 1112920, 1116384, 1124553, 1124553, 1124553, 1124553, + 1124553, 1128017, 1128017, 1129211, 1132572, 1140741, 1140741, 1144102, + 1152121, 1155585, 1155585, 1156779, 1160140, 1160140, 1160140, 1160140, + 1160140, 1161538, 1161538, 1161930, 1163092, 1166453, 1166453, 1167469, + 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, + 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, 1170421, + 1170421, 1178590, 1178590, 1181951, 1189970, 1189970, 1189970, 1189970, + 1189970, 1193331, 1193331, 1194347, 1197299, 1205318, 1205318, 1208270, + 1215599, 1235401, 1235401, 1243798, 1263600, 1263600, 1263600, 1263600, + 1263600, 1271769, 1271769, 1275233, 1283402, 1303204, 1303204, 1311601, + 1331403, 1339572, 1339572, 1343036, 1351205, 1351205, 1351205, 1351205, + 1351205, 1354669, 1354669, 1356067, 1359428, 1367597, 1367597, 1370958, + 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, + 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, 1378977, + 1378977, 1398779, 1398779, 1407176, 1426978, 1426978, 1426978, 1426978, + 1426978, 1435147, 1435147, 1438508, 1446527, 1466329, 1466329, 1474552, + 1494101, 1502270, 1502270, 1505734, 1513903, 1513903, 1513903, 1513903, + 1513903, 1517367, 1517367, 1518765, 1522126, 1530295, 1530295, 1533656, + 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, + 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, 1541675, + 1541675, 1545139, 1545139, 1546333, 1549694, 1549694, 1549694, 1549694, + 1549694, 1551092, 1551092, 1551484, 1552646, 1556007, 1556007, 1557023, + 1559975, 1568144, 1568144, 1571505, 1579524, 1579524, 1579524, 1579524, + 1579524, 1582885, 1582885, 1584047, 1586999, 1595018, 1595018, 1597970, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, 1605299, + 1605299, 1625101, 1625101, 1633498, 1653300, 1653300, 1653300, 1653300, + 1653300, 1661469, 1661469, 1664830, 1672849, 1692651, 1692651, 1700874, + 1720423, 1728592, 1728592, 1731953, 1739972, 1739972, 1739972, 1739972, + 1739972, 1743333, 1743333, 1744495, 1747447, 1755466, 1755466, 1758418, + 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, + 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, 1765747, + 1765747, 1785549, 1785549, 1793772, 1813321, 1813321, 1813321, 1813321, + 1813321, 1821340, 1821340, 1824292, 1831621, 1851170, 1851170, 1858645, +/// --------------------------------- 0x6 --------------------------------- + 0, 22518, 32045, 40326, 62844, 62844, 62844, 62844, + 62844, 62844, 62844, 62844, 62844, 85362, 94889, 103170, + 125688, 135215, 135215, 138679, 148206, 151612, 153081, 154327, + 157733, 161139, 161139, 162608, 166014, 175541, 175541, 179005, + 188532, 188532, 188532, 188532, 188532, 188532, 188532, 188532, + 188532, 188532, 188532, 188532, 188532, 188532, 188532, 188532, + 188532, 211050, 220577, 228858, 251376, 251376, 251376, 251376, + 251376, 251376, 251376, 251376, 251376, 273894, 283421, 291702, + 314220, 323747, 323747, 327211, 336738, 340144, 341613, 342859, + 346265, 349671, 349671, 351140, 354546, 364073, 364073, 367537, + 377064, 377064, 377064, 377064, 377064, 377064, 377064, 377064, + 377064, 377064, 377064, 377064, 377064, 377064, 377064, 377064, + 377064, 377064, 377064, 377064, 377064, 377064, 377064, 377064, + 377064, 377064, 377064, 377064, 377064, 377064, 377064, 377064, + 377064, 386591, 386591, 390055, 399582, 402988, 404386, 405583, + 408891, 412297, 412297, 413695, 417003, 426530, 426530, 429891, + 439200, 448727, 448727, 452133, 461660, 461660, 461660, 461660, + 461660, 461660, 461660, 461660, 461660, 471187, 471187, 474593, + 484120, 487526, 488995, 490241, 493647, 493647, 493647, 493647, + 493647, 495116, 495116, 495557, 496955, 500361, 501759, 502956, + 506264, 506264, 506264, 506264, 506264, 506264, 506264, 506264, + 506264, 506264, 506264, 506264, 506264, 506264, 506264, 506264, + 506264, 515791, 515791, 519197, 528724, 528724, 528724, 528724, + 528724, 528724, 528724, 528724, 528724, 538251, 538251, 541559, + 550868, 573386, 582913, 591194, 613712, 613712, 613712, 613712, + 613712, 613712, 613712, 613712, 613712, 636230, 645757, 654038, + 676556, 686083, 686083, 689547, 699074, 702480, 703878, 705075, + 708383, 711789, 711789, 713187, 716495, 726022, 726022, 729383, + 738692, 738692, 738692, 738692, 738692, 738692, 738692, 738692, + 738692, 738692, 738692, 738692, 738692, 738692, 738692, 738692, + 738692, 761210, 770737, 779018, 801536, 801536, 801536, 801536, + 801536, 801536, 801536, 801536, 801536, 824054, 833363, 841475, + 863672, 873199, 873199, 876663, 886190, 889596, 891065, 892311, + 895717, 899123, 899123, 900592, 903998, 913525, 913525, 916989, + 926516, 926516, 926516, 926516, 926516, 926516, 926516, 926516, + 926516, 926516, 926516, 926516, 926516, 926516, 926516, 926516, + 926516, 926516, 926516, 926516, 926516, 926516, 926516, 926516, + 926516, 926516, 926516, 926516, 926516, 926516, 926516, 926516, + 926516, 936043, 936043, 939507, 949034, 952440, 953838, 955035, + 958343, 961749, 961749, 963147, 966455, 975982, 975982, 979343, + 988652, 992058, 993527, 994773, 998179, 998179, 998179, 998179, + 998179, 999648, 999648, 1000142, 1001540, 1004946, 1006344, 1007541, + 1010849, 1012318, 1012318, 1012759, 1014157, 1014651, 1014782, 1014927, + 1015319, 1015813, 1015813, 1015944, 1016336, 1017734, 1017734, 1018088, + 1019250, 1020719, 1020719, 1021160, 1022558, 1022558, 1022558, 1022558, + 1022558, 1023052, 1023183, 1023328, 1023720, 1025118, 1025118, 1025472, + 1026634, 1030040, 1031438, 1032635, 1035943, 1035943, 1035943, 1035943, + 1035943, 1037341, 1037341, 1037733, 1038895, 1042203, 1043365, 1044382, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, 1047296, + 1047296, 1056823, 1056823, 1060287, 1069814, 1073220, 1074618, 1075815, + 1079123, 1082529, 1082529, 1083927, 1087235, 1096762, 1096762, 1100123, + 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, + 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, + 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, + 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, 1109432, + 1109432, 1118959, 1118959, 1122320, 1131629, 1134937, 1136099, 1137116, + 1140030, 1143338, 1143338, 1144500, 1147414, 1156723, 1156723, 1159675, + 1168076, 1177603, 1177603, 1181067, 1190594, 1190594, 1190594, 1190594, + 1190594, 1190594, 1190594, 1190594, 1190594, 1200121, 1200121, 1203585, + 1213112, 1216518, 1217987, 1219233, 1222639, 1222639, 1222639, 1222639, + 1222639, 1224108, 1224108, 1224602, 1226000, 1229406, 1230804, 1232001, + 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, + 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, 1235309, + 1235309, 1244836, 1244836, 1248300, 1257827, 1257827, 1257827, 1257827, + 1257827, 1257827, 1257827, 1257827, 1257827, 1267354, 1267354, 1270715, + 1280024, 1283430, 1284899, 1286145, 1289551, 1289551, 1289551, 1289551, + 1289551, 1291020, 1291020, 1291514, 1292912, 1296318, 1297716, 1298913, + 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, + 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, + 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, + 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, 1302221, + 1302221, 1305627, 1307025, 1308222, 1311530, 1311530, 1311530, 1311530, + 1311530, 1312928, 1312928, 1313320, 1314482, 1317790, 1318952, 1319969, + 1322883, 1326289, 1327758, 1329004, 1332410, 1332410, 1332410, 1332410, + 1332410, 1332410, 1332410, 1332410, 1332410, 1335816, 1337214, 1338411, + 1341719, 1343188, 1343188, 1343629, 1345027, 1345521, 1345652, 1345797, + 1346189, 1346683, 1346683, 1346814, 1347206, 1348604, 1348604, 1348958, + 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, + 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, 1350120, + 1350120, 1353526, 1354924, 1356121, 1359429, 1359429, 1359429, 1359429, + 1359429, 1359429, 1359429, 1359429, 1359429, 1362737, 1363899, 1364916, + 1367830, 1377357, 1377357, 1380821, 1390348, 1390348, 1390348, 1390348, + 1390348, 1390348, 1390348, 1390348, 1390348, 1399875, 1399875, 1403236, + 1412545, 1415951, 1417349, 1418546, 1421854, 1421854, 1421854, 1421854, + 1421854, 1423252, 1423252, 1423644, 1424806, 1428114, 1429276, 1430293, + 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, + 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, 1433207, + 1433207, 1442734, 1442734, 1446095, 1455404, 1455404, 1455404, 1455404, + 1455404, 1455404, 1455404, 1455404, 1455404, 1464713, 1464713, 1467665, + 1476066, 1498584, 1508111, 1516392, 1538910, 1538910, 1538910, 1538910, + 1538910, 1538910, 1538910, 1538910, 1538910, 1561428, 1570955, 1579236, + 1601754, 1611281, 1611281, 1614745, 1624272, 1627678, 1629076, 1630273, + 1633581, 1636987, 1636987, 1638385, 1641693, 1651220, 1651220, 1654581, + 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, + 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, 1663890, + 1663890, 1686408, 1695935, 1704216, 1726734, 1726734, 1726734, 1726734, + 1726734, 1726734, 1726734, 1726734, 1726734, 1749252, 1758561, 1766673, + 1788870, 1798397, 1798397, 1801861, 1811388, 1814794, 1816192, 1817389, + 1820697, 1824103, 1824103, 1825501, 1828809, 1838336, 1838336, 1841697, + 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, + 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, + 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, + 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, 1851006, + 1851006, 1860533, 1860533, 1863894, 1873203, 1876511, 1877673, 1878690, + 1881604, 1884912, 1884912, 1886074, 1888988, 1898297, 1898297, 1901249, + 1909650, 1919177, 1919177, 1922583, 1932110, 1932110, 1932110, 1932110, + 1932110, 1932110, 1932110, 1932110, 1932110, 1941637, 1941637, 1944945, + 1954254, 1957660, 1959058, 1960255, 1963563, 1963563, 1963563, 1963563, + 1963563, 1964961, 1964961, 1965315, 1966477, 1969785, 1970947, 1971964, + 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, + 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, 1974878, + 1974878, 1984405, 1984405, 1987713, 1997022, 1997022, 1997022, 1997022, + 1997022, 1997022, 1997022, 1997022, 1997022, 2006331, 2006331, 2009245, + 2017646, 2040164, 2049691, 2057972, 2080490, 2080490, 2080490, 2080490, + 2080490, 2080490, 2080490, 2080490, 2080490, 2103008, 2112317, 2120429, + 2142626, 2152153, 2152153, 2155514, 2164823, 2168131, 2169293, 2170310, + 2173224, 2176532, 2176532, 2177694, 2180608, 2189917, 2189917, 2192869, + 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, + 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, 2201270, + 2201270, 2223788, 2233097, 2241209, 2263406, 2263406, 2263406, 2263406, + 2263406, 2263406, 2263406, 2263406, 2263406, 2285603, 2294004, 2301388, +/// --------------------------------- 0x7 --------------------------------- + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/// --------------------------------- 0x8 --------------------------------- + 0, 19802, 28199, 28199, 48001, 48001, 48001, 48001, + 48001, 55288, 58294, 58294, 65581, 85383, 93780, 93780, + 113582, 121979, 124987, 124987, 133384, 136392, 137667, 138773, + 141781, 141781, 141781, 141781, 141781, 150178, 153186, 153186, + 161583, 167599, 170607, 170607, 176623, 176623, 176623, 176623, + 176623, 179173, 180448, 180448, 182998, 189014, 192022, 192022, + 198038, 217840, 226237, 226237, 246039, 246039, 246039, 246039, + 246039, 253326, 256332, 256332, 263619, 283421, 291818, 291818, + 311620, 320017, 323025, 323025, 331422, 334430, 335705, 336811, + 339819, 339819, 339819, 339819, 339819, 348216, 351224, 351224, + 359621, 359621, 359621, 359621, 359621, 359621, 359621, 359621, + 359621, 359621, 359621, 359621, 359621, 359621, 359621, 359621, + 359621, 362627, 363902, 363902, 366908, 368183, 368183, 368615, + 369836, 369836, 369836, 369836, 369836, 372842, 374063, 374063, + 376991, 385388, 388396, 388396, 396793, 399801, 401022, 402087, + 405016, 405016, 405016, 405016, 405016, 413413, 416342, 416342, + 424565, 432962, 432962, 432962, 441359, 441359, 441359, 441359, + 441359, 444365, 444365, 444365, 447371, 455768, 455768, 455768, + 464165, 467173, 468448, 469554, 472562, 472562, 472562, 472562, + 472562, 472562, 472562, 472562, 472562, 475570, 476791, 477856, + 480785, 483793, 483793, 483793, 486801, 486801, 486801, 486801, + 486801, 488076, 488076, 488076, 489297, 492305, 492305, 492305, + 495234, 503631, 503631, 503631, 512028, 512028, 512028, 512028, + 512028, 515034, 515034, 515034, 517962, 526359, 526359, 526359, + 534582, 554384, 562781, 562781, 582583, 582583, 582583, 582583, + 582583, 589870, 592876, 592876, 600163, 619965, 628362, 628362, + 648164, 656561, 659569, 659569, 667966, 670974, 672195, 673260, + 676189, 676189, 676189, 676189, 676189, 684586, 687515, 687515, + 695738, 701754, 704762, 704762, 710778, 710778, 710778, 710778, + 710778, 713328, 714549, 714549, 717045, 723061, 725990, 725990, + 731927, 751729, 760126, 760126, 779928, 779928, 779928, 779928, + 779928, 787215, 790143, 790143, 797298, 817100, 825323, 825323, + 844872, 853269, 856277, 856277, 864674, 867682, 868957, 870063, + 873071, 873071, 873071, 873071, 873071, 881468, 884476, 884476, + 892873, 892873, 892873, 892873, 892873, 892873, 892873, 892873, + 892873, 892873, 892873, 892873, 892873, 892873, 892873, 892873, + 892873, 895879, 897154, 897154, 900160, 901435, 901435, 901867, + 903088, 903088, 903088, 903088, 903088, 906094, 907315, 907315, + 910243, 918640, 921648, 921648, 930045, 933053, 934274, 935339, + 938268, 938268, 938268, 938268, 938268, 946665, 949594, 949594, + 957817, 960825, 962100, 963206, 966214, 967489, 967489, 967922, + 969143, 969143, 969143, 969143, 969143, 972151, 973372, 974437, + 977366, 978641, 978641, 979074, 980295, 980727, 980858, 980976, + 981326, 981758, 981758, 981889, 982239, 983460, 983460, 983810, + 984841, 984841, 984841, 984841, 984841, 984841, 984841, 984841, + 984841, 984841, 984841, 984841, 984841, 984841, 984841, 984841, + 984841, 987849, 989070, 990135, 993064, 994285, 994285, 994635, + 995666, 995666, 995666, 995666, 995666, 998595, 999626, 1000539, + 1003141, 1006149, 1006149, 1006149, 1009157, 1010432, 1010432, 1010865, + 1012086, 1012086, 1012086, 1012086, 1012086, 1015094, 1015094, 1015094, + 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, + 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, 1018023, + 1018023, 1019298, 1019298, 1019298, 1020519, 1020951, 1021082, 1021200, + 1021550, 1021550, 1021550, 1021550, 1021550, 1022771, 1022771, 1022771, + 1023802, 1026810, 1026810, 1026810, 1029739, 1030960, 1030960, 1031310, + 1032341, 1032341, 1032341, 1032341, 1032341, 1035270, 1035270, 1035270, + 1037872, 1046269, 1049277, 1049277, 1057674, 1060682, 1061903, 1062968, + 1065897, 1065897, 1065897, 1065897, 1065897, 1074294, 1077223, 1077223, + 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, + 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, 1085446, + 1085446, 1088452, 1089673, 1089673, 1092601, 1093822, 1093822, 1094172, + 1095203, 1095203, 1095203, 1095203, 1095203, 1098131, 1099162, 1099162, + 1101764, 1110161, 1113090, 1113090, 1121313, 1124242, 1125273, 1126186, + 1128788, 1128788, 1128788, 1128788, 1128788, 1137011, 1139613, 1139613, + 1147088, 1155485, 1158493, 1158493, 1166890, 1166890, 1166890, 1166890, + 1166890, 1169896, 1171171, 1171171, 1174177, 1182574, 1185582, 1185582, + 1193979, 1196987, 1198262, 1199368, 1202376, 1203651, 1203651, 1204084, + 1205305, 1205305, 1205305, 1205305, 1205305, 1208313, 1209534, 1210599, + 1213528, 1216536, 1216536, 1216536, 1219544, 1219544, 1219544, 1219544, + 1219544, 1220819, 1220819, 1220819, 1222040, 1225048, 1225048, 1225048, + 1227977, 1236374, 1239382, 1239382, 1247779, 1247779, 1247779, 1247779, + 1247779, 1250785, 1252006, 1252006, 1254934, 1263331, 1266260, 1266260, + 1274483, 1277491, 1278766, 1279872, 1282880, 1284155, 1284155, 1284588, + 1285809, 1285809, 1285809, 1285809, 1285809, 1288817, 1290038, 1291103, + 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, + 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, 1294032, + 1294032, 1295307, 1295307, 1295739, 1296960, 1297392, 1297523, 1297641, + 1297991, 1297991, 1297991, 1297991, 1297991, 1299212, 1299212, 1299562, + 1300593, 1303601, 1304822, 1305887, 1308816, 1310037, 1310037, 1310387, + 1311418, 1311418, 1311418, 1311418, 1311418, 1314347, 1315378, 1316291, + 1318893, 1321901, 1323176, 1324282, 1327290, 1327290, 1327290, 1327290, + 1327290, 1328565, 1328565, 1328997, 1330218, 1333226, 1334447, 1335512, + 1338441, 1339716, 1339716, 1340149, 1341370, 1341802, 1341933, 1342051, + 1342401, 1342833, 1342833, 1342964, 1343314, 1344535, 1344535, 1344885, + 1345916, 1347191, 1347191, 1347624, 1348845, 1348845, 1348845, 1348845, + 1348845, 1349277, 1349408, 1349526, 1349876, 1351097, 1351097, 1351447, + 1352478, 1355486, 1356707, 1357772, 1360701, 1360701, 1360701, 1360701, + 1360701, 1361922, 1361922, 1362272, 1363303, 1366232, 1367263, 1368176, + 1370778, 1379175, 1382183, 1382183, 1390580, 1390580, 1390580, 1390580, + 1390580, 1393586, 1394807, 1394807, 1397735, 1406132, 1409061, 1409061, + 1417284, 1420292, 1421513, 1422578, 1425507, 1426728, 1426728, 1427078, + 1428109, 1428109, 1428109, 1428109, 1428109, 1431038, 1432069, 1432982, + 1435584, 1438592, 1438592, 1438592, 1441521, 1441521, 1441521, 1441521, + 1441521, 1442742, 1442742, 1442742, 1443773, 1446702, 1446702, 1446702, + 1449304, 1457701, 1460630, 1460630, 1468853, 1468853, 1468853, 1468853, + 1468853, 1471781, 1472812, 1472812, 1475414, 1483637, 1486239, 1486239, + 1493714, 1513516, 1521913, 1521913, 1541715, 1541715, 1541715, 1541715, + 1541715, 1549002, 1552008, 1552008, 1559295, 1579097, 1587494, 1587494, + 1607296, 1615693, 1618701, 1618701, 1627098, 1630106, 1631327, 1632392, + 1635321, 1635321, 1635321, 1635321, 1635321, 1643718, 1646647, 1646647, + 1654870, 1660886, 1663894, 1663894, 1669910, 1669910, 1669910, 1669910, + 1669910, 1672460, 1673681, 1673681, 1676177, 1682193, 1685122, 1685122, + 1691059, 1710861, 1719258, 1719258, 1739060, 1739060, 1739060, 1739060, + 1739060, 1746347, 1749275, 1749275, 1756430, 1776232, 1784455, 1784455, + 1804004, 1812401, 1815409, 1815409, 1823806, 1826814, 1828035, 1829100, + 1832029, 1832029, 1832029, 1832029, 1832029, 1840426, 1843355, 1843355, + 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, + 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, 1851578, + 1851578, 1854584, 1855805, 1855805, 1858733, 1859954, 1859954, 1860304, + 1861335, 1861335, 1861335, 1861335, 1861335, 1864263, 1865294, 1865294, + 1867896, 1876293, 1879222, 1879222, 1887445, 1890374, 1891405, 1892318, + 1894920, 1894920, 1894920, 1894920, 1894920, 1903143, 1905745, 1905745, + 1913220, 1921617, 1921617, 1921617, 1930014, 1930014, 1930014, 1930014, + 1930014, 1933020, 1933020, 1933020, 1935948, 1944345, 1944345, 1944345, + 1952568, 1955576, 1956797, 1957862, 1960791, 1960791, 1960791, 1960791, + 1960791, 1960791, 1960791, 1960791, 1960791, 1963720, 1964751, 1965664, + 1968266, 1971274, 1971274, 1971274, 1974203, 1974203, 1974203, 1974203, + 1974203, 1975424, 1975424, 1975424, 1976455, 1979384, 1979384, 1979384, + 1981986, 1990383, 1990383, 1990383, 1998606, 1998606, 1998606, 1998606, + 1998606, 2001534, 2001534, 2001534, 2004136, 2012359, 2012359, 2012359, + 2019834, 2039636, 2048033, 2048033, 2067835, 2067835, 2067835, 2067835, + 2067835, 2075122, 2078050, 2078050, 2085205, 2105007, 2113230, 2113230, + 2132779, 2141176, 2144105, 2144105, 2152328, 2155257, 2156288, 2157201, + 2159803, 2159803, 2159803, 2159803, 2159803, 2168026, 2170628, 2170628, + 2178103, 2184119, 2187048, 2187048, 2192985, 2192985, 2192985, 2192985, + 2192985, 2195481, 2196512, 2196512, 2198764, 2204701, 2207303, 2207303, + 2212834, 2232636, 2240859, 2240859, 2260408, 2260408, 2260408, 2260408, + 2260408, 2267563, 2270165, 2270165, 2276726, 2296275, 2303750, 2303750, +/// --------------------------------- 0x9 --------------------------------- + 0, 13860, 19601, 25342, 39202, 39202, 39202, 39202, + 39202, 44127, 46097, 48137, 53062, 66922, 72663, 78404, + 92264, 98005, 100383, 100383, 106124, 108502, 109487, 109487, + 111865, 114243, 115228, 115228, 117606, 123347, 125725, 125725, + 131466, 136222, 138600, 140570, 145326, 145326, 145326, 145326, + 145326, 147296, 148281, 149097, 151067, 155823, 158201, 160171, + 164927, 178787, 184528, 190269, 204129, 204129, 204129, 204129, + 204129, 209054, 211024, 213064, 217989, 231849, 237590, 243331, + 257191, 262932, 265310, 265310, 271051, 273429, 274414, 274414, + 276792, 279170, 280155, 280155, 282533, 288274, 290652, 290652, + 296393, 296393, 296393, 296393, 296393, 296393, 296393, 296393, + 296393, 296393, 296393, 296393, 296393, 296393, 296393, 296393, + 296393, 298363, 299348, 299348, 301318, 302303, 302303, 302303, + 303254, 304070, 304457, 304457, 305252, 307222, 308173, 308173, + 310109, 315850, 318228, 318228, 323969, 326347, 327298, 327298, + 329621, 331999, 332950, 332950, 335273, 341014, 343337, 343337, + 348989, 354730, 354730, 357108, 362849, 362849, 362849, 362849, + 362849, 364819, 364819, 365635, 367605, 373346, 373346, 375724, + 381465, 383843, 384828, 384828, 387206, 387206, 387206, 387206, + 387206, 388191, 388578, 388578, 389529, 391907, 392858, 392858, + 395181, 397559, 397559, 398544, 400922, 400922, 400922, 400922, + 400922, 401907, 401907, 402294, 403245, 405623, 405623, 406574, + 408897, 414638, 414638, 417016, 422757, 422757, 422757, 422757, + 422757, 424727, 424727, 425522, 427458, 433199, 433199, 435522, + 441174, 455034, 460775, 466516, 480376, 480376, 480376, 480376, + 480376, 485301, 487271, 489311, 494236, 508096, 513837, 519578, + 533438, 539179, 541557, 541557, 547298, 549676, 550627, 550627, + 552950, 555328, 556279, 556279, 558602, 564343, 566666, 566666, + 572318, 577074, 579452, 581422, 586178, 586178, 586178, 586178, + 586178, 588148, 589099, 589894, 591830, 596586, 598909, 600845, + 605546, 619406, 625147, 630888, 644748, 644748, 644748, 644748, + 644748, 649673, 651609, 653607, 658464, 672324, 677976, 683628, + 697344, 703085, 705463, 705463, 711204, 713582, 714567, 714567, + 716945, 719323, 720308, 720308, 722686, 728427, 730805, 730805, + 736546, 736546, 736546, 736546, 736546, 736546, 736546, 736546, + 736546, 736546, 736546, 736546, 736546, 736546, 736546, 736546, + 736546, 738516, 739501, 739501, 741471, 742456, 742456, 742456, + 743407, 744223, 744610, 744610, 745405, 747375, 748326, 748326, + 750262, 756003, 758381, 758381, 764122, 766500, 767451, 767451, + 769774, 772152, 773103, 773103, 775426, 781167, 783490, 783490, + 789142, 791520, 792505, 792505, 794883, 795868, 795868, 796255, + 797206, 797206, 797206, 797206, 797206, 799584, 800535, 800535, + 802858, 803843, 803843, 804230, 805181, 805568, 805568, 805686, + 806002, 806002, 806002, 806002, 806002, 806953, 806953, 807269, + 808090, 809075, 809462, 809462, 810413, 810800, 810800, 810918, + 811234, 811234, 811234, 811234, 811234, 812185, 812501, 812501, + 813322, 815700, 816651, 816651, 818974, 819925, 819925, 820241, + 821062, 821062, 821062, 821062, 821062, 823385, 824206, 824206, + 826294, 828672, 828672, 828672, 831050, 832035, 832035, 832422, + 833373, 834358, 834358, 834358, 835309, 837687, 837687, 837687, + 840010, 840010, 840010, 840010, 840010, 840010, 840010, 840010, + 840010, 840010, 840010, 840010, 840010, 840010, 840010, 840010, + 840010, 840995, 840995, 840995, 841946, 842333, 842333, 842451, + 842767, 843154, 843154, 843154, 843470, 844421, 844421, 844421, + 845242, 847620, 847620, 847620, 849943, 850894, 850894, 851210, + 852031, 852982, 852982, 852982, 853803, 856126, 856126, 856126, + 858214, 863955, 866333, 866333, 872074, 874452, 875403, 875403, + 877726, 880104, 881055, 881055, 883378, 889119, 891442, 891442, + 897094, 897094, 897094, 897094, 897094, 897094, 897094, 897094, + 897094, 897094, 897094, 897094, 897094, 897094, 897094, 897094, + 897094, 899064, 900015, 900015, 901951, 902902, 902902, 902902, + 903723, 904518, 904834, 904834, 905537, 907473, 908294, 908294, + 910066, 915807, 918130, 918130, 923782, 926105, 926926, 926926, + 929014, 931337, 932158, 932158, 934246, 939898, 941986, 941986, + 947218, 952959, 955337, 955337, 961078, 961078, 961078, 961078, + 961078, 963048, 964033, 964033, 966003, 971744, 974122, 974122, + 979863, 982241, 983226, 983226, 985604, 986589, 986589, 986976, + 987927, 987927, 987927, 987927, 987927, 990305, 991256, 991256, + 993579, 995957, 995957, 995957, 998335, 998335, 998335, 998335, + 998335, 999320, 999320, 999320, 1000271, 1002649, 1002649, 1002649, + 1004972, 1010713, 1013091, 1013091, 1018832, 1018832, 1018832, 1018832, + 1018832, 1020802, 1021753, 1021753, 1023689, 1029430, 1031753, 1031753, + 1037405, 1039783, 1040768, 1040768, 1043146, 1044131, 1044131, 1044518, + 1045469, 1045469, 1045469, 1045469, 1045469, 1047847, 1048798, 1048798, + 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, + 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, 1051121, + 1051121, 1052106, 1052106, 1052106, 1053057, 1053444, 1053444, 1053562, + 1053878, 1053878, 1053878, 1053878, 1053878, 1054829, 1054829, 1054829, + 1055650, 1058028, 1058979, 1058979, 1061302, 1062253, 1062253, 1062569, + 1063390, 1063390, 1063390, 1063390, 1063390, 1065713, 1066534, 1066534, + 1068622, 1071000, 1071985, 1071985, 1074363, 1074363, 1074363, 1074363, + 1074363, 1075348, 1075348, 1075348, 1076299, 1078677, 1079628, 1079628, + 1081951, 1082936, 1082936, 1083323, 1084274, 1084661, 1084661, 1084779, + 1085095, 1085095, 1085095, 1085095, 1085095, 1086046, 1086046, 1086362, + 1087183, 1088168, 1088168, 1088555, 1089506, 1089506, 1089506, 1089506, + 1089506, 1089893, 1089893, 1090011, 1090327, 1091278, 1091278, 1091594, + 1092415, 1094793, 1095744, 1095744, 1098067, 1098067, 1098067, 1098067, + 1098067, 1099018, 1099018, 1099018, 1099839, 1102162, 1102983, 1102983, + 1105071, 1110812, 1113190, 1113190, 1118931, 1118931, 1118931, 1118931, + 1118931, 1120901, 1121852, 1121852, 1123788, 1129529, 1131852, 1131852, + 1137504, 1139882, 1140833, 1140833, 1143156, 1144107, 1144107, 1144423, + 1145244, 1145244, 1145244, 1145244, 1145244, 1147567, 1148388, 1148388, + 1150476, 1152854, 1152854, 1152854, 1155177, 1155177, 1155177, 1155177, + 1155177, 1156128, 1156128, 1156128, 1156949, 1159272, 1159272, 1159272, + 1161360, 1167101, 1169424, 1169424, 1175076, 1175076, 1175076, 1175076, + 1175076, 1177012, 1177833, 1177833, 1179605, 1185257, 1187345, 1187345, + 1192577, 1206437, 1212178, 1217919, 1231779, 1231779, 1231779, 1231779, + 1231779, 1236704, 1238674, 1240714, 1245639, 1259499, 1265240, 1270981, + 1284841, 1290582, 1292960, 1292960, 1298701, 1301079, 1302030, 1302030, + 1304353, 1306731, 1307682, 1307682, 1310005, 1315746, 1318069, 1318069, + 1323721, 1328477, 1330855, 1332825, 1337581, 1337581, 1337581, 1337581, + 1337581, 1339551, 1340502, 1341297, 1343233, 1347989, 1350312, 1352248, + 1356949, 1370809, 1376550, 1382291, 1396151, 1396151, 1396151, 1396151, + 1396151, 1401076, 1403012, 1405010, 1409867, 1423727, 1429379, 1435031, + 1448747, 1454488, 1456866, 1456866, 1462607, 1464985, 1465936, 1465936, + 1468259, 1470637, 1471588, 1471588, 1473911, 1479652, 1481975, 1481975, + 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, + 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, 1487627, + 1487627, 1489597, 1490548, 1490548, 1492484, 1493435, 1493435, 1493435, + 1494256, 1495051, 1495367, 1495367, 1496070, 1498006, 1498827, 1498827, + 1500599, 1506340, 1508663, 1508663, 1514315, 1516638, 1517459, 1517459, + 1519547, 1521870, 1522691, 1522691, 1524779, 1530431, 1532519, 1532519, + 1537751, 1543492, 1543492, 1545870, 1551611, 1551611, 1551611, 1551611, + 1551611, 1553581, 1553581, 1554376, 1556312, 1562053, 1562053, 1564376, + 1570028, 1572406, 1573357, 1573357, 1575680, 1575680, 1575680, 1575680, + 1575680, 1576631, 1576947, 1576947, 1577768, 1580091, 1580912, 1580912, + 1583000, 1585378, 1585378, 1586329, 1588652, 1588652, 1588652, 1588652, + 1588652, 1589603, 1589603, 1589919, 1590740, 1593063, 1593063, 1593884, + 1595972, 1601713, 1601713, 1604036, 1609688, 1609688, 1609688, 1609688, + 1609688, 1611624, 1611624, 1612327, 1614099, 1619751, 1619751, 1621839, + 1627071, 1640931, 1646672, 1652413, 1666273, 1666273, 1666273, 1666273, + 1666273, 1671198, 1673134, 1675132, 1679989, 1693849, 1699501, 1705153, + 1718869, 1724610, 1726933, 1726933, 1732585, 1734908, 1735729, 1735729, + 1737817, 1740140, 1740961, 1740961, 1743049, 1748701, 1750789, 1750789, + 1756021, 1760777, 1763100, 1765036, 1769737, 1769737, 1769737, 1769737, + 1769737, 1771673, 1772494, 1773197, 1774969, 1779670, 1781758, 1783530, + 1787941, 1801801, 1807453, 1813105, 1826821, 1826821, 1826821, 1826821, + 1826821, 1831678, 1833450, 1835264, 1839793, 1853509, 1858741, 1863973, +/// --------------------------------- 0xA --------------------------------- + 0, 17580, 23955, 30421, 48001, 48001, 48001, 48001, + 48001, 55288, 57838, 60516, 67803, 85383, 91758, 98224, + 115804, 122179, 124729, 127009, 133384, 135934, 137209, 137209, + 139759, 142049, 142965, 143935, 146225, 152600, 155150, 157430, + 163805, 169817, 172367, 174587, 180599, 180599, 180599, 180599, + 180599, 183605, 184880, 185990, 188996, 195008, 197558, 199778, + 205790, 223370, 229745, 236211, 253791, 253791, 253791, 253791, + 253791, 261078, 263628, 266306, 273593, 291173, 297548, 304014, + 321594, 327969, 330519, 332799, 339174, 341724, 342999, 342999, + 345549, 347839, 348755, 349725, 352015, 358390, 360940, 363220, + 369595, 369595, 369595, 369595, 369595, 369595, 369595, 369595, + 369595, 369595, 369595, 369595, 369595, 369595, 369595, 369595, + 369595, 372145, 373420, 374332, 376882, 378157, 378157, 378157, + 379378, 380294, 380727, 381098, 381989, 384539, 385760, 386648, + 389144, 395519, 398069, 400349, 406724, 409274, 410495, 410495, + 412991, 415281, 416172, 417108, 419348, 425723, 428219, 430451, + 436718, 443093, 443093, 445383, 451758, 451758, 451758, 451758, + 451758, 454308, 454308, 455224, 457774, 464149, 464149, 466439, + 472814, 475364, 476639, 476639, 479189, 479189, 479189, 479189, + 479189, 480105, 480538, 480538, 481429, 483979, 485200, 485200, + 487696, 490246, 490246, 491162, 493712, 493712, 493712, 493712, + 493712, 494987, 494987, 495420, 496641, 499191, 499191, 500082, + 502578, 508953, 508953, 511243, 517618, 517618, 517618, 517618, + 517618, 520168, 520168, 521059, 523555, 529930, 529930, 532170, + 538437, 556017, 562392, 568858, 586438, 586438, 586438, 586438, + 586438, 593725, 596275, 598953, 606240, 623820, 630195, 636661, + 654241, 660616, 663166, 665446, 671821, 674371, 675592, 675592, + 678088, 680378, 681269, 682205, 684445, 690820, 693316, 695548, + 701815, 707827, 710377, 712597, 718609, 718609, 718609, 718609, + 718609, 721615, 722836, 723904, 726832, 732844, 735340, 737518, + 743452, 761032, 767407, 773873, 791453, 791453, 791453, 791453, + 791453, 798740, 801236, 803847, 811002, 828582, 834849, 841206, + 858576, 864951, 867501, 869781, 876156, 878706, 879981, 879981, + 882531, 884821, 885737, 886707, 888997, 895372, 897922, 900202, + 906577, 906577, 906577, 906577, 906577, 906577, 906577, 906577, + 906577, 906577, 906577, 906577, 906577, 906577, 906577, 906577, + 906577, 909127, 910402, 911314, 913864, 915139, 915139, 915139, + 916360, 917276, 917709, 918080, 918971, 921521, 922742, 923630, + 926126, 932501, 935051, 937331, 943706, 946256, 947477, 947477, + 949973, 952263, 953154, 954090, 956330, 962705, 965201, 967433, + 973700, 976250, 977525, 977525, 980075, 981350, 981350, 981350, + 982571, 983483, 983915, 983915, 984803, 987353, 988574, 988574, + 991070, 992345, 992345, 992345, 993566, 993999, 994130, 994247, + 994597, 994597, 994597, 994597, 994597, 995818, 995818, 995818, + 996849, 997765, 998198, 998198, 999089, 999522, 999522, 999522, + 999872, 1000243, 1000374, 1000374, 1000682, 1001573, 1001923, 1001923, + 1002706, 1005256, 1006477, 1006477, 1008973, 1010194, 1010194, 1010194, + 1011225, 1012113, 1012463, 1012463, 1013245, 1015741, 1016772, 1016772, + 1019024, 1021574, 1021574, 1022486, 1025036, 1026311, 1026311, 1026311, + 1027532, 1028448, 1028448, 1028819, 1029710, 1032260, 1032260, 1033148, + 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, + 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, 1035644, + 1035644, 1036919, 1036919, 1037351, 1038572, 1039005, 1039136, 1039253, + 1039603, 1040036, 1040036, 1040167, 1040517, 1041738, 1041738, 1042088, + 1043119, 1045669, 1045669, 1046557, 1049053, 1050274, 1050274, 1050274, + 1051305, 1052196, 1052196, 1052504, 1053287, 1055783, 1055783, 1056565, + 1058817, 1065192, 1067742, 1070022, 1076397, 1078947, 1080168, 1080168, + 1082664, 1084954, 1085845, 1086781, 1089021, 1095396, 1097892, 1100124, + 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, + 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, 1106391, + 1106391, 1108941, 1110162, 1111050, 1113546, 1114767, 1114767, 1114767, + 1115798, 1116689, 1117039, 1117347, 1118130, 1120626, 1121657, 1122439, + 1124691, 1131066, 1133562, 1135794, 1142061, 1144557, 1145588, 1145588, + 1147840, 1150080, 1150863, 1151673, 1153697, 1159964, 1162216, 1164236, + 1170015, 1176390, 1178940, 1181220, 1187595, 1187595, 1187595, 1187595, + 1187595, 1190145, 1191420, 1192332, 1194882, 1201257, 1203807, 1206087, + 1212462, 1215012, 1216287, 1216287, 1218837, 1220112, 1220112, 1220112, + 1221333, 1222245, 1222677, 1222677, 1223565, 1226115, 1227336, 1227336, + 1229832, 1232382, 1232382, 1233294, 1235844, 1235844, 1235844, 1235844, + 1235844, 1237119, 1237119, 1237551, 1238772, 1241322, 1241322, 1242210, + 1244706, 1251081, 1253631, 1255911, 1262286, 1262286, 1262286, 1262286, + 1262286, 1264836, 1266057, 1266945, 1269441, 1275816, 1278312, 1280544, + 1286811, 1289361, 1290636, 1290636, 1293186, 1294461, 1294461, 1294461, + 1295682, 1296594, 1297026, 1297026, 1297914, 1300464, 1301685, 1301685, + 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, + 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, 1304181, + 1304181, 1305456, 1305456, 1305456, 1306677, 1307110, 1307241, 1307358, + 1307708, 1308140, 1308140, 1308140, 1308490, 1309711, 1309711, 1309711, + 1310742, 1313292, 1314513, 1314513, 1317009, 1318230, 1318230, 1318230, + 1319261, 1320149, 1320499, 1320499, 1321281, 1323777, 1324808, 1324808, + 1327060, 1329610, 1330885, 1330885, 1333435, 1333435, 1333435, 1333435, + 1333435, 1334710, 1334710, 1334710, 1335931, 1338481, 1339702, 1339702, + 1342198, 1343473, 1343473, 1343473, 1344694, 1345127, 1345258, 1345375, + 1345725, 1345725, 1345725, 1345725, 1345725, 1346946, 1346946, 1346946, + 1347977, 1349252, 1349252, 1349252, 1350473, 1350473, 1350473, 1350473, + 1350473, 1350906, 1351037, 1351154, 1351504, 1352725, 1352725, 1352725, + 1353756, 1356306, 1357527, 1357527, 1360023, 1360023, 1360023, 1360023, + 1360023, 1361244, 1361244, 1361244, 1362275, 1364771, 1365802, 1365802, + 1368054, 1374429, 1376979, 1379259, 1385634, 1385634, 1385634, 1385634, + 1385634, 1388184, 1389405, 1390293, 1392789, 1399164, 1401660, 1403892, + 1410159, 1412709, 1413930, 1413930, 1416426, 1417647, 1417647, 1417647, + 1418678, 1419566, 1419916, 1419916, 1420698, 1423194, 1424225, 1424225, + 1426477, 1429027, 1429027, 1429915, 1432411, 1432411, 1432411, 1432411, + 1432411, 1433632, 1433632, 1433982, 1435013, 1437509, 1437509, 1438291, + 1440543, 1446918, 1449414, 1451646, 1457913, 1457913, 1457913, 1457913, + 1457913, 1460409, 1461440, 1462222, 1464474, 1470741, 1472993, 1475013, + 1480792, 1498372, 1504747, 1511213, 1528793, 1528793, 1528793, 1528793, + 1528793, 1536080, 1538630, 1541308, 1548595, 1566175, 1572550, 1579016, + 1596596, 1602971, 1605521, 1607801, 1614176, 1616726, 1617947, 1617947, + 1620443, 1622733, 1623624, 1624560, 1626800, 1633175, 1635671, 1637903, + 1644170, 1650182, 1652732, 1654952, 1660964, 1660964, 1660964, 1660964, + 1660964, 1663970, 1665191, 1666259, 1669187, 1675199, 1677695, 1679873, + 1685807, 1703387, 1709762, 1716228, 1733808, 1733808, 1733808, 1733808, + 1733808, 1741095, 1743591, 1746202, 1753357, 1770937, 1777204, 1783561, + 1800931, 1807306, 1809856, 1812136, 1818511, 1821061, 1822282, 1822282, + 1824778, 1827068, 1827959, 1828895, 1831135, 1837510, 1840006, 1842238, + 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, + 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, 1848505, + 1848505, 1851055, 1852276, 1853164, 1855660, 1856881, 1856881, 1856881, + 1857912, 1858803, 1859153, 1859461, 1860244, 1862740, 1863771, 1864553, + 1866805, 1873180, 1875676, 1877908, 1884175, 1886671, 1887702, 1887702, + 1889954, 1892194, 1892977, 1893787, 1895811, 1902078, 1904330, 1906350, + 1912129, 1918504, 1918504, 1920794, 1927169, 1927169, 1927169, 1927169, + 1927169, 1929719, 1929719, 1930610, 1933106, 1939481, 1939481, 1941721, + 1947988, 1950538, 1951759, 1951759, 1954255, 1954255, 1954255, 1954255, + 1954255, 1955146, 1955496, 1955496, 1956279, 1958775, 1959806, 1959806, + 1962058, 1964608, 1964608, 1965499, 1967995, 1967995, 1967995, 1967995, + 1967995, 1969216, 1969216, 1969566, 1970597, 1973093, 1973093, 1973876, + 1976128, 1982503, 1982503, 1984743, 1991010, 1991010, 1991010, 1991010, + 1991010, 1993506, 1993506, 1994289, 1996541, 2002808, 2002808, 2004832, + 2010611, 2028191, 2034566, 2041032, 2058612, 2058612, 2058612, 2058612, + 2058612, 2065899, 2068395, 2071006, 2078161, 2095741, 2102008, 2108365, + 2125735, 2132110, 2134606, 2136838, 2143105, 2145601, 2146632, 2146632, + 2148884, 2151124, 2151907, 2152717, 2154741, 2161008, 2163260, 2165280, + 2171059, 2177071, 2179567, 2181745, 2187679, 2187679, 2187679, 2187679, + 2187679, 2190607, 2191638, 2192552, 2195154, 2201088, 2203340, 2205322, + 2210852, 2228432, 2234699, 2241056, 2258426, 2258426, 2258426, 2258426, + 2258426, 2265581, 2267833, 2270165, 2276726, 2294096, 2299875, 2305732, +/// --------------------------------- 0xB --------------------------------- + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +/// --------------------------------- 0xC --------------------------------- + 0, 22518, 30799, 40326, 62844, 62844, 62844, 62844, + 62844, 71071, 74021, 77497, 85724, 108242, 116523, 126050, + 148568, 156849, 159867, 162805, 171086, 174104, 175379, 176349, + 179367, 182773, 184019, 185488, 188894, 197175, 200193, 203131, + 211412, 218500, 221518, 224536, 231624, 231624, 231624, 231624, + 231624, 234620, 235895, 237170, 240166, 247254, 250272, 253290, + 260378, 282896, 291177, 300704, 323222, 323222, 323222, 323222, + 323222, 331449, 334399, 337875, 346102, 368620, 376901, 386428, + 408946, 417227, 420245, 423183, 431464, 434482, 435757, 436727, + 439745, 443151, 444397, 445866, 449272, 457553, 460571, 463509, + 471790, 471790, 471790, 471790, 471790, 471790, 471790, 471790, + 471790, 471790, 471790, 471790, 471790, 471790, 471790, 471790, + 471790, 474740, 476015, 477067, 480017, 481292, 481292, 481672, + 482893, 484105, 484599, 485093, 486263, 489213, 490434, 491454, + 494330, 502611, 505629, 508567, 516848, 519866, 521087, 522023, + 524960, 528366, 529563, 530961, 534269, 542550, 545487, 548354, + 556466, 564747, 564747, 568153, 576434, 576434, 576434, 576434, + 576434, 579384, 579384, 580596, 583546, 591827, 591827, 595233, + 603514, 606532, 607807, 608777, 611795, 611795, 611795, 611795, + 611795, 613041, 613535, 613906, 615103, 618121, 619342, 620278, + 623215, 626233, 626233, 627479, 630497, 630497, 630497, 630497, + 630497, 631772, 631772, 632266, 633487, 636505, 636505, 637702, + 640639, 648920, 648920, 652326, 660607, 660607, 660607, 660607, + 660607, 663557, 663557, 664727, 667603, 675884, 675884, 679192, + 687304, 709822, 718103, 727630, 750148, 750148, 750148, 750148, + 750148, 758375, 761325, 764801, 773028, 795546, 803827, 813354, + 835872, 844153, 847171, 850109, 858390, 861408, 862629, 863565, + 866502, 869908, 871105, 872503, 875811, 884092, 887029, 889896, + 898008, 905096, 908114, 911132, 918220, 918220, 918220, 918220, + 918220, 921216, 922437, 923658, 926578, 933666, 936603, 939540, + 946515, 969033, 977314, 986841, 1009359, 1009359, 1009359, 1009359, + 1009359, 1017586, 1020462, 1023832, 1031899, 1054417, 1062529, 1071838, + 1094035, 1102316, 1105334, 1108272, 1116553, 1119571, 1120846, 1121816, + 1124834, 1128240, 1129486, 1130955, 1134361, 1142642, 1145660, 1148598, + 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, + 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, 1156879, + 1156879, 1159829, 1161104, 1162156, 1165106, 1166381, 1166381, 1166761, + 1167982, 1169194, 1169688, 1170182, 1171352, 1174302, 1175523, 1176543, + 1179419, 1187700, 1190718, 1193656, 1201937, 1204955, 1206176, 1207112, + 1210049, 1213455, 1214652, 1216050, 1219358, 1227639, 1230576, 1233443, + 1241555, 1244573, 1245848, 1246818, 1249836, 1251111, 1251111, 1251552, + 1252773, 1253825, 1254249, 1254620, 1255640, 1258658, 1259879, 1260815, + 1263752, 1265027, 1265027, 1265468, 1266689, 1267183, 1267328, 1267328, + 1267720, 1268100, 1268100, 1268218, 1268530, 1269751, 1269751, 1270105, + 1271136, 1272382, 1272876, 1273247, 1274444, 1274938, 1274938, 1275069, + 1275461, 1275955, 1276100, 1276231, 1276623, 1277820, 1278212, 1278520, + 1279537, 1282555, 1283776, 1284712, 1287649, 1288870, 1288870, 1289224, + 1290255, 1291275, 1291621, 1291929, 1292815, 1295752, 1296783, 1297593, + 1300199, 1303217, 1303217, 1304269, 1307287, 1308562, 1308562, 1309003, + 1310224, 1311470, 1311470, 1311964, 1313161, 1316179, 1316179, 1317199, + 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, + 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, 1320136, + 1320136, 1321411, 1321411, 1321835, 1323056, 1323550, 1323695, 1323695, + 1324087, 1324581, 1324581, 1324726, 1325118, 1326339, 1326339, 1326685, + 1327716, 1330734, 1330734, 1331754, 1334691, 1335912, 1335912, 1336266, + 1337297, 1338494, 1338494, 1338886, 1339903, 1342840, 1342840, 1343726, + 1346332, 1354613, 1357631, 1360569, 1368850, 1371868, 1373089, 1374025, + 1376962, 1380368, 1381565, 1382963, 1386271, 1394552, 1397489, 1400356, + 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, + 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, 1408468, + 1408468, 1411418, 1412639, 1413659, 1416535, 1417756, 1417756, 1418068, + 1419099, 1420269, 1420661, 1421053, 1422055, 1424931, 1425962, 1426848, + 1429412, 1437693, 1440630, 1443497, 1451609, 1454546, 1455577, 1456387, + 1458993, 1462301, 1463318, 1464480, 1467394, 1475506, 1478112, 1480672, + 1488056, 1496337, 1499355, 1502293, 1510574, 1510574, 1510574, 1510574, + 1510574, 1513524, 1514799, 1515851, 1518801, 1527082, 1530100, 1533038, + 1541319, 1544337, 1545612, 1546582, 1549600, 1550875, 1550875, 1551316, + 1552537, 1553589, 1554013, 1554384, 1555404, 1558422, 1559643, 1560579, + 1563516, 1566534, 1566534, 1567586, 1570604, 1570604, 1570604, 1570604, + 1570604, 1571879, 1571879, 1572303, 1573524, 1576542, 1576542, 1577562, + 1580499, 1588780, 1591798, 1594736, 1603017, 1603017, 1603017, 1603017, + 1603017, 1605967, 1607188, 1608208, 1611084, 1619365, 1622302, 1625169, + 1633281, 1636299, 1637574, 1638544, 1641562, 1642837, 1642837, 1643278, + 1644499, 1645551, 1645975, 1646346, 1647366, 1650384, 1651605, 1652541, + 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, + 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, 1655478, + 1655478, 1656753, 1656753, 1657133, 1658354, 1658848, 1658993, 1658993, + 1659385, 1659809, 1659809, 1659925, 1660271, 1661492, 1661492, 1661804, + 1662835, 1665853, 1667074, 1668010, 1670947, 1672168, 1672168, 1672522, + 1673553, 1674573, 1674919, 1675227, 1676113, 1679050, 1680081, 1680891, + 1683497, 1686515, 1687790, 1688760, 1691778, 1691778, 1691778, 1691778, + 1691778, 1693053, 1693053, 1693433, 1694654, 1697672, 1698893, 1699829, + 1702766, 1704041, 1704041, 1704482, 1705703, 1706197, 1706342, 1706342, + 1706734, 1707114, 1707114, 1707232, 1707544, 1708765, 1708765, 1709119, + 1710150, 1711425, 1711425, 1711866, 1713087, 1713087, 1713087, 1713087, + 1713087, 1713581, 1713726, 1713726, 1714118, 1715339, 1715339, 1715693, + 1716724, 1719742, 1720963, 1721899, 1724836, 1724836, 1724836, 1724836, + 1724836, 1726057, 1726057, 1726369, 1727400, 1730337, 1731368, 1732178, + 1734784, 1743065, 1746083, 1749021, 1757302, 1757302, 1757302, 1757302, + 1757302, 1760252, 1761473, 1762493, 1765369, 1773650, 1776587, 1779454, + 1787566, 1790584, 1791805, 1792741, 1795678, 1796899, 1796899, 1797253, + 1798284, 1799304, 1799650, 1799958, 1800844, 1803781, 1804812, 1805622, + 1808228, 1811246, 1811246, 1812266, 1815203, 1815203, 1815203, 1815203, + 1815203, 1816424, 1816424, 1816770, 1817801, 1820738, 1820738, 1821624, + 1824230, 1832511, 1835448, 1838315, 1846427, 1846427, 1846427, 1846427, + 1846427, 1849303, 1850334, 1851220, 1853784, 1861896, 1864502, 1867062, + 1874446, 1896964, 1905245, 1914772, 1937290, 1937290, 1937290, 1937290, + 1937290, 1945517, 1948467, 1951943, 1960170, 1982688, 1990969, 2000496, + 2023014, 2031295, 2034313, 2037251, 2045532, 2048550, 2049771, 2050707, + 2053644, 2057050, 2058247, 2059645, 2062953, 2071234, 2074171, 2077038, + 2085150, 2092238, 2095256, 2098274, 2105362, 2105362, 2105362, 2105362, + 2105362, 2108358, 2109579, 2110800, 2113720, 2120808, 2123745, 2126682, + 2133657, 2156175, 2164456, 2173983, 2196501, 2196501, 2196501, 2196501, + 2196501, 2204728, 2207604, 2210974, 2219041, 2241559, 2249671, 2258980, + 2281177, 2289458, 2292476, 2295414, 2303695, 2306713, 2307934, 2308870, + 2311807, 2315213, 2316410, 2317808, 2321116, 2329397, 2332334, 2335201, + 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, + 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, 2343313, + 2343313, 2346263, 2347484, 2348504, 2351380, 2352601, 2352601, 2352913, + 2353944, 2355114, 2355506, 2355898, 2356900, 2359776, 2360807, 2361693, + 2364257, 2372538, 2375475, 2378342, 2386454, 2389391, 2390422, 2391232, + 2393838, 2397146, 2398163, 2399325, 2402239, 2410351, 2412957, 2415517, + 2422901, 2431182, 2431182, 2434588, 2442869, 2442869, 2442869, 2442869, + 2442869, 2445819, 2445819, 2446989, 2449865, 2458146, 2458146, 2461454, + 2469566, 2472584, 2473805, 2474741, 2477678, 2477678, 2477678, 2477678, + 2477678, 2478875, 2479267, 2479575, 2480592, 2483529, 2484560, 2485370, + 2487976, 2490994, 2490994, 2492191, 2495128, 2495128, 2495128, 2495128, + 2495128, 2496349, 2496349, 2496741, 2497772, 2500709, 2500709, 2501726, + 2504332, 2512613, 2512613, 2515921, 2524033, 2524033, 2524033, 2524033, + 2524033, 2526909, 2526909, 2527911, 2530475, 2538587, 2538587, 2541501, + 2548885, 2571403, 2579684, 2589211, 2611729, 2611729, 2611729, 2611729, + 2611729, 2619956, 2622832, 2626202, 2634269, 2656787, 2664899, 2674208, + 2696405, 2704686, 2707623, 2710490, 2718602, 2721539, 2722570, 2723380, + 2725986, 2729294, 2730311, 2731473, 2734387, 2742499, 2745105, 2747665, + 2755049, 2762137, 2765074, 2768011, 2774986, 2774986, 2774986, 2774986, + 2774986, 2777906, 2778937, 2779968, 2782566, 2789541, 2792147, 2794753, + 2801182, 2823700, 2831812, 2841121, 2863318, 2863318, 2863318, 2863318, + 2863318, 2871385, 2873949, 2876905, 2884262, 2906459, 2913843, 2922244, +/// --------------------------------- 0xD --------------------------------- + 0, 17580, 24046, 30421, 48001, 48001, 48001, 48001, + 48001, 54462, 56780, 59120, 65581, 83161, 89627, 96002, + 113582, 120048, 122368, 124696, 131162, 133482, 134467, 135308, + 137628, 139918, 140743, 141713, 144003, 150469, 152789, 155117, + 161583, 167039, 169359, 171349, 176805, 176805, 176805, 176805, + 176805, 179123, 180108, 180953, 183271, 188727, 191047, 193037, + 198493, 216073, 222539, 228914, 246494, 246494, 246494, 246494, + 246494, 252955, 255273, 257613, 264074, 281654, 288120, 294495, + 312075, 318541, 320861, 323189, 329655, 331975, 332960, 333801, + 336121, 338411, 339236, 340206, 342496, 348962, 351282, 353610, + 360076, 360076, 360076, 360076, 360076, 360076, 360076, 360076, + 360076, 360076, 360076, 360076, 360076, 360076, 360076, 360076, + 360076, 362394, 363379, 364219, 366537, 367522, 367522, 367855, + 368806, 369626, 369960, 370294, 371092, 373410, 374361, 375177, + 377446, 383912, 386232, 388560, 395026, 397346, 398297, 399113, + 401383, 403673, 404474, 405410, 407650, 414116, 416386, 418663, + 425020, 431486, 431486, 433776, 440242, 440242, 440242, 440242, + 440242, 442560, 442560, 443380, 445698, 452164, 452164, 454454, + 460920, 463240, 464225, 465066, 467386, 467386, 467386, 467386, + 467386, 468211, 468545, 468825, 469626, 471946, 472897, 473713, + 475983, 478303, 478303, 479128, 481448, 481448, 481448, 481448, + 481448, 482433, 482433, 482767, 483718, 486038, 486038, 486839, + 489109, 495575, 495575, 497865, 504331, 504331, 504331, 504331, + 504331, 506649, 506649, 507447, 509716, 516182, 516182, 518422, + 524779, 542359, 548825, 555200, 572780, 572780, 572780, 572780, + 572780, 579241, 581559, 583899, 590360, 607940, 614406, 620781, + 638361, 644827, 647147, 649475, 655941, 658261, 659212, 660028, + 662298, 664588, 665389, 666325, 668565, 675031, 677301, 679578, + 685935, 691391, 693711, 695701, 701157, 701157, 701157, 701157, + 701157, 703475, 704426, 705245, 707514, 712970, 715240, 717192, + 722577, 740157, 746623, 752998, 770578, 770578, 770578, 770578, + 770578, 777039, 779308, 781594, 787948, 805528, 811885, 818152, + 835522, 841988, 844308, 846636, 853102, 855422, 856407, 857248, + 859568, 861858, 862683, 863653, 865943, 872409, 874729, 877057, + 883523, 883523, 883523, 883523, 883523, 883523, 883523, 883523, + 883523, 883523, 883523, 883523, 883523, 883523, 883523, 883523, + 883523, 885841, 886826, 887666, 889984, 890969, 890969, 891302, + 892253, 893073, 893407, 893741, 894539, 896857, 897808, 898624, + 900893, 907359, 909679, 912007, 918473, 920793, 921744, 922560, + 924830, 927120, 927921, 928857, 931097, 937563, 939833, 942110, + 948467, 950787, 951772, 952613, 954933, 955918, 955918, 956252, + 957203, 958019, 958352, 958685, 959480, 961800, 962751, 963567, + 965837, 966822, 966822, 967156, 968107, 968441, 968546, 968650, + 968928, 969261, 969261, 969366, 969644, 970595, 970595, 970873, + 971694, 972519, 972853, 973133, 973934, 974268, 974268, 974361, + 974639, 974965, 975070, 975175, 975449, 976250, 976528, 976768, + 977473, 979793, 980744, 981560, 983830, 984781, 984781, 985059, + 985880, 986675, 986953, 987231, 987934, 990204, 991025, 991741, + 993791, 996111, 996111, 996927, 999247, 1000232, 1000232, 1000566, + 1001517, 1002342, 1002342, 1002668, 1003469, 1005789, 1005789, 1006584, + 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, + 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, 1008854, + 1008854, 1009839, 1009839, 1010172, 1011123, 1011457, 1011562, 1011666, + 1011944, 1012278, 1012278, 1012383, 1012661, 1013612, 1013612, 1013890, + 1014711, 1017031, 1017031, 1017826, 1020096, 1021047, 1021047, 1021325, + 1022146, 1022947, 1022947, 1023221, 1023926, 1026196, 1026196, 1026899, + 1028949, 1035415, 1037735, 1040063, 1046529, 1048849, 1049800, 1050616, + 1052886, 1055176, 1055977, 1056913, 1059153, 1065619, 1067889, 1070166, + 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, + 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, 1076523, + 1076523, 1078841, 1079792, 1080608, 1082877, 1083828, 1083828, 1084106, + 1084927, 1085725, 1086003, 1086281, 1086985, 1089254, 1090075, 1090791, + 1092841, 1099307, 1101577, 1103854, 1110211, 1112481, 1113302, 1114018, + 1116068, 1118308, 1119013, 1119823, 1121847, 1128204, 1130254, 1132308, + 1138165, 1144631, 1146951, 1149279, 1155745, 1155745, 1155745, 1155745, + 1155745, 1158063, 1159048, 1159888, 1162206, 1168672, 1170992, 1173320, + 1179786, 1182106, 1183091, 1183932, 1186252, 1187237, 1187237, 1187571, + 1188522, 1189338, 1189671, 1190004, 1190799, 1193119, 1194070, 1194886, + 1197156, 1199476, 1199476, 1200292, 1202612, 1202612, 1202612, 1202612, + 1202612, 1203597, 1203597, 1203930, 1204881, 1207201, 1207201, 1207996, + 1210266, 1216732, 1219052, 1221380, 1227846, 1227846, 1227846, 1227846, + 1227846, 1230164, 1231115, 1231931, 1234200, 1240666, 1242936, 1245213, + 1251570, 1253890, 1254875, 1255716, 1258036, 1259021, 1259021, 1259355, + 1260306, 1261122, 1261455, 1261788, 1262583, 1264903, 1265854, 1266670, + 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, + 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, 1268940, + 1268940, 1269925, 1269925, 1270258, 1271209, 1271543, 1271648, 1271752, + 1272030, 1272363, 1272363, 1272468, 1272746, 1273697, 1273697, 1273975, + 1274796, 1277116, 1278067, 1278883, 1281153, 1282104, 1282104, 1282382, + 1283203, 1283998, 1284276, 1284554, 1285257, 1287527, 1288348, 1289064, + 1291114, 1293434, 1294419, 1295260, 1297580, 1297580, 1297580, 1297580, + 1297580, 1298565, 1298565, 1298898, 1299849, 1302169, 1303120, 1303936, + 1306206, 1307191, 1307191, 1307525, 1308476, 1308810, 1308915, 1309019, + 1309297, 1309630, 1309630, 1309735, 1310013, 1310964, 1310964, 1311242, + 1312063, 1313048, 1313048, 1313382, 1314333, 1314333, 1314333, 1314333, + 1314333, 1314667, 1314772, 1314876, 1315154, 1316105, 1316105, 1316383, + 1317204, 1319524, 1320475, 1321291, 1323561, 1323561, 1323561, 1323561, + 1323561, 1324512, 1324512, 1324790, 1325611, 1327881, 1328702, 1329418, + 1331468, 1337934, 1340254, 1342582, 1349048, 1349048, 1349048, 1349048, + 1349048, 1351366, 1352317, 1353133, 1355402, 1361868, 1364138, 1366415, + 1372772, 1375092, 1376043, 1376859, 1379129, 1380080, 1380080, 1380358, + 1381179, 1381974, 1382252, 1382530, 1383233, 1385503, 1386324, 1387040, + 1389090, 1391410, 1391410, 1392205, 1394475, 1394475, 1394475, 1394475, + 1394475, 1395426, 1395426, 1395704, 1396525, 1398795, 1398795, 1399498, + 1401548, 1408014, 1410284, 1412561, 1418918, 1418918, 1418918, 1418918, + 1418918, 1421187, 1422008, 1422724, 1424774, 1431131, 1433181, 1435235, + 1441092, 1458672, 1465138, 1471513, 1489093, 1489093, 1489093, 1489093, + 1489093, 1495554, 1497872, 1500212, 1506673, 1524253, 1530719, 1537094, + 1554674, 1561140, 1563460, 1565788, 1572254, 1574574, 1575525, 1576341, + 1578611, 1580901, 1581702, 1582638, 1584878, 1591344, 1593614, 1595891, + 1602248, 1607704, 1610024, 1612014, 1617470, 1617470, 1617470, 1617470, + 1617470, 1619788, 1620739, 1621558, 1623827, 1629283, 1631553, 1633505, + 1638890, 1656470, 1662936, 1669311, 1686891, 1686891, 1686891, 1686891, + 1686891, 1693352, 1695621, 1697907, 1704261, 1721841, 1728198, 1734465, + 1751835, 1758301, 1760621, 1762949, 1769415, 1771735, 1772686, 1773502, + 1775772, 1778062, 1778863, 1779799, 1782039, 1788505, 1790775, 1793052, + 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, + 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, 1799409, + 1799409, 1801727, 1802678, 1803494, 1805763, 1806714, 1806714, 1806992, + 1807813, 1808611, 1808889, 1809167, 1809871, 1812140, 1812961, 1813677, + 1815727, 1822193, 1824463, 1826740, 1833097, 1835367, 1836188, 1836904, + 1838954, 1841194, 1841899, 1842709, 1844733, 1851090, 1853140, 1855194, + 1861051, 1867517, 1867517, 1869807, 1876273, 1876273, 1876273, 1876273, + 1876273, 1878591, 1878591, 1879389, 1881658, 1888124, 1888124, 1890364, + 1896721, 1899041, 1899992, 1900808, 1903078, 1903078, 1903078, 1903078, + 1903078, 1903879, 1904157, 1904397, 1905102, 1907372, 1908193, 1908909, + 1910959, 1913279, 1913279, 1914080, 1916350, 1916350, 1916350, 1916350, + 1916350, 1917301, 1917301, 1917579, 1918400, 1920670, 1920670, 1921375, + 1923425, 1929891, 1929891, 1932131, 1938488, 1938488, 1938488, 1938488, + 1938488, 1940757, 1940757, 1941461, 1943511, 1949868, 1949868, 1951892, + 1957749, 1975329, 1981795, 1988170, 2005750, 2005750, 2005750, 2005750, + 2005750, 2012211, 2014480, 2016766, 2023120, 2040700, 2047057, 2053324, + 2070694, 2077160, 2079430, 2081707, 2088064, 2090334, 2091155, 2091871, + 2093921, 2096161, 2096866, 2097676, 2099700, 2106057, 2108107, 2110161, + 2116018, 2121474, 2123744, 2125696, 2131081, 2131081, 2131081, 2131081, + 2131081, 2133350, 2134171, 2134888, 2136938, 2142323, 2144373, 2146153, + 2151176, 2168756, 2175113, 2181380, 2198750, 2198750, 2198750, 2198750, + 2198750, 2205104, 2207154, 2209212, 2215068, 2232438, 2238295, 2244074, +/// --------------------------------- 0xE --------------------------------- + 0, 22880, 31422, 39964, 62844, 62844, 62844, 62844, + 62844, 71071, 74067, 77135, 85362, 108242, 116784, 125326, + 148206, 156748, 159824, 162544, 171086, 174162, 175437, 176552, + 179628, 182756, 183886, 185042, 188170, 196712, 199788, 202508, + 211050, 218162, 221238, 223906, 231018, 231018, 231018, 231018, + 231018, 233968, 235243, 236349, 239299, 246411, 249487, 252155, + 259267, 282147, 290689, 299231, 322111, 322111, 322111, 322111, + 322111, 330338, 333334, 336402, 344629, 367509, 376051, 384593, + 407473, 416015, 419091, 421811, 430353, 433429, 434704, 435819, + 438895, 442023, 443153, 444309, 447437, 455979, 459055, 461775, + 470317, 470317, 470317, 470317, 470317, 470317, 470317, 470317, + 470317, 470317, 470317, 470317, 470317, 470317, 470317, 470317, + 470317, 473313, 474588, 475548, 478544, 479819, 479819, 480243, + 481464, 482560, 483001, 483388, 484447, 487443, 488664, 489594, + 492514, 501056, 504132, 506852, 515394, 518470, 519691, 520762, + 523752, 526880, 527966, 529073, 532110, 540652, 543642, 546292, + 554650, 563192, 563192, 566320, 574862, 574862, 574862, 574862, + 574862, 577858, 577858, 578954, 581950, 590492, 590492, 593620, + 602162, 605238, 606513, 607628, 610704, 610704, 610704, 610704, + 610704, 611834, 612275, 612655, 613741, 616817, 618038, 619109, + 622099, 625175, 625175, 626305, 629381, 629381, 629381, 629381, + 629381, 630656, 630656, 631097, 632318, 635394, 635394, 636480, + 639470, 648012, 648012, 651140, 659682, 659682, 659682, 659682, + 659682, 662678, 662678, 663737, 666657, 675199, 675199, 678236, + 686594, 709474, 718016, 726558, 749438, 749438, 749438, 749438, + 749438, 757665, 760661, 763729, 771956, 794836, 803378, 811920, + 834800, 843342, 846418, 849138, 857680, 860756, 861977, 863048, + 866038, 869166, 870252, 871359, 874396, 882938, 885928, 888578, + 896936, 904048, 907124, 909792, 916904, 916904, 916904, 916904, + 916904, 919854, 921075, 922140, 925016, 932128, 935118, 937721, + 944717, 967597, 976139, 984681, 1007561, 1007561, 1007561, 1007561, + 1007561, 1015788, 1018708, 1021691, 1029758, 1052638, 1060996, 1069354, + 1091894, 1100436, 1103512, 1106232, 1114774, 1117850, 1119125, 1120240, + 1123316, 1126444, 1127574, 1128730, 1131858, 1140400, 1143476, 1146196, + 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, + 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, 1154738, + 1154738, 1157734, 1159009, 1159969, 1162965, 1164240, 1164240, 1164664, + 1165885, 1166981, 1167422, 1167809, 1168868, 1171864, 1173085, 1174015, + 1176935, 1185477, 1188553, 1191273, 1199815, 1202891, 1204112, 1205183, + 1208173, 1211301, 1212387, 1213494, 1216531, 1225073, 1228063, 1230713, + 1239071, 1242147, 1243422, 1244537, 1247613, 1248888, 1248888, 1249382, + 1250603, 1251563, 1251943, 1252323, 1253253, 1256329, 1257550, 1258621, + 1261611, 1262886, 1262886, 1263380, 1264601, 1265042, 1265160, 1265278, + 1265632, 1266056, 1266056, 1266201, 1266547, 1267768, 1267768, 1268160, + 1269191, 1270321, 1270762, 1271142, 1272228, 1272669, 1272669, 1272800, + 1273154, 1273541, 1273659, 1273777, 1274093, 1275179, 1275533, 1275845, + 1276771, 1279847, 1281068, 1282139, 1285129, 1286350, 1286350, 1286742, + 1287773, 1288703, 1289015, 1289327, 1290135, 1293125, 1294156, 1295071, + 1297715, 1300791, 1300791, 1301751, 1304827, 1306102, 1306102, 1306596, + 1307817, 1308947, 1308947, 1309334, 1310420, 1313496, 1313496, 1314426, + 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, + 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, 1317416, + 1317416, 1318691, 1318691, 1319071, 1320292, 1320733, 1320851, 1320969, + 1321323, 1321764, 1321764, 1321882, 1322236, 1323457, 1323457, 1323769, + 1324800, 1327876, 1327876, 1328806, 1331796, 1333017, 1333017, 1333409, + 1334440, 1335526, 1335526, 1335842, 1336768, 1339758, 1339758, 1340566, + 1343210, 1351752, 1354828, 1357548, 1366090, 1369166, 1370387, 1371458, + 1374448, 1377576, 1378662, 1379769, 1382806, 1391348, 1394338, 1396988, + 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, + 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, 1405346, + 1405346, 1408342, 1409563, 1410493, 1413413, 1414634, 1414634, 1414980, + 1416011, 1417070, 1417424, 1417740, 1418651, 1421571, 1422602, 1423410, + 1426008, 1434550, 1437540, 1440190, 1448548, 1451538, 1452569, 1453484, + 1456128, 1459165, 1460091, 1461030, 1463708, 1472066, 1474710, 1477072, + 1484652, 1493194, 1496270, 1498990, 1507532, 1507532, 1507532, 1507532, + 1507532, 1510528, 1511803, 1512763, 1515759, 1524301, 1527377, 1530097, + 1538639, 1541715, 1542990, 1544105, 1547181, 1548456, 1548456, 1548950, + 1550171, 1551131, 1551511, 1551891, 1552821, 1555897, 1557118, 1558189, + 1561179, 1564255, 1564255, 1565215, 1568291, 1568291, 1568291, 1568291, + 1568291, 1569566, 1569566, 1569946, 1571167, 1574243, 1574243, 1575173, + 1578163, 1586705, 1589781, 1592501, 1601043, 1601043, 1601043, 1601043, + 1601043, 1604039, 1605260, 1606190, 1609110, 1617652, 1620642, 1623292, + 1631650, 1634726, 1636001, 1637116, 1640192, 1641467, 1641467, 1641961, + 1643182, 1644142, 1644522, 1644902, 1645832, 1648908, 1650129, 1651200, + 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, + 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, 1654190, + 1654190, 1655465, 1655465, 1655889, 1657110, 1657551, 1657669, 1657787, + 1658141, 1658521, 1658521, 1658637, 1658949, 1660170, 1660170, 1660516, + 1661547, 1664623, 1665844, 1666915, 1669905, 1671126, 1671126, 1671518, + 1672549, 1673479, 1673791, 1674103, 1674911, 1677901, 1678932, 1679847, + 1682491, 1685567, 1686842, 1687957, 1691033, 1691033, 1691033, 1691033, + 1691033, 1692308, 1692308, 1692732, 1693953, 1697029, 1698250, 1699321, + 1702311, 1703586, 1703586, 1704080, 1705301, 1705742, 1705860, 1705978, + 1706332, 1706756, 1706756, 1706901, 1707247, 1708468, 1708468, 1708860, + 1709891, 1711166, 1711166, 1711660, 1712881, 1712881, 1712881, 1712881, + 1712881, 1713322, 1713440, 1713558, 1713912, 1715133, 1715133, 1715525, + 1716556, 1719632, 1720853, 1721924, 1724914, 1724914, 1724914, 1724914, + 1724914, 1726135, 1726135, 1726481, 1727512, 1730502, 1731533, 1732448, + 1735092, 1743634, 1746710, 1749430, 1757972, 1757972, 1757972, 1757972, + 1757972, 1760968, 1762189, 1763119, 1766039, 1774581, 1777571, 1780221, + 1788579, 1791655, 1792876, 1793947, 1796937, 1798158, 1798158, 1798550, + 1799581, 1800511, 1800823, 1801135, 1801943, 1804933, 1805964, 1806879, + 1809523, 1812599, 1812599, 1813529, 1816519, 1816519, 1816519, 1816519, + 1816519, 1817740, 1817740, 1818052, 1819083, 1822073, 1822073, 1822881, + 1825525, 1834067, 1837057, 1839707, 1848065, 1848065, 1848065, 1848065, + 1848065, 1850985, 1852016, 1852824, 1855422, 1863780, 1866424, 1868786, + 1876366, 1899246, 1907788, 1916330, 1939210, 1939210, 1939210, 1939210, + 1939210, 1947437, 1950433, 1953501, 1961728, 1984608, 1993150, 2001692, + 2024572, 2033114, 2036190, 2038910, 2047452, 2050528, 2051749, 2052820, + 2055810, 2058938, 2060024, 2061131, 2064168, 2072710, 2075700, 2078350, + 2086708, 2093820, 2096896, 2099564, 2106676, 2106676, 2106676, 2106676, + 2106676, 2109626, 2110847, 2111912, 2114788, 2121900, 2124890, 2127493, + 2134489, 2157369, 2165911, 2174453, 2197333, 2197333, 2197333, 2197333, + 2197333, 2205560, 2208480, 2211463, 2219530, 2242410, 2250768, 2259126, + 2281666, 2290208, 2293284, 2296004, 2304546, 2307622, 2308843, 2309914, + 2312904, 2316032, 2317118, 2318225, 2321262, 2329804, 2332794, 2335444, + 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, + 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, 2343802, + 2343802, 2346798, 2348019, 2348949, 2351869, 2353090, 2353090, 2353436, + 2354467, 2355526, 2355880, 2356196, 2357107, 2360027, 2361058, 2361866, + 2364464, 2373006, 2375996, 2378646, 2387004, 2389994, 2391025, 2391940, + 2394584, 2397621, 2398547, 2399486, 2402164, 2410522, 2413166, 2415528, + 2423108, 2431650, 2431650, 2434778, 2443320, 2443320, 2443320, 2443320, + 2443320, 2446316, 2446316, 2447375, 2450295, 2458837, 2458837, 2461874, + 2470232, 2473308, 2474529, 2475600, 2478590, 2478590, 2478590, 2478590, + 2478590, 2479676, 2480030, 2480342, 2481268, 2484258, 2485289, 2486204, + 2488848, 2491924, 2491924, 2493010, 2496000, 2496000, 2496000, 2496000, + 2496000, 2497221, 2497221, 2497575, 2498606, 2501596, 2501596, 2502522, + 2505166, 2513708, 2513708, 2516745, 2525103, 2525103, 2525103, 2525103, + 2525103, 2528023, 2528023, 2528934, 2531532, 2539890, 2539890, 2542568, + 2550148, 2573028, 2581570, 2590112, 2612992, 2612992, 2612992, 2612992, + 2612992, 2621219, 2624139, 2627122, 2635189, 2658069, 2666427, 2674785, + 2697325, 2705867, 2708857, 2711507, 2719865, 2722855, 2723886, 2724801, + 2727445, 2730482, 2731408, 2732347, 2735025, 2743383, 2746027, 2748389, + 2755969, 2763081, 2766071, 2768674, 2775670, 2775670, 2775670, 2775670, + 2775670, 2778546, 2779577, 2780490, 2783054, 2790050, 2792694, 2795022, + 2801464, 2824344, 2832702, 2841060, 2863600, 2863600, 2863600, 2863600, + 2863600, 2871667, 2874265, 2876905, 2884262, 2906802, 2914382, 2921962, +/// --------------------------------- 0xF --------------------------------- + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + const uint32_t RANGE_PREFIX_OFFSET[16][4096] = { /// --------------------------------- 0x0 --------------------------------- 0, 9527, 12991, 16067, 25594, 29058, 30527, 31657, diff --git a/src/short_code/short_code.h b/src/short_code/short_code.h index 3b70d6a..609b385 100644 --- a/src/short_code/short_code.h +++ b/src/short_code/short_code.h @@ -43,14 +43,17 @@ public: static uint64_t tiny_decode(uint32_t short_code); static uint32_t tiny_encode(uint64_t common_code); + static uint64_t tiny_decode_10b(uint32_t short_code); + static uint32_t tiny_encode_10b(uint64_t common_code); + // TODO: ShortCode::create() / ShortCode::from_str(...) / ShortCode::from_common_code(...) - static uint32_t fast_encode_legacy(uint64_t common_code); +// static uint32_t fast_encode_legacy(uint64_t common_code); private: uint32_t code; - static std::mutex map_building; +// static std::mutex map_building; static bool fast_mode_available; static bool normal_mode_available; @@ -60,10 +63,10 @@ private: /// for some test, the new function only using < 170MB memory, while the legacy using > 1.5GB /// but the legacy one is more easy and a little fast. /// BTW, the new one init less than 1.2s, legacy one need about 15s - static std::vector all_cases_list; // short_code -> common_code - static std::unordered_map all_cases_dict; // common_code -> short_code +// static std::vector all_cases_list; // short_code -> common_code +// static std::unordered_map all_cases_dict; // common_code -> short_code - static void build_mappings(); +// static void build_mappings(); // static uint64_t tiny_decode(uint32_t short_code); // static uint32_t tiny_encode(uint64_t common_code); };