1 /* $NetBSD: nameprepdata.c,v 1.4 2014/12/10 04:37:55 christos Exp $ */ 2 3 /* Id: nameprepdata.c,v 1.1 2003/06/04 00:26:05 marka Exp */ 4 /* $-Id: generate_nameprep_data.pl,v 1.9 2002/11/29 09:08:13 ishisone Exp -$ */ 5 /* 6 * Do not edit this file! 7 * This file is generated from NAMEPREP specification. 8 */ 9 10 #define MAP_BITS_0 9 11 #define MAP_BITS_1 7 12 #define MAP_BITS_2 5 13 14 #define PROH_BITS_0 7 15 #define PROH_BITS_1 7 16 #define PROH_BITS_2 7 17 18 #define UNAS_BITS_0 7 19 #define UNAS_BITS_1 7 20 #define UNAS_BITS_2 7 21 22 #define BIDI_BITS_0 9 23 #define BIDI_BITS_1 7 24 #define BIDI_BITS_2 5 25 26 static const unsigned short nameprep_rfc3491_map_imap[] = { 27 272, 400, 528, 656, 784, 784, 784, 784, 28 784, 784, 784, 784, 784, 784, 784, 912, 29 1040, 784, 784, 784, 784, 784, 784, 784, 30 784, 784, 784, 784, 784, 1168, 784, 784, 31 784, 784, 784, 784, 784, 784, 784, 784, 32 784, 784, 784, 784, 784, 784, 784, 784, 33 784, 784, 784, 784, 784, 784, 784, 784, 34 784, 784, 784, 784, 784, 784, 784, 784, 35 784, 784, 784, 784, 784, 784, 784, 784, 36 784, 784, 784, 784, 784, 784, 784, 784, 37 784, 784, 784, 784, 784, 784, 784, 784, 38 784, 784, 784, 784, 784, 784, 784, 784, 39 784, 784, 784, 784, 784, 784, 784, 784, 40 784, 784, 784, 784, 784, 784, 784, 784, 41 784, 784, 784, 784, 784, 784, 784, 784, 42 784, 784, 784, 784, 784, 784, 784, 784, 43 784, 784, 784, 784, 784, 784, 784, 784, 44 784, 784, 784, 784, 784, 784, 784, 784, 45 784, 784, 784, 784, 784, 784, 784, 784, 46 784, 784, 784, 784, 784, 784, 784, 784, 47 784, 784, 784, 784, 784, 784, 784, 784, 48 784, 784, 784, 784, 784, 784, 784, 784, 49 784, 784, 784, 784, 784, 784, 784, 784, 50 784, 784, 784, 784, 784, 784, 784, 784, 51 784, 784, 784, 784, 784, 784, 784, 784, 52 784, 784, 784, 784, 784, 784, 784, 784, 53 784, 784, 784, 784, 784, 784, 784, 784, 54 784, 784, 784, 784, 784, 784, 784, 784, 55 784, 784, 784, 784, 784, 784, 784, 784, 56 784, 784, 784, 784, 784, 784, 784, 784, 57 784, 784, 784, 784, 784, 784, 784, 784, 58 784, 784, 784, 784, 784, 784, 784, 784, 59 784, 784, 784, 784, 784, 784, 784, 784, 60 784, 784, 784, 784, 784, 784, 784, 784, 61 0, 0, 1, 0, 0, 2, 3, 0, 62 4, 5, 6, 7, 8, 9, 10, 11, 63 12, 13, 0, 0, 0, 0, 0, 0, 64 0, 0, 14, 15, 16, 17, 18, 19, 65 20, 21, 0, 22, 23, 24, 25, 26, 66 27, 28, 29, 0, 30, 0, 0, 0, 67 0, 0, 0, 0, 0, 0, 0, 0, 68 0, 0, 0, 0, 0, 0, 0, 0, 69 0, 0, 0, 0, 0, 0, 0, 0, 70 0, 0, 0, 0, 0, 0, 0, 0, 71 0, 0, 0, 0, 0, 0, 0, 0, 72 0, 0, 0, 0, 0, 0, 0, 0, 73 0, 0, 0, 0, 0, 0, 0, 0, 74 0, 0, 0, 0, 0, 0, 0, 0, 75 0, 0, 0, 0, 0, 0, 0, 0, 76 0, 0, 0, 0, 0, 0, 0, 0, 77 0, 0, 0, 0, 0, 0, 0, 0, 78 0, 0, 0, 0, 0, 0, 0, 0, 79 0, 0, 0, 0, 0, 0, 0, 0, 80 0, 0, 0, 0, 0, 0, 0, 0, 81 0, 0, 0, 0, 0, 0, 0, 0, 82 0, 0, 0, 0, 0, 0, 0, 0, 83 0, 0, 0, 0, 0, 0, 0, 0, 84 0, 0, 0, 0, 0, 0, 0, 0, 85 31, 0, 0, 0, 0, 0, 0, 0, 86 0, 0, 0, 0, 0, 0, 0, 0, 87 0, 0, 0, 0, 0, 0, 0, 0, 88 0, 0, 0, 0, 0, 0, 0, 0, 89 0, 0, 0, 0, 0, 0, 0, 0, 90 0, 0, 0, 0, 0, 0, 0, 0, 91 32, 33, 34, 35, 36, 37, 38, 39, 92 40, 41, 42, 43, 44, 45, 46, 47, 93 48, 0, 0, 49, 0, 50, 0, 0, 94 51, 52, 53, 54, 0, 0, 0, 0, 95 0, 0, 0, 0, 0, 0, 0, 0, 96 0, 0, 0, 0, 0, 0, 0, 0, 97 0, 0, 0, 0, 0, 55, 56, 0, 98 0, 0, 0, 0, 0, 0, 0, 0, 99 0, 0, 0, 0, 0, 0, 0, 0, 100 0, 0, 0, 0, 0, 0, 0, 0, 101 0, 0, 0, 0, 0, 0, 0, 0, 102 0, 0, 0, 0, 0, 0, 0, 0, 103 0, 0, 0, 0, 0, 0, 0, 0, 104 0, 0, 0, 0, 0, 0, 0, 0, 105 0, 0, 0, 0, 0, 0, 0, 0, 106 0, 0, 0, 0, 0, 0, 0, 0, 107 0, 0, 0, 0, 0, 0, 0, 0, 108 0, 0, 0, 0, 0, 0, 0, 0, 109 0, 0, 0, 0, 0, 0, 0, 0, 110 0, 0, 0, 0, 0, 0, 0, 0, 111 0, 0, 0, 0, 0, 0, 0, 0, 112 0, 0, 0, 57, 58, 59, 60, 0, 113 0, 0, 0, 0, 0, 0, 0, 0, 114 0, 0, 0, 0, 0, 0, 0, 0, 115 0, 0, 0, 0, 0, 0, 0, 0, 116 0, 0, 0, 0, 0, 0, 0, 0, 117 0, 0, 0, 0, 0, 0, 0, 0, 118 0, 0, 0, 0, 0, 0, 0, 0, 119 0, 0, 0, 0, 0, 0, 0, 0, 120 0, 0, 0, 0, 0, 0, 0, 0, 121 0, 0, 0, 0, 0, 0, 0, 0, 122 0, 0, 0, 0, 0, 0, 0, 0, 123 0, 0, 0, 0, 0, 0, 0, 0, 124 0, 0, 0, 0, 0, 0, 0, 0, 125 0, 0, 0, 0, 0, 0, 0, 0, 126 0, 0, 0, 0, 0, 0, 0, 0, 127 0, 0, 0, 0, 0, 0, 0, 0, 128 0, 0, 0, 0, 0, 0, 0, 0, 129 0, 0, 0, 0, 0, 0, 0, 0, 130 0, 0, 0, 0, 0, 0, 0, 0, 131 0, 0, 0, 0, 0, 0, 0, 0, 132 0, 0, 0, 0, 0, 0, 0, 0, 133 0, 0, 0, 0, 0, 0, 0, 0, 134 0, 0, 0, 0, 0, 0, 0, 0, 135 0, 0, 0, 0, 0, 0, 0, 0, 136 0, 0, 0, 0, 0, 0, 0, 0, 137 0, 0, 0, 0, 0, 0, 0, 0, 138 0, 0, 0, 0, 0, 0, 0, 0, 139 0, 0, 0, 0, 0, 0, 0, 0, 140 0, 0, 0, 0, 0, 0, 0, 0, 141 0, 0, 0, 0, 0, 0, 0, 0, 142 0, 0, 0, 0, 0, 0, 0, 0, 143 0, 0, 0, 0, 0, 0, 0, 0, 144 0, 0, 0, 0, 0, 0, 0, 0, 145 0, 0, 0, 0, 0, 0, 0, 0, 146 0, 0, 0, 0, 0, 0, 0, 0, 147 0, 0, 0, 0, 0, 0, 0, 0, 148 0, 0, 0, 0, 0, 0, 0, 0, 149 0, 0, 0, 0, 0, 0, 0, 0, 150 0, 0, 0, 0, 0, 0, 0, 0, 151 0, 0, 0, 0, 0, 0, 0, 0, 152 61, 0, 0, 0, 0, 0, 0, 0, 153 0, 0, 0, 0, 0, 0, 0, 0, 154 0, 0, 0, 0, 0, 0, 0, 0, 155 62, 0, 0, 0, 0, 0, 0, 63, 156 0, 64, 0, 0, 0, 0, 0, 0, 157 0, 0, 0, 0, 0, 0, 0, 0, 158 0, 0, 0, 0, 0, 0, 0, 0, 159 0, 0, 0, 0, 0, 0, 0, 0, 160 0, 0, 0, 0, 0, 0, 0, 0, 161 65, 66, 0, 0, 0, 0, 0, 0, 162 0, 0, 0, 0, 0, 0, 0, 0, 163 0, 0, 0, 0, 0, 0, 0, 0, 164 0, 0, 0, 0, 0, 0, 0, 0, 165 0, 0, 0, 0, 0, 0, 0, 0, 166 0, 0, 0, 0, 0, 0, 0, 0, 167 0, 0, 0, 0, 0, 0, 0, 0, 168 0, 0, 0, 0, 0, 0, 0, 0, 169 0, 0, 0, 0, 0, 0, 0, 0, 170 0, 0, 0, 0, 0, 0, 0, 0, 171 0, 0, 0, 0, 0, 0, 0, 0, 172 0, 0, 0, 0, 0, 0, 0, 0, 173 0, 0, 0, 0, 0, 0, 0, 0, 174 0, 0, 0, 0, 0, 0, 0, 0, 175 0, 0, 0, 0, 0, 0, 0, 0, 176 0, 0, 0, 0, 0, 0, 0, 0, 177 67, 68, 69, 70, 71, 72, 73, 74, 178 75, 76, 77, 78, 79, 67, 68, 69, 179 70, 80, 81, 73, 74, 82, 83, 84, 180 85, 86, 87, 88, 89, 90, 0, 0, 181 0, 0, 0, 0, 0, 0, 0, 0, 182 0, 0, 0, 0, 0, 0, 0, 0, 183 0, 0, 0, 0, 0, 0, 0, 0, 184 0, 0, 0, 0, 0, 0, 0, 0, 185 0, 0, 0, 0, 0, 0, 0, 0, 186 0, 0, 0, 0, 0, 0, 0, 0, 187 0, 0, 0, 0, 0, 0, 0, 0, 188 0, 0, 0, 0, 0, 0, 0, 0, 189 }; 190 191 static const struct { 192 unsigned short tbl[32]; 193 } nameprep_rfc3491_map_table[] = { 194 {{ 195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198 }}, 199 {{ 200 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 201 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 202 44, 46, 48, 50, 52, 0, 0, 0, 0, 0, 203 }}, 204 {{ 205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 54, 207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208 }}, 209 {{ 210 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 211 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 212 101, 0, 103, 105, 107, 109, 111, 113, 115, 117, 213 }}, 214 {{ 215 123, 0, 126, 0, 129, 0, 132, 0, 135, 0, 138, 216 0, 141, 0, 144, 0, 147, 0, 150, 0, 153, 0, 217 156, 0, 159, 0, 162, 0, 165, 0, 168, 0, 218 }}, 219 {{ 220 171, 0, 174, 0, 177, 0, 180, 0, 183, 0, 186, 221 0, 189, 0, 192, 0, 195, 0, 202, 0, 205, 0, 222 208, 0, 0, 211, 0, 214, 0, 217, 0, 220, 223 }}, 224 {{ 225 0, 223, 0, 226, 0, 229, 0, 232, 0, 235, 241, 226 0, 244, 0, 247, 0, 250, 0, 253, 0, 256, 0, 227 259, 0, 262, 0, 265, 0, 268, 0, 271, 0, 228 }}, 229 {{ 230 274, 0, 277, 0, 280, 0, 283, 0, 286, 0, 289, 231 0, 292, 0, 295, 0, 298, 0, 301, 0, 304, 0, 232 307, 0, 310, 312, 0, 315, 0, 318, 0, 38, 233 }}, 234 {{ 235 0, 321, 324, 0, 327, 0, 330, 333, 0, 336, 339, 236 342, 0, 0, 345, 348, 351, 354, 0, 357, 360, 0, 237 363, 366, 369, 0, 0, 0, 372, 375, 0, 378, 238 }}, 239 {{ 240 381, 0, 384, 0, 387, 0, 390, 393, 0, 396, 0, 241 0, 399, 0, 402, 405, 0, 408, 411, 414, 0, 417, 242 0, 420, 423, 0, 0, 0, 426, 0, 0, 0, 243 }}, 244 {{ 245 0, 0, 0, 0, 429, 429, 0, 432, 432, 0, 435, 246 435, 0, 438, 0, 441, 0, 444, 0, 447, 0, 450, 247 0, 453, 0, 456, 0, 459, 0, 0, 462, 0, 248 }}, 249 {{ 250 465, 0, 468, 0, 471, 0, 474, 0, 477, 0, 480, 251 0, 483, 0, 486, 0, 489, 496, 496, 0, 499, 0, 252 502, 505, 508, 0, 511, 0, 514, 0, 517, 0, 253 }}, 254 {{ 255 520, 0, 523, 0, 526, 0, 529, 0, 532, 0, 535, 256 0, 538, 0, 541, 0, 544, 0, 547, 0, 550, 0, 257 553, 0, 556, 0, 559, 0, 562, 0, 565, 0, 258 }}, 259 {{ 260 568, 0, 571, 0, 574, 0, 577, 0, 580, 0, 583, 261 0, 586, 0, 589, 0, 592, 0, 595, 0, 0, 0, 262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263 }}, 264 {{ 265 0, 0, 0, 0, 0, 598, 0, 0, 0, 0, 0, 266 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268 }}, 269 {{ 270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272 0, 0, 0, 0, 601, 0, 0, 0, 0, 0, 273 }}, 274 {{ 275 0, 0, 0, 0, 0, 0, 608, 0, 611, 614, 617, 276 0, 620, 0, 623, 626, 629, 640, 643, 646, 649, 652, 277 655, 658, 661, 598, 664, 667, 54, 670, 673, 676, 278 }}, 279 {{ 280 679, 682, 0, 685, 688, 691, 694, 697, 700, 703, 706, 281 709, 0, 0, 0, 0, 712, 0, 0, 0, 0, 0, 282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 283 }}, 284 {{ 285 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 286 0, 0, 0, 0, 0, 643, 661, 691, 623, 709, 694, 287 679, 0, 723, 0, 726, 0, 729, 0, 732, 0, 288 }}, 289 {{ 290 735, 0, 738, 0, 741, 0, 744, 0, 747, 0, 750, 291 0, 753, 0, 756, 0, 664, 682, 685, 0, 661, 652, 292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 293 }}, 294 {{ 295 759, 762, 765, 768, 771, 774, 777, 780, 783, 786, 789, 296 792, 795, 798, 801, 804, 807, 810, 813, 816, 819, 822, 297 825, 828, 831, 834, 837, 840, 843, 846, 849, 852, 298 }}, 299 {{ 300 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, 885, 301 888, 891, 894, 897, 900, 0, 0, 0, 0, 0, 0, 302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 303 }}, 304 {{ 305 903, 0, 906, 0, 909, 0, 912, 0, 915, 0, 918, 306 0, 921, 0, 924, 0, 927, 0, 930, 0, 933, 0, 307 936, 0, 939, 0, 942, 0, 945, 0, 948, 0, 308 }}, 309 {{ 310 951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 954, 311 0, 957, 0, 960, 0, 963, 0, 966, 0, 969, 0, 312 972, 0, 975, 0, 978, 0, 981, 0, 984, 0, 313 }}, 314 {{ 315 987, 0, 990, 0, 993, 0, 996, 0, 999, 0, 1002, 316 0, 1005, 0, 1008, 0, 1011, 0, 1014, 0, 1017, 0, 317 1020, 0, 1023, 0, 1026, 0, 1029, 0, 1032, 0, 318 }}, 319 {{ 320 0, 1035, 0, 1038, 0, 1041, 0, 1044, 0, 1047, 0, 321 1050, 0, 1053, 0, 0, 1056, 0, 1059, 0, 1062, 0, 322 1065, 0, 1068, 0, 1071, 0, 1074, 0, 1077, 0, 323 }}, 324 {{ 325 1080, 0, 1083, 0, 1086, 0, 1089, 0, 1092, 0, 1095, 326 0, 1098, 0, 1101, 0, 1104, 0, 1107, 0, 1110, 0, 327 0, 0, 1113, 0, 0, 0, 0, 0, 0, 0, 328 }}, 329 {{ 330 1116, 0, 1119, 0, 1122, 0, 1125, 0, 1128, 0, 1131, 331 0, 1134, 0, 1137, 0, 0, 0, 0, 0, 0, 0, 332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333 }}, 334 {{ 335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336 0, 0, 0, 0, 0, 0, 1140, 1143, 1146, 1149, 1152, 337 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 338 }}, 339 {{ 340 1185, 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 341 1218, 1221, 1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 342 1251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 343 }}, 344 {{ 345 0, 0, 0, 0, 0, 0, 0, 1254, 0, 0, 0, 346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 348 }}, 349 {{ 350 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 351 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 353 }}, 354 {{ 355 1261, 0, 1264, 0, 1267, 0, 1270, 0, 1273, 0, 1276, 356 0, 1279, 0, 1282, 0, 1285, 0, 1288, 0, 1291, 0, 357 1294, 0, 1297, 0, 1300, 0, 1303, 0, 1306, 0, 358 }}, 359 {{ 360 1309, 0, 1312, 0, 1315, 0, 1318, 0, 1321, 0, 1324, 361 0, 1327, 0, 1330, 0, 1333, 0, 1336, 0, 1339, 0, 362 1342, 0, 1345, 0, 1348, 0, 1351, 0, 1354, 0, 363 }}, 364 {{ 365 1357, 0, 1360, 0, 1363, 0, 1366, 0, 1369, 0, 1372, 366 0, 1375, 0, 1378, 0, 1381, 0, 1384, 0, 1387, 0, 367 1390, 0, 1393, 0, 1396, 0, 1399, 0, 1402, 0, 368 }}, 369 {{ 370 1405, 0, 1408, 0, 1411, 0, 1414, 0, 1417, 0, 1420, 371 0, 1423, 0, 1426, 0, 1429, 0, 1432, 0, 1435, 0, 372 1438, 0, 1441, 0, 1444, 0, 1447, 0, 1450, 0, 373 }}, 374 {{ 375 1453, 0, 1456, 0, 1459, 0, 1462, 0, 1465, 0, 1468, 376 0, 1471, 0, 1474, 0, 1477, 0, 1480, 0, 1483, 0, 377 1486, 1493, 1500, 1507, 1514, 1405, 0, 0, 0, 0, 378 }}, 379 {{ 380 1521, 0, 1524, 0, 1527, 0, 1530, 0, 1533, 0, 1536, 381 0, 1539, 0, 1542, 0, 1545, 0, 1548, 0, 1551, 0, 382 1554, 0, 1557, 0, 1560, 0, 1563, 0, 1566, 0, 383 }}, 384 {{ 385 1569, 0, 1572, 0, 1575, 0, 1578, 0, 1581, 0, 1584, 386 0, 1587, 0, 1590, 0, 1593, 0, 1596, 0, 1599, 0, 387 1602, 0, 1605, 0, 1608, 0, 1611, 0, 1614, 0, 388 }}, 389 {{ 390 1617, 0, 1620, 0, 1623, 0, 1626, 0, 1629, 0, 1632, 391 0, 1635, 0, 1638, 0, 1641, 0, 1644, 0, 1647, 0, 392 1650, 0, 1653, 0, 0, 0, 0, 0, 0, 0, 393 }}, 394 {{ 395 0, 0, 0, 0, 0, 0, 0, 0, 1656, 1659, 1662, 396 1665, 1668, 1671, 1674, 1677, 0, 0, 0, 0, 0, 0, 397 0, 0, 1680, 1683, 1686, 1689, 1692, 1695, 0, 0, 398 }}, 399 {{ 400 0, 0, 0, 0, 0, 0, 0, 0, 1698, 1701, 1704, 401 1707, 1710, 1713, 1716, 1719, 0, 0, 0, 0, 0, 0, 402 0, 0, 1722, 1725, 1728, 1731, 1734, 1737, 1740, 1743, 403 }}, 404 {{ 405 0, 0, 0, 0, 0, 0, 0, 0, 1746, 1749, 1752, 406 1755, 1758, 1761, 0, 0, 1764, 0, 1771, 0, 1782, 0, 407 1793, 0, 0, 1804, 0, 1807, 0, 1810, 0, 1813, 408 }}, 409 {{ 410 0, 0, 0, 0, 0, 0, 0, 0, 1816, 1819, 1822, 411 1825, 1828, 1831, 1834, 1837, 0, 0, 0, 0, 0, 0, 412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 413 }}, 414 {{ 415 1840, 1847, 1854, 1861, 1868, 1875, 1882, 1889, 1840, 1847, 1854, 416 1861, 1868, 1875, 1882, 1889, 1896, 1903, 1910, 1917, 1924, 1931, 417 1938, 1945, 1896, 1903, 1910, 1917, 1924, 1931, 1938, 1945, 418 }}, 419 {{ 420 1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001, 1952, 1959, 1966, 421 1973, 1980, 1987, 1994, 2001, 0, 0, 2008, 2015, 2022, 0, 422 2029, 2036, 2047, 2050, 2053, 2056, 2015, 0, 598, 0, 423 }}, 424 {{ 425 0, 0, 2059, 2066, 2073, 0, 2080, 2087, 2098, 2101, 2104, 426 2107, 2066, 0, 0, 0, 0, 0, 2110, 629, 0, 0, 427 2121, 2128, 2139, 2142, 2145, 2148, 0, 0, 0, 0, 428 }}, 429 {{ 430 0, 0, 2151, 712, 2162, 0, 2169, 2176, 2187, 2190, 2193, 431 2196, 2199, 0, 0, 0, 0, 0, 2202, 2209, 2216, 0, 432 2223, 2230, 2241, 2244, 2247, 2250, 2209, 0, 0, 0, 433 }}, 434 {{ 435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 436 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 438 }}, 439 {{ 440 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 443 }}, 444 {{ 445 0, 0, 0, 0, 0, 0, 0, 0, 2253, 0, 0, 446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448 }}, 449 {{ 450 0, 0, 6, 2259, 0, 0, 0, 351, 0, 2265, 0, 451 16, 16, 16, 0, 0, 18, 18, 24, 0, 0, 28, 452 2271, 0, 0, 32, 34, 36, 36, 36, 0, 0, 453 }}, 454 {{ 455 2277, 2283, 2293, 0, 52, 0, 703, 0, 52, 0, 22, 456 67, 4, 6, 0, 0, 10, 12, 0, 26, 0, 0, 457 0, 0, 0, 0, 0, 0, 0, 0, 646, 679, 458 }}, 459 {{ 460 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 463 }}, 464 {{ 465 2299, 2302, 2305, 2308, 2311, 2314, 2317, 2320, 2323, 2326, 2329, 466 2332, 2335, 2338, 2341, 2344, 0, 0, 0, 0, 0, 0, 467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 468 }}, 469 {{ 470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 472 2347, 2350, 2353, 2356, 2359, 2362, 2365, 2368, 2371, 2374, 473 }}, 474 {{ 475 2377, 2380, 2383, 2386, 2389, 2392, 2395, 2398, 2401, 2404, 2407, 476 2410, 2413, 2416, 2419, 2422, 0, 0, 0, 0, 0, 0, 477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 478 }}, 479 {{ 480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 481 0, 0, 0, 0, 0, 0, 2425, 0, 2435, 0, 2441, 482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 483 }}, 484 {{ 485 2447, 2453, 2459, 2465, 2471, 2477, 2483, 2489, 0, 0, 2495, 486 2501, 2507, 0, 0, 0, 2513, 2519, 2529, 2539, 2549, 0, 487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 488 }}, 489 {{ 490 0, 0, 0, 0, 0, 0, 0, 0, 0, 2447, 2559, 491 2569, 2579, 0, 0, 0, 0, 0, 0, 0, 2589, 2595, 492 2601, 2607, 2613, 2607, 2619, 2625, 2631, 2637, 2643, 2637, 493 }}, 494 {{ 495 2649, 2656, 0, 2663, 0, 0, 2669, 2683, 2693, 2699, 0, 496 2705, 0, 2711, 2717, 0, 0, 0, 0, 0, 0, 0, 497 0, 2723, 0, 2729, 2739, 0, 2745, 2751, 0, 0, 498 }}, 499 {{ 500 2757, 2763, 2769, 2775, 2785, 2795, 2795, 0, 0, 0, 0, 501 0, 0, 0, 0, 0, 0, 0, 0, 2801, 2808, 2815, 502 2822, 2829, 0, 0, 0, 0, 0, 0, 0, 0, 503 }}, 504 {{ 505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 506 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508 }}, 509 {{ 510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 513 }}, 514 {{ 515 0, 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, 2863, 516 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2893, 2896, 517 2899, 2902, 2905, 2908, 2911, 0, 0, 0, 0, 0, 518 }}, 519 {{ 520 2914, 2918, 2922, 2926, 2930, 2934, 2938, 2942, 2946, 2950, 2954, 521 2958, 2962, 2966, 2970, 2974, 2978, 2982, 2986, 2990, 2994, 2998, 522 3002, 3006, 3010, 3014, 3018, 3022, 3026, 3030, 3034, 3038, 523 }}, 524 {{ 525 3042, 3046, 3050, 3054, 3058, 3062, 0, 0, 0, 0, 0, 526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 528 }}, 529 {{ 530 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 531 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 532 46, 48, 50, 52, 0, 0, 0, 0, 0, 0, 533 }}, 534 {{ 535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 537 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 538 }}, 539 {{ 540 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 541 48, 50, 52, 0, 0, 0, 0, 0, 0, 0, 0, 542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 543 }}, 544 {{ 545 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 546 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 547 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 548 }}, 549 {{ 550 50, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 552 0, 0, 0, 0, 0, 0, 2, 0, 6, 8, 553 }}, 554 {{ 555 0, 0, 14, 0, 0, 20, 22, 0, 0, 28, 30, 556 32, 34, 0, 38, 40, 42, 44, 46, 48, 50, 52, 557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 558 }}, 559 {{ 560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 561 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 562 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 563 }}, 564 {{ 565 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 0, 566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 568 }}, 569 {{ 570 0, 0, 0, 0, 2, 4, 0, 8, 10, 12, 14, 571 0, 0, 20, 22, 24, 26, 28, 30, 32, 34, 0, 572 38, 40, 42, 44, 46, 48, 50, 0, 0, 0, 573 }}, 574 {{ 575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 577 0, 0, 2, 4, 0, 8, 10, 12, 14, 0, 578 }}, 579 {{ 580 18, 20, 22, 24, 26, 0, 30, 0, 0, 0, 38, 581 40, 42, 44, 46, 48, 50, 0, 0, 0, 0, 0, 582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 583 }}, 584 {{ 585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 586 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 587 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 588 }}, 589 {{ 590 42, 44, 46, 48, 50, 52, 0, 0, 0, 0, 0, 591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 593 }}, 594 {{ 595 50, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 597 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 598 }}, 599 {{ 600 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 601 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 603 }}, 604 {{ 605 0, 0, 0, 0, 0, 0, 0, 0, 640, 643, 646, 606 649, 652, 655, 658, 661, 598, 664, 667, 54, 670, 673, 607 676, 679, 682, 661, 685, 688, 691, 694, 697, 700, 608 }}, 609 {{ 610 703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 611 0, 0, 0, 0, 0, 0, 0, 0, 685, 0, 0, 612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613 }}, 614 {{ 615 0, 0, 640, 643, 646, 649, 652, 655, 658, 661, 598, 616 664, 667, 54, 670, 673, 676, 679, 682, 661, 685, 688, 617 691, 694, 697, 700, 703, 0, 0, 0, 0, 0, 618 }}, 619 {{ 620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 621 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 622 0, 0, 0, 0, 0, 0, 640, 643, 646, 649, 623 }}, 624 {{ 625 652, 655, 658, 661, 598, 664, 667, 54, 670, 673, 676, 626 679, 682, 661, 685, 688, 691, 694, 697, 700, 703, 0, 627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 628 }}, 629 {{ 630 0, 0, 0, 0, 0, 0, 0, 685, 0, 0, 0, 631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632 640, 643, 646, 649, 652, 655, 658, 661, 598, 664, 633 }}, 634 {{ 635 667, 54, 670, 673, 676, 679, 682, 661, 685, 688, 691, 636 694, 697, 700, 703, 0, 0, 0, 0, 0, 0, 0, 637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 638 }}, 639 {{ 640 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 641 0, 0, 0, 0, 0, 640, 643, 646, 649, 652, 655, 642 658, 661, 598, 664, 667, 54, 670, 673, 676, 679, 643 }}, 644 {{ 645 682, 661, 685, 688, 691, 694, 697, 700, 703, 0, 0, 646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647 0, 0, 0, 0, 0, 685, 0, 0, 0, 0, 648 }}, 649 }; 650 651 static const unsigned char nameprep_rfc3491_map_data[] = { 652 0, 0, 1, 97, 1, 98, 1, 99, 1, 100, 1, 101, 653 1, 102, 1, 103, 1, 104, 1, 105, 1, 106, 1, 107, 654 1, 108, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 655 1, 114, 1, 115, 1, 116, 1, 117, 1, 118, 1, 119, 656 1, 120, 1, 121, 1, 122, 2, 188, 3, 1, 224, 1, 657 225, 1, 226, 1, 227, 1, 228, 1, 229, 1, 230, 1, 658 231, 1, 232, 1, 233, 1, 234, 1, 235, 1, 236, 1, 659 237, 1, 238, 1, 239, 1, 240, 1, 241, 1, 242, 1, 660 243, 1, 244, 1, 245, 1, 246, 1, 248, 1, 249, 1, 661 250, 1, 251, 1, 252, 1, 253, 1, 254, 5, 115, 0, 662 0, 0, 115, 2, 1, 1, 2, 3, 1, 2, 5, 1, 663 2, 7, 1, 2, 9, 1, 2, 11, 1, 2, 13, 1, 664 2, 15, 1, 2, 17, 1, 2, 19, 1, 2, 21, 1, 665 2, 23, 1, 2, 25, 1, 2, 27, 1, 2, 29, 1, 666 2, 31, 1, 2, 33, 1, 2, 35, 1, 2, 37, 1, 667 2, 39, 1, 2, 41, 1, 2, 43, 1, 2, 45, 1, 668 2, 47, 1, 6, 105, 0, 0, 0, 7, 3, 2, 51, 669 1, 2, 53, 1, 2, 55, 1, 2, 58, 1, 2, 60, 670 1, 2, 62, 1, 2, 64, 1, 2, 66, 1, 2, 68, 671 1, 2, 70, 1, 2, 72, 1, 5, 188, 2, 0, 0, 672 110, 2, 75, 1, 2, 77, 1, 2, 79, 1, 2, 81, 673 1, 2, 83, 1, 2, 85, 1, 2, 87, 1, 2, 89, 674 1, 2, 91, 1, 2, 93, 1, 2, 95, 1, 2, 97, 675 1, 2, 99, 1, 2, 101, 1, 2, 103, 1, 2, 105, 676 1, 2, 107, 1, 2, 109, 1, 2, 111, 1, 2, 113, 677 1, 2, 115, 1, 2, 117, 1, 2, 119, 1, 1, 255, 678 2, 122, 1, 2, 124, 1, 2, 126, 1, 2, 83, 2, 679 2, 131, 1, 2, 133, 1, 2, 84, 2, 2, 136, 1, 680 2, 86, 2, 2, 87, 2, 2, 140, 1, 2, 221, 1, 681 2, 89, 2, 2, 91, 2, 2, 146, 1, 2, 96, 2, 682 2, 99, 2, 2, 105, 2, 2, 104, 2, 2, 153, 1, 683 2, 111, 2, 2, 114, 2, 2, 117, 2, 2, 161, 1, 684 2, 163, 1, 2, 165, 1, 2, 128, 2, 2, 168, 1, 685 2, 131, 2, 2, 173, 1, 2, 136, 2, 2, 176, 1, 686 2, 138, 2, 2, 139, 2, 2, 180, 1, 2, 182, 1, 687 2, 146, 2, 2, 185, 1, 2, 189, 1, 2, 198, 1, 688 2, 201, 1, 2, 204, 1, 2, 206, 1, 2, 208, 1, 689 2, 210, 1, 2, 212, 1, 2, 214, 1, 2, 216, 1, 690 2, 218, 1, 2, 220, 1, 2, 223, 1, 2, 225, 1, 691 2, 227, 1, 2, 229, 1, 2, 231, 1, 2, 233, 1, 692 2, 235, 1, 2, 237, 1, 2, 239, 1, 6, 106, 0, 693 0, 0, 12, 3, 2, 243, 1, 2, 245, 1, 2, 149, 694 1, 2, 191, 1, 2, 249, 1, 2, 251, 1, 2, 253, 695 1, 2, 255, 1, 2, 1, 2, 2, 3, 2, 2, 5, 696 2, 2, 7, 2, 2, 9, 2, 2, 11, 2, 2, 13, 697 2, 2, 15, 2, 2, 17, 2, 2, 19, 2, 2, 21, 698 2, 2, 23, 2, 2, 25, 2, 2, 27, 2, 2, 29, 699 2, 2, 31, 2, 2, 158, 1, 2, 35, 2, 2, 37, 700 2, 2, 39, 2, 2, 41, 2, 2, 43, 2, 2, 45, 701 2, 2, 47, 2, 2, 49, 2, 2, 51, 2, 2, 185, 702 3, 6, 32, 0, 0, 0, 185, 3, 2, 172, 3, 2, 703 173, 3, 2, 174, 3, 2, 175, 3, 2, 204, 3, 2, 704 205, 3, 2, 206, 3, 10, 185, 3, 0, 0, 8, 3, 705 0, 0, 1, 3, 2, 177, 3, 2, 178, 3, 2, 179, 706 3, 2, 180, 3, 2, 181, 3, 2, 182, 3, 2, 183, 707 3, 2, 184, 3, 2, 186, 3, 2, 187, 3, 2, 189, 708 3, 2, 190, 3, 2, 191, 3, 2, 192, 3, 2, 193, 709 3, 2, 195, 3, 2, 196, 3, 2, 197, 3, 2, 198, 710 3, 2, 199, 3, 2, 200, 3, 2, 201, 3, 2, 202, 711 3, 2, 203, 3, 10, 197, 3, 0, 0, 8, 3, 0, 712 0, 1, 3, 2, 217, 3, 2, 219, 3, 2, 221, 3, 713 2, 223, 3, 2, 225, 3, 2, 227, 3, 2, 229, 3, 714 2, 231, 3, 2, 233, 3, 2, 235, 3, 2, 237, 3, 715 2, 239, 3, 2, 80, 4, 2, 81, 4, 2, 82, 4, 716 2, 83, 4, 2, 84, 4, 2, 85, 4, 2, 86, 4, 717 2, 87, 4, 2, 88, 4, 2, 89, 4, 2, 90, 4, 718 2, 91, 4, 2, 92, 4, 2, 93, 4, 2, 94, 4, 719 2, 95, 4, 2, 48, 4, 2, 49, 4, 2, 50, 4, 720 2, 51, 4, 2, 52, 4, 2, 53, 4, 2, 54, 4, 721 2, 55, 4, 2, 56, 4, 2, 57, 4, 2, 58, 4, 722 2, 59, 4, 2, 60, 4, 2, 61, 4, 2, 62, 4, 723 2, 63, 4, 2, 64, 4, 2, 65, 4, 2, 66, 4, 724 2, 67, 4, 2, 68, 4, 2, 69, 4, 2, 70, 4, 725 2, 71, 4, 2, 72, 4, 2, 73, 4, 2, 74, 4, 726 2, 75, 4, 2, 76, 4, 2, 77, 4, 2, 78, 4, 727 2, 79, 4, 2, 97, 4, 2, 99, 4, 2, 101, 4, 728 2, 103, 4, 2, 105, 4, 2, 107, 4, 2, 109, 4, 729 2, 111, 4, 2, 113, 4, 2, 115, 4, 2, 117, 4, 730 2, 119, 4, 2, 121, 4, 2, 123, 4, 2, 125, 4, 731 2, 127, 4, 2, 129, 4, 2, 139, 4, 2, 141, 4, 732 2, 143, 4, 2, 145, 4, 2, 147, 4, 2, 149, 4, 733 2, 151, 4, 2, 153, 4, 2, 155, 4, 2, 157, 4, 734 2, 159, 4, 2, 161, 4, 2, 163, 4, 2, 165, 4, 735 2, 167, 4, 2, 169, 4, 2, 171, 4, 2, 173, 4, 736 2, 175, 4, 2, 177, 4, 2, 179, 4, 2, 181, 4, 737 2, 183, 4, 2, 185, 4, 2, 187, 4, 2, 189, 4, 738 2, 191, 4, 2, 194, 4, 2, 196, 4, 2, 198, 4, 739 2, 200, 4, 2, 202, 4, 2, 204, 4, 2, 206, 4, 740 2, 209, 4, 2, 211, 4, 2, 213, 4, 2, 215, 4, 741 2, 217, 4, 2, 219, 4, 2, 221, 4, 2, 223, 4, 742 2, 225, 4, 2, 227, 4, 2, 229, 4, 2, 231, 4, 743 2, 233, 4, 2, 235, 4, 2, 237, 4, 2, 239, 4, 744 2, 241, 4, 2, 243, 4, 2, 245, 4, 2, 249, 4, 745 2, 1, 5, 2, 3, 5, 2, 5, 5, 2, 7, 5, 746 2, 9, 5, 2, 11, 5, 2, 13, 5, 2, 15, 5, 747 2, 97, 5, 2, 98, 5, 2, 99, 5, 2, 100, 5, 748 2, 101, 5, 2, 102, 5, 2, 103, 5, 2, 104, 5, 749 2, 105, 5, 2, 106, 5, 2, 107, 5, 2, 108, 5, 750 2, 109, 5, 2, 110, 5, 2, 111, 5, 2, 112, 5, 751 2, 113, 5, 2, 114, 5, 2, 115, 5, 2, 116, 5, 752 2, 117, 5, 2, 118, 5, 2, 119, 5, 2, 120, 5, 753 2, 121, 5, 2, 122, 5, 2, 123, 5, 2, 124, 5, 754 2, 125, 5, 2, 126, 5, 2, 127, 5, 2, 128, 5, 755 2, 129, 5, 2, 130, 5, 2, 131, 5, 2, 132, 5, 756 2, 133, 5, 2, 134, 5, 6, 101, 5, 0, 0, 130, 757 5, 2, 1, 30, 2, 3, 30, 2, 5, 30, 2, 7, 758 30, 2, 9, 30, 2, 11, 30, 2, 13, 30, 2, 15, 759 30, 2, 17, 30, 2, 19, 30, 2, 21, 30, 2, 23, 760 30, 2, 25, 30, 2, 27, 30, 2, 29, 30, 2, 31, 761 30, 2, 33, 30, 2, 35, 30, 2, 37, 30, 2, 39, 762 30, 2, 41, 30, 2, 43, 30, 2, 45, 30, 2, 47, 763 30, 2, 49, 30, 2, 51, 30, 2, 53, 30, 2, 55, 764 30, 2, 57, 30, 2, 59, 30, 2, 61, 30, 2, 63, 765 30, 2, 65, 30, 2, 67, 30, 2, 69, 30, 2, 71, 766 30, 2, 73, 30, 2, 75, 30, 2, 77, 30, 2, 79, 767 30, 2, 81, 30, 2, 83, 30, 2, 85, 30, 2, 87, 768 30, 2, 89, 30, 2, 91, 30, 2, 93, 30, 2, 95, 769 30, 2, 97, 30, 2, 99, 30, 2, 101, 30, 2, 103, 770 30, 2, 105, 30, 2, 107, 30, 2, 109, 30, 2, 111, 771 30, 2, 113, 30, 2, 115, 30, 2, 117, 30, 2, 119, 772 30, 2, 121, 30, 2, 123, 30, 2, 125, 30, 2, 127, 773 30, 2, 129, 30, 2, 131, 30, 2, 133, 30, 2, 135, 774 30, 2, 137, 30, 2, 139, 30, 2, 141, 30, 2, 143, 775 30, 2, 145, 30, 2, 147, 30, 2, 149, 30, 6, 104, 776 0, 0, 0, 49, 3, 6, 116, 0, 0, 0, 8, 3, 777 6, 119, 0, 0, 0, 10, 3, 6, 121, 0, 0, 0, 778 10, 3, 6, 97, 0, 0, 0, 190, 2, 2, 161, 30, 779 2, 163, 30, 2, 165, 30, 2, 167, 30, 2, 169, 30, 780 2, 171, 30, 2, 173, 30, 2, 175, 30, 2, 177, 30, 781 2, 179, 30, 2, 181, 30, 2, 183, 30, 2, 185, 30, 782 2, 187, 30, 2, 189, 30, 2, 191, 30, 2, 193, 30, 783 2, 195, 30, 2, 197, 30, 2, 199, 30, 2, 201, 30, 784 2, 203, 30, 2, 205, 30, 2, 207, 30, 2, 209, 30, 785 2, 211, 30, 2, 213, 30, 2, 215, 30, 2, 217, 30, 786 2, 219, 30, 2, 221, 30, 2, 223, 30, 2, 225, 30, 787 2, 227, 30, 2, 229, 30, 2, 231, 30, 2, 233, 30, 788 2, 235, 30, 2, 237, 30, 2, 239, 30, 2, 241, 30, 789 2, 243, 30, 2, 245, 30, 2, 247, 30, 2, 249, 30, 790 2, 0, 31, 2, 1, 31, 2, 2, 31, 2, 3, 31, 791 2, 4, 31, 2, 5, 31, 2, 6, 31, 2, 7, 31, 792 2, 16, 31, 2, 17, 31, 2, 18, 31, 2, 19, 31, 793 2, 20, 31, 2, 21, 31, 2, 32, 31, 2, 33, 31, 794 2, 34, 31, 2, 35, 31, 2, 36, 31, 2, 37, 31, 795 2, 38, 31, 2, 39, 31, 2, 48, 31, 2, 49, 31, 796 2, 50, 31, 2, 51, 31, 2, 52, 31, 2, 53, 31, 797 2, 54, 31, 2, 55, 31, 2, 64, 31, 2, 65, 31, 798 2, 66, 31, 2, 67, 31, 2, 68, 31, 2, 69, 31, 799 6, 197, 3, 0, 0, 19, 3, 10, 197, 3, 0, 0, 800 19, 3, 0, 0, 0, 3, 10, 197, 3, 0, 0, 19, 801 3, 0, 0, 1, 3, 10, 197, 3, 0, 0, 19, 3, 802 0, 0, 66, 3, 2, 81, 31, 2, 83, 31, 2, 85, 803 31, 2, 87, 31, 2, 96, 31, 2, 97, 31, 2, 98, 804 31, 2, 99, 31, 2, 100, 31, 2, 101, 31, 2, 102, 805 31, 2, 103, 31, 6, 0, 31, 0, 0, 185, 3, 6, 806 1, 31, 0, 0, 185, 3, 6, 2, 31, 0, 0, 185, 807 3, 6, 3, 31, 0, 0, 185, 3, 6, 4, 31, 0, 808 0, 185, 3, 6, 5, 31, 0, 0, 185, 3, 6, 6, 809 31, 0, 0, 185, 3, 6, 7, 31, 0, 0, 185, 3, 810 6, 32, 31, 0, 0, 185, 3, 6, 33, 31, 0, 0, 811 185, 3, 6, 34, 31, 0, 0, 185, 3, 6, 35, 31, 812 0, 0, 185, 3, 6, 36, 31, 0, 0, 185, 3, 6, 813 37, 31, 0, 0, 185, 3, 6, 38, 31, 0, 0, 185, 814 3, 6, 39, 31, 0, 0, 185, 3, 6, 96, 31, 0, 815 0, 185, 3, 6, 97, 31, 0, 0, 185, 3, 6, 98, 816 31, 0, 0, 185, 3, 6, 99, 31, 0, 0, 185, 3, 817 6, 100, 31, 0, 0, 185, 3, 6, 101, 31, 0, 0, 818 185, 3, 6, 102, 31, 0, 0, 185, 3, 6, 103, 31, 819 0, 0, 185, 3, 6, 112, 31, 0, 0, 185, 3, 6, 820 177, 3, 0, 0, 185, 3, 6, 172, 3, 0, 0, 185, 821 3, 6, 177, 3, 0, 0, 66, 3, 10, 177, 3, 0, 822 0, 66, 3, 0, 0, 185, 3, 2, 176, 31, 2, 177, 823 31, 2, 112, 31, 2, 113, 31, 6, 116, 31, 0, 0, 824 185, 3, 6, 183, 3, 0, 0, 185, 3, 6, 174, 3, 825 0, 0, 185, 3, 6, 183, 3, 0, 0, 66, 3, 10, 826 183, 3, 0, 0, 66, 3, 0, 0, 185, 3, 2, 114, 827 31, 2, 115, 31, 2, 116, 31, 2, 117, 31, 10, 185, 828 3, 0, 0, 8, 3, 0, 0, 0, 3, 6, 185, 3, 829 0, 0, 66, 3, 10, 185, 3, 0, 0, 8, 3, 0, 830 0, 66, 3, 2, 208, 31, 2, 209, 31, 2, 118, 31, 831 2, 119, 31, 10, 197, 3, 0, 0, 8, 3, 0, 0, 832 0, 3, 6, 193, 3, 0, 0, 19, 3, 6, 197, 3, 833 0, 0, 66, 3, 10, 197, 3, 0, 0, 8, 3, 0, 834 0, 66, 3, 2, 224, 31, 2, 225, 31, 2, 122, 31, 835 2, 123, 31, 2, 229, 31, 6, 124, 31, 0, 0, 185, 836 3, 6, 201, 3, 0, 0, 185, 3, 6, 206, 3, 0, 837 0, 185, 3, 6, 201, 3, 0, 0, 66, 3, 10, 201, 838 3, 0, 0, 66, 3, 0, 0, 185, 3, 2, 120, 31, 839 2, 121, 31, 2, 124, 31, 2, 125, 31, 5, 114, 0, 840 0, 0, 115, 5, 176, 0, 0, 0, 99, 5, 176, 0, 841 0, 0, 102, 5, 110, 0, 0, 0, 111, 5, 115, 0, 842 0, 0, 109, 9, 116, 0, 0, 0, 101, 0, 0, 0, 843 108, 5, 116, 0, 0, 0, 109, 2, 112, 33, 2, 113, 844 33, 2, 114, 33, 2, 115, 33, 2, 116, 33, 2, 117, 845 33, 2, 118, 33, 2, 119, 33, 2, 120, 33, 2, 121, 846 33, 2, 122, 33, 2, 123, 33, 2, 124, 33, 2, 125, 847 33, 2, 126, 33, 2, 127, 33, 2, 208, 36, 2, 209, 848 36, 2, 210, 36, 2, 211, 36, 2, 212, 36, 2, 213, 849 36, 2, 214, 36, 2, 215, 36, 2, 216, 36, 2, 217, 850 36, 2, 218, 36, 2, 219, 36, 2, 220, 36, 2, 221, 851 36, 2, 222, 36, 2, 223, 36, 2, 224, 36, 2, 225, 852 36, 2, 226, 36, 2, 227, 36, 2, 228, 36, 2, 229, 853 36, 2, 230, 36, 2, 231, 36, 2, 232, 36, 2, 233, 854 36, 9, 104, 0, 0, 0, 112, 0, 0, 0, 97, 5, 855 97, 0, 0, 0, 117, 5, 111, 0, 0, 0, 118, 5, 856 112, 0, 0, 0, 97, 5, 110, 0, 0, 0, 97, 5, 857 188, 3, 0, 0, 97, 5, 109, 0, 0, 0, 97, 5, 858 107, 0, 0, 0, 97, 5, 107, 0, 0, 0, 98, 5, 859 109, 0, 0, 0, 98, 5, 103, 0, 0, 0, 98, 5, 860 112, 0, 0, 0, 102, 5, 110, 0, 0, 0, 102, 5, 861 188, 3, 0, 0, 102, 5, 104, 0, 0, 0, 122, 9, 862 107, 0, 0, 0, 104, 0, 0, 0, 122, 9, 109, 0, 863 0, 0, 104, 0, 0, 0, 122, 9, 103, 0, 0, 0, 864 104, 0, 0, 0, 122, 9, 116, 0, 0, 0, 104, 0, 865 0, 0, 122, 9, 107, 0, 0, 0, 112, 0, 0, 0, 866 97, 9, 109, 0, 0, 0, 112, 0, 0, 0, 97, 9, 867 103, 0, 0, 0, 112, 0, 0, 0, 97, 5, 112, 0, 868 0, 0, 118, 5, 110, 0, 0, 0, 118, 5, 188, 3, 869 0, 0, 118, 5, 109, 0, 0, 0, 118, 5, 107, 0, 870 0, 0, 118, 5, 112, 0, 0, 0, 119, 5, 110, 0, 871 0, 0, 119, 5, 188, 3, 0, 0, 119, 5, 109, 0, 872 0, 0, 119, 5, 107, 0, 0, 0, 119, 6, 107, 0, 873 0, 0, 201, 3, 6, 109, 0, 0, 0, 201, 3, 5, 874 98, 0, 0, 0, 113, 13, 99, 0, 0, 0, 21, 34, 875 0, 0, 107, 0, 0, 0, 103, 9, 99, 0, 0, 0, 876 111, 0, 0, 0, 46, 5, 100, 0, 0, 0, 98, 5, 877 103, 0, 0, 0, 121, 5, 104, 0, 0, 0, 112, 5, 878 107, 0, 0, 0, 107, 5, 107, 0, 0, 0, 109, 5, 879 112, 0, 0, 0, 104, 9, 112, 0, 0, 0, 112, 0, 880 0, 0, 109, 5, 112, 0, 0, 0, 114, 5, 115, 0, 881 0, 0, 118, 5, 119, 0, 0, 0, 98, 5, 102, 0, 882 0, 0, 102, 5, 102, 0, 0, 0, 105, 5, 102, 0, 883 0, 0, 108, 9, 102, 0, 0, 0, 102, 0, 0, 0, 884 105, 9, 102, 0, 0, 0, 102, 0, 0, 0, 108, 5, 885 115, 0, 0, 0, 116, 6, 116, 5, 0, 0, 118, 5, 886 6, 116, 5, 0, 0, 101, 5, 6, 116, 5, 0, 0, 887 107, 5, 6, 126, 5, 0, 0, 118, 5, 6, 116, 5, 888 0, 0, 109, 5, 2, 65, 255, 2, 66, 255, 2, 67, 889 255, 2, 68, 255, 2, 69, 255, 2, 70, 255, 2, 71, 890 255, 2, 72, 255, 2, 73, 255, 2, 74, 255, 2, 75, 891 255, 2, 76, 255, 2, 77, 255, 2, 78, 255, 2, 79, 892 255, 2, 80, 255, 2, 81, 255, 2, 82, 255, 2, 83, 893 255, 2, 84, 255, 2, 85, 255, 2, 86, 255, 2, 87, 894 255, 2, 88, 255, 2, 89, 255, 2, 90, 255, 3, 40, 895 4, 1, 3, 41, 4, 1, 3, 42, 4, 1, 3, 43, 896 4, 1, 3, 44, 4, 1, 3, 45, 4, 1, 3, 46, 897 4, 1, 3, 47, 4, 1, 3, 48, 4, 1, 3, 49, 898 4, 1, 3, 50, 4, 1, 3, 51, 4, 1, 3, 52, 899 4, 1, 3, 53, 4, 1, 3, 54, 4, 1, 3, 55, 900 4, 1, 3, 56, 4, 1, 3, 57, 4, 1, 3, 58, 901 4, 1, 3, 59, 4, 1, 3, 60, 4, 1, 3, 61, 902 4, 1, 3, 62, 4, 1, 3, 63, 4, 1, 3, 64, 903 4, 1, 3, 65, 4, 1, 3, 66, 4, 1, 3, 67, 904 4, 1, 3, 68, 4, 1, 3, 69, 4, 1, 3, 70, 905 4, 1, 3, 71, 4, 1, 3, 72, 4, 1, 3, 73, 906 4, 1, 3, 74, 4, 1, 3, 75, 4, 1, 3, 76, 907 4, 1, 3, 77, 4, 1, 908 }; 909 910 static const unsigned short nameprep_rfc3491_prohibited_imap[] = { 911 68, 196, 196, 324, 196, 196, 196, 452, 912 196, 196, 196, 580, 196, 196, 196, 580, 913 196, 196, 196, 580, 196, 196, 196, 580, 914 196, 196, 196, 580, 196, 196, 196, 580, 915 196, 196, 196, 580, 196, 196, 196, 580, 916 196, 196, 196, 580, 196, 196, 196, 580, 917 196, 196, 196, 580, 196, 196, 196, 580, 918 708, 196, 196, 580, 836, 836, 836, 836, 919 836, 836, 836, 836, 0, 1, 0, 0, 920 0, 0, 2, 0, 0, 0, 0, 0, 921 0, 3, 4, 0, 0, 0, 0, 0, 922 0, 0, 0, 0, 0, 0, 0, 0, 923 0, 0, 0, 0, 0, 0, 0, 0, 924 0, 0, 0, 0, 0, 0, 0, 0, 925 0, 5, 0, 0, 6, 0, 0, 0, 926 0, 0, 0, 0, 0, 0, 0, 0, 927 0, 0, 0, 0, 7, 0, 0, 0, 928 0, 0, 0, 0, 0, 0, 0, 0, 929 0, 0, 0, 0, 0, 0, 0, 0, 930 0, 0, 0, 0, 0, 0, 0, 0, 931 0, 0, 0, 8, 5, 0, 0, 0, 932 0, 0, 0, 0, 0, 0, 0, 0, 933 0, 0, 0, 0, 0, 0, 0, 0, 934 0, 0, 0, 0, 0, 0, 0, 0, 935 0, 0, 0, 0, 0, 0, 0, 0, 936 0, 0, 0, 0, 0, 0, 0, 0, 937 0, 0, 0, 0, 0, 0, 0, 0, 938 0, 0, 0, 0, 0, 0, 0, 0, 939 0, 0, 0, 0, 0, 0, 0, 0, 940 0, 0, 0, 0, 0, 0, 0, 0, 941 0, 0, 0, 0, 0, 0, 0, 0, 942 0, 0, 0, 0, 0, 0, 0, 0, 943 0, 0, 0, 0, 0, 0, 0, 0, 944 0, 0, 0, 0, 0, 0, 0, 0, 945 0, 0, 0, 0, 0, 0, 0, 0, 946 0, 0, 0, 0, 0, 0, 0, 0, 947 0, 0, 0, 0, 0, 0, 0, 0, 948 0, 0, 0, 0, 0, 0, 0, 0, 949 0, 0, 0, 0, 0, 0, 0, 0, 950 0, 0, 0, 0, 0, 0, 0, 0, 951 0, 0, 0, 0, 0, 0, 0, 0, 952 0, 0, 0, 0, 0, 0, 0, 0, 953 0, 0, 0, 0, 0, 0, 0, 0, 954 0, 0, 0, 0, 0, 0, 0, 0, 955 0, 0, 0, 0, 0, 0, 0, 0, 956 0, 0, 0, 0, 0, 0, 0, 0, 957 0, 0, 0, 0, 9, 9, 9, 9, 958 9, 9, 9, 9, 9, 9, 9, 9, 959 9, 9, 9, 9, 9, 9, 9, 9, 960 9, 9, 9, 9, 9, 9, 9, 9, 961 9, 9, 9, 9, 9, 9, 9, 9, 962 9, 9, 9, 9, 9, 9, 9, 9, 963 9, 9, 9, 9, 9, 9, 9, 9, 964 9, 9, 9, 9, 9, 9, 9, 9, 965 9, 9, 9, 9, 9, 9, 0, 0, 966 0, 0, 0, 0, 0, 0, 0, 10, 967 0, 0, 0, 11, 0, 0, 0, 0, 968 0, 0, 0, 0, 0, 0, 0, 0, 969 0, 0, 0, 0, 0, 0, 0, 0, 970 0, 0, 0, 0, 0, 0, 0, 0, 971 0, 0, 0, 0, 0, 0, 12, 0, 972 0, 0, 0, 0, 0, 0, 0, 0, 973 0, 0, 0, 0, 0, 0, 0, 0, 974 0, 0, 0, 0, 0, 0, 0, 0, 975 0, 0, 0, 0, 0, 0, 0, 0, 976 0, 0, 0, 0, 0, 0, 0, 0, 977 0, 0, 0, 0, 0, 0, 0, 0, 978 0, 0, 0, 0, 0, 0, 0, 0, 979 0, 0, 0, 0, 0, 0, 0, 0, 980 0, 0, 0, 0, 0, 0, 0, 0, 981 0, 0, 0, 0, 0, 0, 0, 0, 982 0, 0, 0, 0, 0, 0, 0, 0, 983 0, 0, 0, 13, 0, 0, 0, 0, 984 0, 0, 0, 0, 0, 0, 0, 0, 985 0, 0, 0, 0, 0, 0, 0, 0, 986 0, 0, 0, 0, 0, 0, 0, 0, 987 0, 0, 0, 0, 0, 0, 0, 0, 988 0, 0, 0, 0, 0, 0, 0, 0, 989 0, 0, 0, 0, 0, 0, 0, 0, 990 0, 0, 0, 0, 0, 0, 0, 0, 991 0, 0, 0, 0, 0, 0, 0, 0, 992 0, 0, 0, 0, 0, 0, 0, 0, 993 0, 0, 0, 0, 0, 0, 0, 0, 994 0, 0, 0, 0, 0, 0, 0, 0, 995 0, 0, 0, 0, 0, 0, 0, 0, 996 0, 0, 0, 0, 0, 0, 0, 0, 997 0, 0, 0, 0, 0, 0, 0, 0, 998 0, 0, 0, 0, 0, 0, 0, 0, 999 0, 0, 0, 13, 14, 0, 0, 0, 1000 0, 0, 0, 0, 0, 0, 0, 0, 1001 0, 0, 0, 0, 0, 0, 0, 0, 1002 0, 0, 0, 0, 0, 0, 0, 0, 1003 0, 0, 0, 0, 0, 0, 0, 0, 1004 0, 0, 0, 0, 0, 0, 0, 0, 1005 0, 0, 0, 0, 0, 0, 0, 0, 1006 0, 0, 0, 0, 0, 0, 0, 0, 1007 0, 0, 0, 0, 0, 0, 0, 0, 1008 0, 0, 0, 0, 0, 0, 0, 0, 1009 0, 0, 0, 0, 0, 0, 0, 0, 1010 0, 0, 0, 0, 0, 0, 0, 0, 1011 0, 0, 0, 0, 0, 0, 0, 0, 1012 0, 0, 0, 0, 0, 0, 0, 0, 1013 0, 0, 0, 0, 0, 0, 0, 0, 1014 0, 0, 0, 0, 0, 0, 0, 0, 1015 0, 0, 0, 0, 9, 9, 9, 9, 1016 9, 9, 9, 9, 9, 9, 9, 9, 1017 9, 9, 9, 9, 9, 9, 9, 9, 1018 9, 9, 9, 9, 9, 9, 9, 9, 1019 9, 9, 9, 9, 9, 9, 9, 9, 1020 9, 9, 9, 9, 9, 9, 9, 9, 1021 9, 9, 9, 9, 9, 9, 9, 9, 1022 9, 9, 9, 9, 9, 9, 9, 9, 1023 9, 9, 9, 9, 9, 9, 9, 9, 1024 9, 9, 9, 9, 9, 9, 9, 9, 1025 9, 9, 9, 9, 9, 9, 9, 9, 1026 9, 9, 9, 9, 9, 9, 9, 9, 1027 9, 9, 9, 9, 9, 9, 9, 9, 1028 9, 9, 9, 9, 9, 9, 9, 9, 1029 9, 9, 9, 9, 9, 9, 9, 9, 1030 9, 9, 9, 9, 9, 9, 9, 9, 1031 9, 9, 9, 9, 1032 }; 1033 1034 static const struct { 1035 unsigned char bm[16]; 1036 } nameprep_rfc3491_prohibited_bitmap[] = { 1037 {{ 1038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039 }}, 1040 {{ 1041 255,255,255,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1042 }}, 1043 {{ 1044 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1045 }}, 1046 {{ 1047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 1048 }}, 1049 {{ 1050 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1051 }}, 1052 {{ 1053 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1054 }}, 1055 {{ 1056 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1057 }}, 1058 {{ 1059 255,199, 0, 0, 0,255, 0, 0, 0, 0, 0,128, 14,252, 0, 0, 1060 }}, 1061 {{ 1062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 15, 1063 }}, 1064 {{ 1065 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1066 }}, 1067 {{ 1068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 1069 }}, 1070 {{ 1071 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 1072 }}, 1073 {{ 1074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 7, 1075 }}, 1076 {{ 1077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1078 }}, 1079 {{ 1080 2, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 1081 }}, 1082 }; 1083 1084 static const unsigned short nameprep_rfc3491_unassigned_imap[] = { 1085 68, 196, 324, 452, 580, 708, 708, 836, 1086 964, 964, 1092, 1220, 708, 708, 708, 1348, 1087 708, 708, 708, 1348, 708, 708, 708, 1348, 1088 708, 708, 708, 1348, 708, 708, 708, 1348, 1089 708, 708, 708, 1348, 708, 708, 708, 1348, 1090 708, 708, 708, 1348, 708, 708, 708, 1348, 1091 708, 708, 708, 1348, 708, 708, 708, 1348, 1092 1476, 708, 708, 1348, 964, 964, 964, 964, 1093 964, 964, 964, 964, 0, 0, 0, 0, 1094 1, 2, 3, 4, 0, 5, 6, 7, 1095 8, 9, 10, 11, 12, 12, 13, 14, 1096 15, 16, 17, 18, 19, 20, 21, 22, 1097 23, 24, 25, 26, 27, 28, 29, 30, 1098 31, 32, 33, 34, 35, 0, 0, 0, 1099 36, 37, 38, 39, 40, 41, 12, 12, 1100 12, 12, 12, 12, 12, 12, 12, 12, 1101 0, 42, 43, 44, 45, 46, 47, 48, 1102 0, 0, 0, 49, 50, 51, 0, 0, 1103 52, 53, 54, 55, 0, 0, 0, 0, 1104 0, 0, 12, 12, 12, 12, 12, 12, 1105 12, 56, 0, 57, 58, 59, 60, 61, 1106 62, 63, 64, 65, 0, 0, 0, 0, 1107 0, 0, 0, 0, 0, 0, 0, 0, 1108 0, 0, 0, 0, 0, 0, 0, 0, 1109 0, 0, 0, 0, 0, 0, 0, 0, 1110 0, 0, 0, 0, 0, 0, 0, 0, 1111 0, 0, 0, 0, 0, 0, 0, 0, 1112 0, 0, 0, 0, 0, 0, 0, 66, 1113 0, 0, 0, 0, 0, 0, 0, 0, 1114 0, 0, 0, 0, 0, 0, 0, 0, 1115 0, 0, 0, 0, 0, 0, 0, 0, 1116 0, 0, 0, 0, 0, 0, 0, 0, 1117 0, 0, 0, 0, 0, 0, 0, 0, 1118 0, 0, 0, 0, 0, 0, 0, 0, 1119 0, 0, 0, 0, 0, 0, 0, 0, 1120 0, 0, 0, 0, 0, 0, 0, 0, 1121 0, 0, 0, 0, 0, 0, 0, 0, 1122 0, 0, 0, 0, 0, 0, 0, 0, 1123 0, 0, 0, 0, 0, 0, 0, 0, 1124 0, 0, 0, 0, 0, 0, 0, 0, 1125 0, 0, 0, 0, 0, 0, 0, 0, 1126 0, 0, 0, 0, 0, 0, 0, 0, 1127 0, 0, 0, 0, 0, 0, 0, 0, 1128 0, 0, 0, 0, 0, 0, 0, 0, 1129 0, 0, 0, 0, 0, 0, 0, 0, 1130 0, 0, 0, 0, 0, 0, 0, 0, 1131 0, 0, 0, 0, 0, 0, 0, 0, 1132 0, 0, 0, 0, 0, 0, 0, 0, 1133 0, 0, 0, 67, 0, 0, 0, 0, 1134 0, 0, 0, 0, 0, 68, 12, 12, 1135 12, 12, 12, 12, 12, 12, 12, 12, 1136 12, 12, 12, 12, 0, 0, 0, 0, 1137 0, 0, 0, 0, 0, 0, 0, 0, 1138 0, 0, 0, 0, 0, 0, 0, 0, 1139 0, 0, 0, 0, 0, 0, 0, 0, 1140 0, 0, 0, 0, 0, 0, 0, 0, 1141 0, 0, 0, 0, 0, 0, 0, 0, 1142 0, 0, 0, 0, 0, 0, 0, 0, 1143 0, 0, 0, 0, 0, 0, 0, 0, 1144 0, 0, 0, 0, 0, 0, 0, 0, 1145 0, 0, 0, 0, 0, 0, 0, 0, 1146 0, 0, 0, 0, 0, 0, 0, 0, 1147 0, 0, 0, 69, 0, 0, 0, 0, 1148 0, 0, 0, 0, 0, 0, 0, 0, 1149 0, 0, 0, 0, 0, 0, 0, 0, 1150 0, 0, 0, 0, 0, 0, 0, 0, 1151 0, 0, 0, 0, 0, 0, 0, 0, 1152 0, 0, 0, 0, 0, 0, 0, 0, 1153 0, 0, 0, 0, 0, 0, 0, 0, 1154 0, 0, 0, 0, 0, 0, 0, 0, 1155 0, 0, 0, 0, 0, 0, 0, 0, 1156 70, 12, 71, 72, 0, 0, 73, 74, 1157 75, 76, 35, 77, 12, 12, 12, 12, 1158 12, 12, 78, 12, 79, 12, 12, 12, 1159 12, 12, 12, 12, 12, 12, 12, 12, 1160 12, 12, 12, 12, 12, 12, 12, 12, 1161 12, 12, 12, 12, 12, 12, 12, 12, 1162 12, 12, 12, 12, 12, 12, 12, 12, 1163 12, 12, 12, 12, 12, 12, 12, 12, 1164 12, 12, 12, 12, 12, 12, 12, 12, 1165 12, 12, 12, 12, 12, 12, 12, 12, 1166 12, 12, 12, 12, 12, 12, 12, 12, 1167 12, 12, 12, 12, 12, 12, 12, 12, 1168 12, 12, 12, 12, 12, 12, 12, 12, 1169 12, 12, 12, 12, 12, 12, 12, 12, 1170 12, 12, 12, 12, 12, 12, 12, 12, 1171 12, 12, 12, 12, 12, 12, 12, 12, 1172 12, 12, 12, 12, 12, 12, 12, 12, 1173 12, 12, 12, 12, 12, 12, 12, 12, 1174 12, 12, 12, 12, 12, 12, 12, 12, 1175 12, 12, 12, 12, 12, 12, 12, 12, 1176 12, 12, 12, 12, 12, 12, 12, 12, 1177 12, 12, 12, 12, 12, 12, 12, 12, 1178 12, 12, 12, 12, 12, 12, 12, 12, 1179 12, 12, 12, 12, 12, 12, 12, 12, 1180 12, 12, 12, 12, 12, 12, 12, 12, 1181 12, 12, 12, 12, 12, 12, 12, 12, 1182 12, 12, 12, 12, 12, 12, 12, 12, 1183 12, 12, 12, 12, 12, 12, 12, 12, 1184 12, 12, 12, 12, 12, 12, 12, 12, 1185 12, 12, 12, 12, 12, 12, 12, 12, 1186 12, 12, 12, 12, 12, 12, 12, 12, 1187 12, 12, 12, 12, 12, 12, 12, 12, 1188 12, 12, 12, 12, 12, 12, 12, 12, 1189 12, 12, 12, 12, 12, 12, 12, 12, 1190 12, 12, 12, 12, 12, 12, 12, 12, 1191 12, 12, 12, 12, 12, 12, 12, 12, 1192 12, 12, 12, 12, 12, 12, 12, 12, 1193 12, 12, 12, 12, 0, 80, 81, 82, 1194 12, 12, 12, 12, 83, 84, 85, 0, 1195 0, 86, 0, 87, 12, 12, 12, 12, 1196 12, 12, 12, 12, 12, 12, 12, 12, 1197 12, 12, 12, 12, 12, 12, 12, 12, 1198 12, 12, 12, 12, 12, 12, 12, 12, 1199 12, 12, 12, 12, 12, 12, 12, 12, 1200 12, 12, 12, 12, 12, 12, 12, 12, 1201 12, 12, 12, 12, 12, 12, 12, 12, 1202 12, 12, 12, 12, 12, 12, 12, 12, 1203 12, 12, 12, 12, 12, 12, 12, 12, 1204 12, 12, 12, 12, 12, 12, 12, 12, 1205 12, 12, 12, 88, 0, 0, 0, 0, 1206 0, 0, 0, 0, 0, 0, 0, 0, 1207 0, 0, 0, 0, 0, 0, 0, 0, 1208 0, 0, 0, 0, 0, 0, 0, 0, 1209 0, 0, 0, 0, 0, 0, 0, 0, 1210 0, 0, 0, 0, 0, 0, 0, 0, 1211 0, 0, 0, 0, 0, 0, 0, 0, 1212 0, 0, 0, 0, 0, 0, 0, 0, 1213 0, 0, 0, 0, 0, 0, 0, 0, 1214 0, 0, 0, 0, 0, 0, 0, 0, 1215 0, 0, 0, 0, 0, 0, 0, 0, 1216 0, 0, 0, 0, 0, 0, 0, 0, 1217 0, 0, 0, 0, 0, 0, 0, 0, 1218 0, 0, 0, 0, 0, 0, 0, 0, 1219 0, 0, 0, 0, 0, 0, 0, 0, 1220 0, 0, 0, 0, 0, 0, 0, 0, 1221 0, 0, 0, 0, 0, 0, 0, 0, 1222 0, 0, 0, 0, 0, 0, 0, 0, 1223 0, 0, 0, 0, 0, 0, 0, 0, 1224 0, 0, 0, 0, 0, 0, 0, 0, 1225 0, 0, 0, 0, 0, 0, 0, 0, 1226 0, 0, 0, 0, 0, 0, 0, 0, 1227 0, 0, 0, 0, 0, 0, 0, 0, 1228 0, 0, 0, 0, 0, 0, 0, 0, 1229 0, 0, 0, 0, 0, 0, 0, 0, 1230 0, 0, 0, 0, 0, 0, 0, 0, 1231 0, 89, 12, 12, 12, 12, 12, 12, 1232 12, 12, 12, 12, 12, 12, 12, 12, 1233 12, 12, 12, 12, 12, 12, 12, 12, 1234 12, 12, 12, 12, 12, 12, 12, 12, 1235 12, 12, 12, 12, 12, 12, 12, 12, 1236 12, 12, 12, 12, 12, 12, 12, 12, 1237 12, 12, 12, 12, 12, 12, 12, 12, 1238 12, 12, 12, 12, 12, 12, 12, 12, 1239 12, 12, 12, 12, 12, 12, 12, 12, 1240 12, 12, 12, 12, 12, 12, 12, 12, 1241 12, 12, 12, 12, 12, 12, 12, 12, 1242 12, 12, 12, 12, 12, 12, 12, 12, 1243 12, 12, 12, 12, 12, 12, 12, 12, 1244 12, 12, 12, 12, 12, 12, 12, 12, 1245 12, 12, 12, 12, 12, 12, 12, 12, 1246 12, 12, 12, 12, 12, 12, 12, 12, 1247 12, 12, 12, 12, 12, 12, 12, 12, 1248 12, 12, 12, 12, 12, 12, 12, 12, 1249 12, 12, 12, 12, 12, 12, 12, 12, 1250 12, 12, 12, 12, 12, 12, 12, 12, 1251 12, 12, 12, 12, 0, 0, 0, 0, 1252 90, 12, 12, 12, 12, 12, 12, 12, 1253 12, 12, 12, 88, 12, 12, 12, 12, 1254 12, 12, 12, 12, 12, 12, 12, 12, 1255 12, 12, 12, 12, 12, 12, 12, 12, 1256 12, 12, 12, 12, 12, 12, 12, 12, 1257 12, 12, 12, 12, 12, 12, 12, 12, 1258 12, 12, 12, 12, 12, 12, 12, 12, 1259 12, 12, 12, 12, 12, 12, 12, 12, 1260 12, 12, 12, 12, 12, 12, 12, 12, 1261 12, 12, 12, 12, 12, 12, 12, 12, 1262 12, 12, 12, 12, 12, 12, 12, 12, 1263 12, 12, 12, 12, 12, 12, 12, 12, 1264 12, 12, 12, 12, 12, 12, 12, 12, 1265 12, 12, 12, 12, 12, 12, 12, 12, 1266 12, 12, 12, 12, 12, 12, 12, 12, 1267 12, 12, 12, 12, 12, 12, 12, 12, 1268 12, 12, 12, 12, 12, 12, 12, 12, 1269 12, 12, 12, 88, 91, 12, 12, 12, 1270 12, 12, 12, 12, 12, 12, 12, 12, 1271 12, 12, 12, 12, 12, 12, 12, 12, 1272 12, 12, 12, 12, 12, 12, 12, 12, 1273 12, 12, 12, 12, 12, 12, 12, 12, 1274 12, 12, 12, 12, 12, 12, 12, 12, 1275 12, 12, 12, 12, 12, 12, 12, 12, 1276 12, 12, 12, 12, 12, 12, 12, 12, 1277 12, 12, 12, 12, 12, 12, 12, 12, 1278 12, 12, 12, 12, 12, 12, 12, 12, 1279 12, 12, 12, 12, 12, 12, 12, 12, 1280 12, 12, 12, 12, 12, 12, 12, 12, 1281 12, 12, 12, 12, 12, 12, 12, 12, 1282 12, 12, 12, 12, 12, 12, 12, 12, 1283 12, 12, 12, 12, 12, 12, 12, 12, 1284 12, 12, 12, 12, 12, 12, 12, 12, 1285 12, 12, 12, 12, 1286 }; 1287 1288 static const struct { 1289 unsigned char bm[16]; 1290 } nameprep_rfc3491_unassigned_bitmap[] = { 1291 {{ 1292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1293 }}, 1294 {{ 1295 0, 0, 0, 0, 2, 0,240,255,255,255, 0, 0, 0, 0, 0, 0, 1296 }}, 1297 {{ 1298 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,128,255,255, 1299 }}, 1300 {{ 1301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0,207,187, 1302 }}, 1303 {{ 1304 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 0, 0, 0,128,255, 1305 }}, 1306 {{ 1307 128, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0,192,252, 1308 }}, 1309 {{ 1310 0, 0,255,255,255,255, 1, 0, 0, 0,128, 1, 1, 0, 0, 0, 1311 }}, 1312 {{ 1313 0,249, 1, 0, 4, 0, 0, 4,224,255, 0, 0, 0,248,224,255, 1314 }}, 1315 {{ 1316 255,239,255,119, 1, 0, 0,248, 0, 0,192,255, 0, 0, 0, 0, 1317 }}, 1318 {{ 1319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0,128, 1320 }}, 1321 {{ 1322 0, 64, 0, 0, 0,224, 0, 0, 0,248,255,255,255,255,255,255, 1323 }}, 1324 {{ 1325 0, 0, 0, 0, 0, 0,252,255,255,255,255,255,255,255,255,255, 1326 }}, 1327 {{ 1328 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1329 }}, 1330 {{ 1331 17, 0, 0, 0, 0, 0, 0, 12, 0,192,224, 0, 0, 0,254,255, 1332 }}, 1333 {{ 1334 17, 96, 6, 0, 0, 2, 58, 44, 96,198,127, 79, 48, 0, 0,248, 1335 }}, 1336 {{ 1337 27,120, 6, 0, 0, 2,146, 44,120,198,255,161, 63, 0,224,255, 1338 }}, 1339 {{ 1340 17, 80, 4, 0, 0, 2, 18, 12, 64,196,254,255, 62, 0,255,255, 1341 }}, 1342 {{ 1343 17, 96, 6, 0, 0, 2, 50, 12,112,198, 63, 79, 60, 0,254,255, 1344 }}, 1345 {{ 1346 19, 56,194, 41,231, 56, 64, 60, 56,194,127,255,127, 0,248,255, 1347 }}, 1348 {{ 1349 17, 32, 2, 0, 0, 2, 16, 60, 32,194,159,255, 60, 0,255,255, 1350 }}, 1351 {{ 1352 19, 32, 2, 0, 0, 2, 16, 60, 32,194,159,191, 60, 0,255,255, 1353 }}, 1354 {{ 1355 19, 32, 2, 0, 0, 2, 0, 60, 48,194,127,255, 60, 0,255,255, 1356 }}, 1357 {{ 1358 19, 0,128, 3, 0, 0, 4,208,128,123,160, 0,255,255,227,255, 1359 }}, 1360 {{ 1361 1, 0, 0, 0, 0, 0, 0,120, 0, 0, 0,240,255,255,255,255, 1362 }}, 1363 {{ 1364 105,218, 15, 1, 81, 19, 0,196,160,192, 0,204,255,255,255,255, 1365 }}, 1366 {{ 1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,248, 1, 0, 1368 }}, 1369 {{ 1370 0,240, 0, 1, 0, 0, 0, 32, 0, 96,255,255,255,255,255,255, 1371 }}, 1372 {{ 1373 0, 0, 0, 0, 4, 9, 56,252, 0, 0, 0,252,255,255,255,255, 1374 }}, 1375 {{ 1376 255,255,255,255, 0, 0, 0, 0,192,255, 0, 0, 0, 0, 0,246, 1377 }}, 1378 {{ 1379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 0, 0, 0, 0, 1380 }}, 1381 {{ 1382 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 1383 }}, 1384 {{ 1385 128, 0, 0, 0, 0, 0, 0, 0,128,194,128,194, 0, 0, 0, 0, 1386 }}, 1387 {{ 1388 128,194, 0, 0, 0,128,194,128,194,128,128, 0, 0,128, 0, 0, 1389 }}, 1390 {{ 1391 0,128,194,128, 0, 0, 0, 0,128, 0, 0,248, 1, 0, 0,224, 1392 }}, 1393 {{ 1394 255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,255, 1395 }}, 1396 {{ 1397 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1398 }}, 1399 {{ 1400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255, 1401 }}, 1402 {{ 1403 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 1404 }}, 1405 {{ 1406 0, 32,224,255, 0, 0,128,255, 0, 0,240,255, 0, 32,242,255, 1407 }}, 1408 {{ 1409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 0,252,255,255, 1410 }}, 1411 {{ 1412 0,128, 0,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1413 }}, 1414 {{ 1415 0, 0, 0, 0, 0,252,255,255,255,255,255,255,255,255,255,255, 1416 }}, 1417 {{ 1418 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 1419 }}, 1420 {{ 1421 0, 0,192,192, 0, 0, 0, 0,192,192, 0, 85, 0, 0, 0,192, 1422 }}, 1423 {{ 1424 0, 0, 0, 0, 0, 0, 32, 0, 32, 0, 48, 16, 0, 0, 35,128, 1425 }}, 1426 {{ 1427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,127,240, 3, 12, 0, 1428 }}, 1429 {{ 1430 0,128,255,255, 0, 0,252,255,255,255, 0, 0, 0,248,255,255, 1431 }}, 1432 {{ 1433 0, 0, 0, 0, 0, 0, 0, 24, 0,240, 7, 0, 0, 0, 0, 0, 1434 }}, 1435 {{ 1436 240,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1437 }}, 1438 {{ 1439 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255,255, 1440 }}, 1441 {{ 1442 0, 0, 0, 0,128,255,255,255, 0,248,255,255, 0, 0, 0, 0, 1443 }}, 1444 {{ 1445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1446 }}, 1447 {{ 1448 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1449 }}, 1450 {{ 1451 0,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 1452 }}, 1453 {{ 1454 33, 12, 0, 0, 0, 1, 0, 0, 0, 80,184,128, 1, 0, 0, 0, 1455 }}, 1456 {{ 1457 0, 0,224, 0, 0, 0, 1,128,255,255, 0, 0, 0,240, 0, 0, 1458 }}, 1459 {{ 1460 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255, 1461 }}, 1462 {{ 1463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255,255,255, 0,240, 1464 }}, 1465 {{ 1466 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1467 }}, 1468 {{ 1469 0, 0,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1470 }}, 1471 {{ 1472 31, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1473 }}, 1474 {{ 1475 0,128, 0, 0, 0, 0, 0,255,255,255,255,255,255,255, 0, 0, 1476 }}, 1477 {{ 1478 0, 0, 0,224, 0, 0, 0, 0,240,255, 1, 0, 0, 0, 0,112, 1479 }}, 1480 {{ 1481 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0,128, 1482 }}, 1483 {{ 1484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 1485 }}, 1486 {{ 1487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 0, 0,128, 1488 }}, 1489 {{ 1490 0, 0, 0, 0, 0, 0,192,255,255,255,255,255,255,255,255,255, 1491 }}, 1492 {{ 1493 0, 0, 0, 0,192,255,255,255,255,255,255,255,255,255,255,255, 1494 }}, 1495 {{ 1496 0,224, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255,255,255, 1497 }}, 1498 {{ 1499 0, 0, 0, 0,240,255,255,255,255,255,255,255,255,255,255,255, 1500 }}, 1501 {{ 1502 0, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, 0,248,255,255, 1503 }}, 1504 {{ 1505 128,255, 7, 31, 0, 0,128,160, 36, 0, 0, 0, 0, 0, 0, 0, 1506 }}, 1507 {{ 1508 0, 0, 0, 0, 0, 0,252,255,255,255, 7, 0, 0, 0, 0, 0, 1509 }}, 1510 {{ 1511 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1512 }}, 1513 {{ 1514 0, 0, 3, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,224, 1515 }}, 1516 {{ 1517 0, 0,255,255,240,255, 0, 0,128, 1, 8, 0,128,240, 32, 0, 1518 }}, 1519 {{ 1520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 1521 }}, 1522 {{ 1523 0, 0, 0, 0, 0, 0, 0,128, 3, 3, 3,227,128,128,255, 1, 1524 }}, 1525 {{ 1526 0, 0, 0,128,240,255, 0, 0, 0,248,255,255,255,255,255,255, 1527 }}, 1528 {{ 1529 0, 0, 0, 0,192, 0, 0, 0, 0,192,255,255,255,255,255,255, 1530 }}, 1531 {{ 1532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255, 1533 }}, 1534 {{ 1535 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1536 }}, 1537 {{ 1538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255,255,255,255, 1539 }}, 1540 {{ 1541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 1542 }}, 1543 {{ 1544 0, 0, 0, 32,155, 33, 0, 20, 18, 0, 0, 0, 0, 0, 0, 0, 1545 }}, 1546 {{ 1547 64, 24, 32, 32, 0, 0, 0,132,160, 3, 2, 0, 0, 0, 0, 0, 1548 }}, 1549 {{ 1550 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1551 }}, 1552 {{ 1553 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 1554 }}, 1555 {{ 1556 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63, 1557 }}, 1558 {{ 1559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255, 1560 }}, 1561 {{ 1562 0, 0, 0,192,255,255,255,255,255,255,255,255,255,255,255,255, 1563 }}, 1564 {{ 1565 253,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1566 }}, 1567 }; 1568 1569 static const unsigned short nameprep_rfc3491_bidi_imap[] = { 1570 272, 400, 528, 656, 784, 912, 912, 912, 1571 912, 1040, 1168, 912, 912, 1296, 912, 1424, 1572 1552, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1573 1680, 1680, 1680, 1680, 1680, 1808, 1680, 1680, 1574 912, 912, 912, 912, 912, 912, 912, 912, 1575 912, 912, 1936, 1680, 1680, 1680, 1680, 2064, 1576 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1577 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1578 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1579 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1580 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1581 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1582 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1583 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1584 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1585 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1586 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1587 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1588 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1589 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1590 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1591 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1592 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1593 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1594 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1595 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1596 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1597 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1598 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1599 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1600 912, 912, 912, 912, 912, 912, 912, 912, 1601 912, 912, 912, 912, 912, 912, 912, 2192, 1602 912, 912, 912, 912, 912, 912, 912, 912, 1603 912, 912, 912, 912, 912, 912, 912, 2192, 1604 0, 0, 1, 1, 0, 2, 3, 3, 1605 4, 4, 4, 4, 4, 4, 4, 4, 1606 4, 5, 6, 4, 4, 7, 8, 9, 1607 0, 0, 0, 10, 11, 12, 13, 14, 1608 4, 4, 4, 4, 15, 4, 13, 16, 1609 17, 18, 19, 20, 21, 22, 23, 24, 1610 25, 26, 27, 28, 29, 29, 30, 31, 1611 32, 33, 0, 0, 29, 34, 0, 0, 1612 0, 0, 0, 0, 0, 0, 0, 0, 1613 35, 36, 37, 38, 39, 40, 41, 42, 1614 43, 44, 45, 46, 47, 48, 49, 50, 1615 39, 51, 41, 52, 53, 54, 55, 56, 1616 57, 58, 59, 60, 61, 62, 63, 60, 1617 61, 64, 65, 60, 66, 67, 68, 69, 1618 20, 70, 71, 0, 72, 73, 74, 0, 1619 75, 76, 77, 78, 79, 80, 81, 0, 1620 4, 82, 83, 0, 0, 4, 84, 85, 1621 4, 4, 86, 4, 4, 87, 4, 88, 1622 89, 4, 90, 4, 91, 92, 93, 13, 1623 92, 4, 94, 95, 0, 4, 4, 96, 1624 20, 4, 4, 4, 4, 4, 4, 4, 1625 4, 4, 4, 4, 4, 4, 4, 4, 1626 4, 4, 4, 97, 1, 4, 4, 98, 1627 99, 100, 101, 102, 4, 103, 104, 105, 1628 106, 4, 4, 83, 4, 107, 0, 0, 1629 0, 0, 0, 0, 0, 0, 0, 0, 1630 0, 0, 0, 0, 0, 0, 0, 0, 1631 0, 0, 0, 0, 0, 0, 0, 0, 1632 0, 0, 0, 0, 0, 0, 0, 0, 1633 0, 0, 0, 0, 0, 0, 0, 0, 1634 4, 4, 4, 4, 108, 4, 4, 88, 1635 109, 4, 110, 111, 4, 112, 113, 114, 1636 115, 0, 0, 116, 0, 0, 0, 0, 1637 117, 118, 119, 4, 120, 0, 0, 0, 1638 0, 0, 0, 0, 0, 0, 0, 0, 1639 0, 121, 4, 122, 123, 0, 0, 0, 1640 0, 0, 0, 0, 124, 4, 4, 105, 1641 0, 0, 0, 0, 0, 0, 0, 0, 1642 0, 0, 0, 0, 0, 0, 0, 0, 1643 0, 0, 0, 0, 0, 0, 0, 0, 1644 0, 0, 0, 0, 0, 0, 0, 0, 1645 0, 0, 0, 0, 0, 0, 0, 0, 1646 0, 0, 0, 0, 0, 0, 0, 0, 1647 0, 0, 0, 0, 0, 0, 0, 0, 1648 0, 0, 0, 0, 0, 0, 0, 0, 1649 0, 0, 0, 0, 0, 0, 0, 0, 1650 0, 0, 0, 0, 0, 0, 0, 0, 1651 0, 0, 0, 0, 0, 0, 0, 0, 1652 125, 126, 20, 4, 127, 20, 4, 128, 1653 129, 130, 4, 4, 13, 83, 0, 6, 1654 131, 4, 120, 132, 4, 98, 133, 134, 1655 4, 4, 4, 135, 4, 4, 111, 134, 1656 4, 4, 4, 4, 4, 4, 4, 4, 1657 4, 4, 4, 4, 4, 4, 4, 4, 1658 4, 4, 4, 4, 4, 4, 4, 4, 1659 4, 4, 4, 4, 4, 4, 4, 4, 1660 4, 4, 4, 4, 4, 4, 4, 4, 1661 4, 4, 4, 4, 4, 4, 4, 4, 1662 4, 4, 4, 4, 4, 4, 4, 4, 1663 4, 4, 4, 4, 4, 4, 4, 4, 1664 4, 4, 4, 4, 4, 4, 4, 4, 1665 4, 4, 4, 4, 4, 4, 4, 4, 1666 4, 4, 4, 4, 4, 4, 4, 4, 1667 4, 4, 4, 4, 4, 4, 4, 4, 1668 4, 4, 4, 4, 4, 4, 4, 4, 1669 4, 4, 4, 4, 4, 4, 4, 4, 1670 4, 4, 4, 4, 4, 4, 4, 4, 1671 4, 4, 4, 4, 4, 4, 4, 4, 1672 4, 4, 4, 4, 4, 4, 4, 4, 1673 4, 4, 4, 4, 4, 4, 4, 4, 1674 4, 4, 4, 4, 4, 4, 4, 4, 1675 4, 4, 4, 4, 4, 4, 4, 4, 1676 4, 4, 4, 4, 4, 4, 4, 4, 1677 4, 4, 4, 4, 4, 4, 4, 4, 1678 4, 4, 4, 4, 4, 4, 4, 4, 1679 4, 4, 4, 4, 4, 4, 4, 4, 1680 4, 4, 4, 4, 4, 4, 4, 4, 1681 4, 4, 4, 4, 4, 14, 0, 0, 1682 4, 4, 4, 4, 4, 4, 4, 4, 1683 4, 4, 4, 4, 4, 4, 4, 4, 1684 4, 4, 4, 4, 4, 4, 4, 4, 1685 4, 4, 4, 4, 4, 4, 4, 4, 1686 4, 4, 4, 4, 4, 4, 4, 4, 1687 4, 4, 4, 4, 4, 4, 4, 4, 1688 4, 4, 4, 4, 4, 4, 4, 4, 1689 4, 4, 4, 4, 4, 4, 4, 4, 1690 4, 4, 4, 4, 4, 4, 4, 4, 1691 4, 4, 4, 4, 4, 4, 4, 4, 1692 4, 4, 4, 4, 4, 4, 4, 4, 1693 4, 4, 4, 4, 4, 4, 4, 4, 1694 4, 4, 4, 4, 4, 4, 4, 4, 1695 4, 4, 4, 4, 4, 4, 4, 4, 1696 4, 4, 4, 4, 4, 4, 4, 4, 1697 4, 4, 4, 4, 4, 4, 4, 4, 1698 4, 4, 4, 4, 4, 4, 4, 4, 1699 4, 4, 4, 4, 4, 4, 4, 4, 1700 4, 4, 4, 4, 4, 4, 4, 4, 1701 4, 4, 4, 4, 4, 4, 4, 4, 1702 4, 4, 4, 4, 4, 4, 4, 4, 1703 4, 4, 4, 4, 4, 4, 4, 4, 1704 4, 4, 4, 4, 4, 4, 4, 4, 1705 4, 4, 4, 4, 4, 4, 4, 4, 1706 4, 4, 4, 4, 4, 4, 4, 4, 1707 4, 4, 4, 4, 4, 4, 4, 4, 1708 4, 4, 4, 4, 4, 4, 4, 4, 1709 4, 4, 4, 4, 4, 4, 4, 4, 1710 4, 4, 4, 4, 4, 4, 4, 4, 1711 4, 4, 4, 4, 4, 4, 4, 4, 1712 4, 4, 4, 4, 4, 4, 4, 4, 1713 4, 4, 4, 4, 4, 4, 4, 4, 1714 4, 4, 4, 4, 4, 4, 4, 4, 1715 4, 4, 4, 4, 4, 136, 0, 0, 1716 4, 4, 4, 4, 4, 4, 4, 4, 1717 4, 4, 4, 4, 4, 4, 4, 4, 1718 4, 4, 4, 4, 4, 4, 4, 4, 1719 4, 4, 4, 4, 4, 4, 4, 4, 1720 4, 4, 4, 4, 137, 0, 0, 0, 1721 0, 0, 0, 0, 0, 0, 0, 0, 1722 0, 0, 0, 0, 0, 0, 0, 0, 1723 0, 0, 0, 0, 0, 0, 0, 0, 1724 0, 0, 0, 0, 0, 0, 0, 0, 1725 0, 0, 0, 0, 0, 0, 0, 0, 1726 0, 0, 0, 0, 0, 0, 0, 0, 1727 0, 0, 0, 0, 0, 0, 0, 0, 1728 4, 4, 4, 4, 4, 4, 4, 4, 1729 4, 4, 4, 4, 4, 4, 4, 4, 1730 4, 4, 4, 4, 4, 4, 4, 4, 1731 4, 4, 4, 4, 4, 4, 4, 4, 1732 4, 4, 4, 4, 4, 4, 4, 4, 1733 4, 4, 4, 4, 4, 4, 4, 4, 1734 4, 4, 4, 4, 4, 4, 4, 4, 1735 4, 4, 4, 4, 4, 4, 4, 4, 1736 4, 4, 4, 4, 4, 4, 4, 4, 1737 4, 4, 4, 4, 4, 4, 4, 4, 1738 4, 4, 4, 4, 4, 4, 4, 4, 1739 4, 4, 4, 4, 4, 120, 0, 0, 1740 4, 4, 4, 4, 4, 4, 4, 4, 1741 4, 4, 4, 4, 4, 4, 4, 4, 1742 4, 4, 4, 4, 4, 4, 4, 4, 1743 4, 4, 4, 4, 4, 4, 4, 4, 1744 4, 4, 4, 4, 4, 4, 4, 4, 1745 4, 4, 4, 4, 4, 4, 4, 4, 1746 4, 4, 4, 4, 4, 4, 4, 4, 1747 4, 4, 4, 4, 4, 4, 4, 4, 1748 4, 4, 4, 4, 4, 4, 4, 4, 1749 4, 4, 4, 4, 4, 4, 4, 4, 1750 4, 4, 4, 4, 4, 4, 4, 4, 1751 4, 4, 4, 4, 4, 4, 4, 4, 1752 4, 4, 4, 4, 4, 4, 4, 4, 1753 4, 4, 4, 4, 4, 4, 4, 4, 1754 4, 4, 4, 4, 4, 4, 4, 4, 1755 4, 4, 4, 4, 4, 4, 4, 4, 1756 4, 4, 4, 4, 4, 4, 4, 4, 1757 4, 4, 4, 4, 4, 4, 4, 4, 1758 4, 138, 4, 139, 0, 0, 0, 0, 1759 140, 141, 142, 29, 29, 143, 144, 29, 1760 29, 29, 29, 29, 29, 29, 29, 29, 1761 29, 145, 146, 29, 147, 29, 148, 149, 1762 0, 0, 0, 150, 29, 29, 29, 151, 1763 0, 1, 1, 152, 4, 134, 153, 0, 1764 0, 0, 0, 0, 0, 0, 0, 0, 1765 0, 0, 0, 0, 0, 0, 0, 0, 1766 0, 0, 0, 0, 0, 0, 0, 0, 1767 134, 154, 139, 0, 0, 0, 0, 0, 1768 4, 155, 156, 0, 0, 0, 0, 0, 1769 0, 0, 0, 0, 0, 0, 0, 0, 1770 0, 0, 0, 0, 0, 0, 0, 0, 1771 0, 0, 0, 0, 0, 0, 0, 0, 1772 0, 0, 0, 0, 0, 0, 0, 0, 1773 0, 0, 0, 0, 0, 0, 0, 0, 1774 0, 0, 0, 0, 0, 0, 0, 0, 1775 0, 0, 0, 0, 0, 0, 0, 0, 1776 0, 0, 0, 0, 0, 0, 0, 0, 1777 0, 0, 0, 0, 0, 0, 0, 0, 1778 0, 0, 0, 0, 0, 0, 0, 0, 1779 0, 0, 0, 0, 0, 0, 0, 0, 1780 0, 0, 0, 0, 0, 0, 0, 0, 1781 0, 0, 0, 0, 0, 0, 0, 0, 1782 0, 0, 0, 0, 0, 0, 0, 0, 1783 0, 0, 0, 0, 0, 0, 0, 0, 1784 0, 0, 0, 0, 0, 0, 0, 0, 1785 0, 0, 0, 0, 0, 0, 0, 0, 1786 0, 0, 0, 0, 0, 0, 0, 0, 1787 0, 0, 0, 0, 0, 0, 0, 0, 1788 0, 0, 0, 0, 0, 0, 0, 0, 1789 0, 0, 0, 0, 0, 0, 0, 0, 1790 0, 0, 0, 0, 0, 0, 0, 0, 1791 0, 0, 0, 0, 0, 0, 0, 0, 1792 0, 0, 0, 0, 0, 0, 0, 0, 1793 0, 0, 0, 0, 0, 0, 0, 0, 1794 0, 0, 0, 0, 0, 0, 0, 0, 1795 0, 0, 0, 0, 0, 0, 0, 0, 1796 4, 4, 4, 4, 4, 4, 4, 14, 1797 4, 157, 4, 158, 159, 160, 111, 0, 1798 0, 0, 0, 0, 0, 0, 0, 0, 1799 0, 0, 0, 0, 0, 0, 0, 0, 1800 4, 4, 161, 4, 162, 163, 164, 4, 1801 165, 166, 167, 4, 4, 4, 4, 4, 1802 4, 4, 4, 4, 4, 168, 4, 4, 1803 4, 4, 4, 4, 4, 4, 105, 0, 1804 0, 0, 0, 0, 0, 0, 0, 0, 1805 0, 0, 0, 0, 0, 0, 0, 0, 1806 0, 0, 0, 0, 0, 0, 0, 0, 1807 0, 0, 0, 0, 0, 0, 0, 0, 1808 0, 0, 0, 0, 0, 0, 0, 0, 1809 0, 0, 0, 0, 0, 0, 0, 0, 1810 0, 0, 0, 0, 0, 0, 0, 0, 1811 0, 0, 0, 0, 0, 0, 0, 0, 1812 4, 4, 4, 4, 4, 4, 4, 4, 1813 4, 4, 4, 4, 4, 4, 4, 4, 1814 4, 4, 4, 4, 4, 4, 4, 4, 1815 4, 4, 4, 4, 4, 4, 4, 4, 1816 4, 4, 4, 4, 4, 4, 4, 4, 1817 4, 4, 4, 4, 4, 4, 4, 4, 1818 4, 4, 4, 4, 4, 4, 97, 0, 1819 0, 0, 0, 0, 0, 0, 0, 0, 1820 0, 0, 0, 0, 0, 0, 0, 0, 1821 0, 0, 0, 0, 0, 0, 0, 0, 1822 0, 0, 0, 0, 0, 0, 0, 0, 1823 0, 0, 0, 0, 0, 0, 0, 0, 1824 0, 0, 0, 0, 0, 0, 0, 0, 1825 0, 0, 0, 0, 0, 0, 0, 0, 1826 0, 0, 0, 0, 0, 0, 0, 0, 1827 0, 0, 0, 0, 0, 0, 0, 0, 1828 0, 0, 0, 0, 0, 0, 0, 0, 1829 0, 0, 0, 0, 0, 0, 0, 0, 1830 0, 0, 0, 0, 0, 0, 0, 0, 1831 0, 0, 0, 0, 0, 0, 0, 0, 1832 0, 0, 0, 0, 0, 0, 0, 0, 1833 0, 0, 0, 0, 0, 0, 0, 0, 1834 0, 0, 0, 0, 0, 0, 0, 0, 1835 0, 0, 0, 0, 0, 0, 0, 0, 1836 4, 4, 4, 4, 4, 4, 4, 4, 1837 4, 4, 4, 4, 4, 4, 4, 4, 1838 111, 0, 0, 0, 0, 0, 0, 0, 1839 0, 0, 0, 0, 0, 0, 0, 0, 1840 0, 0, 0, 0, 0, 0, 0, 0, 1841 0, 0, 0, 0, 0, 0, 0, 0, 1842 0, 0, 0, 0, 0, 0, 0, 0, 1843 0, 0, 0, 0, 0, 0, 0, 0, 1844 4, 4, 4, 4, 4, 4, 4, 4, 1845 4, 4, 4, 4, 4, 4, 4, 4, 1846 4, 4, 4, 4, 4, 4, 4, 4, 1847 4, 4, 4, 4, 4, 4, 4, 4, 1848 4, 4, 4, 4, 4, 4, 4, 4, 1849 4, 4, 4, 4, 4, 4, 4, 4, 1850 4, 4, 4, 4, 4, 4, 4, 4, 1851 4, 4, 4, 4, 4, 4, 4, 4, 1852 4, 4, 4, 4, 4, 4, 4, 4, 1853 4, 4, 4, 4, 4, 4, 4, 4, 1854 4, 4, 4, 4, 4, 4, 4, 4, 1855 4, 4, 4, 4, 4, 4, 4, 4, 1856 4, 4, 4, 4, 4, 4, 4, 4, 1857 4, 4, 4, 4, 4, 4, 4, 4, 1858 4, 4, 4, 4, 4, 4, 4, 4, 1859 4, 4, 4, 4, 4, 4, 4, 111, 1860 }; 1861 1862 static const struct { 1863 unsigned char tbl[32]; 1864 } nameprep_rfc3491_bidi_table[] = { 1865 {{ 1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1868 }}, 1869 {{ 1870 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1871 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1872 }}, 1873 {{ 1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1875 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1876 }}, 1877 {{ 1878 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1879 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1880 }}, 1881 {{ 1882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1884 }}, 1885 {{ 1886 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1887 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888 }}, 1889 {{ 1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1891 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1892 }}, 1893 {{ 1894 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 1895 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 1896 }}, 1897 {{ 1898 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1899 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1900 }}, 1901 {{ 1902 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1904 }}, 1905 {{ 1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1908 }}, 1909 {{ 1910 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 0, 2, 2, 2, 1911 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1912 }}, 1913 {{ 1914 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1915 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1916 }}, 1917 {{ 1918 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 1919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1920 }}, 1921 {{ 1922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1923 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1924 }}, 1925 {{ 1926 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1927 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1928 }}, 1929 {{ 1930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1931 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1932 }}, 1933 {{ 1934 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1936 }}, 1937 {{ 1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1939 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1940 }}, 1941 {{ 1942 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1943 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1944 }}, 1945 {{ 1946 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1947 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1948 }}, 1949 {{ 1950 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1952 }}, 1953 {{ 1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1956 }}, 1957 {{ 1958 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1959 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1960 }}, 1961 {{ 1962 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1963 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1964 }}, 1965 {{ 1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1968 }}, 1969 {{ 1970 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1971 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1972 }}, 1973 {{ 1974 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1976 }}, 1977 {{ 1978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1979 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1980 }}, 1981 {{ 1982 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1983 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1984 }}, 1985 {{ 1986 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1987 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1988 }}, 1989 {{ 1990 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1992 }}, 1993 {{ 1994 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1995 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1996 }}, 1997 {{ 1998 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000 }}, 2001 {{ 2002 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2003 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2004 }}, 2005 {{ 2006 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2008 }}, 2009 {{ 2010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2011 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2012 }}, 2013 {{ 2014 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2015 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2016 }}, 2017 {{ 2018 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2020 }}, 2021 {{ 2022 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2023 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2024 }}, 2025 {{ 2026 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2027 0, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2028 }}, 2029 {{ 2030 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2031 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2032 }}, 2033 {{ 2034 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2035 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2036 }}, 2037 {{ 2038 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2039 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2040 }}, 2041 {{ 2042 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2043 0, 2, 2, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 2044 }}, 2045 {{ 2046 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2047 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2048 }}, 2049 {{ 2050 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2051 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2052 }}, 2053 {{ 2054 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2055 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2056 }}, 2057 {{ 2058 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2059 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2060 }}, 2061 {{ 2062 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 2, 2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2064 }}, 2065 {{ 2066 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2068 }}, 2069 {{ 2070 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2071 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2072 }}, 2073 {{ 2074 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2076 }}, 2077 {{ 2078 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2079 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 0, 2, 0, 2, 2, 2080 }}, 2081 {{ 2082 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2083 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2084 }}, 2085 {{ 2086 0, 2, 2, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2087 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2088 }}, 2089 {{ 2090 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2091 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2092 }}, 2093 {{ 2094 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2095 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2096 }}, 2097 {{ 2098 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2099 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2100 }}, 2101 {{ 2102 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2104 }}, 2105 {{ 2106 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2108 }}, 2109 {{ 2110 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2111 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2112 }}, 2113 {{ 2114 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2115 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 2116 }}, 2117 {{ 2118 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 2119 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2120 }}, 2121 {{ 2122 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2123 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2124 }}, 2125 {{ 2126 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 2127 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2128 }}, 2129 {{ 2130 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2131 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2132 }}, 2133 {{ 2134 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2135 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 2136 }}, 2137 {{ 2138 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2139 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2140 }}, 2141 {{ 2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2144 }}, 2145 {{ 2146 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2147 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2148 }}, 2149 {{ 2150 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2152 }}, 2153 {{ 2154 0, 2, 2, 0, 2, 0, 0, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0, 2155 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2156 }}, 2157 {{ 2158 0, 2, 2, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2159 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2160 }}, 2161 {{ 2162 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2163 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2164 }}, 2165 {{ 2166 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2167 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2168 }}, 2169 {{ 2170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2171 2, 2, 2, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2172 }}, 2173 {{ 2174 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2175 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2176 }}, 2177 {{ 2178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2180 }}, 2181 {{ 2182 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2184 }}, 2185 {{ 2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2188 }}, 2189 {{ 2190 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2192 }}, 2193 {{ 2194 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 2195 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2196 }}, 2197 {{ 2198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2199 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2200 }}, 2201 {{ 2202 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2204 }}, 2205 {{ 2206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2207 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 0, 0, 2208 }}, 2209 {{ 2210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2211 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2212 }}, 2213 {{ 2214 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2216 }}, 2217 {{ 2218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2219 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2220 }}, 2221 {{ 2222 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2224 }}, 2225 {{ 2226 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2227 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2228 }}, 2229 {{ 2230 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2232 }}, 2233 {{ 2234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2235 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2236 }}, 2237 {{ 2238 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2239 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2240 }}, 2241 {{ 2242 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2243 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2244 }}, 2245 {{ 2246 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2247 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2248 }}, 2249 {{ 2250 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2251 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2252 }}, 2253 {{ 2254 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2255 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2256 }}, 2257 {{ 2258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2260 }}, 2261 {{ 2262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2263 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2264 }}, 2265 {{ 2266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2267 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2268 }}, 2269 {{ 2270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2271 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2272 }}, 2273 {{ 2274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2276 }}, 2277 {{ 2278 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2279 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2280 }}, 2281 {{ 2282 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2283 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2284 }}, 2285 {{ 2286 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2288 }}, 2289 {{ 2290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2291 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2292 }}, 2293 {{ 2294 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2296 }}, 2297 {{ 2298 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2299 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2300 }}, 2301 {{ 2302 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2303 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2304 }}, 2305 {{ 2306 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2307 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 2, 2308 }}, 2309 {{ 2310 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2311 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2312 }}, 2313 {{ 2314 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2315 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2316 }}, 2317 {{ 2318 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2319 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2320 }}, 2321 {{ 2322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2323 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2324 }}, 2325 {{ 2326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2328 }}, 2329 {{ 2330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2331 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2332 }}, 2333 {{ 2334 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2335 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2336 }}, 2337 {{ 2338 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2339 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2340 }}, 2341 {{ 2342 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2344 }}, 2345 {{ 2346 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2348 }}, 2349 {{ 2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2352 }}, 2353 {{ 2354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2356 }}, 2357 {{ 2358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2359 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2360 }}, 2361 {{ 2362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2364 }}, 2365 {{ 2366 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2368 }}, 2369 {{ 2370 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2371 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 2372 }}, 2373 {{ 2374 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2375 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2376 }}, 2377 {{ 2378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2379 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2380 }}, 2381 {{ 2382 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2383 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2384 }}, 2385 {{ 2386 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2388 }}, 2389 {{ 2390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2392 }}, 2393 {{ 2394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2396 }}, 2397 {{ 2398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2400 }}, 2401 {{ 2402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2404 }}, 2405 {{ 2406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2407 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2408 }}, 2409 {{ 2410 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2412 }}, 2413 {{ 2414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2416 }}, 2417 {{ 2418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2420 }}, 2421 {{ 2422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2424 }}, 2425 {{ 2426 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2427 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 1, 2428 }}, 2429 {{ 2430 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2431 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2432 }}, 2433 {{ 2434 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2435 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2436 }}, 2437 {{ 2438 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2439 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2440 }}, 2441 {{ 2442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2443 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2444 }}, 2445 {{ 2446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2448 }}, 2449 {{ 2450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2452 }}, 2453 {{ 2454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2455 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2456 }}, 2457 {{ 2458 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2460 }}, 2461 {{ 2462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2463 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2464 }}, 2465 {{ 2466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2467 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2468 }}, 2469 {{ 2470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2472 }}, 2473 {{ 2474 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2476 }}, 2477 {{ 2478 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2479 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, 2480 }}, 2481 {{ 2482 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2484 }}, 2485 {{ 2486 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2487 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2488 }}, 2489 {{ 2490 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2492 }}, 2493 {{ 2494 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2496 }}, 2497 {{ 2498 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2499 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2500 }}, 2501 {{ 2502 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2504 }}, 2505 {{ 2506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2508 }}, 2509 {{ 2510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2511 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2512 }}, 2513 {{ 2514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2516 }}, 2517 {{ 2518 0, 0, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2519 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2520 }}, 2521 {{ 2522 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2524 }}, 2525 {{ 2526 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2527 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2528 }}, 2529 {{ 2530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2531 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2532 }}, 2533 {{ 2534 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2535 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2536 }}, 2537 {{ 2538 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2540 }}, 2541 }; 2542 2543 static const unsigned char nameprep_rfc3491_bidi_data[] = { 2544 idn_biditype_others, 2545 idn_biditype_r_al, 2546 idn_biditype_l, 2547 }; 2548 2549