~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
/* Copyright (C) 2000 MySQL AB
2
3
   This library is free software; you can redistribute it and/or
4
   modify it under the terms of the GNU Library General Public
5
   License as published by the Free Software Foundation; version 2
6
   of the License.
7
8
   This library is distributed in the hope that it will be useful,
9
   but WITHOUT ANY WARRANTY; without even the implied warranty of
10
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11
   Library General Public License for more details.
12
13
   You should have received a copy of the GNU Library General Public
14
   License along with this library; if not, write to the Free
15
   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
16
   MA 02111-1307, USA */
17
18
/* UTF8 according RFC 2279 */
19
/* Written by Alexander Barkov <bar@udm.net> */
20
212.5.19 by Monty Taylor
Coupla small include cleanups.
21
#include <mystrings/m_string.h>
22
#include <mystrings/m_ctype.h>
1 by brian
clean slate
23
#include <errno.h>
24
25
#ifndef EILSEQ
26
#define EILSEQ ENOENT
27
#endif
28
29
30
#define MY_UTF8MB3_GENERAL_CI MY_UTF8MB3 "_general_ci"
31
#define MY_UTF8MB3_BIN        MY_UTF8MB3 "_bin"
32
#define MY_UTF8MB4_GENERAL_CI MY_UTF8MB4 "_general_ci"
33
#define MY_UTF8MB4_BIN        MY_UTF8MB4 "_bin"
34
35
212.5.19 by Monty Taylor
Coupla small include cleanups.
36
#include <mystrings/my_uctype.h>
1 by brian
clean slate
37
38
static MY_UNICASE_INFO plane00[]={
39
  {0x0000,0x0000,0x0000},  {0x0001,0x0001,0x0001},
40
  {0x0002,0x0002,0x0002},  {0x0003,0x0003,0x0003},
41
  {0x0004,0x0004,0x0004},  {0x0005,0x0005,0x0005},
42
  {0x0006,0x0006,0x0006},  {0x0007,0x0007,0x0007},
43
  {0x0008,0x0008,0x0008},  {0x0009,0x0009,0x0009},
44
  {0x000A,0x000A,0x000A},  {0x000B,0x000B,0x000B},
45
  {0x000C,0x000C,0x000C},  {0x000D,0x000D,0x000D},
46
  {0x000E,0x000E,0x000E},  {0x000F,0x000F,0x000F},
47
  {0x0010,0x0010,0x0010},  {0x0011,0x0011,0x0011},
48
  {0x0012,0x0012,0x0012},  {0x0013,0x0013,0x0013},
49
  {0x0014,0x0014,0x0014},  {0x0015,0x0015,0x0015},
50
  {0x0016,0x0016,0x0016},  {0x0017,0x0017,0x0017},
51
  {0x0018,0x0018,0x0018},  {0x0019,0x0019,0x0019},
52
  {0x001A,0x001A,0x001A},  {0x001B,0x001B,0x001B},
53
  {0x001C,0x001C,0x001C},  {0x001D,0x001D,0x001D},
54
  {0x001E,0x001E,0x001E},  {0x001F,0x001F,0x001F},
55
  {0x0020,0x0020,0x0020},  {0x0021,0x0021,0x0021},
56
  {0x0022,0x0022,0x0022},  {0x0023,0x0023,0x0023},
57
  {0x0024,0x0024,0x0024},  {0x0025,0x0025,0x0025},
58
  {0x0026,0x0026,0x0026},  {0x0027,0x0027,0x0027},
59
  {0x0028,0x0028,0x0028},  {0x0029,0x0029,0x0029},
60
  {0x002A,0x002A,0x002A},  {0x002B,0x002B,0x002B},
61
  {0x002C,0x002C,0x002C},  {0x002D,0x002D,0x002D},
62
  {0x002E,0x002E,0x002E},  {0x002F,0x002F,0x002F},
63
  {0x0030,0x0030,0x0030},  {0x0031,0x0031,0x0031},
64
  {0x0032,0x0032,0x0032},  {0x0033,0x0033,0x0033},
65
  {0x0034,0x0034,0x0034},  {0x0035,0x0035,0x0035},
66
  {0x0036,0x0036,0x0036},  {0x0037,0x0037,0x0037},
67
  {0x0038,0x0038,0x0038},  {0x0039,0x0039,0x0039},
68
  {0x003A,0x003A,0x003A},  {0x003B,0x003B,0x003B},
69
  {0x003C,0x003C,0x003C},  {0x003D,0x003D,0x003D},
70
  {0x003E,0x003E,0x003E},  {0x003F,0x003F,0x003F},
71
  {0x0040,0x0040,0x0040},  {0x0041,0x0061,0x0041},
72
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
73
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
74
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
75
  {0x0048,0x0068,0x0048},  {0x0049,0x0069,0x0049},
76
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
77
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
78
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
79
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
80
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
81
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
82
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
83
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
84
  {0x005A,0x007A,0x005A},  {0x005B,0x005B,0x005B},
85
  {0x005C,0x005C,0x005C},  {0x005D,0x005D,0x005D},
86
  {0x005E,0x005E,0x005E},  {0x005F,0x005F,0x005F},
87
  {0x0060,0x0060,0x0060},  {0x0041,0x0061,0x0041},
88
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
89
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
90
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
91
  {0x0048,0x0068,0x0048},  {0x0049,0x0069,0x0049},
92
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
93
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
94
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
95
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
96
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
97
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
98
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
99
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
100
  {0x005A,0x007A,0x005A},  {0x007B,0x007B,0x007B},
101
  {0x007C,0x007C,0x007C},  {0x007D,0x007D,0x007D},
102
  {0x007E,0x007E,0x007E},  {0x007F,0x007F,0x007F},
103
  {0x0080,0x0080,0x0080},  {0x0081,0x0081,0x0081},
104
  {0x0082,0x0082,0x0082},  {0x0083,0x0083,0x0083},
105
  {0x0084,0x0084,0x0084},  {0x0085,0x0085,0x0085},
106
  {0x0086,0x0086,0x0086},  {0x0087,0x0087,0x0087},
107
  {0x0088,0x0088,0x0088},  {0x0089,0x0089,0x0089},
108
  {0x008A,0x008A,0x008A},  {0x008B,0x008B,0x008B},
109
  {0x008C,0x008C,0x008C},  {0x008D,0x008D,0x008D},
110
  {0x008E,0x008E,0x008E},  {0x008F,0x008F,0x008F},
111
  {0x0090,0x0090,0x0090},  {0x0091,0x0091,0x0091},
112
  {0x0092,0x0092,0x0092},  {0x0093,0x0093,0x0093},
113
  {0x0094,0x0094,0x0094},  {0x0095,0x0095,0x0095},
114
  {0x0096,0x0096,0x0096},  {0x0097,0x0097,0x0097},
115
  {0x0098,0x0098,0x0098},  {0x0099,0x0099,0x0099},
116
  {0x009A,0x009A,0x009A},  {0x009B,0x009B,0x009B},
117
  {0x009C,0x009C,0x009C},  {0x009D,0x009D,0x009D},
118
  {0x009E,0x009E,0x009E},  {0x009F,0x009F,0x009F},
119
  {0x00A0,0x00A0,0x00A0},  {0x00A1,0x00A1,0x00A1},
120
  {0x00A2,0x00A2,0x00A2},  {0x00A3,0x00A3,0x00A3},
121
  {0x00A4,0x00A4,0x00A4},  {0x00A5,0x00A5,0x00A5},
122
  {0x00A6,0x00A6,0x00A6},  {0x00A7,0x00A7,0x00A7},
123
  {0x00A8,0x00A8,0x00A8},  {0x00A9,0x00A9,0x00A9},
124
  {0x00AA,0x00AA,0x00AA},  {0x00AB,0x00AB,0x00AB},
125
  {0x00AC,0x00AC,0x00AC},  {0x00AD,0x00AD,0x00AD},
126
  {0x00AE,0x00AE,0x00AE},  {0x00AF,0x00AF,0x00AF},
127
  {0x00B0,0x00B0,0x00B0},  {0x00B1,0x00B1,0x00B1},
128
  {0x00B2,0x00B2,0x00B2},  {0x00B3,0x00B3,0x00B3},
129
  {0x00B4,0x00B4,0x00B4},  {0x039C,0x00B5,0x039C},
130
  {0x00B6,0x00B6,0x00B6},  {0x00B7,0x00B7,0x00B7},
131
  {0x00B8,0x00B8,0x00B8},  {0x00B9,0x00B9,0x00B9},
132
  {0x00BA,0x00BA,0x00BA},  {0x00BB,0x00BB,0x00BB},
133
  {0x00BC,0x00BC,0x00BC},  {0x00BD,0x00BD,0x00BD},
134
  {0x00BE,0x00BE,0x00BE},  {0x00BF,0x00BF,0x00BF},
135
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
136
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
137
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
138
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
139
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
140
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
141
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
142
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
143
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
144
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
145
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
146
  {0x00D6,0x00F6,0x004F},  {0x00D7,0x00D7,0x00D7},
147
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
148
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
149
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
150
  {0x00DE,0x00FE,0x00DE},  {0x00DF,0x00DF,0x0053},
151
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
152
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
153
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
154
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
155
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
156
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
157
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
158
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
159
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
160
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
161
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
162
  {0x00D6,0x00F6,0x004F},  {0x00F7,0x00F7,0x00F7},
163
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
164
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
165
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
166
  {0x00DE,0x00FE,0x00DE},  {0x0178,0x00FF,0x0059}
167
};
168
169
170
171
static MY_UNICASE_INFO plane01[]={
172
  {0x0100,0x0101,0x0041},  {0x0100,0x0101,0x0041},
173
  {0x0102,0x0103,0x0041},  {0x0102,0x0103,0x0041},
174
  {0x0104,0x0105,0x0041},  {0x0104,0x0105,0x0041},
175
  {0x0106,0x0107,0x0043},  {0x0106,0x0107,0x0043},
176
  {0x0108,0x0109,0x0043},  {0x0108,0x0109,0x0043},
177
  {0x010A,0x010B,0x0043},  {0x010A,0x010B,0x0043},
178
  {0x010C,0x010D,0x0043},  {0x010C,0x010D,0x0043},
179
  {0x010E,0x010F,0x0044},  {0x010E,0x010F,0x0044},
180
  {0x0110,0x0111,0x0110},  {0x0110,0x0111,0x0110},
181
  {0x0112,0x0113,0x0045},  {0x0112,0x0113,0x0045},
182
  {0x0114,0x0115,0x0045},  {0x0114,0x0115,0x0045},
183
  {0x0116,0x0117,0x0045},  {0x0116,0x0117,0x0045},
184
  {0x0118,0x0119,0x0045},  {0x0118,0x0119,0x0045},
185
  {0x011A,0x011B,0x0045},  {0x011A,0x011B,0x0045},
186
  {0x011C,0x011D,0x0047},  {0x011C,0x011D,0x0047},
187
  {0x011E,0x011F,0x0047},  {0x011E,0x011F,0x0047},
188
  {0x0120,0x0121,0x0047},  {0x0120,0x0121,0x0047},
189
  {0x0122,0x0123,0x0047},  {0x0122,0x0123,0x0047},
190
  {0x0124,0x0125,0x0048},  {0x0124,0x0125,0x0048},
191
  {0x0126,0x0127,0x0126},  {0x0126,0x0127,0x0126},
192
  {0x0128,0x0129,0x0049},  {0x0128,0x0129,0x0049},
193
  {0x012A,0x012B,0x0049},  {0x012A,0x012B,0x0049},
194
  {0x012C,0x012D,0x0049},  {0x012C,0x012D,0x0049},
195
  {0x012E,0x012F,0x0049},  {0x012E,0x012F,0x0049},
196
  {0x0130,0x0069,0x0049},  {0x0049,0x0131,0x0049},
197
  {0x0132,0x0133,0x0132},  {0x0132,0x0133,0x0132},
198
  {0x0134,0x0135,0x004A},  {0x0134,0x0135,0x004A},
199
  {0x0136,0x0137,0x004B},  {0x0136,0x0137,0x004B},
200
  {0x0138,0x0138,0x0138},  {0x0139,0x013A,0x004C},
201
  {0x0139,0x013A,0x004C},  {0x013B,0x013C,0x004C},
202
  {0x013B,0x013C,0x004C},  {0x013D,0x013E,0x004C},
203
  {0x013D,0x013E,0x004C},  {0x013F,0x0140,0x013F},
204
  {0x013F,0x0140,0x013F},  {0x0141,0x0142,0x0141},
205
  {0x0141,0x0142,0x0141},  {0x0143,0x0144,0x004E},
206
  {0x0143,0x0144,0x004E},  {0x0145,0x0146,0x004E},
207
  {0x0145,0x0146,0x004E},  {0x0147,0x0148,0x004E},
208
  {0x0147,0x0148,0x004E},  {0x0149,0x0149,0x0149},
209
  {0x014A,0x014B,0x014A},  {0x014A,0x014B,0x014A},
210
  {0x014C,0x014D,0x004F},  {0x014C,0x014D,0x004F},
211
  {0x014E,0x014F,0x004F},  {0x014E,0x014F,0x004F},
212
  {0x0150,0x0151,0x004F},  {0x0150,0x0151,0x004F},
213
  {0x0152,0x0153,0x0152},  {0x0152,0x0153,0x0152},
214
  {0x0154,0x0155,0x0052},  {0x0154,0x0155,0x0052},
215
  {0x0156,0x0157,0x0052},  {0x0156,0x0157,0x0052},
216
  {0x0158,0x0159,0x0052},  {0x0158,0x0159,0x0052},
217
  {0x015A,0x015B,0x0053},  {0x015A,0x015B,0x0053},
218
  {0x015C,0x015D,0x0053},  {0x015C,0x015D,0x0053},
219
  {0x015E,0x015F,0x0053},  {0x015E,0x015F,0x0053},
220
  {0x0160,0x0161,0x0053},  {0x0160,0x0161,0x0053},
221
  {0x0162,0x0163,0x0054},  {0x0162,0x0163,0x0054},
222
  {0x0164,0x0165,0x0054},  {0x0164,0x0165,0x0054},
223
  {0x0166,0x0167,0x0166},  {0x0166,0x0167,0x0166},
224
  {0x0168,0x0169,0x0055},  {0x0168,0x0169,0x0055},
225
  {0x016A,0x016B,0x0055},  {0x016A,0x016B,0x0055},
226
  {0x016C,0x016D,0x0055},  {0x016C,0x016D,0x0055},
227
  {0x016E,0x016F,0x0055},  {0x016E,0x016F,0x0055},
228
  {0x0170,0x0171,0x0055},  {0x0170,0x0171,0x0055},
229
  {0x0172,0x0173,0x0055},  {0x0172,0x0173,0x0055},
230
  {0x0174,0x0175,0x0057},  {0x0174,0x0175,0x0057},
231
  {0x0176,0x0177,0x0059},  {0x0176,0x0177,0x0059},
232
  {0x0178,0x00FF,0x0059},  {0x0179,0x017A,0x005A},
233
  {0x0179,0x017A,0x005A},  {0x017B,0x017C,0x005A},
234
  {0x017B,0x017C,0x005A},  {0x017D,0x017E,0x005A},
235
  {0x017D,0x017E,0x005A},  {0x0053,0x017F,0x0053},
236
  {0x0180,0x0180,0x0180},  {0x0181,0x0253,0x0181},
237
  {0x0182,0x0183,0x0182},  {0x0182,0x0183,0x0182},
238
  {0x0184,0x0185,0x0184},  {0x0184,0x0185,0x0184},
239
  {0x0186,0x0254,0x0186},  {0x0187,0x0188,0x0187},
240
  {0x0187,0x0188,0x0187},  {0x0189,0x0256,0x0189},
241
  {0x018A,0x0257,0x018A},  {0x018B,0x018C,0x018B},
242
  {0x018B,0x018C,0x018B},  {0x018D,0x018D,0x018D},
243
  {0x018E,0x01DD,0x018E},  {0x018F,0x0259,0x018F},
244
  {0x0190,0x025B,0x0190},  {0x0191,0x0192,0x0191},
245
  {0x0191,0x0192,0x0191},  {0x0193,0x0260,0x0193},
246
  {0x0194,0x0263,0x0194},  {0x01F6,0x0195,0x01F6},
247
  {0x0196,0x0269,0x0196},  {0x0197,0x0268,0x0197},
248
  {0x0198,0x0199,0x0198},  {0x0198,0x0199,0x0198},
249
  {0x019A,0x019A,0x019A},  {0x019B,0x019B,0x019B},
250
  {0x019C,0x026F,0x019C},  {0x019D,0x0272,0x019D},
251
  {0x019E,0x019E,0x019E},  {0x019F,0x0275,0x019F},
252
  {0x01A0,0x01A1,0x004F},  {0x01A0,0x01A1,0x004F},
253
  {0x01A2,0x01A3,0x01A2},  {0x01A2,0x01A3,0x01A2},
254
  {0x01A4,0x01A5,0x01A4},  {0x01A4,0x01A5,0x01A4},
255
  {0x01A6,0x0280,0x01A6},  {0x01A7,0x01A8,0x01A7},
256
  {0x01A7,0x01A8,0x01A7},  {0x01A9,0x0283,0x01A9},
257
  {0x01AA,0x01AA,0x01AA},  {0x01AB,0x01AB,0x01AB},
258
  {0x01AC,0x01AD,0x01AC},  {0x01AC,0x01AD,0x01AC},
259
  {0x01AE,0x0288,0x01AE},  {0x01AF,0x01B0,0x0055},
260
  {0x01AF,0x01B0,0x0055},  {0x01B1,0x028A,0x01B1},
261
  {0x01B2,0x028B,0x01B2},  {0x01B3,0x01B4,0x01B3},
262
  {0x01B3,0x01B4,0x01B3},  {0x01B5,0x01B6,0x01B5},
263
  {0x01B5,0x01B6,0x01B5},  {0x01B7,0x0292,0x01B7},
264
  {0x01B8,0x01B9,0x01B8},  {0x01B8,0x01B9,0x01B8},
265
  {0x01BA,0x01BA,0x01BA},  {0x01BB,0x01BB,0x01BB},
266
  {0x01BC,0x01BD,0x01BC},  {0x01BC,0x01BD,0x01BC},
267
  {0x01BE,0x01BE,0x01BE},  {0x01F7,0x01BF,0x01F7},
268
  {0x01C0,0x01C0,0x01C0},  {0x01C1,0x01C1,0x01C1},
269
  {0x01C2,0x01C2,0x01C2},  {0x01C3,0x01C3,0x01C3},
270
  {0x01C4,0x01C6,0x01C4},  {0x01C4,0x01C6,0x01C4},
271
  {0x01C4,0x01C6,0x01C4},  {0x01C7,0x01C9,0x01C7},
272
  {0x01C7,0x01C9,0x01C7},  {0x01C7,0x01C9,0x01C7},
273
  {0x01CA,0x01CC,0x01CA},  {0x01CA,0x01CC,0x01CA},
274
  {0x01CA,0x01CC,0x01CA},  {0x01CD,0x01CE,0x0041},
275
  {0x01CD,0x01CE,0x0041},  {0x01CF,0x01D0,0x0049},
276
  {0x01CF,0x01D0,0x0049},  {0x01D1,0x01D2,0x004F},
277
  {0x01D1,0x01D2,0x004F},  {0x01D3,0x01D4,0x0055},
278
  {0x01D3,0x01D4,0x0055},  {0x01D5,0x01D6,0x0055},
279
  {0x01D5,0x01D6,0x0055},  {0x01D7,0x01D8,0x0055},
280
  {0x01D7,0x01D8,0x0055},  {0x01D9,0x01DA,0x0055},
281
  {0x01D9,0x01DA,0x0055},  {0x01DB,0x01DC,0x0055},
282
  {0x01DB,0x01DC,0x0055},  {0x018E,0x01DD,0x018E},
283
  {0x01DE,0x01DF,0x0041},  {0x01DE,0x01DF,0x0041},
284
  {0x01E0,0x01E1,0x0041},  {0x01E0,0x01E1,0x0041},
285
  {0x01E2,0x01E3,0x00C6},  {0x01E2,0x01E3,0x00C6},
286
  {0x01E4,0x01E5,0x01E4},  {0x01E4,0x01E5,0x01E4},
287
  {0x01E6,0x01E7,0x0047},  {0x01E6,0x01E7,0x0047},
288
  {0x01E8,0x01E9,0x004B},  {0x01E8,0x01E9,0x004B},
289
  {0x01EA,0x01EB,0x004F},  {0x01EA,0x01EB,0x004F},
290
  {0x01EC,0x01ED,0x004F},  {0x01EC,0x01ED,0x004F},
291
  {0x01EE,0x01EF,0x01B7},  {0x01EE,0x01EF,0x01B7},
292
  {0x01F0,0x01F0,0x004A},  {0x01F1,0x01F3,0x01F1},
293
  {0x01F1,0x01F3,0x01F1},  {0x01F1,0x01F3,0x01F1},
294
  {0x01F4,0x01F5,0x0047},  {0x01F4,0x01F5,0x0047},
295
  {0x01F6,0x0195,0x01F6},  {0x01F7,0x01BF,0x01F7},
296
  {0x01F8,0x01F9,0x004E},  {0x01F8,0x01F9,0x004E},
297
  {0x01FA,0x01FB,0x0041},  {0x01FA,0x01FB,0x0041},
298
  {0x01FC,0x01FD,0x00C6},  {0x01FC,0x01FD,0x00C6},
299
  {0x01FE,0x01FF,0x00D8},  {0x01FE,0x01FF,0x00D8}
300
};
301
302
static MY_UNICASE_INFO plane02[]={
303
  {0x0200,0x0201,0x0041},  {0x0200,0x0201,0x0041},
304
  {0x0202,0x0203,0x0041},  {0x0202,0x0203,0x0041},
305
  {0x0204,0x0205,0x0045},  {0x0204,0x0205,0x0045},
306
  {0x0206,0x0207,0x0045},  {0x0206,0x0207,0x0045},
307
  {0x0208,0x0209,0x0049},  {0x0208,0x0209,0x0049},
308
  {0x020A,0x020B,0x0049},  {0x020A,0x020B,0x0049},
309
  {0x020C,0x020D,0x004F},  {0x020C,0x020D,0x004F},
310
  {0x020E,0x020F,0x004F},  {0x020E,0x020F,0x004F},
311
  {0x0210,0x0211,0x0052},  {0x0210,0x0211,0x0052},
312
  {0x0212,0x0213,0x0052},  {0x0212,0x0213,0x0052},
313
  {0x0214,0x0215,0x0055},  {0x0214,0x0215,0x0055},
314
  {0x0216,0x0217,0x0055},  {0x0216,0x0217,0x0055},
315
  {0x0218,0x0219,0x0053},  {0x0218,0x0219,0x0053},
316
  {0x021A,0x021B,0x0054},  {0x021A,0x021B,0x0054},
317
  {0x021C,0x021D,0x021C},  {0x021C,0x021D,0x021C},
318
  {0x021E,0x021F,0x0048},  {0x021E,0x021F,0x0048},
319
  {0x0220,0x0220,0x0220},  {0x0221,0x0221,0x0221},
320
  {0x0222,0x0223,0x0222},  {0x0222,0x0223,0x0222},
321
  {0x0224,0x0225,0x0224},  {0x0224,0x0225,0x0224},
322
  {0x0226,0x0227,0x0041},  {0x0226,0x0227,0x0041},
323
  {0x0228,0x0229,0x0045},  {0x0228,0x0229,0x0045},
324
  {0x022A,0x022B,0x004F},  {0x022A,0x022B,0x004F},
325
  {0x022C,0x022D,0x004F},  {0x022C,0x022D,0x004F},
326
  {0x022E,0x022F,0x004F},  {0x022E,0x022F,0x004F},
327
  {0x0230,0x0231,0x004F},  {0x0230,0x0231,0x004F},
328
  {0x0232,0x0233,0x0059},  {0x0232,0x0233,0x0059},
329
  {0x0234,0x0234,0x0234},  {0x0235,0x0235,0x0235},
330
  {0x0236,0x0236,0x0236},  {0x0237,0x0237,0x0237},
331
  {0x0238,0x0238,0x0238},  {0x0239,0x0239,0x0239},
332
  {0x023A,0x023A,0x023A},  {0x023B,0x023B,0x023B},
333
  {0x023C,0x023C,0x023C},  {0x023D,0x023D,0x023D},
334
  {0x023E,0x023E,0x023E},  {0x023F,0x023F,0x023F},
335
  {0x0240,0x0240,0x0240},  {0x0241,0x0241,0x0241},
336
  {0x0242,0x0242,0x0242},  {0x0243,0x0243,0x0243},
337
  {0x0244,0x0244,0x0244},  {0x0245,0x0245,0x0245},
338
  {0x0246,0x0246,0x0246},  {0x0247,0x0247,0x0247},
339
  {0x0248,0x0248,0x0248},  {0x0249,0x0249,0x0249},
340
  {0x024A,0x024A,0x024A},  {0x024B,0x024B,0x024B},
341
  {0x024C,0x024C,0x024C},  {0x024D,0x024D,0x024D},
342
  {0x024E,0x024E,0x024E},  {0x024F,0x024F,0x024F},
343
  {0x0250,0x0250,0x0250},  {0x0251,0x0251,0x0251},
344
  {0x0252,0x0252,0x0252},  {0x0181,0x0253,0x0181},
345
  {0x0186,0x0254,0x0186},  {0x0255,0x0255,0x0255},
346
  {0x0189,0x0256,0x0189},  {0x018A,0x0257,0x018A},
347
  {0x0258,0x0258,0x0258},  {0x018F,0x0259,0x018F},
348
  {0x025A,0x025A,0x025A},  {0x0190,0x025B,0x0190},
349
  {0x025C,0x025C,0x025C},  {0x025D,0x025D,0x025D},
350
  {0x025E,0x025E,0x025E},  {0x025F,0x025F,0x025F},
351
  {0x0193,0x0260,0x0193},  {0x0261,0x0261,0x0261},
352
  {0x0262,0x0262,0x0262},  {0x0194,0x0263,0x0194},
353
  {0x0264,0x0264,0x0264},  {0x0265,0x0265,0x0265},
354
  {0x0266,0x0266,0x0266},  {0x0267,0x0267,0x0267},
355
  {0x0197,0x0268,0x0197},  {0x0196,0x0269,0x0196},
356
  {0x026A,0x026A,0x026A},  {0x026B,0x026B,0x026B},
357
  {0x026C,0x026C,0x026C},  {0x026D,0x026D,0x026D},
358
  {0x026E,0x026E,0x026E},  {0x019C,0x026F,0x019C},
359
  {0x0270,0x0270,0x0270},  {0x0271,0x0271,0x0271},
360
  {0x019D,0x0272,0x019D},  {0x0273,0x0273,0x0273},
361
  {0x0274,0x0274,0x0274},  {0x019F,0x0275,0x019F},
362
  {0x0276,0x0276,0x0276},  {0x0277,0x0277,0x0277},
363
  {0x0278,0x0278,0x0278},  {0x0279,0x0279,0x0279},
364
  {0x027A,0x027A,0x027A},  {0x027B,0x027B,0x027B},
365
  {0x027C,0x027C,0x027C},  {0x027D,0x027D,0x027D},
366
  {0x027E,0x027E,0x027E},  {0x027F,0x027F,0x027F},
367
  {0x01A6,0x0280,0x01A6},  {0x0281,0x0281,0x0281},
368
  {0x0282,0x0282,0x0282},  {0x01A9,0x0283,0x01A9},
369
  {0x0284,0x0284,0x0284},  {0x0285,0x0285,0x0285},
370
  {0x0286,0x0286,0x0286},  {0x0287,0x0287,0x0287},
371
  {0x01AE,0x0288,0x01AE},  {0x0289,0x0289,0x0289},
372
  {0x01B1,0x028A,0x01B1},  {0x01B2,0x028B,0x01B2},
373
  {0x028C,0x028C,0x028C},  {0x028D,0x028D,0x028D},
374
  {0x028E,0x028E,0x028E},  {0x028F,0x028F,0x028F},
375
  {0x0290,0x0290,0x0290},  {0x0291,0x0291,0x0291},
376
  {0x01B7,0x0292,0x01B7},  {0x0293,0x0293,0x0293},
377
  {0x0294,0x0294,0x0294},  {0x0295,0x0295,0x0295},
378
  {0x0296,0x0296,0x0296},  {0x0297,0x0297,0x0297},
379
  {0x0298,0x0298,0x0298},  {0x0299,0x0299,0x0299},
380
  {0x029A,0x029A,0x029A},  {0x029B,0x029B,0x029B},
381
  {0x029C,0x029C,0x029C},  {0x029D,0x029D,0x029D},
382
  {0x029E,0x029E,0x029E},  {0x029F,0x029F,0x029F},
383
  {0x02A0,0x02A0,0x02A0},  {0x02A1,0x02A1,0x02A1},
384
  {0x02A2,0x02A2,0x02A2},  {0x02A3,0x02A3,0x02A3},
385
  {0x02A4,0x02A4,0x02A4},  {0x02A5,0x02A5,0x02A5},
386
  {0x02A6,0x02A6,0x02A6},  {0x02A7,0x02A7,0x02A7},
387
  {0x02A8,0x02A8,0x02A8},  {0x02A9,0x02A9,0x02A9},
388
  {0x02AA,0x02AA,0x02AA},  {0x02AB,0x02AB,0x02AB},
389
  {0x02AC,0x02AC,0x02AC},  {0x02AD,0x02AD,0x02AD},
390
  {0x02AE,0x02AE,0x02AE},  {0x02AF,0x02AF,0x02AF},
391
  {0x02B0,0x02B0,0x02B0},  {0x02B1,0x02B1,0x02B1},
392
  {0x02B2,0x02B2,0x02B2},  {0x02B3,0x02B3,0x02B3},
393
  {0x02B4,0x02B4,0x02B4},  {0x02B5,0x02B5,0x02B5},
394
  {0x02B6,0x02B6,0x02B6},  {0x02B7,0x02B7,0x02B7},
395
  {0x02B8,0x02B8,0x02B8},  {0x02B9,0x02B9,0x02B9},
396
  {0x02BA,0x02BA,0x02BA},  {0x02BB,0x02BB,0x02BB},
397
  {0x02BC,0x02BC,0x02BC},  {0x02BD,0x02BD,0x02BD},
398
  {0x02BE,0x02BE,0x02BE},  {0x02BF,0x02BF,0x02BF},
399
  {0x02C0,0x02C0,0x02C0},  {0x02C1,0x02C1,0x02C1},
400
  {0x02C2,0x02C2,0x02C2},  {0x02C3,0x02C3,0x02C3},
401
  {0x02C4,0x02C4,0x02C4},  {0x02C5,0x02C5,0x02C5},
402
  {0x02C6,0x02C6,0x02C6},  {0x02C7,0x02C7,0x02C7},
403
  {0x02C8,0x02C8,0x02C8},  {0x02C9,0x02C9,0x02C9},
404
  {0x02CA,0x02CA,0x02CA},  {0x02CB,0x02CB,0x02CB},
405
  {0x02CC,0x02CC,0x02CC},  {0x02CD,0x02CD,0x02CD},
406
  {0x02CE,0x02CE,0x02CE},  {0x02CF,0x02CF,0x02CF},
407
  {0x02D0,0x02D0,0x02D0},  {0x02D1,0x02D1,0x02D1},
408
  {0x02D2,0x02D2,0x02D2},  {0x02D3,0x02D3,0x02D3},
409
  {0x02D4,0x02D4,0x02D4},  {0x02D5,0x02D5,0x02D5},
410
  {0x02D6,0x02D6,0x02D6},  {0x02D7,0x02D7,0x02D7},
411
  {0x02D8,0x02D8,0x02D8},  {0x02D9,0x02D9,0x02D9},
412
  {0x02DA,0x02DA,0x02DA},  {0x02DB,0x02DB,0x02DB},
413
  {0x02DC,0x02DC,0x02DC},  {0x02DD,0x02DD,0x02DD},
414
  {0x02DE,0x02DE,0x02DE},  {0x02DF,0x02DF,0x02DF},
415
  {0x02E0,0x02E0,0x02E0},  {0x02E1,0x02E1,0x02E1},
416
  {0x02E2,0x02E2,0x02E2},  {0x02E3,0x02E3,0x02E3},
417
  {0x02E4,0x02E4,0x02E4},  {0x02E5,0x02E5,0x02E5},
418
  {0x02E6,0x02E6,0x02E6},  {0x02E7,0x02E7,0x02E7},
419
  {0x02E8,0x02E8,0x02E8},  {0x02E9,0x02E9,0x02E9},
420
  {0x02EA,0x02EA,0x02EA},  {0x02EB,0x02EB,0x02EB},
421
  {0x02EC,0x02EC,0x02EC},  {0x02ED,0x02ED,0x02ED},
422
  {0x02EE,0x02EE,0x02EE},  {0x02EF,0x02EF,0x02EF},
423
  {0x02F0,0x02F0,0x02F0},  {0x02F1,0x02F1,0x02F1},
424
  {0x02F2,0x02F2,0x02F2},  {0x02F3,0x02F3,0x02F3},
425
  {0x02F4,0x02F4,0x02F4},  {0x02F5,0x02F5,0x02F5},
426
  {0x02F6,0x02F6,0x02F6},  {0x02F7,0x02F7,0x02F7},
427
  {0x02F8,0x02F8,0x02F8},  {0x02F9,0x02F9,0x02F9},
428
  {0x02FA,0x02FA,0x02FA},  {0x02FB,0x02FB,0x02FB},
429
  {0x02FC,0x02FC,0x02FC},  {0x02FD,0x02FD,0x02FD},
430
  {0x02FE,0x02FE,0x02FE},  {0x02FF,0x02FF,0x02FF}
431
};
432
433
static MY_UNICASE_INFO plane03[]={
434
  {0x0300,0x0300,0x0300},  {0x0301,0x0301,0x0301},
435
  {0x0302,0x0302,0x0302},  {0x0303,0x0303,0x0303},
436
  {0x0304,0x0304,0x0304},  {0x0305,0x0305,0x0305},
437
  {0x0306,0x0306,0x0306},  {0x0307,0x0307,0x0307},
438
  {0x0308,0x0308,0x0308},  {0x0309,0x0309,0x0309},
439
  {0x030A,0x030A,0x030A},  {0x030B,0x030B,0x030B},
440
  {0x030C,0x030C,0x030C},  {0x030D,0x030D,0x030D},
441
  {0x030E,0x030E,0x030E},  {0x030F,0x030F,0x030F},
442
  {0x0310,0x0310,0x0310},  {0x0311,0x0311,0x0311},
443
  {0x0312,0x0312,0x0312},  {0x0313,0x0313,0x0313},
444
  {0x0314,0x0314,0x0314},  {0x0315,0x0315,0x0315},
445
  {0x0316,0x0316,0x0316},  {0x0317,0x0317,0x0317},
446
  {0x0318,0x0318,0x0318},  {0x0319,0x0319,0x0319},
447
  {0x031A,0x031A,0x031A},  {0x031B,0x031B,0x031B},
448
  {0x031C,0x031C,0x031C},  {0x031D,0x031D,0x031D},
449
  {0x031E,0x031E,0x031E},  {0x031F,0x031F,0x031F},
450
  {0x0320,0x0320,0x0320},  {0x0321,0x0321,0x0321},
451
  {0x0322,0x0322,0x0322},  {0x0323,0x0323,0x0323},
452
  {0x0324,0x0324,0x0324},  {0x0325,0x0325,0x0325},
453
  {0x0326,0x0326,0x0326},  {0x0327,0x0327,0x0327},
454
  {0x0328,0x0328,0x0328},  {0x0329,0x0329,0x0329},
455
  {0x032A,0x032A,0x032A},  {0x032B,0x032B,0x032B},
456
  {0x032C,0x032C,0x032C},  {0x032D,0x032D,0x032D},
457
  {0x032E,0x032E,0x032E},  {0x032F,0x032F,0x032F},
458
  {0x0330,0x0330,0x0330},  {0x0331,0x0331,0x0331},
459
  {0x0332,0x0332,0x0332},  {0x0333,0x0333,0x0333},
460
  {0x0334,0x0334,0x0334},  {0x0335,0x0335,0x0335},
461
  {0x0336,0x0336,0x0336},  {0x0337,0x0337,0x0337},
462
  {0x0338,0x0338,0x0338},  {0x0339,0x0339,0x0339},
463
  {0x033A,0x033A,0x033A},  {0x033B,0x033B,0x033B},
464
  {0x033C,0x033C,0x033C},  {0x033D,0x033D,0x033D},
465
  {0x033E,0x033E,0x033E},  {0x033F,0x033F,0x033F},
466
  {0x0340,0x0340,0x0340},  {0x0341,0x0341,0x0341},
467
  {0x0342,0x0342,0x0342},  {0x0343,0x0343,0x0343},
468
  {0x0344,0x0344,0x0344},  {0x0399,0x0345,0x0399},
469
  {0x0346,0x0346,0x0346},  {0x0347,0x0347,0x0347},
470
  {0x0348,0x0348,0x0348},  {0x0349,0x0349,0x0349},
471
  {0x034A,0x034A,0x034A},  {0x034B,0x034B,0x034B},
472
  {0x034C,0x034C,0x034C},  {0x034D,0x034D,0x034D},
473
  {0x034E,0x034E,0x034E},  {0x034F,0x034F,0x034F},
474
  {0x0350,0x0350,0x0350},  {0x0351,0x0351,0x0351},
475
  {0x0352,0x0352,0x0352},  {0x0353,0x0353,0x0353},
476
  {0x0354,0x0354,0x0354},  {0x0355,0x0355,0x0355},
477
  {0x0356,0x0356,0x0356},  {0x0357,0x0357,0x0357},
478
  {0x0358,0x0358,0x0358},  {0x0359,0x0359,0x0359},
479
  {0x035A,0x035A,0x035A},  {0x035B,0x035B,0x035B},
480
  {0x035C,0x035C,0x035C},  {0x035D,0x035D,0x035D},
481
  {0x035E,0x035E,0x035E},  {0x035F,0x035F,0x035F},
482
  {0x0360,0x0360,0x0360},  {0x0361,0x0361,0x0361},
483
  {0x0362,0x0362,0x0362},  {0x0363,0x0363,0x0363},
484
  {0x0364,0x0364,0x0364},  {0x0365,0x0365,0x0365},
485
  {0x0366,0x0366,0x0366},  {0x0367,0x0367,0x0367},
486
  {0x0368,0x0368,0x0368},  {0x0369,0x0369,0x0369},
487
  {0x036A,0x036A,0x036A},  {0x036B,0x036B,0x036B},
488
  {0x036C,0x036C,0x036C},  {0x036D,0x036D,0x036D},
489
  {0x036E,0x036E,0x036E},  {0x036F,0x036F,0x036F},
490
  {0x0370,0x0370,0x0370},  {0x0371,0x0371,0x0371},
491
  {0x0372,0x0372,0x0372},  {0x0373,0x0373,0x0373},
492
  {0x0374,0x0374,0x0374},  {0x0375,0x0375,0x0375},
493
  {0x0376,0x0376,0x0376},  {0x0377,0x0377,0x0377},
494
  {0x0378,0x0378,0x0378},  {0x0379,0x0379,0x0379},
495
  {0x037A,0x037A,0x037A},  {0x037B,0x037B,0x037B},
496
  {0x037C,0x037C,0x037C},  {0x037D,0x037D,0x037D},
497
  {0x037E,0x037E,0x037E},  {0x037F,0x037F,0x037F},
498
  {0x0380,0x0380,0x0380},  {0x0381,0x0381,0x0381},
499
  {0x0382,0x0382,0x0382},  {0x0383,0x0383,0x0383},
500
  {0x0384,0x0384,0x0384},  {0x0385,0x0385,0x0385},
501
  {0x0386,0x03AC,0x0391},  {0x0387,0x0387,0x0387},
502
  {0x0388,0x03AD,0x0395},  {0x0389,0x03AE,0x0397},
503
  {0x038A,0x03AF,0x0399},  {0x038B,0x038B,0x038B},
504
  {0x038C,0x03CC,0x039F},  {0x038D,0x038D,0x038D},
505
  {0x038E,0x03CD,0x03A5},  {0x038F,0x03CE,0x03A9},
506
  {0x0390,0x0390,0x0399},  {0x0391,0x03B1,0x0391},
507
  {0x0392,0x03B2,0x0392},  {0x0393,0x03B3,0x0393},
508
  {0x0394,0x03B4,0x0394},  {0x0395,0x03B5,0x0395},
509
  {0x0396,0x03B6,0x0396},  {0x0397,0x03B7,0x0397},
510
  {0x0398,0x03B8,0x0398},  {0x0399,0x03B9,0x0399},
511
  {0x039A,0x03BA,0x039A},  {0x039B,0x03BB,0x039B},
512
  {0x039C,0x03BC,0x039C},  {0x039D,0x03BD,0x039D},
513
  {0x039E,0x03BE,0x039E},  {0x039F,0x03BF,0x039F},
514
  {0x03A0,0x03C0,0x03A0},  {0x03A1,0x03C1,0x03A1},
515
  {0x03A2,0x03A2,0x03A2},  {0x03A3,0x03C3,0x03A3},
516
  {0x03A4,0x03C4,0x03A4},  {0x03A5,0x03C5,0x03A5},
517
  {0x03A6,0x03C6,0x03A6},  {0x03A7,0x03C7,0x03A7},
518
  {0x03A8,0x03C8,0x03A8},  {0x03A9,0x03C9,0x03A9},
519
  {0x03AA,0x03CA,0x0399},  {0x03AB,0x03CB,0x03A5},
520
  {0x0386,0x03AC,0x0391},  {0x0388,0x03AD,0x0395},
521
  {0x0389,0x03AE,0x0397},  {0x038A,0x03AF,0x0399},
522
  {0x03B0,0x03B0,0x03A5},  {0x0391,0x03B1,0x0391},
523
  {0x0392,0x03B2,0x0392},  {0x0393,0x03B3,0x0393},
524
  {0x0394,0x03B4,0x0394},  {0x0395,0x03B5,0x0395},
525
  {0x0396,0x03B6,0x0396},  {0x0397,0x03B7,0x0397},
526
  {0x0398,0x03B8,0x0398},  {0x0399,0x03B9,0x0399},
527
  {0x039A,0x03BA,0x039A},  {0x039B,0x03BB,0x039B},
528
  {0x039C,0x03BC,0x039C},  {0x039D,0x03BD,0x039D},
529
  {0x039E,0x03BE,0x039E},  {0x039F,0x03BF,0x039F},
530
  {0x03A0,0x03C0,0x03A0},  {0x03A1,0x03C1,0x03A1},
531
  {0x03A3,0x03C2,0x03A3},  {0x03A3,0x03C3,0x03A3},
532
  {0x03A4,0x03C4,0x03A4},  {0x03A5,0x03C5,0x03A5},
533
  {0x03A6,0x03C6,0x03A6},  {0x03A7,0x03C7,0x03A7},
534
  {0x03A8,0x03C8,0x03A8},  {0x03A9,0x03C9,0x03A9},
535
  {0x03AA,0x03CA,0x0399},  {0x03AB,0x03CB,0x03A5},
536
  {0x038C,0x03CC,0x039F},  {0x038E,0x03CD,0x03A5},
537
  {0x038F,0x03CE,0x03A9},  {0x03CF,0x03CF,0x03CF},
538
  {0x0392,0x03D0,0x0392},  {0x0398,0x03D1,0x0398},
539
  {0x03D2,0x03D2,0x03D2},  {0x03D3,0x03D3,0x03D2},
540
  {0x03D4,0x03D4,0x03D2},  {0x03A6,0x03D5,0x03A6},
541
  {0x03A0,0x03D6,0x03A0},  {0x03D7,0x03D7,0x03D7},
542
  {0x03D8,0x03D8,0x03D8},  {0x03D9,0x03D9,0x03D9},
543
  {0x03DA,0x03DB,0x03DA},  {0x03DA,0x03DB,0x03DA},
544
  {0x03DC,0x03DD,0x03DC},  {0x03DC,0x03DD,0x03DC},
545
  {0x03DE,0x03DF,0x03DE},  {0x03DE,0x03DF,0x03DE},
546
  {0x03E0,0x03E1,0x03E0},  {0x03E0,0x03E1,0x03E0},
547
  {0x03E2,0x03E3,0x03E2},  {0x03E2,0x03E3,0x03E2},
548
  {0x03E4,0x03E5,0x03E4},  {0x03E4,0x03E5,0x03E4},
549
  {0x03E6,0x03E7,0x03E6},  {0x03E6,0x03E7,0x03E6},
550
  {0x03E8,0x03E9,0x03E8},  {0x03E8,0x03E9,0x03E8},
551
  {0x03EA,0x03EB,0x03EA},  {0x03EA,0x03EB,0x03EA},
552
  {0x03EC,0x03ED,0x03EC},  {0x03EC,0x03ED,0x03EC},
553
  {0x03EE,0x03EF,0x03EE},  {0x03EE,0x03EF,0x03EE},
554
  {0x039A,0x03F0,0x039A},  {0x03A1,0x03F1,0x03A1},
555
  {0x03A3,0x03F2,0x03A3},  {0x03F3,0x03F3,0x03F3},
556
  {0x03F4,0x03F4,0x03F4},  {0x03F5,0x03F5,0x03F5},
557
  {0x03F6,0x03F6,0x03F6},  {0x03F7,0x03F7,0x03F7},
558
  {0x03F8,0x03F8,0x03F8},  {0x03F9,0x03F9,0x03F9},
559
  {0x03FA,0x03FA,0x03FA},  {0x03FB,0x03FB,0x03FB},
560
  {0x03FC,0x03FC,0x03FC},  {0x03FD,0x03FD,0x03FD},
561
  {0x03FE,0x03FE,0x03FE},  {0x03FF,0x03FF,0x03FF}
562
};
563
564
static MY_UNICASE_INFO plane04[]={
565
  {0x0400,0x0450,0x0415},  {0x0401,0x0451,0x0415},
566
  {0x0402,0x0452,0x0402},  {0x0403,0x0453,0x0413},
567
  {0x0404,0x0454,0x0404},  {0x0405,0x0455,0x0405},
568
  {0x0406,0x0456,0x0406},  {0x0407,0x0457,0x0406},
569
  {0x0408,0x0458,0x0408},  {0x0409,0x0459,0x0409},
570
  {0x040A,0x045A,0x040A},  {0x040B,0x045B,0x040B},
571
  {0x040C,0x045C,0x041A},  {0x040D,0x045D,0x0418},
572
  {0x040E,0x045E,0x0423},  {0x040F,0x045F,0x040F},
573
  {0x0410,0x0430,0x0410},  {0x0411,0x0431,0x0411},
574
  {0x0412,0x0432,0x0412},  {0x0413,0x0433,0x0413},
575
  {0x0414,0x0434,0x0414},  {0x0415,0x0435,0x0415},
576
  {0x0416,0x0436,0x0416},  {0x0417,0x0437,0x0417},
577
  {0x0418,0x0438,0x0418},  {0x0419,0x0439,0x0419},
578
  {0x041A,0x043A,0x041A},  {0x041B,0x043B,0x041B},
579
  {0x041C,0x043C,0x041C},  {0x041D,0x043D,0x041D},
580
  {0x041E,0x043E,0x041E},  {0x041F,0x043F,0x041F},
581
  {0x0420,0x0440,0x0420},  {0x0421,0x0441,0x0421},
582
  {0x0422,0x0442,0x0422},  {0x0423,0x0443,0x0423},
583
  {0x0424,0x0444,0x0424},  {0x0425,0x0445,0x0425},
584
  {0x0426,0x0446,0x0426},  {0x0427,0x0447,0x0427},
585
  {0x0428,0x0448,0x0428},  {0x0429,0x0449,0x0429},
586
  {0x042A,0x044A,0x042A},  {0x042B,0x044B,0x042B},
587
  {0x042C,0x044C,0x042C},  {0x042D,0x044D,0x042D},
588
  {0x042E,0x044E,0x042E},  {0x042F,0x044F,0x042F},
589
  {0x0410,0x0430,0x0410},  {0x0411,0x0431,0x0411},
590
  {0x0412,0x0432,0x0412},  {0x0413,0x0433,0x0413},
591
  {0x0414,0x0434,0x0414},  {0x0415,0x0435,0x0415},
592
  {0x0416,0x0436,0x0416},  {0x0417,0x0437,0x0417},
593
  {0x0418,0x0438,0x0418},  {0x0419,0x0439,0x0419},
594
  {0x041A,0x043A,0x041A},  {0x041B,0x043B,0x041B},
595
  {0x041C,0x043C,0x041C},  {0x041D,0x043D,0x041D},
596
  {0x041E,0x043E,0x041E},  {0x041F,0x043F,0x041F},
597
  {0x0420,0x0440,0x0420},  {0x0421,0x0441,0x0421},
598
  {0x0422,0x0442,0x0422},  {0x0423,0x0443,0x0423},
599
  {0x0424,0x0444,0x0424},  {0x0425,0x0445,0x0425},
600
  {0x0426,0x0446,0x0426},  {0x0427,0x0447,0x0427},
601
  {0x0428,0x0448,0x0428},  {0x0429,0x0449,0x0429},
602
  {0x042A,0x044A,0x042A},  {0x042B,0x044B,0x042B},
603
  {0x042C,0x044C,0x042C},  {0x042D,0x044D,0x042D},
604
  {0x042E,0x044E,0x042E},  {0x042F,0x044F,0x042F},
605
  {0x0400,0x0450,0x0415},  {0x0401,0x0451,0x0415},
606
  {0x0402,0x0452,0x0402},  {0x0403,0x0453,0x0413},
607
  {0x0404,0x0454,0x0404},  {0x0405,0x0455,0x0405},
608
  {0x0406,0x0456,0x0406},  {0x0407,0x0457,0x0406},
609
  {0x0408,0x0458,0x0408},  {0x0409,0x0459,0x0409},
610
  {0x040A,0x045A,0x040A},  {0x040B,0x045B,0x040B},
611
  {0x040C,0x045C,0x041A},  {0x040D,0x045D,0x0418},
612
  {0x040E,0x045E,0x0423},  {0x040F,0x045F,0x040F},
613
  {0x0460,0x0461,0x0460},  {0x0460,0x0461,0x0460},
614
  {0x0462,0x0463,0x0462},  {0x0462,0x0463,0x0462},
615
  {0x0464,0x0465,0x0464},  {0x0464,0x0465,0x0464},
616
  {0x0466,0x0467,0x0466},  {0x0466,0x0467,0x0466},
617
  {0x0468,0x0469,0x0468},  {0x0468,0x0469,0x0468},
618
  {0x046A,0x046B,0x046A},  {0x046A,0x046B,0x046A},
619
  {0x046C,0x046D,0x046C},  {0x046C,0x046D,0x046C},
620
  {0x046E,0x046F,0x046E},  {0x046E,0x046F,0x046E},
621
  {0x0470,0x0471,0x0470},  {0x0470,0x0471,0x0470},
622
  {0x0472,0x0473,0x0472},  {0x0472,0x0473,0x0472},
623
  {0x0474,0x0475,0x0474},  {0x0474,0x0475,0x0474},
624
  {0x0476,0x0477,0x0474},  {0x0476,0x0477,0x0474},
625
  {0x0478,0x0479,0x0478},  {0x0478,0x0479,0x0478},
626
  {0x047A,0x047B,0x047A},  {0x047A,0x047B,0x047A},
627
  {0x047C,0x047D,0x047C},  {0x047C,0x047D,0x047C},
628
  {0x047E,0x047F,0x047E},  {0x047E,0x047F,0x047E},
629
  {0x0480,0x0481,0x0480},  {0x0480,0x0481,0x0480},
630
  {0x0482,0x0482,0x0482},  {0x0483,0x0483,0x0483},
631
  {0x0484,0x0484,0x0484},  {0x0485,0x0485,0x0485},
632
  {0x0486,0x0486,0x0486},  {0x0487,0x0487,0x0487},
633
  {0x0488,0x0488,0x0488},  {0x0489,0x0489,0x0489},
634
  {0x048A,0x048A,0x048A},  {0x048B,0x048B,0x048B},
635
  {0x048C,0x048D,0x048C},  {0x048C,0x048D,0x048C},
636
  {0x048E,0x048F,0x048E},  {0x048E,0x048F,0x048E},
637
  {0x0490,0x0491,0x0490},  {0x0490,0x0491,0x0490},
638
  {0x0492,0x0493,0x0492},  {0x0492,0x0493,0x0492},
639
  {0x0494,0x0495,0x0494},  {0x0494,0x0495,0x0494},
640
  {0x0496,0x0497,0x0496},  {0x0496,0x0497,0x0496},
641
  {0x0498,0x0499,0x0498},  {0x0498,0x0499,0x0498},
642
  {0x049A,0x049B,0x049A},  {0x049A,0x049B,0x049A},
643
  {0x049C,0x049D,0x049C},  {0x049C,0x049D,0x049C},
644
  {0x049E,0x049F,0x049E},  {0x049E,0x049F,0x049E},
645
  {0x04A0,0x04A1,0x04A0},  {0x04A0,0x04A1,0x04A0},
646
  {0x04A2,0x04A3,0x04A2},  {0x04A2,0x04A3,0x04A2},
647
  {0x04A4,0x04A5,0x04A4},  {0x04A4,0x04A5,0x04A4},
648
  {0x04A6,0x04A7,0x04A6},  {0x04A6,0x04A7,0x04A6},
649
  {0x04A8,0x04A9,0x04A8},  {0x04A8,0x04A9,0x04A8},
650
  {0x04AA,0x04AB,0x04AA},  {0x04AA,0x04AB,0x04AA},
651
  {0x04AC,0x04AD,0x04AC},  {0x04AC,0x04AD,0x04AC},
652
  {0x04AE,0x04AF,0x04AE},  {0x04AE,0x04AF,0x04AE},
653
  {0x04B0,0x04B1,0x04B0},  {0x04B0,0x04B1,0x04B0},
654
  {0x04B2,0x04B3,0x04B2},  {0x04B2,0x04B3,0x04B2},
655
  {0x04B4,0x04B5,0x04B4},  {0x04B4,0x04B5,0x04B4},
656
  {0x04B6,0x04B7,0x04B6},  {0x04B6,0x04B7,0x04B6},
657
  {0x04B8,0x04B9,0x04B8},  {0x04B8,0x04B9,0x04B8},
658
  {0x04BA,0x04BB,0x04BA},  {0x04BA,0x04BB,0x04BA},
659
  {0x04BC,0x04BD,0x04BC},  {0x04BC,0x04BD,0x04BC},
660
  {0x04BE,0x04BF,0x04BE},  {0x04BE,0x04BF,0x04BE},
661
  {0x04C0,0x04C0,0x04C0},  {0x04C1,0x04C2,0x0416},
662
  {0x04C1,0x04C2,0x0416},  {0x04C3,0x04C4,0x04C3},
663
  {0x04C3,0x04C4,0x04C3},  {0x04C5,0x04C5,0x04C5},
664
  {0x04C6,0x04C6,0x04C6},  {0x04C7,0x04C8,0x04C7},
665
  {0x04C7,0x04C8,0x04C7},  {0x04C9,0x04C9,0x04C9},
666
  {0x04CA,0x04CA,0x04CA},  {0x04CB,0x04CC,0x04CB},
667
  {0x04CB,0x04CC,0x04CB},  {0x04CD,0x04CD,0x04CD},
668
  {0x04CE,0x04CE,0x04CE},  {0x04CF,0x04CF,0x04CF},
669
  {0x04D0,0x04D1,0x0410},  {0x04D0,0x04D1,0x0410},
670
  {0x04D2,0x04D3,0x0410},  {0x04D2,0x04D3,0x0410},
671
  {0x04D4,0x04D5,0x04D4},  {0x04D4,0x04D5,0x04D4},
672
  {0x04D6,0x04D7,0x0415},  {0x04D6,0x04D7,0x0415},
673
  {0x04D8,0x04D9,0x04D8},  {0x04D8,0x04D9,0x04D8},
674
  {0x04DA,0x04DB,0x04D8},  {0x04DA,0x04DB,0x04D8},
675
  {0x04DC,0x04DD,0x0416},  {0x04DC,0x04DD,0x0416},
676
  {0x04DE,0x04DF,0x0417},  {0x04DE,0x04DF,0x0417},
677
  {0x04E0,0x04E1,0x04E0},  {0x04E0,0x04E1,0x04E0},
678
  {0x04E2,0x04E3,0x0418},  {0x04E2,0x04E3,0x0418},
679
  {0x04E4,0x04E5,0x0418},  {0x04E4,0x04E5,0x0418},
680
  {0x04E6,0x04E7,0x041E},  {0x04E6,0x04E7,0x041E},
681
  {0x04E8,0x04E9,0x04E8},  {0x04E8,0x04E9,0x04E8},
682
  {0x04EA,0x04EB,0x04E8},  {0x04EA,0x04EB,0x04E8},
683
  {0x04EC,0x04ED,0x042D},  {0x04EC,0x04ED,0x042D},
684
  {0x04EE,0x04EF,0x0423},  {0x04EE,0x04EF,0x0423},
685
  {0x04F0,0x04F1,0x0423},  {0x04F0,0x04F1,0x0423},
686
  {0x04F2,0x04F3,0x0423},  {0x04F2,0x04F3,0x0423},
687
  {0x04F4,0x04F5,0x0427},  {0x04F4,0x04F5,0x0427},
688
  {0x04F6,0x04F6,0x04F6},  {0x04F7,0x04F7,0x04F7},
689
  {0x04F8,0x04F9,0x042B},  {0x04F8,0x04F9,0x042B},
690
  {0x04FA,0x04FA,0x04FA},  {0x04FB,0x04FB,0x04FB},
691
  {0x04FC,0x04FC,0x04FC},  {0x04FD,0x04FD,0x04FD},
692
  {0x04FE,0x04FE,0x04FE},  {0x04FF,0x04FF,0x04FF}
693
};
694
695
static MY_UNICASE_INFO plane05[]={
696
  {0x0500,0x0500,0x0500},  {0x0501,0x0501,0x0501},
697
  {0x0502,0x0502,0x0502},  {0x0503,0x0503,0x0503},
698
  {0x0504,0x0504,0x0504},  {0x0505,0x0505,0x0505},
699
  {0x0506,0x0506,0x0506},  {0x0507,0x0507,0x0507},
700
  {0x0508,0x0508,0x0508},  {0x0509,0x0509,0x0509},
701
  {0x050A,0x050A,0x050A},  {0x050B,0x050B,0x050B},
702
  {0x050C,0x050C,0x050C},  {0x050D,0x050D,0x050D},
703
  {0x050E,0x050E,0x050E},  {0x050F,0x050F,0x050F},
704
  {0x0510,0x0510,0x0510},  {0x0511,0x0511,0x0511},
705
  {0x0512,0x0512,0x0512},  {0x0513,0x0513,0x0513},
706
  {0x0514,0x0514,0x0514},  {0x0515,0x0515,0x0515},
707
  {0x0516,0x0516,0x0516},  {0x0517,0x0517,0x0517},
708
  {0x0518,0x0518,0x0518},  {0x0519,0x0519,0x0519},
709
  {0x051A,0x051A,0x051A},  {0x051B,0x051B,0x051B},
710
  {0x051C,0x051C,0x051C},  {0x051D,0x051D,0x051D},
711
  {0x051E,0x051E,0x051E},  {0x051F,0x051F,0x051F},
712
  {0x0520,0x0520,0x0520},  {0x0521,0x0521,0x0521},
713
  {0x0522,0x0522,0x0522},  {0x0523,0x0523,0x0523},
714
  {0x0524,0x0524,0x0524},  {0x0525,0x0525,0x0525},
715
  {0x0526,0x0526,0x0526},  {0x0527,0x0527,0x0527},
716
  {0x0528,0x0528,0x0528},  {0x0529,0x0529,0x0529},
717
  {0x052A,0x052A,0x052A},  {0x052B,0x052B,0x052B},
718
  {0x052C,0x052C,0x052C},  {0x052D,0x052D,0x052D},
719
  {0x052E,0x052E,0x052E},  {0x052F,0x052F,0x052F},
720
  {0x0530,0x0530,0x0530},  {0x0531,0x0561,0x0531},
721
  {0x0532,0x0562,0x0532},  {0x0533,0x0563,0x0533},
722
  {0x0534,0x0564,0x0534},  {0x0535,0x0565,0x0535},
723
  {0x0536,0x0566,0x0536},  {0x0537,0x0567,0x0537},
724
  {0x0538,0x0568,0x0538},  {0x0539,0x0569,0x0539},
725
  {0x053A,0x056A,0x053A},  {0x053B,0x056B,0x053B},
726
  {0x053C,0x056C,0x053C},  {0x053D,0x056D,0x053D},
727
  {0x053E,0x056E,0x053E},  {0x053F,0x056F,0x053F},
728
  {0x0540,0x0570,0x0540},  {0x0541,0x0571,0x0541},
729
  {0x0542,0x0572,0x0542},  {0x0543,0x0573,0x0543},
730
  {0x0544,0x0574,0x0544},  {0x0545,0x0575,0x0545},
731
  {0x0546,0x0576,0x0546},  {0x0547,0x0577,0x0547},
732
  {0x0548,0x0578,0x0548},  {0x0549,0x0579,0x0549},
733
  {0x054A,0x057A,0x054A},  {0x054B,0x057B,0x054B},
734
  {0x054C,0x057C,0x054C},  {0x054D,0x057D,0x054D},
735
  {0x054E,0x057E,0x054E},  {0x054F,0x057F,0x054F},
736
  {0x0550,0x0580,0x0550},  {0x0551,0x0581,0x0551},
737
  {0x0552,0x0582,0x0552},  {0x0553,0x0583,0x0553},
738
  {0x0554,0x0584,0x0554},  {0x0555,0x0585,0x0555},
739
  {0x0556,0x0586,0x0556},  {0x0557,0x0557,0x0557},
740
  {0x0558,0x0558,0x0558},  {0x0559,0x0559,0x0559},
741
  {0x055A,0x055A,0x055A},  {0x055B,0x055B,0x055B},
742
  {0x055C,0x055C,0x055C},  {0x055D,0x055D,0x055D},
743
  {0x055E,0x055E,0x055E},  {0x055F,0x055F,0x055F},
744
  {0x0560,0x0560,0x0560},  {0x0531,0x0561,0x0531},
745
  {0x0532,0x0562,0x0532},  {0x0533,0x0563,0x0533},
746
  {0x0534,0x0564,0x0534},  {0x0535,0x0565,0x0535},
747
  {0x0536,0x0566,0x0536},  {0x0537,0x0567,0x0537},
748
  {0x0538,0x0568,0x0538},  {0x0539,0x0569,0x0539},
749
  {0x053A,0x056A,0x053A},  {0x053B,0x056B,0x053B},
750
  {0x053C,0x056C,0x053C},  {0x053D,0x056D,0x053D},
751
  {0x053E,0x056E,0x053E},  {0x053F,0x056F,0x053F},
752
  {0x0540,0x0570,0x0540},  {0x0541,0x0571,0x0541},
753
  {0x0542,0x0572,0x0542},  {0x0543,0x0573,0x0543},
754
  {0x0544,0x0574,0x0544},  {0x0545,0x0575,0x0545},
755
  {0x0546,0x0576,0x0546},  {0x0547,0x0577,0x0547},
756
  {0x0548,0x0578,0x0548},  {0x0549,0x0579,0x0549},
757
  {0x054A,0x057A,0x054A},  {0x054B,0x057B,0x054B},
758
  {0x054C,0x057C,0x054C},  {0x054D,0x057D,0x054D},
759
  {0x054E,0x057E,0x054E},  {0x054F,0x057F,0x054F},
760
  {0x0550,0x0580,0x0550},  {0x0551,0x0581,0x0551},
761
  {0x0552,0x0582,0x0552},  {0x0553,0x0583,0x0553},
762
  {0x0554,0x0584,0x0554},  {0x0555,0x0585,0x0555},
763
  {0x0556,0x0586,0x0556},  {0x0587,0x0587,0x0587},
764
  {0x0588,0x0588,0x0588},  {0x0589,0x0589,0x0589},
765
  {0x058A,0x058A,0x058A},  {0x058B,0x058B,0x058B},
766
  {0x058C,0x058C,0x058C},  {0x058D,0x058D,0x058D},
767
  {0x058E,0x058E,0x058E},  {0x058F,0x058F,0x058F},
768
  {0x0590,0x0590,0x0590},  {0x0591,0x0591,0x0591},
769
  {0x0592,0x0592,0x0592},  {0x0593,0x0593,0x0593},
770
  {0x0594,0x0594,0x0594},  {0x0595,0x0595,0x0595},
771
  {0x0596,0x0596,0x0596},  {0x0597,0x0597,0x0597},
772
  {0x0598,0x0598,0x0598},  {0x0599,0x0599,0x0599},
773
  {0x059A,0x059A,0x059A},  {0x059B,0x059B,0x059B},
774
  {0x059C,0x059C,0x059C},  {0x059D,0x059D,0x059D},
775
  {0x059E,0x059E,0x059E},  {0x059F,0x059F,0x059F},
776
  {0x05A0,0x05A0,0x05A0},  {0x05A1,0x05A1,0x05A1},
777
  {0x05A2,0x05A2,0x05A2},  {0x05A3,0x05A3,0x05A3},
778
  {0x05A4,0x05A4,0x05A4},  {0x05A5,0x05A5,0x05A5},
779
  {0x05A6,0x05A6,0x05A6},  {0x05A7,0x05A7,0x05A7},
780
  {0x05A8,0x05A8,0x05A8},  {0x05A9,0x05A9,0x05A9},
781
  {0x05AA,0x05AA,0x05AA},  {0x05AB,0x05AB,0x05AB},
782
  {0x05AC,0x05AC,0x05AC},  {0x05AD,0x05AD,0x05AD},
783
  {0x05AE,0x05AE,0x05AE},  {0x05AF,0x05AF,0x05AF},
784
  {0x05B0,0x05B0,0x05B0},  {0x05B1,0x05B1,0x05B1},
785
  {0x05B2,0x05B2,0x05B2},  {0x05B3,0x05B3,0x05B3},
786
  {0x05B4,0x05B4,0x05B4},  {0x05B5,0x05B5,0x05B5},
787
  {0x05B6,0x05B6,0x05B6},  {0x05B7,0x05B7,0x05B7},
788
  {0x05B8,0x05B8,0x05B8},  {0x05B9,0x05B9,0x05B9},
789
  {0x05BA,0x05BA,0x05BA},  {0x05BB,0x05BB,0x05BB},
790
  {0x05BC,0x05BC,0x05BC},  {0x05BD,0x05BD,0x05BD},
791
  {0x05BE,0x05BE,0x05BE},  {0x05BF,0x05BF,0x05BF},
792
  {0x05C0,0x05C0,0x05C0},  {0x05C1,0x05C1,0x05C1},
793
  {0x05C2,0x05C2,0x05C2},  {0x05C3,0x05C3,0x05C3},
794
  {0x05C4,0x05C4,0x05C4},  {0x05C5,0x05C5,0x05C5},
795
  {0x05C6,0x05C6,0x05C6},  {0x05C7,0x05C7,0x05C7},
796
  {0x05C8,0x05C8,0x05C8},  {0x05C9,0x05C9,0x05C9},
797
  {0x05CA,0x05CA,0x05CA},  {0x05CB,0x05CB,0x05CB},
798
  {0x05CC,0x05CC,0x05CC},  {0x05CD,0x05CD,0x05CD},
799
  {0x05CE,0x05CE,0x05CE},  {0x05CF,0x05CF,0x05CF},
800
  {0x05D0,0x05D0,0x05D0},  {0x05D1,0x05D1,0x05D1},
801
  {0x05D2,0x05D2,0x05D2},  {0x05D3,0x05D3,0x05D3},
802
  {0x05D4,0x05D4,0x05D4},  {0x05D5,0x05D5,0x05D5},
803
  {0x05D6,0x05D6,0x05D6},  {0x05D7,0x05D7,0x05D7},
804
  {0x05D8,0x05D8,0x05D8},  {0x05D9,0x05D9,0x05D9},
805
  {0x05DA,0x05DA,0x05DA},  {0x05DB,0x05DB,0x05DB},
806
  {0x05DC,0x05DC,0x05DC},  {0x05DD,0x05DD,0x05DD},
807
  {0x05DE,0x05DE,0x05DE},  {0x05DF,0x05DF,0x05DF},
808
  {0x05E0,0x05E0,0x05E0},  {0x05E1,0x05E1,0x05E1},
809
  {0x05E2,0x05E2,0x05E2},  {0x05E3,0x05E3,0x05E3},
810
  {0x05E4,0x05E4,0x05E4},  {0x05E5,0x05E5,0x05E5},
811
  {0x05E6,0x05E6,0x05E6},  {0x05E7,0x05E7,0x05E7},
812
  {0x05E8,0x05E8,0x05E8},  {0x05E9,0x05E9,0x05E9},
813
  {0x05EA,0x05EA,0x05EA},  {0x05EB,0x05EB,0x05EB},
814
  {0x05EC,0x05EC,0x05EC},  {0x05ED,0x05ED,0x05ED},
815
  {0x05EE,0x05EE,0x05EE},  {0x05EF,0x05EF,0x05EF},
816
  {0x05F0,0x05F0,0x05F0},  {0x05F1,0x05F1,0x05F1},
817
  {0x05F2,0x05F2,0x05F2},  {0x05F3,0x05F3,0x05F3},
818
  {0x05F4,0x05F4,0x05F4},  {0x05F5,0x05F5,0x05F5},
819
  {0x05F6,0x05F6,0x05F6},  {0x05F7,0x05F7,0x05F7},
820
  {0x05F8,0x05F8,0x05F8},  {0x05F9,0x05F9,0x05F9},
821
  {0x05FA,0x05FA,0x05FA},  {0x05FB,0x05FB,0x05FB},
822
  {0x05FC,0x05FC,0x05FC},  {0x05FD,0x05FD,0x05FD},
823
  {0x05FE,0x05FE,0x05FE},  {0x05FF,0x05FF,0x05FF}
824
};
825
826
static MY_UNICASE_INFO plane1E[]={
827
  {0x1E00,0x1E01,0x0041},  {0x1E00,0x1E01,0x0041},
828
  {0x1E02,0x1E03,0x0042},  {0x1E02,0x1E03,0x0042},
829
  {0x1E04,0x1E05,0x0042},  {0x1E04,0x1E05,0x0042},
830
  {0x1E06,0x1E07,0x0042},  {0x1E06,0x1E07,0x0042},
831
  {0x1E08,0x1E09,0x0043},  {0x1E08,0x1E09,0x0043},
832
  {0x1E0A,0x1E0B,0x0044},  {0x1E0A,0x1E0B,0x0044},
833
  {0x1E0C,0x1E0D,0x0044},  {0x1E0C,0x1E0D,0x0044},
834
  {0x1E0E,0x1E0F,0x0044},  {0x1E0E,0x1E0F,0x0044},
835
  {0x1E10,0x1E11,0x0044},  {0x1E10,0x1E11,0x0044},
836
  {0x1E12,0x1E13,0x0044},  {0x1E12,0x1E13,0x0044},
837
  {0x1E14,0x1E15,0x0045},  {0x1E14,0x1E15,0x0045},
838
  {0x1E16,0x1E17,0x0045},  {0x1E16,0x1E17,0x0045},
839
  {0x1E18,0x1E19,0x0045},  {0x1E18,0x1E19,0x0045},
840
  {0x1E1A,0x1E1B,0x0045},  {0x1E1A,0x1E1B,0x0045},
841
  {0x1E1C,0x1E1D,0x0045},  {0x1E1C,0x1E1D,0x0045},
842
  {0x1E1E,0x1E1F,0x0046},  {0x1E1E,0x1E1F,0x0046},
843
  {0x1E20,0x1E21,0x0047},  {0x1E20,0x1E21,0x0047},
844
  {0x1E22,0x1E23,0x0048},  {0x1E22,0x1E23,0x0048},
845
  {0x1E24,0x1E25,0x0048},  {0x1E24,0x1E25,0x0048},
846
  {0x1E26,0x1E27,0x0048},  {0x1E26,0x1E27,0x0048},
847
  {0x1E28,0x1E29,0x0048},  {0x1E28,0x1E29,0x0048},
848
  {0x1E2A,0x1E2B,0x0048},  {0x1E2A,0x1E2B,0x0048},
849
  {0x1E2C,0x1E2D,0x0049},  {0x1E2C,0x1E2D,0x0049},
850
  {0x1E2E,0x1E2F,0x0049},  {0x1E2E,0x1E2F,0x0049},
851
  {0x1E30,0x1E31,0x004B},  {0x1E30,0x1E31,0x004B},
852
  {0x1E32,0x1E33,0x004B},  {0x1E32,0x1E33,0x004B},
853
  {0x1E34,0x1E35,0x004B},  {0x1E34,0x1E35,0x004B},
854
  {0x1E36,0x1E37,0x004C},  {0x1E36,0x1E37,0x004C},
855
  {0x1E38,0x1E39,0x004C},  {0x1E38,0x1E39,0x004C},
856
  {0x1E3A,0x1E3B,0x004C},  {0x1E3A,0x1E3B,0x004C},
857
  {0x1E3C,0x1E3D,0x004C},  {0x1E3C,0x1E3D,0x004C},
858
  {0x1E3E,0x1E3F,0x004D},  {0x1E3E,0x1E3F,0x004D},
859
  {0x1E40,0x1E41,0x004D},  {0x1E40,0x1E41,0x004D},
860
  {0x1E42,0x1E43,0x004D},  {0x1E42,0x1E43,0x004D},
861
  {0x1E44,0x1E45,0x004E},  {0x1E44,0x1E45,0x004E},
862
  {0x1E46,0x1E47,0x004E},  {0x1E46,0x1E47,0x004E},
863
  {0x1E48,0x1E49,0x004E},  {0x1E48,0x1E49,0x004E},
864
  {0x1E4A,0x1E4B,0x004E},  {0x1E4A,0x1E4B,0x004E},
865
  {0x1E4C,0x1E4D,0x004F},  {0x1E4C,0x1E4D,0x004F},
866
  {0x1E4E,0x1E4F,0x004F},  {0x1E4E,0x1E4F,0x004F},
867
  {0x1E50,0x1E51,0x004F},  {0x1E50,0x1E51,0x004F},
868
  {0x1E52,0x1E53,0x004F},  {0x1E52,0x1E53,0x004F},
869
  {0x1E54,0x1E55,0x0050},  {0x1E54,0x1E55,0x0050},
870
  {0x1E56,0x1E57,0x0050},  {0x1E56,0x1E57,0x0050},
871
  {0x1E58,0x1E59,0x0052},  {0x1E58,0x1E59,0x0052},
872
  {0x1E5A,0x1E5B,0x0052},  {0x1E5A,0x1E5B,0x0052},
873
  {0x1E5C,0x1E5D,0x0052},  {0x1E5C,0x1E5D,0x0052},
874
  {0x1E5E,0x1E5F,0x0052},  {0x1E5E,0x1E5F,0x0052},
875
  {0x1E60,0x1E61,0x0053},  {0x1E60,0x1E61,0x0053},
876
  {0x1E62,0x1E63,0x0053},  {0x1E62,0x1E63,0x0053},
877
  {0x1E64,0x1E65,0x0053},  {0x1E64,0x1E65,0x0053},
878
  {0x1E66,0x1E67,0x0053},  {0x1E66,0x1E67,0x0053},
879
  {0x1E68,0x1E69,0x0053},  {0x1E68,0x1E69,0x0053},
880
  {0x1E6A,0x1E6B,0x0054},  {0x1E6A,0x1E6B,0x0054},
881
  {0x1E6C,0x1E6D,0x0054},  {0x1E6C,0x1E6D,0x0054},
882
  {0x1E6E,0x1E6F,0x0054},  {0x1E6E,0x1E6F,0x0054},
883
  {0x1E70,0x1E71,0x0054},  {0x1E70,0x1E71,0x0054},
884
  {0x1E72,0x1E73,0x0055},  {0x1E72,0x1E73,0x0055},
885
  {0x1E74,0x1E75,0x0055},  {0x1E74,0x1E75,0x0055},
886
  {0x1E76,0x1E77,0x0055},  {0x1E76,0x1E77,0x0055},
887
  {0x1E78,0x1E79,0x0055},  {0x1E78,0x1E79,0x0055},
888
  {0x1E7A,0x1E7B,0x0055},  {0x1E7A,0x1E7B,0x0055},
889
  {0x1E7C,0x1E7D,0x0056},  {0x1E7C,0x1E7D,0x0056},
890
  {0x1E7E,0x1E7F,0x0056},  {0x1E7E,0x1E7F,0x0056},
891
  {0x1E80,0x1E81,0x0057},  {0x1E80,0x1E81,0x0057},
892
  {0x1E82,0x1E83,0x0057},  {0x1E82,0x1E83,0x0057},
893
  {0x1E84,0x1E85,0x0057},  {0x1E84,0x1E85,0x0057},
894
  {0x1E86,0x1E87,0x0057},  {0x1E86,0x1E87,0x0057},
895
  {0x1E88,0x1E89,0x0057},  {0x1E88,0x1E89,0x0057},
896
  {0x1E8A,0x1E8B,0x0058},  {0x1E8A,0x1E8B,0x0058},
897
  {0x1E8C,0x1E8D,0x0058},  {0x1E8C,0x1E8D,0x0058},
898
  {0x1E8E,0x1E8F,0x0059},  {0x1E8E,0x1E8F,0x0059},
899
  {0x1E90,0x1E91,0x005A},  {0x1E90,0x1E91,0x005A},
900
  {0x1E92,0x1E93,0x005A},  {0x1E92,0x1E93,0x005A},
901
  {0x1E94,0x1E95,0x005A},  {0x1E94,0x1E95,0x005A},
902
  {0x1E96,0x1E96,0x0048},  {0x1E97,0x1E97,0x0054},
903
  {0x1E98,0x1E98,0x0057},  {0x1E99,0x1E99,0x0059},
904
  {0x1E9A,0x1E9A,0x1E9A},  {0x1E60,0x1E9B,0x0053},
905
  {0x1E9C,0x1E9C,0x1E9C},  {0x1E9D,0x1E9D,0x1E9D},
906
  {0x1E9E,0x1E9E,0x1E9E},  {0x1E9F,0x1E9F,0x1E9F},
907
  {0x1EA0,0x1EA1,0x0041},  {0x1EA0,0x1EA1,0x0041},
908
  {0x1EA2,0x1EA3,0x0041},  {0x1EA2,0x1EA3,0x0041},
909
  {0x1EA4,0x1EA5,0x0041},  {0x1EA4,0x1EA5,0x0041},
910
  {0x1EA6,0x1EA7,0x0041},  {0x1EA6,0x1EA7,0x0041},
911
  {0x1EA8,0x1EA9,0x0041},  {0x1EA8,0x1EA9,0x0041},
912
  {0x1EAA,0x1EAB,0x0041},  {0x1EAA,0x1EAB,0x0041},
913
  {0x1EAC,0x1EAD,0x0041},  {0x1EAC,0x1EAD,0x0041},
914
  {0x1EAE,0x1EAF,0x0041},  {0x1EAE,0x1EAF,0x0041},
915
  {0x1EB0,0x1EB1,0x0041},  {0x1EB0,0x1EB1,0x0041},
916
  {0x1EB2,0x1EB3,0x0041},  {0x1EB2,0x1EB3,0x0041},
917
  {0x1EB4,0x1EB5,0x0041},  {0x1EB4,0x1EB5,0x0041},
918
  {0x1EB6,0x1EB7,0x0041},  {0x1EB6,0x1EB7,0x0041},
919
  {0x1EB8,0x1EB9,0x0045},  {0x1EB8,0x1EB9,0x0045},
920
  {0x1EBA,0x1EBB,0x0045},  {0x1EBA,0x1EBB,0x0045},
921
  {0x1EBC,0x1EBD,0x0045},  {0x1EBC,0x1EBD,0x0045},
922
  {0x1EBE,0x1EBF,0x0045},  {0x1EBE,0x1EBF,0x0045},
923
  {0x1EC0,0x1EC1,0x0045},  {0x1EC0,0x1EC1,0x0045},
924
  {0x1EC2,0x1EC3,0x0045},  {0x1EC2,0x1EC3,0x0045},
925
  {0x1EC4,0x1EC5,0x0045},  {0x1EC4,0x1EC5,0x0045},
926
  {0x1EC6,0x1EC7,0x0045},  {0x1EC6,0x1EC7,0x0045},
927
  {0x1EC8,0x1EC9,0x0049},  {0x1EC8,0x1EC9,0x0049},
928
  {0x1ECA,0x1ECB,0x0049},  {0x1ECA,0x1ECB,0x0049},
929
  {0x1ECC,0x1ECD,0x004F},  {0x1ECC,0x1ECD,0x004F},
930
  {0x1ECE,0x1ECF,0x004F},  {0x1ECE,0x1ECF,0x004F},
931
  {0x1ED0,0x1ED1,0x004F},  {0x1ED0,0x1ED1,0x004F},
932
  {0x1ED2,0x1ED3,0x004F},  {0x1ED2,0x1ED3,0x004F},
933
  {0x1ED4,0x1ED5,0x004F},  {0x1ED4,0x1ED5,0x004F},
934
  {0x1ED6,0x1ED7,0x004F},  {0x1ED6,0x1ED7,0x004F},
935
  {0x1ED8,0x1ED9,0x004F},  {0x1ED8,0x1ED9,0x004F},
936
  {0x1EDA,0x1EDB,0x004F},  {0x1EDA,0x1EDB,0x004F},
937
  {0x1EDC,0x1EDD,0x004F},  {0x1EDC,0x1EDD,0x004F},
938
  {0x1EDE,0x1EDF,0x004F},  {0x1EDE,0x1EDF,0x004F},
939
  {0x1EE0,0x1EE1,0x004F},  {0x1EE0,0x1EE1,0x004F},
940
  {0x1EE2,0x1EE3,0x004F},  {0x1EE2,0x1EE3,0x004F},
941
  {0x1EE4,0x1EE5,0x0055},  {0x1EE4,0x1EE5,0x0055},
942
  {0x1EE6,0x1EE7,0x0055},  {0x1EE6,0x1EE7,0x0055},
943
  {0x1EE8,0x1EE9,0x0055},  {0x1EE8,0x1EE9,0x0055},
944
  {0x1EEA,0x1EEB,0x0055},  {0x1EEA,0x1EEB,0x0055},
945
  {0x1EEC,0x1EED,0x0055},  {0x1EEC,0x1EED,0x0055},
946
  {0x1EEE,0x1EEF,0x0055},  {0x1EEE,0x1EEF,0x0055},
947
  {0x1EF0,0x1EF1,0x0055},  {0x1EF0,0x1EF1,0x0055},
948
  {0x1EF2,0x1EF3,0x0059},  {0x1EF2,0x1EF3,0x0059},
949
  {0x1EF4,0x1EF5,0x0059},  {0x1EF4,0x1EF5,0x0059},
950
  {0x1EF6,0x1EF7,0x0059},  {0x1EF6,0x1EF7,0x0059},
951
  {0x1EF8,0x1EF9,0x0059},  {0x1EF8,0x1EF9,0x0059},
952
  {0x1EFA,0x1EFA,0x1EFA},  {0x1EFB,0x1EFB,0x1EFB},
953
  {0x1EFC,0x1EFC,0x1EFC},  {0x1EFD,0x1EFD,0x1EFD},
954
  {0x1EFE,0x1EFE,0x1EFE},  {0x1EFF,0x1EFF,0x1EFF}
955
};
956
957
static MY_UNICASE_INFO plane1F[]={
958
  {0x1F08,0x1F00,0x0391},  {0x1F09,0x1F01,0x0391},
959
  {0x1F0A,0x1F02,0x0391},  {0x1F0B,0x1F03,0x0391},
960
  {0x1F0C,0x1F04,0x0391},  {0x1F0D,0x1F05,0x0391},
961
  {0x1F0E,0x1F06,0x0391},  {0x1F0F,0x1F07,0x0391},
962
  {0x1F08,0x1F00,0x0391},  {0x1F09,0x1F01,0x0391},
963
  {0x1F0A,0x1F02,0x0391},  {0x1F0B,0x1F03,0x0391},
964
  {0x1F0C,0x1F04,0x0391},  {0x1F0D,0x1F05,0x0391},
965
  {0x1F0E,0x1F06,0x0391},  {0x1F0F,0x1F07,0x0391},
966
  {0x1F18,0x1F10,0x0395},  {0x1F19,0x1F11,0x0395},
967
  {0x1F1A,0x1F12,0x0395},  {0x1F1B,0x1F13,0x0395},
968
  {0x1F1C,0x1F14,0x0395},  {0x1F1D,0x1F15,0x0395},
969
  {0x1F16,0x1F16,0x1F16},  {0x1F17,0x1F17,0x1F17},
970
  {0x1F18,0x1F10,0x0395},  {0x1F19,0x1F11,0x0395},
971
  {0x1F1A,0x1F12,0x0395},  {0x1F1B,0x1F13,0x0395},
972
  {0x1F1C,0x1F14,0x0395},  {0x1F1D,0x1F15,0x0395},
973
  {0x1F1E,0x1F1E,0x1F1E},  {0x1F1F,0x1F1F,0x1F1F},
974
  {0x1F28,0x1F20,0x0397},  {0x1F29,0x1F21,0x0397},
975
  {0x1F2A,0x1F22,0x0397},  {0x1F2B,0x1F23,0x0397},
976
  {0x1F2C,0x1F24,0x0397},  {0x1F2D,0x1F25,0x0397},
977
  {0x1F2E,0x1F26,0x0397},  {0x1F2F,0x1F27,0x0397},
978
  {0x1F28,0x1F20,0x0397},  {0x1F29,0x1F21,0x0397},
979
  {0x1F2A,0x1F22,0x0397},  {0x1F2B,0x1F23,0x0397},
980
  {0x1F2C,0x1F24,0x0397},  {0x1F2D,0x1F25,0x0397},
981
  {0x1F2E,0x1F26,0x0397},  {0x1F2F,0x1F27,0x0397},
982
  {0x1F38,0x1F30,0x0399},  {0x1F39,0x1F31,0x0399},
983
  {0x1F3A,0x1F32,0x0399},  {0x1F3B,0x1F33,0x0399},
984
  {0x1F3C,0x1F34,0x0399},  {0x1F3D,0x1F35,0x0399},
985
  {0x1F3E,0x1F36,0x0399},  {0x1F3F,0x1F37,0x0399},
986
  {0x1F38,0x1F30,0x0399},  {0x1F39,0x1F31,0x0399},
987
  {0x1F3A,0x1F32,0x0399},  {0x1F3B,0x1F33,0x0399},
988
  {0x1F3C,0x1F34,0x0399},  {0x1F3D,0x1F35,0x0399},
989
  {0x1F3E,0x1F36,0x0399},  {0x1F3F,0x1F37,0x0399},
990
  {0x1F48,0x1F40,0x039F},  {0x1F49,0x1F41,0x039F},
991
  {0x1F4A,0x1F42,0x039F},  {0x1F4B,0x1F43,0x039F},
992
  {0x1F4C,0x1F44,0x039F},  {0x1F4D,0x1F45,0x039F},
993
  {0x1F46,0x1F46,0x1F46},  {0x1F47,0x1F47,0x1F47},
994
  {0x1F48,0x1F40,0x039F},  {0x1F49,0x1F41,0x039F},
995
  {0x1F4A,0x1F42,0x039F},  {0x1F4B,0x1F43,0x039F},
996
  {0x1F4C,0x1F44,0x039F},  {0x1F4D,0x1F45,0x039F},
997
  {0x1F4E,0x1F4E,0x1F4E},  {0x1F4F,0x1F4F,0x1F4F},
998
  {0x1F50,0x1F50,0x03A5},  {0x1F59,0x1F51,0x03A5},
999
  {0x1F52,0x1F52,0x03A5},  {0x1F5B,0x1F53,0x03A5},
1000
  {0x1F54,0x1F54,0x03A5},  {0x1F5D,0x1F55,0x03A5},
1001
  {0x1F56,0x1F56,0x03A5},  {0x1F5F,0x1F57,0x03A5},
1002
  {0x1F58,0x1F58,0x1F58},  {0x1F59,0x1F51,0x03A5},
1003
  {0x1F5A,0x1F5A,0x1F5A},  {0x1F5B,0x1F53,0x03A5},
1004
  {0x1F5C,0x1F5C,0x1F5C},  {0x1F5D,0x1F55,0x03A5},
1005
  {0x1F5E,0x1F5E,0x1F5E},  {0x1F5F,0x1F57,0x03A5},
1006
  {0x1F68,0x1F60,0x03A9},  {0x1F69,0x1F61,0x03A9},
1007
  {0x1F6A,0x1F62,0x03A9},  {0x1F6B,0x1F63,0x03A9},
1008
  {0x1F6C,0x1F64,0x03A9},  {0x1F6D,0x1F65,0x03A9},
1009
  {0x1F6E,0x1F66,0x03A9},  {0x1F6F,0x1F67,0x03A9},
1010
  {0x1F68,0x1F60,0x03A9},  {0x1F69,0x1F61,0x03A9},
1011
  {0x1F6A,0x1F62,0x03A9},  {0x1F6B,0x1F63,0x03A9},
1012
  {0x1F6C,0x1F64,0x03A9},  {0x1F6D,0x1F65,0x03A9},
1013
  {0x1F6E,0x1F66,0x03A9},  {0x1F6F,0x1F67,0x03A9},
1014
  {0x1FBA,0x1F70,0x0391},  {0x1FBB,0x1F71,0x1FBB},
1015
  {0x1FC8,0x1F72,0x0395},  {0x1FC9,0x1F73,0x1FC9},
1016
  {0x1FCA,0x1F74,0x0397},  {0x1FCB,0x1F75,0x1FCB},
1017
  {0x1FDA,0x1F76,0x0399},  {0x1FDB,0x1F77,0x1FDB},
1018
  {0x1FF8,0x1F78,0x039F},  {0x1FF9,0x1F79,0x1FF9},
1019
  {0x1FEA,0x1F7A,0x03A5},  {0x1FEB,0x1F7B,0x1FEB},
1020
  {0x1FFA,0x1F7C,0x03A9},  {0x1FFB,0x1F7D,0x1FFB},
1021
  {0x1F7E,0x1F7E,0x1F7E},  {0x1F7F,0x1F7F,0x1F7F},
1022
  {0x1F88,0x1F80,0x0391},  {0x1F89,0x1F81,0x0391},
1023
  {0x1F8A,0x1F82,0x0391},  {0x1F8B,0x1F83,0x0391},
1024
  {0x1F8C,0x1F84,0x0391},  {0x1F8D,0x1F85,0x0391},
1025
  {0x1F8E,0x1F86,0x0391},  {0x1F8F,0x1F87,0x0391},
1026
  {0x1F88,0x1F80,0x0391},  {0x1F89,0x1F81,0x0391},
1027
  {0x1F8A,0x1F82,0x0391},  {0x1F8B,0x1F83,0x0391},
1028
  {0x1F8C,0x1F84,0x0391},  {0x1F8D,0x1F85,0x0391},
1029
  {0x1F8E,0x1F86,0x0391},  {0x1F8F,0x1F87,0x0391},
1030
  {0x1F98,0x1F90,0x0397},  {0x1F99,0x1F91,0x0397},
1031
  {0x1F9A,0x1F92,0x0397},  {0x1F9B,0x1F93,0x0397},
1032
  {0x1F9C,0x1F94,0x0397},  {0x1F9D,0x1F95,0x0397},
1033
  {0x1F9E,0x1F96,0x0397},  {0x1F9F,0x1F97,0x0397},
1034
  {0x1F98,0x1F90,0x0397},  {0x1F99,0x1F91,0x0397},
1035
  {0x1F9A,0x1F92,0x0397},  {0x1F9B,0x1F93,0x0397},
1036
  {0x1F9C,0x1F94,0x0397},  {0x1F9D,0x1F95,0x0397},
1037
  {0x1F9E,0x1F96,0x0397},  {0x1F9F,0x1F97,0x0397},
1038
  {0x1FA8,0x1FA0,0x03A9},  {0x1FA9,0x1FA1,0x03A9},
1039
  {0x1FAA,0x1FA2,0x03A9},  {0x1FAB,0x1FA3,0x03A9},
1040
  {0x1FAC,0x1FA4,0x03A9},  {0x1FAD,0x1FA5,0x03A9},
1041
  {0x1FAE,0x1FA6,0x03A9},  {0x1FAF,0x1FA7,0x03A9},
1042
  {0x1FA8,0x1FA0,0x03A9},  {0x1FA9,0x1FA1,0x03A9},
1043
  {0x1FAA,0x1FA2,0x03A9},  {0x1FAB,0x1FA3,0x03A9},
1044
  {0x1FAC,0x1FA4,0x03A9},  {0x1FAD,0x1FA5,0x03A9},
1045
  {0x1FAE,0x1FA6,0x03A9},  {0x1FAF,0x1FA7,0x03A9},
1046
  {0x1FB8,0x1FB0,0x0391},  {0x1FB9,0x1FB1,0x0391},
1047
  {0x1FB2,0x1FB2,0x0391},  {0x1FBC,0x1FB3,0x0391},
1048
  {0x1FB4,0x1FB4,0x0391},  {0x1FB5,0x1FB5,0x1FB5},
1049
  {0x1FB6,0x1FB6,0x0391},  {0x1FB7,0x1FB7,0x0391},
1050
  {0x1FB8,0x1FB0,0x0391},  {0x1FB9,0x1FB1,0x0391},
1051
  {0x1FBA,0x1F70,0x0391},  {0x1FBB,0x1F71,0x1FBB},
1052
  {0x1FBC,0x1FB3,0x0391},  {0x1FBD,0x1FBD,0x1FBD},
1053
  {0x0399,0x1FBE,0x0399},  {0x1FBF,0x1FBF,0x1FBF},
1054
  {0x1FC0,0x1FC0,0x1FC0},  {0x1FC1,0x1FC1,0x1FC1},
1055
  {0x1FC2,0x1FC2,0x0397},  {0x1FCC,0x1FC3,0x0397},
1056
  {0x1FC4,0x1FC4,0x0397},  {0x1FC5,0x1FC5,0x1FC5},
1057
  {0x1FC6,0x1FC6,0x0397},  {0x1FC7,0x1FC7,0x0397},
1058
  {0x1FC8,0x1F72,0x0395},  {0x1FC9,0x1F73,0x1FC9},
1059
  {0x1FCA,0x1F74,0x0397},  {0x1FCB,0x1F75,0x1FCB},
1060
  {0x1FCC,0x1FC3,0x0397},  {0x1FCD,0x1FCD,0x1FCD},
1061
  {0x1FCE,0x1FCE,0x1FCE},  {0x1FCF,0x1FCF,0x1FCF},
1062
  {0x1FD8,0x1FD0,0x0399},  {0x1FD9,0x1FD1,0x0399},
1063
  {0x1FD2,0x1FD2,0x0399},  {0x1FD3,0x1FD3,0x1FD3},
1064
  {0x1FD4,0x1FD4,0x1FD4},  {0x1FD5,0x1FD5,0x1FD5},
1065
  {0x1FD6,0x1FD6,0x0399},  {0x1FD7,0x1FD7,0x0399},
1066
  {0x1FD8,0x1FD0,0x0399},  {0x1FD9,0x1FD1,0x0399},
1067
  {0x1FDA,0x1F76,0x0399},  {0x1FDB,0x1F77,0x1FDB},
1068
  {0x1FDC,0x1FDC,0x1FDC},  {0x1FDD,0x1FDD,0x1FDD},
1069
  {0x1FDE,0x1FDE,0x1FDE},  {0x1FDF,0x1FDF,0x1FDF},
1070
  {0x1FE8,0x1FE0,0x03A5},  {0x1FE9,0x1FE1,0x03A5},
1071
  {0x1FE2,0x1FE2,0x03A5},  {0x1FE3,0x1FE3,0x1FE3},
1072
  {0x1FE4,0x1FE4,0x03A1},  {0x1FEC,0x1FE5,0x03A1},
1073
  {0x1FE6,0x1FE6,0x03A5},  {0x1FE7,0x1FE7,0x03A5},
1074
  {0x1FE8,0x1FE0,0x03A5},  {0x1FE9,0x1FE1,0x03A5},
1075
  {0x1FEA,0x1F7A,0x03A5},  {0x1FEB,0x1F7B,0x1FEB},
1076
  {0x1FEC,0x1FE5,0x03A1},  {0x1FED,0x1FED,0x1FED},
1077
  {0x1FEE,0x1FEE,0x1FEE},  {0x1FEF,0x1FEF,0x1FEF},
1078
  {0x1FF0,0x1FF0,0x1FF0},  {0x1FF1,0x1FF1,0x1FF1},
1079
  {0x1FF2,0x1FF2,0x03A9},  {0x1FFC,0x1FF3,0x03A9},
1080
  {0x1FF4,0x1FF4,0x03A9},  {0x1FF5,0x1FF5,0x1FF5},
1081
  {0x1FF6,0x1FF6,0x03A9},  {0x1FF7,0x1FF7,0x03A9},
1082
  {0x1FF8,0x1F78,0x039F},  {0x1FF9,0x1F79,0x1FF9},
1083
  {0x1FFA,0x1F7C,0x03A9},  {0x1FFB,0x1F7D,0x1FFB},
1084
  {0x1FFC,0x1FF3,0x03A9},  {0x1FFD,0x1FFD,0x1FFD},
1085
  {0x1FFE,0x1FFE,0x1FFE},  {0x1FFF,0x1FFF,0x1FFF}
1086
};
1087
1088
static MY_UNICASE_INFO plane21[]={
1089
  {0x2100,0x2100,0x2100},  {0x2101,0x2101,0x2101},
1090
  {0x2102,0x2102,0x2102},  {0x2103,0x2103,0x2103},
1091
  {0x2104,0x2104,0x2104},  {0x2105,0x2105,0x2105},
1092
  {0x2106,0x2106,0x2106},  {0x2107,0x2107,0x2107},
1093
  {0x2108,0x2108,0x2108},  {0x2109,0x2109,0x2109},
1094
  {0x210A,0x210A,0x210A},  {0x210B,0x210B,0x210B},
1095
  {0x210C,0x210C,0x210C},  {0x210D,0x210D,0x210D},
1096
  {0x210E,0x210E,0x210E},  {0x210F,0x210F,0x210F},
1097
  {0x2110,0x2110,0x2110},  {0x2111,0x2111,0x2111},
1098
  {0x2112,0x2112,0x2112},  {0x2113,0x2113,0x2113},
1099
  {0x2114,0x2114,0x2114},  {0x2115,0x2115,0x2115},
1100
  {0x2116,0x2116,0x2116},  {0x2117,0x2117,0x2117},
1101
  {0x2118,0x2118,0x2118},  {0x2119,0x2119,0x2119},
1102
  {0x211A,0x211A,0x211A},  {0x211B,0x211B,0x211B},
1103
  {0x211C,0x211C,0x211C},  {0x211D,0x211D,0x211D},
1104
  {0x211E,0x211E,0x211E},  {0x211F,0x211F,0x211F},
1105
  {0x2120,0x2120,0x2120},  {0x2121,0x2121,0x2121},
1106
  {0x2122,0x2122,0x2122},  {0x2123,0x2123,0x2123},
1107
  {0x2124,0x2124,0x2124},  {0x2125,0x2125,0x2125},
1108
  {0x2126,0x03C9,0x2126},  {0x2127,0x2127,0x2127},
1109
  {0x2128,0x2128,0x2128},  {0x2129,0x2129,0x2129},
1110
  {0x212A,0x006B,0x212A},  {0x212B,0x00E5,0x212B},
1111
  {0x212C,0x212C,0x212C},  {0x212D,0x212D,0x212D},
1112
  {0x212E,0x212E,0x212E},  {0x212F,0x212F,0x212F},
1113
  {0x2130,0x2130,0x2130},  {0x2131,0x2131,0x2131},
1114
  {0x2132,0x2132,0x2132},  {0x2133,0x2133,0x2133},
1115
  {0x2134,0x2134,0x2134},  {0x2135,0x2135,0x2135},
1116
  {0x2136,0x2136,0x2136},  {0x2137,0x2137,0x2137},
1117
  {0x2138,0x2138,0x2138},  {0x2139,0x2139,0x2139},
1118
  {0x213A,0x213A,0x213A},  {0x213B,0x213B,0x213B},
1119
  {0x213C,0x213C,0x213C},  {0x213D,0x213D,0x213D},
1120
  {0x213E,0x213E,0x213E},  {0x213F,0x213F,0x213F},
1121
  {0x2140,0x2140,0x2140},  {0x2141,0x2141,0x2141},
1122
  {0x2142,0x2142,0x2142},  {0x2143,0x2143,0x2143},
1123
  {0x2144,0x2144,0x2144},  {0x2145,0x2145,0x2145},
1124
  {0x2146,0x2146,0x2146},  {0x2147,0x2147,0x2147},
1125
  {0x2148,0x2148,0x2148},  {0x2149,0x2149,0x2149},
1126
  {0x214A,0x214A,0x214A},  {0x214B,0x214B,0x214B},
1127
  {0x214C,0x214C,0x214C},  {0x214D,0x214D,0x214D},
1128
  {0x214E,0x214E,0x214E},  {0x214F,0x214F,0x214F},
1129
  {0x2150,0x2150,0x2150},  {0x2151,0x2151,0x2151},
1130
  {0x2152,0x2152,0x2152},  {0x2153,0x2153,0x2153},
1131
  {0x2154,0x2154,0x2154},  {0x2155,0x2155,0x2155},
1132
  {0x2156,0x2156,0x2156},  {0x2157,0x2157,0x2157},
1133
  {0x2158,0x2158,0x2158},  {0x2159,0x2159,0x2159},
1134
  {0x215A,0x215A,0x215A},  {0x215B,0x215B,0x215B},
1135
  {0x215C,0x215C,0x215C},  {0x215D,0x215D,0x215D},
1136
  {0x215E,0x215E,0x215E},  {0x215F,0x215F,0x215F},
1137
  {0x2160,0x2170,0x2160},  {0x2161,0x2171,0x2161},
1138
  {0x2162,0x2172,0x2162},  {0x2163,0x2173,0x2163},
1139
  {0x2164,0x2174,0x2164},  {0x2165,0x2175,0x2165},
1140
  {0x2166,0x2176,0x2166},  {0x2167,0x2177,0x2167},
1141
  {0x2168,0x2178,0x2168},  {0x2169,0x2179,0x2169},
1142
  {0x216A,0x217A,0x216A},  {0x216B,0x217B,0x216B},
1143
  {0x216C,0x217C,0x216C},  {0x216D,0x217D,0x216D},
1144
  {0x216E,0x217E,0x216E},  {0x216F,0x217F,0x216F},
1145
  {0x2160,0x2170,0x2160},  {0x2161,0x2171,0x2161},
1146
  {0x2162,0x2172,0x2162},  {0x2163,0x2173,0x2163},
1147
  {0x2164,0x2174,0x2164},  {0x2165,0x2175,0x2165},
1148
  {0x2166,0x2176,0x2166},  {0x2167,0x2177,0x2167},
1149
  {0x2168,0x2178,0x2168},  {0x2169,0x2179,0x2169},
1150
  {0x216A,0x217A,0x216A},  {0x216B,0x217B,0x216B},
1151
  {0x216C,0x217C,0x216C},  {0x216D,0x217D,0x216D},
1152
  {0x216E,0x217E,0x216E},  {0x216F,0x217F,0x216F},
1153
  {0x2180,0x2180,0x2180},  {0x2181,0x2181,0x2181},
1154
  {0x2182,0x2182,0x2182},  {0x2183,0x2183,0x2183},
1155
  {0x2184,0x2184,0x2184},  {0x2185,0x2185,0x2185},
1156
  {0x2186,0x2186,0x2186},  {0x2187,0x2187,0x2187},
1157
  {0x2188,0x2188,0x2188},  {0x2189,0x2189,0x2189},
1158
  {0x218A,0x218A,0x218A},  {0x218B,0x218B,0x218B},
1159
  {0x218C,0x218C,0x218C},  {0x218D,0x218D,0x218D},
1160
  {0x218E,0x218E,0x218E},  {0x218F,0x218F,0x218F},
1161
  {0x2190,0x2190,0x2190},  {0x2191,0x2191,0x2191},
1162
  {0x2192,0x2192,0x2192},  {0x2193,0x2193,0x2193},
1163
  {0x2194,0x2194,0x2194},  {0x2195,0x2195,0x2195},
1164
  {0x2196,0x2196,0x2196},  {0x2197,0x2197,0x2197},
1165
  {0x2198,0x2198,0x2198},  {0x2199,0x2199,0x2199},
1166
  {0x219A,0x219A,0x219A},  {0x219B,0x219B,0x219B},
1167
  {0x219C,0x219C,0x219C},  {0x219D,0x219D,0x219D},
1168
  {0x219E,0x219E,0x219E},  {0x219F,0x219F,0x219F},
1169
  {0x21A0,0x21A0,0x21A0},  {0x21A1,0x21A1,0x21A1},
1170
  {0x21A2,0x21A2,0x21A2},  {0x21A3,0x21A3,0x21A3},
1171
  {0x21A4,0x21A4,0x21A4},  {0x21A5,0x21A5,0x21A5},
1172
  {0x21A6,0x21A6,0x21A6},  {0x21A7,0x21A7,0x21A7},
1173
  {0x21A8,0x21A8,0x21A8},  {0x21A9,0x21A9,0x21A9},
1174
  {0x21AA,0x21AA,0x21AA},  {0x21AB,0x21AB,0x21AB},
1175
  {0x21AC,0x21AC,0x21AC},  {0x21AD,0x21AD,0x21AD},
1176
  {0x21AE,0x21AE,0x21AE},  {0x21AF,0x21AF,0x21AF},
1177
  {0x21B0,0x21B0,0x21B0},  {0x21B1,0x21B1,0x21B1},
1178
  {0x21B2,0x21B2,0x21B2},  {0x21B3,0x21B3,0x21B3},
1179
  {0x21B4,0x21B4,0x21B4},  {0x21B5,0x21B5,0x21B5},
1180
  {0x21B6,0x21B6,0x21B6},  {0x21B7,0x21B7,0x21B7},
1181
  {0x21B8,0x21B8,0x21B8},  {0x21B9,0x21B9,0x21B9},
1182
  {0x21BA,0x21BA,0x21BA},  {0x21BB,0x21BB,0x21BB},
1183
  {0x21BC,0x21BC,0x21BC},  {0x21BD,0x21BD,0x21BD},
1184
  {0x21BE,0x21BE,0x21BE},  {0x21BF,0x21BF,0x21BF},
1185
  {0x21C0,0x21C0,0x21C0},  {0x21C1,0x21C1,0x21C1},
1186
  {0x21C2,0x21C2,0x21C2},  {0x21C3,0x21C3,0x21C3},
1187
  {0x21C4,0x21C4,0x21C4},  {0x21C5,0x21C5,0x21C5},
1188
  {0x21C6,0x21C6,0x21C6},  {0x21C7,0x21C7,0x21C7},
1189
  {0x21C8,0x21C8,0x21C8},  {0x21C9,0x21C9,0x21C9},
1190
  {0x21CA,0x21CA,0x21CA},  {0x21CB,0x21CB,0x21CB},
1191
  {0x21CC,0x21CC,0x21CC},  {0x21CD,0x21CD,0x21CD},
1192
  {0x21CE,0x21CE,0x21CE},  {0x21CF,0x21CF,0x21CF},
1193
  {0x21D0,0x21D0,0x21D0},  {0x21D1,0x21D1,0x21D1},
1194
  {0x21D2,0x21D2,0x21D2},  {0x21D3,0x21D3,0x21D3},
1195
  {0x21D4,0x21D4,0x21D4},  {0x21D5,0x21D5,0x21D5},
1196
  {0x21D6,0x21D6,0x21D6},  {0x21D7,0x21D7,0x21D7},
1197
  {0x21D8,0x21D8,0x21D8},  {0x21D9,0x21D9,0x21D9},
1198
  {0x21DA,0x21DA,0x21DA},  {0x21DB,0x21DB,0x21DB},
1199
  {0x21DC,0x21DC,0x21DC},  {0x21DD,0x21DD,0x21DD},
1200
  {0x21DE,0x21DE,0x21DE},  {0x21DF,0x21DF,0x21DF},
1201
  {0x21E0,0x21E0,0x21E0},  {0x21E1,0x21E1,0x21E1},
1202
  {0x21E2,0x21E2,0x21E2},  {0x21E3,0x21E3,0x21E3},
1203
  {0x21E4,0x21E4,0x21E4},  {0x21E5,0x21E5,0x21E5},
1204
  {0x21E6,0x21E6,0x21E6},  {0x21E7,0x21E7,0x21E7},
1205
  {0x21E8,0x21E8,0x21E8},  {0x21E9,0x21E9,0x21E9},
1206
  {0x21EA,0x21EA,0x21EA},  {0x21EB,0x21EB,0x21EB},
1207
  {0x21EC,0x21EC,0x21EC},  {0x21ED,0x21ED,0x21ED},
1208
  {0x21EE,0x21EE,0x21EE},  {0x21EF,0x21EF,0x21EF},
1209
  {0x21F0,0x21F0,0x21F0},  {0x21F1,0x21F1,0x21F1},
1210
  {0x21F2,0x21F2,0x21F2},  {0x21F3,0x21F3,0x21F3},
1211
  {0x21F4,0x21F4,0x21F4},  {0x21F5,0x21F5,0x21F5},
1212
  {0x21F6,0x21F6,0x21F6},  {0x21F7,0x21F7,0x21F7},
1213
  {0x21F8,0x21F8,0x21F8},  {0x21F9,0x21F9,0x21F9},
1214
  {0x21FA,0x21FA,0x21FA},  {0x21FB,0x21FB,0x21FB},
1215
  {0x21FC,0x21FC,0x21FC},  {0x21FD,0x21FD,0x21FD},
1216
  {0x21FE,0x21FE,0x21FE},  {0x21FF,0x21FF,0x21FF}
1217
};
1218
1219
static MY_UNICASE_INFO plane24[]={
1220
  {0x2400,0x2400,0x2400},  {0x2401,0x2401,0x2401},
1221
  {0x2402,0x2402,0x2402},  {0x2403,0x2403,0x2403},
1222
  {0x2404,0x2404,0x2404},  {0x2405,0x2405,0x2405},
1223
  {0x2406,0x2406,0x2406},  {0x2407,0x2407,0x2407},
1224
  {0x2408,0x2408,0x2408},  {0x2409,0x2409,0x2409},
1225
  {0x240A,0x240A,0x240A},  {0x240B,0x240B,0x240B},
1226
  {0x240C,0x240C,0x240C},  {0x240D,0x240D,0x240D},
1227
  {0x240E,0x240E,0x240E},  {0x240F,0x240F,0x240F},
1228
  {0x2410,0x2410,0x2410},  {0x2411,0x2411,0x2411},
1229
  {0x2412,0x2412,0x2412},  {0x2413,0x2413,0x2413},
1230
  {0x2414,0x2414,0x2414},  {0x2415,0x2415,0x2415},
1231
  {0x2416,0x2416,0x2416},  {0x2417,0x2417,0x2417},
1232
  {0x2418,0x2418,0x2418},  {0x2419,0x2419,0x2419},
1233
  {0x241A,0x241A,0x241A},  {0x241B,0x241B,0x241B},
1234
  {0x241C,0x241C,0x241C},  {0x241D,0x241D,0x241D},
1235
  {0x241E,0x241E,0x241E},  {0x241F,0x241F,0x241F},
1236
  {0x2420,0x2420,0x2420},  {0x2421,0x2421,0x2421},
1237
  {0x2422,0x2422,0x2422},  {0x2423,0x2423,0x2423},
1238
  {0x2424,0x2424,0x2424},  {0x2425,0x2425,0x2425},
1239
  {0x2426,0x2426,0x2426},  {0x2427,0x2427,0x2427},
1240
  {0x2428,0x2428,0x2428},  {0x2429,0x2429,0x2429},
1241
  {0x242A,0x242A,0x242A},  {0x242B,0x242B,0x242B},
1242
  {0x242C,0x242C,0x242C},  {0x242D,0x242D,0x242D},
1243
  {0x242E,0x242E,0x242E},  {0x242F,0x242F,0x242F},
1244
  {0x2430,0x2430,0x2430},  {0x2431,0x2431,0x2431},
1245
  {0x2432,0x2432,0x2432},  {0x2433,0x2433,0x2433},
1246
  {0x2434,0x2434,0x2434},  {0x2435,0x2435,0x2435},
1247
  {0x2436,0x2436,0x2436},  {0x2437,0x2437,0x2437},
1248
  {0x2438,0x2438,0x2438},  {0x2439,0x2439,0x2439},
1249
  {0x243A,0x243A,0x243A},  {0x243B,0x243B,0x243B},
1250
  {0x243C,0x243C,0x243C},  {0x243D,0x243D,0x243D},
1251
  {0x243E,0x243E,0x243E},  {0x243F,0x243F,0x243F},
1252
  {0x2440,0x2440,0x2440},  {0x2441,0x2441,0x2441},
1253
  {0x2442,0x2442,0x2442},  {0x2443,0x2443,0x2443},
1254
  {0x2444,0x2444,0x2444},  {0x2445,0x2445,0x2445},
1255
  {0x2446,0x2446,0x2446},  {0x2447,0x2447,0x2447},
1256
  {0x2448,0x2448,0x2448},  {0x2449,0x2449,0x2449},
1257
  {0x244A,0x244A,0x244A},  {0x244B,0x244B,0x244B},
1258
  {0x244C,0x244C,0x244C},  {0x244D,0x244D,0x244D},
1259
  {0x244E,0x244E,0x244E},  {0x244F,0x244F,0x244F},
1260
  {0x2450,0x2450,0x2450},  {0x2451,0x2451,0x2451},
1261
  {0x2452,0x2452,0x2452},  {0x2453,0x2453,0x2453},
1262
  {0x2454,0x2454,0x2454},  {0x2455,0x2455,0x2455},
1263
  {0x2456,0x2456,0x2456},  {0x2457,0x2457,0x2457},
1264
  {0x2458,0x2458,0x2458},  {0x2459,0x2459,0x2459},
1265
  {0x245A,0x245A,0x245A},  {0x245B,0x245B,0x245B},
1266
  {0x245C,0x245C,0x245C},  {0x245D,0x245D,0x245D},
1267
  {0x245E,0x245E,0x245E},  {0x245F,0x245F,0x245F},
1268
  {0x2460,0x2460,0x2460},  {0x2461,0x2461,0x2461},
1269
  {0x2462,0x2462,0x2462},  {0x2463,0x2463,0x2463},
1270
  {0x2464,0x2464,0x2464},  {0x2465,0x2465,0x2465},
1271
  {0x2466,0x2466,0x2466},  {0x2467,0x2467,0x2467},
1272
  {0x2468,0x2468,0x2468},  {0x2469,0x2469,0x2469},
1273
  {0x246A,0x246A,0x246A},  {0x246B,0x246B,0x246B},
1274
  {0x246C,0x246C,0x246C},  {0x246D,0x246D,0x246D},
1275
  {0x246E,0x246E,0x246E},  {0x246F,0x246F,0x246F},
1276
  {0x2470,0x2470,0x2470},  {0x2471,0x2471,0x2471},
1277
  {0x2472,0x2472,0x2472},  {0x2473,0x2473,0x2473},
1278
  {0x2474,0x2474,0x2474},  {0x2475,0x2475,0x2475},
1279
  {0x2476,0x2476,0x2476},  {0x2477,0x2477,0x2477},
1280
  {0x2478,0x2478,0x2478},  {0x2479,0x2479,0x2479},
1281
  {0x247A,0x247A,0x247A},  {0x247B,0x247B,0x247B},
1282
  {0x247C,0x247C,0x247C},  {0x247D,0x247D,0x247D},
1283
  {0x247E,0x247E,0x247E},  {0x247F,0x247F,0x247F},
1284
  {0x2480,0x2480,0x2480},  {0x2481,0x2481,0x2481},
1285
  {0x2482,0x2482,0x2482},  {0x2483,0x2483,0x2483},
1286
  {0x2484,0x2484,0x2484},  {0x2485,0x2485,0x2485},
1287
  {0x2486,0x2486,0x2486},  {0x2487,0x2487,0x2487},
1288
  {0x2488,0x2488,0x2488},  {0x2489,0x2489,0x2489},
1289
  {0x248A,0x248A,0x248A},  {0x248B,0x248B,0x248B},
1290
  {0x248C,0x248C,0x248C},  {0x248D,0x248D,0x248D},
1291
  {0x248E,0x248E,0x248E},  {0x248F,0x248F,0x248F},
1292
  {0x2490,0x2490,0x2490},  {0x2491,0x2491,0x2491},
1293
  {0x2492,0x2492,0x2492},  {0x2493,0x2493,0x2493},
1294
  {0x2494,0x2494,0x2494},  {0x2495,0x2495,0x2495},
1295
  {0x2496,0x2496,0x2496},  {0x2497,0x2497,0x2497},
1296
  {0x2498,0x2498,0x2498},  {0x2499,0x2499,0x2499},
1297
  {0x249A,0x249A,0x249A},  {0x249B,0x249B,0x249B},
1298
  {0x249C,0x249C,0x249C},  {0x249D,0x249D,0x249D},
1299
  {0x249E,0x249E,0x249E},  {0x249F,0x249F,0x249F},
1300
  {0x24A0,0x24A0,0x24A0},  {0x24A1,0x24A1,0x24A1},
1301
  {0x24A2,0x24A2,0x24A2},  {0x24A3,0x24A3,0x24A3},
1302
  {0x24A4,0x24A4,0x24A4},  {0x24A5,0x24A5,0x24A5},
1303
  {0x24A6,0x24A6,0x24A6},  {0x24A7,0x24A7,0x24A7},
1304
  {0x24A8,0x24A8,0x24A8},  {0x24A9,0x24A9,0x24A9},
1305
  {0x24AA,0x24AA,0x24AA},  {0x24AB,0x24AB,0x24AB},
1306
  {0x24AC,0x24AC,0x24AC},  {0x24AD,0x24AD,0x24AD},
1307
  {0x24AE,0x24AE,0x24AE},  {0x24AF,0x24AF,0x24AF},
1308
  {0x24B0,0x24B0,0x24B0},  {0x24B1,0x24B1,0x24B1},
1309
  {0x24B2,0x24B2,0x24B2},  {0x24B3,0x24B3,0x24B3},
1310
  {0x24B4,0x24B4,0x24B4},  {0x24B5,0x24B5,0x24B5},
1311
  {0x24B6,0x24D0,0x24B6},  {0x24B7,0x24D1,0x24B7},
1312
  {0x24B8,0x24D2,0x24B8},  {0x24B9,0x24D3,0x24B9},
1313
  {0x24BA,0x24D4,0x24BA},  {0x24BB,0x24D5,0x24BB},
1314
  {0x24BC,0x24D6,0x24BC},  {0x24BD,0x24D7,0x24BD},
1315
  {0x24BE,0x24D8,0x24BE},  {0x24BF,0x24D9,0x24BF},
1316
  {0x24C0,0x24DA,0x24C0},  {0x24C1,0x24DB,0x24C1},
1317
  {0x24C2,0x24DC,0x24C2},  {0x24C3,0x24DD,0x24C3},
1318
  {0x24C4,0x24DE,0x24C4},  {0x24C5,0x24DF,0x24C5},
1319
  {0x24C6,0x24E0,0x24C6},  {0x24C7,0x24E1,0x24C7},
1320
  {0x24C8,0x24E2,0x24C8},  {0x24C9,0x24E3,0x24C9},
1321
  {0x24CA,0x24E4,0x24CA},  {0x24CB,0x24E5,0x24CB},
1322
  {0x24CC,0x24E6,0x24CC},  {0x24CD,0x24E7,0x24CD},
1323
  {0x24CE,0x24E8,0x24CE},  {0x24CF,0x24E9,0x24CF},
1324
  {0x24B6,0x24D0,0x24B6},  {0x24B7,0x24D1,0x24B7},
1325
  {0x24B8,0x24D2,0x24B8},  {0x24B9,0x24D3,0x24B9},
1326
  {0x24BA,0x24D4,0x24BA},  {0x24BB,0x24D5,0x24BB},
1327
  {0x24BC,0x24D6,0x24BC},  {0x24BD,0x24D7,0x24BD},
1328
  {0x24BE,0x24D8,0x24BE},  {0x24BF,0x24D9,0x24BF},
1329
  {0x24C0,0x24DA,0x24C0},  {0x24C1,0x24DB,0x24C1},
1330
  {0x24C2,0x24DC,0x24C2},  {0x24C3,0x24DD,0x24C3},
1331
  {0x24C4,0x24DE,0x24C4},  {0x24C5,0x24DF,0x24C5},
1332
  {0x24C6,0x24E0,0x24C6},  {0x24C7,0x24E1,0x24C7},
1333
  {0x24C8,0x24E2,0x24C8},  {0x24C9,0x24E3,0x24C9},
1334
  {0x24CA,0x24E4,0x24CA},  {0x24CB,0x24E5,0x24CB},
1335
  {0x24CC,0x24E6,0x24CC},  {0x24CD,0x24E7,0x24CD},
1336
  {0x24CE,0x24E8,0x24CE},  {0x24CF,0x24E9,0x24CF},
1337
  {0x24EA,0x24EA,0x24EA},  {0x24EB,0x24EB,0x24EB},
1338
  {0x24EC,0x24EC,0x24EC},  {0x24ED,0x24ED,0x24ED},
1339
  {0x24EE,0x24EE,0x24EE},  {0x24EF,0x24EF,0x24EF},
1340
  {0x24F0,0x24F0,0x24F0},  {0x24F1,0x24F1,0x24F1},
1341
  {0x24F2,0x24F2,0x24F2},  {0x24F3,0x24F3,0x24F3},
1342
  {0x24F4,0x24F4,0x24F4},  {0x24F5,0x24F5,0x24F5},
1343
  {0x24F6,0x24F6,0x24F6},  {0x24F7,0x24F7,0x24F7},
1344
  {0x24F8,0x24F8,0x24F8},  {0x24F9,0x24F9,0x24F9},
1345
  {0x24FA,0x24FA,0x24FA},  {0x24FB,0x24FB,0x24FB},
1346
  {0x24FC,0x24FC,0x24FC},  {0x24FD,0x24FD,0x24FD},
1347
  {0x24FE,0x24FE,0x24FE},  {0x24FF,0x24FF,0x24FF}
1348
};
1349
1350
static MY_UNICASE_INFO planeFF[]={
1351
  {0xFF00,0xFF00,0xFF00},  {0xFF01,0xFF01,0xFF01},
1352
  {0xFF02,0xFF02,0xFF02},  {0xFF03,0xFF03,0xFF03},
1353
  {0xFF04,0xFF04,0xFF04},  {0xFF05,0xFF05,0xFF05},
1354
  {0xFF06,0xFF06,0xFF06},  {0xFF07,0xFF07,0xFF07},
1355
  {0xFF08,0xFF08,0xFF08},  {0xFF09,0xFF09,0xFF09},
1356
  {0xFF0A,0xFF0A,0xFF0A},  {0xFF0B,0xFF0B,0xFF0B},
1357
  {0xFF0C,0xFF0C,0xFF0C},  {0xFF0D,0xFF0D,0xFF0D},
1358
  {0xFF0E,0xFF0E,0xFF0E},  {0xFF0F,0xFF0F,0xFF0F},
1359
  {0xFF10,0xFF10,0xFF10},  {0xFF11,0xFF11,0xFF11},
1360
  {0xFF12,0xFF12,0xFF12},  {0xFF13,0xFF13,0xFF13},
1361
  {0xFF14,0xFF14,0xFF14},  {0xFF15,0xFF15,0xFF15},
1362
  {0xFF16,0xFF16,0xFF16},  {0xFF17,0xFF17,0xFF17},
1363
  {0xFF18,0xFF18,0xFF18},  {0xFF19,0xFF19,0xFF19},
1364
  {0xFF1A,0xFF1A,0xFF1A},  {0xFF1B,0xFF1B,0xFF1B},
1365
  {0xFF1C,0xFF1C,0xFF1C},  {0xFF1D,0xFF1D,0xFF1D},
1366
  {0xFF1E,0xFF1E,0xFF1E},  {0xFF1F,0xFF1F,0xFF1F},
1367
  {0xFF20,0xFF20,0xFF20},  {0xFF21,0xFF41,0xFF21},
1368
  {0xFF22,0xFF42,0xFF22},  {0xFF23,0xFF43,0xFF23},
1369
  {0xFF24,0xFF44,0xFF24},  {0xFF25,0xFF45,0xFF25},
1370
  {0xFF26,0xFF46,0xFF26},  {0xFF27,0xFF47,0xFF27},
1371
  {0xFF28,0xFF48,0xFF28},  {0xFF29,0xFF49,0xFF29},
1372
  {0xFF2A,0xFF4A,0xFF2A},  {0xFF2B,0xFF4B,0xFF2B},
1373
  {0xFF2C,0xFF4C,0xFF2C},  {0xFF2D,0xFF4D,0xFF2D},
1374
  {0xFF2E,0xFF4E,0xFF2E},  {0xFF2F,0xFF4F,0xFF2F},
1375
  {0xFF30,0xFF50,0xFF30},  {0xFF31,0xFF51,0xFF31},
1376
  {0xFF32,0xFF52,0xFF32},  {0xFF33,0xFF53,0xFF33},
1377
  {0xFF34,0xFF54,0xFF34},  {0xFF35,0xFF55,0xFF35},
1378
  {0xFF36,0xFF56,0xFF36},  {0xFF37,0xFF57,0xFF37},
1379
  {0xFF38,0xFF58,0xFF38},  {0xFF39,0xFF59,0xFF39},
1380
  {0xFF3A,0xFF5A,0xFF3A},  {0xFF3B,0xFF3B,0xFF3B},
1381
  {0xFF3C,0xFF3C,0xFF3C},  {0xFF3D,0xFF3D,0xFF3D},
1382
  {0xFF3E,0xFF3E,0xFF3E},  {0xFF3F,0xFF3F,0xFF3F},
1383
  {0xFF40,0xFF40,0xFF40},  {0xFF21,0xFF41,0xFF21},
1384
  {0xFF22,0xFF42,0xFF22},  {0xFF23,0xFF43,0xFF23},
1385
  {0xFF24,0xFF44,0xFF24},  {0xFF25,0xFF45,0xFF25},
1386
  {0xFF26,0xFF46,0xFF26},  {0xFF27,0xFF47,0xFF27},
1387
  {0xFF28,0xFF48,0xFF28},  {0xFF29,0xFF49,0xFF29},
1388
  {0xFF2A,0xFF4A,0xFF2A},  {0xFF2B,0xFF4B,0xFF2B},
1389
  {0xFF2C,0xFF4C,0xFF2C},  {0xFF2D,0xFF4D,0xFF2D},
1390
  {0xFF2E,0xFF4E,0xFF2E},  {0xFF2F,0xFF4F,0xFF2F},
1391
  {0xFF30,0xFF50,0xFF30},  {0xFF31,0xFF51,0xFF31},
1392
  {0xFF32,0xFF52,0xFF32},  {0xFF33,0xFF53,0xFF33},
1393
  {0xFF34,0xFF54,0xFF34},  {0xFF35,0xFF55,0xFF35},
1394
  {0xFF36,0xFF56,0xFF36},  {0xFF37,0xFF57,0xFF37},
1395
  {0xFF38,0xFF58,0xFF38},  {0xFF39,0xFF59,0xFF39},
1396
  {0xFF3A,0xFF5A,0xFF3A},  {0xFF5B,0xFF5B,0xFF5B},
1397
  {0xFF5C,0xFF5C,0xFF5C},  {0xFF5D,0xFF5D,0xFF5D},
1398
  {0xFF5E,0xFF5E,0xFF5E},  {0xFF5F,0xFF5F,0xFF5F},
1399
  {0xFF60,0xFF60,0xFF60},  {0xFF61,0xFF61,0xFF61},
1400
  {0xFF62,0xFF62,0xFF62},  {0xFF63,0xFF63,0xFF63},
1401
  {0xFF64,0xFF64,0xFF64},  {0xFF65,0xFF65,0xFF65},
1402
  {0xFF66,0xFF66,0xFF66},  {0xFF67,0xFF67,0xFF67},
1403
  {0xFF68,0xFF68,0xFF68},  {0xFF69,0xFF69,0xFF69},
1404
  {0xFF6A,0xFF6A,0xFF6A},  {0xFF6B,0xFF6B,0xFF6B},
1405
  {0xFF6C,0xFF6C,0xFF6C},  {0xFF6D,0xFF6D,0xFF6D},
1406
  {0xFF6E,0xFF6E,0xFF6E},  {0xFF6F,0xFF6F,0xFF6F},
1407
  {0xFF70,0xFF70,0xFF70},  {0xFF71,0xFF71,0xFF71},
1408
  {0xFF72,0xFF72,0xFF72},  {0xFF73,0xFF73,0xFF73},
1409
  {0xFF74,0xFF74,0xFF74},  {0xFF75,0xFF75,0xFF75},
1410
  {0xFF76,0xFF76,0xFF76},  {0xFF77,0xFF77,0xFF77},
1411
  {0xFF78,0xFF78,0xFF78},  {0xFF79,0xFF79,0xFF79},
1412
  {0xFF7A,0xFF7A,0xFF7A},  {0xFF7B,0xFF7B,0xFF7B},
1413
  {0xFF7C,0xFF7C,0xFF7C},  {0xFF7D,0xFF7D,0xFF7D},
1414
  {0xFF7E,0xFF7E,0xFF7E},  {0xFF7F,0xFF7F,0xFF7F},
1415
  {0xFF80,0xFF80,0xFF80},  {0xFF81,0xFF81,0xFF81},
1416
  {0xFF82,0xFF82,0xFF82},  {0xFF83,0xFF83,0xFF83},
1417
  {0xFF84,0xFF84,0xFF84},  {0xFF85,0xFF85,0xFF85},
1418
  {0xFF86,0xFF86,0xFF86},  {0xFF87,0xFF87,0xFF87},
1419
  {0xFF88,0xFF88,0xFF88},  {0xFF89,0xFF89,0xFF89},
1420
  {0xFF8A,0xFF8A,0xFF8A},  {0xFF8B,0xFF8B,0xFF8B},
1421
  {0xFF8C,0xFF8C,0xFF8C},  {0xFF8D,0xFF8D,0xFF8D},
1422
  {0xFF8E,0xFF8E,0xFF8E},  {0xFF8F,0xFF8F,0xFF8F},
1423
  {0xFF90,0xFF90,0xFF90},  {0xFF91,0xFF91,0xFF91},
1424
  {0xFF92,0xFF92,0xFF92},  {0xFF93,0xFF93,0xFF93},
1425
  {0xFF94,0xFF94,0xFF94},  {0xFF95,0xFF95,0xFF95},
1426
  {0xFF96,0xFF96,0xFF96},  {0xFF97,0xFF97,0xFF97},
1427
  {0xFF98,0xFF98,0xFF98},  {0xFF99,0xFF99,0xFF99},
1428
  {0xFF9A,0xFF9A,0xFF9A},  {0xFF9B,0xFF9B,0xFF9B},
1429
  {0xFF9C,0xFF9C,0xFF9C},  {0xFF9D,0xFF9D,0xFF9D},
1430
  {0xFF9E,0xFF9E,0xFF9E},  {0xFF9F,0xFF9F,0xFF9F},
1431
  {0xFFA0,0xFFA0,0xFFA0},  {0xFFA1,0xFFA1,0xFFA1},
1432
  {0xFFA2,0xFFA2,0xFFA2},  {0xFFA3,0xFFA3,0xFFA3},
1433
  {0xFFA4,0xFFA4,0xFFA4},  {0xFFA5,0xFFA5,0xFFA5},
1434
  {0xFFA6,0xFFA6,0xFFA6},  {0xFFA7,0xFFA7,0xFFA7},
1435
  {0xFFA8,0xFFA8,0xFFA8},  {0xFFA9,0xFFA9,0xFFA9},
1436
  {0xFFAA,0xFFAA,0xFFAA},  {0xFFAB,0xFFAB,0xFFAB},
1437
  {0xFFAC,0xFFAC,0xFFAC},  {0xFFAD,0xFFAD,0xFFAD},
1438
  {0xFFAE,0xFFAE,0xFFAE},  {0xFFAF,0xFFAF,0xFFAF},
1439
  {0xFFB0,0xFFB0,0xFFB0},  {0xFFB1,0xFFB1,0xFFB1},
1440
  {0xFFB2,0xFFB2,0xFFB2},  {0xFFB3,0xFFB3,0xFFB3},
1441
  {0xFFB4,0xFFB4,0xFFB4},  {0xFFB5,0xFFB5,0xFFB5},
1442
  {0xFFB6,0xFFB6,0xFFB6},  {0xFFB7,0xFFB7,0xFFB7},
1443
  {0xFFB8,0xFFB8,0xFFB8},  {0xFFB9,0xFFB9,0xFFB9},
1444
  {0xFFBA,0xFFBA,0xFFBA},  {0xFFBB,0xFFBB,0xFFBB},
1445
  {0xFFBC,0xFFBC,0xFFBC},  {0xFFBD,0xFFBD,0xFFBD},
1446
  {0xFFBE,0xFFBE,0xFFBE},  {0xFFBF,0xFFBF,0xFFBF},
1447
  {0xFFC0,0xFFC0,0xFFC0},  {0xFFC1,0xFFC1,0xFFC1},
1448
  {0xFFC2,0xFFC2,0xFFC2},  {0xFFC3,0xFFC3,0xFFC3},
1449
  {0xFFC4,0xFFC4,0xFFC4},  {0xFFC5,0xFFC5,0xFFC5},
1450
  {0xFFC6,0xFFC6,0xFFC6},  {0xFFC7,0xFFC7,0xFFC7},
1451
  {0xFFC8,0xFFC8,0xFFC8},  {0xFFC9,0xFFC9,0xFFC9},
1452
  {0xFFCA,0xFFCA,0xFFCA},  {0xFFCB,0xFFCB,0xFFCB},
1453
  {0xFFCC,0xFFCC,0xFFCC},  {0xFFCD,0xFFCD,0xFFCD},
1454
  {0xFFCE,0xFFCE,0xFFCE},  {0xFFCF,0xFFCF,0xFFCF},
1455
  {0xFFD0,0xFFD0,0xFFD0},  {0xFFD1,0xFFD1,0xFFD1},
1456
  {0xFFD2,0xFFD2,0xFFD2},  {0xFFD3,0xFFD3,0xFFD3},
1457
  {0xFFD4,0xFFD4,0xFFD4},  {0xFFD5,0xFFD5,0xFFD5},
1458
  {0xFFD6,0xFFD6,0xFFD6},  {0xFFD7,0xFFD7,0xFFD7},
1459
  {0xFFD8,0xFFD8,0xFFD8},  {0xFFD9,0xFFD9,0xFFD9},
1460
  {0xFFDA,0xFFDA,0xFFDA},  {0xFFDB,0xFFDB,0xFFDB},
1461
  {0xFFDC,0xFFDC,0xFFDC},  {0xFFDD,0xFFDD,0xFFDD},
1462
  {0xFFDE,0xFFDE,0xFFDE},  {0xFFDF,0xFFDF,0xFFDF},
1463
  {0xFFE0,0xFFE0,0xFFE0},  {0xFFE1,0xFFE1,0xFFE1},
1464
  {0xFFE2,0xFFE2,0xFFE2},  {0xFFE3,0xFFE3,0xFFE3},
1465
  {0xFFE4,0xFFE4,0xFFE4},  {0xFFE5,0xFFE5,0xFFE5},
1466
  {0xFFE6,0xFFE6,0xFFE6},  {0xFFE7,0xFFE7,0xFFE7},
1467
  {0xFFE8,0xFFE8,0xFFE8},  {0xFFE9,0xFFE9,0xFFE9},
1468
  {0xFFEA,0xFFEA,0xFFEA},  {0xFFEB,0xFFEB,0xFFEB},
1469
  {0xFFEC,0xFFEC,0xFFEC},  {0xFFED,0xFFED,0xFFED},
1470
  {0xFFEE,0xFFEE,0xFFEE},  {0xFFEF,0xFFEF,0xFFEF},
1471
  {0xFFF0,0xFFF0,0xFFF0},  {0xFFF1,0xFFF1,0xFFF1},
1472
  {0xFFF2,0xFFF2,0xFFF2},  {0xFFF3,0xFFF3,0xFFF3},
1473
  {0xFFF4,0xFFF4,0xFFF4},  {0xFFF5,0xFFF5,0xFFF5},
1474
  {0xFFF6,0xFFF6,0xFFF6},  {0xFFF7,0xFFF7,0xFFF7},
1475
  {0xFFF8,0xFFF8,0xFFF8},  {0xFFF9,0xFFF9,0xFFF9},
1476
  {0xFFFA,0xFFFA,0xFFFA},  {0xFFFB,0xFFFB,0xFFFB},
1477
  {0xFFFC,0xFFFC,0xFFFC},  {0xFFFD,0xFFFD,0xFFFD},
1478
  {0xFFFE,0xFFFE,0xFFFE},  {0xFFFF,0xFFFF,0xFFFF}
1479
};
1480
1481
MY_UNICASE_INFO *my_unicase_default[256]={
1482
 plane00, plane01, plane02, plane03, plane04, plane05,    NULL,    NULL,
1483
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1484
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1485
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, plane1E, plane1F,
1486
    NULL, plane21,    NULL,    NULL, plane24,    NULL,    NULL,    NULL,
1487
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1488
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1489
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1490
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1491
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1492
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1493
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1494
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1495
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1496
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1497
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1498
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1499
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1500
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1501
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1502
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1503
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1504
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1505
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1506
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1507
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1508
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1509
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1510
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1511
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1512
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1513
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, planeFF
1514
1515
};
1516
1517
1518
/*
1519
  Turkish lower/upper mapping:
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1520
  1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1 by brian
clean slate
1521
           0x0131 LATIN SMALL   LETTER DOTLESS I
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1522
  2. UPPER(0x0069 LATIN SMALL   LETTER I) ->
1 by brian
clean slate
1523
           0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1524
*/
1525
1526
static MY_UNICASE_INFO turk00[]=
1527
{
1528
  {0x0000,0x0000,0x0000},  {0x0001,0x0001,0x0001},
1529
  {0x0002,0x0002,0x0002},  {0x0003,0x0003,0x0003},
1530
  {0x0004,0x0004,0x0004},  {0x0005,0x0005,0x0005},
1531
  {0x0006,0x0006,0x0006},  {0x0007,0x0007,0x0007},
1532
  {0x0008,0x0008,0x0008},  {0x0009,0x0009,0x0009},
1533
  {0x000A,0x000A,0x000A},  {0x000B,0x000B,0x000B},
1534
  {0x000C,0x000C,0x000C},  {0x000D,0x000D,0x000D},
1535
  {0x000E,0x000E,0x000E},  {0x000F,0x000F,0x000F},
1536
  {0x0010,0x0010,0x0010},  {0x0011,0x0011,0x0011},
1537
  {0x0012,0x0012,0x0012},  {0x0013,0x0013,0x0013},
1538
  {0x0014,0x0014,0x0014},  {0x0015,0x0015,0x0015},
1539
  {0x0016,0x0016,0x0016},  {0x0017,0x0017,0x0017},
1540
  {0x0018,0x0018,0x0018},  {0x0019,0x0019,0x0019},
1541
  {0x001A,0x001A,0x001A},  {0x001B,0x001B,0x001B},
1542
  {0x001C,0x001C,0x001C},  {0x001D,0x001D,0x001D},
1543
  {0x001E,0x001E,0x001E},  {0x001F,0x001F,0x001F},
1544
  {0x0020,0x0020,0x0020},  {0x0021,0x0021,0x0021},
1545
  {0x0022,0x0022,0x0022},  {0x0023,0x0023,0x0023},
1546
  {0x0024,0x0024,0x0024},  {0x0025,0x0025,0x0025},
1547
  {0x0026,0x0026,0x0026},  {0x0027,0x0027,0x0027},
1548
  {0x0028,0x0028,0x0028},  {0x0029,0x0029,0x0029},
1549
  {0x002A,0x002A,0x002A},  {0x002B,0x002B,0x002B},
1550
  {0x002C,0x002C,0x002C},  {0x002D,0x002D,0x002D},
1551
  {0x002E,0x002E,0x002E},  {0x002F,0x002F,0x002F},
1552
  {0x0030,0x0030,0x0030},  {0x0031,0x0031,0x0031},
1553
  {0x0032,0x0032,0x0032},  {0x0033,0x0033,0x0033},
1554
  {0x0034,0x0034,0x0034},  {0x0035,0x0035,0x0035},
1555
  {0x0036,0x0036,0x0036},  {0x0037,0x0037,0x0037},
1556
  {0x0038,0x0038,0x0038},  {0x0039,0x0039,0x0039},
1557
  {0x003A,0x003A,0x003A},  {0x003B,0x003B,0x003B},
1558
  {0x003C,0x003C,0x003C},  {0x003D,0x003D,0x003D},
1559
  {0x003E,0x003E,0x003E},  {0x003F,0x003F,0x003F},
1560
  {0x0040,0x0040,0x0040},  {0x0041,0x0061,0x0041},
1561
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
1562
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
1563
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
1564
  {0x0048,0x0068,0x0048},  {0x0049,0x0131,0x0049},
1565
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
1566
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
1567
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
1568
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
1569
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
1570
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
1571
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
1572
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
1573
  {0x005A,0x007A,0x005A},  {0x005B,0x005B,0x005B},
1574
  {0x005C,0x005C,0x005C},  {0x005D,0x005D,0x005D},
1575
  {0x005E,0x005E,0x005E},  {0x005F,0x005F,0x005F},
1576
  {0x0060,0x0060,0x0060},  {0x0041,0x0061,0x0041},
1577
  {0x0042,0x0062,0x0042},  {0x0043,0x0063,0x0043},
1578
  {0x0044,0x0064,0x0044},  {0x0045,0x0065,0x0045},
1579
  {0x0046,0x0066,0x0046},  {0x0047,0x0067,0x0047},
1580
  {0x0048,0x0068,0x0048},  {0x0130,0x0069,0x0049},
1581
  {0x004A,0x006A,0x004A},  {0x004B,0x006B,0x004B},
1582
  {0x004C,0x006C,0x004C},  {0x004D,0x006D,0x004D},
1583
  {0x004E,0x006E,0x004E},  {0x004F,0x006F,0x004F},
1584
  {0x0050,0x0070,0x0050},  {0x0051,0x0071,0x0051},
1585
  {0x0052,0x0072,0x0052},  {0x0053,0x0073,0x0053},
1586
  {0x0054,0x0074,0x0054},  {0x0055,0x0075,0x0055},
1587
  {0x0056,0x0076,0x0056},  {0x0057,0x0077,0x0057},
1588
  {0x0058,0x0078,0x0058},  {0x0059,0x0079,0x0059},
1589
  {0x005A,0x007A,0x005A},  {0x007B,0x007B,0x007B},
1590
  {0x007C,0x007C,0x007C},  {0x007D,0x007D,0x007D},
1591
  {0x007E,0x007E,0x007E},  {0x007F,0x007F,0x007F},
1592
  {0x0080,0x0080,0x0080},  {0x0081,0x0081,0x0081},
1593
  {0x0082,0x0082,0x0082},  {0x0083,0x0083,0x0083},
1594
  {0x0084,0x0084,0x0084},  {0x0085,0x0085,0x0085},
1595
  {0x0086,0x0086,0x0086},  {0x0087,0x0087,0x0087},
1596
  {0x0088,0x0088,0x0088},  {0x0089,0x0089,0x0089},
1597
  {0x008A,0x008A,0x008A},  {0x008B,0x008B,0x008B},
1598
  {0x008C,0x008C,0x008C},  {0x008D,0x008D,0x008D},
1599
  {0x008E,0x008E,0x008E},  {0x008F,0x008F,0x008F},
1600
  {0x0090,0x0090,0x0090},  {0x0091,0x0091,0x0091},
1601
  {0x0092,0x0092,0x0092},  {0x0093,0x0093,0x0093},
1602
  {0x0094,0x0094,0x0094},  {0x0095,0x0095,0x0095},
1603
  {0x0096,0x0096,0x0096},  {0x0097,0x0097,0x0097},
1604
  {0x0098,0x0098,0x0098},  {0x0099,0x0099,0x0099},
1605
  {0x009A,0x009A,0x009A},  {0x009B,0x009B,0x009B},
1606
  {0x009C,0x009C,0x009C},  {0x009D,0x009D,0x009D},
1607
  {0x009E,0x009E,0x009E},  {0x009F,0x009F,0x009F},
1608
  {0x00A0,0x00A0,0x00A0},  {0x00A1,0x00A1,0x00A1},
1609
  {0x00A2,0x00A2,0x00A2},  {0x00A3,0x00A3,0x00A3},
1610
  {0x00A4,0x00A4,0x00A4},  {0x00A5,0x00A5,0x00A5},
1611
  {0x00A6,0x00A6,0x00A6},  {0x00A7,0x00A7,0x00A7},
1612
  {0x00A8,0x00A8,0x00A8},  {0x00A9,0x00A9,0x00A9},
1613
  {0x00AA,0x00AA,0x00AA},  {0x00AB,0x00AB,0x00AB},
1614
  {0x00AC,0x00AC,0x00AC},  {0x00AD,0x00AD,0x00AD},
1615
  {0x00AE,0x00AE,0x00AE},  {0x00AF,0x00AF,0x00AF},
1616
  {0x00B0,0x00B0,0x00B0},  {0x00B1,0x00B1,0x00B1},
1617
  {0x00B2,0x00B2,0x00B2},  {0x00B3,0x00B3,0x00B3},
1618
  {0x00B4,0x00B4,0x00B4},  {0x039C,0x00B5,0x039C},
1619
  {0x00B6,0x00B6,0x00B6},  {0x00B7,0x00B7,0x00B7},
1620
  {0x00B8,0x00B8,0x00B8},  {0x00B9,0x00B9,0x00B9},
1621
  {0x00BA,0x00BA,0x00BA},  {0x00BB,0x00BB,0x00BB},
1622
  {0x00BC,0x00BC,0x00BC},  {0x00BD,0x00BD,0x00BD},
1623
  {0x00BE,0x00BE,0x00BE},  {0x00BF,0x00BF,0x00BF},
1624
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
1625
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
1626
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
1627
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
1628
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
1629
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
1630
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
1631
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
1632
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
1633
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
1634
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
1635
  {0x00D6,0x00F6,0x004F},  {0x00D7,0x00D7,0x00D7},
1636
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
1637
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
1638
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
1639
  {0x00DE,0x00FE,0x00DE},  {0x00DF,0x00DF,0x00DF},
1640
  {0x00C0,0x00E0,0x0041},  {0x00C1,0x00E1,0x0041},
1641
  {0x00C2,0x00E2,0x0041},  {0x00C3,0x00E3,0x0041},
1642
  {0x00C4,0x00E4,0x0041},  {0x00C5,0x00E5,0x0041},
1643
  {0x00C6,0x00E6,0x00C6},  {0x00C7,0x00E7,0x0043},
1644
  {0x00C8,0x00E8,0x0045},  {0x00C9,0x00E9,0x0045},
1645
  {0x00CA,0x00EA,0x0045},  {0x00CB,0x00EB,0x0045},
1646
  {0x00CC,0x00EC,0x0049},  {0x00CD,0x00ED,0x0049},
1647
  {0x00CE,0x00EE,0x0049},  {0x00CF,0x00EF,0x0049},
1648
  {0x00D0,0x00F0,0x00D0},  {0x00D1,0x00F1,0x004E},
1649
  {0x00D2,0x00F2,0x004F},  {0x00D3,0x00F3,0x004F},
1650
  {0x00D4,0x00F4,0x004F},  {0x00D5,0x00F5,0x004F},
1651
  {0x00D6,0x00F6,0x004F},  {0x00F7,0x00F7,0x00F7},
1652
  {0x00D8,0x00F8,0x00D8},  {0x00D9,0x00F9,0x0055},
1653
  {0x00DA,0x00FA,0x0055},  {0x00DB,0x00FB,0x0055},
1654
  {0x00DC,0x00FC,0x0055},  {0x00DD,0x00FD,0x0059},
1655
  {0x00DE,0x00FE,0x00DE},  {0x0178,0x00FF,0x0059}
1656
};
1657
1658
1659
1660
MY_UNICASE_INFO *my_unicase_turkish[256]=
1661
{
1662
  turk00, plane01, plane02, plane03, plane04, plane05,    NULL,    NULL,
1663
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1664
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1665
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, plane1E, plane1F,
1666
    NULL, plane21,    NULL,    NULL, plane24,    NULL,    NULL,    NULL,
1667
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1668
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1669
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1670
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1671
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1672
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1673
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1674
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1675
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1676
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1677
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1678
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1679
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1680
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1681
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1682
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1683
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1684
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1685
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1686
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1687
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1688
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1689
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1690
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1691
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1692
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,
1693
    NULL,    NULL,    NULL,    NULL,    NULL,    NULL,    NULL, planeFF
1694
};
1695
1696
1697
1698
/**
1699
  Compare string against string with wildcard
1700
  This function is used for utf8mb3, utf8mb4, ucs2, utf16, utf32
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1701
1 by brian
clean slate
1702
  @param cs Character set.
1703
  @str      String.
1704
  @str_end  End of string.
1705
  @wildstr  Wildcard pattern.
1706
  @wildend  End of wildcard pattern.
1707
  @escape   Escape characters, typically \\.
1708
  @w_one    "One character", typically _.
1709
  @w_many   "Many characters", typically %.
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1710
1 by brian
clean slate
1711
  @return Comparison result.
1712
    @retval  0 if matched.
1713
    @retval -1 if not matched with wildcard.
1714
    @retval  1 if matched with wildcard.
1715
*/
1716
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
1717
int my_wildcmp_unicode(const CHARSET_INFO * const cs,
1 by brian
clean slate
1718
		       const char *str,const char *str_end,
1719
		       const char *wildstr,const char *wildend,
1720
		       int escape, int w_one, int w_many,
1721
		       MY_UNICASE_INFO **weights)
1722
{
1723
  int result= -1;			/* Not found, using wildcards */
77.1.71 by Monty Taylor
Uninitialized use.
1724
  my_wc_t s_wc=0, w_wc=0;
1 by brian
clean slate
1725
  int scan, plane;
236.3.9 by Andrey Hristov
- Fix build of exotic, mostly non-western, charsets (--with-extra-charsets)
1726
  my_charset_conv_mb_wc mb_wc;
1 by brian
clean slate
1727
  mb_wc= cs->cset->mb_wc;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1728
1 by brian
clean slate
1729
  while (wildstr != wildend)
1730
  {
1731
    while (1)
1732
    {
276 by Brian Aker
Cleaned out my_bool from strings.
1733
      bool escaped= 0;
481 by Brian Aker
Remove all of uchar.
1734
      if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1735
                       (const unsigned char*)wildend)) <= 0)
1 by brian
clean slate
1736
        return 1;
1737
1738
      if (w_wc == (my_wc_t)w_many)
1739
      {
1740
        result= 1;				/* Found an anchor char */
1741
        break;
1742
      }
1743
1744
      wildstr+= scan;
1745
      if (w_wc ==  (my_wc_t)escape && wildstr < wildend)
1746
      {
481 by Brian Aker
Remove all of uchar.
1747
        if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1748
                         (const unsigned char*)wildend)) <= 0)
1 by brian
clean slate
1749
          return 1;
1750
        wildstr+= scan;
1751
        escaped= 1;
1752
      }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1753
481 by Brian Aker
Remove all of uchar.
1754
      if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1755
                       (const unsigned char*)str_end)) <= 0)
1 by brian
clean slate
1756
        return 1;
1757
      str+= scan;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1758
1 by brian
clean slate
1759
      if (!escaped && w_wc == (my_wc_t)w_one)
1760
      {
1761
        result= 1;				/* Found an anchor char */
1762
      }
1763
      else
1764
      {
1765
        if (weights)
1766
        {
1767
          if (s_wc < 0x10000)
1768
          {
1769
            plane=(s_wc>>8) & 0xFF;
1770
            s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1771
          }
1772
          if (w_wc < 0x10000)
1773
          {
1774
            plane=(w_wc>>8) & 0xFF;
1775
            w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1776
          }
1777
        }
1778
        if (s_wc != w_wc)
1779
          return 1;				/* No match */
1780
      }
1781
      if (wildstr == wildend)
1782
	return (str != str_end);		/* Match if both are at end */
1783
    }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1784
1785
1 by brian
clean slate
1786
    if (w_wc == (my_wc_t)w_many)
1787
    {						/* Found w_many */
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1788
1 by brian
clean slate
1789
      /* Remove any '%' and '_' from the wild search string */
1790
      for (; wildstr != wildend ;)
1791
      {
481 by Brian Aker
Remove all of uchar.
1792
        if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1793
                         (const unsigned char*)wildend)) <= 0)
1 by brian
clean slate
1794
          return 1;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1795
1 by brian
clean slate
1796
	if (w_wc == (my_wc_t)w_many)
1797
	{
1798
	  wildstr+= scan;
1799
	  continue;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1800
	}
1801
1 by brian
clean slate
1802
	if (w_wc == (my_wc_t)w_one)
1803
	{
1804
	  wildstr+= scan;
481 by Brian Aker
Remove all of uchar.
1805
          if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1806
                           (const unsigned char*)str_end)) <=0)
1 by brian
clean slate
1807
            return 1;
1808
          str+= scan;
1809
	  continue;
1810
	}
1811
	break;					/* Not a wild character */
1812
      }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1813
1 by brian
clean slate
1814
      if (wildstr == wildend)
1815
	return 0;				/* Ok if w_many is last */
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1816
1 by brian
clean slate
1817
      if (str == str_end)
1818
	return -1;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1819
481 by Brian Aker
Remove all of uchar.
1820
      if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1821
                       (const unsigned char*)wildend)) <=0)
1 by brian
clean slate
1822
        return 1;
1823
      wildstr+= scan;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1824
1 by brian
clean slate
1825
      if (w_wc ==  (my_wc_t)escape)
1826
      {
1827
        if (wildstr < wildend)
1828
        {
481 by Brian Aker
Remove all of uchar.
1829
          if ((scan= mb_wc(cs, &w_wc, (const unsigned char*)wildstr,
1830
                           (const unsigned char*)wildend)) <=0)
1 by brian
clean slate
1831
            return 1;
1832
          wildstr+= scan;
1833
        }
1834
      }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1835
1 by brian
clean slate
1836
      while (1)
1837
      {
1838
        /* Skip until the first character from wildstr is found */
1839
        while (str != str_end)
1840
        {
481 by Brian Aker
Remove all of uchar.
1841
          if ((scan= mb_wc(cs, &s_wc, (const unsigned char*)str,
1842
                           (const unsigned char*)str_end)) <=0)
1 by brian
clean slate
1843
            return 1;
1844
          if (weights)
1845
          {
1846
            plane=(s_wc>>8) & 0xFF;
1847
            s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1848
            plane=(w_wc>>8) & 0xFF;
1849
            w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1850
          }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1851
1 by brian
clean slate
1852
          if (s_wc == w_wc)
1853
            break;
1854
          str+= scan;
1855
        }
1856
        if (str == str_end)
1857
          return -1;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1858
1 by brian
clean slate
1859
        str+= scan;
1860
        result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
1861
                                   escape, w_one, w_many,
1862
                                   weights);
1863
        if (result <= 0)
1864
          return result;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
1865
      }
1 by brian
clean slate
1866
    }
1867
  }
1868
  return (str != str_end ? 1 : 0);
1869
}
1870
1871
/*
1872
  We consider bytes with code more than 127 as a letter.
1873
  This garantees that word boundaries work fine with regular
1874
  expressions. Note, there is no need to mark byte 255  as a
1875
  letter, it is illegal byte in UTF8.
1876
*/
481 by Brian Aker
Remove all of uchar.
1877
static unsigned char ctype_utf8mb4[]=
1 by brian
clean slate
1878
{
1879
    0,
1880
   32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
1881
   32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
1882
   72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1883
  132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
1884
   16,129,129,129,129,129,129,  1,  1,  1,  1,  1,  1,  1,  1,  1,
1885
    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 16, 16, 16, 16, 16,
1886
   16,130,130,130,130,130,130,  2,  2,  2,  2,  2,  2,  2,  2,  2,
1887
    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 16, 16, 16, 16, 32,
1888
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1889
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1890
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1891
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1892
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1893
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1894
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
1895
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0
1896
};
1897
1898
481 by Brian Aker
Remove all of uchar.
1899
static unsigned char to_lower_utf8mb4[]=
1 by brian
clean slate
1900
{
1901
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
1902
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1903
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1904
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1905
   64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1906
  112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
1907
   96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
1908
  112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
1909
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1910
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1911
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1912
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1913
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1914
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1915
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1916
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1917
};
1918
1919
481 by Brian Aker
Remove all of uchar.
1920
static unsigned char to_upper_utf8mb4[]=
1 by brian
clean slate
1921
{
1922
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
1923
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1924
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1925
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1926
   64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1927
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1928
   96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1929
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
1930
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1931
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
1932
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1933
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
1934
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
1935
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
1936
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
1937
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
1938
};
1939
1940
1941
static inline int
481 by Brian Aker
Remove all of uchar.
1942
bincmp_utf8mb4(const unsigned char *s, const unsigned char *se,
1943
               const unsigned char *t, const unsigned char *te)
1 by brian
clean slate
1944
{
1945
  int slen= (int) (se - s), tlen= (int) (te - t);
398.1.4 by Monty Taylor
Renamed max/min.
1946
  int len= cmin(slen, tlen);
1 by brian
clean slate
1947
  int cmp= memcmp(s, t, len);
1948
  return cmp ? cmp : slen - tlen;
1949
}
1950
1951
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
1952
int
1953
my_mb_wc_utf8mb4(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
1954
                 my_wc_t * pwc, const unsigned char *s, const unsigned char *e)
1 by brian
clean slate
1955
{
481 by Brian Aker
Remove all of uchar.
1956
  unsigned char c;
1 by brian
clean slate
1957
1958
  if (s >= e)
1959
    return MY_CS_TOOSMALL;
1960
1961
  c= s[0];
1962
  if (c < 0x80)
1963
  {
1964
    *pwc= c;
1965
    return 1;
1966
  }
1967
  else if (c < 0xc2)
1968
    return MY_CS_ILSEQ;
1969
  else if (c < 0xe0)
1970
  {
1971
    if (s + 2 > e) /* We need 2 characters */
1972
      return MY_CS_TOOSMALL2;
1973
1974
    if (!((s[1] ^ 0x80) < 0x40))
1975
      return MY_CS_ILSEQ;
1976
1977
    *pwc= ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
1978
    return 2;
1979
  }
1980
  else if (c < 0xf0)
1981
  {
1982
    if (s + 3 > e) /* We need 3 characters */
1983
      return MY_CS_TOOSMALL3;
1984
1985
    if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
1986
          (c >= 0xe1 || s[1] >= 0xa0)))
1987
      return MY_CS_ILSEQ;
1988
1989
    *pwc= ((my_wc_t) (c & 0x0f) << 12)   |
1990
          ((my_wc_t) (s[1] ^ 0x80) << 6) |
1991
           (my_wc_t) (s[2] ^ 0x80);
1992
    return 3;
1993
  }
1994
  else if (c < 0xf8)
1995
  {
1996
    if (s + 4 > e) /* We need 4 characters */
1997
      return MY_CS_TOOSMALL4;
1998
1999
    if (!((s[1] ^ 0x80) < 0x40 &&
2000
          (s[2] ^ 0x80) < 0x40 &&
2001
          (s[3] ^ 0x80) < 0x40 &&
2002
          (c >= 0xf1 || s[1] >= 0x90)))
2003
      return MY_CS_ILSEQ;
2004
    *pwc = ((my_wc_t) (c & 0x07) << 18)    |
2005
           ((my_wc_t) (s[1] ^ 0x80) << 12) |
2006
           ((my_wc_t) (s[2] ^ 0x80) << 6)  |
2007
            (my_wc_t) (s[3] ^ 0x80);
2008
    return 4;
2009
  }
2010
  return MY_CS_ILSEQ;
2011
}
2012
2013
2014
/*
2015
  The same as above, but without range check
2016
  for example, for a null-terminated string
2017
*/
2018
static int
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2019
my_mb_wc_utf8mb4_no_range(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
2020
                          my_wc_t *pwc, const unsigned char *s)
1 by brian
clean slate
2021
{
481 by Brian Aker
Remove all of uchar.
2022
  unsigned char c;
1 by brian
clean slate
2023
2024
  c= s[0];
2025
  if (c < 0x80)
2026
  {
2027
    *pwc = c;
2028
    return 1;
2029
  }
2030
2031
  if (c < 0xc2)
2032
    return MY_CS_ILSEQ;
2033
2034
  if (c < 0xe0)
2035
  {
2036
    if (!((s[1] ^ 0x80) < 0x40))
2037
      return MY_CS_ILSEQ;
2038
2039
    *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2040
    return 2;
2041
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2042
1 by brian
clean slate
2043
  if (c < 0xf0)
2044
  {
2045
    if (!((s[1] ^ 0x80) < 0x40 &&
2046
          (s[2] ^ 0x80) < 0x40 &&
2047
          (c >= 0xe1 || s[1] >= 0xa0)))
2048
      return MY_CS_ILSEQ;
2049
    *pwc= ((my_wc_t) (c & 0x0f) << 12)   |
2050
          ((my_wc_t) (s[1] ^ 0x80) << 6) |
2051
           (my_wc_t) (s[2] ^ 0x80);
2052
2053
    return 3;
2054
  }
2055
  else if (c < 0xf8)
2056
  {
2057
    if (!((s[1] ^ 0x80) < 0x40 &&
2058
          (s[2] ^ 0x80) < 0x40 &&
2059
          (s[3] ^ 0x80) < 0x40 &&
2060
          (c >= 0xf1 || s[1] >= 0x90)))
2061
      return MY_CS_ILSEQ;
2062
    *pwc = ((my_wc_t) (c & 0x07) << 18)    |
2063
           ((my_wc_t) (s[1] ^ 0x80) << 12) |
2064
           ((my_wc_t) (s[2] ^ 0x80) << 6)  |
2065
            (my_wc_t) (s[3] ^ 0x80);
2066
    return 4;
2067
  }
2068
  return MY_CS_ILSEQ;
2069
}
2070
2071
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2072
int
2073
my_wc_mb_utf8mb4(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
2074
                 my_wc_t wc, unsigned char *r, unsigned char *e)
1 by brian
clean slate
2075
{
2076
  int count;
2077
2078
  if (r >= e)
2079
    return MY_CS_TOOSMALL;
2080
2081
  if (wc < 0x80)
2082
    count= 1;
2083
  else if (wc < 0x800)
2084
    count= 2;
2085
  else if (wc < 0x10000)
2086
    count= 3;
2087
  else if (wc < 0x200000)
2088
    count= 4;
2089
  else return MY_CS_ILUNI;
2090
2091
  if (r + count > e)
2092
    return MY_CS_TOOSMALLN(count);
2093
2094
  switch (count) {
2095
    /* Fall through all cases!!! */
481 by Brian Aker
Remove all of uchar.
2096
    case 4: r[3] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
2097
    case 3: r[2] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
2098
    case 2: r[1] = (unsigned char) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
2099
    case 1: r[0] = (unsigned char) wc;
1 by brian
clean slate
2100
  }
2101
  return count;
2102
}
2103
2104
2105
/*
2106
  The same as above, but without range check.
2107
*/
2108
static int
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2109
my_wc_mb_utf8mb4_no_range(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
2110
                          my_wc_t wc, unsigned char *r)
1 by brian
clean slate
2111
{
2112
  int count;
2113
2114
  if (wc < 0x80)
2115
    count= 1;
2116
  else if (wc < 0x800)
2117
    count= 2;
2118
  else if (wc < 0x10000)
2119
    count= 3;
2120
  else if (wc < 0x200000)
2121
    count= 4;
2122
  else
2123
    return MY_CS_ILUNI;
2124
2125
  switch (count)
2126
  {
2127
    /* Fall through all cases!!! */
481 by Brian Aker
Remove all of uchar.
2128
    case 4: r[3]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x10000;
2129
    case 3: r[2]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
2130
    case 2: r[1]= (unsigned char) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
2131
    case 1: r[0]= (unsigned char) wc;
1 by brian
clean slate
2132
  }
2133
  return count;
2134
}
2135
2136
2137
#define REPLACEMENT_CHAR 0xFFFD;
2138
2139
2140
static inline void
2141
my_tolower_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2142
{
2143
  int page= *wc >> 8;
2144
  if (page < 256 && uni_plane[page])
2145
    *wc= uni_plane[page][*wc & 0xFF].tolower;
2146
}
2147
2148
2149
static inline void
2150
my_toupper_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2151
{
2152
  int page= *wc >> 8;
2153
  if (page < 256 && uni_plane[page])
2154
    *wc= uni_plane[page][*wc & 0xFF].toupper;
2155
}
2156
2157
2158
static inline void
2159
my_tosort_utf8mb4(MY_UNICASE_INFO **uni_plane, my_wc_t *wc)
2160
{
2161
  int page= *wc >> 8;
2162
  if (page < 256)
2163
  {
2164
    if (uni_plane[page])
2165
      *wc= uni_plane[page][*wc & 0xFF].sort;
2166
  }
2167
  else
2168
  {
2169
    *wc= REPLACEMENT_CHAR;
2170
  }
2171
}
2172
2173
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2174
size_t
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2175
my_caseup_utf8mb4(const CHARSET_INFO * const cs, char *src, size_t srclen,
1 by brian
clean slate
2176
                  char *dst, size_t dstlen)
2177
{
2178
  my_wc_t wc;
2179
  int srcres, dstres;
2180
  char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2181
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
51.3.9 by Jay Pipes
Removal of DBUG from strings/ library
2182
  assert(src != dst || cs->caseup_multiply == 1);
1 by brian
clean slate
2183
2184
  while ((src < srcend) &&
2185
         (srcres= my_mb_wc_utf8mb4(cs, &wc,
481 by Brian Aker
Remove all of uchar.
2186
                                   (unsigned char *) src, (unsigned char*) srcend)) > 0)
1 by brian
clean slate
2187
  {
2188
    my_toupper_utf8mb4(uni_plane, &wc);
481 by Brian Aker
Remove all of uchar.
2189
    if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
1 by brian
clean slate
2190
      break;
2191
    src+= srcres;
2192
    dst+= dstres;
2193
  }
2194
  return (size_t) (dst - dst0);
2195
}
2196
2197
2198
static inline void
482 by Brian Aker
Remove uint.
2199
my_hash_add(uint32_t *n1, uint32_t *n2, uint32_t ch)
1 by brian
clean slate
2200
{
2201
  n1[0]^= (((n1[0] & 63) + n2[0]) * (ch)) + (n1[0] << 8);
2202
  n2[0]+= 3;
2203
}
2204
2205
612.2.6 by Monty Taylor
OpenSolaris builds.
2206
extern "C"
612.2.11 by Monty Taylor
Cleanup up the extern+static combo (plus some attributes because I got bored.)
2207
void my_hash_sort_utf8mb4(const CHARSET_INFO * const cs,
2208
                          const unsigned char *s, size_t slen,
2209
                          uint32_t *n1, uint32_t *n2)
1 by brian
clean slate
2210
{
2211
  my_wc_t wc;
2212
  int res;
481 by Brian Aker
Remove all of uchar.
2213
  const unsigned char *e= s + slen;
1 by brian
clean slate
2214
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2215
2216
  /*
2217
    Remove end space. We do this to be able to compare
2218
    'A ' and 'A' as identical
2219
  */
2220
  while (e > s && e[-1] == ' ')
2221
    e--;
2222
481 by Brian Aker
Remove all of uchar.
2223
  while ((res= my_mb_wc_utf8mb4(cs, &wc, (const unsigned char*) s, (const unsigned char*) e)) > 0)
1 by brian
clean slate
2224
  {
2225
    my_tosort_utf8mb4(uni_plane, &wc);
895 by Brian Aker
Completion (?) of uint conversion.
2226
    my_hash_add(n1, n2, (uint32_t) (wc & 0xFF));
2227
    my_hash_add(n1, n2, (uint32_t) (wc >> 8)  & 0xFF);
1 by brian
clean slate
2228
    if (wc > 0xFFFF)
2229
    {
2230
       /*
2231
        Put the highest byte only if it is non-zero,
2232
        to make hash functions for utf8mb3 and utf8mb4
2233
        compatible for BMP characters.
2234
        This is useful to keep order of records in
2235
        test results, e.g. for "SHOW GRANTS".
2236
      */
895 by Brian Aker
Completion (?) of uint conversion.
2237
      my_hash_add(n1, n2, (uint32_t) (wc >> 16) & 0xFF);
1 by brian
clean slate
2238
    }
2239
    s+= res;
2240
  }
2241
}
2242
2243
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2244
size_t
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2245
my_caseup_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
1 by brian
clean slate
2246
{
2247
  my_wc_t wc;
2248
  int srcres, dstres;
2249
  char *dst= src, *dst0= src;
2250
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
51.3.9 by Jay Pipes
Removal of DBUG from strings/ library
2251
  assert(cs->caseup_multiply == 1);
1 by brian
clean slate
2252
2253
  while (*src &&
481 by Brian Aker
Remove all of uchar.
2254
         (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
1 by brian
clean slate
2255
  {
2256
    my_toupper_utf8mb4(uni_plane, &wc);
481 by Brian Aker
Remove all of uchar.
2257
    if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
1 by brian
clean slate
2258
      break;
2259
    src+= srcres;
2260
    dst+= dstres;
2261
  }
2262
  *dst= '\0';
2263
  return (size_t) (dst - dst0);
2264
}
2265
2266
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2267
size_t
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2268
my_casedn_utf8mb4(const CHARSET_INFO * const cs,
1 by brian
clean slate
2269
                  char *src, size_t srclen,
2270
                  char *dst, size_t dstlen)
2271
{
2272
  my_wc_t wc;
2273
  int srcres, dstres;
2274
  char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2275
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
51.3.9 by Jay Pipes
Removal of DBUG from strings/ library
2276
  assert(src != dst || cs->casedn_multiply == 1);
1 by brian
clean slate
2277
2278
  while ((src < srcend) &&
2279
         (srcres= my_mb_wc_utf8mb4(cs, &wc,
481 by Brian Aker
Remove all of uchar.
2280
                                   (unsigned char*) src, (unsigned char*) srcend)) > 0)
1 by brian
clean slate
2281
  {
2282
    my_tolower_utf8mb4(uni_plane, &wc);
481 by Brian Aker
Remove all of uchar.
2283
    if ((dstres= my_wc_mb_utf8mb4(cs, wc, (unsigned char*) dst, (unsigned char*) dstend)) <= 0)
1 by brian
clean slate
2284
      break;
2285
    src+= srcres;
2286
    dst+= dstres;
2287
  }
2288
  return (size_t) (dst - dst0);
2289
}
2290
2291
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2292
size_t
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2293
my_casedn_str_utf8mb4(const CHARSET_INFO * const cs, char *src)
1 by brian
clean slate
2294
{
2295
  my_wc_t wc;
2296
  int srcres, dstres;
2297
  char *dst= src, *dst0= src;
2298
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
51.3.9 by Jay Pipes
Removal of DBUG from strings/ library
2299
  assert(cs->casedn_multiply == 1);
1 by brian
clean slate
2300
2301
  while (*src &&
481 by Brian Aker
Remove all of uchar.
2302
         (srcres= my_mb_wc_utf8mb4_no_range(cs, &wc, (unsigned char *) src)) > 0)
1 by brian
clean slate
2303
  {
2304
    my_tolower_utf8mb4(uni_plane, &wc);
481 by Brian Aker
Remove all of uchar.
2305
    if ((dstres= my_wc_mb_utf8mb4_no_range(cs, wc, (unsigned char*) dst)) <= 0)
1 by brian
clean slate
2306
      break;
2307
    src+= srcres;
2308
    dst+= dstres;
2309
  }
2310
2311
  /*
2312
   In rare cases lower string can be shorter than
2313
   the original string, for example:
2314
2315
   "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
2316
   (which is 0xC4B0 in utf8, i.e. two bytes)
2317
2318
   is converted into
2319
2320
   "U+0069 LATIN SMALL LETTER I"
2321
   (which is 0x69 in utf8, i.e. one byte)
2322
2323
   So, we need to put '\0' terminator after converting.
2324
  */
2325
2326
  *dst= '\0';
2327
  return (size_t) (dst - dst0);
2328
}
2329
2330
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2331
int
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2332
my_strnncoll_utf8mb4(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
2333
                     const unsigned char *s, size_t slen,
2334
                     const unsigned char *t, size_t tlen,
276 by Brian Aker
Cleaned out my_bool from strings.
2335
                     bool t_is_prefix)
1 by brian
clean slate
2336
{
435.1.2 by Monty
Fixed older compiler warning.
2337
  my_wc_t s_wc=0;
2338
  my_wc_t t_wc=0;
481 by Brian Aker
Remove all of uchar.
2339
  const unsigned char *se= s + slen;
2340
  const unsigned char *te= t + tlen;
1 by brian
clean slate
2341
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2342
2343
  while ( s < se && t < te )
2344
  {
2345
    int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2346
    int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2347
2348
    if ( s_res <= 0 || t_res <= 0 )
2349
    {
2350
      /* Incorrect string, compare bytewise */
2351
      return bincmp_utf8mb4(s, se, t, te);
2352
    }
2353
2354
    my_tosort_utf8mb4(uni_plane, &s_wc);
2355
    my_tosort_utf8mb4(uni_plane, &t_wc);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2356
1 by brian
clean slate
2357
    if ( s_wc != t_wc )
2358
    {
2359
      return s_wc > t_wc ? 1 : -1;
2360
    }
2361
2362
    s+= s_res;
2363
    t+= t_res;
2364
  }
2365
  return (int) (t_is_prefix ? (t - te) : ((se - s) - (te - t)));
2366
}
2367
2368
2369
/**
2370
  Compare strings, discarding end space
2371
2372
  If one string is shorter as the other, then we space extend the other
2373
  so that the strings have equal length.
2374
2375
  This will ensure that the following things hold:
2376
2377
    "a"  == "a "
2378
    "a\0" < "a"
2379
    "a\0" < "a "
2380
2381
  @param  cs        Character set pinter.
2382
  @param  a         First string to compare.
2383
  @param  a_length  Length of 'a'.
2384
  @param  b         Second string to compare.
2385
  @param  b_length  Length of 'b'.
2386
  @param  diff_if_only_endspace_difference
2387
                    Set to 1 if the strings should be regarded as different
2388
                    if they only difference in end space
2389
2390
  @return Comparison result.
2391
    @retval Negative number, if a less than b.
2392
    @retval 0, if a is equal to b
2393
    @retval Positive number, if a > b
2394
*/
2395
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2396
int
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2397
my_strnncollsp_utf8mb4(const CHARSET_INFO * const cs,
481 by Brian Aker
Remove all of uchar.
2398
                       const unsigned char *s, size_t slen,
2399
                       const unsigned char *t, size_t tlen,
276 by Brian Aker
Cleaned out my_bool from strings.
2400
                       bool diff_if_only_endspace_difference)
1 by brian
clean slate
2401
{
2402
  int res;
435.1.2 by Monty
Fixed older compiler warning.
2403
  my_wc_t s_wc=0;
2404
  my_wc_t t_wc=0;
481 by Brian Aker
Remove all of uchar.
2405
  const unsigned char *se= s + slen, *te= t + tlen;
1 by brian
clean slate
2406
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2407
2408
#ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
163 by Brian Aker
Merge Monty's code.
2409
  diff_if_only_endspace_difference= false;
1 by brian
clean slate
2410
#endif
2411
2412
  while ( s < se && t < te )
2413
  {
2414
    int s_res= my_mb_wc_utf8mb4(cs, &s_wc, s, se);
2415
    int t_res= my_mb_wc_utf8mb4(cs, &t_wc, t, te);
2416
2417
    if ( s_res <= 0 || t_res <= 0 )
2418
    {
2419
      /* Incorrect string, compare bytewise */
2420
      return bincmp_utf8mb4(s, se, t, te);
2421
    }
2422
2423
    my_tosort_utf8mb4(uni_plane, &s_wc);
2424
    my_tosort_utf8mb4(uni_plane, &t_wc);
2425
2426
    if ( s_wc != t_wc )
2427
    {
2428
      return s_wc > t_wc ? 1 : -1;
2429
    }
2430
2431
    s+=s_res;
2432
    t+=t_res;
2433
  }
2434
2435
  slen= (size_t) (se-s);
2436
  tlen= (size_t) (te-t);
2437
  res= 0;
2438
2439
  if (slen != tlen)
2440
  {
2441
    int swap= 1;
2442
    if (diff_if_only_endspace_difference)
2443
      res= 1;                                   /* Assume 'a' is bigger */
2444
    if (slen < tlen)
2445
    {
2446
      slen= tlen;
2447
      s= t;
2448
      se= te;
2449
      swap= -1;
2450
      res= -res;
2451
    }
2452
    /*
2453
      This following loop uses the fact that in UTF-8
2454
      all multibyte characters are greater than space,
2455
      and all multibyte head characters are greater than
2456
      space. It means if we meet a character greater
2457
      than space, it always means that the longer string
2458
      is greater. So we can reuse the same loop from the
2459
      8bit version, without having to process full multibute
2460
      sequences.
2461
    */
2462
    for ( ; s < se; s++)
2463
    {
2464
      if (*s != ' ')
2465
	return (*s < ' ') ? -swap : swap;
2466
    }
2467
  }
2468
  return res;
2469
}
2470
2471
2472
/**
2473
  Compare 0-terminated UTF8 strings.
2474
2475
  @param  cs                  character set handler
2476
  @param  s                   First 0-terminated string to compare
2477
  @param  t                   Second 0-terminated string to compare
2478
2479
  @return Comparison result.
2480
    @retval negative number if s < t
2481
    @retval positive number if s > t
2482
    @retval 0 is the strings are equal
2483
*/
2484
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2485
int my_strcasecmp_utf8mb4(const CHARSET_INFO * const cs,
2486
                          const char *s, const char *t)
1 by brian
clean slate
2487
{
2488
  MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2489
  while (s[0] && t[0])
2490
  {
2491
    my_wc_t s_wc,t_wc;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2492
481 by Brian Aker
Remove all of uchar.
2493
    if ((unsigned char) s[0] < 128)
1 by brian
clean slate
2494
    {
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2495
      /*
1 by brian
clean slate
2496
        s[0] is between 0 and 127.
2497
        It represents a single byte character.
2498
        Convert it into weight according to collation.
2499
      */
481 by Brian Aker
Remove all of uchar.
2500
      s_wc= plane00[(unsigned char) s[0]].tolower;
1 by brian
clean slate
2501
      s++;
2502
    }
2503
    else
2504
    {
481 by Brian Aker
Remove all of uchar.
2505
      int res= my_mb_wc_utf8mb4_no_range(cs, &s_wc, (const unsigned char*) s);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2506
2507
      /*
1 by brian
clean slate
2508
         In the case of wrong multibyte sequence we will
2509
         call strcmp() for byte-to-byte comparison.
2510
      */
2511
      if (res <= 0)
2512
        return strcmp(s, t);
2513
      s+= res;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2514
1 by brian
clean slate
2515
      my_tolower_utf8mb4(uni_plane, &s_wc);
2516
    }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2517
2518
1 by brian
clean slate
2519
    /* Do the same for the second string */
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2520
481 by Brian Aker
Remove all of uchar.
2521
    if ((unsigned char) t[0] < 128)
1 by brian
clean slate
2522
    {
2523
      /* Convert single byte character into weight */
481 by Brian Aker
Remove all of uchar.
2524
      t_wc= plane00[(unsigned char) t[0]].tolower;
1 by brian
clean slate
2525
      t++;
2526
    }
2527
    else
2528
    {
481 by Brian Aker
Remove all of uchar.
2529
      int res= my_mb_wc_utf8mb4_no_range(cs, &t_wc, (const unsigned char*) t);
1 by brian
clean slate
2530
      if (res <= 0)
2531
        return strcmp(s, t);
2532
      t+= res;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2533
1 by brian
clean slate
2534
      my_tolower_utf8mb4(uni_plane, &t_wc);
2535
    }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2536
1 by brian
clean slate
2537
    /* Now we have two weights, let's compare them */
2538
    if ( s_wc != t_wc )
2539
      return  ((int) s_wc) - ((int) t_wc);
2540
  }
481 by Brian Aker
Remove all of uchar.
2541
  return ((int) (unsigned char) s[0]) - ((int) (unsigned char) t[0]);
1 by brian
clean slate
2542
}
2543
2544
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2545
int
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2546
my_wildcmp_utf8mb4(const CHARSET_INFO * const cs,
1 by brian
clean slate
2547
                   const char *str, const char *strend,
2548
                   const char *wildstr, const char *wildend,
2549
                   int escape, int w_one, int w_many)
2550
{
2551
  return my_wildcmp_unicode(cs, str, strend, wildstr, wildend,
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2552
                            escape, w_one, w_many, cs->caseinfo);
1 by brian
clean slate
2553
}
2554
2555
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2556
size_t
2557
my_strnxfrmlen_utf8mb4(const CHARSET_INFO * const, size_t len)
1 by brian
clean slate
2558
{
2559
  /* TODO: fix when working on WL "Unicode new version" */
2560
  return (len * 2 + 2) / 4;
2561
}
2562
2563
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2564
size_t
264.2.6 by Andrey Hristov
Constify the usage of CHARSET_INFO almost to the last place in the code.
2565
my_strnxfrm_utf8mb4(const CHARSET_INFO * const cs,
482 by Brian Aker
Remove uint.
2566
                    unsigned char *dst, size_t dstlen, uint32_t nweights,
2567
                    const unsigned char *src, size_t srclen, uint32_t flags)
1 by brian
clean slate
2568
{
2569
  my_wc_t wc;
2570
  int res;
481 by Brian Aker
Remove all of uchar.
2571
  unsigned char *dst0= dst;
2572
  unsigned char *de= dst + dstlen;
2573
  unsigned char *de_beg= de - 1;
2574
  const unsigned char *se = src + srclen;
1 by brian
clean slate
2575
  MY_UNICASE_INFO **uni_plane= (cs->state & MY_CS_BINSORT) ?
2576
                                NULL : cs->caseinfo;
2577
2578
  for (; dst < de_beg && nweights; nweights--)
2579
  {
2580
    if ((res= my_mb_wc_utf8mb4(cs,&wc, src, se)) <= 0)
2581
      break;
2582
    src+=res;
2583
2584
    if (uni_plane)
2585
      my_tosort_utf8mb4(uni_plane, &wc);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2586
481 by Brian Aker
Remove all of uchar.
2587
    *dst++= (unsigned char)(wc >> 8);
2588
    *dst++= (unsigned char)(wc & 0xFF);
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2589
1 by brian
clean slate
2590
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2591
1 by brian
clean slate
2592
  if (dst < de && nweights && (flags & MY_STRXFRM_PAD_WITH_SPACE))
2593
  {
2594
    /* Fill the tail with keys for space character */
2595
    for (; dst < de_beg && nweights; nweights--)
2596
    {
2597
      *dst++= 0x00;
2598
      *dst++= 0x20;
2599
    }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
2600
1 by brian
clean slate
2601
    if (dst < de)  /* Clear the last byte, if "dstlen" was an odd number */
2602
      *dst++= 0x00;
2603
  }
2604
  my_strxfrm_desc_and_reverse(dst0, dst, flags, 0);
2605
  return dst - dst0;
2606
}
2607
2608
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2609
unsigned int my_ismbchar_utf8mb4(const CHARSET_INFO * const cs,
2610
                                 const char *b, const char *e)
1 by brian
clean slate
2611
{
2612
  my_wc_t wc;
481 by Brian Aker
Remove all of uchar.
2613
  int res= my_mb_wc_utf8mb4(cs,&wc, (const unsigned char*)b, (const unsigned char*)e);
1 by brian
clean slate
2614
  return (res > 1) ? res : 0;
2615
}
2616
2617
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
2618
unsigned int my_mbcharlen_utf8mb4(const CHARSET_INFO * const, uint32_t c)
1 by brian
clean slate
2619
{
2620
  if (c < 0x80)
2621
    return 1;
2622
  if (c < 0xc2)
2623
    return 0; /* Illegal mb head */
2624
  if (c < 0xe0)
2625
    return 2;
2626
  if (c < 0xf0)
2627
    return 3;
2628
  if (c < 0xf8)
2629
    return 4;
2630
  return 0; /* Illegal mb head */;
2631
}
2632
2633
2634
static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
2635
{
2636
  NULL,               /* init */
2637
  my_strnncoll_utf8mb4,
2638
  my_strnncollsp_utf8mb4,
2639
  my_strnxfrm_utf8mb4,
2640
  my_strnxfrmlen_utf8mb4,
2641
  my_like_range_mb,
2642
  my_wildcmp_utf8mb4,
2643
  my_strcasecmp_utf8mb4,
2644
  my_instr_mb,
2645
  my_hash_sort_utf8mb4,
2646
  my_propagate_complex
2647
};
2648
2649
2650
static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
2651
{
2652
    NULL,		/* init */
2653
    my_strnncoll_mb_bin,
2654
    my_strnncollsp_mb_bin,
2655
    my_strnxfrm_utf8mb4,
2656
    my_strnxfrmlen_utf8mb4,
2657
    my_like_range_mb,
2658
    my_wildcmp_mb_bin,
2659
    my_strcasecmp_mb_bin,
2660
    my_instr_mb,
2661
    my_hash_sort_mb_bin,
2662
    my_propagate_simple
2663
};
2664
2665
2666
MY_CHARSET_HANDLER my_charset_utf8mb4_handler=
2667
{
2668
  NULL,               /* init */
2669
  my_ismbchar_utf8mb4,
2670
  my_mbcharlen_utf8mb4,
2671
  my_numchars_mb,
2672
  my_charpos_mb,
2673
  my_well_formed_len_mb,
2674
  my_lengthsp_8bit,
2675
  my_numcells_mb,
2676
  my_mb_wc_utf8mb4,
2677
  my_wc_mb_utf8mb4,
2678
  my_mb_ctype_mb,
2679
  my_caseup_str_utf8mb4,
2680
  my_casedn_str_utf8mb4,
2681
  my_caseup_utf8mb4,
2682
  my_casedn_utf8mb4,
2683
  my_snprintf_8bit,
2684
  my_long10_to_str_8bit,
152 by Brian Aker
longlong replacement
2685
  my_int64_t10_to_str_8bit,
1 by brian
clean slate
2686
  my_fill_8bit,
2687
  my_strntol_8bit,
2688
  my_strntoul_8bit,
2689
  my_strntoll_8bit,
2690
  my_strntoull_8bit,
2691
  my_strntod_8bit,
2692
  my_strtoll10_8bit,
2693
  my_strntoull10rnd_8bit,
2694
  my_scan_8bit
2695
};
2696
2697
2698
2699
CHARSET_INFO my_charset_utf8mb4_general_ci=
2700
{
2701
  45,0,0,              /* number       */
2702
  MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE,  /* state  */
2703
  MY_UTF8MB4,         /* cs name      */
2704
  MY_UTF8MB4_GENERAL_CI,/* name       */
2705
  "UTF-8 Unicode",    /* comment      */
2706
  NULL,               /* tailoring    */
2707
  ctype_utf8mb4,      /* ctype        */
2708
  to_lower_utf8mb4,   /* to_lower     */
2709
  to_upper_utf8mb4,   /* to_upper     */
2710
  to_upper_utf8mb4,   /* sort_order   */
2711
  NULL,               /* contractions */
2712
  NULL,               /* sort_order_big*/
2713
  NULL,               /* tab_to_uni   */
2714
  NULL,               /* tab_from_uni */
2715
  my_unicase_default, /* caseinfo     */
2716
  NULL,               /* state_map    */
2717
  NULL,               /* ident_map    */
2718
  1,                  /* strxfrm_multiply */
2719
  1,                  /* caseup_multiply  */
2720
  1,                  /* casedn_multiply  */
2721
  1,                  /* mbminlen     */
2722
  4,                  /* mbmaxlen     */
2723
  0,                  /* min_sort_char */
2724
  0xFFFF,             /* max_sort_char */
2725
  ' ',                /* pad char      */
2726
  0,                  /* escape_with_backslash_is_dangerous */
2727
  1,                  /* levels_for_compare */
2728
  1,                  /* levels_for_order   */
2729
  &my_charset_utf8mb4_handler,
2730
  &my_collation_utf8mb4_general_ci_handler
2731
};
2732
2733
2734
CHARSET_INFO my_charset_utf8mb4_bin=
2735
{
2736
  46,0,0,             /* number       */
2737
  MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state  */
2738
  MY_UTF8MB4,         /* cs name      */
2739
  MY_UTF8MB4_BIN,     /* name         */
2740
  "UTF-8 Unicode",    /* comment      */
2741
  NULL,               /* tailoring    */
2742
  ctype_utf8mb4,      /* ctype        */
2743
  to_lower_utf8mb4,   /* to_lower     */
2744
  to_upper_utf8mb4,   /* to_upper     */
2745
  NULL,               /* sort_order   */
2746
  NULL,               /* contractions */
2747
  NULL,               /* sort_order_big*/
2748
  NULL,               /* tab_to_uni   */
2749
  NULL,               /* tab_from_uni */
2750
  my_unicase_default, /* caseinfo     */
2751
  NULL,               /* state_map    */
2752
  NULL,               /* ident_map    */
2753
  1,                  /* strxfrm_multiply */
2754
  1,                  /* caseup_multiply  */
2755
  1,                  /* casedn_multiply  */
2756
  1,                  /* mbminlen     */
2757
  4,                  /* mbmaxlen     */
2758
  0,                  /* min_sort_char */
2759
  0xFFFF,             /* max_sort_char */
2760
  ' ',                /* pad char      */
2761
  0,                  /* escape_with_backslash_is_dangerous */
2762
  1,                  /* levels_for_compare */
2763
  1,                  /* levels_for_order   */
2764
  &my_charset_utf8mb4_handler,
2765
  &my_collation_utf8mb4_bin_handler
2766
};
2767
2768
/*
2769
  We consider bytes with code more than 127 as a letter.
2770
  This garantees that word boundaries work fine with regular
2771
  expressions. Note, there is no need to mark byte 255  as a
2772
  letter, it is illegal byte in UTF8.
2773
*/
481 by Brian Aker
Remove all of uchar.
2774
static unsigned char ctype_utf8[] = {
1 by brian
clean slate
2775
    0,
2776
   32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
2777
   32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2778
   72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
2779
  132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
2780
   16,129,129,129,129,129,129,  1,  1,  1,  1,  1,  1,  1,  1,  1,
2781
    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 16, 16, 16, 16, 16,
2782
   16,130,130,130,130,130,130,  2,  2,  2,  2,  2,  2,  2,  2,  2,
2783
    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 16, 16, 16, 16, 32,
2784
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2785
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2786
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2787
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2788
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2789
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2790
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
2791
    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  0
2792
};
2793
2794
/* The below are taken from usa7 implementation */
2795
481 by Brian Aker
Remove all of uchar.
2796
static unsigned char to_lower_utf8[] = {
1 by brian
clean slate
2797
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
2798
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2799
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2800
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2801
   64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2802
  112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
2803
   96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2804
  112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
2805
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2806
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2807
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2808
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2809
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2810
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2811
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2812
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2813
};
2814
481 by Brian Aker
Remove all of uchar.
2815
static unsigned char to_upper_utf8[] = {
1 by brian
clean slate
2816
    0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
2817
   16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2818
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2819
   48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2820
   64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2821
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2822
   96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2823
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
2824
  128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2825
  144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2826
  160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2827
  176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2828
  192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2829
  208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2830
  224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2831
  240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2832
};
2833
481 by Brian Aker
Remove all of uchar.
2834
static inline int bincmp(const unsigned char *s, const unsigned char *se,
2835
                         const unsigned char *t, const unsigned char *te)
1 by brian
clean slate
2836
{
2837
  int slen= (int) (se-s), tlen= (int) (te-t);
398.1.4 by Monty Taylor
Renamed max/min.
2838
  int len=cmin(slen,tlen);
1 by brian
clean slate
2839
  int cmp= memcmp(s,t,len);
2840
  return cmp ? cmp : slen-tlen;
2841
}
2842
2843
2844
/*
2845
  File system encoding components:
2846
2847
Code range Pattern            Number   Used Unused  Blocks
2848
-----------------------------------------------------------------------------
2849
00C0..017F [.][0..4][g..z] 5*20= 100   97     3  Latin1 Supplement + Ext A
2850
0370..03FF [.][5..9][g..z] 5*20= 100   88    12  Greek + Coptic
2851
0400..052F [.][g..z][0..6] 20*7= 140  140   137  Cyrillic
2852
0530..058F [.][g..z][7..8] 20*2=  40   38     2  Armenian
2853
2160..217F [.][g..z][9]    20*1=  20   16     4  Number Forms
2854
0180..02AF [.][g..z][a..k] 28*11=220  203    17  Latin Ext B + IPA
2855
1E00..0EFF [.][g..z][l..r] 20*7= 140  136     4  Latin Additional Extended
2856
1F00..1FFF [.][g..z][s..z] 20*8= 160  144    16  Greek Extended
2857
....  .... [.][a..f][g..z] 6*20= 120    0   120  RESERVED
2858
24B6..24E9 [.][@][a..z]           26   26     0  Enclosed Alphanumerics
2859
FF21..FF5A [.][a..z][@]           26   26     0  Full Width forms
2860
2861
All other characters are encoded using five bytes:
2862
2863
[.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
2864
2865
*/
2866
2867
206 by Brian Aker
Removed final uint dead types.
2868
static uint16_t touni[5994]=
1 by brian
clean slate
2869
{
2870
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2871
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2872
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
2873
  0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
2874
  0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
2875
  0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
2876
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
2877
  0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
2878
  0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
2879
  0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
2880
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2881
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2882
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
2883
  0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
2884
  0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
2885
  0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
2886
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
2887
  0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
2888
  0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
2889
  0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
2890
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2891
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2892
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
2893
  0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
2894
  0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
2895
  0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
2896
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
2897
  0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
2898
  0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
2899
  0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
2900
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2901
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2902
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2903
  0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
2904
  0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
2905
  0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
2906
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
2907
  0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
2908
  0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
2909
  0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
2910
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2911
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2912
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
2913
  0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
2914
  0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
2915
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2916
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
2917
  0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
2918
  0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
2919
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2920
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2921
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2922
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2923
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2924
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2925
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2926
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2927
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2928
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2929
  0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2930
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2931
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2932
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
2933
  0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
2934
  0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
2935
  0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
2936
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
2937
  0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
2938
  0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
2939
  0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
2940
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2941
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2942
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2943
  0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
2944
  0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
2945
  0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
2946
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
2947
  0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
2948
  0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
2949
  0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2950
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2951
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2952
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
2953
  0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
2954
  0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
2955
  0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2956
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2957
  0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
2958
  0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
2959
  0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
2960
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2961
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2962
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2963
  0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
2964
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2965
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2966
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
2967
  0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
2968
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2969
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2970
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2971
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2972
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2973
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2974
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2975
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2976
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2977
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2978
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2979
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2980
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2981
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2982
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2983
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2984
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2985
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2986
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2987
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2988
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2989
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2990
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2991
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2992
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2993
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2994
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2995
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2996
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2997
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2998
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
2999
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3000
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3001
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3002
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3003
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3004
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3005
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3006
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3007
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3008
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3009
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3010
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3011
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3012
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3013
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3014
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3015
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3016
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3017
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3018
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3019
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3020
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3021
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3022
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3023
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3024
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3025
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3026
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3027
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3028
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3029
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3030
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3031
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3032
  0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
3033
  0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
3034
  0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
3035
  0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
3036
  0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
3037
  0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
3038
  0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
3039
  0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
3040
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3041
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3042
  0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3043
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3044
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3045
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3046
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3047
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3048
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3049
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3050
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3051
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3052
  0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3053
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3054
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3055
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3056
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3057
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3058
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3059
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3060
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3061
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3062
  0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3063
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3064
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3065
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3066
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3067
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3068
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3069
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3070
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3071
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3072
  0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3073
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3074
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3075
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3076
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3077
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3078
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3079
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3080
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3081
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3082
  0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3083
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3084
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3085
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3086
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3087
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3088
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3089
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3090
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3091
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3092
  0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3093
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3094
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3095
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3096
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3097
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3098
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3099
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3100
  0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
3101
  0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3102
  0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3103
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3104
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3105
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3106
  0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
3107
  0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
3108
  0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
3109
  0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3110
  0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
3111
  0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3112
  0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3113
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3114
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3115
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3116
  0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
3117
  0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
3118
  0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
3119
  0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3120
  0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
3121
  0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3122
  0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3123
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3124
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3125
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3126
  0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
3127
  0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
3128
  0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
3129
  0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3130
  0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
3131
  0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3132
  0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3133
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3134
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3135
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3136
  0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
3137
  0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
3138
  0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
3139
  0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3140
  0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
3141
  0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3142
  0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3143
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3144
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3145
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3146
  0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
3147
  0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
3148
  0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
3149
  0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3150
  0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
3151
  0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3152
  0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3153
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3154
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3155
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3156
  0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
3157
  0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
3158
  0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
3159
  0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3160
  0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
3161
  0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3162
  0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3163
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3164
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3165
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3166
  0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
3167
  0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
3168
  0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
3169
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3170
  0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
3171
  0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3172
  0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3173
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3174
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3175
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3176
  0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
3177
  0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
3178
  0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
3179
  0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3180
  0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
3181
  0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3182
  0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3183
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3184
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3185
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3186
  0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
3187
  0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
3188
  0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
3189
  0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3190
  0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
3191
  0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3192
  0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3193
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3194
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3195
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3196
  0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
3197
  0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
3198
  0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
3199
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3200
  0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
3201
  0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3202
  0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3203
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3204
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3205
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3206
  0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
3207
  0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
3208
  0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
3209
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3210
  0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
3211
  0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3212
  0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3213
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3214
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3215
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3216
  0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
3217
  0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
3218
  0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
3219
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3220
  0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
3221
  0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3222
  0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3223
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3224
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3225
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3226
  0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
3227
  0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
3228
  0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
3229
  0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3230
  0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
3231
  0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3232
  0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3233
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3234
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3235
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3236
  0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
3237
  0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
3238
  0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
3239
  0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3240
  0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
3241
  0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3242
  0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3243
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3244
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3245
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3246
  0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
3247
  0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
3248
  0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
3249
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3250
  0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
3251
  0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3252
  0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3253
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3254
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3255
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3256
  0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
3257
  0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
3258
  0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
3259
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3260
  0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
3261
  0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3262
  0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3263
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3264
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3265
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3266
  0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
3267
  0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
3268
  0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
3269
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3270
  0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
3271
  0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3272
  0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3273
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3274
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3275
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3276
  0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
3277
  0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
3278
  0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
3279
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3280
  0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
3281
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3282
  0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3283
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3284
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3285
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3286
  0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
3287
  0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
3288
  0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
3289
  0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3290
  0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
3291
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3292
  0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3293
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3294
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3295
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3296
  0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
3297
  0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
3298
  0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
3299
  0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3300
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3301
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3302
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3303
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3304
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3305
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3306
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3307
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3308
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3309
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3310
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3311
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3312
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3313
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3314
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3315
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3316
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3317
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3318
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3319
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3320
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3321
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3322
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3323
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3324
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3325
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3326
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3327
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3328
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3329
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3330
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3331
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3332
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3333
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3334
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3335
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3336
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3337
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3338
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3339
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3340
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3341
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3342
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3343
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3344
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3345
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3346
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3347
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3348
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3349
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3350
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3351
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3352
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3353
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3354
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3355
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3356
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3357
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3358
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3359
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3360
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3361
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3362
  0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3363
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3364
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3365
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3366
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3367
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3368
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3369
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3370
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3371
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3372
  0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3373
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3374
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3375
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3376
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3377
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3378
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3379
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3380
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3381
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3382
  0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3383
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3384
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3385
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3386
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3387
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3388
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3389
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3390
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3391
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3392
  0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3393
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3394
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3395
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3396
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3397
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3398
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3399
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3400
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3401
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3402
  0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3403
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3404
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3405
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3406
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3407
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3408
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3409
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3410
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3411
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3412
  0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3413
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3414
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3415
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3416
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3417
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3418
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3419
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3420
  0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
3421
  0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3422
  0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3423
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3424
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3425
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3426
  0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
3427
  0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
3428
  0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
3429
  0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3430
  0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
3431
  0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3432
  0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3433
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3434
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3435
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3436
  0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
3437
  0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
3438
  0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
3439
  0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
3440
  0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
3441
  0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3442
  0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3443
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3444
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3445
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3446
  0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
3447
  0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
3448
  0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
3449
  0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
3450
  0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
3451
  0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3452
  0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3453
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3454
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3455
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3456
  0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
3457
  0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
3458
  0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
3459
  0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3460
  0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
3461
  0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3462
  0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3463
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3464
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3465
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3466
  0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
3467
  0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
3468
  0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
3469
  0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3470
  0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
3471
  0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3472
  0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3473
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3474
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3475
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3476
  0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
3477
  0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
3478
  0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
3479
  0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3480
  0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
3481
  0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3482
  0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3483
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3484
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3485
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3486
  0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
3487
  0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
3488
  0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
3489
  0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3490
  0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
3491
  0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3492
  0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3493
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3494
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3495
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3496
  0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
3497
  0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
3498
  0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
3499
  0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3500
  0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
3501
  0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3502
  0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3503
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3504
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3505
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3506
  0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
3507
  0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
3508
  0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
3509
  0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3510
  0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
3511
  0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3512
  0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3513
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3514
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3515
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3516
  0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
3517
  0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
3518
  0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
3519
  0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3520
  0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
3521
  0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3522
  0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3523
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3524
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3525
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3526
  0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
3527
  0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
3528
  0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
3529
  0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3530
  0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
3531
  0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3532
  0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3533
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3534
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3535
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3536
  0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
3537
  0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
3538
  0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
3539
  0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3540
  0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
3541
  0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3542
  0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3543
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3544
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3545
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3546
  0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
3547
  0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
3548
  0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
3549
  0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3550
  0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
3551
  0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3552
  0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3553
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3554
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3555
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3556
  0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
3557
  0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
3558
  0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
3559
  0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3560
  0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
3561
  0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3562
  0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3563
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3564
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3565
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3566
  0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
3567
  0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
3568
  0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
3569
  0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3570
  0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
3571
  0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3572
  0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3573
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3574
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3575
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3576
  0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
3577
  0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
3578
  0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
3579
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3580
  0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
3581
  0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3582
  0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3583
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3584
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3585
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3586
  0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
3587
  0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
3588
  0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
3589
  0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3590
  0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
3591
  0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3592
  0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3593
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3594
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3595
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3596
  0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
3597
  0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
3598
  0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
3599
  0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3600
  0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
3601
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3602
  0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3603
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3604
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3605
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3606
  0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
3607
  0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
3608
  0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
3609
  0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3610
  0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
3611
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3612
  0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3613
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3614
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3615
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3616
  0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
3617
  0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
3618
  0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
3619
  0x1FD1,0x1FF4
3620
};
3621
3622
3623
/* 00C0-05FF */
206 by Brian Aker
Removed final uint dead types.
3624
static uint16_t uni_0C00_05FF[1344]=
1 by brian
clean slate
3625
{
3626
  0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
3627
  0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
3628
  0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
3629
  0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
3630
  0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
3631
  0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
3632
  0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
3633
  0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
3634
  0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
3635
  0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
3636
  0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
3637
  0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
3638
  0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
3639
  0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
3640
  0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
3641
  0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
3642
  0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
3643
  0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
3644
  0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
3645
  0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
3646
  0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
3647
  0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
3648
  0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
3649
  0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
3650
  0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
3651
  0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
3652
  0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
3653
  0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
3654
  0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
3655
  0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
3656
  0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
3657
  0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
3658
  0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
3659
  0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
3660
  0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
3661
  0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
3662
  0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
3663
  0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
3664
  0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
3665
  0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
3666
  0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
3667
  0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
3668
  0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
3669
  0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
3670
  0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
3671
  0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
3672
  0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
3673
  0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
3674
  0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3675
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3676
  0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
3677
  0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
3678
  0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
3679
  0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
3680
  0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
3681
  0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
3682
  0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
3683
  0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
3684
  0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
3685
  0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
3686
  0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
3687
  0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
3688
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3689
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3690
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3691
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3692
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3693
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3694
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3695
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3696
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3697
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3698
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3699
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3700
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3701
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3702
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3703
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3704
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3705
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3706
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3707
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3708
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3709
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3710
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3711
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3712
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3713
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3714
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
3715
  0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
3716
  0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
3717
  0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
3718
  0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
3719
  0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
3720
  0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
3721
  0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
3722
  0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
3723
  0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
3724
  0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
3725
  0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
3726
  0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
3727
  0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
3728
  0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
3729
  0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
3730
  0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
3731
  0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
3732
  0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
3733
  0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
3734
  0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
3735
  0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
3736
  0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
3737
  0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
3738
  0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
3739
  0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
3740
  0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
3741
  0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
3742
  0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
3743
  0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
3744
  0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
3745
  0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
3746
  0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3747
  0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
3748
  0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
3749
  0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
3750
  0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
3751
  0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
3752
  0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
3753
  0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
3754
  0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
3755
  0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
3756
  0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
3757
  0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
3758
  0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
3759
  0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
3760
  0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
3761
  0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3762
  0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
3763
  0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
3764
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3765
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3766
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3767
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3768
  0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
3769
  0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
3770
  0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
3771
  0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
3772
  0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
3773
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3774
  0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
3775
  0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
3776
  0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
3777
  0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
3778
  0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
3779
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3780
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3781
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3782
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3783
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3784
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3785
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3786
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3787
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3788
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3789
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3790
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3791
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3792
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3793
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
3794
};
3795
3796
3797
/* 1E00-1FFF */
206 by Brian Aker
Removed final uint dead types.
3798
static uint16_t uni_1E00_1FFF[512]=
1 by brian
clean slate
3799
{
3800
  0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
3801
  0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
3802
  0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
3803
  0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
3804
  0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
3805
  0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
3806
  0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
3807
  0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
3808
  0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
3809
  0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
3810
  0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
3811
  0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
3812
  0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
3813
  0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
3814
  0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
3815
  0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
3816
  0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
3817
  0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
3818
  0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
3819
  0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
3820
  0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
3821
  0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
3822
  0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
3823
  0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
3824
  0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
3825
  0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
3826
  0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
3827
  0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
3828
  0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
3829
  0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
3830
  0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
3831
  0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3832
  0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
3833
  0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
3834
  0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
3835
  0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
3836
  0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
3837
  0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
3838
  0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
3839
  0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
3840
  0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
3841
  0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
3842
  0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
3843
  0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
3844
  0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
3845
  0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
3846
  0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
3847
  0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
3848
  0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
3849
  0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
3850
  0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
3851
  0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
3852
  0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
3853
  0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
3854
  0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
3855
  0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
3856
  0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
3857
  0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
3858
  0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
3859
  0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
3860
  0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
3861
  0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
3862
  0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
3863
  0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
3864
};
3865
3866
3867
/* 2160-217F */
206 by Brian Aker
Removed final uint dead types.
3868
static uint16_t uni_2160_217F[32]=
1 by brian
clean slate
3869
{
3870
  0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
3871
  0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
3872
  0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
3873
  0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
3874
};
3875
3876
3877
/* 24B0-24EF */
206 by Brian Aker
Removed final uint dead types.
3878
static uint16_t uni_24B0_24EF[64]=
1 by brian
clean slate
3879
{
3880
  0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
3881
  0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
3882
  0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
3883
  0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
3884
  0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
3885
  0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
3886
  0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
3887
  0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
3888
};
3889
3890
3891
/* FF20-FF5F */
206 by Brian Aker
Removed final uint dead types.
3892
static uint16_t uni_FF20_FF5F[64]=
1 by brian
clean slate
3893
{
3894
  0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
3895
  0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
3896
  0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
3897
  0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
3898
  0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
3899
  0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
3900
  0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
3901
  0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
3902
};
3903
3904
3905
3906
3907
3908
/*
3909
  Returns
3910
   a number 0..15, if a valid HEX digit in lower case,
3911
   -1 otherwise.
3912
*/
3913
3914
static int hexlo(int x)
3915
{
3916
  static char hex_lo_digit[256]=
3917
  {
3918
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3919
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3920
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /*  !"#$%&'()*+,-./ */
3921
     0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
3922
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
3923
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
3924
    -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
3925
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
3926
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3927
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3928
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3929
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3930
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3931
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3932
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3933
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
3934
  };
3935
  return hex_lo_digit[(unsigned int) x];
3936
}
3937
3938
3939
/*
3940
  Safe characters:
3941
   '\0'  NULL
3942
   A..Z  capital letters,
3943
   a..z  small letters
3944
   0..9  digits
3945
   _     underscore
3946
*/
3947
static char filename_safe_char[128]=
3948
{
3949
  1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
3950
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
3951
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*  !"#$%&'()*+,-./ */
3952
  1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
3953
  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
3954
  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
3955
  0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
3956
  1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
3957
};
3958
3959
#define MY_FILENAME_ESCAPE '@'
3960
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
3961
int
3962
my_mb_wc_filename(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
3963
                  my_wc_t *pwc, const unsigned char *s, const unsigned char *e)
1 by brian
clean slate
3964
{
3965
  int byte1, byte2;
3966
  if (s >= e)
3967
    return MY_CS_TOOSMALL;
3968
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3969
  if (*s < 128 && filename_safe_char[*s])
1 by brian
clean slate
3970
  {
3971
    *pwc= *s;
3972
    return 1;
3973
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3974
1 by brian
clean slate
3975
  if (*s != MY_FILENAME_ESCAPE)
3976
    return MY_CS_ILSEQ;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3977
1 by brian
clean slate
3978
  if (s + 3 > e)
3979
    return MY_CS_TOOSMALL3;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3980
1 by brian
clean slate
3981
  byte1= s[1];
3982
  byte2= s[2];
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3983
1 by brian
clean slate
3984
  if (byte1 >= 0x30 && byte1 <= 0x7F &&
3985
      byte2 >= 0x30 && byte2 <= 0x7F)
3986
  {
3987
    int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
3988
    if (code < 5994 && touni[code])
3989
    {
3990
      *pwc= touni[code];
3991
      return 3;
3992
    }
3993
    if (byte1 == '@' && byte2 == '@')
3994
    {
3995
     *pwc= 0;
3996
      return 3;
3997
    }
3998
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
3999
1 by brian
clean slate
4000
  if (s + 4 > e)
4001
    return MY_CS_TOOSMALL4;
4002
4003
  if ((byte1= hexlo(byte1)) >= 0 &&
4004
      (byte2= hexlo(byte2)) >= 0)
4005
  {
4006
    int byte3= hexlo(s[3]);
4007
    int byte4= hexlo(s[4]);
4008
    if (byte3 >=0 && byte4 >=0)
4009
    {
4010
      *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
4011
      return 5;
4012
    }
4013
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
4014
1 by brian
clean slate
4015
  return MY_CS_ILSEQ;
4016
}
4017
4018
632.1.10 by Monty Taylor
Got rid of Sun Studio warnings.
4019
int
4020
my_wc_mb_filename(const CHARSET_INFO * const,
481 by Brian Aker
Remove all of uchar.
4021
                  my_wc_t wc, unsigned char *s, unsigned char *e)
1 by brian
clean slate
4022
{
4023
  int code;
4024
  char hex[]= "0123456789abcdef";
4025
  if (wc < 128 && filename_safe_char[wc])
4026
  {
481 by Brian Aker
Remove all of uchar.
4027
    *s= (unsigned char) wc;
1 by brian
clean slate
4028
    return 1;
4029
  }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
4030
1 by brian
clean slate
4031
  if (s + 3 > e)
4032
    return MY_CS_TOOSMALL3;
4033
4034
  *s++= MY_FILENAME_ESCAPE;
4035
  if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
4036
      (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
4037
      (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
4038
      (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
4039
      (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
4040
  {
4041
    *s++= (code / 80) + 0x30;
4042
    *s++= (code % 80) + 0x30;
4043
    return 3;
4044
  }
4045
4046
  /* Non letter */
4047
  if (s + 5 > e)
4048
    return MY_CS_TOOSMALL5;
4049
4050
  *s++= hex[(wc >> 12) & 15];
4051
  *s++= hex[(wc >> 8) & 15];
4052
  *s++= hex[(wc >> 4) & 15];
4053
  *s++= hex[(wc)      & 15];
4054
  return 5;
4055
}
4056
4057
4058
static MY_COLLATION_HANDLER my_collation_filename_handler =
4059
{
4060
    NULL,               /* init */
760 by Brian Aker
Cleanup around UTf8 code.
4061
    my_strnncoll_utf8mb4,
4062
    my_strnncollsp_utf8mb4,
4063
    my_strnxfrm_utf8mb4,
4064
    my_strnxfrmlen_utf8mb4,
1 by brian
clean slate
4065
    my_like_range_mb,
760 by Brian Aker
Cleanup around UTf8 code.
4066
    my_wildcmp_utf8mb4,
4067
    my_strcasecmp_utf8mb4,
1 by brian
clean slate
4068
    my_instr_mb,
760 by Brian Aker
Cleanup around UTf8 code.
4069
    my_hash_sort_utf8mb4,
1 by brian
clean slate
4070
    my_propagate_complex
4071
};
4072
4073
4074
static MY_CHARSET_HANDLER my_charset_filename_handler=
4075
{
4076
    NULL,               /* init */
760 by Brian Aker
Cleanup around UTf8 code.
4077
    my_ismbchar_utf8mb4,
4078
    my_mbcharlen_utf8mb4,
1 by brian
clean slate
4079
    my_numchars_mb,
4080
    my_charpos_mb,
4081
    my_well_formed_len_mb,
4082
    my_lengthsp_8bit,
4083
    my_numcells_mb,
4084
    my_mb_wc_filename,
4085
    my_wc_mb_filename,
4086
    my_mb_ctype_mb,
760 by Brian Aker
Cleanup around UTf8 code.
4087
    my_caseup_str_utf8mb4,
4088
    my_casedn_str_utf8mb4,
4089
    my_caseup_utf8mb4,
4090
    my_casedn_utf8mb4,
1 by brian
clean slate
4091
    my_snprintf_8bit,
4092
    my_long10_to_str_8bit,
152 by Brian Aker
longlong replacement
4093
    my_int64_t10_to_str_8bit,
1 by brian
clean slate
4094
    my_fill_8bit,
4095
    my_strntol_8bit,
4096
    my_strntoul_8bit,
4097
    my_strntoll_8bit,
4098
    my_strntoull_8bit,
4099
    my_strntod_8bit,
4100
    my_strtoll10_8bit,
4101
    my_strntoull10rnd_8bit,
4102
    my_scan_8bit
4103
};
4104
4105
4106
4107
CHARSET_INFO my_charset_filename=
4108
{
4109
    17,0,0,             /* number       */
4110
    MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN|MY_CS_NONASCII,
4111
    "filename",         /* cs name      */
4112
    "filename",         /* name         */
4113
    "",                 /* comment      */
4114
    NULL,               /* tailoring    */
4115
    ctype_utf8,         /* ctype        */
4116
    to_lower_utf8,      /* to_lower     */
4117
    to_upper_utf8,      /* to_upper     */
4118
    to_upper_utf8,      /* sort_order   */
4119
    NULL,               /* contractions */
4120
    NULL,               /* sort_order_big*/
4121
    NULL,               /* tab_to_uni   */
4122
    NULL,               /* tab_from_uni */
4123
    my_unicase_default, /* caseinfo     */
4124
    NULL,               /* state_map    */
4125
    NULL,               /* ident_map    */
4126
    1,                  /* strxfrm_multiply */
4127
    1,                  /* caseup_multiply  */
4128
    1,                  /* casedn_multiply  */
4129
    1,                  /* mbminlen     */
4130
    5,                  /* mbmaxlen     */
4131
    0,                  /* min_sort_char */
4132
    0xFFFF,             /* max_sort_char */
4133
    ' ',                /* pad char      */
4134
    0,                  /* escape_with_backslash_is_dangerous */
4135
    1,                  /* levels_for_compare */
4136
    1,                  /* levels_for_order   */
4137
    &my_charset_filename_handler,
4138
    &my_collation_filename_handler
4139
};
4140
4141
#ifdef MY_TEST_UTF8
4142
#include <stdio.h>
4143
481 by Brian Aker
Remove all of uchar.
4144
static void test_mb(CHARSET_INFO *cs, unsigned char *s)
1 by brian
clean slate
4145
{
4146
  while(*s)
4147
  {
4148
    if (my_ismbhead_utf8(cs,*s))
4149
    {
482 by Brian Aker
Remove uint.
4150
      uint32_t len=my_mbcharlen_utf8(cs,*s);
1 by brian
clean slate
4151
      while(len--)
4152
      {
4153
        printf("%c",*s);
4154
        s++;
4155
      }
4156
      printf("\n");
4157
    }
4158
    else
4159
    {
4160
      printf("%c\n",*s);
4161
      s++;
4162
    }
4163
  }
4164
}
4165
4166
int main()
4167
{
4168
  char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
4169
  CHARSET_INFO *cs;
4170
481 by Brian Aker
Remove all of uchar.
4171
  test_mb(cs,(unsigned char*)str);
1 by brian
clean slate
4172
4173
  printf("orig      :'%s'\n",str);
4174
4175
  my_caseup_utf8(cs,str,15);
4176
  printf("caseup    :'%s'\n",str);
4177
4178
  my_caseup_str_utf8(cs,str);
4179
  printf("caseup_str:'%s'\n",str);
4180
4181
  my_casedn_utf8(cs,str,15);
4182
  printf("casedn    :'%s'\n",str);
4183
4184
  my_casedn_str_utf8(cs,str);
4185
  printf("casedn_str:'%s'\n",str);
4186
4187
  return 0;
4188
}
4189
4190
#endif