@ 260915.5

250301.1 · 89b979c56b9da56e91db560a650fad378abf4a51

make option -i Unicode case-insensitive

fix #467

reading declarations

Changes to lib/letter_case.cpp. All files

lib/letter_case.cpp

new file mode 100644@@ -0,0 +1,3322 @@+// Converted from http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt by letter_case.l+#include <reflex/unicode.h>+#include <cstdlib>++static int cmpint2(const void *p, const void *q)+{+  int a = *static_cast<const int*>(p);+  int b = *static_cast<const int*>(q);+  return a < b ? -1 : a > b ? 1 : 0;+}++int reflex::Unicode::Tables::tolower(int c)+{+  static const int ul[] = {+    65, 97,+    66, 98,+    67, 99,+    68, 100,+    69, 101,+    70, 102,+    71, 103,+    72, 104,+    73, 105,+    74, 106,+    75, 107,+    76, 108,+    77, 109,+    78, 110,+    79, 111,+    80, 112,+    81, 113,+    82, 114,+    83, 115,+    84, 116,+    85, 117,+    86, 118,+    87, 119,+    88, 120,+    89, 121,+    90, 122,+    192, 224,+    193, 225,+    194, 226,+    195, 227,+    196, 228,+    197, 229,+    198, 230,+    199, 231,+    200, 232,+    201, 233,+    202, 234,+    203, 235,+    204, 236,+    205, 237,+    206, 238,+    207, 239,+    208, 240,+    209, 241,+    210, 242,+    211, 243,+    212, 244,+    213, 245,+    214, 246,+    216, 248,+    217, 249,+    218, 250,+    219, 251,+    220, 252,+    221, 253,+    222, 254,+    256, 257,+    258, 259,+    260, 261,+    262, 263,+    264, 265,+    266, 267,+    268, 269,+    270, 271,+    272, 273,+    274, 275,+    276, 277,+    278, 279,+    280, 281,+    282, 283,+    284, 285,+    286, 287,+    288, 289,+    290, 291,+    292, 293,+    294, 295,+    296, 297,+    298, 299,+    300, 301,+    302, 303,+    306, 307,+    308, 309,+    310, 311,+    313, 314,+    315, 316,+    317, 318,+    319, 320,+    321, 322,+    323, 324,+    325, 326,+    327, 328,+    330, 331,+    332, 333,+    334, 335,+    336, 337,+    338, 339,+    340, 341,+    342, 343,+    344, 345,+    346, 347,+    348, 349,+    350, 351,+    352, 353,+    354, 355,+    356, 357,+    358, 359,+    360, 361,+    362, 363,+    364, 365,+    366, 367,+    368, 369,+    370, 371,+    372, 373,+    374, 375,+    376, 255,+    377, 378,+    379, 380,+    381, 382,+    385, 595,+    386, 387,+    388, 389,+    390, 596,+    391, 392,+    394, 599,+    395, 396,+    398, 600,+    399, 601,+    400, 603,+    401, 402,+    403, 608,+    404, 611,+    406, 617,+    407, 616,+    408, 409,+    412, 623,+    413, 626,+    416, 417,+    418, 419,+    420, 421,+    423, 424,+    425, 643,+    428, 429,+    430, 648,+    431, 432,+    433, 650,+    434, 651,+    435, 436,+    437, 438,+    439, 658,+    440, 441,+    444, 445,+    452, 454,+    455, 457,+    458, 460,+    461, 462,+    463, 464,+    465, 466,+    467, 468,+    469, 470,+    471, 472,+    473, 474,+    475, 476,+    478, 479,+    480, 481,+    482, 483,+    484, 485,+    486, 487,+    488, 489,+    490, 491,+    492, 493,+    494, 495,+    497, 499,+    500, 501,+    504, 505,+    506, 507,+    508, 509,+    510, 511,+    512, 513,+    514, 515,+    516, 517,+    518, 519,+    520, 521,+    522, 523,+    524, 525,+    526, 527,+    528, 529,+    530, 531,+    532, 533,+    534, 535,+    536, 537,+    538, 539,+    540, 541,+    542, 543,+    544, 414,+    546, 547,+    548, 549,+    550, 551,+    552, 553,+    554, 555,+    556, 557,+    558, 559,+    560, 561,+    562, 563,+    570, 11365,+    571, 572,+    573, 410,+    574, 11366,+    577, 578,+    579, 384,+    580, 649,+    581, 652,+    582, 583,+    584, 585,+    588, 589,+    590, 591,+    880, 881,+    882, 883,+    886, 887,+    902, 940,+    904, 941,+    905, 942,+    906, 943,+    908, 972,+    910, 973,+    911, 974,+    913, 945,+    914, 946,+    915, 947,+    916, 948,+    917, 949,+    918, 950,+    919, 951,+    920, 952,+    921, 953,+    922, 954,+    923, 955,+    924, 956,+    925, 957,+    926, 958,+    927, 959,+    928, 960,+    929, 961,+    931, 963,+    932, 964,+    933, 965,+    934, 966,+    935, 967,+    936, 968,+    937, 969,+    938, 970,+    939, 971,+    994, 995,+    996, 997,+    998, 999,+    1000, 1001,+    1002, 1003,+    1004, 1005,+    1006, 1007,+    1015, 1016,+    1018, 1019,+    1021, 891,+    1022, 892,+    1023, 893,+    1024, 1104,+    1025, 1105,+    1026, 1106,+    1027, 1107,+    1028, 1108,+    1029, 1109,+    1030, 1110,+    1031, 1111,+    1032, 1112,+    1033, 1113,+    1034, 1114,+    1035, 1115,+    1036, 1116,+    1037, 1117,+    1038, 1118,+    1039, 1119,+    1040, 1072,+    1041, 1073,+    1042, 1074,+    1043, 1075,+    1044, 1076,+    1045, 1077,+    1046, 1078,+    1047, 1079,+    1048, 1080,+    1049, 1081,+    1050, 1082,+    1051, 1083,+    1052, 1084,+    1053, 1085,+    1054, 1086,+    1055, 1087,+    1056, 1088,+    1057, 1089,+    1058, 1090,+    1059, 1091,+    1060, 1092,+    1061, 1093,+    1062, 1094,+    1063, 1095,+    1064, 1096,+    1065, 1097,+    1066, 1098,+    1067, 1099,+    1068, 1100,+    1069, 1101,+    1070, 1102,+    1071, 1103,+    1120, 1121,+    1122, 1123,+    1124, 1125,+    1126, 1127,+    1128, 1129,+    1130, 1131,+    1132, 1133,+    1134, 1135,+    1136, 1137,+    1138, 1139,+    1140, 1141,+    1142, 1143,+    1144, 1145,+    1146, 1147,+    1148, 1149,+    1150, 1151,+    1152, 1153,+    1162, 1163,+    1164, 1165,+    1166, 1167,+    1168, 1169,+    1170, 1171,+    1172, 1173,+    1174, 1175,+    1176, 1177,+    1178, 1179,+    1180, 1181,+    1182, 1183,+    1184, 1185,+    1186, 1187,+    1188, 1189,+    1190, 1191,+    1192, 1193,+    1194, 1195,+    1196, 1197,+    1198, 1199,+    1200, 1201,+    1202, 1203,+    1204, 1205,+    1206, 1207,+    1208, 1209,+    1210, 1211,+    1212, 1213,+    1214, 1215,+    1217, 1218,+    1219, 1220,+    1221, 1222,+    1223, 1224,+    1225, 1226,+    1227, 1228,+    1229, 1230,+    1232, 1233,+    1234, 1235,+    1236, 1237,+    1238, 1239,+    1240, 1241,+    1242, 1243,+    1244, 1245,+    1246, 1247,+    1248, 1249,+    1250, 1251,+    1252, 1253,+    1254, 1255,+    1256, 1257,+    1258, 1259,+    1260, 1261,+    1262, 1263,+    1264, 1265,+    1266, 1267,+    1268, 1269,+    1270, 1271,+    1272, 1273,+    1274, 1275,+    1276, 1277,+    1278, 1279,+    1280, 1281,+    1282, 1283,+    1284, 1285,+    1286, 1287,+    1288, 1289,+    1290, 1291,+    1292, 1293,+    1294, 1295,+    1296, 1297,+    1298, 1299,+    1300, 1301,+    1302, 1303,+    1304, 1305,+    1306, 1307,+    1308, 1309,+    1310, 1311,+    1312, 1313,+    1314, 1315,+    1316, 1317,+    1318, 1319,+    1320, 1321,+    1322, 1323,+    1324, 1325,+    1326, 1327,+    1329, 1377,+    1330, 1378,+    1331, 1379,+    1332, 1380,+    1333, 1381,+    1334, 1382,+    1335, 1383,+    1336, 1384,+    1337, 1385,+    1338, 1386,+    1339, 1387,+    1340, 1388,+    1341, 1389,+    1342, 1390,+    1343, 1391,+    1344, 1392,+    1345, 1393,+    1346, 1394,+    1347, 1395,+    1348, 1396,+    1349, 1397,+    1350, 1398,+    1351, 1399,+    1352, 1400,+    1353, 1401,+    1354, 1402,+    1355, 1403,+    1356, 1404,+    1357, 1405,+    1358, 1406,+    1359, 1407,+    1360, 1408,+    1361, 1409,+    1362, 1410,+    1363, 1411,+    1364, 1412,+    1365, 1413,+    1366, 1414,+    4256, 11520,+    4257, 11521,+    4258, 11522,+    4259, 11523,+    4260, 11524,+    4261, 11525,+    4262, 11526,+    4263, 11527,+    4264, 11528,+    4265, 11529,+    4266, 11530,+    4267, 11531,+    4268, 11532,+    4269, 11533,+    4270, 11534,+    4271, 11535,+    4272, 11536,+    4273, 11537,+    4274, 11538,+    4275, 11539,+    4276, 11540,+    4277, 11541,+    4278, 11542,+    4279, 11543,+    4280, 11544,+    4281, 11545,+    4282, 11546,+    4283, 11547,+    4284, 11548,+    4285, 11549,+    4286, 11550,+    4287, 11551,+    4288, 11552,+    4289, 11553,+    4290, 11554,+    4291, 11555,+    4292, 11556,+    4293, 11557,+    4295, 11559,+    4301, 11565,+    7680, 7681,+    7682, 7683,+    7684, 7685,+    7686, 7687,+    7688, 7689,+    7690, 7691,+    7692, 7693,+    7694, 7695,+    7696, 7697,+    7698, 7699,+    7700, 7701,+    7702, 7703,+    7704, 7705,+    7706, 7707,+    7708, 7709,+    7710, 7711,+    7712, 7713,+    7714, 7715,+    7716, 7717,+    7718, 7719,+    7720, 7721,+    7722, 7723,+    7724, 7725,+    7726, 7727,+    7728, 7729,+    7730, 7731,+    7732, 7733,+    7734, 7735,+    7736, 7737,+    7738, 7739,+    7740, 7741,+    7742, 7743,+    7744, 7745,+    7746, 7747,+    7748, 7749,+    7750, 7751,+    7752, 7753,+    7754, 7755,+    7756, 7757,+    7758, 7759,+    7760, 7761,+    7762, 7763,+    7764, 7765,+    7766, 7767,+    7768, 7769,+    7770, 7771,+    7772, 7773,+    7774, 7775,+    7776, 7777,+    7778, 7779,+    7780, 7781,+    7782, 7783,+    7784, 7785,+    7786, 7787,+    7788, 7789,+    7790, 7791,+    7792, 7793,+    7794, 7795,+    7796, 7797,+    7798, 7799,+    7800, 7801,+    7802, 7803,+    7804, 7805,+    7806, 7807,+    7808, 7809,+    7810, 7811,+    7812, 7813,+    7814, 7815,+    7816, 7817,+    7818, 7819,+    7820, 7821,+    7822, 7823,+    7824, 7825,+    7826, 7827,+    7828, 7829,+    7838, 223,+    7840, 7841,+    7842, 7843,+    7844, 7845,+    7846, 7847,+    7848, 7849,+    7850, 7851,+    7852, 7853,+    7854, 7855,+    7856, 7857,+    7858, 7859,+    7860, 7861,+    7862, 7863,+    7864, 7865,+    7866, 7867,+    7868, 7869,+    7870, 7871,+    7872, 7873,+    7874, 7875,+    7876, 7877,+    7878, 7879,+    7880, 7881,+    7882, 7883,+    7884, 7885,+    7886, 7887,+    7888, 7889,+    7890, 7891,+    7892, 7893,+    7894, 7895,+    7896, 7897,+    7898, 7899,+    7900, 7901,+    7902, 7903,+    7904, 7905,+    7906, 7907,+    7908, 7909,+    7910, 7911,+    7912, 7913,+    7914, 7915,+    7916, 7917,+    7918, 7919,+    7920, 7921,+    7922, 7923,+    7924, 7925,+    7926, 7927,+    7928, 7929,+    7930, 7931,+    7932, 7933,+    7934, 7935,+    7944, 7936,+    7945, 7937,+    7946, 7938,+    7947, 7939,+    7948, 7940,+    7949, 7941,+    7950, 7942,+    7951, 7943,+    7960, 7952,+    7961, 7953,+    7962, 7954,+    7963, 7955,+    7964, 7956,+    7965, 7957,+    7976, 7968,+    7977, 7969,+    7978, 7970,+    7979, 7971,+    7980, 7972,+    7981, 7973,+    7982, 7974,+    7983, 7975,+    7992, 7984,+    7993, 7985,+    7994, 7986,+    7995, 7987,+    7996, 7988,+    7997, 7989,+    7998, 7990,+    7999, 7991,+    8008, 8000,+    8009, 8001,+    8010, 8002,+    8011, 8003,+    8012, 8004,+    8013, 8005,+    8025, 8017,+    8027, 8019,+    8029, 8021,+    8031, 8023,+    8040, 8032,+    8041, 8033,+    8042, 8034,+    8043, 8035,+    8044, 8036,+    8045, 8037,+    8046, 8038,+    8047, 8039,+    8120, 8112,+    8121, 8113,+    8122, 8048,+    8123, 8049,+    8136, 8050,+    8137, 8051,+    8138, 8052,+    8139, 8053,+    8152, 8144,+    8153, 8145,+    8154, 8054,+    8155, 8055,+    8168, 8160,+    8169, 8161,+    8170, 8058,+    8171, 8059,+    8172, 8165,+    8184, 8056,+    8185, 8057,+    8186, 8060,+    8187, 8061,+    8466, 8467,+    8496, 8495,+    8498, 8526,+    8510, 8509,+    8511, 8508,+    8517, 8518,+    11264, 11312,+    11265, 11313,+    11266, 11314,+    11267, 11315,+    11268, 11316,+    11269, 11317,+    11270, 11318,+    11271, 11319,+    11272, 11320,+    11273, 11321,+    11274, 11322,+    11275, 11323,+    11276, 11324,+    11277, 11325,+    11278, 11326,+    11279, 11327,+    11280, 11328,+    11281, 11329,+    11282, 11330,+    11283, 11331,+    11284, 11332,+    11285, 11333,+    11286, 11334,+    11287, 11335,+    11288, 11336,+    11289, 11337,+    11290, 11338,+    11291, 11339,+    11292, 11340,+    11293, 11341,+    11294, 11342,+    11295, 11343,+    11296, 11344,+    11297, 11345,+    11298, 11346,+    11299, 11347,+    11300, 11348,+    11301, 11349,+    11302, 11350,+    11303, 11351,+    11304, 11352,+    11305, 11353,+    11306, 11354,+    11307, 11355,+    11308, 11356,+    11309, 11357,+    11310, 11358,+    11311, 11359,+    11360, 11361,+    11362, 619,+    11363, 7549,+    11364, 637,+    11367, 11368,+    11369, 11370,+    11371, 11372,+    11373, 593,+    11374, 625,+    11375, 592,+    11376, 594,+    11378, 11379,+    11381, 11382,+    11390, 575,+    11391, 576,+    11392, 11393,+    11394, 11395,+    11396, 11397,+    11398, 11399,+    11400, 11401,+    11402, 11403,+    11404, 11405,+    11406, 11407,+    11408, 11409,+    11410, 11411,+    11412, 11413,+    11414, 11415,+    11416, 11417,+    11418, 11419,+    11420, 11421,+    11422, 11423,+    11424, 11425,+    11426, 11427,+    11428, 11429,+    11430, 11431,+    11432, 11433,+    11434, 11435,+    11436, 11437,+    11438, 11439,+    11440, 11441,+    11442, 11443,+    11444, 11445,+    11446, 11447,+    11448, 11449,+    11450, 11451,+    11452, 11453,+    11454, 11455,+    11456, 11457,+    11458, 11459,+    11460, 11461,+    11462, 11463,+    11464, 11465,+    11466, 11467,+    11468, 11469,+    11470, 11471,+    11472, 11473,+    11474, 11475,+    11476, 11477,+    11478, 11479,+    11480, 11481,+    11482, 11483,+    11484, 11485,+    11486, 11487,+    11488, 11489,+    11490, 11491,+    11499, 11500,+    11501, 11502,+    11506, 11507,+    42560, 42561,+    42562, 42563,+    42564, 42565,+    42566, 42567,+    42568, 42569,+    42570, 42571,+    42572, 42573,+    42574, 42575,+    42576, 42577,+    42578, 42579,+    42580, 42581,+    42582, 42583,+    42584, 42585,+    42586, 42587,+    42588, 42589,+    42590, 42591,+    42592, 42593,+    42594, 42595,+    42596, 42597,+    42598, 42599,+    42600, 42601,+    42602, 42603,+    42604, 42605,+    42624, 42625,+    42626, 42627,+    42628, 42629,+    42630, 42631,+    42632, 42633,+    42634, 42635,+    42636, 42637,+    42638, 42639,+    42640, 42641,+    42642, 42643,+    42644, 42645,+    42646, 42647,+    42648, 42649,+    42650, 42651,+    42786, 42787,+    42788, 42789,+    42790, 42791,+    42792, 42793,+    42794, 42795,+    42796, 42797,+    42798, 42799,+    42802, 42803,+    42804, 42805,+    42806, 42807,+    42808, 42809,+    42810, 42811,+    42812, 42813,+    42814, 42815,+    42816, 42817,+    42818, 42819,+    42820, 42821,+    42822, 42823,+    42824, 42825,+    42826, 42827,+    42828, 42829,+    42830, 42831,+    42832, 42833,+    42834, 42835,+    42836, 42837,+    42838, 42839,+    42840, 42841,+    42842, 42843,+    42844, 42845,+    42846, 42847,+    42848, 42849,+    42850, 42851,+    42852, 42853,+    42854, 42855,+    42856, 42857,+    42858, 42859,+    42860, 42861,+    42862, 42863,+    42873, 42874,+    42875, 42876,+    42877, 7545,+    42878, 42879,+    42880, 42881,+    42882, 42883,+    42884, 42885,+    42886, 42887,+    42891, 42892,+    42893, 613,+    42896, 42897,+    42898, 42899,+    42902, 42903,+    42904, 42905,+    42906, 42907,+    42908, 42909,+    42910, 42911,+    42912, 42913,+    42914, 42915,+    42916, 42917,+    42918, 42919,+    42920, 42921,+    42922, 614,+    42923, 604,+    42924, 609,+    42925, 620,+    42928, 670,+    42929, 647,+    42930, 669,+    42931, 43859,+    42932, 42933,+    42934, 42935,+    42936, 42937,+    42938, 42939,+    42940, 42941,+    42942, 42943,+    42944, 42945,+    42946, 42947,+    42948, 42900,+    42949, 642,+    42950, 7566,+    42951, 42952,+    42953, 42954,+    42960, 42961,+    42966, 42967,+    42968, 42969,+    42997, 42998,+    65313, 65345,+    65314, 65346,+    65315, 65347,+    65316, 65348,+    65317, 65349,+    65318, 65350,+    65319, 65351,+    65320, 65352,+    65321, 65353,+    65322, 65354,+    65323, 65355,+    65324, 65356,+    65325, 65357,+    65326, 65358,+    65327, 65359,+    65328, 65360,+    65329, 65361,+    65330, 65362,+    65331, 65363,+    65332, 65364,+    65333, 65365,+    65334, 65366,+    65335, 65367,+    65336, 65368,+    65337, 65369,+    65338, 65370,+    66560, 66600,+    66561, 66601,+    66562, 66602,+    66563, 66603,+    66564, 66604,+    66565, 66605,+    66566, 66606,+    66567, 66607,+    66568, 66608,+    66569, 66609,+    66570, 66610,+    66571, 66611,+    66572, 66612,+    66573, 66613,+    66574, 66614,+    66575, 66615,+    66576, 66616,+    66577, 66617,+    66578, 66618,+    66579, 66619,+    66580, 66620,+    66581, 66621,+    66582, 66622,+    66583, 66623,+    66584, 66624,+    66585, 66625,+    66586, 66626,+    66587, 66627,+    66588, 66628,+    66589, 66629,+    66590, 66630,+    66591, 66631,+    66592, 66632,+    66593, 66633,+    66594, 66634,+    66595, 66635,+    66596, 66636,+    66597, 66637,+    66598, 66638,+    66599, 66639,+    66736, 66776,+    66737, 66777,+    66738, 66778,+    66739, 66779,+    66740, 66780,+    66741, 66781,+    66742, 66782,+    66743, 66783,+    66744, 66784,+    66745, 66785,+    66746, 66786,+    66747, 66787,+    66748, 66788,+    66749, 66789,+    66750, 66790,+    66751, 66791,+    66752, 66792,+    66753, 66793,+    66754, 66794,+    66755, 66795,+    66756, 66796,+    66757, 66797,+    66758, 66798,+    66759, 66799,+    66760, 66800,+    66761, 66801,+    66762, 66802,+    66763, 66803,+    66764, 66804,+    66765, 66805,+    66766, 66806,+    66767, 66807,+    66768, 66808,+    66769, 66809,+    66770, 66810,+    66771, 66811,+    66928, 66967,+    66929, 66968,+    66930, 66969,+    66931, 66970,+    66932, 66971,+    66933, 66972,+    66934, 66973,+    66935, 66974,+    66936, 66975,+    66937, 66976,+    66938, 66977,+    66940, 66979,+    66941, 66980,+    66942, 66981,+    66943, 66982,+    66944, 66983,+    66945, 66984,+    66946, 66985,+    66947, 66986,+    66948, 66987,+    66949, 66988,+    66950, 66989,+    66951, 66990,+    66952, 66991,+    66953, 66992,+    66954, 66993,+    66956, 66995,+    66957, 66996,+    66958, 66997,+    66959, 66998,+    66960, 66999,+    66961, 67000,+    66962, 67001,+    66964, 67003,+    66965, 67004,+    68736, 68800,+    68737, 68801,+    68738, 68802,+    68739, 68803,+    68740, 68804,+    68741, 68805,+    68742, 68806,+    68743, 68807,+    68744, 68808,+    68745, 68809,+    68746, 68810,+    68747, 68811,+    68748, 68812,+    68749, 68813,+    68750, 68814,+    68751, 68815,+    68752, 68816,+    68753, 68817,+    68754, 68818,+    68755, 68819,+    68756, 68820,+    68757, 68821,+    68758, 68822,+    68759, 68823,+    68760, 68824,+    68761, 68825,+    68762, 68826,+    68763, 68827,+    68764, 68828,+    68765, 68829,+    68766, 68830,+    68767, 68831,+    68768, 68832,+    68769, 68833,+    68770, 68834,+    68771, 68835,+    68772, 68836,+    68773, 68837,+    68774, 68838,+    68775, 68839,+    68776, 68840,+    68777, 68841,+    68778, 68842,+    68779, 68843,+    68780, 68844,+    68781, 68845,+    68782, 68846,+    68783, 68847,+    68784, 68848,+    68785, 68849,+    68786, 68850,+    71840, 71872,+    71841, 71873,+    71842, 71874,+    71843, 71875,+    71844, 71876,+    71845, 71877,+    71846, 71878,+    71847, 71879,+    71848, 71880,+    71849, 71881,+    71850, 71882,+    71851, 71883,+    71852, 71884,+    71853, 71885,+    71854, 71886,+    71855, 71887,+    71856, 71888,+    71857, 71889,+    71858, 71890,+    71859, 71891,+    71860, 71892,+    71861, 71893,+    71862, 71894,+    71863, 71895,+    71864, 71896,+    71865, 71897,+    71866, 71898,+    71867, 71899,+    71868, 71900,+    71869, 71901,+    71870, 71902,+    71871, 71903,+    93760, 93792,+    93761, 93793,+    93762, 93794,+    93763, 93795,+    93764, 93796,+    93765, 93797,+    93766, 93798,+    93767, 93799,+    93768, 93800,+    93769, 93801,+    93770, 93802,+    93771, 93803,+    93772, 93804,+    93773, 93805,+    93774, 93806,+    93775, 93807,+    93776, 93808,+    93777, 93809,+    93778, 93810,+    93779, 93811,+    93780, 93812,+    93781, 93813,+    93782, 93814,+    93783, 93815,+    93784, 93816,+    93785, 93817,+    93786, 93818,+    93787, 93819,+    93788, 93820,+    93789, 93821,+    93790, 93822,+    93791, 93823,+    119808, 119834,+    119809, 119835,+    119810, 119836,+    119811, 119837,+    119812, 119838,+    119813, 119839,+    119814, 119840,+    119815, 119841,+    119816, 119842,+    119817, 119843,+    119818, 119844,+    119819, 119845,+    119820, 119846,+    119821, 119847,+    119822, 119848,+    119823, 119849,+    119824, 119850,+    119825, 119851,+    119826, 119852,+    119827, 119853,+    119828, 119854,+    119829, 119855,+    119830, 119856,+    119831, 119857,+    119832, 119858,+    119833, 119859,+    119860, 119886,+    119861, 119887,+    119862, 119888,+    119863, 119889,+    119864, 119890,+    119865, 119891,+    119866, 119892,+    119868, 119894,+    119869, 119895,+    119870, 119896,+    119871, 119897,+    119872, 119898,+    119873, 119899,+    119874, 119900,+    119875, 119901,+    119876, 119902,+    119877, 119903,+    119878, 119904,+    119879, 119905,+    119880, 119906,+    119881, 119907,+    119882, 119908,+    119883, 119909,+    119884, 119910,+    119885, 119911,+    119912, 119938,+    119913, 119939,+    119914, 119940,+    119915, 119941,+    119916, 119942,+    119917, 119943,+    119918, 119944,+    119919, 119945,+    119920, 119946,+    119921, 119947,+    119922, 119948,+    119923, 119949,+    119924, 119950,+    119925, 119951,+    119926, 119952,+    119927, 119953,+    119928, 119954,+    119929, 119955,+    119930, 119956,+    119931, 119957,+    119932, 119958,+    119933, 119959,+    119934, 119960,+    119935, 119961,+    119936, 119962,+    119937, 119963,+    119964, 119990,+    119966, 119992,+    119967, 119993,+    119973, 119999,+    119974, 120000,+    119977, 120003,+    119979, 120005,+    119980, 120006,+    119982, 120008,+    119983, 120009,+    119984, 120010,+    119985, 120011,+    119986, 120012,+    119987, 120013,+    119988, 120014,+    119989, 120015,+    120016, 120042,+    120017, 120043,+    120018, 120044,+    120019, 120045,+    120020, 120046,+    120021, 120047,+    120022, 120048,+    120023, 120049,+    120024, 120050,+    120025, 120051,+    120026, 120052,+    120027, 120053,+    120028, 120054,+    120029, 120055,+    120030, 120056,+    120031, 120057,+    120032, 120058,+    120033, 120059,+    120034, 120060,+    120035, 120061,+    120036, 120062,+    120037, 120063,+    120038, 120064,+    120039, 120065,+    120040, 120066,+    120041, 120067,+    120068, 120094,+    120069, 120095,+    120071, 120097,+    120072, 120098,+    120073, 120099,+    120074, 120100,+    120077, 120103,+    120078, 120104,+    120079, 120105,+    120080, 120106,+    120081, 120107,+    120082, 120108,+    120083, 120109,+    120084, 120110,+    120086, 120112,+    120087, 120113,+    120088, 120114,+    120089, 120115,+    120090, 120116,+    120091, 120117,+    120092, 120118,+    120120, 120146,+    120121, 120147,+    120123, 120149,+    120124, 120150,+    120125, 120151,+    120126, 120152,+    120128, 120154,+    120129, 120155,+    120130, 120156,+    120131, 120157,+    120132, 120158,+    120134, 120160,+    120138, 120164,+    120139, 120165,+    120140, 120166,+    120141, 120167,+    120142, 120168,+    120143, 120169,+    120144, 120170,+    120172, 120198,+    120173, 120199,+    120174, 120200,+    120175, 120201,+    120176, 120202,+    120177, 120203,+    120178, 120204,+    120179, 120205,+    120180, 120206,+    120181, 120207,+    120182, 120208,+    120183, 120209,+    120184, 120210,+    120185, 120211,+    120186, 120212,+    120187, 120213,+    120188, 120214,+    120189, 120215,+    120190, 120216,+    120191, 120217,+    120192, 120218,+    120193, 120219,+    120194, 120220,+    120195, 120221,+    120196, 120222,+    120197, 120223,+    120224, 120250,+    120225, 120251,+    120226, 120252,+    120227, 120253,+    120228, 120254,+    120229, 120255,+    120230, 120256,+    120231, 120257,+    120232, 120258,+    120233, 120259,+    120234, 120260,+    120235, 120261,+    120236, 120262,+    120237, 120263,+    120238, 120264,+    120239, 120265,+    120240, 120266,+    120241, 120267,+    120242, 120268,+    120243, 120269,+    120244, 120270,+    120245, 120271,+    120246, 120272,+    120247, 120273,+    120248, 120274,+    120249, 120275,+    120276, 120302,+    120277, 120303,+    120278, 120304,+    120279, 120305,+    120280, 120306,+    120281, 120307,+    120282, 120308,+    120283, 120309,+    120284, 120310,+    120285, 120311,+    120286, 120312,+    120287, 120313,+    120288, 120314,+    120289, 120315,+    120290, 120316,+    120291, 120317,+    120292, 120318,+    120293, 120319,+    120294, 120320,+    120295, 120321,+    120296, 120322,+    120297, 120323,+    120298, 120324,+    120299, 120325,+    120300, 120326,+    120301, 120327,+    120328, 120354,+    120329, 120355,+    120330, 120356,+    120331, 120357,+    120332, 120358,+    120333, 120359,+    120334, 120360,+    120335, 120361,+    120336, 120362,+    120337, 120363,+    120338, 120364,+    120339, 120365,+    120340, 120366,+    120341, 120367,+    120342, 120368,+    120343, 120369,+    120344, 120370,+    120345, 120371,+    120346, 120372,+    120347, 120373,+    120348, 120374,+    120349, 120375,+    120350, 120376,+    120351, 120377,+    120352, 120378,+    120353, 120379,+    120380, 120406,+    120381, 120407,+    120382, 120408,+    120383, 120409,+    120384, 120410,+    120385, 120411,+    120386, 120412,+    120387, 120413,+    120388, 120414,+    120389, 120415,+    120390, 120416,+    120391, 120417,+    120392, 120418,+    120393, 120419,+    120394, 120420,+    120395, 120421,+    120396, 120422,+    120397, 120423,+    120398, 120424,+    120399, 120425,+    120400, 120426,+    120401, 120427,+    120402, 120428,+    120403, 120429,+    120404, 120430,+    120405, 120431,+    120432, 120458,+    120433, 120459,+    120434, 120460,+    120435, 120461,+    120436, 120462,+    120437, 120463,+    120438, 120464,+    120439, 120465,+    120440, 120466,+    120441, 120467,+    120442, 120468,+    120443, 120469,+    120444, 120470,+    120445, 120471,+    120446, 120472,+    120447, 120473,+    120448, 120474,+    120449, 120475,+    120450, 120476,+    120451, 120477,+    120452, 120478,+    120453, 120479,+    120454, 120480,+    120455, 120481,+    120456, 120482,+    120457, 120483,+    120488, 120514,+    120489, 120515,+    120490, 120516,+    120491, 120517,+    120492, 120518,+    120493, 120519,+    120494, 120520,+    120495, 120521,+    120496, 120522,+    120497, 120523,+    120498, 120524,+    120499, 120525,+    120500, 120526,+    120501, 120527,+    120502, 120528,+    120503, 120529,+    120504, 120530,+    120506, 120532,+    120507, 120533,+    120508, 120534,+    120509, 120535,+    120510, 120536,+    120511, 120537,+    120512, 120538,+    120546, 120572,+    120547, 120573,+    120548, 120574,+    120549, 120575,+    120550, 120576,+    120551, 120577,+    120552, 120578,+    120553, 120579,+    120554, 120580,+    120555, 120581,+    120556, 120582,+    120557, 120583,+    120558, 120584,+    120559, 120585,+    120560, 120586,+    120561, 120587,+    120562, 120588,+    120564, 120590,+    120565, 120591,+    120566, 120592,+    120567, 120593,+    120568, 120594,+    120569, 120595,+    120570, 120596,+    120604, 120630,+    120605, 120631,+    120606, 120632,+    120607, 120633,+    120608, 120634,+    120609, 120635,+    120610, 120636,+    120611, 120637,+    120612, 120638,+    120613, 120639,+    120614, 120640,+    120615, 120641,+    120616, 120642,+    120617, 120643,+    120618, 120644,+    120619, 120645,+    120620, 120646,+    120622, 120648,+    120623, 120649,+    120624, 120650,+    120625, 120651,+    120626, 120652,+    120627, 120653,+    120628, 120654,+    120662, 120688,+    120663, 120689,+    120664, 120690,+    120665, 120691,+    120666, 120692,+    120667, 120693,+    120668, 120694,+    120669, 120695,+    120670, 120696,+    120671, 120697,+    120672, 120698,+    120673, 120699,+    120674, 120700,+    120675, 120701,+    120676, 120702,+    120677, 120703,+    120678, 120704,+    120680, 120706,+    120681, 120707,+    120682, 120708,+    120683, 120709,+    120684, 120710,+    120685, 120711,+    120686, 120712,+    120720, 120746,+    120721, 120747,+    120722, 120748,+    120723, 120749,+    120724, 120750,+    120725, 120751,+    120726, 120752,+    120727, 120753,+    120728, 120754,+    120729, 120755,+    120730, 120756,+    120731, 120757,+    120732, 120758,+    120733, 120759,+    120734, 120760,+    120735, 120761,+    120736, 120762,+    120738, 120764,+    120739, 120765,+    120740, 120766,+    120741, 120767,+    120742, 120768,+    120743, 120769,+    120744, 120770,+    120778, 120779,+    125184, 125218,+    125185, 125219,+    125186, 125220,+    125187, 125221,+    125188, 125222,+    125189, 125223,+    125190, 125224,+    125191, 125225,+    125192, 125226,+    125193, 125227,+    125194, 125228,+    125195, 125229,+    125196, 125230,+    125197, 125231,+    125198, 125232,+    125199, 125233,+    125200, 125234,+    125201, 125235,+    125202, 125236,+    125203, 125237,+    125204, 125238,+    125205, 125239,+    125206, 125240,+    125207, 125241,+    125208, 125242,+    125209, 125243,+    125210, 125244,+    125211, 125245,+    125212, 125246,+    125213, 125247,+    125214, 125248,+    125215, 125249,+    125216, 125250,+    125217, 125251,+  };+  const int key[2] = { c, 0 };+  const int *val = static_cast<const int*>(std::bsearch(key, ul, 1647, sizeof(key), &cmpint2));+  return val != NULL ? val[1] : c;+}++int reflex::Unicode::Tables::toupper(int c)+{+  static const int lu[] = {+    97, 65,+    98, 66,+    99, 67,+    100, 68,+    101, 69,+    102, 70,+    103, 71,+    104, 72,+    105, 73,+    106, 74,+    107, 75,+    108, 76,+    109, 77,+    110, 78,+    111, 79,+    112, 80,+    113, 81,+    114, 82,+    115, 83,+    116, 84,+    117, 85,+    118, 86,+    119, 87,+    120, 88,+    121, 89,+    122, 90,+    223, 7838,+    224, 192,+    225, 193,+    226, 194,+    227, 195,+    228, 196,+    229, 197,+    230, 198,+    231, 199,+    232, 200,+    233, 201,+    234, 202,+    235, 203,+    236, 204,+    237, 205,+    238, 206,+    239, 207,+    240, 208,+    241, 209,+    242, 210,+    243, 211,+    244, 212,+    245, 213,+    246, 214,+    248, 216,+    249, 217,+    250, 218,+    251, 219,+    252, 220,+    253, 221,+    254, 222,+    255, 376,+    257, 256,+    259, 258,+    261, 260,+    263, 262,+    265, 264,+    267, 266,+    269, 268,+    271, 270,+    273, 272,+    275, 274,+    277, 276,+    279, 278,+    281, 280,+    283, 282,+    285, 284,+    287, 286,+    289, 288,+    291, 290,+    293, 292,+    295, 294,+    297, 296,+    299, 298,+    301, 300,+    303, 302,+    307, 306,+    309, 308,+    311, 310,+    314, 313,+    316, 315,+    318, 317,+    320, 319,+    322, 321,+    324, 323,+    326, 325,+    328, 327,+    331, 330,+    333, 332,+    335, 334,+    337, 336,+    339, 338,+    341, 340,+    343, 342,+    345, 344,+    347, 346,+    349, 348,+    351, 350,+    353, 352,+    355, 354,+    357, 356,+    359, 358,+    361, 360,+    363, 362,+    365, 364,+    367, 366,+    369, 368,+    371, 370,+    373, 372,+    375, 374,+    378, 377,+    380, 379,+    382, 381,+    384, 579,+    387, 386,+    389, 388,+    392, 391,+    396, 395,+    402, 401,+    409, 408,+    410, 573,+    414, 544,+    417, 416,+    419, 418,+    421, 420,+    424, 423,+    429, 428,+    432, 431,+    436, 435,+    438, 437,+    441, 440,+    445, 444,+    454, 452,+    457, 455,+    460, 458,+    462, 461,+    464, 463,+    466, 465,+    468, 467,+    470, 469,+    472, 471,+    474, 473,+    476, 475,+    479, 478,+    481, 480,+    483, 482,+    485, 484,+    487, 486,+    489, 488,+    491, 490,+    493, 492,+    495, 494,+    499, 497,+    501, 500,+    505, 504,+    507, 506,+    509, 508,+    511, 510,+    513, 512,+    515, 514,+    517, 516,+    519, 518,+    521, 520,+    523, 522,+    525, 524,+    527, 526,+    529, 528,+    531, 530,+    533, 532,+    535, 534,+    537, 536,+    539, 538,+    541, 540,+    543, 542,+    547, 546,+    549, 548,+    551, 550,+    553, 552,+    555, 554,+    557, 556,+    559, 558,+    561, 560,+    563, 562,+    572, 571,+    575, 11390,+    576, 11391,+    578, 577,+    583, 582,+    585, 584,+    589, 588,+    591, 590,+    592, 11375,+    593, 11373,+    594, 11376,+    595, 385,+    596, 390,+    599, 394,+    600, 398,+    601, 399,+    603, 400,+    604, 42923,+    608, 403,+    609, 42924,+    611, 404,+    613, 42893,+    614, 42922,+    616, 407,+    617, 406,+    619, 11362,+    620, 42925,+    623, 412,+    625, 11374,+    626, 413,+    637, 11364,+    642, 42949,+    643, 425,+    647, 42929,+    648, 430,+    649, 580,+    650, 433,+    651, 434,+    652, 581,+    658, 439,+    669, 42930,+    670, 42928,+    881, 880,+    883, 882,+    887, 886,+    891, 1021,+    892, 1022,+    893, 1023,+    940, 902,+    941, 904,+    942, 905,+    943, 906,+    945, 913,+    946, 914,+    947, 915,+    948, 916,+    949, 917,+    950, 918,+    951, 919,+    952, 920,+    953, 921,+    954, 922,+    955, 923,+    956, 924,+    957, 925,+    958, 926,+    959, 927,+    960, 928,+    961, 929,+    963, 931,+    964, 932,+    965, 933,+    966, 934,+    967, 935,+    968, 936,+    969, 937,+    970, 938,+    971, 939,+    972, 908,+    973, 910,+    974, 911,+    995, 994,+    997, 996,+    999, 998,+    1001, 1000,+    1003, 1002,+    1005, 1004,+    1007, 1006,+    1016, 1015,+    1019, 1018,+    1072, 1040,+    1073, 1041,+    1074, 1042,+    1075, 1043,+    1076, 1044,+    1077, 1045,+    1078, 1046,+    1079, 1047,+    1080, 1048,+    1081, 1049,+    1082, 1050,+    1083, 1051,+    1084, 1052,+    1085, 1053,+    1086, 1054,+    1087, 1055,+    1088, 1056,+    1089, 1057,+    1090, 1058,+    1091, 1059,+    1092, 1060,+    1093, 1061,+    1094, 1062,+    1095, 1063,+    1096, 1064,+    1097, 1065,+    1098, 1066,+    1099, 1067,+    1100, 1068,+    1101, 1069,+    1102, 1070,+    1103, 1071,+    1104, 1024,+    1105, 1025,+    1106, 1026,+    1107, 1027,+    1108, 1028,+    1109, 1029,+    1110, 1030,+    1111, 1031,+    1112, 1032,+    1113, 1033,+    1114, 1034,+    1115, 1035,+    1116, 1036,+    1117, 1037,+    1118, 1038,+    1119, 1039,+    1121, 1120,+    1123, 1122,+    1125, 1124,+    1127, 1126,+    1129, 1128,+    1131, 1130,+    1133, 1132,+    1135, 1134,+    1137, 1136,+    1139, 1138,+    1141, 1140,+    1143, 1142,+    1145, 1144,+    1147, 1146,+    1149, 1148,+    1151, 1150,+    1153, 1152,+    1163, 1162,+    1165, 1164,+    1167, 1166,+    1169, 1168,+    1171, 1170,+    1173, 1172,+    1175, 1174,+    1177, 1176,+    1179, 1178,+    1181, 1180,+    1183, 1182,+    1185, 1184,+    1187, 1186,+    1189, 1188,+    1191, 1190,+    1193, 1192,+    1195, 1194,+    1197, 1196,+    1199, 1198,+    1201, 1200,+    1203, 1202,+    1205, 1204,+    1207, 1206,+    1209, 1208,+    1211, 1210,+    1213, 1212,+    1215, 1214,+    1218, 1217,+    1220, 1219,+    1222, 1221,+    1224, 1223,+    1226, 1225,+    1228, 1227,+    1230, 1229,+    1233, 1232,+    1235, 1234,+    1237, 1236,+    1239, 1238,+    1241, 1240,+    1243, 1242,+    1245, 1244,+    1247, 1246,+    1249, 1248,+    1251, 1250,+    1253, 1252,+    1255, 1254,+    1257, 1256,+    1259, 1258,+    1261, 1260,+    1263, 1262,+    1265, 1264,+    1267, 1266,+    1269, 1268,+    1271, 1270,+    1273, 1272,+    1275, 1274,+    1277, 1276,+    1279, 1278,+    1281, 1280,+    1283, 1282,+    1285, 1284,+    1287, 1286,+    1289, 1288,+    1291, 1290,+    1293, 1292,+    1295, 1294,+    1297, 1296,+    1299, 1298,+    1301, 1300,+    1303, 1302,+    1305, 1304,+    1307, 1306,+    1309, 1308,+    1311, 1310,+    1313, 1312,+    1315, 1314,+    1317, 1316,+    1319, 1318,+    1321, 1320,+    1323, 1322,+    1325, 1324,+    1327, 1326,+    1377, 1329,+    1378, 1330,+    1379, 1331,+    1380, 1332,+    1381, 1333,+    1382, 1334,+    1383, 1335,+    1384, 1336,+    1385, 1337,+    1386, 1338,+    1387, 1339,+    1388, 1340,+    1389, 1341,+    1390, 1342,+    1391, 1343,+    1392, 1344,+    1393, 1345,+    1394, 1346,+    1395, 1347,+    1396, 1348,+    1397, 1349,+    1398, 1350,+    1399, 1351,+    1400, 1352,+    1401, 1353,+    1402, 1354,+    1403, 1355,+    1404, 1356,+    1405, 1357,+    1406, 1358,+    1407, 1359,+    1408, 1360,+    1409, 1361,+    1410, 1362,+    1411, 1363,+    1412, 1364,+    1413, 1365,+    1414, 1366,+    7545, 42877,+    7549, 11363,+    7566, 42950,+    7681, 7680,+    7683, 7682,+    7685, 7684,+    7687, 7686,+    7689, 7688,+    7691, 7690,+    7693, 7692,+    7695, 7694,+    7697, 7696,+    7699, 7698,+    7701, 7700,+    7703, 7702,+    7705, 7704,+    7707, 7706,+    7709, 7708,+    7711, 7710,+    7713, 7712,+    7715, 7714,+    7717, 7716,+    7719, 7718,+    7721, 7720,+    7723, 7722,+    7725, 7724,+    7727, 7726,+    7729, 7728,+    7731, 7730,+    7733, 7732,+    7735, 7734,+    7737, 7736,+    7739, 7738,+    7741, 7740,+    7743, 7742,+    7745, 7744,+    7747, 7746,+    7749, 7748,+    7751, 7750,+    7753, 7752,+    7755, 7754,+    7757, 7756,+    7759, 7758,+    7761, 7760,+    7763, 7762,+    7765, 7764,+    7767, 7766,+    7769, 7768,+    7771, 7770,+    7773, 7772,+    7775, 7774,+    7777, 7776,+    7779, 7778,+    7781, 7780,+    7783, 7782,+    7785, 7784,+    7787, 7786,+    7789, 7788,+    7791, 7790,+    7793, 7792,+    7795, 7794,+    7797, 7796,+    7799, 7798,+    7801, 7800,+    7803, 7802,+    7805, 7804,+    7807, 7806,+    7809, 7808,+    7811, 7810,+    7813, 7812,+    7815, 7814,+    7817, 7816,+    7819, 7818,+    7821, 7820,+    7823, 7822,+    7825, 7824,+    7827, 7826,+    7829, 7828,+    7841, 7840,+    7843, 7842,+    7845, 7844,+    7847, 7846,+    7849, 7848,+    7851, 7850,+    7853, 7852,+    7855, 7854,+    7857, 7856,+    7859, 7858,+    7861, 7860,+    7863, 7862,+    7865, 7864,+    7867, 7866,+    7869, 7868,+    7871, 7870,+    7873, 7872,+    7875, 7874,+    7877, 7876,+    7879, 7878,+    7881, 7880,+    7883, 7882,+    7885, 7884,+    7887, 7886,+    7889, 7888,+    7891, 7890,+    7893, 7892,+    7895, 7894,+    7897, 7896,+    7899, 7898,+    7901, 7900,+    7903, 7902,+    7905, 7904,+    7907, 7906,+    7909, 7908,+    7911, 7910,+    7913, 7912,+    7915, 7914,+    7917, 7916,+    7919, 7918,+    7921, 7920,+    7923, 7922,+    7925, 7924,+    7927, 7926,+    7929, 7928,+    7931, 7930,+    7933, 7932,+    7935, 7934,+    7936, 7944,+    7937, 7945,+    7938, 7946,+    7939, 7947,+    7940, 7948,+    7941, 7949,+    7942, 7950,+    7943, 7951,+    7952, 7960,+    7953, 7961,+    7954, 7962,+    7955, 7963,+    7956, 7964,+    7957, 7965,+    7968, 7976,+    7969, 7977,+    7970, 7978,+    7971, 7979,+    7972, 7980,+    7973, 7981,+    7974, 7982,+    7975, 7983,+    7984, 7992,+    7985, 7993,+    7986, 7994,+    7987, 7995,+    7988, 7996,+    7989, 7997,+    7990, 7998,+    7991, 7999,+    8000, 8008,+    8001, 8009,+    8002, 8010,+    8003, 8011,+    8004, 8012,+    8005, 8013,+    8017, 8025,+    8019, 8027,+    8021, 8029,+    8023, 8031,+    8032, 8040,+    8033, 8041,+    8034, 8042,+    8035, 8043,+    8036, 8044,+    8037, 8045,+    8038, 8046,+    8039, 8047,+    8048, 8122,+    8049, 8123,+    8050, 8136,+    8051, 8137,+    8052, 8138,+    8053, 8139,+    8054, 8154,+    8055, 8155,+    8056, 8184,+    8057, 8185,+    8058, 8170,+    8059, 8171,+    8060, 8186,+    8061, 8187,+    8112, 8120,+    8113, 8121,+    8144, 8152,+    8145, 8153,+    8160, 8168,+    8161, 8169,+    8165, 8172,+    8467, 8466,+    8495, 8496,+    8508, 8511,+    8509, 8510,+    8518, 8517,+    8526, 8498,+    11312, 11264,+    11313, 11265,+    11314, 11266,+    11315, 11267,+    11316, 11268,+    11317, 11269,+    11318, 11270,+    11319, 11271,+    11320, 11272,+    11321, 11273,+    11322, 11274,+    11323, 11275,+    11324, 11276,+    11325, 11277,+    11326, 11278,+    11327, 11279,+    11328, 11280,+    11329, 11281,+    11330, 11282,+    11331, 11283,+    11332, 11284,+    11333, 11285,+    11334, 11286,+    11335, 11287,+    11336, 11288,+    11337, 11289,+    11338, 11290,+    11339, 11291,+    11340, 11292,+    11341, 11293,+    11342, 11294,+    11343, 11295,+    11344, 11296,+    11345, 11297,+    11346, 11298,+    11347, 11299,+    11348, 11300,+    11349, 11301,+    11350, 11302,+    11351, 11303,+    11352, 11304,+    11353, 11305,+    11354, 11306,+    11355, 11307,+    11356, 11308,+    11357, 11309,+    11358, 11310,+    11359, 11311,+    11361, 11360,+    11365, 570,+    11366, 574,+    11368, 11367,+    11370, 11369,+    11372, 11371,+    11379, 11378,+    11382, 11381,+    11393, 11392,+    11395, 11394,+    11397, 11396,+    11399, 11398,+    11401, 11400,+    11403, 11402,+    11405, 11404,+    11407, 11406,+    11409, 11408,+    11411, 11410,+    11413, 11412,+    11415, 11414,+    11417, 11416,+    11419, 11418,+    11421, 11420,+    11423, 11422,+    11425, 11424,+    11427, 11426,+    11429, 11428,+    11431, 11430,+    11433, 11432,+    11435, 11434,+    11437, 11436,+    11439, 11438,+    11441, 11440,+    11443, 11442,+    11445, 11444,+    11447, 11446,+    11449, 11448,+    11451, 11450,+    11453, 11452,+    11455, 11454,+    11457, 11456,+    11459, 11458,+    11461, 11460,+    11463, 11462,+    11465, 11464,+    11467, 11466,+    11469, 11468,+    11471, 11470,+    11473, 11472,+    11475, 11474,+    11477, 11476,+    11479, 11478,+    11481, 11480,+    11483, 11482,+    11485, 11484,+    11487, 11486,+    11489, 11488,+    11491, 11490,+    11500, 11499,+    11502, 11501,+    11507, 11506,+    11520, 4256,+    11521, 4257,+    11522, 4258,+    11523, 4259,+    11524, 4260,+    11525, 4261,+    11526, 4262,+    11527, 4263,+    11528, 4264,+    11529, 4265,+    11530, 4266,+    11531, 4267,+    11532, 4268,+    11533, 4269,+    11534, 4270,+    11535, 4271,+    11536, 4272,+    11537, 4273,+    11538, 4274,+    11539, 4275,+    11540, 4276,+    11541, 4277,+    11542, 4278,+    11543, 4279,+    11544, 4280,+    11545, 4281,+    11546, 4282,+    11547, 4283,+    11548, 4284,+    11549, 4285,+    11550, 4286,+    11551, 4287,+    11552, 4288,+    11553, 4289,+    11554, 4290,+    11555, 4291,+    11556, 4292,+    11557, 4293,+    11559, 4295,+    11565, 4301,+    42561, 42560,+    42563, 42562,+    42565, 42564,+    42567, 42566,+    42569, 42568,+    42571, 42570,+    42573, 42572,+    42575, 42574,+    42577, 42576,+    42579, 42578,+    42581, 42580,+    42583, 42582,+    42585, 42584,+    42587, 42586,+    42589, 42588,+    42591, 42590,+    42593, 42592,+    42595, 42594,+    42597, 42596,+    42599, 42598,+    42601, 42600,+    42603, 42602,+    42605, 42604,+    42625, 42624,+    42627, 42626,+    42629, 42628,+    42631, 42630,+    42633, 42632,+    42635, 42634,+    42637, 42636,+    42639, 42638,+    42641, 42640,+    42643, 42642,+    42645, 42644,+    42647, 42646,+    42649, 42648,+    42651, 42650,+    42787, 42786,+    42789, 42788,+    42791, 42790,+    42793, 42792,+    42795, 42794,+    42797, 42796,+    42799, 42798,+    42803, 42802,+    42805, 42804,+    42807, 42806,+    42809, 42808,+    42811, 42810,+    42813, 42812,+    42815, 42814,+    42817, 42816,+    42819, 42818,+    42821, 42820,+    42823, 42822,+    42825, 42824,+    42827, 42826,+    42829, 42828,+    42831, 42830,+    42833, 42832,+    42835, 42834,+    42837, 42836,+    42839, 42838,+    42841, 42840,+    42843, 42842,+    42845, 42844,+    42847, 42846,+    42849, 42848,+    42851, 42850,+    42853, 42852,+    42855, 42854,+    42857, 42856,+    42859, 42858,+    42861, 42860,+    42863, 42862,+    42874, 42873,+    42876, 42875,+    42879, 42878,+    42881, 42880,+    42883, 42882,+    42885, 42884,+    42887, 42886,+    42892, 42891,+    42897, 42896,+    42899, 42898,+    42900, 42948,+    42903, 42902,+    42905, 42904,+    42907, 42906,+    42909, 42908,+    42911, 42910,+    42913, 42912,+    42915, 42914,+    42917, 42916,+    42919, 42918,+    42921, 42920,+    42933, 42932,+    42935, 42934,+    42937, 42936,+    42939, 42938,+    42941, 42940,+    42943, 42942,+    42945, 42944,+    42947, 42946,+    42952, 42951,+    42954, 42953,+    42961, 42960,+    42967, 42966,+    42969, 42968,+    42998, 42997,+    43859, 42931,+    65345, 65313,+    65346, 65314,+    65347, 65315,+    65348, 65316,+    65349, 65317,+    65350, 65318,+    65351, 65319,+    65352, 65320,+    65353, 65321,+    65354, 65322,+    65355, 65323,+    65356, 65324,+    65357, 65325,+    65358, 65326,+    65359, 65327,+    65360, 65328,+    65361, 65329,+    65362, 65330,+    65363, 65331,+    65364, 65332,+    65365, 65333,+    65366, 65334,+    65367, 65335,+    65368, 65336,+    65369, 65337,+    65370, 65338,+    66600, 66560,+    66601, 66561,+    66602, 66562,+    66603, 66563,+    66604, 66564,+    66605, 66565,+    66606, 66566,+    66607, 66567,+    66608, 66568,+    66609, 66569,+    66610, 66570,+    66611, 66571,+    66612, 66572,+    66613, 66573,+    66614, 66574,+    66615, 66575,+    66616, 66576,+    66617, 66577,+    66618, 66578,+    66619, 66579,+    66620, 66580,+    66621, 66581,+    66622, 66582,+    66623, 66583,+    66624, 66584,+    66625, 66585,+    66626, 66586,+    66627, 66587,+    66628, 66588,+    66629, 66589,+    66630, 66590,+    66631, 66591,+    66632, 66592,+    66633, 66593,+    66634, 66594,+    66635, 66595,+    66636, 66596,+    66637, 66597,+    66638, 66598,+    66639, 66599,+    66776, 66736,+    66777, 66737,+    66778, 66738,+    66779, 66739,+    66780, 66740,+    66781, 66741,+    66782, 66742,+    66783, 66743,+    66784, 66744,+    66785, 66745,+    66786, 66746,+    66787, 66747,+    66788, 66748,+    66789, 66749,+    66790, 66750,+    66791, 66751,+    66792, 66752,+    66793, 66753,+    66794, 66754,+    66795, 66755,+    66796, 66756,+    66797, 66757,+    66798, 66758,+    66799, 66759,+    66800, 66760,+    66801, 66761,+    66802, 66762,+    66803, 66763,+    66804, 66764,+    66805, 66765,+    66806, 66766,+    66807, 66767,+    66808, 66768,+    66809, 66769,+    66810, 66770,+    66811, 66771,+    66967, 66928,+    66968, 66929,+    66969, 66930,+    66970, 66931,+    66971, 66932,+    66972, 66933,+    66973, 66934,+    66974, 66935,+    66975, 66936,+    66976, 66937,+    66977, 66938,+    66979, 66940,+    66980, 66941,+    66981, 66942,+    66982, 66943,+    66983, 66944,+    66984, 66945,+    66985, 66946,+    66986, 66947,+    66987, 66948,+    66988, 66949,+    66989, 66950,+    66990, 66951,+    66991, 66952,+    66992, 66953,+    66993, 66954,+    66995, 66956,+    66996, 66957,+    66997, 66958,+    66998, 66959,+    66999, 66960,+    67000, 66961,+    67001, 66962,+    67003, 66964,+    67004, 66965,+    68800, 68736,+    68801, 68737,+    68802, 68738,+    68803, 68739,+    68804, 68740,+    68805, 68741,+    68806, 68742,+    68807, 68743,+    68808, 68744,+    68809, 68745,+    68810, 68746,+    68811, 68747,+    68812, 68748,+    68813, 68749,+    68814, 68750,+    68815, 68751,+    68816, 68752,+    68817, 68753,+    68818, 68754,+    68819, 68755,+    68820, 68756,+    68821, 68757,+    68822, 68758,+    68823, 68759,+    68824, 68760,+    68825, 68761,+    68826, 68762,+    68827, 68763,+    68828, 68764,+    68829, 68765,+    68830, 68766,+    68831, 68767,+    68832, 68768,+    68833, 68769,+    68834, 68770,+    68835, 68771,+    68836, 68772,+    68837, 68773,+    68838, 68774,+    68839, 68775,+    68840, 68776,+    68841, 68777,+    68842, 68778,+    68843, 68779,+    68844, 68780,+    68845, 68781,+    68846, 68782,+    68847, 68783,+    68848, 68784,+    68849, 68785,+    68850, 68786,+    71872, 71840,+    71873, 71841,+    71874, 71842,+    71875, 71843,+    71876, 71844,+    71877, 71845,+    71878, 71846,+    71879, 71847,+    71880, 71848,+    71881, 71849,+    71882, 71850,+    71883, 71851,+    71884, 71852,+    71885, 71853,+    71886, 71854,+    71887, 71855,+    71888, 71856,+    71889, 71857,+    71890, 71858,+    71891, 71859,+    71892, 71860,+    71893, 71861,+    71894, 71862,+    71895, 71863,+    71896, 71864,+    71897, 71865,+    71898, 71866,+    71899, 71867,+    71900, 71868,+    71901, 71869,+    71902, 71870,+    71903, 71871,+    93792, 93760,+    93793, 93761,+    93794, 93762,+    93795, 93763,+    93796, 93764,+    93797, 93765,+    93798, 93766,+    93799, 93767,+    93800, 93768,+    93801, 93769,+    93802, 93770,+    93803, 93771,+    93804, 93772,+    93805, 93773,+    93806, 93774,+    93807, 93775,+    93808, 93776,+    93809, 93777,+    93810, 93778,+    93811, 93779,+    93812, 93780,+    93813, 93781,+    93814, 93782,+    93815, 93783,+    93816, 93784,+    93817, 93785,+    93818, 93786,+    93819, 93787,+    93820, 93788,+    93821, 93789,+    93822, 93790,+    93823, 93791,+    119834, 119808,+    119835, 119809,+    119836, 119810,+    119837, 119811,+    119838, 119812,+    119839, 119813,+    119840, 119814,+    119841, 119815,+    119842, 119816,+    119843, 119817,+    119844, 119818,+    119845, 119819,+    119846, 119820,+    119847, 119821,+    119848, 119822,+    119849, 119823,+    119850, 119824,+    119851, 119825,+    119852, 119826,+    119853, 119827,+    119854, 119828,+    119855, 119829,+    119856, 119830,+    119857, 119831,+    119858, 119832,+    119859, 119833,+    119886, 119860,+    119887, 119861,+    119888, 119862,+    119889, 119863,+    119890, 119864,+    119891, 119865,+    119892, 119866,+    119894, 119868,+    119895, 119869,+    119896, 119870,+    119897, 119871,+    119898, 119872,+    119899, 119873,+    119900, 119874,+    119901, 119875,+    119902, 119876,+    119903, 119877,+    119904, 119878,+    119905, 119879,+    119906, 119880,+    119907, 119881,+    119908, 119882,+    119909, 119883,+    119910, 119884,+    119911, 119885,+    119938, 119912,+    119939, 119913,+    119940, 119914,+    119941, 119915,+    119942, 119916,+    119943, 119917,+    119944, 119918,+    119945, 119919,+    119946, 119920,+    119947, 119921,+    119948, 119922,+    119949, 119923,+    119950, 119924,+    119951, 119925,+    119952, 119926,+    119953, 119927,+    119954, 119928,+    119955, 119929,+    119956, 119930,+    119957, 119931,+    119958, 119932,+    119959, 119933,+    119960, 119934,+    119961, 119935,+    119962, 119936,+    119963, 119937,+    119990, 119964,+    119992, 119966,+    119993, 119967,+    119999, 119973,+    120000, 119974,+    120003, 119977,+    120005, 119979,+    120006, 119980,+    120008, 119982,+    120009, 119983,+    120010, 119984,+    120011, 119985,+    120012, 119986,+    120013, 119987,+    120014, 119988,+    120015, 119989,+    120042, 120016,+    120043, 120017,+    120044, 120018,+    120045, 120019,+    120046, 120020,+    120047, 120021,+    120048, 120022,+    120049, 120023,+    120050, 120024,+    120051, 120025,+    120052, 120026,+    120053, 120027,+    120054, 120028,+    120055, 120029,+    120056, 120030,+    120057, 120031,+    120058, 120032,+    120059, 120033,+    120060, 120034,+    120061, 120035,+    120062, 120036,+    120063, 120037,+    120064, 120038,+    120065, 120039,+    120066, 120040,+    120067, 120041,+    120094, 120068,+    120095, 120069,+    120097, 120071,+    120098, 120072,+    120099, 120073,+    120100, 120074,+    120103, 120077,+    120104, 120078,+    120105, 120079,+    120106, 120080,+    120107, 120081,+    120108, 120082,+    120109, 120083,+    120110, 120084,+    120112, 120086,+    120113, 120087,+    120114, 120088,+    120115, 120089,+    120116, 120090,+    120117, 120091,+    120118, 120092,+    120146, 120120,+    120147, 120121,+    120149, 120123,+    120150, 120124,+    120151, 120125,+    120152, 120126,+    120154, 120128,+    120155, 120129,+    120156, 120130,+    120157, 120131,+    120158, 120132,+    120160, 120134,+    120164, 120138,+    120165, 120139,+    120166, 120140,+    120167, 120141,+    120168, 120142,+    120169, 120143,+    120170, 120144,+    120198, 120172,+    120199, 120173,+    120200, 120174,+    120201, 120175,+    120202, 120176,+    120203, 120177,+    120204, 120178,+    120205, 120179,+    120206, 120180,+    120207, 120181,+    120208, 120182,+    120209, 120183,+    120210, 120184,+    120211, 120185,+    120212, 120186,+    120213, 120187,+    120214, 120188,+    120215, 120189,+    120216, 120190,+    120217, 120191,+    120218, 120192,+    120219, 120193,+    120220, 120194,+    120221, 120195,+    120222, 120196,+    120223, 120197,+    120250, 120224,+    120251, 120225,+    120252, 120226,+    120253, 120227,+    120254, 120228,+    120255, 120229,+    120256, 120230,+    120257, 120231,+    120258, 120232,+    120259, 120233,+    120260, 120234,+    120261, 120235,+    120262, 120236,+    120263, 120237,+    120264, 120238,+    120265, 120239,+    120266, 120240,+    120267, 120241,+    120268, 120242,+    120269, 120243,+    120270, 120244,+    120271, 120245,+    120272, 120246,+    120273, 120247,+    120274, 120248,+    120275, 120249,+    120302, 120276,+    120303, 120277,+    120304, 120278,+    120305, 120279,+    120306, 120280,+    120307, 120281,+    120308, 120282,+    120309, 120283,+    120310, 120284,+    120311, 120285,+    120312, 120286,+    120313, 120287,+    120314, 120288,+    120315, 120289,+    120316, 120290,+    120317, 120291,+    120318, 120292,+    120319, 120293,+    120320, 120294,+    120321, 120295,+    120322, 120296,+    120323, 120297,+    120324, 120298,+    120325, 120299,+    120326, 120300,+    120327, 120301,+    120354, 120328,+    120355, 120329,+    120356, 120330,+    120357, 120331,+    120358, 120332,+    120359, 120333,+    120360, 120334,+    120361, 120335,+    120362, 120336,+    120363, 120337,+    120364, 120338,+    120365, 120339,+    120366, 120340,+    120367, 120341,+    120368, 120342,+    120369, 120343,+    120370, 120344,+    120371, 120345,+    120372, 120346,+    120373, 120347,+    120374, 120348,+    120375, 120349,+    120376, 120350,+    120377, 120351,+    120378, 120352,+    120379, 120353,+    120406, 120380,+    120407, 120381,+    120408, 120382,+    120409, 120383,+    120410, 120384,+    120411, 120385,+    120412, 120386,+    120413, 120387,+    120414, 120388,+    120415, 120389,+    120416, 120390,+    120417, 120391,+    120418, 120392,+    120419, 120393,+    120420, 120394,+    120421, 120395,+    120422, 120396,+    120423, 120397,+    120424, 120398,+    120425, 120399,+    120426, 120400,+    120427, 120401,+    120428, 120402,+    120429, 120403,+    120430, 120404,+    120431, 120405,+    120458, 120432,+    120459, 120433,+    120460, 120434,+    120461, 120435,+    120462, 120436,+    120463, 120437,+    120464, 120438,+    120465, 120439,+    120466, 120440,+    120467, 120441,+    120468, 120442,+    120469, 120443,+    120470, 120444,+    120471, 120445,+    120472, 120446,+    120473, 120447,+    120474, 120448,+    120475, 120449,+    120476, 120450,+    120477, 120451,+    120478, 120452,+    120479, 120453,+    120480, 120454,+    120481, 120455,+    120482, 120456,+    120483, 120457,+    120514, 120488,+    120515, 120489,+    120516, 120490,+    120517, 120491,+    120518, 120492,+    120519, 120493,+    120520, 120494,+    120521, 120495,+    120522, 120496,+    120523, 120497,+    120524, 120498,+    120525, 120499,+    120526, 120500,+    120527, 120501,+    120528, 120502,+    120529, 120503,+    120530, 120504,+    120532, 120506,+    120533, 120507,+    120534, 120508,+    120535, 120509,+    120536, 120510,+    120537, 120511,+    120538, 120512,+    120572, 120546,+    120573, 120547,+    120574, 120548,+    120575, 120549,+    120576, 120550,+    120577, 120551,+    120578, 120552,+    120579, 120553,+    120580, 120554,+    120581, 120555,+    120582, 120556,+    120583, 120557,+    120584, 120558,+    120585, 120559,+    120586, 120560,+    120587, 120561,+    120588, 120562,+    120590, 120564,+    120591, 120565,+    120592, 120566,+    120593, 120567,+    120594, 120568,+    120595, 120569,+    120596, 120570,+    120630, 120604,+    120631, 120605,+    120632, 120606,+    120633, 120607,+    120634, 120608,+    120635, 120609,+    120636, 120610,+    120637, 120611,+    120638, 120612,+    120639, 120613,+    120640, 120614,+    120641, 120615,+    120642, 120616,+    120643, 120617,+    120644, 120618,+    120645, 120619,+    120646, 120620,+    120648, 120622,+    120649, 120623,+    120650, 120624,+    120651, 120625,+    120652, 120626,+    120653, 120627,+    120654, 120628,+    120688, 120662,+    120689, 120663,+    120690, 120664,+    120691, 120665,+    120692, 120666,+    120693, 120667,+    120694, 120668,+    120695, 120669,+    120696, 120670,+    120697, 120671,+    120698, 120672,+    120699, 120673,+    120700, 120674,+    120701, 120675,+    120702, 120676,+    120703, 120677,+    120704, 120678,+    120706, 120680,+    120707, 120681,+    120708, 120682,+    120709, 120683,+    120710, 120684,+    120711, 120685,+    120712, 120686,+    120746, 120720,+    120747, 120721,+    120748, 120722,+    120749, 120723,+    120750, 120724,+    120751, 120725,+    120752, 120726,+    120753, 120727,+    120754, 120728,+    120755, 120729,+    120756, 120730,+    120757, 120731,+    120758, 120732,+    120759, 120733,+    120760, 120734,+    120761, 120735,+    120762, 120736,+    120764, 120738,+    120765, 120739,+    120766, 120740,+    120767, 120741,+    120768, 120742,+    120769, 120743,+    120770, 120744,+    120779, 120778,+    125218, 125184,+    125219, 125185,+    125220, 125186,+    125221, 125187,+    125222, 125188,+    125223, 125189,+    125224, 125190,+    125225, 125191,+    125226, 125192,+    125227, 125193,+    125228, 125194,+    125229, 125195,+    125230, 125196,+    125231, 125197,+    125232, 125198,+    125233, 125199,+    125234, 125200,+    125235, 125201,+    125236, 125202,+    125237, 125203,+    125238, 125204,+    125239, 125205,+    125240, 125206,+    125241, 125207,+    125242, 125208,+    125243, 125209,+    125244, 125210,+    125245, 125211,+    125246, 125212,+    125247, 125213,+    125248, 125214,+    125249, 125215,+    125250, 125216,+    125251, 125217,+  };+  const int key[2] = { c, 0 };+  const int *val = static_cast<const int*>(std::bsearch(key, lu, 1647, sizeof(key), &cmpint2));+  return val != NULL ? val[1] : c;+}