aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop/uprop_get_ccc.c
blob: 1e46c23f322aa3fd044212911a7bce73409ebf25 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
/* This file is autogenerated by gen/prop/ccc; DO NOT EDIT. */

#include "_bsearch.h"
#include "macros.h"
#include "rune.h"
#include "unicode/prop.h"

static const struct {
	rune lo, hi;
	enum uprop_ccc val;
} lookup[] = {
	{RUNE_C(0x000300), RUNE_C(0x000314), CCC_A},
	{RUNE_C(0x000315), RUNE_C(0x000315), CCC_AR},
	{RUNE_C(0x000316), RUNE_C(0x000319), CCC_B},
	{RUNE_C(0x00031A), RUNE_C(0x00031A), CCC_AR},
	{RUNE_C(0x00031B), RUNE_C(0x00031B), CCC_ATAR},
	{RUNE_C(0x00031C), RUNE_C(0x000320), CCC_B},
	{RUNE_C(0x000321), RUNE_C(0x000322), CCC_ATB},
	{RUNE_C(0x000323), RUNE_C(0x000326), CCC_B},
	{RUNE_C(0x000327), RUNE_C(0x000328), CCC_ATB},
	{RUNE_C(0x000329), RUNE_C(0x000333), CCC_B},
	{RUNE_C(0x000334), RUNE_C(0x000338), CCC_OV},
	{RUNE_C(0x000339), RUNE_C(0x00033C), CCC_B},
	{RUNE_C(0x00033D), RUNE_C(0x000344), CCC_A},
	{RUNE_C(0x000345), RUNE_C(0x000345), CCC_IS},
	{RUNE_C(0x000346), RUNE_C(0x000346), CCC_A},
	{RUNE_C(0x000347), RUNE_C(0x000349), CCC_B},
	{RUNE_C(0x00034A), RUNE_C(0x00034C), CCC_A},
	{RUNE_C(0x00034D), RUNE_C(0x00034E), CCC_B},
	{RUNE_C(0x000350), RUNE_C(0x000352), CCC_A},
	{RUNE_C(0x000353), RUNE_C(0x000356), CCC_B},
	{RUNE_C(0x000357), RUNE_C(0x000357), CCC_A},
	{RUNE_C(0x000358), RUNE_C(0x000358), CCC_AR},
	{RUNE_C(0x000359), RUNE_C(0x00035A), CCC_B},
	{RUNE_C(0x00035B), RUNE_C(0x00035B), CCC_A},
	{RUNE_C(0x00035C), RUNE_C(0x00035C), CCC_DB},
	{RUNE_C(0x00035D), RUNE_C(0x00035E), CCC_DA},
	{RUNE_C(0x00035F), RUNE_C(0x00035F), CCC_DB},
	{RUNE_C(0x000360), RUNE_C(0x000361), CCC_DA},
	{RUNE_C(0x000362), RUNE_C(0x000362), CCC_DB},
	{RUNE_C(0x000363), RUNE_C(0x00036F), CCC_A},
	{RUNE_C(0x000483), RUNE_C(0x000487), CCC_A},
	{RUNE_C(0x000591), RUNE_C(0x000591), CCC_B},
	{RUNE_C(0x000592), RUNE_C(0x000595), CCC_A},
	{RUNE_C(0x000596), RUNE_C(0x000596), CCC_B},
	{RUNE_C(0x000597), RUNE_C(0x000599), CCC_A},
	{RUNE_C(0x00059A), RUNE_C(0x00059A), CCC_BR},
	{RUNE_C(0x00059B), RUNE_C(0x00059B), CCC_B},
	{RUNE_C(0x00059C), RUNE_C(0x0005A1), CCC_A},
	{RUNE_C(0x0005A2), RUNE_C(0x0005A7), CCC_B},
	{RUNE_C(0x0005A8), RUNE_C(0x0005A9), CCC_A},
	{RUNE_C(0x0005AA), RUNE_C(0x0005AA), CCC_B},
	{RUNE_C(0x0005AB), RUNE_C(0x0005AC), CCC_A},
	{RUNE_C(0x0005AD), RUNE_C(0x0005AD), CCC_BR},
	{RUNE_C(0x0005AE), RUNE_C(0x0005AE), CCC_AL},
	{RUNE_C(0x0005AF), RUNE_C(0x0005AF), CCC_A},
	{RUNE_C(0x0005B0), RUNE_C(0x0005B0), CCC_CCC10},
	{RUNE_C(0x0005B1), RUNE_C(0x0005B1), CCC_CCC11},
	{RUNE_C(0x0005B2), RUNE_C(0x0005B2), CCC_CCC12},
	{RUNE_C(0x0005B3), RUNE_C(0x0005B3), CCC_CCC13},
	{RUNE_C(0x0005B4), RUNE_C(0x0005B4), CCC_CCC14},
	{RUNE_C(0x0005B5), RUNE_C(0x0005B5), CCC_CCC15},
	{RUNE_C(0x0005B6), RUNE_C(0x0005B6), CCC_CCC16},
	{RUNE_C(0x0005B7), RUNE_C(0x0005B7), CCC_CCC17},
	{RUNE_C(0x0005B8), RUNE_C(0x0005B8), CCC_CCC18},
	{RUNE_C(0x0005B9), RUNE_C(0x0005BA), CCC_CCC19},
	{RUNE_C(0x0005BB), RUNE_C(0x0005BB), CCC_CCC20},
	{RUNE_C(0x0005BC), RUNE_C(0x0005BC), CCC_CCC21},
	{RUNE_C(0x0005BD), RUNE_C(0x0005BD), CCC_CCC22},
	{RUNE_C(0x0005BF), RUNE_C(0x0005BF), CCC_CCC23},
	{RUNE_C(0x0005C1), RUNE_C(0x0005C1), CCC_CCC24},
	{RUNE_C(0x0005C2), RUNE_C(0x0005C2), CCC_CCC25},
	{RUNE_C(0x0005C4), RUNE_C(0x0005C4), CCC_A},
	{RUNE_C(0x0005C5), RUNE_C(0x0005C5), CCC_B},
	{RUNE_C(0x0005C7), RUNE_C(0x0005C7), CCC_CCC18},
	{RUNE_C(0x000610), RUNE_C(0x000617), CCC_A},
	{RUNE_C(0x000618), RUNE_C(0x000618), CCC_CCC30},
	{RUNE_C(0x000619), RUNE_C(0x000619), CCC_CCC31},
	{RUNE_C(0x00061A), RUNE_C(0x00061A), CCC_CCC32},
	{RUNE_C(0x00064B), RUNE_C(0x00064B), CCC_CCC27},
	{RUNE_C(0x00064C), RUNE_C(0x00064C), CCC_CCC28},
	{RUNE_C(0x00064D), RUNE_C(0x00064D), CCC_CCC29},
	{RUNE_C(0x00064E), RUNE_C(0x00064E), CCC_CCC30},
	{RUNE_C(0x00064F), RUNE_C(0x00064F), CCC_CCC31},
	{RUNE_C(0x000650), RUNE_C(0x000650), CCC_CCC32},
	{RUNE_C(0x000651), RUNE_C(0x000651), CCC_CCC33},
	{RUNE_C(0x000652), RUNE_C(0x000652), CCC_CCC34},
	{RUNE_C(0x000653), RUNE_C(0x000654), CCC_A},
	{RUNE_C(0x000655), RUNE_C(0x000656), CCC_B},
	{RUNE_C(0x000657), RUNE_C(0x00065B), CCC_A},
	{RUNE_C(0x00065C), RUNE_C(0x00065C), CCC_B},
	{RUNE_C(0x00065D), RUNE_C(0x00065E), CCC_A},
	{RUNE_C(0x00065F), RUNE_C(0x00065F), CCC_B},
	{RUNE_C(0x000670), RUNE_C(0x000670), CCC_CCC35},
	{RUNE_C(0x0006D6), RUNE_C(0x0006DC), CCC_A},
	{RUNE_C(0x0006DF), RUNE_C(0x0006E2), CCC_A},
	{RUNE_C(0x0006E3), RUNE_C(0x0006E3), CCC_B},
	{RUNE_C(0x0006E4), RUNE_C(0x0006E4), CCC_A},
	{RUNE_C(0x0006E7), RUNE_C(0x0006E8), CCC_A},
	{RUNE_C(0x0006EA), RUNE_C(0x0006EA), CCC_B},
	{RUNE_C(0x0006EB), RUNE_C(0x0006EC), CCC_A},
	{RUNE_C(0x0006ED), RUNE_C(0x0006ED), CCC_B},
	{RUNE_C(0x000711), RUNE_C(0x000711), CCC_CCC36},
	{RUNE_C(0x000730), RUNE_C(0x000730), CCC_A},
	{RUNE_C(0x000731), RUNE_C(0x000731), CCC_B},
	{RUNE_C(0x000732), RUNE_C(0x000733), CCC_A},
	{RUNE_C(0x000734), RUNE_C(0x000734), CCC_B},
	{RUNE_C(0x000735), RUNE_C(0x000736), CCC_A},
	{RUNE_C(0x000737), RUNE_C(0x000739), CCC_B},
	{RUNE_C(0x00073A), RUNE_C(0x00073A), CCC_A},
	{RUNE_C(0x00073B), RUNE_C(0x00073C), CCC_B},
	{RUNE_C(0x00073D), RUNE_C(0x00073D), CCC_A},
	{RUNE_C(0x00073E), RUNE_C(0x00073E), CCC_B},
	{RUNE_C(0x00073F), RUNE_C(0x000741), CCC_A},
	{RUNE_C(0x000742), RUNE_C(0x000742), CCC_B},
	{RUNE_C(0x000743), RUNE_C(0x000743), CCC_A},
	{RUNE_C(0x000744), RUNE_C(0x000744), CCC_B},
	{RUNE_C(0x000745), RUNE_C(0x000745), CCC_A},
	{RUNE_C(0x000746), RUNE_C(0x000746), CCC_B},
	{RUNE_C(0x000747), RUNE_C(0x000747), CCC_A},
	{RUNE_C(0x000748), RUNE_C(0x000748), CCC_B},
	{RUNE_C(0x000749), RUNE_C(0x00074A), CCC_A},
	{RUNE_C(0x0007EB), RUNE_C(0x0007F1), CCC_A},
	{RUNE_C(0x0007F2), RUNE_C(0x0007F2), CCC_B},
	{RUNE_C(0x0007F3), RUNE_C(0x0007F3), CCC_A},
	{RUNE_C(0x0007FD), RUNE_C(0x0007FD), CCC_B},
	{RUNE_C(0x000816), RUNE_C(0x000819), CCC_A},
	{RUNE_C(0x00081B), RUNE_C(0x000823), CCC_A},
	{RUNE_C(0x000825), RUNE_C(0x000827), CCC_A},
	{RUNE_C(0x000829), RUNE_C(0x00082D), CCC_A},
	{RUNE_C(0x000859), RUNE_C(0x00085B), CCC_B},
	{RUNE_C(0x000898), RUNE_C(0x000898), CCC_A},
	{RUNE_C(0x000899), RUNE_C(0x00089B), CCC_B},
	{RUNE_C(0x00089C), RUNE_C(0x00089F), CCC_A},
	{RUNE_C(0x0008CA), RUNE_C(0x0008CE), CCC_A},
	{RUNE_C(0x0008CF), RUNE_C(0x0008D3), CCC_B},
	{RUNE_C(0x0008D4), RUNE_C(0x0008E1), CCC_A},
	{RUNE_C(0x0008E3), RUNE_C(0x0008E3), CCC_B},
	{RUNE_C(0x0008E4), RUNE_C(0x0008E5), CCC_A},
	{RUNE_C(0x0008E6), RUNE_C(0x0008E6), CCC_B},
	{RUNE_C(0x0008E7), RUNE_C(0x0008E8), CCC_A},
	{RUNE_C(0x0008E9), RUNE_C(0x0008E9), CCC_B},
	{RUNE_C(0x0008EA), RUNE_C(0x0008EC), CCC_A},
	{RUNE_C(0x0008ED), RUNE_C(0x0008EF), CCC_B},
	{RUNE_C(0x0008F0), RUNE_C(0x0008F0), CCC_CCC27},
	{RUNE_C(0x0008F1), RUNE_C(0x0008F1), CCC_CCC28},
	{RUNE_C(0x0008F2), RUNE_C(0x0008F2), CCC_CCC29},
	{RUNE_C(0x0008F3), RUNE_C(0x0008F5), CCC_A},
	{RUNE_C(0x0008F6), RUNE_C(0x0008F6), CCC_B},
	{RUNE_C(0x0008F7), RUNE_C(0x0008F8), CCC_A},
	{RUNE_C(0x0008F9), RUNE_C(0x0008FA), CCC_B},
	{RUNE_C(0x0008FB), RUNE_C(0x0008FF), CCC_A},
	{RUNE_C(0x00093C), RUNE_C(0x00093C), CCC_NK},
	{RUNE_C(0x00094D), RUNE_C(0x00094D), CCC_VR},
	{RUNE_C(0x000951), RUNE_C(0x000951), CCC_A},
	{RUNE_C(0x000952), RUNE_C(0x000952), CCC_B},
	{RUNE_C(0x000953), RUNE_C(0x000954), CCC_A},
	{RUNE_C(0x0009BC), RUNE_C(0x0009BC), CCC_NK},
	{RUNE_C(0x0009CD), RUNE_C(0x0009CD), CCC_VR},
	{RUNE_C(0x0009FE), RUNE_C(0x0009FE), CCC_A},
	{RUNE_C(0x000A3C), RUNE_C(0x000A3C), CCC_NK},
	{RUNE_C(0x000A4D), RUNE_C(0x000A4D), CCC_VR},
	{RUNE_C(0x000ABC), RUNE_C(0x000ABC), CCC_NK},
	{RUNE_C(0x000ACD), RUNE_C(0x000ACD), CCC_VR},
	{RUNE_C(0x000B3C), RUNE_C(0x000B3C), CCC_NK},
	{RUNE_C(0x000B4D), RUNE_C(0x000B4D), CCC_VR},
	{RUNE_C(0x000BCD), RUNE_C(0x000BCD), CCC_VR},
	{RUNE_C(0x000C3C), RUNE_C(0x000C3C), CCC_NK},
	{RUNE_C(0x000C4D), RUNE_C(0x000C4D), CCC_VR},
	{RUNE_C(0x000C55), RUNE_C(0x000C55), CCC_CCC84},
	{RUNE_C(0x000C56), RUNE_C(0x000C56), CCC_CCC91},
	{RUNE_C(0x000CBC), RUNE_C(0x000CBC), CCC_NK},
	{RUNE_C(0x000CCD), RUNE_C(0x000CCD), CCC_VR},
	{RUNE_C(0x000D3B), RUNE_C(0x000D3C), CCC_VR},
	{RUNE_C(0x000D4D), RUNE_C(0x000D4D), CCC_VR},
	{RUNE_C(0x000DCA), RUNE_C(0x000DCA), CCC_VR},
	{RUNE_C(0x000E38), RUNE_C(0x000E39), CCC_CCC103},
	{RUNE_C(0x000E3A), RUNE_C(0x000E3A), CCC_VR},
	{RUNE_C(0x000E48), RUNE_C(0x000E4B), CCC_CCC107},
	{RUNE_C(0x000EB8), RUNE_C(0x000EB9), CCC_CCC118},
	{RUNE_C(0x000EBA), RUNE_C(0x000EBA), CCC_VR},
	{RUNE_C(0x000EC8), RUNE_C(0x000ECB), CCC_CCC122},
	{RUNE_C(0x000F18), RUNE_C(0x000F19), CCC_B},
	{RUNE_C(0x000F35), RUNE_C(0x000F35), CCC_B},
	{RUNE_C(0x000F37), RUNE_C(0x000F37), CCC_B},
	{RUNE_C(0x000F39), RUNE_C(0x000F39), CCC_ATAR},
	{RUNE_C(0x000F71), RUNE_C(0x000F71), CCC_CCC129},
	{RUNE_C(0x000F72), RUNE_C(0x000F72), CCC_CCC130},
	{RUNE_C(0x000F74), RUNE_C(0x000F74), CCC_CCC132},
	{RUNE_C(0x000F7A), RUNE_C(0x000F7D), CCC_CCC130},
	{RUNE_C(0x000F80), RUNE_C(0x000F80), CCC_CCC130},
	{RUNE_C(0x000F82), RUNE_C(0x000F83), CCC_A},
	{RUNE_C(0x000F84), RUNE_C(0x000F84), CCC_VR},
	{RUNE_C(0x000F86), RUNE_C(0x000F87), CCC_A},
	{RUNE_C(0x000FC6), RUNE_C(0x000FC6), CCC_B},
	{RUNE_C(0x001037), RUNE_C(0x001037), CCC_NK},
	{RUNE_C(0x001039), RUNE_C(0x00103A), CCC_VR},
	{RUNE_C(0x00108D), RUNE_C(0x00108D), CCC_B},
	{RUNE_C(0x00135D), RUNE_C(0x00135F), CCC_A},
	{RUNE_C(0x001714), RUNE_C(0x001715), CCC_VR},
	{RUNE_C(0x001734), RUNE_C(0x001734), CCC_VR},
	{RUNE_C(0x0017D2), RUNE_C(0x0017D2), CCC_VR},
	{RUNE_C(0x0017DD), RUNE_C(0x0017DD), CCC_A},
	{RUNE_C(0x0018A9), RUNE_C(0x0018A9), CCC_AL},
	{RUNE_C(0x001939), RUNE_C(0x001939), CCC_BR},
	{RUNE_C(0x00193A), RUNE_C(0x00193A), CCC_A},
	{RUNE_C(0x00193B), RUNE_C(0x00193B), CCC_B},
	{RUNE_C(0x001A17), RUNE_C(0x001A17), CCC_A},
	{RUNE_C(0x001A18), RUNE_C(0x001A18), CCC_B},
	{RUNE_C(0x001A60), RUNE_C(0x001A60), CCC_VR},
	{RUNE_C(0x001A75), RUNE_C(0x001A7C), CCC_A},
	{RUNE_C(0x001A7F), RUNE_C(0x001A7F), CCC_B},
	{RUNE_C(0x001AB0), RUNE_C(0x001AB4), CCC_A},
	{RUNE_C(0x001AB5), RUNE_C(0x001ABA), CCC_B},
	{RUNE_C(0x001ABB), RUNE_C(0x001ABC), CCC_A},
	{RUNE_C(0x001ABD), RUNE_C(0x001ABD), CCC_B},
	{RUNE_C(0x001ABF), RUNE_C(0x001AC0), CCC_B},
	{RUNE_C(0x001AC1), RUNE_C(0x001AC2), CCC_A},
	{RUNE_C(0x001AC3), RUNE_C(0x001AC4), CCC_B},
	{RUNE_C(0x001AC5), RUNE_C(0x001AC9), CCC_A},
	{RUNE_C(0x001ACA), RUNE_C(0x001ACA), CCC_B},
	{RUNE_C(0x001ACB), RUNE_C(0x001ACE), CCC_A},
	{RUNE_C(0x001B34), RUNE_C(0x001B34), CCC_NK},
	{RUNE_C(0x001B44), RUNE_C(0x001B44), CCC_VR},
	{RUNE_C(0x001B6B), RUNE_C(0x001B6B), CCC_A},
	{RUNE_C(0x001B6C), RUNE_C(0x001B6C), CCC_B},
	{RUNE_C(0x001B6D), RUNE_C(0x001B73), CCC_A},
	{RUNE_C(0x001BAA), RUNE_C(0x001BAB), CCC_VR},
	{RUNE_C(0x001BE6), RUNE_C(0x001BE6), CCC_NK},
	{RUNE_C(0x001BF2), RUNE_C(0x001BF3), CCC_VR},
	{RUNE_C(0x001C37), RUNE_C(0x001C37), CCC_NK},
	{RUNE_C(0x001CD0), RUNE_C(0x001CD2), CCC_A},
	{RUNE_C(0x001CD4), RUNE_C(0x001CD4), CCC_OV},
	{RUNE_C(0x001CD5), RUNE_C(0x001CD9), CCC_B},
	{RUNE_C(0x001CDA), RUNE_C(0x001CDB), CCC_A},
	{RUNE_C(0x001CDC), RUNE_C(0x001CDF), CCC_B},
	{RUNE_C(0x001CE0), RUNE_C(0x001CE0), CCC_A},
	{RUNE_C(0x001CE2), RUNE_C(0x001CE8), CCC_OV},
	{RUNE_C(0x001CED), RUNE_C(0x001CED), CCC_B},
	{RUNE_C(0x001CF4), RUNE_C(0x001CF4), CCC_A},
	{RUNE_C(0x001CF8), RUNE_C(0x001CF9), CCC_A},
	{RUNE_C(0x001DC0), RUNE_C(0x001DC1), CCC_A},
	{RUNE_C(0x001DC2), RUNE_C(0x001DC2), CCC_B},
	{RUNE_C(0x001DC3), RUNE_C(0x001DC9), CCC_A},
	{RUNE_C(0x001DCA), RUNE_C(0x001DCA), CCC_B},
	{RUNE_C(0x001DCB), RUNE_C(0x001DCC), CCC_A},
	{RUNE_C(0x001DCD), RUNE_C(0x001DCD), CCC_DA},
	{RUNE_C(0x001DCE), RUNE_C(0x001DCE), CCC_ATA},
	{RUNE_C(0x001DCF), RUNE_C(0x001DCF), CCC_B},
	{RUNE_C(0x001DD0), RUNE_C(0x001DD0), CCC_ATB},
	{RUNE_C(0x001DD1), RUNE_C(0x001DF5), CCC_A},
	{RUNE_C(0x001DF6), RUNE_C(0x001DF6), CCC_AR},
	{RUNE_C(0x001DF7), RUNE_C(0x001DF8), CCC_AL},
	{RUNE_C(0x001DF9), RUNE_C(0x001DF9), CCC_B},
	{RUNE_C(0x001DFA), RUNE_C(0x001DFA), CCC_BL},
	{RUNE_C(0x001DFB), RUNE_C(0x001DFB), CCC_A},
	{RUNE_C(0x001DFC), RUNE_C(0x001DFC), CCC_DB},
	{RUNE_C(0x001DFD), RUNE_C(0x001DFD), CCC_B},
	{RUNE_C(0x001DFE), RUNE_C(0x001DFE), CCC_A},
	{RUNE_C(0x001DFF), RUNE_C(0x001DFF), CCC_B},
	{RUNE_C(0x0020D0), RUNE_C(0x0020D1), CCC_A},
	{RUNE_C(0x0020D2), RUNE_C(0x0020D3), CCC_OV},
	{RUNE_C(0x0020D4), RUNE_C(0x0020D7), CCC_A},
	{RUNE_C(0x0020D8), RUNE_C(0x0020DA), CCC_OV},
	{RUNE_C(0x0020DB), RUNE_C(0x0020DC), CCC_A},
	{RUNE_C(0x0020E1), RUNE_C(0x0020E1), CCC_A},
	{RUNE_C(0x0020E5), RUNE_C(0x0020E6), CCC_OV},
	{RUNE_C(0x0020E7), RUNE_C(0x0020E7), CCC_A},
	{RUNE_C(0x0020E8), RUNE_C(0x0020E8), CCC_B},
	{RUNE_C(0x0020E9), RUNE_C(0x0020E9), CCC_A},
	{RUNE_C(0x0020EA), RUNE_C(0x0020EB), CCC_OV},
	{RUNE_C(0x0020EC), RUNE_C(0x0020EF), CCC_B},
	{RUNE_C(0x0020F0), RUNE_C(0x0020F0), CCC_A},
	{RUNE_C(0x002CEF), RUNE_C(0x002CF1), CCC_A},
	{RUNE_C(0x002D7F), RUNE_C(0x002D7F), CCC_VR},
	{RUNE_C(0x002DE0), RUNE_C(0x002DFF), CCC_A},
	{RUNE_C(0x00302A), RUNE_C(0x00302A), CCC_BL},
	{RUNE_C(0x00302B), RUNE_C(0x00302B), CCC_AL},
	{RUNE_C(0x00302C), RUNE_C(0x00302C), CCC_AR},
	{RUNE_C(0x00302D), RUNE_C(0x00302D), CCC_BR},
	{RUNE_C(0x00302E), RUNE_C(0x00302F), CCC_L},
	{RUNE_C(0x003099), RUNE_C(0x00309A), CCC_KV},
	{RUNE_C(0x00A66F), RUNE_C(0x00A66F), CCC_A},
	{RUNE_C(0x00A674), RUNE_C(0x00A67D), CCC_A},
	{RUNE_C(0x00A69E), RUNE_C(0x00A69F), CCC_A},
	{RUNE_C(0x00A6F0), RUNE_C(0x00A6F1), CCC_A},
	{RUNE_C(0x00A806), RUNE_C(0x00A806), CCC_VR},
	{RUNE_C(0x00A82C), RUNE_C(0x00A82C), CCC_VR},
	{RUNE_C(0x00A8C4), RUNE_C(0x00A8C4), CCC_VR},
	{RUNE_C(0x00A8E0), RUNE_C(0x00A8F1), CCC_A},
	{RUNE_C(0x00A92B), RUNE_C(0x00A92D), CCC_B},
	{RUNE_C(0x00A953), RUNE_C(0x00A953), CCC_VR},
	{RUNE_C(0x00A9B3), RUNE_C(0x00A9B3), CCC_NK},
	{RUNE_C(0x00A9C0), RUNE_C(0x00A9C0), CCC_VR},
	{RUNE_C(0x00AAB0), RUNE_C(0x00AAB0), CCC_A},
	{RUNE_C(0x00AAB2), RUNE_C(0x00AAB3), CCC_A},
	{RUNE_C(0x00AAB4), RUNE_C(0x00AAB4), CCC_B},
	{RUNE_C(0x00AAB7), RUNE_C(0x00AAB8), CCC_A},
	{RUNE_C(0x00AABE), RUNE_C(0x00AABF), CCC_A},
	{RUNE_C(0x00AAC1), RUNE_C(0x00AAC1), CCC_A},
	{RUNE_C(0x00AAF6), RUNE_C(0x00AAF6), CCC_VR},
	{RUNE_C(0x00ABED), RUNE_C(0x00ABED), CCC_VR},
	{RUNE_C(0x00FB1E), RUNE_C(0x00FB1E), CCC_CCC26},
	{RUNE_C(0x00FE20), RUNE_C(0x00FE26), CCC_A},
	{RUNE_C(0x00FE27), RUNE_C(0x00FE2D), CCC_B},
	{RUNE_C(0x00FE2E), RUNE_C(0x00FE2F), CCC_A},
	{RUNE_C(0x0101FD), RUNE_C(0x0101FD), CCC_B},
	{RUNE_C(0x0102E0), RUNE_C(0x0102E0), CCC_B},
	{RUNE_C(0x010376), RUNE_C(0x01037A), CCC_A},
	{RUNE_C(0x010A0D), RUNE_C(0x010A0D), CCC_B},
	{RUNE_C(0x010A0F), RUNE_C(0x010A0F), CCC_A},
	{RUNE_C(0x010A38), RUNE_C(0x010A38), CCC_A},
	{RUNE_C(0x010A39), RUNE_C(0x010A39), CCC_OV},
	{RUNE_C(0x010A3A), RUNE_C(0x010A3A), CCC_B},
	{RUNE_C(0x010A3F), RUNE_C(0x010A3F), CCC_VR},
	{RUNE_C(0x010AE5), RUNE_C(0x010AE5), CCC_A},
	{RUNE_C(0x010AE6), RUNE_C(0x010AE6), CCC_B},
	{RUNE_C(0x010D24), RUNE_C(0x010D27), CCC_A},
	{RUNE_C(0x010EAB), RUNE_C(0x010EAC), CCC_A},
	{RUNE_C(0x010EFD), RUNE_C(0x010EFF), CCC_B},
	{RUNE_C(0x010F46), RUNE_C(0x010F47), CCC_B},
	{RUNE_C(0x010F48), RUNE_C(0x010F4A), CCC_A},
	{RUNE_C(0x010F4B), RUNE_C(0x010F4B), CCC_B},
	{RUNE_C(0x010F4C), RUNE_C(0x010F4C), CCC_A},
	{RUNE_C(0x010F4D), RUNE_C(0x010F50), CCC_B},
	{RUNE_C(0x010F82), RUNE_C(0x010F82), CCC_A},
	{RUNE_C(0x010F83), RUNE_C(0x010F83), CCC_B},
	{RUNE_C(0x010F84), RUNE_C(0x010F84), CCC_A},
	{RUNE_C(0x010F85), RUNE_C(0x010F85), CCC_B},
	{RUNE_C(0x011046), RUNE_C(0x011046), CCC_VR},
	{RUNE_C(0x011070), RUNE_C(0x011070), CCC_VR},
	{RUNE_C(0x01107F), RUNE_C(0x01107F), CCC_VR},
	{RUNE_C(0x0110B9), RUNE_C(0x0110B9), CCC_VR},
	{RUNE_C(0x0110BA), RUNE_C(0x0110BA), CCC_NK},
	{RUNE_C(0x011100), RUNE_C(0x011102), CCC_A},
	{RUNE_C(0x011133), RUNE_C(0x011134), CCC_VR},
	{RUNE_C(0x011173), RUNE_C(0x011173), CCC_NK},
	{RUNE_C(0x0111C0), RUNE_C(0x0111C0), CCC_VR},
	{RUNE_C(0x0111CA), RUNE_C(0x0111CA), CCC_NK},
	{RUNE_C(0x011235), RUNE_C(0x011235), CCC_VR},
	{RUNE_C(0x011236), RUNE_C(0x011236), CCC_NK},
	{RUNE_C(0x0112E9), RUNE_C(0x0112E9), CCC_NK},
	{RUNE_C(0x0112EA), RUNE_C(0x0112EA), CCC_VR},
	{RUNE_C(0x01133B), RUNE_C(0x01133C), CCC_NK},
	{RUNE_C(0x01134D), RUNE_C(0x01134D), CCC_VR},
	{RUNE_C(0x011366), RUNE_C(0x01136C), CCC_A},
	{RUNE_C(0x011370), RUNE_C(0x011374), CCC_A},
	{RUNE_C(0x011442), RUNE_C(0x011442), CCC_VR},
	{RUNE_C(0x011446), RUNE_C(0x011446), CCC_NK},
	{RUNE_C(0x01145E), RUNE_C(0x01145E), CCC_A},
	{RUNE_C(0x0114C2), RUNE_C(0x0114C2), CCC_VR},
	{RUNE_C(0x0114C3), RUNE_C(0x0114C3), CCC_NK},
	{RUNE_C(0x0115BF), RUNE_C(0x0115BF), CCC_VR},
	{RUNE_C(0x0115C0), RUNE_C(0x0115C0), CCC_NK},
	{RUNE_C(0x01163F), RUNE_C(0x01163F), CCC_VR},
	{RUNE_C(0x0116B6), RUNE_C(0x0116B6), CCC_VR},
	{RUNE_C(0x0116B7), RUNE_C(0x0116B7), CCC_NK},
	{RUNE_C(0x01172B), RUNE_C(0x01172B), CCC_VR},
	{RUNE_C(0x011839), RUNE_C(0x011839), CCC_VR},
	{RUNE_C(0x01183A), RUNE_C(0x01183A), CCC_NK},
	{RUNE_C(0x01193D), RUNE_C(0x01193E), CCC_VR},
	{RUNE_C(0x011943), RUNE_C(0x011943), CCC_NK},
	{RUNE_C(0x0119E0), RUNE_C(0x0119E0), CCC_VR},
	{RUNE_C(0x011A34), RUNE_C(0x011A34), CCC_VR},
	{RUNE_C(0x011A47), RUNE_C(0x011A47), CCC_VR},
	{RUNE_C(0x011A99), RUNE_C(0x011A99), CCC_VR},
	{RUNE_C(0x011C3F), RUNE_C(0x011C3F), CCC_VR},
	{RUNE_C(0x011D42), RUNE_C(0x011D42), CCC_NK},
	{RUNE_C(0x011D44), RUNE_C(0x011D45), CCC_VR},
	{RUNE_C(0x011D97), RUNE_C(0x011D97), CCC_VR},
	{RUNE_C(0x011F41), RUNE_C(0x011F42), CCC_VR},
	{RUNE_C(0x016AF0), RUNE_C(0x016AF4), CCC_OV},
	{RUNE_C(0x016B30), RUNE_C(0x016B36), CCC_A},
	{RUNE_C(0x016FF0), RUNE_C(0x016FF1), CCC_HANR},
	{RUNE_C(0x01BC9E), RUNE_C(0x01BC9E), CCC_OV},
	{RUNE_C(0x01D165), RUNE_C(0x01D166), CCC_ATAR},
	{RUNE_C(0x01D167), RUNE_C(0x01D169), CCC_OV},
	{RUNE_C(0x01D16D), RUNE_C(0x01D16D), CCC_R},
	{RUNE_C(0x01D16E), RUNE_C(0x01D172), CCC_ATAR},
	{RUNE_C(0x01D17B), RUNE_C(0x01D182), CCC_B},
	{RUNE_C(0x01D185), RUNE_C(0x01D189), CCC_A},
	{RUNE_C(0x01D18A), RUNE_C(0x01D18B), CCC_B},
	{RUNE_C(0x01D1AA), RUNE_C(0x01D1AD), CCC_A},
	{RUNE_C(0x01D242), RUNE_C(0x01D244), CCC_A},
	{RUNE_C(0x01E000), RUNE_C(0x01E006), CCC_A},
	{RUNE_C(0x01E008), RUNE_C(0x01E018), CCC_A},
	{RUNE_C(0x01E01B), RUNE_C(0x01E021), CCC_A},
	{RUNE_C(0x01E023), RUNE_C(0x01E024), CCC_A},
	{RUNE_C(0x01E026), RUNE_C(0x01E02A), CCC_A},
	{RUNE_C(0x01E08F), RUNE_C(0x01E08F), CCC_A},
	{RUNE_C(0x01E130), RUNE_C(0x01E136), CCC_A},
	{RUNE_C(0x01E2AE), RUNE_C(0x01E2AE), CCC_A},
	{RUNE_C(0x01E2EC), RUNE_C(0x01E2EF), CCC_A},
	{RUNE_C(0x01E4EC), RUNE_C(0x01E4ED), CCC_AR},
	{RUNE_C(0x01E4EE), RUNE_C(0x01E4EE), CCC_B},
	{RUNE_C(0x01E4EF), RUNE_C(0x01E4EF), CCC_A},
	{RUNE_C(0x01E8D0), RUNE_C(0x01E8D6), CCC_B},
	{RUNE_C(0x01E944), RUNE_C(0x01E949), CCC_A},
	{RUNE_C(0x01E94A), RUNE_C(0x01E94A), CCC_NK},
};

_MLIB_DEFINE_BSEARCH(enum uprop_ccc, lookup, CCC_NR)

enum uprop_ccc
uprop_get_ccc(rune ch)
{
	return ch < lookup[0].lo ? CCC_NR : mlib_lookup(ch);
}