anyxml_automata/
unicode.rs

1//! Generated by generate-ast-for-unicode.ts
2use crate::ast::ASTNode;
3
4pub const GENERAL_CATEGORY_CC: &[(char, char)] = &[('\u{0}', '\u{1f}'), ('\u{7f}', '\u{9f}')];
5
6pub fn alternate_general_category_cc() -> ASTNode<char> {
7    ASTNode::alternate_all(GENERAL_CATEGORY_CC.iter().copied()).unwrap()
8}
9
10pub fn negate_general_category_cc() -> ASTNode<char> {
11    ASTNode::negate_all(GENERAL_CATEGORY_CC.iter().copied()).unwrap()
12}
13
14pub const GENERAL_CATEGORY_ZS: &[(char, char)] = &[
15    ('\u{20}', '\u{20}'),
16    ('\u{a0}', '\u{a0}'),
17    ('\u{1680}', '\u{1680}'),
18    ('\u{2000}', '\u{200a}'),
19    ('\u{202f}', '\u{202f}'),
20    ('\u{205f}', '\u{205f}'),
21    ('\u{3000}', '\u{3000}'),
22];
23
24pub fn alternate_general_category_zs() -> ASTNode<char> {
25    ASTNode::alternate_all(GENERAL_CATEGORY_ZS.iter().copied()).unwrap()
26}
27
28pub fn negate_general_category_zs() -> ASTNode<char> {
29    ASTNode::negate_all(GENERAL_CATEGORY_ZS.iter().copied()).unwrap()
30}
31
32pub const GENERAL_CATEGORY_PO: &[(char, char)] = &[
33    ('\u{21}', '\u{23}'),
34    ('\u{25}', '\u{27}'),
35    ('\u{2a}', '\u{2a}'),
36    ('\u{2c}', '\u{2c}'),
37    ('\u{2e}', '\u{2f}'),
38    ('\u{3a}', '\u{3b}'),
39    ('\u{3f}', '\u{40}'),
40    ('\u{5c}', '\u{5c}'),
41    ('\u{a1}', '\u{a1}'),
42    ('\u{a7}', '\u{a7}'),
43    ('\u{b6}', '\u{b7}'),
44    ('\u{bf}', '\u{bf}'),
45    ('\u{37e}', '\u{37e}'),
46    ('\u{387}', '\u{387}'),
47    ('\u{55a}', '\u{55f}'),
48    ('\u{589}', '\u{589}'),
49    ('\u{5c0}', '\u{5c0}'),
50    ('\u{5c3}', '\u{5c3}'),
51    ('\u{5c6}', '\u{5c6}'),
52    ('\u{5f3}', '\u{5f4}'),
53    ('\u{609}', '\u{60a}'),
54    ('\u{60c}', '\u{60d}'),
55    ('\u{61b}', '\u{61b}'),
56    ('\u{61d}', '\u{61f}'),
57    ('\u{66a}', '\u{66d}'),
58    ('\u{6d4}', '\u{6d4}'),
59    ('\u{700}', '\u{70d}'),
60    ('\u{7f7}', '\u{7f9}'),
61    ('\u{830}', '\u{83e}'),
62    ('\u{85e}', '\u{85e}'),
63    ('\u{964}', '\u{965}'),
64    ('\u{970}', '\u{970}'),
65    ('\u{9fd}', '\u{9fd}'),
66    ('\u{a76}', '\u{a76}'),
67    ('\u{af0}', '\u{af0}'),
68    ('\u{c77}', '\u{c77}'),
69    ('\u{c84}', '\u{c84}'),
70    ('\u{df4}', '\u{df4}'),
71    ('\u{e4f}', '\u{e4f}'),
72    ('\u{e5a}', '\u{e5b}'),
73    ('\u{f04}', '\u{f12}'),
74    ('\u{f14}', '\u{f14}'),
75    ('\u{f85}', '\u{f85}'),
76    ('\u{fd0}', '\u{fd4}'),
77    ('\u{fd9}', '\u{fda}'),
78    ('\u{104a}', '\u{104f}'),
79    ('\u{10fb}', '\u{10fb}'),
80    ('\u{1360}', '\u{1368}'),
81    ('\u{166e}', '\u{166e}'),
82    ('\u{16eb}', '\u{16ed}'),
83    ('\u{1735}', '\u{1736}'),
84    ('\u{17d4}', '\u{17d6}'),
85    ('\u{17d8}', '\u{17da}'),
86    ('\u{1800}', '\u{1805}'),
87    ('\u{1807}', '\u{180a}'),
88    ('\u{1944}', '\u{1945}'),
89    ('\u{1a1e}', '\u{1a1f}'),
90    ('\u{1aa0}', '\u{1aa6}'),
91    ('\u{1aa8}', '\u{1aad}'),
92    ('\u{1b4e}', '\u{1b4f}'),
93    ('\u{1b5a}', '\u{1b60}'),
94    ('\u{1b7d}', '\u{1b7f}'),
95    ('\u{1bfc}', '\u{1bff}'),
96    ('\u{1c3b}', '\u{1c3f}'),
97    ('\u{1c7e}', '\u{1c7f}'),
98    ('\u{1cc0}', '\u{1cc7}'),
99    ('\u{1cd3}', '\u{1cd3}'),
100    ('\u{2016}', '\u{2017}'),
101    ('\u{2020}', '\u{2027}'),
102    ('\u{2030}', '\u{2038}'),
103    ('\u{203b}', '\u{203e}'),
104    ('\u{2041}', '\u{2043}'),
105    ('\u{2047}', '\u{2051}'),
106    ('\u{2053}', '\u{2053}'),
107    ('\u{2055}', '\u{205e}'),
108    ('\u{2cf9}', '\u{2cfc}'),
109    ('\u{2cfe}', '\u{2cff}'),
110    ('\u{2d70}', '\u{2d70}'),
111    ('\u{2e00}', '\u{2e01}'),
112    ('\u{2e06}', '\u{2e08}'),
113    ('\u{2e0b}', '\u{2e0b}'),
114    ('\u{2e0e}', '\u{2e16}'),
115    ('\u{2e18}', '\u{2e19}'),
116    ('\u{2e1b}', '\u{2e1b}'),
117    ('\u{2e1e}', '\u{2e1f}'),
118    ('\u{2e2a}', '\u{2e2e}'),
119    ('\u{2e30}', '\u{2e39}'),
120    ('\u{2e3c}', '\u{2e3f}'),
121    ('\u{2e41}', '\u{2e41}'),
122    ('\u{2e43}', '\u{2e4f}'),
123    ('\u{2e52}', '\u{2e54}'),
124    ('\u{3001}', '\u{3003}'),
125    ('\u{303d}', '\u{303d}'),
126    ('\u{30fb}', '\u{30fb}'),
127    ('\u{a4fe}', '\u{a4ff}'),
128    ('\u{a60d}', '\u{a60f}'),
129    ('\u{a673}', '\u{a673}'),
130    ('\u{a67e}', '\u{a67e}'),
131    ('\u{a6f2}', '\u{a6f7}'),
132    ('\u{a874}', '\u{a877}'),
133    ('\u{a8ce}', '\u{a8cf}'),
134    ('\u{a8f8}', '\u{a8fa}'),
135    ('\u{a8fc}', '\u{a8fc}'),
136    ('\u{a92e}', '\u{a92f}'),
137    ('\u{a95f}', '\u{a95f}'),
138    ('\u{a9c1}', '\u{a9cd}'),
139    ('\u{a9de}', '\u{a9df}'),
140    ('\u{aa5c}', '\u{aa5f}'),
141    ('\u{aade}', '\u{aadf}'),
142    ('\u{aaf0}', '\u{aaf1}'),
143    ('\u{abeb}', '\u{abeb}'),
144    ('\u{fe10}', '\u{fe16}'),
145    ('\u{fe19}', '\u{fe19}'),
146    ('\u{fe30}', '\u{fe30}'),
147    ('\u{fe45}', '\u{fe46}'),
148    ('\u{fe49}', '\u{fe4c}'),
149    ('\u{fe50}', '\u{fe52}'),
150    ('\u{fe54}', '\u{fe57}'),
151    ('\u{fe5f}', '\u{fe61}'),
152    ('\u{fe68}', '\u{fe68}'),
153    ('\u{fe6a}', '\u{fe6b}'),
154    ('\u{ff01}', '\u{ff03}'),
155    ('\u{ff05}', '\u{ff07}'),
156    ('\u{ff0a}', '\u{ff0a}'),
157    ('\u{ff0c}', '\u{ff0c}'),
158    ('\u{ff0e}', '\u{ff0f}'),
159    ('\u{ff1a}', '\u{ff1b}'),
160    ('\u{ff1f}', '\u{ff20}'),
161    ('\u{ff3c}', '\u{ff3c}'),
162    ('\u{ff61}', '\u{ff61}'),
163    ('\u{ff64}', '\u{ff65}'),
164    ('\u{10100}', '\u{10102}'),
165    ('\u{1039f}', '\u{1039f}'),
166    ('\u{103d0}', '\u{103d0}'),
167    ('\u{1056f}', '\u{1056f}'),
168    ('\u{10857}', '\u{10857}'),
169    ('\u{1091f}', '\u{1091f}'),
170    ('\u{1093f}', '\u{1093f}'),
171    ('\u{10a50}', '\u{10a58}'),
172    ('\u{10a7f}', '\u{10a7f}'),
173    ('\u{10af0}', '\u{10af6}'),
174    ('\u{10b39}', '\u{10b3f}'),
175    ('\u{10b99}', '\u{10b9c}'),
176    ('\u{10f55}', '\u{10f59}'),
177    ('\u{10f86}', '\u{10f89}'),
178    ('\u{11047}', '\u{1104d}'),
179    ('\u{110bb}', '\u{110bc}'),
180    ('\u{110be}', '\u{110c1}'),
181    ('\u{11140}', '\u{11143}'),
182    ('\u{11174}', '\u{11175}'),
183    ('\u{111c5}', '\u{111c8}'),
184    ('\u{111cd}', '\u{111cd}'),
185    ('\u{111db}', '\u{111db}'),
186    ('\u{111dd}', '\u{111df}'),
187    ('\u{11238}', '\u{1123d}'),
188    ('\u{112a9}', '\u{112a9}'),
189    ('\u{113d4}', '\u{113d5}'),
190    ('\u{113d7}', '\u{113d8}'),
191    ('\u{1144b}', '\u{1144f}'),
192    ('\u{1145a}', '\u{1145b}'),
193    ('\u{1145d}', '\u{1145d}'),
194    ('\u{114c6}', '\u{114c6}'),
195    ('\u{115c1}', '\u{115d7}'),
196    ('\u{11641}', '\u{11643}'),
197    ('\u{11660}', '\u{1166c}'),
198    ('\u{116b9}', '\u{116b9}'),
199    ('\u{1173c}', '\u{1173e}'),
200    ('\u{1183b}', '\u{1183b}'),
201    ('\u{11944}', '\u{11946}'),
202    ('\u{119e2}', '\u{119e2}'),
203    ('\u{11a3f}', '\u{11a46}'),
204    ('\u{11a9a}', '\u{11a9c}'),
205    ('\u{11a9e}', '\u{11aa2}'),
206    ('\u{11b00}', '\u{11b09}'),
207    ('\u{11be1}', '\u{11be1}'),
208    ('\u{11c41}', '\u{11c45}'),
209    ('\u{11c70}', '\u{11c71}'),
210    ('\u{11ef7}', '\u{11ef8}'),
211    ('\u{11f43}', '\u{11f4f}'),
212    ('\u{11fff}', '\u{11fff}'),
213    ('\u{12470}', '\u{12474}'),
214    ('\u{12ff1}', '\u{12ff2}'),
215    ('\u{16a6e}', '\u{16a6f}'),
216    ('\u{16af5}', '\u{16af5}'),
217    ('\u{16b37}', '\u{16b3b}'),
218    ('\u{16b44}', '\u{16b44}'),
219    ('\u{16d6d}', '\u{16d6f}'),
220    ('\u{16e97}', '\u{16e9a}'),
221    ('\u{16fe2}', '\u{16fe2}'),
222    ('\u{1bc9f}', '\u{1bc9f}'),
223    ('\u{1da87}', '\u{1da8b}'),
224    ('\u{1e5ff}', '\u{1e5ff}'),
225    ('\u{1e95e}', '\u{1e95f}'),
226];
227
228pub fn alternate_general_category_po() -> ASTNode<char> {
229    ASTNode::alternate_all(GENERAL_CATEGORY_PO.iter().copied()).unwrap()
230}
231
232pub fn negate_general_category_po() -> ASTNode<char> {
233    ASTNode::negate_all(GENERAL_CATEGORY_PO.iter().copied()).unwrap()
234}
235
236pub const GENERAL_CATEGORY_SC: &[(char, char)] = &[
237    ('\u{24}', '\u{24}'),
238    ('\u{a2}', '\u{a5}'),
239    ('\u{58f}', '\u{58f}'),
240    ('\u{60b}', '\u{60b}'),
241    ('\u{7fe}', '\u{7ff}'),
242    ('\u{9f2}', '\u{9f3}'),
243    ('\u{9fb}', '\u{9fb}'),
244    ('\u{af1}', '\u{af1}'),
245    ('\u{bf9}', '\u{bf9}'),
246    ('\u{e3f}', '\u{e3f}'),
247    ('\u{17db}', '\u{17db}'),
248    ('\u{20a0}', '\u{20c0}'),
249    ('\u{a838}', '\u{a838}'),
250    ('\u{fdfc}', '\u{fdfc}'),
251    ('\u{fe69}', '\u{fe69}'),
252    ('\u{ff04}', '\u{ff04}'),
253    ('\u{ffe0}', '\u{ffe1}'),
254    ('\u{ffe5}', '\u{ffe6}'),
255    ('\u{11fdd}', '\u{11fe0}'),
256    ('\u{1e2ff}', '\u{1e2ff}'),
257    ('\u{1ecb0}', '\u{1ecb0}'),
258];
259
260pub fn alternate_general_category_sc() -> ASTNode<char> {
261    ASTNode::alternate_all(GENERAL_CATEGORY_SC.iter().copied()).unwrap()
262}
263
264pub fn negate_general_category_sc() -> ASTNode<char> {
265    ASTNode::negate_all(GENERAL_CATEGORY_SC.iter().copied()).unwrap()
266}
267
268pub const GENERAL_CATEGORY_PS: &[(char, char)] = &[
269    ('\u{28}', '\u{28}'),
270    ('\u{5b}', '\u{5b}'),
271    ('\u{7b}', '\u{7b}'),
272    ('\u{f3a}', '\u{f3a}'),
273    ('\u{f3c}', '\u{f3c}'),
274    ('\u{169b}', '\u{169b}'),
275    ('\u{201a}', '\u{201a}'),
276    ('\u{201e}', '\u{201e}'),
277    ('\u{2045}', '\u{2045}'),
278    ('\u{207d}', '\u{207d}'),
279    ('\u{208d}', '\u{208d}'),
280    ('\u{2308}', '\u{2308}'),
281    ('\u{230a}', '\u{230a}'),
282    ('\u{2329}', '\u{2329}'),
283    ('\u{2768}', '\u{2768}'),
284    ('\u{276a}', '\u{276a}'),
285    ('\u{276c}', '\u{276c}'),
286    ('\u{276e}', '\u{276e}'),
287    ('\u{2770}', '\u{2770}'),
288    ('\u{2772}', '\u{2772}'),
289    ('\u{2774}', '\u{2774}'),
290    ('\u{27c5}', '\u{27c5}'),
291    ('\u{27e6}', '\u{27e6}'),
292    ('\u{27e8}', '\u{27e8}'),
293    ('\u{27ea}', '\u{27ea}'),
294    ('\u{27ec}', '\u{27ec}'),
295    ('\u{27ee}', '\u{27ee}'),
296    ('\u{2983}', '\u{2983}'),
297    ('\u{2985}', '\u{2985}'),
298    ('\u{2987}', '\u{2987}'),
299    ('\u{2989}', '\u{2989}'),
300    ('\u{298b}', '\u{298b}'),
301    ('\u{298d}', '\u{298d}'),
302    ('\u{298f}', '\u{298f}'),
303    ('\u{2991}', '\u{2991}'),
304    ('\u{2993}', '\u{2993}'),
305    ('\u{2995}', '\u{2995}'),
306    ('\u{2997}', '\u{2997}'),
307    ('\u{29d8}', '\u{29d8}'),
308    ('\u{29da}', '\u{29da}'),
309    ('\u{29fc}', '\u{29fc}'),
310    ('\u{2e22}', '\u{2e22}'),
311    ('\u{2e24}', '\u{2e24}'),
312    ('\u{2e26}', '\u{2e26}'),
313    ('\u{2e28}', '\u{2e28}'),
314    ('\u{2e42}', '\u{2e42}'),
315    ('\u{2e55}', '\u{2e55}'),
316    ('\u{2e57}', '\u{2e57}'),
317    ('\u{2e59}', '\u{2e59}'),
318    ('\u{2e5b}', '\u{2e5b}'),
319    ('\u{3008}', '\u{3008}'),
320    ('\u{300a}', '\u{300a}'),
321    ('\u{300c}', '\u{300c}'),
322    ('\u{300e}', '\u{300e}'),
323    ('\u{3010}', '\u{3010}'),
324    ('\u{3014}', '\u{3014}'),
325    ('\u{3016}', '\u{3016}'),
326    ('\u{3018}', '\u{3018}'),
327    ('\u{301a}', '\u{301a}'),
328    ('\u{301d}', '\u{301d}'),
329    ('\u{fd3f}', '\u{fd3f}'),
330    ('\u{fe17}', '\u{fe17}'),
331    ('\u{fe35}', '\u{fe35}'),
332    ('\u{fe37}', '\u{fe37}'),
333    ('\u{fe39}', '\u{fe39}'),
334    ('\u{fe3b}', '\u{fe3b}'),
335    ('\u{fe3d}', '\u{fe3d}'),
336    ('\u{fe3f}', '\u{fe3f}'),
337    ('\u{fe41}', '\u{fe41}'),
338    ('\u{fe43}', '\u{fe43}'),
339    ('\u{fe47}', '\u{fe47}'),
340    ('\u{fe59}', '\u{fe59}'),
341    ('\u{fe5b}', '\u{fe5b}'),
342    ('\u{fe5d}', '\u{fe5d}'),
343    ('\u{ff08}', '\u{ff08}'),
344    ('\u{ff3b}', '\u{ff3b}'),
345    ('\u{ff5b}', '\u{ff5b}'),
346    ('\u{ff5f}', '\u{ff5f}'),
347    ('\u{ff62}', '\u{ff62}'),
348];
349
350pub fn alternate_general_category_ps() -> ASTNode<char> {
351    ASTNode::alternate_all(GENERAL_CATEGORY_PS.iter().copied()).unwrap()
352}
353
354pub fn negate_general_category_ps() -> ASTNode<char> {
355    ASTNode::negate_all(GENERAL_CATEGORY_PS.iter().copied()).unwrap()
356}
357
358pub const GENERAL_CATEGORY_PE: &[(char, char)] = &[
359    ('\u{29}', '\u{29}'),
360    ('\u{5d}', '\u{5d}'),
361    ('\u{7d}', '\u{7d}'),
362    ('\u{f3b}', '\u{f3b}'),
363    ('\u{f3d}', '\u{f3d}'),
364    ('\u{169c}', '\u{169c}'),
365    ('\u{2046}', '\u{2046}'),
366    ('\u{207e}', '\u{207e}'),
367    ('\u{208e}', '\u{208e}'),
368    ('\u{2309}', '\u{2309}'),
369    ('\u{230b}', '\u{230b}'),
370    ('\u{232a}', '\u{232a}'),
371    ('\u{2769}', '\u{2769}'),
372    ('\u{276b}', '\u{276b}'),
373    ('\u{276d}', '\u{276d}'),
374    ('\u{276f}', '\u{276f}'),
375    ('\u{2771}', '\u{2771}'),
376    ('\u{2773}', '\u{2773}'),
377    ('\u{2775}', '\u{2775}'),
378    ('\u{27c6}', '\u{27c6}'),
379    ('\u{27e7}', '\u{27e7}'),
380    ('\u{27e9}', '\u{27e9}'),
381    ('\u{27eb}', '\u{27eb}'),
382    ('\u{27ed}', '\u{27ed}'),
383    ('\u{27ef}', '\u{27ef}'),
384    ('\u{2984}', '\u{2984}'),
385    ('\u{2986}', '\u{2986}'),
386    ('\u{2988}', '\u{2988}'),
387    ('\u{298a}', '\u{298a}'),
388    ('\u{298c}', '\u{298c}'),
389    ('\u{298e}', '\u{298e}'),
390    ('\u{2990}', '\u{2990}'),
391    ('\u{2992}', '\u{2992}'),
392    ('\u{2994}', '\u{2994}'),
393    ('\u{2996}', '\u{2996}'),
394    ('\u{2998}', '\u{2998}'),
395    ('\u{29d9}', '\u{29d9}'),
396    ('\u{29db}', '\u{29db}'),
397    ('\u{29fd}', '\u{29fd}'),
398    ('\u{2e23}', '\u{2e23}'),
399    ('\u{2e25}', '\u{2e25}'),
400    ('\u{2e27}', '\u{2e27}'),
401    ('\u{2e29}', '\u{2e29}'),
402    ('\u{2e56}', '\u{2e56}'),
403    ('\u{2e58}', '\u{2e58}'),
404    ('\u{2e5a}', '\u{2e5a}'),
405    ('\u{2e5c}', '\u{2e5c}'),
406    ('\u{3009}', '\u{3009}'),
407    ('\u{300b}', '\u{300b}'),
408    ('\u{300d}', '\u{300d}'),
409    ('\u{300f}', '\u{300f}'),
410    ('\u{3011}', '\u{3011}'),
411    ('\u{3015}', '\u{3015}'),
412    ('\u{3017}', '\u{3017}'),
413    ('\u{3019}', '\u{3019}'),
414    ('\u{301b}', '\u{301b}'),
415    ('\u{301e}', '\u{301f}'),
416    ('\u{fd3e}', '\u{fd3e}'),
417    ('\u{fe18}', '\u{fe18}'),
418    ('\u{fe36}', '\u{fe36}'),
419    ('\u{fe38}', '\u{fe38}'),
420    ('\u{fe3a}', '\u{fe3a}'),
421    ('\u{fe3c}', '\u{fe3c}'),
422    ('\u{fe3e}', '\u{fe3e}'),
423    ('\u{fe40}', '\u{fe40}'),
424    ('\u{fe42}', '\u{fe42}'),
425    ('\u{fe44}', '\u{fe44}'),
426    ('\u{fe48}', '\u{fe48}'),
427    ('\u{fe5a}', '\u{fe5a}'),
428    ('\u{fe5c}', '\u{fe5c}'),
429    ('\u{fe5e}', '\u{fe5e}'),
430    ('\u{ff09}', '\u{ff09}'),
431    ('\u{ff3d}', '\u{ff3d}'),
432    ('\u{ff5d}', '\u{ff5d}'),
433    ('\u{ff60}', '\u{ff60}'),
434    ('\u{ff63}', '\u{ff63}'),
435];
436
437pub fn alternate_general_category_pe() -> ASTNode<char> {
438    ASTNode::alternate_all(GENERAL_CATEGORY_PE.iter().copied()).unwrap()
439}
440
441pub fn negate_general_category_pe() -> ASTNode<char> {
442    ASTNode::negate_all(GENERAL_CATEGORY_PE.iter().copied()).unwrap()
443}
444
445pub const GENERAL_CATEGORY_SM: &[(char, char)] = &[
446    ('\u{2b}', '\u{2b}'),
447    ('\u{3c}', '\u{3e}'),
448    ('\u{7c}', '\u{7c}'),
449    ('\u{7e}', '\u{7e}'),
450    ('\u{ac}', '\u{ac}'),
451    ('\u{b1}', '\u{b1}'),
452    ('\u{d7}', '\u{d7}'),
453    ('\u{f7}', '\u{f7}'),
454    ('\u{3f6}', '\u{3f6}'),
455    ('\u{606}', '\u{608}'),
456    ('\u{2044}', '\u{2044}'),
457    ('\u{2052}', '\u{2052}'),
458    ('\u{207a}', '\u{207c}'),
459    ('\u{208a}', '\u{208c}'),
460    ('\u{2118}', '\u{2118}'),
461    ('\u{2140}', '\u{2144}'),
462    ('\u{214b}', '\u{214b}'),
463    ('\u{2190}', '\u{2194}'),
464    ('\u{219a}', '\u{219b}'),
465    ('\u{21a0}', '\u{21a0}'),
466    ('\u{21a3}', '\u{21a3}'),
467    ('\u{21a6}', '\u{21a6}'),
468    ('\u{21ae}', '\u{21ae}'),
469    ('\u{21ce}', '\u{21cf}'),
470    ('\u{21d2}', '\u{21d2}'),
471    ('\u{21d4}', '\u{21d4}'),
472    ('\u{21f4}', '\u{22ff}'),
473    ('\u{2320}', '\u{2321}'),
474    ('\u{237c}', '\u{237c}'),
475    ('\u{239b}', '\u{23b3}'),
476    ('\u{23dc}', '\u{23e1}'),
477    ('\u{25b7}', '\u{25b7}'),
478    ('\u{25c1}', '\u{25c1}'),
479    ('\u{25f8}', '\u{25ff}'),
480    ('\u{266f}', '\u{266f}'),
481    ('\u{27c0}', '\u{27c4}'),
482    ('\u{27c7}', '\u{27e5}'),
483    ('\u{27f0}', '\u{27ff}'),
484    ('\u{2900}', '\u{2982}'),
485    ('\u{2999}', '\u{29d7}'),
486    ('\u{29dc}', '\u{29fb}'),
487    ('\u{29fe}', '\u{2aff}'),
488    ('\u{2b30}', '\u{2b44}'),
489    ('\u{2b47}', '\u{2b4c}'),
490    ('\u{fb29}', '\u{fb29}'),
491    ('\u{fe62}', '\u{fe62}'),
492    ('\u{fe64}', '\u{fe66}'),
493    ('\u{ff0b}', '\u{ff0b}'),
494    ('\u{ff1c}', '\u{ff1e}'),
495    ('\u{ff5c}', '\u{ff5c}'),
496    ('\u{ff5e}', '\u{ff5e}'),
497    ('\u{ffe2}', '\u{ffe2}'),
498    ('\u{ffe9}', '\u{ffec}'),
499    ('\u{10d8e}', '\u{10d8f}'),
500    ('\u{1d6c1}', '\u{1d6c1}'),
501    ('\u{1d6db}', '\u{1d6db}'),
502    ('\u{1d6fb}', '\u{1d6fb}'),
503    ('\u{1d715}', '\u{1d715}'),
504    ('\u{1d735}', '\u{1d735}'),
505    ('\u{1d74f}', '\u{1d74f}'),
506    ('\u{1d76f}', '\u{1d76f}'),
507    ('\u{1d789}', '\u{1d789}'),
508    ('\u{1d7a9}', '\u{1d7a9}'),
509    ('\u{1d7c3}', '\u{1d7c3}'),
510    ('\u{1eef0}', '\u{1eef1}'),
511];
512
513pub fn alternate_general_category_sm() -> ASTNode<char> {
514    ASTNode::alternate_all(GENERAL_CATEGORY_SM.iter().copied()).unwrap()
515}
516
517pub fn negate_general_category_sm() -> ASTNode<char> {
518    ASTNode::negate_all(GENERAL_CATEGORY_SM.iter().copied()).unwrap()
519}
520
521pub const GENERAL_CATEGORY_PD: &[(char, char)] = &[
522    ('\u{2d}', '\u{2d}'),
523    ('\u{58a}', '\u{58a}'),
524    ('\u{5be}', '\u{5be}'),
525    ('\u{1400}', '\u{1400}'),
526    ('\u{1806}', '\u{1806}'),
527    ('\u{2010}', '\u{2015}'),
528    ('\u{2e17}', '\u{2e17}'),
529    ('\u{2e1a}', '\u{2e1a}'),
530    ('\u{2e3a}', '\u{2e3b}'),
531    ('\u{2e40}', '\u{2e40}'),
532    ('\u{2e5d}', '\u{2e5d}'),
533    ('\u{301c}', '\u{301c}'),
534    ('\u{3030}', '\u{3030}'),
535    ('\u{30a0}', '\u{30a0}'),
536    ('\u{fe31}', '\u{fe32}'),
537    ('\u{fe58}', '\u{fe58}'),
538    ('\u{fe63}', '\u{fe63}'),
539    ('\u{ff0d}', '\u{ff0d}'),
540    ('\u{10d6e}', '\u{10d6e}'),
541    ('\u{10ead}', '\u{10ead}'),
542];
543
544pub fn alternate_general_category_pd() -> ASTNode<char> {
545    ASTNode::alternate_all(GENERAL_CATEGORY_PD.iter().copied()).unwrap()
546}
547
548pub fn negate_general_category_pd() -> ASTNode<char> {
549    ASTNode::negate_all(GENERAL_CATEGORY_PD.iter().copied()).unwrap()
550}
551
552pub const GENERAL_CATEGORY_ND: &[(char, char)] = &[
553    ('\u{30}', '\u{39}'),
554    ('\u{660}', '\u{669}'),
555    ('\u{6f0}', '\u{6f9}'),
556    ('\u{7c0}', '\u{7c9}'),
557    ('\u{966}', '\u{96f}'),
558    ('\u{9e6}', '\u{9ef}'),
559    ('\u{a66}', '\u{a6f}'),
560    ('\u{ae6}', '\u{aef}'),
561    ('\u{b66}', '\u{b6f}'),
562    ('\u{be6}', '\u{bef}'),
563    ('\u{c66}', '\u{c6f}'),
564    ('\u{ce6}', '\u{cef}'),
565    ('\u{d66}', '\u{d6f}'),
566    ('\u{de6}', '\u{def}'),
567    ('\u{e50}', '\u{e59}'),
568    ('\u{ed0}', '\u{ed9}'),
569    ('\u{f20}', '\u{f29}'),
570    ('\u{1040}', '\u{1049}'),
571    ('\u{1090}', '\u{1099}'),
572    ('\u{17e0}', '\u{17e9}'),
573    ('\u{1810}', '\u{1819}'),
574    ('\u{1946}', '\u{194f}'),
575    ('\u{19d0}', '\u{19d9}'),
576    ('\u{1a80}', '\u{1a89}'),
577    ('\u{1a90}', '\u{1a99}'),
578    ('\u{1b50}', '\u{1b59}'),
579    ('\u{1bb0}', '\u{1bb9}'),
580    ('\u{1c40}', '\u{1c49}'),
581    ('\u{1c50}', '\u{1c59}'),
582    ('\u{a620}', '\u{a629}'),
583    ('\u{a8d0}', '\u{a8d9}'),
584    ('\u{a900}', '\u{a909}'),
585    ('\u{a9d0}', '\u{a9d9}'),
586    ('\u{a9f0}', '\u{a9f9}'),
587    ('\u{aa50}', '\u{aa59}'),
588    ('\u{abf0}', '\u{abf9}'),
589    ('\u{ff10}', '\u{ff19}'),
590    ('\u{104a0}', '\u{104a9}'),
591    ('\u{10d30}', '\u{10d39}'),
592    ('\u{10d40}', '\u{10d49}'),
593    ('\u{11066}', '\u{1106f}'),
594    ('\u{110f0}', '\u{110f9}'),
595    ('\u{11136}', '\u{1113f}'),
596    ('\u{111d0}', '\u{111d9}'),
597    ('\u{112f0}', '\u{112f9}'),
598    ('\u{11450}', '\u{11459}'),
599    ('\u{114d0}', '\u{114d9}'),
600    ('\u{11650}', '\u{11659}'),
601    ('\u{116c0}', '\u{116c9}'),
602    ('\u{116d0}', '\u{116e3}'),
603    ('\u{11730}', '\u{11739}'),
604    ('\u{118e0}', '\u{118e9}'),
605    ('\u{11950}', '\u{11959}'),
606    ('\u{11bf0}', '\u{11bf9}'),
607    ('\u{11c50}', '\u{11c59}'),
608    ('\u{11d50}', '\u{11d59}'),
609    ('\u{11da0}', '\u{11da9}'),
610    ('\u{11f50}', '\u{11f59}'),
611    ('\u{16130}', '\u{16139}'),
612    ('\u{16a60}', '\u{16a69}'),
613    ('\u{16ac0}', '\u{16ac9}'),
614    ('\u{16b50}', '\u{16b59}'),
615    ('\u{16d70}', '\u{16d79}'),
616    ('\u{1ccf0}', '\u{1ccf9}'),
617    ('\u{1d7ce}', '\u{1d7ff}'),
618    ('\u{1e140}', '\u{1e149}'),
619    ('\u{1e2f0}', '\u{1e2f9}'),
620    ('\u{1e4f0}', '\u{1e4f9}'),
621    ('\u{1e5f1}', '\u{1e5fa}'),
622    ('\u{1e950}', '\u{1e959}'),
623    ('\u{1fbf0}', '\u{1fbf9}'),
624];
625
626pub fn alternate_general_category_nd() -> ASTNode<char> {
627    ASTNode::alternate_all(GENERAL_CATEGORY_ND.iter().copied()).unwrap()
628}
629
630pub fn negate_general_category_nd() -> ASTNode<char> {
631    ASTNode::negate_all(GENERAL_CATEGORY_ND.iter().copied()).unwrap()
632}
633
634pub const GENERAL_CATEGORY_LU: &[(char, char)] = &[
635    ('\u{41}', '\u{5a}'),
636    ('\u{c0}', '\u{d6}'),
637    ('\u{d8}', '\u{de}'),
638    ('\u{100}', '\u{100}'),
639    ('\u{102}', '\u{102}'),
640    ('\u{104}', '\u{104}'),
641    ('\u{106}', '\u{106}'),
642    ('\u{108}', '\u{108}'),
643    ('\u{10a}', '\u{10a}'),
644    ('\u{10c}', '\u{10c}'),
645    ('\u{10e}', '\u{10e}'),
646    ('\u{110}', '\u{110}'),
647    ('\u{112}', '\u{112}'),
648    ('\u{114}', '\u{114}'),
649    ('\u{116}', '\u{116}'),
650    ('\u{118}', '\u{118}'),
651    ('\u{11a}', '\u{11a}'),
652    ('\u{11c}', '\u{11c}'),
653    ('\u{11e}', '\u{11e}'),
654    ('\u{120}', '\u{120}'),
655    ('\u{122}', '\u{122}'),
656    ('\u{124}', '\u{124}'),
657    ('\u{126}', '\u{126}'),
658    ('\u{128}', '\u{128}'),
659    ('\u{12a}', '\u{12a}'),
660    ('\u{12c}', '\u{12c}'),
661    ('\u{12e}', '\u{12e}'),
662    ('\u{130}', '\u{130}'),
663    ('\u{132}', '\u{132}'),
664    ('\u{134}', '\u{134}'),
665    ('\u{136}', '\u{136}'),
666    ('\u{139}', '\u{139}'),
667    ('\u{13b}', '\u{13b}'),
668    ('\u{13d}', '\u{13d}'),
669    ('\u{13f}', '\u{13f}'),
670    ('\u{141}', '\u{141}'),
671    ('\u{143}', '\u{143}'),
672    ('\u{145}', '\u{145}'),
673    ('\u{147}', '\u{147}'),
674    ('\u{14a}', '\u{14a}'),
675    ('\u{14c}', '\u{14c}'),
676    ('\u{14e}', '\u{14e}'),
677    ('\u{150}', '\u{150}'),
678    ('\u{152}', '\u{152}'),
679    ('\u{154}', '\u{154}'),
680    ('\u{156}', '\u{156}'),
681    ('\u{158}', '\u{158}'),
682    ('\u{15a}', '\u{15a}'),
683    ('\u{15c}', '\u{15c}'),
684    ('\u{15e}', '\u{15e}'),
685    ('\u{160}', '\u{160}'),
686    ('\u{162}', '\u{162}'),
687    ('\u{164}', '\u{164}'),
688    ('\u{166}', '\u{166}'),
689    ('\u{168}', '\u{168}'),
690    ('\u{16a}', '\u{16a}'),
691    ('\u{16c}', '\u{16c}'),
692    ('\u{16e}', '\u{16e}'),
693    ('\u{170}', '\u{170}'),
694    ('\u{172}', '\u{172}'),
695    ('\u{174}', '\u{174}'),
696    ('\u{176}', '\u{176}'),
697    ('\u{178}', '\u{179}'),
698    ('\u{17b}', '\u{17b}'),
699    ('\u{17d}', '\u{17d}'),
700    ('\u{181}', '\u{182}'),
701    ('\u{184}', '\u{184}'),
702    ('\u{186}', '\u{187}'),
703    ('\u{189}', '\u{18b}'),
704    ('\u{18e}', '\u{191}'),
705    ('\u{193}', '\u{194}'),
706    ('\u{196}', '\u{198}'),
707    ('\u{19c}', '\u{19d}'),
708    ('\u{19f}', '\u{1a0}'),
709    ('\u{1a2}', '\u{1a2}'),
710    ('\u{1a4}', '\u{1a4}'),
711    ('\u{1a6}', '\u{1a7}'),
712    ('\u{1a9}', '\u{1a9}'),
713    ('\u{1ac}', '\u{1ac}'),
714    ('\u{1ae}', '\u{1af}'),
715    ('\u{1b1}', '\u{1b3}'),
716    ('\u{1b5}', '\u{1b5}'),
717    ('\u{1b7}', '\u{1b8}'),
718    ('\u{1bc}', '\u{1bc}'),
719    ('\u{1c4}', '\u{1c4}'),
720    ('\u{1c7}', '\u{1c7}'),
721    ('\u{1ca}', '\u{1ca}'),
722    ('\u{1cd}', '\u{1cd}'),
723    ('\u{1cf}', '\u{1cf}'),
724    ('\u{1d1}', '\u{1d1}'),
725    ('\u{1d3}', '\u{1d3}'),
726    ('\u{1d5}', '\u{1d5}'),
727    ('\u{1d7}', '\u{1d7}'),
728    ('\u{1d9}', '\u{1d9}'),
729    ('\u{1db}', '\u{1db}'),
730    ('\u{1de}', '\u{1de}'),
731    ('\u{1e0}', '\u{1e0}'),
732    ('\u{1e2}', '\u{1e2}'),
733    ('\u{1e4}', '\u{1e4}'),
734    ('\u{1e6}', '\u{1e6}'),
735    ('\u{1e8}', '\u{1e8}'),
736    ('\u{1ea}', '\u{1ea}'),
737    ('\u{1ec}', '\u{1ec}'),
738    ('\u{1ee}', '\u{1ee}'),
739    ('\u{1f1}', '\u{1f1}'),
740    ('\u{1f4}', '\u{1f4}'),
741    ('\u{1f6}', '\u{1f8}'),
742    ('\u{1fa}', '\u{1fa}'),
743    ('\u{1fc}', '\u{1fc}'),
744    ('\u{1fe}', '\u{1fe}'),
745    ('\u{200}', '\u{200}'),
746    ('\u{202}', '\u{202}'),
747    ('\u{204}', '\u{204}'),
748    ('\u{206}', '\u{206}'),
749    ('\u{208}', '\u{208}'),
750    ('\u{20a}', '\u{20a}'),
751    ('\u{20c}', '\u{20c}'),
752    ('\u{20e}', '\u{20e}'),
753    ('\u{210}', '\u{210}'),
754    ('\u{212}', '\u{212}'),
755    ('\u{214}', '\u{214}'),
756    ('\u{216}', '\u{216}'),
757    ('\u{218}', '\u{218}'),
758    ('\u{21a}', '\u{21a}'),
759    ('\u{21c}', '\u{21c}'),
760    ('\u{21e}', '\u{21e}'),
761    ('\u{220}', '\u{220}'),
762    ('\u{222}', '\u{222}'),
763    ('\u{224}', '\u{224}'),
764    ('\u{226}', '\u{226}'),
765    ('\u{228}', '\u{228}'),
766    ('\u{22a}', '\u{22a}'),
767    ('\u{22c}', '\u{22c}'),
768    ('\u{22e}', '\u{22e}'),
769    ('\u{230}', '\u{230}'),
770    ('\u{232}', '\u{232}'),
771    ('\u{23a}', '\u{23b}'),
772    ('\u{23d}', '\u{23e}'),
773    ('\u{241}', '\u{241}'),
774    ('\u{243}', '\u{246}'),
775    ('\u{248}', '\u{248}'),
776    ('\u{24a}', '\u{24a}'),
777    ('\u{24c}', '\u{24c}'),
778    ('\u{24e}', '\u{24e}'),
779    ('\u{370}', '\u{370}'),
780    ('\u{372}', '\u{372}'),
781    ('\u{376}', '\u{376}'),
782    ('\u{37f}', '\u{37f}'),
783    ('\u{386}', '\u{386}'),
784    ('\u{388}', '\u{38a}'),
785    ('\u{38c}', '\u{38c}'),
786    ('\u{38e}', '\u{38f}'),
787    ('\u{391}', '\u{3a1}'),
788    ('\u{3a3}', '\u{3ab}'),
789    ('\u{3cf}', '\u{3cf}'),
790    ('\u{3d2}', '\u{3d4}'),
791    ('\u{3d8}', '\u{3d8}'),
792    ('\u{3da}', '\u{3da}'),
793    ('\u{3dc}', '\u{3dc}'),
794    ('\u{3de}', '\u{3de}'),
795    ('\u{3e0}', '\u{3e0}'),
796    ('\u{3e2}', '\u{3e2}'),
797    ('\u{3e4}', '\u{3e4}'),
798    ('\u{3e6}', '\u{3e6}'),
799    ('\u{3e8}', '\u{3e8}'),
800    ('\u{3ea}', '\u{3ea}'),
801    ('\u{3ec}', '\u{3ec}'),
802    ('\u{3ee}', '\u{3ee}'),
803    ('\u{3f4}', '\u{3f4}'),
804    ('\u{3f7}', '\u{3f7}'),
805    ('\u{3f9}', '\u{3fa}'),
806    ('\u{3fd}', '\u{42f}'),
807    ('\u{460}', '\u{460}'),
808    ('\u{462}', '\u{462}'),
809    ('\u{464}', '\u{464}'),
810    ('\u{466}', '\u{466}'),
811    ('\u{468}', '\u{468}'),
812    ('\u{46a}', '\u{46a}'),
813    ('\u{46c}', '\u{46c}'),
814    ('\u{46e}', '\u{46e}'),
815    ('\u{470}', '\u{470}'),
816    ('\u{472}', '\u{472}'),
817    ('\u{474}', '\u{474}'),
818    ('\u{476}', '\u{476}'),
819    ('\u{478}', '\u{478}'),
820    ('\u{47a}', '\u{47a}'),
821    ('\u{47c}', '\u{47c}'),
822    ('\u{47e}', '\u{47e}'),
823    ('\u{480}', '\u{480}'),
824    ('\u{48a}', '\u{48a}'),
825    ('\u{48c}', '\u{48c}'),
826    ('\u{48e}', '\u{48e}'),
827    ('\u{490}', '\u{490}'),
828    ('\u{492}', '\u{492}'),
829    ('\u{494}', '\u{494}'),
830    ('\u{496}', '\u{496}'),
831    ('\u{498}', '\u{498}'),
832    ('\u{49a}', '\u{49a}'),
833    ('\u{49c}', '\u{49c}'),
834    ('\u{49e}', '\u{49e}'),
835    ('\u{4a0}', '\u{4a0}'),
836    ('\u{4a2}', '\u{4a2}'),
837    ('\u{4a4}', '\u{4a4}'),
838    ('\u{4a6}', '\u{4a6}'),
839    ('\u{4a8}', '\u{4a8}'),
840    ('\u{4aa}', '\u{4aa}'),
841    ('\u{4ac}', '\u{4ac}'),
842    ('\u{4ae}', '\u{4ae}'),
843    ('\u{4b0}', '\u{4b0}'),
844    ('\u{4b2}', '\u{4b2}'),
845    ('\u{4b4}', '\u{4b4}'),
846    ('\u{4b6}', '\u{4b6}'),
847    ('\u{4b8}', '\u{4b8}'),
848    ('\u{4ba}', '\u{4ba}'),
849    ('\u{4bc}', '\u{4bc}'),
850    ('\u{4be}', '\u{4be}'),
851    ('\u{4c0}', '\u{4c1}'),
852    ('\u{4c3}', '\u{4c3}'),
853    ('\u{4c5}', '\u{4c5}'),
854    ('\u{4c7}', '\u{4c7}'),
855    ('\u{4c9}', '\u{4c9}'),
856    ('\u{4cb}', '\u{4cb}'),
857    ('\u{4cd}', '\u{4cd}'),
858    ('\u{4d0}', '\u{4d0}'),
859    ('\u{4d2}', '\u{4d2}'),
860    ('\u{4d4}', '\u{4d4}'),
861    ('\u{4d6}', '\u{4d6}'),
862    ('\u{4d8}', '\u{4d8}'),
863    ('\u{4da}', '\u{4da}'),
864    ('\u{4dc}', '\u{4dc}'),
865    ('\u{4de}', '\u{4de}'),
866    ('\u{4e0}', '\u{4e0}'),
867    ('\u{4e2}', '\u{4e2}'),
868    ('\u{4e4}', '\u{4e4}'),
869    ('\u{4e6}', '\u{4e6}'),
870    ('\u{4e8}', '\u{4e8}'),
871    ('\u{4ea}', '\u{4ea}'),
872    ('\u{4ec}', '\u{4ec}'),
873    ('\u{4ee}', '\u{4ee}'),
874    ('\u{4f0}', '\u{4f0}'),
875    ('\u{4f2}', '\u{4f2}'),
876    ('\u{4f4}', '\u{4f4}'),
877    ('\u{4f6}', '\u{4f6}'),
878    ('\u{4f8}', '\u{4f8}'),
879    ('\u{4fa}', '\u{4fa}'),
880    ('\u{4fc}', '\u{4fc}'),
881    ('\u{4fe}', '\u{4fe}'),
882    ('\u{500}', '\u{500}'),
883    ('\u{502}', '\u{502}'),
884    ('\u{504}', '\u{504}'),
885    ('\u{506}', '\u{506}'),
886    ('\u{508}', '\u{508}'),
887    ('\u{50a}', '\u{50a}'),
888    ('\u{50c}', '\u{50c}'),
889    ('\u{50e}', '\u{50e}'),
890    ('\u{510}', '\u{510}'),
891    ('\u{512}', '\u{512}'),
892    ('\u{514}', '\u{514}'),
893    ('\u{516}', '\u{516}'),
894    ('\u{518}', '\u{518}'),
895    ('\u{51a}', '\u{51a}'),
896    ('\u{51c}', '\u{51c}'),
897    ('\u{51e}', '\u{51e}'),
898    ('\u{520}', '\u{520}'),
899    ('\u{522}', '\u{522}'),
900    ('\u{524}', '\u{524}'),
901    ('\u{526}', '\u{526}'),
902    ('\u{528}', '\u{528}'),
903    ('\u{52a}', '\u{52a}'),
904    ('\u{52c}', '\u{52c}'),
905    ('\u{52e}', '\u{52e}'),
906    ('\u{531}', '\u{556}'),
907    ('\u{10a0}', '\u{10c5}'),
908    ('\u{10c7}', '\u{10c7}'),
909    ('\u{10cd}', '\u{10cd}'),
910    ('\u{13a0}', '\u{13f5}'),
911    ('\u{1c89}', '\u{1c89}'),
912    ('\u{1c90}', '\u{1cba}'),
913    ('\u{1cbd}', '\u{1cbf}'),
914    ('\u{1e00}', '\u{1e00}'),
915    ('\u{1e02}', '\u{1e02}'),
916    ('\u{1e04}', '\u{1e04}'),
917    ('\u{1e06}', '\u{1e06}'),
918    ('\u{1e08}', '\u{1e08}'),
919    ('\u{1e0a}', '\u{1e0a}'),
920    ('\u{1e0c}', '\u{1e0c}'),
921    ('\u{1e0e}', '\u{1e0e}'),
922    ('\u{1e10}', '\u{1e10}'),
923    ('\u{1e12}', '\u{1e12}'),
924    ('\u{1e14}', '\u{1e14}'),
925    ('\u{1e16}', '\u{1e16}'),
926    ('\u{1e18}', '\u{1e18}'),
927    ('\u{1e1a}', '\u{1e1a}'),
928    ('\u{1e1c}', '\u{1e1c}'),
929    ('\u{1e1e}', '\u{1e1e}'),
930    ('\u{1e20}', '\u{1e20}'),
931    ('\u{1e22}', '\u{1e22}'),
932    ('\u{1e24}', '\u{1e24}'),
933    ('\u{1e26}', '\u{1e26}'),
934    ('\u{1e28}', '\u{1e28}'),
935    ('\u{1e2a}', '\u{1e2a}'),
936    ('\u{1e2c}', '\u{1e2c}'),
937    ('\u{1e2e}', '\u{1e2e}'),
938    ('\u{1e30}', '\u{1e30}'),
939    ('\u{1e32}', '\u{1e32}'),
940    ('\u{1e34}', '\u{1e34}'),
941    ('\u{1e36}', '\u{1e36}'),
942    ('\u{1e38}', '\u{1e38}'),
943    ('\u{1e3a}', '\u{1e3a}'),
944    ('\u{1e3c}', '\u{1e3c}'),
945    ('\u{1e3e}', '\u{1e3e}'),
946    ('\u{1e40}', '\u{1e40}'),
947    ('\u{1e42}', '\u{1e42}'),
948    ('\u{1e44}', '\u{1e44}'),
949    ('\u{1e46}', '\u{1e46}'),
950    ('\u{1e48}', '\u{1e48}'),
951    ('\u{1e4a}', '\u{1e4a}'),
952    ('\u{1e4c}', '\u{1e4c}'),
953    ('\u{1e4e}', '\u{1e4e}'),
954    ('\u{1e50}', '\u{1e50}'),
955    ('\u{1e52}', '\u{1e52}'),
956    ('\u{1e54}', '\u{1e54}'),
957    ('\u{1e56}', '\u{1e56}'),
958    ('\u{1e58}', '\u{1e58}'),
959    ('\u{1e5a}', '\u{1e5a}'),
960    ('\u{1e5c}', '\u{1e5c}'),
961    ('\u{1e5e}', '\u{1e5e}'),
962    ('\u{1e60}', '\u{1e60}'),
963    ('\u{1e62}', '\u{1e62}'),
964    ('\u{1e64}', '\u{1e64}'),
965    ('\u{1e66}', '\u{1e66}'),
966    ('\u{1e68}', '\u{1e68}'),
967    ('\u{1e6a}', '\u{1e6a}'),
968    ('\u{1e6c}', '\u{1e6c}'),
969    ('\u{1e6e}', '\u{1e6e}'),
970    ('\u{1e70}', '\u{1e70}'),
971    ('\u{1e72}', '\u{1e72}'),
972    ('\u{1e74}', '\u{1e74}'),
973    ('\u{1e76}', '\u{1e76}'),
974    ('\u{1e78}', '\u{1e78}'),
975    ('\u{1e7a}', '\u{1e7a}'),
976    ('\u{1e7c}', '\u{1e7c}'),
977    ('\u{1e7e}', '\u{1e7e}'),
978    ('\u{1e80}', '\u{1e80}'),
979    ('\u{1e82}', '\u{1e82}'),
980    ('\u{1e84}', '\u{1e84}'),
981    ('\u{1e86}', '\u{1e86}'),
982    ('\u{1e88}', '\u{1e88}'),
983    ('\u{1e8a}', '\u{1e8a}'),
984    ('\u{1e8c}', '\u{1e8c}'),
985    ('\u{1e8e}', '\u{1e8e}'),
986    ('\u{1e90}', '\u{1e90}'),
987    ('\u{1e92}', '\u{1e92}'),
988    ('\u{1e94}', '\u{1e94}'),
989    ('\u{1e9e}', '\u{1e9e}'),
990    ('\u{1ea0}', '\u{1ea0}'),
991    ('\u{1ea2}', '\u{1ea2}'),
992    ('\u{1ea4}', '\u{1ea4}'),
993    ('\u{1ea6}', '\u{1ea6}'),
994    ('\u{1ea8}', '\u{1ea8}'),
995    ('\u{1eaa}', '\u{1eaa}'),
996    ('\u{1eac}', '\u{1eac}'),
997    ('\u{1eae}', '\u{1eae}'),
998    ('\u{1eb0}', '\u{1eb0}'),
999    ('\u{1eb2}', '\u{1eb2}'),
1000    ('\u{1eb4}', '\u{1eb4}'),
1001    ('\u{1eb6}', '\u{1eb6}'),
1002    ('\u{1eb8}', '\u{1eb8}'),
1003    ('\u{1eba}', '\u{1eba}'),
1004    ('\u{1ebc}', '\u{1ebc}'),
1005    ('\u{1ebe}', '\u{1ebe}'),
1006    ('\u{1ec0}', '\u{1ec0}'),
1007    ('\u{1ec2}', '\u{1ec2}'),
1008    ('\u{1ec4}', '\u{1ec4}'),
1009    ('\u{1ec6}', '\u{1ec6}'),
1010    ('\u{1ec8}', '\u{1ec8}'),
1011    ('\u{1eca}', '\u{1eca}'),
1012    ('\u{1ecc}', '\u{1ecc}'),
1013    ('\u{1ece}', '\u{1ece}'),
1014    ('\u{1ed0}', '\u{1ed0}'),
1015    ('\u{1ed2}', '\u{1ed2}'),
1016    ('\u{1ed4}', '\u{1ed4}'),
1017    ('\u{1ed6}', '\u{1ed6}'),
1018    ('\u{1ed8}', '\u{1ed8}'),
1019    ('\u{1eda}', '\u{1eda}'),
1020    ('\u{1edc}', '\u{1edc}'),
1021    ('\u{1ede}', '\u{1ede}'),
1022    ('\u{1ee0}', '\u{1ee0}'),
1023    ('\u{1ee2}', '\u{1ee2}'),
1024    ('\u{1ee4}', '\u{1ee4}'),
1025    ('\u{1ee6}', '\u{1ee6}'),
1026    ('\u{1ee8}', '\u{1ee8}'),
1027    ('\u{1eea}', '\u{1eea}'),
1028    ('\u{1eec}', '\u{1eec}'),
1029    ('\u{1eee}', '\u{1eee}'),
1030    ('\u{1ef0}', '\u{1ef0}'),
1031    ('\u{1ef2}', '\u{1ef2}'),
1032    ('\u{1ef4}', '\u{1ef4}'),
1033    ('\u{1ef6}', '\u{1ef6}'),
1034    ('\u{1ef8}', '\u{1ef8}'),
1035    ('\u{1efa}', '\u{1efa}'),
1036    ('\u{1efc}', '\u{1efc}'),
1037    ('\u{1efe}', '\u{1efe}'),
1038    ('\u{1f08}', '\u{1f0f}'),
1039    ('\u{1f18}', '\u{1f1d}'),
1040    ('\u{1f28}', '\u{1f2f}'),
1041    ('\u{1f38}', '\u{1f3f}'),
1042    ('\u{1f48}', '\u{1f4d}'),
1043    ('\u{1f59}', '\u{1f59}'),
1044    ('\u{1f5b}', '\u{1f5b}'),
1045    ('\u{1f5d}', '\u{1f5d}'),
1046    ('\u{1f5f}', '\u{1f5f}'),
1047    ('\u{1f68}', '\u{1f6f}'),
1048    ('\u{1fb8}', '\u{1fbb}'),
1049    ('\u{1fc8}', '\u{1fcb}'),
1050    ('\u{1fd8}', '\u{1fdb}'),
1051    ('\u{1fe8}', '\u{1fec}'),
1052    ('\u{1ff8}', '\u{1ffb}'),
1053    ('\u{2102}', '\u{2102}'),
1054    ('\u{2107}', '\u{2107}'),
1055    ('\u{210b}', '\u{210d}'),
1056    ('\u{2110}', '\u{2112}'),
1057    ('\u{2115}', '\u{2115}'),
1058    ('\u{2119}', '\u{211d}'),
1059    ('\u{2124}', '\u{2124}'),
1060    ('\u{2126}', '\u{2126}'),
1061    ('\u{2128}', '\u{2128}'),
1062    ('\u{212a}', '\u{212d}'),
1063    ('\u{2130}', '\u{2133}'),
1064    ('\u{213e}', '\u{213f}'),
1065    ('\u{2145}', '\u{2145}'),
1066    ('\u{2183}', '\u{2183}'),
1067    ('\u{2c00}', '\u{2c2f}'),
1068    ('\u{2c60}', '\u{2c60}'),
1069    ('\u{2c62}', '\u{2c64}'),
1070    ('\u{2c67}', '\u{2c67}'),
1071    ('\u{2c69}', '\u{2c69}'),
1072    ('\u{2c6b}', '\u{2c6b}'),
1073    ('\u{2c6d}', '\u{2c70}'),
1074    ('\u{2c72}', '\u{2c72}'),
1075    ('\u{2c75}', '\u{2c75}'),
1076    ('\u{2c7e}', '\u{2c80}'),
1077    ('\u{2c82}', '\u{2c82}'),
1078    ('\u{2c84}', '\u{2c84}'),
1079    ('\u{2c86}', '\u{2c86}'),
1080    ('\u{2c88}', '\u{2c88}'),
1081    ('\u{2c8a}', '\u{2c8a}'),
1082    ('\u{2c8c}', '\u{2c8c}'),
1083    ('\u{2c8e}', '\u{2c8e}'),
1084    ('\u{2c90}', '\u{2c90}'),
1085    ('\u{2c92}', '\u{2c92}'),
1086    ('\u{2c94}', '\u{2c94}'),
1087    ('\u{2c96}', '\u{2c96}'),
1088    ('\u{2c98}', '\u{2c98}'),
1089    ('\u{2c9a}', '\u{2c9a}'),
1090    ('\u{2c9c}', '\u{2c9c}'),
1091    ('\u{2c9e}', '\u{2c9e}'),
1092    ('\u{2ca0}', '\u{2ca0}'),
1093    ('\u{2ca2}', '\u{2ca2}'),
1094    ('\u{2ca4}', '\u{2ca4}'),
1095    ('\u{2ca6}', '\u{2ca6}'),
1096    ('\u{2ca8}', '\u{2ca8}'),
1097    ('\u{2caa}', '\u{2caa}'),
1098    ('\u{2cac}', '\u{2cac}'),
1099    ('\u{2cae}', '\u{2cae}'),
1100    ('\u{2cb0}', '\u{2cb0}'),
1101    ('\u{2cb2}', '\u{2cb2}'),
1102    ('\u{2cb4}', '\u{2cb4}'),
1103    ('\u{2cb6}', '\u{2cb6}'),
1104    ('\u{2cb8}', '\u{2cb8}'),
1105    ('\u{2cba}', '\u{2cba}'),
1106    ('\u{2cbc}', '\u{2cbc}'),
1107    ('\u{2cbe}', '\u{2cbe}'),
1108    ('\u{2cc0}', '\u{2cc0}'),
1109    ('\u{2cc2}', '\u{2cc2}'),
1110    ('\u{2cc4}', '\u{2cc4}'),
1111    ('\u{2cc6}', '\u{2cc6}'),
1112    ('\u{2cc8}', '\u{2cc8}'),
1113    ('\u{2cca}', '\u{2cca}'),
1114    ('\u{2ccc}', '\u{2ccc}'),
1115    ('\u{2cce}', '\u{2cce}'),
1116    ('\u{2cd0}', '\u{2cd0}'),
1117    ('\u{2cd2}', '\u{2cd2}'),
1118    ('\u{2cd4}', '\u{2cd4}'),
1119    ('\u{2cd6}', '\u{2cd6}'),
1120    ('\u{2cd8}', '\u{2cd8}'),
1121    ('\u{2cda}', '\u{2cda}'),
1122    ('\u{2cdc}', '\u{2cdc}'),
1123    ('\u{2cde}', '\u{2cde}'),
1124    ('\u{2ce0}', '\u{2ce0}'),
1125    ('\u{2ce2}', '\u{2ce2}'),
1126    ('\u{2ceb}', '\u{2ceb}'),
1127    ('\u{2ced}', '\u{2ced}'),
1128    ('\u{2cf2}', '\u{2cf2}'),
1129    ('\u{a640}', '\u{a640}'),
1130    ('\u{a642}', '\u{a642}'),
1131    ('\u{a644}', '\u{a644}'),
1132    ('\u{a646}', '\u{a646}'),
1133    ('\u{a648}', '\u{a648}'),
1134    ('\u{a64a}', '\u{a64a}'),
1135    ('\u{a64c}', '\u{a64c}'),
1136    ('\u{a64e}', '\u{a64e}'),
1137    ('\u{a650}', '\u{a650}'),
1138    ('\u{a652}', '\u{a652}'),
1139    ('\u{a654}', '\u{a654}'),
1140    ('\u{a656}', '\u{a656}'),
1141    ('\u{a658}', '\u{a658}'),
1142    ('\u{a65a}', '\u{a65a}'),
1143    ('\u{a65c}', '\u{a65c}'),
1144    ('\u{a65e}', '\u{a65e}'),
1145    ('\u{a660}', '\u{a660}'),
1146    ('\u{a662}', '\u{a662}'),
1147    ('\u{a664}', '\u{a664}'),
1148    ('\u{a666}', '\u{a666}'),
1149    ('\u{a668}', '\u{a668}'),
1150    ('\u{a66a}', '\u{a66a}'),
1151    ('\u{a66c}', '\u{a66c}'),
1152    ('\u{a680}', '\u{a680}'),
1153    ('\u{a682}', '\u{a682}'),
1154    ('\u{a684}', '\u{a684}'),
1155    ('\u{a686}', '\u{a686}'),
1156    ('\u{a688}', '\u{a688}'),
1157    ('\u{a68a}', '\u{a68a}'),
1158    ('\u{a68c}', '\u{a68c}'),
1159    ('\u{a68e}', '\u{a68e}'),
1160    ('\u{a690}', '\u{a690}'),
1161    ('\u{a692}', '\u{a692}'),
1162    ('\u{a694}', '\u{a694}'),
1163    ('\u{a696}', '\u{a696}'),
1164    ('\u{a698}', '\u{a698}'),
1165    ('\u{a69a}', '\u{a69a}'),
1166    ('\u{a722}', '\u{a722}'),
1167    ('\u{a724}', '\u{a724}'),
1168    ('\u{a726}', '\u{a726}'),
1169    ('\u{a728}', '\u{a728}'),
1170    ('\u{a72a}', '\u{a72a}'),
1171    ('\u{a72c}', '\u{a72c}'),
1172    ('\u{a72e}', '\u{a72e}'),
1173    ('\u{a732}', '\u{a732}'),
1174    ('\u{a734}', '\u{a734}'),
1175    ('\u{a736}', '\u{a736}'),
1176    ('\u{a738}', '\u{a738}'),
1177    ('\u{a73a}', '\u{a73a}'),
1178    ('\u{a73c}', '\u{a73c}'),
1179    ('\u{a73e}', '\u{a73e}'),
1180    ('\u{a740}', '\u{a740}'),
1181    ('\u{a742}', '\u{a742}'),
1182    ('\u{a744}', '\u{a744}'),
1183    ('\u{a746}', '\u{a746}'),
1184    ('\u{a748}', '\u{a748}'),
1185    ('\u{a74a}', '\u{a74a}'),
1186    ('\u{a74c}', '\u{a74c}'),
1187    ('\u{a74e}', '\u{a74e}'),
1188    ('\u{a750}', '\u{a750}'),
1189    ('\u{a752}', '\u{a752}'),
1190    ('\u{a754}', '\u{a754}'),
1191    ('\u{a756}', '\u{a756}'),
1192    ('\u{a758}', '\u{a758}'),
1193    ('\u{a75a}', '\u{a75a}'),
1194    ('\u{a75c}', '\u{a75c}'),
1195    ('\u{a75e}', '\u{a75e}'),
1196    ('\u{a760}', '\u{a760}'),
1197    ('\u{a762}', '\u{a762}'),
1198    ('\u{a764}', '\u{a764}'),
1199    ('\u{a766}', '\u{a766}'),
1200    ('\u{a768}', '\u{a768}'),
1201    ('\u{a76a}', '\u{a76a}'),
1202    ('\u{a76c}', '\u{a76c}'),
1203    ('\u{a76e}', '\u{a76e}'),
1204    ('\u{a779}', '\u{a779}'),
1205    ('\u{a77b}', '\u{a77b}'),
1206    ('\u{a77d}', '\u{a77e}'),
1207    ('\u{a780}', '\u{a780}'),
1208    ('\u{a782}', '\u{a782}'),
1209    ('\u{a784}', '\u{a784}'),
1210    ('\u{a786}', '\u{a786}'),
1211    ('\u{a78b}', '\u{a78b}'),
1212    ('\u{a78d}', '\u{a78d}'),
1213    ('\u{a790}', '\u{a790}'),
1214    ('\u{a792}', '\u{a792}'),
1215    ('\u{a796}', '\u{a796}'),
1216    ('\u{a798}', '\u{a798}'),
1217    ('\u{a79a}', '\u{a79a}'),
1218    ('\u{a79c}', '\u{a79c}'),
1219    ('\u{a79e}', '\u{a79e}'),
1220    ('\u{a7a0}', '\u{a7a0}'),
1221    ('\u{a7a2}', '\u{a7a2}'),
1222    ('\u{a7a4}', '\u{a7a4}'),
1223    ('\u{a7a6}', '\u{a7a6}'),
1224    ('\u{a7a8}', '\u{a7a8}'),
1225    ('\u{a7aa}', '\u{a7ae}'),
1226    ('\u{a7b0}', '\u{a7b4}'),
1227    ('\u{a7b6}', '\u{a7b6}'),
1228    ('\u{a7b8}', '\u{a7b8}'),
1229    ('\u{a7ba}', '\u{a7ba}'),
1230    ('\u{a7bc}', '\u{a7bc}'),
1231    ('\u{a7be}', '\u{a7be}'),
1232    ('\u{a7c0}', '\u{a7c0}'),
1233    ('\u{a7c2}', '\u{a7c2}'),
1234    ('\u{a7c4}', '\u{a7c7}'),
1235    ('\u{a7c9}', '\u{a7c9}'),
1236    ('\u{a7cb}', '\u{a7cc}'),
1237    ('\u{a7d0}', '\u{a7d0}'),
1238    ('\u{a7d6}', '\u{a7d6}'),
1239    ('\u{a7d8}', '\u{a7d8}'),
1240    ('\u{a7da}', '\u{a7da}'),
1241    ('\u{a7dc}', '\u{a7dc}'),
1242    ('\u{a7f5}', '\u{a7f5}'),
1243    ('\u{ff21}', '\u{ff3a}'),
1244    ('\u{10400}', '\u{10427}'),
1245    ('\u{104b0}', '\u{104d3}'),
1246    ('\u{10570}', '\u{1057a}'),
1247    ('\u{1057c}', '\u{1058a}'),
1248    ('\u{1058c}', '\u{10592}'),
1249    ('\u{10594}', '\u{10595}'),
1250    ('\u{10c80}', '\u{10cb2}'),
1251    ('\u{10d50}', '\u{10d65}'),
1252    ('\u{118a0}', '\u{118bf}'),
1253    ('\u{16e40}', '\u{16e5f}'),
1254    ('\u{1d400}', '\u{1d419}'),
1255    ('\u{1d434}', '\u{1d44d}'),
1256    ('\u{1d468}', '\u{1d481}'),
1257    ('\u{1d49c}', '\u{1d49c}'),
1258    ('\u{1d49e}', '\u{1d49f}'),
1259    ('\u{1d4a2}', '\u{1d4a2}'),
1260    ('\u{1d4a5}', '\u{1d4a6}'),
1261    ('\u{1d4a9}', '\u{1d4ac}'),
1262    ('\u{1d4ae}', '\u{1d4b5}'),
1263    ('\u{1d4d0}', '\u{1d4e9}'),
1264    ('\u{1d504}', '\u{1d505}'),
1265    ('\u{1d507}', '\u{1d50a}'),
1266    ('\u{1d50d}', '\u{1d514}'),
1267    ('\u{1d516}', '\u{1d51c}'),
1268    ('\u{1d538}', '\u{1d539}'),
1269    ('\u{1d53b}', '\u{1d53e}'),
1270    ('\u{1d540}', '\u{1d544}'),
1271    ('\u{1d546}', '\u{1d546}'),
1272    ('\u{1d54a}', '\u{1d550}'),
1273    ('\u{1d56c}', '\u{1d585}'),
1274    ('\u{1d5a0}', '\u{1d5b9}'),
1275    ('\u{1d5d4}', '\u{1d5ed}'),
1276    ('\u{1d608}', '\u{1d621}'),
1277    ('\u{1d63c}', '\u{1d655}'),
1278    ('\u{1d670}', '\u{1d689}'),
1279    ('\u{1d6a8}', '\u{1d6c0}'),
1280    ('\u{1d6e2}', '\u{1d6fa}'),
1281    ('\u{1d71c}', '\u{1d734}'),
1282    ('\u{1d756}', '\u{1d76e}'),
1283    ('\u{1d790}', '\u{1d7a8}'),
1284    ('\u{1d7ca}', '\u{1d7ca}'),
1285    ('\u{1e900}', '\u{1e921}'),
1286];
1287
1288pub fn alternate_general_category_lu() -> ASTNode<char> {
1289    ASTNode::alternate_all(GENERAL_CATEGORY_LU.iter().copied()).unwrap()
1290}
1291
1292pub fn negate_general_category_lu() -> ASTNode<char> {
1293    ASTNode::negate_all(GENERAL_CATEGORY_LU.iter().copied()).unwrap()
1294}
1295
1296pub const GENERAL_CATEGORY_SK: &[(char, char)] = &[
1297    ('\u{5e}', '\u{5e}'),
1298    ('\u{60}', '\u{60}'),
1299    ('\u{a8}', '\u{a8}'),
1300    ('\u{af}', '\u{af}'),
1301    ('\u{b4}', '\u{b4}'),
1302    ('\u{b8}', '\u{b8}'),
1303    ('\u{2c2}', '\u{2c5}'),
1304    ('\u{2d2}', '\u{2df}'),
1305    ('\u{2e5}', '\u{2eb}'),
1306    ('\u{2ed}', '\u{2ed}'),
1307    ('\u{2ef}', '\u{2ff}'),
1308    ('\u{375}', '\u{375}'),
1309    ('\u{384}', '\u{385}'),
1310    ('\u{888}', '\u{888}'),
1311    ('\u{1fbd}', '\u{1fbd}'),
1312    ('\u{1fbf}', '\u{1fc1}'),
1313    ('\u{1fcd}', '\u{1fcf}'),
1314    ('\u{1fdd}', '\u{1fdf}'),
1315    ('\u{1fed}', '\u{1fef}'),
1316    ('\u{1ffd}', '\u{1ffe}'),
1317    ('\u{309b}', '\u{309c}'),
1318    ('\u{a700}', '\u{a716}'),
1319    ('\u{a720}', '\u{a721}'),
1320    ('\u{a789}', '\u{a78a}'),
1321    ('\u{ab5b}', '\u{ab5b}'),
1322    ('\u{ab6a}', '\u{ab6b}'),
1323    ('\u{fbb2}', '\u{fbc2}'),
1324    ('\u{ff3e}', '\u{ff3e}'),
1325    ('\u{ff40}', '\u{ff40}'),
1326    ('\u{ffe3}', '\u{ffe3}'),
1327    ('\u{1f3fb}', '\u{1f3ff}'),
1328];
1329
1330pub fn alternate_general_category_sk() -> ASTNode<char> {
1331    ASTNode::alternate_all(GENERAL_CATEGORY_SK.iter().copied()).unwrap()
1332}
1333
1334pub fn negate_general_category_sk() -> ASTNode<char> {
1335    ASTNode::negate_all(GENERAL_CATEGORY_SK.iter().copied()).unwrap()
1336}
1337
1338pub const GENERAL_CATEGORY_PC: &[(char, char)] = &[
1339    ('\u{5f}', '\u{5f}'),
1340    ('\u{203f}', '\u{2040}'),
1341    ('\u{2054}', '\u{2054}'),
1342    ('\u{fe33}', '\u{fe34}'),
1343    ('\u{fe4d}', '\u{fe4f}'),
1344    ('\u{ff3f}', '\u{ff3f}'),
1345];
1346
1347pub fn alternate_general_category_pc() -> ASTNode<char> {
1348    ASTNode::alternate_all(GENERAL_CATEGORY_PC.iter().copied()).unwrap()
1349}
1350
1351pub fn negate_general_category_pc() -> ASTNode<char> {
1352    ASTNode::negate_all(GENERAL_CATEGORY_PC.iter().copied()).unwrap()
1353}
1354
1355pub const GENERAL_CATEGORY_LL: &[(char, char)] = &[
1356    ('\u{61}', '\u{7a}'),
1357    ('\u{b5}', '\u{b5}'),
1358    ('\u{df}', '\u{f6}'),
1359    ('\u{f8}', '\u{ff}'),
1360    ('\u{101}', '\u{101}'),
1361    ('\u{103}', '\u{103}'),
1362    ('\u{105}', '\u{105}'),
1363    ('\u{107}', '\u{107}'),
1364    ('\u{109}', '\u{109}'),
1365    ('\u{10b}', '\u{10b}'),
1366    ('\u{10d}', '\u{10d}'),
1367    ('\u{10f}', '\u{10f}'),
1368    ('\u{111}', '\u{111}'),
1369    ('\u{113}', '\u{113}'),
1370    ('\u{115}', '\u{115}'),
1371    ('\u{117}', '\u{117}'),
1372    ('\u{119}', '\u{119}'),
1373    ('\u{11b}', '\u{11b}'),
1374    ('\u{11d}', '\u{11d}'),
1375    ('\u{11f}', '\u{11f}'),
1376    ('\u{121}', '\u{121}'),
1377    ('\u{123}', '\u{123}'),
1378    ('\u{125}', '\u{125}'),
1379    ('\u{127}', '\u{127}'),
1380    ('\u{129}', '\u{129}'),
1381    ('\u{12b}', '\u{12b}'),
1382    ('\u{12d}', '\u{12d}'),
1383    ('\u{12f}', '\u{12f}'),
1384    ('\u{131}', '\u{131}'),
1385    ('\u{133}', '\u{133}'),
1386    ('\u{135}', '\u{135}'),
1387    ('\u{137}', '\u{138}'),
1388    ('\u{13a}', '\u{13a}'),
1389    ('\u{13c}', '\u{13c}'),
1390    ('\u{13e}', '\u{13e}'),
1391    ('\u{140}', '\u{140}'),
1392    ('\u{142}', '\u{142}'),
1393    ('\u{144}', '\u{144}'),
1394    ('\u{146}', '\u{146}'),
1395    ('\u{148}', '\u{149}'),
1396    ('\u{14b}', '\u{14b}'),
1397    ('\u{14d}', '\u{14d}'),
1398    ('\u{14f}', '\u{14f}'),
1399    ('\u{151}', '\u{151}'),
1400    ('\u{153}', '\u{153}'),
1401    ('\u{155}', '\u{155}'),
1402    ('\u{157}', '\u{157}'),
1403    ('\u{159}', '\u{159}'),
1404    ('\u{15b}', '\u{15b}'),
1405    ('\u{15d}', '\u{15d}'),
1406    ('\u{15f}', '\u{15f}'),
1407    ('\u{161}', '\u{161}'),
1408    ('\u{163}', '\u{163}'),
1409    ('\u{165}', '\u{165}'),
1410    ('\u{167}', '\u{167}'),
1411    ('\u{169}', '\u{169}'),
1412    ('\u{16b}', '\u{16b}'),
1413    ('\u{16d}', '\u{16d}'),
1414    ('\u{16f}', '\u{16f}'),
1415    ('\u{171}', '\u{171}'),
1416    ('\u{173}', '\u{173}'),
1417    ('\u{175}', '\u{175}'),
1418    ('\u{177}', '\u{177}'),
1419    ('\u{17a}', '\u{17a}'),
1420    ('\u{17c}', '\u{17c}'),
1421    ('\u{17e}', '\u{180}'),
1422    ('\u{183}', '\u{183}'),
1423    ('\u{185}', '\u{185}'),
1424    ('\u{188}', '\u{188}'),
1425    ('\u{18c}', '\u{18d}'),
1426    ('\u{192}', '\u{192}'),
1427    ('\u{195}', '\u{195}'),
1428    ('\u{199}', '\u{19b}'),
1429    ('\u{19e}', '\u{19e}'),
1430    ('\u{1a1}', '\u{1a1}'),
1431    ('\u{1a3}', '\u{1a3}'),
1432    ('\u{1a5}', '\u{1a5}'),
1433    ('\u{1a8}', '\u{1a8}'),
1434    ('\u{1aa}', '\u{1ab}'),
1435    ('\u{1ad}', '\u{1ad}'),
1436    ('\u{1b0}', '\u{1b0}'),
1437    ('\u{1b4}', '\u{1b4}'),
1438    ('\u{1b6}', '\u{1b6}'),
1439    ('\u{1b9}', '\u{1ba}'),
1440    ('\u{1bd}', '\u{1bf}'),
1441    ('\u{1c6}', '\u{1c6}'),
1442    ('\u{1c9}', '\u{1c9}'),
1443    ('\u{1cc}', '\u{1cc}'),
1444    ('\u{1ce}', '\u{1ce}'),
1445    ('\u{1d0}', '\u{1d0}'),
1446    ('\u{1d2}', '\u{1d2}'),
1447    ('\u{1d4}', '\u{1d4}'),
1448    ('\u{1d6}', '\u{1d6}'),
1449    ('\u{1d8}', '\u{1d8}'),
1450    ('\u{1da}', '\u{1da}'),
1451    ('\u{1dc}', '\u{1dd}'),
1452    ('\u{1df}', '\u{1df}'),
1453    ('\u{1e1}', '\u{1e1}'),
1454    ('\u{1e3}', '\u{1e3}'),
1455    ('\u{1e5}', '\u{1e5}'),
1456    ('\u{1e7}', '\u{1e7}'),
1457    ('\u{1e9}', '\u{1e9}'),
1458    ('\u{1eb}', '\u{1eb}'),
1459    ('\u{1ed}', '\u{1ed}'),
1460    ('\u{1ef}', '\u{1f0}'),
1461    ('\u{1f3}', '\u{1f3}'),
1462    ('\u{1f5}', '\u{1f5}'),
1463    ('\u{1f9}', '\u{1f9}'),
1464    ('\u{1fb}', '\u{1fb}'),
1465    ('\u{1fd}', '\u{1fd}'),
1466    ('\u{1ff}', '\u{1ff}'),
1467    ('\u{201}', '\u{201}'),
1468    ('\u{203}', '\u{203}'),
1469    ('\u{205}', '\u{205}'),
1470    ('\u{207}', '\u{207}'),
1471    ('\u{209}', '\u{209}'),
1472    ('\u{20b}', '\u{20b}'),
1473    ('\u{20d}', '\u{20d}'),
1474    ('\u{20f}', '\u{20f}'),
1475    ('\u{211}', '\u{211}'),
1476    ('\u{213}', '\u{213}'),
1477    ('\u{215}', '\u{215}'),
1478    ('\u{217}', '\u{217}'),
1479    ('\u{219}', '\u{219}'),
1480    ('\u{21b}', '\u{21b}'),
1481    ('\u{21d}', '\u{21d}'),
1482    ('\u{21f}', '\u{21f}'),
1483    ('\u{221}', '\u{221}'),
1484    ('\u{223}', '\u{223}'),
1485    ('\u{225}', '\u{225}'),
1486    ('\u{227}', '\u{227}'),
1487    ('\u{229}', '\u{229}'),
1488    ('\u{22b}', '\u{22b}'),
1489    ('\u{22d}', '\u{22d}'),
1490    ('\u{22f}', '\u{22f}'),
1491    ('\u{231}', '\u{231}'),
1492    ('\u{233}', '\u{239}'),
1493    ('\u{23c}', '\u{23c}'),
1494    ('\u{23f}', '\u{240}'),
1495    ('\u{242}', '\u{242}'),
1496    ('\u{247}', '\u{247}'),
1497    ('\u{249}', '\u{249}'),
1498    ('\u{24b}', '\u{24b}'),
1499    ('\u{24d}', '\u{24d}'),
1500    ('\u{24f}', '\u{293}'),
1501    ('\u{295}', '\u{2af}'),
1502    ('\u{371}', '\u{371}'),
1503    ('\u{373}', '\u{373}'),
1504    ('\u{377}', '\u{377}'),
1505    ('\u{37b}', '\u{37d}'),
1506    ('\u{390}', '\u{390}'),
1507    ('\u{3ac}', '\u{3ce}'),
1508    ('\u{3d0}', '\u{3d1}'),
1509    ('\u{3d5}', '\u{3d7}'),
1510    ('\u{3d9}', '\u{3d9}'),
1511    ('\u{3db}', '\u{3db}'),
1512    ('\u{3dd}', '\u{3dd}'),
1513    ('\u{3df}', '\u{3df}'),
1514    ('\u{3e1}', '\u{3e1}'),
1515    ('\u{3e3}', '\u{3e3}'),
1516    ('\u{3e5}', '\u{3e5}'),
1517    ('\u{3e7}', '\u{3e7}'),
1518    ('\u{3e9}', '\u{3e9}'),
1519    ('\u{3eb}', '\u{3eb}'),
1520    ('\u{3ed}', '\u{3ed}'),
1521    ('\u{3ef}', '\u{3f3}'),
1522    ('\u{3f5}', '\u{3f5}'),
1523    ('\u{3f8}', '\u{3f8}'),
1524    ('\u{3fb}', '\u{3fc}'),
1525    ('\u{430}', '\u{45f}'),
1526    ('\u{461}', '\u{461}'),
1527    ('\u{463}', '\u{463}'),
1528    ('\u{465}', '\u{465}'),
1529    ('\u{467}', '\u{467}'),
1530    ('\u{469}', '\u{469}'),
1531    ('\u{46b}', '\u{46b}'),
1532    ('\u{46d}', '\u{46d}'),
1533    ('\u{46f}', '\u{46f}'),
1534    ('\u{471}', '\u{471}'),
1535    ('\u{473}', '\u{473}'),
1536    ('\u{475}', '\u{475}'),
1537    ('\u{477}', '\u{477}'),
1538    ('\u{479}', '\u{479}'),
1539    ('\u{47b}', '\u{47b}'),
1540    ('\u{47d}', '\u{47d}'),
1541    ('\u{47f}', '\u{47f}'),
1542    ('\u{481}', '\u{481}'),
1543    ('\u{48b}', '\u{48b}'),
1544    ('\u{48d}', '\u{48d}'),
1545    ('\u{48f}', '\u{48f}'),
1546    ('\u{491}', '\u{491}'),
1547    ('\u{493}', '\u{493}'),
1548    ('\u{495}', '\u{495}'),
1549    ('\u{497}', '\u{497}'),
1550    ('\u{499}', '\u{499}'),
1551    ('\u{49b}', '\u{49b}'),
1552    ('\u{49d}', '\u{49d}'),
1553    ('\u{49f}', '\u{49f}'),
1554    ('\u{4a1}', '\u{4a1}'),
1555    ('\u{4a3}', '\u{4a3}'),
1556    ('\u{4a5}', '\u{4a5}'),
1557    ('\u{4a7}', '\u{4a7}'),
1558    ('\u{4a9}', '\u{4a9}'),
1559    ('\u{4ab}', '\u{4ab}'),
1560    ('\u{4ad}', '\u{4ad}'),
1561    ('\u{4af}', '\u{4af}'),
1562    ('\u{4b1}', '\u{4b1}'),
1563    ('\u{4b3}', '\u{4b3}'),
1564    ('\u{4b5}', '\u{4b5}'),
1565    ('\u{4b7}', '\u{4b7}'),
1566    ('\u{4b9}', '\u{4b9}'),
1567    ('\u{4bb}', '\u{4bb}'),
1568    ('\u{4bd}', '\u{4bd}'),
1569    ('\u{4bf}', '\u{4bf}'),
1570    ('\u{4c2}', '\u{4c2}'),
1571    ('\u{4c4}', '\u{4c4}'),
1572    ('\u{4c6}', '\u{4c6}'),
1573    ('\u{4c8}', '\u{4c8}'),
1574    ('\u{4ca}', '\u{4ca}'),
1575    ('\u{4cc}', '\u{4cc}'),
1576    ('\u{4ce}', '\u{4cf}'),
1577    ('\u{4d1}', '\u{4d1}'),
1578    ('\u{4d3}', '\u{4d3}'),
1579    ('\u{4d5}', '\u{4d5}'),
1580    ('\u{4d7}', '\u{4d7}'),
1581    ('\u{4d9}', '\u{4d9}'),
1582    ('\u{4db}', '\u{4db}'),
1583    ('\u{4dd}', '\u{4dd}'),
1584    ('\u{4df}', '\u{4df}'),
1585    ('\u{4e1}', '\u{4e1}'),
1586    ('\u{4e3}', '\u{4e3}'),
1587    ('\u{4e5}', '\u{4e5}'),
1588    ('\u{4e7}', '\u{4e7}'),
1589    ('\u{4e9}', '\u{4e9}'),
1590    ('\u{4eb}', '\u{4eb}'),
1591    ('\u{4ed}', '\u{4ed}'),
1592    ('\u{4ef}', '\u{4ef}'),
1593    ('\u{4f1}', '\u{4f1}'),
1594    ('\u{4f3}', '\u{4f3}'),
1595    ('\u{4f5}', '\u{4f5}'),
1596    ('\u{4f7}', '\u{4f7}'),
1597    ('\u{4f9}', '\u{4f9}'),
1598    ('\u{4fb}', '\u{4fb}'),
1599    ('\u{4fd}', '\u{4fd}'),
1600    ('\u{4ff}', '\u{4ff}'),
1601    ('\u{501}', '\u{501}'),
1602    ('\u{503}', '\u{503}'),
1603    ('\u{505}', '\u{505}'),
1604    ('\u{507}', '\u{507}'),
1605    ('\u{509}', '\u{509}'),
1606    ('\u{50b}', '\u{50b}'),
1607    ('\u{50d}', '\u{50d}'),
1608    ('\u{50f}', '\u{50f}'),
1609    ('\u{511}', '\u{511}'),
1610    ('\u{513}', '\u{513}'),
1611    ('\u{515}', '\u{515}'),
1612    ('\u{517}', '\u{517}'),
1613    ('\u{519}', '\u{519}'),
1614    ('\u{51b}', '\u{51b}'),
1615    ('\u{51d}', '\u{51d}'),
1616    ('\u{51f}', '\u{51f}'),
1617    ('\u{521}', '\u{521}'),
1618    ('\u{523}', '\u{523}'),
1619    ('\u{525}', '\u{525}'),
1620    ('\u{527}', '\u{527}'),
1621    ('\u{529}', '\u{529}'),
1622    ('\u{52b}', '\u{52b}'),
1623    ('\u{52d}', '\u{52d}'),
1624    ('\u{52f}', '\u{52f}'),
1625    ('\u{560}', '\u{588}'),
1626    ('\u{10d0}', '\u{10fa}'),
1627    ('\u{10fd}', '\u{10ff}'),
1628    ('\u{13f8}', '\u{13fd}'),
1629    ('\u{1c80}', '\u{1c88}'),
1630    ('\u{1c8a}', '\u{1c8a}'),
1631    ('\u{1d00}', '\u{1d2b}'),
1632    ('\u{1d6b}', '\u{1d77}'),
1633    ('\u{1d79}', '\u{1d9a}'),
1634    ('\u{1e01}', '\u{1e01}'),
1635    ('\u{1e03}', '\u{1e03}'),
1636    ('\u{1e05}', '\u{1e05}'),
1637    ('\u{1e07}', '\u{1e07}'),
1638    ('\u{1e09}', '\u{1e09}'),
1639    ('\u{1e0b}', '\u{1e0b}'),
1640    ('\u{1e0d}', '\u{1e0d}'),
1641    ('\u{1e0f}', '\u{1e0f}'),
1642    ('\u{1e11}', '\u{1e11}'),
1643    ('\u{1e13}', '\u{1e13}'),
1644    ('\u{1e15}', '\u{1e15}'),
1645    ('\u{1e17}', '\u{1e17}'),
1646    ('\u{1e19}', '\u{1e19}'),
1647    ('\u{1e1b}', '\u{1e1b}'),
1648    ('\u{1e1d}', '\u{1e1d}'),
1649    ('\u{1e1f}', '\u{1e1f}'),
1650    ('\u{1e21}', '\u{1e21}'),
1651    ('\u{1e23}', '\u{1e23}'),
1652    ('\u{1e25}', '\u{1e25}'),
1653    ('\u{1e27}', '\u{1e27}'),
1654    ('\u{1e29}', '\u{1e29}'),
1655    ('\u{1e2b}', '\u{1e2b}'),
1656    ('\u{1e2d}', '\u{1e2d}'),
1657    ('\u{1e2f}', '\u{1e2f}'),
1658    ('\u{1e31}', '\u{1e31}'),
1659    ('\u{1e33}', '\u{1e33}'),
1660    ('\u{1e35}', '\u{1e35}'),
1661    ('\u{1e37}', '\u{1e37}'),
1662    ('\u{1e39}', '\u{1e39}'),
1663    ('\u{1e3b}', '\u{1e3b}'),
1664    ('\u{1e3d}', '\u{1e3d}'),
1665    ('\u{1e3f}', '\u{1e3f}'),
1666    ('\u{1e41}', '\u{1e41}'),
1667    ('\u{1e43}', '\u{1e43}'),
1668    ('\u{1e45}', '\u{1e45}'),
1669    ('\u{1e47}', '\u{1e47}'),
1670    ('\u{1e49}', '\u{1e49}'),
1671    ('\u{1e4b}', '\u{1e4b}'),
1672    ('\u{1e4d}', '\u{1e4d}'),
1673    ('\u{1e4f}', '\u{1e4f}'),
1674    ('\u{1e51}', '\u{1e51}'),
1675    ('\u{1e53}', '\u{1e53}'),
1676    ('\u{1e55}', '\u{1e55}'),
1677    ('\u{1e57}', '\u{1e57}'),
1678    ('\u{1e59}', '\u{1e59}'),
1679    ('\u{1e5b}', '\u{1e5b}'),
1680    ('\u{1e5d}', '\u{1e5d}'),
1681    ('\u{1e5f}', '\u{1e5f}'),
1682    ('\u{1e61}', '\u{1e61}'),
1683    ('\u{1e63}', '\u{1e63}'),
1684    ('\u{1e65}', '\u{1e65}'),
1685    ('\u{1e67}', '\u{1e67}'),
1686    ('\u{1e69}', '\u{1e69}'),
1687    ('\u{1e6b}', '\u{1e6b}'),
1688    ('\u{1e6d}', '\u{1e6d}'),
1689    ('\u{1e6f}', '\u{1e6f}'),
1690    ('\u{1e71}', '\u{1e71}'),
1691    ('\u{1e73}', '\u{1e73}'),
1692    ('\u{1e75}', '\u{1e75}'),
1693    ('\u{1e77}', '\u{1e77}'),
1694    ('\u{1e79}', '\u{1e79}'),
1695    ('\u{1e7b}', '\u{1e7b}'),
1696    ('\u{1e7d}', '\u{1e7d}'),
1697    ('\u{1e7f}', '\u{1e7f}'),
1698    ('\u{1e81}', '\u{1e81}'),
1699    ('\u{1e83}', '\u{1e83}'),
1700    ('\u{1e85}', '\u{1e85}'),
1701    ('\u{1e87}', '\u{1e87}'),
1702    ('\u{1e89}', '\u{1e89}'),
1703    ('\u{1e8b}', '\u{1e8b}'),
1704    ('\u{1e8d}', '\u{1e8d}'),
1705    ('\u{1e8f}', '\u{1e8f}'),
1706    ('\u{1e91}', '\u{1e91}'),
1707    ('\u{1e93}', '\u{1e93}'),
1708    ('\u{1e95}', '\u{1e9d}'),
1709    ('\u{1e9f}', '\u{1e9f}'),
1710    ('\u{1ea1}', '\u{1ea1}'),
1711    ('\u{1ea3}', '\u{1ea3}'),
1712    ('\u{1ea5}', '\u{1ea5}'),
1713    ('\u{1ea7}', '\u{1ea7}'),
1714    ('\u{1ea9}', '\u{1ea9}'),
1715    ('\u{1eab}', '\u{1eab}'),
1716    ('\u{1ead}', '\u{1ead}'),
1717    ('\u{1eaf}', '\u{1eaf}'),
1718    ('\u{1eb1}', '\u{1eb1}'),
1719    ('\u{1eb3}', '\u{1eb3}'),
1720    ('\u{1eb5}', '\u{1eb5}'),
1721    ('\u{1eb7}', '\u{1eb7}'),
1722    ('\u{1eb9}', '\u{1eb9}'),
1723    ('\u{1ebb}', '\u{1ebb}'),
1724    ('\u{1ebd}', '\u{1ebd}'),
1725    ('\u{1ebf}', '\u{1ebf}'),
1726    ('\u{1ec1}', '\u{1ec1}'),
1727    ('\u{1ec3}', '\u{1ec3}'),
1728    ('\u{1ec5}', '\u{1ec5}'),
1729    ('\u{1ec7}', '\u{1ec7}'),
1730    ('\u{1ec9}', '\u{1ec9}'),
1731    ('\u{1ecb}', '\u{1ecb}'),
1732    ('\u{1ecd}', '\u{1ecd}'),
1733    ('\u{1ecf}', '\u{1ecf}'),
1734    ('\u{1ed1}', '\u{1ed1}'),
1735    ('\u{1ed3}', '\u{1ed3}'),
1736    ('\u{1ed5}', '\u{1ed5}'),
1737    ('\u{1ed7}', '\u{1ed7}'),
1738    ('\u{1ed9}', '\u{1ed9}'),
1739    ('\u{1edb}', '\u{1edb}'),
1740    ('\u{1edd}', '\u{1edd}'),
1741    ('\u{1edf}', '\u{1edf}'),
1742    ('\u{1ee1}', '\u{1ee1}'),
1743    ('\u{1ee3}', '\u{1ee3}'),
1744    ('\u{1ee5}', '\u{1ee5}'),
1745    ('\u{1ee7}', '\u{1ee7}'),
1746    ('\u{1ee9}', '\u{1ee9}'),
1747    ('\u{1eeb}', '\u{1eeb}'),
1748    ('\u{1eed}', '\u{1eed}'),
1749    ('\u{1eef}', '\u{1eef}'),
1750    ('\u{1ef1}', '\u{1ef1}'),
1751    ('\u{1ef3}', '\u{1ef3}'),
1752    ('\u{1ef5}', '\u{1ef5}'),
1753    ('\u{1ef7}', '\u{1ef7}'),
1754    ('\u{1ef9}', '\u{1ef9}'),
1755    ('\u{1efb}', '\u{1efb}'),
1756    ('\u{1efd}', '\u{1efd}'),
1757    ('\u{1eff}', '\u{1f07}'),
1758    ('\u{1f10}', '\u{1f15}'),
1759    ('\u{1f20}', '\u{1f27}'),
1760    ('\u{1f30}', '\u{1f37}'),
1761    ('\u{1f40}', '\u{1f45}'),
1762    ('\u{1f50}', '\u{1f57}'),
1763    ('\u{1f60}', '\u{1f67}'),
1764    ('\u{1f70}', '\u{1f7d}'),
1765    ('\u{1f80}', '\u{1f87}'),
1766    ('\u{1f90}', '\u{1f97}'),
1767    ('\u{1fa0}', '\u{1fa7}'),
1768    ('\u{1fb0}', '\u{1fb4}'),
1769    ('\u{1fb6}', '\u{1fb7}'),
1770    ('\u{1fbe}', '\u{1fbe}'),
1771    ('\u{1fc2}', '\u{1fc4}'),
1772    ('\u{1fc6}', '\u{1fc7}'),
1773    ('\u{1fd0}', '\u{1fd3}'),
1774    ('\u{1fd6}', '\u{1fd7}'),
1775    ('\u{1fe0}', '\u{1fe7}'),
1776    ('\u{1ff2}', '\u{1ff4}'),
1777    ('\u{1ff6}', '\u{1ff7}'),
1778    ('\u{210a}', '\u{210a}'),
1779    ('\u{210e}', '\u{210f}'),
1780    ('\u{2113}', '\u{2113}'),
1781    ('\u{212f}', '\u{212f}'),
1782    ('\u{2134}', '\u{2134}'),
1783    ('\u{2139}', '\u{2139}'),
1784    ('\u{213c}', '\u{213d}'),
1785    ('\u{2146}', '\u{2149}'),
1786    ('\u{214e}', '\u{214e}'),
1787    ('\u{2184}', '\u{2184}'),
1788    ('\u{2c30}', '\u{2c5f}'),
1789    ('\u{2c61}', '\u{2c61}'),
1790    ('\u{2c65}', '\u{2c66}'),
1791    ('\u{2c68}', '\u{2c68}'),
1792    ('\u{2c6a}', '\u{2c6a}'),
1793    ('\u{2c6c}', '\u{2c6c}'),
1794    ('\u{2c71}', '\u{2c71}'),
1795    ('\u{2c73}', '\u{2c74}'),
1796    ('\u{2c76}', '\u{2c7b}'),
1797    ('\u{2c81}', '\u{2c81}'),
1798    ('\u{2c83}', '\u{2c83}'),
1799    ('\u{2c85}', '\u{2c85}'),
1800    ('\u{2c87}', '\u{2c87}'),
1801    ('\u{2c89}', '\u{2c89}'),
1802    ('\u{2c8b}', '\u{2c8b}'),
1803    ('\u{2c8d}', '\u{2c8d}'),
1804    ('\u{2c8f}', '\u{2c8f}'),
1805    ('\u{2c91}', '\u{2c91}'),
1806    ('\u{2c93}', '\u{2c93}'),
1807    ('\u{2c95}', '\u{2c95}'),
1808    ('\u{2c97}', '\u{2c97}'),
1809    ('\u{2c99}', '\u{2c99}'),
1810    ('\u{2c9b}', '\u{2c9b}'),
1811    ('\u{2c9d}', '\u{2c9d}'),
1812    ('\u{2c9f}', '\u{2c9f}'),
1813    ('\u{2ca1}', '\u{2ca1}'),
1814    ('\u{2ca3}', '\u{2ca3}'),
1815    ('\u{2ca5}', '\u{2ca5}'),
1816    ('\u{2ca7}', '\u{2ca7}'),
1817    ('\u{2ca9}', '\u{2ca9}'),
1818    ('\u{2cab}', '\u{2cab}'),
1819    ('\u{2cad}', '\u{2cad}'),
1820    ('\u{2caf}', '\u{2caf}'),
1821    ('\u{2cb1}', '\u{2cb1}'),
1822    ('\u{2cb3}', '\u{2cb3}'),
1823    ('\u{2cb5}', '\u{2cb5}'),
1824    ('\u{2cb7}', '\u{2cb7}'),
1825    ('\u{2cb9}', '\u{2cb9}'),
1826    ('\u{2cbb}', '\u{2cbb}'),
1827    ('\u{2cbd}', '\u{2cbd}'),
1828    ('\u{2cbf}', '\u{2cbf}'),
1829    ('\u{2cc1}', '\u{2cc1}'),
1830    ('\u{2cc3}', '\u{2cc3}'),
1831    ('\u{2cc5}', '\u{2cc5}'),
1832    ('\u{2cc7}', '\u{2cc7}'),
1833    ('\u{2cc9}', '\u{2cc9}'),
1834    ('\u{2ccb}', '\u{2ccb}'),
1835    ('\u{2ccd}', '\u{2ccd}'),
1836    ('\u{2ccf}', '\u{2ccf}'),
1837    ('\u{2cd1}', '\u{2cd1}'),
1838    ('\u{2cd3}', '\u{2cd3}'),
1839    ('\u{2cd5}', '\u{2cd5}'),
1840    ('\u{2cd7}', '\u{2cd7}'),
1841    ('\u{2cd9}', '\u{2cd9}'),
1842    ('\u{2cdb}', '\u{2cdb}'),
1843    ('\u{2cdd}', '\u{2cdd}'),
1844    ('\u{2cdf}', '\u{2cdf}'),
1845    ('\u{2ce1}', '\u{2ce1}'),
1846    ('\u{2ce3}', '\u{2ce4}'),
1847    ('\u{2cec}', '\u{2cec}'),
1848    ('\u{2cee}', '\u{2cee}'),
1849    ('\u{2cf3}', '\u{2cf3}'),
1850    ('\u{2d00}', '\u{2d25}'),
1851    ('\u{2d27}', '\u{2d27}'),
1852    ('\u{2d2d}', '\u{2d2d}'),
1853    ('\u{a641}', '\u{a641}'),
1854    ('\u{a643}', '\u{a643}'),
1855    ('\u{a645}', '\u{a645}'),
1856    ('\u{a647}', '\u{a647}'),
1857    ('\u{a649}', '\u{a649}'),
1858    ('\u{a64b}', '\u{a64b}'),
1859    ('\u{a64d}', '\u{a64d}'),
1860    ('\u{a64f}', '\u{a64f}'),
1861    ('\u{a651}', '\u{a651}'),
1862    ('\u{a653}', '\u{a653}'),
1863    ('\u{a655}', '\u{a655}'),
1864    ('\u{a657}', '\u{a657}'),
1865    ('\u{a659}', '\u{a659}'),
1866    ('\u{a65b}', '\u{a65b}'),
1867    ('\u{a65d}', '\u{a65d}'),
1868    ('\u{a65f}', '\u{a65f}'),
1869    ('\u{a661}', '\u{a661}'),
1870    ('\u{a663}', '\u{a663}'),
1871    ('\u{a665}', '\u{a665}'),
1872    ('\u{a667}', '\u{a667}'),
1873    ('\u{a669}', '\u{a669}'),
1874    ('\u{a66b}', '\u{a66b}'),
1875    ('\u{a66d}', '\u{a66d}'),
1876    ('\u{a681}', '\u{a681}'),
1877    ('\u{a683}', '\u{a683}'),
1878    ('\u{a685}', '\u{a685}'),
1879    ('\u{a687}', '\u{a687}'),
1880    ('\u{a689}', '\u{a689}'),
1881    ('\u{a68b}', '\u{a68b}'),
1882    ('\u{a68d}', '\u{a68d}'),
1883    ('\u{a68f}', '\u{a68f}'),
1884    ('\u{a691}', '\u{a691}'),
1885    ('\u{a693}', '\u{a693}'),
1886    ('\u{a695}', '\u{a695}'),
1887    ('\u{a697}', '\u{a697}'),
1888    ('\u{a699}', '\u{a699}'),
1889    ('\u{a69b}', '\u{a69b}'),
1890    ('\u{a723}', '\u{a723}'),
1891    ('\u{a725}', '\u{a725}'),
1892    ('\u{a727}', '\u{a727}'),
1893    ('\u{a729}', '\u{a729}'),
1894    ('\u{a72b}', '\u{a72b}'),
1895    ('\u{a72d}', '\u{a72d}'),
1896    ('\u{a72f}', '\u{a731}'),
1897    ('\u{a733}', '\u{a733}'),
1898    ('\u{a735}', '\u{a735}'),
1899    ('\u{a737}', '\u{a737}'),
1900    ('\u{a739}', '\u{a739}'),
1901    ('\u{a73b}', '\u{a73b}'),
1902    ('\u{a73d}', '\u{a73d}'),
1903    ('\u{a73f}', '\u{a73f}'),
1904    ('\u{a741}', '\u{a741}'),
1905    ('\u{a743}', '\u{a743}'),
1906    ('\u{a745}', '\u{a745}'),
1907    ('\u{a747}', '\u{a747}'),
1908    ('\u{a749}', '\u{a749}'),
1909    ('\u{a74b}', '\u{a74b}'),
1910    ('\u{a74d}', '\u{a74d}'),
1911    ('\u{a74f}', '\u{a74f}'),
1912    ('\u{a751}', '\u{a751}'),
1913    ('\u{a753}', '\u{a753}'),
1914    ('\u{a755}', '\u{a755}'),
1915    ('\u{a757}', '\u{a757}'),
1916    ('\u{a759}', '\u{a759}'),
1917    ('\u{a75b}', '\u{a75b}'),
1918    ('\u{a75d}', '\u{a75d}'),
1919    ('\u{a75f}', '\u{a75f}'),
1920    ('\u{a761}', '\u{a761}'),
1921    ('\u{a763}', '\u{a763}'),
1922    ('\u{a765}', '\u{a765}'),
1923    ('\u{a767}', '\u{a767}'),
1924    ('\u{a769}', '\u{a769}'),
1925    ('\u{a76b}', '\u{a76b}'),
1926    ('\u{a76d}', '\u{a76d}'),
1927    ('\u{a76f}', '\u{a76f}'),
1928    ('\u{a771}', '\u{a778}'),
1929    ('\u{a77a}', '\u{a77a}'),
1930    ('\u{a77c}', '\u{a77c}'),
1931    ('\u{a77f}', '\u{a77f}'),
1932    ('\u{a781}', '\u{a781}'),
1933    ('\u{a783}', '\u{a783}'),
1934    ('\u{a785}', '\u{a785}'),
1935    ('\u{a787}', '\u{a787}'),
1936    ('\u{a78c}', '\u{a78c}'),
1937    ('\u{a78e}', '\u{a78e}'),
1938    ('\u{a791}', '\u{a791}'),
1939    ('\u{a793}', '\u{a795}'),
1940    ('\u{a797}', '\u{a797}'),
1941    ('\u{a799}', '\u{a799}'),
1942    ('\u{a79b}', '\u{a79b}'),
1943    ('\u{a79d}', '\u{a79d}'),
1944    ('\u{a79f}', '\u{a79f}'),
1945    ('\u{a7a1}', '\u{a7a1}'),
1946    ('\u{a7a3}', '\u{a7a3}'),
1947    ('\u{a7a5}', '\u{a7a5}'),
1948    ('\u{a7a7}', '\u{a7a7}'),
1949    ('\u{a7a9}', '\u{a7a9}'),
1950    ('\u{a7af}', '\u{a7af}'),
1951    ('\u{a7b5}', '\u{a7b5}'),
1952    ('\u{a7b7}', '\u{a7b7}'),
1953    ('\u{a7b9}', '\u{a7b9}'),
1954    ('\u{a7bb}', '\u{a7bb}'),
1955    ('\u{a7bd}', '\u{a7bd}'),
1956    ('\u{a7bf}', '\u{a7bf}'),
1957    ('\u{a7c1}', '\u{a7c1}'),
1958    ('\u{a7c3}', '\u{a7c3}'),
1959    ('\u{a7c8}', '\u{a7c8}'),
1960    ('\u{a7ca}', '\u{a7ca}'),
1961    ('\u{a7cd}', '\u{a7cd}'),
1962    ('\u{a7d1}', '\u{a7d1}'),
1963    ('\u{a7d3}', '\u{a7d3}'),
1964    ('\u{a7d5}', '\u{a7d5}'),
1965    ('\u{a7d7}', '\u{a7d7}'),
1966    ('\u{a7d9}', '\u{a7d9}'),
1967    ('\u{a7db}', '\u{a7db}'),
1968    ('\u{a7f6}', '\u{a7f6}'),
1969    ('\u{a7fa}', '\u{a7fa}'),
1970    ('\u{ab30}', '\u{ab5a}'),
1971    ('\u{ab60}', '\u{ab68}'),
1972    ('\u{ab70}', '\u{abbf}'),
1973    ('\u{fb00}', '\u{fb06}'),
1974    ('\u{fb13}', '\u{fb17}'),
1975    ('\u{ff41}', '\u{ff5a}'),
1976    ('\u{10428}', '\u{1044f}'),
1977    ('\u{104d8}', '\u{104fb}'),
1978    ('\u{10597}', '\u{105a1}'),
1979    ('\u{105a3}', '\u{105b1}'),
1980    ('\u{105b3}', '\u{105b9}'),
1981    ('\u{105bb}', '\u{105bc}'),
1982    ('\u{10cc0}', '\u{10cf2}'),
1983    ('\u{10d70}', '\u{10d85}'),
1984    ('\u{118c0}', '\u{118df}'),
1985    ('\u{16e60}', '\u{16e7f}'),
1986    ('\u{1d41a}', '\u{1d433}'),
1987    ('\u{1d44e}', '\u{1d454}'),
1988    ('\u{1d456}', '\u{1d467}'),
1989    ('\u{1d482}', '\u{1d49b}'),
1990    ('\u{1d4b6}', '\u{1d4b9}'),
1991    ('\u{1d4bb}', '\u{1d4bb}'),
1992    ('\u{1d4bd}', '\u{1d4c3}'),
1993    ('\u{1d4c5}', '\u{1d4cf}'),
1994    ('\u{1d4ea}', '\u{1d503}'),
1995    ('\u{1d51e}', '\u{1d537}'),
1996    ('\u{1d552}', '\u{1d56b}'),
1997    ('\u{1d586}', '\u{1d59f}'),
1998    ('\u{1d5ba}', '\u{1d5d3}'),
1999    ('\u{1d5ee}', '\u{1d607}'),
2000    ('\u{1d622}', '\u{1d63b}'),
2001    ('\u{1d656}', '\u{1d66f}'),
2002    ('\u{1d68a}', '\u{1d6a5}'),
2003    ('\u{1d6c2}', '\u{1d6da}'),
2004    ('\u{1d6dc}', '\u{1d6e1}'),
2005    ('\u{1d6fc}', '\u{1d714}'),
2006    ('\u{1d716}', '\u{1d71b}'),
2007    ('\u{1d736}', '\u{1d74e}'),
2008    ('\u{1d750}', '\u{1d755}'),
2009    ('\u{1d770}', '\u{1d788}'),
2010    ('\u{1d78a}', '\u{1d78f}'),
2011    ('\u{1d7aa}', '\u{1d7c2}'),
2012    ('\u{1d7c4}', '\u{1d7c9}'),
2013    ('\u{1d7cb}', '\u{1d7cb}'),
2014    ('\u{1df00}', '\u{1df09}'),
2015    ('\u{1df0b}', '\u{1df1e}'),
2016    ('\u{1df25}', '\u{1df2a}'),
2017    ('\u{1e922}', '\u{1e943}'),
2018];
2019
2020pub fn alternate_general_category_ll() -> ASTNode<char> {
2021    ASTNode::alternate_all(GENERAL_CATEGORY_LL.iter().copied()).unwrap()
2022}
2023
2024pub fn negate_general_category_ll() -> ASTNode<char> {
2025    ASTNode::negate_all(GENERAL_CATEGORY_LL.iter().copied()).unwrap()
2026}
2027
2028pub const GENERAL_CATEGORY_SO: &[(char, char)] = &[
2029    ('\u{a6}', '\u{a6}'),
2030    ('\u{a9}', '\u{a9}'),
2031    ('\u{ae}', '\u{ae}'),
2032    ('\u{b0}', '\u{b0}'),
2033    ('\u{482}', '\u{482}'),
2034    ('\u{58d}', '\u{58e}'),
2035    ('\u{60e}', '\u{60f}'),
2036    ('\u{6de}', '\u{6de}'),
2037    ('\u{6e9}', '\u{6e9}'),
2038    ('\u{6fd}', '\u{6fe}'),
2039    ('\u{7f6}', '\u{7f6}'),
2040    ('\u{9fa}', '\u{9fa}'),
2041    ('\u{b70}', '\u{b70}'),
2042    ('\u{bf3}', '\u{bf8}'),
2043    ('\u{bfa}', '\u{bfa}'),
2044    ('\u{c7f}', '\u{c7f}'),
2045    ('\u{d4f}', '\u{d4f}'),
2046    ('\u{d79}', '\u{d79}'),
2047    ('\u{f01}', '\u{f03}'),
2048    ('\u{f13}', '\u{f13}'),
2049    ('\u{f15}', '\u{f17}'),
2050    ('\u{f1a}', '\u{f1f}'),
2051    ('\u{f34}', '\u{f34}'),
2052    ('\u{f36}', '\u{f36}'),
2053    ('\u{f38}', '\u{f38}'),
2054    ('\u{fbe}', '\u{fc5}'),
2055    ('\u{fc7}', '\u{fcc}'),
2056    ('\u{fce}', '\u{fcf}'),
2057    ('\u{fd5}', '\u{fd8}'),
2058    ('\u{109e}', '\u{109f}'),
2059    ('\u{1390}', '\u{1399}'),
2060    ('\u{166d}', '\u{166d}'),
2061    ('\u{1940}', '\u{1940}'),
2062    ('\u{19de}', '\u{19ff}'),
2063    ('\u{1b61}', '\u{1b6a}'),
2064    ('\u{1b74}', '\u{1b7c}'),
2065    ('\u{2100}', '\u{2101}'),
2066    ('\u{2103}', '\u{2106}'),
2067    ('\u{2108}', '\u{2109}'),
2068    ('\u{2114}', '\u{2114}'),
2069    ('\u{2116}', '\u{2117}'),
2070    ('\u{211e}', '\u{2123}'),
2071    ('\u{2125}', '\u{2125}'),
2072    ('\u{2127}', '\u{2127}'),
2073    ('\u{2129}', '\u{2129}'),
2074    ('\u{212e}', '\u{212e}'),
2075    ('\u{213a}', '\u{213b}'),
2076    ('\u{214a}', '\u{214a}'),
2077    ('\u{214c}', '\u{214d}'),
2078    ('\u{214f}', '\u{214f}'),
2079    ('\u{218a}', '\u{218b}'),
2080    ('\u{2195}', '\u{2199}'),
2081    ('\u{219c}', '\u{219f}'),
2082    ('\u{21a1}', '\u{21a2}'),
2083    ('\u{21a4}', '\u{21a5}'),
2084    ('\u{21a7}', '\u{21ad}'),
2085    ('\u{21af}', '\u{21cd}'),
2086    ('\u{21d0}', '\u{21d1}'),
2087    ('\u{21d3}', '\u{21d3}'),
2088    ('\u{21d5}', '\u{21f3}'),
2089    ('\u{2300}', '\u{2307}'),
2090    ('\u{230c}', '\u{231f}'),
2091    ('\u{2322}', '\u{2328}'),
2092    ('\u{232b}', '\u{237b}'),
2093    ('\u{237d}', '\u{239a}'),
2094    ('\u{23b4}', '\u{23db}'),
2095    ('\u{23e2}', '\u{2429}'),
2096    ('\u{2440}', '\u{244a}'),
2097    ('\u{249c}', '\u{24e9}'),
2098    ('\u{2500}', '\u{25b6}'),
2099    ('\u{25b8}', '\u{25c0}'),
2100    ('\u{25c2}', '\u{25f7}'),
2101    ('\u{2600}', '\u{266e}'),
2102    ('\u{2670}', '\u{2767}'),
2103    ('\u{2794}', '\u{27bf}'),
2104    ('\u{2800}', '\u{28ff}'),
2105    ('\u{2b00}', '\u{2b2f}'),
2106    ('\u{2b45}', '\u{2b46}'),
2107    ('\u{2b4d}', '\u{2b73}'),
2108    ('\u{2b76}', '\u{2b95}'),
2109    ('\u{2b97}', '\u{2bff}'),
2110    ('\u{2ce5}', '\u{2cea}'),
2111    ('\u{2e50}', '\u{2e51}'),
2112    ('\u{2e80}', '\u{2e99}'),
2113    ('\u{2e9b}', '\u{2ef3}'),
2114    ('\u{2f00}', '\u{2fd5}'),
2115    ('\u{2ff0}', '\u{2fff}'),
2116    ('\u{3004}', '\u{3004}'),
2117    ('\u{3012}', '\u{3013}'),
2118    ('\u{3020}', '\u{3020}'),
2119    ('\u{3036}', '\u{3037}'),
2120    ('\u{303e}', '\u{303f}'),
2121    ('\u{3190}', '\u{3191}'),
2122    ('\u{3196}', '\u{319f}'),
2123    ('\u{31c0}', '\u{31e5}'),
2124    ('\u{31ef}', '\u{31ef}'),
2125    ('\u{3200}', '\u{321e}'),
2126    ('\u{322a}', '\u{3247}'),
2127    ('\u{3250}', '\u{3250}'),
2128    ('\u{3260}', '\u{327f}'),
2129    ('\u{328a}', '\u{32b0}'),
2130    ('\u{32c0}', '\u{33ff}'),
2131    ('\u{4dc0}', '\u{4dff}'),
2132    ('\u{a490}', '\u{a4c6}'),
2133    ('\u{a828}', '\u{a82b}'),
2134    ('\u{a836}', '\u{a837}'),
2135    ('\u{a839}', '\u{a839}'),
2136    ('\u{aa77}', '\u{aa79}'),
2137    ('\u{fd40}', '\u{fd4f}'),
2138    ('\u{fdcf}', '\u{fdcf}'),
2139    ('\u{fdfd}', '\u{fdff}'),
2140    ('\u{ffe4}', '\u{ffe4}'),
2141    ('\u{ffe8}', '\u{ffe8}'),
2142    ('\u{ffed}', '\u{ffee}'),
2143    ('\u{fffc}', '\u{fffd}'),
2144    ('\u{10137}', '\u{1013f}'),
2145    ('\u{10179}', '\u{10189}'),
2146    ('\u{1018c}', '\u{1018e}'),
2147    ('\u{10190}', '\u{1019c}'),
2148    ('\u{101a0}', '\u{101a0}'),
2149    ('\u{101d0}', '\u{101fc}'),
2150    ('\u{10877}', '\u{10878}'),
2151    ('\u{10ac8}', '\u{10ac8}'),
2152    ('\u{1173f}', '\u{1173f}'),
2153    ('\u{11fd5}', '\u{11fdc}'),
2154    ('\u{11fe1}', '\u{11ff1}'),
2155    ('\u{16b3c}', '\u{16b3f}'),
2156    ('\u{16b45}', '\u{16b45}'),
2157    ('\u{1bc9c}', '\u{1bc9c}'),
2158    ('\u{1cc00}', '\u{1ccef}'),
2159    ('\u{1cd00}', '\u{1ceb3}'),
2160    ('\u{1cf50}', '\u{1cfc3}'),
2161    ('\u{1d000}', '\u{1d0f5}'),
2162    ('\u{1d100}', '\u{1d126}'),
2163    ('\u{1d129}', '\u{1d164}'),
2164    ('\u{1d16a}', '\u{1d16c}'),
2165    ('\u{1d183}', '\u{1d184}'),
2166    ('\u{1d18c}', '\u{1d1a9}'),
2167    ('\u{1d1ae}', '\u{1d1ea}'),
2168    ('\u{1d200}', '\u{1d241}'),
2169    ('\u{1d245}', '\u{1d245}'),
2170    ('\u{1d300}', '\u{1d356}'),
2171    ('\u{1d800}', '\u{1d9ff}'),
2172    ('\u{1da37}', '\u{1da3a}'),
2173    ('\u{1da6d}', '\u{1da74}'),
2174    ('\u{1da76}', '\u{1da83}'),
2175    ('\u{1da85}', '\u{1da86}'),
2176    ('\u{1e14f}', '\u{1e14f}'),
2177    ('\u{1ecac}', '\u{1ecac}'),
2178    ('\u{1ed2e}', '\u{1ed2e}'),
2179    ('\u{1f000}', '\u{1f02b}'),
2180    ('\u{1f030}', '\u{1f093}'),
2181    ('\u{1f0a0}', '\u{1f0ae}'),
2182    ('\u{1f0b1}', '\u{1f0bf}'),
2183    ('\u{1f0c1}', '\u{1f0cf}'),
2184    ('\u{1f0d1}', '\u{1f0f5}'),
2185    ('\u{1f10d}', '\u{1f1ad}'),
2186    ('\u{1f1e6}', '\u{1f202}'),
2187    ('\u{1f210}', '\u{1f23b}'),
2188    ('\u{1f240}', '\u{1f248}'),
2189    ('\u{1f250}', '\u{1f251}'),
2190    ('\u{1f260}', '\u{1f265}'),
2191    ('\u{1f300}', '\u{1f3fa}'),
2192    ('\u{1f400}', '\u{1f6d7}'),
2193    ('\u{1f6dc}', '\u{1f6ec}'),
2194    ('\u{1f6f0}', '\u{1f6fc}'),
2195    ('\u{1f700}', '\u{1f776}'),
2196    ('\u{1f77b}', '\u{1f7d9}'),
2197    ('\u{1f7e0}', '\u{1f7eb}'),
2198    ('\u{1f7f0}', '\u{1f7f0}'),
2199    ('\u{1f800}', '\u{1f80b}'),
2200    ('\u{1f810}', '\u{1f847}'),
2201    ('\u{1f850}', '\u{1f859}'),
2202    ('\u{1f860}', '\u{1f887}'),
2203    ('\u{1f890}', '\u{1f8ad}'),
2204    ('\u{1f8b0}', '\u{1f8bb}'),
2205    ('\u{1f8c0}', '\u{1f8c1}'),
2206    ('\u{1f900}', '\u{1fa53}'),
2207    ('\u{1fa60}', '\u{1fa6d}'),
2208    ('\u{1fa70}', '\u{1fa7c}'),
2209    ('\u{1fa80}', '\u{1fa89}'),
2210    ('\u{1fa8f}', '\u{1fac6}'),
2211    ('\u{1face}', '\u{1fadc}'),
2212    ('\u{1fadf}', '\u{1fae9}'),
2213    ('\u{1faf0}', '\u{1faf8}'),
2214    ('\u{1fb00}', '\u{1fb92}'),
2215    ('\u{1fb94}', '\u{1fbef}'),
2216];
2217
2218pub fn alternate_general_category_so() -> ASTNode<char> {
2219    ASTNode::alternate_all(GENERAL_CATEGORY_SO.iter().copied()).unwrap()
2220}
2221
2222pub fn negate_general_category_so() -> ASTNode<char> {
2223    ASTNode::negate_all(GENERAL_CATEGORY_SO.iter().copied()).unwrap()
2224}
2225
2226pub const GENERAL_CATEGORY_LO: &[(char, char)] = &[
2227    ('\u{aa}', '\u{aa}'),
2228    ('\u{ba}', '\u{ba}'),
2229    ('\u{1bb}', '\u{1bb}'),
2230    ('\u{1c0}', '\u{1c3}'),
2231    ('\u{294}', '\u{294}'),
2232    ('\u{5d0}', '\u{5ea}'),
2233    ('\u{5ef}', '\u{5f2}'),
2234    ('\u{620}', '\u{63f}'),
2235    ('\u{641}', '\u{64a}'),
2236    ('\u{66e}', '\u{66f}'),
2237    ('\u{671}', '\u{6d3}'),
2238    ('\u{6d5}', '\u{6d5}'),
2239    ('\u{6ee}', '\u{6ef}'),
2240    ('\u{6fa}', '\u{6fc}'),
2241    ('\u{6ff}', '\u{6ff}'),
2242    ('\u{710}', '\u{710}'),
2243    ('\u{712}', '\u{72f}'),
2244    ('\u{74d}', '\u{7a5}'),
2245    ('\u{7b1}', '\u{7b1}'),
2246    ('\u{7ca}', '\u{7ea}'),
2247    ('\u{800}', '\u{815}'),
2248    ('\u{840}', '\u{858}'),
2249    ('\u{860}', '\u{86a}'),
2250    ('\u{870}', '\u{887}'),
2251    ('\u{889}', '\u{88e}'),
2252    ('\u{8a0}', '\u{8c8}'),
2253    ('\u{904}', '\u{939}'),
2254    ('\u{93d}', '\u{93d}'),
2255    ('\u{950}', '\u{950}'),
2256    ('\u{958}', '\u{961}'),
2257    ('\u{972}', '\u{980}'),
2258    ('\u{985}', '\u{98c}'),
2259    ('\u{98f}', '\u{990}'),
2260    ('\u{993}', '\u{9a8}'),
2261    ('\u{9aa}', '\u{9b0}'),
2262    ('\u{9b2}', '\u{9b2}'),
2263    ('\u{9b6}', '\u{9b9}'),
2264    ('\u{9bd}', '\u{9bd}'),
2265    ('\u{9ce}', '\u{9ce}'),
2266    ('\u{9dc}', '\u{9dd}'),
2267    ('\u{9df}', '\u{9e1}'),
2268    ('\u{9f0}', '\u{9f1}'),
2269    ('\u{9fc}', '\u{9fc}'),
2270    ('\u{a05}', '\u{a0a}'),
2271    ('\u{a0f}', '\u{a10}'),
2272    ('\u{a13}', '\u{a28}'),
2273    ('\u{a2a}', '\u{a30}'),
2274    ('\u{a32}', '\u{a33}'),
2275    ('\u{a35}', '\u{a36}'),
2276    ('\u{a38}', '\u{a39}'),
2277    ('\u{a59}', '\u{a5c}'),
2278    ('\u{a5e}', '\u{a5e}'),
2279    ('\u{a72}', '\u{a74}'),
2280    ('\u{a85}', '\u{a8d}'),
2281    ('\u{a8f}', '\u{a91}'),
2282    ('\u{a93}', '\u{aa8}'),
2283    ('\u{aaa}', '\u{ab0}'),
2284    ('\u{ab2}', '\u{ab3}'),
2285    ('\u{ab5}', '\u{ab9}'),
2286    ('\u{abd}', '\u{abd}'),
2287    ('\u{ad0}', '\u{ad0}'),
2288    ('\u{ae0}', '\u{ae1}'),
2289    ('\u{af9}', '\u{af9}'),
2290    ('\u{b05}', '\u{b0c}'),
2291    ('\u{b0f}', '\u{b10}'),
2292    ('\u{b13}', '\u{b28}'),
2293    ('\u{b2a}', '\u{b30}'),
2294    ('\u{b32}', '\u{b33}'),
2295    ('\u{b35}', '\u{b39}'),
2296    ('\u{b3d}', '\u{b3d}'),
2297    ('\u{b5c}', '\u{b5d}'),
2298    ('\u{b5f}', '\u{b61}'),
2299    ('\u{b71}', '\u{b71}'),
2300    ('\u{b83}', '\u{b83}'),
2301    ('\u{b85}', '\u{b8a}'),
2302    ('\u{b8e}', '\u{b90}'),
2303    ('\u{b92}', '\u{b95}'),
2304    ('\u{b99}', '\u{b9a}'),
2305    ('\u{b9c}', '\u{b9c}'),
2306    ('\u{b9e}', '\u{b9f}'),
2307    ('\u{ba3}', '\u{ba4}'),
2308    ('\u{ba8}', '\u{baa}'),
2309    ('\u{bae}', '\u{bb9}'),
2310    ('\u{bd0}', '\u{bd0}'),
2311    ('\u{c05}', '\u{c0c}'),
2312    ('\u{c0e}', '\u{c10}'),
2313    ('\u{c12}', '\u{c28}'),
2314    ('\u{c2a}', '\u{c39}'),
2315    ('\u{c3d}', '\u{c3d}'),
2316    ('\u{c58}', '\u{c5a}'),
2317    ('\u{c5d}', '\u{c5d}'),
2318    ('\u{c60}', '\u{c61}'),
2319    ('\u{c80}', '\u{c80}'),
2320    ('\u{c85}', '\u{c8c}'),
2321    ('\u{c8e}', '\u{c90}'),
2322    ('\u{c92}', '\u{ca8}'),
2323    ('\u{caa}', '\u{cb3}'),
2324    ('\u{cb5}', '\u{cb9}'),
2325    ('\u{cbd}', '\u{cbd}'),
2326    ('\u{cdd}', '\u{cde}'),
2327    ('\u{ce0}', '\u{ce1}'),
2328    ('\u{cf1}', '\u{cf2}'),
2329    ('\u{d04}', '\u{d0c}'),
2330    ('\u{d0e}', '\u{d10}'),
2331    ('\u{d12}', '\u{d3a}'),
2332    ('\u{d3d}', '\u{d3d}'),
2333    ('\u{d4e}', '\u{d4e}'),
2334    ('\u{d54}', '\u{d56}'),
2335    ('\u{d5f}', '\u{d61}'),
2336    ('\u{d7a}', '\u{d7f}'),
2337    ('\u{d85}', '\u{d96}'),
2338    ('\u{d9a}', '\u{db1}'),
2339    ('\u{db3}', '\u{dbb}'),
2340    ('\u{dbd}', '\u{dbd}'),
2341    ('\u{dc0}', '\u{dc6}'),
2342    ('\u{e01}', '\u{e30}'),
2343    ('\u{e32}', '\u{e33}'),
2344    ('\u{e40}', '\u{e45}'),
2345    ('\u{e81}', '\u{e82}'),
2346    ('\u{e84}', '\u{e84}'),
2347    ('\u{e86}', '\u{e8a}'),
2348    ('\u{e8c}', '\u{ea3}'),
2349    ('\u{ea5}', '\u{ea5}'),
2350    ('\u{ea7}', '\u{eb0}'),
2351    ('\u{eb2}', '\u{eb3}'),
2352    ('\u{ebd}', '\u{ebd}'),
2353    ('\u{ec0}', '\u{ec4}'),
2354    ('\u{edc}', '\u{edf}'),
2355    ('\u{f00}', '\u{f00}'),
2356    ('\u{f40}', '\u{f47}'),
2357    ('\u{f49}', '\u{f6c}'),
2358    ('\u{f88}', '\u{f8c}'),
2359    ('\u{1000}', '\u{102a}'),
2360    ('\u{103f}', '\u{103f}'),
2361    ('\u{1050}', '\u{1055}'),
2362    ('\u{105a}', '\u{105d}'),
2363    ('\u{1061}', '\u{1061}'),
2364    ('\u{1065}', '\u{1066}'),
2365    ('\u{106e}', '\u{1070}'),
2366    ('\u{1075}', '\u{1081}'),
2367    ('\u{108e}', '\u{108e}'),
2368    ('\u{1100}', '\u{1248}'),
2369    ('\u{124a}', '\u{124d}'),
2370    ('\u{1250}', '\u{1256}'),
2371    ('\u{1258}', '\u{1258}'),
2372    ('\u{125a}', '\u{125d}'),
2373    ('\u{1260}', '\u{1288}'),
2374    ('\u{128a}', '\u{128d}'),
2375    ('\u{1290}', '\u{12b0}'),
2376    ('\u{12b2}', '\u{12b5}'),
2377    ('\u{12b8}', '\u{12be}'),
2378    ('\u{12c0}', '\u{12c0}'),
2379    ('\u{12c2}', '\u{12c5}'),
2380    ('\u{12c8}', '\u{12d6}'),
2381    ('\u{12d8}', '\u{1310}'),
2382    ('\u{1312}', '\u{1315}'),
2383    ('\u{1318}', '\u{135a}'),
2384    ('\u{1380}', '\u{138f}'),
2385    ('\u{1401}', '\u{166c}'),
2386    ('\u{166f}', '\u{167f}'),
2387    ('\u{1681}', '\u{169a}'),
2388    ('\u{16a0}', '\u{16ea}'),
2389    ('\u{16f1}', '\u{16f8}'),
2390    ('\u{1700}', '\u{1711}'),
2391    ('\u{171f}', '\u{1731}'),
2392    ('\u{1740}', '\u{1751}'),
2393    ('\u{1760}', '\u{176c}'),
2394    ('\u{176e}', '\u{1770}'),
2395    ('\u{1780}', '\u{17b3}'),
2396    ('\u{17dc}', '\u{17dc}'),
2397    ('\u{1820}', '\u{1842}'),
2398    ('\u{1844}', '\u{1878}'),
2399    ('\u{1880}', '\u{1884}'),
2400    ('\u{1887}', '\u{18a8}'),
2401    ('\u{18aa}', '\u{18aa}'),
2402    ('\u{18b0}', '\u{18f5}'),
2403    ('\u{1900}', '\u{191e}'),
2404    ('\u{1950}', '\u{196d}'),
2405    ('\u{1970}', '\u{1974}'),
2406    ('\u{1980}', '\u{19ab}'),
2407    ('\u{19b0}', '\u{19c9}'),
2408    ('\u{1a00}', '\u{1a16}'),
2409    ('\u{1a20}', '\u{1a54}'),
2410    ('\u{1b05}', '\u{1b33}'),
2411    ('\u{1b45}', '\u{1b4c}'),
2412    ('\u{1b83}', '\u{1ba0}'),
2413    ('\u{1bae}', '\u{1baf}'),
2414    ('\u{1bba}', '\u{1be5}'),
2415    ('\u{1c00}', '\u{1c23}'),
2416    ('\u{1c4d}', '\u{1c4f}'),
2417    ('\u{1c5a}', '\u{1c77}'),
2418    ('\u{1ce9}', '\u{1cec}'),
2419    ('\u{1cee}', '\u{1cf3}'),
2420    ('\u{1cf5}', '\u{1cf6}'),
2421    ('\u{1cfa}', '\u{1cfa}'),
2422    ('\u{2135}', '\u{2138}'),
2423    ('\u{2d30}', '\u{2d67}'),
2424    ('\u{2d80}', '\u{2d96}'),
2425    ('\u{2da0}', '\u{2da6}'),
2426    ('\u{2da8}', '\u{2dae}'),
2427    ('\u{2db0}', '\u{2db6}'),
2428    ('\u{2db8}', '\u{2dbe}'),
2429    ('\u{2dc0}', '\u{2dc6}'),
2430    ('\u{2dc8}', '\u{2dce}'),
2431    ('\u{2dd0}', '\u{2dd6}'),
2432    ('\u{2dd8}', '\u{2dde}'),
2433    ('\u{3006}', '\u{3006}'),
2434    ('\u{303c}', '\u{303c}'),
2435    ('\u{3041}', '\u{3096}'),
2436    ('\u{309f}', '\u{309f}'),
2437    ('\u{30a1}', '\u{30fa}'),
2438    ('\u{30ff}', '\u{30ff}'),
2439    ('\u{3105}', '\u{312f}'),
2440    ('\u{3131}', '\u{318e}'),
2441    ('\u{31a0}', '\u{31bf}'),
2442    ('\u{31f0}', '\u{31ff}'),
2443    ('\u{3400}', '\u{3400}'),
2444    ('\u{4dbf}', '\u{4dbf}'),
2445    ('\u{4e00}', '\u{4e00}'),
2446    ('\u{9fff}', '\u{a014}'),
2447    ('\u{a016}', '\u{a48c}'),
2448    ('\u{a4d0}', '\u{a4f7}'),
2449    ('\u{a500}', '\u{a60b}'),
2450    ('\u{a610}', '\u{a61f}'),
2451    ('\u{a62a}', '\u{a62b}'),
2452    ('\u{a66e}', '\u{a66e}'),
2453    ('\u{a6a0}', '\u{a6e5}'),
2454    ('\u{a78f}', '\u{a78f}'),
2455    ('\u{a7f7}', '\u{a7f7}'),
2456    ('\u{a7fb}', '\u{a801}'),
2457    ('\u{a803}', '\u{a805}'),
2458    ('\u{a807}', '\u{a80a}'),
2459    ('\u{a80c}', '\u{a822}'),
2460    ('\u{a840}', '\u{a873}'),
2461    ('\u{a882}', '\u{a8b3}'),
2462    ('\u{a8f2}', '\u{a8f7}'),
2463    ('\u{a8fb}', '\u{a8fb}'),
2464    ('\u{a8fd}', '\u{a8fe}'),
2465    ('\u{a90a}', '\u{a925}'),
2466    ('\u{a930}', '\u{a946}'),
2467    ('\u{a960}', '\u{a97c}'),
2468    ('\u{a984}', '\u{a9b2}'),
2469    ('\u{a9e0}', '\u{a9e4}'),
2470    ('\u{a9e7}', '\u{a9ef}'),
2471    ('\u{a9fa}', '\u{a9fe}'),
2472    ('\u{aa00}', '\u{aa28}'),
2473    ('\u{aa40}', '\u{aa42}'),
2474    ('\u{aa44}', '\u{aa4b}'),
2475    ('\u{aa60}', '\u{aa6f}'),
2476    ('\u{aa71}', '\u{aa76}'),
2477    ('\u{aa7a}', '\u{aa7a}'),
2478    ('\u{aa7e}', '\u{aaaf}'),
2479    ('\u{aab1}', '\u{aab1}'),
2480    ('\u{aab5}', '\u{aab6}'),
2481    ('\u{aab9}', '\u{aabd}'),
2482    ('\u{aac0}', '\u{aac0}'),
2483    ('\u{aac2}', '\u{aac2}'),
2484    ('\u{aadb}', '\u{aadc}'),
2485    ('\u{aae0}', '\u{aaea}'),
2486    ('\u{aaf2}', '\u{aaf2}'),
2487    ('\u{ab01}', '\u{ab06}'),
2488    ('\u{ab09}', '\u{ab0e}'),
2489    ('\u{ab11}', '\u{ab16}'),
2490    ('\u{ab20}', '\u{ab26}'),
2491    ('\u{ab28}', '\u{ab2e}'),
2492    ('\u{abc0}', '\u{abe2}'),
2493    ('\u{ac00}', '\u{ac00}'),
2494    ('\u{d7a3}', '\u{d7a3}'),
2495    ('\u{d7b0}', '\u{d7c6}'),
2496    ('\u{d7cb}', '\u{d7fb}'),
2497    ('\u{f900}', '\u{fa6d}'),
2498    ('\u{fa70}', '\u{fad9}'),
2499    ('\u{fb1d}', '\u{fb1d}'),
2500    ('\u{fb1f}', '\u{fb28}'),
2501    ('\u{fb2a}', '\u{fb36}'),
2502    ('\u{fb38}', '\u{fb3c}'),
2503    ('\u{fb3e}', '\u{fb3e}'),
2504    ('\u{fb40}', '\u{fb41}'),
2505    ('\u{fb43}', '\u{fb44}'),
2506    ('\u{fb46}', '\u{fbb1}'),
2507    ('\u{fbd3}', '\u{fd3d}'),
2508    ('\u{fd50}', '\u{fd8f}'),
2509    ('\u{fd92}', '\u{fdc7}'),
2510    ('\u{fdf0}', '\u{fdfb}'),
2511    ('\u{fe70}', '\u{fe74}'),
2512    ('\u{fe76}', '\u{fefc}'),
2513    ('\u{ff66}', '\u{ff6f}'),
2514    ('\u{ff71}', '\u{ff9d}'),
2515    ('\u{ffa0}', '\u{ffbe}'),
2516    ('\u{ffc2}', '\u{ffc7}'),
2517    ('\u{ffca}', '\u{ffcf}'),
2518    ('\u{ffd2}', '\u{ffd7}'),
2519    ('\u{ffda}', '\u{ffdc}'),
2520    ('\u{10000}', '\u{1000b}'),
2521    ('\u{1000d}', '\u{10026}'),
2522    ('\u{10028}', '\u{1003a}'),
2523    ('\u{1003c}', '\u{1003d}'),
2524    ('\u{1003f}', '\u{1004d}'),
2525    ('\u{10050}', '\u{1005d}'),
2526    ('\u{10080}', '\u{100fa}'),
2527    ('\u{10280}', '\u{1029c}'),
2528    ('\u{102a0}', '\u{102d0}'),
2529    ('\u{10300}', '\u{1031f}'),
2530    ('\u{1032d}', '\u{10340}'),
2531    ('\u{10342}', '\u{10349}'),
2532    ('\u{10350}', '\u{10375}'),
2533    ('\u{10380}', '\u{1039d}'),
2534    ('\u{103a0}', '\u{103c3}'),
2535    ('\u{103c8}', '\u{103cf}'),
2536    ('\u{10450}', '\u{1049d}'),
2537    ('\u{10500}', '\u{10527}'),
2538    ('\u{10530}', '\u{10563}'),
2539    ('\u{105c0}', '\u{105f3}'),
2540    ('\u{10600}', '\u{10736}'),
2541    ('\u{10740}', '\u{10755}'),
2542    ('\u{10760}', '\u{10767}'),
2543    ('\u{10800}', '\u{10805}'),
2544    ('\u{10808}', '\u{10808}'),
2545    ('\u{1080a}', '\u{10835}'),
2546    ('\u{10837}', '\u{10838}'),
2547    ('\u{1083c}', '\u{1083c}'),
2548    ('\u{1083f}', '\u{10855}'),
2549    ('\u{10860}', '\u{10876}'),
2550    ('\u{10880}', '\u{1089e}'),
2551    ('\u{108e0}', '\u{108f2}'),
2552    ('\u{108f4}', '\u{108f5}'),
2553    ('\u{10900}', '\u{10915}'),
2554    ('\u{10920}', '\u{10939}'),
2555    ('\u{10980}', '\u{109b7}'),
2556    ('\u{109be}', '\u{109bf}'),
2557    ('\u{10a00}', '\u{10a00}'),
2558    ('\u{10a10}', '\u{10a13}'),
2559    ('\u{10a15}', '\u{10a17}'),
2560    ('\u{10a19}', '\u{10a35}'),
2561    ('\u{10a60}', '\u{10a7c}'),
2562    ('\u{10a80}', '\u{10a9c}'),
2563    ('\u{10ac0}', '\u{10ac7}'),
2564    ('\u{10ac9}', '\u{10ae4}'),
2565    ('\u{10b00}', '\u{10b35}'),
2566    ('\u{10b40}', '\u{10b55}'),
2567    ('\u{10b60}', '\u{10b72}'),
2568    ('\u{10b80}', '\u{10b91}'),
2569    ('\u{10c00}', '\u{10c48}'),
2570    ('\u{10d00}', '\u{10d23}'),
2571    ('\u{10d4a}', '\u{10d4d}'),
2572    ('\u{10d4f}', '\u{10d4f}'),
2573    ('\u{10e80}', '\u{10ea9}'),
2574    ('\u{10eb0}', '\u{10eb1}'),
2575    ('\u{10ec2}', '\u{10ec4}'),
2576    ('\u{10f00}', '\u{10f1c}'),
2577    ('\u{10f27}', '\u{10f27}'),
2578    ('\u{10f30}', '\u{10f45}'),
2579    ('\u{10f70}', '\u{10f81}'),
2580    ('\u{10fb0}', '\u{10fc4}'),
2581    ('\u{10fe0}', '\u{10ff6}'),
2582    ('\u{11003}', '\u{11037}'),
2583    ('\u{11071}', '\u{11072}'),
2584    ('\u{11075}', '\u{11075}'),
2585    ('\u{11083}', '\u{110af}'),
2586    ('\u{110d0}', '\u{110e8}'),
2587    ('\u{11103}', '\u{11126}'),
2588    ('\u{11144}', '\u{11144}'),
2589    ('\u{11147}', '\u{11147}'),
2590    ('\u{11150}', '\u{11172}'),
2591    ('\u{11176}', '\u{11176}'),
2592    ('\u{11183}', '\u{111b2}'),
2593    ('\u{111c1}', '\u{111c4}'),
2594    ('\u{111da}', '\u{111da}'),
2595    ('\u{111dc}', '\u{111dc}'),
2596    ('\u{11200}', '\u{11211}'),
2597    ('\u{11213}', '\u{1122b}'),
2598    ('\u{1123f}', '\u{11240}'),
2599    ('\u{11280}', '\u{11286}'),
2600    ('\u{11288}', '\u{11288}'),
2601    ('\u{1128a}', '\u{1128d}'),
2602    ('\u{1128f}', '\u{1129d}'),
2603    ('\u{1129f}', '\u{112a8}'),
2604    ('\u{112b0}', '\u{112de}'),
2605    ('\u{11305}', '\u{1130c}'),
2606    ('\u{1130f}', '\u{11310}'),
2607    ('\u{11313}', '\u{11328}'),
2608    ('\u{1132a}', '\u{11330}'),
2609    ('\u{11332}', '\u{11333}'),
2610    ('\u{11335}', '\u{11339}'),
2611    ('\u{1133d}', '\u{1133d}'),
2612    ('\u{11350}', '\u{11350}'),
2613    ('\u{1135d}', '\u{11361}'),
2614    ('\u{11380}', '\u{11389}'),
2615    ('\u{1138b}', '\u{1138b}'),
2616    ('\u{1138e}', '\u{1138e}'),
2617    ('\u{11390}', '\u{113b5}'),
2618    ('\u{113b7}', '\u{113b7}'),
2619    ('\u{113d1}', '\u{113d1}'),
2620    ('\u{113d3}', '\u{113d3}'),
2621    ('\u{11400}', '\u{11434}'),
2622    ('\u{11447}', '\u{1144a}'),
2623    ('\u{1145f}', '\u{11461}'),
2624    ('\u{11480}', '\u{114af}'),
2625    ('\u{114c4}', '\u{114c5}'),
2626    ('\u{114c7}', '\u{114c7}'),
2627    ('\u{11580}', '\u{115ae}'),
2628    ('\u{115d8}', '\u{115db}'),
2629    ('\u{11600}', '\u{1162f}'),
2630    ('\u{11644}', '\u{11644}'),
2631    ('\u{11680}', '\u{116aa}'),
2632    ('\u{116b8}', '\u{116b8}'),
2633    ('\u{11700}', '\u{1171a}'),
2634    ('\u{11740}', '\u{11746}'),
2635    ('\u{11800}', '\u{1182b}'),
2636    ('\u{118ff}', '\u{11906}'),
2637    ('\u{11909}', '\u{11909}'),
2638    ('\u{1190c}', '\u{11913}'),
2639    ('\u{11915}', '\u{11916}'),
2640    ('\u{11918}', '\u{1192f}'),
2641    ('\u{1193f}', '\u{1193f}'),
2642    ('\u{11941}', '\u{11941}'),
2643    ('\u{119a0}', '\u{119a7}'),
2644    ('\u{119aa}', '\u{119d0}'),
2645    ('\u{119e1}', '\u{119e1}'),
2646    ('\u{119e3}', '\u{119e3}'),
2647    ('\u{11a00}', '\u{11a00}'),
2648    ('\u{11a0b}', '\u{11a32}'),
2649    ('\u{11a3a}', '\u{11a3a}'),
2650    ('\u{11a50}', '\u{11a50}'),
2651    ('\u{11a5c}', '\u{11a89}'),
2652    ('\u{11a9d}', '\u{11a9d}'),
2653    ('\u{11ab0}', '\u{11af8}'),
2654    ('\u{11bc0}', '\u{11be0}'),
2655    ('\u{11c00}', '\u{11c08}'),
2656    ('\u{11c0a}', '\u{11c2e}'),
2657    ('\u{11c40}', '\u{11c40}'),
2658    ('\u{11c72}', '\u{11c8f}'),
2659    ('\u{11d00}', '\u{11d06}'),
2660    ('\u{11d08}', '\u{11d09}'),
2661    ('\u{11d0b}', '\u{11d30}'),
2662    ('\u{11d46}', '\u{11d46}'),
2663    ('\u{11d60}', '\u{11d65}'),
2664    ('\u{11d67}', '\u{11d68}'),
2665    ('\u{11d6a}', '\u{11d89}'),
2666    ('\u{11d98}', '\u{11d98}'),
2667    ('\u{11ee0}', '\u{11ef2}'),
2668    ('\u{11f02}', '\u{11f02}'),
2669    ('\u{11f04}', '\u{11f10}'),
2670    ('\u{11f12}', '\u{11f33}'),
2671    ('\u{11fb0}', '\u{11fb0}'),
2672    ('\u{12000}', '\u{12399}'),
2673    ('\u{12480}', '\u{12543}'),
2674    ('\u{12f90}', '\u{12ff0}'),
2675    ('\u{13000}', '\u{1342f}'),
2676    ('\u{13441}', '\u{13446}'),
2677    ('\u{13460}', '\u{143fa}'),
2678    ('\u{14400}', '\u{14646}'),
2679    ('\u{16100}', '\u{1611d}'),
2680    ('\u{16800}', '\u{16a38}'),
2681    ('\u{16a40}', '\u{16a5e}'),
2682    ('\u{16a70}', '\u{16abe}'),
2683    ('\u{16ad0}', '\u{16aed}'),
2684    ('\u{16b00}', '\u{16b2f}'),
2685    ('\u{16b63}', '\u{16b77}'),
2686    ('\u{16b7d}', '\u{16b8f}'),
2687    ('\u{16d43}', '\u{16d6a}'),
2688    ('\u{16f00}', '\u{16f4a}'),
2689    ('\u{16f50}', '\u{16f50}'),
2690    ('\u{17000}', '\u{17000}'),
2691    ('\u{187f7}', '\u{187f7}'),
2692    ('\u{18800}', '\u{18cd5}'),
2693    ('\u{18cff}', '\u{18d00}'),
2694    ('\u{18d08}', '\u{18d08}'),
2695    ('\u{1b000}', '\u{1b122}'),
2696    ('\u{1b132}', '\u{1b132}'),
2697    ('\u{1b150}', '\u{1b152}'),
2698    ('\u{1b155}', '\u{1b155}'),
2699    ('\u{1b164}', '\u{1b167}'),
2700    ('\u{1b170}', '\u{1b2fb}'),
2701    ('\u{1bc00}', '\u{1bc6a}'),
2702    ('\u{1bc70}', '\u{1bc7c}'),
2703    ('\u{1bc80}', '\u{1bc88}'),
2704    ('\u{1bc90}', '\u{1bc99}'),
2705    ('\u{1df0a}', '\u{1df0a}'),
2706    ('\u{1e100}', '\u{1e12c}'),
2707    ('\u{1e14e}', '\u{1e14e}'),
2708    ('\u{1e290}', '\u{1e2ad}'),
2709    ('\u{1e2c0}', '\u{1e2eb}'),
2710    ('\u{1e4d0}', '\u{1e4ea}'),
2711    ('\u{1e5d0}', '\u{1e5ed}'),
2712    ('\u{1e5f0}', '\u{1e5f0}'),
2713    ('\u{1e7e0}', '\u{1e7e6}'),
2714    ('\u{1e7e8}', '\u{1e7eb}'),
2715    ('\u{1e7ed}', '\u{1e7ee}'),
2716    ('\u{1e7f0}', '\u{1e7fe}'),
2717    ('\u{1e800}', '\u{1e8c4}'),
2718    ('\u{1ee00}', '\u{1ee03}'),
2719    ('\u{1ee05}', '\u{1ee1f}'),
2720    ('\u{1ee21}', '\u{1ee22}'),
2721    ('\u{1ee24}', '\u{1ee24}'),
2722    ('\u{1ee27}', '\u{1ee27}'),
2723    ('\u{1ee29}', '\u{1ee32}'),
2724    ('\u{1ee34}', '\u{1ee37}'),
2725    ('\u{1ee39}', '\u{1ee39}'),
2726    ('\u{1ee3b}', '\u{1ee3b}'),
2727    ('\u{1ee42}', '\u{1ee42}'),
2728    ('\u{1ee47}', '\u{1ee47}'),
2729    ('\u{1ee49}', '\u{1ee49}'),
2730    ('\u{1ee4b}', '\u{1ee4b}'),
2731    ('\u{1ee4d}', '\u{1ee4f}'),
2732    ('\u{1ee51}', '\u{1ee52}'),
2733    ('\u{1ee54}', '\u{1ee54}'),
2734    ('\u{1ee57}', '\u{1ee57}'),
2735    ('\u{1ee59}', '\u{1ee59}'),
2736    ('\u{1ee5b}', '\u{1ee5b}'),
2737    ('\u{1ee5d}', '\u{1ee5d}'),
2738    ('\u{1ee5f}', '\u{1ee5f}'),
2739    ('\u{1ee61}', '\u{1ee62}'),
2740    ('\u{1ee64}', '\u{1ee64}'),
2741    ('\u{1ee67}', '\u{1ee6a}'),
2742    ('\u{1ee6c}', '\u{1ee72}'),
2743    ('\u{1ee74}', '\u{1ee77}'),
2744    ('\u{1ee79}', '\u{1ee7c}'),
2745    ('\u{1ee7e}', '\u{1ee7e}'),
2746    ('\u{1ee80}', '\u{1ee89}'),
2747    ('\u{1ee8b}', '\u{1ee9b}'),
2748    ('\u{1eea1}', '\u{1eea3}'),
2749    ('\u{1eea5}', '\u{1eea9}'),
2750    ('\u{1eeab}', '\u{1eebb}'),
2751    ('\u{20000}', '\u{20000}'),
2752    ('\u{2a6df}', '\u{2a6df}'),
2753    ('\u{2a700}', '\u{2a700}'),
2754    ('\u{2b739}', '\u{2b739}'),
2755    ('\u{2b740}', '\u{2b740}'),
2756    ('\u{2b81d}', '\u{2b81d}'),
2757    ('\u{2b820}', '\u{2b820}'),
2758    ('\u{2cea1}', '\u{2cea1}'),
2759    ('\u{2ceb0}', '\u{2ceb0}'),
2760    ('\u{2ebe0}', '\u{2ebe0}'),
2761    ('\u{2ebf0}', '\u{2ebf0}'),
2762    ('\u{2ee5d}', '\u{2ee5d}'),
2763    ('\u{2f800}', '\u{2fa1d}'),
2764    ('\u{30000}', '\u{30000}'),
2765    ('\u{3134a}', '\u{3134a}'),
2766    ('\u{31350}', '\u{31350}'),
2767    ('\u{323af}', '\u{323af}'),
2768];
2769
2770pub fn alternate_general_category_lo() -> ASTNode<char> {
2771    ASTNode::alternate_all(GENERAL_CATEGORY_LO.iter().copied()).unwrap()
2772}
2773
2774pub fn negate_general_category_lo() -> ASTNode<char> {
2775    ASTNode::negate_all(GENERAL_CATEGORY_LO.iter().copied()).unwrap()
2776}
2777
2778pub const GENERAL_CATEGORY_PI: &[(char, char)] = &[
2779    ('\u{ab}', '\u{ab}'),
2780    ('\u{2018}', '\u{2018}'),
2781    ('\u{201b}', '\u{201c}'),
2782    ('\u{201f}', '\u{201f}'),
2783    ('\u{2039}', '\u{2039}'),
2784    ('\u{2e02}', '\u{2e02}'),
2785    ('\u{2e04}', '\u{2e04}'),
2786    ('\u{2e09}', '\u{2e09}'),
2787    ('\u{2e0c}', '\u{2e0c}'),
2788    ('\u{2e1c}', '\u{2e1c}'),
2789    ('\u{2e20}', '\u{2e20}'),
2790];
2791
2792pub fn alternate_general_category_pi() -> ASTNode<char> {
2793    ASTNode::alternate_all(GENERAL_CATEGORY_PI.iter().copied()).unwrap()
2794}
2795
2796pub fn negate_general_category_pi() -> ASTNode<char> {
2797    ASTNode::negate_all(GENERAL_CATEGORY_PI.iter().copied()).unwrap()
2798}
2799
2800pub const GENERAL_CATEGORY_CF: &[(char, char)] = &[
2801    ('\u{ad}', '\u{ad}'),
2802    ('\u{600}', '\u{605}'),
2803    ('\u{61c}', '\u{61c}'),
2804    ('\u{6dd}', '\u{6dd}'),
2805    ('\u{70f}', '\u{70f}'),
2806    ('\u{890}', '\u{891}'),
2807    ('\u{8e2}', '\u{8e2}'),
2808    ('\u{180e}', '\u{180e}'),
2809    ('\u{200b}', '\u{200f}'),
2810    ('\u{202a}', '\u{202e}'),
2811    ('\u{2060}', '\u{2064}'),
2812    ('\u{2066}', '\u{206f}'),
2813    ('\u{feff}', '\u{feff}'),
2814    ('\u{fff9}', '\u{fffb}'),
2815    ('\u{110bd}', '\u{110bd}'),
2816    ('\u{110cd}', '\u{110cd}'),
2817    ('\u{13430}', '\u{1343f}'),
2818    ('\u{1bca0}', '\u{1bca3}'),
2819    ('\u{1d173}', '\u{1d17a}'),
2820    ('\u{e0001}', '\u{e0001}'),
2821    ('\u{e0020}', '\u{e007f}'),
2822];
2823
2824pub fn alternate_general_category_cf() -> ASTNode<char> {
2825    ASTNode::alternate_all(GENERAL_CATEGORY_CF.iter().copied()).unwrap()
2826}
2827
2828pub fn negate_general_category_cf() -> ASTNode<char> {
2829    ASTNode::negate_all(GENERAL_CATEGORY_CF.iter().copied()).unwrap()
2830}
2831
2832pub const GENERAL_CATEGORY_NO: &[(char, char)] = &[
2833    ('\u{b2}', '\u{b3}'),
2834    ('\u{b9}', '\u{b9}'),
2835    ('\u{bc}', '\u{be}'),
2836    ('\u{9f4}', '\u{9f9}'),
2837    ('\u{b72}', '\u{b77}'),
2838    ('\u{bf0}', '\u{bf2}'),
2839    ('\u{c78}', '\u{c7e}'),
2840    ('\u{d58}', '\u{d5e}'),
2841    ('\u{d70}', '\u{d78}'),
2842    ('\u{f2a}', '\u{f33}'),
2843    ('\u{1369}', '\u{137c}'),
2844    ('\u{17f0}', '\u{17f9}'),
2845    ('\u{19da}', '\u{19da}'),
2846    ('\u{2070}', '\u{2070}'),
2847    ('\u{2074}', '\u{2079}'),
2848    ('\u{2080}', '\u{2089}'),
2849    ('\u{2150}', '\u{215f}'),
2850    ('\u{2189}', '\u{2189}'),
2851    ('\u{2460}', '\u{249b}'),
2852    ('\u{24ea}', '\u{24ff}'),
2853    ('\u{2776}', '\u{2793}'),
2854    ('\u{2cfd}', '\u{2cfd}'),
2855    ('\u{3192}', '\u{3195}'),
2856    ('\u{3220}', '\u{3229}'),
2857    ('\u{3248}', '\u{324f}'),
2858    ('\u{3251}', '\u{325f}'),
2859    ('\u{3280}', '\u{3289}'),
2860    ('\u{32b1}', '\u{32bf}'),
2861    ('\u{a830}', '\u{a835}'),
2862    ('\u{10107}', '\u{10133}'),
2863    ('\u{10175}', '\u{10178}'),
2864    ('\u{1018a}', '\u{1018b}'),
2865    ('\u{102e1}', '\u{102fb}'),
2866    ('\u{10320}', '\u{10323}'),
2867    ('\u{10858}', '\u{1085f}'),
2868    ('\u{10879}', '\u{1087f}'),
2869    ('\u{108a7}', '\u{108af}'),
2870    ('\u{108fb}', '\u{108ff}'),
2871    ('\u{10916}', '\u{1091b}'),
2872    ('\u{109bc}', '\u{109bd}'),
2873    ('\u{109c0}', '\u{109cf}'),
2874    ('\u{109d2}', '\u{109ff}'),
2875    ('\u{10a40}', '\u{10a48}'),
2876    ('\u{10a7d}', '\u{10a7e}'),
2877    ('\u{10a9d}', '\u{10a9f}'),
2878    ('\u{10aeb}', '\u{10aef}'),
2879    ('\u{10b58}', '\u{10b5f}'),
2880    ('\u{10b78}', '\u{10b7f}'),
2881    ('\u{10ba9}', '\u{10baf}'),
2882    ('\u{10cfa}', '\u{10cff}'),
2883    ('\u{10e60}', '\u{10e7e}'),
2884    ('\u{10f1d}', '\u{10f26}'),
2885    ('\u{10f51}', '\u{10f54}'),
2886    ('\u{10fc5}', '\u{10fcb}'),
2887    ('\u{11052}', '\u{11065}'),
2888    ('\u{111e1}', '\u{111f4}'),
2889    ('\u{1173a}', '\u{1173b}'),
2890    ('\u{118ea}', '\u{118f2}'),
2891    ('\u{11c5a}', '\u{11c6c}'),
2892    ('\u{11fc0}', '\u{11fd4}'),
2893    ('\u{16b5b}', '\u{16b61}'),
2894    ('\u{16e80}', '\u{16e96}'),
2895    ('\u{1d2c0}', '\u{1d2d3}'),
2896    ('\u{1d2e0}', '\u{1d2f3}'),
2897    ('\u{1d360}', '\u{1d378}'),
2898    ('\u{1e8c7}', '\u{1e8cf}'),
2899    ('\u{1ec71}', '\u{1ecab}'),
2900    ('\u{1ecad}', '\u{1ecaf}'),
2901    ('\u{1ecb1}', '\u{1ecb4}'),
2902    ('\u{1ed01}', '\u{1ed2d}'),
2903    ('\u{1ed2f}', '\u{1ed3d}'),
2904    ('\u{1f100}', '\u{1f10c}'),
2905];
2906
2907pub fn alternate_general_category_no() -> ASTNode<char> {
2908    ASTNode::alternate_all(GENERAL_CATEGORY_NO.iter().copied()).unwrap()
2909}
2910
2911pub fn negate_general_category_no() -> ASTNode<char> {
2912    ASTNode::negate_all(GENERAL_CATEGORY_NO.iter().copied()).unwrap()
2913}
2914
2915pub const GENERAL_CATEGORY_PF: &[(char, char)] = &[
2916    ('\u{bb}', '\u{bb}'),
2917    ('\u{2019}', '\u{2019}'),
2918    ('\u{201d}', '\u{201d}'),
2919    ('\u{203a}', '\u{203a}'),
2920    ('\u{2e03}', '\u{2e03}'),
2921    ('\u{2e05}', '\u{2e05}'),
2922    ('\u{2e0a}', '\u{2e0a}'),
2923    ('\u{2e0d}', '\u{2e0d}'),
2924    ('\u{2e1d}', '\u{2e1d}'),
2925    ('\u{2e21}', '\u{2e21}'),
2926];
2927
2928pub fn alternate_general_category_pf() -> ASTNode<char> {
2929    ASTNode::alternate_all(GENERAL_CATEGORY_PF.iter().copied()).unwrap()
2930}
2931
2932pub fn negate_general_category_pf() -> ASTNode<char> {
2933    ASTNode::negate_all(GENERAL_CATEGORY_PF.iter().copied()).unwrap()
2934}
2935
2936pub const GENERAL_CATEGORY_LT: &[(char, char)] = &[
2937    ('\u{1c5}', '\u{1c5}'),
2938    ('\u{1c8}', '\u{1c8}'),
2939    ('\u{1cb}', '\u{1cb}'),
2940    ('\u{1f2}', '\u{1f2}'),
2941    ('\u{1f88}', '\u{1f8f}'),
2942    ('\u{1f98}', '\u{1f9f}'),
2943    ('\u{1fa8}', '\u{1faf}'),
2944    ('\u{1fbc}', '\u{1fbc}'),
2945    ('\u{1fcc}', '\u{1fcc}'),
2946    ('\u{1ffc}', '\u{1ffc}'),
2947];
2948
2949pub fn alternate_general_category_lt() -> ASTNode<char> {
2950    ASTNode::alternate_all(GENERAL_CATEGORY_LT.iter().copied()).unwrap()
2951}
2952
2953pub fn negate_general_category_lt() -> ASTNode<char> {
2954    ASTNode::negate_all(GENERAL_CATEGORY_LT.iter().copied()).unwrap()
2955}
2956
2957pub const GENERAL_CATEGORY_LM: &[(char, char)] = &[
2958    ('\u{2b0}', '\u{2c1}'),
2959    ('\u{2c6}', '\u{2d1}'),
2960    ('\u{2e0}', '\u{2e4}'),
2961    ('\u{2ec}', '\u{2ec}'),
2962    ('\u{2ee}', '\u{2ee}'),
2963    ('\u{374}', '\u{374}'),
2964    ('\u{37a}', '\u{37a}'),
2965    ('\u{559}', '\u{559}'),
2966    ('\u{640}', '\u{640}'),
2967    ('\u{6e5}', '\u{6e6}'),
2968    ('\u{7f4}', '\u{7f5}'),
2969    ('\u{7fa}', '\u{7fa}'),
2970    ('\u{81a}', '\u{81a}'),
2971    ('\u{824}', '\u{824}'),
2972    ('\u{828}', '\u{828}'),
2973    ('\u{8c9}', '\u{8c9}'),
2974    ('\u{971}', '\u{971}'),
2975    ('\u{e46}', '\u{e46}'),
2976    ('\u{ec6}', '\u{ec6}'),
2977    ('\u{10fc}', '\u{10fc}'),
2978    ('\u{17d7}', '\u{17d7}'),
2979    ('\u{1843}', '\u{1843}'),
2980    ('\u{1aa7}', '\u{1aa7}'),
2981    ('\u{1c78}', '\u{1c7d}'),
2982    ('\u{1d2c}', '\u{1d6a}'),
2983    ('\u{1d78}', '\u{1d78}'),
2984    ('\u{1d9b}', '\u{1dbf}'),
2985    ('\u{2071}', '\u{2071}'),
2986    ('\u{207f}', '\u{207f}'),
2987    ('\u{2090}', '\u{209c}'),
2988    ('\u{2c7c}', '\u{2c7d}'),
2989    ('\u{2d6f}', '\u{2d6f}'),
2990    ('\u{2e2f}', '\u{2e2f}'),
2991    ('\u{3005}', '\u{3005}'),
2992    ('\u{3031}', '\u{3035}'),
2993    ('\u{303b}', '\u{303b}'),
2994    ('\u{309d}', '\u{309e}'),
2995    ('\u{30fc}', '\u{30fe}'),
2996    ('\u{a015}', '\u{a015}'),
2997    ('\u{a4f8}', '\u{a4fd}'),
2998    ('\u{a60c}', '\u{a60c}'),
2999    ('\u{a67f}', '\u{a67f}'),
3000    ('\u{a69c}', '\u{a69d}'),
3001    ('\u{a717}', '\u{a71f}'),
3002    ('\u{a770}', '\u{a770}'),
3003    ('\u{a788}', '\u{a788}'),
3004    ('\u{a7f2}', '\u{a7f4}'),
3005    ('\u{a7f8}', '\u{a7f9}'),
3006    ('\u{a9cf}', '\u{a9cf}'),
3007    ('\u{a9e6}', '\u{a9e6}'),
3008    ('\u{aa70}', '\u{aa70}'),
3009    ('\u{aadd}', '\u{aadd}'),
3010    ('\u{aaf3}', '\u{aaf4}'),
3011    ('\u{ab5c}', '\u{ab5f}'),
3012    ('\u{ab69}', '\u{ab69}'),
3013    ('\u{ff70}', '\u{ff70}'),
3014    ('\u{ff9e}', '\u{ff9f}'),
3015    ('\u{10780}', '\u{10785}'),
3016    ('\u{10787}', '\u{107b0}'),
3017    ('\u{107b2}', '\u{107ba}'),
3018    ('\u{10d4e}', '\u{10d4e}'),
3019    ('\u{10d6f}', '\u{10d6f}'),
3020    ('\u{16b40}', '\u{16b43}'),
3021    ('\u{16d40}', '\u{16d42}'),
3022    ('\u{16d6b}', '\u{16d6c}'),
3023    ('\u{16f93}', '\u{16f9f}'),
3024    ('\u{16fe0}', '\u{16fe1}'),
3025    ('\u{16fe3}', '\u{16fe3}'),
3026    ('\u{1aff0}', '\u{1aff3}'),
3027    ('\u{1aff5}', '\u{1affb}'),
3028    ('\u{1affd}', '\u{1affe}'),
3029    ('\u{1e030}', '\u{1e06d}'),
3030    ('\u{1e137}', '\u{1e13d}'),
3031    ('\u{1e4eb}', '\u{1e4eb}'),
3032    ('\u{1e94b}', '\u{1e94b}'),
3033];
3034
3035pub fn alternate_general_category_lm() -> ASTNode<char> {
3036    ASTNode::alternate_all(GENERAL_CATEGORY_LM.iter().copied()).unwrap()
3037}
3038
3039pub fn negate_general_category_lm() -> ASTNode<char> {
3040    ASTNode::negate_all(GENERAL_CATEGORY_LM.iter().copied()).unwrap()
3041}
3042
3043pub const GENERAL_CATEGORY_MN: &[(char, char)] = &[
3044    ('\u{300}', '\u{36f}'),
3045    ('\u{483}', '\u{487}'),
3046    ('\u{591}', '\u{5bd}'),
3047    ('\u{5bf}', '\u{5bf}'),
3048    ('\u{5c1}', '\u{5c2}'),
3049    ('\u{5c4}', '\u{5c5}'),
3050    ('\u{5c7}', '\u{5c7}'),
3051    ('\u{610}', '\u{61a}'),
3052    ('\u{64b}', '\u{65f}'),
3053    ('\u{670}', '\u{670}'),
3054    ('\u{6d6}', '\u{6dc}'),
3055    ('\u{6df}', '\u{6e4}'),
3056    ('\u{6e7}', '\u{6e8}'),
3057    ('\u{6ea}', '\u{6ed}'),
3058    ('\u{711}', '\u{711}'),
3059    ('\u{730}', '\u{74a}'),
3060    ('\u{7a6}', '\u{7b0}'),
3061    ('\u{7eb}', '\u{7f3}'),
3062    ('\u{7fd}', '\u{7fd}'),
3063    ('\u{816}', '\u{819}'),
3064    ('\u{81b}', '\u{823}'),
3065    ('\u{825}', '\u{827}'),
3066    ('\u{829}', '\u{82d}'),
3067    ('\u{859}', '\u{85b}'),
3068    ('\u{897}', '\u{89f}'),
3069    ('\u{8ca}', '\u{8e1}'),
3070    ('\u{8e3}', '\u{902}'),
3071    ('\u{93a}', '\u{93a}'),
3072    ('\u{93c}', '\u{93c}'),
3073    ('\u{941}', '\u{948}'),
3074    ('\u{94d}', '\u{94d}'),
3075    ('\u{951}', '\u{957}'),
3076    ('\u{962}', '\u{963}'),
3077    ('\u{981}', '\u{981}'),
3078    ('\u{9bc}', '\u{9bc}'),
3079    ('\u{9c1}', '\u{9c4}'),
3080    ('\u{9cd}', '\u{9cd}'),
3081    ('\u{9e2}', '\u{9e3}'),
3082    ('\u{9fe}', '\u{9fe}'),
3083    ('\u{a01}', '\u{a02}'),
3084    ('\u{a3c}', '\u{a3c}'),
3085    ('\u{a41}', '\u{a42}'),
3086    ('\u{a47}', '\u{a48}'),
3087    ('\u{a4b}', '\u{a4d}'),
3088    ('\u{a51}', '\u{a51}'),
3089    ('\u{a70}', '\u{a71}'),
3090    ('\u{a75}', '\u{a75}'),
3091    ('\u{a81}', '\u{a82}'),
3092    ('\u{abc}', '\u{abc}'),
3093    ('\u{ac1}', '\u{ac5}'),
3094    ('\u{ac7}', '\u{ac8}'),
3095    ('\u{acd}', '\u{acd}'),
3096    ('\u{ae2}', '\u{ae3}'),
3097    ('\u{afa}', '\u{aff}'),
3098    ('\u{b01}', '\u{b01}'),
3099    ('\u{b3c}', '\u{b3c}'),
3100    ('\u{b3f}', '\u{b3f}'),
3101    ('\u{b41}', '\u{b44}'),
3102    ('\u{b4d}', '\u{b4d}'),
3103    ('\u{b55}', '\u{b56}'),
3104    ('\u{b62}', '\u{b63}'),
3105    ('\u{b82}', '\u{b82}'),
3106    ('\u{bc0}', '\u{bc0}'),
3107    ('\u{bcd}', '\u{bcd}'),
3108    ('\u{c00}', '\u{c00}'),
3109    ('\u{c04}', '\u{c04}'),
3110    ('\u{c3c}', '\u{c3c}'),
3111    ('\u{c3e}', '\u{c40}'),
3112    ('\u{c46}', '\u{c48}'),
3113    ('\u{c4a}', '\u{c4d}'),
3114    ('\u{c55}', '\u{c56}'),
3115    ('\u{c62}', '\u{c63}'),
3116    ('\u{c81}', '\u{c81}'),
3117    ('\u{cbc}', '\u{cbc}'),
3118    ('\u{cbf}', '\u{cbf}'),
3119    ('\u{cc6}', '\u{cc6}'),
3120    ('\u{ccc}', '\u{ccd}'),
3121    ('\u{ce2}', '\u{ce3}'),
3122    ('\u{d00}', '\u{d01}'),
3123    ('\u{d3b}', '\u{d3c}'),
3124    ('\u{d41}', '\u{d44}'),
3125    ('\u{d4d}', '\u{d4d}'),
3126    ('\u{d62}', '\u{d63}'),
3127    ('\u{d81}', '\u{d81}'),
3128    ('\u{dca}', '\u{dca}'),
3129    ('\u{dd2}', '\u{dd4}'),
3130    ('\u{dd6}', '\u{dd6}'),
3131    ('\u{e31}', '\u{e31}'),
3132    ('\u{e34}', '\u{e3a}'),
3133    ('\u{e47}', '\u{e4e}'),
3134    ('\u{eb1}', '\u{eb1}'),
3135    ('\u{eb4}', '\u{ebc}'),
3136    ('\u{ec8}', '\u{ece}'),
3137    ('\u{f18}', '\u{f19}'),
3138    ('\u{f35}', '\u{f35}'),
3139    ('\u{f37}', '\u{f37}'),
3140    ('\u{f39}', '\u{f39}'),
3141    ('\u{f71}', '\u{f7e}'),
3142    ('\u{f80}', '\u{f84}'),
3143    ('\u{f86}', '\u{f87}'),
3144    ('\u{f8d}', '\u{f97}'),
3145    ('\u{f99}', '\u{fbc}'),
3146    ('\u{fc6}', '\u{fc6}'),
3147    ('\u{102d}', '\u{1030}'),
3148    ('\u{1032}', '\u{1037}'),
3149    ('\u{1039}', '\u{103a}'),
3150    ('\u{103d}', '\u{103e}'),
3151    ('\u{1058}', '\u{1059}'),
3152    ('\u{105e}', '\u{1060}'),
3153    ('\u{1071}', '\u{1074}'),
3154    ('\u{1082}', '\u{1082}'),
3155    ('\u{1085}', '\u{1086}'),
3156    ('\u{108d}', '\u{108d}'),
3157    ('\u{109d}', '\u{109d}'),
3158    ('\u{135d}', '\u{135f}'),
3159    ('\u{1712}', '\u{1714}'),
3160    ('\u{1732}', '\u{1733}'),
3161    ('\u{1752}', '\u{1753}'),
3162    ('\u{1772}', '\u{1773}'),
3163    ('\u{17b4}', '\u{17b5}'),
3164    ('\u{17b7}', '\u{17bd}'),
3165    ('\u{17c6}', '\u{17c6}'),
3166    ('\u{17c9}', '\u{17d3}'),
3167    ('\u{17dd}', '\u{17dd}'),
3168    ('\u{180b}', '\u{180d}'),
3169    ('\u{180f}', '\u{180f}'),
3170    ('\u{1885}', '\u{1886}'),
3171    ('\u{18a9}', '\u{18a9}'),
3172    ('\u{1920}', '\u{1922}'),
3173    ('\u{1927}', '\u{1928}'),
3174    ('\u{1932}', '\u{1932}'),
3175    ('\u{1939}', '\u{193b}'),
3176    ('\u{1a17}', '\u{1a18}'),
3177    ('\u{1a1b}', '\u{1a1b}'),
3178    ('\u{1a56}', '\u{1a56}'),
3179    ('\u{1a58}', '\u{1a5e}'),
3180    ('\u{1a60}', '\u{1a60}'),
3181    ('\u{1a62}', '\u{1a62}'),
3182    ('\u{1a65}', '\u{1a6c}'),
3183    ('\u{1a73}', '\u{1a7c}'),
3184    ('\u{1a7f}', '\u{1a7f}'),
3185    ('\u{1ab0}', '\u{1abd}'),
3186    ('\u{1abf}', '\u{1ace}'),
3187    ('\u{1b00}', '\u{1b03}'),
3188    ('\u{1b34}', '\u{1b34}'),
3189    ('\u{1b36}', '\u{1b3a}'),
3190    ('\u{1b3c}', '\u{1b3c}'),
3191    ('\u{1b42}', '\u{1b42}'),
3192    ('\u{1b6b}', '\u{1b73}'),
3193    ('\u{1b80}', '\u{1b81}'),
3194    ('\u{1ba2}', '\u{1ba5}'),
3195    ('\u{1ba8}', '\u{1ba9}'),
3196    ('\u{1bab}', '\u{1bad}'),
3197    ('\u{1be6}', '\u{1be6}'),
3198    ('\u{1be8}', '\u{1be9}'),
3199    ('\u{1bed}', '\u{1bed}'),
3200    ('\u{1bef}', '\u{1bf1}'),
3201    ('\u{1c2c}', '\u{1c33}'),
3202    ('\u{1c36}', '\u{1c37}'),
3203    ('\u{1cd0}', '\u{1cd2}'),
3204    ('\u{1cd4}', '\u{1ce0}'),
3205    ('\u{1ce2}', '\u{1ce8}'),
3206    ('\u{1ced}', '\u{1ced}'),
3207    ('\u{1cf4}', '\u{1cf4}'),
3208    ('\u{1cf8}', '\u{1cf9}'),
3209    ('\u{1dc0}', '\u{1dff}'),
3210    ('\u{20d0}', '\u{20dc}'),
3211    ('\u{20e1}', '\u{20e1}'),
3212    ('\u{20e5}', '\u{20f0}'),
3213    ('\u{2cef}', '\u{2cf1}'),
3214    ('\u{2d7f}', '\u{2d7f}'),
3215    ('\u{2de0}', '\u{2dff}'),
3216    ('\u{302a}', '\u{302d}'),
3217    ('\u{3099}', '\u{309a}'),
3218    ('\u{a66f}', '\u{a66f}'),
3219    ('\u{a674}', '\u{a67d}'),
3220    ('\u{a69e}', '\u{a69f}'),
3221    ('\u{a6f0}', '\u{a6f1}'),
3222    ('\u{a802}', '\u{a802}'),
3223    ('\u{a806}', '\u{a806}'),
3224    ('\u{a80b}', '\u{a80b}'),
3225    ('\u{a825}', '\u{a826}'),
3226    ('\u{a82c}', '\u{a82c}'),
3227    ('\u{a8c4}', '\u{a8c5}'),
3228    ('\u{a8e0}', '\u{a8f1}'),
3229    ('\u{a8ff}', '\u{a8ff}'),
3230    ('\u{a926}', '\u{a92d}'),
3231    ('\u{a947}', '\u{a951}'),
3232    ('\u{a980}', '\u{a982}'),
3233    ('\u{a9b3}', '\u{a9b3}'),
3234    ('\u{a9b6}', '\u{a9b9}'),
3235    ('\u{a9bc}', '\u{a9bd}'),
3236    ('\u{a9e5}', '\u{a9e5}'),
3237    ('\u{aa29}', '\u{aa2e}'),
3238    ('\u{aa31}', '\u{aa32}'),
3239    ('\u{aa35}', '\u{aa36}'),
3240    ('\u{aa43}', '\u{aa43}'),
3241    ('\u{aa4c}', '\u{aa4c}'),
3242    ('\u{aa7c}', '\u{aa7c}'),
3243    ('\u{aab0}', '\u{aab0}'),
3244    ('\u{aab2}', '\u{aab4}'),
3245    ('\u{aab7}', '\u{aab8}'),
3246    ('\u{aabe}', '\u{aabf}'),
3247    ('\u{aac1}', '\u{aac1}'),
3248    ('\u{aaec}', '\u{aaed}'),
3249    ('\u{aaf6}', '\u{aaf6}'),
3250    ('\u{abe5}', '\u{abe5}'),
3251    ('\u{abe8}', '\u{abe8}'),
3252    ('\u{abed}', '\u{abed}'),
3253    ('\u{fb1e}', '\u{fb1e}'),
3254    ('\u{fe00}', '\u{fe0f}'),
3255    ('\u{fe20}', '\u{fe2f}'),
3256    ('\u{101fd}', '\u{101fd}'),
3257    ('\u{102e0}', '\u{102e0}'),
3258    ('\u{10376}', '\u{1037a}'),
3259    ('\u{10a01}', '\u{10a03}'),
3260    ('\u{10a05}', '\u{10a06}'),
3261    ('\u{10a0c}', '\u{10a0f}'),
3262    ('\u{10a38}', '\u{10a3a}'),
3263    ('\u{10a3f}', '\u{10a3f}'),
3264    ('\u{10ae5}', '\u{10ae6}'),
3265    ('\u{10d24}', '\u{10d27}'),
3266    ('\u{10d69}', '\u{10d6d}'),
3267    ('\u{10eab}', '\u{10eac}'),
3268    ('\u{10efc}', '\u{10eff}'),
3269    ('\u{10f46}', '\u{10f50}'),
3270    ('\u{10f82}', '\u{10f85}'),
3271    ('\u{11001}', '\u{11001}'),
3272    ('\u{11038}', '\u{11046}'),
3273    ('\u{11070}', '\u{11070}'),
3274    ('\u{11073}', '\u{11074}'),
3275    ('\u{1107f}', '\u{11081}'),
3276    ('\u{110b3}', '\u{110b6}'),
3277    ('\u{110b9}', '\u{110ba}'),
3278    ('\u{110c2}', '\u{110c2}'),
3279    ('\u{11100}', '\u{11102}'),
3280    ('\u{11127}', '\u{1112b}'),
3281    ('\u{1112d}', '\u{11134}'),
3282    ('\u{11173}', '\u{11173}'),
3283    ('\u{11180}', '\u{11181}'),
3284    ('\u{111b6}', '\u{111be}'),
3285    ('\u{111c9}', '\u{111cc}'),
3286    ('\u{111cf}', '\u{111cf}'),
3287    ('\u{1122f}', '\u{11231}'),
3288    ('\u{11234}', '\u{11234}'),
3289    ('\u{11236}', '\u{11237}'),
3290    ('\u{1123e}', '\u{1123e}'),
3291    ('\u{11241}', '\u{11241}'),
3292    ('\u{112df}', '\u{112df}'),
3293    ('\u{112e3}', '\u{112ea}'),
3294    ('\u{11300}', '\u{11301}'),
3295    ('\u{1133b}', '\u{1133c}'),
3296    ('\u{11340}', '\u{11340}'),
3297    ('\u{11366}', '\u{1136c}'),
3298    ('\u{11370}', '\u{11374}'),
3299    ('\u{113bb}', '\u{113c0}'),
3300    ('\u{113ce}', '\u{113ce}'),
3301    ('\u{113d0}', '\u{113d0}'),
3302    ('\u{113d2}', '\u{113d2}'),
3303    ('\u{113e1}', '\u{113e2}'),
3304    ('\u{11438}', '\u{1143f}'),
3305    ('\u{11442}', '\u{11444}'),
3306    ('\u{11446}', '\u{11446}'),
3307    ('\u{1145e}', '\u{1145e}'),
3308    ('\u{114b3}', '\u{114b8}'),
3309    ('\u{114ba}', '\u{114ba}'),
3310    ('\u{114bf}', '\u{114c0}'),
3311    ('\u{114c2}', '\u{114c3}'),
3312    ('\u{115b2}', '\u{115b5}'),
3313    ('\u{115bc}', '\u{115bd}'),
3314    ('\u{115bf}', '\u{115c0}'),
3315    ('\u{115dc}', '\u{115dd}'),
3316    ('\u{11633}', '\u{1163a}'),
3317    ('\u{1163d}', '\u{1163d}'),
3318    ('\u{1163f}', '\u{11640}'),
3319    ('\u{116ab}', '\u{116ab}'),
3320    ('\u{116ad}', '\u{116ad}'),
3321    ('\u{116b0}', '\u{116b5}'),
3322    ('\u{116b7}', '\u{116b7}'),
3323    ('\u{1171d}', '\u{1171d}'),
3324    ('\u{1171f}', '\u{1171f}'),
3325    ('\u{11722}', '\u{11725}'),
3326    ('\u{11727}', '\u{1172b}'),
3327    ('\u{1182f}', '\u{11837}'),
3328    ('\u{11839}', '\u{1183a}'),
3329    ('\u{1193b}', '\u{1193c}'),
3330    ('\u{1193e}', '\u{1193e}'),
3331    ('\u{11943}', '\u{11943}'),
3332    ('\u{119d4}', '\u{119d7}'),
3333    ('\u{119da}', '\u{119db}'),
3334    ('\u{119e0}', '\u{119e0}'),
3335    ('\u{11a01}', '\u{11a0a}'),
3336    ('\u{11a33}', '\u{11a38}'),
3337    ('\u{11a3b}', '\u{11a3e}'),
3338    ('\u{11a47}', '\u{11a47}'),
3339    ('\u{11a51}', '\u{11a56}'),
3340    ('\u{11a59}', '\u{11a5b}'),
3341    ('\u{11a8a}', '\u{11a96}'),
3342    ('\u{11a98}', '\u{11a99}'),
3343    ('\u{11c30}', '\u{11c36}'),
3344    ('\u{11c38}', '\u{11c3d}'),
3345    ('\u{11c3f}', '\u{11c3f}'),
3346    ('\u{11c92}', '\u{11ca7}'),
3347    ('\u{11caa}', '\u{11cb0}'),
3348    ('\u{11cb2}', '\u{11cb3}'),
3349    ('\u{11cb5}', '\u{11cb6}'),
3350    ('\u{11d31}', '\u{11d36}'),
3351    ('\u{11d3a}', '\u{11d3a}'),
3352    ('\u{11d3c}', '\u{11d3d}'),
3353    ('\u{11d3f}', '\u{11d45}'),
3354    ('\u{11d47}', '\u{11d47}'),
3355    ('\u{11d90}', '\u{11d91}'),
3356    ('\u{11d95}', '\u{11d95}'),
3357    ('\u{11d97}', '\u{11d97}'),
3358    ('\u{11ef3}', '\u{11ef4}'),
3359    ('\u{11f00}', '\u{11f01}'),
3360    ('\u{11f36}', '\u{11f3a}'),
3361    ('\u{11f40}', '\u{11f40}'),
3362    ('\u{11f42}', '\u{11f42}'),
3363    ('\u{11f5a}', '\u{11f5a}'),
3364    ('\u{13440}', '\u{13440}'),
3365    ('\u{13447}', '\u{13455}'),
3366    ('\u{1611e}', '\u{16129}'),
3367    ('\u{1612d}', '\u{1612f}'),
3368    ('\u{16af0}', '\u{16af4}'),
3369    ('\u{16b30}', '\u{16b36}'),
3370    ('\u{16f4f}', '\u{16f4f}'),
3371    ('\u{16f8f}', '\u{16f92}'),
3372    ('\u{16fe4}', '\u{16fe4}'),
3373    ('\u{1bc9d}', '\u{1bc9e}'),
3374    ('\u{1cf00}', '\u{1cf2d}'),
3375    ('\u{1cf30}', '\u{1cf46}'),
3376    ('\u{1d167}', '\u{1d169}'),
3377    ('\u{1d17b}', '\u{1d182}'),
3378    ('\u{1d185}', '\u{1d18b}'),
3379    ('\u{1d1aa}', '\u{1d1ad}'),
3380    ('\u{1d242}', '\u{1d244}'),
3381    ('\u{1da00}', '\u{1da36}'),
3382    ('\u{1da3b}', '\u{1da6c}'),
3383    ('\u{1da75}', '\u{1da75}'),
3384    ('\u{1da84}', '\u{1da84}'),
3385    ('\u{1da9b}', '\u{1da9f}'),
3386    ('\u{1daa1}', '\u{1daaf}'),
3387    ('\u{1e000}', '\u{1e006}'),
3388    ('\u{1e008}', '\u{1e018}'),
3389    ('\u{1e01b}', '\u{1e021}'),
3390    ('\u{1e023}', '\u{1e024}'),
3391    ('\u{1e026}', '\u{1e02a}'),
3392    ('\u{1e08f}', '\u{1e08f}'),
3393    ('\u{1e130}', '\u{1e136}'),
3394    ('\u{1e2ae}', '\u{1e2ae}'),
3395    ('\u{1e2ec}', '\u{1e2ef}'),
3396    ('\u{1e4ec}', '\u{1e4ef}'),
3397    ('\u{1e5ee}', '\u{1e5ef}'),
3398    ('\u{1e8d0}', '\u{1e8d6}'),
3399    ('\u{1e944}', '\u{1e94a}'),
3400    ('\u{e0100}', '\u{e01ef}'),
3401];
3402
3403pub fn alternate_general_category_mn() -> ASTNode<char> {
3404    ASTNode::alternate_all(GENERAL_CATEGORY_MN.iter().copied()).unwrap()
3405}
3406
3407pub fn negate_general_category_mn() -> ASTNode<char> {
3408    ASTNode::negate_all(GENERAL_CATEGORY_MN.iter().copied()).unwrap()
3409}
3410
3411pub const GENERAL_CATEGORY_ME: &[(char, char)] = &[
3412    ('\u{488}', '\u{489}'),
3413    ('\u{1abe}', '\u{1abe}'),
3414    ('\u{20dd}', '\u{20e0}'),
3415    ('\u{20e2}', '\u{20e4}'),
3416    ('\u{a670}', '\u{a672}'),
3417];
3418
3419pub fn alternate_general_category_me() -> ASTNode<char> {
3420    ASTNode::alternate_all(GENERAL_CATEGORY_ME.iter().copied()).unwrap()
3421}
3422
3423pub fn negate_general_category_me() -> ASTNode<char> {
3424    ASTNode::negate_all(GENERAL_CATEGORY_ME.iter().copied()).unwrap()
3425}
3426
3427pub const GENERAL_CATEGORY_MC: &[(char, char)] = &[
3428    ('\u{903}', '\u{903}'),
3429    ('\u{93b}', '\u{93b}'),
3430    ('\u{93e}', '\u{940}'),
3431    ('\u{949}', '\u{94c}'),
3432    ('\u{94e}', '\u{94f}'),
3433    ('\u{982}', '\u{983}'),
3434    ('\u{9be}', '\u{9c0}'),
3435    ('\u{9c7}', '\u{9c8}'),
3436    ('\u{9cb}', '\u{9cc}'),
3437    ('\u{9d7}', '\u{9d7}'),
3438    ('\u{a03}', '\u{a03}'),
3439    ('\u{a3e}', '\u{a40}'),
3440    ('\u{a83}', '\u{a83}'),
3441    ('\u{abe}', '\u{ac0}'),
3442    ('\u{ac9}', '\u{ac9}'),
3443    ('\u{acb}', '\u{acc}'),
3444    ('\u{b02}', '\u{b03}'),
3445    ('\u{b3e}', '\u{b3e}'),
3446    ('\u{b40}', '\u{b40}'),
3447    ('\u{b47}', '\u{b48}'),
3448    ('\u{b4b}', '\u{b4c}'),
3449    ('\u{b57}', '\u{b57}'),
3450    ('\u{bbe}', '\u{bbf}'),
3451    ('\u{bc1}', '\u{bc2}'),
3452    ('\u{bc6}', '\u{bc8}'),
3453    ('\u{bca}', '\u{bcc}'),
3454    ('\u{bd7}', '\u{bd7}'),
3455    ('\u{c01}', '\u{c03}'),
3456    ('\u{c41}', '\u{c44}'),
3457    ('\u{c82}', '\u{c83}'),
3458    ('\u{cbe}', '\u{cbe}'),
3459    ('\u{cc0}', '\u{cc4}'),
3460    ('\u{cc7}', '\u{cc8}'),
3461    ('\u{cca}', '\u{ccb}'),
3462    ('\u{cd5}', '\u{cd6}'),
3463    ('\u{cf3}', '\u{cf3}'),
3464    ('\u{d02}', '\u{d03}'),
3465    ('\u{d3e}', '\u{d40}'),
3466    ('\u{d46}', '\u{d48}'),
3467    ('\u{d4a}', '\u{d4c}'),
3468    ('\u{d57}', '\u{d57}'),
3469    ('\u{d82}', '\u{d83}'),
3470    ('\u{dcf}', '\u{dd1}'),
3471    ('\u{dd8}', '\u{ddf}'),
3472    ('\u{df2}', '\u{df3}'),
3473    ('\u{f3e}', '\u{f3f}'),
3474    ('\u{f7f}', '\u{f7f}'),
3475    ('\u{102b}', '\u{102c}'),
3476    ('\u{1031}', '\u{1031}'),
3477    ('\u{1038}', '\u{1038}'),
3478    ('\u{103b}', '\u{103c}'),
3479    ('\u{1056}', '\u{1057}'),
3480    ('\u{1062}', '\u{1064}'),
3481    ('\u{1067}', '\u{106d}'),
3482    ('\u{1083}', '\u{1084}'),
3483    ('\u{1087}', '\u{108c}'),
3484    ('\u{108f}', '\u{108f}'),
3485    ('\u{109a}', '\u{109c}'),
3486    ('\u{1715}', '\u{1715}'),
3487    ('\u{1734}', '\u{1734}'),
3488    ('\u{17b6}', '\u{17b6}'),
3489    ('\u{17be}', '\u{17c5}'),
3490    ('\u{17c7}', '\u{17c8}'),
3491    ('\u{1923}', '\u{1926}'),
3492    ('\u{1929}', '\u{192b}'),
3493    ('\u{1930}', '\u{1931}'),
3494    ('\u{1933}', '\u{1938}'),
3495    ('\u{1a19}', '\u{1a1a}'),
3496    ('\u{1a55}', '\u{1a55}'),
3497    ('\u{1a57}', '\u{1a57}'),
3498    ('\u{1a61}', '\u{1a61}'),
3499    ('\u{1a63}', '\u{1a64}'),
3500    ('\u{1a6d}', '\u{1a72}'),
3501    ('\u{1b04}', '\u{1b04}'),
3502    ('\u{1b35}', '\u{1b35}'),
3503    ('\u{1b3b}', '\u{1b3b}'),
3504    ('\u{1b3d}', '\u{1b41}'),
3505    ('\u{1b43}', '\u{1b44}'),
3506    ('\u{1b82}', '\u{1b82}'),
3507    ('\u{1ba1}', '\u{1ba1}'),
3508    ('\u{1ba6}', '\u{1ba7}'),
3509    ('\u{1baa}', '\u{1baa}'),
3510    ('\u{1be7}', '\u{1be7}'),
3511    ('\u{1bea}', '\u{1bec}'),
3512    ('\u{1bee}', '\u{1bee}'),
3513    ('\u{1bf2}', '\u{1bf3}'),
3514    ('\u{1c24}', '\u{1c2b}'),
3515    ('\u{1c34}', '\u{1c35}'),
3516    ('\u{1ce1}', '\u{1ce1}'),
3517    ('\u{1cf7}', '\u{1cf7}'),
3518    ('\u{302e}', '\u{302f}'),
3519    ('\u{a823}', '\u{a824}'),
3520    ('\u{a827}', '\u{a827}'),
3521    ('\u{a880}', '\u{a881}'),
3522    ('\u{a8b4}', '\u{a8c3}'),
3523    ('\u{a952}', '\u{a953}'),
3524    ('\u{a983}', '\u{a983}'),
3525    ('\u{a9b4}', '\u{a9b5}'),
3526    ('\u{a9ba}', '\u{a9bb}'),
3527    ('\u{a9be}', '\u{a9c0}'),
3528    ('\u{aa2f}', '\u{aa30}'),
3529    ('\u{aa33}', '\u{aa34}'),
3530    ('\u{aa4d}', '\u{aa4d}'),
3531    ('\u{aa7b}', '\u{aa7b}'),
3532    ('\u{aa7d}', '\u{aa7d}'),
3533    ('\u{aaeb}', '\u{aaeb}'),
3534    ('\u{aaee}', '\u{aaef}'),
3535    ('\u{aaf5}', '\u{aaf5}'),
3536    ('\u{abe3}', '\u{abe4}'),
3537    ('\u{abe6}', '\u{abe7}'),
3538    ('\u{abe9}', '\u{abea}'),
3539    ('\u{abec}', '\u{abec}'),
3540    ('\u{11000}', '\u{11000}'),
3541    ('\u{11002}', '\u{11002}'),
3542    ('\u{11082}', '\u{11082}'),
3543    ('\u{110b0}', '\u{110b2}'),
3544    ('\u{110b7}', '\u{110b8}'),
3545    ('\u{1112c}', '\u{1112c}'),
3546    ('\u{11145}', '\u{11146}'),
3547    ('\u{11182}', '\u{11182}'),
3548    ('\u{111b3}', '\u{111b5}'),
3549    ('\u{111bf}', '\u{111c0}'),
3550    ('\u{111ce}', '\u{111ce}'),
3551    ('\u{1122c}', '\u{1122e}'),
3552    ('\u{11232}', '\u{11233}'),
3553    ('\u{11235}', '\u{11235}'),
3554    ('\u{112e0}', '\u{112e2}'),
3555    ('\u{11302}', '\u{11303}'),
3556    ('\u{1133e}', '\u{1133f}'),
3557    ('\u{11341}', '\u{11344}'),
3558    ('\u{11347}', '\u{11348}'),
3559    ('\u{1134b}', '\u{1134d}'),
3560    ('\u{11357}', '\u{11357}'),
3561    ('\u{11362}', '\u{11363}'),
3562    ('\u{113b8}', '\u{113ba}'),
3563    ('\u{113c2}', '\u{113c2}'),
3564    ('\u{113c5}', '\u{113c5}'),
3565    ('\u{113c7}', '\u{113ca}'),
3566    ('\u{113cc}', '\u{113cd}'),
3567    ('\u{113cf}', '\u{113cf}'),
3568    ('\u{11435}', '\u{11437}'),
3569    ('\u{11440}', '\u{11441}'),
3570    ('\u{11445}', '\u{11445}'),
3571    ('\u{114b0}', '\u{114b2}'),
3572    ('\u{114b9}', '\u{114b9}'),
3573    ('\u{114bb}', '\u{114be}'),
3574    ('\u{114c1}', '\u{114c1}'),
3575    ('\u{115af}', '\u{115b1}'),
3576    ('\u{115b8}', '\u{115bb}'),
3577    ('\u{115be}', '\u{115be}'),
3578    ('\u{11630}', '\u{11632}'),
3579    ('\u{1163b}', '\u{1163c}'),
3580    ('\u{1163e}', '\u{1163e}'),
3581    ('\u{116ac}', '\u{116ac}'),
3582    ('\u{116ae}', '\u{116af}'),
3583    ('\u{116b6}', '\u{116b6}'),
3584    ('\u{1171e}', '\u{1171e}'),
3585    ('\u{11720}', '\u{11721}'),
3586    ('\u{11726}', '\u{11726}'),
3587    ('\u{1182c}', '\u{1182e}'),
3588    ('\u{11838}', '\u{11838}'),
3589    ('\u{11930}', '\u{11935}'),
3590    ('\u{11937}', '\u{11938}'),
3591    ('\u{1193d}', '\u{1193d}'),
3592    ('\u{11940}', '\u{11940}'),
3593    ('\u{11942}', '\u{11942}'),
3594    ('\u{119d1}', '\u{119d3}'),
3595    ('\u{119dc}', '\u{119df}'),
3596    ('\u{119e4}', '\u{119e4}'),
3597    ('\u{11a39}', '\u{11a39}'),
3598    ('\u{11a57}', '\u{11a58}'),
3599    ('\u{11a97}', '\u{11a97}'),
3600    ('\u{11c2f}', '\u{11c2f}'),
3601    ('\u{11c3e}', '\u{11c3e}'),
3602    ('\u{11ca9}', '\u{11ca9}'),
3603    ('\u{11cb1}', '\u{11cb1}'),
3604    ('\u{11cb4}', '\u{11cb4}'),
3605    ('\u{11d8a}', '\u{11d8e}'),
3606    ('\u{11d93}', '\u{11d94}'),
3607    ('\u{11d96}', '\u{11d96}'),
3608    ('\u{11ef5}', '\u{11ef6}'),
3609    ('\u{11f03}', '\u{11f03}'),
3610    ('\u{11f34}', '\u{11f35}'),
3611    ('\u{11f3e}', '\u{11f3f}'),
3612    ('\u{11f41}', '\u{11f41}'),
3613    ('\u{1612a}', '\u{1612c}'),
3614    ('\u{16f51}', '\u{16f87}'),
3615    ('\u{16ff0}', '\u{16ff1}'),
3616    ('\u{1d165}', '\u{1d166}'),
3617    ('\u{1d16d}', '\u{1d172}'),
3618];
3619
3620pub fn alternate_general_category_mc() -> ASTNode<char> {
3621    ASTNode::alternate_all(GENERAL_CATEGORY_MC.iter().copied()).unwrap()
3622}
3623
3624pub fn negate_general_category_mc() -> ASTNode<char> {
3625    ASTNode::negate_all(GENERAL_CATEGORY_MC.iter().copied()).unwrap()
3626}
3627
3628pub const GENERAL_CATEGORY_NL: &[(char, char)] = &[
3629    ('\u{16ee}', '\u{16f0}'),
3630    ('\u{2160}', '\u{2182}'),
3631    ('\u{2185}', '\u{2188}'),
3632    ('\u{3007}', '\u{3007}'),
3633    ('\u{3021}', '\u{3029}'),
3634    ('\u{3038}', '\u{303a}'),
3635    ('\u{a6e6}', '\u{a6ef}'),
3636    ('\u{10140}', '\u{10174}'),
3637    ('\u{10341}', '\u{10341}'),
3638    ('\u{1034a}', '\u{1034a}'),
3639    ('\u{103d1}', '\u{103d5}'),
3640    ('\u{12400}', '\u{1246e}'),
3641];
3642
3643pub fn alternate_general_category_nl() -> ASTNode<char> {
3644    ASTNode::alternate_all(GENERAL_CATEGORY_NL.iter().copied()).unwrap()
3645}
3646
3647pub fn negate_general_category_nl() -> ASTNode<char> {
3648    ASTNode::negate_all(GENERAL_CATEGORY_NL.iter().copied()).unwrap()
3649}
3650
3651pub const GENERAL_CATEGORY_ZL: &[(char, char)] = &[('\u{2028}', '\u{2028}')];
3652
3653pub fn alternate_general_category_zl() -> ASTNode<char> {
3654    ASTNode::alternate_all(GENERAL_CATEGORY_ZL.iter().copied()).unwrap()
3655}
3656
3657pub fn negate_general_category_zl() -> ASTNode<char> {
3658    ASTNode::negate_all(GENERAL_CATEGORY_ZL.iter().copied()).unwrap()
3659}
3660
3661pub const GENERAL_CATEGORY_ZP: &[(char, char)] = &[('\u{2029}', '\u{2029}')];
3662
3663pub fn alternate_general_category_zp() -> ASTNode<char> {
3664    ASTNode::alternate_all(GENERAL_CATEGORY_ZP.iter().copied()).unwrap()
3665}
3666
3667pub fn negate_general_category_zp() -> ASTNode<char> {
3668    ASTNode::negate_all(GENERAL_CATEGORY_ZP.iter().copied()).unwrap()
3669}
3670
3671pub const GENERAL_CATEGORY_CO: &[(char, char)] = &[
3672    ('\u{e000}', '\u{e000}'),
3673    ('\u{f8ff}', '\u{f8ff}'),
3674    ('\u{f0000}', '\u{f0000}'),
3675    ('\u{ffffd}', '\u{ffffd}'),
3676    ('\u{100000}', '\u{100000}'),
3677    ('\u{10fffd}', '\u{10fffd}'),
3678];
3679
3680pub fn alternate_general_category_co() -> ASTNode<char> {
3681    ASTNode::alternate_all(GENERAL_CATEGORY_CO.iter().copied()).unwrap()
3682}
3683
3684pub fn negate_general_category_co() -> ASTNode<char> {
3685    ASTNode::negate_all(GENERAL_CATEGORY_CO.iter().copied()).unwrap()
3686}
3687
3688pub fn iterate_general_category_c() -> impl Iterator<Item = (char, char)> {
3689    GENERAL_CATEGORY_CO
3690        .iter()
3691        .chain(GENERAL_CATEGORY_CF.iter())
3692        .chain(GENERAL_CATEGORY_CC.iter())
3693        .copied()
3694}
3695
3696pub fn iterate_general_category_z() -> impl Iterator<Item = (char, char)> {
3697    GENERAL_CATEGORY_ZP
3698        .iter()
3699        .chain(GENERAL_CATEGORY_ZL.iter())
3700        .chain(GENERAL_CATEGORY_ZS.iter())
3701        .copied()
3702}
3703
3704pub fn iterate_general_category_p() -> impl Iterator<Item = (char, char)> {
3705    GENERAL_CATEGORY_PF
3706        .iter()
3707        .chain(GENERAL_CATEGORY_PI.iter())
3708        .chain(GENERAL_CATEGORY_PC.iter())
3709        .chain(GENERAL_CATEGORY_PD.iter())
3710        .chain(GENERAL_CATEGORY_PE.iter())
3711        .chain(GENERAL_CATEGORY_PS.iter())
3712        .chain(GENERAL_CATEGORY_PO.iter())
3713        .copied()
3714}
3715
3716pub fn iterate_general_category_s() -> impl Iterator<Item = (char, char)> {
3717    GENERAL_CATEGORY_SO
3718        .iter()
3719        .chain(GENERAL_CATEGORY_SK.iter())
3720        .chain(GENERAL_CATEGORY_SM.iter())
3721        .chain(GENERAL_CATEGORY_SC.iter())
3722        .copied()
3723}
3724
3725pub fn iterate_general_category_n() -> impl Iterator<Item = (char, char)> {
3726    GENERAL_CATEGORY_NL
3727        .iter()
3728        .chain(GENERAL_CATEGORY_NO.iter())
3729        .chain(GENERAL_CATEGORY_ND.iter())
3730        .copied()
3731}
3732
3733pub fn iterate_general_category_l() -> impl Iterator<Item = (char, char)> {
3734    GENERAL_CATEGORY_LM
3735        .iter()
3736        .chain(GENERAL_CATEGORY_LT.iter())
3737        .chain(GENERAL_CATEGORY_LO.iter())
3738        .chain(GENERAL_CATEGORY_LL.iter())
3739        .chain(GENERAL_CATEGORY_LU.iter())
3740        .copied()
3741}
3742
3743pub fn iterate_general_category_m() -> impl Iterator<Item = (char, char)> {
3744    GENERAL_CATEGORY_MC
3745        .iter()
3746        .chain(GENERAL_CATEGORY_ME.iter())
3747        .chain(GENERAL_CATEGORY_MN.iter())
3748        .copied()
3749}
3750
3751pub const BLOCK_TO_RANGES: &[(&str, char, char)] = &[
3752    ("adlam", '\u{1E900}', '\u{1E95F}'),
3753    ("aegeannumbers", '\u{10100}', '\u{1013F}'),
3754    ("ahom", '\u{11700}', '\u{1174F}'),
3755    ("alchemicalsymbols", '\u{1F700}', '\u{1F77F}'),
3756    ("alphabeticpresentationforms", '\u{FB00}', '\u{FB4F}'),
3757    ("anatolianhieroglyphs", '\u{14400}', '\u{1467F}'),
3758    ("ancientgreekmusicalnotation", '\u{1D200}', '\u{1D24F}'),
3759    ("ancientgreeknumbers", '\u{10140}', '\u{1018F}'),
3760    ("ancientsymbols", '\u{10190}', '\u{101CF}'),
3761    ("arabic", '\u{0600}', '\u{06FF}'),
3762    ("arabicextendeda", '\u{08A0}', '\u{08FF}'),
3763    ("arabicextendedb", '\u{0870}', '\u{089F}'),
3764    ("arabicextendedc", '\u{10EC0}', '\u{10EFF}'),
3765    (
3766        "arabicmathematicalalphabeticsymbols",
3767        '\u{1EE00}',
3768        '\u{1EEFF}',
3769    ),
3770    ("arabicpresentationformsa", '\u{FB50}', '\u{FDFF}'),
3771    ("arabicpresentationformsb", '\u{FE70}', '\u{FEFF}'),
3772    ("arabicsupplement", '\u{0750}', '\u{077F}'),
3773    ("armenian", '\u{0530}', '\u{058F}'),
3774    ("arrows", '\u{2190}', '\u{21FF}'),
3775    ("avestan", '\u{10B00}', '\u{10B3F}'),
3776    ("balinese", '\u{1B00}', '\u{1B7F}'),
3777    ("bamum", '\u{A6A0}', '\u{A6FF}'),
3778    ("bamumsupplement", '\u{16800}', '\u{16A3F}'),
3779    ("basiclatin", '\u{0000}', '\u{007F}'),
3780    ("bassavah", '\u{16AD0}', '\u{16AFF}'),
3781    ("batak", '\u{1BC0}', '\u{1BFF}'),
3782    ("bengali", '\u{0980}', '\u{09FF}'),
3783    ("bhaiksuki", '\u{11C00}', '\u{11C6F}'),
3784    ("blockelements", '\u{2580}', '\u{259F}'),
3785    ("bopomofo", '\u{3100}', '\u{312F}'),
3786    ("bopomofoextended", '\u{31A0}', '\u{31BF}'),
3787    ("boxdrawing", '\u{2500}', '\u{257F}'),
3788    ("brahmi", '\u{11000}', '\u{1107F}'),
3789    ("braillepatterns", '\u{2800}', '\u{28FF}'),
3790    ("buginese", '\u{1A00}', '\u{1A1F}'),
3791    ("buhid", '\u{1740}', '\u{175F}'),
3792    ("byzantinemusicalsymbols", '\u{1D000}', '\u{1D0FF}'),
3793    ("carian", '\u{102A0}', '\u{102DF}'),
3794    ("caucasianalbanian", '\u{10530}', '\u{1056F}'),
3795    ("chakma", '\u{11100}', '\u{1114F}'),
3796    ("cham", '\u{AA00}', '\u{AA5F}'),
3797    ("cherokee", '\u{13A0}', '\u{13FF}'),
3798    ("cherokeesupplement", '\u{AB70}', '\u{ABBF}'),
3799    ("chesssymbols", '\u{1FA00}', '\u{1FA6F}'),
3800    ("chorasmian", '\u{10FB0}', '\u{10FDF}'),
3801    ("cjkcompatibility", '\u{3300}', '\u{33FF}'),
3802    ("cjkcompatibilityforms", '\u{FE30}', '\u{FE4F}'),
3803    ("cjkcompatibilityideographs", '\u{F900}', '\u{FAFF}'),
3804    (
3805        "cjkcompatibilityideographssupplement",
3806        '\u{2F800}',
3807        '\u{2FA1F}',
3808    ),
3809    ("cjkradicalssupplement", '\u{2E80}', '\u{2EFF}'),
3810    ("cjkstrokes", '\u{31C0}', '\u{31EF}'),
3811    ("cjksymbolsandpunctuation", '\u{3000}', '\u{303F}'),
3812    ("cjkunifiedideographs", '\u{4E00}', '\u{9FFF}'),
3813    ("cjkunifiedideographsextensiona", '\u{3400}', '\u{4DBF}'),
3814    ("cjkunifiedideographsextensionb", '\u{20000}', '\u{2A6DF}'),
3815    ("cjkunifiedideographsextensionc", '\u{2A700}', '\u{2B73F}'),
3816    ("cjkunifiedideographsextensiond", '\u{2B740}', '\u{2B81F}'),
3817    ("cjkunifiedideographsextensione", '\u{2B820}', '\u{2CEAF}'),
3818    ("cjkunifiedideographsextensionf", '\u{2CEB0}', '\u{2EBEF}'),
3819    ("cjkunifiedideographsextensiong", '\u{30000}', '\u{3134F}'),
3820    ("cjkunifiedideographsextensionh", '\u{31350}', '\u{323AF}'),
3821    ("cjkunifiedideographsextensioni", '\u{2EBF0}', '\u{2EE5F}'),
3822    ("combiningdiacriticalmarks", '\u{0300}', '\u{036F}'),
3823    ("combiningdiacriticalmarksextended", '\u{1AB0}', '\u{1AFF}'),
3824    (
3825        "combiningdiacriticalmarksforsymbols",
3826        '\u{20D0}',
3827        '\u{20FF}',
3828    ),
3829    (
3830        "combiningdiacriticalmarkssupplement",
3831        '\u{1DC0}',
3832        '\u{1DFF}',
3833    ),
3834    ("combininghalfmarks", '\u{FE20}', '\u{FE2F}'),
3835    ("commonindicnumberforms", '\u{A830}', '\u{A83F}'),
3836    ("controlpictures", '\u{2400}', '\u{243F}'),
3837    ("coptic", '\u{2C80}', '\u{2CFF}'),
3838    ("copticepactnumbers", '\u{102E0}', '\u{102FF}'),
3839    ("countingrodnumerals", '\u{1D360}', '\u{1D37F}'),
3840    ("cuneiform", '\u{12000}', '\u{123FF}'),
3841    ("cuneiformnumbersandpunctuation", '\u{12400}', '\u{1247F}'),
3842    ("currencysymbols", '\u{20A0}', '\u{20CF}'),
3843    ("cypriotsyllabary", '\u{10800}', '\u{1083F}'),
3844    ("cyprominoan", '\u{12F90}', '\u{12FFF}'),
3845    ("cyrillic", '\u{0400}', '\u{04FF}'),
3846    ("cyrillicextendeda", '\u{2DE0}', '\u{2DFF}'),
3847    ("cyrillicextendedb", '\u{A640}', '\u{A69F}'),
3848    ("cyrillicextendedc", '\u{1C80}', '\u{1C8F}'),
3849    ("cyrillicextendedd", '\u{1E030}', '\u{1E08F}'),
3850    ("cyrillicsupplement", '\u{0500}', '\u{052F}'),
3851    ("deseret", '\u{10400}', '\u{1044F}'),
3852    ("devanagari", '\u{0900}', '\u{097F}'),
3853    ("devanagariextended", '\u{A8E0}', '\u{A8FF}'),
3854    ("devanagariextendeda", '\u{11B00}', '\u{11B5F}'),
3855    ("dingbats", '\u{2700}', '\u{27BF}'),
3856    ("divesakuru", '\u{11900}', '\u{1195F}'),
3857    ("dogra", '\u{11800}', '\u{1184F}'),
3858    ("dominotiles", '\u{1F030}', '\u{1F09F}'),
3859    ("duployan", '\u{1BC00}', '\u{1BC9F}'),
3860    ("earlydynasticcuneiform", '\u{12480}', '\u{1254F}'),
3861    ("egyptianhieroglyphformatcontrols", '\u{13430}', '\u{1345F}'),
3862    ("egyptianhieroglyphs", '\u{13000}', '\u{1342F}'),
3863    ("egyptianhieroglyphsextendeda", '\u{13460}', '\u{143FF}'),
3864    ("elbasan", '\u{10500}', '\u{1052F}'),
3865    ("elymaic", '\u{10FE0}', '\u{10FFF}'),
3866    ("emoticons", '\u{1F600}', '\u{1F64F}'),
3867    ("enclosedalphanumerics", '\u{2460}', '\u{24FF}'),
3868    ("enclosedalphanumericsupplement", '\u{1F100}', '\u{1F1FF}'),
3869    ("enclosedcjklettersandmonths", '\u{3200}', '\u{32FF}'),
3870    ("enclosedideographicsupplement", '\u{1F200}', '\u{1F2FF}'),
3871    ("ethiopic", '\u{1200}', '\u{137F}'),
3872    ("ethiopicextended", '\u{2D80}', '\u{2DDF}'),
3873    ("ethiopicextendeda", '\u{AB00}', '\u{AB2F}'),
3874    ("ethiopicextendedb", '\u{1E7E0}', '\u{1E7FF}'),
3875    ("ethiopicsupplement", '\u{1380}', '\u{139F}'),
3876    ("garay", '\u{10D40}', '\u{10D8F}'),
3877    ("generalpunctuation", '\u{2000}', '\u{206F}'),
3878    ("geometricshapes", '\u{25A0}', '\u{25FF}'),
3879    ("geometricshapesextended", '\u{1F780}', '\u{1F7FF}'),
3880    ("georgian", '\u{10A0}', '\u{10FF}'),
3881    ("georgianextended", '\u{1C90}', '\u{1CBF}'),
3882    ("georgiansupplement", '\u{2D00}', '\u{2D2F}'),
3883    ("glagolitic", '\u{2C00}', '\u{2C5F}'),
3884    ("glagoliticsupplement", '\u{1E000}', '\u{1E02F}'),
3885    ("gothic", '\u{10330}', '\u{1034F}'),
3886    ("grantha", '\u{11300}', '\u{1137F}'),
3887    ("greekandcoptic", '\u{0370}', '\u{03FF}'),
3888    ("greekextended", '\u{1F00}', '\u{1FFF}'),
3889    ("gujarati", '\u{0A80}', '\u{0AFF}'),
3890    ("gunjalagondi", '\u{11D60}', '\u{11DAF}'),
3891    ("gurmukhi", '\u{0A00}', '\u{0A7F}'),
3892    ("gurungkhema", '\u{16100}', '\u{1613F}'),
3893    ("halfwidthandfullwidthforms", '\u{FF00}', '\u{FFEF}'),
3894    ("hangulcompatibilityjamo", '\u{3130}', '\u{318F}'),
3895    ("hanguljamo", '\u{1100}', '\u{11FF}'),
3896    ("hanguljamoextendeda", '\u{A960}', '\u{A97F}'),
3897    ("hanguljamoextendedb", '\u{D7B0}', '\u{D7FF}'),
3898    ("hangulsyllables", '\u{AC00}', '\u{D7AF}'),
3899    ("hanifirohingya", '\u{10D00}', '\u{10D3F}'),
3900    ("hanunoo", '\u{1720}', '\u{173F}'),
3901    ("hatran", '\u{108E0}', '\u{108FF}'),
3902    ("hebrew", '\u{0590}', '\u{05FF}'),
3903    ("hiragana", '\u{3040}', '\u{309F}'),
3904    ("ideographicdescriptioncharacters", '\u{2FF0}', '\u{2FFF}'),
3905    ("ideographicsymbolsandpunctuation", '\u{16FE0}', '\u{16FFF}'),
3906    ("imperialaramaic", '\u{10840}', '\u{1085F}'),
3907    ("indicsiyaqnumbers", '\u{1EC70}', '\u{1ECBF}'),
3908    ("inscriptionalpahlavi", '\u{10B60}', '\u{10B7F}'),
3909    ("inscriptionalparthian", '\u{10B40}', '\u{10B5F}'),
3910    ("ipaextensions", '\u{0250}', '\u{02AF}'),
3911    ("javanese", '\u{A980}', '\u{A9DF}'),
3912    ("kaithi", '\u{11080}', '\u{110CF}'),
3913    ("kaktoviknumerals", '\u{1D2C0}', '\u{1D2DF}'),
3914    ("kanaextendeda", '\u{1B100}', '\u{1B12F}'),
3915    ("kanaextendedb", '\u{1AFF0}', '\u{1AFFF}'),
3916    ("kanasupplement", '\u{1B000}', '\u{1B0FF}'),
3917    ("kanbun", '\u{3190}', '\u{319F}'),
3918    ("kangxiradicals", '\u{2F00}', '\u{2FDF}'),
3919    ("kannada", '\u{0C80}', '\u{0CFF}'),
3920    ("katakana", '\u{30A0}', '\u{30FF}'),
3921    ("katakanaphoneticextensions", '\u{31F0}', '\u{31FF}'),
3922    ("kawi", '\u{11F00}', '\u{11F5F}'),
3923    ("kayahli", '\u{A900}', '\u{A92F}'),
3924    ("kharoshthi", '\u{10A00}', '\u{10A5F}'),
3925    ("khitansmallscript", '\u{18B00}', '\u{18CFF}'),
3926    ("khmer", '\u{1780}', '\u{17FF}'),
3927    ("khmersymbols", '\u{19E0}', '\u{19FF}'),
3928    ("khojki", '\u{11200}', '\u{1124F}'),
3929    ("khudawadi", '\u{112B0}', '\u{112FF}'),
3930    ("kiratrai", '\u{16D40}', '\u{16D7F}'),
3931    ("lao", '\u{0E80}', '\u{0EFF}'),
3932    ("latin1supplement", '\u{0080}', '\u{00FF}'),
3933    ("latinextendeda", '\u{0100}', '\u{017F}'),
3934    ("latinextendedadditional", '\u{1E00}', '\u{1EFF}'),
3935    ("latinextendedb", '\u{0180}', '\u{024F}'),
3936    ("latinextendedc", '\u{2C60}', '\u{2C7F}'),
3937    ("latinextendedd", '\u{A720}', '\u{A7FF}'),
3938    ("latinextendede", '\u{AB30}', '\u{AB6F}'),
3939    ("latinextendedf", '\u{10780}', '\u{107BF}'),
3940    ("latinextendedg", '\u{1DF00}', '\u{1DFFF}'),
3941    ("lepcha", '\u{1C00}', '\u{1C4F}'),
3942    ("letterlikesymbols", '\u{2100}', '\u{214F}'),
3943    ("limbu", '\u{1900}', '\u{194F}'),
3944    ("lineara", '\u{10600}', '\u{1077F}'),
3945    ("linearbideograms", '\u{10080}', '\u{100FF}'),
3946    ("linearbsyllabary", '\u{10000}', '\u{1007F}'),
3947    ("lisu", '\u{A4D0}', '\u{A4FF}'),
3948    ("lisusupplement", '\u{11FB0}', '\u{11FBF}'),
3949    ("lycian", '\u{10280}', '\u{1029F}'),
3950    ("lydian", '\u{10920}', '\u{1093F}'),
3951    ("mahajani", '\u{11150}', '\u{1117F}'),
3952    ("mahjongtiles", '\u{1F000}', '\u{1F02F}'),
3953    ("makasar", '\u{11EE0}', '\u{11EFF}'),
3954    ("malayalam", '\u{0D00}', '\u{0D7F}'),
3955    ("mandaic", '\u{0840}', '\u{085F}'),
3956    ("manichaean", '\u{10AC0}', '\u{10AFF}'),
3957    ("marchen", '\u{11C70}', '\u{11CBF}'),
3958    ("masaramgondi", '\u{11D00}', '\u{11D5F}'),
3959    ("mathematicalalphanumericsymbols", '\u{1D400}', '\u{1D7FF}'),
3960    ("mathematicaloperators", '\u{2200}', '\u{22FF}'),
3961    ("mayannumerals", '\u{1D2E0}', '\u{1D2FF}'),
3962    ("medefaidrin", '\u{16E40}', '\u{16E9F}'),
3963    ("meeteimayek", '\u{ABC0}', '\u{ABFF}'),
3964    ("meeteimayekextensions", '\u{AAE0}', '\u{AAFF}'),
3965    ("mendekikakui", '\u{1E800}', '\u{1E8DF}'),
3966    ("meroiticcursive", '\u{109A0}', '\u{109FF}'),
3967    ("meroitichieroglyphs", '\u{10980}', '\u{1099F}'),
3968    ("miao", '\u{16F00}', '\u{16F9F}'),
3969    ("miscellaneousmathematicalsymbolsa", '\u{27C0}', '\u{27EF}'),
3970    ("miscellaneousmathematicalsymbolsb", '\u{2980}', '\u{29FF}'),
3971    ("miscellaneoussymbols", '\u{2600}', '\u{26FF}'),
3972    ("miscellaneoussymbolsandarrows", '\u{2B00}', '\u{2BFF}'),
3973    (
3974        "miscellaneoussymbolsandpictographs",
3975        '\u{1F300}',
3976        '\u{1F5FF}',
3977    ),
3978    ("miscellaneoustechnical", '\u{2300}', '\u{23FF}'),
3979    ("modi", '\u{11600}', '\u{1165F}'),
3980    ("modifiertoneletters", '\u{A700}', '\u{A71F}'),
3981    ("mongolian", '\u{1800}', '\u{18AF}'),
3982    ("mongoliansupplement", '\u{11660}', '\u{1167F}'),
3983    ("mro", '\u{16A40}', '\u{16A6F}'),
3984    ("multani", '\u{11280}', '\u{112AF}'),
3985    ("musicalsymbols", '\u{1D100}', '\u{1D1FF}'),
3986    ("myanmar", '\u{1000}', '\u{109F}'),
3987    ("myanmarextendeda", '\u{AA60}', '\u{AA7F}'),
3988    ("myanmarextendedb", '\u{A9E0}', '\u{A9FF}'),
3989    ("myanmarextendedc", '\u{116D0}', '\u{116FF}'),
3990    ("nabataean", '\u{10880}', '\u{108AF}'),
3991    ("nagmundari", '\u{1E4D0}', '\u{1E4FF}'),
3992    ("nandinagari", '\u{119A0}', '\u{119FF}'),
3993    ("newa", '\u{11400}', '\u{1147F}'),
3994    ("newtailue", '\u{1980}', '\u{19DF}'),
3995    ("nko", '\u{07C0}', '\u{07FF}'),
3996    ("numberforms", '\u{2150}', '\u{218F}'),
3997    ("nushu", '\u{1B170}', '\u{1B2FF}'),
3998    ("nyiakengpuachuehmong", '\u{1E100}', '\u{1E14F}'),
3999    ("ogham", '\u{1680}', '\u{169F}'),
4000    ("olchiki", '\u{1C50}', '\u{1C7F}'),
4001    ("oldhungarian", '\u{10C80}', '\u{10CFF}'),
4002    ("olditalic", '\u{10300}', '\u{1032F}'),
4003    ("oldnortharabian", '\u{10A80}', '\u{10A9F}'),
4004    ("oldpermic", '\u{10350}', '\u{1037F}'),
4005    ("oldpersian", '\u{103A0}', '\u{103DF}'),
4006    ("oldsogdian", '\u{10F00}', '\u{10F2F}'),
4007    ("oldsoutharabian", '\u{10A60}', '\u{10A7F}'),
4008    ("oldturkic", '\u{10C00}', '\u{10C4F}'),
4009    ("olduyghur", '\u{10F70}', '\u{10FAF}'),
4010    ("olonal", '\u{1E5D0}', '\u{1E5FF}'),
4011    ("opticalcharacterrecognition", '\u{2440}', '\u{245F}'),
4012    ("oriya", '\u{0B00}', '\u{0B7F}'),
4013    ("ornamentaldingbats", '\u{1F650}', '\u{1F67F}'),
4014    ("osage", '\u{104B0}', '\u{104FF}'),
4015    ("osmanya", '\u{10480}', '\u{104AF}'),
4016    ("ottomansiyaqnumbers", '\u{1ED00}', '\u{1ED4F}'),
4017    ("pahawhhmong", '\u{16B00}', '\u{16B8F}'),
4018    ("palmyrene", '\u{10860}', '\u{1087F}'),
4019    ("paucinhau", '\u{11AC0}', '\u{11AFF}'),
4020    ("phagspa", '\u{A840}', '\u{A87F}'),
4021    ("phaistosdisc", '\u{101D0}', '\u{101FF}'),
4022    ("phoenician", '\u{10900}', '\u{1091F}'),
4023    ("phoneticextensions", '\u{1D00}', '\u{1D7F}'),
4024    ("phoneticextensionssupplement", '\u{1D80}', '\u{1DBF}'),
4025    ("playingcards", '\u{1F0A0}', '\u{1F0FF}'),
4026    ("privateusearea", '\u{E000}', '\u{F8FF}'),
4027    ("psalterpahlavi", '\u{10B80}', '\u{10BAF}'),
4028    ("rejang", '\u{A930}', '\u{A95F}'),
4029    ("ruminumeralsymbols", '\u{10E60}', '\u{10E7F}'),
4030    ("runic", '\u{16A0}', '\u{16FF}'),
4031    ("samaritan", '\u{0800}', '\u{083F}'),
4032    ("saurashtra", '\u{A880}', '\u{A8DF}'),
4033    ("sharada", '\u{11180}', '\u{111DF}'),
4034    ("shavian", '\u{10450}', '\u{1047F}'),
4035    ("shorthandformatcontrols", '\u{1BCA0}', '\u{1BCAF}'),
4036    ("siddham", '\u{11580}', '\u{115FF}'),
4037    ("sinhala", '\u{0D80}', '\u{0DFF}'),
4038    ("sinhalaarchaicnumbers", '\u{111E0}', '\u{111FF}'),
4039    ("smallformvariants", '\u{FE50}', '\u{FE6F}'),
4040    ("smallkanaextension", '\u{1B130}', '\u{1B16F}'),
4041    ("sogdian", '\u{10F30}', '\u{10F6F}'),
4042    ("sorasompeng", '\u{110D0}', '\u{110FF}'),
4043    ("soyombo", '\u{11A50}', '\u{11AAF}'),
4044    ("spacingmodifierletters", '\u{02B0}', '\u{02FF}'),
4045    ("specials", '\u{FFF0}', '\u{FFFF}'),
4046    ("sundanese", '\u{1B80}', '\u{1BBF}'),
4047    ("sundanesesupplement", '\u{1CC0}', '\u{1CCF}'),
4048    ("sunuwar", '\u{11BC0}', '\u{11BFF}'),
4049    ("superscriptsandsubscripts", '\u{2070}', '\u{209F}'),
4050    ("supplementalarrowsa", '\u{27F0}', '\u{27FF}'),
4051    ("supplementalarrowsb", '\u{2900}', '\u{297F}'),
4052    ("supplementalarrowsc", '\u{1F800}', '\u{1F8FF}'),
4053    ("supplementalmathematicaloperators", '\u{2A00}', '\u{2AFF}'),
4054    ("supplementalpunctuation", '\u{2E00}', '\u{2E7F}'),
4055    (
4056        "supplementalsymbolsandpictographs",
4057        '\u{1F900}',
4058        '\u{1F9FF}',
4059    ),
4060    ("supplementaryprivateuseareaa", '\u{F0000}', '\u{FFFFF}'),
4061    ("supplementaryprivateuseareab", '\u{100000}', '\u{10FFFF}'),
4062    ("suttonsignwriting", '\u{1D800}', '\u{1DAAF}'),
4063    ("sylotinagri", '\u{A800}', '\u{A82F}'),
4064    ("symbolsandpictographsextendeda", '\u{1FA70}', '\u{1FAFF}'),
4065    ("symbolsforlegacycomputing", '\u{1FB00}', '\u{1FBFF}'),
4066    (
4067        "symbolsforlegacycomputingsupplement",
4068        '\u{1CC00}',
4069        '\u{1CEBF}',
4070    ),
4071    ("syriac", '\u{0700}', '\u{074F}'),
4072    ("syriacsupplement", '\u{0860}', '\u{086F}'),
4073    ("tagalog", '\u{1700}', '\u{171F}'),
4074    ("tagbanwa", '\u{1760}', '\u{177F}'),
4075    ("tags", '\u{E0000}', '\u{E007F}'),
4076    ("taile", '\u{1950}', '\u{197F}'),
4077    ("taitham", '\u{1A20}', '\u{1AAF}'),
4078    ("taiviet", '\u{AA80}', '\u{AADF}'),
4079    ("taixuanjingsymbols", '\u{1D300}', '\u{1D35F}'),
4080    ("takri", '\u{11680}', '\u{116CF}'),
4081    ("tamil", '\u{0B80}', '\u{0BFF}'),
4082    ("tamilsupplement", '\u{11FC0}', '\u{11FFF}'),
4083    ("tangsa", '\u{16A70}', '\u{16ACF}'),
4084    ("tangut", '\u{17000}', '\u{187FF}'),
4085    ("tangutcomponents", '\u{18800}', '\u{18AFF}'),
4086    ("tangutsupplement", '\u{18D00}', '\u{18D7F}'),
4087    ("telugu", '\u{0C00}', '\u{0C7F}'),
4088    ("thaana", '\u{0780}', '\u{07BF}'),
4089    ("thai", '\u{0E00}', '\u{0E7F}'),
4090    ("tibetan", '\u{0F00}', '\u{0FFF}'),
4091    ("tifinagh", '\u{2D30}', '\u{2D7F}'),
4092    ("tirhuta", '\u{11480}', '\u{114DF}'),
4093    ("todhri", '\u{105C0}', '\u{105FF}'),
4094    ("toto", '\u{1E290}', '\u{1E2BF}'),
4095    ("transportandmapsymbols", '\u{1F680}', '\u{1F6FF}'),
4096    ("tulutigalari", '\u{11380}', '\u{113FF}'),
4097    ("ugaritic", '\u{10380}', '\u{1039F}'),
4098    ("unifiedcanadianaboriginalsyllabics", '\u{1400}', '\u{167F}'),
4099    (
4100        "unifiedcanadianaboriginalsyllabicsextended",
4101        '\u{18B0}',
4102        '\u{18FF}',
4103    ),
4104    (
4105        "unifiedcanadianaboriginalsyllabicsextendeda",
4106        '\u{11AB0}',
4107        '\u{11ABF}',
4108    ),
4109    ("vai", '\u{A500}', '\u{A63F}'),
4110    ("variationselectors", '\u{FE00}', '\u{FE0F}'),
4111    ("variationselectorssupplement", '\u{E0100}', '\u{E01EF}'),
4112    ("vedicextensions", '\u{1CD0}', '\u{1CFF}'),
4113    ("verticalforms", '\u{FE10}', '\u{FE1F}'),
4114    ("vithkuqi", '\u{10570}', '\u{105BF}'),
4115    ("wancho", '\u{1E2C0}', '\u{1E2FF}'),
4116    ("warangciti", '\u{118A0}', '\u{118FF}'),
4117    ("yezidi", '\u{10E80}', '\u{10EBF}'),
4118    ("yijinghexagramsymbols", '\u{4DC0}', '\u{4DFF}'),
4119    ("yiradicals", '\u{A490}', '\u{A4CF}'),
4120    ("yisyllables", '\u{A000}', '\u{A48F}'),
4121    ("zanabazarsquare", '\u{11A00}', '\u{11A4F}'),
4122    ("znamennymusicalnotation", '\u{1CF00}', '\u{1CFCF}'),
4123];
4124
4125pub fn seach_block_range(block_name: &str) -> Option<(char, char)> {
4126    // https://www.unicode.org/reports/tr44/#UAX44-LM3
4127    // > ignore case, whitespace, underscore, hyphens and any initial prefix string "is"
4128    // The prefix “is” is not included in the block name, so there is no need to remove the prefix.
4129    // Case is ignored, so convert everything to lowercase
4130    // and remove whitespaces, hyphens, and underscores.
4131    let block_name = block_name
4132        .trim()
4133        .replace(|c: char| c.is_whitespace() || c == '-' || c == '_', "")
4134        .to_lowercase();
4135    BLOCK_TO_RANGES
4136        .binary_search_by_key(&block_name.as_str(), |k| k.0)
4137        .ok()
4138        .map(|i| (BLOCK_TO_RANGES[i].1, BLOCK_TO_RANGES[i].2))
4139}