KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > batik > gvt > flow > TextLineBreaks


1 /*
2
3    Copyright 2003 The Apache Software Foundation
4
5    Licensed under the Apache License, Version 2.0 (the "License");
6    you may not use this file except in compliance with the License.
7    You may obtain a copy of the License at
8
9        http://www.apache.org/licenses/LICENSE-2.0
10
11    Unless required by applicable law or agreed to in writing, software
12    distributed under the License is distributed on an "AS IS" BASIS,
13    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14    See the License for the specific language governing permissions and
15    limitations under the License.
16
17  */

18
19 package org.apache.batik.gvt.flow;
20
21 import java.text.AttributedCharacterIterator JavaDoc;
22 import java.text.AttributedString JavaDoc;
23 import java.util.HashSet JavaDoc;
24 import java.util.Set JavaDoc;
25
26 import org.apache.batik.gvt.text.GVTAttributedCharacterIterator;
27
28 public class TextLineBreaks {
29     public static final AttributedCharacterIterator.Attribute JavaDoc WORD_LIMIT =
30             new GVTAttributedCharacterIterator.TextAttribute("WORD_LIMIT");
31
32     public static final AttributedCharacterIterator.Attribute JavaDoc FLOW_PARAGRAPH
33         = GVTAttributedCharacterIterator.TextAttribute.FLOW_PARAGRAPH;
34
35     public static final AttributedCharacterIterator.Attribute JavaDoc FLOW_LINE_BREAK
36         = GVTAttributedCharacterIterator.TextAttribute.FLOW_LINE_BREAK;
37
38     static Set JavaDoc lineBrks = new HashSet JavaDoc();
39
40     static {
41         lineBrks.add(FLOW_PARAGRAPH);
42         lineBrks.add(FLOW_LINE_BREAK);
43     }
44
45     // placeholder function for complex break analysis
46
static int findComplexBreak(AttributedCharacterIterator JavaDoc aci)
47     {
48         int cnt = 0;
49         for(char ch = aci.current();
50             ch == AttributedCharacterIterator.DONE;
51             ch = aci.next(), cnt++) {
52  
53             // .. do complex break analysis here Right now we aren't
54
// do any, we just find the end of the run of
55
// CHAR_CLASS_SA.
56

57             if (getCharCharClass(ch) != CHAR_CLASS_SA)
58                 break;
59         }
60         return cnt;
61     }
62
63     // handle spaces separately, all others by table
64
// as - Attributed string to attribute with Word extents.
65
public static void findLineBrk(AttributedString JavaDoc as) {
66         AttributedCharacterIterator JavaDoc aci = as.getIterator();
67         if (aci.getEndIndex() == 0)
68             return;
69         char ch = aci.current(), prevCh = (char)-1;
70         byte cls = getCharCharClass(ch);
71         byte curCls = cls;
72         byte prevCls = cls;
73         byte prevPrevCls = -1;
74         int wordCnt = 0;
75         int wordBegin = aci.getBeginIndex();
76         // loop over all pairs in the string
77
int ich = wordBegin+1;
78         int lineEnd = aci.getRunLimit(lineBrks);
79
80         if (cls >= CHAR_CLASS_CM) cls = CHAR_CLASS_AL;
81
82         for (ch = aci.next();
83              ch != AttributedCharacterIterator.DONE;
84              ich++, prevCh = ch, ch = aci.next(),
85              prevPrevCls = prevCls, prevCls = curCls) {
86
87             if (ich == lineEnd) {
88                 as.addAttribute(WORD_LIMIT, new Integer JavaDoc(wordCnt++),
89                                 wordBegin, ich);
90                 wordBegin = ich;
91
92                 cls = getCharCharClass(ch);
93                 curCls = cls;
94                 prevCls = cls;
95                 if (cls >= CHAR_CLASS_CM) cls = CHAR_CLASS_AL;
96
97                 lineEnd = aci.getRunLimit(lineBrks);
98                 continue;
99             }
100               // handle spaces
101
curCls = getCharCharClass(ch);
102             if (curCls == CHAR_CLASS_SP) {
103                 // pbrk[ich-1] = BREAK_ACTION_PROHIBITED;
104
continue;
105             }
106  
107             // handle complex scripts
108
if (curCls == CHAR_CLASS_SA) {
109                 ich += findComplexBreak(aci);
110                 ch = aci.previous();
111                 if (ch != AttributedCharacterIterator.DONE)
112                     prevCls = getCharCharClass(ch);
113                 ch = aci.next();
114                 if (ch != AttributedCharacterIterator.DONE)
115                     curCls = cls = getCharCharClass(ch);
116                 continue;
117             }
118
119             // This isn't in the Unicode line breaking alg. but it
120
// seems needed as otherwise it does produce a break.
121
if ((ch == CHAR_ZERO_WIDTH_JOINER) ||
122                 (prevCh == CHAR_ZERO_WIDTH_JOINER))
123                 continue; // Don't allow break around JOINER.
124

125             // handle combining marks
126
if (curCls == CHAR_CLASS_CM) {
127                 if (prevCls == CHAR_CLASS_SP) {
128                     cls = CHAR_CLASS_ID;
129                     if (prevPrevCls != -1) {
130                         if (brkPairs[prevPrevCls][CHAR_CLASS_ID] ==
131                             BREAK_ACTION_DIRECT) {
132                             as.addAttribute(WORD_LIMIT, new Integer JavaDoc(wordCnt++),
133                                             wordBegin, ich-1);
134                             wordBegin = ich-1;
135                             // pbrk[ich-2] = BREAK_ACTION_DIRECT;
136
} else {
137                             // pbrk[ich-2] = BREAK_ACTION_PROHIBITED;
138
}
139                     }
140                 }
141                 // pbrk[ich-1] = BREAK_ACTION_PROHIBITED;
142
continue;
143             }
144
145             // lookup pair table information
146
byte brk = brkPairs[cls][curCls];
147
148             if (brk == BREAK_ACTION_DIRECT) {
149                 as.addAttribute(WORD_LIMIT, new Integer JavaDoc(wordCnt++),
150                                 wordBegin, ich);
151                 wordBegin = ich;
152                 // pbrk[ich-1] = brk;
153
} else if (brk == BREAK_ACTION_INDIRECT) {
154                 if (prevCls == CHAR_CLASS_SP) {
155                     as.addAttribute(WORD_LIMIT, new Integer JavaDoc(wordCnt++),
156                                     wordBegin, ich);
157                     wordBegin = ich;
158                 }
159                 // pbrk[ich-1] = ((prevCls == CHAR_CLASS_SP) ?
160
// BREAK_ACTION_INDIRECT :
161
// BREAK_ACTION_PROHIBITED);
162
}
163             cls = curCls;
164         }
165
166         // always break at the end
167
as.addAttribute(WORD_LIMIT, new Integer JavaDoc(wordCnt++),
168                         wordBegin, ich);
169         wordBegin = ich;
170         // pbrk[ich-1] = BREAK_ACTION_DIRECT;
171

172         return;
173    }
174
175     public static byte[] stringToLineBreakClasses(String JavaDoc s) {
176         int len = s.length();
177         byte[] ret = new byte[len];
178         for (int i=0; i<len; i++) {
179             ret[i] = getCharCharClass(s.charAt(i));
180         }
181         return ret;
182     }
183
184     public static byte getCharCharClass(char ch) {
185         if (ch < QUICK_LUT_SIZE) {
186             if (quickLut == null) buildQuickLut();
187             return quickLut[ch];
188         }
189         int len = raw_data.length;
190         int l = 0;
191         int r = (len/2)-1;
192         int entry = (l+r)/2;
193         while(l <= r) {
194             char min = raw_data[2*entry];
195             char max = raw_data[2*entry+1];
196             if (ch < min) r = entry-1;
197             else if (ch > max) l = entry+1;
198             else break;
199             entry = (l+r)/2;
200         }
201         return raw_classes[entry];
202     }
203
204     public final static char CHAR_ZERO_WIDTH_JOINER = 0x200D;
205
206     protected final static int QUICK_LUT_SIZE = 256;
207
208     protected static void buildQuickLut() {
209         int entry = 0;
210         quickLut = new byte[QUICK_LUT_SIZE];
211         int i=0;
212         while (i<QUICK_LUT_SIZE) {
213             int max = raw_data[2*entry+1];
214             byte cls = raw_classes[entry];
215             while (i<=max) {
216                 quickLut[i] = cls;
217                 i++;
218                 if (i>=QUICK_LUT_SIZE) break;
219             }
220             entry++;
221         }
222     }
223
224     // direct break (blank in table)
225
final public static byte BREAK_ACTION_DIRECT = 0;
226     // indirect break (% in table)
227
final public static byte BREAK_ACTION_INDIRECT = 1;
228     // prohibited break (^ in table)
229
final public static byte BREAK_ACTION_PROHIBITED = 2;
230
231     final public static String JavaDoc [] brkStrs = { "DB", "IB", "PB" };
232
233     //
234
final public static byte CHAR_CLASS_OP = 0;
235     final public static byte CHAR_CLASS_CL = 1;
236     final public static byte CHAR_CLASS_QU = 2;
237     final public static byte CHAR_CLASS_GL = 3;
238     final public static byte CHAR_CLASS_NS = 4;
239     final public static byte CHAR_CLASS_EX = 5;
240     final public static byte CHAR_CLASS_SY = 6;
241     final public static byte CHAR_CLASS_IS = 7;
242     final public static byte CHAR_CLASS_PR = 8;
243     final public static byte CHAR_CLASS_PO = 9;
244     final public static byte CHAR_CLASS_NU = 10;
245     final public static byte CHAR_CLASS_AL = 11;
246     final public static byte CHAR_CLASS_ID = 12;
247     final public static byte CHAR_CLASS_IN = 13;
248     final public static byte CHAR_CLASS_HY = 14;
249     final public static byte CHAR_CLASS_BA = 15;
250     final public static byte CHAR_CLASS_BB = 16;
251     final public static byte CHAR_CLASS_B2 = 17;
252     final public static byte CHAR_CLASS_ZW = 18;
253     final public static byte CHAR_CLASS_CM = 19;
254  
255     final public static byte CHAR_CLASS_SA = 20;
256     final public static byte CHAR_CLASS_SP = 21;
257     final public static byte CHAR_CLASS_BK = 22;
258     final public static byte CHAR_CLASS_AI = 23;
259     final public static byte CHAR_CLASS_CR = 24;
260     final public static byte CHAR_CLASS_LF = 25;
261     final public static byte CHAR_CLASS_SG = 26;
262     final public static byte CHAR_CLASS_XX = 27;
263     final public static byte CHAR_CLASS_CB = 28;
264
265     final public static String JavaDoc [] clsStrs = {
266         "OP", "CL", "QU", "GL", "NS", "EX", "SY", "IS", "PR", "PO",
267         "NU", "AL", "ID", "IN", "HY", "BA", "BB", "B2", "ZW", "CM",
268         "SA", "SP", "BK", "AI", "CR", "LF", "SG", "XX", "CB" };
269
270     static byte [][]brkPairs =
271         // ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, ^, %
272
{ { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }, // 0
273

274         // _, ^, %, %, ^, ^, ^, ^, _, %, _, _, _, _, %, %, _, _, ^, %
275
{ 0, 2, 1, 1, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 1
276

277         // ^, ^, %, %, %, ^, ^, ^, %, %, %, %, %, %, %, %, %, %, ^, %
278
{ 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1 }, // 2
279

280         // %, ^, %, %, %, ^, ^, ^, %, %, %, %, %, %, %, %, %, %, ^, %
281
{ 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1 }, // 3
282

283         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, _, ^, %
284
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 4
285

286         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, _, ^, %
287
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 5
288

289         // _, ^, %, %, %, ^, ^, ^, _, _, %, _, _, _, %, %, _, _, ^, %
290
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 6
291

292         // _, ^, %, %, %, ^, ^, ^, _, _, %, _, _, _, %, %, _, _, ^, %
293
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 7
294

295         // %, ^, %, %, %, ^, ^, ^, _, _, %, %, %, _, %, %, _, _, ^, %
296
{ 1, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 2, 1 }, // 8
297

298         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, _, ^, %
299
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 9
300

301         // _, ^, %, %, %, ^, ^, ^, _, %, %, %, _, %, %, %, _, _, ^, %
302
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 2, 1 }, // 10
303

304         // _, ^, %, %, %, ^, ^, ^, _, _, %, %, _, %, %, %, _, _, ^, %
305
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 2, 1 }, // 11
306

307         // _, ^, %, %, %, ^, ^, ^, _, %, _, _, _, %, %, %, _, _, ^, %
308
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 2, 1 }, // 12
309

310         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, %, %, %, _, _, ^, %
311
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 2, 1 }, // 13
312

313         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, _, ^, %
314
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 14
315

316         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, _, ^, %
317
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 1 }, // 15
318

319         // %, ^, %, %, %, ^, ^, ^, %, %, %, %, %, %, %, %, %, %, ^, %
320
{ 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1 }, // 16
321

322         // _, ^, %, %, %, ^, ^, ^, _, _, _, _, _, _, %, %, _, ^, ^, %
323
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 2, 1 }, // 17
324

325         // _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, ^, %
326
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1 }, // 18
327

328         // _, ^, %, %, %, ^, ^, ^, _, _, %, %, _, %, %, %, _, _, ^, %
329
{ 0, 2, 1, 1, 1, 2, 2, 2, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 2, 1 }};// 19
330

331
332     static byte [] quickLut = null;
333
334     final static char [] raw_data = {
335         0x0000, 0x0008,
336         0x0009, 0x0009,
337         0x000A, 0x000A,
338         0x000B, 0x000B,
339         0x000C, 0x000C,
340         0x000D, 0x000D,
341         0x000E, 0x001F,
342         0x0020, 0x0020,
343         0x0021, 0x0021,
344         0x0022, 0x0022,
345         0x0023, 0x0023,
346         0x0024, 0x0024,
347         0x0025, 0x0025,
348         0x0026, 0x0026,
349         0x0027, 0x0027,
350         0x0028, 0x0028,
351         0x0029, 0x0029,
352         0x002A, 0x002A,
353         0x002B, 0x002B,
354         0x002C, 0x002C,
355         0x002D, 0x002D,
356         0x002E, 0x002E,
357         0x002F, 0x002F,
358         0x0030, 0x0039,
359         0x003A, 0x003B,
360         0x003C, 0x003E,
361         0x003F, 0x003F,
362         0x0040, 0x005A,
363         0x005B, 0x005B,
364         0x005C, 0x005C,
365         0x005D, 0x005D,
366         0x005E, 0x007A,
367         0x007B, 0x007B,
368         0x007C, 0x007C,
369         0x007D, 0x007D,
370         0x007E, 0x007E,
371         0x007F, 0x009F,
372         0x00A0, 0x00A0,
373         0x00A1, 0x00A1,
374         0x00A2, 0x00A2,
375         0x00A3, 0x00A5,
376         0x00A6, 0x00A6,
377         0x00A7, 0x00A8,
378         0x00A9, 0x00A9,
379         0x00AA, 0x00AA,
380         0x00AB, 0x00AB,
381         0x00AC, 0x00AC,
382         0x00AD, 0x00AD,
383         0x00AE, 0x00AF,
384         0x00B0, 0x00B0,
385         0x00B1, 0x00B1,
386         0x00B2, 0x00B3,
387         0x00B4, 0x00B4,
388         0x00B5, 0x00B5,
389         0x00B6, 0x00BA,
390         0x00BB, 0x00BB,
391         0x00BC, 0x00BF,
392         0x00C0, 0x00C5,
393         0x00C6, 0x00C6,
394         0x00C7, 0x00CF,
395         0x00D0, 0x00D0,
396         0x00D1, 0x00D6,
397         0x00D7, 0x00D8,
398         0x00D9, 0x00DD,
399         0x00DE, 0x00E1,
400         0x00E2, 0x00E5,
401         0x00E6, 0x00E6,
402         0x00E7, 0x00E7,
403         0x00E8, 0x00EA,
404         0x00EB, 0x00EB,
405         0x00EC, 0x00ED,
406         0x00EE, 0x00EF,
407         0x00F0, 0x00F0,
408         0x00F1, 0x00F1,
409         0x00F2, 0x00F3,
410         0x00F4, 0x00F6,
411         0x00F7, 0x00FA,
412         0x00FB, 0x00FB,
413         0x00FC, 0x00FC,
414         0x00FD, 0x00FD,
415         0x00FE, 0x00FE,
416         0x00FF, 0x0100,
417         0x0101, 0x0101,
418         0x0102, 0x0110,
419         0x0111, 0x0111,
420         0x0112, 0x0112,
421         0x0113, 0x0113,
422         0x0114, 0x011A,
423         0x011B, 0x011B,
424         0x011C, 0x0125,
425         0x0126, 0x0127,
426         0x0128, 0x012A,
427         0x012B, 0x012B,
428         0x012C, 0x0130,
429         0x0131, 0x0133,
430         0x0134, 0x0137,
431         0x0138, 0x0138,
432         0x0139, 0x013E,
433         0x013F, 0x0142,
434         0x0143, 0x0143,
435         0x0144, 0x0144,
436         0x0145, 0x0147,
437         0x0148, 0x014A,
438         0x014B, 0x014C,
439         0x014D, 0x014D,
440         0x014E, 0x0151,
441         0x0152, 0x0153,
442         0x0154, 0x0165,
443         0x0166, 0x0167,
444         0x0168, 0x016A,
445         0x016B, 0x016B,
446         0x016C, 0x01CD,
447         0x01CE, 0x01CE,
448         0x01CF, 0x01CF,
449         0x01D0, 0x01D0,
450         0x01D1, 0x01D1,
451         0x01D2, 0x01D2,
452         0x01D3, 0x01D3,
453         0x01D4, 0x01D4,
454         0x01D5, 0x01D5,
455         0x01D6, 0x01D6,
456         0x01D7, 0x01D7,
457         0x01D8, 0x01D8,
458         0x01D9, 0x01D9,
459         0x01DA, 0x01DA,
460         0x01DB, 0x01DB,
461         0x01DC, 0x01DC,
462         0x01DD, 0x0250,
463         0x0251, 0x0251,
464         0x0252, 0x0260,
465         0x0261, 0x0261,
466         0x0262, 0x02C6,
467         0x02C7, 0x02C7,
468         0x02C8, 0x02C8,
469         0x02C9, 0x02CB,
470         0x02CC, 0x02CC,
471         0x02CD, 0x02CD,
472         0x02CE, 0x02CF,
473         0x02D0, 0x02D0,
474         0x02D1, 0x02D7,
475         0x02D8, 0x02DB,
476         0x02DC, 0x02DC,
477         0x02DD, 0x02DD,
478         0x02DE, 0x02EE,
479         0x0300, 0x036F,
480         0x0374, 0x0390,
481         0x0391, 0x03A9,
482         0x03AA, 0x03B0,
483         0x03B1, 0x03C1,
484         0x03C2, 0x03C2,
485         0x03C3, 0x03C9,
486         0x03CA, 0x0400,
487         0x0401, 0x0401,
488         0x0402, 0x040F,
489         0x0410, 0x044F,
490         0x0450, 0x0450,
491         0x0451, 0x0451,
492         0x0452, 0x0482,
493         0x0483, 0x0489,
494         0x048A, 0x0587,
495         0x0589, 0x0589,
496         0x058A, 0x058A,
497         0x0591, 0x05BD,
498         0x05BE, 0x05BE,
499         0x05BF, 0x05BF,
500         0x05C0, 0x05C0,
501         0x05C1, 0x05C2,
502         0x05C3, 0x05C3,
503         0x05C4, 0x05C4,
504         0x05D0, 0x064A,
505         0x064B, 0x0655,
506         0x0660, 0x0669,
507         0x066A, 0x066F,
508         0x0670, 0x0670,
509         0x0671, 0x06D5,
510         0x06D6, 0x06E4,
511         0x06E5, 0x06E6,
512         0x06E7, 0x06E8,
513         0x06E9, 0x06E9,
514         0x06EA, 0x06ED,
515         0x06F0, 0x06F9,
516         0x06FA, 0x070D,
517         0x070F, 0x070F,
518         0x0710, 0x0710,
519         0x0711, 0x0711,
520         0x0712, 0x072C,
521         0x0730, 0x074A,
522         0x0780, 0x07A5,
523         0x07A6, 0x07B0,
524         0x07B1, 0x07B1,
525         0x0901, 0x0903,
526         0x0905, 0x0939,
527         0x093C, 0x093C,
528         0x093D, 0x093D,
529         0x093E, 0x094D,
530         0x0950, 0x0950,
531         0x0951, 0x0954,
532         0x0958, 0x0961,
533         0x0962, 0x0963,
534         0x0964, 0x0965,
535         0x0966, 0x096F,
536         0x0970, 0x0970,
537         0x0981, 0x0983,
538         0x0985, 0x09B9,
539         0x09BC, 0x09D7,
540         0x09DC, 0x09E1,
541         0x09E2, 0x09E3,
542         0x09E6, 0x09EF,
543         0x09F0, 0x09F1,
544         0x09F2, 0x09F3,
545         0x09F4, 0x09FA,
546         0x0A02, 0x0A02,
547         0x0A05, 0x0A39,
548         0x0A3C, 0x0A4D,
549         0x0A59, 0x0A5E,
550         0x0A66, 0x0A6F,
551         0x0A70, 0x0A71,
552         0x0A72, 0x0A74,
553         0x0A81, 0x0A83,
554         0x0A85, 0x0AB9,
555         0x0ABC, 0x0ABC,
556         0x0ABD, 0x0ABD,
557         0x0ABE, 0x0ACD,
558         0x0AD0, 0x0AE0,
559         0x0AE6, 0x0AEF,
560         0x0B01, 0x0B03,
561         0x0B05, 0x0B39,
562         0x0B3C, 0x0B3C,
563         0x0B3D, 0x0B3D,
564         0x0B3E, 0x0B57,
565         0x0B5C, 0x0B61,
566         0x0B66, 0x0B6F,
567         0x0B70, 0x0B70,
568         0x0B82, 0x0B82,
569         0x0B83, 0x0BB9,
570         0x0BBE, 0x0BD7,
571         0x0BE7, 0x0BEF,
572         0x0BF0, 0x0BF2,
573         0x0C01, 0x0C03,
574         0x0C05, 0x0C39,
575         0x0C3E, 0x0C56,
576         0x0C60, 0x0C61,
577         0x0C66, 0x0C6F,
578         0x0C82, 0x0C83,
579         0x0C85, 0x0CB9,
580         0x0CBE, 0x0CD6,
581         0x0CDE, 0x0CE1,
582         0x0CE6, 0x0CEF,
583         0x0D02, 0x0D03,
584         0x0D05, 0x0D39,
585         0x0D3E, 0x0D57,
586         0x0D60, 0x0D61,
587         0x0D66, 0x0D6F,
588         0x0D82, 0x0D83,
589         0x0D85, 0x0DC6,
590         0x0DCA, 0x0DF3,
591         0x0DF4, 0x0DF4,
592         0x0E01, 0x0E30,
593         0x0E31, 0x0E31,
594         0x0E32, 0x0E33,
595         0x0E34, 0x0E3A,
596         0x0E3F, 0x0E3F,
597         0x0E40, 0x0E46,
598         0x0E47, 0x0E4E,
599         0x0E4F, 0x0E4F,
600         0x0E50, 0x0E59,
601         0x0E5A, 0x0E5B,
602         0x0E81, 0x0EB0,
603         0x0EB1, 0x0EB1,
604         0x0EB2, 0x0EB3,
605         0x0EB4, 0x0EBC,
606         0x0EBD, 0x0EC6,
607         0x0EC8, 0x0ECD,
608         0x0ED0, 0x0ED9,
609         0x0EDC, 0x0EDD,
610         0x0F00, 0x0F0A,
611         0x0F0B, 0x0F0B,
612         0x0F0C, 0x0F0C,
613         0x0F0D, 0x0F17,
614         0x0F18, 0x0F19,
615         0x0F1A, 0x0F1F,
616         0x0F20, 0x0F29,
617         0x0F2A, 0x0F34,
618         0x0F35, 0x0F35,
619         0x0F36, 0x0F36,
620         0x0F37, 0x0F37,
621         0x0F38, 0x0F38,
622         0x0F39, 0x0F39,
623         0x0F3A, 0x0F3A,
624         0x0F3B, 0x0F3B,
625         0x0F3C, 0x0F3C,
626         0x0F3D, 0x0F3D,
627         0x0F3E, 0x0F3F,
628         0x0F40, 0x0F6A,
629         0x0F71, 0x0F84,
630         0x0F85, 0x0F85,
631         0x0F86, 0x0F87,
632         0x0F88, 0x0F8B,
633         0x0F90, 0x0FBC,
634         0x0FBE, 0x0FC5,
635         0x0FC6, 0x0FC6,
636         0x0FC7, 0x0FCF,
637         0x1000, 0x102A,
638         0x102C, 0x1039,
639         0x1040, 0x1049,
640         0x104A, 0x104F,
641         0x1050, 0x1055,
642         0x1056, 0x1059,
643         0x10A0, 0x10FB,
644         0x1100, 0x115F,
645         0x1160, 0x11F9,
646         0x1200, 0x135A,
647         0x1361, 0x1361,
648         0x1362, 0x1368,
649         0x1369, 0x1371,
650         0x1372, 0x1676,
651         0x1680, 0x1680,
652         0x1681, 0x169A,
653         0x169B, 0x169B,
654         0x169C, 0x169C,
655         0x16A0, 0x1711,
656         0x1712, 0x1714,
657         0x1720, 0x1731,
658         0x1732, 0x1734,
659         0x1735, 0x1751,
660         0x1752, 0x1753,
661         0x1760, 0x1770,
662         0x1772, 0x1773,
663         0x1780, 0x17B3,
664         0x17B4, 0x17D3,
665         0x17D4, 0x17D4,
666         0x17D5, 0x17D5,
667         0x17D6, 0x17DA,
668         0x17DB, 0x17DB,
669         0x17DC, 0x17DC,
670         0x17E0, 0x17E9,
671         0x1800, 0x1805,
672         0x1806, 0x1806,
673         0x1807, 0x180A,
674         0x180B, 0x180E,
675         0x1810, 0x1819,
676         0x1820, 0x18A8,
677         0x18A9, 0x18A9,
678         0x1E00, 0x1FFE,
679         0x2000, 0x2006,
680         0x2007, 0x2007,
681         0x2008, 0x200A,
682         0x200B, 0x200B,
683         0x200C, 0x200F,
684         0x2010, 0x2010,
685         0x2011, 0x2011,
686         0x2012, 0x2013,
687         0x2014, 0x2014,
688         0x2015, 0x2016,
689         0x2017, 0x2017,
690         0x2018, 0x2019,
691         0x201A, 0x201A,
692         0x201B, 0x201D,
693         0x201E, 0x201E,
694         0x201F, 0x201F,
695         0x2020, 0x2021,
696         0x2022, 0x2023,
697         0x2024, 0x2026,
698         0x2027, 0x2027,
699         0x2028, 0x2029,
700         0x202A, 0x202E,
701         0x202F, 0x202F,
702         0x2030, 0x2037,
703         0x2038, 0x2038,
704         0x2039, 0x203A,
705         0x203B, 0x203B,
706         0x203C, 0x203C,
707         0x203D, 0x2043,
708         0x2044, 0x2044,
709         0x2045, 0x2045,
710         0x2046, 0x2046,
711         0x2047, 0x2057,
712         0x205F, 0x205F,
713         0x2060, 0x2060,
714         0x2061, 0x2063,
715         0x206A, 0x206F,
716         0x2070, 0x2071,
717         0x2074, 0x2074,
718         0x2075, 0x207C,
719         0x207D, 0x207D,
720         0x207E, 0x207E,
721         0x207F, 0x207F,
722         0x2080, 0x2080,
723         0x2081, 0x2084,
724         0x2085, 0x208C,
725         0x208D, 0x208D,
726         0x208E, 0x208E,
727         0x20A0, 0x20A6,
728         0x20A7, 0x20A7,
729         0x20A8, 0x20B1,
730         0x20D0, 0x20EA,
731         0x2100, 0x2102,
732         0x2103, 0x2103,
733         0x2104, 0x2104,
734         0x2105, 0x2105,
735         0x2106, 0x2108,
736         0x2109, 0x2109,
737         0x210A, 0x2112,
738         0x2113, 0x2113,
739         0x2114, 0x2115,
740         0x2116, 0x2116,
741         0x2117, 0x2120,
742         0x2121, 0x2122,
743         0x2123, 0x2125,
744         0x2126, 0x2126,
745         0x2127, 0x212A,
746         0x212B, 0x212B,
747         0x212C, 0x213F,
748         0x2140, 0x2140,
749         0x2141, 0x2153,
750         0x2154, 0x2155,
751         0x2156, 0x215A,
752         0x215B, 0x215B,
753         0x215C, 0x215D,
754         0x215E, 0x215E,
755         0x215F, 0x215F,
756         0x2160, 0x216B,
757         0x216C, 0x216F,
758         0x2170, 0x2179,
759         0x217A, 0x2183,
760         0x2190, 0x2199,
761         0x219A, 0x21D1,
762         0x21D2, 0x21D2,
763         0x21D3, 0x21D3,
764         0x21D4, 0x21D4,
765         0x21D5, 0x21FF,
766         0x2200, 0x2200,
767         0x2201, 0x2201,
768         0x2202, 0x2203,
769         0x2204, 0x2206,
770         0x2207, 0x2208,
771         0x2209, 0x220A,
772         0x220B, 0x220B,
773         0x220C, 0x220E,
774         0x220F, 0x220F,
775         0x2210, 0x2210,
776         0x2211, 0x2211,
777         0x2212, 0x2213,
778         0x2214, 0x2214,
779         0x2215, 0x2215,
780         0x2216, 0x2219,
781         0x221A, 0x221A,
782         0x221B, 0x221C,
783         0x221D, 0x2220,
784         0x2221, 0x2222,
785         0x2223, 0x2223,
786         0x2224, 0x2224,
787         0x2225, 0x2225,
788         0x2226, 0x2226,
789         0x2227, 0x222C,
790         0x222D, 0x222D,
791         0x222E, 0x222E,
792         0x222F, 0x2233,
793         0x2234, 0x2237,
794         0x2238, 0x223B,
795         0x223C, 0x223D,
796         0x223E, 0x2247,
797         0x2248, 0x2248,
798         0x2249, 0x224B,
799         0x224C, 0x224C,
800         0x224D, 0x2251,
801         0x2252, 0x2252,
802         0x2253, 0x225F,
803         0x2260, 0x2261,
804         0x2262, 0x2263,
805         0x2264, 0x2267,
806         0x2268, 0x2269,
807         0x226A, 0x226B,
808         0x226C, 0x226D,
809         0x226E, 0x226F,
810         0x2270, 0x2281,
811         0x2282, 0x2283,
812         0x2284, 0x2285,
813         0x2286, 0x2287,
814         0x2288, 0x2294,
815         0x2295, 0x2295,
816         0x2296, 0x2298,
817         0x2299, 0x2299,
818         0x229A, 0x22A4,
819         0x22A5, 0x22A5,
820         0x22A6, 0x22BE,
821         0x22BF, 0x22BF,
822         0x22C0, 0x2311,
823         0x2312, 0x2312,
824         0x2313, 0x2328,
825         0x2329, 0x2329,
826         0x232A, 0x232A,
827         0x232B, 0x23B3,
828         0x23B4, 0x23B4,
829         0x23B5, 0x23B5,
830         0x23B6, 0x23B6,
831         0x23B7, 0x244A,
832         0x2460, 0x24BF,
833         0x24C0, 0x24CF,
834         0x24D0, 0x24E9,
835         0x24EA, 0x24EA,
836         0x24EB, 0x254B,
837         0x254C, 0x254F,
838         0x2550, 0x2574,
839         0x2575, 0x257F,
840         0x2580, 0x258F,
841         0x2590, 0x2591,
842         0x2592, 0x2595,
843         0x2596, 0x259F,
844         0x25A0, 0x25A1,
845         0x25A2, 0x25A2,
846         0x25A3, 0x25A9,
847         0x25AA, 0x25B1,
848         0x25B2, 0x25B3,
849         0x25B4, 0x25B5,
850         0x25B6, 0x25B7,
851         0x25B8, 0x25BB,
852         0x25BC, 0x25BD,
853         0x25BE, 0x25BF,
854         0x25C0, 0x25C1,
855         0x25C2, 0x25C5,
856         0x25C6, 0x25C8,
857         0x25C9, 0x25CA,
858         0x25CB, 0x25CB,
859         0x25CC, 0x25CD,
860         0x25CE, 0x25D1,
861         0x25D2, 0x25E1,
862         0x25E2, 0x25E5,
863         0x25E6, 0x25EE,
864         0x25EF, 0x25EF,
865         0x25F0, 0x2604,
866         0x2605, 0x2606,
867         0x2607, 0x2608,
868         0x2609, 0x2609,
869         0x260A, 0x260D,
870         0x260E, 0x260F,
871         0x2610, 0x2613,
872         0x2616, 0x2617,
873         0x2619, 0x261B,
874         0x261C, 0x261C,
875         0x261D, 0x261D,
876         0x261E, 0x261E,
877         0x261F, 0x263F,
878         0x2640, 0x2640,
879         0x2641, 0x2641,
880         0x2642, 0x2642,
881         0x2643, 0x265F,
882         0x2660, 0x2661,
883         0x2662, 0x2662,
884         0x2663, 0x2665,
885         0x2666, 0x2666,
886         0x2667, 0x266A,
887         0x266B, 0x266B,
888         0x266C, 0x266D,
889         0x266E, 0x266E,
890         0x266F, 0x266F,
891         0x2670, 0x275A,
892         0x275B, 0x275E,
893         0x2761, 0x2761,
894         0x2762, 0x2763,
895         0x2764, 0x2767,
896         0x2768, 0x2768,
897         0x2769, 0x2769,
898         0x276A, 0x276A,
899         0x276B, 0x276B,
900         0x276C, 0x276C,
901         0x276D, 0x276D,
902         0x276E, 0x276E,
903         0x276F, 0x276F,
904         0x2770, 0x2770,
905         0x2771, 0x2771,
906         0x2772, 0x2772,
907         0x2773, 0x2773,
908         0x2774, 0x2774,
909         0x2775, 0x2775,
910         0x2776, 0x27E5,
911         0x27E6, 0x27E6,
912         0x27E7, 0x27E7,
913         0x27E8, 0x27E8,
914         0x27E9, 0x27E9,
915         0x27EA, 0x27EA,
916         0x27EB, 0x27EB,
917         0x27F0, 0x2982,
918         0x2983, 0x2983,
919         0x2984, 0x2984,
920         0x2985, 0x2985,
921         0x2986, 0x2986,
922         0x2987, 0x2987,
923         0x2988, 0x2988,
924         0x2989, 0x2989,
925         0x298A, 0x298A,
926         0x298B, 0x298B,
927         0x298C, 0x298C,
928         0x298D, 0x298D,
929         0x298E, 0x298E,
930         0x298F, 0x298F,
931         0x2990, 0x2990,
932         0x2991, 0x2991,
933         0x2992, 0x2992,
934         0x2993, 0x2993,
935         0x2994, 0x2994,
936         0x2995, 0x2995,
937         0x2996, 0x2996,
938         0x2997, 0x2997,
939         0x2998, 0x2998,
940         0x2999, 0x29D7,
941         0x29D8, 0x29D8,
942         0x29D9, 0x29D9,
943         0x29DA, 0x29DA,
944         0x29DB, 0x29DB,
945         0x29DC, 0x29FB,
946         0x29FC, 0x29FC,
947         0x29FD, 0x29FD,
948         0x29FE, 0x2AFF,
949         0x2E80, 0x3000,
950         0x3001, 0x3002,
951         0x3003, 0x3004,
952         0x3005, 0x3005,
953         0x3006, 0x3007,
954         0x3008, 0x3008,
955         0x3009, 0x3009,
956         0x300A, 0x300A,
957         0x300B, 0x300B,
958         0x300C, 0x300C,
959         0x300D, 0x300D,
960         0x300E, 0x300E,
961         0x300F, 0x300F,
962         0x3010, 0x3010,
963         0x3011, 0x3011,
964         0x3012, 0x3013,
965         0x3014, 0x3014,
966         0x3015, 0x3015,
967         0x3016, 0x3016,
968         0x3017, 0x3017,
969         0x3018, 0x3018,
970         0x3019, 0x3019,
971         0x301A, 0x301A,
972         0x301B, 0x301B,
973         0x301C, 0x301C,
974         0x301D, 0x301D,
975         0x301E, 0x301F,
976         0x3020, 0x3029,
977         0x302A, 0x302F,
978         0x3030, 0x303A,
979         0x303B, 0x303C,
980         0x303D, 0x303F,
981         0x3041, 0x3041,
982         0x3042, 0x3042,
983         0x3043, 0x3043,
984         0x3044, 0x3044,
985         0x3045, 0x3045,
986         0x3046, 0x3046,
987         0x3047, 0x3047,
988         0x3048, 0x3048,
989         0x3049, 0x3049,
990         0x304A, 0x3062,
991         0x3063, 0x3063,
992         0x3064, 0x3082,
993         0x3083, 0x3083,
994         0x3084, 0x3084,
995         0x3085, 0x3085,
996         0x3086, 0x3086,
997         0x3087, 0x3087,
998         0x3088, 0x308D,
999         0x308E, 0x308E,
1000        0x308F, 0x3094,
1001        0x3095, 0x3096,
1002        0x3099, 0x309A,
1003        0x309B, 0x309E,
1004        0x309F, 0x309F,
1005        0x30A0, 0x30A1,
1006        0x30A2, 0x30A2,
1007        0x30A3, 0x30A3,
1008        0x30A4, 0x30A4,
1009        0x30A5, 0x30A5,
1010        0x30A6, 0x30A6,
1011        0x30A7, 0x30A7,
1012        0x30A8, 0x30A8,
1013        0x30A9, 0x30A9,
1014        0x30AA, 0x30C2,
1015        0x30C3, 0x30C3,
1016        0x30C4, 0x30E2,
1017        0x30E3, 0x30E3,
1018        0x30E4, 0x30E4,
1019        0x30E5, 0x30E5,
1020        0x30E6, 0x30E6,
1021        0x30E7, 0x30E7,
1022        0x30E8, 0x30ED,
1023        0x30EE, 0x30EE,
1024        0x30EF, 0x30F4,
1025        0x30F5, 0x30F6,
1026        0x30F7, 0x30FA,
1027        0x30FB, 0x30FB,
1028        0x30FC, 0x30FC,
1029        0x30FD, 0x30FD,
1030        0x30FE, 0x31B7,
1031        0x31F0, 0x31FF,
1032        0x3200, 0xD7A3,
1033        0xD800, 0xDFFF,
1034        0xE000, 0xF8FF,
1035        0xF900, 0xFA6A,
1036        0xFB00, 0xFB1D,
1037        0xFB1E, 0xFB1E,
1038        0xFB1F, 0xFD3D,
1039        0xFD3E, 0xFD3E,
1040        0xFD3F, 0xFD3F,
1041        0xFD50, 0xFDFB,
1042        0xFDFC, 0xFDFC,
1043        0xFE00, 0xFE23,
1044        0xFE30, 0xFE34,
1045        0xFE35, 0xFE35,
1046        0xFE36, 0xFE36,
1047        0xFE37, 0xFE37,
1048        0xFE38, 0xFE38,
1049        0xFE39, 0xFE39,
1050        0xFE3A, 0xFE3A,
1051        0xFE3B, 0xFE3B,
1052        0xFE3C, 0xFE3C,
1053        0xFE3D, 0xFE3D,
1054        0xFE3E, 0xFE3E,
1055        0xFE3F, 0xFE3F,
1056        0xFE40, 0xFE40,
1057        0xFE41, 0xFE41,
1058        0xFE42, 0xFE42,
1059        0xFE43, 0xFE43,
1060        0xFE44, 0xFE44,
1061        0xFE45, 0xFE4F,
1062        0xFE50, 0xFE50,
1063        0xFE51, 0xFE51,
1064        0xFE52, 0xFE52,
1065        0xFE54, 0xFE55,
1066        0xFE56, 0xFE57,
1067        0xFE58, 0xFE58,
1068        0xFE59, 0xFE59,
1069        0xFE5A, 0xFE5A,
1070        0xFE5B, 0xFE5B,
1071        0xFE5C, 0xFE5C,
1072        0xFE5D, 0xFE5D,
1073        0xFE5E, 0xFE5E,
1074        0xFE5F, 0xFE68,
1075        0xFE69, 0xFE69,
1076        0xFE6A, 0xFE6A,
1077        0xFE6B, 0xFE6B,
1078        0xFE70, 0xFEFC,
1079        0xFEFF, 0xFEFF,
1080        0xFF01, 0xFF01,
1081        0xFF02, 0xFF03,
1082        0xFF04, 0xFF04,
1083        0xFF05, 0xFF05,
1084        0xFF06, 0xFF07,
1085        0xFF08, 0xFF08,
1086        0xFF09, 0xFF09,
1087        0xFF0A, 0xFF0B,
1088        0xFF0C, 0xFF0C,
1089        0xFF0D, 0xFF0D,
1090        0xFF0E, 0xFF0E,
1091        0xFF0F, 0xFF19,
1092        0xFF1A, 0xFF1B,
1093        0xFF1C, 0xFF1E,
1094        0xFF1F, 0xFF1F,
1095        0xFF20, 0xFF3A,
1096        0xFF3B, 0xFF3B,
1097        0xFF3C, 0xFF3C,
1098        0xFF3D, 0xFF3D,
1099        0xFF3E, 0xFF5A,
1100        0xFF5B, 0xFF5B,
1101        0xFF5C, 0xFF5C,
1102        0xFF5D, 0xFF5D,
1103        0xFF5E, 0xFF5E,
1104        0xFF5F, 0xFF5F,
1105        0xFF60, 0xFF61,
1106        0xFF62, 0xFF62,
1107        0xFF63, 0xFF64,
1108        0xFF65, 0xFF65,
1109        0xFF66, 0xFF66,
1110        0xFF67, 0xFF70,
1111        0xFF71, 0xFF9D,
1112        0xFF9E, 0xFF9F,
1113        0xFFA0, 0xFFDC,
1114        0xFFE0, 0xFFE0,
1115        0xFFE1, 0xFFE1,
1116        0xFFE2, 0xFFE4,
1117        0xFFE5, 0xFFE6,
1118        0xFFE8, 0xFFEE,
1119        0xFFF9, 0xFFFB,
1120        0xFFFC, 0xFFFC,
1121        0xFFFD, 0xFFFF,
1122    };
1123    final static byte [] raw_classes = {
1124        CHAR_CLASS_CM,
1125        CHAR_CLASS_BA,
1126        CHAR_CLASS_LF,
1127        CHAR_CLASS_CM,
1128        CHAR_CLASS_BK,
1129        CHAR_CLASS_CR,
1130        CHAR_CLASS_CM,
1131        CHAR_CLASS_SP,
1132        CHAR_CLASS_EX,
1133        CHAR_CLASS_QU,
1134        CHAR_CLASS_AL,
1135        CHAR_CLASS_PR,
1136        CHAR_CLASS_PO,
1137        CHAR_CLASS_AL,
1138        CHAR_CLASS_QU,
1139        CHAR_CLASS_OP,
1140        CHAR_CLASS_CL,
1141        CHAR_CLASS_AL,
1142        CHAR_CLASS_PR,
1143        CHAR_CLASS_IS,
1144        CHAR_CLASS_HY,
1145        CHAR_CLASS_IS,
1146        CHAR_CLASS_SY,
1147        CHAR_CLASS_NU,
1148        CHAR_CLASS_IS,
1149        CHAR_CLASS_AL,
1150        CHAR_CLASS_EX,
1151        CHAR_CLASS_AL,
1152        CHAR_CLASS_OP,
1153        CHAR_CLASS_PR,
1154        CHAR_CLASS_CL,
1155        CHAR_CLASS_AL,
1156        CHAR_CLASS_OP,
1157        CHAR_CLASS_BA,
1158        CHAR_CLASS_CL,
1159        CHAR_CLASS_AL,
1160        CHAR_CLASS_CM,
1161        CHAR_CLASS_GL,
1162        CHAR_CLASS_AI,
1163        CHAR_CLASS_PO,
1164        CHAR_CLASS_PR,
1165        CHAR_CLASS_AL,
1166        CHAR_CLASS_AI,
1167        CHAR_CLASS_AL,
1168        CHAR_CLASS_AI,
1169        CHAR_CLASS_QU,
1170        CHAR_CLASS_AL,
1171        CHAR_CLASS_BA,
1172        CHAR_CLASS_AL,
1173        CHAR_CLASS_PO,
1174        CHAR_CLASS_PR,
1175        CHAR_CLASS_AI,
1176        CHAR_CLASS_BB,
1177        CHAR_CLASS_AL,
1178        CHAR_CLASS_AI,
1179        CHAR_CLASS_QU,
1180        CHAR_CLASS_AI,
1181        CHAR_CLASS_AL,
1182        CHAR_CLASS_AI,
1183        CHAR_CLASS_AL,
1184        CHAR_CLASS_AI,
1185        CHAR_CLASS_AL,
1186        CHAR_CLASS_AI,
1187        CHAR_CLASS_AL,
1188        CHAR_CLASS_AI,
1189        CHAR_CLASS_AL,
1190        CHAR_CLASS_AI,
1191        CHAR_CLASS_AL,
1192        CHAR_CLASS_AI,
1193        CHAR_CLASS_AL,
1194        CHAR_CLASS_AI,
1195        CHAR_CLASS_AL,
1196        CHAR_CLASS_AI,
1197        CHAR_CLASS_AL,
1198        CHAR_CLASS_AI,
1199        CHAR_CLASS_AL,
1200        CHAR_CLASS_AI,
1201        CHAR_CLASS_AL,
1202        CHAR_CLASS_AI,
1203        CHAR_CLASS_AL,
1204        CHAR_CLASS_AI,
1205        CHAR_CLASS_AL,
1206        CHAR_CLASS_AI,
1207        CHAR_CLASS_AL,
1208        CHAR_CLASS_AI,
1209        CHAR_CLASS_AL,
1210        CHAR_CLASS_AI,
1211        CHAR_CLASS_AL,
1212        CHAR_CLASS_AI,
1213        CHAR_CLASS_AL,
1214        CHAR_CLASS_AI,
1215        CHAR_CLASS_AL,
1216        CHAR_CLASS_AI,
1217        CHAR_CLASS_AL,
1218        CHAR_CLASS_AI,
1219        CHAR_CLASS_AL,
1220        CHAR_CLASS_AI,
1221        CHAR_CLASS_AL,
1222        CHAR_CLASS_AI,
1223        CHAR_CLASS_AL,
1224        CHAR_CLASS_AI,
1225        CHAR_CLASS_AL,
1226        CHAR_CLASS_AI,
1227        CHAR_CLASS_AL,
1228        CHAR_CLASS_AI,
1229        CHAR_CLASS_AL,
1230        CHAR_CLASS_AI,
1231        CHAR_CLASS_AL,
1232        CHAR_CLASS_AI,
1233        CHAR_CLASS_AL,
1234        CHAR_CLASS_AI,
1235        CHAR_CLASS_AL,
1236        CHAR_CLASS_AI,
1237        CHAR_CLASS_AL,
1238        CHAR_CLASS_AI,
1239        CHAR_CLASS_AL,
1240        CHAR_CLASS_AI,
1241        CHAR_CLASS_AL,
1242        CHAR_CLASS_AI,
1243        CHAR_CLASS_AL,
1244        CHAR_CLASS_AI,
1245        CHAR_CLASS_AL,
1246        CHAR_CLASS_AI,
1247        CHAR_CLASS_AL,
1248        CHAR_CLASS_AI,
1249        CHAR_CLASS_AL,
1250        CHAR_CLASS_AI,
1251        CHAR_CLASS_AL,
1252        CHAR_CLASS_AI,
1253        CHAR_CLASS_AL,
1254        CHAR_CLASS_AI,
1255        CHAR_CLASS_AL,
1256        CHAR_CLASS_AI,
1257        CHAR_CLASS_BB,
1258        CHAR_CLASS_AI,
1259        CHAR_CLASS_BB,
1260        CHAR_CLASS_AI,
1261        CHAR_CLASS_AL,
1262        CHAR_CLASS_AI,
1263        CHAR_CLASS_AL,
1264        CHAR_CLASS_AI,
1265        CHAR_CLASS_AL,
1266        CHAR_CLASS_AI,
1267        CHAR_CLASS_AL,
1268        CHAR_CLASS_CM,
1269        CHAR_CLASS_AL,
1270        CHAR_CLASS_AI,
1271        CHAR_CLASS_AL,
1272        CHAR_CLASS_AI,
1273        CHAR_CLASS_AL,
1274        CHAR_CLASS_AI,
1275        CHAR_CLASS_AL,
1276        CHAR_CLASS_AI,
1277        CHAR_CLASS_AL,
1278        CHAR_CLASS_AI,
1279        CHAR_CLASS_AL,
1280        CHAR_CLASS_AI,
1281        CHAR_CLASS_AL,
1282        CHAR_CLASS_CM,
1283        CHAR_CLASS_AL,
1284        CHAR_CLASS_IS,
1285        CHAR_CLASS_BA,
1286        CHAR_CLASS_CM,
1287        CHAR_CLASS_AL,
1288        CHAR_CLASS_CM,
1289        CHAR_CLASS_AL,
1290        CHAR_CLASS_CM,
1291        CHAR_CLASS_AL,
1292        CHAR_CLASS_CM,
1293        CHAR_CLASS_AL,
1294        CHAR_CLASS_CM,
1295        CHAR_CLASS_NU,
1296        CHAR_CLASS_AL,
1297        CHAR_CLASS_CM,
1298        CHAR_CLASS_AL,
1299        CHAR_CLASS_CM,
1300        CHAR_CLASS_AL,
1301        CHAR_CLASS_CM,
1302        CHAR_CLASS_AL,
1303        CHAR_CLASS_CM,
1304        CHAR_CLASS_NU,
1305        CHAR_CLASS_AL,
1306        CHAR_CLASS_CM,
1307        CHAR_CLASS_AL,
1308        CHAR_CLASS_CM,
1309        CHAR_CLASS_AL,
1310        CHAR_CLASS_CM,
1311        CHAR_CLASS_AL,
1312        CHAR_CLASS_CM,
1313        CHAR_CLASS_AL,
1314        CHAR_CLASS_CM,
1315        CHAR_CLASS_AL,
1316        CHAR_CLASS_CM,
1317        CHAR_CLASS_AL,
1318        CHAR_CLASS_CM,
1319        CHAR_CLASS_AL,
1320        CHAR_CLASS_CM,
1321        CHAR_CLASS_AL,
1322        CHAR_CLASS_CM,
1323        CHAR_CLASS_AL,
1324        CHAR_CLASS_NU,
1325        CHAR_CLASS_AL,
1326        CHAR_CLASS_CM,
1327        CHAR_CLASS_AL,
1328        CHAR_CLASS_CM,
1329        CHAR_CLASS_AL,
1330        CHAR_CLASS_CM,
1331        CHAR_CLASS_NU,
1332        CHAR_CLASS_AL,
1333        CHAR_CLASS_PR,
1334        CHAR_CLASS_AL,
1335        CHAR_CLASS_CM,
1336        CHAR_CLASS_AL,
1337        CHAR_CLASS_CM,
1338        CHAR_CLASS_AL,
1339        CHAR_CLASS_NU,
1340        CHAR_CLASS_CM,
1341        CHAR_CLASS_AL,
1342        CHAR_CLASS_CM,
1343        CHAR_CLASS_AL,
1344        CHAR_CLASS_CM,
1345        CHAR_CLASS_AL,
1346        CHAR_CLASS_CM,
1347        CHAR_CLASS_AL,
1348        CHAR_CLASS_NU,
1349        CHAR_CLASS_CM,
1350        CHAR_CLASS_AL,
1351        CHAR_CLASS_CM,
1352        CHAR_CLASS_AL,
1353        CHAR_CLASS_CM,
1354        CHAR_CLASS_AL,
1355        CHAR_CLASS_NU,
1356        CHAR_CLASS_AL,
1357        CHAR_CLASS_CM,
1358        CHAR_CLASS_AL,
1359        CHAR_CLASS_CM,
1360        CHAR_CLASS_NU,
1361        CHAR_CLASS_AL,
1362        CHAR_CLASS_CM,
1363        CHAR_CLASS_AL,
1364        CHAR_CLASS_CM,
1365        CHAR_CLASS_AL,
1366        CHAR_CLASS_NU,
1367        CHAR_CLASS_CM,
1368        CHAR_CLASS_AL,
1369        CHAR_CLASS_CM,
1370        CHAR_CLASS_AL,
1371        CHAR_CLASS_NU,
1372        CHAR_CLASS_CM,
1373        CHAR_CLASS_AL,
1374        CHAR_CLASS_CM,
1375        CHAR_CLASS_AL,
1376        CHAR_CLASS_NU,
1377        CHAR_CLASS_CM,
1378        CHAR_CLASS_AL,
1379        CHAR_CLASS_CM,
1380        CHAR_CLASS_AL,
1381        CHAR_CLASS_SA,
1382        CHAR_CLASS_CM,
1383        CHAR_CLASS_SA,
1384        CHAR_CLASS_CM,
1385        CHAR_CLASS_PR,
1386        CHAR_CLASS_SA,
1387        CHAR_CLASS_CM,
1388        CHAR_CLASS_AL,
1389        CHAR_CLASS_NU,
1390        CHAR_CLASS_NS,
1391        CHAR_CLASS_SA,
1392        CHAR_CLASS_CM,
1393        CHAR_CLASS_SA,
1394        CHAR_CLASS_CM,
1395        CHAR_CLASS_SA,
1396        CHAR_CLASS_CM,
1397        CHAR_CLASS_NU,
1398        CHAR_CLASS_SA,
1399        CHAR_CLASS_AL,
1400        CHAR_CLASS_BA,
1401        CHAR_CLASS_GL,
1402        CHAR_CLASS_AL,
1403        CHAR_CLASS_CM,
1404        CHAR_CLASS_AL,
1405        CHAR_CLASS_NU,
1406        CHAR_CLASS_AL,
1407        CHAR_CLASS_CM,
1408        CHAR_CLASS_AL,
1409        CHAR_CLASS_CM,
1410        CHAR_CLASS_AL,
1411        CHAR_CLASS_CM,
1412        CHAR_CLASS_OP,
1413        CHAR_CLASS_CL,
1414        CHAR_CLASS_OP,
1415        CHAR_CLASS_CL,
1416        CHAR_CLASS_CM,
1417        CHAR_CLASS_AL,
1418        CHAR_CLASS_CM,
1419        CHAR_CLASS_AL,
1420        CHAR_CLASS_CM,
1421        CHAR_CLASS_AL,
1422        CHAR_CLASS_CM,
1423        CHAR_CLASS_AL,
1424        CHAR_CLASS_CM,
1425        CHAR_CLASS_AL,
1426        CHAR_CLASS_SA,
1427        CHAR_CLASS_CM,
1428        CHAR_CLASS_NU,
1429        CHAR_CLASS_AL,
1430        CHAR_CLASS_SA,
1431        CHAR_CLASS_CM,
1432        CHAR_CLASS_AL,
1433        CHAR_CLASS_ID,
1434        CHAR_CLASS_CM,
1435        CHAR_CLASS_AL,
1436        CHAR_CLASS_BA,
1437        CHAR_CLASS_AL,
1438        CHAR_CLASS_NU,
1439        CHAR_CLASS_AL,
1440        CHAR_CLASS_BA,
1441        CHAR_CLASS_AL,
1442        CHAR_CLASS_OP,
1443        CHAR_CLASS_CL,
1444        CHAR_CLASS_AL,
1445        CHAR_CLASS_CM,
1446        CHAR_CLASS_AL,
1447        CHAR_CLASS_CM,
1448        CHAR_CLASS_AL,
1449        CHAR_CLASS_CM,
1450        CHAR_CLASS_AL,
1451        CHAR_CLASS_CM,
1452        CHAR_CLASS_SA,
1453        CHAR_CLASS_CM,
1454        CHAR_CLASS_NS,
1455        CHAR_CLASS_BA,
1456        CHAR_CLASS_NS,
1457        CHAR_CLASS_PR,
1458        CHAR_CLASS_AL,
1459        CHAR_CLASS_NU,
1460        CHAR_CLASS_AL,
1461        CHAR_CLASS_BB,
1462        CHAR_CLASS_AL,
1463        CHAR_CLASS_CM,
1464        CHAR_CLASS_NU,
1465        CHAR_CLASS_AL,
1466        CHAR_CLASS_CM,
1467        CHAR_CLASS_AL,
1468        CHAR_CLASS_BA,
1469        CHAR_CLASS_GL,
1470        CHAR_CLASS_BA,
1471        CHAR_CLASS_ZW,
1472        CHAR_CLASS_CM,
1473        CHAR_CLASS_BA,
1474        CHAR_CLASS_GL,
1475        CHAR_CLASS_BA,
1476        CHAR_CLASS_B2,
1477        CHAR_CLASS_AI,
1478        CHAR_CLASS_AL,
1479        CHAR_CLASS_QU,
1480        CHAR_CLASS_OP,
1481        CHAR_CLASS_QU,
1482        CHAR_CLASS_OP,
1483        CHAR_CLASS_QU,
1484        CHAR_CLASS_AI,
1485        CHAR_CLASS_AL,
1486        CHAR_CLASS_IN,
1487        CHAR_CLASS_BA,
1488        CHAR_CLASS_BK,
1489        CHAR_CLASS_CM,
1490        CHAR_CLASS_GL,
1491        CHAR_CLASS_PO,
1492        CHAR_CLASS_AL,
1493        CHAR_CLASS_QU,
1494        CHAR_CLASS_AI,
1495        CHAR_CLASS_NS,
1496        CHAR_CLASS_AL,
1497        CHAR_CLASS_NS,
1498        CHAR_CLASS_OP,
1499        CHAR_CLASS_CL,
1500        CHAR_CLASS_AL,
1501        CHAR_CLASS_BA,
1502        CHAR_CLASS_GL,
1503        CHAR_CLASS_AL,
1504        CHAR_CLASS_CM,
1505        CHAR_CLASS_AL,
1506        CHAR_CLASS_AI,
1507        CHAR_CLASS_AL,
1508        CHAR_CLASS_OP,
1509        CHAR_CLASS_CL,
1510        CHAR_CLASS_AI,
1511        CHAR_CLASS_AL,
1512        CHAR_CLASS_AI,
1513        CHAR_CLASS_AL,
1514        CHAR_CLASS_OP,
1515        CHAR_CLASS_CL,
1516        CHAR_CLASS_PR,
1517        CHAR_CLASS_PO,
1518        CHAR_CLASS_PR,
1519        CHAR_CLASS_CM,
1520        CHAR_CLASS_AL,
1521        CHAR_CLASS_PO,
1522        CHAR_CLASS_AL,
1523        CHAR_CLASS_AI,
1524        CHAR_CLASS_AL,
1525        CHAR_CLASS_PO,
1526        CHAR_CLASS_AL,
1527        CHAR_CLASS_AI,
1528        CHAR_CLASS_AL,
1529        CHAR_CLASS_PR,
1530        CHAR_CLASS_AL,
1531        CHAR_CLASS_AI,
1532        CHAR_CLASS_AL,
1533        CHAR_CLASS_PO,
1534        CHAR_CLASS_AL,
1535        CHAR_CLASS_AI,
1536        CHAR_CLASS_AL,
1537        CHAR_CLASS_AI,
1538        CHAR_CLASS_AL,
1539        CHAR_CLASS_AI,
1540        CHAR_CLASS_AL,
1541        CHAR_CLASS_AI,
1542        CHAR_CLASS_AL,
1543        CHAR_CLASS_AI,
1544        CHAR_CLASS_AL,
1545        CHAR_CLASS_AI,
1546        CHAR_CLASS_AL,
1547        CHAR_CLASS_AI,
1548        CHAR_CLASS_AL,
1549        CHAR_CLASS_AI,
1550        CHAR_CLASS_AL,
1551        CHAR_CLASS_AI,
1552        CHAR_CLASS_AL,
1553        CHAR_CLASS_AI,
1554        CHAR_CLASS_AL,
1555        CHAR_CLASS_AI,
1556        CHAR_CLASS_AL,
1557        CHAR_CLASS_AI,
1558        CHAR_CLASS_AL,
1559        CHAR_CLASS_AI,
1560        CHAR_CLASS_AL,
1561        CHAR_CLASS_AI,
1562        CHAR_CLASS_AL,
1563        CHAR_CLASS_AI,
1564        CHAR_CLASS_AL,
1565        CHAR_CLASS_AI,
1566        CHAR_CLASS_PR,
1567        CHAR_CLASS_AL,
1568        CHAR_CLASS_AI,
1569        CHAR_CLASS_AL,
1570        CHAR_CLASS_AI,
1571        CHAR_CLASS_AL,
1572        CHAR_CLASS_AI,
1573        CHAR_CLASS_AL,
1574        CHAR_CLASS_AI,
1575        CHAR_CLASS_AL,
1576        CHAR_CLASS_AI,
1577        CHAR_CLASS_AL,
1578        CHAR_CLASS_AI,
1579        CHAR_CLASS_AL,
1580        CHAR_CLASS_AI,
1581        CHAR_CLASS_AL,
1582        CHAR_CLASS_AI,
1583        CHAR_CLASS_AL,
1584        CHAR_CLASS_AI,
1585        CHAR_CLASS_AL,
1586        CHAR_CLASS_AI,
1587        CHAR_CLASS_AL,
1588        CHAR_CLASS_AI,
1589        CHAR_CLASS_AL,
1590        CHAR_CLASS_AI,
1591        CHAR_CLASS_AL,
1592        CHAR_CLASS_AI,
1593        CHAR_CLASS_AL,
1594        CHAR_CLASS_AI,
1595        CHAR_CLASS_AL,
1596        CHAR_CLASS_AI,
1597        CHAR_CLASS_AL,
1598        CHAR_CLASS_AI,
1599        CHAR_CLASS_AL,
1600        CHAR_CLASS_AI,
1601        CHAR_CLASS_AL,
1602        CHAR_CLASS_AI,
1603        CHAR_CLASS_AL,
1604        CHAR_CLASS_AI,
1605        CHAR_CLASS_AL,
1606        CHAR_CLASS_AI,
1607        CHAR_CLASS_AL,
1608        CHAR_CLASS_AI,
1609        CHAR_CLASS_AL,
1610        CHAR_CLASS_AI,
1611        CHAR_CLASS_AL,
1612        CHAR_CLASS_AI,
1613        CHAR_CLASS_AL,
1614        CHAR_CLASS_OP,
1615        CHAR_CLASS_CL,
1616        CHAR_CLASS_AL,
1617        CHAR_CLASS_OP,
1618        CHAR_CLASS_CL,
1619        CHAR_CLASS_QU,
1620        CHAR_CLASS_AL,
1621        CHAR_CLASS_AI,
1622        CHAR_CLASS_AL,
1623        CHAR_CLASS_AI,
1624        CHAR_CLASS_AL,
1625        CHAR_CLASS_AI,
1626        CHAR_CLASS_AL,
1627        CHAR_CLASS_AI,
1628        CHAR_CLASS_AL,
1629        CHAR_CLASS_AI,
1630        CHAR_CLASS_AL,
1631        CHAR_CLASS_AI,
1632        CHAR_CLASS_AL,
1633        CHAR_CLASS_AI,
1634        CHAR_CLASS_AL,
1635        CHAR_CLASS_AI,
1636        CHAR_CLASS_AL,
1637        CHAR_CLASS_AI,
1638        CHAR_CLASS_AL,
1639        CHAR_CLASS_AI,
1640        CHAR_CLASS_AL,
1641        CHAR_CLASS_AI,
1642        CHAR_CLASS_AL,
1643        CHAR_CLASS_AI,
1644        CHAR_CLASS_AL,
1645        CHAR_CLASS_AI,
1646        CHAR_CLASS_AL,
1647        CHAR_CLASS_AI,
1648        CHAR_CLASS_AL,
1649        CHAR_CLASS_AI,
1650        CHAR_CLASS_AL,
1651        CHAR_CLASS_AI,
1652        CHAR_CLASS_AL,
1653        CHAR_CLASS_AI,
1654        CHAR_CLASS_AL,
1655        CHAR_CLASS_AI,
1656        CHAR_CLASS_AL,
1657        CHAR_CLASS_AI,
1658        CHAR_CLASS_AL,
1659        CHAR_CLASS_AI,
1660        CHAR_CLASS_AL,
1661        CHAR_CLASS_AI,
1662        CHAR_CLASS_AL,
1663        CHAR_CLASS_AI,
1664        CHAR_CLASS_AL,
1665        CHAR_CLASS_AI,
1666        CHAR_CLASS_AL,
1667        CHAR_CLASS_AI,
1668        CHAR_CLASS_AL,
1669        CHAR_CLASS_AI,
1670        CHAR_CLASS_AL,
1671        CHAR_CLASS_AI,
1672        CHAR_CLASS_AL,
1673        CHAR_CLASS_AI,
1674        CHAR_CLASS_AL,
1675        CHAR_CLASS_AI,
1676        CHAR_CLASS_AL,
1677        CHAR_CLASS_AI,
1678        CHAR_CLASS_AL,
1679        CHAR_CLASS_AI,
1680        CHAR_CLASS_AL,
1681        CHAR_CLASS_QU,
1682        CHAR_CLASS_AL,
1683        CHAR_CLASS_EX,
1684        CHAR_CLASS_AL,
1685        CHAR_CLASS_OP,
1686        CHAR_CLASS_CL,
1687        CHAR_CLASS_OP,
1688        CHAR_CLASS_CL,
1689        CHAR_CLASS_OP,
1690        CHAR_CLASS_CL,
1691        CHAR_CLASS_OP,
1692        CHAR_CLASS_CL,
1693        CHAR_CLASS_OP,
1694        CHAR_CLASS_CL,
1695        CHAR_CLASS_OP,
1696        CHAR_CLASS_CL,
1697        CHAR_CLASS_OP,
1698        CHAR_CLASS_CL,
1699        CHAR_CLASS_AL,
1700        CHAR_CLASS_OP,
1701        CHAR_CLASS_CL,
1702        CHAR_CLASS_OP,
1703        CHAR_CLASS_CL,
1704        CHAR_CLASS_OP,
1705        CHAR_CLASS_CL,
1706        CHAR_CLASS_AL,
1707        CHAR_CLASS_OP,
1708        CHAR_CLASS_CL,
1709        CHAR_CLASS_OP,
1710        CHAR_CLASS_CL,
1711        CHAR_CLASS_OP,
1712        CHAR_CLASS_CL,
1713        CHAR_CLASS_OP,
1714        CHAR_CLASS_CL,
1715        CHAR_CLASS_OP,
1716        CHAR_CLASS_CL,
1717        CHAR_CLASS_OP,
1718        CHAR_CLASS_CL,
1719        CHAR_CLASS_OP,
1720        CHAR_CLASS_CL,
1721        CHAR_CLASS_OP,
1722        CHAR_CLASS_CL,
1723        CHAR_CLASS_OP,
1724        CHAR_CLASS_CL,
1725        CHAR_CLASS_OP,
1726        CHAR_CLASS_CL,
1727        CHAR_CLASS_OP,
1728        CHAR_CLASS_CL,
1729        CHAR_CLASS_AL,
1730        CHAR_CLASS_OP,
1731        CHAR_CLASS_CL,
1732        CHAR_CLASS_OP,
1733        CHAR_CLASS_CL,
1734        CHAR_CLASS_AL,
1735        CHAR_CLASS_OP,
1736        CHAR_CLASS_CL,
1737        CHAR_CLASS_AL,
1738        CHAR_CLASS_ID,
1739        CHAR_CLASS_CL,
1740        CHAR_CLASS_ID,
1741        CHAR_CLASS_NS,
1742        CHAR_CLASS_ID,
1743        CHAR_CLASS_OP,
1744        CHAR_CLASS_CL,
1745        CHAR_CLASS_OP,
1746        CHAR_CLASS_CL,
1747        CHAR_CLASS_OP,
1748        CHAR_CLASS_CL,
1749        CHAR_CLASS_OP,
1750        CHAR_CLASS_CL,
1751        CHAR_CLASS_OP,
1752        CHAR_CLASS_CL,
1753        CHAR_CLASS_ID,
1754        CHAR_CLASS_OP,
1755        CHAR_CLASS_CL,
1756        CHAR_CLASS_OP,
1757        CHAR_CLASS_CL,
1758        CHAR_CLASS_OP,
1759        CHAR_CLASS_CL,
1760        CHAR_CLASS_OP,
1761        CHAR_CLASS_CL,
1762        CHAR_CLASS_NS,
1763        CHAR_CLASS_OP,
1764        CHAR_CLASS_CL,
1765        CHAR_CLASS_ID,
1766        CHAR_CLASS_CM,
1767        CHAR_CLASS_ID,
1768        CHAR_CLASS_NS,
1769        CHAR_CLASS_ID,
1770        CHAR_CLASS_NS,
1771        CHAR_CLASS_ID,
1772        CHAR_CLASS_NS,
1773        CHAR_CLASS_ID,
1774        CHAR_CLASS_NS,
1775        CHAR_CLASS_ID,
1776        CHAR_CLASS_NS,
1777        CHAR_CLASS_ID,
1778        CHAR_CLASS_NS,
1779        CHAR_CLASS_ID,
1780        CHAR_CLASS_NS,
1781        CHAR_CLASS_ID,
1782        CHAR_CLASS_NS,
1783        CHAR_CLASS_ID,
1784        CHAR_CLASS_NS,
1785        CHAR_CLASS_ID,
1786        CHAR_CLASS_NS,
1787        CHAR_CLASS_ID,
1788        CHAR_CLASS_NS,
1789        CHAR_CLASS_ID,
1790        CHAR_CLASS_NS,
1791        CHAR_CLASS_CM,
1792        CHAR_CLASS_NS,
1793        CHAR_CLASS_ID,
1794        CHAR_CLASS_NS,
1795        CHAR_CLASS_ID,
1796        CHAR_CLASS_NS,
1797        CHAR_CLASS_ID,
1798        CHAR_CLASS_NS,
1799        CHAR_CLASS_ID,
1800        CHAR_CLASS_NS,
1801        CHAR_CLASS_ID,
1802        CHAR_CLASS_NS,
1803        CHAR_CLASS_ID,
1804        CHAR_CLASS_NS,
1805        CHAR_CLASS_ID,
1806        CHAR_CLASS_NS,
1807        CHAR_CLASS_ID,
1808        CHAR_CLASS_NS,
1809        CHAR_CLASS_ID,
1810        CHAR_CLASS_NS,
1811        CHAR_CLASS_ID,
1812        CHAR_CLASS_NS,
1813        CHAR_CLASS_ID,
1814        CHAR_CLASS_NS,
1815        CHAR_CLASS_ID,
1816        CHAR_CLASS_NS,
1817        CHAR_CLASS_ID,
1818        CHAR_CLASS_NS,
1819        CHAR_CLASS_ID,
1820        CHAR_CLASS_NS,
1821        CHAR_CLASS_ID,
1822        CHAR_CLASS_SG,
1823        CHAR_CLASS_XX,
1824        CHAR_CLASS_ID,
1825        CHAR_CLASS_AL,
1826        CHAR_CLASS_CM,
1827        CHAR_CLASS_AL,
1828        CHAR_CLASS_OP,
1829        CHAR_CLASS_CL,
1830        CHAR_CLASS_AL,
1831        CHAR_CLASS_PO,
1832        CHAR_CLASS_CM,
1833        CHAR_CLASS_ID,
1834        CHAR_CLASS_OP,
1835        CHAR_CLASS_CL,
1836        CHAR_CLASS_OP,
1837        CHAR_CLASS_CL,
1838        CHAR_CLASS_OP,
1839        CHAR_CLASS_CL,
1840        CHAR_CLASS_OP,
1841        CHAR_CLASS_CL,
1842        CHAR_CLASS_OP,
1843        CHAR_CLASS_CL,
1844        CHAR_CLASS_OP,
1845        CHAR_CLASS_CL,
1846        CHAR_CLASS_OP,
1847        CHAR_CLASS_CL,
1848        CHAR_CLASS_OP,
1849        CHAR_CLASS_CL,
1850        CHAR_CLASS_ID,
1851        CHAR_CLASS_CL,
1852        CHAR_CLASS_ID,
1853        CHAR_CLASS_CL,
1854        CHAR_CLASS_NS,
1855        CHAR_CLASS_EX,
1856        CHAR_CLASS_ID,
1857        CHAR_CLASS_OP,
1858        CHAR_CLASS_CL,
1859        CHAR_CLASS_OP,
1860        CHAR_CLASS_CL,
1861        CHAR_CLASS_OP,
1862        CHAR_CLASS_CL,
1863        CHAR_CLASS_ID,
1864        CHAR_CLASS_PR,
1865        CHAR_CLASS_PO,
1866        CHAR_CLASS_ID,
1867        CHAR_CLASS_AL,
1868        CHAR_CLASS_GL,
1869        CHAR_CLASS_EX,
1870        CHAR_CLASS_ID,
1871        CHAR_CLASS_PR,
1872        CHAR_CLASS_PO,
1873        CHAR_CLASS_ID,
1874        CHAR_CLASS_OP,
1875        CHAR_CLASS_CL,
1876        CHAR_CLASS_ID,
1877        CHAR_CLASS_CL,
1878        CHAR_CLASS_ID,
1879        CHAR_CLASS_CL,
1880        CHAR_CLASS_ID,
1881        CHAR_CLASS_NS,
1882        CHAR_CLASS_ID,
1883        CHAR_CLASS_EX,
1884        CHAR_CLASS_ID,
1885        CHAR_CLASS_OP,
1886        CHAR_CLASS_ID,
1887        CHAR_CLASS_CL,
1888        CHAR_CLASS_ID,
1889        CHAR_CLASS_OP,
1890        CHAR_CLASS_ID,
1891        CHAR_CLASS_CL,
1892        CHAR_CLASS_ID,
1893        CHAR_CLASS_OP,
1894        CHAR_CLASS_CL,
1895        CHAR_CLASS_OP,
1896        CHAR_CLASS_CL,
1897        CHAR_CLASS_NS,
1898        CHAR_CLASS_AL,
1899        CHAR_CLASS_NS,
1900        CHAR_CLASS_AL,
1901        CHAR_CLASS_NS,
1902        CHAR_CLASS_AL,
1903        CHAR_CLASS_PO,
1904        CHAR_CLASS_PR,
1905        CHAR_CLASS_ID,
1906        CHAR_CLASS_PR,
1907        CHAR_CLASS_AL,
1908        CHAR_CLASS_CM,
1909        CHAR_CLASS_CB,
1910        CHAR_CLASS_AI };
1911}
1912
Popular Tags