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