Răsfoiți Sursa

Store the first indicator directly into the u16

Since we don't need all bits we can store the first indicator in `u16`
directly and save another 3kb
Markus Westerlind 8 ani în urmă
părinte
comite
fca5694347
3 a modificat fișierele cu 1585 adăugiri și 1582 ștergeri
  1. 3 2
      idna/src/make_uts46_mapping_table.py
  2. 4 2
      idna/src/uts46.rs
  3. 1578 1578
      idna/src/uts46_mapping_table.rs

+ 3 - 2
idna/src/make_uts46_mapping_table.py

@@ -155,12 +155,13 @@ for ranges in optimized_ranges:
 
 print("];\n")
 
-print("static INDEX_TABLE: &'static [(u16, bool)] = &[")
+print("static INDEX_TABLE: &'static [u16] = &[")
 
 offset = 0
 for ranges in optimized_ranges:
     block_len = len(ranges)
-    print("(%s, %s), " % (offset, "true" if block_len == 1 else "false"))
+    single = (1 << 15) if block_len == 1 else 0 
+    print("    %s | %s, " % (offset, single))
     offset += block_len
 
 print("];\n")

+ 4 - 2
idna/src/uts46.rs

@@ -68,11 +68,13 @@ fn find_char(codepoint: char) -> &'static Mapping {
         }
     });
     r.ok().map(|i| {
-        let (offset, single) = INDEX_TABLE[i];
+        let x = INDEX_TABLE[i];
+        let single = (x & (1 << 15)) != 0;
+        let offset = !(1 << 15) & x;
         if single {
             &MAPPING_TABLE[offset as usize]
         } else {
-            &MAPPING_TABLE[(offset + codepoint as u16 - TABLE[i].from as u16) as usize]
+            &MAPPING_TABLE[(offset + (codepoint as u16 - TABLE[i].from as u16)) as usize]
         }
     }).unwrap()
 }

+ 1578 - 1578
idna/src/uts46_mapping_table.rs

@@ -1588,1584 +1588,1584 @@ static TABLE: &'static [Range] = &[
     Range { from: '\u{e0100}', to: '\u{e01ef}', },
 ];
 
-static INDEX_TABLE: &'static [(u16, bool)] = &[
-(0, true), 
-(1, true), 
-(2, true), 
-(3, true), 
-(4, true), 
-(5, false), 
-(31, true), 
-(32, true), 
-(33, true), 
-(34, true), 
-(35, true), 
-(36, true), 
-(37, false), 
-(40, true), 
-(41, false), 
-(44, true), 
-(45, false), 
-(49, true), 
-(50, false), 
-(90, true), 
-(91, false), 
-(141, true), 
-(142, false), 
-(145, true), 
-(146, false), 
-(152, true), 
-(153, false), 
-(228, true), 
-(229, false), 
-(240, true), 
-(241, false), 
-(255, true), 
-(256, false), 
-(269, true), 
-(270, true), 
-(271, true), 
-(272, true), 
-(273, true), 
-(274, true), 
-(275, false), 
-(290, true), 
-(291, false), 
-(308, true), 
-(309, true), 
-(310, false), 
-(373, true), 
-(374, false), 
-(379, true), 
-(380, false), 
-(394, true), 
-(395, false), 
-(404, true), 
-(405, false), 
-(411, true), 
-(412, false), 
-(417, true), 
-(418, false), 
-(424, true), 
-(425, true), 
-(426, true), 
-(427, false), 
-(435, true), 
-(436, true), 
-(437, true), 
-(438, false), 
-(440, true), 
-(441, false), 
-(481, true), 
-(482, true), 
-(483, true), 
-(484, false), 
-(528, true), 
-(529, false), 
-(580, true), 
-(581, false), 
-(614, true), 
-(615, false), 
-(683, true), 
-(684, false), 
-(819, true), 
-(820, true), 
-(821, true), 
-(822, true), 
-(823, false), 
-(825, true), 
-(826, true), 
-(827, true), 
-(828, true), 
-(829, true), 
-(830, true), 
-(831, true), 
-(832, true), 
-(833, true), 
-(834, true), 
-(835, true), 
-(836, true), 
-(837, true), 
-(838, false), 
-(842, true), 
-(843, true), 
-(844, true), 
-(845, true), 
-(846, true), 
-(847, true), 
-(848, true), 
-(849, true), 
-(850, true), 
-(851, true), 
-(852, true), 
-(853, true), 
-(854, true), 
-(855, true), 
-(856, true), 
-(857, true), 
-(858, false), 
-(860, true), 
-(861, true), 
-(862, true), 
-(863, true), 
-(864, true), 
-(865, true), 
-(866, true), 
-(867, true), 
-(868, true), 
-(869, false), 
-(877, true), 
-(878, true), 
-(879, true), 
-(880, true), 
-(881, true), 
-(882, true), 
-(883, true), 
-(884, true), 
-(885, true), 
-(886, false), 
-(888, true), 
-(889, true), 
-(890, true), 
-(891, true), 
-(892, true), 
-(893, true), 
-(894, true), 
-(895, true), 
-(896, true), 
-(897, true), 
-(898, true), 
-(899, false), 
-(903, true), 
-(904, true), 
-(905, true), 
-(906, true), 
-(907, true), 
-(908, true), 
-(909, true), 
-(910, true), 
-(911, true), 
-(912, true), 
-(913, true), 
-(914, true), 
-(915, true), 
-(916, false), 
-(923, true), 
-(924, true), 
-(925, false), 
-(927, true), 
-(928, true), 
-(929, true), 
-(930, true), 
-(931, true), 
-(932, true), 
-(933, true), 
-(934, true), 
-(935, false), 
-(941, true), 
-(942, true), 
-(943, true), 
-(944, true), 
-(945, true), 
-(946, true), 
-(947, true), 
-(948, true), 
-(949, true), 
-(950, true), 
-(951, true), 
-(952, true), 
-(953, true), 
-(954, true), 
-(955, true), 
-(956, true), 
-(957, true), 
-(958, true), 
-(959, true), 
-(960, true), 
-(961, true), 
-(962, true), 
-(963, true), 
-(964, true), 
-(965, true), 
-(966, true), 
-(967, true), 
-(968, true), 
-(969, true), 
-(970, true), 
-(971, true), 
-(972, true), 
-(973, true), 
-(974, true), 
-(975, true), 
-(976, true), 
-(977, true), 
-(978, true), 
-(979, true), 
-(980, true), 
-(981, true), 
-(982, true), 
-(983, true), 
-(984, true), 
-(985, true), 
-(986, true), 
-(987, true), 
-(988, true), 
-(989, true), 
-(990, true), 
-(991, true), 
-(992, true), 
-(993, true), 
-(994, false), 
-(997, true), 
-(998, true), 
-(999, true), 
-(1000, true), 
-(1001, true), 
-(1002, true), 
-(1003, true), 
-(1004, true), 
-(1005, true), 
-(1006, true), 
-(1007, true), 
-(1008, true), 
-(1009, true), 
-(1010, false), 
-(1013, true), 
-(1014, true), 
-(1015, true), 
-(1016, true), 
-(1017, true), 
-(1018, true), 
-(1019, true), 
-(1020, true), 
-(1021, true), 
-(1022, true), 
-(1023, true), 
-(1024, true), 
-(1025, true), 
-(1026, true), 
-(1027, true), 
-(1028, true), 
-(1029, true), 
-(1030, true), 
-(1031, true), 
-(1032, true), 
-(1033, true), 
-(1034, true), 
-(1035, true), 
-(1036, true), 
-(1037, true), 
-(1038, true), 
-(1039, true), 
-(1040, true), 
-(1041, true), 
-(1042, true), 
-(1043, true), 
-(1044, true), 
-(1045, true), 
-(1046, true), 
-(1047, true), 
-(1048, true), 
-(1049, true), 
-(1050, true), 
-(1051, true), 
-(1052, true), 
-(1053, true), 
-(1054, true), 
-(1055, true), 
-(1056, true), 
-(1057, true), 
-(1058, true), 
-(1059, true), 
-(1060, true), 
-(1061, true), 
-(1062, true), 
-(1063, true), 
-(1064, true), 
-(1065, true), 
-(1066, true), 
-(1067, true), 
-(1068, true), 
-(1069, true), 
-(1070, true), 
-(1071, true), 
-(1072, true), 
-(1073, true), 
-(1074, true), 
-(1075, true), 
-(1076, true), 
-(1077, false), 
-(1079, true), 
-(1080, true), 
-(1081, true), 
-(1082, true), 
-(1083, true), 
-(1084, true), 
-(1085, true), 
-(1086, true), 
-(1087, true), 
-(1088, true), 
-(1089, true), 
-(1090, true), 
-(1091, true), 
-(1092, true), 
-(1093, true), 
-(1094, true), 
-(1095, true), 
-(1096, true), 
-(1097, true), 
-(1098, true), 
-(1099, true), 
-(1100, true), 
-(1101, true), 
-(1102, true), 
-(1103, true), 
-(1104, true), 
-(1105, true), 
-(1106, true), 
-(1107, true), 
-(1108, false), 
-(1110, true), 
-(1111, true), 
-(1112, true), 
-(1113, true), 
-(1114, true), 
-(1115, true), 
-(1116, false), 
-(1119, true), 
-(1120, true), 
-(1121, true), 
-(1122, true), 
-(1123, true), 
-(1124, true), 
-(1125, true), 
-(1126, true), 
-(1127, true), 
-(1128, true), 
-(1129, true), 
-(1130, true), 
-(1131, true), 
-(1132, false), 
-(1134, true), 
-(1135, true), 
-(1136, false), 
-(1138, true), 
-(1139, true), 
-(1140, true), 
-(1141, true), 
-(1142, true), 
-(1143, true), 
-(1144, true), 
-(1145, true), 
-(1146, false), 
-(1150, true), 
-(1151, true), 
-(1152, true), 
-(1153, true), 
-(1154, true), 
-(1155, true), 
-(1156, true), 
-(1157, true), 
-(1158, true), 
-(1159, true), 
-(1160, false), 
-(1163, true), 
-(1164, true), 
-(1165, true), 
-(1166, true), 
-(1167, false), 
-(1169, true), 
-(1170, true), 
-(1171, true), 
-(1172, true), 
-(1173, true), 
-(1174, true), 
-(1175, true), 
-(1176, true), 
-(1177, true), 
-(1178, true), 
-(1179, true), 
-(1180, true), 
-(1181, true), 
-(1182, true), 
-(1183, true), 
-(1184, true), 
-(1185, true), 
-(1186, true), 
-(1187, true), 
-(1188, true), 
-(1189, true), 
-(1190, false), 
-(1197, true), 
-(1198, true), 
-(1199, true), 
-(1200, true), 
-(1201, true), 
-(1202, true), 
-(1203, true), 
-(1204, true), 
-(1205, true), 
-(1206, true), 
-(1207, true), 
-(1208, true), 
-(1209, true), 
-(1210, true), 
-(1211, true), 
-(1212, true), 
-(1213, true), 
-(1214, true), 
-(1215, true), 
-(1216, true), 
-(1217, true), 
-(1218, true), 
-(1219, true), 
-(1220, true), 
-(1221, true), 
-(1222, true), 
-(1223, true), 
-(1224, true), 
-(1225, true), 
-(1226, true), 
-(1227, true), 
-(1228, true), 
-(1229, true), 
-(1230, true), 
-(1231, true), 
-(1232, true), 
-(1233, true), 
-(1234, false), 
-(1237, true), 
-(1238, true), 
-(1239, true), 
-(1240, true), 
-(1241, true), 
-(1242, true), 
-(1243, true), 
-(1244, true), 
-(1245, true), 
-(1246, true), 
-(1247, true), 
-(1248, false), 
-(1251, true), 
-(1252, true), 
-(1253, true), 
-(1254, true), 
-(1255, true), 
-(1256, true), 
-(1257, true), 
-(1258, true), 
-(1259, true), 
-(1260, true), 
-(1261, true), 
-(1262, true), 
-(1263, true), 
-(1264, true), 
-(1265, true), 
-(1266, true), 
-(1267, false), 
-(1273, true), 
-(1274, true), 
-(1275, true), 
-(1276, true), 
-(1277, true), 
-(1278, true), 
-(1279, true), 
-(1280, true), 
-(1281, true), 
-(1282, true), 
-(1283, true), 
-(1284, true), 
-(1285, true), 
-(1286, true), 
-(1287, true), 
-(1288, true), 
-(1289, true), 
-(1290, true), 
-(1291, true), 
-(1292, true), 
-(1293, true), 
-(1294, true), 
-(1295, true), 
-(1296, true), 
-(1297, true), 
-(1298, true), 
-(1299, true), 
-(1300, true), 
-(1301, true), 
-(1302, true), 
-(1303, true), 
-(1304, true), 
-(1305, true), 
-(1306, true), 
-(1307, true), 
-(1308, true), 
-(1309, true), 
-(1310, true), 
-(1311, true), 
-(1312, true), 
-(1313, true), 
-(1314, true), 
-(1315, true), 
-(1316, true), 
-(1317, true), 
-(1318, true), 
-(1319, true), 
-(1320, true), 
-(1321, true), 
-(1322, true), 
-(1323, true), 
-(1324, true), 
-(1325, true), 
-(1326, true), 
-(1327, true), 
-(1328, true), 
-(1329, true), 
-(1330, true), 
-(1331, true), 
-(1332, true), 
-(1333, true), 
-(1334, true), 
-(1335, true), 
-(1336, true), 
-(1337, true), 
-(1338, true), 
-(1339, true), 
-(1340, true), 
-(1341, true), 
-(1342, true), 
-(1343, true), 
-(1344, true), 
-(1345, true), 
-(1346, true), 
-(1347, true), 
-(1348, true), 
-(1349, true), 
-(1350, true), 
-(1351, true), 
-(1352, true), 
-(1353, true), 
-(1354, true), 
-(1355, true), 
-(1356, true), 
-(1357, true), 
-(1358, false), 
-(1362, true), 
-(1363, false), 
-(1366, true), 
-(1367, true), 
-(1368, true), 
-(1369, true), 
-(1370, true), 
-(1371, true), 
-(1372, false), 
-(1435, true), 
-(1436, true), 
-(1437, true), 
-(1438, false), 
-(1475, true), 
-(1476, true), 
-(1477, true), 
-(1478, false), 
-(1627, true), 
-(1628, false), 
-(1630, true), 
-(1631, false), 
-(1728, true), 
-(1729, false), 
-(1737, true), 
-(1738, true), 
-(1739, false), 
-(1745, true), 
-(1746, true), 
-(1747, false), 
-(1755, true), 
-(1756, false), 
-(1764, true), 
-(1765, true), 
-(1766, false), 
-(1772, true), 
-(1773, true), 
-(1774, false), 
-(1782, true), 
-(1783, false), 
-(1805, true), 
-(1806, false), 
-(1854, true), 
-(1855, false), 
-(1885, true), 
-(1886, true), 
-(1887, true), 
-(1888, true), 
-(1889, false), 
-(1897, true), 
-(1898, true), 
-(1899, true), 
-(1900, false), 
-(1908, true), 
-(1909, false), 
-(1923, true), 
-(1924, true), 
-(1925, true), 
-(1926, true), 
-(1927, false), 
-(1929, true), 
-(1930, true), 
-(1931, true), 
-(1932, true), 
-(1933, true), 
-(1934, true), 
-(1935, true), 
-(1936, true), 
-(1937, false), 
-(1942, true), 
-(1943, false), 
-(1946, true), 
-(1947, false), 
-(1950, true), 
-(1951, true), 
-(1952, true), 
-(1953, false), 
-(1955, true), 
-(1956, true), 
-(1957, true), 
-(1958, false), 
-(1960, true), 
-(1961, false), 
-(2002, true), 
-(2003, true), 
-(2004, true), 
-(2005, true), 
-(2006, true), 
-(2007, true), 
-(2008, true), 
-(2009, false), 
-(2020, true), 
-(2021, true), 
-(2022, true), 
-(2023, true), 
-(2024, false), 
-(2027, true), 
-(2028, false), 
-(2030, true), 
-(2031, true), 
-(2032, false), 
-(2047, true), 
-(2048, false), 
-(2060, true), 
-(2061, false), 
-(2063, true), 
-(2064, true), 
-(2065, false), 
-(2068, true), 
-(2069, false), 
-(2117, true), 
-(2118, true), 
-(2119, true), 
-(2120, true), 
-(2121, true), 
-(2122, true), 
-(2123, true), 
-(2124, false), 
-(2129, true), 
-(2130, true), 
-(2131, true), 
-(2132, true), 
-(2133, true), 
-(2134, false), 
-(2136, true), 
-(2137, true), 
-(2138, true), 
-(2139, true), 
-(2140, false), 
-(2180, true), 
-(2181, false), 
-(2260, true), 
-(2261, true), 
-(2262, true), 
-(2263, false), 
-(2266, true), 
-(2267, true), 
-(2268, true), 
-(2269, true), 
-(2270, true), 
-(2271, true), 
-(2272, true), 
-(2273, true), 
-(2274, true), 
-(2275, true), 
-(2276, true), 
-(2277, true), 
-(2278, true), 
-(2279, true), 
-(2280, false), 
-(2328, true), 
-(2329, false), 
-(2335, true), 
-(2336, false), 
-(2348, true), 
-(2349, true), 
-(2350, true), 
-(2351, false), 
-(2454, true), 
-(2455, false), 
-(2458, true), 
-(2459, false), 
-(2461, true), 
-(2462, true), 
-(2463, false), 
-(2465, true), 
-(2466, true), 
-(2467, true), 
-(2468, true), 
-(2469, true), 
-(2470, false), 
-(2472, true), 
-(2473, true), 
-(2474, true), 
-(2475, true), 
-(2476, true), 
-(2477, true), 
-(2478, true), 
-(2479, true), 
-(2480, true), 
-(2481, true), 
-(2482, true), 
-(2483, true), 
-(2484, true), 
-(2485, true), 
-(2486, true), 
-(2487, true), 
-(2488, true), 
-(2489, true), 
-(2490, true), 
-(2491, true), 
-(2492, true), 
-(2493, true), 
-(2494, true), 
-(2495, true), 
-(2496, true), 
-(2497, true), 
-(2498, true), 
-(2499, true), 
-(2500, false), 
-(2714, true), 
-(2715, false), 
-(2718, true), 
-(2719, false), 
-(2724, true), 
-(2725, true), 
-(2726, true), 
-(2727, true), 
-(2728, true), 
-(2729, false), 
-(2731, true), 
-(2732, true), 
-(2733, true), 
-(2734, true), 
-(2735, true), 
-(2736, true), 
-(2737, true), 
-(2738, false), 
-(2833, true), 
-(2834, false), 
-(2848, true), 
-(2849, true), 
-(2850, true), 
-(2851, true), 
-(2852, true), 
-(2853, false), 
-(2925, true), 
-(2926, false), 
-(3358, true), 
-(3359, true), 
-(3360, true), 
-(3361, true), 
-(3362, true), 
-(3363, true), 
-(3364, true), 
-(3365, true), 
-(3366, true), 
-(3367, true), 
-(3368, false), 
-(3413, true), 
-(3414, false), 
-(3444, true), 
-(3445, true), 
-(3446, true), 
-(3447, false), 
-(3460, true), 
-(3461, false), 
-(3524, true), 
-(3525, false), 
-(3539, true), 
-(3540, false), 
-(3543, true), 
-(3544, false), 
-(3547, true), 
-(3548, false), 
-(3582, true), 
-(3583, false), 
-(3586, true), 
-(3587, true), 
-(3588, true), 
-(3589, true), 
-(3590, true), 
-(3591, true), 
-(3592, true), 
-(3593, true), 
-(3594, true), 
-(3595, true), 
-(3596, true), 
-(3597, true), 
-(3598, true), 
-(3599, true), 
-(3600, true), 
-(3601, true), 
-(3602, true), 
-(3603, true), 
-(3604, true), 
-(3605, true), 
-(3606, true), 
-(3607, true), 
-(3608, true), 
-(3609, true), 
-(3610, true), 
-(3611, true), 
-(3612, true), 
-(3613, true), 
-(3614, true), 
-(3615, true), 
-(3616, true), 
-(3617, true), 
-(3618, true), 
-(3619, true), 
-(3620, true), 
-(3621, true), 
-(3622, true), 
-(3623, true), 
-(3624, true), 
-(3625, true), 
-(3626, true), 
-(3627, true), 
-(3628, true), 
-(3629, false), 
-(3633, true), 
-(3634, true), 
-(3635, false), 
-(3715, true), 
-(3716, true), 
-(3717, true), 
-(3718, true), 
-(3719, true), 
-(3720, true), 
-(3721, true), 
-(3722, true), 
-(3723, true), 
-(3724, true), 
-(3725, false), 
-(3732, true), 
-(3733, false), 
-(3994, true), 
-(3995, false), 
-(3998, true), 
-(3999, false), 
-(4013, true), 
-(4014, false), 
-(4016, true), 
-(4017, false), 
-(4068, true), 
-(4069, false), 
-(4084, true), 
-(4085, false), 
-(4191, true), 
-(4192, false), 
-(4197, true), 
-(4198, true), 
-(4199, false), 
-(4204, true), 
-(4205, false), 
-(4256, true), 
-(4257, true), 
-(4258, true), 
-(4259, true), 
-(4260, true), 
-(4261, true), 
-(4262, true), 
-(4263, true), 
-(4264, true), 
-(4265, true), 
-(4266, true), 
-(4267, true), 
-(4268, true), 
-(4269, true), 
-(4270, true), 
-(4271, true), 
-(4272, true), 
-(4273, true), 
-(4274, true), 
-(4275, true), 
-(4276, true), 
-(4277, true), 
-(4278, true), 
-(4279, true), 
-(4280, true), 
-(4281, true), 
-(4282, true), 
-(4283, true), 
-(4284, true), 
-(4285, true), 
-(4286, true), 
-(4287, true), 
-(4288, true), 
-(4289, true), 
-(4290, true), 
-(4291, true), 
-(4292, true), 
-(4293, true), 
-(4294, true), 
-(4295, true), 
-(4296, true), 
-(4297, true), 
-(4298, true), 
-(4299, true), 
-(4300, true), 
-(4301, true), 
-(4302, true), 
-(4303, true), 
-(4304, true), 
-(4305, true), 
-(4306, true), 
-(4307, false), 
-(4623, true), 
-(4624, true), 
-(4625, true), 
-(4626, true), 
-(4627, true), 
-(4628, false), 
-(4633, true), 
-(4634, false), 
-(4639, true), 
-(4640, true), 
-(4641, true), 
-(4642, true), 
-(4643, true), 
-(4644, true), 
-(4645, true), 
-(4646, true), 
-(4647, true), 
-(4648, true), 
-(4649, true), 
-(4650, true), 
-(4651, false), 
-(4654, true), 
-(4655, false), 
-(4659, true), 
-(4660, false), 
-(4665, true), 
-(4666, true), 
-(4667, true), 
-(4668, false), 
-(4675, true), 
-(4676, false), 
-(4681, true), 
-(4682, false), 
-(4685, true), 
-(4686, false), 
-(4728, true), 
-(4729, false), 
-(4743, true), 
-(4744, true), 
-(4745, false), 
-(4754, true), 
-(4755, true), 
-(4756, false), 
-(4759, true), 
-(4760, false), 
-(4776, true), 
-(4777, false), 
-(4779, true), 
-(4780, true), 
-(4781, false), 
-(4783, true), 
-(4784, false), 
-(4808, true), 
-(4809, false), 
-(4826, true), 
-(4827, true), 
-(4828, true), 
-(4829, true), 
-(4830, true), 
-(4831, true), 
-(4832, true), 
-(4833, true), 
-(4834, true), 
-(4835, true), 
-(4836, true), 
-(4837, true), 
-(4838, true), 
-(4839, true), 
-(4840, true), 
-(4841, true), 
-(4842, true), 
-(4843, true), 
-(4844, true), 
-(4845, true), 
-(4846, true), 
-(4847, true), 
-(4848, true), 
-(4849, true), 
-(4850, true), 
-(4851, true), 
-(4852, true), 
-(4853, true), 
-(4854, true), 
-(4855, true), 
-(4856, true), 
-(4857, true), 
-(4858, true), 
-(4859, true), 
-(4860, true), 
-(4861, true), 
-(4862, true), 
-(4863, true), 
-(4864, true), 
-(4865, true), 
-(4866, false), 
-(5058, true), 
-(5059, false), 
-(5065, true), 
-(5066, false), 
-(5072, true), 
-(5073, false), 
-(5079, true), 
-(5080, false), 
-(5083, true), 
-(5084, false), 
-(5099, true), 
-(5100, true), 
-(5101, true), 
-(5102, true), 
-(5103, true), 
-(5104, true), 
-(5105, true), 
-(5106, true), 
-(5107, true), 
-(5108, true), 
-(5109, true), 
-(5110, true), 
-(5111, true), 
-(5112, true), 
-(5113, true), 
-(5114, true), 
-(5115, true), 
-(5116, true), 
-(5117, true), 
-(5118, true), 
-(5119, true), 
-(5120, true), 
-(5121, true), 
-(5122, true), 
-(5123, true), 
-(5124, true), 
-(5125, true), 
-(5126, true), 
-(5127, true), 
-(5128, true), 
-(5129, true), 
-(5130, true), 
-(5131, true), 
-(5132, true), 
-(5133, true), 
-(5134, true), 
-(5135, true), 
-(5136, true), 
-(5137, true), 
-(5138, true), 
-(5139, true), 
-(5140, true), 
-(5141, true), 
-(5142, true), 
-(5143, true), 
-(5144, false), 
-(5184, true), 
-(5185, true), 
-(5186, true), 
-(5187, true), 
-(5188, false), 
-(5224, true), 
-(5225, true), 
-(5226, true), 
-(5227, true), 
-(5228, true), 
-(5229, true), 
-(5230, true), 
-(5231, true), 
-(5232, true), 
-(5233, true), 
-(5234, true), 
-(5235, true), 
-(5236, true), 
-(5237, true), 
-(5238, true), 
-(5239, true), 
-(5240, true), 
-(5241, false), 
-(5243, true), 
-(5244, true), 
-(5245, true), 
-(5246, true), 
-(5247, true), 
-(5248, true), 
-(5249, true), 
-(5250, true), 
-(5251, true), 
-(5252, true), 
-(5253, true), 
-(5254, true), 
-(5255, true), 
-(5256, true), 
-(5257, true), 
-(5258, true), 
-(5259, true), 
-(5260, true), 
-(5261, true), 
-(5262, true), 
-(5263, true), 
-(5264, true), 
-(5265, true), 
-(5266, true), 
-(5267, true), 
-(5268, true), 
-(5269, true), 
-(5270, true), 
-(5271, true), 
-(5272, true), 
-(5273, true), 
-(5274, true), 
-(5275, true), 
-(5276, true), 
-(5277, true), 
-(5278, true), 
-(5279, true), 
-(5280, true), 
-(5281, true), 
-(5282, true), 
-(5283, true), 
-(5284, true), 
-(5285, true), 
-(5286, true), 
-(5287, true), 
-(5288, true), 
-(5289, true), 
-(5290, true), 
-(5291, true), 
-(5292, true), 
-(5293, true), 
-(5294, true), 
-(5295, true), 
-(5296, true), 
-(5297, true), 
-(5298, true), 
-(5299, true), 
-(5300, true), 
-(5301, true), 
-(5302, true), 
-(5303, true), 
-(5304, true), 
-(5305, false), 
-(5356, true), 
-(5357, true), 
-(5358, true), 
-(5359, true), 
-(5360, true), 
-(5361, true), 
-(5362, true), 
-(5363, true), 
-(5364, true), 
-(5365, true), 
-(5366, true), 
-(5367, true), 
-(5368, true), 
-(5369, true), 
-(5370, true), 
-(5371, true), 
-(5372, true), 
-(5373, true), 
-(5374, true), 
-(5375, true), 
-(5376, true), 
-(5377, true), 
-(5378, true), 
-(5379, true), 
-(5380, true), 
-(5381, true), 
-(5382, true), 
-(5383, true), 
-(5384, true), 
-(5385, true), 
-(5386, true), 
-(5387, true), 
-(5388, true), 
-(5389, true), 
-(5390, true), 
-(5391, true), 
-(5392, false), 
-(5395, true), 
-(5396, true), 
-(5397, true), 
-(5398, true), 
-(5399, true), 
-(5400, true), 
-(5401, true), 
-(5402, true), 
-(5403, true), 
-(5404, true), 
-(5405, true), 
-(5406, true), 
-(5407, true), 
-(5408, true), 
-(5409, true), 
-(5410, true), 
-(5411, true), 
-(5412, true), 
-(5413, true), 
-(5414, true), 
-(5415, true), 
-(5416, true), 
-(5417, true), 
-(5418, true), 
-(5419, true), 
-(5420, true), 
-(5421, true), 
-(5422, true), 
-(5423, true), 
-(5424, true), 
-(5425, true), 
-(5426, true), 
-(5427, true), 
-(5428, true), 
-(5429, true), 
-(5430, true), 
-(5431, true), 
-(5432, true), 
-(5433, true), 
-(5434, true), 
-(5435, true), 
-(5436, false), 
-(5440, true), 
-(5441, true), 
-(5442, true), 
-(5443, true), 
-(5444, true), 
-(5445, true), 
-(5446, true), 
-(5447, true), 
-(5448, true), 
-(5449, true), 
-(5450, true), 
-(5451, true), 
-(5452, true), 
-(5453, true), 
-(5454, true), 
-(5455, true), 
-(5456, true), 
-(5457, true), 
-(5458, true), 
-(5459, true), 
-(5460, true), 
-(5461, true), 
-(5462, true), 
-(5463, true), 
-(5464, true), 
-(5465, false), 
-(5497, true), 
-(5498, true), 
-(5499, true), 
-(5500, true), 
-(5501, true), 
-(5502, true), 
-(5503, true), 
-(5504, true), 
-(5505, true), 
-(5506, true), 
-(5507, true), 
-(5508, true), 
-(5509, true), 
-(5510, true), 
-(5511, true), 
-(5512, true), 
-(5513, true), 
-(5514, true), 
-(5515, true), 
-(5516, true), 
-(5517, true), 
-(5518, true), 
-(5519, true), 
-(5520, true), 
-(5521, true), 
-(5522, true), 
-(5523, true), 
-(5524, true), 
-(5525, true), 
-(5526, true), 
-(5527, true), 
-(5528, true), 
-(5529, true), 
-(5530, true), 
-(5531, false), 
-(5533, true), 
-(5534, true), 
-(5535, true), 
-(5536, true), 
-(5537, true), 
-(5538, true), 
-(5539, true), 
-(5540, true), 
-(5541, true), 
-(5542, true), 
-(5543, true), 
-(5544, true), 
-(5545, true), 
-(5546, true), 
-(5547, true), 
-(5548, true), 
-(5549, true), 
-(5550, true), 
-(5551, true), 
-(5552, true), 
-(5553, true), 
-(5554, true), 
-(5555, true), 
-(5556, true), 
-(5557, true), 
-(5558, true), 
-(5559, true), 
-(5560, true), 
-(5561, true), 
-(5562, true), 
-(5563, true), 
-(5564, true), 
-(5565, true), 
-(5566, true), 
-(5567, true), 
-(5568, true), 
-(5569, true), 
-(5570, true), 
-(5571, true), 
-(5572, true), 
-(5573, true), 
-(5574, true), 
-(5575, true), 
-(5576, true), 
-(5577, true), 
-(5578, true), 
-(5579, true), 
-(5580, true), 
-(5581, true), 
-(5582, true), 
-(5583, true), 
-(5584, true), 
-(5585, true), 
-(5586, true), 
-(5587, true), 
-(5588, true), 
-(5589, true), 
-(5590, true), 
-(5591, true), 
-(5592, true), 
-(5593, true), 
-(5594, true), 
-(5595, true), 
-(5596, true), 
-(5597, true), 
-(5598, true), 
-(5599, true), 
-(5600, true), 
-(5601, true), 
-(5602, true), 
-(5603, true), 
-(5604, true), 
-(5605, false), 
-(5612, true), 
-(5613, true), 
-(5614, true), 
-(5615, false), 
-(5621, true), 
-(5622, true), 
-(5623, true), 
-(5624, true), 
-(5625, true), 
-(5626, true), 
-(5627, true), 
-(5628, true), 
-(5629, false), 
-(5789, true), 
-(5790, true), 
-(5791, true), 
-(5792, false), 
-(5794, true), 
-(5795, false), 
-(5893, true), 
-(5894, false), 
-(5952, true), 
-(5953, false), 
-(6301, true), 
-(6302, false), 
-(6345, true), 
-(6346, false), 
-(6402, true), 
-(6403, false), 
-(6459, true), 
-(6460, false), 
-(6516, true), 
-(6517, false), 
-(6573, true), 
-(6574, false), 
-(6587, true), 
-(6588, true), 
-(6589, false), 
-(6639, true), 
-(6640, true), 
-(6641, true), 
-(6642, true), 
-(6643, true), 
-(6644, true), 
-(6645, true), 
-(6646, true), 
-(6647, true), 
-(6648, true), 
-(6649, true), 
-(6650, true), 
-(6651, true), 
-(6652, true), 
-(6653, true), 
-(6654, true), 
-(6655, true), 
-(6656, true), 
-(6657, true), 
-(6658, true), 
-(6659, false), 
-(6693, true), 
-(6694, true), 
-(6695, true), 
-(6696, true), 
-(6697, true), 
-(6698, true), 
-(6699, false), 
-(6736, true), 
-(6737, false), 
-(6758, true), 
-(6759, true), 
-(6760, true), 
-(6761, false), 
-(6775, true), 
-(6776, false), 
-(6790, true), 
-(6791, false), 
-(6844, true), 
-(6845, false), 
-(6872, true), 
-(6873, true), 
-(6874, true), 
-(6875, true), 
-(6876, true), 
-(6877, true), 
-(6878, true), 
-(6879, true), 
-(6880, true), 
-(6881, true), 
-(6882, true), 
-(6883, true), 
-(6884, true), 
-(6885, true), 
-(6886, true), 
-(6887, false), 
-(6897, true), 
-(6898, true), 
-(6899, false), 
-(6963, true), 
-(6964, false), 
-(6966, true), 
-(6967, true), 
-(6968, true), 
-(6969, true), 
-(6970, true), 
-(6971, true), 
-(6972, false), 
-(6975, true), 
-(6976, false), 
-(7020, true), 
-(7021, false), 
-(7030, true), 
-(7031, false), 
-(7033, true), 
-(7034, true), 
-(7035, true), 
-(7036, true), 
-(7037, true), 
-(7038, true), 
-(7039, true), 
-(7040, true), 
-(7041, true), 
-(7042, true), 
-(7043, true), 
-(7044, true), 
-(7045, true), 
-(7046, true), 
-(7047, true), 
-(7048, true), 
-(7049, true), 
-(7050, true), 
-(7051, true), 
-(7052, true), 
-(7053, true), 
-(7054, true), 
-(7055, true), 
-(7056, true), 
-(7057, true), 
-(7058, true), 
-(7059, true), 
-(7060, true), 
-(7061, true), 
-(7062, true), 
-(7063, true), 
-(7064, true), 
-(7065, true), 
-(7066, true), 
-(7067, true), 
-(7068, true), 
-(7069, true), 
-(7070, true), 
-(7071, true), 
-(7072, true), 
-(7073, true), 
-(7074, true), 
-(7075, true), 
-(7076, true), 
-(7077, true), 
-(7078, true), 
-(7079, true), 
-(7080, false), 
-(7129, true), 
-(7130, false), 
-(7147, true), 
-(7148, false), 
-(7183, true), 
-(7184, false), 
-(7221, true), 
-(7222, true), 
-(7223, true), 
-(7224, false), 
-(7374, true), 
-(7375, false), 
-(7399, true), 
-(7400, false), 
-(7421, true), 
-(7422, false), 
-(7581, true), 
-(7582, false), 
-(7612, true), 
-(7613, true), 
+static INDEX_TABLE: &'static [u16] = &[
+    0 | 32768, 
+    1 | 32768, 
+    2 | 32768, 
+    3 | 32768, 
+    4 | 32768, 
+    5 | 0, 
+    31 | 32768, 
+    32 | 32768, 
+    33 | 32768, 
+    34 | 32768, 
+    35 | 32768, 
+    36 | 32768, 
+    37 | 0, 
+    40 | 32768, 
+    41 | 0, 
+    44 | 32768, 
+    45 | 0, 
+    49 | 32768, 
+    50 | 0, 
+    90 | 32768, 
+    91 | 0, 
+    141 | 32768, 
+    142 | 0, 
+    145 | 32768, 
+    146 | 0, 
+    152 | 32768, 
+    153 | 0, 
+    228 | 32768, 
+    229 | 0, 
+    240 | 32768, 
+    241 | 0, 
+    255 | 32768, 
+    256 | 0, 
+    269 | 32768, 
+    270 | 32768, 
+    271 | 32768, 
+    272 | 32768, 
+    273 | 32768, 
+    274 | 32768, 
+    275 | 0, 
+    290 | 32768, 
+    291 | 0, 
+    308 | 32768, 
+    309 | 32768, 
+    310 | 0, 
+    373 | 32768, 
+    374 | 0, 
+    379 | 32768, 
+    380 | 0, 
+    394 | 32768, 
+    395 | 0, 
+    404 | 32768, 
+    405 | 0, 
+    411 | 32768, 
+    412 | 0, 
+    417 | 32768, 
+    418 | 0, 
+    424 | 32768, 
+    425 | 32768, 
+    426 | 32768, 
+    427 | 0, 
+    435 | 32768, 
+    436 | 32768, 
+    437 | 32768, 
+    438 | 0, 
+    440 | 32768, 
+    441 | 0, 
+    481 | 32768, 
+    482 | 32768, 
+    483 | 32768, 
+    484 | 0, 
+    528 | 32768, 
+    529 | 0, 
+    580 | 32768, 
+    581 | 0, 
+    614 | 32768, 
+    615 | 0, 
+    683 | 32768, 
+    684 | 0, 
+    819 | 32768, 
+    820 | 32768, 
+    821 | 32768, 
+    822 | 32768, 
+    823 | 0, 
+    825 | 32768, 
+    826 | 32768, 
+    827 | 32768, 
+    828 | 32768, 
+    829 | 32768, 
+    830 | 32768, 
+    831 | 32768, 
+    832 | 32768, 
+    833 | 32768, 
+    834 | 32768, 
+    835 | 32768, 
+    836 | 32768, 
+    837 | 32768, 
+    838 | 0, 
+    842 | 32768, 
+    843 | 32768, 
+    844 | 32768, 
+    845 | 32768, 
+    846 | 32768, 
+    847 | 32768, 
+    848 | 32768, 
+    849 | 32768, 
+    850 | 32768, 
+    851 | 32768, 
+    852 | 32768, 
+    853 | 32768, 
+    854 | 32768, 
+    855 | 32768, 
+    856 | 32768, 
+    857 | 32768, 
+    858 | 0, 
+    860 | 32768, 
+    861 | 32768, 
+    862 | 32768, 
+    863 | 32768, 
+    864 | 32768, 
+    865 | 32768, 
+    866 | 32768, 
+    867 | 32768, 
+    868 | 32768, 
+    869 | 0, 
+    877 | 32768, 
+    878 | 32768, 
+    879 | 32768, 
+    880 | 32768, 
+    881 | 32768, 
+    882 | 32768, 
+    883 | 32768, 
+    884 | 32768, 
+    885 | 32768, 
+    886 | 0, 
+    888 | 32768, 
+    889 | 32768, 
+    890 | 32768, 
+    891 | 32768, 
+    892 | 32768, 
+    893 | 32768, 
+    894 | 32768, 
+    895 | 32768, 
+    896 | 32768, 
+    897 | 32768, 
+    898 | 32768, 
+    899 | 0, 
+    903 | 32768, 
+    904 | 32768, 
+    905 | 32768, 
+    906 | 32768, 
+    907 | 32768, 
+    908 | 32768, 
+    909 | 32768, 
+    910 | 32768, 
+    911 | 32768, 
+    912 | 32768, 
+    913 | 32768, 
+    914 | 32768, 
+    915 | 32768, 
+    916 | 0, 
+    923 | 32768, 
+    924 | 32768, 
+    925 | 0, 
+    927 | 32768, 
+    928 | 32768, 
+    929 | 32768, 
+    930 | 32768, 
+    931 | 32768, 
+    932 | 32768, 
+    933 | 32768, 
+    934 | 32768, 
+    935 | 0, 
+    941 | 32768, 
+    942 | 32768, 
+    943 | 32768, 
+    944 | 32768, 
+    945 | 32768, 
+    946 | 32768, 
+    947 | 32768, 
+    948 | 32768, 
+    949 | 32768, 
+    950 | 32768, 
+    951 | 32768, 
+    952 | 32768, 
+    953 | 32768, 
+    954 | 32768, 
+    955 | 32768, 
+    956 | 32768, 
+    957 | 32768, 
+    958 | 32768, 
+    959 | 32768, 
+    960 | 32768, 
+    961 | 32768, 
+    962 | 32768, 
+    963 | 32768, 
+    964 | 32768, 
+    965 | 32768, 
+    966 | 32768, 
+    967 | 32768, 
+    968 | 32768, 
+    969 | 32768, 
+    970 | 32768, 
+    971 | 32768, 
+    972 | 32768, 
+    973 | 32768, 
+    974 | 32768, 
+    975 | 32768, 
+    976 | 32768, 
+    977 | 32768, 
+    978 | 32768, 
+    979 | 32768, 
+    980 | 32768, 
+    981 | 32768, 
+    982 | 32768, 
+    983 | 32768, 
+    984 | 32768, 
+    985 | 32768, 
+    986 | 32768, 
+    987 | 32768, 
+    988 | 32768, 
+    989 | 32768, 
+    990 | 32768, 
+    991 | 32768, 
+    992 | 32768, 
+    993 | 32768, 
+    994 | 0, 
+    997 | 32768, 
+    998 | 32768, 
+    999 | 32768, 
+    1000 | 32768, 
+    1001 | 32768, 
+    1002 | 32768, 
+    1003 | 32768, 
+    1004 | 32768, 
+    1005 | 32768, 
+    1006 | 32768, 
+    1007 | 32768, 
+    1008 | 32768, 
+    1009 | 32768, 
+    1010 | 0, 
+    1013 | 32768, 
+    1014 | 32768, 
+    1015 | 32768, 
+    1016 | 32768, 
+    1017 | 32768, 
+    1018 | 32768, 
+    1019 | 32768, 
+    1020 | 32768, 
+    1021 | 32768, 
+    1022 | 32768, 
+    1023 | 32768, 
+    1024 | 32768, 
+    1025 | 32768, 
+    1026 | 32768, 
+    1027 | 32768, 
+    1028 | 32768, 
+    1029 | 32768, 
+    1030 | 32768, 
+    1031 | 32768, 
+    1032 | 32768, 
+    1033 | 32768, 
+    1034 | 32768, 
+    1035 | 32768, 
+    1036 | 32768, 
+    1037 | 32768, 
+    1038 | 32768, 
+    1039 | 32768, 
+    1040 | 32768, 
+    1041 | 32768, 
+    1042 | 32768, 
+    1043 | 32768, 
+    1044 | 32768, 
+    1045 | 32768, 
+    1046 | 32768, 
+    1047 | 32768, 
+    1048 | 32768, 
+    1049 | 32768, 
+    1050 | 32768, 
+    1051 | 32768, 
+    1052 | 32768, 
+    1053 | 32768, 
+    1054 | 32768, 
+    1055 | 32768, 
+    1056 | 32768, 
+    1057 | 32768, 
+    1058 | 32768, 
+    1059 | 32768, 
+    1060 | 32768, 
+    1061 | 32768, 
+    1062 | 32768, 
+    1063 | 32768, 
+    1064 | 32768, 
+    1065 | 32768, 
+    1066 | 32768, 
+    1067 | 32768, 
+    1068 | 32768, 
+    1069 | 32768, 
+    1070 | 32768, 
+    1071 | 32768, 
+    1072 | 32768, 
+    1073 | 32768, 
+    1074 | 32768, 
+    1075 | 32768, 
+    1076 | 32768, 
+    1077 | 0, 
+    1079 | 32768, 
+    1080 | 32768, 
+    1081 | 32768, 
+    1082 | 32768, 
+    1083 | 32768, 
+    1084 | 32768, 
+    1085 | 32768, 
+    1086 | 32768, 
+    1087 | 32768, 
+    1088 | 32768, 
+    1089 | 32768, 
+    1090 | 32768, 
+    1091 | 32768, 
+    1092 | 32768, 
+    1093 | 32768, 
+    1094 | 32768, 
+    1095 | 32768, 
+    1096 | 32768, 
+    1097 | 32768, 
+    1098 | 32768, 
+    1099 | 32768, 
+    1100 | 32768, 
+    1101 | 32768, 
+    1102 | 32768, 
+    1103 | 32768, 
+    1104 | 32768, 
+    1105 | 32768, 
+    1106 | 32768, 
+    1107 | 32768, 
+    1108 | 0, 
+    1110 | 32768, 
+    1111 | 32768, 
+    1112 | 32768, 
+    1113 | 32768, 
+    1114 | 32768, 
+    1115 | 32768, 
+    1116 | 0, 
+    1119 | 32768, 
+    1120 | 32768, 
+    1121 | 32768, 
+    1122 | 32768, 
+    1123 | 32768, 
+    1124 | 32768, 
+    1125 | 32768, 
+    1126 | 32768, 
+    1127 | 32768, 
+    1128 | 32768, 
+    1129 | 32768, 
+    1130 | 32768, 
+    1131 | 32768, 
+    1132 | 0, 
+    1134 | 32768, 
+    1135 | 32768, 
+    1136 | 0, 
+    1138 | 32768, 
+    1139 | 32768, 
+    1140 | 32768, 
+    1141 | 32768, 
+    1142 | 32768, 
+    1143 | 32768, 
+    1144 | 32768, 
+    1145 | 32768, 
+    1146 | 0, 
+    1150 | 32768, 
+    1151 | 32768, 
+    1152 | 32768, 
+    1153 | 32768, 
+    1154 | 32768, 
+    1155 | 32768, 
+    1156 | 32768, 
+    1157 | 32768, 
+    1158 | 32768, 
+    1159 | 32768, 
+    1160 | 0, 
+    1163 | 32768, 
+    1164 | 32768, 
+    1165 | 32768, 
+    1166 | 32768, 
+    1167 | 0, 
+    1169 | 32768, 
+    1170 | 32768, 
+    1171 | 32768, 
+    1172 | 32768, 
+    1173 | 32768, 
+    1174 | 32768, 
+    1175 | 32768, 
+    1176 | 32768, 
+    1177 | 32768, 
+    1178 | 32768, 
+    1179 | 32768, 
+    1180 | 32768, 
+    1181 | 32768, 
+    1182 | 32768, 
+    1183 | 32768, 
+    1184 | 32768, 
+    1185 | 32768, 
+    1186 | 32768, 
+    1187 | 32768, 
+    1188 | 32768, 
+    1189 | 32768, 
+    1190 | 0, 
+    1197 | 32768, 
+    1198 | 32768, 
+    1199 | 32768, 
+    1200 | 32768, 
+    1201 | 32768, 
+    1202 | 32768, 
+    1203 | 32768, 
+    1204 | 32768, 
+    1205 | 32768, 
+    1206 | 32768, 
+    1207 | 32768, 
+    1208 | 32768, 
+    1209 | 32768, 
+    1210 | 32768, 
+    1211 | 32768, 
+    1212 | 32768, 
+    1213 | 32768, 
+    1214 | 32768, 
+    1215 | 32768, 
+    1216 | 32768, 
+    1217 | 32768, 
+    1218 | 32768, 
+    1219 | 32768, 
+    1220 | 32768, 
+    1221 | 32768, 
+    1222 | 32768, 
+    1223 | 32768, 
+    1224 | 32768, 
+    1225 | 32768, 
+    1226 | 32768, 
+    1227 | 32768, 
+    1228 | 32768, 
+    1229 | 32768, 
+    1230 | 32768, 
+    1231 | 32768, 
+    1232 | 32768, 
+    1233 | 32768, 
+    1234 | 0, 
+    1237 | 32768, 
+    1238 | 32768, 
+    1239 | 32768, 
+    1240 | 32768, 
+    1241 | 32768, 
+    1242 | 32768, 
+    1243 | 32768, 
+    1244 | 32768, 
+    1245 | 32768, 
+    1246 | 32768, 
+    1247 | 32768, 
+    1248 | 0, 
+    1251 | 32768, 
+    1252 | 32768, 
+    1253 | 32768, 
+    1254 | 32768, 
+    1255 | 32768, 
+    1256 | 32768, 
+    1257 | 32768, 
+    1258 | 32768, 
+    1259 | 32768, 
+    1260 | 32768, 
+    1261 | 32768, 
+    1262 | 32768, 
+    1263 | 32768, 
+    1264 | 32768, 
+    1265 | 32768, 
+    1266 | 32768, 
+    1267 | 0, 
+    1273 | 32768, 
+    1274 | 32768, 
+    1275 | 32768, 
+    1276 | 32768, 
+    1277 | 32768, 
+    1278 | 32768, 
+    1279 | 32768, 
+    1280 | 32768, 
+    1281 | 32768, 
+    1282 | 32768, 
+    1283 | 32768, 
+    1284 | 32768, 
+    1285 | 32768, 
+    1286 | 32768, 
+    1287 | 32768, 
+    1288 | 32768, 
+    1289 | 32768, 
+    1290 | 32768, 
+    1291 | 32768, 
+    1292 | 32768, 
+    1293 | 32768, 
+    1294 | 32768, 
+    1295 | 32768, 
+    1296 | 32768, 
+    1297 | 32768, 
+    1298 | 32768, 
+    1299 | 32768, 
+    1300 | 32768, 
+    1301 | 32768, 
+    1302 | 32768, 
+    1303 | 32768, 
+    1304 | 32768, 
+    1305 | 32768, 
+    1306 | 32768, 
+    1307 | 32768, 
+    1308 | 32768, 
+    1309 | 32768, 
+    1310 | 32768, 
+    1311 | 32768, 
+    1312 | 32768, 
+    1313 | 32768, 
+    1314 | 32768, 
+    1315 | 32768, 
+    1316 | 32768, 
+    1317 | 32768, 
+    1318 | 32768, 
+    1319 | 32768, 
+    1320 | 32768, 
+    1321 | 32768, 
+    1322 | 32768, 
+    1323 | 32768, 
+    1324 | 32768, 
+    1325 | 32768, 
+    1326 | 32768, 
+    1327 | 32768, 
+    1328 | 32768, 
+    1329 | 32768, 
+    1330 | 32768, 
+    1331 | 32768, 
+    1332 | 32768, 
+    1333 | 32768, 
+    1334 | 32768, 
+    1335 | 32768, 
+    1336 | 32768, 
+    1337 | 32768, 
+    1338 | 32768, 
+    1339 | 32768, 
+    1340 | 32768, 
+    1341 | 32768, 
+    1342 | 32768, 
+    1343 | 32768, 
+    1344 | 32768, 
+    1345 | 32768, 
+    1346 | 32768, 
+    1347 | 32768, 
+    1348 | 32768, 
+    1349 | 32768, 
+    1350 | 32768, 
+    1351 | 32768, 
+    1352 | 32768, 
+    1353 | 32768, 
+    1354 | 32768, 
+    1355 | 32768, 
+    1356 | 32768, 
+    1357 | 32768, 
+    1358 | 0, 
+    1362 | 32768, 
+    1363 | 0, 
+    1366 | 32768, 
+    1367 | 32768, 
+    1368 | 32768, 
+    1369 | 32768, 
+    1370 | 32768, 
+    1371 | 32768, 
+    1372 | 0, 
+    1435 | 32768, 
+    1436 | 32768, 
+    1437 | 32768, 
+    1438 | 0, 
+    1475 | 32768, 
+    1476 | 32768, 
+    1477 | 32768, 
+    1478 | 0, 
+    1627 | 32768, 
+    1628 | 0, 
+    1630 | 32768, 
+    1631 | 0, 
+    1728 | 32768, 
+    1729 | 0, 
+    1737 | 32768, 
+    1738 | 32768, 
+    1739 | 0, 
+    1745 | 32768, 
+    1746 | 32768, 
+    1747 | 0, 
+    1755 | 32768, 
+    1756 | 0, 
+    1764 | 32768, 
+    1765 | 32768, 
+    1766 | 0, 
+    1772 | 32768, 
+    1773 | 32768, 
+    1774 | 0, 
+    1782 | 32768, 
+    1783 | 0, 
+    1805 | 32768, 
+    1806 | 0, 
+    1854 | 32768, 
+    1855 | 0, 
+    1885 | 32768, 
+    1886 | 32768, 
+    1887 | 32768, 
+    1888 | 32768, 
+    1889 | 0, 
+    1897 | 32768, 
+    1898 | 32768, 
+    1899 | 32768, 
+    1900 | 0, 
+    1908 | 32768, 
+    1909 | 0, 
+    1923 | 32768, 
+    1924 | 32768, 
+    1925 | 32768, 
+    1926 | 32768, 
+    1927 | 0, 
+    1929 | 32768, 
+    1930 | 32768, 
+    1931 | 32768, 
+    1932 | 32768, 
+    1933 | 32768, 
+    1934 | 32768, 
+    1935 | 32768, 
+    1936 | 32768, 
+    1937 | 0, 
+    1942 | 32768, 
+    1943 | 0, 
+    1946 | 32768, 
+    1947 | 0, 
+    1950 | 32768, 
+    1951 | 32768, 
+    1952 | 32768, 
+    1953 | 0, 
+    1955 | 32768, 
+    1956 | 32768, 
+    1957 | 32768, 
+    1958 | 0, 
+    1960 | 32768, 
+    1961 | 0, 
+    2002 | 32768, 
+    2003 | 32768, 
+    2004 | 32768, 
+    2005 | 32768, 
+    2006 | 32768, 
+    2007 | 32768, 
+    2008 | 32768, 
+    2009 | 0, 
+    2020 | 32768, 
+    2021 | 32768, 
+    2022 | 32768, 
+    2023 | 32768, 
+    2024 | 0, 
+    2027 | 32768, 
+    2028 | 0, 
+    2030 | 32768, 
+    2031 | 32768, 
+    2032 | 0, 
+    2047 | 32768, 
+    2048 | 0, 
+    2060 | 32768, 
+    2061 | 0, 
+    2063 | 32768, 
+    2064 | 32768, 
+    2065 | 0, 
+    2068 | 32768, 
+    2069 | 0, 
+    2117 | 32768, 
+    2118 | 32768, 
+    2119 | 32768, 
+    2120 | 32768, 
+    2121 | 32768, 
+    2122 | 32768, 
+    2123 | 32768, 
+    2124 | 0, 
+    2129 | 32768, 
+    2130 | 32768, 
+    2131 | 32768, 
+    2132 | 32768, 
+    2133 | 32768, 
+    2134 | 0, 
+    2136 | 32768, 
+    2137 | 32768, 
+    2138 | 32768, 
+    2139 | 32768, 
+    2140 | 0, 
+    2180 | 32768, 
+    2181 | 0, 
+    2260 | 32768, 
+    2261 | 32768, 
+    2262 | 32768, 
+    2263 | 0, 
+    2266 | 32768, 
+    2267 | 32768, 
+    2268 | 32768, 
+    2269 | 32768, 
+    2270 | 32768, 
+    2271 | 32768, 
+    2272 | 32768, 
+    2273 | 32768, 
+    2274 | 32768, 
+    2275 | 32768, 
+    2276 | 32768, 
+    2277 | 32768, 
+    2278 | 32768, 
+    2279 | 32768, 
+    2280 | 0, 
+    2328 | 32768, 
+    2329 | 0, 
+    2335 | 32768, 
+    2336 | 0, 
+    2348 | 32768, 
+    2349 | 32768, 
+    2350 | 32768, 
+    2351 | 0, 
+    2454 | 32768, 
+    2455 | 0, 
+    2458 | 32768, 
+    2459 | 0, 
+    2461 | 32768, 
+    2462 | 32768, 
+    2463 | 0, 
+    2465 | 32768, 
+    2466 | 32768, 
+    2467 | 32768, 
+    2468 | 32768, 
+    2469 | 32768, 
+    2470 | 0, 
+    2472 | 32768, 
+    2473 | 32768, 
+    2474 | 32768, 
+    2475 | 32768, 
+    2476 | 32768, 
+    2477 | 32768, 
+    2478 | 32768, 
+    2479 | 32768, 
+    2480 | 32768, 
+    2481 | 32768, 
+    2482 | 32768, 
+    2483 | 32768, 
+    2484 | 32768, 
+    2485 | 32768, 
+    2486 | 32768, 
+    2487 | 32768, 
+    2488 | 32768, 
+    2489 | 32768, 
+    2490 | 32768, 
+    2491 | 32768, 
+    2492 | 32768, 
+    2493 | 32768, 
+    2494 | 32768, 
+    2495 | 32768, 
+    2496 | 32768, 
+    2497 | 32768, 
+    2498 | 32768, 
+    2499 | 32768, 
+    2500 | 0, 
+    2714 | 32768, 
+    2715 | 0, 
+    2718 | 32768, 
+    2719 | 0, 
+    2724 | 32768, 
+    2725 | 32768, 
+    2726 | 32768, 
+    2727 | 32768, 
+    2728 | 32768, 
+    2729 | 0, 
+    2731 | 32768, 
+    2732 | 32768, 
+    2733 | 32768, 
+    2734 | 32768, 
+    2735 | 32768, 
+    2736 | 32768, 
+    2737 | 32768, 
+    2738 | 0, 
+    2833 | 32768, 
+    2834 | 0, 
+    2848 | 32768, 
+    2849 | 32768, 
+    2850 | 32768, 
+    2851 | 32768, 
+    2852 | 32768, 
+    2853 | 0, 
+    2925 | 32768, 
+    2926 | 0, 
+    3358 | 32768, 
+    3359 | 32768, 
+    3360 | 32768, 
+    3361 | 32768, 
+    3362 | 32768, 
+    3363 | 32768, 
+    3364 | 32768, 
+    3365 | 32768, 
+    3366 | 32768, 
+    3367 | 32768, 
+    3368 | 0, 
+    3413 | 32768, 
+    3414 | 0, 
+    3444 | 32768, 
+    3445 | 32768, 
+    3446 | 32768, 
+    3447 | 0, 
+    3460 | 32768, 
+    3461 | 0, 
+    3524 | 32768, 
+    3525 | 0, 
+    3539 | 32768, 
+    3540 | 0, 
+    3543 | 32768, 
+    3544 | 0, 
+    3547 | 32768, 
+    3548 | 0, 
+    3582 | 32768, 
+    3583 | 0, 
+    3586 | 32768, 
+    3587 | 32768, 
+    3588 | 32768, 
+    3589 | 32768, 
+    3590 | 32768, 
+    3591 | 32768, 
+    3592 | 32768, 
+    3593 | 32768, 
+    3594 | 32768, 
+    3595 | 32768, 
+    3596 | 32768, 
+    3597 | 32768, 
+    3598 | 32768, 
+    3599 | 32768, 
+    3600 | 32768, 
+    3601 | 32768, 
+    3602 | 32768, 
+    3603 | 32768, 
+    3604 | 32768, 
+    3605 | 32768, 
+    3606 | 32768, 
+    3607 | 32768, 
+    3608 | 32768, 
+    3609 | 32768, 
+    3610 | 32768, 
+    3611 | 32768, 
+    3612 | 32768, 
+    3613 | 32768, 
+    3614 | 32768, 
+    3615 | 32768, 
+    3616 | 32768, 
+    3617 | 32768, 
+    3618 | 32768, 
+    3619 | 32768, 
+    3620 | 32768, 
+    3621 | 32768, 
+    3622 | 32768, 
+    3623 | 32768, 
+    3624 | 32768, 
+    3625 | 32768, 
+    3626 | 32768, 
+    3627 | 32768, 
+    3628 | 32768, 
+    3629 | 0, 
+    3633 | 32768, 
+    3634 | 32768, 
+    3635 | 0, 
+    3715 | 32768, 
+    3716 | 32768, 
+    3717 | 32768, 
+    3718 | 32768, 
+    3719 | 32768, 
+    3720 | 32768, 
+    3721 | 32768, 
+    3722 | 32768, 
+    3723 | 32768, 
+    3724 | 32768, 
+    3725 | 0, 
+    3732 | 32768, 
+    3733 | 0, 
+    3994 | 32768, 
+    3995 | 0, 
+    3998 | 32768, 
+    3999 | 0, 
+    4013 | 32768, 
+    4014 | 0, 
+    4016 | 32768, 
+    4017 | 0, 
+    4068 | 32768, 
+    4069 | 0, 
+    4084 | 32768, 
+    4085 | 0, 
+    4191 | 32768, 
+    4192 | 0, 
+    4197 | 32768, 
+    4198 | 32768, 
+    4199 | 0, 
+    4204 | 32768, 
+    4205 | 0, 
+    4256 | 32768, 
+    4257 | 32768, 
+    4258 | 32768, 
+    4259 | 32768, 
+    4260 | 32768, 
+    4261 | 32768, 
+    4262 | 32768, 
+    4263 | 32768, 
+    4264 | 32768, 
+    4265 | 32768, 
+    4266 | 32768, 
+    4267 | 32768, 
+    4268 | 32768, 
+    4269 | 32768, 
+    4270 | 32768, 
+    4271 | 32768, 
+    4272 | 32768, 
+    4273 | 32768, 
+    4274 | 32768, 
+    4275 | 32768, 
+    4276 | 32768, 
+    4277 | 32768, 
+    4278 | 32768, 
+    4279 | 32768, 
+    4280 | 32768, 
+    4281 | 32768, 
+    4282 | 32768, 
+    4283 | 32768, 
+    4284 | 32768, 
+    4285 | 32768, 
+    4286 | 32768, 
+    4287 | 32768, 
+    4288 | 32768, 
+    4289 | 32768, 
+    4290 | 32768, 
+    4291 | 32768, 
+    4292 | 32768, 
+    4293 | 32768, 
+    4294 | 32768, 
+    4295 | 32768, 
+    4296 | 32768, 
+    4297 | 32768, 
+    4298 | 32768, 
+    4299 | 32768, 
+    4300 | 32768, 
+    4301 | 32768, 
+    4302 | 32768, 
+    4303 | 32768, 
+    4304 | 32768, 
+    4305 | 32768, 
+    4306 | 32768, 
+    4307 | 0, 
+    4623 | 32768, 
+    4624 | 32768, 
+    4625 | 32768, 
+    4626 | 32768, 
+    4627 | 32768, 
+    4628 | 0, 
+    4633 | 32768, 
+    4634 | 0, 
+    4639 | 32768, 
+    4640 | 32768, 
+    4641 | 32768, 
+    4642 | 32768, 
+    4643 | 32768, 
+    4644 | 32768, 
+    4645 | 32768, 
+    4646 | 32768, 
+    4647 | 32768, 
+    4648 | 32768, 
+    4649 | 32768, 
+    4650 | 32768, 
+    4651 | 0, 
+    4654 | 32768, 
+    4655 | 0, 
+    4659 | 32768, 
+    4660 | 0, 
+    4665 | 32768, 
+    4666 | 32768, 
+    4667 | 32768, 
+    4668 | 0, 
+    4675 | 32768, 
+    4676 | 0, 
+    4681 | 32768, 
+    4682 | 0, 
+    4685 | 32768, 
+    4686 | 0, 
+    4728 | 32768, 
+    4729 | 0, 
+    4743 | 32768, 
+    4744 | 32768, 
+    4745 | 0, 
+    4754 | 32768, 
+    4755 | 32768, 
+    4756 | 0, 
+    4759 | 32768, 
+    4760 | 0, 
+    4776 | 32768, 
+    4777 | 0, 
+    4779 | 32768, 
+    4780 | 32768, 
+    4781 | 0, 
+    4783 | 32768, 
+    4784 | 0, 
+    4808 | 32768, 
+    4809 | 0, 
+    4826 | 32768, 
+    4827 | 32768, 
+    4828 | 32768, 
+    4829 | 32768, 
+    4830 | 32768, 
+    4831 | 32768, 
+    4832 | 32768, 
+    4833 | 32768, 
+    4834 | 32768, 
+    4835 | 32768, 
+    4836 | 32768, 
+    4837 | 32768, 
+    4838 | 32768, 
+    4839 | 32768, 
+    4840 | 32768, 
+    4841 | 32768, 
+    4842 | 32768, 
+    4843 | 32768, 
+    4844 | 32768, 
+    4845 | 32768, 
+    4846 | 32768, 
+    4847 | 32768, 
+    4848 | 32768, 
+    4849 | 32768, 
+    4850 | 32768, 
+    4851 | 32768, 
+    4852 | 32768, 
+    4853 | 32768, 
+    4854 | 32768, 
+    4855 | 32768, 
+    4856 | 32768, 
+    4857 | 32768, 
+    4858 | 32768, 
+    4859 | 32768, 
+    4860 | 32768, 
+    4861 | 32768, 
+    4862 | 32768, 
+    4863 | 32768, 
+    4864 | 32768, 
+    4865 | 32768, 
+    4866 | 0, 
+    5058 | 32768, 
+    5059 | 0, 
+    5065 | 32768, 
+    5066 | 0, 
+    5072 | 32768, 
+    5073 | 0, 
+    5079 | 32768, 
+    5080 | 0, 
+    5083 | 32768, 
+    5084 | 0, 
+    5099 | 32768, 
+    5100 | 32768, 
+    5101 | 32768, 
+    5102 | 32768, 
+    5103 | 32768, 
+    5104 | 32768, 
+    5105 | 32768, 
+    5106 | 32768, 
+    5107 | 32768, 
+    5108 | 32768, 
+    5109 | 32768, 
+    5110 | 32768, 
+    5111 | 32768, 
+    5112 | 32768, 
+    5113 | 32768, 
+    5114 | 32768, 
+    5115 | 32768, 
+    5116 | 32768, 
+    5117 | 32768, 
+    5118 | 32768, 
+    5119 | 32768, 
+    5120 | 32768, 
+    5121 | 32768, 
+    5122 | 32768, 
+    5123 | 32768, 
+    5124 | 32768, 
+    5125 | 32768, 
+    5126 | 32768, 
+    5127 | 32768, 
+    5128 | 32768, 
+    5129 | 32768, 
+    5130 | 32768, 
+    5131 | 32768, 
+    5132 | 32768, 
+    5133 | 32768, 
+    5134 | 32768, 
+    5135 | 32768, 
+    5136 | 32768, 
+    5137 | 32768, 
+    5138 | 32768, 
+    5139 | 32768, 
+    5140 | 32768, 
+    5141 | 32768, 
+    5142 | 32768, 
+    5143 | 32768, 
+    5144 | 0, 
+    5184 | 32768, 
+    5185 | 32768, 
+    5186 | 32768, 
+    5187 | 32768, 
+    5188 | 0, 
+    5224 | 32768, 
+    5225 | 32768, 
+    5226 | 32768, 
+    5227 | 32768, 
+    5228 | 32768, 
+    5229 | 32768, 
+    5230 | 32768, 
+    5231 | 32768, 
+    5232 | 32768, 
+    5233 | 32768, 
+    5234 | 32768, 
+    5235 | 32768, 
+    5236 | 32768, 
+    5237 | 32768, 
+    5238 | 32768, 
+    5239 | 32768, 
+    5240 | 32768, 
+    5241 | 0, 
+    5243 | 32768, 
+    5244 | 32768, 
+    5245 | 32768, 
+    5246 | 32768, 
+    5247 | 32768, 
+    5248 | 32768, 
+    5249 | 32768, 
+    5250 | 32768, 
+    5251 | 32768, 
+    5252 | 32768, 
+    5253 | 32768, 
+    5254 | 32768, 
+    5255 | 32768, 
+    5256 | 32768, 
+    5257 | 32768, 
+    5258 | 32768, 
+    5259 | 32768, 
+    5260 | 32768, 
+    5261 | 32768, 
+    5262 | 32768, 
+    5263 | 32768, 
+    5264 | 32768, 
+    5265 | 32768, 
+    5266 | 32768, 
+    5267 | 32768, 
+    5268 | 32768, 
+    5269 | 32768, 
+    5270 | 32768, 
+    5271 | 32768, 
+    5272 | 32768, 
+    5273 | 32768, 
+    5274 | 32768, 
+    5275 | 32768, 
+    5276 | 32768, 
+    5277 | 32768, 
+    5278 | 32768, 
+    5279 | 32768, 
+    5280 | 32768, 
+    5281 | 32768, 
+    5282 | 32768, 
+    5283 | 32768, 
+    5284 | 32768, 
+    5285 | 32768, 
+    5286 | 32768, 
+    5287 | 32768, 
+    5288 | 32768, 
+    5289 | 32768, 
+    5290 | 32768, 
+    5291 | 32768, 
+    5292 | 32768, 
+    5293 | 32768, 
+    5294 | 32768, 
+    5295 | 32768, 
+    5296 | 32768, 
+    5297 | 32768, 
+    5298 | 32768, 
+    5299 | 32768, 
+    5300 | 32768, 
+    5301 | 32768, 
+    5302 | 32768, 
+    5303 | 32768, 
+    5304 | 32768, 
+    5305 | 0, 
+    5356 | 32768, 
+    5357 | 32768, 
+    5358 | 32768, 
+    5359 | 32768, 
+    5360 | 32768, 
+    5361 | 32768, 
+    5362 | 32768, 
+    5363 | 32768, 
+    5364 | 32768, 
+    5365 | 32768, 
+    5366 | 32768, 
+    5367 | 32768, 
+    5368 | 32768, 
+    5369 | 32768, 
+    5370 | 32768, 
+    5371 | 32768, 
+    5372 | 32768, 
+    5373 | 32768, 
+    5374 | 32768, 
+    5375 | 32768, 
+    5376 | 32768, 
+    5377 | 32768, 
+    5378 | 32768, 
+    5379 | 32768, 
+    5380 | 32768, 
+    5381 | 32768, 
+    5382 | 32768, 
+    5383 | 32768, 
+    5384 | 32768, 
+    5385 | 32768, 
+    5386 | 32768, 
+    5387 | 32768, 
+    5388 | 32768, 
+    5389 | 32768, 
+    5390 | 32768, 
+    5391 | 32768, 
+    5392 | 0, 
+    5395 | 32768, 
+    5396 | 32768, 
+    5397 | 32768, 
+    5398 | 32768, 
+    5399 | 32768, 
+    5400 | 32768, 
+    5401 | 32768, 
+    5402 | 32768, 
+    5403 | 32768, 
+    5404 | 32768, 
+    5405 | 32768, 
+    5406 | 32768, 
+    5407 | 32768, 
+    5408 | 32768, 
+    5409 | 32768, 
+    5410 | 32768, 
+    5411 | 32768, 
+    5412 | 32768, 
+    5413 | 32768, 
+    5414 | 32768, 
+    5415 | 32768, 
+    5416 | 32768, 
+    5417 | 32768, 
+    5418 | 32768, 
+    5419 | 32768, 
+    5420 | 32768, 
+    5421 | 32768, 
+    5422 | 32768, 
+    5423 | 32768, 
+    5424 | 32768, 
+    5425 | 32768, 
+    5426 | 32768, 
+    5427 | 32768, 
+    5428 | 32768, 
+    5429 | 32768, 
+    5430 | 32768, 
+    5431 | 32768, 
+    5432 | 32768, 
+    5433 | 32768, 
+    5434 | 32768, 
+    5435 | 32768, 
+    5436 | 0, 
+    5440 | 32768, 
+    5441 | 32768, 
+    5442 | 32768, 
+    5443 | 32768, 
+    5444 | 32768, 
+    5445 | 32768, 
+    5446 | 32768, 
+    5447 | 32768, 
+    5448 | 32768, 
+    5449 | 32768, 
+    5450 | 32768, 
+    5451 | 32768, 
+    5452 | 32768, 
+    5453 | 32768, 
+    5454 | 32768, 
+    5455 | 32768, 
+    5456 | 32768, 
+    5457 | 32768, 
+    5458 | 32768, 
+    5459 | 32768, 
+    5460 | 32768, 
+    5461 | 32768, 
+    5462 | 32768, 
+    5463 | 32768, 
+    5464 | 32768, 
+    5465 | 0, 
+    5497 | 32768, 
+    5498 | 32768, 
+    5499 | 32768, 
+    5500 | 32768, 
+    5501 | 32768, 
+    5502 | 32768, 
+    5503 | 32768, 
+    5504 | 32768, 
+    5505 | 32768, 
+    5506 | 32768, 
+    5507 | 32768, 
+    5508 | 32768, 
+    5509 | 32768, 
+    5510 | 32768, 
+    5511 | 32768, 
+    5512 | 32768, 
+    5513 | 32768, 
+    5514 | 32768, 
+    5515 | 32768, 
+    5516 | 32768, 
+    5517 | 32768, 
+    5518 | 32768, 
+    5519 | 32768, 
+    5520 | 32768, 
+    5521 | 32768, 
+    5522 | 32768, 
+    5523 | 32768, 
+    5524 | 32768, 
+    5525 | 32768, 
+    5526 | 32768, 
+    5527 | 32768, 
+    5528 | 32768, 
+    5529 | 32768, 
+    5530 | 32768, 
+    5531 | 0, 
+    5533 | 32768, 
+    5534 | 32768, 
+    5535 | 32768, 
+    5536 | 32768, 
+    5537 | 32768, 
+    5538 | 32768, 
+    5539 | 32768, 
+    5540 | 32768, 
+    5541 | 32768, 
+    5542 | 32768, 
+    5543 | 32768, 
+    5544 | 32768, 
+    5545 | 32768, 
+    5546 | 32768, 
+    5547 | 32768, 
+    5548 | 32768, 
+    5549 | 32768, 
+    5550 | 32768, 
+    5551 | 32768, 
+    5552 | 32768, 
+    5553 | 32768, 
+    5554 | 32768, 
+    5555 | 32768, 
+    5556 | 32768, 
+    5557 | 32768, 
+    5558 | 32768, 
+    5559 | 32768, 
+    5560 | 32768, 
+    5561 | 32768, 
+    5562 | 32768, 
+    5563 | 32768, 
+    5564 | 32768, 
+    5565 | 32768, 
+    5566 | 32768, 
+    5567 | 32768, 
+    5568 | 32768, 
+    5569 | 32768, 
+    5570 | 32768, 
+    5571 | 32768, 
+    5572 | 32768, 
+    5573 | 32768, 
+    5574 | 32768, 
+    5575 | 32768, 
+    5576 | 32768, 
+    5577 | 32768, 
+    5578 | 32768, 
+    5579 | 32768, 
+    5580 | 32768, 
+    5581 | 32768, 
+    5582 | 32768, 
+    5583 | 32768, 
+    5584 | 32768, 
+    5585 | 32768, 
+    5586 | 32768, 
+    5587 | 32768, 
+    5588 | 32768, 
+    5589 | 32768, 
+    5590 | 32768, 
+    5591 | 32768, 
+    5592 | 32768, 
+    5593 | 32768, 
+    5594 | 32768, 
+    5595 | 32768, 
+    5596 | 32768, 
+    5597 | 32768, 
+    5598 | 32768, 
+    5599 | 32768, 
+    5600 | 32768, 
+    5601 | 32768, 
+    5602 | 32768, 
+    5603 | 32768, 
+    5604 | 32768, 
+    5605 | 0, 
+    5612 | 32768, 
+    5613 | 32768, 
+    5614 | 32768, 
+    5615 | 0, 
+    5621 | 32768, 
+    5622 | 32768, 
+    5623 | 32768, 
+    5624 | 32768, 
+    5625 | 32768, 
+    5626 | 32768, 
+    5627 | 32768, 
+    5628 | 32768, 
+    5629 | 0, 
+    5789 | 32768, 
+    5790 | 32768, 
+    5791 | 32768, 
+    5792 | 0, 
+    5794 | 32768, 
+    5795 | 0, 
+    5893 | 32768, 
+    5894 | 0, 
+    5952 | 32768, 
+    5953 | 0, 
+    6301 | 32768, 
+    6302 | 0, 
+    6345 | 32768, 
+    6346 | 0, 
+    6402 | 32768, 
+    6403 | 0, 
+    6459 | 32768, 
+    6460 | 0, 
+    6516 | 32768, 
+    6517 | 0, 
+    6573 | 32768, 
+    6574 | 0, 
+    6587 | 32768, 
+    6588 | 32768, 
+    6589 | 0, 
+    6639 | 32768, 
+    6640 | 32768, 
+    6641 | 32768, 
+    6642 | 32768, 
+    6643 | 32768, 
+    6644 | 32768, 
+    6645 | 32768, 
+    6646 | 32768, 
+    6647 | 32768, 
+    6648 | 32768, 
+    6649 | 32768, 
+    6650 | 32768, 
+    6651 | 32768, 
+    6652 | 32768, 
+    6653 | 32768, 
+    6654 | 32768, 
+    6655 | 32768, 
+    6656 | 32768, 
+    6657 | 32768, 
+    6658 | 32768, 
+    6659 | 0, 
+    6693 | 32768, 
+    6694 | 32768, 
+    6695 | 32768, 
+    6696 | 32768, 
+    6697 | 32768, 
+    6698 | 32768, 
+    6699 | 0, 
+    6736 | 32768, 
+    6737 | 0, 
+    6758 | 32768, 
+    6759 | 32768, 
+    6760 | 32768, 
+    6761 | 0, 
+    6775 | 32768, 
+    6776 | 0, 
+    6790 | 32768, 
+    6791 | 0, 
+    6844 | 32768, 
+    6845 | 0, 
+    6872 | 32768, 
+    6873 | 32768, 
+    6874 | 32768, 
+    6875 | 32768, 
+    6876 | 32768, 
+    6877 | 32768, 
+    6878 | 32768, 
+    6879 | 32768, 
+    6880 | 32768, 
+    6881 | 32768, 
+    6882 | 32768, 
+    6883 | 32768, 
+    6884 | 32768, 
+    6885 | 32768, 
+    6886 | 32768, 
+    6887 | 0, 
+    6897 | 32768, 
+    6898 | 32768, 
+    6899 | 0, 
+    6963 | 32768, 
+    6964 | 0, 
+    6966 | 32768, 
+    6967 | 32768, 
+    6968 | 32768, 
+    6969 | 32768, 
+    6970 | 32768, 
+    6971 | 32768, 
+    6972 | 0, 
+    6975 | 32768, 
+    6976 | 0, 
+    7020 | 32768, 
+    7021 | 0, 
+    7030 | 32768, 
+    7031 | 0, 
+    7033 | 32768, 
+    7034 | 32768, 
+    7035 | 32768, 
+    7036 | 32768, 
+    7037 | 32768, 
+    7038 | 32768, 
+    7039 | 32768, 
+    7040 | 32768, 
+    7041 | 32768, 
+    7042 | 32768, 
+    7043 | 32768, 
+    7044 | 32768, 
+    7045 | 32768, 
+    7046 | 32768, 
+    7047 | 32768, 
+    7048 | 32768, 
+    7049 | 32768, 
+    7050 | 32768, 
+    7051 | 32768, 
+    7052 | 32768, 
+    7053 | 32768, 
+    7054 | 32768, 
+    7055 | 32768, 
+    7056 | 32768, 
+    7057 | 32768, 
+    7058 | 32768, 
+    7059 | 32768, 
+    7060 | 32768, 
+    7061 | 32768, 
+    7062 | 32768, 
+    7063 | 32768, 
+    7064 | 32768, 
+    7065 | 32768, 
+    7066 | 32768, 
+    7067 | 32768, 
+    7068 | 32768, 
+    7069 | 32768, 
+    7070 | 32768, 
+    7071 | 32768, 
+    7072 | 32768, 
+    7073 | 32768, 
+    7074 | 32768, 
+    7075 | 32768, 
+    7076 | 32768, 
+    7077 | 32768, 
+    7078 | 32768, 
+    7079 | 32768, 
+    7080 | 0, 
+    7129 | 32768, 
+    7130 | 0, 
+    7147 | 32768, 
+    7148 | 0, 
+    7183 | 32768, 
+    7184 | 0, 
+    7221 | 32768, 
+    7222 | 32768, 
+    7223 | 32768, 
+    7224 | 0, 
+    7374 | 32768, 
+    7375 | 0, 
+    7399 | 32768, 
+    7400 | 0, 
+    7421 | 32768, 
+    7422 | 0, 
+    7581 | 32768, 
+    7582 | 0, 
+    7612 | 32768, 
+    7613 | 32768, 
 ];
 
 static MAPPING_TABLE: &'static [Mapping] = &[