Repository navigation
Expand file tree
/
Copy pathunicase.h
More file actions
901 lines (876 loc) · 50.3 KB
/
Copy pathunicase.h
File metadata and controls
901 lines (876 loc) · 50.3 KB
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
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
/*
** unicase.h - Unicode case mapping tables
**
** Generated by tools/gen_unicase.rb from the Unicode 17.0.0 character
** database. Do not edit by hand.
**
** Sources below 128 are not in the tables: the callers fold ASCII inline.
** A source that maps to several characters is in the multi table beside
** each run table, spelled as the UTF-8 bytes it produces.
**
** Title case is stored as its difference from upper case, and folding as
** its difference from the lowercase mapping; a run of delta 0 in either
** means the source maps under the table it rides on and not under this
** one.
**
** See Copyright Notice in mruby.h
*/
#ifndef MRB_UNICASE_H
#define MRB_UNICASE_H
/* One run of sources start, start+stride, ... (count entries), each
mapping to the source plus delta, in six bytes least significant first:
bits 0-20 start, the first source of the run
bits 21-27 count, how many sources it holds
bit 28 stride - 1, so 0 steps by one and 1 by two
bits 29-45 delta + UNI_CASE_DELTA_BIAS
A struct of the four fields costs twelve bytes to the same effect, over
half of it padding around a 21-bit codepoint in a 32-bit field. */
#define UNI_CASE_RUN_BYTES 6
#define UNI_CASE_DELTA_BIAS 65536
/* One source mapping to the `len` bytes of uni_case_pool at `off`, in five
bytes the same way:
bits 0-20 cp, the source
bits 21-32 off, where its spelling starts in the pool
bits 33-35 len, how many bytes the spelling takes */
#define UNI_CASE_MULTI_BYTES 5
/* The widest mapping any of the tables produces, in UTF-8 bytes. */
#define UNI_CASE_MAX_BYTES 6
static const unsigned char uni_case_pool[] = {
0x69, 0xCC, 0x87, 0x53, 0x53, 0xCA, 0xBC, 0x4E, 0x4A, 0xCC, 0x8C, 0xCE,
0x99, 0xCC, 0x88, 0xCC, 0x81, 0xCE, 0xA5, 0xCC, 0x88, 0xCC, 0x81, 0xD4,
0xB5, 0xD5, 0x92, 0x48, 0xCC, 0xB1, 0x54, 0xCC, 0x88, 0x57, 0xCC, 0x8A,
0x59, 0xCC, 0x8A, 0x41, 0xCA, 0xBE, 0xCE, 0xA5, 0xCC, 0x93, 0xCE, 0xA5,
0xCC, 0x93, 0xCC, 0x80, 0xCE, 0xA5, 0xCC, 0x93, 0xCC, 0x81, 0xCE, 0xA5,
0xCC, 0x93, 0xCD, 0x82, 0xE1, 0xBC, 0x88, 0xCE, 0x99, 0xE1, 0xBC, 0x89,
0xCE, 0x99, 0xE1, 0xBC, 0x8A, 0xCE, 0x99, 0xE1, 0xBC, 0x8B, 0xCE, 0x99,
0xE1, 0xBC, 0x8C, 0xCE, 0x99, 0xE1, 0xBC, 0x8D, 0xCE, 0x99, 0xE1, 0xBC,
0x8E, 0xCE, 0x99, 0xE1, 0xBC, 0x8F, 0xCE, 0x99, 0xE1, 0xBC, 0xA8, 0xCE,
0x99, 0xE1, 0xBC, 0xA9, 0xCE, 0x99, 0xE1, 0xBC, 0xAA, 0xCE, 0x99, 0xE1,
0xBC, 0xAB, 0xCE, 0x99, 0xE1, 0xBC, 0xAC, 0xCE, 0x99, 0xE1, 0xBC, 0xAD,
0xCE, 0x99, 0xE1, 0xBC, 0xAE, 0xCE, 0x99, 0xE1, 0xBC, 0xAF, 0xCE, 0x99,
0xE1, 0xBD, 0xA8, 0xCE, 0x99, 0xE1, 0xBD, 0xA9, 0xCE, 0x99, 0xE1, 0xBD,
0xAA, 0xCE, 0x99, 0xE1, 0xBD, 0xAB, 0xCE, 0x99, 0xE1, 0xBD, 0xAC, 0xCE,
0x99, 0xE1, 0xBD, 0xAD, 0xCE, 0x99, 0xE1, 0xBD, 0xAE, 0xCE, 0x99, 0xE1,
0xBD, 0xAF, 0xCE, 0x99, 0xE1, 0xBE, 0xBA, 0xCE, 0x99, 0xCE, 0x91, 0xCE,
0x99, 0xCE, 0x86, 0xCE, 0x99, 0xCE, 0x91, 0xCD, 0x82, 0xCE, 0x91, 0xCD,
0x82, 0xCE, 0x99, 0xE1, 0xBF, 0x8A, 0xCE, 0x99, 0xCE, 0x97, 0xCE, 0x99,
0xCE, 0x89, 0xCE, 0x99, 0xCE, 0x97, 0xCD, 0x82, 0xCE, 0x97, 0xCD, 0x82,
0xCE, 0x99, 0xCE, 0x99, 0xCC, 0x88, 0xCC, 0x80, 0xCE, 0x99, 0xCD, 0x82,
0xCE, 0x99, 0xCC, 0x88, 0xCD, 0x82, 0xCE, 0xA5, 0xCC, 0x88, 0xCC, 0x80,
0xCE, 0xA1, 0xCC, 0x93, 0xCE, 0xA5, 0xCD, 0x82, 0xCE, 0xA5, 0xCC, 0x88,
0xCD, 0x82, 0xE1, 0xBF, 0xBA, 0xCE, 0x99, 0xCE, 0xA9, 0xCE, 0x99, 0xCE,
0x8F, 0xCE, 0x99, 0xCE, 0xA9, 0xCD, 0x82, 0xCE, 0xA9, 0xCD, 0x82, 0xCE,
0x99, 0x46, 0x46, 0x46, 0x49, 0x46, 0x4C, 0x46, 0x46, 0x49, 0x46, 0x46,
0x4C, 0x53, 0x54, 0xD5, 0x84, 0xD5, 0x86, 0xD5, 0x84, 0xD4, 0xB5, 0xD5,
0x84, 0xD4, 0xBB, 0xD5, 0x8E, 0xD5, 0x86, 0xD5, 0x84, 0xD4, 0xBD, 0x53,
0x73, 0xD4, 0xB5, 0xD6, 0x82, 0xE1, 0xBE, 0xBA, 0xCD, 0x85, 0xCE, 0x86,
0xCD, 0x85, 0xCE, 0x91, 0xCD, 0x82, 0xCD, 0x85, 0xE1, 0xBF, 0x8A, 0xCD,
0x85, 0xCE, 0x89, 0xCD, 0x85, 0xCE, 0x97, 0xCD, 0x82, 0xCD, 0x85, 0xE1,
0xBF, 0xBA, 0xCD, 0x85, 0xCE, 0x8F, 0xCD, 0x85, 0xCE, 0xA9, 0xCD, 0x82,
0xCD, 0x85, 0x46, 0x66, 0x46, 0x69, 0x46, 0x6C, 0x46, 0x66, 0x69, 0x46,
0x66, 0x6C, 0x53, 0x74, 0xD5, 0x84, 0xD5, 0xB6, 0xD5, 0x84, 0xD5, 0xA5,
0xD5, 0x84, 0xD5, 0xAB, 0xD5, 0x8E, 0xD5, 0xB6, 0xD5, 0x84, 0xD5, 0xAD,
0x64, 0xC5, 0xBD, 0x6C, 0x4A, 0x6E, 0x4A, 0x64, 0x5A, 0xE1, 0xBC, 0x80,
0xCE, 0x99, 0xE1, 0xBC, 0x81, 0xCE, 0x99, 0xE1, 0xBC, 0x82, 0xCE, 0x99,
0xE1, 0xBC, 0x83, 0xCE, 0x99, 0xE1, 0xBC, 0x84, 0xCE, 0x99, 0xE1, 0xBC,
0x85, 0xCE, 0x99, 0xE1, 0xBC, 0x86, 0xCE, 0x99, 0xE1, 0xBC, 0x87, 0xCE,
0x99, 0xE1, 0xBC, 0xA0, 0xCE, 0x99, 0xE1, 0xBC, 0xA1, 0xCE, 0x99, 0xE1,
0xBC, 0xA2, 0xCE, 0x99, 0xE1, 0xBC, 0xA3, 0xCE, 0x99, 0xE1, 0xBC, 0xA4,
0xCE, 0x99, 0xE1, 0xBC, 0xA5, 0xCE, 0x99, 0xE1, 0xBC, 0xA6, 0xCE, 0x99,
0xE1, 0xBC, 0xA7, 0xCE, 0x99, 0xE1, 0xBD, 0xA0, 0xCE, 0x99, 0xE1, 0xBD,
0xA1, 0xCE, 0x99, 0xE1, 0xBD, 0xA2, 0xCE, 0x99, 0xE1, 0xBD, 0xA3, 0xCE,
0x99, 0xE1, 0xBD, 0xA4, 0xCE, 0x99, 0xE1, 0xBD, 0xA5, 0xCE, 0x99, 0xE1,
0xBD, 0xA6, 0xCE, 0x99, 0xE1, 0xBD, 0xA7, 0xCE, 0x99, 0xCE, 0xB1, 0xCE,
0x99, 0xCE, 0xB7, 0xCE, 0x99, 0xCF, 0x89, 0xCE, 0x99, 0x73, 0x73, 0xCA,
0xBC, 0x6E, 0x6A, 0xCC, 0x8C, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCF,
0x85, 0xCC, 0x88, 0xCC, 0x81, 0xD5, 0xA5, 0xD6, 0x82, 0x68, 0xCC, 0xB1,
0x74, 0xCC, 0x88, 0x77, 0xCC, 0x8A, 0x79, 0xCC, 0x8A, 0x61, 0xCA, 0xBE,
0xCF, 0x85, 0xCC, 0x93, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCF, 0x85,
0xCC, 0x93, 0xCC, 0x81, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xE1, 0xBC,
0x80, 0xCE, 0xB9, 0xE1, 0xBC, 0x81, 0xCE, 0xB9, 0xE1, 0xBC, 0x82, 0xCE,
0xB9, 0xE1, 0xBC, 0x83, 0xCE, 0xB9, 0xE1, 0xBC, 0x84, 0xCE, 0xB9, 0xE1,
0xBC, 0x85, 0xCE, 0xB9, 0xE1, 0xBC, 0x86, 0xCE, 0xB9, 0xE1, 0xBC, 0x87,
0xCE, 0xB9, 0xE1, 0xBC, 0xA0, 0xCE, 0xB9, 0xE1, 0xBC, 0xA1, 0xCE, 0xB9,
0xE1, 0xBC, 0xA2, 0xCE, 0xB9, 0xE1, 0xBC, 0xA3, 0xCE, 0xB9, 0xE1, 0xBC,
0xA4, 0xCE, 0xB9, 0xE1, 0xBC, 0xA5, 0xCE, 0xB9, 0xE1, 0xBC, 0xA6, 0xCE,
0xB9, 0xE1, 0xBC, 0xA7, 0xCE, 0xB9, 0xE1, 0xBD, 0xA0, 0xCE, 0xB9, 0xE1,
0xBD, 0xA1, 0xCE, 0xB9, 0xE1, 0xBD, 0xA2, 0xCE, 0xB9, 0xE1, 0xBD, 0xA3,
0xCE, 0xB9, 0xE1, 0xBD, 0xA4, 0xCE, 0xB9, 0xE1, 0xBD, 0xA5, 0xCE, 0xB9,
0xE1, 0xBD, 0xA6, 0xCE, 0xB9, 0xE1, 0xBD, 0xA7, 0xCE, 0xB9, 0xE1, 0xBD,
0xB0, 0xCE, 0xB9, 0xCE, 0xB1, 0xCE, 0xB9, 0xCE, 0xAC, 0xCE, 0xB9, 0xCE,
0xB1, 0xCD, 0x82, 0xCE, 0xB1, 0xCD, 0x82, 0xCE, 0xB9, 0xE1, 0xBD, 0xB4,
0xCE, 0xB9, 0xCE, 0xB7, 0xCE, 0xB9, 0xCE, 0xAE, 0xCE, 0xB9, 0xCE, 0xB7,
0xCD, 0x82, 0xCE, 0xB7, 0xCD, 0x82, 0xCE, 0xB9, 0xCE, 0xB9, 0xCC, 0x88,
0xCC, 0x80, 0xCE, 0xB9, 0xCD, 0x82, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82,
0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCF, 0x81, 0xCC, 0x93, 0xCF, 0x85,
0xCD, 0x82, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xE1, 0xBD, 0xBC, 0xCE,
0xB9, 0xCF, 0x89, 0xCE, 0xB9, 0xCF, 0x8E, 0xCE, 0xB9, 0xCF, 0x89, 0xCD,
0x82, 0xCF, 0x89, 0xCD, 0x82, 0xCE, 0xB9, 0x66, 0x66, 0x66, 0x69, 0x66,
0x6C, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, 0x73, 0x74, 0xD5, 0xB4, 0xD5,
0xB6, 0xD5, 0xB4, 0xD5, 0xA5, 0xD5, 0xB4, 0xD5, 0xAB, 0xD5, 0xBE, 0xD5,
0xB6, 0xD5, 0xB4, 0xD5, 0xAD,
};
/* the lowercase mapping: 1461 sources in 184 runs, 1 multi. */
static const uint8_t uni_lower_runs[] = {
0xC0, 0x00, 0xE0, 0x02, 0x04, 0x20, /* 0x000C0 x23, +32 */
0xD8, 0x00, 0xE0, 0x00, 0x04, 0x20, /* 0x000D8 x7, +32 */
0x00, 0x01, 0x00, 0x33, 0x00, 0x20, /* 0x00100 x24, +1 */
0x32, 0x01, 0x60, 0x30, 0x00, 0x20, /* 0x00132 x3, +1 */
0x39, 0x01, 0x00, 0x31, 0x00, 0x20, /* 0x00139 x8, +1 */
0x4A, 0x01, 0xE0, 0x32, 0x00, 0x20, /* 0x0014A x23, +1 */
0x78, 0x01, 0x20, 0xE0, 0xF0, 0x1F, /* 0x00178 x1, -121 */
0x79, 0x01, 0x60, 0x30, 0x00, 0x20, /* 0x00179 x3, +1 */
0x81, 0x01, 0x20, 0x40, 0x1A, 0x20, /* 0x00181 x1, +210 */
0x82, 0x01, 0x40, 0x30, 0x00, 0x20, /* 0x00182 x2, +1 */
0x86, 0x01, 0x20, 0xC0, 0x19, 0x20, /* 0x00186 x1, +206 */
0x87, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x00187 x1, +1 */
0x89, 0x01, 0x40, 0xA0, 0x19, 0x20, /* 0x00189 x2, +205 */
0x8B, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x0018B x1, +1 */
0x8E, 0x01, 0x20, 0xE0, 0x09, 0x20, /* 0x0018E x1, +79 */
0x8F, 0x01, 0x20, 0x40, 0x19, 0x20, /* 0x0018F x1, +202 */
0x90, 0x01, 0x20, 0x60, 0x19, 0x20, /* 0x00190 x1, +203 */
0x91, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x00191 x1, +1 */
0x93, 0x01, 0x20, 0xA0, 0x19, 0x20, /* 0x00193 x1, +205 */
0x94, 0x01, 0x20, 0xE0, 0x19, 0x20, /* 0x00194 x1, +207 */
0x96, 0x01, 0x20, 0x60, 0x1A, 0x20, /* 0x00196 x1, +211 */
0x97, 0x01, 0x20, 0x20, 0x1A, 0x20, /* 0x00197 x1, +209 */
0x98, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x00198 x1, +1 */
0x9C, 0x01, 0x20, 0x60, 0x1A, 0x20, /* 0x0019C x1, +211 */
0x9D, 0x01, 0x20, 0xA0, 0x1A, 0x20, /* 0x0019D x1, +213 */
0x9F, 0x01, 0x20, 0xC0, 0x1A, 0x20, /* 0x0019F x1, +214 */
0xA0, 0x01, 0x60, 0x30, 0x00, 0x20, /* 0x001A0 x3, +1 */
0xA6, 0x01, 0x20, 0x40, 0x1B, 0x20, /* 0x001A6 x1, +218 */
0xA7, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001A7 x1, +1 */
0xA9, 0x01, 0x20, 0x40, 0x1B, 0x20, /* 0x001A9 x1, +218 */
0xAC, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001AC x1, +1 */
0xAE, 0x01, 0x20, 0x40, 0x1B, 0x20, /* 0x001AE x1, +218 */
0xAF, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001AF x1, +1 */
0xB1, 0x01, 0x40, 0x20, 0x1B, 0x20, /* 0x001B1 x2, +217 */
0xB3, 0x01, 0x40, 0x30, 0x00, 0x20, /* 0x001B3 x2, +1 */
0xB7, 0x01, 0x20, 0x60, 0x1B, 0x20, /* 0x001B7 x1, +219 */
0xB8, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001B8 x1, +1 */
0xBC, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001BC x1, +1 */
0xC4, 0x01, 0x20, 0x40, 0x00, 0x20, /* 0x001C4 x1, +2 */
0xC5, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001C5 x1, +1 */
0xC7, 0x01, 0x20, 0x40, 0x00, 0x20, /* 0x001C7 x1, +2 */
0xC8, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001C8 x1, +1 */
0xCA, 0x01, 0x20, 0x40, 0x00, 0x20, /* 0x001CA x1, +2 */
0xCB, 0x01, 0x20, 0x31, 0x00, 0x20, /* 0x001CB x9, +1 */
0xDE, 0x01, 0x20, 0x31, 0x00, 0x20, /* 0x001DE x9, +1 */
0xF1, 0x01, 0x20, 0x40, 0x00, 0x20, /* 0x001F1 x1, +2 */
0xF2, 0x01, 0x40, 0x30, 0x00, 0x20, /* 0x001F2 x2, +1 */
0xF6, 0x01, 0x20, 0xE0, 0xF3, 0x1F, /* 0x001F6 x1, -97 */
0xF7, 0x01, 0x20, 0x00, 0xF9, 0x1F, /* 0x001F7 x1, -56 */
0xF8, 0x01, 0x80, 0x32, 0x00, 0x20, /* 0x001F8 x20, +1 */
0x20, 0x02, 0x20, 0xC0, 0xEF, 0x1F, /* 0x00220 x1, -130 */
0x22, 0x02, 0x20, 0x31, 0x00, 0x20, /* 0x00222 x9, +1 */
0x3A, 0x02, 0x20, 0x60, 0x45, 0x25, /* 0x0023A x1, +10795 */
0x3B, 0x02, 0x20, 0x20, 0x00, 0x20, /* 0x0023B x1, +1 */
0x3D, 0x02, 0x20, 0xA0, 0xEB, 0x1F, /* 0x0023D x1, -163 */
0x3E, 0x02, 0x20, 0x00, 0x45, 0x25, /* 0x0023E x1, +10792 */
0x41, 0x02, 0x20, 0x20, 0x00, 0x20, /* 0x00241 x1, +1 */
0x43, 0x02, 0x20, 0xA0, 0xE7, 0x1F, /* 0x00243 x1, -195 */
0x44, 0x02, 0x20, 0xA0, 0x08, 0x20, /* 0x00244 x1, +69 */
0x45, 0x02, 0x20, 0xE0, 0x08, 0x20, /* 0x00245 x1, +71 */
0x46, 0x02, 0xA0, 0x30, 0x00, 0x20, /* 0x00246 x5, +1 */
0x70, 0x03, 0x40, 0x30, 0x00, 0x20, /* 0x00370 x2, +1 */
0x76, 0x03, 0x20, 0x20, 0x00, 0x20, /* 0x00376 x1, +1 */
0x7F, 0x03, 0x20, 0x80, 0x0E, 0x20, /* 0x0037F x1, +116 */
0x86, 0x03, 0x20, 0xC0, 0x04, 0x20, /* 0x00386 x1, +38 */
0x88, 0x03, 0x60, 0xA0, 0x04, 0x20, /* 0x00388 x3, +37 */
0x8C, 0x03, 0x20, 0x00, 0x08, 0x20, /* 0x0038C x1, +64 */
0x8E, 0x03, 0x40, 0xE0, 0x07, 0x20, /* 0x0038E x2, +63 */
0x91, 0x03, 0x20, 0x02, 0x04, 0x20, /* 0x00391 x17, +32 */
0xA3, 0x03, 0x20, 0x01, 0x04, 0x20, /* 0x003A3 x9, +32 */
0xCF, 0x03, 0x20, 0x00, 0x01, 0x20, /* 0x003CF x1, +8 */
0xD8, 0x03, 0x80, 0x31, 0x00, 0x20, /* 0x003D8 x12, +1 */
0xF4, 0x03, 0x20, 0x80, 0xF8, 0x1F, /* 0x003F4 x1, -60 */
0xF7, 0x03, 0x20, 0x20, 0x00, 0x20, /* 0x003F7 x1, +1 */
0xF9, 0x03, 0x20, 0x20, 0xFF, 0x1F, /* 0x003F9 x1, -7 */
0xFA, 0x03, 0x20, 0x20, 0x00, 0x20, /* 0x003FA x1, +1 */
0xFD, 0x03, 0x60, 0xC0, 0xEF, 0x1F, /* 0x003FD x3, -130 */
0x00, 0x04, 0x00, 0x02, 0x0A, 0x20, /* 0x00400 x16, +80 */
0x10, 0x04, 0x00, 0x04, 0x04, 0x20, /* 0x00410 x32, +32 */
0x60, 0x04, 0x20, 0x32, 0x00, 0x20, /* 0x00460 x17, +1 */
0x8A, 0x04, 0x60, 0x33, 0x00, 0x20, /* 0x0048A x27, +1 */
0xC0, 0x04, 0x20, 0xE0, 0x01, 0x20, /* 0x004C0 x1, +15 */
0xC1, 0x04, 0xE0, 0x30, 0x00, 0x20, /* 0x004C1 x7, +1 */
0xD0, 0x04, 0x00, 0x36, 0x00, 0x20, /* 0x004D0 x48, +1 */
0x31, 0x05, 0xC0, 0x04, 0x06, 0x20, /* 0x00531 x38, +48 */
0xA0, 0x10, 0xC0, 0x04, 0x8C, 0x23, /* 0x010A0 x38, +7264 */
0xC7, 0x10, 0x20, 0x00, 0x8C, 0x23, /* 0x010C7 x1, +7264 */
0xCD, 0x10, 0x20, 0x00, 0x8C, 0x23, /* 0x010CD x1, +7264 */
0xA0, 0x13, 0x00, 0x0A, 0xFA, 0x32, /* 0x013A0 x80, +38864 */
0xF0, 0x13, 0xC0, 0x00, 0x01, 0x20, /* 0x013F0 x6, +8 */
0x89, 0x1C, 0x20, 0x20, 0x00, 0x20, /* 0x01C89 x1, +1 */
0x90, 0x1C, 0x60, 0x05, 0x88, 0x1E, /* 0x01C90 x43, -3008 */
0xBD, 0x1C, 0x60, 0x00, 0x88, 0x1E, /* 0x01CBD x3, -3008 */
0x00, 0x1E, 0x60, 0x39, 0x00, 0x20, /* 0x01E00 x75, +1 */
0x9E, 0x1E, 0x20, 0x20, 0x48, 0x1C, /* 0x01E9E x1, -7615 */
0xA0, 0x1E, 0x00, 0x36, 0x00, 0x20, /* 0x01EA0 x48, +1 */
0x08, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F08 x8, -8 */
0x18, 0x1F, 0xC0, 0x00, 0xFF, 0x1F, /* 0x01F18 x6, -8 */
0x28, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F28 x8, -8 */
0x38, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F38 x8, -8 */
0x48, 0x1F, 0xC0, 0x00, 0xFF, 0x1F, /* 0x01F48 x6, -8 */
0x59, 0x1F, 0x80, 0x10, 0xFF, 0x1F, /* 0x01F59 x4, -8 */
0x68, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F68 x8, -8 */
0x88, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F88 x8, -8 */
0x98, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01F98 x8, -8 */
0xA8, 0x1F, 0x00, 0x01, 0xFF, 0x1F, /* 0x01FA8 x8, -8 */
0xB8, 0x1F, 0x40, 0x00, 0xFF, 0x1F, /* 0x01FB8 x2, -8 */
0xBA, 0x1F, 0x40, 0xC0, 0xF6, 0x1F, /* 0x01FBA x2, -74 */
0xBC, 0x1F, 0x20, 0xE0, 0xFE, 0x1F, /* 0x01FBC x1, -9 */
0xC8, 0x1F, 0x80, 0x40, 0xF5, 0x1F, /* 0x01FC8 x4, -86 */
0xCC, 0x1F, 0x20, 0xE0, 0xFE, 0x1F, /* 0x01FCC x1, -9 */
0xD8, 0x1F, 0x40, 0x00, 0xFF, 0x1F, /* 0x01FD8 x2, -8 */
0xDA, 0x1F, 0x40, 0x80, 0xF3, 0x1F, /* 0x01FDA x2, -100 */
0xE8, 0x1F, 0x40, 0x00, 0xFF, 0x1F, /* 0x01FE8 x2, -8 */
0xEA, 0x1F, 0x40, 0x00, 0xF2, 0x1F, /* 0x01FEA x2, -112 */
0xEC, 0x1F, 0x20, 0x20, 0xFF, 0x1F, /* 0x01FEC x1, -7 */
0xF8, 0x1F, 0x40, 0x00, 0xF0, 0x1F, /* 0x01FF8 x2, -128 */
0xFA, 0x1F, 0x40, 0x40, 0xF0, 0x1F, /* 0x01FFA x2, -126 */
0xFC, 0x1F, 0x20, 0xE0, 0xFE, 0x1F, /* 0x01FFC x1, -9 */
0x26, 0x21, 0x20, 0x60, 0x54, 0x1C, /* 0x02126 x1, -7517 */
0x2A, 0x21, 0x20, 0x20, 0xE8, 0x1B, /* 0x0212A x1, -8383 */
0x2B, 0x21, 0x20, 0x40, 0xF7, 0x1B, /* 0x0212B x1, -8262 */
0x32, 0x21, 0x20, 0x80, 0x03, 0x20, /* 0x02132 x1, +28 */
0x60, 0x21, 0x00, 0x02, 0x02, 0x20, /* 0x02160 x16, +16 */
0x83, 0x21, 0x20, 0x20, 0x00, 0x20, /* 0x02183 x1, +1 */
0xB6, 0x24, 0x40, 0x43, 0x03, 0x20, /* 0x024B6 x26, +26 */
0x00, 0x2C, 0x00, 0x06, 0x06, 0x20, /* 0x02C00 x48, +48 */
0x60, 0x2C, 0x20, 0x20, 0x00, 0x20, /* 0x02C60 x1, +1 */
0x62, 0x2C, 0x20, 0x20, 0xC1, 0x1A, /* 0x02C62 x1, -10743 */
0x63, 0x2C, 0x20, 0x40, 0x23, 0x1E, /* 0x02C63 x1, -3814 */
0x64, 0x2C, 0x20, 0x20, 0xC3, 0x1A, /* 0x02C64 x1, -10727 */
0x67, 0x2C, 0x60, 0x30, 0x00, 0x20, /* 0x02C67 x3, +1 */
0x6D, 0x2C, 0x20, 0x80, 0xBC, 0x1A, /* 0x02C6D x1, -10780 */
0x6E, 0x2C, 0x20, 0x60, 0xC0, 0x1A, /* 0x02C6E x1, -10749 */
0x6F, 0x2C, 0x20, 0x20, 0xBC, 0x1A, /* 0x02C6F x1, -10783 */
0x70, 0x2C, 0x20, 0x40, 0xBC, 0x1A, /* 0x02C70 x1, -10782 */
0x72, 0x2C, 0x20, 0x20, 0x00, 0x20, /* 0x02C72 x1, +1 */
0x75, 0x2C, 0x20, 0x20, 0x00, 0x20, /* 0x02C75 x1, +1 */
0x7E, 0x2C, 0x40, 0x20, 0xB8, 0x1A, /* 0x02C7E x2, -10815 */
0x80, 0x2C, 0x40, 0x36, 0x00, 0x20, /* 0x02C80 x50, +1 */
0xEB, 0x2C, 0x40, 0x30, 0x00, 0x20, /* 0x02CEB x2, +1 */
0xF2, 0x2C, 0x20, 0x20, 0x00, 0x20, /* 0x02CF2 x1, +1 */
0x40, 0xA6, 0xE0, 0x32, 0x00, 0x20, /* 0x0A640 x23, +1 */
0x80, 0xA6, 0xC0, 0x31, 0x00, 0x20, /* 0x0A680 x14, +1 */
0x22, 0xA7, 0xE0, 0x30, 0x00, 0x20, /* 0x0A722 x7, +1 */
0x32, 0xA7, 0xE0, 0x33, 0x00, 0x20, /* 0x0A732 x31, +1 */
0x79, 0xA7, 0x40, 0x30, 0x00, 0x20, /* 0x0A779 x2, +1 */
0x7D, 0xA7, 0x20, 0x80, 0xBF, 0x0E, /* 0x0A77D x1, -35332 */
0x7E, 0xA7, 0xA0, 0x30, 0x00, 0x20, /* 0x0A77E x5, +1 */
0x8B, 0xA7, 0x20, 0x20, 0x00, 0x20, /* 0x0A78B x1, +1 */
0x8D, 0xA7, 0x20, 0x00, 0x5B, 0x0B, /* 0x0A78D x1, -42280 */
0x90, 0xA7, 0x40, 0x30, 0x00, 0x20, /* 0x0A790 x2, +1 */
0x96, 0xA7, 0x40, 0x31, 0x00, 0x20, /* 0x0A796 x10, +1 */
0xAA, 0xA7, 0x20, 0x80, 0x57, 0x0B, /* 0x0A7AA x1, -42308 */
0xAB, 0xA7, 0x20, 0x20, 0x56, 0x0B, /* 0x0A7AB x1, -42319 */
0xAC, 0xA7, 0x20, 0xA0, 0x56, 0x0B, /* 0x0A7AC x1, -42315 */
0xAD, 0xA7, 0x20, 0xE0, 0x57, 0x0B, /* 0x0A7AD x1, -42305 */
0xAE, 0xA7, 0x20, 0x80, 0x57, 0x0B, /* 0x0A7AE x1, -42308 */
0xB0, 0xA7, 0x20, 0xC0, 0x5D, 0x0B, /* 0x0A7B0 x1, -42258 */
0xB1, 0xA7, 0x20, 0xC0, 0x5A, 0x0B, /* 0x0A7B1 x1, -42282 */
0xB2, 0xA7, 0x20, 0x60, 0x5D, 0x0B, /* 0x0A7B2 x1, -42261 */
0xB3, 0xA7, 0x20, 0x00, 0x74, 0x20, /* 0x0A7B3 x1, +928 */
0xB4, 0xA7, 0x00, 0x31, 0x00, 0x20, /* 0x0A7B4 x8, +1 */
0xC4, 0xA7, 0x20, 0x00, 0xFA, 0x1F, /* 0x0A7C4 x1, -48 */
0xC5, 0xA7, 0x20, 0xA0, 0x57, 0x0B, /* 0x0A7C5 x1, -42307 */
0xC6, 0xA7, 0x20, 0x00, 0xB9, 0x0E, /* 0x0A7C6 x1, -35384 */
0xC7, 0xA7, 0x40, 0x30, 0x00, 0x20, /* 0x0A7C7 x2, +1 */
0xCB, 0xA7, 0x20, 0x20, 0x53, 0x0B, /* 0x0A7CB x1, -42343 */
0xCC, 0xA7, 0x00, 0x31, 0x00, 0x20, /* 0x0A7CC x8, +1 */
0xDC, 0xA7, 0x20, 0xE0, 0x37, 0x0B, /* 0x0A7DC x1, -42561 */
0xF5, 0xA7, 0x20, 0x20, 0x00, 0x20, /* 0x0A7F5 x1, +1 */
0x21, 0xFF, 0x40, 0x03, 0x04, 0x20, /* 0x0FF21 x26, +32 */
0x00, 0x04, 0x01, 0x05, 0x05, 0x20, /* 0x10400 x40, +40 */
0xB0, 0x04, 0x81, 0x04, 0x05, 0x20, /* 0x104B0 x36, +40 */
0x70, 0x05, 0x61, 0xE1, 0x04, 0x20, /* 0x10570 x11, +39 */
0x7C, 0x05, 0xE1, 0xE1, 0x04, 0x20, /* 0x1057C x15, +39 */
0x8C, 0x05, 0xE1, 0xE0, 0x04, 0x20, /* 0x1058C x7, +39 */
0x94, 0x05, 0x41, 0xE0, 0x04, 0x20, /* 0x10594 x2, +39 */
0x80, 0x0C, 0x61, 0x06, 0x08, 0x20, /* 0x10C80 x51, +64 */
0x50, 0x0D, 0xC1, 0x02, 0x04, 0x20, /* 0x10D50 x22, +32 */
0xA0, 0x18, 0x01, 0x04, 0x04, 0x20, /* 0x118A0 x32, +32 */
0x40, 0x6E, 0x01, 0x04, 0x04, 0x20, /* 0x16E40 x32, +32 */
0xA0, 0x6E, 0x21, 0x63, 0x03, 0x20, /* 0x16EA0 x25, +27 */
0x00, 0xE9, 0x41, 0x44, 0x04, 0x20, /* 0x1E900 x34, +34 */
};
#define UNI_LOWER_RUNS uni_lower_runs
#define UNI_LOWER_RUN_COUNT (sizeof(uni_lower_runs) / UNI_CASE_RUN_BYTES)
static const uint8_t uni_lower_multi[] = {
0x30, 0x01, 0x00, 0x00, 0x06, /* 0x00130, 3 at 0 */
};
#define UNI_LOWER_MULTI uni_lower_multi
#define UNI_LOWER_MULTI_COUNT (sizeof(uni_lower_multi) / UNI_CASE_MULTI_BYTES)
/* Lowest and highest source either table holds, so a lookup that
cannot hit anything costs one comparison. */
#define UNI_LOWER_MIN 0x000C0
#define UNI_LOWER_MAX 0x1E921
/* the uppercase mapping: 1452 sources in 197 runs, 102 multi. */
static const uint8_t uni_upper_runs[] = {
0xB5, 0x00, 0x20, 0xE0, 0x5C, 0x20, /* 0x000B5 x1, +743 */
0xE0, 0x00, 0xE0, 0x02, 0xFC, 0x1F, /* 0x000E0 x23, -32 */
0xF8, 0x00, 0xE0, 0x00, 0xFC, 0x1F, /* 0x000F8 x7, -32 */
0xFF, 0x00, 0x20, 0x20, 0x0F, 0x20, /* 0x000FF x1, +121 */
0x01, 0x01, 0x00, 0xF3, 0xFF, 0x1F, /* 0x00101 x24, -1 */
0x31, 0x01, 0x20, 0x00, 0xE3, 0x1F, /* 0x00131 x1, -232 */
0x33, 0x01, 0x60, 0xF0, 0xFF, 0x1F, /* 0x00133 x3, -1 */
0x3A, 0x01, 0x00, 0xF1, 0xFF, 0x1F, /* 0x0013A x8, -1 */
0x4B, 0x01, 0xE0, 0xF2, 0xFF, 0x1F, /* 0x0014B x23, -1 */
0x7A, 0x01, 0x60, 0xF0, 0xFF, 0x1F, /* 0x0017A x3, -1 */
0x7F, 0x01, 0x20, 0x80, 0xDA, 0x1F, /* 0x0017F x1, -300 */
0x80, 0x01, 0x20, 0x60, 0x18, 0x20, /* 0x00180 x1, +195 */
0x83, 0x01, 0x40, 0xF0, 0xFF, 0x1F, /* 0x00183 x2, -1 */
0x88, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x00188 x1, -1 */
0x8C, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x0018C x1, -1 */
0x92, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x00192 x1, -1 */
0x95, 0x01, 0x20, 0x20, 0x0C, 0x20, /* 0x00195 x1, +97 */
0x99, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x00199 x1, -1 */
0x9A, 0x01, 0x20, 0x60, 0x14, 0x20, /* 0x0019A x1, +163 */
0x9B, 0x01, 0x20, 0x20, 0xC8, 0x34, /* 0x0019B x1, +42561 */
0x9E, 0x01, 0x20, 0x40, 0x10, 0x20, /* 0x0019E x1, +130 */
0xA1, 0x01, 0x60, 0xF0, 0xFF, 0x1F, /* 0x001A1 x3, -1 */
0xA8, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001A8 x1, -1 */
0xAD, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001AD x1, -1 */
0xB0, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001B0 x1, -1 */
0xB4, 0x01, 0x40, 0xF0, 0xFF, 0x1F, /* 0x001B4 x2, -1 */
0xB9, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001B9 x1, -1 */
0xBD, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001BD x1, -1 */
0xBF, 0x01, 0x20, 0x00, 0x07, 0x20, /* 0x001BF x1, +56 */
0xC5, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001C5 x1, -1 */
0xC6, 0x01, 0x20, 0xC0, 0xFF, 0x1F, /* 0x001C6 x1, -2 */
0xC8, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001C8 x1, -1 */
0xC9, 0x01, 0x20, 0xC0, 0xFF, 0x1F, /* 0x001C9 x1, -2 */
0xCB, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001CB x1, -1 */
0xCC, 0x01, 0x20, 0xC0, 0xFF, 0x1F, /* 0x001CC x1, -2 */
0xCE, 0x01, 0x00, 0xF1, 0xFF, 0x1F, /* 0x001CE x8, -1 */
0xDD, 0x01, 0x20, 0x20, 0xF6, 0x1F, /* 0x001DD x1, -79 */
0xDF, 0x01, 0x20, 0xF1, 0xFF, 0x1F, /* 0x001DF x9, -1 */
0xF2, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001F2 x1, -1 */
0xF3, 0x01, 0x20, 0xC0, 0xFF, 0x1F, /* 0x001F3 x1, -2 */
0xF5, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001F5 x1, -1 */
0xF9, 0x01, 0x80, 0xF2, 0xFF, 0x1F, /* 0x001F9 x20, -1 */
0x23, 0x02, 0x20, 0xF1, 0xFF, 0x1F, /* 0x00223 x9, -1 */
0x3C, 0x02, 0x20, 0xE0, 0xFF, 0x1F, /* 0x0023C x1, -1 */
0x3F, 0x02, 0x40, 0xE0, 0x47, 0x25, /* 0x0023F x2, +10815 */
0x42, 0x02, 0x20, 0xE0, 0xFF, 0x1F, /* 0x00242 x1, -1 */
0x47, 0x02, 0xA0, 0xF0, 0xFF, 0x1F, /* 0x00247 x5, -1 */
0x50, 0x02, 0x20, 0xE0, 0x43, 0x25, /* 0x00250 x1, +10783 */
0x51, 0x02, 0x20, 0x80, 0x43, 0x25, /* 0x00251 x1, +10780 */
0x52, 0x02, 0x20, 0xC0, 0x43, 0x25, /* 0x00252 x1, +10782 */
0x53, 0x02, 0x20, 0xC0, 0xE5, 0x1F, /* 0x00253 x1, -210 */
0x54, 0x02, 0x20, 0x40, 0xE6, 0x1F, /* 0x00254 x1, -206 */
0x56, 0x02, 0x40, 0x60, 0xE6, 0x1F, /* 0x00256 x2, -205 */
0x59, 0x02, 0x20, 0xC0, 0xE6, 0x1F, /* 0x00259 x1, -202 */
0x5B, 0x02, 0x20, 0xA0, 0xE6, 0x1F, /* 0x0025B x1, -203 */
0x5C, 0x02, 0x20, 0xE0, 0xA9, 0x34, /* 0x0025C x1, +42319 */
0x60, 0x02, 0x20, 0x60, 0xE6, 0x1F, /* 0x00260 x1, -205 */
0x61, 0x02, 0x20, 0x60, 0xA9, 0x34, /* 0x00261 x1, +42315 */
0x63, 0x02, 0x20, 0x20, 0xE6, 0x1F, /* 0x00263 x1, -207 */
0x64, 0x02, 0x20, 0xE0, 0xAC, 0x34, /* 0x00264 x1, +42343 */
0x65, 0x02, 0x20, 0x00, 0xA5, 0x34, /* 0x00265 x1, +42280 */
0x66, 0x02, 0x20, 0x80, 0xA8, 0x34, /* 0x00266 x1, +42308 */
0x68, 0x02, 0x20, 0xE0, 0xE5, 0x1F, /* 0x00268 x1, -209 */
0x69, 0x02, 0x20, 0xA0, 0xE5, 0x1F, /* 0x00269 x1, -211 */
0x6A, 0x02, 0x20, 0x80, 0xA8, 0x34, /* 0x0026A x1, +42308 */
0x6B, 0x02, 0x20, 0xE0, 0x3E, 0x25, /* 0x0026B x1, +10743 */
0x6C, 0x02, 0x20, 0x20, 0xA8, 0x34, /* 0x0026C x1, +42305 */
0x6F, 0x02, 0x20, 0xA0, 0xE5, 0x1F, /* 0x0026F x1, -211 */
0x71, 0x02, 0x20, 0xA0, 0x3F, 0x25, /* 0x00271 x1, +10749 */
0x72, 0x02, 0x20, 0x60, 0xE5, 0x1F, /* 0x00272 x1, -213 */
0x75, 0x02, 0x20, 0x40, 0xE5, 0x1F, /* 0x00275 x1, -214 */
0x7D, 0x02, 0x20, 0xE0, 0x3C, 0x25, /* 0x0027D x1, +10727 */
0x80, 0x02, 0x20, 0xC0, 0xE4, 0x1F, /* 0x00280 x1, -218 */
0x82, 0x02, 0x20, 0x60, 0xA8, 0x34, /* 0x00282 x1, +42307 */
0x83, 0x02, 0x20, 0xC0, 0xE4, 0x1F, /* 0x00283 x1, -218 */
0x87, 0x02, 0x20, 0x40, 0xA5, 0x34, /* 0x00287 x1, +42282 */
0x88, 0x02, 0x20, 0xC0, 0xE4, 0x1F, /* 0x00288 x1, -218 */
0x89, 0x02, 0x20, 0x60, 0xF7, 0x1F, /* 0x00289 x1, -69 */
0x8A, 0x02, 0x40, 0xE0, 0xE4, 0x1F, /* 0x0028A x2, -217 */
0x8C, 0x02, 0x20, 0x20, 0xF7, 0x1F, /* 0x0028C x1, -71 */
0x92, 0x02, 0x20, 0xA0, 0xE4, 0x1F, /* 0x00292 x1, -219 */
0x9D, 0x02, 0x20, 0xA0, 0xA2, 0x34, /* 0x0029D x1, +42261 */
0x9E, 0x02, 0x20, 0x40, 0xA2, 0x34, /* 0x0029E x1, +42258 */
0x45, 0x03, 0x20, 0x80, 0x0A, 0x20, /* 0x00345 x1, +84 */
0x71, 0x03, 0x40, 0xF0, 0xFF, 0x1F, /* 0x00371 x2, -1 */
0x77, 0x03, 0x20, 0xE0, 0xFF, 0x1F, /* 0x00377 x1, -1 */
0x7B, 0x03, 0x60, 0x40, 0x10, 0x20, /* 0x0037B x3, +130 */
0xAC, 0x03, 0x20, 0x40, 0xFB, 0x1F, /* 0x003AC x1, -38 */
0xAD, 0x03, 0x60, 0x60, 0xFB, 0x1F, /* 0x003AD x3, -37 */
0xB1, 0x03, 0x20, 0x02, 0xFC, 0x1F, /* 0x003B1 x17, -32 */
0xC2, 0x03, 0x20, 0x20, 0xFC, 0x1F, /* 0x003C2 x1, -31 */
0xC3, 0x03, 0x20, 0x01, 0xFC, 0x1F, /* 0x003C3 x9, -32 */
0xCC, 0x03, 0x20, 0x00, 0xF8, 0x1F, /* 0x003CC x1, -64 */
0xCD, 0x03, 0x40, 0x20, 0xF8, 0x1F, /* 0x003CD x2, -63 */
0xD0, 0x03, 0x20, 0x40, 0xF8, 0x1F, /* 0x003D0 x1, -62 */
0xD1, 0x03, 0x20, 0xE0, 0xF8, 0x1F, /* 0x003D1 x1, -57 */
0xD5, 0x03, 0x20, 0x20, 0xFA, 0x1F, /* 0x003D5 x1, -47 */
0xD6, 0x03, 0x20, 0x40, 0xF9, 0x1F, /* 0x003D6 x1, -54 */
0xD7, 0x03, 0x20, 0x00, 0xFF, 0x1F, /* 0x003D7 x1, -8 */
0xD9, 0x03, 0x80, 0xF1, 0xFF, 0x1F, /* 0x003D9 x12, -1 */
0xF0, 0x03, 0x20, 0x40, 0xF5, 0x1F, /* 0x003F0 x1, -86 */
0xF1, 0x03, 0x20, 0x00, 0xF6, 0x1F, /* 0x003F1 x1, -80 */
0xF2, 0x03, 0x20, 0xE0, 0x00, 0x20, /* 0x003F2 x1, +7 */
0xF3, 0x03, 0x20, 0x80, 0xF1, 0x1F, /* 0x003F3 x1, -116 */
0xF5, 0x03, 0x20, 0x00, 0xF4, 0x1F, /* 0x003F5 x1, -96 */
0xF8, 0x03, 0x20, 0xE0, 0xFF, 0x1F, /* 0x003F8 x1, -1 */
0xFB, 0x03, 0x20, 0xE0, 0xFF, 0x1F, /* 0x003FB x1, -1 */
0x30, 0x04, 0x00, 0x04, 0xFC, 0x1F, /* 0x00430 x32, -32 */
0x50, 0x04, 0x00, 0x02, 0xF6, 0x1F, /* 0x00450 x16, -80 */
0x61, 0x04, 0x20, 0xF2, 0xFF, 0x1F, /* 0x00461 x17, -1 */
0x8B, 0x04, 0x60, 0xF3, 0xFF, 0x1F, /* 0x0048B x27, -1 */
0xC2, 0x04, 0xE0, 0xF0, 0xFF, 0x1F, /* 0x004C2 x7, -1 */
0xCF, 0x04, 0x20, 0x20, 0xFE, 0x1F, /* 0x004CF x1, -15 */
0xD1, 0x04, 0x00, 0xF6, 0xFF, 0x1F, /* 0x004D1 x48, -1 */
0x61, 0x05, 0xC0, 0x04, 0xFA, 0x1F, /* 0x00561 x38, -48 */
0xD0, 0x10, 0x60, 0x05, 0x78, 0x21, /* 0x010D0 x43, +3008 */
0xFD, 0x10, 0x60, 0x00, 0x78, 0x21, /* 0x010FD x3, +3008 */
0xF8, 0x13, 0xC0, 0x00, 0xFF, 0x1F, /* 0x013F8 x6, -8 */
0x80, 0x1C, 0x20, 0x40, 0xF2, 0x1C, /* 0x01C80 x1, -6254 */
0x81, 0x1C, 0x20, 0x60, 0xF2, 0x1C, /* 0x01C81 x1, -6253 */
0x82, 0x1C, 0x20, 0x80, 0xF3, 0x1C, /* 0x01C82 x1, -6244 */
0x83, 0x1C, 0x40, 0xC0, 0xF3, 0x1C, /* 0x01C83 x2, -6242 */
0x85, 0x1C, 0x20, 0xA0, 0xF3, 0x1C, /* 0x01C85 x1, -6243 */
0x86, 0x1C, 0x20, 0x80, 0xF4, 0x1C, /* 0x01C86 x1, -6236 */
0x87, 0x1C, 0x20, 0x60, 0xFB, 0x1C, /* 0x01C87 x1, -6181 */
0x88, 0x1C, 0x20, 0x40, 0x38, 0x31, /* 0x01C88 x1, +35266 */
0x8A, 0x1C, 0x20, 0xE0, 0xFF, 0x1F, /* 0x01C8A x1, -1 */
0x79, 0x1D, 0x20, 0x80, 0x40, 0x31, /* 0x01D79 x1, +35332 */
0x7D, 0x1D, 0x20, 0xC0, 0xDC, 0x21, /* 0x01D7D x1, +3814 */
0x8E, 0x1D, 0x20, 0x00, 0x47, 0x31, /* 0x01D8E x1, +35384 */
0x01, 0x1E, 0x60, 0xF9, 0xFF, 0x1F, /* 0x01E01 x75, -1 */
0x9B, 0x1E, 0x20, 0xA0, 0xF8, 0x1F, /* 0x01E9B x1, -59 */
0xA1, 0x1E, 0x00, 0xF6, 0xFF, 0x1F, /* 0x01EA1 x48, -1 */
0x00, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F00 x8, +8 */
0x10, 0x1F, 0xC0, 0x00, 0x01, 0x20, /* 0x01F10 x6, +8 */
0x20, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F20 x8, +8 */
0x30, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F30 x8, +8 */
0x40, 0x1F, 0xC0, 0x00, 0x01, 0x20, /* 0x01F40 x6, +8 */
0x51, 0x1F, 0x80, 0x10, 0x01, 0x20, /* 0x01F51 x4, +8 */
0x60, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F60 x8, +8 */
0x70, 0x1F, 0x40, 0x40, 0x09, 0x20, /* 0x01F70 x2, +74 */
0x72, 0x1F, 0x80, 0xC0, 0x0A, 0x20, /* 0x01F72 x4, +86 */
0x76, 0x1F, 0x40, 0x80, 0x0C, 0x20, /* 0x01F76 x2, +100 */
0x78, 0x1F, 0x40, 0x00, 0x10, 0x20, /* 0x01F78 x2, +128 */
0x7A, 0x1F, 0x40, 0x00, 0x0E, 0x20, /* 0x01F7A x2, +112 */
0x7C, 0x1F, 0x40, 0xC0, 0x0F, 0x20, /* 0x01F7C x2, +126 */
0xB0, 0x1F, 0x40, 0x00, 0x01, 0x20, /* 0x01FB0 x2, +8 */
0xBE, 0x1F, 0x20, 0x60, 0x7B, 0x1C, /* 0x01FBE x1, -7205 */
0xD0, 0x1F, 0x40, 0x00, 0x01, 0x20, /* 0x01FD0 x2, +8 */
0xE0, 0x1F, 0x40, 0x00, 0x01, 0x20, /* 0x01FE0 x2, +8 */
0xE5, 0x1F, 0x20, 0xE0, 0x00, 0x20, /* 0x01FE5 x1, +7 */
0x4E, 0x21, 0x20, 0x80, 0xFC, 0x1F, /* 0x0214E x1, -28 */
0x70, 0x21, 0x00, 0x02, 0xFE, 0x1F, /* 0x02170 x16, -16 */
0x84, 0x21, 0x20, 0xE0, 0xFF, 0x1F, /* 0x02184 x1, -1 */
0xD0, 0x24, 0x40, 0xC3, 0xFC, 0x1F, /* 0x024D0 x26, -26 */
0x30, 0x2C, 0x00, 0x06, 0xFA, 0x1F, /* 0x02C30 x48, -48 */
0x61, 0x2C, 0x20, 0xE0, 0xFF, 0x1F, /* 0x02C61 x1, -1 */
0x65, 0x2C, 0x20, 0xA0, 0xBA, 0x1A, /* 0x02C65 x1, -10795 */
0x66, 0x2C, 0x20, 0x00, 0xBB, 0x1A, /* 0x02C66 x1, -10792 */
0x68, 0x2C, 0x60, 0xF0, 0xFF, 0x1F, /* 0x02C68 x3, -1 */
0x73, 0x2C, 0x20, 0xE0, 0xFF, 0x1F, /* 0x02C73 x1, -1 */
0x76, 0x2C, 0x20, 0xE0, 0xFF, 0x1F, /* 0x02C76 x1, -1 */
0x81, 0x2C, 0x40, 0xF6, 0xFF, 0x1F, /* 0x02C81 x50, -1 */
0xEC, 0x2C, 0x40, 0xF0, 0xFF, 0x1F, /* 0x02CEC x2, -1 */
0xF3, 0x2C, 0x20, 0xE0, 0xFF, 0x1F, /* 0x02CF3 x1, -1 */
0x00, 0x2D, 0xC0, 0x04, 0x74, 0x1C, /* 0x02D00 x38, -7264 */
0x27, 0x2D, 0x20, 0x00, 0x74, 0x1C, /* 0x02D27 x1, -7264 */
0x2D, 0x2D, 0x20, 0x00, 0x74, 0x1C, /* 0x02D2D x1, -7264 */
0x41, 0xA6, 0xE0, 0xF2, 0xFF, 0x1F, /* 0x0A641 x23, -1 */
0x81, 0xA6, 0xC0, 0xF1, 0xFF, 0x1F, /* 0x0A681 x14, -1 */
0x23, 0xA7, 0xE0, 0xF0, 0xFF, 0x1F, /* 0x0A723 x7, -1 */
0x33, 0xA7, 0xE0, 0xF3, 0xFF, 0x1F, /* 0x0A733 x31, -1 */
0x7A, 0xA7, 0x40, 0xF0, 0xFF, 0x1F, /* 0x0A77A x2, -1 */
0x7F, 0xA7, 0xA0, 0xF0, 0xFF, 0x1F, /* 0x0A77F x5, -1 */
0x8C, 0xA7, 0x20, 0xE0, 0xFF, 0x1F, /* 0x0A78C x1, -1 */
0x91, 0xA7, 0x40, 0xF0, 0xFF, 0x1F, /* 0x0A791 x2, -1 */
0x94, 0xA7, 0x20, 0x00, 0x06, 0x20, /* 0x0A794 x1, +48 */
0x97, 0xA7, 0x40, 0xF1, 0xFF, 0x1F, /* 0x0A797 x10, -1 */
0xB5, 0xA7, 0x00, 0xF1, 0xFF, 0x1F, /* 0x0A7B5 x8, -1 */
0xC8, 0xA7, 0x40, 0xF0, 0xFF, 0x1F, /* 0x0A7C8 x2, -1 */
0xCD, 0xA7, 0x00, 0xF1, 0xFF, 0x1F, /* 0x0A7CD x8, -1 */
0xF6, 0xA7, 0x20, 0xE0, 0xFF, 0x1F, /* 0x0A7F6 x1, -1 */
0x53, 0xAB, 0x20, 0x00, 0x8C, 0x1F, /* 0x0AB53 x1, -928 */
0x70, 0xAB, 0x00, 0x0A, 0x06, 0x0D, /* 0x0AB70 x80, -38864 */
0x41, 0xFF, 0x40, 0x03, 0xFC, 0x1F, /* 0x0FF41 x26, -32 */
0x28, 0x04, 0x01, 0x05, 0xFB, 0x1F, /* 0x10428 x40, -40 */
0xD8, 0x04, 0x81, 0x04, 0xFB, 0x1F, /* 0x104D8 x36, -40 */
0x97, 0x05, 0x61, 0x21, 0xFB, 0x1F, /* 0x10597 x11, -39 */
0xA3, 0x05, 0xE1, 0x21, 0xFB, 0x1F, /* 0x105A3 x15, -39 */
0xB3, 0x05, 0xE1, 0x20, 0xFB, 0x1F, /* 0x105B3 x7, -39 */
0xBB, 0x05, 0x41, 0x20, 0xFB, 0x1F, /* 0x105BB x2, -39 */
0xC0, 0x0C, 0x61, 0x06, 0xF8, 0x1F, /* 0x10CC0 x51, -64 */
0x70, 0x0D, 0xC1, 0x02, 0xFC, 0x1F, /* 0x10D70 x22, -32 */
0xC0, 0x18, 0x01, 0x04, 0xFC, 0x1F, /* 0x118C0 x32, -32 */
0x60, 0x6E, 0x01, 0x04, 0xFC, 0x1F, /* 0x16E60 x32, -32 */
0xBB, 0x6E, 0x21, 0xA3, 0xFC, 0x1F, /* 0x16EBB x25, -27 */
0x22, 0xE9, 0x41, 0xC4, 0xFB, 0x1F, /* 0x1E922 x34, -34 */
};
#define UNI_UPPER_RUNS uni_upper_runs
#define UNI_UPPER_RUN_COUNT (sizeof(uni_upper_runs) / UNI_CASE_RUN_BYTES)
static const uint8_t uni_upper_multi[] = {
0xDF, 0x00, 0x60, 0x00, 0x04, /* 0x000DF, 2 at 3 */
0x49, 0x01, 0xA0, 0x00, 0x06, /* 0x00149, 3 at 5 */
0xF0, 0x01, 0x00, 0x01, 0x06, /* 0x001F0, 3 at 8 */
0x90, 0x03, 0x60, 0x01, 0x0C, /* 0x00390, 6 at 11 */
0xB0, 0x03, 0x20, 0x02, 0x0C, /* 0x003B0, 6 at 17 */
0x87, 0x05, 0xE0, 0x02, 0x08, /* 0x00587, 4 at 23 */
0x96, 0x1E, 0x60, 0x03, 0x06, /* 0x01E96, 3 at 27 */
0x97, 0x1E, 0xC0, 0x03, 0x06, /* 0x01E97, 3 at 30 */
0x98, 0x1E, 0x20, 0x04, 0x06, /* 0x01E98, 3 at 33 */
0x99, 0x1E, 0x80, 0x04, 0x06, /* 0x01E99, 3 at 36 */
0x9A, 0x1E, 0xE0, 0x04, 0x06, /* 0x01E9A, 3 at 39 */
0x50, 0x1F, 0x40, 0x05, 0x08, /* 0x01F50, 4 at 42 */
0x52, 0x1F, 0xC0, 0x05, 0x0C, /* 0x01F52, 6 at 46 */
0x54, 0x1F, 0x80, 0x06, 0x0C, /* 0x01F54, 6 at 52 */
0x56, 0x1F, 0x40, 0x07, 0x0C, /* 0x01F56, 6 at 58 */
0x80, 0x1F, 0x00, 0x08, 0x0A, /* 0x01F80, 5 at 64 */
0x81, 0x1F, 0xA0, 0x08, 0x0A, /* 0x01F81, 5 at 69 */
0x82, 0x1F, 0x40, 0x09, 0x0A, /* 0x01F82, 5 at 74 */
0x83, 0x1F, 0xE0, 0x09, 0x0A, /* 0x01F83, 5 at 79 */
0x84, 0x1F, 0x80, 0x0A, 0x0A, /* 0x01F84, 5 at 84 */
0x85, 0x1F, 0x20, 0x0B, 0x0A, /* 0x01F85, 5 at 89 */
0x86, 0x1F, 0xC0, 0x0B, 0x0A, /* 0x01F86, 5 at 94 */
0x87, 0x1F, 0x60, 0x0C, 0x0A, /* 0x01F87, 5 at 99 */
0x88, 0x1F, 0x00, 0x08, 0x0A, /* 0x01F88, 5 at 64 */
0x89, 0x1F, 0xA0, 0x08, 0x0A, /* 0x01F89, 5 at 69 */
0x8A, 0x1F, 0x40, 0x09, 0x0A, /* 0x01F8A, 5 at 74 */
0x8B, 0x1F, 0xE0, 0x09, 0x0A, /* 0x01F8B, 5 at 79 */
0x8C, 0x1F, 0x80, 0x0A, 0x0A, /* 0x01F8C, 5 at 84 */
0x8D, 0x1F, 0x20, 0x0B, 0x0A, /* 0x01F8D, 5 at 89 */
0x8E, 0x1F, 0xC0, 0x0B, 0x0A, /* 0x01F8E, 5 at 94 */
0x8F, 0x1F, 0x60, 0x0C, 0x0A, /* 0x01F8F, 5 at 99 */
0x90, 0x1F, 0x00, 0x0D, 0x0A, /* 0x01F90, 5 at 104 */
0x91, 0x1F, 0xA0, 0x0D, 0x0A, /* 0x01F91, 5 at 109 */
0x92, 0x1F, 0x40, 0x0E, 0x0A, /* 0x01F92, 5 at 114 */
0x93, 0x1F, 0xE0, 0x0E, 0x0A, /* 0x01F93, 5 at 119 */
0x94, 0x1F, 0x80, 0x0F, 0x0A, /* 0x01F94, 5 at 124 */
0x95, 0x1F, 0x20, 0x10, 0x0A, /* 0x01F95, 5 at 129 */
0x96, 0x1F, 0xC0, 0x10, 0x0A, /* 0x01F96, 5 at 134 */
0x97, 0x1F, 0x60, 0x11, 0x0A, /* 0x01F97, 5 at 139 */
0x98, 0x1F, 0x00, 0x0D, 0x0A, /* 0x01F98, 5 at 104 */
0x99, 0x1F, 0xA0, 0x0D, 0x0A, /* 0x01F99, 5 at 109 */
0x9A, 0x1F, 0x40, 0x0E, 0x0A, /* 0x01F9A, 5 at 114 */
0x9B, 0x1F, 0xE0, 0x0E, 0x0A, /* 0x01F9B, 5 at 119 */
0x9C, 0x1F, 0x80, 0x0F, 0x0A, /* 0x01F9C, 5 at 124 */
0x9D, 0x1F, 0x20, 0x10, 0x0A, /* 0x01F9D, 5 at 129 */
0x9E, 0x1F, 0xC0, 0x10, 0x0A, /* 0x01F9E, 5 at 134 */
0x9F, 0x1F, 0x60, 0x11, 0x0A, /* 0x01F9F, 5 at 139 */
0xA0, 0x1F, 0x00, 0x12, 0x0A, /* 0x01FA0, 5 at 144 */
0xA1, 0x1F, 0xA0, 0x12, 0x0A, /* 0x01FA1, 5 at 149 */
0xA2, 0x1F, 0x40, 0x13, 0x0A, /* 0x01FA2, 5 at 154 */
0xA3, 0x1F, 0xE0, 0x13, 0x0A, /* 0x01FA3, 5 at 159 */
0xA4, 0x1F, 0x80, 0x14, 0x0A, /* 0x01FA4, 5 at 164 */
0xA5, 0x1F, 0x20, 0x15, 0x0A, /* 0x01FA5, 5 at 169 */
0xA6, 0x1F, 0xC0, 0x15, 0x0A, /* 0x01FA6, 5 at 174 */
0xA7, 0x1F, 0x60, 0x16, 0x0A, /* 0x01FA7, 5 at 179 */
0xA8, 0x1F, 0x00, 0x12, 0x0A, /* 0x01FA8, 5 at 144 */
0xA9, 0x1F, 0xA0, 0x12, 0x0A, /* 0x01FA9, 5 at 149 */
0xAA, 0x1F, 0x40, 0x13, 0x0A, /* 0x01FAA, 5 at 154 */
0xAB, 0x1F, 0xE0, 0x13, 0x0A, /* 0x01FAB, 5 at 159 */
0xAC, 0x1F, 0x80, 0x14, 0x0A, /* 0x01FAC, 5 at 164 */
0xAD, 0x1F, 0x20, 0x15, 0x0A, /* 0x01FAD, 5 at 169 */
0xAE, 0x1F, 0xC0, 0x15, 0x0A, /* 0x01FAE, 5 at 174 */
0xAF, 0x1F, 0x60, 0x16, 0x0A, /* 0x01FAF, 5 at 179 */
0xB2, 0x1F, 0x00, 0x17, 0x0A, /* 0x01FB2, 5 at 184 */
0xB3, 0x1F, 0xA0, 0x17, 0x08, /* 0x01FB3, 4 at 189 */
0xB4, 0x1F, 0x20, 0x18, 0x08, /* 0x01FB4, 4 at 193 */
0xB6, 0x1F, 0xA0, 0x18, 0x08, /* 0x01FB6, 4 at 197 */
0xB7, 0x1F, 0x20, 0x19, 0x0C, /* 0x01FB7, 6 at 201 */
0xBC, 0x1F, 0xA0, 0x17, 0x08, /* 0x01FBC, 4 at 189 */
0xC2, 0x1F, 0xE0, 0x19, 0x0A, /* 0x01FC2, 5 at 207 */
0xC3, 0x1F, 0x80, 0x1A, 0x08, /* 0x01FC3, 4 at 212 */
0xC4, 0x1F, 0x00, 0x1B, 0x08, /* 0x01FC4, 4 at 216 */
0xC6, 0x1F, 0x80, 0x1B, 0x08, /* 0x01FC6, 4 at 220 */
0xC7, 0x1F, 0x00, 0x1C, 0x0C, /* 0x01FC7, 6 at 224 */
0xCC, 0x1F, 0x80, 0x1A, 0x08, /* 0x01FCC, 4 at 212 */
0xD2, 0x1F, 0xC0, 0x1C, 0x0C, /* 0x01FD2, 6 at 230 */
0xD3, 0x1F, 0x60, 0x01, 0x0C, /* 0x01FD3, 6 at 11 */
0xD6, 0x1F, 0x80, 0x1D, 0x08, /* 0x01FD6, 4 at 236 */
0xD7, 0x1F, 0x00, 0x1E, 0x0C, /* 0x01FD7, 6 at 240 */
0xE2, 0x1F, 0xC0, 0x1E, 0x0C, /* 0x01FE2, 6 at 246 */
0xE3, 0x1F, 0x20, 0x02, 0x0C, /* 0x01FE3, 6 at 17 */
0xE4, 0x1F, 0x80, 0x1F, 0x08, /* 0x01FE4, 4 at 252 */
0xE6, 0x1F, 0x00, 0x20, 0x08, /* 0x01FE6, 4 at 256 */
0xE7, 0x1F, 0x80, 0x20, 0x0C, /* 0x01FE7, 6 at 260 */
0xF2, 0x1F, 0x40, 0x21, 0x0A, /* 0x01FF2, 5 at 266 */
0xF3, 0x1F, 0xE0, 0x21, 0x08, /* 0x01FF3, 4 at 271 */
0xF4, 0x1F, 0x60, 0x22, 0x08, /* 0x01FF4, 4 at 275 */
0xF6, 0x1F, 0xE0, 0x22, 0x08, /* 0x01FF6, 4 at 279 */
0xF7, 0x1F, 0x60, 0x23, 0x0C, /* 0x01FF7, 6 at 283 */
0xFC, 0x1F, 0xE0, 0x21, 0x08, /* 0x01FFC, 4 at 271 */
0x00, 0xFB, 0x20, 0x24, 0x04, /* 0x0FB00, 2 at 289 */
0x01, 0xFB, 0x60, 0x24, 0x04, /* 0x0FB01, 2 at 291 */
0x02, 0xFB, 0xA0, 0x24, 0x04, /* 0x0FB02, 2 at 293 */
0x03, 0xFB, 0xE0, 0x24, 0x06, /* 0x0FB03, 3 at 295 */
0x04, 0xFB, 0x40, 0x25, 0x06, /* 0x0FB04, 3 at 298 */
0x05, 0xFB, 0xA0, 0x25, 0x04, /* 0x0FB05, 2 at 301 */
0x06, 0xFB, 0xA0, 0x25, 0x04, /* 0x0FB06, 2 at 301 */
0x13, 0xFB, 0xE0, 0x25, 0x08, /* 0x0FB13, 4 at 303 */
0x14, 0xFB, 0x60, 0x26, 0x08, /* 0x0FB14, 4 at 307 */
0x15, 0xFB, 0xE0, 0x26, 0x08, /* 0x0FB15, 4 at 311 */
0x16, 0xFB, 0x60, 0x27, 0x08, /* 0x0FB16, 4 at 315 */
0x17, 0xFB, 0xE0, 0x27, 0x08, /* 0x0FB17, 4 at 319 */
};
#define UNI_UPPER_MULTI uni_upper_multi
#define UNI_UPPER_MULTI_COUNT (sizeof(uni_upper_multi) / UNI_CASE_MULTI_BYTES)
/* Lowest and highest source either table holds, so a lookup that
cannot hit anything costs one comparison. */
#define UNI_UPPER_MIN 0x000B5
#define UNI_UPPER_MAX 0x1E943
/* where title case differs from upper case: 158 sources in 28 runs, 23 multi. */
static const uint8_t uni_title_runs[] = {
0xC4, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001C4 x1, +1 */
0xC5, 0x01, 0x20, 0x00, 0x00, 0x20, /* 0x001C5 x1, +0 */
0xC6, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001C6 x1, -1 */
0xC7, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001C7 x1, +1 */
0xC8, 0x01, 0x20, 0x00, 0x00, 0x20, /* 0x001C8 x1, +0 */
0xC9, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001C9 x1, -1 */
0xCA, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001CA x1, +1 */
0xCB, 0x01, 0x20, 0x00, 0x00, 0x20, /* 0x001CB x1, +0 */
0xCC, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001CC x1, -1 */
0xF1, 0x01, 0x20, 0x20, 0x00, 0x20, /* 0x001F1 x1, +1 */
0xF2, 0x01, 0x20, 0x00, 0x00, 0x20, /* 0x001F2 x1, +0 */
0xF3, 0x01, 0x20, 0xE0, 0xFF, 0x1F, /* 0x001F3 x1, -1 */
0xD0, 0x10, 0x60, 0x05, 0x00, 0x20, /* 0x010D0 x43, +0 */
0xFD, 0x10, 0x60, 0x00, 0x00, 0x20, /* 0x010FD x3, +0 */
0x90, 0x1C, 0x60, 0x05, 0x88, 0x1E, /* 0x01C90 x43, -3008 */
0xBD, 0x1C, 0x60, 0x00, 0x88, 0x1E, /* 0x01CBD x3, -3008 */
0x80, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F80 x8, +8 */
0x88, 0x1F, 0x00, 0x01, 0x00, 0x20, /* 0x01F88 x8, +0 */
0x90, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01F90 x8, +8 */
0x98, 0x1F, 0x00, 0x01, 0x00, 0x20, /* 0x01F98 x8, +0 */
0xA0, 0x1F, 0x00, 0x01, 0x01, 0x20, /* 0x01FA0 x8, +8 */
0xA8, 0x1F, 0x00, 0x01, 0x00, 0x20, /* 0x01FA8 x8, +0 */
0xB3, 0x1F, 0x20, 0x20, 0x01, 0x20, /* 0x01FB3 x1, +9 */
0xBC, 0x1F, 0x20, 0x00, 0x00, 0x20, /* 0x01FBC x1, +0 */
0xC3, 0x1F, 0x20, 0x20, 0x01, 0x20, /* 0x01FC3 x1, +9 */
0xCC, 0x1F, 0x20, 0x00, 0x00, 0x20, /* 0x01FCC x1, +0 */
0xF3, 0x1F, 0x20, 0x20, 0x01, 0x20, /* 0x01FF3 x1, +9 */
0xFC, 0x1F, 0x20, 0x00, 0x00, 0x20, /* 0x01FFC x1, +0 */
};
#define UNI_TITLE_RUNS uni_title_runs
#define UNI_TITLE_RUN_COUNT (sizeof(uni_title_runs) / UNI_CASE_RUN_BYTES)
static const uint8_t uni_title_multi[] = {
0xDF, 0x00, 0x60, 0x28, 0x04, /* 0x000DF, 2 at 323 */
0x87, 0x05, 0xA0, 0x28, 0x08, /* 0x00587, 4 at 325 */
0xB2, 0x1F, 0x20, 0x29, 0x0A, /* 0x01FB2, 5 at 329 */
0xB4, 0x1F, 0xC0, 0x29, 0x08, /* 0x01FB4, 4 at 334 */
0xB7, 0x1F, 0x40, 0x2A, 0x0C, /* 0x01FB7, 6 at 338 */
0xC2, 0x1F, 0x00, 0x2B, 0x0A, /* 0x01FC2, 5 at 344 */
0xC4, 0x1F, 0xA0, 0x2B, 0x08, /* 0x01FC4, 4 at 349 */
0xC7, 0x1F, 0x20, 0x2C, 0x0C, /* 0x01FC7, 6 at 353 */
0xF2, 0x1F, 0xE0, 0x2C, 0x0A, /* 0x01FF2, 5 at 359 */
0xF4, 0x1F, 0x80, 0x2D, 0x08, /* 0x01FF4, 4 at 364 */
0xF7, 0x1F, 0x00, 0x2E, 0x0C, /* 0x01FF7, 6 at 368 */
0x00, 0xFB, 0xC0, 0x2E, 0x04, /* 0x0FB00, 2 at 374 */
0x01, 0xFB, 0x00, 0x2F, 0x04, /* 0x0FB01, 2 at 376 */
0x02, 0xFB, 0x40, 0x2F, 0x04, /* 0x0FB02, 2 at 378 */
0x03, 0xFB, 0x80, 0x2F, 0x06, /* 0x0FB03, 3 at 380 */
0x04, 0xFB, 0xE0, 0x2F, 0x06, /* 0x0FB04, 3 at 383 */
0x05, 0xFB, 0x40, 0x30, 0x04, /* 0x0FB05, 2 at 386 */
0x06, 0xFB, 0x40, 0x30, 0x04, /* 0x0FB06, 2 at 386 */
0x13, 0xFB, 0x80, 0x30, 0x08, /* 0x0FB13, 4 at 388 */
0x14, 0xFB, 0x00, 0x31, 0x08, /* 0x0FB14, 4 at 392 */
0x15, 0xFB, 0x80, 0x31, 0x08, /* 0x0FB15, 4 at 396 */
0x16, 0xFB, 0x00, 0x32, 0x08, /* 0x0FB16, 4 at 400 */
0x17, 0xFB, 0x80, 0x32, 0x08, /* 0x0FB17, 4 at 404 */
};
#define UNI_TITLE_MULTI uni_title_multi
#define UNI_TITLE_MULTI_COUNT (sizeof(uni_title_multi) / UNI_CASE_MULTI_BYTES)
/* Lowest and highest source either table holds, so a lookup that
cannot hit anything costs one comparison. */
#define UNI_TITLE_MIN 0x000DF
#define UNI_TITLE_MAX 0x0FB17
/* where swapping differs from the down-then-up rule: 0 sources in 0 runs, 31 multi. */
#define UNI_SWAP_RUNS NULL
#define UNI_SWAP_RUN_COUNT 0
static const uint8_t uni_swap_multi[] = {
0xC5, 0x01, 0x00, 0x33, 0x06, /* 0x001C5, 3 at 408 */
0xC8, 0x01, 0x60, 0x33, 0x04, /* 0x001C8, 2 at 411 */
0xCB, 0x01, 0xA0, 0x33, 0x04, /* 0x001CB, 2 at 413 */
0xF2, 0x01, 0xE0, 0x33, 0x04, /* 0x001F2, 2 at 415 */
0x88, 0x1F, 0x20, 0x34, 0x0A, /* 0x01F88, 5 at 417 */
0x89, 0x1F, 0xC0, 0x34, 0x0A, /* 0x01F89, 5 at 422 */
0x8A, 0x1F, 0x60, 0x35, 0x0A, /* 0x01F8A, 5 at 427 */
0x8B, 0x1F, 0x00, 0x36, 0x0A, /* 0x01F8B, 5 at 432 */
0x8C, 0x1F, 0xA0, 0x36, 0x0A, /* 0x01F8C, 5 at 437 */
0x8D, 0x1F, 0x40, 0x37, 0x0A, /* 0x01F8D, 5 at 442 */
0x8E, 0x1F, 0xE0, 0x37, 0x0A, /* 0x01F8E, 5 at 447 */
0x8F, 0x1F, 0x80, 0x38, 0x0A, /* 0x01F8F, 5 at 452 */
0x98, 0x1F, 0x20, 0x39, 0x0A, /* 0x01F98, 5 at 457 */
0x99, 0x1F, 0xC0, 0x39, 0x0A, /* 0x01F99, 5 at 462 */
0x9A, 0x1F, 0x60, 0x3A, 0x0A, /* 0x01F9A, 5 at 467 */
0x9B, 0x1F, 0x00, 0x3B, 0x0A, /* 0x01F9B, 5 at 472 */
0x9C, 0x1F, 0xA0, 0x3B, 0x0A, /* 0x01F9C, 5 at 477 */
0x9D, 0x1F, 0x40, 0x3C, 0x0A, /* 0x01F9D, 5 at 482 */
0x9E, 0x1F, 0xE0, 0x3C, 0x0A, /* 0x01F9E, 5 at 487 */
0x9F, 0x1F, 0x80, 0x3D, 0x0A, /* 0x01F9F, 5 at 492 */
0xA8, 0x1F, 0x20, 0x3E, 0x0A, /* 0x01FA8, 5 at 497 */
0xA9, 0x1F, 0xC0, 0x3E, 0x0A, /* 0x01FA9, 5 at 502 */
0xAA, 0x1F, 0x60, 0x3F, 0x0A, /* 0x01FAA, 5 at 507 */
0xAB, 0x1F, 0x00, 0x40, 0x0A, /* 0x01FAB, 5 at 512 */
0xAC, 0x1F, 0xA0, 0x40, 0x0A, /* 0x01FAC, 5 at 517 */
0xAD, 0x1F, 0x40, 0x41, 0x0A, /* 0x01FAD, 5 at 522 */
0xAE, 0x1F, 0xE0, 0x41, 0x0A, /* 0x01FAE, 5 at 527 */
0xAF, 0x1F, 0x80, 0x42, 0x0A, /* 0x01FAF, 5 at 532 */
0xBC, 0x1F, 0x20, 0x43, 0x08, /* 0x01FBC, 4 at 537 */
0xCC, 0x1F, 0xA0, 0x43, 0x08, /* 0x01FCC, 4 at 541 */
0xFC, 0x1F, 0x20, 0x44, 0x08, /* 0x01FFC, 4 at 545 */
};
#define UNI_SWAP_MULTI uni_swap_multi
#define UNI_SWAP_MULTI_COUNT (sizeof(uni_swap_multi) / UNI_CASE_MULTI_BYTES)
/* Lowest and highest source either table holds, so a lookup that
cannot hit anything costs one comparison. */
#define UNI_SWAP_MIN 0x001C5
#define UNI_SWAP_MAX 0x01FFC
/* where folding differs from the lowercase mapping: 194 sources in 24 runs, 103 multi. */
static const uint8_t uni_fold_runs[] = {
0xB5, 0x00, 0x20, 0xE0, 0x60, 0x20, /* 0x000B5 x1, +775 */
0x7F, 0x01, 0x20, 0x80, 0xDE, 0x1F, /* 0x0017F x1, -268 */
0x45, 0x03, 0x20, 0x80, 0x0E, 0x20, /* 0x00345 x1, +116 */
0xC2, 0x03, 0x20, 0x20, 0x00, 0x20, /* 0x003C2 x1, +1 */
0xD0, 0x03, 0x20, 0x40, 0xFC, 0x1F, /* 0x003D0 x1, -30 */
0xD1, 0x03, 0x20, 0xE0, 0xFC, 0x1F, /* 0x003D1 x1, -25 */
0xD5, 0x03, 0x20, 0x20, 0xFE, 0x1F, /* 0x003D5 x1, -15 */
0xD6, 0x03, 0x20, 0x40, 0xFD, 0x1F, /* 0x003D6 x1, -22 */
0xF0, 0x03, 0x20, 0x40, 0xF9, 0x1F, /* 0x003F0 x1, -54 */
0xF1, 0x03, 0x20, 0x00, 0xFA, 0x1F, /* 0x003F1 x1, -48 */
0xF5, 0x03, 0x20, 0x00, 0xF8, 0x1F, /* 0x003F5 x1, -64 */
0xA0, 0x13, 0xC0, 0x0A, 0x00, 0x20, /* 0x013A0 x86, +0 */
0xF8, 0x13, 0xC0, 0x00, 0xFF, 0x1F, /* 0x013F8 x6, -8 */
0x80, 0x1C, 0x20, 0x40, 0xF6, 0x1C, /* 0x01C80 x1, -6222 */
0x81, 0x1C, 0x20, 0x60, 0xF6, 0x1C, /* 0x01C81 x1, -6221 */
0x82, 0x1C, 0x20, 0x80, 0xF7, 0x1C, /* 0x01C82 x1, -6212 */
0x83, 0x1C, 0x40, 0xC0, 0xF7, 0x1C, /* 0x01C83 x2, -6210 */
0x85, 0x1C, 0x20, 0xA0, 0xF7, 0x1C, /* 0x01C85 x1, -6211 */
0x86, 0x1C, 0x20, 0x80, 0xF8, 0x1C, /* 0x01C86 x1, -6204 */
0x87, 0x1C, 0x20, 0x80, 0xFB, 0x1C, /* 0x01C87 x1, -6180 */
0x88, 0x1C, 0x20, 0x60, 0x38, 0x31, /* 0x01C88 x1, +35267 */
0x9B, 0x1E, 0x20, 0xC0, 0xF8, 0x1F, /* 0x01E9B x1, -58 */
0xBE, 0x1F, 0x20, 0x60, 0x7F, 0x1C, /* 0x01FBE x1, -7173 */
0x70, 0xAB, 0x00, 0x0A, 0x06, 0x0D, /* 0x0AB70 x80, -38864 */
};
#define UNI_FOLD_RUNS uni_fold_runs
#define UNI_FOLD_RUN_COUNT (sizeof(uni_fold_runs) / UNI_CASE_RUN_BYTES)
static const uint8_t uni_fold_multi[] = {
0xDF, 0x00, 0xA0, 0x44, 0x04, /* 0x000DF, 2 at 549 */
0x49, 0x01, 0xE0, 0x44, 0x06, /* 0x00149, 3 at 551 */
0xF0, 0x01, 0x40, 0x45, 0x06, /* 0x001F0, 3 at 554 */
0x90, 0x03, 0xA0, 0x45, 0x0C, /* 0x00390, 6 at 557 */
0xB0, 0x03, 0x60, 0x46, 0x0C, /* 0x003B0, 6 at 563 */
0x87, 0x05, 0x20, 0x47, 0x08, /* 0x00587, 4 at 569 */
0x96, 0x1E, 0xA0, 0x47, 0x06, /* 0x01E96, 3 at 573 */
0x97, 0x1E, 0x00, 0x48, 0x06, /* 0x01E97, 3 at 576 */
0x98, 0x1E, 0x60, 0x48, 0x06, /* 0x01E98, 3 at 579 */
0x99, 0x1E, 0xC0, 0x48, 0x06, /* 0x01E99, 3 at 582 */
0x9A, 0x1E, 0x20, 0x49, 0x06, /* 0x01E9A, 3 at 585 */
0x9E, 0x1E, 0xA0, 0x44, 0x04, /* 0x01E9E, 2 at 549 */
0x50, 0x1F, 0x80, 0x49, 0x08, /* 0x01F50, 4 at 588 */
0x52, 0x1F, 0x00, 0x4A, 0x0C, /* 0x01F52, 6 at 592 */
0x54, 0x1F, 0xC0, 0x4A, 0x0C, /* 0x01F54, 6 at 598 */
0x56, 0x1F, 0x80, 0x4B, 0x0C, /* 0x01F56, 6 at 604 */
0x80, 0x1F, 0x40, 0x4C, 0x0A, /* 0x01F80, 5 at 610 */
0x81, 0x1F, 0xE0, 0x4C, 0x0A, /* 0x01F81, 5 at 615 */
0x82, 0x1F, 0x80, 0x4D, 0x0A, /* 0x01F82, 5 at 620 */
0x83, 0x1F, 0x20, 0x4E, 0x0A, /* 0x01F83, 5 at 625 */
0x84, 0x1F, 0xC0, 0x4E, 0x0A, /* 0x01F84, 5 at 630 */
0x85, 0x1F, 0x60, 0x4F, 0x0A, /* 0x01F85, 5 at 635 */
0x86, 0x1F, 0x00, 0x50, 0x0A, /* 0x01F86, 5 at 640 */
0x87, 0x1F, 0xA0, 0x50, 0x0A, /* 0x01F87, 5 at 645 */
0x88, 0x1F, 0x40, 0x4C, 0x0A, /* 0x01F88, 5 at 610 */
0x89, 0x1F, 0xE0, 0x4C, 0x0A, /* 0x01F89, 5 at 615 */
0x8A, 0x1F, 0x80, 0x4D, 0x0A, /* 0x01F8A, 5 at 620 */
0x8B, 0x1F, 0x20, 0x4E, 0x0A, /* 0x01F8B, 5 at 625 */
0x8C, 0x1F, 0xC0, 0x4E, 0x0A, /* 0x01F8C, 5 at 630 */
0x8D, 0x1F, 0x60, 0x4F, 0x0A, /* 0x01F8D, 5 at 635 */
0x8E, 0x1F, 0x00, 0x50, 0x0A, /* 0x01F8E, 5 at 640 */
0x8F, 0x1F, 0xA0, 0x50, 0x0A, /* 0x01F8F, 5 at 645 */
0x90, 0x1F, 0x40, 0x51, 0x0A, /* 0x01F90, 5 at 650 */
0x91, 0x1F, 0xE0, 0x51, 0x0A, /* 0x01F91, 5 at 655 */
0x92, 0x1F, 0x80, 0x52, 0x0A, /* 0x01F92, 5 at 660 */
0x93, 0x1F, 0x20, 0x53, 0x0A, /* 0x01F93, 5 at 665 */
0x94, 0x1F, 0xC0, 0x53, 0x0A, /* 0x01F94, 5 at 670 */
0x95, 0x1F, 0x60, 0x54, 0x0A, /* 0x01F95, 5 at 675 */
0x96, 0x1F, 0x00, 0x55, 0x0A, /* 0x01F96, 5 at 680 */
0x97, 0x1F, 0xA0, 0x55, 0x0A, /* 0x01F97, 5 at 685 */
0x98, 0x1F, 0x40, 0x51, 0x0A, /* 0x01F98, 5 at 650 */
0x99, 0x1F, 0xE0, 0x51, 0x0A, /* 0x01F99, 5 at 655 */
0x9A, 0x1F, 0x80, 0x52, 0x0A, /* 0x01F9A, 5 at 660 */
0x9B, 0x1F, 0x20, 0x53, 0x0A, /* 0x01F9B, 5 at 665 */
0x9C, 0x1F, 0xC0, 0x53, 0x0A, /* 0x01F9C, 5 at 670 */
0x9D, 0x1F, 0x60, 0x54, 0x0A, /* 0x01F9D, 5 at 675 */
0x9E, 0x1F, 0x00, 0x55, 0x0A, /* 0x01F9E, 5 at 680 */
0x9F, 0x1F, 0xA0, 0x55, 0x0A, /* 0x01F9F, 5 at 685 */
0xA0, 0x1F, 0x40, 0x56, 0x0A, /* 0x01FA0, 5 at 690 */
0xA1, 0x1F, 0xE0, 0x56, 0x0A, /* 0x01FA1, 5 at 695 */
0xA2, 0x1F, 0x80, 0x57, 0x0A, /* 0x01FA2, 5 at 700 */
0xA3, 0x1F, 0x20, 0x58, 0x0A, /* 0x01FA3, 5 at 705 */
0xA4, 0x1F, 0xC0, 0x58, 0x0A, /* 0x01FA4, 5 at 710 */
0xA5, 0x1F, 0x60, 0x59, 0x0A, /* 0x01FA5, 5 at 715 */
0xA6, 0x1F, 0x00, 0x5A, 0x0A, /* 0x01FA6, 5 at 720 */
0xA7, 0x1F, 0xA0, 0x5A, 0x0A, /* 0x01FA7, 5 at 725 */
0xA8, 0x1F, 0x40, 0x56, 0x0A, /* 0x01FA8, 5 at 690 */
0xA9, 0x1F, 0xE0, 0x56, 0x0A, /* 0x01FA9, 5 at 695 */
0xAA, 0x1F, 0x80, 0x57, 0x0A, /* 0x01FAA, 5 at 700 */
0xAB, 0x1F, 0x20, 0x58, 0x0A, /* 0x01FAB, 5 at 705 */
0xAC, 0x1F, 0xC0, 0x58, 0x0A, /* 0x01FAC, 5 at 710 */
0xAD, 0x1F, 0x60, 0x59, 0x0A, /* 0x01FAD, 5 at 715 */
0xAE, 0x1F, 0x00, 0x5A, 0x0A, /* 0x01FAE, 5 at 720 */
0xAF, 0x1F, 0xA0, 0x5A, 0x0A, /* 0x01FAF, 5 at 725 */
0xB2, 0x1F, 0x40, 0x5B, 0x0A, /* 0x01FB2, 5 at 730 */
0xB3, 0x1F, 0xE0, 0x5B, 0x08, /* 0x01FB3, 4 at 735 */
0xB4, 0x1F, 0x60, 0x5C, 0x08, /* 0x01FB4, 4 at 739 */
0xB6, 0x1F, 0xE0, 0x5C, 0x08, /* 0x01FB6, 4 at 743 */
0xB7, 0x1F, 0x60, 0x5D, 0x0C, /* 0x01FB7, 6 at 747 */
0xBC, 0x1F, 0xE0, 0x5B, 0x08, /* 0x01FBC, 4 at 735 */
0xC2, 0x1F, 0x20, 0x5E, 0x0A, /* 0x01FC2, 5 at 753 */
0xC3, 0x1F, 0xC0, 0x5E, 0x08, /* 0x01FC3, 4 at 758 */
0xC4, 0x1F, 0x40, 0x5F, 0x08, /* 0x01FC4, 4 at 762 */
0xC6, 0x1F, 0xC0, 0x5F, 0x08, /* 0x01FC6, 4 at 766 */
0xC7, 0x1F, 0x40, 0x60, 0x0C, /* 0x01FC7, 6 at 770 */
0xCC, 0x1F, 0xC0, 0x5E, 0x08, /* 0x01FCC, 4 at 758 */
0xD2, 0x1F, 0x00, 0x61, 0x0C, /* 0x01FD2, 6 at 776 */
0xD3, 0x1F, 0xA0, 0x45, 0x0C, /* 0x01FD3, 6 at 557 */
0xD6, 0x1F, 0xC0, 0x61, 0x08, /* 0x01FD6, 4 at 782 */
0xD7, 0x1F, 0x40, 0x62, 0x0C, /* 0x01FD7, 6 at 786 */
0xE2, 0x1F, 0x00, 0x63, 0x0C, /* 0x01FE2, 6 at 792 */
0xE3, 0x1F, 0x60, 0x46, 0x0C, /* 0x01FE3, 6 at 563 */
0xE4, 0x1F, 0xC0, 0x63, 0x08, /* 0x01FE4, 4 at 798 */
0xE6, 0x1F, 0x40, 0x64, 0x08, /* 0x01FE6, 4 at 802 */
0xE7, 0x1F, 0xC0, 0x64, 0x0C, /* 0x01FE7, 6 at 806 */
0xF2, 0x1F, 0x80, 0x65, 0x0A, /* 0x01FF2, 5 at 812 */
0xF3, 0x1F, 0x20, 0x66, 0x08, /* 0x01FF3, 4 at 817 */
0xF4, 0x1F, 0xA0, 0x66, 0x08, /* 0x01FF4, 4 at 821 */
0xF6, 0x1F, 0x20, 0x67, 0x08, /* 0x01FF6, 4 at 825 */
0xF7, 0x1F, 0xA0, 0x67, 0x0C, /* 0x01FF7, 6 at 829 */
0xFC, 0x1F, 0x20, 0x66, 0x08, /* 0x01FFC, 4 at 817 */
0x00, 0xFB, 0x60, 0x68, 0x04, /* 0x0FB00, 2 at 835 */
0x01, 0xFB, 0xA0, 0x68, 0x04, /* 0x0FB01, 2 at 837 */
0x02, 0xFB, 0xE0, 0x68, 0x04, /* 0x0FB02, 2 at 839 */
0x03, 0xFB, 0x20, 0x69, 0x06, /* 0x0FB03, 3 at 841 */
0x04, 0xFB, 0x80, 0x69, 0x06, /* 0x0FB04, 3 at 844 */
0x05, 0xFB, 0xE0, 0x69, 0x04, /* 0x0FB05, 2 at 847 */
0x06, 0xFB, 0xE0, 0x69, 0x04, /* 0x0FB06, 2 at 847 */
0x13, 0xFB, 0x20, 0x6A, 0x08, /* 0x0FB13, 4 at 849 */
0x14, 0xFB, 0xA0, 0x6A, 0x08, /* 0x0FB14, 4 at 853 */
0x15, 0xFB, 0x20, 0x6B, 0x08, /* 0x0FB15, 4 at 857 */
0x16, 0xFB, 0xA0, 0x6B, 0x08, /* 0x0FB16, 4 at 861 */
0x17, 0xFB, 0x20, 0x6C, 0x08, /* 0x0FB17, 4 at 865 */
};
#define UNI_FOLD_MULTI uni_fold_multi
#define UNI_FOLD_MULTI_COUNT (sizeof(uni_fold_multi) / UNI_CASE_MULTI_BYTES)
/* Lowest and highest source either table holds, so a lookup that
cannot hit anything costs one comparison. */
#define UNI_FOLD_MIN 0x000B5
#define UNI_FOLD_MAX 0x0FB17
/* The sources above ASCII whose simple folding is an ASCII character, as
a list the caller expands with an X of its own. ASCII itself is in no
table, so unfolding an ASCII character is these and the ASCII rules,
and no table is read at all. */
#define UNI_FOLD_TO_ASCII \
X(0x0017F, 0x00073) /* to 's' */ \
X(0x0212A, 0x0006B) /* to 'k' */
#endif /* MRB_UNICASE_H */