Merge lp:~logan/ubuntu/wily/python-idna/2.0 into lp:ubuntu/wily/python-idna

Proposed by Logan Rosen
Status: Merged
Merge reported by: Martin Pitt
Merged at revision: not available
Proposed branch: lp:~logan/ubuntu/wily/python-idna/2.0
Merge into: lp:ubuntu/wily/python-idna
Diff against target: 15373 lines (+11278/-3687)
20 files modified
HISTORY.rst (+22/-0)
LICENSE.rst (+2/-2)
PKG-INFO (+34/-4)
README.rst (+32/-4)
debian/changelog (+10/-0)
debian/control (+7/-2)
debian/watch (+2/-2)
idna.egg-info/PKG-INFO (+34/-4)
idna.egg-info/SOURCES.txt (+5/-2)
idna.egg-info/pbr.json (+1/-0)
idna/codec.py (+4/-4)
idna/core.py (+72/-29)
idna/idnadata.py (+3565/-3366)
idna/uts46data.py (+7267/-0)
setup.py (+2/-1)
tests/test_idna.py (+3/-1)
tests/test_idna_tr46.py (+0/-259)
tests/test_idna_uts46.py (+114/-0)
tools/build-idnadata.py (+7/-7)
tools/build-uts46data.py (+95/-0)
To merge this branch: bzr merge lp:~logan/ubuntu/wily/python-idna/2.0
Reviewer Review Type Date Requested Status
Martin Pitt Approve
Review via email: mp+260031@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Martin Pitt (pitti) wrote :

Uploaded, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'HISTORY.rst'
2--- HISTORY.rst 2014-07-29 14:25:38 +0000
3+++ HISTORY.rst 2015-05-25 06:48:31 +0000
4@@ -3,6 +3,28 @@
5 History
6 -------
7
8+2.0 (2015-05-18)
9+++++++++++++++++
10+
11+- Added support for Unicode IDNA Compatibility Processing (aka Unicode
12+ Technical Standard #46). Big thanks to Jon Ribbens who contributed this
13+ functionality.
14+
15+
16+1.1 (2015-01-27)
17+++++++++++++++++
18+
19+- Use IDNA properties from Unicode 6.3.0. Internet Architecture Board (IAB)
20+ issued statement recommending against the use of Unicode 7.0.0 until
21+ issues relating to U+08A1 codepoint are resolved. See http://goo.gl/Ed1n0K
22+- Identify some cases when label would be too longer to be a legal DNS name
23+ and raise an exception. (Thanks, Ed Lewis)
24+
25+1.0 (2014-10-12)
26+++++++++++++++++
27+
28+- Update IDNA properties for Unicode 7.0.0.
29+
30 0.9 (2014-07-18)
31 ++++++++++++++++
32
33
34=== modified file 'LICENSE.rst'
35--- LICENSE.rst 2014-07-29 14:25:38 +0000
36+++ LICENSE.rst 2015-05-25 06:48:31 +0000
37@@ -1,7 +1,7 @@
38 License
39 -------
40
41-Copyright (c) 2013-2014, Kim Davies. All rights reserved.
42+Copyright (c) 2013-2015, Kim Davies. All rights reserved.
43
44 Redistribution and use in source and binary forms, with or without
45 modification, are permitted provided that the following conditions are met:
46@@ -33,7 +33,7 @@
47
48 Portions of the codec implementation and unit tests are derived from the
49 Python standard library, which carries the `Python Software Foundation
50-License<https://docs.python.org/2/license.html>`_:
51+License <https://docs.python.org/2/license.html>`_:
52
53 Copyright (c) 2001-2014 Python Software Foundation; All Rights Reserved
54
55
56=== modified file 'PKG-INFO'
57--- PKG-INFO 2014-07-29 14:25:38 +0000
58+++ PKG-INFO 2015-05-25 06:48:31 +0000
59@@ -1,6 +1,6 @@
60 Metadata-Version: 1.1
61 Name: idna
62-Version: 0.9
63+Version: 2.0
64 Summary: Internationalized Domain Names in Applications (IDNA)
65 Home-page: https://github.com/kjd/idna
66 Author: Kim Davies
67@@ -88,6 +88,36 @@
68 >>> idna.alabel(u'测试')
69 'xn--0zwm56d'
70
71+ Compatibility Mapping (UTS #46)
72+ +++++++++++++++++++++++++++++++
73+
74+ As described in RFC 5895, the IDNA specification no longer including mappings
75+ from different forms of input that a user may enter, to the form that is provided
76+ to the IDNA functions. This functionality is now a local user-interface issue
77+ distinct from the IDNA functionality.
78+
79+ The Unicode Consortium has developed one such user-level mapping, known as
80+ `Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
81+ It provides for both transitional mapping and non-transitional mapping described
82+ in this document.
83+
84+ .. code-block:: pycon
85+
86+ >>> import idna
87+ >>> idna.encode(u'Königsgäßchen')
88+ ...
89+ idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of u'K\xf6nigsg\xe4\xdfchen' not allowed
90+ >>> idna.encode(u'Königsgäßchen', uts46=True)
91+ 'xn--knigsgchen-b4a3dun'
92+ >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True)
93+ 'xn--knigsgsschen-lcb0w'
94+
95+ Note that implementors should use transitional processing with caution as the outputs
96+ of the functions may differ from what is expected, as noted in the example.
97+
98+ ``encodings.idna`` Compatibility
99+ ++++++++++++++++++++++++++++++++
100+
101 Function calls from the Python built-in ``encodings.idna`` module are
102 mapping to their IDNA 2008 equivalents using the ``idna.compat`` module.
103 Simply substitute the ``import`` clause in your code to refer to the
104@@ -110,16 +140,15 @@
105 -------
106
107 The library has a test suite based on each rule of the IDNA specification, as
108- well as a subset of tests that are defined in Unicode Technical Standard 46,
109+ well as test that are provided as part of the Unicode Technical Standard 46,
110 `Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
111- Note that not all tests defined there are used, as TR46 defines tests for a
112- normalisation approach beyond merely implementing IDNA2008.
113
114 The tests are run automatically on each commit to the master branch of the
115 idna git repository at Travis CI:
116
117 .. image:: https://travis-ci.org/kjd/idna.svg?branch=master
118 :target: https://travis-ci.org/kjd/idna
119+
120 Platform: UNKNOWN
121 Classifier: Development Status :: 5 - Production/Stable
122 Classifier: Intended Audience :: Developers
123@@ -131,6 +160,7 @@
124 Classifier: Programming Language :: Python :: 2.7
125 Classifier: Programming Language :: Python :: 3
126 Classifier: Programming Language :: Python :: 3.3
127+Classifier: Programming Language :: Python :: 3.4
128 Classifier: Topic :: Internet :: Name Service (DNS)
129 Classifier: Topic :: Software Development :: Libraries :: Python Modules
130 Classifier: Topic :: Utilities
131
132=== modified file 'README.rst'
133--- README.rst 2014-07-29 14:25:38 +0000
134+++ README.rst 2015-05-25 06:48:31 +0000
135@@ -80,6 +80,36 @@
136 >>> idna.alabel(u'测试')
137 'xn--0zwm56d'
138
139+Compatibility Mapping (UTS #46)
140++++++++++++++++++++++++++++++++
141+
142+As described in RFC 5895, the IDNA specification no longer including mappings
143+from different forms of input that a user may enter, to the form that is provided
144+to the IDNA functions. This functionality is now a local user-interface issue
145+distinct from the IDNA functionality.
146+
147+The Unicode Consortium has developed one such user-level mapping, known as
148+`Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
149+It provides for both transitional mapping and non-transitional mapping described
150+in this document.
151+
152+.. code-block:: pycon
153+
154+ >>> import idna
155+ >>> idna.encode(u'Königsgäßchen')
156+ ...
157+ idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of u'K\xf6nigsg\xe4\xdfchen' not allowed
158+ >>> idna.encode(u'Königsgäßchen', uts46=True)
159+ 'xn--knigsgchen-b4a3dun'
160+ >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True)
161+ 'xn--knigsgsschen-lcb0w'
162+
163+Note that implementors should use transitional processing with caution as the outputs
164+of the functions may differ from what is expected, as noted in the example.
165+
166+``encodings.idna`` Compatibility
167+++++++++++++++++++++++++++++++++
168+
169 Function calls from the Python built-in ``encodings.idna`` module are
170 mapping to their IDNA 2008 equivalents using the ``idna.compat`` module.
171 Simply substitute the ``import`` clause in your code to refer to the
172@@ -102,13 +132,11 @@
173 -------
174
175 The library has a test suite based on each rule of the IDNA specification, as
176-well as a subset of tests that are defined in Unicode Technical Standard 46,
177+well as test that are provided as part of the Unicode Technical Standard 46,
178 `Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
179-Note that not all tests defined there are used, as TR46 defines tests for a
180-normalisation approach beyond merely implementing IDNA2008.
181
182 The tests are run automatically on each commit to the master branch of the
183 idna git repository at Travis CI:
184
185 .. image:: https://travis-ci.org/kjd/idna.svg?branch=master
186- :target: https://travis-ci.org/kjd/idna
187\ No newline at end of file
188+ :target: https://travis-ci.org/kjd/idna
189
190=== modified file 'debian/changelog'
191--- debian/changelog 2014-07-29 14:25:38 +0000
192+++ debian/changelog 2015-05-25 06:48:31 +0000
193@@ -1,3 +1,13 @@
194+python-idna (2.0-0ubuntu1) wily; urgency=medium
195+
196+ * New upstream release.
197+ * debian/watch: Update to use PyPI redirector.
198+ * debian/control:
199+ - Distinguish Python version in descriptions for packages.
200+ - Bump Standards-Version to 3.9.6.
201+
202+ -- Logan Rosen <logan@ubuntu.com> Mon, 25 May 2015 02:36:04 -0400
203+
204 python-idna (0.9-0ubuntu1) utopic; urgency=medium
205
206 * Initial upload to Ubuntu.
207
208=== modified file 'debian/control'
209--- debian/control 2014-07-29 14:25:38 +0000
210+++ debian/control 2015-05-25 06:48:31 +0000
211@@ -1,11 +1,12 @@
212 Source: python-idna
213 Section: python
214 Priority: optional
215-Maintainer: Matthias Klose <doko@debian.org>
216+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
217+XSBC-Original-Maintainer: Matthias Klose <doko@debian.org>
218 Uploaders: Free Ekanayaka <freee@debian.org>
219 Build-Depends: debhelper (>= 9), dh-python, python3-all, python-all,
220 python3-setuptools, python-setuptools
221-Standards-Version: 3.9.5
222+Standards-Version: 3.9.6
223 Homepage: https://pypi.python.org/pypi/idna
224
225 Package: python-idna
226@@ -16,6 +17,8 @@
227 Applications (IDNA) protocol as specified in RFC 5891. This version
228 of the protocol is often referred to as “IDNA2008” and can produce
229 different results from the earlier standard from 2003.
230+ .
231+ This package installs the library for Python 2.
232
233 Package: python3-idna
234 Architecture: all
235@@ -25,3 +28,5 @@
236 Applications (IDNA) protocol as specified in RFC 5891. This version
237 of the protocol is often referred to as “IDNA2008” and can produce
238 different results from the earlier standard from 2003.
239+ .
240+ This package installs the library for Python 3.
241
242=== modified file 'debian/watch'
243--- debian/watch 2014-07-29 14:25:38 +0000
244+++ debian/watch 2015-05-25 06:48:31 +0000
245@@ -1,3 +1,3 @@
246 version=3
247-opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha|b|a)[\-\.]?\d*)$/$1~$2/ \
248-http://pypi.python.org/packages/source/i/idna/idna-(\d.*)\.(?:tgz|tar\.(?:gz|bz2|xz))
249+opts=uversionmangle=s/(rc|a|b|c)/~$1/ \
250+http://pypi.debian.net/idna/idna-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
251
252=== modified file 'idna.egg-info/PKG-INFO'
253--- idna.egg-info/PKG-INFO 2014-07-29 14:25:38 +0000
254+++ idna.egg-info/PKG-INFO 2015-05-25 06:48:31 +0000
255@@ -1,6 +1,6 @@
256 Metadata-Version: 1.1
257 Name: idna
258-Version: 0.9
259+Version: 2.0
260 Summary: Internationalized Domain Names in Applications (IDNA)
261 Home-page: https://github.com/kjd/idna
262 Author: Kim Davies
263@@ -88,6 +88,36 @@
264 >>> idna.alabel(u'测试')
265 'xn--0zwm56d'
266
267+ Compatibility Mapping (UTS #46)
268+ +++++++++++++++++++++++++++++++
269+
270+ As described in RFC 5895, the IDNA specification no longer including mappings
271+ from different forms of input that a user may enter, to the form that is provided
272+ to the IDNA functions. This functionality is now a local user-interface issue
273+ distinct from the IDNA functionality.
274+
275+ The Unicode Consortium has developed one such user-level mapping, known as
276+ `Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
277+ It provides for both transitional mapping and non-transitional mapping described
278+ in this document.
279+
280+ .. code-block:: pycon
281+
282+ >>> import idna
283+ >>> idna.encode(u'Königsgäßchen')
284+ ...
285+ idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of u'K\xf6nigsg\xe4\xdfchen' not allowed
286+ >>> idna.encode(u'Königsgäßchen', uts46=True)
287+ 'xn--knigsgchen-b4a3dun'
288+ >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True)
289+ 'xn--knigsgsschen-lcb0w'
290+
291+ Note that implementors should use transitional processing with caution as the outputs
292+ of the functions may differ from what is expected, as noted in the example.
293+
294+ ``encodings.idna`` Compatibility
295+ ++++++++++++++++++++++++++++++++
296+
297 Function calls from the Python built-in ``encodings.idna`` module are
298 mapping to their IDNA 2008 equivalents using the ``idna.compat`` module.
299 Simply substitute the ``import`` clause in your code to refer to the
300@@ -110,16 +140,15 @@
301 -------
302
303 The library has a test suite based on each rule of the IDNA specification, as
304- well as a subset of tests that are defined in Unicode Technical Standard 46,
305+ well as test that are provided as part of the Unicode Technical Standard 46,
306 `Unicode IDNA Compatibility Processing <http://unicode.org/reports/tr46/>`_.
307- Note that not all tests defined there are used, as TR46 defines tests for a
308- normalisation approach beyond merely implementing IDNA2008.
309
310 The tests are run automatically on each commit to the master branch of the
311 idna git repository at Travis CI:
312
313 .. image:: https://travis-ci.org/kjd/idna.svg?branch=master
314 :target: https://travis-ci.org/kjd/idna
315+
316 Platform: UNKNOWN
317 Classifier: Development Status :: 5 - Production/Stable
318 Classifier: Intended Audience :: Developers
319@@ -131,6 +160,7 @@
320 Classifier: Programming Language :: Python :: 2.7
321 Classifier: Programming Language :: Python :: 3
322 Classifier: Programming Language :: Python :: 3.3
323+Classifier: Programming Language :: Python :: 3.4
324 Classifier: Topic :: Internet :: Name Service (DNS)
325 Classifier: Topic :: Software Development :: Libraries :: Python Modules
326 Classifier: Topic :: Utilities
327
328=== modified file 'idna.egg-info/SOURCES.txt'
329--- idna.egg-info/SOURCES.txt 2014-07-29 14:25:38 +0000
330+++ idna.egg-info/SOURCES.txt 2015-05-25 06:48:31 +0000
331@@ -8,14 +8,17 @@
332 idna/compat.py
333 idna/core.py
334 idna/idnadata.py
335+idna/uts46data.py
336 idna.egg-info/PKG-INFO
337 idna.egg-info/SOURCES.txt
338 idna.egg-info/dependency_links.txt
339+idna.egg-info/pbr.json
340 idna.egg-info/top_level.txt
341 tests/IdnaTest.txt.gz
342 tests/__init__.py
343 tests/test_idna.py
344 tests/test_idna_codec.py
345 tests/test_idna_compat.py
346-tests/test_idna_tr46.py
347-tools/build-idnadata.py
348\ No newline at end of file
349+tests/test_idna_uts46.py
350+tools/build-idnadata.py
351+tools/build-uts46data.py
352\ No newline at end of file
353
354=== added file 'idna.egg-info/pbr.json'
355--- idna.egg-info/pbr.json 1970-01-01 00:00:00 +0000
356+++ idna.egg-info/pbr.json 2015-05-25 06:48:31 +0000
357@@ -0,0 +1,1 @@
358+{"is_release": true, "git_version": "bb6e94c"}
359\ No newline at end of file
360
361=== modified file 'idna/codec.py'
362--- idna/codec.py 2014-07-29 14:25:38 +0000
363+++ idna/codec.py 2015-05-25 06:48:31 +0000
364@@ -9,7 +9,7 @@
365 def encode(self, data, errors='strict'):
366
367 if errors != 'strict':
368- raise IDNAError("Unsupported error handling \"{}\"".format(errors))
369+ raise IDNAError("Unsupported error handling \"{0}\"".format(errors))
370
371 if not data:
372 return "", 0
373@@ -19,7 +19,7 @@
374 def decode(self, data, errors='strict'):
375
376 if errors != 'strict':
377- raise IDNAError("Unsupported error handling \"{}\"".format(errors))
378+ raise IDNAError("Unsupported error handling \"{0}\"".format(errors))
379
380 if not data:
381 return u"", 0
382@@ -29,7 +29,7 @@
383 class IncrementalEncoder(codecs.BufferedIncrementalEncoder):
384 def _buffer_encode(self, data, errors, final):
385 if errors != 'strict':
386- raise IDNAError("Unsupported error handling \"{}\"".format(errors))
387+ raise IDNAError("Unsupported error handling \"{0}\"".format(errors))
388
389 if not data:
390 return ("", 0)
391@@ -62,7 +62,7 @@
392 class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
393 def _buffer_decode(self, data, errors, final):
394 if errors != 'strict':
395- raise IDNAError("Unsupported error handling \"{}\"".format(errors))
396+ raise IDNAError("Unsupported error handling \"{0}\"".format(errors))
397
398 if not data:
399 return (u"", 0)
400
401=== modified file 'idna/core.py'
402--- idna/core.py 2014-07-29 14:25:38 +0000
403+++ idna/core.py 2015-05-25 06:48:31 +0000
404@@ -1,4 +1,5 @@
405 from . import idnadata
406+import bisect
407 import unicodedata
408 import re
409 import sys
410@@ -51,9 +52,9 @@
411 return True
412
413
414-def valid_string_length(label):
415+def valid_string_length(label, trailing_dot):
416
417- if len(label) > 254:
418+ if len(label) > (254 if trailing_dot else 253):
419 return False
420 return True
421
422@@ -66,7 +67,7 @@
423 direction = unicodedata.bidirectional(cp)
424 if direction == '':
425 # String likely comes from a newer version of Unicode
426- raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx))
427+ raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
428 if direction in ['R', 'AL', 'AN']:
429 bidi_label = True
430 break
431@@ -80,7 +81,7 @@
432 elif direction == 'L':
433 rtl = False
434 else:
435- raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label)))
436+ raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label)))
437
438 valid_ending = False
439 number_type = False
440@@ -90,7 +91,7 @@
441 if rtl:
442 # Bidi rule 2
443 if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
444- raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx))
445+ raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx))
446 # Bidi rule 3
447 if direction in ['R', 'AL', 'EN', 'AN']:
448 valid_ending = True
449@@ -106,7 +107,7 @@
450 else:
451 # Bidi rule 5
452 if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
453- raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx))
454+ raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx))
455 # Bidi rule 6
456 if direction in ['L', 'EN']:
457 valid_ending = True
458@@ -243,12 +244,12 @@
459 continue
460 elif cp_value in idnadata.codepoint_classes['CONTEXTJ']:
461 if not valid_contextj(label, pos):
462- raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label)))
463+ raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label)))
464 elif cp_value in idnadata.codepoint_classes['CONTEXTO']:
465 if not valid_contexto(label, pos):
466- raise InvalidCodepointContext('Codepoint {} not allowed at position {}'.format(_unot(cp_value), pos+1, repr(label)))
467+ raise InvalidCodepointContext('Codepoint {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label)))
468 else:
469- raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
470+ raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
471
472 check_bidi(label)
473
474@@ -260,7 +261,9 @@
475 try:
476 ulabel(label)
477 except:
478- raise IDNAError('The label {} is not a valid A-label'.format(label))
479+ raise IDNAError('The label {0} is not a valid A-label'.format(label))
480+ if not valid_label_length(label):
481+ raise IDNAError('Label too long')
482 return label
483 except UnicodeError:
484 pass
485@@ -300,42 +303,82 @@
486 return label
487
488
489-def encode(s, strict=False):
490-
491+def uts46_remap(domain, std3_rules=True, transitional=False):
492+ """Re-map the characters in the string according to UTS46 processing."""
493+ from .uts46data import uts46data
494+ output = u""
495+ try:
496+ for pos, char in enumerate(domain):
497+ code_point = ord(char)
498+ uts46row = uts46data[code_point if code_point < 256 else
499+ bisect.bisect_left(uts46data, (code_point, "Z")) - 1]
500+ status = uts46row[1]
501+ replacement = uts46row[2] if len(uts46row) == 3 else None
502+ if (status == "V" or
503+ (status == "D" and not transitional) or
504+ (status == "3" and std3_rules and replacement is None)):
505+ output += char
506+ elif replacement is not None and (status == "M" or
507+ (status == "3" and std3_rules) or
508+ (status == "D" and transitional)):
509+ output += replacement
510+ elif status != "I":
511+ raise IndexError()
512+ return unicodedata.normalize("NFC", output)
513+ except IndexError:
514+ raise InvalidCodepoint(
515+ "Codepoint {0} not allowed at position {1} in {2}".format(
516+ _unot(code_point), pos + 1, repr(domain)))
517+
518+
519+def encode(s, strict=False, uts46=False, std3_rules=False, transitional=False):
520+
521+ if isinstance(s, (bytes, bytearray)):
522+ s = s.decode("ascii")
523+ if uts46:
524+ s = uts46_remap(s, std3_rules, transitional)
525 trailing_dot = False
526 result = []
527 if strict:
528 labels = s.split('.')
529 else:
530 labels = _unicode_dots_re.split(s)
531+ while labels and not labels[0]:
532+ del labels[0]
533+ if not labels:
534+ raise IDNAError('Empty domain')
535 if labels[-1] == '':
536- labels = labels[0:-1]
537+ del labels[-1]
538 trailing_dot = True
539- if not labels:
540- raise IDNAError('Empty domain')
541 for label in labels:
542 result.append(alabel(label))
543 if trailing_dot:
544 result.append(b'')
545- return b'.'.join(result)
546-
547-
548-def decode(s, strict=False):
549-
550+ s = b'.'.join(result)
551+ if not valid_string_length(s, trailing_dot):
552+ raise IDNAError('Domain too long')
553+ return s
554+
555+
556+def decode(s, strict=False, uts46=False, std3_rules=False):
557+
558+ if isinstance(s, (bytes, bytearray)):
559+ s = s.decode("ascii")
560+ if uts46:
561+ s = uts46_remap(s, std3_rules, False)
562 trailing_dot = False
563 result = []
564- if isinstance(s, (bytes, bytearray)):
565- labels = s.split(b'.')
566+ if not strict:
567+ labels = _unicode_dots_re.split(s)
568 else:
569- if not strict:
570- labels = _unicode_dots_re.split(s)
571- else:
572- labels = s.split(u'.')
573+ labels = s.split(u'.')
574+ while labels and not labels[0]:
575+ del labels[0]
576+ if not labels:
577+ raise IDNAError('Empty domain')
578 if not labels[-1]:
579- labels = labels[0:-1]
580+ del labels[-1]
581 trailing_dot = True
582- if not labels:
583- raise IDNAError('Empty domain')
584 for label in labels:
585 result.append(ulabel(label))
586 if trailing_dot:
587
588=== modified file 'idna/idnadata.py'
589--- idna/idnadata.py 2014-07-29 14:25:38 +0000
590+++ idna/idnadata.py 2015-05-25 06:48:31 +0000
591@@ -1,3374 +1,3573 @@
592 # This file is automatically generated by build-idnadata.py
593
594 scripts = {
595- 'Arabic': frozenset(
596- list(range(0x600,0x605)) +
597- list(range(0x606,0x60c)) +
598- list(range(0x60d,0x61b)) +
599- [0x61c] +
600- [0x61e] +
601- list(range(0x620,0x640)) +
602- list(range(0x641,0x64b)) +
603- list(range(0x656,0x660)) +
604- list(range(0x66a,0x670)) +
605- list(range(0x671,0x6dd)) +
606- list(range(0x6de,0x700)) +
607- list(range(0x750,0x780)) +
608- [0x8a0] +
609- list(range(0x8a2,0x8ad)) +
610- list(range(0x8e4,0x8ff)) +
611- list(range(0xfb50,0xfbc2)) +
612- list(range(0xfbd3,0xfd3e)) +
613- list(range(0xfd50,0xfd90)) +
614- list(range(0xfd92,0xfdc8)) +
615- list(range(0xfdf0,0xfdfd)) +
616- list(range(0xfe70,0xfe75)) +
617- list(range(0xfe76,0xfefd)) +
618- list(range(0x10e60,0x10e7f)) +
619- list(range(0x1ee00,0x1ee04)) +
620- list(range(0x1ee05,0x1ee20)) +
621- list(range(0x1ee21,0x1ee23)) +
622- [0x1ee24] +
623- [0x1ee27] +
624- list(range(0x1ee29,0x1ee33)) +
625- list(range(0x1ee34,0x1ee38)) +
626- [0x1ee39] +
627- [0x1ee3b] +
628- [0x1ee42] +
629- [0x1ee47] +
630- [0x1ee49] +
631- [0x1ee4b] +
632- list(range(0x1ee4d,0x1ee50)) +
633- list(range(0x1ee51,0x1ee53)) +
634- [0x1ee54] +
635- [0x1ee57] +
636- [0x1ee59] +
637- [0x1ee5b] +
638- [0x1ee5d] +
639- [0x1ee5f] +
640- list(range(0x1ee61,0x1ee63)) +
641- [0x1ee64] +
642- list(range(0x1ee67,0x1ee6b)) +
643- list(range(0x1ee6c,0x1ee73)) +
644- list(range(0x1ee74,0x1ee78)) +
645- list(range(0x1ee79,0x1ee7d)) +
646- [0x1ee7e] +
647- list(range(0x1ee80,0x1ee8a)) +
648- list(range(0x1ee8b,0x1ee9c)) +
649- list(range(0x1eea1,0x1eea4)) +
650- list(range(0x1eea5,0x1eeaa)) +
651- list(range(0x1eeab,0x1eebc)) +
652- list(range(0x1eef0,0x1eef2))
653- ),
654- 'Armenian': frozenset(
655- list(range(0x531,0x557)) +
656- list(range(0x559,0x560)) +
657- list(range(0x561,0x588)) +
658- [0x58a] +
659- [0x58f] +
660- list(range(0xfb13,0xfb18))
661- ),
662- 'Avestan': frozenset(
663- list(range(0x10b00,0x10b36)) +
664- list(range(0x10b39,0x10b40))
665- ),
666- 'Balinese': frozenset(
667- list(range(0x1b00,0x1b4c)) +
668- list(range(0x1b50,0x1b7d))
669- ),
670- 'Bamum': frozenset(
671- list(range(0xa6a0,0xa6f8)) +
672- list(range(0x16800,0x16a39))
673- ),
674- 'Batak': frozenset(
675- list(range(0x1bc0,0x1bf4)) +
676- list(range(0x1bfc,0x1c00))
677- ),
678- 'Bengali': frozenset(
679- list(range(0x981,0x984)) +
680- list(range(0x985,0x98d)) +
681- list(range(0x98f,0x991)) +
682- list(range(0x993,0x9a9)) +
683- list(range(0x9aa,0x9b1)) +
684- [0x9b2] +
685- list(range(0x9b6,0x9ba)) +
686- list(range(0x9bc,0x9c5)) +
687- list(range(0x9c7,0x9c9)) +
688- list(range(0x9cb,0x9cf)) +
689- [0x9d7] +
690- list(range(0x9dc,0x9de)) +
691- list(range(0x9df,0x9e4)) +
692- list(range(0x9e6,0x9fc))
693- ),
694- 'Bopomofo': frozenset(
695- list(range(0x2ea,0x2ec)) +
696- list(range(0x3105,0x312e)) +
697- list(range(0x31a0,0x31bb))
698- ),
699- 'Brahmi': frozenset(
700- list(range(0x11000,0x1104e)) +
701- list(range(0x11052,0x11070))
702- ),
703- 'Braille': frozenset(
704- list(range(0x2800,0x2900))
705- ),
706- 'Buginese': frozenset(
707- list(range(0x1a00,0x1a1c)) +
708- list(range(0x1a1e,0x1a20))
709- ),
710- 'Buhid': frozenset(
711- list(range(0x1740,0x1754))
712- ),
713- 'Canadian_Aboriginal': frozenset(
714- list(range(0x1400,0x1680)) +
715- list(range(0x18b0,0x18f6))
716- ),
717- 'Carian': frozenset(
718- list(range(0x102a0,0x102d1))
719- ),
720- 'Chakma': frozenset(
721- list(range(0x11100,0x11135)) +
722- list(range(0x11136,0x11144))
723- ),
724- 'Cham': frozenset(
725- list(range(0xaa00,0xaa37)) +
726- list(range(0xaa40,0xaa4e)) +
727- list(range(0xaa50,0xaa5a)) +
728- list(range(0xaa5c,0xaa60))
729- ),
730- 'Cherokee': frozenset(
731- list(range(0x13a0,0x13f5))
732- ),
733- 'Common': frozenset(
734- list(range(0x0,0x41)) +
735- list(range(0x5b,0x61)) +
736- list(range(0x7b,0xaa)) +
737- list(range(0xab,0xba)) +
738- list(range(0xbb,0xc0)) +
739- [0xd7] +
740- [0xf7] +
741- list(range(0x2b9,0x2e0)) +
742- list(range(0x2e5,0x2ea)) +
743- list(range(0x2ec,0x300)) +
744- [0x374] +
745- [0x37e] +
746- [0x385] +
747- [0x387] +
748- [0x589] +
749- [0x60c] +
750- [0x61b] +
751- [0x61f] +
752- [0x640] +
753- list(range(0x660,0x66a)) +
754- [0x6dd] +
755- list(range(0x964,0x966)) +
756- [0xe3f] +
757- list(range(0xfd5,0xfd9)) +
758- [0x10fb] +
759- list(range(0x16eb,0x16ee)) +
760- list(range(0x1735,0x1737)) +
761- list(range(0x1802,0x1804)) +
762- [0x1805] +
763- [0x1cd3] +
764- [0x1ce1] +
765- list(range(0x1ce9,0x1ced)) +
766- list(range(0x1cee,0x1cf4)) +
767- list(range(0x1cf5,0x1cf7)) +
768- list(range(0x2000,0x200c)) +
769- list(range(0x200e,0x2065)) +
770- list(range(0x2066,0x2071)) +
771- list(range(0x2074,0x207f)) +
772- list(range(0x2080,0x208f)) +
773- list(range(0x20a0,0x20bb)) +
774- list(range(0x2100,0x2126)) +
775- list(range(0x2127,0x212a)) +
776- list(range(0x212c,0x2132)) +
777- list(range(0x2133,0x214e)) +
778- list(range(0x214f,0x2160)) +
779- [0x2189] +
780- list(range(0x2190,0x23f4)) +
781- list(range(0x2400,0x2427)) +
782- list(range(0x2440,0x244b)) +
783- list(range(0x2460,0x2700)) +
784- list(range(0x2701,0x2800)) +
785- list(range(0x2900,0x2b4d)) +
786- list(range(0x2b50,0x2b5a)) +
787- list(range(0x2e00,0x2e3c)) +
788- list(range(0x2ff0,0x2ffc)) +
789- list(range(0x3000,0x3005)) +
790- [0x3006] +
791- list(range(0x3008,0x3021)) +
792- list(range(0x3030,0x3038)) +
793- list(range(0x303c,0x3040)) +
794- list(range(0x309b,0x309d)) +
795- [0x30a0] +
796- list(range(0x30fb,0x30fd)) +
797- list(range(0x3190,0x31a0)) +
798- list(range(0x31c0,0x31e4)) +
799- list(range(0x3220,0x3260)) +
800- list(range(0x327f,0x32d0)) +
801- list(range(0x3358,0x3400)) +
802- list(range(0x4dc0,0x4e00)) +
803- list(range(0xa700,0xa722)) +
804- list(range(0xa788,0xa78b)) +
805- list(range(0xa830,0xa83a)) +
806- [0xa9cf] +
807- list(range(0xfd3e,0xfd40)) +
808- [0xfdfd] +
809- list(range(0xfe10,0xfe1a)) +
810- list(range(0xfe30,0xfe53)) +
811- list(range(0xfe54,0xfe67)) +
812- list(range(0xfe68,0xfe6c)) +
813- [0xfeff] +
814- list(range(0xff01,0xff21)) +
815- list(range(0xff3b,0xff41)) +
816- list(range(0xff5b,0xff66)) +
817- [0xff70] +
818- list(range(0xff9e,0xffa0)) +
819- list(range(0xffe0,0xffe7)) +
820- list(range(0xffe8,0xffef)) +
821- list(range(0xfff9,0xfffe)) +
822- list(range(0x10100,0x10103)) +
823- list(range(0x10107,0x10134)) +
824- list(range(0x10137,0x10140)) +
825- list(range(0x10190,0x1019c)) +
826- list(range(0x101d0,0x101fd)) +
827- list(range(0x1d000,0x1d0f6)) +
828- list(range(0x1d100,0x1d127)) +
829- list(range(0x1d129,0x1d167)) +
830- list(range(0x1d16a,0x1d17b)) +
831- list(range(0x1d183,0x1d185)) +
832- list(range(0x1d18c,0x1d1aa)) +
833- list(range(0x1d1ae,0x1d1de)) +
834- list(range(0x1d300,0x1d357)) +
835- list(range(0x1d360,0x1d372)) +
836- list(range(0x1d400,0x1d455)) +
837- list(range(0x1d456,0x1d49d)) +
838- list(range(0x1d49e,0x1d4a0)) +
839- [0x1d4a2] +
840- list(range(0x1d4a5,0x1d4a7)) +
841- list(range(0x1d4a9,0x1d4ad)) +
842- list(range(0x1d4ae,0x1d4ba)) +
843- [0x1d4bb] +
844- list(range(0x1d4bd,0x1d4c4)) +
845- list(range(0x1d4c5,0x1d506)) +
846- list(range(0x1d507,0x1d50b)) +
847- list(range(0x1d50d,0x1d515)) +
848- list(range(0x1d516,0x1d51d)) +
849- list(range(0x1d51e,0x1d53a)) +
850- list(range(0x1d53b,0x1d53f)) +
851- list(range(0x1d540,0x1d545)) +
852- [0x1d546] +
853- list(range(0x1d54a,0x1d551)) +
854- list(range(0x1d552,0x1d6a6)) +
855- list(range(0x1d6a8,0x1d7cc)) +
856- list(range(0x1d7ce,0x1d800)) +
857- list(range(0x1f000,0x1f02c)) +
858- list(range(0x1f030,0x1f094)) +
859- list(range(0x1f0a0,0x1f0af)) +
860- list(range(0x1f0b1,0x1f0bf)) +
861- list(range(0x1f0c1,0x1f0d0)) +
862- list(range(0x1f0d1,0x1f0e0)) +
863- list(range(0x1f100,0x1f10b)) +
864- list(range(0x1f110,0x1f12f)) +
865- list(range(0x1f130,0x1f16c)) +
866- list(range(0x1f170,0x1f19b)) +
867- list(range(0x1f1e6,0x1f200)) +
868- list(range(0x1f201,0x1f203)) +
869- list(range(0x1f210,0x1f23b)) +
870- list(range(0x1f240,0x1f249)) +
871- list(range(0x1f250,0x1f252)) +
872- list(range(0x1f300,0x1f321)) +
873- list(range(0x1f330,0x1f336)) +
874- list(range(0x1f337,0x1f37d)) +
875- list(range(0x1f380,0x1f394)) +
876- list(range(0x1f3a0,0x1f3c5)) +
877- list(range(0x1f3c6,0x1f3cb)) +
878- list(range(0x1f3e0,0x1f3f1)) +
879- list(range(0x1f400,0x1f43f)) +
880- [0x1f440] +
881- list(range(0x1f442,0x1f4f8)) +
882- list(range(0x1f4f9,0x1f4fd)) +
883- list(range(0x1f500,0x1f53e)) +
884- list(range(0x1f540,0x1f544)) +
885- list(range(0x1f550,0x1f568)) +
886- list(range(0x1f5fb,0x1f641)) +
887- list(range(0x1f645,0x1f650)) +
888- list(range(0x1f680,0x1f6c6)) +
889- list(range(0x1f700,0x1f774)) +
890- [0xe0001] +
891- list(range(0xe0020,0xe0080))
892- ),
893- 'Coptic': frozenset(
894- list(range(0x3e2,0x3f0)) +
895- list(range(0x2c80,0x2cf4)) +
896- list(range(0x2cf9,0x2d00))
897- ),
898- 'Cuneiform': frozenset(
899- list(range(0x12000,0x1236f)) +
900- list(range(0x12400,0x12463)) +
901- list(range(0x12470,0x12474))
902- ),
903- 'Cypriot': frozenset(
904- list(range(0x10800,0x10806)) +
905- [0x10808] +
906- list(range(0x1080a,0x10836)) +
907- list(range(0x10837,0x10839)) +
908- [0x1083c] +
909- [0x1083f]
910- ),
911- 'Cyrillic': frozenset(
912- list(range(0x400,0x485)) +
913- list(range(0x487,0x528)) +
914- [0x1d2b] +
915- [0x1d78] +
916- list(range(0x2de0,0x2e00)) +
917- list(range(0xa640,0xa698)) +
918- [0xa69f]
919- ),
920- 'Deseret': frozenset(
921- list(range(0x10400,0x10450))
922- ),
923- 'Devanagari': frozenset(
924- list(range(0x900,0x951)) +
925- list(range(0x953,0x964)) +
926- list(range(0x966,0x978)) +
927- list(range(0x979,0x980)) +
928- list(range(0xa8e0,0xa8fc))
929- ),
930- 'Egyptian_Hieroglyphs': frozenset(
931- list(range(0x13000,0x1342f))
932- ),
933- 'Ethiopic': frozenset(
934- list(range(0x1200,0x1249)) +
935- list(range(0x124a,0x124e)) +
936- list(range(0x1250,0x1257)) +
937- [0x1258] +
938- list(range(0x125a,0x125e)) +
939- list(range(0x1260,0x1289)) +
940- list(range(0x128a,0x128e)) +
941- list(range(0x1290,0x12b1)) +
942- list(range(0x12b2,0x12b6)) +
943- list(range(0x12b8,0x12bf)) +
944- [0x12c0] +
945- list(range(0x12c2,0x12c6)) +
946- list(range(0x12c8,0x12d7)) +
947- list(range(0x12d8,0x1311)) +
948- list(range(0x1312,0x1316)) +
949- list(range(0x1318,0x135b)) +
950- list(range(0x135d,0x137d)) +
951- list(range(0x1380,0x139a)) +
952- list(range(0x2d80,0x2d97)) +
953- list(range(0x2da0,0x2da7)) +
954- list(range(0x2da8,0x2daf)) +
955- list(range(0x2db0,0x2db7)) +
956- list(range(0x2db8,0x2dbf)) +
957- list(range(0x2dc0,0x2dc7)) +
958- list(range(0x2dc8,0x2dcf)) +
959- list(range(0x2dd0,0x2dd7)) +
960- list(range(0x2dd8,0x2ddf)) +
961- list(range(0xab01,0xab07)) +
962- list(range(0xab09,0xab0f)) +
963- list(range(0xab11,0xab17)) +
964- list(range(0xab20,0xab27)) +
965- list(range(0xab28,0xab2f))
966- ),
967- 'Georgian': frozenset(
968- list(range(0x10a0,0x10c6)) +
969- [0x10c7] +
970- [0x10cd] +
971- list(range(0x10d0,0x10fb)) +
972- list(range(0x10fc,0x1100)) +
973- list(range(0x2d00,0x2d26)) +
974- [0x2d27] +
975- [0x2d2d]
976- ),
977- 'Glagolitic': frozenset(
978- list(range(0x2c00,0x2c2f)) +
979- list(range(0x2c30,0x2c5f))
980- ),
981- 'Gothic': frozenset(
982- list(range(0x10330,0x1034b))
983- ),
984- 'Greek': frozenset(
985- list(range(0x370,0x374)) +
986- list(range(0x375,0x378)) +
987- list(range(0x37a,0x37e)) +
988- [0x384] +
989- [0x386] +
990- list(range(0x388,0x38b)) +
991- [0x38c] +
992- list(range(0x38e,0x3a2)) +
993- list(range(0x3a3,0x3e2)) +
994- list(range(0x3f0,0x400)) +
995- list(range(0x1d26,0x1d2b)) +
996- list(range(0x1d5d,0x1d62)) +
997- list(range(0x1d66,0x1d6b)) +
998- [0x1dbf] +
999- list(range(0x1f00,0x1f16)) +
1000- list(range(0x1f18,0x1f1e)) +
1001- list(range(0x1f20,0x1f46)) +
1002- list(range(0x1f48,0x1f4e)) +
1003- list(range(0x1f50,0x1f58)) +
1004- [0x1f59] +
1005- [0x1f5b] +
1006- [0x1f5d] +
1007- list(range(0x1f5f,0x1f7e)) +
1008- list(range(0x1f80,0x1fb5)) +
1009- list(range(0x1fb6,0x1fc5)) +
1010- list(range(0x1fc6,0x1fd4)) +
1011- list(range(0x1fd6,0x1fdc)) +
1012- list(range(0x1fdd,0x1ff0)) +
1013- list(range(0x1ff2,0x1ff5)) +
1014- list(range(0x1ff6,0x1fff)) +
1015- [0x2126] +
1016- list(range(0x10140,0x1018b)) +
1017- list(range(0x1d200,0x1d246))
1018- ),
1019- 'Gujarati': frozenset(
1020- list(range(0xa81,0xa84)) +
1021- list(range(0xa85,0xa8e)) +
1022- list(range(0xa8f,0xa92)) +
1023- list(range(0xa93,0xaa9)) +
1024- list(range(0xaaa,0xab1)) +
1025- list(range(0xab2,0xab4)) +
1026- list(range(0xab5,0xaba)) +
1027- list(range(0xabc,0xac6)) +
1028- list(range(0xac7,0xaca)) +
1029- list(range(0xacb,0xace)) +
1030- [0xad0] +
1031- list(range(0xae0,0xae4)) +
1032- list(range(0xae6,0xaf2))
1033- ),
1034- 'Gurmukhi': frozenset(
1035- list(range(0xa01,0xa04)) +
1036- list(range(0xa05,0xa0b)) +
1037- list(range(0xa0f,0xa11)) +
1038- list(range(0xa13,0xa29)) +
1039- list(range(0xa2a,0xa31)) +
1040- list(range(0xa32,0xa34)) +
1041- list(range(0xa35,0xa37)) +
1042- list(range(0xa38,0xa3a)) +
1043- [0xa3c] +
1044- list(range(0xa3e,0xa43)) +
1045- list(range(0xa47,0xa49)) +
1046- list(range(0xa4b,0xa4e)) +
1047- [0xa51] +
1048- list(range(0xa59,0xa5d)) +
1049- [0xa5e] +
1050- list(range(0xa66,0xa76))
1051- ),
1052- 'Han': frozenset(
1053- list(range(0x2e80,0x2e9a)) +
1054- list(range(0x2e9b,0x2ef4)) +
1055- list(range(0x2f00,0x2fd6)) +
1056- [0x3005] +
1057- [0x3007] +
1058- list(range(0x3021,0x302a)) +
1059- list(range(0x3038,0x303c)) +
1060- list(range(0x3400,0x4db6)) +
1061- list(range(0x4e00,0x9fcd)) +
1062- list(range(0xf900,0xfa6e)) +
1063- list(range(0xfa70,0xfada)) +
1064- list(range(0x20000,0x2a6d7)) +
1065- list(range(0x2a700,0x2b735)) +
1066- list(range(0x2b740,0x2b81e)) +
1067- list(range(0x2f800,0x2fa1e))
1068- ),
1069- 'Hangul': frozenset(
1070- list(range(0x1100,0x1200)) +
1071- list(range(0x302e,0x3030)) +
1072- list(range(0x3131,0x318f)) +
1073- list(range(0x3200,0x321f)) +
1074- list(range(0x3260,0x327f)) +
1075- list(range(0xa960,0xa97d)) +
1076- list(range(0xac00,0xd7a4)) +
1077- list(range(0xd7b0,0xd7c7)) +
1078- list(range(0xd7cb,0xd7fc)) +
1079- list(range(0xffa0,0xffbf)) +
1080- list(range(0xffc2,0xffc8)) +
1081- list(range(0xffca,0xffd0)) +
1082- list(range(0xffd2,0xffd8)) +
1083- list(range(0xffda,0xffdd))
1084- ),
1085- 'Hanunoo': frozenset(
1086- list(range(0x1720,0x1735))
1087- ),
1088- 'Hebrew': frozenset(
1089- list(range(0x591,0x5c8)) +
1090- list(range(0x5d0,0x5eb)) +
1091- list(range(0x5f0,0x5f5)) +
1092- list(range(0xfb1d,0xfb37)) +
1093- list(range(0xfb38,0xfb3d)) +
1094- [0xfb3e] +
1095- list(range(0xfb40,0xfb42)) +
1096- list(range(0xfb43,0xfb45)) +
1097- list(range(0xfb46,0xfb50))
1098- ),
1099- 'Hiragana': frozenset(
1100- list(range(0x3041,0x3097)) +
1101- list(range(0x309d,0x30a0)) +
1102- [0x1b001] +
1103- [0x1f200]
1104- ),
1105- 'Imperial_Aramaic': frozenset(
1106- list(range(0x10840,0x10856)) +
1107- list(range(0x10857,0x10860))
1108- ),
1109- 'Inherited': frozenset(
1110- list(range(0x300,0x370)) +
1111- list(range(0x485,0x487)) +
1112- list(range(0x64b,0x656)) +
1113- [0x670] +
1114- list(range(0x951,0x953)) +
1115- list(range(0x1cd0,0x1cd3)) +
1116- list(range(0x1cd4,0x1ce1)) +
1117- list(range(0x1ce2,0x1ce9)) +
1118- [0x1ced] +
1119- [0x1cf4] +
1120- list(range(0x1dc0,0x1de7)) +
1121- list(range(0x1dfc,0x1e00)) +
1122- list(range(0x200c,0x200e)) +
1123- list(range(0x20d0,0x20f1)) +
1124- list(range(0x302a,0x302e)) +
1125- list(range(0x3099,0x309b)) +
1126- list(range(0xfe00,0xfe10)) +
1127- list(range(0xfe20,0xfe27)) +
1128- [0x101fd] +
1129- list(range(0x1d167,0x1d16a)) +
1130- list(range(0x1d17b,0x1d183)) +
1131- list(range(0x1d185,0x1d18c)) +
1132- list(range(0x1d1aa,0x1d1ae)) +
1133- list(range(0xe0100,0xe01f0))
1134- ),
1135- 'Inscriptional_Pahlavi': frozenset(
1136- list(range(0x10b60,0x10b73)) +
1137- list(range(0x10b78,0x10b80))
1138- ),
1139- 'Inscriptional_Parthian': frozenset(
1140- list(range(0x10b40,0x10b56)) +
1141- list(range(0x10b58,0x10b60))
1142- ),
1143- 'Javanese': frozenset(
1144- list(range(0xa980,0xa9ce)) +
1145- list(range(0xa9d0,0xa9da)) +
1146- list(range(0xa9de,0xa9e0))
1147- ),
1148- 'Kaithi': frozenset(
1149- list(range(0x11080,0x110c2))
1150- ),
1151- 'Kannada': frozenset(
1152- list(range(0xc82,0xc84)) +
1153- list(range(0xc85,0xc8d)) +
1154- list(range(0xc8e,0xc91)) +
1155- list(range(0xc92,0xca9)) +
1156- list(range(0xcaa,0xcb4)) +
1157- list(range(0xcb5,0xcba)) +
1158- list(range(0xcbc,0xcc5)) +
1159- list(range(0xcc6,0xcc9)) +
1160- list(range(0xcca,0xcce)) +
1161- list(range(0xcd5,0xcd7)) +
1162- [0xcde] +
1163- list(range(0xce0,0xce4)) +
1164- list(range(0xce6,0xcf0)) +
1165- list(range(0xcf1,0xcf3))
1166- ),
1167- 'Katakana': frozenset(
1168- list(range(0x30a1,0x30fb)) +
1169- list(range(0x30fd,0x3100)) +
1170- list(range(0x31f0,0x3200)) +
1171- list(range(0x32d0,0x32ff)) +
1172- list(range(0x3300,0x3358)) +
1173- list(range(0xff66,0xff70)) +
1174- list(range(0xff71,0xff9e)) +
1175- [0x1b000]
1176- ),
1177- 'Kayah_Li': frozenset(
1178- list(range(0xa900,0xa930))
1179- ),
1180- 'Kharoshthi': frozenset(
1181- list(range(0x10a00,0x10a04)) +
1182- list(range(0x10a05,0x10a07)) +
1183- list(range(0x10a0c,0x10a14)) +
1184- list(range(0x10a15,0x10a18)) +
1185- list(range(0x10a19,0x10a34)) +
1186- list(range(0x10a38,0x10a3b)) +
1187- list(range(0x10a3f,0x10a48)) +
1188- list(range(0x10a50,0x10a59))
1189- ),
1190- 'Khmer': frozenset(
1191- list(range(0x1780,0x17de)) +
1192- list(range(0x17e0,0x17ea)) +
1193- list(range(0x17f0,0x17fa)) +
1194- list(range(0x19e0,0x1a00))
1195- ),
1196- 'Lao': frozenset(
1197- list(range(0xe81,0xe83)) +
1198- [0xe84] +
1199- list(range(0xe87,0xe89)) +
1200- [0xe8a] +
1201- [0xe8d] +
1202- list(range(0xe94,0xe98)) +
1203- list(range(0xe99,0xea0)) +
1204- list(range(0xea1,0xea4)) +
1205- [0xea5] +
1206- [0xea7] +
1207- list(range(0xeaa,0xeac)) +
1208- list(range(0xead,0xeba)) +
1209- list(range(0xebb,0xebe)) +
1210- list(range(0xec0,0xec5)) +
1211- [0xec6] +
1212- list(range(0xec8,0xece)) +
1213- list(range(0xed0,0xeda)) +
1214- list(range(0xedc,0xee0))
1215- ),
1216- 'Latin': frozenset(
1217- list(range(0x41,0x5b)) +
1218- list(range(0x61,0x7b)) +
1219- [0xaa] +
1220- [0xba] +
1221- list(range(0xc0,0xd7)) +
1222- list(range(0xd8,0xf7)) +
1223- list(range(0xf8,0x2b9)) +
1224- list(range(0x2e0,0x2e5)) +
1225- list(range(0x1d00,0x1d26)) +
1226- list(range(0x1d2c,0x1d5d)) +
1227- list(range(0x1d62,0x1d66)) +
1228- list(range(0x1d6b,0x1d78)) +
1229- list(range(0x1d79,0x1dbf)) +
1230- list(range(0x1e00,0x1f00)) +
1231- [0x2071] +
1232- [0x207f] +
1233- list(range(0x2090,0x209d)) +
1234- list(range(0x212a,0x212c)) +
1235- [0x2132] +
1236- [0x214e] +
1237- list(range(0x2160,0x2189)) +
1238- list(range(0x2c60,0x2c80)) +
1239- list(range(0xa722,0xa788)) +
1240- list(range(0xa78b,0xa78f)) +
1241- list(range(0xa790,0xa794)) +
1242- list(range(0xa7a0,0xa7ab)) +
1243- list(range(0xa7f8,0xa800)) +
1244- list(range(0xfb00,0xfb07)) +
1245- list(range(0xff21,0xff3b)) +
1246- list(range(0xff41,0xff5b))
1247- ),
1248- 'Lepcha': frozenset(
1249- list(range(0x1c00,0x1c38)) +
1250- list(range(0x1c3b,0x1c4a)) +
1251- list(range(0x1c4d,0x1c50))
1252- ),
1253- 'Limbu': frozenset(
1254- list(range(0x1900,0x191d)) +
1255- list(range(0x1920,0x192c)) +
1256- list(range(0x1930,0x193c)) +
1257- [0x1940] +
1258- list(range(0x1944,0x1950))
1259- ),
1260- 'Linear_B': frozenset(
1261- list(range(0x10000,0x1000c)) +
1262- list(range(0x1000d,0x10027)) +
1263- list(range(0x10028,0x1003b)) +
1264- list(range(0x1003c,0x1003e)) +
1265- list(range(0x1003f,0x1004e)) +
1266- list(range(0x10050,0x1005e)) +
1267- list(range(0x10080,0x100fb))
1268- ),
1269- 'Lisu': frozenset(
1270- list(range(0xa4d0,0xa500))
1271- ),
1272- 'Lycian': frozenset(
1273- list(range(0x10280,0x1029d))
1274- ),
1275- 'Lydian': frozenset(
1276- list(range(0x10920,0x1093a)) +
1277- [0x1093f]
1278- ),
1279- 'Malayalam': frozenset(
1280- list(range(0xd02,0xd04)) +
1281- list(range(0xd05,0xd0d)) +
1282- list(range(0xd0e,0xd11)) +
1283- list(range(0xd12,0xd3b)) +
1284- list(range(0xd3d,0xd45)) +
1285- list(range(0xd46,0xd49)) +
1286- list(range(0xd4a,0xd4f)) +
1287- [0xd57] +
1288- list(range(0xd60,0xd64)) +
1289- list(range(0xd66,0xd76)) +
1290- list(range(0xd79,0xd80))
1291- ),
1292- 'Mandaic': frozenset(
1293- list(range(0x840,0x85c)) +
1294- [0x85e]
1295- ),
1296- 'Meetei_Mayek': frozenset(
1297- list(range(0xaae0,0xaaf7)) +
1298- list(range(0xabc0,0xabee)) +
1299- list(range(0xabf0,0xabfa))
1300- ),
1301- 'Meroitic_Cursive': frozenset(
1302- list(range(0x109a0,0x109b8)) +
1303- list(range(0x109be,0x109c0))
1304- ),
1305- 'Meroitic_Hieroglyphs': frozenset(
1306- list(range(0x10980,0x109a0))
1307- ),
1308- 'Miao': frozenset(
1309- list(range(0x16f00,0x16f45)) +
1310- list(range(0x16f50,0x16f7f)) +
1311- list(range(0x16f8f,0x16fa0))
1312- ),
1313- 'Mongolian': frozenset(
1314- list(range(0x1800,0x1802)) +
1315- [0x1804] +
1316- list(range(0x1806,0x180f)) +
1317- list(range(0x1810,0x181a)) +
1318- list(range(0x1820,0x1878)) +
1319- list(range(0x1880,0x18ab))
1320- ),
1321- 'Myanmar': frozenset(
1322- list(range(0x1000,0x10a0)) +
1323- list(range(0xaa60,0xaa7c))
1324- ),
1325- 'New_Tai_Lue': frozenset(
1326- list(range(0x1980,0x19ac)) +
1327- list(range(0x19b0,0x19ca)) +
1328- list(range(0x19d0,0x19db)) +
1329- list(range(0x19de,0x19e0))
1330- ),
1331- 'Nko': frozenset(
1332- list(range(0x7c0,0x7fb))
1333- ),
1334- 'Ogham': frozenset(
1335- list(range(0x1680,0x169d))
1336- ),
1337- 'Ol_Chiki': frozenset(
1338- list(range(0x1c50,0x1c80))
1339- ),
1340- 'Old_Italic': frozenset(
1341- list(range(0x10300,0x1031f)) +
1342- list(range(0x10320,0x10324))
1343- ),
1344- 'Old_Persian': frozenset(
1345- list(range(0x103a0,0x103c4)) +
1346- list(range(0x103c8,0x103d6))
1347- ),
1348- 'Old_South_Arabian': frozenset(
1349- list(range(0x10a60,0x10a80))
1350- ),
1351- 'Old_Turkic': frozenset(
1352- list(range(0x10c00,0x10c49))
1353- ),
1354- 'Oriya': frozenset(
1355- list(range(0xb01,0xb04)) +
1356- list(range(0xb05,0xb0d)) +
1357- list(range(0xb0f,0xb11)) +
1358- list(range(0xb13,0xb29)) +
1359- list(range(0xb2a,0xb31)) +
1360- list(range(0xb32,0xb34)) +
1361- list(range(0xb35,0xb3a)) +
1362- list(range(0xb3c,0xb45)) +
1363- list(range(0xb47,0xb49)) +
1364- list(range(0xb4b,0xb4e)) +
1365- list(range(0xb56,0xb58)) +
1366- list(range(0xb5c,0xb5e)) +
1367- list(range(0xb5f,0xb64)) +
1368- list(range(0xb66,0xb78))
1369- ),
1370- 'Osmanya': frozenset(
1371- list(range(0x10480,0x1049e)) +
1372- list(range(0x104a0,0x104aa))
1373- ),
1374- 'Phags_Pa': frozenset(
1375- list(range(0xa840,0xa878))
1376- ),
1377- 'Phoenician': frozenset(
1378- list(range(0x10900,0x1091c)) +
1379- [0x1091f]
1380- ),
1381- 'Rejang': frozenset(
1382- list(range(0xa930,0xa954)) +
1383- [0xa95f]
1384- ),
1385- 'Runic': frozenset(
1386- list(range(0x16a0,0x16eb)) +
1387- list(range(0x16ee,0x16f1))
1388- ),
1389- 'Samaritan': frozenset(
1390- list(range(0x800,0x82e)) +
1391- list(range(0x830,0x83f))
1392- ),
1393- 'Saurashtra': frozenset(
1394- list(range(0xa880,0xa8c5)) +
1395- list(range(0xa8ce,0xa8da))
1396- ),
1397- 'Sharada': frozenset(
1398- list(range(0x11180,0x111c9)) +
1399- list(range(0x111d0,0x111da))
1400- ),
1401- 'Shavian': frozenset(
1402- list(range(0x10450,0x10480))
1403- ),
1404- 'Sinhala': frozenset(
1405- list(range(0xd82,0xd84)) +
1406- list(range(0xd85,0xd97)) +
1407- list(range(0xd9a,0xdb2)) +
1408- list(range(0xdb3,0xdbc)) +
1409- [0xdbd] +
1410- list(range(0xdc0,0xdc7)) +
1411- [0xdca] +
1412- list(range(0xdcf,0xdd5)) +
1413- [0xdd6] +
1414- list(range(0xdd8,0xde0)) +
1415- list(range(0xdf2,0xdf5))
1416- ),
1417- 'Sora_Sompeng': frozenset(
1418- list(range(0x110d0,0x110e9)) +
1419- list(range(0x110f0,0x110fa))
1420- ),
1421- 'Sundanese': frozenset(
1422- list(range(0x1b80,0x1bc0)) +
1423- list(range(0x1cc0,0x1cc8))
1424- ),
1425- 'Syloti_Nagri': frozenset(
1426- list(range(0xa800,0xa82c))
1427- ),
1428- 'Syriac': frozenset(
1429- list(range(0x700,0x70e)) +
1430- list(range(0x70f,0x74b)) +
1431- list(range(0x74d,0x750))
1432- ),
1433- 'Tagalog': frozenset(
1434- list(range(0x1700,0x170d)) +
1435- list(range(0x170e,0x1715))
1436- ),
1437- 'Tagbanwa': frozenset(
1438- list(range(0x1760,0x176d)) +
1439- list(range(0x176e,0x1771)) +
1440- list(range(0x1772,0x1774))
1441- ),
1442- 'Tai_Le': frozenset(
1443- list(range(0x1950,0x196e)) +
1444- list(range(0x1970,0x1975))
1445- ),
1446- 'Tai_Tham': frozenset(
1447- list(range(0x1a20,0x1a5f)) +
1448- list(range(0x1a60,0x1a7d)) +
1449- list(range(0x1a7f,0x1a8a)) +
1450- list(range(0x1a90,0x1a9a)) +
1451- list(range(0x1aa0,0x1aae))
1452- ),
1453- 'Tai_Viet': frozenset(
1454- list(range(0xaa80,0xaac3)) +
1455- list(range(0xaadb,0xaae0))
1456- ),
1457- 'Takri': frozenset(
1458- list(range(0x11680,0x116b8)) +
1459- list(range(0x116c0,0x116ca))
1460- ),
1461- 'Tamil': frozenset(
1462- list(range(0xb82,0xb84)) +
1463- list(range(0xb85,0xb8b)) +
1464- list(range(0xb8e,0xb91)) +
1465- list(range(0xb92,0xb96)) +
1466- list(range(0xb99,0xb9b)) +
1467- [0xb9c] +
1468- list(range(0xb9e,0xba0)) +
1469- list(range(0xba3,0xba5)) +
1470- list(range(0xba8,0xbab)) +
1471- list(range(0xbae,0xbba)) +
1472- list(range(0xbbe,0xbc3)) +
1473- list(range(0xbc6,0xbc9)) +
1474- list(range(0xbca,0xbce)) +
1475- [0xbd0] +
1476- [0xbd7] +
1477- list(range(0xbe6,0xbfb))
1478- ),
1479- 'Telugu': frozenset(
1480- list(range(0xc01,0xc04)) +
1481- list(range(0xc05,0xc0d)) +
1482- list(range(0xc0e,0xc11)) +
1483- list(range(0xc12,0xc29)) +
1484- list(range(0xc2a,0xc34)) +
1485- list(range(0xc35,0xc3a)) +
1486- list(range(0xc3d,0xc45)) +
1487- list(range(0xc46,0xc49)) +
1488- list(range(0xc4a,0xc4e)) +
1489- list(range(0xc55,0xc57)) +
1490- list(range(0xc58,0xc5a)) +
1491- list(range(0xc60,0xc64)) +
1492- list(range(0xc66,0xc70)) +
1493- list(range(0xc78,0xc80))
1494- ),
1495- 'Thaana': frozenset(
1496- list(range(0x780,0x7b2))
1497- ),
1498- 'Thai': frozenset(
1499- list(range(0xe01,0xe3b)) +
1500- list(range(0xe40,0xe5c))
1501- ),
1502- 'Tibetan': frozenset(
1503- list(range(0xf00,0xf48)) +
1504- list(range(0xf49,0xf6d)) +
1505- list(range(0xf71,0xf98)) +
1506- list(range(0xf99,0xfbd)) +
1507- list(range(0xfbe,0xfcd)) +
1508- list(range(0xfce,0xfd5)) +
1509- list(range(0xfd9,0xfdb))
1510- ),
1511- 'Tifinagh': frozenset(
1512- list(range(0x2d30,0x2d68)) +
1513- list(range(0x2d6f,0x2d71)) +
1514- [0x2d7f]
1515- ),
1516- 'Ugaritic': frozenset(
1517- list(range(0x10380,0x1039e)) +
1518- [0x1039f]
1519- ),
1520- 'Vai': frozenset(
1521- list(range(0xa500,0xa62c))
1522- ),
1523- 'Yi': frozenset(
1524- list(range(0xa000,0xa48d)) +
1525- list(range(0xa490,0xa4c7))
1526- ),
1527+ 'Arabic': frozenset(
1528+ list(range(0x600,0x605)) +
1529+ list(range(0x606,0x60c)) +
1530+ list(range(0x60d,0x61b)) +
1531+ [0x61e] +
1532+ list(range(0x620,0x640)) +
1533+ list(range(0x641,0x64b)) +
1534+ list(range(0x656,0x660)) +
1535+ list(range(0x66a,0x670)) +
1536+ list(range(0x671,0x6dd)) +
1537+ list(range(0x6de,0x700)) +
1538+ list(range(0x750,0x780)) +
1539+ list(range(0x8a0,0x8b3)) +
1540+ list(range(0x8e4,0x900)) +
1541+ list(range(0xfb50,0xfbc2)) +
1542+ list(range(0xfbd3,0xfd3e)) +
1543+ list(range(0xfd50,0xfd90)) +
1544+ list(range(0xfd92,0xfdc8)) +
1545+ list(range(0xfdf0,0xfdfe)) +
1546+ list(range(0xfe70,0xfe75)) +
1547+ list(range(0xfe76,0xfefd)) +
1548+ list(range(0x10e60,0x10e7f)) +
1549+ list(range(0x1ee00,0x1ee04)) +
1550+ list(range(0x1ee05,0x1ee20)) +
1551+ list(range(0x1ee21,0x1ee23)) +
1552+ [0x1ee24] +
1553+ [0x1ee27] +
1554+ list(range(0x1ee29,0x1ee33)) +
1555+ list(range(0x1ee34,0x1ee38)) +
1556+ [0x1ee39] +
1557+ [0x1ee3b] +
1558+ [0x1ee42] +
1559+ [0x1ee47] +
1560+ [0x1ee49] +
1561+ [0x1ee4b] +
1562+ list(range(0x1ee4d,0x1ee50)) +
1563+ list(range(0x1ee51,0x1ee53)) +
1564+ [0x1ee54] +
1565+ [0x1ee57] +
1566+ [0x1ee59] +
1567+ [0x1ee5b] +
1568+ [0x1ee5d] +
1569+ [0x1ee5f] +
1570+ list(range(0x1ee61,0x1ee63)) +
1571+ [0x1ee64] +
1572+ list(range(0x1ee67,0x1ee6b)) +
1573+ list(range(0x1ee6c,0x1ee73)) +
1574+ list(range(0x1ee74,0x1ee78)) +
1575+ list(range(0x1ee79,0x1ee7d)) +
1576+ [0x1ee7e] +
1577+ list(range(0x1ee80,0x1ee8a)) +
1578+ list(range(0x1ee8b,0x1ee9c)) +
1579+ list(range(0x1eea1,0x1eea4)) +
1580+ list(range(0x1eea5,0x1eeaa)) +
1581+ list(range(0x1eeab,0x1eebc)) +
1582+ list(range(0x1eef0,0x1eef2))
1583+ ),
1584+ 'Armenian': frozenset(
1585+ list(range(0x531,0x557)) +
1586+ list(range(0x559,0x560)) +
1587+ list(range(0x561,0x588)) +
1588+ [0x58a] +
1589+ list(range(0x58d,0x590)) +
1590+ list(range(0xfb13,0xfb18))
1591+ ),
1592+ 'Avestan': frozenset(
1593+ list(range(0x10b00,0x10b36)) +
1594+ list(range(0x10b39,0x10b40))
1595+ ),
1596+ 'Balinese': frozenset(
1597+ list(range(0x1b00,0x1b4c)) +
1598+ list(range(0x1b50,0x1b7d))
1599+ ),
1600+ 'Bamum': frozenset(
1601+ list(range(0xa6a0,0xa6f8)) +
1602+ list(range(0x16800,0x16a39))
1603+ ),
1604+ 'Bassa_Vah': frozenset(
1605+ list(range(0x16ad0,0x16aee)) +
1606+ list(range(0x16af0,0x16af6))
1607+ ),
1608+ 'Batak': frozenset(
1609+ list(range(0x1bc0,0x1bf4)) +
1610+ list(range(0x1bfc,0x1c00))
1611+ ),
1612+ 'Bengali': frozenset(
1613+ list(range(0x980,0x984)) +
1614+ list(range(0x985,0x98d)) +
1615+ list(range(0x98f,0x991)) +
1616+ list(range(0x993,0x9a9)) +
1617+ list(range(0x9aa,0x9b1)) +
1618+ [0x9b2] +
1619+ list(range(0x9b6,0x9ba)) +
1620+ list(range(0x9bc,0x9c5)) +
1621+ list(range(0x9c7,0x9c9)) +
1622+ list(range(0x9cb,0x9cf)) +
1623+ [0x9d7] +
1624+ list(range(0x9dc,0x9de)) +
1625+ list(range(0x9df,0x9e4)) +
1626+ list(range(0x9e6,0x9fc))
1627+ ),
1628+ 'Bopomofo': frozenset(
1629+ list(range(0x2ea,0x2ec)) +
1630+ list(range(0x3105,0x312e)) +
1631+ list(range(0x31a0,0x31bb))
1632+ ),
1633+ 'Brahmi': frozenset(
1634+ list(range(0x11000,0x1104e)) +
1635+ list(range(0x11052,0x11070)) +
1636+ [0x1107f]
1637+ ),
1638+ 'Braille': frozenset(
1639+ list(range(0x2800,0x2900))
1640+ ),
1641+ 'Buginese': frozenset(
1642+ list(range(0x1a00,0x1a1c)) +
1643+ list(range(0x1a1e,0x1a20))
1644+ ),
1645+ 'Buhid': frozenset(
1646+ list(range(0x1740,0x1754))
1647+ ),
1648+ 'Canadian_Aboriginal': frozenset(
1649+ list(range(0x1400,0x1680)) +
1650+ list(range(0x18b0,0x18f6))
1651+ ),
1652+ 'Carian': frozenset(
1653+ list(range(0x102a0,0x102d1))
1654+ ),
1655+ 'Caucasian_Albanian': frozenset(
1656+ list(range(0x10530,0x10564)) +
1657+ [0x1056f]
1658+ ),
1659+ 'Chakma': frozenset(
1660+ list(range(0x11100,0x11135)) +
1661+ list(range(0x11136,0x11144))
1662+ ),
1663+ 'Cham': frozenset(
1664+ list(range(0xaa00,0xaa37)) +
1665+ list(range(0xaa40,0xaa4e)) +
1666+ list(range(0xaa50,0xaa5a)) +
1667+ list(range(0xaa5c,0xaa60))
1668+ ),
1669+ 'Cherokee': frozenset(
1670+ list(range(0x13a0,0x13f5))
1671+ ),
1672+ 'Common': frozenset(
1673+ list(range(0x0,0x41)) +
1674+ list(range(0x5b,0x61)) +
1675+ list(range(0x7b,0xaa)) +
1676+ list(range(0xab,0xba)) +
1677+ list(range(0xbb,0xc0)) +
1678+ [0xd7] +
1679+ [0xf7] +
1680+ list(range(0x2b9,0x2e0)) +
1681+ list(range(0x2e5,0x2ea)) +
1682+ list(range(0x2ec,0x300)) +
1683+ [0x374] +
1684+ [0x37e] +
1685+ [0x385] +
1686+ [0x387] +
1687+ [0x589] +
1688+ [0x605] +
1689+ [0x60c] +
1690+ list(range(0x61b,0x61d)) +
1691+ [0x61f] +
1692+ [0x640] +
1693+ list(range(0x660,0x66a)) +
1694+ [0x6dd] +
1695+ list(range(0x964,0x966)) +
1696+ [0xe3f] +
1697+ list(range(0xfd5,0xfd9)) +
1698+ [0x10fb] +
1699+ list(range(0x16eb,0x16ee)) +
1700+ list(range(0x1735,0x1737)) +
1701+ list(range(0x1802,0x1804)) +
1702+ [0x1805] +
1703+ [0x1cd3] +
1704+ [0x1ce1] +
1705+ list(range(0x1ce9,0x1ced)) +
1706+ list(range(0x1cee,0x1cf4)) +
1707+ list(range(0x1cf5,0x1cf7)) +
1708+ list(range(0x2000,0x200c)) +
1709+ list(range(0x200e,0x2065)) +
1710+ list(range(0x2066,0x2071)) +
1711+ list(range(0x2074,0x207f)) +
1712+ list(range(0x2080,0x208f)) +
1713+ list(range(0x20a0,0x20be)) +
1714+ list(range(0x2100,0x2126)) +
1715+ list(range(0x2127,0x212a)) +
1716+ list(range(0x212c,0x2132)) +
1717+ list(range(0x2133,0x214e)) +
1718+ list(range(0x214f,0x2160)) +
1719+ [0x2189] +
1720+ list(range(0x2190,0x23fb)) +
1721+ list(range(0x2400,0x2427)) +
1722+ list(range(0x2440,0x244b)) +
1723+ list(range(0x2460,0x2800)) +
1724+ list(range(0x2900,0x2b74)) +
1725+ list(range(0x2b76,0x2b96)) +
1726+ list(range(0x2b98,0x2bba)) +
1727+ list(range(0x2bbd,0x2bc9)) +
1728+ list(range(0x2bca,0x2bd2)) +
1729+ list(range(0x2e00,0x2e43)) +
1730+ list(range(0x2ff0,0x2ffc)) +
1731+ list(range(0x3000,0x3005)) +
1732+ [0x3006] +
1733+ list(range(0x3008,0x3021)) +
1734+ list(range(0x3030,0x3038)) +
1735+ list(range(0x303c,0x3040)) +
1736+ list(range(0x309b,0x309d)) +
1737+ [0x30a0] +
1738+ list(range(0x30fb,0x30fd)) +
1739+ list(range(0x3190,0x31a0)) +
1740+ list(range(0x31c0,0x31e4)) +
1741+ list(range(0x3220,0x3260)) +
1742+ list(range(0x327f,0x32d0)) +
1743+ list(range(0x3358,0x3400)) +
1744+ list(range(0x4dc0,0x4e00)) +
1745+ list(range(0xa700,0xa722)) +
1746+ list(range(0xa788,0xa78b)) +
1747+ list(range(0xa830,0xa83a)) +
1748+ [0xa92e] +
1749+ [0xa9cf] +
1750+ [0xab5b] +
1751+ list(range(0xfd3e,0xfd40)) +
1752+ list(range(0xfe10,0xfe1a)) +
1753+ list(range(0xfe30,0xfe53)) +
1754+ list(range(0xfe54,0xfe67)) +
1755+ list(range(0xfe68,0xfe6c)) +
1756+ [0xfeff] +
1757+ list(range(0xff01,0xff21)) +
1758+ list(range(0xff3b,0xff41)) +
1759+ list(range(0xff5b,0xff66)) +
1760+ [0xff70] +
1761+ list(range(0xff9e,0xffa0)) +
1762+ list(range(0xffe0,0xffe7)) +
1763+ list(range(0xffe8,0xffef)) +
1764+ list(range(0xfff9,0xfffe)) +
1765+ list(range(0x10100,0x10103)) +
1766+ list(range(0x10107,0x10134)) +
1767+ list(range(0x10137,0x10140)) +
1768+ list(range(0x10190,0x1019c)) +
1769+ list(range(0x101d0,0x101fd)) +
1770+ list(range(0x102e1,0x102fc)) +
1771+ list(range(0x1bca0,0x1bca4)) +
1772+ list(range(0x1d000,0x1d0f6)) +
1773+ list(range(0x1d100,0x1d127)) +
1774+ list(range(0x1d129,0x1d167)) +
1775+ list(range(0x1d16a,0x1d17b)) +
1776+ list(range(0x1d183,0x1d185)) +
1777+ list(range(0x1d18c,0x1d1aa)) +
1778+ list(range(0x1d1ae,0x1d1de)) +
1779+ list(range(0x1d300,0x1d357)) +
1780+ list(range(0x1d360,0x1d372)) +
1781+ list(range(0x1d400,0x1d455)) +
1782+ list(range(0x1d456,0x1d49d)) +
1783+ list(range(0x1d49e,0x1d4a0)) +
1784+ [0x1d4a2] +
1785+ list(range(0x1d4a5,0x1d4a7)) +
1786+ list(range(0x1d4a9,0x1d4ad)) +
1787+ list(range(0x1d4ae,0x1d4ba)) +
1788+ [0x1d4bb] +
1789+ list(range(0x1d4bd,0x1d4c4)) +
1790+ list(range(0x1d4c5,0x1d506)) +
1791+ list(range(0x1d507,0x1d50b)) +
1792+ list(range(0x1d50d,0x1d515)) +
1793+ list(range(0x1d516,0x1d51d)) +
1794+ list(range(0x1d51e,0x1d53a)) +
1795+ list(range(0x1d53b,0x1d53f)) +
1796+ list(range(0x1d540,0x1d545)) +
1797+ [0x1d546] +
1798+ list(range(0x1d54a,0x1d551)) +
1799+ list(range(0x1d552,0x1d6a6)) +
1800+ list(range(0x1d6a8,0x1d7cc)) +
1801+ list(range(0x1d7ce,0x1d800)) +
1802+ list(range(0x1f000,0x1f02c)) +
1803+ list(range(0x1f030,0x1f094)) +
1804+ list(range(0x1f0a0,0x1f0af)) +
1805+ list(range(0x1f0b1,0x1f0c0)) +
1806+ list(range(0x1f0c1,0x1f0d0)) +
1807+ list(range(0x1f0d1,0x1f0f6)) +
1808+ list(range(0x1f100,0x1f10d)) +
1809+ list(range(0x1f110,0x1f12f)) +
1810+ list(range(0x1f130,0x1f16c)) +
1811+ list(range(0x1f170,0x1f19b)) +
1812+ list(range(0x1f1e6,0x1f200)) +
1813+ list(range(0x1f201,0x1f203)) +
1814+ list(range(0x1f210,0x1f23b)) +
1815+ list(range(0x1f240,0x1f249)) +
1816+ list(range(0x1f250,0x1f252)) +
1817+ list(range(0x1f300,0x1f32d)) +
1818+ list(range(0x1f330,0x1f37e)) +
1819+ list(range(0x1f380,0x1f3cf)) +
1820+ list(range(0x1f3d4,0x1f3f8)) +
1821+ list(range(0x1f400,0x1f4ff)) +
1822+ list(range(0x1f500,0x1f54b)) +
1823+ list(range(0x1f550,0x1f57a)) +
1824+ list(range(0x1f57b,0x1f5a4)) +
1825+ list(range(0x1f5a5,0x1f643)) +
1826+ list(range(0x1f645,0x1f6d0)) +
1827+ list(range(0x1f6e0,0x1f6ed)) +
1828+ list(range(0x1f6f0,0x1f6f4)) +
1829+ list(range(0x1f700,0x1f774)) +
1830+ list(range(0x1f780,0x1f7d5)) +
1831+ list(range(0x1f800,0x1f80c)) +
1832+ list(range(0x1f810,0x1f848)) +
1833+ list(range(0x1f850,0x1f85a)) +
1834+ list(range(0x1f860,0x1f888)) +
1835+ list(range(0x1f890,0x1f8ae)) +
1836+ [0xe0001] +
1837+ list(range(0xe0020,0xe0080))
1838+ ),
1839+ 'Coptic': frozenset(
1840+ list(range(0x3e2,0x3f0)) +
1841+ list(range(0x2c80,0x2cf4)) +
1842+ list(range(0x2cf9,0x2d00))
1843+ ),
1844+ 'Cuneiform': frozenset(
1845+ list(range(0x12000,0x12399)) +
1846+ list(range(0x12400,0x1246f)) +
1847+ list(range(0x12470,0x12475))
1848+ ),
1849+ 'Cypriot': frozenset(
1850+ list(range(0x10800,0x10806)) +
1851+ [0x10808] +
1852+ list(range(0x1080a,0x10836)) +
1853+ list(range(0x10837,0x10839)) +
1854+ [0x1083c] +
1855+ [0x1083f]
1856+ ),
1857+ 'Cyrillic': frozenset(
1858+ list(range(0x400,0x485)) +
1859+ list(range(0x487,0x530)) +
1860+ [0x1d2b] +
1861+ [0x1d78] +
1862+ list(range(0x2de0,0x2e00)) +
1863+ list(range(0xa640,0xa69e)) +
1864+ [0xa69f]
1865+ ),
1866+ 'Deseret': frozenset(
1867+ list(range(0x10400,0x10450))
1868+ ),
1869+ 'Devanagari': frozenset(
1870+ list(range(0x900,0x951)) +
1871+ list(range(0x953,0x964)) +
1872+ list(range(0x966,0x980)) +
1873+ list(range(0xa8e0,0xa8fc))
1874+ ),
1875+ 'Duployan': frozenset(
1876+ list(range(0x1bc00,0x1bc6b)) +
1877+ list(range(0x1bc70,0x1bc7d)) +
1878+ list(range(0x1bc80,0x1bc89)) +
1879+ list(range(0x1bc90,0x1bc9a)) +
1880+ list(range(0x1bc9c,0x1bca0))
1881+ ),
1882+ 'Egyptian_Hieroglyphs': frozenset(
1883+ list(range(0x13000,0x1342f))
1884+ ),
1885+ 'Elbasan': frozenset(
1886+ list(range(0x10500,0x10528))
1887+ ),
1888+ 'Ethiopic': frozenset(
1889+ list(range(0x1200,0x1249)) +
1890+ list(range(0x124a,0x124e)) +
1891+ list(range(0x1250,0x1257)) +
1892+ [0x1258] +
1893+ list(range(0x125a,0x125e)) +
1894+ list(range(0x1260,0x1289)) +
1895+ list(range(0x128a,0x128e)) +
1896+ list(range(0x1290,0x12b1)) +
1897+ list(range(0x12b2,0x12b6)) +
1898+ list(range(0x12b8,0x12bf)) +
1899+ [0x12c0] +
1900+ list(range(0x12c2,0x12c6)) +
1901+ list(range(0x12c8,0x12d7)) +
1902+ list(range(0x12d8,0x1311)) +
1903+ list(range(0x1312,0x1316)) +
1904+ list(range(0x1318,0x135b)) +
1905+ list(range(0x135d,0x137d)) +
1906+ list(range(0x1380,0x139a)) +
1907+ list(range(0x2d80,0x2d97)) +
1908+ list(range(0x2da0,0x2da7)) +
1909+ list(range(0x2da8,0x2daf)) +
1910+ list(range(0x2db0,0x2db7)) +
1911+ list(range(0x2db8,0x2dbf)) +
1912+ list(range(0x2dc0,0x2dc7)) +
1913+ list(range(0x2dc8,0x2dcf)) +
1914+ list(range(0x2dd0,0x2dd7)) +
1915+ list(range(0x2dd8,0x2ddf)) +
1916+ list(range(0xab01,0xab07)) +
1917+ list(range(0xab09,0xab0f)) +
1918+ list(range(0xab11,0xab17)) +
1919+ list(range(0xab20,0xab27)) +
1920+ list(range(0xab28,0xab2f))
1921+ ),
1922+ 'Georgian': frozenset(
1923+ list(range(0x10a0,0x10c6)) +
1924+ [0x10c7] +
1925+ [0x10cd] +
1926+ list(range(0x10d0,0x10fb)) +
1927+ list(range(0x10fc,0x1100)) +
1928+ list(range(0x2d00,0x2d26)) +
1929+ [0x2d27] +
1930+ [0x2d2d]
1931+ ),
1932+ 'Glagolitic': frozenset(
1933+ list(range(0x2c00,0x2c2f)) +
1934+ list(range(0x2c30,0x2c5f))
1935+ ),
1936+ 'Gothic': frozenset(
1937+ list(range(0x10330,0x1034b))
1938+ ),
1939+ 'Grantha': frozenset(
1940+ list(range(0x11301,0x11304)) +
1941+ list(range(0x11305,0x1130d)) +
1942+ list(range(0x1130f,0x11311)) +
1943+ list(range(0x11313,0x11329)) +
1944+ list(range(0x1132a,0x11331)) +
1945+ list(range(0x11332,0x11334)) +
1946+ list(range(0x11335,0x1133a)) +
1947+ list(range(0x1133c,0x11345)) +
1948+ list(range(0x11347,0x11349)) +
1949+ list(range(0x1134b,0x1134e)) +
1950+ [0x11357] +
1951+ list(range(0x1135d,0x11364)) +
1952+ list(range(0x11366,0x1136d)) +
1953+ list(range(0x11370,0x11375))
1954+ ),
1955+ 'Greek': frozenset(
1956+ list(range(0x370,0x374)) +
1957+ list(range(0x375,0x378)) +
1958+ list(range(0x37a,0x37e)) +
1959+ [0x37f] +
1960+ [0x384] +
1961+ [0x386] +
1962+ list(range(0x388,0x38b)) +
1963+ [0x38c] +
1964+ list(range(0x38e,0x3a2)) +
1965+ list(range(0x3a3,0x3e2)) +
1966+ list(range(0x3f0,0x400)) +
1967+ list(range(0x1d26,0x1d2b)) +
1968+ list(range(0x1d5d,0x1d62)) +
1969+ list(range(0x1d66,0x1d6b)) +
1970+ [0x1dbf] +
1971+ list(range(0x1f00,0x1f16)) +
1972+ list(range(0x1f18,0x1f1e)) +
1973+ list(range(0x1f20,0x1f46)) +
1974+ list(range(0x1f48,0x1f4e)) +
1975+ list(range(0x1f50,0x1f58)) +
1976+ [0x1f59] +
1977+ [0x1f5b] +
1978+ [0x1f5d] +
1979+ list(range(0x1f5f,0x1f7e)) +
1980+ list(range(0x1f80,0x1fb5)) +
1981+ list(range(0x1fb6,0x1fc5)) +
1982+ list(range(0x1fc6,0x1fd4)) +
1983+ list(range(0x1fd6,0x1fdc)) +
1984+ list(range(0x1fdd,0x1ff0)) +
1985+ list(range(0x1ff2,0x1ff5)) +
1986+ list(range(0x1ff6,0x1fff)) +
1987+ [0x2126] +
1988+ [0xab65] +
1989+ list(range(0x10140,0x1018d)) +
1990+ [0x101a0] +
1991+ list(range(0x1d200,0x1d246))
1992+ ),
1993+ 'Gujarati': frozenset(
1994+ list(range(0xa81,0xa84)) +
1995+ list(range(0xa85,0xa8e)) +
1996+ list(range(0xa8f,0xa92)) +
1997+ list(range(0xa93,0xaa9)) +
1998+ list(range(0xaaa,0xab1)) +
1999+ list(range(0xab2,0xab4)) +
2000+ list(range(0xab5,0xaba)) +
2001+ list(range(0xabc,0xac6)) +
2002+ list(range(0xac7,0xaca)) +
2003+ list(range(0xacb,0xace)) +
2004+ [0xad0] +
2005+ list(range(0xae0,0xae4)) +
2006+ list(range(0xae6,0xaf2))
2007+ ),
2008+ 'Gurmukhi': frozenset(
2009+ list(range(0xa01,0xa04)) +
2010+ list(range(0xa05,0xa0b)) +
2011+ list(range(0xa0f,0xa11)) +
2012+ list(range(0xa13,0xa29)) +
2013+ list(range(0xa2a,0xa31)) +
2014+ list(range(0xa32,0xa34)) +
2015+ list(range(0xa35,0xa37)) +
2016+ list(range(0xa38,0xa3a)) +
2017+ [0xa3c] +
2018+ list(range(0xa3e,0xa43)) +
2019+ list(range(0xa47,0xa49)) +
2020+ list(range(0xa4b,0xa4e)) +
2021+ [0xa51] +
2022+ list(range(0xa59,0xa5d)) +
2023+ [0xa5e] +
2024+ list(range(0xa66,0xa76))
2025+ ),
2026+ 'Han': frozenset(
2027+ list(range(0x2e80,0x2e9a)) +
2028+ list(range(0x2e9b,0x2ef4)) +
2029+ list(range(0x2f00,0x2fd6)) +
2030+ [0x3005] +
2031+ [0x3007] +
2032+ list(range(0x3021,0x302a)) +
2033+ list(range(0x3038,0x303c)) +
2034+ list(range(0x3400,0x4db6)) +
2035+ list(range(0x4e00,0x9fcd)) +
2036+ list(range(0xf900,0xfa6e)) +
2037+ list(range(0xfa70,0xfada)) +
2038+ list(range(0x20000,0x2a6d7)) +
2039+ list(range(0x2a700,0x2b735)) +
2040+ list(range(0x2b740,0x2b81e)) +
2041+ list(range(0x2f800,0x2fa1e))
2042+ ),
2043+ 'Hangul': frozenset(
2044+ list(range(0x1100,0x1200)) +
2045+ list(range(0x302e,0x3030)) +
2046+ list(range(0x3131,0x318f)) +
2047+ list(range(0x3200,0x321f)) +
2048+ list(range(0x3260,0x327f)) +
2049+ list(range(0xa960,0xa97d)) +
2050+ list(range(0xac00,0xd7a4)) +
2051+ list(range(0xd7b0,0xd7c7)) +
2052+ list(range(0xd7cb,0xd7fc)) +
2053+ list(range(0xffa0,0xffbf)) +
2054+ list(range(0xffc2,0xffc8)) +
2055+ list(range(0xffca,0xffd0)) +
2056+ list(range(0xffd2,0xffd8)) +
2057+ list(range(0xffda,0xffdd))
2058+ ),
2059+ 'Hanunoo': frozenset(
2060+ list(range(0x1720,0x1735))
2061+ ),
2062+ 'Hebrew': frozenset(
2063+ list(range(0x591,0x5c8)) +
2064+ list(range(0x5d0,0x5eb)) +
2065+ list(range(0x5f0,0x5f5)) +
2066+ list(range(0xfb1d,0xfb37)) +
2067+ list(range(0xfb38,0xfb3d)) +
2068+ [0xfb3e] +
2069+ list(range(0xfb40,0xfb42)) +
2070+ list(range(0xfb43,0xfb45)) +
2071+ list(range(0xfb46,0xfb50))
2072+ ),
2073+ 'Hiragana': frozenset(
2074+ list(range(0x3041,0x3097)) +
2075+ list(range(0x309d,0x30a0)) +
2076+ [0x1b001] +
2077+ [0x1f200]
2078+ ),
2079+ 'Imperial_Aramaic': frozenset(
2080+ list(range(0x10840,0x10856)) +
2081+ list(range(0x10857,0x10860))
2082+ ),
2083+ 'Inherited': frozenset(
2084+ list(range(0x300,0x370)) +
2085+ list(range(0x485,0x487)) +
2086+ list(range(0x64b,0x656)) +
2087+ [0x670] +
2088+ list(range(0x951,0x953)) +
2089+ list(range(0x1ab0,0x1abf)) +
2090+ list(range(0x1cd0,0x1cd3)) +
2091+ list(range(0x1cd4,0x1ce1)) +
2092+ list(range(0x1ce2,0x1ce9)) +
2093+ [0x1ced] +
2094+ [0x1cf4] +
2095+ list(range(0x1cf8,0x1cfa)) +
2096+ list(range(0x1dc0,0x1df6)) +
2097+ list(range(0x1dfc,0x1e00)) +
2098+ list(range(0x200c,0x200e)) +
2099+ list(range(0x20d0,0x20f1)) +
2100+ list(range(0x302a,0x302e)) +
2101+ list(range(0x3099,0x309b)) +
2102+ list(range(0xfe00,0xfe10)) +
2103+ list(range(0xfe20,0xfe2e)) +
2104+ [0x101fd] +
2105+ [0x102e0] +
2106+ list(range(0x1d167,0x1d16a)) +
2107+ list(range(0x1d17b,0x1d183)) +
2108+ list(range(0x1d185,0x1d18c)) +
2109+ list(range(0x1d1aa,0x1d1ae)) +
2110+ list(range(0xe0100,0xe01f0))
2111+ ),
2112+ 'Inscriptional_Pahlavi': frozenset(
2113+ list(range(0x10b60,0x10b73)) +
2114+ list(range(0x10b78,0x10b80))
2115+ ),
2116+ 'Inscriptional_Parthian': frozenset(
2117+ list(range(0x10b40,0x10b56)) +
2118+ list(range(0x10b58,0x10b60))
2119+ ),
2120+ 'Javanese': frozenset(
2121+ list(range(0xa980,0xa9ce)) +
2122+ list(range(0xa9d0,0xa9da)) +
2123+ list(range(0xa9de,0xa9e0))
2124+ ),
2125+ 'Kaithi': frozenset(
2126+ list(range(0x11080,0x110c2))
2127+ ),
2128+ 'Kannada': frozenset(
2129+ list(range(0xc81,0xc84)) +
2130+ list(range(0xc85,0xc8d)) +
2131+ list(range(0xc8e,0xc91)) +
2132+ list(range(0xc92,0xca9)) +
2133+ list(range(0xcaa,0xcb4)) +
2134+ list(range(0xcb5,0xcba)) +
2135+ list(range(0xcbc,0xcc5)) +
2136+ list(range(0xcc6,0xcc9)) +
2137+ list(range(0xcca,0xcce)) +
2138+ list(range(0xcd5,0xcd7)) +
2139+ [0xcde] +
2140+ list(range(0xce0,0xce4)) +
2141+ list(range(0xce6,0xcf0)) +
2142+ list(range(0xcf1,0xcf3))
2143+ ),
2144+ 'Katakana': frozenset(
2145+ list(range(0x30a1,0x30fb)) +
2146+ list(range(0x30fd,0x3100)) +
2147+ list(range(0x31f0,0x3200)) +
2148+ list(range(0x32d0,0x32ff)) +
2149+ list(range(0x3300,0x3358)) +
2150+ list(range(0xff66,0xff70)) +
2151+ list(range(0xff71,0xff9e)) +
2152+ [0x1b000]
2153+ ),
2154+ 'Kayah_Li': frozenset(
2155+ list(range(0xa900,0xa92e)) +
2156+ [0xa92f]
2157+ ),
2158+ 'Kharoshthi': frozenset(
2159+ list(range(0x10a00,0x10a04)) +
2160+ list(range(0x10a05,0x10a07)) +
2161+ list(range(0x10a0c,0x10a14)) +
2162+ list(range(0x10a15,0x10a18)) +
2163+ list(range(0x10a19,0x10a34)) +
2164+ list(range(0x10a38,0x10a3b)) +
2165+ list(range(0x10a3f,0x10a48)) +
2166+ list(range(0x10a50,0x10a59))
2167+ ),
2168+ 'Khmer': frozenset(
2169+ list(range(0x1780,0x17de)) +
2170+ list(range(0x17e0,0x17ea)) +
2171+ list(range(0x17f0,0x17fa)) +
2172+ list(range(0x19e0,0x1a00))
2173+ ),
2174+ 'Khojki': frozenset(
2175+ list(range(0x11200,0x11212)) +
2176+ list(range(0x11213,0x1123e))
2177+ ),
2178+ 'Khudawadi': frozenset(
2179+ list(range(0x112b0,0x112eb)) +
2180+ list(range(0x112f0,0x112fa))
2181+ ),
2182+ 'Lao': frozenset(
2183+ list(range(0xe81,0xe83)) +
2184+ [0xe84] +
2185+ list(range(0xe87,0xe89)) +
2186+ [0xe8a] +
2187+ [0xe8d] +
2188+ list(range(0xe94,0xe98)) +
2189+ list(range(0xe99,0xea0)) +
2190+ list(range(0xea1,0xea4)) +
2191+ [0xea5] +
2192+ [0xea7] +
2193+ list(range(0xeaa,0xeac)) +
2194+ list(range(0xead,0xeba)) +
2195+ list(range(0xebb,0xebe)) +
2196+ list(range(0xec0,0xec5)) +
2197+ [0xec6] +
2198+ list(range(0xec8,0xece)) +
2199+ list(range(0xed0,0xeda)) +
2200+ list(range(0xedc,0xee0))
2201+ ),
2202+ 'Latin': frozenset(
2203+ list(range(0x41,0x5b)) +
2204+ list(range(0x61,0x7b)) +
2205+ [0xaa] +
2206+ [0xba] +
2207+ list(range(0xc0,0xd7)) +
2208+ list(range(0xd8,0xf7)) +
2209+ list(range(0xf8,0x2b9)) +
2210+ list(range(0x2e0,0x2e5)) +
2211+ list(range(0x1d00,0x1d26)) +
2212+ list(range(0x1d2c,0x1d5d)) +
2213+ list(range(0x1d62,0x1d66)) +
2214+ list(range(0x1d6b,0x1d78)) +
2215+ list(range(0x1d79,0x1dbf)) +
2216+ list(range(0x1e00,0x1f00)) +
2217+ [0x2071] +
2218+ [0x207f] +
2219+ list(range(0x2090,0x209d)) +
2220+ list(range(0x212a,0x212c)) +
2221+ [0x2132] +
2222+ [0x214e] +
2223+ list(range(0x2160,0x2189)) +
2224+ list(range(0x2c60,0x2c80)) +
2225+ list(range(0xa722,0xa788)) +
2226+ list(range(0xa78b,0xa78f)) +
2227+ list(range(0xa790,0xa7ae)) +
2228+ list(range(0xa7b0,0xa7b2)) +
2229+ list(range(0xa7f7,0xa800)) +
2230+ list(range(0xab30,0xab5b)) +
2231+ list(range(0xab5c,0xab60)) +
2232+ [0xab64] +
2233+ list(range(0xfb00,0xfb07)) +
2234+ list(range(0xff21,0xff3b)) +
2235+ list(range(0xff41,0xff5b))
2236+ ),
2237+ 'Lepcha': frozenset(
2238+ list(range(0x1c00,0x1c38)) +
2239+ list(range(0x1c3b,0x1c4a)) +
2240+ list(range(0x1c4d,0x1c50))
2241+ ),
2242+ 'Limbu': frozenset(
2243+ list(range(0x1900,0x191f)) +
2244+ list(range(0x1920,0x192c)) +
2245+ list(range(0x1930,0x193c)) +
2246+ [0x1940] +
2247+ list(range(0x1944,0x1950))
2248+ ),
2249+ 'Linear_A': frozenset(
2250+ list(range(0x10600,0x10737)) +
2251+ list(range(0x10740,0x10756)) +
2252+ list(range(0x10760,0x10768))
2253+ ),
2254+ 'Linear_B': frozenset(
2255+ list(range(0x10000,0x1000c)) +
2256+ list(range(0x1000d,0x10027)) +
2257+ list(range(0x10028,0x1003b)) +
2258+ list(range(0x1003c,0x1003e)) +
2259+ list(range(0x1003f,0x1004e)) +
2260+ list(range(0x10050,0x1005e)) +
2261+ list(range(0x10080,0x100fb))
2262+ ),
2263+ 'Lisu': frozenset(
2264+ list(range(0xa4d0,0xa500))
2265+ ),
2266+ 'Lycian': frozenset(
2267+ list(range(0x10280,0x1029d))
2268+ ),
2269+ 'Lydian': frozenset(
2270+ list(range(0x10920,0x1093a)) +
2271+ [0x1093f]
2272+ ),
2273+ 'Mahajani': frozenset(
2274+ list(range(0x11150,0x11177))
2275+ ),
2276+ 'Malayalam': frozenset(
2277+ list(range(0xd01,0xd04)) +
2278+ list(range(0xd05,0xd0d)) +
2279+ list(range(0xd0e,0xd11)) +
2280+ list(range(0xd12,0xd3b)) +
2281+ list(range(0xd3d,0xd45)) +
2282+ list(range(0xd46,0xd49)) +
2283+ list(range(0xd4a,0xd4f)) +
2284+ [0xd57] +
2285+ list(range(0xd60,0xd64)) +
2286+ list(range(0xd66,0xd76)) +
2287+ list(range(0xd79,0xd80))
2288+ ),
2289+ 'Mandaic': frozenset(
2290+ list(range(0x840,0x85c)) +
2291+ [0x85e]
2292+ ),
2293+ 'Manichaean': frozenset(
2294+ list(range(0x10ac0,0x10ae7)) +
2295+ list(range(0x10aeb,0x10af7))
2296+ ),
2297+ 'Meetei_Mayek': frozenset(
2298+ list(range(0xaae0,0xaaf7)) +
2299+ list(range(0xabc0,0xabee)) +
2300+ list(range(0xabf0,0xabfa))
2301+ ),
2302+ 'Mende_Kikakui': frozenset(
2303+ list(range(0x1e800,0x1e8c5)) +
2304+ list(range(0x1e8c7,0x1e8d7))
2305+ ),
2306+ 'Meroitic_Cursive': frozenset(
2307+ list(range(0x109a0,0x109b8)) +
2308+ list(range(0x109be,0x109c0))
2309+ ),
2310+ 'Meroitic_Hieroglyphs': frozenset(
2311+ list(range(0x10980,0x109a0))
2312+ ),
2313+ 'Miao': frozenset(
2314+ list(range(0x16f00,0x16f45)) +
2315+ list(range(0x16f50,0x16f7f)) +
2316+ list(range(0x16f8f,0x16fa0))
2317+ ),
2318+ 'Modi': frozenset(
2319+ list(range(0x11600,0x11645)) +
2320+ list(range(0x11650,0x1165a))
2321+ ),
2322+ 'Mongolian': frozenset(
2323+ list(range(0x1800,0x1802)) +
2324+ [0x1804] +
2325+ list(range(0x1806,0x180f)) +
2326+ list(range(0x1810,0x181a)) +
2327+ list(range(0x1820,0x1878)) +
2328+ list(range(0x1880,0x18ab))
2329+ ),
2330+ 'Mro': frozenset(
2331+ list(range(0x16a40,0x16a5f)) +
2332+ list(range(0x16a60,0x16a6a)) +
2333+ list(range(0x16a6e,0x16a70))
2334+ ),
2335+ 'Myanmar': frozenset(
2336+ list(range(0x1000,0x10a0)) +
2337+ list(range(0xa9e0,0xa9ff)) +
2338+ list(range(0xaa60,0xaa80))
2339+ ),
2340+ 'Nabataean': frozenset(
2341+ list(range(0x10880,0x1089f)) +
2342+ list(range(0x108a7,0x108b0))
2343+ ),
2344+ 'New_Tai_Lue': frozenset(
2345+ list(range(0x1980,0x19ac)) +
2346+ list(range(0x19b0,0x19ca)) +
2347+ list(range(0x19d0,0x19db)) +
2348+ list(range(0x19de,0x19e0))
2349+ ),
2350+ 'Nko': frozenset(
2351+ list(range(0x7c0,0x7fb))
2352+ ),
2353+ 'Ogham': frozenset(
2354+ list(range(0x1680,0x169d))
2355+ ),
2356+ 'Ol_Chiki': frozenset(
2357+ list(range(0x1c50,0x1c80))
2358+ ),
2359+ 'Old_Italic': frozenset(
2360+ list(range(0x10300,0x10324))
2361+ ),
2362+ 'Old_North_Arabian': frozenset(
2363+ list(range(0x10a80,0x10aa0))
2364+ ),
2365+ 'Old_Permic': frozenset(
2366+ list(range(0x10350,0x1037b))
2367+ ),
2368+ 'Old_Persian': frozenset(
2369+ list(range(0x103a0,0x103c4)) +
2370+ list(range(0x103c8,0x103d6))
2371+ ),
2372+ 'Old_South_Arabian': frozenset(
2373+ list(range(0x10a60,0x10a80))
2374+ ),
2375+ 'Old_Turkic': frozenset(
2376+ list(range(0x10c00,0x10c49))
2377+ ),
2378+ 'Oriya': frozenset(
2379+ list(range(0xb01,0xb04)) +
2380+ list(range(0xb05,0xb0d)) +
2381+ list(range(0xb0f,0xb11)) +
2382+ list(range(0xb13,0xb29)) +
2383+ list(range(0xb2a,0xb31)) +
2384+ list(range(0xb32,0xb34)) +
2385+ list(range(0xb35,0xb3a)) +
2386+ list(range(0xb3c,0xb45)) +
2387+ list(range(0xb47,0xb49)) +
2388+ list(range(0xb4b,0xb4e)) +
2389+ list(range(0xb56,0xb58)) +
2390+ list(range(0xb5c,0xb5e)) +
2391+ list(range(0xb5f,0xb64)) +
2392+ list(range(0xb66,0xb78))
2393+ ),
2394+ 'Osmanya': frozenset(
2395+ list(range(0x10480,0x1049e)) +
2396+ list(range(0x104a0,0x104aa))
2397+ ),
2398+ 'Pahawh_Hmong': frozenset(
2399+ list(range(0x16b00,0x16b46)) +
2400+ list(range(0x16b50,0x16b5a)) +
2401+ list(range(0x16b5b,0x16b62)) +
2402+ list(range(0x16b63,0x16b78)) +
2403+ list(range(0x16b7d,0x16b90))
2404+ ),
2405+ 'Palmyrene': frozenset(
2406+ list(range(0x10860,0x10880))
2407+ ),
2408+ 'Pau_Cin_Hau': frozenset(
2409+ list(range(0x11ac0,0x11af9))
2410+ ),
2411+ 'Phags_Pa': frozenset(
2412+ list(range(0xa840,0xa878))
2413+ ),
2414+ 'Phoenician': frozenset(
2415+ list(range(0x10900,0x1091c)) +
2416+ [0x1091f]
2417+ ),
2418+ 'Psalter_Pahlavi': frozenset(
2419+ list(range(0x10b80,0x10b92)) +
2420+ list(range(0x10b99,0x10b9d)) +
2421+ list(range(0x10ba9,0x10bb0))
2422+ ),
2423+ 'Rejang': frozenset(
2424+ list(range(0xa930,0xa954)) +
2425+ [0xa95f]
2426+ ),
2427+ 'Runic': frozenset(
2428+ list(range(0x16a0,0x16eb)) +
2429+ list(range(0x16ee,0x16f9))
2430+ ),
2431+ 'Samaritan': frozenset(
2432+ list(range(0x800,0x82e)) +
2433+ list(range(0x830,0x83f))
2434+ ),
2435+ 'Saurashtra': frozenset(
2436+ list(range(0xa880,0xa8c5)) +
2437+ list(range(0xa8ce,0xa8da))
2438+ ),
2439+ 'Sharada': frozenset(
2440+ list(range(0x11180,0x111c9)) +
2441+ [0x111cd] +
2442+ list(range(0x111d0,0x111db))
2443+ ),
2444+ 'Shavian': frozenset(
2445+ list(range(0x10450,0x10480))
2446+ ),
2447+ 'Siddham': frozenset(
2448+ list(range(0x11580,0x115b6)) +
2449+ list(range(0x115b8,0x115ca))
2450+ ),
2451+ 'Sinhala': frozenset(
2452+ list(range(0xd82,0xd84)) +
2453+ list(range(0xd85,0xd97)) +
2454+ list(range(0xd9a,0xdb2)) +
2455+ list(range(0xdb3,0xdbc)) +
2456+ [0xdbd] +
2457+ list(range(0xdc0,0xdc7)) +
2458+ [0xdca] +
2459+ list(range(0xdcf,0xdd5)) +
2460+ [0xdd6] +
2461+ list(range(0xdd8,0xde0)) +
2462+ list(range(0xde6,0xdf0)) +
2463+ list(range(0xdf2,0xdf5)) +
2464+ list(range(0x111e1,0x111f5))
2465+ ),
2466+ 'Sora_Sompeng': frozenset(
2467+ list(range(0x110d0,0x110e9)) +
2468+ list(range(0x110f0,0x110fa))
2469+ ),
2470+ 'Sundanese': frozenset(
2471+ list(range(0x1b80,0x1bc0)) +
2472+ list(range(0x1cc0,0x1cc8))
2473+ ),
2474+ 'Syloti_Nagri': frozenset(
2475+ list(range(0xa800,0xa82c))
2476+ ),
2477+ 'Syriac': frozenset(
2478+ list(range(0x700,0x70e)) +
2479+ list(range(0x70f,0x74b)) +
2480+ list(range(0x74d,0x750))
2481+ ),
2482+ 'Tagalog': frozenset(
2483+ list(range(0x1700,0x170d)) +
2484+ list(range(0x170e,0x1715))
2485+ ),
2486+ 'Tagbanwa': frozenset(
2487+ list(range(0x1760,0x176d)) +
2488+ list(range(0x176e,0x1771)) +
2489+ list(range(0x1772,0x1774))
2490+ ),
2491+ 'Tai_Le': frozenset(
2492+ list(range(0x1950,0x196e)) +
2493+ list(range(0x1970,0x1975))
2494+ ),
2495+ 'Tai_Tham': frozenset(
2496+ list(range(0x1a20,0x1a5f)) +
2497+ list(range(0x1a60,0x1a7d)) +
2498+ list(range(0x1a7f,0x1a8a)) +
2499+ list(range(0x1a90,0x1a9a)) +
2500+ list(range(0x1aa0,0x1aae))
2501+ ),
2502+ 'Tai_Viet': frozenset(
2503+ list(range(0xaa80,0xaac3)) +
2504+ list(range(0xaadb,0xaae0))
2505+ ),
2506+ 'Takri': frozenset(
2507+ list(range(0x11680,0x116b8)) +
2508+ list(range(0x116c0,0x116ca))
2509+ ),
2510+ 'Tamil': frozenset(
2511+ list(range(0xb82,0xb84)) +
2512+ list(range(0xb85,0xb8b)) +
2513+ list(range(0xb8e,0xb91)) +
2514+ list(range(0xb92,0xb96)) +
2515+ list(range(0xb99,0xb9b)) +
2516+ [0xb9c] +
2517+ list(range(0xb9e,0xba0)) +
2518+ list(range(0xba3,0xba5)) +
2519+ list(range(0xba8,0xbab)) +
2520+ list(range(0xbae,0xbba)) +
2521+ list(range(0xbbe,0xbc3)) +
2522+ list(range(0xbc6,0xbc9)) +
2523+ list(range(0xbca,0xbce)) +
2524+ [0xbd0] +
2525+ [0xbd7] +
2526+ list(range(0xbe6,0xbfb))
2527+ ),
2528+ 'Telugu': frozenset(
2529+ list(range(0xc00,0xc04)) +
2530+ list(range(0xc05,0xc0d)) +
2531+ list(range(0xc0e,0xc11)) +
2532+ list(range(0xc12,0xc29)) +
2533+ list(range(0xc2a,0xc3a)) +
2534+ list(range(0xc3d,0xc45)) +
2535+ list(range(0xc46,0xc49)) +
2536+ list(range(0xc4a,0xc4e)) +
2537+ list(range(0xc55,0xc57)) +
2538+ list(range(0xc58,0xc5a)) +
2539+ list(range(0xc60,0xc64)) +
2540+ list(range(0xc66,0xc70)) +
2541+ list(range(0xc78,0xc80))
2542+ ),
2543+ 'Thaana': frozenset(
2544+ list(range(0x780,0x7b2))
2545+ ),
2546+ 'Thai': frozenset(
2547+ list(range(0xe01,0xe3b)) +
2548+ list(range(0xe40,0xe5c))
2549+ ),
2550+ 'Tibetan': frozenset(
2551+ list(range(0xf00,0xf48)) +
2552+ list(range(0xf49,0xf6d)) +
2553+ list(range(0xf71,0xf98)) +
2554+ list(range(0xf99,0xfbd)) +
2555+ list(range(0xfbe,0xfcd)) +
2556+ list(range(0xfce,0xfd5)) +
2557+ list(range(0xfd9,0xfdb))
2558+ ),
2559+ 'Tifinagh': frozenset(
2560+ list(range(0x2d30,0x2d68)) +
2561+ list(range(0x2d6f,0x2d71)) +
2562+ [0x2d7f]
2563+ ),
2564+ 'Tirhuta': frozenset(
2565+ list(range(0x11480,0x114c8)) +
2566+ list(range(0x114d0,0x114da))
2567+ ),
2568+ 'Ugaritic': frozenset(
2569+ list(range(0x10380,0x1039e)) +
2570+ [0x1039f]
2571+ ),
2572+ 'Vai': frozenset(
2573+ list(range(0xa500,0xa62c))
2574+ ),
2575+ 'Warang_Citi': frozenset(
2576+ list(range(0x118a0,0x118f3)) +
2577+ [0x118ff]
2578+ ),
2579+ 'Yi': frozenset(
2580+ list(range(0xa000,0xa48d)) +
2581+ list(range(0xa490,0xa4c7))
2582+ ),
2583 }
2584 joining_types = {
2585- 0x600: 'U',
2586- 0x601: 'U',
2587- 0x602: 'U',
2588- 0x603: 'U',
2589- 0x604: 'U',
2590- 0x608: 'U',
2591- 0x60b: 'U',
2592- 0x620: 'D',
2593- 0x621: 'U',
2594- 0x622: 'R',
2595- 0x623: 'R',
2596- 0x624: 'R',
2597- 0x625: 'R',
2598- 0x626: 'D',
2599- 0x627: 'R',
2600- 0x628: 'D',
2601- 0x629: 'R',
2602- 0x62a: 'D',
2603- 0x62b: 'D',
2604- 0x62c: 'D',
2605- 0x62d: 'D',
2606- 0x62e: 'D',
2607- 0x62f: 'R',
2608- 0x630: 'R',
2609- 0x631: 'R',
2610- 0x632: 'R',
2611- 0x633: 'D',
2612- 0x634: 'D',
2613- 0x635: 'D',
2614- 0x636: 'D',
2615- 0x637: 'D',
2616- 0x638: 'D',
2617- 0x639: 'D',
2618- 0x63a: 'D',
2619- 0x63b: 'D',
2620- 0x63c: 'D',
2621- 0x63d: 'D',
2622- 0x63e: 'D',
2623- 0x63f: 'D',
2624- 0x640: 'C',
2625- 0x641: 'D',
2626- 0x642: 'D',
2627- 0x643: 'D',
2628- 0x644: 'D',
2629- 0x645: 'D',
2630- 0x646: 'D',
2631- 0x647: 'D',
2632- 0x648: 'R',
2633- 0x649: 'D',
2634- 0x64a: 'D',
2635- 0x66e: 'D',
2636- 0x66f: 'D',
2637- 0x671: 'R',
2638- 0x672: 'R',
2639- 0x673: 'R',
2640- 0x674: 'U',
2641- 0x675: 'R',
2642- 0x676: 'R',
2643- 0x677: 'R',
2644- 0x678: 'D',
2645- 0x679: 'D',
2646- 0x67a: 'D',
2647- 0x67b: 'D',
2648- 0x67c: 'D',
2649- 0x67d: 'D',
2650- 0x67e: 'D',
2651- 0x67f: 'D',
2652- 0x680: 'D',
2653- 0x681: 'D',
2654- 0x682: 'D',
2655- 0x683: 'D',
2656- 0x684: 'D',
2657- 0x685: 'D',
2658- 0x686: 'D',
2659- 0x687: 'D',
2660- 0x688: 'R',
2661- 0x689: 'R',
2662- 0x68a: 'R',
2663- 0x68b: 'R',
2664- 0x68c: 'R',
2665- 0x68d: 'R',
2666- 0x68e: 'R',
2667- 0x68f: 'R',
2668- 0x690: 'R',
2669- 0x691: 'R',
2670- 0x692: 'R',
2671- 0x693: 'R',
2672- 0x694: 'R',
2673- 0x695: 'R',
2674- 0x696: 'R',
2675- 0x697: 'R',
2676- 0x698: 'R',
2677- 0x699: 'R',
2678- 0x69a: 'D',
2679- 0x69b: 'D',
2680- 0x69c: 'D',
2681- 0x69d: 'D',
2682- 0x69e: 'D',
2683- 0x69f: 'D',
2684- 0x6a0: 'D',
2685- 0x6a1: 'D',
2686- 0x6a2: 'D',
2687- 0x6a3: 'D',
2688- 0x6a4: 'D',
2689- 0x6a5: 'D',
2690- 0x6a6: 'D',
2691- 0x6a7: 'D',
2692- 0x6a8: 'D',
2693- 0x6a9: 'D',
2694- 0x6aa: 'D',
2695- 0x6ab: 'D',
2696- 0x6ac: 'D',
2697- 0x6ad: 'D',
2698- 0x6ae: 'D',
2699- 0x6af: 'D',
2700- 0x6b0: 'D',
2701- 0x6b1: 'D',
2702- 0x6b2: 'D',
2703- 0x6b3: 'D',
2704- 0x6b4: 'D',
2705- 0x6b5: 'D',
2706- 0x6b6: 'D',
2707- 0x6b7: 'D',
2708- 0x6b8: 'D',
2709- 0x6b9: 'D',
2710- 0x6ba: 'D',
2711- 0x6bb: 'D',
2712- 0x6bc: 'D',
2713- 0x6bd: 'D',
2714- 0x6be: 'D',
2715- 0x6bf: 'D',
2716- 0x6c0: 'R',
2717- 0x6c1: 'D',
2718- 0x6c2: 'D',
2719- 0x6c3: 'R',
2720- 0x6c4: 'R',
2721- 0x6c5: 'R',
2722- 0x6c6: 'R',
2723- 0x6c7: 'R',
2724- 0x6c8: 'R',
2725- 0x6c9: 'R',
2726- 0x6ca: 'R',
2727- 0x6cb: 'R',
2728- 0x6cc: 'D',
2729- 0x6cd: 'R',
2730- 0x6ce: 'D',
2731- 0x6cf: 'R',
2732- 0x6d0: 'D',
2733- 0x6d1: 'D',
2734- 0x6d2: 'R',
2735- 0x6d3: 'R',
2736- 0x6d5: 'R',
2737- 0x6dd: 'U',
2738- 0x6ee: 'R',
2739- 0x6ef: 'R',
2740- 0x6fa: 'D',
2741- 0x6fb: 'D',
2742- 0x6fc: 'D',
2743- 0x6ff: 'D',
2744- 0x710: 'R',
2745- 0x712: 'D',
2746- 0x713: 'D',
2747- 0x714: 'D',
2748- 0x715: 'R',
2749- 0x716: 'R',
2750- 0x717: 'R',
2751- 0x718: 'R',
2752- 0x719: 'R',
2753- 0x71a: 'D',
2754- 0x71b: 'D',
2755- 0x71c: 'D',
2756- 0x71d: 'D',
2757- 0x71e: 'R',
2758- 0x71f: 'D',
2759- 0x720: 'D',
2760- 0x721: 'D',
2761- 0x722: 'D',
2762- 0x723: 'D',
2763- 0x724: 'D',
2764- 0x725: 'D',
2765- 0x726: 'D',
2766- 0x727: 'D',
2767- 0x728: 'R',
2768- 0x729: 'D',
2769- 0x72a: 'R',
2770- 0x72b: 'D',
2771- 0x72c: 'R',
2772- 0x72d: 'D',
2773- 0x72e: 'D',
2774- 0x72f: 'R',
2775- 0x74d: 'R',
2776- 0x74e: 'D',
2777- 0x74f: 'D',
2778- 0x750: 'D',
2779- 0x751: 'D',
2780- 0x752: 'D',
2781- 0x753: 'D',
2782- 0x754: 'D',
2783- 0x755: 'D',
2784- 0x756: 'D',
2785- 0x757: 'D',
2786- 0x758: 'D',
2787- 0x759: 'R',
2788- 0x75a: 'R',
2789- 0x75b: 'R',
2790- 0x75c: 'D',
2791- 0x75d: 'D',
2792- 0x75e: 'D',
2793- 0x75f: 'D',
2794- 0x760: 'D',
2795- 0x761: 'D',
2796- 0x762: 'D',
2797- 0x763: 'D',
2798- 0x764: 'D',
2799- 0x765: 'D',
2800- 0x766: 'D',
2801- 0x767: 'D',
2802- 0x768: 'D',
2803- 0x769: 'D',
2804- 0x76a: 'D',
2805- 0x76b: 'R',
2806- 0x76c: 'R',
2807- 0x76d: 'D',
2808- 0x76e: 'D',
2809- 0x76f: 'D',
2810- 0x770: 'D',
2811- 0x771: 'R',
2812- 0x772: 'D',
2813- 0x773: 'R',
2814- 0x774: 'R',
2815- 0x775: 'D',
2816- 0x776: 'D',
2817- 0x777: 'D',
2818- 0x778: 'R',
2819- 0x779: 'R',
2820- 0x77a: 'D',
2821- 0x77b: 'D',
2822- 0x77c: 'D',
2823- 0x77d: 'D',
2824- 0x77e: 'D',
2825- 0x77f: 'D',
2826- 0x7ca: 'D',
2827- 0x7cb: 'D',
2828- 0x7cc: 'D',
2829- 0x7cd: 'D',
2830- 0x7ce: 'D',
2831- 0x7cf: 'D',
2832- 0x7d0: 'D',
2833- 0x7d1: 'D',
2834- 0x7d2: 'D',
2835- 0x7d3: 'D',
2836- 0x7d4: 'D',
2837- 0x7d5: 'D',
2838- 0x7d6: 'D',
2839- 0x7d7: 'D',
2840- 0x7d8: 'D',
2841- 0x7d9: 'D',
2842- 0x7da: 'D',
2843- 0x7db: 'D',
2844- 0x7dc: 'D',
2845- 0x7dd: 'D',
2846- 0x7de: 'D',
2847- 0x7df: 'D',
2848- 0x7e0: 'D',
2849- 0x7e1: 'D',
2850- 0x7e2: 'D',
2851- 0x7e3: 'D',
2852- 0x7e4: 'D',
2853- 0x7e5: 'D',
2854- 0x7e6: 'D',
2855- 0x7e7: 'D',
2856- 0x7e8: 'D',
2857- 0x7e9: 'D',
2858- 0x7ea: 'D',
2859- 0x7fa: 'C',
2860- 0x840: 'R',
2861- 0x841: 'D',
2862- 0x842: 'D',
2863- 0x843: 'D',
2864- 0x844: 'D',
2865- 0x845: 'D',
2866- 0x846: 'R',
2867- 0x847: 'D',
2868- 0x848: 'D',
2869- 0x849: 'R',
2870- 0x84a: 'D',
2871- 0x84b: 'D',
2872- 0x84c: 'D',
2873- 0x84d: 'D',
2874- 0x84e: 'D',
2875- 0x84f: 'R',
2876- 0x850: 'D',
2877- 0x851: 'D',
2878- 0x852: 'D',
2879- 0x853: 'D',
2880- 0x854: 'R',
2881- 0x855: 'D',
2882- 0x856: 'U',
2883- 0x857: 'U',
2884- 0x858: 'U',
2885- 0x8a0: 'D',
2886- 0x8a2: 'D',
2887- 0x8a3: 'D',
2888- 0x8a4: 'D',
2889- 0x8a5: 'D',
2890- 0x8a6: 'D',
2891- 0x8a7: 'D',
2892- 0x8a8: 'D',
2893- 0x8a9: 'D',
2894- 0x8aa: 'R',
2895- 0x8ab: 'R',
2896- 0x8ac: 'R',
2897- 0x1806: 'U',
2898- 0x1807: 'D',
2899- 0x180a: 'C',
2900- 0x180e: 'U',
2901- 0x1820: 'D',
2902- 0x1821: 'D',
2903- 0x1822: 'D',
2904- 0x1823: 'D',
2905- 0x1824: 'D',
2906- 0x1825: 'D',
2907- 0x1826: 'D',
2908- 0x1827: 'D',
2909- 0x1828: 'D',
2910- 0x1829: 'D',
2911- 0x182a: 'D',
2912- 0x182b: 'D',
2913- 0x182c: 'D',
2914- 0x182d: 'D',
2915- 0x182e: 'D',
2916- 0x182f: 'D',
2917- 0x1830: 'D',
2918- 0x1831: 'D',
2919- 0x1832: 'D',
2920- 0x1833: 'D',
2921- 0x1834: 'D',
2922- 0x1835: 'D',
2923- 0x1836: 'D',
2924- 0x1837: 'D',
2925- 0x1838: 'D',
2926- 0x1839: 'D',
2927- 0x183a: 'D',
2928- 0x183b: 'D',
2929- 0x183c: 'D',
2930- 0x183d: 'D',
2931- 0x183e: 'D',
2932- 0x183f: 'D',
2933- 0x1840: 'D',
2934- 0x1841: 'D',
2935- 0x1842: 'D',
2936- 0x1843: 'D',
2937- 0x1844: 'D',
2938- 0x1845: 'D',
2939- 0x1846: 'D',
2940- 0x1847: 'D',
2941- 0x1848: 'D',
2942- 0x1849: 'D',
2943- 0x184a: 'D',
2944- 0x184b: 'D',
2945- 0x184c: 'D',
2946- 0x184d: 'D',
2947- 0x184e: 'D',
2948- 0x184f: 'D',
2949- 0x1850: 'D',
2950- 0x1851: 'D',
2951- 0x1852: 'D',
2952- 0x1853: 'D',
2953- 0x1854: 'D',
2954- 0x1855: 'D',
2955- 0x1856: 'D',
2956- 0x1857: 'D',
2957- 0x1858: 'D',
2958- 0x1859: 'D',
2959- 0x185a: 'D',
2960- 0x185b: 'D',
2961- 0x185c: 'D',
2962- 0x185d: 'D',
2963- 0x185e: 'D',
2964- 0x185f: 'D',
2965- 0x1860: 'D',
2966- 0x1861: 'D',
2967- 0x1862: 'D',
2968- 0x1863: 'D',
2969- 0x1864: 'D',
2970- 0x1865: 'D',
2971- 0x1866: 'D',
2972- 0x1867: 'D',
2973- 0x1868: 'D',
2974- 0x1869: 'D',
2975- 0x186a: 'D',
2976- 0x186b: 'D',
2977- 0x186c: 'D',
2978- 0x186d: 'D',
2979- 0x186e: 'D',
2980- 0x186f: 'D',
2981- 0x1870: 'D',
2982- 0x1871: 'D',
2983- 0x1872: 'D',
2984- 0x1873: 'D',
2985- 0x1874: 'D',
2986- 0x1875: 'D',
2987- 0x1876: 'D',
2988- 0x1877: 'D',
2989- 0x1880: 'U',
2990- 0x1881: 'U',
2991- 0x1882: 'U',
2992- 0x1883: 'U',
2993- 0x1884: 'U',
2994- 0x1885: 'U',
2995- 0x1886: 'U',
2996- 0x1887: 'D',
2997- 0x1888: 'D',
2998- 0x1889: 'D',
2999- 0x188a: 'D',
3000- 0x188b: 'D',
3001- 0x188c: 'D',
3002- 0x188d: 'D',
3003- 0x188e: 'D',
3004- 0x188f: 'D',
3005- 0x1890: 'D',
3006- 0x1891: 'D',
3007- 0x1892: 'D',
3008- 0x1893: 'D',
3009- 0x1894: 'D',
3010- 0x1895: 'D',
3011- 0x1896: 'D',
3012- 0x1897: 'D',
3013- 0x1898: 'D',
3014- 0x1899: 'D',
3015- 0x189a: 'D',
3016- 0x189b: 'D',
3017- 0x189c: 'D',
3018- 0x189d: 'D',
3019- 0x189e: 'D',
3020- 0x189f: 'D',
3021- 0x18a0: 'D',
3022- 0x18a1: 'D',
3023- 0x18a2: 'D',
3024- 0x18a3: 'D',
3025- 0x18a4: 'D',
3026- 0x18a5: 'D',
3027- 0x18a6: 'D',
3028- 0x18a7: 'D',
3029- 0x18a8: 'D',
3030- 0x18aa: 'D',
3031- 0x200c: 'U',
3032- 0x200d: 'C',
3033- 0x2066: 'U',
3034- 0x2067: 'U',
3035- 0x2068: 'U',
3036- 0x2069: 'U',
3037- 0xa840: 'D',
3038- 0xa841: 'D',
3039- 0xa842: 'D',
3040- 0xa843: 'D',
3041- 0xa844: 'D',
3042- 0xa845: 'D',
3043- 0xa846: 'D',
3044- 0xa847: 'D',
3045- 0xa848: 'D',
3046- 0xa849: 'D',
3047- 0xa84a: 'D',
3048- 0xa84b: 'D',
3049- 0xa84c: 'D',
3050- 0xa84d: 'D',
3051- 0xa84e: 'D',
3052- 0xa84f: 'D',
3053- 0xa850: 'D',
3054- 0xa851: 'D',
3055- 0xa852: 'D',
3056- 0xa853: 'D',
3057- 0xa854: 'D',
3058- 0xa855: 'D',
3059- 0xa856: 'D',
3060- 0xa857: 'D',
3061- 0xa858: 'D',
3062- 0xa859: 'D',
3063- 0xa85a: 'D',
3064- 0xa85b: 'D',
3065- 0xa85c: 'D',
3066- 0xa85d: 'D',
3067- 0xa85e: 'D',
3068- 0xa85f: 'D',
3069- 0xa860: 'D',
3070- 0xa861: 'D',
3071- 0xa862: 'D',
3072- 0xa863: 'D',
3073- 0xa864: 'D',
3074- 0xa865: 'D',
3075- 0xa866: 'D',
3076- 0xa867: 'D',
3077- 0xa868: 'D',
3078- 0xa869: 'D',
3079- 0xa86a: 'D',
3080- 0xa86b: 'D',
3081- 0xa86c: 'D',
3082- 0xa86d: 'D',
3083- 0xa86e: 'D',
3084- 0xa86f: 'D',
3085- 0xa870: 'D',
3086- 0xa871: 'D',
3087- 0xa872: 'L',
3088- 0xa873: 'U',
3089+ 0x600: 'U',
3090+ 0x601: 'U',
3091+ 0x602: 'U',
3092+ 0x603: 'U',
3093+ 0x604: 'U',
3094+ 0x605: 'U',
3095+ 0x608: 'U',
3096+ 0x60b: 'U',
3097+ 0x620: 'D',
3098+ 0x621: 'U',
3099+ 0x622: 'R',
3100+ 0x623: 'R',
3101+ 0x624: 'R',
3102+ 0x625: 'R',
3103+ 0x626: 'D',
3104+ 0x627: 'R',
3105+ 0x628: 'D',
3106+ 0x629: 'R',
3107+ 0x62a: 'D',
3108+ 0x62b: 'D',
3109+ 0x62c: 'D',
3110+ 0x62d: 'D',
3111+ 0x62e: 'D',
3112+ 0x62f: 'R',
3113+ 0x630: 'R',
3114+ 0x631: 'R',
3115+ 0x632: 'R',
3116+ 0x633: 'D',
3117+ 0x634: 'D',
3118+ 0x635: 'D',
3119+ 0x636: 'D',
3120+ 0x637: 'D',
3121+ 0x638: 'D',
3122+ 0x639: 'D',
3123+ 0x63a: 'D',
3124+ 0x63b: 'D',
3125+ 0x63c: 'D',
3126+ 0x63d: 'D',
3127+ 0x63e: 'D',
3128+ 0x63f: 'D',
3129+ 0x640: 'C',
3130+ 0x641: 'D',
3131+ 0x642: 'D',
3132+ 0x643: 'D',
3133+ 0x644: 'D',
3134+ 0x645: 'D',
3135+ 0x646: 'D',
3136+ 0x647: 'D',
3137+ 0x648: 'R',
3138+ 0x649: 'D',
3139+ 0x64a: 'D',
3140+ 0x66e: 'D',
3141+ 0x66f: 'D',
3142+ 0x671: 'R',
3143+ 0x672: 'R',
3144+ 0x673: 'R',
3145+ 0x674: 'U',
3146+ 0x675: 'R',
3147+ 0x676: 'R',
3148+ 0x677: 'R',
3149+ 0x678: 'D',
3150+ 0x679: 'D',
3151+ 0x67a: 'D',
3152+ 0x67b: 'D',
3153+ 0x67c: 'D',
3154+ 0x67d: 'D',
3155+ 0x67e: 'D',
3156+ 0x67f: 'D',
3157+ 0x680: 'D',
3158+ 0x681: 'D',
3159+ 0x682: 'D',
3160+ 0x683: 'D',
3161+ 0x684: 'D',
3162+ 0x685: 'D',
3163+ 0x686: 'D',
3164+ 0x687: 'D',
3165+ 0x688: 'R',
3166+ 0x689: 'R',
3167+ 0x68a: 'R',
3168+ 0x68b: 'R',
3169+ 0x68c: 'R',
3170+ 0x68d: 'R',
3171+ 0x68e: 'R',
3172+ 0x68f: 'R',
3173+ 0x690: 'R',
3174+ 0x691: 'R',
3175+ 0x692: 'R',
3176+ 0x693: 'R',
3177+ 0x694: 'R',
3178+ 0x695: 'R',
3179+ 0x696: 'R',
3180+ 0x697: 'R',
3181+ 0x698: 'R',
3182+ 0x699: 'R',
3183+ 0x69a: 'D',
3184+ 0x69b: 'D',
3185+ 0x69c: 'D',
3186+ 0x69d: 'D',
3187+ 0x69e: 'D',
3188+ 0x69f: 'D',
3189+ 0x6a0: 'D',
3190+ 0x6a1: 'D',
3191+ 0x6a2: 'D',
3192+ 0x6a3: 'D',
3193+ 0x6a4: 'D',
3194+ 0x6a5: 'D',
3195+ 0x6a6: 'D',
3196+ 0x6a7: 'D',
3197+ 0x6a8: 'D',
3198+ 0x6a9: 'D',
3199+ 0x6aa: 'D',
3200+ 0x6ab: 'D',
3201+ 0x6ac: 'D',
3202+ 0x6ad: 'D',
3203+ 0x6ae: 'D',
3204+ 0x6af: 'D',
3205+ 0x6b0: 'D',
3206+ 0x6b1: 'D',
3207+ 0x6b2: 'D',
3208+ 0x6b3: 'D',
3209+ 0x6b4: 'D',
3210+ 0x6b5: 'D',
3211+ 0x6b6: 'D',
3212+ 0x6b7: 'D',
3213+ 0x6b8: 'D',
3214+ 0x6b9: 'D',
3215+ 0x6ba: 'D',
3216+ 0x6bb: 'D',
3217+ 0x6bc: 'D',
3218+ 0x6bd: 'D',
3219+ 0x6be: 'D',
3220+ 0x6bf: 'D',
3221+ 0x6c0: 'R',
3222+ 0x6c1: 'D',
3223+ 0x6c2: 'D',
3224+ 0x6c3: 'R',
3225+ 0x6c4: 'R',
3226+ 0x6c5: 'R',
3227+ 0x6c6: 'R',
3228+ 0x6c7: 'R',
3229+ 0x6c8: 'R',
3230+ 0x6c9: 'R',
3231+ 0x6ca: 'R',
3232+ 0x6cb: 'R',
3233+ 0x6cc: 'D',
3234+ 0x6cd: 'R',
3235+ 0x6ce: 'D',
3236+ 0x6cf: 'R',
3237+ 0x6d0: 'D',
3238+ 0x6d1: 'D',
3239+ 0x6d2: 'R',
3240+ 0x6d3: 'R',
3241+ 0x6d5: 'R',
3242+ 0x6dd: 'U',
3243+ 0x6ee: 'R',
3244+ 0x6ef: 'R',
3245+ 0x6fa: 'D',
3246+ 0x6fb: 'D',
3247+ 0x6fc: 'D',
3248+ 0x6ff: 'D',
3249+ 0x710: 'R',
3250+ 0x712: 'D',
3251+ 0x713: 'D',
3252+ 0x714: 'D',
3253+ 0x715: 'R',
3254+ 0x716: 'R',
3255+ 0x717: 'R',
3256+ 0x718: 'R',
3257+ 0x719: 'R',
3258+ 0x71a: 'D',
3259+ 0x71b: 'D',
3260+ 0x71c: 'D',
3261+ 0x71d: 'D',
3262+ 0x71e: 'R',
3263+ 0x71f: 'D',
3264+ 0x720: 'D',
3265+ 0x721: 'D',
3266+ 0x722: 'D',
3267+ 0x723: 'D',
3268+ 0x724: 'D',
3269+ 0x725: 'D',
3270+ 0x726: 'D',
3271+ 0x727: 'D',
3272+ 0x728: 'R',
3273+ 0x729: 'D',
3274+ 0x72a: 'R',
3275+ 0x72b: 'D',
3276+ 0x72c: 'R',
3277+ 0x72d: 'D',
3278+ 0x72e: 'D',
3279+ 0x72f: 'R',
3280+ 0x74d: 'R',
3281+ 0x74e: 'D',
3282+ 0x74f: 'D',
3283+ 0x750: 'D',
3284+ 0x751: 'D',
3285+ 0x752: 'D',
3286+ 0x753: 'D',
3287+ 0x754: 'D',
3288+ 0x755: 'D',
3289+ 0x756: 'D',
3290+ 0x757: 'D',
3291+ 0x758: 'D',
3292+ 0x759: 'R',
3293+ 0x75a: 'R',
3294+ 0x75b: 'R',
3295+ 0x75c: 'D',
3296+ 0x75d: 'D',
3297+ 0x75e: 'D',
3298+ 0x75f: 'D',
3299+ 0x760: 'D',
3300+ 0x761: 'D',
3301+ 0x762: 'D',
3302+ 0x763: 'D',
3303+ 0x764: 'D',
3304+ 0x765: 'D',
3305+ 0x766: 'D',
3306+ 0x767: 'D',
3307+ 0x768: 'D',
3308+ 0x769: 'D',
3309+ 0x76a: 'D',
3310+ 0x76b: 'R',
3311+ 0x76c: 'R',
3312+ 0x76d: 'D',
3313+ 0x76e: 'D',
3314+ 0x76f: 'D',
3315+ 0x770: 'D',
3316+ 0x771: 'R',
3317+ 0x772: 'D',
3318+ 0x773: 'R',
3319+ 0x774: 'R',
3320+ 0x775: 'D',
3321+ 0x776: 'D',
3322+ 0x777: 'D',
3323+ 0x778: 'R',
3324+ 0x779: 'R',
3325+ 0x77a: 'D',
3326+ 0x77b: 'D',
3327+ 0x77c: 'D',
3328+ 0x77d: 'D',
3329+ 0x77e: 'D',
3330+ 0x77f: 'D',
3331+ 0x7ca: 'D',
3332+ 0x7cb: 'D',
3333+ 0x7cc: 'D',
3334+ 0x7cd: 'D',
3335+ 0x7ce: 'D',
3336+ 0x7cf: 'D',
3337+ 0x7d0: 'D',
3338+ 0x7d1: 'D',
3339+ 0x7d2: 'D',
3340+ 0x7d3: 'D',
3341+ 0x7d4: 'D',
3342+ 0x7d5: 'D',
3343+ 0x7d6: 'D',
3344+ 0x7d7: 'D',
3345+ 0x7d8: 'D',
3346+ 0x7d9: 'D',
3347+ 0x7da: 'D',
3348+ 0x7db: 'D',
3349+ 0x7dc: 'D',
3350+ 0x7dd: 'D',
3351+ 0x7de: 'D',
3352+ 0x7df: 'D',
3353+ 0x7e0: 'D',
3354+ 0x7e1: 'D',
3355+ 0x7e2: 'D',
3356+ 0x7e3: 'D',
3357+ 0x7e4: 'D',
3358+ 0x7e5: 'D',
3359+ 0x7e6: 'D',
3360+ 0x7e7: 'D',
3361+ 0x7e8: 'D',
3362+ 0x7e9: 'D',
3363+ 0x7ea: 'D',
3364+ 0x7fa: 'C',
3365+ 0x840: 'R',
3366+ 0x841: 'D',
3367+ 0x842: 'D',
3368+ 0x843: 'D',
3369+ 0x844: 'D',
3370+ 0x845: 'D',
3371+ 0x846: 'R',
3372+ 0x847: 'D',
3373+ 0x848: 'D',
3374+ 0x849: 'R',
3375+ 0x84a: 'D',
3376+ 0x84b: 'D',
3377+ 0x84c: 'D',
3378+ 0x84d: 'D',
3379+ 0x84e: 'D',
3380+ 0x84f: 'R',
3381+ 0x850: 'D',
3382+ 0x851: 'D',
3383+ 0x852: 'D',
3384+ 0x853: 'D',
3385+ 0x854: 'R',
3386+ 0x855: 'D',
3387+ 0x856: 'U',
3388+ 0x857: 'U',
3389+ 0x858: 'U',
3390+ 0x8a0: 'D',
3391+ 0x8a1: 'D',
3392+ 0x8a2: 'D',
3393+ 0x8a3: 'D',
3394+ 0x8a4: 'D',
3395+ 0x8a5: 'D',
3396+ 0x8a6: 'D',
3397+ 0x8a7: 'D',
3398+ 0x8a8: 'D',
3399+ 0x8a9: 'D',
3400+ 0x8aa: 'R',
3401+ 0x8ab: 'R',
3402+ 0x8ac: 'R',
3403+ 0x8ad: 'U',
3404+ 0x8ae: 'R',
3405+ 0x8af: 'D',
3406+ 0x8b0: 'D',
3407+ 0x8b1: 'R',
3408+ 0x8b2: 'R',
3409+ 0x1806: 'U',
3410+ 0x1807: 'D',
3411+ 0x180a: 'C',
3412+ 0x180e: 'U',
3413+ 0x1820: 'D',
3414+ 0x1821: 'D',
3415+ 0x1822: 'D',
3416+ 0x1823: 'D',
3417+ 0x1824: 'D',
3418+ 0x1825: 'D',
3419+ 0x1826: 'D',
3420+ 0x1827: 'D',
3421+ 0x1828: 'D',
3422+ 0x1829: 'D',
3423+ 0x182a: 'D',
3424+ 0x182b: 'D',
3425+ 0x182c: 'D',
3426+ 0x182d: 'D',
3427+ 0x182e: 'D',
3428+ 0x182f: 'D',
3429+ 0x1830: 'D',
3430+ 0x1831: 'D',
3431+ 0x1832: 'D',
3432+ 0x1833: 'D',
3433+ 0x1834: 'D',
3434+ 0x1835: 'D',
3435+ 0x1836: 'D',
3436+ 0x1837: 'D',
3437+ 0x1838: 'D',
3438+ 0x1839: 'D',
3439+ 0x183a: 'D',
3440+ 0x183b: 'D',
3441+ 0x183c: 'D',
3442+ 0x183d: 'D',
3443+ 0x183e: 'D',
3444+ 0x183f: 'D',
3445+ 0x1840: 'D',
3446+ 0x1841: 'D',
3447+ 0x1842: 'D',
3448+ 0x1843: 'D',
3449+ 0x1844: 'D',
3450+ 0x1845: 'D',
3451+ 0x1846: 'D',
3452+ 0x1847: 'D',
3453+ 0x1848: 'D',
3454+ 0x1849: 'D',
3455+ 0x184a: 'D',
3456+ 0x184b: 'D',
3457+ 0x184c: 'D',
3458+ 0x184d: 'D',
3459+ 0x184e: 'D',
3460+ 0x184f: 'D',
3461+ 0x1850: 'D',
3462+ 0x1851: 'D',
3463+ 0x1852: 'D',
3464+ 0x1853: 'D',
3465+ 0x1854: 'D',
3466+ 0x1855: 'D',
3467+ 0x1856: 'D',
3468+ 0x1857: 'D',
3469+ 0x1858: 'D',
3470+ 0x1859: 'D',
3471+ 0x185a: 'D',
3472+ 0x185b: 'D',
3473+ 0x185c: 'D',
3474+ 0x185d: 'D',
3475+ 0x185e: 'D',
3476+ 0x185f: 'D',
3477+ 0x1860: 'D',
3478+ 0x1861: 'D',
3479+ 0x1862: 'D',
3480+ 0x1863: 'D',
3481+ 0x1864: 'D',
3482+ 0x1865: 'D',
3483+ 0x1866: 'D',
3484+ 0x1867: 'D',
3485+ 0x1868: 'D',
3486+ 0x1869: 'D',
3487+ 0x186a: 'D',
3488+ 0x186b: 'D',
3489+ 0x186c: 'D',
3490+ 0x186d: 'D',
3491+ 0x186e: 'D',
3492+ 0x186f: 'D',
3493+ 0x1870: 'D',
3494+ 0x1871: 'D',
3495+ 0x1872: 'D',
3496+ 0x1873: 'D',
3497+ 0x1874: 'D',
3498+ 0x1875: 'D',
3499+ 0x1876: 'D',
3500+ 0x1877: 'D',
3501+ 0x1880: 'U',
3502+ 0x1881: 'U',
3503+ 0x1882: 'U',
3504+ 0x1883: 'U',
3505+ 0x1884: 'U',
3506+ 0x1885: 'U',
3507+ 0x1886: 'U',
3508+ 0x1887: 'D',
3509+ 0x1888: 'D',
3510+ 0x1889: 'D',
3511+ 0x188a: 'D',
3512+ 0x188b: 'D',
3513+ 0x188c: 'D',
3514+ 0x188d: 'D',
3515+ 0x188e: 'D',
3516+ 0x188f: 'D',
3517+ 0x1890: 'D',
3518+ 0x1891: 'D',
3519+ 0x1892: 'D',
3520+ 0x1893: 'D',
3521+ 0x1894: 'D',
3522+ 0x1895: 'D',
3523+ 0x1896: 'D',
3524+ 0x1897: 'D',
3525+ 0x1898: 'D',
3526+ 0x1899: 'D',
3527+ 0x189a: 'D',
3528+ 0x189b: 'D',
3529+ 0x189c: 'D',
3530+ 0x189d: 'D',
3531+ 0x189e: 'D',
3532+ 0x189f: 'D',
3533+ 0x18a0: 'D',
3534+ 0x18a1: 'D',
3535+ 0x18a2: 'D',
3536+ 0x18a3: 'D',
3537+ 0x18a4: 'D',
3538+ 0x18a5: 'D',
3539+ 0x18a6: 'D',
3540+ 0x18a7: 'D',
3541+ 0x18a8: 'D',
3542+ 0x18aa: 'D',
3543+ 0x200c: 'U',
3544+ 0x200d: 'C',
3545+ 0x2066: 'U',
3546+ 0x2067: 'U',
3547+ 0x2068: 'U',
3548+ 0x2069: 'U',
3549+ 0xa840: 'D',
3550+ 0xa841: 'D',
3551+ 0xa842: 'D',
3552+ 0xa843: 'D',
3553+ 0xa844: 'D',
3554+ 0xa845: 'D',
3555+ 0xa846: 'D',
3556+ 0xa847: 'D',
3557+ 0xa848: 'D',
3558+ 0xa849: 'D',
3559+ 0xa84a: 'D',
3560+ 0xa84b: 'D',
3561+ 0xa84c: 'D',
3562+ 0xa84d: 'D',
3563+ 0xa84e: 'D',
3564+ 0xa84f: 'D',
3565+ 0xa850: 'D',
3566+ 0xa851: 'D',
3567+ 0xa852: 'D',
3568+ 0xa853: 'D',
3569+ 0xa854: 'D',
3570+ 0xa855: 'D',
3571+ 0xa856: 'D',
3572+ 0xa857: 'D',
3573+ 0xa858: 'D',
3574+ 0xa859: 'D',
3575+ 0xa85a: 'D',
3576+ 0xa85b: 'D',
3577+ 0xa85c: 'D',
3578+ 0xa85d: 'D',
3579+ 0xa85e: 'D',
3580+ 0xa85f: 'D',
3581+ 0xa860: 'D',
3582+ 0xa861: 'D',
3583+ 0xa862: 'D',
3584+ 0xa863: 'D',
3585+ 0xa864: 'D',
3586+ 0xa865: 'D',
3587+ 0xa866: 'D',
3588+ 0xa867: 'D',
3589+ 0xa868: 'D',
3590+ 0xa869: 'D',
3591+ 0xa86a: 'D',
3592+ 0xa86b: 'D',
3593+ 0xa86c: 'D',
3594+ 0xa86d: 'D',
3595+ 0xa86e: 'D',
3596+ 0xa86f: 'D',
3597+ 0xa870: 'D',
3598+ 0xa871: 'D',
3599+ 0xa872: 'L',
3600+ 0xa873: 'U',
3601+ 0x10ac0: 'D',
3602+ 0x10ac1: 'D',
3603+ 0x10ac2: 'D',
3604+ 0x10ac3: 'D',
3605+ 0x10ac4: 'D',
3606+ 0x10ac5: 'R',
3607+ 0x10ac6: 'U',
3608+ 0x10ac7: 'R',
3609+ 0x10ac8: 'U',
3610+ 0x10ac9: 'R',
3611+ 0x10aca: 'R',
3612+ 0x10acb: 'U',
3613+ 0x10acc: 'U',
3614+ 0x10acd: 'L',
3615+ 0x10ace: 'R',
3616+ 0x10acf: 'R',
3617+ 0x10ad0: 'R',
3618+ 0x10ad1: 'R',
3619+ 0x10ad2: 'R',
3620+ 0x10ad3: 'D',
3621+ 0x10ad4: 'D',
3622+ 0x10ad5: 'D',
3623+ 0x10ad6: 'D',
3624+ 0x10ad7: 'L',
3625+ 0x10ad8: 'D',
3626+ 0x10ad9: 'D',
3627+ 0x10ada: 'D',
3628+ 0x10adb: 'D',
3629+ 0x10adc: 'D',
3630+ 0x10add: 'R',
3631+ 0x10ade: 'D',
3632+ 0x10adf: 'D',
3633+ 0x10ae0: 'D',
3634+ 0x10ae1: 'R',
3635+ 0x10ae2: 'U',
3636+ 0x10ae3: 'U',
3637+ 0x10ae4: 'R',
3638+ 0x10aeb: 'D',
3639+ 0x10aec: 'D',
3640+ 0x10aed: 'D',
3641+ 0x10aee: 'D',
3642+ 0x10aef: 'R',
3643+ 0x10b80: 'D',
3644+ 0x10b81: 'R',
3645+ 0x10b82: 'D',
3646+ 0x10b83: 'R',
3647+ 0x10b84: 'R',
3648+ 0x10b85: 'R',
3649+ 0x10b86: 'D',
3650+ 0x10b87: 'D',
3651+ 0x10b88: 'D',
3652+ 0x10b89: 'R',
3653+ 0x10b8a: 'D',
3654+ 0x10b8b: 'D',
3655+ 0x10b8c: 'R',
3656+ 0x10b8d: 'D',
3657+ 0x10b8e: 'R',
3658+ 0x10b8f: 'R',
3659+ 0x10b90: 'D',
3660+ 0x10b91: 'R',
3661+ 0x10ba9: 'R',
3662+ 0x10baa: 'R',
3663+ 0x10bab: 'R',
3664+ 0x10bac: 'R',
3665+ 0x10bad: 'D',
3666+ 0x10bae: 'D',
3667+ 0x10baf: 'U',
3668 }
3669 codepoint_classes = {
3670- 'PVALID': frozenset(
3671- [0x2d] +
3672- list(range(0x30,0x3a)) +
3673- list(range(0x61,0x7b)) +
3674- list(range(0xdf,0xf7)) +
3675- list(range(0xf8,0x100)) +
3676- [0x101] +
3677- [0x103] +
3678- [0x105] +
3679- [0x107] +
3680- [0x109] +
3681- [0x10b] +
3682- [0x10d] +
3683- [0x10f] +
3684- [0x111] +
3685- [0x113] +
3686- [0x115] +
3687- [0x117] +
3688- [0x119] +
3689- [0x11b] +
3690- [0x11d] +
3691- [0x11f] +
3692- [0x121] +
3693- [0x123] +
3694- [0x125] +
3695- [0x127] +
3696- [0x129] +
3697- [0x12b] +
3698- [0x12d] +
3699- [0x12f] +
3700- [0x131] +
3701- [0x135] +
3702- list(range(0x137,0x139)) +
3703- [0x13a] +
3704- [0x13c] +
3705- [0x13e] +
3706- [0x142] +
3707- [0x144] +
3708- [0x146] +
3709- [0x148] +
3710- [0x14b] +
3711- [0x14d] +
3712- [0x14f] +
3713- [0x151] +
3714- [0x153] +
3715- [0x155] +
3716- [0x157] +
3717- [0x159] +
3718- [0x15b] +
3719- [0x15d] +
3720- [0x15f] +
3721- [0x161] +
3722- [0x163] +
3723- [0x165] +
3724- [0x167] +
3725- [0x169] +
3726- [0x16b] +
3727- [0x16d] +
3728- [0x16f] +
3729- [0x171] +
3730- [0x173] +
3731- [0x175] +
3732- [0x177] +
3733- [0x17a] +
3734- [0x17c] +
3735- [0x17e] +
3736- [0x180] +
3737- [0x183] +
3738- [0x185] +
3739- [0x188] +
3740- list(range(0x18c,0x18e)) +
3741- [0x192] +
3742- [0x195] +
3743- list(range(0x199,0x19c)) +
3744- [0x19e] +
3745- [0x1a1] +
3746- [0x1a3] +
3747- [0x1a5] +
3748- [0x1a8] +
3749- list(range(0x1aa,0x1ac)) +
3750- [0x1ad] +
3751- [0x1b0] +
3752- [0x1b4] +
3753- [0x1b6] +
3754- list(range(0x1b9,0x1bc)) +
3755- list(range(0x1bd,0x1c4)) +
3756- [0x1ce] +
3757- [0x1d0] +
3758- [0x1d2] +
3759- [0x1d4] +
3760- [0x1d6] +
3761- [0x1d8] +
3762- [0x1da] +
3763- list(range(0x1dc,0x1de)) +
3764- [0x1df] +
3765- [0x1e1] +
3766- [0x1e3] +
3767- [0x1e5] +
3768- [0x1e7] +
3769- [0x1e9] +
3770- [0x1eb] +
3771- [0x1ed] +
3772- list(range(0x1ef,0x1f1)) +
3773- [0x1f5] +
3774- [0x1f9] +
3775- [0x1fb] +
3776- [0x1fd] +
3777- [0x1ff] +
3778- [0x201] +
3779- [0x203] +
3780- [0x205] +
3781- [0x207] +
3782- [0x209] +
3783- [0x20b] +
3784- [0x20d] +
3785- [0x20f] +
3786- [0x211] +
3787- [0x213] +
3788- [0x215] +
3789- [0x217] +
3790- [0x219] +
3791- [0x21b] +
3792- [0x21d] +
3793- [0x21f] +
3794- [0x221] +
3795- [0x223] +
3796- [0x225] +
3797- [0x227] +
3798- [0x229] +
3799- [0x22b] +
3800- [0x22d] +
3801- [0x22f] +
3802- [0x231] +
3803- list(range(0x233,0x23a)) +
3804- [0x23c] +
3805- list(range(0x23f,0x241)) +
3806- [0x242] +
3807- [0x247] +
3808- [0x249] +
3809- [0x24b] +
3810- [0x24d] +
3811- list(range(0x24f,0x2b0)) +
3812- list(range(0x2b9,0x2c2)) +
3813- list(range(0x2c6,0x2d2)) +
3814- [0x2ec] +
3815- [0x2ee] +
3816- list(range(0x300,0x340)) +
3817- [0x342] +
3818- list(range(0x346,0x34f)) +
3819- list(range(0x350,0x370)) +
3820- [0x371] +
3821- [0x373] +
3822- [0x377] +
3823- list(range(0x37b,0x37e)) +
3824- [0x390] +
3825- list(range(0x3ac,0x3cf)) +
3826- [0x3d7] +
3827- [0x3d9] +
3828- [0x3db] +
3829- [0x3dd] +
3830- [0x3df] +
3831- [0x3e1] +
3832- [0x3e3] +
3833- [0x3e5] +
3834- [0x3e7] +
3835- [0x3e9] +
3836- [0x3eb] +
3837- [0x3ed] +
3838- [0x3ef] +
3839- [0x3f3] +
3840- [0x3f8] +
3841- list(range(0x3fb,0x3fd)) +
3842- list(range(0x430,0x460)) +
3843- [0x461] +
3844- [0x463] +
3845- [0x465] +
3846- [0x467] +
3847- [0x469] +
3848- [0x46b] +
3849- [0x46d] +
3850- [0x46f] +
3851- [0x471] +
3852- [0x473] +
3853- [0x475] +
3854- [0x477] +
3855- [0x479] +
3856- [0x47b] +
3857- [0x47d] +
3858- [0x47f] +
3859- [0x481] +
3860- list(range(0x483,0x488)) +
3861- [0x48b] +
3862- [0x48d] +
3863- [0x48f] +
3864- [0x491] +
3865- [0x493] +
3866- [0x495] +
3867- [0x497] +
3868- [0x499] +
3869- [0x49b] +
3870- [0x49d] +
3871- [0x49f] +
3872- [0x4a1] +
3873- [0x4a3] +
3874- [0x4a5] +
3875- [0x4a7] +
3876- [0x4a9] +
3877- [0x4ab] +
3878- [0x4ad] +
3879- [0x4af] +
3880- [0x4b1] +
3881- [0x4b3] +
3882- [0x4b5] +
3883- [0x4b7] +
3884- [0x4b9] +
3885- [0x4bb] +
3886- [0x4bd] +
3887- [0x4bf] +
3888- [0x4c2] +
3889- [0x4c4] +
3890- [0x4c6] +
3891- [0x4c8] +
3892- [0x4ca] +
3893- [0x4cc] +
3894- list(range(0x4ce,0x4d0)) +
3895- [0x4d1] +
3896- [0x4d3] +
3897- [0x4d5] +
3898- [0x4d7] +
3899- [0x4d9] +
3900- [0x4db] +
3901- [0x4dd] +
3902- [0x4df] +
3903- [0x4e1] +
3904- [0x4e3] +
3905- [0x4e5] +
3906- [0x4e7] +
3907- [0x4e9] +
3908- [0x4eb] +
3909- [0x4ed] +
3910- [0x4ef] +
3911- [0x4f1] +
3912- [0x4f3] +
3913- [0x4f5] +
3914- [0x4f7] +
3915- [0x4f9] +
3916- [0x4fb] +
3917- [0x4fd] +
3918- [0x4ff] +
3919- [0x501] +
3920- [0x503] +
3921- [0x505] +
3922- [0x507] +
3923- [0x509] +
3924- [0x50b] +
3925- [0x50d] +
3926- [0x50f] +
3927- [0x511] +
3928- [0x513] +
3929- [0x515] +
3930- [0x517] +
3931- [0x519] +
3932- [0x51b] +
3933- [0x51d] +
3934- [0x51f] +
3935- [0x521] +
3936- [0x523] +
3937- [0x525] +
3938- [0x527] +
3939- [0x559] +
3940- list(range(0x561,0x587)) +
3941- list(range(0x591,0x5be)) +
3942- [0x5bf] +
3943- list(range(0x5c1,0x5c3)) +
3944- list(range(0x5c4,0x5c6)) +
3945- [0x5c7] +
3946- list(range(0x5d0,0x5eb)) +
3947- list(range(0x5f0,0x5f3)) +
3948- list(range(0x610,0x61b)) +
3949- list(range(0x620,0x640)) +
3950- list(range(0x641,0x660)) +
3951- list(range(0x66e,0x675)) +
3952- list(range(0x679,0x6d4)) +
3953- list(range(0x6d5,0x6dd)) +
3954- list(range(0x6df,0x6e9)) +
3955- list(range(0x6ea,0x6f0)) +
3956- list(range(0x6fa,0x700)) +
3957- list(range(0x710,0x74b)) +
3958- list(range(0x74d,0x7b2)) +
3959- list(range(0x7c0,0x7f6)) +
3960- list(range(0x800,0x82e)) +
3961- list(range(0x840,0x85c)) +
3962- [0x8a0] +
3963- list(range(0x8a2,0x8ad)) +
3964- list(range(0x8e4,0x8ff)) +
3965- list(range(0x900,0x958)) +
3966- list(range(0x960,0x964)) +
3967- list(range(0x966,0x970)) +
3968- list(range(0x971,0x978)) +
3969- list(range(0x979,0x980)) +
3970- list(range(0x981,0x984)) +
3971- list(range(0x985,0x98d)) +
3972- list(range(0x98f,0x991)) +
3973- list(range(0x993,0x9a9)) +
3974- list(range(0x9aa,0x9b1)) +
3975- [0x9b2] +
3976- list(range(0x9b6,0x9ba)) +
3977- list(range(0x9bc,0x9c5)) +
3978- list(range(0x9c7,0x9c9)) +
3979- list(range(0x9cb,0x9cf)) +
3980- [0x9d7] +
3981- list(range(0x9e0,0x9e4)) +
3982- list(range(0x9e6,0x9f2)) +
3983- list(range(0xa01,0xa04)) +
3984- list(range(0xa05,0xa0b)) +
3985- list(range(0xa0f,0xa11)) +
3986- list(range(0xa13,0xa29)) +
3987- list(range(0xa2a,0xa31)) +
3988- [0xa32] +
3989- [0xa35] +
3990- list(range(0xa38,0xa3a)) +
3991- [0xa3c] +
3992- list(range(0xa3e,0xa43)) +
3993- list(range(0xa47,0xa49)) +
3994- list(range(0xa4b,0xa4e)) +
3995- [0xa51] +
3996- [0xa5c] +
3997- list(range(0xa66,0xa76)) +
3998- list(range(0xa81,0xa84)) +
3999- list(range(0xa85,0xa8e)) +
4000- list(range(0xa8f,0xa92)) +
4001- list(range(0xa93,0xaa9)) +
4002- list(range(0xaaa,0xab1)) +
4003- list(range(0xab2,0xab4)) +
4004- list(range(0xab5,0xaba)) +
4005- list(range(0xabc,0xac6)) +
4006- list(range(0xac7,0xaca)) +
4007- list(range(0xacb,0xace)) +
4008- [0xad0] +
4009- list(range(0xae0,0xae4)) +
4010- list(range(0xae6,0xaf0)) +
4011- list(range(0xb01,0xb04)) +
4012- list(range(0xb05,0xb0d)) +
4013- list(range(0xb0f,0xb11)) +
4014- list(range(0xb13,0xb29)) +
4015- list(range(0xb2a,0xb31)) +
4016- list(range(0xb32,0xb34)) +
4017- list(range(0xb35,0xb3a)) +
4018- list(range(0xb3c,0xb45)) +
4019- list(range(0xb47,0xb49)) +
4020- list(range(0xb4b,0xb4e)) +
4021- list(range(0xb56,0xb58)) +
4022- list(range(0xb5f,0xb64)) +
4023- list(range(0xb66,0xb70)) +
4024- [0xb71] +
4025- list(range(0xb82,0xb84)) +
4026- list(range(0xb85,0xb8b)) +
4027- list(range(0xb8e,0xb91)) +
4028- list(range(0xb92,0xb96)) +
4029- list(range(0xb99,0xb9b)) +
4030- [0xb9c] +
4031- list(range(0xb9e,0xba0)) +
4032- list(range(0xba3,0xba5)) +
4033- list(range(0xba8,0xbab)) +
4034- list(range(0xbae,0xbba)) +
4035- list(range(0xbbe,0xbc3)) +
4036- list(range(0xbc6,0xbc9)) +
4037- list(range(0xbca,0xbce)) +
4038- [0xbd0] +
4039- [0xbd7] +
4040- list(range(0xbe6,0xbf0)) +
4041- list(range(0xc01,0xc04)) +
4042- list(range(0xc05,0xc0d)) +
4043- list(range(0xc0e,0xc11)) +
4044- list(range(0xc12,0xc29)) +
4045- list(range(0xc2a,0xc34)) +
4046- list(range(0xc35,0xc3a)) +
4047- list(range(0xc3d,0xc45)) +
4048- list(range(0xc46,0xc49)) +
4049- list(range(0xc4a,0xc4e)) +
4050- list(range(0xc55,0xc57)) +
4051- list(range(0xc58,0xc5a)) +
4052- list(range(0xc60,0xc64)) +
4053- list(range(0xc66,0xc70)) +
4054- list(range(0xc82,0xc84)) +
4055- list(range(0xc85,0xc8d)) +
4056- list(range(0xc8e,0xc91)) +
4057- list(range(0xc92,0xca9)) +
4058- list(range(0xcaa,0xcb4)) +
4059- list(range(0xcb5,0xcba)) +
4060- list(range(0xcbc,0xcc5)) +
4061- list(range(0xcc6,0xcc9)) +
4062- list(range(0xcca,0xcce)) +
4063- list(range(0xcd5,0xcd7)) +
4064- [0xcde] +
4065- list(range(0xce0,0xce4)) +
4066- list(range(0xce6,0xcf0)) +
4067- list(range(0xcf1,0xcf3)) +
4068- list(range(0xd02,0xd04)) +
4069- list(range(0xd05,0xd0d)) +
4070- list(range(0xd0e,0xd11)) +
4071- list(range(0xd12,0xd3b)) +
4072- list(range(0xd3d,0xd45)) +
4073- list(range(0xd46,0xd49)) +
4074- list(range(0xd4a,0xd4f)) +
4075- [0xd57] +
4076- list(range(0xd60,0xd64)) +
4077- list(range(0xd66,0xd70)) +
4078- list(range(0xd7a,0xd80)) +
4079- list(range(0xd82,0xd84)) +
4080- list(range(0xd85,0xd97)) +
4081- list(range(0xd9a,0xdb2)) +
4082- list(range(0xdb3,0xdbc)) +
4083- [0xdbd] +
4084- list(range(0xdc0,0xdc7)) +
4085- [0xdca] +
4086- list(range(0xdcf,0xdd5)) +
4087- [0xdd6] +
4088- list(range(0xdd8,0xde0)) +
4089- list(range(0xdf2,0xdf4)) +
4090- list(range(0xe01,0xe33)) +
4091- list(range(0xe34,0xe3b)) +
4092- list(range(0xe40,0xe4f)) +
4093- list(range(0xe50,0xe5a)) +
4094- list(range(0xe81,0xe83)) +
4095- [0xe84] +
4096- list(range(0xe87,0xe89)) +
4097- [0xe8a] +
4098- [0xe8d] +
4099- list(range(0xe94,0xe98)) +
4100- list(range(0xe99,0xea0)) +
4101- list(range(0xea1,0xea4)) +
4102- [0xea5] +
4103- [0xea7] +
4104- list(range(0xeaa,0xeac)) +
4105- list(range(0xead,0xeb3)) +
4106- list(range(0xeb4,0xeba)) +
4107- list(range(0xebb,0xebe)) +
4108- list(range(0xec0,0xec5)) +
4109- [0xec6] +
4110- list(range(0xec8,0xece)) +
4111- list(range(0xed0,0xeda)) +
4112- list(range(0xede,0xee0)) +
4113- [0xf00] +
4114- [0xf0b] +
4115- list(range(0xf18,0xf1a)) +
4116- list(range(0xf20,0xf2a)) +
4117- [0xf35] +
4118- [0xf37] +
4119- [0xf39] +
4120- list(range(0xf3e,0xf43)) +
4121- list(range(0xf44,0xf48)) +
4122- list(range(0xf49,0xf4d)) +
4123- list(range(0xf4e,0xf52)) +
4124- list(range(0xf53,0xf57)) +
4125- list(range(0xf58,0xf5c)) +
4126- list(range(0xf5d,0xf69)) +
4127- list(range(0xf6a,0xf6d)) +
4128- list(range(0xf71,0xf73)) +
4129- [0xf74] +
4130- list(range(0xf7a,0xf81)) +
4131- list(range(0xf82,0xf85)) +
4132- list(range(0xf86,0xf93)) +
4133- list(range(0xf94,0xf98)) +
4134- list(range(0xf99,0xf9d)) +
4135- list(range(0xf9e,0xfa2)) +
4136- list(range(0xfa3,0xfa7)) +
4137- list(range(0xfa8,0xfac)) +
4138- list(range(0xfad,0xfb9)) +
4139- list(range(0xfba,0xfbd)) +
4140- [0xfc6] +
4141- list(range(0x1000,0x104a)) +
4142- list(range(0x1050,0x109e)) +
4143- list(range(0x10d0,0x10fb)) +
4144- list(range(0x10fd,0x1100)) +
4145- list(range(0x1200,0x1249)) +
4146- list(range(0x124a,0x124e)) +
4147- list(range(0x1250,0x1257)) +
4148- [0x1258] +
4149- list(range(0x125a,0x125e)) +
4150- list(range(0x1260,0x1289)) +
4151- list(range(0x128a,0x128e)) +
4152- list(range(0x1290,0x12b1)) +
4153- list(range(0x12b2,0x12b6)) +
4154- list(range(0x12b8,0x12bf)) +
4155- [0x12c0] +
4156- list(range(0x12c2,0x12c6)) +
4157- list(range(0x12c8,0x12d7)) +
4158- list(range(0x12d8,0x1311)) +
4159- list(range(0x1312,0x1316)) +
4160- list(range(0x1318,0x135b)) +
4161- list(range(0x135d,0x1360)) +
4162- list(range(0x1380,0x1390)) +
4163- list(range(0x13a0,0x13f5)) +
4164- list(range(0x1401,0x166d)) +
4165- list(range(0x166f,0x1680)) +
4166- list(range(0x1681,0x169b)) +
4167- list(range(0x16a0,0x16eb)) +
4168- list(range(0x1700,0x170d)) +
4169- list(range(0x170e,0x1715)) +
4170- list(range(0x1720,0x1735)) +
4171- list(range(0x1740,0x1754)) +
4172- list(range(0x1760,0x176d)) +
4173- list(range(0x176e,0x1771)) +
4174- list(range(0x1772,0x1774)) +
4175- list(range(0x1780,0x17b4)) +
4176- list(range(0x17b6,0x17d4)) +
4177- [0x17d7] +
4178- list(range(0x17dc,0x17de)) +
4179- list(range(0x17e0,0x17ea)) +
4180- list(range(0x1810,0x181a)) +
4181- list(range(0x1820,0x1878)) +
4182- list(range(0x1880,0x18ab)) +
4183- list(range(0x18b0,0x18f6)) +
4184- list(range(0x1900,0x191d)) +
4185- list(range(0x1920,0x192c)) +
4186- list(range(0x1930,0x193c)) +
4187- list(range(0x1946,0x196e)) +
4188- list(range(0x1970,0x1975)) +
4189- list(range(0x1980,0x19ac)) +
4190- list(range(0x19b0,0x19ca)) +
4191- list(range(0x19d0,0x19da)) +
4192- list(range(0x1a00,0x1a1c)) +
4193- list(range(0x1a20,0x1a5f)) +
4194- list(range(0x1a60,0x1a7d)) +
4195- list(range(0x1a7f,0x1a8a)) +
4196- list(range(0x1a90,0x1a9a)) +
4197- [0x1aa7] +
4198- list(range(0x1b00,0x1b4c)) +
4199- list(range(0x1b50,0x1b5a)) +
4200- list(range(0x1b6b,0x1b74)) +
4201- list(range(0x1b80,0x1bf4)) +
4202- list(range(0x1c00,0x1c38)) +
4203- list(range(0x1c40,0x1c4a)) +
4204- list(range(0x1c4d,0x1c7e)) +
4205- list(range(0x1cd0,0x1cd3)) +
4206- list(range(0x1cd4,0x1cf7)) +
4207- list(range(0x1d00,0x1d2c)) +
4208- [0x1d2f] +
4209- [0x1d3b] +
4210- [0x1d4e] +
4211- list(range(0x1d6b,0x1d78)) +
4212- list(range(0x1d79,0x1d9b)) +
4213- list(range(0x1dc0,0x1de7)) +
4214- list(range(0x1dfc,0x1e00)) +
4215- [0x1e01] +
4216- [0x1e03] +
4217- [0x1e05] +
4218- [0x1e07] +
4219- [0x1e09] +
4220- [0x1e0b] +
4221- [0x1e0d] +
4222- [0x1e0f] +
4223- [0x1e11] +
4224- [0x1e13] +
4225- [0x1e15] +
4226- [0x1e17] +
4227- [0x1e19] +
4228- [0x1e1b] +
4229- [0x1e1d] +
4230- [0x1e1f] +
4231- [0x1e21] +
4232- [0x1e23] +
4233- [0x1e25] +
4234- [0x1e27] +
4235- [0x1e29] +
4236- [0x1e2b] +
4237- [0x1e2d] +
4238- [0x1e2f] +
4239- [0x1e31] +
4240- [0x1e33] +
4241- [0x1e35] +
4242- [0x1e37] +
4243- [0x1e39] +
4244- [0x1e3b] +
4245- [0x1e3d] +
4246- [0x1e3f] +
4247- [0x1e41] +
4248- [0x1e43] +
4249- [0x1e45] +
4250- [0x1e47] +
4251- [0x1e49] +
4252- [0x1e4b] +
4253- [0x1e4d] +
4254- [0x1e4f] +
4255- [0x1e51] +
4256- [0x1e53] +
4257- [0x1e55] +
4258- [0x1e57] +
4259- [0x1e59] +
4260- [0x1e5b] +
4261- [0x1e5d] +
4262- [0x1e5f] +
4263- [0x1e61] +
4264- [0x1e63] +
4265- [0x1e65] +
4266- [0x1e67] +
4267- [0x1e69] +
4268- [0x1e6b] +
4269- [0x1e6d] +
4270- [0x1e6f] +
4271- [0x1e71] +
4272- [0x1e73] +
4273- [0x1e75] +
4274- [0x1e77] +
4275- [0x1e79] +
4276- [0x1e7b] +
4277- [0x1e7d] +
4278- [0x1e7f] +
4279- [0x1e81] +
4280- [0x1e83] +
4281- [0x1e85] +
4282- [0x1e87] +
4283- [0x1e89] +
4284- [0x1e8b] +
4285- [0x1e8d] +
4286- [0x1e8f] +
4287- [0x1e91] +
4288- [0x1e93] +
4289- list(range(0x1e95,0x1e9a)) +
4290- list(range(0x1e9c,0x1e9e)) +
4291- [0x1e9f] +
4292- [0x1ea1] +
4293- [0x1ea3] +
4294- [0x1ea5] +
4295- [0x1ea7] +
4296- [0x1ea9] +
4297- [0x1eab] +
4298- [0x1ead] +
4299- [0x1eaf] +
4300- [0x1eb1] +
4301- [0x1eb3] +
4302- [0x1eb5] +
4303- [0x1eb7] +
4304- [0x1eb9] +
4305- [0x1ebb] +
4306- [0x1ebd] +
4307- [0x1ebf] +
4308- [0x1ec1] +
4309- [0x1ec3] +
4310- [0x1ec5] +
4311- [0x1ec7] +
4312- [0x1ec9] +
4313- [0x1ecb] +
4314- [0x1ecd] +
4315- [0x1ecf] +
4316- [0x1ed1] +
4317- [0x1ed3] +
4318- [0x1ed5] +
4319- [0x1ed7] +
4320- [0x1ed9] +
4321- [0x1edb] +
4322- [0x1edd] +
4323- [0x1edf] +
4324- [0x1ee1] +
4325- [0x1ee3] +
4326- [0x1ee5] +
4327- [0x1ee7] +
4328- [0x1ee9] +
4329- [0x1eeb] +
4330- [0x1eed] +
4331- [0x1eef] +
4332- [0x1ef1] +
4333- [0x1ef3] +
4334- [0x1ef5] +
4335- [0x1ef7] +
4336- [0x1ef9] +
4337- [0x1efb] +
4338- [0x1efd] +
4339- list(range(0x1eff,0x1f08)) +
4340- list(range(0x1f10,0x1f16)) +
4341- list(range(0x1f20,0x1f28)) +
4342- list(range(0x1f30,0x1f38)) +
4343- list(range(0x1f40,0x1f46)) +
4344- list(range(0x1f50,0x1f58)) +
4345- list(range(0x1f60,0x1f68)) +
4346- [0x1f70] +
4347- [0x1f72] +
4348- [0x1f74] +
4349- [0x1f76] +
4350- [0x1f78] +
4351- [0x1f7a] +
4352- [0x1f7c] +
4353- list(range(0x1fb0,0x1fb2)) +
4354- [0x1fb6] +
4355- [0x1fc6] +
4356- list(range(0x1fd0,0x1fd3)) +
4357- list(range(0x1fd6,0x1fd8)) +
4358- list(range(0x1fe0,0x1fe3)) +
4359- list(range(0x1fe4,0x1fe8)) +
4360- [0x1ff6] +
4361- [0x214e] +
4362- [0x2184] +
4363- list(range(0x2c30,0x2c5f)) +
4364- [0x2c61] +
4365- list(range(0x2c65,0x2c67)) +
4366- [0x2c68] +
4367- [0x2c6a] +
4368- [0x2c6c] +
4369- [0x2c71] +
4370- list(range(0x2c73,0x2c75)) +
4371- list(range(0x2c76,0x2c7c)) +
4372- [0x2c81] +
4373- [0x2c83] +
4374- [0x2c85] +
4375- [0x2c87] +
4376- [0x2c89] +
4377- [0x2c8b] +
4378- [0x2c8d] +
4379- [0x2c8f] +
4380- [0x2c91] +
4381- [0x2c93] +
4382- [0x2c95] +
4383- [0x2c97] +
4384- [0x2c99] +
4385- [0x2c9b] +
4386- [0x2c9d] +
4387- [0x2c9f] +
4388- [0x2ca1] +
4389- [0x2ca3] +
4390- [0x2ca5] +
4391- [0x2ca7] +
4392- [0x2ca9] +
4393- [0x2cab] +
4394- [0x2cad] +
4395- [0x2caf] +
4396- [0x2cb1] +
4397- [0x2cb3] +
4398- [0x2cb5] +
4399- [0x2cb7] +
4400- [0x2cb9] +
4401- [0x2cbb] +
4402- [0x2cbd] +
4403- [0x2cbf] +
4404- [0x2cc1] +
4405- [0x2cc3] +
4406- [0x2cc5] +
4407- [0x2cc7] +
4408- [0x2cc9] +
4409- [0x2ccb] +
4410- [0x2ccd] +
4411- [0x2ccf] +
4412- [0x2cd1] +
4413- [0x2cd3] +
4414- [0x2cd5] +
4415- [0x2cd7] +
4416- [0x2cd9] +
4417- [0x2cdb] +
4418- [0x2cdd] +
4419- [0x2cdf] +
4420- [0x2ce1] +
4421- list(range(0x2ce3,0x2ce5)) +
4422- [0x2cec] +
4423- list(range(0x2cee,0x2cf2)) +
4424- [0x2cf3] +
4425- list(range(0x2d00,0x2d26)) +
4426- [0x2d27] +
4427- [0x2d2d] +
4428- list(range(0x2d30,0x2d68)) +
4429- list(range(0x2d7f,0x2d97)) +
4430- list(range(0x2da0,0x2da7)) +
4431- list(range(0x2da8,0x2daf)) +
4432- list(range(0x2db0,0x2db7)) +
4433- list(range(0x2db8,0x2dbf)) +
4434- list(range(0x2dc0,0x2dc7)) +
4435- list(range(0x2dc8,0x2dcf)) +
4436- list(range(0x2dd0,0x2dd7)) +
4437- list(range(0x2dd8,0x2ddf)) +
4438- list(range(0x2de0,0x2e00)) +
4439- [0x2e2f] +
4440- list(range(0x3005,0x3008)) +
4441- list(range(0x302a,0x302e)) +
4442- [0x303c] +
4443- list(range(0x3041,0x3097)) +
4444- list(range(0x3099,0x309b)) +
4445- list(range(0x309d,0x309f)) +
4446- list(range(0x30a1,0x30fb)) +
4447- list(range(0x30fc,0x30ff)) +
4448- list(range(0x3105,0x312e)) +
4449- list(range(0x31a0,0x31bb)) +
4450- list(range(0x31f0,0x3200)) +
4451- list(range(0x3400,0x4db6)) +
4452- list(range(0x4e00,0x9fcd)) +
4453- list(range(0xa000,0xa48d)) +
4454- list(range(0xa4d0,0xa4fe)) +
4455- list(range(0xa500,0xa60d)) +
4456- list(range(0xa610,0xa62c)) +
4457- [0xa641] +
4458- [0xa643] +
4459- [0xa645] +
4460- [0xa647] +
4461- [0xa649] +
4462- [0xa64b] +
4463- [0xa64d] +
4464- [0xa64f] +
4465- [0xa651] +
4466- [0xa653] +
4467- [0xa655] +
4468- [0xa657] +
4469- [0xa659] +
4470- [0xa65b] +
4471- [0xa65d] +
4472- [0xa65f] +
4473- [0xa661] +
4474- [0xa663] +
4475- [0xa665] +
4476- [0xa667] +
4477- [0xa669] +
4478- [0xa66b] +
4479- list(range(0xa66d,0xa670)) +
4480- list(range(0xa674,0xa67e)) +
4481- [0xa67f] +
4482- [0xa681] +
4483- [0xa683] +
4484- [0xa685] +
4485- [0xa687] +
4486- [0xa689] +
4487- [0xa68b] +
4488- [0xa68d] +
4489- [0xa68f] +
4490- [0xa691] +
4491- [0xa693] +
4492- [0xa695] +
4493- [0xa697] +
4494- list(range(0xa69f,0xa6e6)) +
4495- list(range(0xa6f0,0xa6f2)) +
4496- list(range(0xa717,0xa720)) +
4497- [0xa723] +
4498- [0xa725] +
4499- [0xa727] +
4500- [0xa729] +
4501- [0xa72b] +
4502- [0xa72d] +
4503- list(range(0xa72f,0xa732)) +
4504- [0xa733] +
4505- [0xa735] +
4506- [0xa737] +
4507- [0xa739] +
4508- [0xa73b] +
4509- [0xa73d] +
4510- [0xa73f] +
4511- [0xa741] +
4512- [0xa743] +
4513- [0xa745] +
4514- [0xa747] +
4515- [0xa749] +
4516- [0xa74b] +
4517- [0xa74d] +
4518- [0xa74f] +
4519- [0xa751] +
4520- [0xa753] +
4521- [0xa755] +
4522- [0xa757] +
4523- [0xa759] +
4524- [0xa75b] +
4525- [0xa75d] +
4526- [0xa75f] +
4527- [0xa761] +
4528- [0xa763] +
4529- [0xa765] +
4530- [0xa767] +
4531- [0xa769] +
4532- [0xa76b] +
4533- [0xa76d] +
4534- [0xa76f] +
4535- list(range(0xa771,0xa779)) +
4536- [0xa77a] +
4537- [0xa77c] +
4538- [0xa77f] +
4539- [0xa781] +
4540- [0xa783] +
4541- [0xa785] +
4542- list(range(0xa787,0xa789)) +
4543- [0xa78c] +
4544- [0xa78e] +
4545- [0xa791] +
4546- [0xa793] +
4547- [0xa7a1] +
4548- [0xa7a3] +
4549- [0xa7a5] +
4550- [0xa7a7] +
4551- [0xa7a9] +
4552- list(range(0xa7fa,0xa828)) +
4553- list(range(0xa840,0xa874)) +
4554- list(range(0xa880,0xa8c5)) +
4555- list(range(0xa8d0,0xa8da)) +
4556- list(range(0xa8e0,0xa8f8)) +
4557- [0xa8fb] +
4558- list(range(0xa900,0xa92e)) +
4559- list(range(0xa930,0xa954)) +
4560- list(range(0xa980,0xa9c1)) +
4561- list(range(0xa9cf,0xa9da)) +
4562- list(range(0xaa00,0xaa37)) +
4563- list(range(0xaa40,0xaa4e)) +
4564- list(range(0xaa50,0xaa5a)) +
4565- list(range(0xaa60,0xaa77)) +
4566- list(range(0xaa7a,0xaa7c)) +
4567- list(range(0xaa80,0xaac3)) +
4568- list(range(0xaadb,0xaade)) +
4569- list(range(0xaae0,0xaaf0)) +
4570- list(range(0xaaf2,0xaaf7)) +
4571- list(range(0xab01,0xab07)) +
4572- list(range(0xab09,0xab0f)) +
4573- list(range(0xab11,0xab17)) +
4574- list(range(0xab20,0xab27)) +
4575- list(range(0xab28,0xab2f)) +
4576- list(range(0xabc0,0xabeb)) +
4577- list(range(0xabec,0xabee)) +
4578- list(range(0xabf0,0xabfa)) +
4579- list(range(0xac00,0xd7a4)) +
4580- list(range(0xfa0e,0xfa10)) +
4581- [0xfa11] +
4582- list(range(0xfa13,0xfa15)) +
4583- [0xfa1f] +
4584- [0xfa21] +
4585- list(range(0xfa23,0xfa25)) +
4586- list(range(0xfa27,0xfa2a)) +
4587- [0xfb1e] +
4588- list(range(0xfe20,0xfe27)) +
4589- [0xfe73] +
4590- list(range(0x10000,0x1000c)) +
4591- list(range(0x1000d,0x10027)) +
4592- list(range(0x10028,0x1003b)) +
4593- list(range(0x1003c,0x1003e)) +
4594- list(range(0x1003f,0x1004e)) +
4595- list(range(0x10050,0x1005e)) +
4596- list(range(0x10080,0x100fb)) +
4597- [0x101fd] +
4598- list(range(0x10280,0x1029d)) +
4599- list(range(0x102a0,0x102d1)) +
4600- list(range(0x10300,0x1031f)) +
4601- list(range(0x10330,0x10341)) +
4602- list(range(0x10342,0x1034a)) +
4603- list(range(0x10380,0x1039e)) +
4604- list(range(0x103a0,0x103c4)) +
4605- list(range(0x103c8,0x103d0)) +
4606- list(range(0x10428,0x1049e)) +
4607- list(range(0x104a0,0x104aa)) +
4608- list(range(0x10800,0x10806)) +
4609- [0x10808] +
4610- list(range(0x1080a,0x10836)) +
4611- list(range(0x10837,0x10839)) +
4612- [0x1083c] +
4613- list(range(0x1083f,0x10856)) +
4614- list(range(0x10900,0x10916)) +
4615- list(range(0x10920,0x1093a)) +
4616- list(range(0x10980,0x109b8)) +
4617- list(range(0x109be,0x109c0)) +
4618- list(range(0x10a00,0x10a04)) +
4619- list(range(0x10a05,0x10a07)) +
4620- list(range(0x10a0c,0x10a14)) +
4621- list(range(0x10a15,0x10a18)) +
4622- list(range(0x10a19,0x10a34)) +
4623- list(range(0x10a38,0x10a3b)) +
4624- [0x10a3f] +
4625- list(range(0x10a60,0x10a7d)) +
4626- list(range(0x10b00,0x10b36)) +
4627- list(range(0x10b40,0x10b56)) +
4628- list(range(0x10b60,0x10b73)) +
4629- list(range(0x10c00,0x10c49)) +
4630- list(range(0x11000,0x11047)) +
4631- list(range(0x11066,0x11070)) +
4632- list(range(0x11080,0x110bb)) +
4633- list(range(0x110d0,0x110e9)) +
4634- list(range(0x110f0,0x110fa)) +
4635- list(range(0x11100,0x11135)) +
4636- list(range(0x11136,0x11140)) +
4637- list(range(0x11180,0x111c5)) +
4638- list(range(0x111d0,0x111da)) +
4639- list(range(0x11680,0x116b8)) +
4640- list(range(0x116c0,0x116ca)) +
4641- list(range(0x12000,0x1236f)) +
4642- list(range(0x13000,0x1342f)) +
4643- list(range(0x16800,0x16a39)) +
4644- list(range(0x16f00,0x16f45)) +
4645- list(range(0x16f50,0x16f7f)) +
4646- list(range(0x16f8f,0x16fa0)) +
4647- list(range(0x1b000,0x1b002)) +
4648- list(range(0x20000,0x2a6d7)) +
4649- list(range(0x2a700,0x2b735)) +
4650- list(range(0x2b740,0x2b81e))
4651- ),
4652- 'CONTEXTJ': frozenset(
4653- list(range(0x200c,0x200e))
4654- ),
4655- 'CONTEXTO': frozenset(
4656- [0xb7] +
4657- [0x375] +
4658- list(range(0x5f3,0x5f5)) +
4659- list(range(0x660,0x66a)) +
4660- list(range(0x6f0,0x6fa)) +
4661- [0x30fb]
4662- ),
4663- 'DISALLOWED': frozenset(
4664- list(range(0x0,0x2d)) +
4665- list(range(0x2e,0x30)) +
4666- list(range(0x3a,0x61)) +
4667- list(range(0x7b,0xb7)) +
4668- list(range(0xb8,0xdf)) +
4669- [0xf7] +
4670- [0x100] +
4671- [0x102] +
4672- [0x104] +
4673- [0x106] +
4674- [0x108] +
4675- [0x10a] +
4676- [0x10c] +
4677- [0x10e] +
4678- [0x110] +
4679- [0x112] +
4680- [0x114] +
4681- [0x116] +
4682- [0x118] +
4683- [0x11a] +
4684- [0x11c] +
4685- [0x11e] +
4686- [0x120] +
4687- [0x122] +
4688- [0x124] +
4689- [0x126] +
4690- [0x128] +
4691- [0x12a] +
4692- [0x12c] +
4693- [0x12e] +
4694- [0x130] +
4695- list(range(0x132,0x135)) +
4696- [0x136] +
4697- [0x139] +
4698- [0x13b] +
4699- [0x13d] +
4700- list(range(0x13f,0x142)) +
4701- [0x143] +
4702- [0x145] +
4703- [0x147] +
4704- list(range(0x149,0x14b)) +
4705- [0x14c] +
4706- [0x14e] +
4707- [0x150] +
4708- [0x152] +
4709- [0x154] +
4710- [0x156] +
4711- [0x158] +
4712- [0x15a] +
4713- [0x15c] +
4714- [0x15e] +
4715- [0x160] +
4716- [0x162] +
4717- [0x164] +
4718- [0x166] +
4719- [0x168] +
4720- [0x16a] +
4721- [0x16c] +
4722- [0x16e] +
4723- [0x170] +
4724- [0x172] +
4725- [0x174] +
4726- [0x176] +
4727- list(range(0x178,0x17a)) +
4728- [0x17b] +
4729- [0x17d] +
4730- [0x17f] +
4731- list(range(0x181,0x183)) +
4732- [0x184] +
4733- list(range(0x186,0x188)) +
4734- list(range(0x189,0x18c)) +
4735- list(range(0x18e,0x192)) +
4736- list(range(0x193,0x195)) +
4737- list(range(0x196,0x199)) +
4738- list(range(0x19c,0x19e)) +
4739- list(range(0x19f,0x1a1)) +
4740- [0x1a2] +
4741- [0x1a4] +
4742- list(range(0x1a6,0x1a8)) +
4743- [0x1a9] +
4744- [0x1ac] +
4745- list(range(0x1ae,0x1b0)) +
4746- list(range(0x1b1,0x1b4)) +
4747- [0x1b5] +
4748- list(range(0x1b7,0x1b9)) +
4749- [0x1bc] +
4750- list(range(0x1c4,0x1ce)) +
4751- [0x1cf] +
4752- [0x1d1] +
4753- [0x1d3] +
4754- [0x1d5] +
4755- [0x1d7] +
4756- [0x1d9] +
4757- [0x1db] +
4758- [0x1de] +
4759- [0x1e0] +
4760- [0x1e2] +
4761- [0x1e4] +
4762- [0x1e6] +
4763- [0x1e8] +
4764- [0x1ea] +
4765- [0x1ec] +
4766- [0x1ee] +
4767- list(range(0x1f1,0x1f5)) +
4768- list(range(0x1f6,0x1f9)) +
4769- [0x1fa] +
4770- [0x1fc] +
4771- [0x1fe] +
4772- [0x200] +
4773- [0x202] +
4774- [0x204] +
4775- [0x206] +
4776- [0x208] +
4777- [0x20a] +
4778- [0x20c] +
4779- [0x20e] +
4780- [0x210] +
4781- [0x212] +
4782- [0x214] +
4783- [0x216] +
4784- [0x218] +
4785- [0x21a] +
4786- [0x21c] +
4787- [0x21e] +
4788- [0x220] +
4789- [0x222] +
4790- [0x224] +
4791- [0x226] +
4792- [0x228] +
4793- [0x22a] +
4794- [0x22c] +
4795- [0x22e] +
4796- [0x230] +
4797- [0x232] +
4798- list(range(0x23a,0x23c)) +
4799- list(range(0x23d,0x23f)) +
4800- [0x241] +
4801- list(range(0x243,0x247)) +
4802- [0x248] +
4803- [0x24a] +
4804- [0x24c] +
4805- [0x24e] +
4806- list(range(0x2b0,0x2b9)) +
4807- list(range(0x2c2,0x2c6)) +
4808- list(range(0x2d2,0x2ec)) +
4809- [0x2ed] +
4810- list(range(0x2ef,0x300)) +
4811- list(range(0x340,0x342)) +
4812- list(range(0x343,0x346)) +
4813- [0x34f] +
4814- [0x370] +
4815- [0x372] +
4816- [0x374] +
4817- [0x376] +
4818- [0x37a] +
4819- [0x37e] +
4820- list(range(0x384,0x38b)) +
4821- [0x38c] +
4822- list(range(0x38e,0x390)) +
4823- list(range(0x391,0x3a2)) +
4824- list(range(0x3a3,0x3ac)) +
4825- list(range(0x3cf,0x3d7)) +
4826- [0x3d8] +
4827- [0x3da] +
4828- [0x3dc] +
4829- [0x3de] +
4830- [0x3e0] +
4831- [0x3e2] +
4832- [0x3e4] +
4833- [0x3e6] +
4834- [0x3e8] +
4835- [0x3ea] +
4836- [0x3ec] +
4837- [0x3ee] +
4838- list(range(0x3f0,0x3f3)) +
4839- list(range(0x3f4,0x3f8)) +
4840- list(range(0x3f9,0x3fb)) +
4841- list(range(0x3fd,0x430)) +
4842- [0x460] +
4843- [0x462] +
4844- [0x464] +
4845- [0x466] +
4846- [0x468] +
4847- [0x46a] +
4848- [0x46c] +
4849- [0x46e] +
4850- [0x470] +
4851- [0x472] +
4852- [0x474] +
4853- [0x476] +
4854- [0x478] +
4855- [0x47a] +
4856- [0x47c] +
4857- [0x47e] +
4858- [0x480] +
4859- [0x482] +
4860- list(range(0x488,0x48b)) +
4861- [0x48c] +
4862- [0x48e] +
4863- [0x490] +
4864- [0x492] +
4865- [0x494] +
4866- [0x496] +
4867- [0x498] +
4868- [0x49a] +
4869- [0x49c] +
4870- [0x49e] +
4871- [0x4a0] +
4872- [0x4a2] +
4873- [0x4a4] +
4874- [0x4a6] +
4875- [0x4a8] +
4876- [0x4aa] +
4877- [0x4ac] +
4878- [0x4ae] +
4879- [0x4b0] +
4880- [0x4b2] +
4881- [0x4b4] +
4882- [0x4b6] +
4883- [0x4b8] +
4884- [0x4ba] +
4885- [0x4bc] +
4886- [0x4be] +
4887- list(range(0x4c0,0x4c2)) +
4888- [0x4c3] +
4889- [0x4c5] +
4890- [0x4c7] +
4891- [0x4c9] +
4892- [0x4cb] +
4893- [0x4cd] +
4894- [0x4d0] +
4895- [0x4d2] +
4896- [0x4d4] +
4897- [0x4d6] +
4898- [0x4d8] +
4899- [0x4da] +
4900- [0x4dc] +
4901- [0x4de] +
4902- [0x4e0] +
4903- [0x4e2] +
4904- [0x4e4] +
4905- [0x4e6] +
4906- [0x4e8] +
4907- [0x4ea] +
4908- [0x4ec] +
4909- [0x4ee] +
4910- [0x4f0] +
4911- [0x4f2] +
4912- [0x4f4] +
4913- [0x4f6] +
4914- [0x4f8] +
4915- [0x4fa] +
4916- [0x4fc] +
4917- [0x4fe] +
4918- [0x500] +
4919- [0x502] +
4920- [0x504] +
4921- [0x506] +
4922- [0x508] +
4923- [0x50a] +
4924- [0x50c] +
4925- [0x50e] +
4926- [0x510] +
4927- [0x512] +
4928- [0x514] +
4929- [0x516] +
4930- [0x518] +
4931- [0x51a] +
4932- [0x51c] +
4933- [0x51e] +
4934- [0x520] +
4935- [0x522] +
4936- [0x524] +
4937- [0x526] +
4938- list(range(0x531,0x557)) +
4939- list(range(0x55a,0x560)) +
4940- [0x587] +
4941- list(range(0x589,0x58b)) +
4942- [0x58f] +
4943- [0x5be] +
4944- [0x5c0] +
4945- [0x5c3] +
4946- [0x5c6] +
4947- list(range(0x600,0x605)) +
4948- list(range(0x606,0x610)) +
4949- list(range(0x61b,0x61d)) +
4950- list(range(0x61e,0x620)) +
4951- [0x640] +
4952- list(range(0x66a,0x66e)) +
4953- list(range(0x675,0x679)) +
4954- [0x6d4] +
4955- list(range(0x6dd,0x6df)) +
4956- [0x6e9] +
4957- list(range(0x700,0x70e)) +
4958- [0x70f] +
4959- list(range(0x7f6,0x7fb)) +
4960- list(range(0x830,0x83f)) +
4961- [0x85e] +
4962- list(range(0x958,0x960)) +
4963- list(range(0x964,0x966)) +
4964- [0x970] +
4965- list(range(0x9dc,0x9de)) +
4966- [0x9df] +
4967- list(range(0x9f2,0x9fc)) +
4968- [0xa33] +
4969- [0xa36] +
4970- list(range(0xa59,0xa5c)) +
4971- [0xa5e] +
4972- list(range(0xaf0,0xaf2)) +
4973- list(range(0xb5c,0xb5e)) +
4974- [0xb70] +
4975- list(range(0xb72,0xb78)) +
4976- list(range(0xbf0,0xbfb)) +
4977- list(range(0xc78,0xc80)) +
4978- list(range(0xd70,0xd76)) +
4979- [0xd79] +
4980- [0xdf4] +
4981- [0xe33] +
4982- [0xe3f] +
4983- [0xe4f] +
4984- list(range(0xe5a,0xe5c)) +
4985- [0xeb3] +
4986- list(range(0xedc,0xede)) +
4987- list(range(0xf01,0xf0b)) +
4988- list(range(0xf0c,0xf18)) +
4989- list(range(0xf1a,0xf20)) +
4990- list(range(0xf2a,0xf35)) +
4991- [0xf36] +
4992- [0xf38] +
4993- list(range(0xf3a,0xf3e)) +
4994- [0xf43] +
4995- [0xf4d] +
4996- [0xf52] +
4997- [0xf57] +
4998- [0xf5c] +
4999- [0xf69] +
5000- [0xf73] +
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: