summaryrefslogtreecommitdiffstats
path: root/contrib/python
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/python')
-rw-r--r--contrib/python/asttokens/.dist-info/METADATA22
-rw-r--r--contrib/python/asttokens/README.rst20
-rw-r--r--contrib/python/asttokens/asttokens/asttokens.py114
-rw-r--r--contrib/python/asttokens/asttokens/line_numbers.py24
-rw-r--r--contrib/python/asttokens/asttokens/mark_tokens.py204
-rw-r--r--contrib/python/asttokens/asttokens/util.py142
-rw-r--r--contrib/python/asttokens/asttokens/version.py2
-rw-r--r--contrib/python/asttokens/ya.make2
-rw-r--r--contrib/python/idna/py3/.dist-info/METADATA33
-rw-r--r--contrib/python/idna/py3/README.md31
-rw-r--r--contrib/python/idna/py3/idna/core.py73
-rw-r--r--contrib/python/idna/py3/idna/idnadata.py3551
-rw-r--r--contrib/python/idna/py3/idna/package_data.py2
-rw-r--r--contrib/python/idna/py3/idna/uts46data.py25261
-rw-r--r--contrib/python/idna/py3/tests/test_idna.py55
-rw-r--r--contrib/python/idna/py3/ya.make2
-rw-r--r--contrib/python/propcache/.dist-info/METADATA539
-rw-r--r--contrib/python/propcache/.dist-info/top_level.txt1
-rw-r--r--contrib/python/propcache/.yandex_meta/yamaker.yaml4
-rw-r--r--contrib/python/propcache/LICENSE202
-rw-r--r--contrib/python/propcache/NOTICE13
-rw-r--r--contrib/python/propcache/README.rst98
-rw-r--r--contrib/python/propcache/propcache/__init__.py32
-rw-r--r--contrib/python/propcache/propcache/_helpers.py (renamed from contrib/python/yarl/yarl/_helpers.py)14
-rw-r--r--contrib/python/propcache/propcache/_helpers_c.pyx103
-rw-r--r--contrib/python/propcache/propcache/_helpers_py.py64
-rw-r--r--contrib/python/propcache/propcache/api.py8
-rw-r--r--contrib/python/propcache/propcache/py.typed1
-rw-r--r--contrib/python/propcache/tests/conftest.py115
-rw-r--r--contrib/python/propcache/tests/test_api.py11
-rw-r--r--contrib/python/propcache/tests/test_cached_property.py226
-rw-r--r--contrib/python/propcache/tests/test_init.py43
-rw-r--r--contrib/python/propcache/tests/test_under_cached_property.py252
-rw-r--r--contrib/python/propcache/tests/ya.make11
-rw-r--r--contrib/python/propcache/ya.make34
-rw-r--r--contrib/python/yarl/.dist-info/METADATA70
-rw-r--r--contrib/python/yarl/README.rst9
-rw-r--r--contrib/python/yarl/tests/test_helpers.py91
-rw-r--r--contrib/python/yarl/tests/test_quoting.py89
-rw-r--r--contrib/python/yarl/tests/test_url.py13
-rw-r--r--contrib/python/yarl/tests/ya.make1
-rw-r--r--contrib/python/yarl/ya.make7
-rw-r--r--contrib/python/yarl/yarl/__init__.py2
-rw-r--r--contrib/python/yarl/yarl/_helpers_c.pyi6
-rw-r--r--contrib/python/yarl/yarl/_helpers_c.pyx36
-rw-r--r--contrib/python/yarl/yarl/_helpers_py.py41
-rw-r--r--contrib/python/yarl/yarl/_url.py109
47 files changed, 19850 insertions, 11933 deletions
diff --git a/contrib/python/asttokens/.dist-info/METADATA b/contrib/python/asttokens/.dist-info/METADATA
index e733ebcdbe4..f8b294c35a8 100644
--- a/contrib/python/asttokens/.dist-info/METADATA
+++ b/contrib/python/asttokens/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: asttokens
-Version: 3.0.1
+Version: 3.0.2
Summary: Annotate AST trees with source code positions
Home-page: https://github.com/gristlabs/asttokens
Author: Dmitry Sagalovskiy, Grist Labs
@@ -119,3 +119,23 @@ To contribute:
4. Run tests across all supported interpreters with the ``tox`` command. You will need to have the interpreters installed separately. We recommend ``pyenv`` for that. Use ``tox -p auto`` to run the tests in parallel.
5. By default certain tests which take a very long time to run are skipped, but they are run in CI.
These are marked using the ``pytest`` marker ``slow`` and can be run on their own with ``pytest -m slow`` or as part of the full suite with ``pytest -m ''``.
+
+Documentation
+-------------
+
+Documentation at https://asttokens.readthedocs.io/ is built by Read the Docs automatically on
+every push, from the sources in ``docs/`` (configured in ``.readthedocs.yaml``). To preview
+changes locally::
+
+ pip install -r docs/requirements.txt
+ sphinx-build -M html docs docs/_build
+
+Release
+-------
+
+The version is derived from the git tag by ``setuptools_scm``; there is no version to update in
+the source. To release, draft a new release at https://github.com/gristlabs/asttokens/releases
+with a new tag named ``vX.Y.Z``, and use "Generate release notes" to fill in the description.
+Publishing the release triggers the ``publish.yml`` workflow, which builds the package and
+uploads it to PyPI via `trusted publishing
+<https://docs.pypi.org/trusted-publishers/>`_.
diff --git a/contrib/python/asttokens/README.rst b/contrib/python/asttokens/README.rst
index 068d3960678..19272d6b9e0 100644
--- a/contrib/python/asttokens/README.rst
+++ b/contrib/python/asttokens/README.rst
@@ -80,3 +80,23 @@ To contribute:
4. Run tests across all supported interpreters with the ``tox`` command. You will need to have the interpreters installed separately. We recommend ``pyenv`` for that. Use ``tox -p auto`` to run the tests in parallel.
5. By default certain tests which take a very long time to run are skipped, but they are run in CI.
These are marked using the ``pytest`` marker ``slow`` and can be run on their own with ``pytest -m slow`` or as part of the full suite with ``pytest -m ''``.
+
+Documentation
+-------------
+
+Documentation at https://asttokens.readthedocs.io/ is built by Read the Docs automatically on
+every push, from the sources in ``docs/`` (configured in ``.readthedocs.yaml``). To preview
+changes locally::
+
+ pip install -r docs/requirements.txt
+ sphinx-build -M html docs docs/_build
+
+Release
+-------
+
+The version is derived from the git tag by ``setuptools_scm``; there is no version to update in
+the source. To release, draft a new release at https://github.com/gristlabs/asttokens/releases
+with a new tag named ``vX.Y.Z``, and use "Generate release notes" to fill in the description.
+Publishing the release triggers the ``publish.yml`` workflow, which builds the package and
+uploads it to PyPI via `trusted publishing
+<https://docs.pypi.org/trusted-publishers/>`_.
diff --git a/contrib/python/asttokens/asttokens/asttokens.py b/contrib/python/asttokens/asttokens/asttokens.py
index 6cbc5aad296..d49672be86c 100644
--- a/contrib/python/asttokens/asttokens/asttokens.py
+++ b/contrib/python/asttokens/asttokens/asttokens.py
@@ -18,17 +18,14 @@ import bisect
import sys
import token
from ast import Module
-from typing import Iterable, Iterator, List, Optional, Tuple, Any, cast, TYPE_CHECKING
+from typing import Iterable, Iterator, List, Optional, Tuple, Any, cast
from .line_numbers import LineNumbers
from .util import (
- Token, match_token, is_non_coding_token, patched_generate_tokens, last_stmt,
+ AstNode, Token, TokenInfo, match_token, is_non_coding_token, patched_generate_tokens, last_stmt,
annotate_fstring_nodes, generate_tokens, is_module, is_stmt
)
-if TYPE_CHECKING: # pragma: no cover
- from .util import AstNode, TokenInfo
-
class ASTTextBase(metaclass=abc.ABCMeta):
def __init__(self, source_text: str, filename: str) -> None:
@@ -43,8 +40,9 @@ class ASTTextBase(metaclass=abc.ABCMeta):
self._line_numbers = LineNumbers(source_text)
@abc.abstractmethod
- def get_text_positions(self, node, padded):
- # type: (AstNode, bool) -> Tuple[Tuple[int, int], Tuple[int, int]]
+ def get_text_positions(
+ self, node: AstNode, padded: bool
+ ) -> Tuple[Tuple[int, int], Tuple[int, int]]:
"""
Returns two ``(lineno, col_offset)`` tuples for the start and end of the given node.
If the positions can't be determined, or the nodes don't correspond to any particular text,
@@ -56,8 +54,7 @@ class ASTTextBase(metaclass=abc.ABCMeta):
"""
raise NotImplementedError # pragma: no cover
- def get_text_range(self, node, padded=True):
- # type: (AstNode, bool) -> Tuple[int, int]
+ def get_text_range(self, node: AstNode, padded: bool = True) -> Tuple[int, int]:
"""
Returns the (startpos, endpos) positions in source text corresponding to the given node.
Returns (0, 0) for nodes (like `Load`) that don't correspond to any particular text.
@@ -70,8 +67,7 @@ class ASTTextBase(metaclass=abc.ABCMeta):
self._line_numbers.line_to_offset(*end),
)
- def get_text(self, node, padded=True):
- # type: (AstNode, bool) -> str
+ def get_text(self, node: AstNode, padded: bool = True) -> str:
"""
Returns the text corresponding to the given node.
Returns '' for nodes (like `Load`) that don't correspond to any particular text.
@@ -102,9 +98,15 @@ class ASTTokens(ASTTextBase):
tree created separately.
"""
- def __init__(self, source_text, parse=False, tree=None, filename='<unknown>', tokens=None):
- # type: (Any, bool, Optional[Module], str, Optional[Iterable[TokenInfo]]) -> None
- super(ASTTokens, self).__init__(source_text, filename)
+ def __init__(
+ self,
+ source_text: Any,
+ parse: bool = False,
+ tree: Optional[Module] = None,
+ filename: str = '<unknown>',
+ tokens: Optional[Iterable[TokenInfo]] = None
+ ) -> None:
+ super().__init__(source_text, filename)
self._tree = ast.parse(source_text, filename) if parse else tree
@@ -119,8 +121,7 @@ class ASTTokens(ASTTextBase):
if self._tree:
self.mark_tokens(self._tree)
- def mark_tokens(self, root_node):
- # type: (Module) -> None
+ def mark_tokens(self, root_node: Module) -> None:
"""
Given the root of the AST or Astroid tree produced from source_text, visits all nodes marking
them with token and position information by adding ``.first_token`` and
@@ -131,8 +132,7 @@ class ASTTokens(ASTTextBase):
from .mark_tokens import MarkTokens # to avoid import loops
MarkTokens(self).visit_tree(root_node)
- def _translate_tokens(self, original_tokens):
- # type: (Iterable[TokenInfo]) -> Iterator[Token]
+ def _translate_tokens(self, original_tokens: Iterable[TokenInfo]) -> Iterator[Token]:
"""
Translates the given standard library tokens into our own representation.
"""
@@ -143,39 +143,33 @@ class ASTTokens(ASTTextBase):
self._line_numbers.line_to_offset(end[0], end[1]))
@property
- def text(self):
- # type: () -> str
+ def text(self) -> str:
"""The source code passed into the constructor."""
return self._text
@property
- def tokens(self):
- # type: () -> List[Token]
+ def tokens(self) -> List[Token]:
"""The list of tokens corresponding to the source code from the constructor."""
return self._tokens
@property
- def tree(self):
- # type: () -> Optional[Module]
+ def tree(self) -> Optional[Module]:
"""The root of the AST tree passed into the constructor or parsed from the source code."""
return self._tree
@property
- def filename(self):
- # type: () -> str
+ def filename(self) -> str:
"""The filename that was parsed"""
return self._filename
- def get_token_from_offset(self, offset):
- # type: (int) -> Token
+ def get_token_from_offset(self, offset: int) -> Token:
"""
Returns the token containing the given character offset (0-based position in source text),
or the preceeding token if the position is between tokens.
"""
return self._tokens[bisect.bisect(self._token_offsets, offset) - 1]
- def get_token(self, lineno, col_offset):
- # type: (int, int) -> Token
+ def get_token(self, lineno: int, col_offset: int) -> Token:
"""
Returns the token containing the given (lineno, col_offset) position, or the preceeding token
if the position is between tokens.
@@ -185,15 +179,13 @@ class ASTTokens(ASTTextBase):
# but isn't explicit.
return self.get_token_from_offset(self._line_numbers.line_to_offset(lineno, col_offset))
- def get_token_from_utf8(self, lineno, col_offset):
- # type: (int, int) -> Token
+ def get_token_from_utf8(self, lineno: int, col_offset: int) -> Token:
"""
Same as get_token(), but interprets col_offset as a UTF8 offset, which is what `ast` uses.
"""
return self.get_token(lineno, self._line_numbers.from_utf8_col(lineno, col_offset))
- def next_token(self, tok, include_extra=False):
- # type: (Token, bool) -> Token
+ def next_token(self, tok: Token, include_extra: bool = False) -> Token:
"""
Returns the next token after the given one. If include_extra is True, includes non-coding
tokens from the tokenize module, such as NL and COMMENT.
@@ -204,8 +196,7 @@ class ASTTokens(ASTTextBase):
i += 1
return self._tokens[i]
- def prev_token(self, tok, include_extra=False):
- # type: (Token, bool) -> Token
+ def prev_token(self, tok: Token, include_extra: bool = False) -> Token:
"""
Returns the previous token before the given one. If include_extra is True, includes non-coding
tokens from the tokenize module, such as NL and COMMENT.
@@ -216,8 +207,9 @@ class ASTTokens(ASTTextBase):
i -= 1
return self._tokens[i]
- def find_token(self, start_token, tok_type, tok_str=None, reverse=False):
- # type: (Token, int, Optional[str], bool) -> Token
+ def find_token(
+ self, start_token: Token, tok_type: int, tok_str: Optional[str] = None, reverse: bool = False
+ ) -> Token:
"""
Looks for the first token, starting at start_token, that matches tok_type and, if given, the
token string. Searches backwards if reverse is True. Returns ENDMARKER token if not found (you
@@ -229,12 +221,12 @@ class ASTTokens(ASTTextBase):
t = advance(t, include_extra=True)
return t
- def token_range(self,
- first_token, # type: Token
- last_token, # type: Token
- include_extra=False, # type: bool
- ):
- # type: (...) -> Iterator[Token]
+ def token_range(
+ self,
+ first_token: Token,
+ last_token: Token,
+ include_extra: bool = False,
+ ) -> Iterator[Token]:
"""
Yields all tokens in order from first_token through and including last_token. If
include_extra is True, includes non-coding tokens such as tokenize.NL and .COMMENT.
@@ -243,16 +235,14 @@ class ASTTokens(ASTTextBase):
if include_extra or not is_non_coding_token(self._tokens[i].type):
yield self._tokens[i]
- def get_tokens(self, node, include_extra=False):
- # type: (AstNode, bool) -> Iterator[Token]
+ def get_tokens(self, node: AstNode, include_extra: bool = False) -> Iterator[Token]:
"""
Yields all tokens making up the given node. If include_extra is True, includes non-coding
tokens such as tokenize.NL and .COMMENT.
"""
return self.token_range(node.first_token, node.last_token, include_extra=include_extra)
- def get_text_positions(self, node, padded):
- # type: (AstNode, bool) -> Tuple[Tuple[int, int], Tuple[int, int]]
+ def get_text_positions(self, node: AstNode, padded: bool) -> Tuple[Tuple[int, int], Tuple[int, int]]:
"""
Returns two ``(lineno, col_offset)`` tuples for the start and end of the given node.
If the positions can't be determined, or the nodes don't correspond to any particular text,
@@ -287,27 +277,24 @@ class ASTText(ASTTextBase):
which incurs the usual setup cost the first time.
If you want to avoid this, check ``supports_tokenless(node)`` before calling ``get_text*`` methods.
"""
- def __init__(self, source_text, tree=None, filename='<unknown>'):
- # type: (Any, Optional[Module], str) -> None
- super(ASTText, self).__init__(source_text, filename)
+ def __init__(self, source_text: Any, tree: Optional[Module] = None, filename: str = '<unknown>') -> None:
+ super().__init__(source_text, filename)
self._tree = tree
if self._tree is not None:
annotate_fstring_nodes(self._tree)
- self._asttokens = None # type: Optional[ASTTokens]
+ self._asttokens: Optional[ASTTokens] = None
@property
- def tree(self):
- # type: () -> Module
+ def tree(self) -> Module:
if self._tree is None:
self._tree = ast.parse(self._text, self._filename)
annotate_fstring_nodes(self._tree)
return self._tree
@property
- def asttokens(self):
- # type: () -> ASTTokens
+ def asttokens(self) -> ASTTokens:
if self._asttokens is None:
self._asttokens = ASTTokens(
self._text,
@@ -316,8 +303,9 @@ class ASTText(ASTTextBase):
)
return self._asttokens
- def _get_text_positions_tokenless(self, node, padded):
- # type: (AstNode, bool) -> Tuple[Tuple[int, int], Tuple[int, int]]
+ def _get_text_positions_tokenless(
+ self, node: AstNode, padded: bool
+ ) -> Tuple[Tuple[int, int], Tuple[int, int]]:
"""
Version of ``get_text_positions()`` that doesn't use tokens.
"""
@@ -382,8 +370,7 @@ class ASTText(ASTTextBase):
return start, end
- def get_text_positions(self, node, padded):
- # type: (AstNode, bool) -> Tuple[Tuple[int, int], Tuple[int, int]]
+ def get_text_positions(self, node: AstNode, padded: bool) -> Tuple[Tuple[int, int], Tuple[int, int]]:
"""
Returns two ``(lineno, col_offset)`` tuples for the start and end of the given node.
If the positions can't be determined, or the nodes don't correspond to any particular text,
@@ -405,7 +392,7 @@ class ASTText(ASTTextBase):
# Node types that _get_text_positions_tokenless doesn't support.
# These initial values are missing lineno.
-_unsupported_tokenless_types = ("arguments", "Arguments", "withitem") # type: Tuple[str, ...]
+_unsupported_tokenless_types: Tuple[str, ...] = ("arguments", "Arguments", "withitem")
if sys.version_info[:2] == (3, 8):
# _get_text_positions_tokenless works incorrectly for these types due to bugs in Python 3.8.
_unsupported_tokenless_types += ("arg", "Starred")
@@ -413,8 +400,7 @@ if sys.version_info[:2] == (3, 8):
_unsupported_tokenless_types += ("Slice", "ExtSlice", "Index", "keyword")
-def supports_tokenless(node=None):
- # type: (Any) -> bool
+def supports_tokenless(node: Any = None) -> bool:
"""
Returns True if the Python version and the node (if given) are supported by
the ``get_text*`` methods of ``ASTText`` without falling back to ``ASTTokens``.
@@ -440,10 +426,8 @@ def supports_tokenless(node=None):
and not (
# astroid nodes
not isinstance(node, ast.AST) and node is not None and (
- (
type(node).__name__ == "AssignName"
and type(node.parent).__name__ in ("Arguments", "ExceptHandler")
- )
)
)
and 'pypy' not in sys.version.lower()
diff --git a/contrib/python/asttokens/asttokens/line_numbers.py b/contrib/python/asttokens/asttokens/line_numbers.py
index 1441a53b787..3f1bc816fb2 100644
--- a/contrib/python/asttokens/asttokens/line_numbers.py
+++ b/contrib/python/asttokens/asttokens/line_numbers.py
@@ -16,7 +16,10 @@ import bisect
import re
from typing import Dict, List, Tuple
-_line_start_re = re.compile(r'^', re.M)
+# Matches the end-of-line sequences that Python treats as line boundaries in source code, i.e.
+# "\r\n", "\r", or "\n". Using this (rather than a plain `re.M` `^`) means we recognise a lone
+# "\r" as a line separator, matching how the tokenizer and ast module number lines. See issue #105.
+_line_end_re = re.compile(r'\r\n|\r|\n')
class LineNumbers:
"""
@@ -26,16 +29,15 @@ class LineNumbers:
This class expects unicode for input and stores positions in unicode. But it supports
translating to and from utf8 offsets, which are used by ast parsing.
"""
- def __init__(self, text):
- # type: (str) -> None
- # A list of character offsets of each line's first character.
- self._line_offsets = [m.start(0) for m in _line_start_re.finditer(text)]
+ def __init__(self, text: str) -> None:
+ # A list of character offsets of each line's first character. The first line always starts at
+ # offset 0, and each subsequent line starts right after an end-of-line sequence.
+ self._line_offsets = [0] + [m.end(0) for m in _line_end_re.finditer(text)]
self._text = text
self._text_len = len(text)
- self._utf8_offset_cache = {} # type: Dict[int, List[int]] # maps line num to list of char offset for each byte in line
+ self._utf8_offset_cache: Dict[int, List[int]] = {} # maps line num to list of char offset for each byte in line
- def from_utf8_col(self, line, utf8_column):
- # type: (int, int) -> int
+ def from_utf8_col(self, line: int, utf8_column: int) -> int:
"""
Given a 1-based line number and 0-based utf8 column, returns a 0-based unicode column.
"""
@@ -50,8 +52,7 @@ class LineNumbers:
return offsets[max(0, min(len(offsets)-1, utf8_column))]
- def line_to_offset(self, line, column):
- # type: (int, int) -> int
+ def line_to_offset(self, line: int, column: int) -> int:
"""
Converts 1-based line number and 0-based column to 0-based character offset into text.
"""
@@ -63,8 +64,7 @@ class LineNumbers:
else:
return min(self._line_offsets[line] + max(0, column), self._text_len)
- def offset_to_line(self, offset):
- # type: (int) -> Tuple[int, int]
+ def offset_to_line(self, offset: int) -> Tuple[int, int]:
"""
Converts 0-based character offset to pair (line, col) of 1-based line and 0-based column
numbers.
diff --git a/contrib/python/asttokens/asttokens/mark_tokens.py b/contrib/python/asttokens/asttokens/mark_tokens.py
index 62d38f8871b..00bc8a02c21 100644
--- a/contrib/python/asttokens/asttokens/mark_tokens.py
+++ b/contrib/python/asttokens/asttokens/mark_tokens.py
@@ -22,9 +22,7 @@ from typing import Callable, List, Union, cast, Optional, Tuple, TYPE_CHECKING
from . import util
from .asttokens import ASTTokens
from .astroid_compat import astroid_node_classes as nc, BaseContainer as AstroidBaseContainer
-
-if TYPE_CHECKING:
- from .util import AstNode
+from .util import AstNode
# Mapping of matching braces. To find a token here, look up token[:2].
@@ -46,19 +44,18 @@ class MarkTokens:
Helper that visits all nodes in the AST tree and assigns .first_token and .last_token attributes
to each of them. This is the heart of the token-marking logic.
"""
- def __init__(self, code):
- # type: (ASTTokens) -> None
+ def __init__(self, code: ASTTokens) -> None:
self._code = code
self._methods = util.NodeMethods()
- self._iter_children = None # type: Optional[Callable]
+ self._iter_children: Optional[Callable] = None
- def visit_tree(self, node):
- # type: (Module) -> None
+ def visit_tree(self, node: Module) -> None:
self._iter_children = util.iter_children_func(node)
util.visit_tree(node, self._visit_before_children, self._visit_after_children)
- def _visit_before_children(self, node, parent_token):
- # type: (AstNode, Optional[util.Token]) -> Tuple[Optional[util.Token], Optional[util.Token]]
+ def _visit_before_children(
+ self, node: AstNode, parent_token: Optional[util.Token]
+ ) -> Tuple[Optional[util.Token], Optional[util.Token]]:
col = getattr(node, 'col_offset', None)
token = self._code.get_token_from_utf8(node.lineno, col) if col is not None else None
@@ -70,8 +67,9 @@ class MarkTokens:
# parent_token argument. The second value becomes the token argument of _visit_after_children.
return (token or parent_token, token)
- def _visit_after_children(self, node, parent_token, token):
- # type: (AstNode, Optional[util.Token], Optional[util.Token]) -> None
+ def _visit_after_children(
+ self, node: AstNode, parent_token: Optional[util.Token], token: Optional[util.Token]
+ ) -> None:
# This processes the node generically first, after all children have been processed.
# Get the first and last tokens that belong to children. Note how this doesn't assume that we
@@ -112,8 +110,7 @@ class MarkTokens:
node.first_token = nfirst
node.last_token = nlast
- def _find_last_in_stmt(self, start_token):
- # type: (util.Token) -> util.Token
+ def _find_last_in_stmt(self, start_token: util.Token) -> util.Token:
t = start_token
while (not util.match_token(t, token.NEWLINE) and
not util.match_token(t, token.OP, ';') and
@@ -121,15 +118,16 @@ class MarkTokens:
t = self._code.next_token(t, include_extra=True)
return self._code.prev_token(t)
- def _expand_to_matching_pairs(self, first_token, last_token, node):
- # type: (util.Token, util.Token, AstNode) -> Tuple[util.Token, util.Token]
+ def _expand_to_matching_pairs(
+ self, first_token: util.Token, last_token: util.Token, node: AstNode
+ ) -> Tuple[util.Token, util.Token]:
"""
Scan tokens in [first_token, last_token] range that are between node's children, and for any
unmatched brackets, adjust first/last tokens to include the closing pair.
"""
# We look for opening parens/braces among non-child tokens (i.e. tokens between our actual
# child nodes). If we find any closing ones, we match them to the opens.
- to_match_right = [] # type: List[Tuple[int, str]]
+ to_match_right: List[Tuple[int, str]] = []
to_match_left = []
for tok in self._code.token_range(first_token, last_token):
tok_info = tok[:2]
@@ -162,39 +160,43 @@ class MarkTokens:
# Node visitors. Each takes a preliminary first and last tokens, and returns the adjusted pair
# that will actually be assigned.
- def visit_default(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_default(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# pylint: disable=no-self-use
# By default, we don't need to adjust the token we computed earlier.
return (first_token, last_token)
- def handle_comp(self, open_brace, node, first_token, last_token):
- # type: (str, AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_comp(
+ self, open_brace: str, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# For list/set/dict comprehensions, we only get the token of the first child, so adjust it to
# include the opening brace (the closing brace will be matched automatically).
before = self._code.prev_token(first_token)
util.expect_token(before, token.OP, open_brace)
return (before, last_token)
- def visit_comprehension(self,
- node, # type: AstNode
- first_token, # type: util.Token
- last_token, # type: util.Token
- ):
- # type: (...) -> Tuple[util.Token, util.Token]
+ def visit_comprehension(
+ self,
+ node: AstNode,
+ first_token: util.Token,
+ last_token: util.Token,
+ ) -> Tuple[util.Token, util.Token]:
# The 'comprehension' node starts with 'for' but we only get first child; we search backwards
# to find the 'for' keyword.
first = self._code.find_token(first_token, token.NAME, 'for', reverse=True)
return (first, last_token)
- def visit_if(self, node, first_token, last_token):
- # type: (util.Token, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_if(
+ self, node: util.Token, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
while first_token.string not in ('if', 'elif'):
first_token = self._code.prev_token(first_token)
return first_token, last_token
- def handle_attr(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_attr(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# Attribute node has ".attr" (2 tokens) after the last child.
dot = self._code.find_token(last_token, token.OP, '.')
name = self._code.next_token(dot)
@@ -205,8 +207,9 @@ class MarkTokens:
visit_assignattr = handle_attr
visit_delattr = handle_attr
- def handle_def(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_def(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# With astroid, nodes that start with a doc-string can have an empty body, in which case we
# need to adjust the last token to include the doc string.
if not node.body and (getattr(node, 'doc_node', None) or getattr(node, 'doc', None)): # type: ignore[union-attr]
@@ -222,8 +225,9 @@ class MarkTokens:
visit_classdef = handle_def
visit_functiondef = handle_def
- def handle_following_brackets(self, node, last_token, opening_bracket):
- # type: (AstNode, util.Token, str) -> util.Token
+ def handle_following_brackets(
+ self, node: AstNode, last_token: util.Token, opening_bracket: str
+ ) -> util.Token:
# This is for calls and subscripts, which have a pair of brackets
# at the end which may contain no nodes, e.g. foo() or bar[:].
# We look for the opening bracket and then let the matching pair be found automatically
@@ -235,8 +239,9 @@ class MarkTokens:
last_token = call_start
return last_token
- def visit_call(self, node, first_token, last_token):
- # type: (util.Token, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_call(
+ self, node: util.Token, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
last_token = self.handle_following_brackets(node, last_token, '(')
# Handling a python bug with decorators with empty parens, e.g.
@@ -246,22 +251,24 @@ class MarkTokens:
first_token = self._code.next_token(first_token)
return (first_token, last_token)
- def visit_matchclass(self, node, first_token, last_token):
- # type: (util.Token, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_matchclass(
+ self, node: util.Token, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
last_token = self.handle_following_brackets(node, last_token, '(')
return (first_token, last_token)
- def visit_subscript(self,
- node, # type: AstNode
- first_token, # type: util.Token
- last_token, # type: util.Token
- ):
- # type: (...) -> Tuple[util.Token, util.Token]
+ def visit_subscript(
+ self,
+ node: AstNode,
+ first_token: util.Token,
+ last_token: util.Token,
+ ) -> Tuple[util.Token, util.Token]:
last_token = self.handle_following_brackets(node, last_token, '[')
return (first_token, last_token)
- def visit_slice(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_slice(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# consume `:` tokens to the left and right. In Python 3.9, Slice nodes are
# given a col_offset, (and end_col_offset), so this will always start inside
# the slice, even if it is the empty slice. However, in 3.8 and below, this
@@ -280,8 +287,9 @@ class MarkTokens:
last_token = next_
return (first_token, last_token)
- def handle_bare_tuple(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_bare_tuple(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# A bare tuple doesn't include parens; if there is a trailing comma, make it part of the tuple.
maybe_comma = self._code.next_token(last_token)
if util.match_token(maybe_comma, token.OP, ','):
@@ -289,8 +297,9 @@ class MarkTokens:
return (first_token, last_token)
# In Python3.8 parsed tuples include parentheses when present.
- def handle_tuple_nonempty(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_tuple_nonempty(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
assert isinstance(node, ast.Tuple) or isinstance(node, AstroidBaseContainer)
# It's a bare tuple if the first token belongs to the first child. The first child may
# include extraneous parentheses (which don't create new nodes), so account for those too.
@@ -302,16 +311,18 @@ class MarkTokens:
return self.handle_bare_tuple(node, first_token, last_token)
return (first_token, last_token)
- def visit_tuple(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_tuple(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
assert isinstance(node, ast.Tuple) or isinstance(node, AstroidBaseContainer)
if not node.elts:
# An empty tuple is just "()", and we need no further info.
return (first_token, last_token)
return self.handle_tuple_nonempty(node, first_token, last_token)
- def _gobble_parens(self, first_token, last_token, include_all=False):
- # type: (util.Token, util.Token, bool) -> Tuple[util.Token, util.Token]
+ def _gobble_parens(
+ self, first_token: util.Token, last_token: util.Token, include_all: bool = False
+ ) -> Tuple[util.Token, util.Token]:
# Expands a range of tokens to include one or all pairs of surrounding parentheses, and
# returns (first, last) tokens that include these parens.
while first_token.index > 0:
@@ -324,16 +335,17 @@ class MarkTokens:
break
return (first_token, last_token)
- def visit_str(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_str(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
return self.handle_str(first_token, last_token)
- def visit_joinedstr(self,
- node, # type: AstNode
- first_token, # type: util.Token
- last_token, # type: util.Token
- ):
- # type: (...) -> Tuple[util.Token, util.Token]
+ def visit_joinedstr(
+ self,
+ node: AstNode,
+ first_token: util.Token,
+ last_token: util.Token,
+ ) -> Tuple[util.Token, util.Token]:
if sys.version_info < (3, 12):
# Older versions don't tokenize the contents of f-strings
return self.handle_str(first_token, last_token)
@@ -363,12 +375,14 @@ class MarkTokens:
break
return (first_token, last_token)
- def visit_bytes(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_bytes(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
return self.handle_str(first_token, last_token)
- def handle_str(self, first_token, last_token):
- # type: (util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_str(
+ self, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# Multiple adjacent STRING tokens form a single string.
last = self._code.next_token(last_token)
while util.match_token(last, token.STRING):
@@ -376,13 +390,13 @@ class MarkTokens:
last = self._code.next_token(last_token)
return (first_token, last_token)
- def handle_num(self,
- node, # type: AstNode
- value, # type: Union[complex, int, numbers.Number]
- first_token, # type: util.Token
- last_token, # type: util.Token
- ):
- # type: (...) -> Tuple[util.Token, util.Token]
+ def handle_num(
+ self,
+ node: AstNode,
+ value: Union[complex, int, numbers.Number],
+ first_token: util.Token,
+ last_token: util.Token,
+ ) -> Tuple[util.Token, util.Token]:
# A constant like '-1' gets turned into two tokens; this will skip the '-'.
while util.match_token(last_token, token.OP):
last_token = self._code.next_token(last_token)
@@ -398,14 +412,16 @@ class MarkTokens:
first_token = self._code.prev_token(first_token)
return (first_token, last_token)
- def visit_num(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_num(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
n = node.n # type: ignore[union-attr] # ast.Num has been removed in python 3.14
assert isinstance(n, (complex, int, numbers.Number))
return self.handle_num(node, n, first_token, last_token)
- def visit_const(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_const(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
assert isinstance(node, ast.Constant) or isinstance(node, nc.Const)
if isinstance(node.value, numbers.Number):
return self.handle_num(node, node.value, first_token, last_token)
@@ -415,8 +431,9 @@ class MarkTokens:
visit_constant = visit_const
- def visit_keyword(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_keyword(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# Until python 3.9 (https://bugs.python.org/issue40141),
# ast.keyword nodes didn't have line info. Astroid has lineno None.
assert isinstance(node, ast.keyword) or isinstance(node, nc.Keyword)
@@ -427,8 +444,9 @@ class MarkTokens:
first_token = name
return (first_token, last_token)
- def visit_starred(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_starred(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# Astroid has 'Starred' nodes (for "foo(*bar)" type args), but they need to be adjusted.
if not util.match_token(first_token, token.OP, '*'):
star = self._code.prev_token(first_token)
@@ -436,8 +454,9 @@ class MarkTokens:
first_token = star
return (first_token, last_token)
- def visit_assignname(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def visit_assignname(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
# Astroid may turn 'except' clause into AssignName, but we need to adjust it.
if util.match_token(first_token, token.NAME, 'except'):
colon = self._code.find_token(last_token, token.OP, ':')
@@ -448,8 +467,9 @@ class MarkTokens:
# but Python < 3.7 doesn't put the col_offset there
# AsyncFunctionDef is slightly different because it might have
# decorators before that, which visit_functiondef handles
- def handle_async(self, node, first_token, last_token):
- # type: (AstNode, util.Token, util.Token) -> Tuple[util.Token, util.Token]
+ def handle_async(
+ self, node: AstNode, first_token: util.Token, last_token: util.Token
+ ) -> Tuple[util.Token, util.Token]:
if not first_token.string == 'async':
first_token = self._code.prev_token(first_token)
return (first_token, last_token)
@@ -457,12 +477,12 @@ class MarkTokens:
visit_asyncfor = handle_async
visit_asyncwith = handle_async
- def visit_asyncfunctiondef(self,
- node, # type: AstNode
- first_token, # type: util.Token
- last_token, # type: util.Token
- ):
- # type: (...) -> Tuple[util.Token, util.Token]
+ def visit_asyncfunctiondef(
+ self,
+ node: AstNode,
+ first_token: util.Token,
+ last_token: util.Token,
+ ) -> Tuple[util.Token, util.Token]:
if util.match_token(first_token, token.NAME, 'def'):
# Include the 'async' token
first_token = self._code.prev_token(first_token)
diff --git a/contrib/python/asttokens/asttokens/util.py b/contrib/python/asttokens/asttokens/util.py
index 74e0a7cdd30..9e3c15a4555 100644
--- a/contrib/python/asttokens/asttokens/util.py
+++ b/contrib/python/asttokens/asttokens/util.py
@@ -15,6 +15,7 @@
import ast
import collections
import io
+import re
import sys
import token
import tokenize
@@ -38,27 +39,18 @@ from typing import (
if TYPE_CHECKING: # pragma: no cover
from .astroid_compat import NodeNG
+else:
+ NodeNG = Any
- # Type class used to expand out the definition of AST to include fields added by this library
- # It's not actually used for anything other than type checking though!
- class EnhancedAST(AST):
- # Additional attributes set by mark_tokens
- first_token = None # type: Token
- last_token = None # type: Token
- lineno = 0 # type: int
- end_lineno = 0 # type : int
- end_col_offset = 0 # type : int
- AstNode = Union[EnhancedAST, NodeNG]
+TokenInfo = tokenize.TokenInfo
+_lone_cr_re = re.compile(r'\r(?!\n)')
- TokenInfo = tokenize.TokenInfo
-
-def token_repr(tok_type, string):
- # type: (int, Optional[str]) -> str
+def token_repr(tok_type: int, string: Optional[str]) -> str:
"""Returns a human-friendly representation of a token with the given type and string."""
# repr() prefixes unicode with 'u' on Python2 but not Python3; strip it out for consistency.
- return '%s:%s' % (token.tok_name[tok_type], repr(string).lstrip('u'))
+ return f"{token.tok_name[tok_type]}:{repr(string).lstrip('u')}"
class Token(collections.namedtuple('Token', 'type string start end line index startpos endpos')):
@@ -75,50 +67,64 @@ class Token(collections.namedtuple('Token', 'type string start end line index st
- [6] .startpos Starting character offset into the input text.
- [7] .endpos Ending character offset into the input text.
"""
- def __str__(self):
- # type: () -> str
+ def __str__(self) -> str:
return token_repr(self.type, self.string)
-def match_token(token, tok_type, tok_str=None):
- # type: (Token, int, Optional[str]) -> bool
+# Type class used to expand out the definition of AST to include fields added by this library
+# It's not actually used for anything other than type checking though!
+class EnhancedAST(AST):
+ # Additional attributes set by mark_tokens
+ first_token: Token = None # type: ignore
+ last_token: Token = None # type: ignore
+ lineno: int = 0
+ end_lineno: int = 0
+ end_col_offset: int = 0
+
+
+AstNode = Union[EnhancedAST, NodeNG]
+
+
+def match_token(token: Token, tok_type: int, tok_str: Optional[str] = None) -> bool:
"""Returns true if token is of the given type and, if a string is given, has that string."""
return token.type == tok_type and (tok_str is None or token.string == tok_str)
-def expect_token(token, tok_type, tok_str=None):
- # type: (Token, int, Optional[str]) -> None
+def expect_token(token: Token, tok_type: int, tok_str: Optional[str] = None) -> None:
"""
Verifies that the given token is of the expected type. If tok_str is given, the token string
is verified too. If the token doesn't match, raises an informative ValueError.
"""
if not match_token(token, tok_type, tok_str):
- raise ValueError("Expected token %s, got %s on line %s col %s" % (
- token_repr(tok_type, tok_str), str(token),
- token.start[0], token.start[1] + 1))
+ raise ValueError(
+ f"Expected token {token_repr(tok_type, tok_str)}, "
+ f"got {str(token)} on line {token.start[0]} col {token.start[1] + 1}"
+ )
-def is_non_coding_token(token_type):
- # type: (int) -> bool
+def is_non_coding_token(token_type: int) -> bool:
"""
These are considered non-coding tokens, as they don't affect the syntax tree.
"""
return token_type in (token.NL, token.COMMENT, token.ENCODING)
-def generate_tokens(text):
- # type: (str) -> Iterator[TokenInfo]
+def generate_tokens(text: str) -> Iterator[TokenInfo]:
"""
Generates standard library tokens for the given code.
"""
+ # Before Python 3.12, tokenize treats an entire line containing a lone carriage return as a
+ # non-coding NL token, even though ast.parse treats the carriage return as a line boundary.
+ # Replacing lone carriage returns is length-preserving, so token offsets still map to the
+ # original source. Keep CRLF intact because changing its length would shift later offsets.
+ text = _lone_cr_re.sub('\n', text)
# tokenize.generate_tokens is technically an undocumented API for Python3, but allows us to use the same API as for
# Python2. See https://stackoverflow.com/a/4952291/328565.
# FIXME: Remove cast once https://github.com/python/typeshed/issues/7003 gets fixed
return tokenize.generate_tokens(cast(Callable[[], str], io.StringIO(text).readline))
-def iter_children_func(node):
- # type: (AST) -> Callable
+def iter_children_func(node: AST) -> Callable:
"""
Returns a function which yields all direct children of a AST node,
skipping children that are singleton nodes.
@@ -127,8 +133,7 @@ def iter_children_func(node):
return iter_children_astroid if hasattr(node, 'get_children') else iter_children_ast
-def iter_children_astroid(node, include_joined_str=False):
- # type: (NodeNG, bool) -> Union[Iterator, List]
+def iter_children_astroid(node: NodeNG, include_joined_str: bool = False) -> Union[Iterator, list]:
if not include_joined_str and is_joined_str(node):
return []
@@ -139,8 +144,7 @@ SINGLETONS = {c for n, c in ast.__dict__.items() if isinstance(c, type) and
issubclass(c, (ast.expr_context, ast.boolop, ast.operator, ast.unaryop, ast.cmpop))}
-def iter_children_ast(node, include_joined_str=False):
- # type: (AST, bool) -> Iterator[Union[AST, expr]]
+def iter_children_ast(node: AST, include_joined_str: bool = False) -> Iterator[Union[AST, expr]]:
if not include_joined_str and is_joined_str(node):
return
@@ -169,31 +173,26 @@ expr_class_names = ({n for n, c in ast.__dict__.items()
# These feel hacky compared to isinstance() but allow us to work with both ast and astroid nodes
# in the same way, and without even importing astroid.
-def is_expr(node):
- # type: (AstNode) -> bool
+def is_expr(node: AstNode) -> bool:
"""Returns whether node is an expression node."""
return node.__class__.__name__ in expr_class_names
-def is_stmt(node):
- # type: (AstNode) -> bool
+def is_stmt(node: AstNode) -> bool:
"""Returns whether node is a statement node."""
return node.__class__.__name__ in stmt_class_names
-def is_module(node):
- # type: (AstNode) -> bool
+def is_module(node: AstNode) -> bool:
"""Returns whether node is a module node."""
return node.__class__.__name__ == 'Module'
-def is_joined_str(node):
- # type: (AstNode) -> bool
+def is_joined_str(node: AstNode) -> bool:
"""Returns whether node is a JoinedStr node, used to represent f-strings."""
# At the moment, nodes below JoinedStr have wrong line/col info, and trying to process them only
# leads to errors.
return node.__class__.__name__ == 'JoinedStr'
-def is_expr_stmt(node):
- # type: (AstNode) -> bool
+def is_expr_stmt(node: AstNode) -> bool:
"""Returns whether node is an `Expr` node, which is a statement that is an expression."""
return node.__class__.__name__ == 'Expr'
@@ -207,26 +206,22 @@ except ImportError: # pragma: no cover
# astroid is not available
pass
-def is_constant(node):
- # type: (AstNode) -> bool
+def is_constant(node: AstNode) -> bool:
"""Returns whether node is a Constant node."""
return isinstance(node, CONSTANT_CLASSES)
-def is_ellipsis(node):
- # type: (AstNode) -> bool
+def is_ellipsis(node: AstNode) -> bool:
"""Returns whether node is an Ellipsis node."""
return is_constant(node) and node.value is Ellipsis # type: ignore
-def is_starred(node):
- # type: (AstNode) -> bool
+def is_starred(node: AstNode) -> bool:
"""Returns whether node is a starred expression node."""
return node.__class__.__name__ == 'Starred'
-def is_slice(node):
- # type: (AstNode) -> bool
+def is_slice(node: AstNode) -> bool:
"""Returns whether node represents a slice, e.g. `1:2` in `x[1:2]`"""
# Before 3.9, a tuple containing a slice is an ExtSlice,
# but this was removed in https://bugs.python.org/issue34822
@@ -239,8 +234,7 @@ def is_slice(node):
)
-def is_empty_astroid_slice(node):
- # type: (AstNode) -> bool
+def is_empty_astroid_slice(node: AstNode) -> bool:
return (
node.__class__.__name__ == "Slice"
and not isinstance(node, ast.AST)
@@ -251,8 +245,11 @@ def is_empty_astroid_slice(node):
# Sentinel value used by visit_tree().
_PREVISIT = object()
-def visit_tree(node, previsit, postvisit):
- # type: (Module, Callable[[AstNode, Optional[Token]], Tuple[Optional[Token], Optional[Token]]], Optional[Callable[[AstNode, Optional[Token], Optional[Token]], None]]) -> None
+def visit_tree(
+ node: Module,
+ previsit: Callable[[AstNode, Optional[Token]], Tuple[Optional[Token], Optional[Token]]],
+ postvisit: Optional[Callable[[AstNode, Optional[Token], Optional[Token]], None]]
+) -> None:
"""
Scans the tree under the node depth-first using an explicit stack. It avoids implicit recursion
via the function call stack to avoid hitting 'maximum recursion depth exceeded' error.
@@ -275,7 +272,7 @@ def visit_tree(node, previsit, postvisit):
iter_children = iter_children_func(node)
done = set()
ret = None
- stack = [(node, None, _PREVISIT)] # type: List[Tuple[AstNode, Optional[Token], Union[Optional[Token], object]]]
+ stack: List[Tuple[AstNode, Optional[Token], object]] = [(node, None, _PREVISIT)]
while stack:
current, par_value, value = stack.pop()
if value is _PREVISIT:
@@ -294,8 +291,7 @@ def visit_tree(node, previsit, postvisit):
return ret
-def walk(node, include_joined_str=False):
- # type: (AST, bool) -> Iterator[Union[Module, AstNode]]
+def walk(node: AST, include_joined_str: bool = False) -> Iterator[Union[Module, AstNode]]:
"""
Recursively yield all descendant nodes in the tree starting at ``node`` (including ``node``
itself), using depth-first pre-order traversal (yieling parents before their children).
@@ -323,8 +319,7 @@ def walk(node, include_joined_str=False):
stack.insert(ins, c)
-def replace(text, replacements):
- # type: (str, List[Tuple[int, int, str]]) -> str
+def replace(text: str, replacements: List[Tuple[int, int, str]]) -> str:
"""
Replaces multiple slices of text with new values. This is a convenience method for making code
modifications of ranges e.g. as identified by ``ASTTokens.get_text_range(node)``. Replacements is
@@ -347,12 +342,10 @@ class NodeMethods:
"""
Helper to get `visit_{node_type}` methods given a node's class and cache the results.
"""
- def __init__(self):
- # type: () -> None
- self._cache = {} # type: Dict[Union[ABCMeta, type], Callable[[AstNode, Token, Token], Tuple[Token, Token]]]
+ def __init__(self) -> None:
+ self._cache: Dict[Union[ABCMeta, type], Callable[[AstNode, Token, Token], Tuple[Token, Token]]] = {}
- def get(self, obj, cls):
- # type: (Any, Union[ABCMeta, type]) -> Callable
+ def get(self, obj: Any, cls: Union[ABCMeta, type]) -> Callable:
"""
Using the lowercase name of the class as node_type, returns `obj.visit_{node_type}`,
or `obj.visit_default` if the type-specific method is not found.
@@ -365,8 +358,7 @@ class NodeMethods:
return method
-def patched_generate_tokens(original_tokens):
- # type: (Iterable[TokenInfo]) -> Iterator[TokenInfo]
+def patched_generate_tokens(original_tokens: Iterable[TokenInfo]) -> Iterator[TokenInfo]:
"""
Fixes tokens yielded by `tokenize.generate_tokens` to handle more non-ASCII characters in identifiers.
Workaround for https://github.com/python/cpython/issues/68382.
@@ -374,7 +366,7 @@ def patched_generate_tokens(original_tokens):
because it assumes that error tokens are not actually errors.
Combines groups of consecutive NAME, NUMBER, and/or ERRORTOKEN tokens into a single NAME token.
"""
- group = [] # type: List[tokenize.TokenInfo]
+ group: List[tokenize.TokenInfo] = []
for tok in original_tokens:
if (
tok.type in (tokenize.NAME, tokenize.ERRORTOKEN, tokenize.NUMBER)
@@ -390,8 +382,7 @@ def patched_generate_tokens(original_tokens):
for combined_token in combine_tokens(group):
yield combined_token
-def combine_tokens(group):
- # type: (List[tokenize.TokenInfo]) -> List[tokenize.TokenInfo]
+def combine_tokens(group: List[tokenize.TokenInfo]) -> List[tokenize.TokenInfo]:
if not any(tok.type == tokenize.ERRORTOKEN for tok in group) or len({tok.line for tok in group}) != 1:
return group
return [
@@ -405,8 +396,7 @@ def combine_tokens(group):
]
-def last_stmt(node):
- # type: (AstNode) -> AstNode
+def last_stmt(node: AstNode) -> AstNode:
"""
If the given AST node contains multiple statements, return the last one.
Otherwise, just return the node.
@@ -429,8 +419,7 @@ def last_stmt(node):
@lru_cache(maxsize=None)
-def fstring_positions_work():
- # type: () -> bool
+def fstring_positions_work() -> bool:
"""
The positions attached to nodes inside f-string FormattedValues have some bugs
that were fixed in Python 3.9.7 in https://github.com/python/cpython/pull/27729.
@@ -460,8 +449,7 @@ def fstring_positions_work():
)
return positions_are_unique and correct_source_segments
-def annotate_fstring_nodes(tree):
- # type: (ast.AST) -> None
+def annotate_fstring_nodes(tree: ast.AST) -> None:
"""
Add a special attribute `_broken_positions` to nodes inside f-strings
if the lineno/col_offset cannot be trusted.
diff --git a/contrib/python/asttokens/asttokens/version.py b/contrib/python/asttokens/asttokens/version.py
index 05527687810..131942e76a2 100644
--- a/contrib/python/asttokens/asttokens/version.py
+++ b/contrib/python/asttokens/asttokens/version.py
@@ -1 +1 @@
-__version__ = "3.0.1"
+__version__ = "3.0.2"
diff --git a/contrib/python/asttokens/ya.make b/contrib/python/asttokens/ya.make
index dcb609db1a3..c3e4f49817d 100644
--- a/contrib/python/asttokens/ya.make
+++ b/contrib/python/asttokens/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(3.0.1)
+VERSION(3.0.2)
LICENSE(Apache-2.0)
diff --git a/contrib/python/idna/py3/.dist-info/METADATA b/contrib/python/idna/py3/.dist-info/METADATA
index 9a2b49a74ee..6c4bf89b25c 100644
--- a/contrib/python/idna/py3/.dist-info/METADATA
+++ b/contrib/python/idna/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: idna
-Version: 3.16
+Version: 3.18
Summary: Internationalized Domain Names in Applications (IDNA)
Author-email: Kim Davies <[email protected]>
Requires-Python: >=3.9
@@ -89,6 +89,12 @@ b'xn--knigsgchen-b4a3dun'
'königsgäßchen'
```
+When performing a decode operation for display purposes, `decode()`
+accepts a `display=True` argument that leaves any `xn--` label that
+fails to decode unchanged. This is useful for user interface display
+where a domain is in use, the A-label form can be presented when it
+is not a valid IDN.
+
## Exceptions
@@ -119,27 +125,12 @@ $ idna пример.рф
xn--e1afmkfd.xn--p1ai
```
-With no mode flag the direction is chosen automatically: inputs
-containing an `xn--` label are decoded, anything else is encoded. Pass
-`-e`/`--encode` or `-d`/`--decode` to force a specific direction.
-
-Multiple domains may be supplied at once, either as positional arguments
-or by piping one domain per line on standard input. When more than
-one domain is supplied without explicitly asking to encode or decode,
-the direction is picked from the first input and that mode is applied
-to every remaining input. Use `-e`/`--encode` or `-d`/`--decode` to
-override the heuristic if the first input is ambiguous.
-
+Mode can be specified with `-e`/`--encode` or `-d`/`--decode`, otherwise
+it will be chosen automatically based on the first input. Multiple
+domains can be supplied either as arguments or through standard input.
UTS #46 mapping is applied by default, which lets the tool accept
-inputs that aren't strictly valid IDNA 2008 by normalising them first:
-
-```bash
-$ idna ΠΑΡΆΔΕΙΓΜΑ.ΕΛ
-xn--hxajbheg2az3al.xn--qxam
-```
-
-Pass `--strict` to disable UTS #46 and apply IDNA 2008 rules verbatim;
-the same input will then be rejected.
+inputs that aren't strictly valid IDNA 2008 by normalising them first,
+pass `--strict` to disable UTS #46.
Conversion failures are reported on stderr together with the
offending input; processing continues with the remaining domains and
diff --git a/contrib/python/idna/py3/README.md b/contrib/python/idna/py3/README.md
index 77e4e4e0a8d..7671ae22937 100644
--- a/contrib/python/idna/py3/README.md
+++ b/contrib/python/idna/py3/README.md
@@ -54,6 +54,12 @@ b'xn--knigsgchen-b4a3dun'
'königsgäßchen'
```
+When performing a decode operation for display purposes, `decode()`
+accepts a `display=True` argument that leaves any `xn--` label that
+fails to decode unchanged. This is useful for user interface display
+where a domain is in use, the A-label form can be presented when it
+is not a valid IDN.
+
## Exceptions
@@ -84,27 +90,12 @@ $ idna пример.рф
xn--e1afmkfd.xn--p1ai
```
-With no mode flag the direction is chosen automatically: inputs
-containing an `xn--` label are decoded, anything else is encoded. Pass
-`-e`/`--encode` or `-d`/`--decode` to force a specific direction.
-
-Multiple domains may be supplied at once, either as positional arguments
-or by piping one domain per line on standard input. When more than
-one domain is supplied without explicitly asking to encode or decode,
-the direction is picked from the first input and that mode is applied
-to every remaining input. Use `-e`/`--encode` or `-d`/`--decode` to
-override the heuristic if the first input is ambiguous.
-
+Mode can be specified with `-e`/`--encode` or `-d`/`--decode`, otherwise
+it will be chosen automatically based on the first input. Multiple
+domains can be supplied either as arguments or through standard input.
UTS #46 mapping is applied by default, which lets the tool accept
-inputs that aren't strictly valid IDNA 2008 by normalising them first:
-
-```bash
-$ idna ΠΑΡΆΔΕΙΓΜΑ.ΕΛ
-xn--hxajbheg2az3al.xn--qxam
-```
-
-Pass `--strict` to disable UTS #46 and apply IDNA 2008 rules verbatim;
-the same input will then be rejected.
+inputs that aren't strictly valid IDNA 2008 by normalising them first,
+pass `--strict` to disable UTS #46.
Conversion failures are reported on stderr together with the
offending input; processing continues with the remaining domains and
diff --git a/contrib/python/idna/py3/idna/core.py b/contrib/python/idna/py3/idna/core.py
index da45b2ae9e4..1ccbd1f3356 100644
--- a/contrib/python/idna/py3/idna/core.py
+++ b/contrib/python/idna/py3/idna/core.py
@@ -9,6 +9,7 @@ from .intranges import intranges_contain
_virama_combining_class = 9
_alabel_prefix = b"xn--"
+_max_input_length = 1024
_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]")
@@ -20,8 +21,15 @@ _bidi_rtl_valid_ending = frozenset({"R", "AL", "EN", "AN"})
_bidi_rtl_numeric = frozenset({"AN", "EN"})
_bidi_ltr_allowed = frozenset({"L", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"})
_bidi_ltr_valid_ending = frozenset({"L", "EN"})
-_bidi_joiner_l_or_d = frozenset({ord("L"), ord("D")})
-_bidi_joiner_r_or_d = frozenset({ord("R"), ord("D")})
+_bidi_joiner_l_or_d = frozenset({"L", "D"})
+_bidi_joiner_r_or_d = frozenset({"R", "D"})
+
+
+def _joining_type(cp: int) -> Optional[str]:
+ for jt, ranges in idnadata.joining_types.items():
+ if intranges_contain(cp, ranges):
+ return jt
+ return None
class IDNAError(UnicodeError):
@@ -104,6 +112,8 @@ def check_bidi(label: str, check_ltr: bool = False) -> bool:
:raises IDNABidiError: If any of Bidi Rule conditions 1-6 are violated,
or if the directional category of a codepoint cannot be determined.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
# Bidi rules should only be applied if string contains RTL characters
bidi_label = False
for idx, cp in enumerate(label, 1):
@@ -200,6 +210,8 @@ def check_nfc(label: str) -> None:
:param label: The label to check.
:raises IDNAError: If ``label`` differs from its NFC normalisation.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
if unicodedata.normalize("NFC", label) != label:
raise IDNAError("Label must be in Normalization Form C")
@@ -218,7 +230,10 @@ def valid_contextj(label: str, pos: int) -> bool:
``pos`` is not a recognised joiner).
:raises ValueError: If an adjacent codepoint has no Unicode name when
determining its combining class.
+ :raises IDNAError: If ``label`` exceeds the defensive input length limit.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
cp_value = ord(label[pos])
if cp_value == 0x200C:
@@ -227,8 +242,8 @@ def valid_contextj(label: str, pos: int) -> bool:
ok = False
for i in range(pos - 1, -1, -1):
- joining_type = idnadata.joining_types().get(ord(label[i]))
- if joining_type == ord("T"):
+ joining_type = _joining_type(ord(label[i]))
+ if joining_type == "T":
continue
if joining_type in _bidi_joiner_l_or_d:
ok = True
@@ -240,8 +255,8 @@ def valid_contextj(label: str, pos: int) -> bool:
ok = False
for i in range(pos + 1, len(label)):
- joining_type = idnadata.joining_types().get(ord(label[i]))
- if joining_type == ord("T"):
+ joining_type = _joining_type(ord(label[i]))
+ if joining_type == "T":
continue
if joining_type in _bidi_joiner_r_or_d:
ok = True
@@ -268,7 +283,10 @@ def valid_contexto(label: str, pos: int, exception: bool = False) -> bool:
:returns: ``True`` if the codepoint at ``pos`` satisfies its CONTEXTO
rule, ``False`` otherwise (including when the codepoint is not a
recognised CONTEXTO codepoint).
+ :raises IDNAError: If ``label`` exceeds the defensive input length limit.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
cp_value = ord(label[pos])
if cp_value == 0x00B7:
@@ -319,6 +337,8 @@ def check_label(label: Union[str, bytes, bytearray]) -> None:
is not valid in its context.
:raises IDNABidiError: If the Bidi Rule is violated.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
if isinstance(label, (bytes, bytearray)):
label = label.decode("utf-8")
if len(label) == 0:
@@ -367,6 +387,8 @@ def alabel(label: str) -> bytes:
:raises IDNAError: If the label is invalid or the resulting A-label
exceeds 63 octets.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
try:
label_bytes = label.encode("ascii")
except UnicodeEncodeError:
@@ -399,6 +421,8 @@ def ulabel(label: Union[str, bytes, bytearray]) -> str:
:returns: The U-label as a Unicode string.
:raises IDNAError: If the label is malformed or fails validation.
"""
+ if len(label) > _max_input_length:
+ raise IDNAError("Label too long")
if not isinstance(label, (bytes, bytearray)):
try:
label_bytes = label.encode("ascii")
@@ -445,18 +469,19 @@ def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False
:returns: The remapped domain, in Normalisation Form C.
:raises InvalidCodepoint: If the domain contains a disallowed
codepoint under the chosen rules.
+ :raises IDNAError: If ``domain`` exceeds the defensive input length limit.
"""
- from .uts46data import uts46data
+ if len(domain) > _max_input_length:
+ raise IDNAError("Domain too long")
+ from .uts46data import uts46_replacements, uts46_starts, uts46_statuses
output = ""
for pos, char in enumerate(domain):
code_point = ord(char)
- uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1]
- status = uts46row[1]
- replacement: Optional[str] = None
- if len(uts46row) == 3:
- replacement = uts46row[2] # ty: ignore[index-out-of-bounds]
+ i = code_point if code_point < 256 else bisect.bisect_right(uts46_starts, code_point) - 1
+ status = chr(uts46_statuses[i])
+ replacement: Optional[str] = uts46_replacements[i]
# UTS #46 §4: V is always valid, D is deviation (kept unless transitional),
# 3 is disallowed-STD3 (kept unmapped if std3_rules is off and no mapping).
@@ -522,6 +547,8 @@ def encode(
s = str(s, "ascii")
except (UnicodeDecodeError, TypeError) as err:
raise IDNAError("should pass a unicode string to the function rather than a byte string.") from err
+ if len(s) > _max_input_length:
+ raise IDNAError("Domain too long")
if uts46:
s = uts46_remap(s, std3_rules, transitional)
@@ -557,6 +584,7 @@ def decode(
strict: bool = False,
uts46: bool = False,
std3_rules: bool = False,
+ display: bool = False,
) -> str:
"""Decode an A-label-encoded domain name back to Unicode.
@@ -571,6 +599,13 @@ def decode(
:param uts46: If ``True``, apply UTS #46 mapping before decoding.
:param std3_rules: Forwarded to :func:`uts46_remap` when ``uts46`` is
``True``.
+ :param display: If ``True``, any ``xn--`` label that fails IDNA
+ validation is passed through unchanged (lowercased) rather than
+ aborting the whole call. Intended for "decode for display"
+ consumers (e.g. URL libraries, HTTP clients) that want to show
+ the user the label as it appears on the wire when it cannot be
+ rendered as Unicode. Matches the per-label recovery prescribed
+ by UTS #46 §4 and the WHATWG URL "domain to Unicode" algorithm.
:returns: The decoded domain as a Unicode string.
:raises IDNAError: If the input is not valid ASCII, contains an
invalid label, or is empty.
@@ -580,6 +615,8 @@ def decode(
s = str(s, "ascii")
except (UnicodeDecodeError, TypeError) as err:
raise IDNAError("Invalid ASCII in A-label") from err
+ if len(s) > _max_input_length:
+ raise IDNAError("Domain too long")
if uts46:
s = uts46_remap(s, std3_rules, False)
# Reject inputs that exceed the maximum DNS domain length up-front
@@ -595,9 +632,15 @@ def decode(
del labels[-1]
trailing_dot = True
for label in labels:
- s = ulabel(label)
- if s:
- result.append(s)
+ try:
+ u = ulabel(label)
+ except IDNAError:
+ if display and label[:4].lower() == "xn--":
+ u = label.lower()
+ else:
+ raise
+ if u:
+ result.append(u)
else:
raise IDNAError("Empty label")
if trailing_dot:
diff --git a/contrib/python/idna/py3/idna/idnadata.py b/contrib/python/idna/py3/idna/idnadata.py
index d768948790b..f2ab38897bf 100644
--- a/contrib/python/idna/py3/idna/idnadata.py
+++ b/contrib/python/idna/py3/idna/idnadata.py
@@ -1,7 +1,5 @@
# This file is automatically generated by tools/idna-data
-from functools import cache
-
__version__ = "17.0.0"
scripts = {
@@ -104,3014 +102,547 @@ scripts = {
}
-@cache
-def joining_types() -> dict[int, int]:
- return {
- 0xAD: 84,
- 0x300: 84,
- 0x301: 84,
- 0x302: 84,
- 0x303: 84,
- 0x304: 84,
- 0x305: 84,
- 0x306: 84,
- 0x307: 84,
- 0x308: 84,
- 0x309: 84,
- 0x30A: 84,
- 0x30B: 84,
- 0x30C: 84,
- 0x30D: 84,
- 0x30E: 84,
- 0x30F: 84,
- 0x310: 84,
- 0x311: 84,
- 0x312: 84,
- 0x313: 84,
- 0x314: 84,
- 0x315: 84,
- 0x316: 84,
- 0x317: 84,
- 0x318: 84,
- 0x319: 84,
- 0x31A: 84,
- 0x31B: 84,
- 0x31C: 84,
- 0x31D: 84,
- 0x31E: 84,
- 0x31F: 84,
- 0x320: 84,
- 0x321: 84,
- 0x322: 84,
- 0x323: 84,
- 0x324: 84,
- 0x325: 84,
- 0x326: 84,
- 0x327: 84,
- 0x328: 84,
- 0x329: 84,
- 0x32A: 84,
- 0x32B: 84,
- 0x32C: 84,
- 0x32D: 84,
- 0x32E: 84,
- 0x32F: 84,
- 0x330: 84,
- 0x331: 84,
- 0x332: 84,
- 0x333: 84,
- 0x334: 84,
- 0x335: 84,
- 0x336: 84,
- 0x337: 84,
- 0x338: 84,
- 0x339: 84,
- 0x33A: 84,
- 0x33B: 84,
- 0x33C: 84,
- 0x33D: 84,
- 0x33E: 84,
- 0x33F: 84,
- 0x340: 84,
- 0x341: 84,
- 0x342: 84,
- 0x343: 84,
- 0x344: 84,
- 0x345: 84,
- 0x346: 84,
- 0x347: 84,
- 0x348: 84,
- 0x349: 84,
- 0x34A: 84,
- 0x34B: 84,
- 0x34C: 84,
- 0x34D: 84,
- 0x34E: 84,
- 0x34F: 84,
- 0x350: 84,
- 0x351: 84,
- 0x352: 84,
- 0x353: 84,
- 0x354: 84,
- 0x355: 84,
- 0x356: 84,
- 0x357: 84,
- 0x358: 84,
- 0x359: 84,
- 0x35A: 84,
- 0x35B: 84,
- 0x35C: 84,
- 0x35D: 84,
- 0x35E: 84,
- 0x35F: 84,
- 0x360: 84,
- 0x361: 84,
- 0x362: 84,
- 0x363: 84,
- 0x364: 84,
- 0x365: 84,
- 0x366: 84,
- 0x367: 84,
- 0x368: 84,
- 0x369: 84,
- 0x36A: 84,
- 0x36B: 84,
- 0x36C: 84,
- 0x36D: 84,
- 0x36E: 84,
- 0x36F: 84,
- 0x483: 84,
- 0x484: 84,
- 0x485: 84,
- 0x486: 84,
- 0x487: 84,
- 0x488: 84,
- 0x489: 84,
- 0x591: 84,
- 0x592: 84,
- 0x593: 84,
- 0x594: 84,
- 0x595: 84,
- 0x596: 84,
- 0x597: 84,
- 0x598: 84,
- 0x599: 84,
- 0x59A: 84,
- 0x59B: 84,
- 0x59C: 84,
- 0x59D: 84,
- 0x59E: 84,
- 0x59F: 84,
- 0x5A0: 84,
- 0x5A1: 84,
- 0x5A2: 84,
- 0x5A3: 84,
- 0x5A4: 84,
- 0x5A5: 84,
- 0x5A6: 84,
- 0x5A7: 84,
- 0x5A8: 84,
- 0x5A9: 84,
- 0x5AA: 84,
- 0x5AB: 84,
- 0x5AC: 84,
- 0x5AD: 84,
- 0x5AE: 84,
- 0x5AF: 84,
- 0x5B0: 84,
- 0x5B1: 84,
- 0x5B2: 84,
- 0x5B3: 84,
- 0x5B4: 84,
- 0x5B5: 84,
- 0x5B6: 84,
- 0x5B7: 84,
- 0x5B8: 84,
- 0x5B9: 84,
- 0x5BA: 84,
- 0x5BB: 84,
- 0x5BC: 84,
- 0x5BD: 84,
- 0x5BF: 84,
- 0x5C1: 84,
- 0x5C2: 84,
- 0x5C4: 84,
- 0x5C5: 84,
- 0x5C7: 84,
- 0x610: 84,
- 0x611: 84,
- 0x612: 84,
- 0x613: 84,
- 0x614: 84,
- 0x615: 84,
- 0x616: 84,
- 0x617: 84,
- 0x618: 84,
- 0x619: 84,
- 0x61A: 84,
- 0x61C: 84,
- 0x620: 68,
- 0x622: 82,
- 0x623: 82,
- 0x624: 82,
- 0x625: 82,
- 0x626: 68,
- 0x627: 82,
- 0x628: 68,
- 0x629: 82,
- 0x62A: 68,
- 0x62B: 68,
- 0x62C: 68,
- 0x62D: 68,
- 0x62E: 68,
- 0x62F: 82,
- 0x630: 82,
- 0x631: 82,
- 0x632: 82,
- 0x633: 68,
- 0x634: 68,
- 0x635: 68,
- 0x636: 68,
- 0x637: 68,
- 0x638: 68,
- 0x639: 68,
- 0x63A: 68,
- 0x63B: 68,
- 0x63C: 68,
- 0x63D: 68,
- 0x63E: 68,
- 0x63F: 68,
- 0x640: 67,
- 0x641: 68,
- 0x642: 68,
- 0x643: 68,
- 0x644: 68,
- 0x645: 68,
- 0x646: 68,
- 0x647: 68,
- 0x648: 82,
- 0x649: 68,
- 0x64A: 68,
- 0x64B: 84,
- 0x64C: 84,
- 0x64D: 84,
- 0x64E: 84,
- 0x64F: 84,
- 0x650: 84,
- 0x651: 84,
- 0x652: 84,
- 0x653: 84,
- 0x654: 84,
- 0x655: 84,
- 0x656: 84,
- 0x657: 84,
- 0x658: 84,
- 0x659: 84,
- 0x65A: 84,
- 0x65B: 84,
- 0x65C: 84,
- 0x65D: 84,
- 0x65E: 84,
- 0x65F: 84,
- 0x66E: 68,
- 0x66F: 68,
- 0x670: 84,
- 0x671: 82,
- 0x672: 82,
- 0x673: 82,
- 0x675: 82,
- 0x676: 82,
- 0x677: 82,
- 0x678: 68,
- 0x679: 68,
- 0x67A: 68,
- 0x67B: 68,
- 0x67C: 68,
- 0x67D: 68,
- 0x67E: 68,
- 0x67F: 68,
- 0x680: 68,
- 0x681: 68,
- 0x682: 68,
- 0x683: 68,
- 0x684: 68,
- 0x685: 68,
- 0x686: 68,
- 0x687: 68,
- 0x688: 82,
- 0x689: 82,
- 0x68A: 82,
- 0x68B: 82,
- 0x68C: 82,
- 0x68D: 82,
- 0x68E: 82,
- 0x68F: 82,
- 0x690: 82,
- 0x691: 82,
- 0x692: 82,
- 0x693: 82,
- 0x694: 82,
- 0x695: 82,
- 0x696: 82,
- 0x697: 82,
- 0x698: 82,
- 0x699: 82,
- 0x69A: 68,
- 0x69B: 68,
- 0x69C: 68,
- 0x69D: 68,
- 0x69E: 68,
- 0x69F: 68,
- 0x6A0: 68,
- 0x6A1: 68,
- 0x6A2: 68,
- 0x6A3: 68,
- 0x6A4: 68,
- 0x6A5: 68,
- 0x6A6: 68,
- 0x6A7: 68,
- 0x6A8: 68,
- 0x6A9: 68,
- 0x6AA: 68,
- 0x6AB: 68,
- 0x6AC: 68,
- 0x6AD: 68,
- 0x6AE: 68,
- 0x6AF: 68,
- 0x6B0: 68,
- 0x6B1: 68,
- 0x6B2: 68,
- 0x6B3: 68,
- 0x6B4: 68,
- 0x6B5: 68,
- 0x6B6: 68,
- 0x6B7: 68,
- 0x6B8: 68,
- 0x6B9: 68,
- 0x6BA: 68,
- 0x6BB: 68,
- 0x6BC: 68,
- 0x6BD: 68,
- 0x6BE: 68,
- 0x6BF: 68,
- 0x6C0: 82,
- 0x6C1: 68,
- 0x6C2: 68,
- 0x6C3: 82,
- 0x6C4: 82,
- 0x6C5: 82,
- 0x6C6: 82,
- 0x6C7: 82,
- 0x6C8: 82,
- 0x6C9: 82,
- 0x6CA: 82,
- 0x6CB: 82,
- 0x6CC: 68,
- 0x6CD: 82,
- 0x6CE: 68,
- 0x6CF: 82,
- 0x6D0: 68,
- 0x6D1: 68,
- 0x6D2: 82,
- 0x6D3: 82,
- 0x6D5: 82,
- 0x6D6: 84,
- 0x6D7: 84,
- 0x6D8: 84,
- 0x6D9: 84,
- 0x6DA: 84,
- 0x6DB: 84,
- 0x6DC: 84,
- 0x6DF: 84,
- 0x6E0: 84,
- 0x6E1: 84,
- 0x6E2: 84,
- 0x6E3: 84,
- 0x6E4: 84,
- 0x6E7: 84,
- 0x6E8: 84,
- 0x6EA: 84,
- 0x6EB: 84,
- 0x6EC: 84,
- 0x6ED: 84,
- 0x6EE: 82,
- 0x6EF: 82,
- 0x6FA: 68,
- 0x6FB: 68,
- 0x6FC: 68,
- 0x6FF: 68,
- 0x70F: 84,
- 0x710: 82,
- 0x711: 84,
- 0x712: 68,
- 0x713: 68,
- 0x714: 68,
- 0x715: 82,
- 0x716: 82,
- 0x717: 82,
- 0x718: 82,
- 0x719: 82,
- 0x71A: 68,
- 0x71B: 68,
- 0x71C: 68,
- 0x71D: 68,
- 0x71E: 82,
- 0x71F: 68,
- 0x720: 68,
- 0x721: 68,
- 0x722: 68,
- 0x723: 68,
- 0x724: 68,
- 0x725: 68,
- 0x726: 68,
- 0x727: 68,
- 0x728: 82,
- 0x729: 68,
- 0x72A: 82,
- 0x72B: 68,
- 0x72C: 82,
- 0x72D: 68,
- 0x72E: 68,
- 0x72F: 82,
- 0x730: 84,
- 0x731: 84,
- 0x732: 84,
- 0x733: 84,
- 0x734: 84,
- 0x735: 84,
- 0x736: 84,
- 0x737: 84,
- 0x738: 84,
- 0x739: 84,
- 0x73A: 84,
- 0x73B: 84,
- 0x73C: 84,
- 0x73D: 84,
- 0x73E: 84,
- 0x73F: 84,
- 0x740: 84,
- 0x741: 84,
- 0x742: 84,
- 0x743: 84,
- 0x744: 84,
- 0x745: 84,
- 0x746: 84,
- 0x747: 84,
- 0x748: 84,
- 0x749: 84,
- 0x74A: 84,
- 0x74D: 82,
- 0x74E: 68,
- 0x74F: 68,
- 0x750: 68,
- 0x751: 68,
- 0x752: 68,
- 0x753: 68,
- 0x754: 68,
- 0x755: 68,
- 0x756: 68,
- 0x757: 68,
- 0x758: 68,
- 0x759: 82,
- 0x75A: 82,
- 0x75B: 82,
- 0x75C: 68,
- 0x75D: 68,
- 0x75E: 68,
- 0x75F: 68,
- 0x760: 68,
- 0x761: 68,
- 0x762: 68,
- 0x763: 68,
- 0x764: 68,
- 0x765: 68,
- 0x766: 68,
- 0x767: 68,
- 0x768: 68,
- 0x769: 68,
- 0x76A: 68,
- 0x76B: 82,
- 0x76C: 82,
- 0x76D: 68,
- 0x76E: 68,
- 0x76F: 68,
- 0x770: 68,
- 0x771: 82,
- 0x772: 68,
- 0x773: 82,
- 0x774: 82,
- 0x775: 68,
- 0x776: 68,
- 0x777: 68,
- 0x778: 82,
- 0x779: 82,
- 0x77A: 68,
- 0x77B: 68,
- 0x77C: 68,
- 0x77D: 68,
- 0x77E: 68,
- 0x77F: 68,
- 0x7A6: 84,
- 0x7A7: 84,
- 0x7A8: 84,
- 0x7A9: 84,
- 0x7AA: 84,
- 0x7AB: 84,
- 0x7AC: 84,
- 0x7AD: 84,
- 0x7AE: 84,
- 0x7AF: 84,
- 0x7B0: 84,
- 0x7CA: 68,
- 0x7CB: 68,
- 0x7CC: 68,
- 0x7CD: 68,
- 0x7CE: 68,
- 0x7CF: 68,
- 0x7D0: 68,
- 0x7D1: 68,
- 0x7D2: 68,
- 0x7D3: 68,
- 0x7D4: 68,
- 0x7D5: 68,
- 0x7D6: 68,
- 0x7D7: 68,
- 0x7D8: 68,
- 0x7D9: 68,
- 0x7DA: 68,
- 0x7DB: 68,
- 0x7DC: 68,
- 0x7DD: 68,
- 0x7DE: 68,
- 0x7DF: 68,
- 0x7E0: 68,
- 0x7E1: 68,
- 0x7E2: 68,
- 0x7E3: 68,
- 0x7E4: 68,
- 0x7E5: 68,
- 0x7E6: 68,
- 0x7E7: 68,
- 0x7E8: 68,
- 0x7E9: 68,
- 0x7EA: 68,
- 0x7EB: 84,
- 0x7EC: 84,
- 0x7ED: 84,
- 0x7EE: 84,
- 0x7EF: 84,
- 0x7F0: 84,
- 0x7F1: 84,
- 0x7F2: 84,
- 0x7F3: 84,
- 0x7FA: 67,
- 0x7FD: 84,
- 0x816: 84,
- 0x817: 84,
- 0x818: 84,
- 0x819: 84,
- 0x81B: 84,
- 0x81C: 84,
- 0x81D: 84,
- 0x81E: 84,
- 0x81F: 84,
- 0x820: 84,
- 0x821: 84,
- 0x822: 84,
- 0x823: 84,
- 0x825: 84,
- 0x826: 84,
- 0x827: 84,
- 0x829: 84,
- 0x82A: 84,
- 0x82B: 84,
- 0x82C: 84,
- 0x82D: 84,
- 0x840: 82,
- 0x841: 68,
- 0x842: 68,
- 0x843: 68,
- 0x844: 68,
- 0x845: 68,
- 0x846: 82,
- 0x847: 82,
- 0x848: 68,
- 0x849: 82,
- 0x84A: 68,
- 0x84B: 68,
- 0x84C: 68,
- 0x84D: 68,
- 0x84E: 68,
- 0x84F: 68,
- 0x850: 68,
- 0x851: 68,
- 0x852: 68,
- 0x853: 68,
- 0x854: 82,
- 0x855: 68,
- 0x856: 82,
- 0x857: 82,
- 0x858: 82,
- 0x859: 84,
- 0x85A: 84,
- 0x85B: 84,
- 0x860: 68,
- 0x862: 68,
- 0x863: 68,
- 0x864: 68,
- 0x865: 68,
- 0x867: 82,
- 0x868: 68,
- 0x869: 82,
- 0x86A: 82,
- 0x870: 82,
- 0x871: 82,
- 0x872: 82,
- 0x873: 82,
- 0x874: 82,
- 0x875: 82,
- 0x876: 82,
- 0x877: 82,
- 0x878: 82,
- 0x879: 82,
- 0x87A: 82,
- 0x87B: 82,
- 0x87C: 82,
- 0x87D: 82,
- 0x87E: 82,
- 0x87F: 82,
- 0x880: 82,
- 0x881: 82,
- 0x882: 82,
- 0x883: 67,
- 0x884: 67,
- 0x885: 67,
- 0x886: 68,
- 0x889: 68,
- 0x88A: 68,
- 0x88B: 68,
- 0x88C: 68,
- 0x88D: 68,
- 0x88E: 82,
- 0x88F: 68,
- 0x897: 84,
- 0x898: 84,
- 0x899: 84,
- 0x89A: 84,
- 0x89B: 84,
- 0x89C: 84,
- 0x89D: 84,
- 0x89E: 84,
- 0x89F: 84,
- 0x8A0: 68,
- 0x8A1: 68,
- 0x8A2: 68,
- 0x8A3: 68,
- 0x8A4: 68,
- 0x8A5: 68,
- 0x8A6: 68,
- 0x8A7: 68,
- 0x8A8: 68,
- 0x8A9: 68,
- 0x8AA: 82,
- 0x8AB: 82,
- 0x8AC: 82,
- 0x8AE: 82,
- 0x8AF: 68,
- 0x8B0: 68,
- 0x8B1: 82,
- 0x8B2: 82,
- 0x8B3: 68,
- 0x8B4: 68,
- 0x8B5: 68,
- 0x8B6: 68,
- 0x8B7: 68,
- 0x8B8: 68,
- 0x8B9: 82,
- 0x8BA: 68,
- 0x8BB: 68,
- 0x8BC: 68,
- 0x8BD: 68,
- 0x8BE: 68,
- 0x8BF: 68,
- 0x8C0: 68,
- 0x8C1: 68,
- 0x8C2: 68,
- 0x8C3: 68,
- 0x8C4: 68,
- 0x8C5: 68,
- 0x8C6: 68,
- 0x8C7: 68,
- 0x8C8: 68,
- 0x8CA: 84,
- 0x8CB: 84,
- 0x8CC: 84,
- 0x8CD: 84,
- 0x8CE: 84,
- 0x8CF: 84,
- 0x8D0: 84,
- 0x8D1: 84,
- 0x8D2: 84,
- 0x8D3: 84,
- 0x8D4: 84,
- 0x8D5: 84,
- 0x8D6: 84,
- 0x8D7: 84,
- 0x8D8: 84,
- 0x8D9: 84,
- 0x8DA: 84,
- 0x8DB: 84,
- 0x8DC: 84,
- 0x8DD: 84,
- 0x8DE: 84,
- 0x8DF: 84,
- 0x8E0: 84,
- 0x8E1: 84,
- 0x8E3: 84,
- 0x8E4: 84,
- 0x8E5: 84,
- 0x8E6: 84,
- 0x8E7: 84,
- 0x8E8: 84,
- 0x8E9: 84,
- 0x8EA: 84,
- 0x8EB: 84,
- 0x8EC: 84,
- 0x8ED: 84,
- 0x8EE: 84,
- 0x8EF: 84,
- 0x8F0: 84,
- 0x8F1: 84,
- 0x8F2: 84,
- 0x8F3: 84,
- 0x8F4: 84,
- 0x8F5: 84,
- 0x8F6: 84,
- 0x8F7: 84,
- 0x8F8: 84,
- 0x8F9: 84,
- 0x8FA: 84,
- 0x8FB: 84,
- 0x8FC: 84,
- 0x8FD: 84,
- 0x8FE: 84,
- 0x8FF: 84,
- 0x900: 84,
- 0x901: 84,
- 0x902: 84,
- 0x93A: 84,
- 0x93C: 84,
- 0x941: 84,
- 0x942: 84,
- 0x943: 84,
- 0x944: 84,
- 0x945: 84,
- 0x946: 84,
- 0x947: 84,
- 0x948: 84,
- 0x94D: 84,
- 0x951: 84,
- 0x952: 84,
- 0x953: 84,
- 0x954: 84,
- 0x955: 84,
- 0x956: 84,
- 0x957: 84,
- 0x962: 84,
- 0x963: 84,
- 0x981: 84,
- 0x9BC: 84,
- 0x9C1: 84,
- 0x9C2: 84,
- 0x9C3: 84,
- 0x9C4: 84,
- 0x9CD: 84,
- 0x9E2: 84,
- 0x9E3: 84,
- 0x9FE: 84,
- 0xA01: 84,
- 0xA02: 84,
- 0xA3C: 84,
- 0xA41: 84,
- 0xA42: 84,
- 0xA47: 84,
- 0xA48: 84,
- 0xA4B: 84,
- 0xA4C: 84,
- 0xA4D: 84,
- 0xA51: 84,
- 0xA70: 84,
- 0xA71: 84,
- 0xA75: 84,
- 0xA81: 84,
- 0xA82: 84,
- 0xABC: 84,
- 0xAC1: 84,
- 0xAC2: 84,
- 0xAC3: 84,
- 0xAC4: 84,
- 0xAC5: 84,
- 0xAC7: 84,
- 0xAC8: 84,
- 0xACD: 84,
- 0xAE2: 84,
- 0xAE3: 84,
- 0xAFA: 84,
- 0xAFB: 84,
- 0xAFC: 84,
- 0xAFD: 84,
- 0xAFE: 84,
- 0xAFF: 84,
- 0xB01: 84,
- 0xB3C: 84,
- 0xB3F: 84,
- 0xB41: 84,
- 0xB42: 84,
- 0xB43: 84,
- 0xB44: 84,
- 0xB4D: 84,
- 0xB55: 84,
- 0xB56: 84,
- 0xB62: 84,
- 0xB63: 84,
- 0xB82: 84,
- 0xBC0: 84,
- 0xBCD: 84,
- 0xC00: 84,
- 0xC04: 84,
- 0xC3C: 84,
- 0xC3E: 84,
- 0xC3F: 84,
- 0xC40: 84,
- 0xC46: 84,
- 0xC47: 84,
- 0xC48: 84,
- 0xC4A: 84,
- 0xC4B: 84,
- 0xC4C: 84,
- 0xC4D: 84,
- 0xC55: 84,
- 0xC56: 84,
- 0xC62: 84,
- 0xC63: 84,
- 0xC81: 84,
- 0xCBC: 84,
- 0xCBF: 84,
- 0xCC6: 84,
- 0xCCC: 84,
- 0xCCD: 84,
- 0xCE2: 84,
- 0xCE3: 84,
- 0xD00: 84,
- 0xD01: 84,
- 0xD3B: 84,
- 0xD3C: 84,
- 0xD41: 84,
- 0xD42: 84,
- 0xD43: 84,
- 0xD44: 84,
- 0xD4D: 84,
- 0xD62: 84,
- 0xD63: 84,
- 0xD81: 84,
- 0xDCA: 84,
- 0xDD2: 84,
- 0xDD3: 84,
- 0xDD4: 84,
- 0xDD6: 84,
- 0xE31: 84,
- 0xE34: 84,
- 0xE35: 84,
- 0xE36: 84,
- 0xE37: 84,
- 0xE38: 84,
- 0xE39: 84,
- 0xE3A: 84,
- 0xE47: 84,
- 0xE48: 84,
- 0xE49: 84,
- 0xE4A: 84,
- 0xE4B: 84,
- 0xE4C: 84,
- 0xE4D: 84,
- 0xE4E: 84,
- 0xEB1: 84,
- 0xEB4: 84,
- 0xEB5: 84,
- 0xEB6: 84,
- 0xEB7: 84,
- 0xEB8: 84,
- 0xEB9: 84,
- 0xEBA: 84,
- 0xEBB: 84,
- 0xEBC: 84,
- 0xEC8: 84,
- 0xEC9: 84,
- 0xECA: 84,
- 0xECB: 84,
- 0xECC: 84,
- 0xECD: 84,
- 0xECE: 84,
- 0xF18: 84,
- 0xF19: 84,
- 0xF35: 84,
- 0xF37: 84,
- 0xF39: 84,
- 0xF71: 84,
- 0xF72: 84,
- 0xF73: 84,
- 0xF74: 84,
- 0xF75: 84,
- 0xF76: 84,
- 0xF77: 84,
- 0xF78: 84,
- 0xF79: 84,
- 0xF7A: 84,
- 0xF7B: 84,
- 0xF7C: 84,
- 0xF7D: 84,
- 0xF7E: 84,
- 0xF80: 84,
- 0xF81: 84,
- 0xF82: 84,
- 0xF83: 84,
- 0xF84: 84,
- 0xF86: 84,
- 0xF87: 84,
- 0xF8D: 84,
- 0xF8E: 84,
- 0xF8F: 84,
- 0xF90: 84,
- 0xF91: 84,
- 0xF92: 84,
- 0xF93: 84,
- 0xF94: 84,
- 0xF95: 84,
- 0xF96: 84,
- 0xF97: 84,
- 0xF99: 84,
- 0xF9A: 84,
- 0xF9B: 84,
- 0xF9C: 84,
- 0xF9D: 84,
- 0xF9E: 84,
- 0xF9F: 84,
- 0xFA0: 84,
- 0xFA1: 84,
- 0xFA2: 84,
- 0xFA3: 84,
- 0xFA4: 84,
- 0xFA5: 84,
- 0xFA6: 84,
- 0xFA7: 84,
- 0xFA8: 84,
- 0xFA9: 84,
- 0xFAA: 84,
- 0xFAB: 84,
- 0xFAC: 84,
- 0xFAD: 84,
- 0xFAE: 84,
- 0xFAF: 84,
- 0xFB0: 84,
- 0xFB1: 84,
- 0xFB2: 84,
- 0xFB3: 84,
- 0xFB4: 84,
- 0xFB5: 84,
- 0xFB6: 84,
- 0xFB7: 84,
- 0xFB8: 84,
- 0xFB9: 84,
- 0xFBA: 84,
- 0xFBB: 84,
- 0xFBC: 84,
- 0xFC6: 84,
- 0x102D: 84,
- 0x102E: 84,
- 0x102F: 84,
- 0x1030: 84,
- 0x1032: 84,
- 0x1033: 84,
- 0x1034: 84,
- 0x1035: 84,
- 0x1036: 84,
- 0x1037: 84,
- 0x1039: 84,
- 0x103A: 84,
- 0x103D: 84,
- 0x103E: 84,
- 0x1058: 84,
- 0x1059: 84,
- 0x105E: 84,
- 0x105F: 84,
- 0x1060: 84,
- 0x1071: 84,
- 0x1072: 84,
- 0x1073: 84,
- 0x1074: 84,
- 0x1082: 84,
- 0x1085: 84,
- 0x1086: 84,
- 0x108D: 84,
- 0x109D: 84,
- 0x135D: 84,
- 0x135E: 84,
- 0x135F: 84,
- 0x1712: 84,
- 0x1713: 84,
- 0x1714: 84,
- 0x1732: 84,
- 0x1733: 84,
- 0x1752: 84,
- 0x1753: 84,
- 0x1772: 84,
- 0x1773: 84,
- 0x17B4: 84,
- 0x17B5: 84,
- 0x17B7: 84,
- 0x17B8: 84,
- 0x17B9: 84,
- 0x17BA: 84,
- 0x17BB: 84,
- 0x17BC: 84,
- 0x17BD: 84,
- 0x17C6: 84,
- 0x17C9: 84,
- 0x17CA: 84,
- 0x17CB: 84,
- 0x17CC: 84,
- 0x17CD: 84,
- 0x17CE: 84,
- 0x17CF: 84,
- 0x17D0: 84,
- 0x17D1: 84,
- 0x17D2: 84,
- 0x17D3: 84,
- 0x17DD: 84,
- 0x1807: 68,
- 0x180A: 67,
- 0x180B: 84,
- 0x180C: 84,
- 0x180D: 84,
- 0x180F: 84,
- 0x1820: 68,
- 0x1821: 68,
- 0x1822: 68,
- 0x1823: 68,
- 0x1824: 68,
- 0x1825: 68,
- 0x1826: 68,
- 0x1827: 68,
- 0x1828: 68,
- 0x1829: 68,
- 0x182A: 68,
- 0x182B: 68,
- 0x182C: 68,
- 0x182D: 68,
- 0x182E: 68,
- 0x182F: 68,
- 0x1830: 68,
- 0x1831: 68,
- 0x1832: 68,
- 0x1833: 68,
- 0x1834: 68,
- 0x1835: 68,
- 0x1836: 68,
- 0x1837: 68,
- 0x1838: 68,
- 0x1839: 68,
- 0x183A: 68,
- 0x183B: 68,
- 0x183C: 68,
- 0x183D: 68,
- 0x183E: 68,
- 0x183F: 68,
- 0x1840: 68,
- 0x1841: 68,
- 0x1842: 68,
- 0x1843: 68,
- 0x1844: 68,
- 0x1845: 68,
- 0x1846: 68,
- 0x1847: 68,
- 0x1848: 68,
- 0x1849: 68,
- 0x184A: 68,
- 0x184B: 68,
- 0x184C: 68,
- 0x184D: 68,
- 0x184E: 68,
- 0x184F: 68,
- 0x1850: 68,
- 0x1851: 68,
- 0x1852: 68,
- 0x1853: 68,
- 0x1854: 68,
- 0x1855: 68,
- 0x1856: 68,
- 0x1857: 68,
- 0x1858: 68,
- 0x1859: 68,
- 0x185A: 68,
- 0x185B: 68,
- 0x185C: 68,
- 0x185D: 68,
- 0x185E: 68,
- 0x185F: 68,
- 0x1860: 68,
- 0x1861: 68,
- 0x1862: 68,
- 0x1863: 68,
- 0x1864: 68,
- 0x1865: 68,
- 0x1866: 68,
- 0x1867: 68,
- 0x1868: 68,
- 0x1869: 68,
- 0x186A: 68,
- 0x186B: 68,
- 0x186C: 68,
- 0x186D: 68,
- 0x186E: 68,
- 0x186F: 68,
- 0x1870: 68,
- 0x1871: 68,
- 0x1872: 68,
- 0x1873: 68,
- 0x1874: 68,
- 0x1875: 68,
- 0x1876: 68,
- 0x1877: 68,
- 0x1878: 68,
- 0x1885: 84,
- 0x1886: 84,
- 0x1887: 68,
- 0x1888: 68,
- 0x1889: 68,
- 0x188A: 68,
- 0x188B: 68,
- 0x188C: 68,
- 0x188D: 68,
- 0x188E: 68,
- 0x188F: 68,
- 0x1890: 68,
- 0x1891: 68,
- 0x1892: 68,
- 0x1893: 68,
- 0x1894: 68,
- 0x1895: 68,
- 0x1896: 68,
- 0x1897: 68,
- 0x1898: 68,
- 0x1899: 68,
- 0x189A: 68,
- 0x189B: 68,
- 0x189C: 68,
- 0x189D: 68,
- 0x189E: 68,
- 0x189F: 68,
- 0x18A0: 68,
- 0x18A1: 68,
- 0x18A2: 68,
- 0x18A3: 68,
- 0x18A4: 68,
- 0x18A5: 68,
- 0x18A6: 68,
- 0x18A7: 68,
- 0x18A8: 68,
- 0x18A9: 84,
- 0x18AA: 68,
- 0x1920: 84,
- 0x1921: 84,
- 0x1922: 84,
- 0x1927: 84,
- 0x1928: 84,
- 0x1932: 84,
- 0x1939: 84,
- 0x193A: 84,
- 0x193B: 84,
- 0x1A17: 84,
- 0x1A18: 84,
- 0x1A1B: 84,
- 0x1A56: 84,
- 0x1A58: 84,
- 0x1A59: 84,
- 0x1A5A: 84,
- 0x1A5B: 84,
- 0x1A5C: 84,
- 0x1A5D: 84,
- 0x1A5E: 84,
- 0x1A60: 84,
- 0x1A62: 84,
- 0x1A65: 84,
- 0x1A66: 84,
- 0x1A67: 84,
- 0x1A68: 84,
- 0x1A69: 84,
- 0x1A6A: 84,
- 0x1A6B: 84,
- 0x1A6C: 84,
- 0x1A73: 84,
- 0x1A74: 84,
- 0x1A75: 84,
- 0x1A76: 84,
- 0x1A77: 84,
- 0x1A78: 84,
- 0x1A79: 84,
- 0x1A7A: 84,
- 0x1A7B: 84,
- 0x1A7C: 84,
- 0x1A7F: 84,
- 0x1AB0: 84,
- 0x1AB1: 84,
- 0x1AB2: 84,
- 0x1AB3: 84,
- 0x1AB4: 84,
- 0x1AB5: 84,
- 0x1AB6: 84,
- 0x1AB7: 84,
- 0x1AB8: 84,
- 0x1AB9: 84,
- 0x1ABA: 84,
- 0x1ABB: 84,
- 0x1ABC: 84,
- 0x1ABD: 84,
- 0x1ABE: 84,
- 0x1ABF: 84,
- 0x1AC0: 84,
- 0x1AC1: 84,
- 0x1AC2: 84,
- 0x1AC3: 84,
- 0x1AC4: 84,
- 0x1AC5: 84,
- 0x1AC6: 84,
- 0x1AC7: 84,
- 0x1AC8: 84,
- 0x1AC9: 84,
- 0x1ACA: 84,
- 0x1ACB: 84,
- 0x1ACC: 84,
- 0x1ACD: 84,
- 0x1ACE: 84,
- 0x1ACF: 84,
- 0x1AD0: 84,
- 0x1AD1: 84,
- 0x1AD2: 84,
- 0x1AD3: 84,
- 0x1AD4: 84,
- 0x1AD5: 84,
- 0x1AD6: 84,
- 0x1AD7: 84,
- 0x1AD8: 84,
- 0x1AD9: 84,
- 0x1ADA: 84,
- 0x1ADB: 84,
- 0x1ADC: 84,
- 0x1ADD: 84,
- 0x1AE0: 84,
- 0x1AE1: 84,
- 0x1AE2: 84,
- 0x1AE3: 84,
- 0x1AE4: 84,
- 0x1AE5: 84,
- 0x1AE6: 84,
- 0x1AE7: 84,
- 0x1AE8: 84,
- 0x1AE9: 84,
- 0x1AEA: 84,
- 0x1AEB: 84,
- 0x1B00: 84,
- 0x1B01: 84,
- 0x1B02: 84,
- 0x1B03: 84,
- 0x1B34: 84,
- 0x1B36: 84,
- 0x1B37: 84,
- 0x1B38: 84,
- 0x1B39: 84,
- 0x1B3A: 84,
- 0x1B3C: 84,
- 0x1B42: 84,
- 0x1B6B: 84,
- 0x1B6C: 84,
- 0x1B6D: 84,
- 0x1B6E: 84,
- 0x1B6F: 84,
- 0x1B70: 84,
- 0x1B71: 84,
- 0x1B72: 84,
- 0x1B73: 84,
- 0x1B80: 84,
- 0x1B81: 84,
- 0x1BA2: 84,
- 0x1BA3: 84,
- 0x1BA4: 84,
- 0x1BA5: 84,
- 0x1BA8: 84,
- 0x1BA9: 84,
- 0x1BAB: 84,
- 0x1BAC: 84,
- 0x1BAD: 84,
- 0x1BE6: 84,
- 0x1BE8: 84,
- 0x1BE9: 84,
- 0x1BED: 84,
- 0x1BEF: 84,
- 0x1BF0: 84,
- 0x1BF1: 84,
- 0x1C2C: 84,
- 0x1C2D: 84,
- 0x1C2E: 84,
- 0x1C2F: 84,
- 0x1C30: 84,
- 0x1C31: 84,
- 0x1C32: 84,
- 0x1C33: 84,
- 0x1C36: 84,
- 0x1C37: 84,
- 0x1CD0: 84,
- 0x1CD1: 84,
- 0x1CD2: 84,
- 0x1CD4: 84,
- 0x1CD5: 84,
- 0x1CD6: 84,
- 0x1CD7: 84,
- 0x1CD8: 84,
- 0x1CD9: 84,
- 0x1CDA: 84,
- 0x1CDB: 84,
- 0x1CDC: 84,
- 0x1CDD: 84,
- 0x1CDE: 84,
- 0x1CDF: 84,
- 0x1CE0: 84,
- 0x1CE2: 84,
- 0x1CE3: 84,
- 0x1CE4: 84,
- 0x1CE5: 84,
- 0x1CE6: 84,
- 0x1CE7: 84,
- 0x1CE8: 84,
- 0x1CED: 84,
- 0x1CF4: 84,
- 0x1CF8: 84,
- 0x1CF9: 84,
- 0x1DC0: 84,
- 0x1DC1: 84,
- 0x1DC2: 84,
- 0x1DC3: 84,
- 0x1DC4: 84,
- 0x1DC5: 84,
- 0x1DC6: 84,
- 0x1DC7: 84,
- 0x1DC8: 84,
- 0x1DC9: 84,
- 0x1DCA: 84,
- 0x1DCB: 84,
- 0x1DCC: 84,
- 0x1DCD: 84,
- 0x1DCE: 84,
- 0x1DCF: 84,
- 0x1DD0: 84,
- 0x1DD1: 84,
- 0x1DD2: 84,
- 0x1DD3: 84,
- 0x1DD4: 84,
- 0x1DD5: 84,
- 0x1DD6: 84,
- 0x1DD7: 84,
- 0x1DD8: 84,
- 0x1DD9: 84,
- 0x1DDA: 84,
- 0x1DDB: 84,
- 0x1DDC: 84,
- 0x1DDD: 84,
- 0x1DDE: 84,
- 0x1DDF: 84,
- 0x1DE0: 84,
- 0x1DE1: 84,
- 0x1DE2: 84,
- 0x1DE3: 84,
- 0x1DE4: 84,
- 0x1DE5: 84,
- 0x1DE6: 84,
- 0x1DE7: 84,
- 0x1DE8: 84,
- 0x1DE9: 84,
- 0x1DEA: 84,
- 0x1DEB: 84,
- 0x1DEC: 84,
- 0x1DED: 84,
- 0x1DEE: 84,
- 0x1DEF: 84,
- 0x1DF0: 84,
- 0x1DF1: 84,
- 0x1DF2: 84,
- 0x1DF3: 84,
- 0x1DF4: 84,
- 0x1DF5: 84,
- 0x1DF6: 84,
- 0x1DF7: 84,
- 0x1DF8: 84,
- 0x1DF9: 84,
- 0x1DFA: 84,
- 0x1DFB: 84,
- 0x1DFC: 84,
- 0x1DFD: 84,
- 0x1DFE: 84,
- 0x1DFF: 84,
- 0x200B: 84,
- 0x200D: 67,
- 0x200E: 84,
- 0x200F: 84,
- 0x202A: 84,
- 0x202B: 84,
- 0x202C: 84,
- 0x202D: 84,
- 0x202E: 84,
- 0x2060: 84,
- 0x2061: 84,
- 0x2062: 84,
- 0x2063: 84,
- 0x2064: 84,
- 0x206A: 84,
- 0x206B: 84,
- 0x206C: 84,
- 0x206D: 84,
- 0x206E: 84,
- 0x206F: 84,
- 0x20D0: 84,
- 0x20D1: 84,
- 0x20D2: 84,
- 0x20D3: 84,
- 0x20D4: 84,
- 0x20D5: 84,
- 0x20D6: 84,
- 0x20D7: 84,
- 0x20D8: 84,
- 0x20D9: 84,
- 0x20DA: 84,
- 0x20DB: 84,
- 0x20DC: 84,
- 0x20DD: 84,
- 0x20DE: 84,
- 0x20DF: 84,
- 0x20E0: 84,
- 0x20E1: 84,
- 0x20E2: 84,
- 0x20E3: 84,
- 0x20E4: 84,
- 0x20E5: 84,
- 0x20E6: 84,
- 0x20E7: 84,
- 0x20E8: 84,
- 0x20E9: 84,
- 0x20EA: 84,
- 0x20EB: 84,
- 0x20EC: 84,
- 0x20ED: 84,
- 0x20EE: 84,
- 0x20EF: 84,
- 0x20F0: 84,
- 0x2CEF: 84,
- 0x2CF0: 84,
- 0x2CF1: 84,
- 0x2D7F: 84,
- 0x2DE0: 84,
- 0x2DE1: 84,
- 0x2DE2: 84,
- 0x2DE3: 84,
- 0x2DE4: 84,
- 0x2DE5: 84,
- 0x2DE6: 84,
- 0x2DE7: 84,
- 0x2DE8: 84,
- 0x2DE9: 84,
- 0x2DEA: 84,
- 0x2DEB: 84,
- 0x2DEC: 84,
- 0x2DED: 84,
- 0x2DEE: 84,
- 0x2DEF: 84,
- 0x2DF0: 84,
- 0x2DF1: 84,
- 0x2DF2: 84,
- 0x2DF3: 84,
- 0x2DF4: 84,
- 0x2DF5: 84,
- 0x2DF6: 84,
- 0x2DF7: 84,
- 0x2DF8: 84,
- 0x2DF9: 84,
- 0x2DFA: 84,
- 0x2DFB: 84,
- 0x2DFC: 84,
- 0x2DFD: 84,
- 0x2DFE: 84,
- 0x2DFF: 84,
- 0x302A: 84,
- 0x302B: 84,
- 0x302C: 84,
- 0x302D: 84,
- 0x3099: 84,
- 0x309A: 84,
- 0xA66F: 84,
- 0xA670: 84,
- 0xA671: 84,
- 0xA672: 84,
- 0xA674: 84,
- 0xA675: 84,
- 0xA676: 84,
- 0xA677: 84,
- 0xA678: 84,
- 0xA679: 84,
- 0xA67A: 84,
- 0xA67B: 84,
- 0xA67C: 84,
- 0xA67D: 84,
- 0xA69E: 84,
- 0xA69F: 84,
- 0xA6F0: 84,
- 0xA6F1: 84,
- 0xA802: 84,
- 0xA806: 84,
- 0xA80B: 84,
- 0xA825: 84,
- 0xA826: 84,
- 0xA82C: 84,
- 0xA840: 68,
- 0xA841: 68,
- 0xA842: 68,
- 0xA843: 68,
- 0xA844: 68,
- 0xA845: 68,
- 0xA846: 68,
- 0xA847: 68,
- 0xA848: 68,
- 0xA849: 68,
- 0xA84A: 68,
- 0xA84B: 68,
- 0xA84C: 68,
- 0xA84D: 68,
- 0xA84E: 68,
- 0xA84F: 68,
- 0xA850: 68,
- 0xA851: 68,
- 0xA852: 68,
- 0xA853: 68,
- 0xA854: 68,
- 0xA855: 68,
- 0xA856: 68,
- 0xA857: 68,
- 0xA858: 68,
- 0xA859: 68,
- 0xA85A: 68,
- 0xA85B: 68,
- 0xA85C: 68,
- 0xA85D: 68,
- 0xA85E: 68,
- 0xA85F: 68,
- 0xA860: 68,
- 0xA861: 68,
- 0xA862: 68,
- 0xA863: 68,
- 0xA864: 68,
- 0xA865: 68,
- 0xA866: 68,
- 0xA867: 68,
- 0xA868: 68,
- 0xA869: 68,
- 0xA86A: 68,
- 0xA86B: 68,
- 0xA86C: 68,
- 0xA86D: 68,
- 0xA86E: 68,
- 0xA86F: 68,
- 0xA870: 68,
- 0xA871: 68,
- 0xA872: 76,
- 0xA8C4: 84,
- 0xA8C5: 84,
- 0xA8E0: 84,
- 0xA8E1: 84,
- 0xA8E2: 84,
- 0xA8E3: 84,
- 0xA8E4: 84,
- 0xA8E5: 84,
- 0xA8E6: 84,
- 0xA8E7: 84,
- 0xA8E8: 84,
- 0xA8E9: 84,
- 0xA8EA: 84,
- 0xA8EB: 84,
- 0xA8EC: 84,
- 0xA8ED: 84,
- 0xA8EE: 84,
- 0xA8EF: 84,
- 0xA8F0: 84,
- 0xA8F1: 84,
- 0xA8FF: 84,
- 0xA926: 84,
- 0xA927: 84,
- 0xA928: 84,
- 0xA929: 84,
- 0xA92A: 84,
- 0xA92B: 84,
- 0xA92C: 84,
- 0xA92D: 84,
- 0xA947: 84,
- 0xA948: 84,
- 0xA949: 84,
- 0xA94A: 84,
- 0xA94B: 84,
- 0xA94C: 84,
- 0xA94D: 84,
- 0xA94E: 84,
- 0xA94F: 84,
- 0xA950: 84,
- 0xA951: 84,
- 0xA980: 84,
- 0xA981: 84,
- 0xA982: 84,
- 0xA9B3: 84,
- 0xA9B6: 84,
- 0xA9B7: 84,
- 0xA9B8: 84,
- 0xA9B9: 84,
- 0xA9BC: 84,
- 0xA9BD: 84,
- 0xA9E5: 84,
- 0xAA29: 84,
- 0xAA2A: 84,
- 0xAA2B: 84,
- 0xAA2C: 84,
- 0xAA2D: 84,
- 0xAA2E: 84,
- 0xAA31: 84,
- 0xAA32: 84,
- 0xAA35: 84,
- 0xAA36: 84,
- 0xAA43: 84,
- 0xAA4C: 84,
- 0xAA7C: 84,
- 0xAAB0: 84,
- 0xAAB2: 84,
- 0xAAB3: 84,
- 0xAAB4: 84,
- 0xAAB7: 84,
- 0xAAB8: 84,
- 0xAABE: 84,
- 0xAABF: 84,
- 0xAAC1: 84,
- 0xAAEC: 84,
- 0xAAED: 84,
- 0xAAF6: 84,
- 0xABE5: 84,
- 0xABE8: 84,
- 0xABED: 84,
- 0xFB1E: 84,
- 0xFE00: 84,
- 0xFE01: 84,
- 0xFE02: 84,
- 0xFE03: 84,
- 0xFE04: 84,
- 0xFE05: 84,
- 0xFE06: 84,
- 0xFE07: 84,
- 0xFE08: 84,
- 0xFE09: 84,
- 0xFE0A: 84,
- 0xFE0B: 84,
- 0xFE0C: 84,
- 0xFE0D: 84,
- 0xFE0E: 84,
- 0xFE0F: 84,
- 0xFE20: 84,
- 0xFE21: 84,
- 0xFE22: 84,
- 0xFE23: 84,
- 0xFE24: 84,
- 0xFE25: 84,
- 0xFE26: 84,
- 0xFE27: 84,
- 0xFE28: 84,
- 0xFE29: 84,
- 0xFE2A: 84,
- 0xFE2B: 84,
- 0xFE2C: 84,
- 0xFE2D: 84,
- 0xFE2E: 84,
- 0xFE2F: 84,
- 0xFEFF: 84,
- 0xFFF9: 84,
- 0xFFFA: 84,
- 0xFFFB: 84,
- 0x101FD: 84,
- 0x102E0: 84,
- 0x10376: 84,
- 0x10377: 84,
- 0x10378: 84,
- 0x10379: 84,
- 0x1037A: 84,
- 0x10A01: 84,
- 0x10A02: 84,
- 0x10A03: 84,
- 0x10A05: 84,
- 0x10A06: 84,
- 0x10A0C: 84,
- 0x10A0D: 84,
- 0x10A0E: 84,
- 0x10A0F: 84,
- 0x10A38: 84,
- 0x10A39: 84,
- 0x10A3A: 84,
- 0x10A3F: 84,
- 0x10AC0: 68,
- 0x10AC1: 68,
- 0x10AC2: 68,
- 0x10AC3: 68,
- 0x10AC4: 68,
- 0x10AC5: 82,
- 0x10AC7: 82,
- 0x10AC9: 82,
- 0x10ACA: 82,
- 0x10ACD: 76,
- 0x10ACE: 82,
- 0x10ACF: 82,
- 0x10AD0: 82,
- 0x10AD1: 82,
- 0x10AD2: 82,
- 0x10AD3: 68,
- 0x10AD4: 68,
- 0x10AD5: 68,
- 0x10AD6: 68,
- 0x10AD7: 76,
- 0x10AD8: 68,
- 0x10AD9: 68,
- 0x10ADA: 68,
- 0x10ADB: 68,
- 0x10ADC: 68,
- 0x10ADD: 82,
- 0x10ADE: 68,
- 0x10ADF: 68,
- 0x10AE0: 68,
- 0x10AE1: 82,
- 0x10AE4: 82,
- 0x10AE5: 84,
- 0x10AE6: 84,
- 0x10AEB: 68,
- 0x10AEC: 68,
- 0x10AED: 68,
- 0x10AEE: 68,
- 0x10AEF: 82,
- 0x10B80: 68,
- 0x10B81: 82,
- 0x10B82: 68,
- 0x10B83: 82,
- 0x10B84: 82,
- 0x10B85: 82,
- 0x10B86: 68,
- 0x10B87: 68,
- 0x10B88: 68,
- 0x10B89: 82,
- 0x10B8A: 68,
- 0x10B8B: 68,
- 0x10B8C: 82,
- 0x10B8D: 68,
- 0x10B8E: 82,
- 0x10B8F: 82,
- 0x10B90: 68,
- 0x10B91: 82,
- 0x10BA9: 82,
- 0x10BAA: 82,
- 0x10BAB: 82,
- 0x10BAC: 82,
- 0x10BAD: 68,
- 0x10BAE: 68,
- 0x10D00: 76,
- 0x10D01: 68,
- 0x10D02: 68,
- 0x10D03: 68,
- 0x10D04: 68,
- 0x10D05: 68,
- 0x10D06: 68,
- 0x10D07: 68,
- 0x10D08: 68,
- 0x10D09: 68,
- 0x10D0A: 68,
- 0x10D0B: 68,
- 0x10D0C: 68,
- 0x10D0D: 68,
- 0x10D0E: 68,
- 0x10D0F: 68,
- 0x10D10: 68,
- 0x10D11: 68,
- 0x10D12: 68,
- 0x10D13: 68,
- 0x10D14: 68,
- 0x10D15: 68,
- 0x10D16: 68,
- 0x10D17: 68,
- 0x10D18: 68,
- 0x10D19: 68,
- 0x10D1A: 68,
- 0x10D1B: 68,
- 0x10D1C: 68,
- 0x10D1D: 68,
- 0x10D1E: 68,
- 0x10D1F: 68,
- 0x10D20: 68,
- 0x10D21: 68,
- 0x10D22: 82,
- 0x10D23: 68,
- 0x10D24: 84,
- 0x10D25: 84,
- 0x10D26: 84,
- 0x10D27: 84,
- 0x10D69: 84,
- 0x10D6A: 84,
- 0x10D6B: 84,
- 0x10D6C: 84,
- 0x10D6D: 84,
- 0x10EAB: 84,
- 0x10EAC: 84,
- 0x10EC2: 82,
- 0x10EC3: 68,
- 0x10EC4: 68,
- 0x10EC6: 68,
- 0x10EC7: 68,
- 0x10EFA: 84,
- 0x10EFB: 84,
- 0x10EFC: 84,
- 0x10EFD: 84,
- 0x10EFE: 84,
- 0x10EFF: 84,
- 0x10F30: 68,
- 0x10F31: 68,
- 0x10F32: 68,
- 0x10F33: 82,
- 0x10F34: 68,
- 0x10F35: 68,
- 0x10F36: 68,
- 0x10F37: 68,
- 0x10F38: 68,
- 0x10F39: 68,
- 0x10F3A: 68,
- 0x10F3B: 68,
- 0x10F3C: 68,
- 0x10F3D: 68,
- 0x10F3E: 68,
- 0x10F3F: 68,
- 0x10F40: 68,
- 0x10F41: 68,
- 0x10F42: 68,
- 0x10F43: 68,
- 0x10F44: 68,
- 0x10F46: 84,
- 0x10F47: 84,
- 0x10F48: 84,
- 0x10F49: 84,
- 0x10F4A: 84,
- 0x10F4B: 84,
- 0x10F4C: 84,
- 0x10F4D: 84,
- 0x10F4E: 84,
- 0x10F4F: 84,
- 0x10F50: 84,
- 0x10F51: 68,
- 0x10F52: 68,
- 0x10F53: 68,
- 0x10F54: 82,
- 0x10F70: 68,
- 0x10F71: 68,
- 0x10F72: 68,
- 0x10F73: 68,
- 0x10F74: 82,
- 0x10F75: 82,
- 0x10F76: 68,
- 0x10F77: 68,
- 0x10F78: 68,
- 0x10F79: 68,
- 0x10F7A: 68,
- 0x10F7B: 68,
- 0x10F7C: 68,
- 0x10F7D: 68,
- 0x10F7E: 68,
- 0x10F7F: 68,
- 0x10F80: 68,
- 0x10F81: 68,
- 0x10F82: 84,
- 0x10F83: 84,
- 0x10F84: 84,
- 0x10F85: 84,
- 0x10FB0: 68,
- 0x10FB2: 68,
- 0x10FB3: 68,
- 0x10FB4: 82,
- 0x10FB5: 82,
- 0x10FB6: 82,
- 0x10FB8: 68,
- 0x10FB9: 82,
- 0x10FBA: 82,
- 0x10FBB: 68,
- 0x10FBC: 68,
- 0x10FBD: 82,
- 0x10FBE: 68,
- 0x10FBF: 68,
- 0x10FC1: 68,
- 0x10FC2: 82,
- 0x10FC3: 82,
- 0x10FC4: 68,
- 0x10FC9: 82,
- 0x10FCA: 68,
- 0x10FCB: 76,
- 0x11001: 84,
- 0x11038: 84,
- 0x11039: 84,
- 0x1103A: 84,
- 0x1103B: 84,
- 0x1103C: 84,
- 0x1103D: 84,
- 0x1103E: 84,
- 0x1103F: 84,
- 0x11040: 84,
- 0x11041: 84,
- 0x11042: 84,
- 0x11043: 84,
- 0x11044: 84,
- 0x11045: 84,
- 0x11046: 84,
- 0x11070: 84,
- 0x11073: 84,
- 0x11074: 84,
- 0x1107F: 84,
- 0x11080: 84,
- 0x11081: 84,
- 0x110B3: 84,
- 0x110B4: 84,
- 0x110B5: 84,
- 0x110B6: 84,
- 0x110B9: 84,
- 0x110BA: 84,
- 0x110C2: 84,
- 0x11100: 84,
- 0x11101: 84,
- 0x11102: 84,
- 0x11127: 84,
- 0x11128: 84,
- 0x11129: 84,
- 0x1112A: 84,
- 0x1112B: 84,
- 0x1112D: 84,
- 0x1112E: 84,
- 0x1112F: 84,
- 0x11130: 84,
- 0x11131: 84,
- 0x11132: 84,
- 0x11133: 84,
- 0x11134: 84,
- 0x11173: 84,
- 0x11180: 84,
- 0x11181: 84,
- 0x111B6: 84,
- 0x111B7: 84,
- 0x111B8: 84,
- 0x111B9: 84,
- 0x111BA: 84,
- 0x111BB: 84,
- 0x111BC: 84,
- 0x111BD: 84,
- 0x111BE: 84,
- 0x111C9: 84,
- 0x111CA: 84,
- 0x111CB: 84,
- 0x111CC: 84,
- 0x111CF: 84,
- 0x1122F: 84,
- 0x11230: 84,
- 0x11231: 84,
- 0x11234: 84,
- 0x11236: 84,
- 0x11237: 84,
- 0x1123E: 84,
- 0x11241: 84,
- 0x112DF: 84,
- 0x112E3: 84,
- 0x112E4: 84,
- 0x112E5: 84,
- 0x112E6: 84,
- 0x112E7: 84,
- 0x112E8: 84,
- 0x112E9: 84,
- 0x112EA: 84,
- 0x11300: 84,
- 0x11301: 84,
- 0x1133B: 84,
- 0x1133C: 84,
- 0x11340: 84,
- 0x11366: 84,
- 0x11367: 84,
- 0x11368: 84,
- 0x11369: 84,
- 0x1136A: 84,
- 0x1136B: 84,
- 0x1136C: 84,
- 0x11370: 84,
- 0x11371: 84,
- 0x11372: 84,
- 0x11373: 84,
- 0x11374: 84,
- 0x113BB: 84,
- 0x113BC: 84,
- 0x113BD: 84,
- 0x113BE: 84,
- 0x113BF: 84,
- 0x113C0: 84,
- 0x113CE: 84,
- 0x113D0: 84,
- 0x113D2: 84,
- 0x113E1: 84,
- 0x113E2: 84,
- 0x11438: 84,
- 0x11439: 84,
- 0x1143A: 84,
- 0x1143B: 84,
- 0x1143C: 84,
- 0x1143D: 84,
- 0x1143E: 84,
- 0x1143F: 84,
- 0x11442: 84,
- 0x11443: 84,
- 0x11444: 84,
- 0x11446: 84,
- 0x1145E: 84,
- 0x114B3: 84,
- 0x114B4: 84,
- 0x114B5: 84,
- 0x114B6: 84,
- 0x114B7: 84,
- 0x114B8: 84,
- 0x114BA: 84,
- 0x114BF: 84,
- 0x114C0: 84,
- 0x114C2: 84,
- 0x114C3: 84,
- 0x115B2: 84,
- 0x115B3: 84,
- 0x115B4: 84,
- 0x115B5: 84,
- 0x115BC: 84,
- 0x115BD: 84,
- 0x115BF: 84,
- 0x115C0: 84,
- 0x115DC: 84,
- 0x115DD: 84,
- 0x11633: 84,
- 0x11634: 84,
- 0x11635: 84,
- 0x11636: 84,
- 0x11637: 84,
- 0x11638: 84,
- 0x11639: 84,
- 0x1163A: 84,
- 0x1163D: 84,
- 0x1163F: 84,
- 0x11640: 84,
- 0x116AB: 84,
- 0x116AD: 84,
- 0x116B0: 84,
- 0x116B1: 84,
- 0x116B2: 84,
- 0x116B3: 84,
- 0x116B4: 84,
- 0x116B5: 84,
- 0x116B7: 84,
- 0x1171D: 84,
- 0x1171F: 84,
- 0x11722: 84,
- 0x11723: 84,
- 0x11724: 84,
- 0x11725: 84,
- 0x11727: 84,
- 0x11728: 84,
- 0x11729: 84,
- 0x1172A: 84,
- 0x1172B: 84,
- 0x1182F: 84,
- 0x11830: 84,
- 0x11831: 84,
- 0x11832: 84,
- 0x11833: 84,
- 0x11834: 84,
- 0x11835: 84,
- 0x11836: 84,
- 0x11837: 84,
- 0x11839: 84,
- 0x1183A: 84,
- 0x1193B: 84,
- 0x1193C: 84,
- 0x1193E: 84,
- 0x11943: 84,
- 0x119D4: 84,
- 0x119D5: 84,
- 0x119D6: 84,
- 0x119D7: 84,
- 0x119DA: 84,
- 0x119DB: 84,
- 0x119E0: 84,
- 0x11A01: 84,
- 0x11A02: 84,
- 0x11A03: 84,
- 0x11A04: 84,
- 0x11A05: 84,
- 0x11A06: 84,
- 0x11A07: 84,
- 0x11A08: 84,
- 0x11A09: 84,
- 0x11A0A: 84,
- 0x11A33: 84,
- 0x11A34: 84,
- 0x11A35: 84,
- 0x11A36: 84,
- 0x11A37: 84,
- 0x11A38: 84,
- 0x11A3B: 84,
- 0x11A3C: 84,
- 0x11A3D: 84,
- 0x11A3E: 84,
- 0x11A47: 84,
- 0x11A51: 84,
- 0x11A52: 84,
- 0x11A53: 84,
- 0x11A54: 84,
- 0x11A55: 84,
- 0x11A56: 84,
- 0x11A59: 84,
- 0x11A5A: 84,
- 0x11A5B: 84,
- 0x11A8A: 84,
- 0x11A8B: 84,
- 0x11A8C: 84,
- 0x11A8D: 84,
- 0x11A8E: 84,
- 0x11A8F: 84,
- 0x11A90: 84,
- 0x11A91: 84,
- 0x11A92: 84,
- 0x11A93: 84,
- 0x11A94: 84,
- 0x11A95: 84,
- 0x11A96: 84,
- 0x11A98: 84,
- 0x11A99: 84,
- 0x11B60: 84,
- 0x11B62: 84,
- 0x11B63: 84,
- 0x11B64: 84,
- 0x11B66: 84,
- 0x11C30: 84,
- 0x11C31: 84,
- 0x11C32: 84,
- 0x11C33: 84,
- 0x11C34: 84,
- 0x11C35: 84,
- 0x11C36: 84,
- 0x11C38: 84,
- 0x11C39: 84,
- 0x11C3A: 84,
- 0x11C3B: 84,
- 0x11C3C: 84,
- 0x11C3D: 84,
- 0x11C3F: 84,
- 0x11C92: 84,
- 0x11C93: 84,
- 0x11C94: 84,
- 0x11C95: 84,
- 0x11C96: 84,
- 0x11C97: 84,
- 0x11C98: 84,
- 0x11C99: 84,
- 0x11C9A: 84,
- 0x11C9B: 84,
- 0x11C9C: 84,
- 0x11C9D: 84,
- 0x11C9E: 84,
- 0x11C9F: 84,
- 0x11CA0: 84,
- 0x11CA1: 84,
- 0x11CA2: 84,
- 0x11CA3: 84,
- 0x11CA4: 84,
- 0x11CA5: 84,
- 0x11CA6: 84,
- 0x11CA7: 84,
- 0x11CAA: 84,
- 0x11CAB: 84,
- 0x11CAC: 84,
- 0x11CAD: 84,
- 0x11CAE: 84,
- 0x11CAF: 84,
- 0x11CB0: 84,
- 0x11CB2: 84,
- 0x11CB3: 84,
- 0x11CB5: 84,
- 0x11CB6: 84,
- 0x11D31: 84,
- 0x11D32: 84,
- 0x11D33: 84,
- 0x11D34: 84,
- 0x11D35: 84,
- 0x11D36: 84,
- 0x11D3A: 84,
- 0x11D3C: 84,
- 0x11D3D: 84,
- 0x11D3F: 84,
- 0x11D40: 84,
- 0x11D41: 84,
- 0x11D42: 84,
- 0x11D43: 84,
- 0x11D44: 84,
- 0x11D45: 84,
- 0x11D47: 84,
- 0x11D90: 84,
- 0x11D91: 84,
- 0x11D95: 84,
- 0x11D97: 84,
- 0x11EF3: 84,
- 0x11EF4: 84,
- 0x11F00: 84,
- 0x11F01: 84,
- 0x11F36: 84,
- 0x11F37: 84,
- 0x11F38: 84,
- 0x11F39: 84,
- 0x11F3A: 84,
- 0x11F40: 84,
- 0x11F42: 84,
- 0x11F5A: 84,
- 0x13430: 84,
- 0x13431: 84,
- 0x13432: 84,
- 0x13433: 84,
- 0x13434: 84,
- 0x13435: 84,
- 0x13436: 84,
- 0x13437: 84,
- 0x13438: 84,
- 0x13439: 84,
- 0x1343A: 84,
- 0x1343B: 84,
- 0x1343C: 84,
- 0x1343D: 84,
- 0x1343E: 84,
- 0x1343F: 84,
- 0x13440: 84,
- 0x13447: 84,
- 0x13448: 84,
- 0x13449: 84,
- 0x1344A: 84,
- 0x1344B: 84,
- 0x1344C: 84,
- 0x1344D: 84,
- 0x1344E: 84,
- 0x1344F: 84,
- 0x13450: 84,
- 0x13451: 84,
- 0x13452: 84,
- 0x13453: 84,
- 0x13454: 84,
- 0x13455: 84,
- 0x1611E: 84,
- 0x1611F: 84,
- 0x16120: 84,
- 0x16121: 84,
- 0x16122: 84,
- 0x16123: 84,
- 0x16124: 84,
- 0x16125: 84,
- 0x16126: 84,
- 0x16127: 84,
- 0x16128: 84,
- 0x16129: 84,
- 0x1612D: 84,
- 0x1612E: 84,
- 0x1612F: 84,
- 0x16AF0: 84,
- 0x16AF1: 84,
- 0x16AF2: 84,
- 0x16AF3: 84,
- 0x16AF4: 84,
- 0x16B30: 84,
- 0x16B31: 84,
- 0x16B32: 84,
- 0x16B33: 84,
- 0x16B34: 84,
- 0x16B35: 84,
- 0x16B36: 84,
- 0x16F4F: 84,
- 0x16F8F: 84,
- 0x16F90: 84,
- 0x16F91: 84,
- 0x16F92: 84,
- 0x16FE4: 84,
- 0x1BC9D: 84,
- 0x1BC9E: 84,
- 0x1BCA0: 84,
- 0x1BCA1: 84,
- 0x1BCA2: 84,
- 0x1BCA3: 84,
- 0x1CF00: 84,
- 0x1CF01: 84,
- 0x1CF02: 84,
- 0x1CF03: 84,
- 0x1CF04: 84,
- 0x1CF05: 84,
- 0x1CF06: 84,
- 0x1CF07: 84,
- 0x1CF08: 84,
- 0x1CF09: 84,
- 0x1CF0A: 84,
- 0x1CF0B: 84,
- 0x1CF0C: 84,
- 0x1CF0D: 84,
- 0x1CF0E: 84,
- 0x1CF0F: 84,
- 0x1CF10: 84,
- 0x1CF11: 84,
- 0x1CF12: 84,
- 0x1CF13: 84,
- 0x1CF14: 84,
- 0x1CF15: 84,
- 0x1CF16: 84,
- 0x1CF17: 84,
- 0x1CF18: 84,
- 0x1CF19: 84,
- 0x1CF1A: 84,
- 0x1CF1B: 84,
- 0x1CF1C: 84,
- 0x1CF1D: 84,
- 0x1CF1E: 84,
- 0x1CF1F: 84,
- 0x1CF20: 84,
- 0x1CF21: 84,
- 0x1CF22: 84,
- 0x1CF23: 84,
- 0x1CF24: 84,
- 0x1CF25: 84,
- 0x1CF26: 84,
- 0x1CF27: 84,
- 0x1CF28: 84,
- 0x1CF29: 84,
- 0x1CF2A: 84,
- 0x1CF2B: 84,
- 0x1CF2C: 84,
- 0x1CF2D: 84,
- 0x1CF30: 84,
- 0x1CF31: 84,
- 0x1CF32: 84,
- 0x1CF33: 84,
- 0x1CF34: 84,
- 0x1CF35: 84,
- 0x1CF36: 84,
- 0x1CF37: 84,
- 0x1CF38: 84,
- 0x1CF39: 84,
- 0x1CF3A: 84,
- 0x1CF3B: 84,
- 0x1CF3C: 84,
- 0x1CF3D: 84,
- 0x1CF3E: 84,
- 0x1CF3F: 84,
- 0x1CF40: 84,
- 0x1CF41: 84,
- 0x1CF42: 84,
- 0x1CF43: 84,
- 0x1CF44: 84,
- 0x1CF45: 84,
- 0x1CF46: 84,
- 0x1D167: 84,
- 0x1D168: 84,
- 0x1D169: 84,
- 0x1D173: 84,
- 0x1D174: 84,
- 0x1D175: 84,
- 0x1D176: 84,
- 0x1D177: 84,
- 0x1D178: 84,
- 0x1D179: 84,
- 0x1D17A: 84,
- 0x1D17B: 84,
- 0x1D17C: 84,
- 0x1D17D: 84,
- 0x1D17E: 84,
- 0x1D17F: 84,
- 0x1D180: 84,
- 0x1D181: 84,
- 0x1D182: 84,
- 0x1D185: 84,
- 0x1D186: 84,
- 0x1D187: 84,
- 0x1D188: 84,
- 0x1D189: 84,
- 0x1D18A: 84,
- 0x1D18B: 84,
- 0x1D1AA: 84,
- 0x1D1AB: 84,
- 0x1D1AC: 84,
- 0x1D1AD: 84,
- 0x1D242: 84,
- 0x1D243: 84,
- 0x1D244: 84,
- 0x1DA00: 84,
- 0x1DA01: 84,
- 0x1DA02: 84,
- 0x1DA03: 84,
- 0x1DA04: 84,
- 0x1DA05: 84,
- 0x1DA06: 84,
- 0x1DA07: 84,
- 0x1DA08: 84,
- 0x1DA09: 84,
- 0x1DA0A: 84,
- 0x1DA0B: 84,
- 0x1DA0C: 84,
- 0x1DA0D: 84,
- 0x1DA0E: 84,
- 0x1DA0F: 84,
- 0x1DA10: 84,
- 0x1DA11: 84,
- 0x1DA12: 84,
- 0x1DA13: 84,
- 0x1DA14: 84,
- 0x1DA15: 84,
- 0x1DA16: 84,
- 0x1DA17: 84,
- 0x1DA18: 84,
- 0x1DA19: 84,
- 0x1DA1A: 84,
- 0x1DA1B: 84,
- 0x1DA1C: 84,
- 0x1DA1D: 84,
- 0x1DA1E: 84,
- 0x1DA1F: 84,
- 0x1DA20: 84,
- 0x1DA21: 84,
- 0x1DA22: 84,
- 0x1DA23: 84,
- 0x1DA24: 84,
- 0x1DA25: 84,
- 0x1DA26: 84,
- 0x1DA27: 84,
- 0x1DA28: 84,
- 0x1DA29: 84,
- 0x1DA2A: 84,
- 0x1DA2B: 84,
- 0x1DA2C: 84,
- 0x1DA2D: 84,
- 0x1DA2E: 84,
- 0x1DA2F: 84,
- 0x1DA30: 84,
- 0x1DA31: 84,
- 0x1DA32: 84,
- 0x1DA33: 84,
- 0x1DA34: 84,
- 0x1DA35: 84,
- 0x1DA36: 84,
- 0x1DA3B: 84,
- 0x1DA3C: 84,
- 0x1DA3D: 84,
- 0x1DA3E: 84,
- 0x1DA3F: 84,
- 0x1DA40: 84,
- 0x1DA41: 84,
- 0x1DA42: 84,
- 0x1DA43: 84,
- 0x1DA44: 84,
- 0x1DA45: 84,
- 0x1DA46: 84,
- 0x1DA47: 84,
- 0x1DA48: 84,
- 0x1DA49: 84,
- 0x1DA4A: 84,
- 0x1DA4B: 84,
- 0x1DA4C: 84,
- 0x1DA4D: 84,
- 0x1DA4E: 84,
- 0x1DA4F: 84,
- 0x1DA50: 84,
- 0x1DA51: 84,
- 0x1DA52: 84,
- 0x1DA53: 84,
- 0x1DA54: 84,
- 0x1DA55: 84,
- 0x1DA56: 84,
- 0x1DA57: 84,
- 0x1DA58: 84,
- 0x1DA59: 84,
- 0x1DA5A: 84,
- 0x1DA5B: 84,
- 0x1DA5C: 84,
- 0x1DA5D: 84,
- 0x1DA5E: 84,
- 0x1DA5F: 84,
- 0x1DA60: 84,
- 0x1DA61: 84,
- 0x1DA62: 84,
- 0x1DA63: 84,
- 0x1DA64: 84,
- 0x1DA65: 84,
- 0x1DA66: 84,
- 0x1DA67: 84,
- 0x1DA68: 84,
- 0x1DA69: 84,
- 0x1DA6A: 84,
- 0x1DA6B: 84,
- 0x1DA6C: 84,
- 0x1DA75: 84,
- 0x1DA84: 84,
- 0x1DA9B: 84,
- 0x1DA9C: 84,
- 0x1DA9D: 84,
- 0x1DA9E: 84,
- 0x1DA9F: 84,
- 0x1DAA1: 84,
- 0x1DAA2: 84,
- 0x1DAA3: 84,
- 0x1DAA4: 84,
- 0x1DAA5: 84,
- 0x1DAA6: 84,
- 0x1DAA7: 84,
- 0x1DAA8: 84,
- 0x1DAA9: 84,
- 0x1DAAA: 84,
- 0x1DAAB: 84,
- 0x1DAAC: 84,
- 0x1DAAD: 84,
- 0x1DAAE: 84,
- 0x1DAAF: 84,
- 0x1E000: 84,
- 0x1E001: 84,
- 0x1E002: 84,
- 0x1E003: 84,
- 0x1E004: 84,
- 0x1E005: 84,
- 0x1E006: 84,
- 0x1E008: 84,
- 0x1E009: 84,
- 0x1E00A: 84,
- 0x1E00B: 84,
- 0x1E00C: 84,
- 0x1E00D: 84,
- 0x1E00E: 84,
- 0x1E00F: 84,
- 0x1E010: 84,
- 0x1E011: 84,
- 0x1E012: 84,
- 0x1E013: 84,
- 0x1E014: 84,
- 0x1E015: 84,
- 0x1E016: 84,
- 0x1E017: 84,
- 0x1E018: 84,
- 0x1E01B: 84,
- 0x1E01C: 84,
- 0x1E01D: 84,
- 0x1E01E: 84,
- 0x1E01F: 84,
- 0x1E020: 84,
- 0x1E021: 84,
- 0x1E023: 84,
- 0x1E024: 84,
- 0x1E026: 84,
- 0x1E027: 84,
- 0x1E028: 84,
- 0x1E029: 84,
- 0x1E02A: 84,
- 0x1E08F: 84,
- 0x1E130: 84,
- 0x1E131: 84,
- 0x1E132: 84,
- 0x1E133: 84,
- 0x1E134: 84,
- 0x1E135: 84,
- 0x1E136: 84,
- 0x1E2AE: 84,
- 0x1E2EC: 84,
- 0x1E2ED: 84,
- 0x1E2EE: 84,
- 0x1E2EF: 84,
- 0x1E4EC: 84,
- 0x1E4ED: 84,
- 0x1E4EE: 84,
- 0x1E4EF: 84,
- 0x1E5EE: 84,
- 0x1E5EF: 84,
- 0x1E6E3: 84,
- 0x1E6E6: 84,
- 0x1E6EE: 84,
- 0x1E6EF: 84,
- 0x1E6F5: 84,
- 0x1E8D0: 84,
- 0x1E8D1: 84,
- 0x1E8D2: 84,
- 0x1E8D3: 84,
- 0x1E8D4: 84,
- 0x1E8D5: 84,
- 0x1E8D6: 84,
- 0x1E900: 68,
- 0x1E901: 68,
- 0x1E902: 68,
- 0x1E903: 68,
- 0x1E904: 68,
- 0x1E905: 68,
- 0x1E906: 68,
- 0x1E907: 68,
- 0x1E908: 68,
- 0x1E909: 68,
- 0x1E90A: 68,
- 0x1E90B: 68,
- 0x1E90C: 68,
- 0x1E90D: 68,
- 0x1E90E: 68,
- 0x1E90F: 68,
- 0x1E910: 68,
- 0x1E911: 68,
- 0x1E912: 68,
- 0x1E913: 68,
- 0x1E914: 68,
- 0x1E915: 68,
- 0x1E916: 68,
- 0x1E917: 68,
- 0x1E918: 68,
- 0x1E919: 68,
- 0x1E91A: 68,
- 0x1E91B: 68,
- 0x1E91C: 68,
- 0x1E91D: 68,
- 0x1E91E: 68,
- 0x1E91F: 68,
- 0x1E920: 68,
- 0x1E921: 68,
- 0x1E922: 68,
- 0x1E923: 68,
- 0x1E924: 68,
- 0x1E925: 68,
- 0x1E926: 68,
- 0x1E927: 68,
- 0x1E928: 68,
- 0x1E929: 68,
- 0x1E92A: 68,
- 0x1E92B: 68,
- 0x1E92C: 68,
- 0x1E92D: 68,
- 0x1E92E: 68,
- 0x1E92F: 68,
- 0x1E930: 68,
- 0x1E931: 68,
- 0x1E932: 68,
- 0x1E933: 68,
- 0x1E934: 68,
- 0x1E935: 68,
- 0x1E936: 68,
- 0x1E937: 68,
- 0x1E938: 68,
- 0x1E939: 68,
- 0x1E93A: 68,
- 0x1E93B: 68,
- 0x1E93C: 68,
- 0x1E93D: 68,
- 0x1E93E: 68,
- 0x1E93F: 68,
- 0x1E940: 68,
- 0x1E941: 68,
- 0x1E942: 68,
- 0x1E943: 68,
- 0x1E944: 84,
- 0x1E945: 84,
- 0x1E946: 84,
- 0x1E947: 84,
- 0x1E948: 84,
- 0x1E949: 84,
- 0x1E94A: 84,
- 0x1E94B: 84,
- 0xE0001: 84,
- 0xE0020: 84,
- 0xE0021: 84,
- 0xE0022: 84,
- 0xE0023: 84,
- 0xE0024: 84,
- 0xE0025: 84,
- 0xE0026: 84,
- 0xE0027: 84,
- 0xE0028: 84,
- 0xE0029: 84,
- 0xE002A: 84,
- 0xE002B: 84,
- 0xE002C: 84,
- 0xE002D: 84,
- 0xE002E: 84,
- 0xE002F: 84,
- 0xE0030: 84,
- 0xE0031: 84,
- 0xE0032: 84,
- 0xE0033: 84,
- 0xE0034: 84,
- 0xE0035: 84,
- 0xE0036: 84,
- 0xE0037: 84,
- 0xE0038: 84,
- 0xE0039: 84,
- 0xE003A: 84,
- 0xE003B: 84,
- 0xE003C: 84,
- 0xE003D: 84,
- 0xE003E: 84,
- 0xE003F: 84,
- 0xE0040: 84,
- 0xE0041: 84,
- 0xE0042: 84,
- 0xE0043: 84,
- 0xE0044: 84,
- 0xE0045: 84,
- 0xE0046: 84,
- 0xE0047: 84,
- 0xE0048: 84,
- 0xE0049: 84,
- 0xE004A: 84,
- 0xE004B: 84,
- 0xE004C: 84,
- 0xE004D: 84,
- 0xE004E: 84,
- 0xE004F: 84,
- 0xE0050: 84,
- 0xE0051: 84,
- 0xE0052: 84,
- 0xE0053: 84,
- 0xE0054: 84,
- 0xE0055: 84,
- 0xE0056: 84,
- 0xE0057: 84,
- 0xE0058: 84,
- 0xE0059: 84,
- 0xE005A: 84,
- 0xE005B: 84,
- 0xE005C: 84,
- 0xE005D: 84,
- 0xE005E: 84,
- 0xE005F: 84,
- 0xE0060: 84,
- 0xE0061: 84,
- 0xE0062: 84,
- 0xE0063: 84,
- 0xE0064: 84,
- 0xE0065: 84,
- 0xE0066: 84,
- 0xE0067: 84,
- 0xE0068: 84,
- 0xE0069: 84,
- 0xE006A: 84,
- 0xE006B: 84,
- 0xE006C: 84,
- 0xE006D: 84,
- 0xE006E: 84,
- 0xE006F: 84,
- 0xE0070: 84,
- 0xE0071: 84,
- 0xE0072: 84,
- 0xE0073: 84,
- 0xE0074: 84,
- 0xE0075: 84,
- 0xE0076: 84,
- 0xE0077: 84,
- 0xE0078: 84,
- 0xE0079: 84,
- 0xE007A: 84,
- 0xE007B: 84,
- 0xE007C: 84,
- 0xE007D: 84,
- 0xE007E: 84,
- 0xE007F: 84,
- 0xE0100: 84,
- 0xE0101: 84,
- 0xE0102: 84,
- 0xE0103: 84,
- 0xE0104: 84,
- 0xE0105: 84,
- 0xE0106: 84,
- 0xE0107: 84,
- 0xE0108: 84,
- 0xE0109: 84,
- 0xE010A: 84,
- 0xE010B: 84,
- 0xE010C: 84,
- 0xE010D: 84,
- 0xE010E: 84,
- 0xE010F: 84,
- 0xE0110: 84,
- 0xE0111: 84,
- 0xE0112: 84,
- 0xE0113: 84,
- 0xE0114: 84,
- 0xE0115: 84,
- 0xE0116: 84,
- 0xE0117: 84,
- 0xE0118: 84,
- 0xE0119: 84,
- 0xE011A: 84,
- 0xE011B: 84,
- 0xE011C: 84,
- 0xE011D: 84,
- 0xE011E: 84,
- 0xE011F: 84,
- 0xE0120: 84,
- 0xE0121: 84,
- 0xE0122: 84,
- 0xE0123: 84,
- 0xE0124: 84,
- 0xE0125: 84,
- 0xE0126: 84,
- 0xE0127: 84,
- 0xE0128: 84,
- 0xE0129: 84,
- 0xE012A: 84,
- 0xE012B: 84,
- 0xE012C: 84,
- 0xE012D: 84,
- 0xE012E: 84,
- 0xE012F: 84,
- 0xE0130: 84,
- 0xE0131: 84,
- 0xE0132: 84,
- 0xE0133: 84,
- 0xE0134: 84,
- 0xE0135: 84,
- 0xE0136: 84,
- 0xE0137: 84,
- 0xE0138: 84,
- 0xE0139: 84,
- 0xE013A: 84,
- 0xE013B: 84,
- 0xE013C: 84,
- 0xE013D: 84,
- 0xE013E: 84,
- 0xE013F: 84,
- 0xE0140: 84,
- 0xE0141: 84,
- 0xE0142: 84,
- 0xE0143: 84,
- 0xE0144: 84,
- 0xE0145: 84,
- 0xE0146: 84,
- 0xE0147: 84,
- 0xE0148: 84,
- 0xE0149: 84,
- 0xE014A: 84,
- 0xE014B: 84,
- 0xE014C: 84,
- 0xE014D: 84,
- 0xE014E: 84,
- 0xE014F: 84,
- 0xE0150: 84,
- 0xE0151: 84,
- 0xE0152: 84,
- 0xE0153: 84,
- 0xE0154: 84,
- 0xE0155: 84,
- 0xE0156: 84,
- 0xE0157: 84,
- 0xE0158: 84,
- 0xE0159: 84,
- 0xE015A: 84,
- 0xE015B: 84,
- 0xE015C: 84,
- 0xE015D: 84,
- 0xE015E: 84,
- 0xE015F: 84,
- 0xE0160: 84,
- 0xE0161: 84,
- 0xE0162: 84,
- 0xE0163: 84,
- 0xE0164: 84,
- 0xE0165: 84,
- 0xE0166: 84,
- 0xE0167: 84,
- 0xE0168: 84,
- 0xE0169: 84,
- 0xE016A: 84,
- 0xE016B: 84,
- 0xE016C: 84,
- 0xE016D: 84,
- 0xE016E: 84,
- 0xE016F: 84,
- 0xE0170: 84,
- 0xE0171: 84,
- 0xE0172: 84,
- 0xE0173: 84,
- 0xE0174: 84,
- 0xE0175: 84,
- 0xE0176: 84,
- 0xE0177: 84,
- 0xE0178: 84,
- 0xE0179: 84,
- 0xE017A: 84,
- 0xE017B: 84,
- 0xE017C: 84,
- 0xE017D: 84,
- 0xE017E: 84,
- 0xE017F: 84,
- 0xE0180: 84,
- 0xE0181: 84,
- 0xE0182: 84,
- 0xE0183: 84,
- 0xE0184: 84,
- 0xE0185: 84,
- 0xE0186: 84,
- 0xE0187: 84,
- 0xE0188: 84,
- 0xE0189: 84,
- 0xE018A: 84,
- 0xE018B: 84,
- 0xE018C: 84,
- 0xE018D: 84,
- 0xE018E: 84,
- 0xE018F: 84,
- 0xE0190: 84,
- 0xE0191: 84,
- 0xE0192: 84,
- 0xE0193: 84,
- 0xE0194: 84,
- 0xE0195: 84,
- 0xE0196: 84,
- 0xE0197: 84,
- 0xE0198: 84,
- 0xE0199: 84,
- 0xE019A: 84,
- 0xE019B: 84,
- 0xE019C: 84,
- 0xE019D: 84,
- 0xE019E: 84,
- 0xE019F: 84,
- 0xE01A0: 84,
- 0xE01A1: 84,
- 0xE01A2: 84,
- 0xE01A3: 84,
- 0xE01A4: 84,
- 0xE01A5: 84,
- 0xE01A6: 84,
- 0xE01A7: 84,
- 0xE01A8: 84,
- 0xE01A9: 84,
- 0xE01AA: 84,
- 0xE01AB: 84,
- 0xE01AC: 84,
- 0xE01AD: 84,
- 0xE01AE: 84,
- 0xE01AF: 84,
- 0xE01B0: 84,
- 0xE01B1: 84,
- 0xE01B2: 84,
- 0xE01B3: 84,
- 0xE01B4: 84,
- 0xE01B5: 84,
- 0xE01B6: 84,
- 0xE01B7: 84,
- 0xE01B8: 84,
- 0xE01B9: 84,
- 0xE01BA: 84,
- 0xE01BB: 84,
- 0xE01BC: 84,
- 0xE01BD: 84,
- 0xE01BE: 84,
- 0xE01BF: 84,
- 0xE01C0: 84,
- 0xE01C1: 84,
- 0xE01C2: 84,
- 0xE01C3: 84,
- 0xE01C4: 84,
- 0xE01C5: 84,
- 0xE01C6: 84,
- 0xE01C7: 84,
- 0xE01C8: 84,
- 0xE01C9: 84,
- 0xE01CA: 84,
- 0xE01CB: 84,
- 0xE01CC: 84,
- 0xE01CD: 84,
- 0xE01CE: 84,
- 0xE01CF: 84,
- 0xE01D0: 84,
- 0xE01D1: 84,
- 0xE01D2: 84,
- 0xE01D3: 84,
- 0xE01D4: 84,
- 0xE01D5: 84,
- 0xE01D6: 84,
- 0xE01D7: 84,
- 0xE01D8: 84,
- 0xE01D9: 84,
- 0xE01DA: 84,
- 0xE01DB: 84,
- 0xE01DC: 84,
- 0xE01DD: 84,
- 0xE01DE: 84,
- 0xE01DF: 84,
- 0xE01E0: 84,
- 0xE01E1: 84,
- 0xE01E2: 84,
- 0xE01E3: 84,
- 0xE01E4: 84,
- 0xE01E5: 84,
- 0xE01E6: 84,
- 0xE01E7: 84,
- 0xE01E8: 84,
- 0xE01E9: 84,
- 0xE01EA: 84,
- 0xE01EB: 84,
- 0xE01EC: 84,
- 0xE01ED: 84,
- 0xE01EE: 84,
- 0xE01EF: 84,
- }
+joining_types = {
+ "C": (
+ 0x64000000641,
+ 0x7FA000007FB,
+ 0x88300000886,
+ 0x180A0000180B,
+ 0x200D0000200E,
+ ),
+ "D": (
+ 0x62000000621,
+ 0x62600000627,
+ 0x62800000629,
+ 0x62A0000062F,
+ 0x63300000640,
+ 0x64100000648,
+ 0x6490000064B,
+ 0x66E00000670,
+ 0x67800000688,
+ 0x69A000006C0,
+ 0x6C1000006C3,
+ 0x6CC000006CD,
+ 0x6CE000006CF,
+ 0x6D0000006D2,
+ 0x6FA000006FD,
+ 0x6FF00000700,
+ 0x71200000715,
+ 0x71A0000071E,
+ 0x71F00000728,
+ 0x7290000072A,
+ 0x72B0000072C,
+ 0x72D0000072F,
+ 0x74E00000759,
+ 0x75C0000076B,
+ 0x76D00000771,
+ 0x77200000773,
+ 0x77500000778,
+ 0x77A00000780,
+ 0x7CA000007EB,
+ 0x84100000846,
+ 0x84800000849,
+ 0x84A00000854,
+ 0x85500000856,
+ 0x86000000861,
+ 0x86200000866,
+ 0x86800000869,
+ 0x88600000887,
+ 0x8890000088E,
+ 0x88F00000890,
+ 0x8A0000008AA,
+ 0x8AF000008B1,
+ 0x8B3000008B9,
+ 0x8BA000008C9,
+ 0x180700001808,
+ 0x182000001879,
+ 0x1887000018A9,
+ 0x18AA000018AB,
+ 0xA8400000A872,
+ 0x10AC000010AC5,
+ 0x10AD300010AD7,
+ 0x10AD800010ADD,
+ 0x10ADE00010AE1,
+ 0x10AEB00010AEF,
+ 0x10B8000010B81,
+ 0x10B8200010B83,
+ 0x10B8600010B89,
+ 0x10B8A00010B8C,
+ 0x10B8D00010B8E,
+ 0x10B9000010B91,
+ 0x10BAD00010BAF,
+ 0x10D0100010D22,
+ 0x10D2300010D24,
+ 0x10EC300010EC5,
+ 0x10EC600010EC8,
+ 0x10F3000010F33,
+ 0x10F3400010F45,
+ 0x10F5100010F54,
+ 0x10F7000010F74,
+ 0x10F7600010F82,
+ 0x10FB000010FB1,
+ 0x10FB200010FB4,
+ 0x10FB800010FB9,
+ 0x10FBB00010FBD,
+ 0x10FBE00010FC0,
+ 0x10FC100010FC2,
+ 0x10FC400010FC5,
+ 0x10FCA00010FCB,
+ 0x1E9000001E944,
+ ),
+ "L": (
+ 0xA8720000A873,
+ 0x10ACD00010ACE,
+ 0x10AD700010AD8,
+ 0x10D0000010D01,
+ 0x10FCB00010FCC,
+ ),
+ "R": (
+ 0x62200000626,
+ 0x62700000628,
+ 0x6290000062A,
+ 0x62F00000633,
+ 0x64800000649,
+ 0x67100000674,
+ 0x67500000678,
+ 0x6880000069A,
+ 0x6C0000006C1,
+ 0x6C3000006CC,
+ 0x6CD000006CE,
+ 0x6CF000006D0,
+ 0x6D2000006D4,
+ 0x6D5000006D6,
+ 0x6EE000006F0,
+ 0x71000000711,
+ 0x7150000071A,
+ 0x71E0000071F,
+ 0x72800000729,
+ 0x72A0000072B,
+ 0x72C0000072D,
+ 0x72F00000730,
+ 0x74D0000074E,
+ 0x7590000075C,
+ 0x76B0000076D,
+ 0x77100000772,
+ 0x77300000775,
+ 0x7780000077A,
+ 0x84000000841,
+ 0x84600000848,
+ 0x8490000084A,
+ 0x85400000855,
+ 0x85600000859,
+ 0x86700000868,
+ 0x8690000086B,
+ 0x87000000883,
+ 0x88E0000088F,
+ 0x8AA000008AD,
+ 0x8AE000008AF,
+ 0x8B1000008B3,
+ 0x8B9000008BA,
+ 0x10AC500010AC6,
+ 0x10AC700010AC8,
+ 0x10AC900010ACB,
+ 0x10ACE00010AD3,
+ 0x10ADD00010ADE,
+ 0x10AE100010AE2,
+ 0x10AE400010AE5,
+ 0x10AEF00010AF0,
+ 0x10B8100010B82,
+ 0x10B8300010B86,
+ 0x10B8900010B8A,
+ 0x10B8C00010B8D,
+ 0x10B8E00010B90,
+ 0x10B9100010B92,
+ 0x10BA900010BAD,
+ 0x10D2200010D23,
+ 0x10EC200010EC3,
+ 0x10F3300010F34,
+ 0x10F5400010F55,
+ 0x10F7400010F76,
+ 0x10FB400010FB7,
+ 0x10FB900010FBB,
+ 0x10FBD00010FBE,
+ 0x10FC200010FC4,
+ 0x10FC900010FCA,
+ ),
+ "T": (
+ 0xAD000000AE,
+ 0x30000000370,
+ 0x4830000048A,
+ 0x591000005BE,
+ 0x5BF000005C0,
+ 0x5C1000005C3,
+ 0x5C4000005C6,
+ 0x5C7000005C8,
+ 0x6100000061B,
+ 0x61C0000061D,
+ 0x64B00000660,
+ 0x67000000671,
+ 0x6D6000006DD,
+ 0x6DF000006E5,
+ 0x6E7000006E9,
+ 0x6EA000006EE,
+ 0x70F00000710,
+ 0x71100000712,
+ 0x7300000074B,
+ 0x7A6000007B1,
+ 0x7EB000007F4,
+ 0x7FD000007FE,
+ 0x8160000081A,
+ 0x81B00000824,
+ 0x82500000828,
+ 0x8290000082E,
+ 0x8590000085C,
+ 0x897000008A0,
+ 0x8CA000008E2,
+ 0x8E300000903,
+ 0x93A0000093B,
+ 0x93C0000093D,
+ 0x94100000949,
+ 0x94D0000094E,
+ 0x95100000958,
+ 0x96200000964,
+ 0x98100000982,
+ 0x9BC000009BD,
+ 0x9C1000009C5,
+ 0x9CD000009CE,
+ 0x9E2000009E4,
+ 0x9FE000009FF,
+ 0xA0100000A03,
+ 0xA3C00000A3D,
+ 0xA4100000A43,
+ 0xA4700000A49,
+ 0xA4B00000A4E,
+ 0xA5100000A52,
+ 0xA7000000A72,
+ 0xA7500000A76,
+ 0xA8100000A83,
+ 0xABC00000ABD,
+ 0xAC100000AC6,
+ 0xAC700000AC9,
+ 0xACD00000ACE,
+ 0xAE200000AE4,
+ 0xAFA00000B00,
+ 0xB0100000B02,
+ 0xB3C00000B3D,
+ 0xB3F00000B40,
+ 0xB4100000B45,
+ 0xB4D00000B4E,
+ 0xB5500000B57,
+ 0xB6200000B64,
+ 0xB8200000B83,
+ 0xBC000000BC1,
+ 0xBCD00000BCE,
+ 0xC0000000C01,
+ 0xC0400000C05,
+ 0xC3C00000C3D,
+ 0xC3E00000C41,
+ 0xC4600000C49,
+ 0xC4A00000C4E,
+ 0xC5500000C57,
+ 0xC6200000C64,
+ 0xC8100000C82,
+ 0xCBC00000CBD,
+ 0xCBF00000CC0,
+ 0xCC600000CC7,
+ 0xCCC00000CCE,
+ 0xCE200000CE4,
+ 0xD0000000D02,
+ 0xD3B00000D3D,
+ 0xD4100000D45,
+ 0xD4D00000D4E,
+ 0xD6200000D64,
+ 0xD8100000D82,
+ 0xDCA00000DCB,
+ 0xDD200000DD5,
+ 0xDD600000DD7,
+ 0xE3100000E32,
+ 0xE3400000E3B,
+ 0xE4700000E4F,
+ 0xEB100000EB2,
+ 0xEB400000EBD,
+ 0xEC800000ECF,
+ 0xF1800000F1A,
+ 0xF3500000F36,
+ 0xF3700000F38,
+ 0xF3900000F3A,
+ 0xF7100000F7F,
+ 0xF8000000F85,
+ 0xF8600000F88,
+ 0xF8D00000F98,
+ 0xF9900000FBD,
+ 0xFC600000FC7,
+ 0x102D00001031,
+ 0x103200001038,
+ 0x10390000103B,
+ 0x103D0000103F,
+ 0x10580000105A,
+ 0x105E00001061,
+ 0x107100001075,
+ 0x108200001083,
+ 0x108500001087,
+ 0x108D0000108E,
+ 0x109D0000109E,
+ 0x135D00001360,
+ 0x171200001715,
+ 0x173200001734,
+ 0x175200001754,
+ 0x177200001774,
+ 0x17B4000017B6,
+ 0x17B7000017BE,
+ 0x17C6000017C7,
+ 0x17C9000017D4,
+ 0x17DD000017DE,
+ 0x180B0000180E,
+ 0x180F00001810,
+ 0x188500001887,
+ 0x18A9000018AA,
+ 0x192000001923,
+ 0x192700001929,
+ 0x193200001933,
+ 0x19390000193C,
+ 0x1A1700001A19,
+ 0x1A1B00001A1C,
+ 0x1A5600001A57,
+ 0x1A5800001A5F,
+ 0x1A6000001A61,
+ 0x1A6200001A63,
+ 0x1A6500001A6D,
+ 0x1A7300001A7D,
+ 0x1A7F00001A80,
+ 0x1AB000001ADE,
+ 0x1AE000001AEC,
+ 0x1B0000001B04,
+ 0x1B3400001B35,
+ 0x1B3600001B3B,
+ 0x1B3C00001B3D,
+ 0x1B4200001B43,
+ 0x1B6B00001B74,
+ 0x1B8000001B82,
+ 0x1BA200001BA6,
+ 0x1BA800001BAA,
+ 0x1BAB00001BAE,
+ 0x1BE600001BE7,
+ 0x1BE800001BEA,
+ 0x1BED00001BEE,
+ 0x1BEF00001BF2,
+ 0x1C2C00001C34,
+ 0x1C3600001C38,
+ 0x1CD000001CD3,
+ 0x1CD400001CE1,
+ 0x1CE200001CE9,
+ 0x1CED00001CEE,
+ 0x1CF400001CF5,
+ 0x1CF800001CFA,
+ 0x1DC000001E00,
+ 0x200B0000200C,
+ 0x200E00002010,
+ 0x202A0000202F,
+ 0x206000002065,
+ 0x206A00002070,
+ 0x20D0000020F1,
+ 0x2CEF00002CF2,
+ 0x2D7F00002D80,
+ 0x2DE000002E00,
+ 0x302A0000302E,
+ 0x30990000309B,
+ 0xA66F0000A673,
+ 0xA6740000A67E,
+ 0xA69E0000A6A0,
+ 0xA6F00000A6F2,
+ 0xA8020000A803,
+ 0xA8060000A807,
+ 0xA80B0000A80C,
+ 0xA8250000A827,
+ 0xA82C0000A82D,
+ 0xA8C40000A8C6,
+ 0xA8E00000A8F2,
+ 0xA8FF0000A900,
+ 0xA9260000A92E,
+ 0xA9470000A952,
+ 0xA9800000A983,
+ 0xA9B30000A9B4,
+ 0xA9B60000A9BA,
+ 0xA9BC0000A9BE,
+ 0xA9E50000A9E6,
+ 0xAA290000AA2F,
+ 0xAA310000AA33,
+ 0xAA350000AA37,
+ 0xAA430000AA44,
+ 0xAA4C0000AA4D,
+ 0xAA7C0000AA7D,
+ 0xAAB00000AAB1,
+ 0xAAB20000AAB5,
+ 0xAAB70000AAB9,
+ 0xAABE0000AAC0,
+ 0xAAC10000AAC2,
+ 0xAAEC0000AAEE,
+ 0xAAF60000AAF7,
+ 0xABE50000ABE6,
+ 0xABE80000ABE9,
+ 0xABED0000ABEE,
+ 0xFB1E0000FB1F,
+ 0xFE000000FE10,
+ 0xFE200000FE30,
+ 0xFEFF0000FF00,
+ 0xFFF90000FFFC,
+ 0x101FD000101FE,
+ 0x102E0000102E1,
+ 0x103760001037B,
+ 0x10A0100010A04,
+ 0x10A0500010A07,
+ 0x10A0C00010A10,
+ 0x10A3800010A3B,
+ 0x10A3F00010A40,
+ 0x10AE500010AE7,
+ 0x10D2400010D28,
+ 0x10D6900010D6E,
+ 0x10EAB00010EAD,
+ 0x10EFA00010F00,
+ 0x10F4600010F51,
+ 0x10F8200010F86,
+ 0x1100100011002,
+ 0x1103800011047,
+ 0x1107000011071,
+ 0x1107300011075,
+ 0x1107F00011082,
+ 0x110B3000110B7,
+ 0x110B9000110BB,
+ 0x110C2000110C3,
+ 0x1110000011103,
+ 0x111270001112C,
+ 0x1112D00011135,
+ 0x1117300011174,
+ 0x1118000011182,
+ 0x111B6000111BF,
+ 0x111C9000111CD,
+ 0x111CF000111D0,
+ 0x1122F00011232,
+ 0x1123400011235,
+ 0x1123600011238,
+ 0x1123E0001123F,
+ 0x1124100011242,
+ 0x112DF000112E0,
+ 0x112E3000112EB,
+ 0x1130000011302,
+ 0x1133B0001133D,
+ 0x1134000011341,
+ 0x113660001136D,
+ 0x1137000011375,
+ 0x113BB000113C1,
+ 0x113CE000113CF,
+ 0x113D0000113D1,
+ 0x113D2000113D3,
+ 0x113E1000113E3,
+ 0x1143800011440,
+ 0x1144200011445,
+ 0x1144600011447,
+ 0x1145E0001145F,
+ 0x114B3000114B9,
+ 0x114BA000114BB,
+ 0x114BF000114C1,
+ 0x114C2000114C4,
+ 0x115B2000115B6,
+ 0x115BC000115BE,
+ 0x115BF000115C1,
+ 0x115DC000115DE,
+ 0x116330001163B,
+ 0x1163D0001163E,
+ 0x1163F00011641,
+ 0x116AB000116AC,
+ 0x116AD000116AE,
+ 0x116B0000116B6,
+ 0x116B7000116B8,
+ 0x1171D0001171E,
+ 0x1171F00011720,
+ 0x1172200011726,
+ 0x117270001172C,
+ 0x1182F00011838,
+ 0x118390001183B,
+ 0x1193B0001193D,
+ 0x1193E0001193F,
+ 0x1194300011944,
+ 0x119D4000119D8,
+ 0x119DA000119DC,
+ 0x119E0000119E1,
+ 0x11A0100011A0B,
+ 0x11A3300011A39,
+ 0x11A3B00011A3F,
+ 0x11A4700011A48,
+ 0x11A5100011A57,
+ 0x11A5900011A5C,
+ 0x11A8A00011A97,
+ 0x11A9800011A9A,
+ 0x11B6000011B61,
+ 0x11B6200011B65,
+ 0x11B6600011B67,
+ 0x11C3000011C37,
+ 0x11C3800011C3E,
+ 0x11C3F00011C40,
+ 0x11C9200011CA8,
+ 0x11CAA00011CB1,
+ 0x11CB200011CB4,
+ 0x11CB500011CB7,
+ 0x11D3100011D37,
+ 0x11D3A00011D3B,
+ 0x11D3C00011D3E,
+ 0x11D3F00011D46,
+ 0x11D4700011D48,
+ 0x11D9000011D92,
+ 0x11D9500011D96,
+ 0x11D9700011D98,
+ 0x11EF300011EF5,
+ 0x11F0000011F02,
+ 0x11F3600011F3B,
+ 0x11F4000011F41,
+ 0x11F4200011F43,
+ 0x11F5A00011F5B,
+ 0x1343000013441,
+ 0x1344700013456,
+ 0x1611E0001612A,
+ 0x1612D00016130,
+ 0x16AF000016AF5,
+ 0x16B3000016B37,
+ 0x16F4F00016F50,
+ 0x16F8F00016F93,
+ 0x16FE400016FE5,
+ 0x1BC9D0001BC9F,
+ 0x1BCA00001BCA4,
+ 0x1CF000001CF2E,
+ 0x1CF300001CF47,
+ 0x1D1670001D16A,
+ 0x1D1730001D183,
+ 0x1D1850001D18C,
+ 0x1D1AA0001D1AE,
+ 0x1D2420001D245,
+ 0x1DA000001DA37,
+ 0x1DA3B0001DA6D,
+ 0x1DA750001DA76,
+ 0x1DA840001DA85,
+ 0x1DA9B0001DAA0,
+ 0x1DAA10001DAB0,
+ 0x1E0000001E007,
+ 0x1E0080001E019,
+ 0x1E01B0001E022,
+ 0x1E0230001E025,
+ 0x1E0260001E02B,
+ 0x1E08F0001E090,
+ 0x1E1300001E137,
+ 0x1E2AE0001E2AF,
+ 0x1E2EC0001E2F0,
+ 0x1E4EC0001E4F0,
+ 0x1E5EE0001E5F0,
+ 0x1E6E30001E6E4,
+ 0x1E6E60001E6E7,
+ 0x1E6EE0001E6F0,
+ 0x1E6F50001E6F6,
+ 0x1E8D00001E8D7,
+ 0x1E9440001E94C,
+ 0xE0001000E0002,
+ 0xE0020000E0080,
+ 0xE0100000E01F0,
+ ),
+}
codepoint_classes = {
diff --git a/contrib/python/idna/py3/idna/package_data.py b/contrib/python/idna/py3/idna/package_data.py
index 560eb22d4d0..94e40398cda 100644
--- a/contrib/python/idna/py3/idna/package_data.py
+++ b/contrib/python/idna/py3/idna/package_data.py
@@ -1 +1 @@
-__version__ = "3.16"
+__version__ = "3.18"
diff --git a/contrib/python/idna/py3/idna/uts46data.py b/contrib/python/idna/py3/idna/uts46data.py
index f728fd96967..f2d931fe5d2 100644
--- a/contrib/python/idna/py3/idna/uts46data.py
+++ b/contrib/python/idna/py3/idna/uts46data.py
@@ -1,8383 +1,16896 @@
# This file is automatically generated by tools/idna-data
-from typing import Union
+from array import array
+from typing import Optional
"""IDNA Mapping Table from UTS46."""
__version__ = "17.0.0"
-uts46data: tuple[Union[tuple[int, str], tuple[int, str, str]], ...] = (
- (0x0, "V"),
- (0x1, "V"),
- (0x2, "V"),
- (0x3, "V"),
- (0x4, "V"),
- (0x5, "V"),
- (0x6, "V"),
- (0x7, "V"),
- (0x8, "V"),
- (0x9, "V"),
- (0xA, "V"),
- (0xB, "V"),
- (0xC, "V"),
- (0xD, "V"),
- (0xE, "V"),
- (0xF, "V"),
- (0x10, "V"),
- (0x11, "V"),
- (0x12, "V"),
- (0x13, "V"),
- (0x14, "V"),
- (0x15, "V"),
- (0x16, "V"),
- (0x17, "V"),
- (0x18, "V"),
- (0x19, "V"),
- (0x1A, "V"),
- (0x1B, "V"),
- (0x1C, "V"),
- (0x1D, "V"),
- (0x1E, "V"),
- (0x1F, "V"),
- (0x20, "V"),
- (0x21, "V"),
- (0x22, "V"),
- (0x23, "V"),
- (0x24, "V"),
- (0x25, "V"),
- (0x26, "V"),
- (0x27, "V"),
- (0x28, "V"),
- (0x29, "V"),
- (0x2A, "V"),
- (0x2B, "V"),
- (0x2C, "V"),
- (0x2D, "V"),
- (0x2E, "V"),
- (0x2F, "V"),
- (0x30, "V"),
- (0x31, "V"),
- (0x32, "V"),
- (0x33, "V"),
- (0x34, "V"),
- (0x35, "V"),
- (0x36, "V"),
- (0x37, "V"),
- (0x38, "V"),
- (0x39, "V"),
- (0x3A, "V"),
- (0x3B, "V"),
- (0x3C, "V"),
- (0x3D, "V"),
- (0x3E, "V"),
- (0x3F, "V"),
- (0x40, "V"),
- (0x41, "M", "a"),
- (0x42, "M", "b"),
- (0x43, "M", "c"),
- (0x44, "M", "d"),
- (0x45, "M", "e"),
- (0x46, "M", "f"),
- (0x47, "M", "g"),
- (0x48, "M", "h"),
- (0x49, "M", "i"),
- (0x4A, "M", "j"),
- (0x4B, "M", "k"),
- (0x4C, "M", "l"),
- (0x4D, "M", "m"),
- (0x4E, "M", "n"),
- (0x4F, "M", "o"),
- (0x50, "M", "p"),
- (0x51, "M", "q"),
- (0x52, "M", "r"),
- (0x53, "M", "s"),
- (0x54, "M", "t"),
- (0x55, "M", "u"),
- (0x56, "M", "v"),
- (0x57, "M", "w"),
- (0x58, "M", "x"),
- (0x59, "M", "y"),
- (0x5A, "M", "z"),
- (0x5B, "V"),
- (0x5C, "V"),
- (0x5D, "V"),
- (0x5E, "V"),
- (0x5F, "V"),
- (0x60, "V"),
- (0x61, "V"),
- (0x62, "V"),
- (0x63, "V"),
- (0x64, "V"),
- (0x65, "V"),
- (0x66, "V"),
- (0x67, "V"),
- (0x68, "V"),
- (0x69, "V"),
- (0x6A, "V"),
- (0x6B, "V"),
- (0x6C, "V"),
- (0x6D, "V"),
- (0x6E, "V"),
- (0x6F, "V"),
- (0x70, "V"),
- (0x71, "V"),
- (0x72, "V"),
- (0x73, "V"),
- (0x74, "V"),
- (0x75, "V"),
- (0x76, "V"),
- (0x77, "V"),
- (0x78, "V"),
- (0x79, "V"),
- (0x7A, "V"),
- (0x7B, "V"),
- (0x7C, "V"),
- (0x7D, "V"),
- (0x7E, "V"),
- (0x7F, "V"),
- (0x80, "X"),
- (0x81, "X"),
- (0x82, "X"),
- (0x83, "X"),
- (0x84, "X"),
- (0x85, "X"),
- (0x86, "X"),
- (0x87, "X"),
- (0x88, "X"),
- (0x89, "X"),
- (0x8A, "X"),
- (0x8B, "X"),
- (0x8C, "X"),
- (0x8D, "X"),
- (0x8E, "X"),
- (0x8F, "X"),
- (0x90, "X"),
- (0x91, "X"),
- (0x92, "X"),
- (0x93, "X"),
- (0x94, "X"),
- (0x95, "X"),
- (0x96, "X"),
- (0x97, "X"),
- (0x98, "X"),
- (0x99, "X"),
- (0x9A, "X"),
- (0x9B, "X"),
- (0x9C, "X"),
- (0x9D, "X"),
- (0x9E, "X"),
- (0x9F, "X"),
- (0xA0, "M", " "),
- (0xA1, "V"),
- (0xA2, "V"),
- (0xA3, "V"),
- (0xA4, "V"),
- (0xA5, "V"),
- (0xA6, "V"),
- (0xA7, "V"),
- (0xA8, "M", " ̈"),
- (0xA9, "V"),
- (0xAA, "M", "a"),
- (0xAB, "V"),
- (0xAC, "V"),
- (0xAD, "I"),
- (0xAE, "V"),
- (0xAF, "M", " ̄"),
- (0xB0, "V"),
- (0xB1, "V"),
- (0xB2, "M", "2"),
- (0xB3, "M", "3"),
- (0xB4, "M", " ́"),
- (0xB5, "M", "μ"),
- (0xB6, "V"),
- (0xB7, "V"),
- (0xB8, "M", " ̧"),
- (0xB9, "M", "1"),
- (0xBA, "M", "o"),
- (0xBB, "V"),
- (0xBC, "M", "1⁄4"),
- (0xBD, "M", "1⁄2"),
- (0xBE, "M", "3⁄4"),
- (0xBF, "V"),
- (0xC0, "M", "à"),
- (0xC1, "M", "á"),
- (0xC2, "M", "â"),
- (0xC3, "M", "ã"),
- (0xC4, "M", "ä"),
- (0xC5, "M", "å"),
- (0xC6, "M", "æ"),
- (0xC7, "M", "ç"),
- (0xC8, "M", "è"),
- (0xC9, "M", "é"),
- (0xCA, "M", "ê"),
- (0xCB, "M", "ë"),
- (0xCC, "M", "ì"),
- (0xCD, "M", "í"),
- (0xCE, "M", "î"),
- (0xCF, "M", "ï"),
- (0xD0, "M", "ð"),
- (0xD1, "M", "ñ"),
- (0xD2, "M", "ò"),
- (0xD3, "M", "ó"),
- (0xD4, "M", "ô"),
- (0xD5, "M", "õ"),
- (0xD6, "M", "ö"),
- (0xD7, "V"),
- (0xD8, "M", "ø"),
- (0xD9, "M", "ù"),
- (0xDA, "M", "ú"),
- (0xDB, "M", "û"),
- (0xDC, "M", "ü"),
- (0xDD, "M", "ý"),
- (0xDE, "M", "þ"),
- (0xDF, "D", "ss"),
- (0xE0, "V"),
- (0xE1, "V"),
- (0xE2, "V"),
- (0xE3, "V"),
- (0xE4, "V"),
- (0xE5, "V"),
- (0xE6, "V"),
- (0xE7, "V"),
- (0xE8, "V"),
- (0xE9, "V"),
- (0xEA, "V"),
- (0xEB, "V"),
- (0xEC, "V"),
- (0xED, "V"),
- (0xEE, "V"),
- (0xEF, "V"),
- (0xF0, "V"),
- (0xF1, "V"),
- (0xF2, "V"),
- (0xF3, "V"),
- (0xF4, "V"),
- (0xF5, "V"),
- (0xF6, "V"),
- (0xF7, "V"),
- (0xF8, "V"),
- (0xF9, "V"),
- (0xFA, "V"),
- (0xFB, "V"),
- (0xFC, "V"),
- (0xFD, "V"),
- (0xFE, "V"),
- (0xFF, "V"),
- (0x100, "M", "ā"),
- (0x101, "V"),
- (0x102, "M", "ă"),
- (0x103, "V"),
- (0x104, "M", "ą"),
- (0x105, "V"),
- (0x106, "M", "ć"),
- (0x107, "V"),
- (0x108, "M", "ĉ"),
- (0x109, "V"),
- (0x10A, "M", "ċ"),
- (0x10B, "V"),
- (0x10C, "M", "č"),
- (0x10D, "V"),
- (0x10E, "M", "ď"),
- (0x10F, "V"),
- (0x110, "M", "đ"),
- (0x111, "V"),
- (0x112, "M", "ē"),
- (0x113, "V"),
- (0x114, "M", "ĕ"),
- (0x115, "V"),
- (0x116, "M", "ė"),
- (0x117, "V"),
- (0x118, "M", "ę"),
- (0x119, "V"),
- (0x11A, "M", "ě"),
- (0x11B, "V"),
- (0x11C, "M", "ĝ"),
- (0x11D, "V"),
- (0x11E, "M", "ğ"),
- (0x11F, "V"),
- (0x120, "M", "ġ"),
- (0x121, "V"),
- (0x122, "M", "ģ"),
- (0x123, "V"),
- (0x124, "M", "ĥ"),
- (0x125, "V"),
- (0x126, "M", "ħ"),
- (0x127, "V"),
- (0x128, "M", "ĩ"),
- (0x129, "V"),
- (0x12A, "M", "ī"),
- (0x12B, "V"),
- (0x12C, "M", "ĭ"),
- (0x12D, "V"),
- (0x12E, "M", "į"),
- (0x12F, "V"),
- (0x130, "M", "i̇"),
- (0x131, "V"),
- (0x132, "M", "ij"),
- (0x134, "M", "ĵ"),
- (0x135, "V"),
- (0x136, "M", "ķ"),
- (0x137, "V"),
- (0x139, "M", "ĺ"),
- (0x13A, "V"),
- (0x13B, "M", "ļ"),
- (0x13C, "V"),
- (0x13D, "M", "ľ"),
- (0x13E, "V"),
- (0x13F, "M", "l·"),
- (0x141, "M", "ł"),
- (0x142, "V"),
- (0x143, "M", "ń"),
- (0x144, "V"),
- (0x145, "M", "ņ"),
- (0x146, "V"),
- (0x147, "M", "ň"),
- (0x148, "V"),
- (0x149, "M", "ʼn"),
- (0x14A, "M", "ŋ"),
- (0x14B, "V"),
- (0x14C, "M", "ō"),
- (0x14D, "V"),
- (0x14E, "M", "ŏ"),
- (0x14F, "V"),
- (0x150, "M", "ő"),
- (0x151, "V"),
- (0x152, "M", "œ"),
- (0x153, "V"),
- (0x154, "M", "ŕ"),
- (0x155, "V"),
- (0x156, "M", "ŗ"),
- (0x157, "V"),
- (0x158, "M", "ř"),
- (0x159, "V"),
- (0x15A, "M", "ś"),
- (0x15B, "V"),
- (0x15C, "M", "ŝ"),
- (0x15D, "V"),
- (0x15E, "M", "ş"),
- (0x15F, "V"),
- (0x160, "M", "š"),
- (0x161, "V"),
- (0x162, "M", "ţ"),
- (0x163, "V"),
- (0x164, "M", "ť"),
- (0x165, "V"),
- (0x166, "M", "ŧ"),
- (0x167, "V"),
- (0x168, "M", "ũ"),
- (0x169, "V"),
- (0x16A, "M", "ū"),
- (0x16B, "V"),
- (0x16C, "M", "ŭ"),
- (0x16D, "V"),
- (0x16E, "M", "ů"),
- (0x16F, "V"),
- (0x170, "M", "ű"),
- (0x171, "V"),
- (0x172, "M", "ų"),
- (0x173, "V"),
- (0x174, "M", "ŵ"),
- (0x175, "V"),
- (0x176, "M", "ŷ"),
- (0x177, "V"),
- (0x178, "M", "ÿ"),
- (0x179, "M", "ź"),
- (0x17A, "V"),
- (0x17B, "M", "ż"),
- (0x17C, "V"),
- (0x17D, "M", "ž"),
- (0x17E, "V"),
- (0x17F, "M", "s"),
- (0x180, "V"),
- (0x181, "M", "ɓ"),
- (0x182, "M", "ƃ"),
- (0x183, "V"),
- (0x184, "M", "ƅ"),
- (0x185, "V"),
- (0x186, "M", "ɔ"),
- (0x187, "M", "ƈ"),
- (0x188, "V"),
- (0x189, "M", "ɖ"),
- (0x18A, "M", "ɗ"),
- (0x18B, "M", "ƌ"),
- (0x18C, "V"),
- (0x18E, "M", "ǝ"),
- (0x18F, "M", "ə"),
- (0x190, "M", "ɛ"),
- (0x191, "M", "ƒ"),
- (0x192, "V"),
- (0x193, "M", "ɠ"),
- (0x194, "M", "ɣ"),
- (0x195, "V"),
- (0x196, "M", "ɩ"),
- (0x197, "M", "ɨ"),
- (0x198, "M", "ƙ"),
- (0x199, "V"),
- (0x19C, "M", "ɯ"),
- (0x19D, "M", "ɲ"),
- (0x19E, "V"),
- (0x19F, "M", "ɵ"),
- (0x1A0, "M", "ơ"),
- (0x1A1, "V"),
- (0x1A2, "M", "ƣ"),
- (0x1A3, "V"),
- (0x1A4, "M", "ƥ"),
- (0x1A5, "V"),
- (0x1A6, "M", "ʀ"),
- (0x1A7, "M", "ƨ"),
- (0x1A8, "V"),
- (0x1A9, "M", "ʃ"),
- (0x1AA, "V"),
- (0x1AC, "M", "ƭ"),
- (0x1AD, "V"),
- (0x1AE, "M", "ʈ"),
- (0x1AF, "M", "ư"),
- (0x1B0, "V"),
- (0x1B1, "M", "ʊ"),
- (0x1B2, "M", "ʋ"),
- (0x1B3, "M", "ƴ"),
- (0x1B4, "V"),
- (0x1B5, "M", "ƶ"),
- (0x1B6, "V"),
- (0x1B7, "M", "ʒ"),
- (0x1B8, "M", "ƹ"),
- (0x1B9, "V"),
- (0x1BC, "M", "ƽ"),
- (0x1BD, "V"),
- (0x1C4, "M", "dž"),
- (0x1C7, "M", "lj"),
- (0x1CA, "M", "nj"),
- (0x1CD, "M", "ǎ"),
- (0x1CE, "V"),
- (0x1CF, "M", "ǐ"),
- (0x1D0, "V"),
- (0x1D1, "M", "ǒ"),
- (0x1D2, "V"),
- (0x1D3, "M", "ǔ"),
- (0x1D4, "V"),
- (0x1D5, "M", "ǖ"),
- (0x1D6, "V"),
- (0x1D7, "M", "ǘ"),
- (0x1D8, "V"),
- (0x1D9, "M", "ǚ"),
- (0x1DA, "V"),
- (0x1DB, "M", "ǜ"),
- (0x1DC, "V"),
- (0x1DE, "M", "ǟ"),
- (0x1DF, "V"),
- (0x1E0, "M", "ǡ"),
- (0x1E1, "V"),
- (0x1E2, "M", "ǣ"),
- (0x1E3, "V"),
- (0x1E4, "M", "ǥ"),
- (0x1E5, "V"),
- (0x1E6, "M", "ǧ"),
- (0x1E7, "V"),
- (0x1E8, "M", "ǩ"),
- (0x1E9, "V"),
- (0x1EA, "M", "ǫ"),
- (0x1EB, "V"),
- (0x1EC, "M", "ǭ"),
- (0x1ED, "V"),
- (0x1EE, "M", "ǯ"),
- (0x1EF, "V"),
- (0x1F1, "M", "dz"),
- (0x1F4, "M", "ǵ"),
- (0x1F5, "V"),
- (0x1F6, "M", "ƕ"),
- (0x1F7, "M", "ƿ"),
- (0x1F8, "M", "ǹ"),
- (0x1F9, "V"),
- (0x1FA, "M", "ǻ"),
- (0x1FB, "V"),
- (0x1FC, "M", "ǽ"),
- (0x1FD, "V"),
- (0x1FE, "M", "ǿ"),
- (0x1FF, "V"),
- (0x200, "M", "ȁ"),
- (0x201, "V"),
- (0x202, "M", "ȃ"),
- (0x203, "V"),
- (0x204, "M", "ȅ"),
- (0x205, "V"),
- (0x206, "M", "ȇ"),
- (0x207, "V"),
- (0x208, "M", "ȉ"),
- (0x209, "V"),
- (0x20A, "M", "ȋ"),
- (0x20B, "V"),
- (0x20C, "M", "ȍ"),
- (0x20D, "V"),
- (0x20E, "M", "ȏ"),
- (0x20F, "V"),
- (0x210, "M", "ȑ"),
- (0x211, "V"),
- (0x212, "M", "ȓ"),
- (0x213, "V"),
- (0x214, "M", "ȕ"),
- (0x215, "V"),
- (0x216, "M", "ȗ"),
- (0x217, "V"),
- (0x218, "M", "ș"),
- (0x219, "V"),
- (0x21A, "M", "ț"),
- (0x21B, "V"),
- (0x21C, "M", "ȝ"),
- (0x21D, "V"),
- (0x21E, "M", "ȟ"),
- (0x21F, "V"),
- (0x220, "M", "ƞ"),
- (0x221, "V"),
- (0x222, "M", "ȣ"),
- (0x223, "V"),
- (0x224, "M", "ȥ"),
- (0x225, "V"),
- (0x226, "M", "ȧ"),
- (0x227, "V"),
- (0x228, "M", "ȩ"),
- (0x229, "V"),
- (0x22A, "M", "ȫ"),
- (0x22B, "V"),
- (0x22C, "M", "ȭ"),
- (0x22D, "V"),
- (0x22E, "M", "ȯ"),
- (0x22F, "V"),
- (0x230, "M", "ȱ"),
- (0x231, "V"),
- (0x232, "M", "ȳ"),
- (0x233, "V"),
- (0x23A, "M", "ⱥ"),
- (0x23B, "M", "ȼ"),
- (0x23C, "V"),
- (0x23D, "M", "ƚ"),
- (0x23E, "M", "ⱦ"),
- (0x23F, "V"),
- (0x241, "M", "ɂ"),
- (0x242, "V"),
- (0x243, "M", "ƀ"),
- (0x244, "M", "ʉ"),
- (0x245, "M", "ʌ"),
- (0x246, "M", "ɇ"),
- (0x247, "V"),
- (0x248, "M", "ɉ"),
- (0x249, "V"),
- (0x24A, "M", "ɋ"),
- (0x24B, "V"),
- (0x24C, "M", "ɍ"),
- (0x24D, "V"),
- (0x24E, "M", "ɏ"),
- (0x24F, "V"),
- (0x2B0, "M", "h"),
- (0x2B1, "M", "ɦ"),
- (0x2B2, "M", "j"),
- (0x2B3, "M", "r"),
- (0x2B4, "M", "ɹ"),
- (0x2B5, "M", "ɻ"),
- (0x2B6, "M", "ʁ"),
- (0x2B7, "M", "w"),
- (0x2B8, "M", "y"),
- (0x2B9, "V"),
- (0x2D8, "M", " ̆"),
- (0x2D9, "M", " ̇"),
- (0x2DA, "M", " ̊"),
- (0x2DB, "M", " ̨"),
- (0x2DC, "M", " ̃"),
- (0x2DD, "M", " ̋"),
- (0x2DE, "V"),
- (0x2E0, "M", "ɣ"),
- (0x2E1, "M", "l"),
- (0x2E2, "M", "s"),
- (0x2E3, "M", "x"),
- (0x2E4, "M", "ʕ"),
- (0x2E5, "V"),
- (0x340, "M", "̀"),
- (0x341, "M", "́"),
- (0x342, "V"),
- (0x343, "M", "̓"),
- (0x344, "M", "̈́"),
- (0x345, "M", "ι"),
- (0x346, "V"),
- (0x34F, "I"),
- (0x350, "V"),
- (0x370, "M", "ͱ"),
- (0x371, "V"),
- (0x372, "M", "ͳ"),
- (0x373, "V"),
- (0x374, "M", "ʹ"),
- (0x375, "V"),
- (0x376, "M", "ͷ"),
- (0x377, "V"),
- (0x378, "X"),
- (0x37A, "M", " ι"),
- (0x37B, "V"),
- (0x37E, "M", ";"),
- (0x37F, "M", "ϳ"),
- (0x380, "X"),
- (0x384, "M", " ́"),
- (0x385, "M", " ̈́"),
- (0x386, "M", "ά"),
- (0x387, "M", "·"),
- (0x388, "M", "έ"),
- (0x389, "M", "ή"),
- (0x38A, "M", "ί"),
- (0x38B, "X"),
- (0x38C, "M", "ό"),
- (0x38D, "X"),
- (0x38E, "M", "ύ"),
- (0x38F, "M", "ώ"),
- (0x390, "V"),
- (0x391, "M", "α"),
- (0x392, "M", "β"),
- (0x393, "M", "γ"),
- (0x394, "M", "δ"),
- (0x395, "M", "ε"),
- (0x396, "M", "ζ"),
- (0x397, "M", "η"),
- (0x398, "M", "θ"),
- (0x399, "M", "ι"),
- (0x39A, "M", "κ"),
- (0x39B, "M", "λ"),
- (0x39C, "M", "μ"),
- (0x39D, "M", "ν"),
- (0x39E, "M", "ξ"),
- (0x39F, "M", "ο"),
- (0x3A0, "M", "π"),
- (0x3A1, "M", "ρ"),
- (0x3A2, "X"),
- (0x3A3, "M", "σ"),
- (0x3A4, "M", "τ"),
- (0x3A5, "M", "υ"),
- (0x3A6, "M", "φ"),
- (0x3A7, "M", "χ"),
- (0x3A8, "M", "ψ"),
- (0x3A9, "M", "ω"),
- (0x3AA, "M", "ϊ"),
- (0x3AB, "M", "ϋ"),
- (0x3AC, "V"),
- (0x3C2, "D", "σ"),
- (0x3C3, "V"),
- (0x3CF, "M", "ϗ"),
- (0x3D0, "M", "β"),
- (0x3D1, "M", "θ"),
- (0x3D2, "M", "υ"),
- (0x3D3, "M", "ύ"),
- (0x3D4, "M", "ϋ"),
- (0x3D5, "M", "φ"),
- (0x3D6, "M", "π"),
- (0x3D7, "V"),
- (0x3D8, "M", "ϙ"),
- (0x3D9, "V"),
- (0x3DA, "M", "ϛ"),
- (0x3DB, "V"),
- (0x3DC, "M", "ϝ"),
- (0x3DD, "V"),
- (0x3DE, "M", "ϟ"),
- (0x3DF, "V"),
- (0x3E0, "M", "ϡ"),
- (0x3E1, "V"),
- (0x3E2, "M", "ϣ"),
- (0x3E3, "V"),
- (0x3E4, "M", "ϥ"),
- (0x3E5, "V"),
- (0x3E6, "M", "ϧ"),
- (0x3E7, "V"),
- (0x3E8, "M", "ϩ"),
- (0x3E9, "V"),
- (0x3EA, "M", "ϫ"),
- (0x3EB, "V"),
- (0x3EC, "M", "ϭ"),
- (0x3ED, "V"),
- (0x3EE, "M", "ϯ"),
- (0x3EF, "V"),
- (0x3F0, "M", "κ"),
- (0x3F1, "M", "ρ"),
- (0x3F2, "M", "σ"),
- (0x3F3, "V"),
- (0x3F4, "M", "θ"),
- (0x3F5, "M", "ε"),
- (0x3F6, "V"),
- (0x3F7, "M", "ϸ"),
- (0x3F8, "V"),
- (0x3F9, "M", "σ"),
- (0x3FA, "M", "ϻ"),
- (0x3FB, "V"),
- (0x3FD, "M", "ͻ"),
- (0x3FE, "M", "ͼ"),
- (0x3FF, "M", "ͽ"),
- (0x400, "M", "ѐ"),
- (0x401, "M", "ё"),
- (0x402, "M", "ђ"),
- (0x403, "M", "ѓ"),
- (0x404, "M", "є"),
- (0x405, "M", "ѕ"),
- (0x406, "M", "і"),
- (0x407, "M", "ї"),
- (0x408, "M", "ј"),
- (0x409, "M", "љ"),
- (0x40A, "M", "њ"),
- (0x40B, "M", "ћ"),
- (0x40C, "M", "ќ"),
- (0x40D, "M", "ѝ"),
- (0x40E, "M", "ў"),
- (0x40F, "M", "џ"),
- (0x410, "M", "а"),
- (0x411, "M", "б"),
- (0x412, "M", "в"),
- (0x413, "M", "г"),
- (0x414, "M", "д"),
- (0x415, "M", "е"),
- (0x416, "M", "ж"),
- (0x417, "M", "з"),
- (0x418, "M", "и"),
- (0x419, "M", "й"),
- (0x41A, "M", "к"),
- (0x41B, "M", "л"),
- (0x41C, "M", "м"),
- (0x41D, "M", "н"),
- (0x41E, "M", "о"),
- (0x41F, "M", "п"),
- (0x420, "M", "р"),
- (0x421, "M", "с"),
- (0x422, "M", "т"),
- (0x423, "M", "у"),
- (0x424, "M", "ф"),
- (0x425, "M", "х"),
- (0x426, "M", "ц"),
- (0x427, "M", "ч"),
- (0x428, "M", "ш"),
- (0x429, "M", "щ"),
- (0x42A, "M", "ъ"),
- (0x42B, "M", "ы"),
- (0x42C, "M", "ь"),
- (0x42D, "M", "э"),
- (0x42E, "M", "ю"),
- (0x42F, "M", "я"),
- (0x430, "V"),
- (0x460, "M", "ѡ"),
- (0x461, "V"),
- (0x462, "M", "ѣ"),
- (0x463, "V"),
- (0x464, "M", "ѥ"),
- (0x465, "V"),
- (0x466, "M", "ѧ"),
- (0x467, "V"),
- (0x468, "M", "ѩ"),
- (0x469, "V"),
- (0x46A, "M", "ѫ"),
- (0x46B, "V"),
- (0x46C, "M", "ѭ"),
- (0x46D, "V"),
- (0x46E, "M", "ѯ"),
- (0x46F, "V"),
- (0x470, "M", "ѱ"),
- (0x471, "V"),
- (0x472, "M", "ѳ"),
- (0x473, "V"),
- (0x474, "M", "ѵ"),
- (0x475, "V"),
- (0x476, "M", "ѷ"),
- (0x477, "V"),
- (0x478, "M", "ѹ"),
- (0x479, "V"),
- (0x47A, "M", "ѻ"),
- (0x47B, "V"),
- (0x47C, "M", "ѽ"),
- (0x47D, "V"),
- (0x47E, "M", "ѿ"),
- (0x47F, "V"),
- (0x480, "M", "ҁ"),
- (0x481, "V"),
- (0x48A, "M", "ҋ"),
- (0x48B, "V"),
- (0x48C, "M", "ҍ"),
- (0x48D, "V"),
- (0x48E, "M", "ҏ"),
- (0x48F, "V"),
- (0x490, "M", "ґ"),
- (0x491, "V"),
- (0x492, "M", "ғ"),
- (0x493, "V"),
- (0x494, "M", "ҕ"),
- (0x495, "V"),
- (0x496, "M", "җ"),
- (0x497, "V"),
- (0x498, "M", "ҙ"),
- (0x499, "V"),
- (0x49A, "M", "қ"),
- (0x49B, "V"),
- (0x49C, "M", "ҝ"),
- (0x49D, "V"),
- (0x49E, "M", "ҟ"),
- (0x49F, "V"),
- (0x4A0, "M", "ҡ"),
- (0x4A1, "V"),
- (0x4A2, "M", "ң"),
- (0x4A3, "V"),
- (0x4A4, "M", "ҥ"),
- (0x4A5, "V"),
- (0x4A6, "M", "ҧ"),
- (0x4A7, "V"),
- (0x4A8, "M", "ҩ"),
- (0x4A9, "V"),
- (0x4AA, "M", "ҫ"),
- (0x4AB, "V"),
- (0x4AC, "M", "ҭ"),
- (0x4AD, "V"),
- (0x4AE, "M", "ү"),
- (0x4AF, "V"),
- (0x4B0, "M", "ұ"),
- (0x4B1, "V"),
- (0x4B2, "M", "ҳ"),
- (0x4B3, "V"),
- (0x4B4, "M", "ҵ"),
- (0x4B5, "V"),
- (0x4B6, "M", "ҷ"),
- (0x4B7, "V"),
- (0x4B8, "M", "ҹ"),
- (0x4B9, "V"),
- (0x4BA, "M", "һ"),
- (0x4BB, "V"),
- (0x4BC, "M", "ҽ"),
- (0x4BD, "V"),
- (0x4BE, "M", "ҿ"),
- (0x4BF, "V"),
- (0x4C0, "M", "ӏ"),
- (0x4C1, "M", "ӂ"),
- (0x4C2, "V"),
- (0x4C3, "M", "ӄ"),
- (0x4C4, "V"),
- (0x4C5, "M", "ӆ"),
- (0x4C6, "V"),
- (0x4C7, "M", "ӈ"),
- (0x4C8, "V"),
- (0x4C9, "M", "ӊ"),
- (0x4CA, "V"),
- (0x4CB, "M", "ӌ"),
- (0x4CC, "V"),
- (0x4CD, "M", "ӎ"),
- (0x4CE, "V"),
- (0x4D0, "M", "ӑ"),
- (0x4D1, "V"),
- (0x4D2, "M", "ӓ"),
- (0x4D3, "V"),
- (0x4D4, "M", "ӕ"),
- (0x4D5, "V"),
- (0x4D6, "M", "ӗ"),
- (0x4D7, "V"),
- (0x4D8, "M", "ә"),
- (0x4D9, "V"),
- (0x4DA, "M", "ӛ"),
- (0x4DB, "V"),
- (0x4DC, "M", "ӝ"),
- (0x4DD, "V"),
- (0x4DE, "M", "ӟ"),
- (0x4DF, "V"),
- (0x4E0, "M", "ӡ"),
- (0x4E1, "V"),
- (0x4E2, "M", "ӣ"),
- (0x4E3, "V"),
- (0x4E4, "M", "ӥ"),
- (0x4E5, "V"),
- (0x4E6, "M", "ӧ"),
- (0x4E7, "V"),
- (0x4E8, "M", "ө"),
- (0x4E9, "V"),
- (0x4EA, "M", "ӫ"),
- (0x4EB, "V"),
- (0x4EC, "M", "ӭ"),
- (0x4ED, "V"),
- (0x4EE, "M", "ӯ"),
- (0x4EF, "V"),
- (0x4F0, "M", "ӱ"),
- (0x4F1, "V"),
- (0x4F2, "M", "ӳ"),
- (0x4F3, "V"),
- (0x4F4, "M", "ӵ"),
- (0x4F5, "V"),
- (0x4F6, "M", "ӷ"),
- (0x4F7, "V"),
- (0x4F8, "M", "ӹ"),
- (0x4F9, "V"),
- (0x4FA, "M", "ӻ"),
- (0x4FB, "V"),
- (0x4FC, "M", "ӽ"),
- (0x4FD, "V"),
- (0x4FE, "M", "ӿ"),
- (0x4FF, "V"),
- (0x500, "M", "ԁ"),
- (0x501, "V"),
- (0x502, "M", "ԃ"),
- (0x503, "V"),
- (0x504, "M", "ԅ"),
- (0x505, "V"),
- (0x506, "M", "ԇ"),
- (0x507, "V"),
- (0x508, "M", "ԉ"),
- (0x509, "V"),
- (0x50A, "M", "ԋ"),
- (0x50B, "V"),
- (0x50C, "M", "ԍ"),
- (0x50D, "V"),
- (0x50E, "M", "ԏ"),
- (0x50F, "V"),
- (0x510, "M", "ԑ"),
- (0x511, "V"),
- (0x512, "M", "ԓ"),
- (0x513, "V"),
- (0x514, "M", "ԕ"),
- (0x515, "V"),
- (0x516, "M", "ԗ"),
- (0x517, "V"),
- (0x518, "M", "ԙ"),
- (0x519, "V"),
- (0x51A, "M", "ԛ"),
- (0x51B, "V"),
- (0x51C, "M", "ԝ"),
- (0x51D, "V"),
- (0x51E, "M", "ԟ"),
- (0x51F, "V"),
- (0x520, "M", "ԡ"),
- (0x521, "V"),
- (0x522, "M", "ԣ"),
- (0x523, "V"),
- (0x524, "M", "ԥ"),
- (0x525, "V"),
- (0x526, "M", "ԧ"),
- (0x527, "V"),
- (0x528, "M", "ԩ"),
- (0x529, "V"),
- (0x52A, "M", "ԫ"),
- (0x52B, "V"),
- (0x52C, "M", "ԭ"),
- (0x52D, "V"),
- (0x52E, "M", "ԯ"),
- (0x52F, "V"),
- (0x530, "X"),
- (0x531, "M", "ա"),
- (0x532, "M", "բ"),
- (0x533, "M", "գ"),
- (0x534, "M", "դ"),
- (0x535, "M", "ե"),
- (0x536, "M", "զ"),
- (0x537, "M", "է"),
- (0x538, "M", "ը"),
- (0x539, "M", "թ"),
- (0x53A, "M", "ժ"),
- (0x53B, "M", "ի"),
- (0x53C, "M", "լ"),
- (0x53D, "M", "խ"),
- (0x53E, "M", "ծ"),
- (0x53F, "M", "կ"),
- (0x540, "M", "հ"),
- (0x541, "M", "ձ"),
- (0x542, "M", "ղ"),
- (0x543, "M", "ճ"),
- (0x544, "M", "մ"),
- (0x545, "M", "յ"),
- (0x546, "M", "ն"),
- (0x547, "M", "շ"),
- (0x548, "M", "ո"),
- (0x549, "M", "չ"),
- (0x54A, "M", "պ"),
- (0x54B, "M", "ջ"),
- (0x54C, "M", "ռ"),
- (0x54D, "M", "ս"),
- (0x54E, "M", "վ"),
- (0x54F, "M", "տ"),
- (0x550, "M", "ր"),
- (0x551, "M", "ց"),
- (0x552, "M", "ւ"),
- (0x553, "M", "փ"),
- (0x554, "M", "ք"),
- (0x555, "M", "օ"),
- (0x556, "M", "ֆ"),
- (0x557, "X"),
- (0x559, "V"),
- (0x587, "M", "եւ"),
- (0x588, "V"),
- (0x58B, "X"),
- (0x58D, "V"),
- (0x590, "X"),
- (0x591, "V"),
- (0x5C8, "X"),
- (0x5D0, "V"),
- (0x5EB, "X"),
- (0x5EF, "V"),
- (0x5F5, "X"),
- (0x606, "V"),
- (0x61C, "X"),
- (0x61D, "V"),
- (0x675, "M", "اٴ"),
- (0x676, "M", "وٴ"),
- (0x677, "M", "ۇٴ"),
- (0x678, "M", "يٴ"),
- (0x679, "V"),
- (0x6DD, "X"),
- (0x6DE, "V"),
- (0x70E, "X"),
- (0x710, "V"),
- (0x74B, "X"),
- (0x74D, "V"),
- (0x7B2, "X"),
- (0x7C0, "V"),
- (0x7FB, "X"),
- (0x7FD, "V"),
- (0x82E, "X"),
- (0x830, "V"),
- (0x83F, "X"),
- (0x840, "V"),
- (0x85C, "X"),
- (0x85E, "V"),
- (0x85F, "X"),
- (0x860, "V"),
- (0x86B, "X"),
- (0x870, "V"),
- (0x890, "X"),
- (0x897, "V"),
- (0x8E2, "X"),
- (0x8E3, "V"),
- (0x958, "M", "क़"),
- (0x959, "M", "ख़"),
- (0x95A, "M", "ग़"),
- (0x95B, "M", "ज़"),
- (0x95C, "M", "ड़"),
- (0x95D, "M", "ढ़"),
- (0x95E, "M", "फ़"),
- (0x95F, "M", "य़"),
- (0x960, "V"),
- (0x984, "X"),
- (0x985, "V"),
- (0x98D, "X"),
- (0x98F, "V"),
- (0x991, "X"),
- (0x993, "V"),
- (0x9A9, "X"),
- (0x9AA, "V"),
- (0x9B1, "X"),
- (0x9B2, "V"),
- (0x9B3, "X"),
- (0x9B6, "V"),
- (0x9BA, "X"),
- (0x9BC, "V"),
- (0x9C5, "X"),
- (0x9C7, "V"),
- (0x9C9, "X"),
- (0x9CB, "V"),
- (0x9CF, "X"),
- (0x9D7, "V"),
- (0x9D8, "X"),
- (0x9DC, "M", "ড়"),
- (0x9DD, "M", "ঢ়"),
- (0x9DE, "X"),
- (0x9DF, "M", "য়"),
- (0x9E0, "V"),
- (0x9E4, "X"),
- (0x9E6, "V"),
- (0x9FF, "X"),
- (0xA01, "V"),
- (0xA04, "X"),
- (0xA05, "V"),
- (0xA0B, "X"),
- (0xA0F, "V"),
- (0xA11, "X"),
- (0xA13, "V"),
- (0xA29, "X"),
- (0xA2A, "V"),
- (0xA31, "X"),
- (0xA32, "V"),
- (0xA33, "M", "ਲ਼"),
- (0xA34, "X"),
- (0xA35, "V"),
- (0xA36, "M", "ਸ਼"),
- (0xA37, "X"),
- (0xA38, "V"),
- (0xA3A, "X"),
- (0xA3C, "V"),
- (0xA3D, "X"),
- (0xA3E, "V"),
- (0xA43, "X"),
- (0xA47, "V"),
- (0xA49, "X"),
- (0xA4B, "V"),
- (0xA4E, "X"),
- (0xA51, "V"),
- (0xA52, "X"),
- (0xA59, "M", "ਖ਼"),
- (0xA5A, "M", "ਗ਼"),
- (0xA5B, "M", "ਜ਼"),
- (0xA5C, "V"),
- (0xA5D, "X"),
- (0xA5E, "M", "ਫ਼"),
- (0xA5F, "X"),
- (0xA66, "V"),
- (0xA77, "X"),
- (0xA81, "V"),
- (0xA84, "X"),
- (0xA85, "V"),
- (0xA8E, "X"),
- (0xA8F, "V"),
- (0xA92, "X"),
- (0xA93, "V"),
- (0xAA9, "X"),
- (0xAAA, "V"),
- (0xAB1, "X"),
- (0xAB2, "V"),
- (0xAB4, "X"),
- (0xAB5, "V"),
- (0xABA, "X"),
- (0xABC, "V"),
- (0xAC6, "X"),
- (0xAC7, "V"),
- (0xACA, "X"),
- (0xACB, "V"),
- (0xACE, "X"),
- (0xAD0, "V"),
- (0xAD1, "X"),
- (0xAE0, "V"),
- (0xAE4, "X"),
- (0xAE6, "V"),
- (0xAF2, "X"),
- (0xAF9, "V"),
- (0xB00, "X"),
- (0xB01, "V"),
- (0xB04, "X"),
- (0xB05, "V"),
- (0xB0D, "X"),
- (0xB0F, "V"),
- (0xB11, "X"),
- (0xB13, "V"),
- (0xB29, "X"),
- (0xB2A, "V"),
- (0xB31, "X"),
- (0xB32, "V"),
- (0xB34, "X"),
- (0xB35, "V"),
- (0xB3A, "X"),
- (0xB3C, "V"),
- (0xB45, "X"),
- (0xB47, "V"),
- (0xB49, "X"),
- (0xB4B, "V"),
- (0xB4E, "X"),
- (0xB55, "V"),
- (0xB58, "X"),
- (0xB5C, "M", "ଡ଼"),
- (0xB5D, "M", "ଢ଼"),
- (0xB5E, "X"),
- (0xB5F, "V"),
- (0xB64, "X"),
- (0xB66, "V"),
- (0xB78, "X"),
- (0xB82, "V"),
- (0xB84, "X"),
- (0xB85, "V"),
- (0xB8B, "X"),
- (0xB8E, "V"),
- (0xB91, "X"),
- (0xB92, "V"),
- (0xB96, "X"),
- (0xB99, "V"),
- (0xB9B, "X"),
- (0xB9C, "V"),
- (0xB9D, "X"),
- (0xB9E, "V"),
- (0xBA0, "X"),
- (0xBA3, "V"),
- (0xBA5, "X"),
- (0xBA8, "V"),
- (0xBAB, "X"),
- (0xBAE, "V"),
- (0xBBA, "X"),
- (0xBBE, "V"),
- (0xBC3, "X"),
- (0xBC6, "V"),
- (0xBC9, "X"),
- (0xBCA, "V"),
- (0xBCE, "X"),
- (0xBD0, "V"),
- (0xBD1, "X"),
- (0xBD7, "V"),
- (0xBD8, "X"),
- (0xBE6, "V"),
- (0xBFB, "X"),
- (0xC00, "V"),
- (0xC0D, "X"),
- (0xC0E, "V"),
- (0xC11, "X"),
- (0xC12, "V"),
- (0xC29, "X"),
- (0xC2A, "V"),
- (0xC3A, "X"),
- (0xC3C, "V"),
- (0xC45, "X"),
- (0xC46, "V"),
- (0xC49, "X"),
- (0xC4A, "V"),
- (0xC4E, "X"),
- (0xC55, "V"),
- (0xC57, "X"),
- (0xC58, "V"),
- (0xC5B, "X"),
- (0xC5C, "V"),
- (0xC5E, "X"),
- (0xC60, "V"),
- (0xC64, "X"),
- (0xC66, "V"),
- (0xC70, "X"),
- (0xC77, "V"),
- (0xC8D, "X"),
- (0xC8E, "V"),
- (0xC91, "X"),
- (0xC92, "V"),
- (0xCA9, "X"),
- (0xCAA, "V"),
- (0xCB4, "X"),
- (0xCB5, "V"),
- (0xCBA, "X"),
- (0xCBC, "V"),
- (0xCC5, "X"),
- (0xCC6, "V"),
- (0xCC9, "X"),
- (0xCCA, "V"),
- (0xCCE, "X"),
- (0xCD5, "V"),
- (0xCD7, "X"),
- (0xCDC, "V"),
- (0xCDF, "X"),
- (0xCE0, "V"),
- (0xCE4, "X"),
- (0xCE6, "V"),
- (0xCF0, "X"),
- (0xCF1, "V"),
- (0xCF4, "X"),
- (0xD00, "V"),
- (0xD0D, "X"),
- (0xD0E, "V"),
- (0xD11, "X"),
- (0xD12, "V"),
- (0xD45, "X"),
- (0xD46, "V"),
- (0xD49, "X"),
- (0xD4A, "V"),
- (0xD50, "X"),
- (0xD54, "V"),
- (0xD64, "X"),
- (0xD66, "V"),
- (0xD80, "X"),
- (0xD81, "V"),
- (0xD84, "X"),
- (0xD85, "V"),
- (0xD97, "X"),
- (0xD9A, "V"),
- (0xDB2, "X"),
- (0xDB3, "V"),
- (0xDBC, "X"),
- (0xDBD, "V"),
- (0xDBE, "X"),
- (0xDC0, "V"),
- (0xDC7, "X"),
- (0xDCA, "V"),
- (0xDCB, "X"),
- (0xDCF, "V"),
- (0xDD5, "X"),
- (0xDD6, "V"),
- (0xDD7, "X"),
- (0xDD8, "V"),
- (0xDE0, "X"),
- (0xDE6, "V"),
- (0xDF0, "X"),
- (0xDF2, "V"),
- (0xDF5, "X"),
- (0xE01, "V"),
- (0xE33, "M", "ํา"),
- (0xE34, "V"),
- (0xE3B, "X"),
- (0xE3F, "V"),
- (0xE5C, "X"),
- (0xE81, "V"),
- (0xE83, "X"),
- (0xE84, "V"),
- (0xE85, "X"),
- (0xE86, "V"),
- (0xE8B, "X"),
- (0xE8C, "V"),
- (0xEA4, "X"),
- (0xEA5, "V"),
- (0xEA6, "X"),
- (0xEA7, "V"),
- (0xEB3, "M", "ໍາ"),
- (0xEB4, "V"),
- (0xEBE, "X"),
- (0xEC0, "V"),
- (0xEC5, "X"),
- (0xEC6, "V"),
- (0xEC7, "X"),
- (0xEC8, "V"),
- (0xECF, "X"),
- (0xED0, "V"),
- (0xEDA, "X"),
- (0xEDC, "M", "ຫນ"),
- (0xEDD, "M", "ຫມ"),
- (0xEDE, "V"),
- (0xEE0, "X"),
- (0xF00, "V"),
- (0xF0C, "M", "་"),
- (0xF0D, "V"),
- (0xF43, "M", "གྷ"),
- (0xF44, "V"),
- (0xF48, "X"),
- (0xF49, "V"),
- (0xF4D, "M", "ཌྷ"),
- (0xF4E, "V"),
- (0xF52, "M", "དྷ"),
- (0xF53, "V"),
- (0xF57, "M", "བྷ"),
- (0xF58, "V"),
- (0xF5C, "M", "ཛྷ"),
- (0xF5D, "V"),
- (0xF69, "M", "ཀྵ"),
- (0xF6A, "V"),
- (0xF6D, "X"),
- (0xF71, "V"),
- (0xF73, "M", "ཱི"),
- (0xF74, "V"),
- (0xF75, "M", "ཱུ"),
- (0xF76, "M", "ྲྀ"),
- (0xF77, "M", "ྲཱྀ"),
- (0xF78, "M", "ླྀ"),
- (0xF79, "M", "ླཱྀ"),
- (0xF7A, "V"),
- (0xF81, "M", "ཱྀ"),
- (0xF82, "V"),
- (0xF93, "M", "ྒྷ"),
- (0xF94, "V"),
- (0xF98, "X"),
- (0xF99, "V"),
- (0xF9D, "M", "ྜྷ"),
- (0xF9E, "V"),
- (0xFA2, "M", "ྡྷ"),
- (0xFA3, "V"),
- (0xFA7, "M", "ྦྷ"),
- (0xFA8, "V"),
- (0xFAC, "M", "ྫྷ"),
- (0xFAD, "V"),
- (0xFB9, "M", "ྐྵ"),
- (0xFBA, "V"),
- (0xFBD, "X"),
- (0xFBE, "V"),
- (0xFCD, "X"),
- (0xFCE, "V"),
- (0xFDB, "X"),
- (0x1000, "V"),
- (0x10A0, "M", "ⴀ"),
- (0x10A1, "M", "ⴁ"),
- (0x10A2, "M", "ⴂ"),
- (0x10A3, "M", "ⴃ"),
- (0x10A4, "M", "ⴄ"),
- (0x10A5, "M", "ⴅ"),
- (0x10A6, "M", "ⴆ"),
- (0x10A7, "M", "ⴇ"),
- (0x10A8, "M", "ⴈ"),
- (0x10A9, "M", "ⴉ"),
- (0x10AA, "M", "ⴊ"),
- (0x10AB, "M", "ⴋ"),
- (0x10AC, "M", "ⴌ"),
- (0x10AD, "M", "ⴍ"),
- (0x10AE, "M", "ⴎ"),
- (0x10AF, "M", "ⴏ"),
- (0x10B0, "M", "ⴐ"),
- (0x10B1, "M", "ⴑ"),
- (0x10B2, "M", "ⴒ"),
- (0x10B3, "M", "ⴓ"),
- (0x10B4, "M", "ⴔ"),
- (0x10B5, "M", "ⴕ"),
- (0x10B6, "M", "ⴖ"),
- (0x10B7, "M", "ⴗ"),
- (0x10B8, "M", "ⴘ"),
- (0x10B9, "M", "ⴙ"),
- (0x10BA, "M", "ⴚ"),
- (0x10BB, "M", "ⴛ"),
- (0x10BC, "M", "ⴜ"),
- (0x10BD, "M", "ⴝ"),
- (0x10BE, "M", "ⴞ"),
- (0x10BF, "M", "ⴟ"),
- (0x10C0, "M", "ⴠ"),
- (0x10C1, "M", "ⴡ"),
- (0x10C2, "M", "ⴢ"),
- (0x10C3, "M", "ⴣ"),
- (0x10C4, "M", "ⴤ"),
- (0x10C5, "M", "ⴥ"),
- (0x10C6, "X"),
- (0x10C7, "M", "ⴧ"),
- (0x10C8, "X"),
- (0x10CD, "M", "ⴭ"),
- (0x10CE, "X"),
- (0x10D0, "V"),
- (0x10FC, "M", "ნ"),
- (0x10FD, "V"),
- (0x115F, "I"),
- (0x1161, "V"),
- (0x1249, "X"),
- (0x124A, "V"),
- (0x124E, "X"),
- (0x1250, "V"),
- (0x1257, "X"),
- (0x1258, "V"),
- (0x1259, "X"),
- (0x125A, "V"),
- (0x125E, "X"),
- (0x1260, "V"),
- (0x1289, "X"),
- (0x128A, "V"),
- (0x128E, "X"),
- (0x1290, "V"),
- (0x12B1, "X"),
- (0x12B2, "V"),
- (0x12B6, "X"),
- (0x12B8, "V"),
- (0x12BF, "X"),
- (0x12C0, "V"),
- (0x12C1, "X"),
- (0x12C2, "V"),
- (0x12C6, "X"),
- (0x12C8, "V"),
- (0x12D7, "X"),
- (0x12D8, "V"),
- (0x1311, "X"),
- (0x1312, "V"),
- (0x1316, "X"),
- (0x1318, "V"),
- (0x135B, "X"),
- (0x135D, "V"),
- (0x137D, "X"),
- (0x1380, "V"),
- (0x139A, "X"),
- (0x13A0, "V"),
- (0x13F6, "X"),
- (0x13F8, "M", "Ᏸ"),
- (0x13F9, "M", "Ᏹ"),
- (0x13FA, "M", "Ᏺ"),
- (0x13FB, "M", "Ᏻ"),
- (0x13FC, "M", "Ᏼ"),
- (0x13FD, "M", "Ᏽ"),
- (0x13FE, "X"),
- (0x1400, "V"),
- (0x1680, "X"),
- (0x1681, "V"),
- (0x169D, "X"),
- (0x16A0, "V"),
- (0x16F9, "X"),
- (0x1700, "V"),
- (0x1716, "X"),
- (0x171F, "V"),
- (0x1737, "X"),
- (0x1740, "V"),
- (0x1754, "X"),
- (0x1760, "V"),
- (0x176D, "X"),
- (0x176E, "V"),
- (0x1771, "X"),
- (0x1772, "V"),
- (0x1774, "X"),
- (0x1780, "V"),
- (0x17B4, "I"),
- (0x17B6, "V"),
- (0x17DE, "X"),
- (0x17E0, "V"),
- (0x17EA, "X"),
- (0x17F0, "V"),
- (0x17FA, "X"),
- (0x1800, "V"),
- (0x180B, "I"),
- (0x1810, "V"),
- (0x181A, "X"),
- (0x1820, "V"),
- (0x1879, "X"),
- (0x1880, "V"),
- (0x18AB, "X"),
- (0x18B0, "V"),
- (0x18F6, "X"),
- (0x1900, "V"),
- (0x191F, "X"),
- (0x1920, "V"),
- (0x192C, "X"),
- (0x1930, "V"),
- (0x193C, "X"),
- (0x1940, "V"),
- (0x1941, "X"),
- (0x1944, "V"),
- (0x196E, "X"),
- (0x1970, "V"),
- (0x1975, "X"),
- (0x1980, "V"),
- (0x19AC, "X"),
- (0x19B0, "V"),
- (0x19CA, "X"),
- (0x19D0, "V"),
- (0x19DB, "X"),
- (0x19DE, "V"),
- (0x1A1C, "X"),
- (0x1A1E, "V"),
- (0x1A5F, "X"),
- (0x1A60, "V"),
- (0x1A7D, "X"),
- (0x1A7F, "V"),
- (0x1A8A, "X"),
- (0x1A90, "V"),
- (0x1A9A, "X"),
- (0x1AA0, "V"),
- (0x1AAE, "X"),
- (0x1AB0, "V"),
- (0x1ADE, "X"),
- (0x1AE0, "V"),
- (0x1AEC, "X"),
- (0x1B00, "V"),
- (0x1B4D, "X"),
- (0x1B4E, "V"),
- (0x1BF4, "X"),
- (0x1BFC, "V"),
- (0x1C38, "X"),
- (0x1C3B, "V"),
- (0x1C4A, "X"),
- (0x1C4D, "V"),
- (0x1C80, "M", "в"),
- (0x1C81, "M", "д"),
- (0x1C82, "M", "о"),
- (0x1C83, "M", "с"),
- (0x1C84, "M", "т"),
- (0x1C86, "M", "ъ"),
- (0x1C87, "M", "ѣ"),
- (0x1C88, "M", "ꙋ"),
- (0x1C89, "M", "ᲊ"),
- (0x1C8A, "V"),
- (0x1C8B, "X"),
- (0x1C90, "M", "ა"),
- (0x1C91, "M", "ბ"),
- (0x1C92, "M", "გ"),
- (0x1C93, "M", "დ"),
- (0x1C94, "M", "ე"),
- (0x1C95, "M", "ვ"),
- (0x1C96, "M", "ზ"),
- (0x1C97, "M", "თ"),
- (0x1C98, "M", "ი"),
- (0x1C99, "M", "კ"),
- (0x1C9A, "M", "ლ"),
- (0x1C9B, "M", "მ"),
- (0x1C9C, "M", "ნ"),
- (0x1C9D, "M", "ო"),
- (0x1C9E, "M", "პ"),
- (0x1C9F, "M", "ჟ"),
- (0x1CA0, "M", "რ"),
- (0x1CA1, "M", "ს"),
- (0x1CA2, "M", "ტ"),
- (0x1CA3, "M", "უ"),
- (0x1CA4, "M", "ფ"),
- (0x1CA5, "M", "ქ"),
- (0x1CA6, "M", "ღ"),
- (0x1CA7, "M", "ყ"),
- (0x1CA8, "M", "შ"),
- (0x1CA9, "M", "ჩ"),
- (0x1CAA, "M", "ც"),
- (0x1CAB, "M", "ძ"),
- (0x1CAC, "M", "წ"),
- (0x1CAD, "M", "ჭ"),
- (0x1CAE, "M", "ხ"),
- (0x1CAF, "M", "ჯ"),
- (0x1CB0, "M", "ჰ"),
- (0x1CB1, "M", "ჱ"),
- (0x1CB2, "M", "ჲ"),
- (0x1CB3, "M", "ჳ"),
- (0x1CB4, "M", "ჴ"),
- (0x1CB5, "M", "ჵ"),
- (0x1CB6, "M", "ჶ"),
- (0x1CB7, "M", "ჷ"),
- (0x1CB8, "M", "ჸ"),
- (0x1CB9, "M", "ჹ"),
- (0x1CBA, "M", "ჺ"),
- (0x1CBB, "X"),
- (0x1CBD, "M", "ჽ"),
- (0x1CBE, "M", "ჾ"),
- (0x1CBF, "M", "ჿ"),
- (0x1CC0, "V"),
- (0x1CC8, "X"),
- (0x1CD0, "V"),
- (0x1CFB, "X"),
- (0x1D00, "V"),
- (0x1D2C, "M", "a"),
- (0x1D2D, "M", "æ"),
- (0x1D2E, "M", "b"),
- (0x1D2F, "V"),
- (0x1D30, "M", "d"),
- (0x1D31, "M", "e"),
- (0x1D32, "M", "ǝ"),
- (0x1D33, "M", "g"),
- (0x1D34, "M", "h"),
- (0x1D35, "M", "i"),
- (0x1D36, "M", "j"),
- (0x1D37, "M", "k"),
- (0x1D38, "M", "l"),
- (0x1D39, "M", "m"),
- (0x1D3A, "M", "n"),
- (0x1D3B, "V"),
- (0x1D3C, "M", "o"),
- (0x1D3D, "M", "ȣ"),
- (0x1D3E, "M", "p"),
- (0x1D3F, "M", "r"),
- (0x1D40, "M", "t"),
- (0x1D41, "M", "u"),
- (0x1D42, "M", "w"),
- (0x1D43, "M", "a"),
- (0x1D44, "M", "ɐ"),
- (0x1D45, "M", "ɑ"),
- (0x1D46, "M", "ᴂ"),
- (0x1D47, "M", "b"),
- (0x1D48, "M", "d"),
- (0x1D49, "M", "e"),
- (0x1D4A, "M", "ə"),
- (0x1D4B, "M", "ɛ"),
- (0x1D4C, "M", "ɜ"),
- (0x1D4D, "M", "g"),
- (0x1D4E, "V"),
- (0x1D4F, "M", "k"),
- (0x1D50, "M", "m"),
- (0x1D51, "M", "ŋ"),
- (0x1D52, "M", "o"),
- (0x1D53, "M", "ɔ"),
- (0x1D54, "M", "ᴖ"),
- (0x1D55, "M", "ᴗ"),
- (0x1D56, "M", "p"),
- (0x1D57, "M", "t"),
- (0x1D58, "M", "u"),
- (0x1D59, "M", "ᴝ"),
- (0x1D5A, "M", "ɯ"),
- (0x1D5B, "M", "v"),
- (0x1D5C, "M", "ᴥ"),
- (0x1D5D, "M", "β"),
- (0x1D5E, "M", "γ"),
- (0x1D5F, "M", "δ"),
- (0x1D60, "M", "φ"),
- (0x1D61, "M", "χ"),
- (0x1D62, "M", "i"),
- (0x1D63, "M", "r"),
- (0x1D64, "M", "u"),
- (0x1D65, "M", "v"),
- (0x1D66, "M", "β"),
- (0x1D67, "M", "γ"),
- (0x1D68, "M", "ρ"),
- (0x1D69, "M", "φ"),
- (0x1D6A, "M", "χ"),
- (0x1D6B, "V"),
- (0x1D78, "M", "н"),
- (0x1D79, "V"),
- (0x1D9B, "M", "ɒ"),
- (0x1D9C, "M", "c"),
- (0x1D9D, "M", "ɕ"),
- (0x1D9E, "M", "ð"),
- (0x1D9F, "M", "ɜ"),
- (0x1DA0, "M", "f"),
- (0x1DA1, "M", "ɟ"),
- (0x1DA2, "M", "ɡ"),
- (0x1DA3, "M", "ɥ"),
- (0x1DA4, "M", "ɨ"),
- (0x1DA5, "M", "ɩ"),
- (0x1DA6, "M", "ɪ"),
- (0x1DA7, "M", "ᵻ"),
- (0x1DA8, "M", "ʝ"),
- (0x1DA9, "M", "ɭ"),
- (0x1DAA, "M", "ᶅ"),
- (0x1DAB, "M", "ʟ"),
- (0x1DAC, "M", "ɱ"),
- (0x1DAD, "M", "ɰ"),
- (0x1DAE, "M", "ɲ"),
- (0x1DAF, "M", "ɳ"),
- (0x1DB0, "M", "ɴ"),
- (0x1DB1, "M", "ɵ"),
- (0x1DB2, "M", "ɸ"),
- (0x1DB3, "M", "ʂ"),
- (0x1DB4, "M", "ʃ"),
- (0x1DB5, "M", "ƫ"),
- (0x1DB6, "M", "ʉ"),
- (0x1DB7, "M", "ʊ"),
- (0x1DB8, "M", "ᴜ"),
- (0x1DB9, "M", "ʋ"),
- (0x1DBA, "M", "ʌ"),
- (0x1DBB, "M", "z"),
- (0x1DBC, "M", "ʐ"),
- (0x1DBD, "M", "ʑ"),
- (0x1DBE, "M", "ʒ"),
- (0x1DBF, "M", "θ"),
- (0x1DC0, "V"),
- (0x1E00, "M", "ḁ"),
- (0x1E01, "V"),
- (0x1E02, "M", "ḃ"),
- (0x1E03, "V"),
- (0x1E04, "M", "ḅ"),
- (0x1E05, "V"),
- (0x1E06, "M", "ḇ"),
- (0x1E07, "V"),
- (0x1E08, "M", "ḉ"),
- (0x1E09, "V"),
- (0x1E0A, "M", "ḋ"),
- (0x1E0B, "V"),
- (0x1E0C, "M", "ḍ"),
- (0x1E0D, "V"),
- (0x1E0E, "M", "ḏ"),
- (0x1E0F, "V"),
- (0x1E10, "M", "ḑ"),
- (0x1E11, "V"),
- (0x1E12, "M", "ḓ"),
- (0x1E13, "V"),
- (0x1E14, "M", "ḕ"),
- (0x1E15, "V"),
- (0x1E16, "M", "ḗ"),
- (0x1E17, "V"),
- (0x1E18, "M", "ḙ"),
- (0x1E19, "V"),
- (0x1E1A, "M", "ḛ"),
- (0x1E1B, "V"),
- (0x1E1C, "M", "ḝ"),
- (0x1E1D, "V"),
- (0x1E1E, "M", "ḟ"),
- (0x1E1F, "V"),
- (0x1E20, "M", "ḡ"),
- (0x1E21, "V"),
- (0x1E22, "M", "ḣ"),
- (0x1E23, "V"),
- (0x1E24, "M", "ḥ"),
- (0x1E25, "V"),
- (0x1E26, "M", "ḧ"),
- (0x1E27, "V"),
- (0x1E28, "M", "ḩ"),
- (0x1E29, "V"),
- (0x1E2A, "M", "ḫ"),
- (0x1E2B, "V"),
- (0x1E2C, "M", "ḭ"),
- (0x1E2D, "V"),
- (0x1E2E, "M", "ḯ"),
- (0x1E2F, "V"),
- (0x1E30, "M", "ḱ"),
- (0x1E31, "V"),
- (0x1E32, "M", "ḳ"),
- (0x1E33, "V"),
- (0x1E34, "M", "ḵ"),
- (0x1E35, "V"),
- (0x1E36, "M", "ḷ"),
- (0x1E37, "V"),
- (0x1E38, "M", "ḹ"),
- (0x1E39, "V"),
- (0x1E3A, "M", "ḻ"),
- (0x1E3B, "V"),
- (0x1E3C, "M", "ḽ"),
- (0x1E3D, "V"),
- (0x1E3E, "M", "ḿ"),
- (0x1E3F, "V"),
- (0x1E40, "M", "ṁ"),
- (0x1E41, "V"),
- (0x1E42, "M", "ṃ"),
- (0x1E43, "V"),
- (0x1E44, "M", "ṅ"),
- (0x1E45, "V"),
- (0x1E46, "M", "ṇ"),
- (0x1E47, "V"),
- (0x1E48, "M", "ṉ"),
- (0x1E49, "V"),
- (0x1E4A, "M", "ṋ"),
- (0x1E4B, "V"),
- (0x1E4C, "M", "ṍ"),
- (0x1E4D, "V"),
- (0x1E4E, "M", "ṏ"),
- (0x1E4F, "V"),
- (0x1E50, "M", "ṑ"),
- (0x1E51, "V"),
- (0x1E52, "M", "ṓ"),
- (0x1E53, "V"),
- (0x1E54, "M", "ṕ"),
- (0x1E55, "V"),
- (0x1E56, "M", "ṗ"),
- (0x1E57, "V"),
- (0x1E58, "M", "ṙ"),
- (0x1E59, "V"),
- (0x1E5A, "M", "ṛ"),
- (0x1E5B, "V"),
- (0x1E5C, "M", "ṝ"),
- (0x1E5D, "V"),
- (0x1E5E, "M", "ṟ"),
- (0x1E5F, "V"),
- (0x1E60, "M", "ṡ"),
- (0x1E61, "V"),
- (0x1E62, "M", "ṣ"),
- (0x1E63, "V"),
- (0x1E64, "M", "ṥ"),
- (0x1E65, "V"),
- (0x1E66, "M", "ṧ"),
- (0x1E67, "V"),
- (0x1E68, "M", "ṩ"),
- (0x1E69, "V"),
- (0x1E6A, "M", "ṫ"),
- (0x1E6B, "V"),
- (0x1E6C, "M", "ṭ"),
- (0x1E6D, "V"),
- (0x1E6E, "M", "ṯ"),
- (0x1E6F, "V"),
- (0x1E70, "M", "ṱ"),
- (0x1E71, "V"),
- (0x1E72, "M", "ṳ"),
- (0x1E73, "V"),
- (0x1E74, "M", "ṵ"),
- (0x1E75, "V"),
- (0x1E76, "M", "ṷ"),
- (0x1E77, "V"),
- (0x1E78, "M", "ṹ"),
- (0x1E79, "V"),
- (0x1E7A, "M", "ṻ"),
- (0x1E7B, "V"),
- (0x1E7C, "M", "ṽ"),
- (0x1E7D, "V"),
- (0x1E7E, "M", "ṿ"),
- (0x1E7F, "V"),
- (0x1E80, "M", "ẁ"),
- (0x1E81, "V"),
- (0x1E82, "M", "ẃ"),
- (0x1E83, "V"),
- (0x1E84, "M", "ẅ"),
- (0x1E85, "V"),
- (0x1E86, "M", "ẇ"),
- (0x1E87, "V"),
- (0x1E88, "M", "ẉ"),
- (0x1E89, "V"),
- (0x1E8A, "M", "ẋ"),
- (0x1E8B, "V"),
- (0x1E8C, "M", "ẍ"),
- (0x1E8D, "V"),
- (0x1E8E, "M", "ẏ"),
- (0x1E8F, "V"),
- (0x1E90, "M", "ẑ"),
- (0x1E91, "V"),
- (0x1E92, "M", "ẓ"),
- (0x1E93, "V"),
- (0x1E94, "M", "ẕ"),
- (0x1E95, "V"),
- (0x1E9A, "M", "aʾ"),
- (0x1E9B, "M", "ṡ"),
- (0x1E9C, "V"),
- (0x1E9E, "M", "ß"),
- (0x1E9F, "V"),
- (0x1EA0, "M", "ạ"),
- (0x1EA1, "V"),
- (0x1EA2, "M", "ả"),
- (0x1EA3, "V"),
- (0x1EA4, "M", "ấ"),
- (0x1EA5, "V"),
- (0x1EA6, "M", "ầ"),
- (0x1EA7, "V"),
- (0x1EA8, "M", "ẩ"),
- (0x1EA9, "V"),
- (0x1EAA, "M", "ẫ"),
- (0x1EAB, "V"),
- (0x1EAC, "M", "ậ"),
- (0x1EAD, "V"),
- (0x1EAE, "M", "ắ"),
- (0x1EAF, "V"),
- (0x1EB0, "M", "ằ"),
- (0x1EB1, "V"),
- (0x1EB2, "M", "ẳ"),
- (0x1EB3, "V"),
- (0x1EB4, "M", "ẵ"),
- (0x1EB5, "V"),
- (0x1EB6, "M", "ặ"),
- (0x1EB7, "V"),
- (0x1EB8, "M", "ẹ"),
- (0x1EB9, "V"),
- (0x1EBA, "M", "ẻ"),
- (0x1EBB, "V"),
- (0x1EBC, "M", "ẽ"),
- (0x1EBD, "V"),
- (0x1EBE, "M", "ế"),
- (0x1EBF, "V"),
- (0x1EC0, "M", "ề"),
- (0x1EC1, "V"),
- (0x1EC2, "M", "ể"),
- (0x1EC3, "V"),
- (0x1EC4, "M", "ễ"),
- (0x1EC5, "V"),
- (0x1EC6, "M", "ệ"),
- (0x1EC7, "V"),
- (0x1EC8, "M", "ỉ"),
- (0x1EC9, "V"),
- (0x1ECA, "M", "ị"),
- (0x1ECB, "V"),
- (0x1ECC, "M", "ọ"),
- (0x1ECD, "V"),
- (0x1ECE, "M", "ỏ"),
- (0x1ECF, "V"),
- (0x1ED0, "M", "ố"),
- (0x1ED1, "V"),
- (0x1ED2, "M", "ồ"),
- (0x1ED3, "V"),
- (0x1ED4, "M", "ổ"),
- (0x1ED5, "V"),
- (0x1ED6, "M", "ỗ"),
- (0x1ED7, "V"),
- (0x1ED8, "M", "ộ"),
- (0x1ED9, "V"),
- (0x1EDA, "M", "ớ"),
- (0x1EDB, "V"),
- (0x1EDC, "M", "ờ"),
- (0x1EDD, "V"),
- (0x1EDE, "M", "ở"),
- (0x1EDF, "V"),
- (0x1EE0, "M", "ỡ"),
- (0x1EE1, "V"),
- (0x1EE2, "M", "ợ"),
- (0x1EE3, "V"),
- (0x1EE4, "M", "ụ"),
- (0x1EE5, "V"),
- (0x1EE6, "M", "ủ"),
- (0x1EE7, "V"),
- (0x1EE8, "M", "ứ"),
- (0x1EE9, "V"),
- (0x1EEA, "M", "ừ"),
- (0x1EEB, "V"),
- (0x1EEC, "M", "ử"),
- (0x1EED, "V"),
- (0x1EEE, "M", "ữ"),
- (0x1EEF, "V"),
- (0x1EF0, "M", "ự"),
- (0x1EF1, "V"),
- (0x1EF2, "M", "ỳ"),
- (0x1EF3, "V"),
- (0x1EF4, "M", "ỵ"),
- (0x1EF5, "V"),
- (0x1EF6, "M", "ỷ"),
- (0x1EF7, "V"),
- (0x1EF8, "M", "ỹ"),
- (0x1EF9, "V"),
- (0x1EFA, "M", "ỻ"),
- (0x1EFB, "V"),
- (0x1EFC, "M", "ỽ"),
- (0x1EFD, "V"),
- (0x1EFE, "M", "ỿ"),
- (0x1EFF, "V"),
- (0x1F08, "M", "ἀ"),
- (0x1F09, "M", "ἁ"),
- (0x1F0A, "M", "ἂ"),
- (0x1F0B, "M", "ἃ"),
- (0x1F0C, "M", "ἄ"),
- (0x1F0D, "M", "ἅ"),
- (0x1F0E, "M", "ἆ"),
- (0x1F0F, "M", "ἇ"),
- (0x1F10, "V"),
- (0x1F16, "X"),
- (0x1F18, "M", "ἐ"),
- (0x1F19, "M", "ἑ"),
- (0x1F1A, "M", "ἒ"),
- (0x1F1B, "M", "ἓ"),
- (0x1F1C, "M", "ἔ"),
- (0x1F1D, "M", "ἕ"),
- (0x1F1E, "X"),
- (0x1F20, "V"),
- (0x1F28, "M", "ἠ"),
- (0x1F29, "M", "ἡ"),
- (0x1F2A, "M", "ἢ"),
- (0x1F2B, "M", "ἣ"),
- (0x1F2C, "M", "ἤ"),
- (0x1F2D, "M", "ἥ"),
- (0x1F2E, "M", "ἦ"),
- (0x1F2F, "M", "ἧ"),
- (0x1F30, "V"),
- (0x1F38, "M", "ἰ"),
- (0x1F39, "M", "ἱ"),
- (0x1F3A, "M", "ἲ"),
- (0x1F3B, "M", "ἳ"),
- (0x1F3C, "M", "ἴ"),
- (0x1F3D, "M", "ἵ"),
- (0x1F3E, "M", "ἶ"),
- (0x1F3F, "M", "ἷ"),
- (0x1F40, "V"),
- (0x1F46, "X"),
- (0x1F48, "M", "ὀ"),
- (0x1F49, "M", "ὁ"),
- (0x1F4A, "M", "ὂ"),
- (0x1F4B, "M", "ὃ"),
- (0x1F4C, "M", "ὄ"),
- (0x1F4D, "M", "ὅ"),
- (0x1F4E, "X"),
- (0x1F50, "V"),
- (0x1F58, "X"),
- (0x1F59, "M", "ὑ"),
- (0x1F5A, "X"),
- (0x1F5B, "M", "ὓ"),
- (0x1F5C, "X"),
- (0x1F5D, "M", "ὕ"),
- (0x1F5E, "X"),
- (0x1F5F, "M", "ὗ"),
- (0x1F60, "V"),
- (0x1F68, "M", "ὠ"),
- (0x1F69, "M", "ὡ"),
- (0x1F6A, "M", "ὢ"),
- (0x1F6B, "M", "ὣ"),
- (0x1F6C, "M", "ὤ"),
- (0x1F6D, "M", "ὥ"),
- (0x1F6E, "M", "ὦ"),
- (0x1F6F, "M", "ὧ"),
- (0x1F70, "V"),
- (0x1F71, "M", "ά"),
- (0x1F72, "V"),
- (0x1F73, "M", "έ"),
- (0x1F74, "V"),
- (0x1F75, "M", "ή"),
- (0x1F76, "V"),
- (0x1F77, "M", "ί"),
- (0x1F78, "V"),
- (0x1F79, "M", "ό"),
- (0x1F7A, "V"),
- (0x1F7B, "M", "ύ"),
- (0x1F7C, "V"),
- (0x1F7D, "M", "ώ"),
- (0x1F7E, "X"),
- (0x1F80, "M", "ἀι"),
- (0x1F81, "M", "ἁι"),
- (0x1F82, "M", "ἂι"),
- (0x1F83, "M", "ἃι"),
- (0x1F84, "M", "ἄι"),
- (0x1F85, "M", "ἅι"),
- (0x1F86, "M", "ἆι"),
- (0x1F87, "M", "ἇι"),
- (0x1F88, "M", "ἀι"),
- (0x1F89, "M", "ἁι"),
- (0x1F8A, "M", "ἂι"),
- (0x1F8B, "M", "ἃι"),
- (0x1F8C, "M", "ἄι"),
- (0x1F8D, "M", "ἅι"),
- (0x1F8E, "M", "ἆι"),
- (0x1F8F, "M", "ἇι"),
- (0x1F90, "M", "ἠι"),
- (0x1F91, "M", "ἡι"),
- (0x1F92, "M", "ἢι"),
- (0x1F93, "M", "ἣι"),
- (0x1F94, "M", "ἤι"),
- (0x1F95, "M", "ἥι"),
- (0x1F96, "M", "ἦι"),
- (0x1F97, "M", "ἧι"),
- (0x1F98, "M", "ἠι"),
- (0x1F99, "M", "ἡι"),
- (0x1F9A, "M", "ἢι"),
- (0x1F9B, "M", "ἣι"),
- (0x1F9C, "M", "ἤι"),
- (0x1F9D, "M", "ἥι"),
- (0x1F9E, "M", "ἦι"),
- (0x1F9F, "M", "ἧι"),
- (0x1FA0, "M", "ὠι"),
- (0x1FA1, "M", "ὡι"),
- (0x1FA2, "M", "ὢι"),
- (0x1FA3, "M", "ὣι"),
- (0x1FA4, "M", "ὤι"),
- (0x1FA5, "M", "ὥι"),
- (0x1FA6, "M", "ὦι"),
- (0x1FA7, "M", "ὧι"),
- (0x1FA8, "M", "ὠι"),
- (0x1FA9, "M", "ὡι"),
- (0x1FAA, "M", "ὢι"),
- (0x1FAB, "M", "ὣι"),
- (0x1FAC, "M", "ὤι"),
- (0x1FAD, "M", "ὥι"),
- (0x1FAE, "M", "ὦι"),
- (0x1FAF, "M", "ὧι"),
- (0x1FB0, "V"),
- (0x1FB2, "M", "ὰι"),
- (0x1FB3, "M", "αι"),
- (0x1FB4, "M", "άι"),
- (0x1FB5, "X"),
- (0x1FB6, "V"),
- (0x1FB7, "M", "ᾶι"),
- (0x1FB8, "M", "ᾰ"),
- (0x1FB9, "M", "ᾱ"),
- (0x1FBA, "M", "ὰ"),
- (0x1FBB, "M", "ά"),
- (0x1FBC, "M", "αι"),
- (0x1FBD, "M", " ̓"),
- (0x1FBE, "M", "ι"),
- (0x1FBF, "M", " ̓"),
- (0x1FC0, "M", " ͂"),
- (0x1FC1, "M", " ̈͂"),
- (0x1FC2, "M", "ὴι"),
- (0x1FC3, "M", "ηι"),
- (0x1FC4, "M", "ήι"),
- (0x1FC5, "X"),
- (0x1FC6, "V"),
- (0x1FC7, "M", "ῆι"),
- (0x1FC8, "M", "ὲ"),
- (0x1FC9, "M", "έ"),
- (0x1FCA, "M", "ὴ"),
- (0x1FCB, "M", "ή"),
- (0x1FCC, "M", "ηι"),
- (0x1FCD, "M", " ̓̀"),
- (0x1FCE, "M", " ̓́"),
- (0x1FCF, "M", " ̓͂"),
- (0x1FD0, "V"),
- (0x1FD3, "M", "ΐ"),
- (0x1FD4, "X"),
- (0x1FD6, "V"),
- (0x1FD8, "M", "ῐ"),
- (0x1FD9, "M", "ῑ"),
- (0x1FDA, "M", "ὶ"),
- (0x1FDB, "M", "ί"),
- (0x1FDC, "X"),
- (0x1FDD, "M", " ̔̀"),
- (0x1FDE, "M", " ̔́"),
- (0x1FDF, "M", " ̔͂"),
- (0x1FE0, "V"),
- (0x1FE3, "M", "ΰ"),
- (0x1FE4, "V"),
- (0x1FE8, "M", "ῠ"),
- (0x1FE9, "M", "ῡ"),
- (0x1FEA, "M", "ὺ"),
- (0x1FEB, "M", "ύ"),
- (0x1FEC, "M", "ῥ"),
- (0x1FED, "M", " ̈̀"),
- (0x1FEE, "M", " ̈́"),
- (0x1FEF, "M", "`"),
- (0x1FF0, "X"),
- (0x1FF2, "M", "ὼι"),
- (0x1FF3, "M", "ωι"),
- (0x1FF4, "M", "ώι"),
- (0x1FF5, "X"),
- (0x1FF6, "V"),
- (0x1FF7, "M", "ῶι"),
- (0x1FF8, "M", "ὸ"),
- (0x1FF9, "M", "ό"),
- (0x1FFA, "M", "ὼ"),
- (0x1FFB, "M", "ώ"),
- (0x1FFC, "M", "ωι"),
- (0x1FFD, "M", " ́"),
- (0x1FFE, "M", " ̔"),
- (0x1FFF, "X"),
- (0x2000, "M", " "),
- (0x200B, "I"),
- (0x200C, "D", ""),
- (0x200E, "X"),
- (0x2010, "V"),
- (0x2011, "M", "‐"),
- (0x2012, "V"),
- (0x2017, "M", " ̳"),
- (0x2018, "V"),
- (0x2024, "X"),
- (0x2027, "V"),
- (0x2028, "X"),
- (0x202F, "M", " "),
- (0x2030, "V"),
- (0x2033, "M", "′′"),
- (0x2034, "M", "′′′"),
- (0x2035, "V"),
- (0x2036, "M", "‵‵"),
- (0x2037, "M", "‵‵‵"),
- (0x2038, "V"),
- (0x203C, "M", "!!"),
- (0x203D, "V"),
- (0x203E, "M", " ̅"),
- (0x203F, "V"),
- (0x2047, "M", "??"),
- (0x2048, "M", "?!"),
- (0x2049, "M", "!?"),
- (0x204A, "V"),
- (0x2057, "M", "′′′′"),
- (0x2058, "V"),
- (0x205F, "M", " "),
- (0x2060, "I"),
- (0x2065, "X"),
- (0x206A, "I"),
- (0x2070, "M", "0"),
- (0x2071, "M", "i"),
- (0x2072, "X"),
- (0x2074, "M", "4"),
- (0x2075, "M", "5"),
- (0x2076, "M", "6"),
- (0x2077, "M", "7"),
- (0x2078, "M", "8"),
- (0x2079, "M", "9"),
- (0x207A, "M", "+"),
- (0x207B, "M", "−"),
- (0x207C, "M", "="),
- (0x207D, "M", "("),
- (0x207E, "M", ")"),
- (0x207F, "M", "n"),
- (0x2080, "M", "0"),
- (0x2081, "M", "1"),
- (0x2082, "M", "2"),
- (0x2083, "M", "3"),
- (0x2084, "M", "4"),
- (0x2085, "M", "5"),
- (0x2086, "M", "6"),
- (0x2087, "M", "7"),
- (0x2088, "M", "8"),
- (0x2089, "M", "9"),
- (0x208A, "M", "+"),
- (0x208B, "M", "−"),
- (0x208C, "M", "="),
- (0x208D, "M", "("),
- (0x208E, "M", ")"),
- (0x208F, "X"),
- (0x2090, "M", "a"),
- (0x2091, "M", "e"),
- (0x2092, "M", "o"),
- (0x2093, "M", "x"),
- (0x2094, "M", "ə"),
- (0x2095, "M", "h"),
- (0x2096, "M", "k"),
- (0x2097, "M", "l"),
- (0x2098, "M", "m"),
- (0x2099, "M", "n"),
- (0x209A, "M", "p"),
- (0x209B, "M", "s"),
- (0x209C, "M", "t"),
- (0x209D, "X"),
- (0x20A0, "V"),
- (0x20A8, "M", "rs"),
- (0x20A9, "V"),
- (0x20C2, "X"),
- (0x20D0, "V"),
- (0x20F1, "X"),
- (0x2100, "M", "a/c"),
- (0x2101, "M", "a/s"),
- (0x2102, "M", "c"),
- (0x2103, "M", "°c"),
- (0x2104, "V"),
- (0x2105, "M", "c/o"),
- (0x2106, "M", "c/u"),
- (0x2107, "M", "ɛ"),
- (0x2108, "V"),
- (0x2109, "M", "°f"),
- (0x210A, "M", "g"),
- (0x210B, "M", "h"),
- (0x210F, "M", "ħ"),
- (0x2110, "M", "i"),
- (0x2112, "M", "l"),
- (0x2114, "V"),
- (0x2115, "M", "n"),
- (0x2116, "M", "no"),
- (0x2117, "V"),
- (0x2119, "M", "p"),
- (0x211A, "M", "q"),
- (0x211B, "M", "r"),
- (0x211E, "V"),
- (0x2120, "M", "sm"),
- (0x2121, "M", "tel"),
- (0x2122, "M", "tm"),
- (0x2123, "V"),
- (0x2124, "M", "z"),
- (0x2125, "V"),
- (0x2126, "M", "ω"),
- (0x2127, "V"),
- (0x2128, "M", "z"),
- (0x2129, "V"),
- (0x212A, "M", "k"),
- (0x212B, "M", "å"),
- (0x212C, "M", "b"),
- (0x212D, "M", "c"),
- (0x212E, "V"),
- (0x212F, "M", "e"),
- (0x2131, "M", "f"),
- (0x2132, "M", "ⅎ"),
- (0x2133, "M", "m"),
- (0x2134, "M", "o"),
- (0x2135, "M", "א"),
- (0x2136, "M", "ב"),
- (0x2137, "M", "ג"),
- (0x2138, "M", "ד"),
- (0x2139, "M", "i"),
- (0x213A, "V"),
- (0x213B, "M", "fax"),
- (0x213C, "M", "π"),
- (0x213D, "M", "γ"),
- (0x213F, "M", "π"),
- (0x2140, "M", "∑"),
- (0x2141, "V"),
- (0x2145, "M", "d"),
- (0x2147, "M", "e"),
- (0x2148, "M", "i"),
- (0x2149, "M", "j"),
- (0x214A, "V"),
- (0x2150, "M", "1⁄7"),
- (0x2151, "M", "1⁄9"),
- (0x2152, "M", "1⁄10"),
- (0x2153, "M", "1⁄3"),
- (0x2154, "M", "2⁄3"),
- (0x2155, "M", "1⁄5"),
- (0x2156, "M", "2⁄5"),
- (0x2157, "M", "3⁄5"),
- (0x2158, "M", "4⁄5"),
- (0x2159, "M", "1⁄6"),
- (0x215A, "M", "5⁄6"),
- (0x215B, "M", "1⁄8"),
- (0x215C, "M", "3⁄8"),
- (0x215D, "M", "5⁄8"),
- (0x215E, "M", "7⁄8"),
- (0x215F, "M", "1⁄"),
- (0x2160, "M", "i"),
- (0x2161, "M", "ii"),
- (0x2162, "M", "iii"),
- (0x2163, "M", "iv"),
- (0x2164, "M", "v"),
- (0x2165, "M", "vi"),
- (0x2166, "M", "vii"),
- (0x2167, "M", "viii"),
- (0x2168, "M", "ix"),
- (0x2169, "M", "x"),
- (0x216A, "M", "xi"),
- (0x216B, "M", "xii"),
- (0x216C, "M", "l"),
- (0x216D, "M", "c"),
- (0x216E, "M", "d"),
- (0x216F, "M", "m"),
- (0x2170, "M", "i"),
- (0x2171, "M", "ii"),
- (0x2172, "M", "iii"),
- (0x2173, "M", "iv"),
- (0x2174, "M", "v"),
- (0x2175, "M", "vi"),
- (0x2176, "M", "vii"),
- (0x2177, "M", "viii"),
- (0x2178, "M", "ix"),
- (0x2179, "M", "x"),
- (0x217A, "M", "xi"),
- (0x217B, "M", "xii"),
- (0x217C, "M", "l"),
- (0x217D, "M", "c"),
- (0x217E, "M", "d"),
- (0x217F, "M", "m"),
- (0x2180, "V"),
- (0x2183, "M", "ↄ"),
- (0x2184, "V"),
- (0x2189, "M", "0⁄3"),
- (0x218A, "V"),
- (0x218C, "X"),
- (0x2190, "V"),
- (0x222C, "M", "∫∫"),
- (0x222D, "M", "∫∫∫"),
- (0x222E, "V"),
- (0x222F, "M", "∮∮"),
- (0x2230, "M", "∮∮∮"),
- (0x2231, "V"),
- (0x2329, "M", "〈"),
- (0x232A, "M", "〉"),
- (0x232B, "V"),
- (0x242A, "X"),
- (0x2440, "V"),
- (0x244B, "X"),
- (0x2460, "M", "1"),
- (0x2461, "M", "2"),
- (0x2462, "M", "3"),
- (0x2463, "M", "4"),
- (0x2464, "M", "5"),
- (0x2465, "M", "6"),
- (0x2466, "M", "7"),
- (0x2467, "M", "8"),
- (0x2468, "M", "9"),
- (0x2469, "M", "10"),
- (0x246A, "M", "11"),
- (0x246B, "M", "12"),
- (0x246C, "M", "13"),
- (0x246D, "M", "14"),
- (0x246E, "M", "15"),
- (0x246F, "M", "16"),
- (0x2470, "M", "17"),
- (0x2471, "M", "18"),
- (0x2472, "M", "19"),
- (0x2473, "M", "20"),
- (0x2474, "M", "(1)"),
- (0x2475, "M", "(2)"),
- (0x2476, "M", "(3)"),
- (0x2477, "M", "(4)"),
- (0x2478, "M", "(5)"),
- (0x2479, "M", "(6)"),
- (0x247A, "M", "(7)"),
- (0x247B, "M", "(8)"),
- (0x247C, "M", "(9)"),
- (0x247D, "M", "(10)"),
- (0x247E, "M", "(11)"),
- (0x247F, "M", "(12)"),
- (0x2480, "M", "(13)"),
- (0x2481, "M", "(14)"),
- (0x2482, "M", "(15)"),
- (0x2483, "M", "(16)"),
- (0x2484, "M", "(17)"),
- (0x2485, "M", "(18)"),
- (0x2486, "M", "(19)"),
- (0x2487, "M", "(20)"),
- (0x2488, "X"),
- (0x249C, "M", "(a)"),
- (0x249D, "M", "(b)"),
- (0x249E, "M", "(c)"),
- (0x249F, "M", "(d)"),
- (0x24A0, "M", "(e)"),
- (0x24A1, "M", "(f)"),
- (0x24A2, "M", "(g)"),
- (0x24A3, "M", "(h)"),
- (0x24A4, "M", "(i)"),
- (0x24A5, "M", "(j)"),
- (0x24A6, "M", "(k)"),
- (0x24A7, "M", "(l)"),
- (0x24A8, "M", "(m)"),
- (0x24A9, "M", "(n)"),
- (0x24AA, "M", "(o)"),
- (0x24AB, "M", "(p)"),
- (0x24AC, "M", "(q)"),
- (0x24AD, "M", "(r)"),
- (0x24AE, "M", "(s)"),
- (0x24AF, "M", "(t)"),
- (0x24B0, "M", "(u)"),
- (0x24B1, "M", "(v)"),
- (0x24B2, "M", "(w)"),
- (0x24B3, "M", "(x)"),
- (0x24B4, "M", "(y)"),
- (0x24B5, "M", "(z)"),
- (0x24B6, "M", "a"),
- (0x24B7, "M", "b"),
- (0x24B8, "M", "c"),
- (0x24B9, "M", "d"),
- (0x24BA, "M", "e"),
- (0x24BB, "M", "f"),
- (0x24BC, "M", "g"),
- (0x24BD, "M", "h"),
- (0x24BE, "M", "i"),
- (0x24BF, "M", "j"),
- (0x24C0, "M", "k"),
- (0x24C1, "M", "l"),
- (0x24C2, "M", "m"),
- (0x24C3, "M", "n"),
- (0x24C4, "M", "o"),
- (0x24C5, "M", "p"),
- (0x24C6, "M", "q"),
- (0x24C7, "M", "r"),
- (0x24C8, "M", "s"),
- (0x24C9, "M", "t"),
- (0x24CA, "M", "u"),
- (0x24CB, "M", "v"),
- (0x24CC, "M", "w"),
- (0x24CD, "M", "x"),
- (0x24CE, "M", "y"),
- (0x24CF, "M", "z"),
- (0x24D0, "M", "a"),
- (0x24D1, "M", "b"),
- (0x24D2, "M", "c"),
- (0x24D3, "M", "d"),
- (0x24D4, "M", "e"),
- (0x24D5, "M", "f"),
- (0x24D6, "M", "g"),
- (0x24D7, "M", "h"),
- (0x24D8, "M", "i"),
- (0x24D9, "M", "j"),
- (0x24DA, "M", "k"),
- (0x24DB, "M", "l"),
- (0x24DC, "M", "m"),
- (0x24DD, "M", "n"),
- (0x24DE, "M", "o"),
- (0x24DF, "M", "p"),
- (0x24E0, "M", "q"),
- (0x24E1, "M", "r"),
- (0x24E2, "M", "s"),
- (0x24E3, "M", "t"),
- (0x24E4, "M", "u"),
- (0x24E5, "M", "v"),
- (0x24E6, "M", "w"),
- (0x24E7, "M", "x"),
- (0x24E8, "M", "y"),
- (0x24E9, "M", "z"),
- (0x24EA, "M", "0"),
- (0x24EB, "V"),
- (0x2A0C, "M", "∫∫∫∫"),
- (0x2A0D, "V"),
- (0x2A74, "M", "::="),
- (0x2A75, "M", "=="),
- (0x2A76, "M", "==="),
- (0x2A77, "V"),
- (0x2ADC, "M", "⫝̸"),
- (0x2ADD, "V"),
- (0x2B74, "X"),
- (0x2B76, "V"),
- (0x2C00, "M", "ⰰ"),
- (0x2C01, "M", "ⰱ"),
- (0x2C02, "M", "ⰲ"),
- (0x2C03, "M", "ⰳ"),
- (0x2C04, "M", "ⰴ"),
- (0x2C05, "M", "ⰵ"),
- (0x2C06, "M", "ⰶ"),
- (0x2C07, "M", "ⰷ"),
- (0x2C08, "M", "ⰸ"),
- (0x2C09, "M", "ⰹ"),
- (0x2C0A, "M", "ⰺ"),
- (0x2C0B, "M", "ⰻ"),
- (0x2C0C, "M", "ⰼ"),
- (0x2C0D, "M", "ⰽ"),
- (0x2C0E, "M", "ⰾ"),
- (0x2C0F, "M", "ⰿ"),
- (0x2C10, "M", "ⱀ"),
- (0x2C11, "M", "ⱁ"),
- (0x2C12, "M", "ⱂ"),
- (0x2C13, "M", "ⱃ"),
- (0x2C14, "M", "ⱄ"),
- (0x2C15, "M", "ⱅ"),
- (0x2C16, "M", "ⱆ"),
- (0x2C17, "M", "ⱇ"),
- (0x2C18, "M", "ⱈ"),
- (0x2C19, "M", "ⱉ"),
- (0x2C1A, "M", "ⱊ"),
- (0x2C1B, "M", "ⱋ"),
- (0x2C1C, "M", "ⱌ"),
- (0x2C1D, "M", "ⱍ"),
- (0x2C1E, "M", "ⱎ"),
- (0x2C1F, "M", "ⱏ"),
- (0x2C20, "M", "ⱐ"),
- (0x2C21, "M", "ⱑ"),
- (0x2C22, "M", "ⱒ"),
- (0x2C23, "M", "ⱓ"),
- (0x2C24, "M", "ⱔ"),
- (0x2C25, "M", "ⱕ"),
- (0x2C26, "M", "ⱖ"),
- (0x2C27, "M", "ⱗ"),
- (0x2C28, "M", "ⱘ"),
- (0x2C29, "M", "ⱙ"),
- (0x2C2A, "M", "ⱚ"),
- (0x2C2B, "M", "ⱛ"),
- (0x2C2C, "M", "ⱜ"),
- (0x2C2D, "M", "ⱝ"),
- (0x2C2E, "M", "ⱞ"),
- (0x2C2F, "M", "ⱟ"),
- (0x2C30, "V"),
- (0x2C60, "M", "ⱡ"),
- (0x2C61, "V"),
- (0x2C62, "M", "ɫ"),
- (0x2C63, "M", "ᵽ"),
- (0x2C64, "M", "ɽ"),
- (0x2C65, "V"),
- (0x2C67, "M", "ⱨ"),
- (0x2C68, "V"),
- (0x2C69, "M", "ⱪ"),
- (0x2C6A, "V"),
- (0x2C6B, "M", "ⱬ"),
- (0x2C6C, "V"),
- (0x2C6D, "M", "ɑ"),
- (0x2C6E, "M", "ɱ"),
- (0x2C6F, "M", "ɐ"),
- (0x2C70, "M", "ɒ"),
- (0x2C71, "V"),
- (0x2C72, "M", "ⱳ"),
- (0x2C73, "V"),
- (0x2C75, "M", "ⱶ"),
- (0x2C76, "V"),
- (0x2C7C, "M", "j"),
- (0x2C7D, "M", "v"),
- (0x2C7E, "M", "ȿ"),
- (0x2C7F, "M", "ɀ"),
- (0x2C80, "M", "ⲁ"),
- (0x2C81, "V"),
- (0x2C82, "M", "ⲃ"),
- (0x2C83, "V"),
- (0x2C84, "M", "ⲅ"),
- (0x2C85, "V"),
- (0x2C86, "M", "ⲇ"),
- (0x2C87, "V"),
- (0x2C88, "M", "ⲉ"),
- (0x2C89, "V"),
- (0x2C8A, "M", "ⲋ"),
- (0x2C8B, "V"),
- (0x2C8C, "M", "ⲍ"),
- (0x2C8D, "V"),
- (0x2C8E, "M", "ⲏ"),
- (0x2C8F, "V"),
- (0x2C90, "M", "ⲑ"),
- (0x2C91, "V"),
- (0x2C92, "M", "ⲓ"),
- (0x2C93, "V"),
- (0x2C94, "M", "ⲕ"),
- (0x2C95, "V"),
- (0x2C96, "M", "ⲗ"),
- (0x2C97, "V"),
- (0x2C98, "M", "ⲙ"),
- (0x2C99, "V"),
- (0x2C9A, "M", "ⲛ"),
- (0x2C9B, "V"),
- (0x2C9C, "M", "ⲝ"),
- (0x2C9D, "V"),
- (0x2C9E, "M", "ⲟ"),
- (0x2C9F, "V"),
- (0x2CA0, "M", "ⲡ"),
- (0x2CA1, "V"),
- (0x2CA2, "M", "ⲣ"),
- (0x2CA3, "V"),
- (0x2CA4, "M", "ⲥ"),
- (0x2CA5, "V"),
- (0x2CA6, "M", "ⲧ"),
- (0x2CA7, "V"),
- (0x2CA8, "M", "ⲩ"),
- (0x2CA9, "V"),
- (0x2CAA, "M", "ⲫ"),
- (0x2CAB, "V"),
- (0x2CAC, "M", "ⲭ"),
- (0x2CAD, "V"),
- (0x2CAE, "M", "ⲯ"),
- (0x2CAF, "V"),
- (0x2CB0, "M", "ⲱ"),
- (0x2CB1, "V"),
- (0x2CB2, "M", "ⲳ"),
- (0x2CB3, "V"),
- (0x2CB4, "M", "ⲵ"),
- (0x2CB5, "V"),
- (0x2CB6, "M", "ⲷ"),
- (0x2CB7, "V"),
- (0x2CB8, "M", "ⲹ"),
- (0x2CB9, "V"),
- (0x2CBA, "M", "ⲻ"),
- (0x2CBB, "V"),
- (0x2CBC, "M", "ⲽ"),
- (0x2CBD, "V"),
- (0x2CBE, "M", "ⲿ"),
- (0x2CBF, "V"),
- (0x2CC0, "M", "ⳁ"),
- (0x2CC1, "V"),
- (0x2CC2, "M", "ⳃ"),
- (0x2CC3, "V"),
- (0x2CC4, "M", "ⳅ"),
- (0x2CC5, "V"),
- (0x2CC6, "M", "ⳇ"),
- (0x2CC7, "V"),
- (0x2CC8, "M", "ⳉ"),
- (0x2CC9, "V"),
- (0x2CCA, "M", "ⳋ"),
- (0x2CCB, "V"),
- (0x2CCC, "M", "ⳍ"),
- (0x2CCD, "V"),
- (0x2CCE, "M", "ⳏ"),
- (0x2CCF, "V"),
- (0x2CD0, "M", "ⳑ"),
- (0x2CD1, "V"),
- (0x2CD2, "M", "ⳓ"),
- (0x2CD3, "V"),
- (0x2CD4, "M", "ⳕ"),
- (0x2CD5, "V"),
- (0x2CD6, "M", "ⳗ"),
- (0x2CD7, "V"),
- (0x2CD8, "M", "ⳙ"),
- (0x2CD9, "V"),
- (0x2CDA, "M", "ⳛ"),
- (0x2CDB, "V"),
- (0x2CDC, "M", "ⳝ"),
- (0x2CDD, "V"),
- (0x2CDE, "M", "ⳟ"),
- (0x2CDF, "V"),
- (0x2CE0, "M", "ⳡ"),
- (0x2CE1, "V"),
- (0x2CE2, "M", "ⳣ"),
- (0x2CE3, "V"),
- (0x2CEB, "M", "ⳬ"),
- (0x2CEC, "V"),
- (0x2CED, "M", "ⳮ"),
- (0x2CEE, "V"),
- (0x2CF2, "M", "ⳳ"),
- (0x2CF3, "V"),
- (0x2CF4, "X"),
- (0x2CF9, "V"),
- (0x2D26, "X"),
- (0x2D27, "V"),
- (0x2D28, "X"),
- (0x2D2D, "V"),
- (0x2D2E, "X"),
- (0x2D30, "V"),
- (0x2D68, "X"),
- (0x2D6F, "M", "ⵡ"),
- (0x2D70, "V"),
- (0x2D71, "X"),
- (0x2D7F, "V"),
- (0x2D97, "X"),
- (0x2DA0, "V"),
- (0x2DA7, "X"),
- (0x2DA8, "V"),
- (0x2DAF, "X"),
- (0x2DB0, "V"),
- (0x2DB7, "X"),
- (0x2DB8, "V"),
- (0x2DBF, "X"),
- (0x2DC0, "V"),
- (0x2DC7, "X"),
- (0x2DC8, "V"),
- (0x2DCF, "X"),
- (0x2DD0, "V"),
- (0x2DD7, "X"),
- (0x2DD8, "V"),
- (0x2DDF, "X"),
- (0x2DE0, "V"),
- (0x2E5E, "X"),
- (0x2E80, "V"),
- (0x2E9A, "X"),
- (0x2E9B, "V"),
- (0x2E9F, "M", "母"),
- (0x2EA0, "V"),
- (0x2EF3, "M", "龟"),
- (0x2EF4, "X"),
- (0x2F00, "M", "一"),
- (0x2F01, "M", "丨"),
- (0x2F02, "M", "丶"),
- (0x2F03, "M", "丿"),
- (0x2F04, "M", "乙"),
- (0x2F05, "M", "亅"),
- (0x2F06, "M", "二"),
- (0x2F07, "M", "亠"),
- (0x2F08, "M", "人"),
- (0x2F09, "M", "儿"),
- (0x2F0A, "M", "入"),
- (0x2F0B, "M", "八"),
- (0x2F0C, "M", "冂"),
- (0x2F0D, "M", "冖"),
- (0x2F0E, "M", "冫"),
- (0x2F0F, "M", "几"),
- (0x2F10, "M", "凵"),
- (0x2F11, "M", "刀"),
- (0x2F12, "M", "力"),
- (0x2F13, "M", "勹"),
- (0x2F14, "M", "匕"),
- (0x2F15, "M", "匚"),
- (0x2F16, "M", "匸"),
- (0x2F17, "M", "十"),
- (0x2F18, "M", "卜"),
- (0x2F19, "M", "卩"),
- (0x2F1A, "M", "厂"),
- (0x2F1B, "M", "厶"),
- (0x2F1C, "M", "又"),
- (0x2F1D, "M", "口"),
- (0x2F1E, "M", "囗"),
- (0x2F1F, "M", "土"),
- (0x2F20, "M", "士"),
- (0x2F21, "M", "夂"),
- (0x2F22, "M", "夊"),
- (0x2F23, "M", "夕"),
- (0x2F24, "M", "大"),
- (0x2F25, "M", "女"),
- (0x2F26, "M", "子"),
- (0x2F27, "M", "宀"),
- (0x2F28, "M", "寸"),
- (0x2F29, "M", "小"),
- (0x2F2A, "M", "尢"),
- (0x2F2B, "M", "尸"),
- (0x2F2C, "M", "屮"),
- (0x2F2D, "M", "山"),
- (0x2F2E, "M", "巛"),
- (0x2F2F, "M", "工"),
- (0x2F30, "M", "己"),
- (0x2F31, "M", "巾"),
- (0x2F32, "M", "干"),
- (0x2F33, "M", "幺"),
- (0x2F34, "M", "广"),
- (0x2F35, "M", "廴"),
- (0x2F36, "M", "廾"),
- (0x2F37, "M", "弋"),
- (0x2F38, "M", "弓"),
- (0x2F39, "M", "彐"),
- (0x2F3A, "M", "彡"),
- (0x2F3B, "M", "彳"),
- (0x2F3C, "M", "心"),
- (0x2F3D, "M", "戈"),
- (0x2F3E, "M", "戶"),
- (0x2F3F, "M", "手"),
- (0x2F40, "M", "支"),
- (0x2F41, "M", "攴"),
- (0x2F42, "M", "文"),
- (0x2F43, "M", "斗"),
- (0x2F44, "M", "斤"),
- (0x2F45, "M", "方"),
- (0x2F46, "M", "无"),
- (0x2F47, "M", "日"),
- (0x2F48, "M", "曰"),
- (0x2F49, "M", "月"),
- (0x2F4A, "M", "木"),
- (0x2F4B, "M", "欠"),
- (0x2F4C, "M", "止"),
- (0x2F4D, "M", "歹"),
- (0x2F4E, "M", "殳"),
- (0x2F4F, "M", "毋"),
- (0x2F50, "M", "比"),
- (0x2F51, "M", "毛"),
- (0x2F52, "M", "氏"),
- (0x2F53, "M", "气"),
- (0x2F54, "M", "水"),
- (0x2F55, "M", "火"),
- (0x2F56, "M", "爪"),
- (0x2F57, "M", "父"),
- (0x2F58, "M", "爻"),
- (0x2F59, "M", "爿"),
- (0x2F5A, "M", "片"),
- (0x2F5B, "M", "牙"),
- (0x2F5C, "M", "牛"),
- (0x2F5D, "M", "犬"),
- (0x2F5E, "M", "玄"),
- (0x2F5F, "M", "玉"),
- (0x2F60, "M", "瓜"),
- (0x2F61, "M", "瓦"),
- (0x2F62, "M", "甘"),
- (0x2F63, "M", "生"),
- (0x2F64, "M", "用"),
- (0x2F65, "M", "田"),
- (0x2F66, "M", "疋"),
- (0x2F67, "M", "疒"),
- (0x2F68, "M", "癶"),
- (0x2F69, "M", "白"),
- (0x2F6A, "M", "皮"),
- (0x2F6B, "M", "皿"),
- (0x2F6C, "M", "目"),
- (0x2F6D, "M", "矛"),
- (0x2F6E, "M", "矢"),
- (0x2F6F, "M", "石"),
- (0x2F70, "M", "示"),
- (0x2F71, "M", "禸"),
- (0x2F72, "M", "禾"),
- (0x2F73, "M", "穴"),
- (0x2F74, "M", "立"),
- (0x2F75, "M", "竹"),
- (0x2F76, "M", "米"),
- (0x2F77, "M", "糸"),
- (0x2F78, "M", "缶"),
- (0x2F79, "M", "网"),
- (0x2F7A, "M", "羊"),
- (0x2F7B, "M", "羽"),
- (0x2F7C, "M", "老"),
- (0x2F7D, "M", "而"),
- (0x2F7E, "M", "耒"),
- (0x2F7F, "M", "耳"),
- (0x2F80, "M", "聿"),
- (0x2F81, "M", "肉"),
- (0x2F82, "M", "臣"),
- (0x2F83, "M", "自"),
- (0x2F84, "M", "至"),
- (0x2F85, "M", "臼"),
- (0x2F86, "M", "舌"),
- (0x2F87, "M", "舛"),
- (0x2F88, "M", "舟"),
- (0x2F89, "M", "艮"),
- (0x2F8A, "M", "色"),
- (0x2F8B, "M", "艸"),
- (0x2F8C, "M", "虍"),
- (0x2F8D, "M", "虫"),
- (0x2F8E, "M", "血"),
- (0x2F8F, "M", "行"),
- (0x2F90, "M", "衣"),
- (0x2F91, "M", "襾"),
- (0x2F92, "M", "見"),
- (0x2F93, "M", "角"),
- (0x2F94, "M", "言"),
- (0x2F95, "M", "谷"),
- (0x2F96, "M", "豆"),
- (0x2F97, "M", "豕"),
- (0x2F98, "M", "豸"),
- (0x2F99, "M", "貝"),
- (0x2F9A, "M", "赤"),
- (0x2F9B, "M", "走"),
- (0x2F9C, "M", "足"),
- (0x2F9D, "M", "身"),
- (0x2F9E, "M", "車"),
- (0x2F9F, "M", "辛"),
- (0x2FA0, "M", "辰"),
- (0x2FA1, "M", "辵"),
- (0x2FA2, "M", "邑"),
- (0x2FA3, "M", "酉"),
- (0x2FA4, "M", "釆"),
- (0x2FA5, "M", "里"),
- (0x2FA6, "M", "金"),
- (0x2FA7, "M", "長"),
- (0x2FA8, "M", "門"),
- (0x2FA9, "M", "阜"),
- (0x2FAA, "M", "隶"),
- (0x2FAB, "M", "隹"),
- (0x2FAC, "M", "雨"),
- (0x2FAD, "M", "靑"),
- (0x2FAE, "M", "非"),
- (0x2FAF, "M", "面"),
- (0x2FB0, "M", "革"),
- (0x2FB1, "M", "韋"),
- (0x2FB2, "M", "韭"),
- (0x2FB3, "M", "音"),
- (0x2FB4, "M", "頁"),
- (0x2FB5, "M", "風"),
- (0x2FB6, "M", "飛"),
- (0x2FB7, "M", "食"),
- (0x2FB8, "M", "首"),
- (0x2FB9, "M", "香"),
- (0x2FBA, "M", "馬"),
- (0x2FBB, "M", "骨"),
- (0x2FBC, "M", "高"),
- (0x2FBD, "M", "髟"),
- (0x2FBE, "M", "鬥"),
- (0x2FBF, "M", "鬯"),
- (0x2FC0, "M", "鬲"),
- (0x2FC1, "M", "鬼"),
- (0x2FC2, "M", "魚"),
- (0x2FC3, "M", "鳥"),
- (0x2FC4, "M", "鹵"),
- (0x2FC5, "M", "鹿"),
- (0x2FC6, "M", "麥"),
- (0x2FC7, "M", "麻"),
- (0x2FC8, "M", "黃"),
- (0x2FC9, "M", "黍"),
- (0x2FCA, "M", "黑"),
- (0x2FCB, "M", "黹"),
- (0x2FCC, "M", "黽"),
- (0x2FCD, "M", "鼎"),
- (0x2FCE, "M", "鼓"),
- (0x2FCF, "M", "鼠"),
- (0x2FD0, "M", "鼻"),
- (0x2FD1, "M", "齊"),
- (0x2FD2, "M", "齒"),
- (0x2FD3, "M", "龍"),
- (0x2FD4, "M", "龜"),
- (0x2FD5, "M", "龠"),
- (0x2FD6, "X"),
- (0x3000, "M", " "),
- (0x3001, "V"),
- (0x3002, "M", "."),
- (0x3003, "V"),
- (0x3036, "M", "〒"),
- (0x3037, "V"),
- (0x3038, "M", "十"),
- (0x3039, "M", "卄"),
- (0x303A, "M", "卅"),
- (0x303B, "V"),
- (0x3040, "X"),
- (0x3041, "V"),
- (0x3097, "X"),
- (0x3099, "V"),
- (0x309B, "M", " ゙"),
- (0x309C, "M", " ゚"),
- (0x309D, "V"),
- (0x309F, "M", "より"),
- (0x30A0, "V"),
- (0x30FF, "M", "コト"),
- (0x3100, "X"),
- (0x3105, "V"),
- (0x3130, "X"),
- (0x3131, "M", "ᄀ"),
- (0x3132, "M", "ᄁ"),
- (0x3133, "M", "ᆪ"),
- (0x3134, "M", "ᄂ"),
- (0x3135, "M", "ᆬ"),
- (0x3136, "M", "ᆭ"),
- (0x3137, "M", "ᄃ"),
- (0x3138, "M", "ᄄ"),
- (0x3139, "M", "ᄅ"),
- (0x313A, "M", "ᆰ"),
- (0x313B, "M", "ᆱ"),
- (0x313C, "M", "ᆲ"),
- (0x313D, "M", "ᆳ"),
- (0x313E, "M", "ᆴ"),
- (0x313F, "M", "ᆵ"),
- (0x3140, "M", "ᄚ"),
- (0x3141, "M", "ᄆ"),
- (0x3142, "M", "ᄇ"),
- (0x3143, "M", "ᄈ"),
- (0x3144, "M", "ᄡ"),
- (0x3145, "M", "ᄉ"),
- (0x3146, "M", "ᄊ"),
- (0x3147, "M", "ᄋ"),
- (0x3148, "M", "ᄌ"),
- (0x3149, "M", "ᄍ"),
- (0x314A, "M", "ᄎ"),
- (0x314B, "M", "ᄏ"),
- (0x314C, "M", "ᄐ"),
- (0x314D, "M", "ᄑ"),
- (0x314E, "M", "ᄒ"),
- (0x314F, "M", "ᅡ"),
- (0x3150, "M", "ᅢ"),
- (0x3151, "M", "ᅣ"),
- (0x3152, "M", "ᅤ"),
- (0x3153, "M", "ᅥ"),
- (0x3154, "M", "ᅦ"),
- (0x3155, "M", "ᅧ"),
- (0x3156, "M", "ᅨ"),
- (0x3157, "M", "ᅩ"),
- (0x3158, "M", "ᅪ"),
- (0x3159, "M", "ᅫ"),
- (0x315A, "M", "ᅬ"),
- (0x315B, "M", "ᅭ"),
- (0x315C, "M", "ᅮ"),
- (0x315D, "M", "ᅯ"),
- (0x315E, "M", "ᅰ"),
- (0x315F, "M", "ᅱ"),
- (0x3160, "M", "ᅲ"),
- (0x3161, "M", "ᅳ"),
- (0x3162, "M", "ᅴ"),
- (0x3163, "M", "ᅵ"),
- (0x3164, "I"),
- (0x3165, "M", "ᄔ"),
- (0x3166, "M", "ᄕ"),
- (0x3167, "M", "ᇇ"),
- (0x3168, "M", "ᇈ"),
- (0x3169, "M", "ᇌ"),
- (0x316A, "M", "ᇎ"),
- (0x316B, "M", "ᇓ"),
- (0x316C, "M", "ᇗ"),
- (0x316D, "M", "ᇙ"),
- (0x316E, "M", "ᄜ"),
- (0x316F, "M", "ᇝ"),
- (0x3170, "M", "ᇟ"),
- (0x3171, "M", "ᄝ"),
- (0x3172, "M", "ᄞ"),
- (0x3173, "M", "ᄠ"),
- (0x3174, "M", "ᄢ"),
- (0x3175, "M", "ᄣ"),
- (0x3176, "M", "ᄧ"),
- (0x3177, "M", "ᄩ"),
- (0x3178, "M", "ᄫ"),
- (0x3179, "M", "ᄬ"),
- (0x317A, "M", "ᄭ"),
- (0x317B, "M", "ᄮ"),
- (0x317C, "M", "ᄯ"),
- (0x317D, "M", "ᄲ"),
- (0x317E, "M", "ᄶ"),
- (0x317F, "M", "ᅀ"),
- (0x3180, "M", "ᅇ"),
- (0x3181, "M", "ᅌ"),
- (0x3182, "M", "ᇱ"),
- (0x3183, "M", "ᇲ"),
- (0x3184, "M", "ᅗ"),
- (0x3185, "M", "ᅘ"),
- (0x3186, "M", "ᅙ"),
- (0x3187, "M", "ᆄ"),
- (0x3188, "M", "ᆅ"),
- (0x3189, "M", "ᆈ"),
- (0x318A, "M", "ᆑ"),
- (0x318B, "M", "ᆒ"),
- (0x318C, "M", "ᆔ"),
- (0x318D, "M", "ᆞ"),
- (0x318E, "M", "ᆡ"),
- (0x318F, "X"),
- (0x3190, "V"),
- (0x3192, "M", "一"),
- (0x3193, "M", "二"),
- (0x3194, "M", "三"),
- (0x3195, "M", "四"),
- (0x3196, "M", "上"),
- (0x3197, "M", "中"),
- (0x3198, "M", "下"),
- (0x3199, "M", "甲"),
- (0x319A, "M", "乙"),
- (0x319B, "M", "丙"),
- (0x319C, "M", "丁"),
- (0x319D, "M", "天"),
- (0x319E, "M", "地"),
- (0x319F, "M", "人"),
- (0x31A0, "V"),
- (0x31E6, "X"),
- (0x31F0, "V"),
- (0x3200, "M", "(ᄀ)"),
- (0x3201, "M", "(ᄂ)"),
- (0x3202, "M", "(ᄃ)"),
- (0x3203, "M", "(ᄅ)"),
- (0x3204, "M", "(ᄆ)"),
- (0x3205, "M", "(ᄇ)"),
- (0x3206, "M", "(ᄉ)"),
- (0x3207, "M", "(ᄋ)"),
- (0x3208, "M", "(ᄌ)"),
- (0x3209, "M", "(ᄎ)"),
- (0x320A, "M", "(ᄏ)"),
- (0x320B, "M", "(ᄐ)"),
- (0x320C, "M", "(ᄑ)"),
- (0x320D, "M", "(ᄒ)"),
- (0x320E, "M", "(가)"),
- (0x320F, "M", "(나)"),
- (0x3210, "M", "(다)"),
- (0x3211, "M", "(라)"),
- (0x3212, "M", "(마)"),
- (0x3213, "M", "(바)"),
- (0x3214, "M", "(사)"),
- (0x3215, "M", "(아)"),
- (0x3216, "M", "(자)"),
- (0x3217, "M", "(차)"),
- (0x3218, "M", "(카)"),
- (0x3219, "M", "(타)"),
- (0x321A, "M", "(파)"),
- (0x321B, "M", "(하)"),
- (0x321C, "M", "(주)"),
- (0x321D, "M", "(오전)"),
- (0x321E, "M", "(오후)"),
- (0x321F, "X"),
- (0x3220, "M", "(一)"),
- (0x3221, "M", "(二)"),
- (0x3222, "M", "(三)"),
- (0x3223, "M", "(四)"),
- (0x3224, "M", "(五)"),
- (0x3225, "M", "(六)"),
- (0x3226, "M", "(七)"),
- (0x3227, "M", "(八)"),
- (0x3228, "M", "(九)"),
- (0x3229, "M", "(十)"),
- (0x322A, "M", "(月)"),
- (0x322B, "M", "(火)"),
- (0x322C, "M", "(水)"),
- (0x322D, "M", "(木)"),
- (0x322E, "M", "(金)"),
- (0x322F, "M", "(土)"),
- (0x3230, "M", "(日)"),
- (0x3231, "M", "(株)"),
- (0x3232, "M", "(有)"),
- (0x3233, "M", "(社)"),
- (0x3234, "M", "(名)"),
- (0x3235, "M", "(特)"),
- (0x3236, "M", "(財)"),
- (0x3237, "M", "(祝)"),
- (0x3238, "M", "(労)"),
- (0x3239, "M", "(代)"),
- (0x323A, "M", "(呼)"),
- (0x323B, "M", "(学)"),
- (0x323C, "M", "(監)"),
- (0x323D, "M", "(企)"),
- (0x323E, "M", "(資)"),
- (0x323F, "M", "(協)"),
- (0x3240, "M", "(祭)"),
- (0x3241, "M", "(休)"),
- (0x3242, "M", "(自)"),
- (0x3243, "M", "(至)"),
- (0x3244, "M", "問"),
- (0x3245, "M", "幼"),
- (0x3246, "M", "文"),
- (0x3247, "M", "箏"),
- (0x3248, "V"),
- (0x3250, "M", "pte"),
- (0x3251, "M", "21"),
- (0x3252, "M", "22"),
- (0x3253, "M", "23"),
- (0x3254, "M", "24"),
- (0x3255, "M", "25"),
- (0x3256, "M", "26"),
- (0x3257, "M", "27"),
- (0x3258, "M", "28"),
- (0x3259, "M", "29"),
- (0x325A, "M", "30"),
- (0x325B, "M", "31"),
- (0x325C, "M", "32"),
- (0x325D, "M", "33"),
- (0x325E, "M", "34"),
- (0x325F, "M", "35"),
- (0x3260, "M", "ᄀ"),
- (0x3261, "M", "ᄂ"),
- (0x3262, "M", "ᄃ"),
- (0x3263, "M", "ᄅ"),
- (0x3264, "M", "ᄆ"),
- (0x3265, "M", "ᄇ"),
- (0x3266, "M", "ᄉ"),
- (0x3267, "M", "ᄋ"),
- (0x3268, "M", "ᄌ"),
- (0x3269, "M", "ᄎ"),
- (0x326A, "M", "ᄏ"),
- (0x326B, "M", "ᄐ"),
- (0x326C, "M", "ᄑ"),
- (0x326D, "M", "ᄒ"),
- (0x326E, "M", "가"),
- (0x326F, "M", "나"),
- (0x3270, "M", "다"),
- (0x3271, "M", "라"),
- (0x3272, "M", "마"),
- (0x3273, "M", "바"),
- (0x3274, "M", "사"),
- (0x3275, "M", "아"),
- (0x3276, "M", "자"),
- (0x3277, "M", "차"),
- (0x3278, "M", "카"),
- (0x3279, "M", "타"),
- (0x327A, "M", "파"),
- (0x327B, "M", "하"),
- (0x327C, "M", "참고"),
- (0x327D, "M", "주의"),
- (0x327E, "M", "우"),
- (0x327F, "V"),
- (0x3280, "M", "一"),
- (0x3281, "M", "二"),
- (0x3282, "M", "三"),
- (0x3283, "M", "四"),
- (0x3284, "M", "五"),
- (0x3285, "M", "六"),
- (0x3286, "M", "七"),
- (0x3287, "M", "八"),
- (0x3288, "M", "九"),
- (0x3289, "M", "十"),
- (0x328A, "M", "月"),
- (0x328B, "M", "火"),
- (0x328C, "M", "水"),
- (0x328D, "M", "木"),
- (0x328E, "M", "金"),
- (0x328F, "M", "土"),
- (0x3290, "M", "日"),
- (0x3291, "M", "株"),
- (0x3292, "M", "有"),
- (0x3293, "M", "社"),
- (0x3294, "M", "名"),
- (0x3295, "M", "特"),
- (0x3296, "M", "財"),
- (0x3297, "M", "祝"),
- (0x3298, "M", "労"),
- (0x3299, "M", "秘"),
- (0x329A, "M", "男"),
- (0x329B, "M", "女"),
- (0x329C, "M", "適"),
- (0x329D, "M", "優"),
- (0x329E, "M", "印"),
- (0x329F, "M", "注"),
- (0x32A0, "M", "項"),
- (0x32A1, "M", "休"),
- (0x32A2, "M", "写"),
- (0x32A3, "M", "正"),
- (0x32A4, "M", "上"),
- (0x32A5, "M", "中"),
- (0x32A6, "M", "下"),
- (0x32A7, "M", "左"),
- (0x32A8, "M", "右"),
- (0x32A9, "M", "医"),
- (0x32AA, "M", "宗"),
- (0x32AB, "M", "学"),
- (0x32AC, "M", "監"),
- (0x32AD, "M", "企"),
- (0x32AE, "M", "資"),
- (0x32AF, "M", "協"),
- (0x32B0, "M", "夜"),
- (0x32B1, "M", "36"),
- (0x32B2, "M", "37"),
- (0x32B3, "M", "38"),
- (0x32B4, "M", "39"),
- (0x32B5, "M", "40"),
- (0x32B6, "M", "41"),
- (0x32B7, "M", "42"),
- (0x32B8, "M", "43"),
- (0x32B9, "M", "44"),
- (0x32BA, "M", "45"),
- (0x32BB, "M", "46"),
- (0x32BC, "M", "47"),
- (0x32BD, "M", "48"),
- (0x32BE, "M", "49"),
- (0x32BF, "M", "50"),
- (0x32C0, "M", "1月"),
- (0x32C1, "M", "2月"),
- (0x32C2, "M", "3月"),
- (0x32C3, "M", "4月"),
- (0x32C4, "M", "5月"),
- (0x32C5, "M", "6月"),
- (0x32C6, "M", "7月"),
- (0x32C7, "M", "8月"),
- (0x32C8, "M", "9月"),
- (0x32C9, "M", "10月"),
- (0x32CA, "M", "11月"),
- (0x32CB, "M", "12月"),
- (0x32CC, "M", "hg"),
- (0x32CD, "M", "erg"),
- (0x32CE, "M", "ev"),
- (0x32CF, "M", "ltd"),
- (0x32D0, "M", "ア"),
- (0x32D1, "M", "イ"),
- (0x32D2, "M", "ウ"),
- (0x32D3, "M", "エ"),
- (0x32D4, "M", "オ"),
- (0x32D5, "M", "カ"),
- (0x32D6, "M", "キ"),
- (0x32D7, "M", "ク"),
- (0x32D8, "M", "ケ"),
- (0x32D9, "M", "コ"),
- (0x32DA, "M", "サ"),
- (0x32DB, "M", "シ"),
- (0x32DC, "M", "ス"),
- (0x32DD, "M", "セ"),
- (0x32DE, "M", "ソ"),
- (0x32DF, "M", "タ"),
- (0x32E0, "M", "チ"),
- (0x32E1, "M", "ツ"),
- (0x32E2, "M", "テ"),
- (0x32E3, "M", "ト"),
- (0x32E4, "M", "ナ"),
- (0x32E5, "M", "ニ"),
- (0x32E6, "M", "ヌ"),
- (0x32E7, "M", "ネ"),
- (0x32E8, "M", "ノ"),
- (0x32E9, "M", "ハ"),
- (0x32EA, "M", "ヒ"),
- (0x32EB, "M", "フ"),
- (0x32EC, "M", "ヘ"),
- (0x32ED, "M", "ホ"),
- (0x32EE, "M", "マ"),
- (0x32EF, "M", "ミ"),
- (0x32F0, "M", "ム"),
- (0x32F1, "M", "メ"),
- (0x32F2, "M", "モ"),
- (0x32F3, "M", "ヤ"),
- (0x32F4, "M", "ユ"),
- (0x32F5, "M", "ヨ"),
- (0x32F6, "M", "ラ"),
- (0x32F7, "M", "リ"),
- (0x32F8, "M", "ル"),
- (0x32F9, "M", "レ"),
- (0x32FA, "M", "ロ"),
- (0x32FB, "M", "ワ"),
- (0x32FC, "M", "ヰ"),
- (0x32FD, "M", "ヱ"),
- (0x32FE, "M", "ヲ"),
- (0x32FF, "M", "令和"),
- (0x3300, "M", "アパート"),
- (0x3301, "M", "アルファ"),
- (0x3302, "M", "アンペア"),
- (0x3303, "M", "アール"),
- (0x3304, "M", "イニング"),
- (0x3305, "M", "インチ"),
- (0x3306, "M", "ウォン"),
- (0x3307, "M", "エスクード"),
- (0x3308, "M", "エーカー"),
- (0x3309, "M", "オンス"),
- (0x330A, "M", "オーム"),
- (0x330B, "M", "カイリ"),
- (0x330C, "M", "カラット"),
- (0x330D, "M", "カロリー"),
- (0x330E, "M", "ガロン"),
- (0x330F, "M", "ガンマ"),
- (0x3310, "M", "ギガ"),
- (0x3311, "M", "ギニー"),
- (0x3312, "M", "キュリー"),
- (0x3313, "M", "ギルダー"),
- (0x3314, "M", "キロ"),
- (0x3315, "M", "キログラム"),
- (0x3316, "M", "キロメートル"),
- (0x3317, "M", "キロワット"),
- (0x3318, "M", "グラム"),
- (0x3319, "M", "グラムトン"),
- (0x331A, "M", "クルゼイロ"),
- (0x331B, "M", "クローネ"),
- (0x331C, "M", "ケース"),
- (0x331D, "M", "コルナ"),
- (0x331E, "M", "コーポ"),
- (0x331F, "M", "サイクル"),
- (0x3320, "M", "サンチーム"),
- (0x3321, "M", "シリング"),
- (0x3322, "M", "センチ"),
- (0x3323, "M", "セント"),
- (0x3324, "M", "ダース"),
- (0x3325, "M", "デシ"),
- (0x3326, "M", "ドル"),
- (0x3327, "M", "トン"),
- (0x3328, "M", "ナノ"),
- (0x3329, "M", "ノット"),
- (0x332A, "M", "ハイツ"),
- (0x332B, "M", "パーセント"),
- (0x332C, "M", "パーツ"),
- (0x332D, "M", "バーレル"),
- (0x332E, "M", "ピアストル"),
- (0x332F, "M", "ピクル"),
- (0x3330, "M", "ピコ"),
- (0x3331, "M", "ビル"),
- (0x3332, "M", "ファラッド"),
- (0x3333, "M", "フィート"),
- (0x3334, "M", "ブッシェル"),
- (0x3335, "M", "フラン"),
- (0x3336, "M", "ヘクタール"),
- (0x3337, "M", "ペソ"),
- (0x3338, "M", "ペニヒ"),
- (0x3339, "M", "ヘルツ"),
- (0x333A, "M", "ペンス"),
- (0x333B, "M", "ページ"),
- (0x333C, "M", "ベータ"),
- (0x333D, "M", "ポイント"),
- (0x333E, "M", "ボルト"),
- (0x333F, "M", "ホン"),
- (0x3340, "M", "ポンド"),
- (0x3341, "M", "ホール"),
- (0x3342, "M", "ホーン"),
- (0x3343, "M", "マイクロ"),
- (0x3344, "M", "マイル"),
- (0x3345, "M", "マッハ"),
- (0x3346, "M", "マルク"),
- (0x3347, "M", "マンション"),
- (0x3348, "M", "ミクロン"),
- (0x3349, "M", "ミリ"),
- (0x334A, "M", "ミリバール"),
- (0x334B, "M", "メガ"),
- (0x334C, "M", "メガトン"),
- (0x334D, "M", "メートル"),
- (0x334E, "M", "ヤード"),
- (0x334F, "M", "ヤール"),
- (0x3350, "M", "ユアン"),
- (0x3351, "M", "リットル"),
- (0x3352, "M", "リラ"),
- (0x3353, "M", "ルピー"),
- (0x3354, "M", "ルーブル"),
- (0x3355, "M", "レム"),
- (0x3356, "M", "レントゲン"),
- (0x3357, "M", "ワット"),
- (0x3358, "M", "0点"),
- (0x3359, "M", "1点"),
- (0x335A, "M", "2点"),
- (0x335B, "M", "3点"),
- (0x335C, "M", "4点"),
- (0x335D, "M", "5点"),
- (0x335E, "M", "6点"),
- (0x335F, "M", "7点"),
- (0x3360, "M", "8点"),
- (0x3361, "M", "9点"),
- (0x3362, "M", "10点"),
- (0x3363, "M", "11点"),
- (0x3364, "M", "12点"),
- (0x3365, "M", "13点"),
- (0x3366, "M", "14点"),
- (0x3367, "M", "15点"),
- (0x3368, "M", "16点"),
- (0x3369, "M", "17点"),
- (0x336A, "M", "18点"),
- (0x336B, "M", "19点"),
- (0x336C, "M", "20点"),
- (0x336D, "M", "21点"),
- (0x336E, "M", "22点"),
- (0x336F, "M", "23点"),
- (0x3370, "M", "24点"),
- (0x3371, "M", "hpa"),
- (0x3372, "M", "da"),
- (0x3373, "M", "au"),
- (0x3374, "M", "bar"),
- (0x3375, "M", "ov"),
- (0x3376, "M", "pc"),
- (0x3377, "M", "dm"),
- (0x3378, "M", "dm2"),
- (0x3379, "M", "dm3"),
- (0x337A, "M", "iu"),
- (0x337B, "M", "平成"),
- (0x337C, "M", "昭和"),
- (0x337D, "M", "大正"),
- (0x337E, "M", "明治"),
- (0x337F, "M", "株式会社"),
- (0x3380, "M", "pa"),
- (0x3381, "M", "na"),
- (0x3382, "M", "μa"),
- (0x3383, "M", "ma"),
- (0x3384, "M", "ka"),
- (0x3385, "M", "kb"),
- (0x3386, "M", "mb"),
- (0x3387, "M", "gb"),
- (0x3388, "M", "cal"),
- (0x3389, "M", "kcal"),
- (0x338A, "M", "pf"),
- (0x338B, "M", "nf"),
- (0x338C, "M", "μf"),
- (0x338D, "M", "μg"),
- (0x338E, "M", "mg"),
- (0x338F, "M", "kg"),
- (0x3390, "M", "hz"),
- (0x3391, "M", "khz"),
- (0x3392, "M", "mhz"),
- (0x3393, "M", "ghz"),
- (0x3394, "M", "thz"),
- (0x3395, "M", "μl"),
- (0x3396, "M", "ml"),
- (0x3397, "M", "dl"),
- (0x3398, "M", "kl"),
- (0x3399, "M", "fm"),
- (0x339A, "M", "nm"),
- (0x339B, "M", "μm"),
- (0x339C, "M", "mm"),
- (0x339D, "M", "cm"),
- (0x339E, "M", "km"),
- (0x339F, "M", "mm2"),
- (0x33A0, "M", "cm2"),
- (0x33A1, "M", "m2"),
- (0x33A2, "M", "km2"),
- (0x33A3, "M", "mm3"),
- (0x33A4, "M", "cm3"),
- (0x33A5, "M", "m3"),
- (0x33A6, "M", "km3"),
- (0x33A7, "M", "m∕s"),
- (0x33A8, "M", "m∕s2"),
- (0x33A9, "M", "pa"),
- (0x33AA, "M", "kpa"),
- (0x33AB, "M", "mpa"),
- (0x33AC, "M", "gpa"),
- (0x33AD, "M", "rad"),
- (0x33AE, "M", "rad∕s"),
- (0x33AF, "M", "rad∕s2"),
- (0x33B0, "M", "ps"),
- (0x33B1, "M", "ns"),
- (0x33B2, "M", "μs"),
- (0x33B3, "M", "ms"),
- (0x33B4, "M", "pv"),
- (0x33B5, "M", "nv"),
- (0x33B6, "M", "μv"),
- (0x33B7, "M", "mv"),
- (0x33B8, "M", "kv"),
- (0x33B9, "M", "mv"),
- (0x33BA, "M", "pw"),
- (0x33BB, "M", "nw"),
- (0x33BC, "M", "μw"),
- (0x33BD, "M", "mw"),
- (0x33BE, "M", "kw"),
- (0x33BF, "M", "mw"),
- (0x33C0, "M", "kω"),
- (0x33C1, "M", "mω"),
- (0x33C2, "X"),
- (0x33C3, "M", "bq"),
- (0x33C4, "M", "cc"),
- (0x33C5, "M", "cd"),
- (0x33C6, "M", "c∕kg"),
- (0x33C7, "X"),
- (0x33C8, "M", "db"),
- (0x33C9, "M", "gy"),
- (0x33CA, "M", "ha"),
- (0x33CB, "M", "hp"),
- (0x33CC, "M", "in"),
- (0x33CD, "M", "kk"),
- (0x33CE, "M", "km"),
- (0x33CF, "M", "kt"),
- (0x33D0, "M", "lm"),
- (0x33D1, "M", "ln"),
- (0x33D2, "M", "log"),
- (0x33D3, "M", "lx"),
- (0x33D4, "M", "mb"),
- (0x33D5, "M", "mil"),
- (0x33D6, "M", "mol"),
- (0x33D7, "M", "ph"),
- (0x33D8, "X"),
- (0x33D9, "M", "ppm"),
- (0x33DA, "M", "pr"),
- (0x33DB, "M", "sr"),
- (0x33DC, "M", "sv"),
- (0x33DD, "M", "wb"),
- (0x33DE, "M", "v∕m"),
- (0x33DF, "M", "a∕m"),
- (0x33E0, "M", "1日"),
- (0x33E1, "M", "2日"),
- (0x33E2, "M", "3日"),
- (0x33E3, "M", "4日"),
- (0x33E4, "M", "5日"),
- (0x33E5, "M", "6日"),
- (0x33E6, "M", "7日"),
- (0x33E7, "M", "8日"),
- (0x33E8, "M", "9日"),
- (0x33E9, "M", "10日"),
- (0x33EA, "M", "11日"),
- (0x33EB, "M", "12日"),
- (0x33EC, "M", "13日"),
- (0x33ED, "M", "14日"),
- (0x33EE, "M", "15日"),
- (0x33EF, "M", "16日"),
- (0x33F0, "M", "17日"),
- (0x33F1, "M", "18日"),
- (0x33F2, "M", "19日"),
- (0x33F3, "M", "20日"),
- (0x33F4, "M", "21日"),
- (0x33F5, "M", "22日"),
- (0x33F6, "M", "23日"),
- (0x33F7, "M", "24日"),
- (0x33F8, "M", "25日"),
- (0x33F9, "M", "26日"),
- (0x33FA, "M", "27日"),
- (0x33FB, "M", "28日"),
- (0x33FC, "M", "29日"),
- (0x33FD, "M", "30日"),
- (0x33FE, "M", "31日"),
- (0x33FF, "M", "gal"),
- (0x3400, "V"),
- (0xA48D, "X"),
- (0xA490, "V"),
- (0xA4C7, "X"),
- (0xA4D0, "V"),
- (0xA62C, "X"),
- (0xA640, "M", "ꙁ"),
- (0xA641, "V"),
- (0xA642, "M", "ꙃ"),
- (0xA643, "V"),
- (0xA644, "M", "ꙅ"),
- (0xA645, "V"),
- (0xA646, "M", "ꙇ"),
- (0xA647, "V"),
- (0xA648, "M", "ꙉ"),
- (0xA649, "V"),
- (0xA64A, "M", "ꙋ"),
- (0xA64B, "V"),
- (0xA64C, "M", "ꙍ"),
- (0xA64D, "V"),
- (0xA64E, "M", "ꙏ"),
- (0xA64F, "V"),
- (0xA650, "M", "ꙑ"),
- (0xA651, "V"),
- (0xA652, "M", "ꙓ"),
- (0xA653, "V"),
- (0xA654, "M", "ꙕ"),
- (0xA655, "V"),
- (0xA656, "M", "ꙗ"),
- (0xA657, "V"),
- (0xA658, "M", "ꙙ"),
- (0xA659, "V"),
- (0xA65A, "M", "ꙛ"),
- (0xA65B, "V"),
- (0xA65C, "M", "ꙝ"),
- (0xA65D, "V"),
- (0xA65E, "M", "ꙟ"),
- (0xA65F, "V"),
- (0xA660, "M", "ꙡ"),
- (0xA661, "V"),
- (0xA662, "M", "ꙣ"),
- (0xA663, "V"),
- (0xA664, "M", "ꙥ"),
- (0xA665, "V"),
- (0xA666, "M", "ꙧ"),
- (0xA667, "V"),
- (0xA668, "M", "ꙩ"),
- (0xA669, "V"),
- (0xA66A, "M", "ꙫ"),
- (0xA66B, "V"),
- (0xA66C, "M", "ꙭ"),
- (0xA66D, "V"),
- (0xA680, "M", "ꚁ"),
- (0xA681, "V"),
- (0xA682, "M", "ꚃ"),
- (0xA683, "V"),
- (0xA684, "M", "ꚅ"),
- (0xA685, "V"),
- (0xA686, "M", "ꚇ"),
- (0xA687, "V"),
- (0xA688, "M", "ꚉ"),
- (0xA689, "V"),
- (0xA68A, "M", "ꚋ"),
- (0xA68B, "V"),
- (0xA68C, "M", "ꚍ"),
- (0xA68D, "V"),
- (0xA68E, "M", "ꚏ"),
- (0xA68F, "V"),
- (0xA690, "M", "ꚑ"),
- (0xA691, "V"),
- (0xA692, "M", "ꚓ"),
- (0xA693, "V"),
- (0xA694, "M", "ꚕ"),
- (0xA695, "V"),
- (0xA696, "M", "ꚗ"),
- (0xA697, "V"),
- (0xA698, "M", "ꚙ"),
- (0xA699, "V"),
- (0xA69A, "M", "ꚛ"),
- (0xA69B, "V"),
- (0xA69C, "M", "ъ"),
- (0xA69D, "M", "ь"),
- (0xA69E, "V"),
- (0xA6F8, "X"),
- (0xA700, "V"),
- (0xA722, "M", "ꜣ"),
- (0xA723, "V"),
- (0xA724, "M", "ꜥ"),
- (0xA725, "V"),
- (0xA726, "M", "ꜧ"),
- (0xA727, "V"),
- (0xA728, "M", "ꜩ"),
- (0xA729, "V"),
- (0xA72A, "M", "ꜫ"),
- (0xA72B, "V"),
- (0xA72C, "M", "ꜭ"),
- (0xA72D, "V"),
- (0xA72E, "M", "ꜯ"),
- (0xA72F, "V"),
- (0xA732, "M", "ꜳ"),
- (0xA733, "V"),
- (0xA734, "M", "ꜵ"),
- (0xA735, "V"),
- (0xA736, "M", "ꜷ"),
- (0xA737, "V"),
- (0xA738, "M", "ꜹ"),
- (0xA739, "V"),
- (0xA73A, "M", "ꜻ"),
- (0xA73B, "V"),
- (0xA73C, "M", "ꜽ"),
- (0xA73D, "V"),
- (0xA73E, "M", "ꜿ"),
- (0xA73F, "V"),
- (0xA740, "M", "ꝁ"),
- (0xA741, "V"),
- (0xA742, "M", "ꝃ"),
- (0xA743, "V"),
- (0xA744, "M", "ꝅ"),
- (0xA745, "V"),
- (0xA746, "M", "ꝇ"),
- (0xA747, "V"),
- (0xA748, "M", "ꝉ"),
- (0xA749, "V"),
- (0xA74A, "M", "ꝋ"),
- (0xA74B, "V"),
- (0xA74C, "M", "ꝍ"),
- (0xA74D, "V"),
- (0xA74E, "M", "ꝏ"),
- (0xA74F, "V"),
- (0xA750, "M", "ꝑ"),
- (0xA751, "V"),
- (0xA752, "M", "ꝓ"),
- (0xA753, "V"),
- (0xA754, "M", "ꝕ"),
- (0xA755, "V"),
- (0xA756, "M", "ꝗ"),
- (0xA757, "V"),
- (0xA758, "M", "ꝙ"),
- (0xA759, "V"),
- (0xA75A, "M", "ꝛ"),
- (0xA75B, "V"),
- (0xA75C, "M", "ꝝ"),
- (0xA75D, "V"),
- (0xA75E, "M", "ꝟ"),
- (0xA75F, "V"),
- (0xA760, "M", "ꝡ"),
- (0xA761, "V"),
- (0xA762, "M", "ꝣ"),
- (0xA763, "V"),
- (0xA764, "M", "ꝥ"),
- (0xA765, "V"),
- (0xA766, "M", "ꝧ"),
- (0xA767, "V"),
- (0xA768, "M", "ꝩ"),
- (0xA769, "V"),
- (0xA76A, "M", "ꝫ"),
- (0xA76B, "V"),
- (0xA76C, "M", "ꝭ"),
- (0xA76D, "V"),
- (0xA76E, "M", "ꝯ"),
- (0xA76F, "V"),
- (0xA770, "M", "ꝯ"),
- (0xA771, "V"),
- (0xA779, "M", "ꝺ"),
- (0xA77A, "V"),
- (0xA77B, "M", "ꝼ"),
- (0xA77C, "V"),
- (0xA77D, "M", "ᵹ"),
- (0xA77E, "M", "ꝿ"),
- (0xA77F, "V"),
- (0xA780, "M", "ꞁ"),
- (0xA781, "V"),
- (0xA782, "M", "ꞃ"),
- (0xA783, "V"),
- (0xA784, "M", "ꞅ"),
- (0xA785, "V"),
- (0xA786, "M", "ꞇ"),
- (0xA787, "V"),
- (0xA78B, "M", "ꞌ"),
- (0xA78C, "V"),
- (0xA78D, "M", "ɥ"),
- (0xA78E, "V"),
- (0xA790, "M", "ꞑ"),
- (0xA791, "V"),
- (0xA792, "M", "ꞓ"),
- (0xA793, "V"),
- (0xA796, "M", "ꞗ"),
- (0xA797, "V"),
- (0xA798, "M", "ꞙ"),
- (0xA799, "V"),
- (0xA79A, "M", "ꞛ"),
- (0xA79B, "V"),
- (0xA79C, "M", "ꞝ"),
- (0xA79D, "V"),
- (0xA79E, "M", "ꞟ"),
- (0xA79F, "V"),
- (0xA7A0, "M", "ꞡ"),
- (0xA7A1, "V"),
- (0xA7A2, "M", "ꞣ"),
- (0xA7A3, "V"),
- (0xA7A4, "M", "ꞥ"),
- (0xA7A5, "V"),
- (0xA7A6, "M", "ꞧ"),
- (0xA7A7, "V"),
- (0xA7A8, "M", "ꞩ"),
- (0xA7A9, "V"),
- (0xA7AA, "M", "ɦ"),
- (0xA7AB, "M", "ɜ"),
- (0xA7AC, "M", "ɡ"),
- (0xA7AD, "M", "ɬ"),
- (0xA7AE, "M", "ɪ"),
- (0xA7AF, "V"),
- (0xA7B0, "M", "ʞ"),
- (0xA7B1, "M", "ʇ"),
- (0xA7B2, "M", "ʝ"),
- (0xA7B3, "M", "ꭓ"),
- (0xA7B4, "M", "ꞵ"),
- (0xA7B5, "V"),
- (0xA7B6, "M", "ꞷ"),
- (0xA7B7, "V"),
- (0xA7B8, "M", "ꞹ"),
- (0xA7B9, "V"),
- (0xA7BA, "M", "ꞻ"),
- (0xA7BB, "V"),
- (0xA7BC, "M", "ꞽ"),
- (0xA7BD, "V"),
- (0xA7BE, "M", "ꞿ"),
- (0xA7BF, "V"),
- (0xA7C0, "M", "ꟁ"),
- (0xA7C1, "V"),
- (0xA7C2, "M", "ꟃ"),
- (0xA7C3, "V"),
- (0xA7C4, "M", "ꞔ"),
- (0xA7C5, "M", "ʂ"),
- (0xA7C6, "M", "ᶎ"),
- (0xA7C7, "M", "ꟈ"),
- (0xA7C8, "V"),
- (0xA7C9, "M", "ꟊ"),
- (0xA7CA, "V"),
- (0xA7CB, "M", "ɤ"),
- (0xA7CC, "M", "ꟍ"),
- (0xA7CD, "V"),
- (0xA7CE, "M", "꟏"),
- (0xA7CF, "V"),
- (0xA7D0, "M", "ꟑ"),
- (0xA7D1, "V"),
- (0xA7D2, "M", "ꟓ"),
- (0xA7D3, "V"),
- (0xA7D4, "M", "ꟕ"),
- (0xA7D5, "V"),
- (0xA7D6, "M", "ꟗ"),
- (0xA7D7, "V"),
- (0xA7D8, "M", "ꟙ"),
- (0xA7D9, "V"),
- (0xA7DA, "M", "ꟛ"),
- (0xA7DB, "V"),
- (0xA7DC, "M", "ƛ"),
- (0xA7DD, "X"),
- (0xA7F1, "M", "s"),
- (0xA7F2, "M", "c"),
- (0xA7F3, "M", "f"),
- (0xA7F4, "M", "q"),
- (0xA7F5, "M", "ꟶ"),
- (0xA7F6, "V"),
- (0xA7F8, "M", "ħ"),
- (0xA7F9, "M", "œ"),
- (0xA7FA, "V"),
- (0xA82D, "X"),
- (0xA830, "V"),
- (0xA83A, "X"),
- (0xA840, "V"),
- (0xA878, "X"),
- (0xA880, "V"),
- (0xA8C6, "X"),
- (0xA8CE, "V"),
- (0xA8DA, "X"),
- (0xA8E0, "V"),
- (0xA954, "X"),
- (0xA95F, "V"),
- (0xA97D, "X"),
- (0xA980, "V"),
- (0xA9CE, "X"),
- (0xA9CF, "V"),
- (0xA9DA, "X"),
- (0xA9DE, "V"),
- (0xA9FF, "X"),
- (0xAA00, "V"),
- (0xAA37, "X"),
- (0xAA40, "V"),
- (0xAA4E, "X"),
- (0xAA50, "V"),
- (0xAA5A, "X"),
- (0xAA5C, "V"),
- (0xAAC3, "X"),
- (0xAADB, "V"),
- (0xAAF7, "X"),
- (0xAB01, "V"),
- (0xAB07, "X"),
- (0xAB09, "V"),
- (0xAB0F, "X"),
- (0xAB11, "V"),
- (0xAB17, "X"),
- (0xAB20, "V"),
- (0xAB27, "X"),
- (0xAB28, "V"),
- (0xAB2F, "X"),
- (0xAB30, "V"),
- (0xAB5C, "M", "ꜧ"),
- (0xAB5D, "M", "ꬷ"),
- (0xAB5E, "M", "ɫ"),
- (0xAB5F, "M", "ꭒ"),
- (0xAB60, "V"),
- (0xAB69, "M", "ʍ"),
- (0xAB6A, "V"),
- (0xAB6C, "X"),
- (0xAB70, "M", "Ꭰ"),
- (0xAB71, "M", "Ꭱ"),
- (0xAB72, "M", "Ꭲ"),
- (0xAB73, "M", "Ꭳ"),
- (0xAB74, "M", "Ꭴ"),
- (0xAB75, "M", "Ꭵ"),
- (0xAB76, "M", "Ꭶ"),
- (0xAB77, "M", "Ꭷ"),
- (0xAB78, "M", "Ꭸ"),
- (0xAB79, "M", "Ꭹ"),
- (0xAB7A, "M", "Ꭺ"),
- (0xAB7B, "M", "Ꭻ"),
- (0xAB7C, "M", "Ꭼ"),
- (0xAB7D, "M", "Ꭽ"),
- (0xAB7E, "M", "Ꭾ"),
- (0xAB7F, "M", "Ꭿ"),
- (0xAB80, "M", "Ꮀ"),
- (0xAB81, "M", "Ꮁ"),
- (0xAB82, "M", "Ꮂ"),
- (0xAB83, "M", "Ꮃ"),
- (0xAB84, "M", "Ꮄ"),
- (0xAB85, "M", "Ꮅ"),
- (0xAB86, "M", "Ꮆ"),
- (0xAB87, "M", "Ꮇ"),
- (0xAB88, "M", "Ꮈ"),
- (0xAB89, "M", "Ꮉ"),
- (0xAB8A, "M", "Ꮊ"),
- (0xAB8B, "M", "Ꮋ"),
- (0xAB8C, "M", "Ꮌ"),
- (0xAB8D, "M", "Ꮍ"),
- (0xAB8E, "M", "Ꮎ"),
- (0xAB8F, "M", "Ꮏ"),
- (0xAB90, "M", "Ꮐ"),
- (0xAB91, "M", "Ꮑ"),
- (0xAB92, "M", "Ꮒ"),
- (0xAB93, "M", "Ꮓ"),
- (0xAB94, "M", "Ꮔ"),
- (0xAB95, "M", "Ꮕ"),
- (0xAB96, "M", "Ꮖ"),
- (0xAB97, "M", "Ꮗ"),
- (0xAB98, "M", "Ꮘ"),
- (0xAB99, "M", "Ꮙ"),
- (0xAB9A, "M", "Ꮚ"),
- (0xAB9B, "M", "Ꮛ"),
- (0xAB9C, "M", "Ꮜ"),
- (0xAB9D, "M", "Ꮝ"),
- (0xAB9E, "M", "Ꮞ"),
- (0xAB9F, "M", "Ꮟ"),
- (0xABA0, "M", "Ꮠ"),
- (0xABA1, "M", "Ꮡ"),
- (0xABA2, "M", "Ꮢ"),
- (0xABA3, "M", "Ꮣ"),
- (0xABA4, "M", "Ꮤ"),
- (0xABA5, "M", "Ꮥ"),
- (0xABA6, "M", "Ꮦ"),
- (0xABA7, "M", "Ꮧ"),
- (0xABA8, "M", "Ꮨ"),
- (0xABA9, "M", "Ꮩ"),
- (0xABAA, "M", "Ꮪ"),
- (0xABAB, "M", "Ꮫ"),
- (0xABAC, "M", "Ꮬ"),
- (0xABAD, "M", "Ꮭ"),
- (0xABAE, "M", "Ꮮ"),
- (0xABAF, "M", "Ꮯ"),
- (0xABB0, "M", "Ꮰ"),
- (0xABB1, "M", "Ꮱ"),
- (0xABB2, "M", "Ꮲ"),
- (0xABB3, "M", "Ꮳ"),
- (0xABB4, "M", "Ꮴ"),
- (0xABB5, "M", "Ꮵ"),
- (0xABB6, "M", "Ꮶ"),
- (0xABB7, "M", "Ꮷ"),
- (0xABB8, "M", "Ꮸ"),
- (0xABB9, "M", "Ꮹ"),
- (0xABBA, "M", "Ꮺ"),
- (0xABBB, "M", "Ꮻ"),
- (0xABBC, "M", "Ꮼ"),
- (0xABBD, "M", "Ꮽ"),
- (0xABBE, "M", "Ꮾ"),
- (0xABBF, "M", "Ꮿ"),
- (0xABC0, "V"),
- (0xABEE, "X"),
- (0xABF0, "V"),
- (0xABFA, "X"),
- (0xAC00, "V"),
- (0xD7A4, "X"),
- (0xD7B0, "V"),
- (0xD7C7, "X"),
- (0xD7CB, "V"),
- (0xD7FC, "X"),
- (0xF900, "M", "豈"),
- (0xF901, "M", "更"),
- (0xF902, "M", "車"),
- (0xF903, "M", "賈"),
- (0xF904, "M", "滑"),
- (0xF905, "M", "串"),
- (0xF906, "M", "句"),
- (0xF907, "M", "龜"),
- (0xF909, "M", "契"),
- (0xF90A, "M", "金"),
- (0xF90B, "M", "喇"),
- (0xF90C, "M", "奈"),
- (0xF90D, "M", "懶"),
- (0xF90E, "M", "癩"),
- (0xF90F, "M", "羅"),
- (0xF910, "M", "蘿"),
- (0xF911, "M", "螺"),
- (0xF912, "M", "裸"),
- (0xF913, "M", "邏"),
- (0xF914, "M", "樂"),
- (0xF915, "M", "洛"),
- (0xF916, "M", "烙"),
- (0xF917, "M", "珞"),
- (0xF918, "M", "落"),
- (0xF919, "M", "酪"),
- (0xF91A, "M", "駱"),
- (0xF91B, "M", "亂"),
- (0xF91C, "M", "卵"),
- (0xF91D, "M", "欄"),
- (0xF91E, "M", "爛"),
- (0xF91F, "M", "蘭"),
- (0xF920, "M", "鸞"),
- (0xF921, "M", "嵐"),
- (0xF922, "M", "濫"),
- (0xF923, "M", "藍"),
- (0xF924, "M", "襤"),
- (0xF925, "M", "拉"),
- (0xF926, "M", "臘"),
- (0xF927, "M", "蠟"),
- (0xF928, "M", "廊"),
- (0xF929, "M", "朗"),
- (0xF92A, "M", "浪"),
- (0xF92B, "M", "狼"),
- (0xF92C, "M", "郎"),
- (0xF92D, "M", "來"),
- (0xF92E, "M", "冷"),
- (0xF92F, "M", "勞"),
- (0xF930, "M", "擄"),
- (0xF931, "M", "櫓"),
- (0xF932, "M", "爐"),
- (0xF933, "M", "盧"),
- (0xF934, "M", "老"),
- (0xF935, "M", "蘆"),
- (0xF936, "M", "虜"),
- (0xF937, "M", "路"),
- (0xF938, "M", "露"),
- (0xF939, "M", "魯"),
- (0xF93A, "M", "鷺"),
- (0xF93B, "M", "碌"),
- (0xF93C, "M", "祿"),
- (0xF93D, "M", "綠"),
- (0xF93E, "M", "菉"),
- (0xF93F, "M", "錄"),
- (0xF940, "M", "鹿"),
- (0xF941, "M", "論"),
- (0xF942, "M", "壟"),
- (0xF943, "M", "弄"),
- (0xF944, "M", "籠"),
- (0xF945, "M", "聾"),
- (0xF946, "M", "牢"),
- (0xF947, "M", "磊"),
- (0xF948, "M", "賂"),
- (0xF949, "M", "雷"),
- (0xF94A, "M", "壘"),
- (0xF94B, "M", "屢"),
- (0xF94C, "M", "樓"),
- (0xF94D, "M", "淚"),
- (0xF94E, "M", "漏"),
- (0xF94F, "M", "累"),
- (0xF950, "M", "縷"),
- (0xF951, "M", "陋"),
- (0xF952, "M", "勒"),
- (0xF953, "M", "肋"),
- (0xF954, "M", "凜"),
- (0xF955, "M", "凌"),
- (0xF956, "M", "稜"),
- (0xF957, "M", "綾"),
- (0xF958, "M", "菱"),
- (0xF959, "M", "陵"),
- (0xF95A, "M", "讀"),
- (0xF95B, "M", "拏"),
- (0xF95C, "M", "樂"),
- (0xF95D, "M", "諾"),
- (0xF95E, "M", "丹"),
- (0xF95F, "M", "寧"),
- (0xF960, "M", "怒"),
- (0xF961, "M", "率"),
- (0xF962, "M", "異"),
- (0xF963, "M", "北"),
- (0xF964, "M", "磻"),
- (0xF965, "M", "便"),
- (0xF966, "M", "復"),
- (0xF967, "M", "不"),
- (0xF968, "M", "泌"),
- (0xF969, "M", "數"),
- (0xF96A, "M", "索"),
- (0xF96B, "M", "參"),
- (0xF96C, "M", "塞"),
- (0xF96D, "M", "省"),
- (0xF96E, "M", "葉"),
- (0xF96F, "M", "說"),
- (0xF970, "M", "殺"),
- (0xF971, "M", "辰"),
- (0xF972, "M", "沈"),
- (0xF973, "M", "拾"),
- (0xF974, "M", "若"),
- (0xF975, "M", "掠"),
- (0xF976, "M", "略"),
- (0xF977, "M", "亮"),
- (0xF978, "M", "兩"),
- (0xF979, "M", "凉"),
- (0xF97A, "M", "梁"),
- (0xF97B, "M", "糧"),
- (0xF97C, "M", "良"),
- (0xF97D, "M", "諒"),
- (0xF97E, "M", "量"),
- (0xF97F, "M", "勵"),
- (0xF980, "M", "呂"),
- (0xF981, "M", "女"),
- (0xF982, "M", "廬"),
- (0xF983, "M", "旅"),
- (0xF984, "M", "濾"),
- (0xF985, "M", "礪"),
- (0xF986, "M", "閭"),
- (0xF987, "M", "驪"),
- (0xF988, "M", "麗"),
- (0xF989, "M", "黎"),
- (0xF98A, "M", "力"),
- (0xF98B, "M", "曆"),
- (0xF98C, "M", "歷"),
- (0xF98D, "M", "轢"),
- (0xF98E, "M", "年"),
- (0xF98F, "M", "憐"),
- (0xF990, "M", "戀"),
- (0xF991, "M", "撚"),
- (0xF992, "M", "漣"),
- (0xF993, "M", "煉"),
- (0xF994, "M", "璉"),
- (0xF995, "M", "秊"),
- (0xF996, "M", "練"),
- (0xF997, "M", "聯"),
- (0xF998, "M", "輦"),
- (0xF999, "M", "蓮"),
- (0xF99A, "M", "連"),
- (0xF99B, "M", "鍊"),
- (0xF99C, "M", "列"),
- (0xF99D, "M", "劣"),
- (0xF99E, "M", "咽"),
- (0xF99F, "M", "烈"),
- (0xF9A0, "M", "裂"),
- (0xF9A1, "M", "說"),
- (0xF9A2, "M", "廉"),
- (0xF9A3, "M", "念"),
- (0xF9A4, "M", "捻"),
- (0xF9A5, "M", "殮"),
- (0xF9A6, "M", "簾"),
- (0xF9A7, "M", "獵"),
- (0xF9A8, "M", "令"),
- (0xF9A9, "M", "囹"),
- (0xF9AA, "M", "寧"),
- (0xF9AB, "M", "嶺"),
- (0xF9AC, "M", "怜"),
- (0xF9AD, "M", "玲"),
- (0xF9AE, "M", "瑩"),
- (0xF9AF, "M", "羚"),
- (0xF9B0, "M", "聆"),
- (0xF9B1, "M", "鈴"),
- (0xF9B2, "M", "零"),
- (0xF9B3, "M", "靈"),
- (0xF9B4, "M", "領"),
- (0xF9B5, "M", "例"),
- (0xF9B6, "M", "禮"),
- (0xF9B7, "M", "醴"),
- (0xF9B8, "M", "隸"),
- (0xF9B9, "M", "惡"),
- (0xF9BA, "M", "了"),
- (0xF9BB, "M", "僚"),
- (0xF9BC, "M", "寮"),
- (0xF9BD, "M", "尿"),
- (0xF9BE, "M", "料"),
- (0xF9BF, "M", "樂"),
- (0xF9C0, "M", "燎"),
- (0xF9C1, "M", "療"),
- (0xF9C2, "M", "蓼"),
- (0xF9C3, "M", "遼"),
- (0xF9C4, "M", "龍"),
- (0xF9C5, "M", "暈"),
- (0xF9C6, "M", "阮"),
- (0xF9C7, "M", "劉"),
- (0xF9C8, "M", "杻"),
- (0xF9C9, "M", "柳"),
- (0xF9CA, "M", "流"),
- (0xF9CB, "M", "溜"),
- (0xF9CC, "M", "琉"),
- (0xF9CD, "M", "留"),
- (0xF9CE, "M", "硫"),
- (0xF9CF, "M", "紐"),
- (0xF9D0, "M", "類"),
- (0xF9D1, "M", "六"),
- (0xF9D2, "M", "戮"),
- (0xF9D3, "M", "陸"),
- (0xF9D4, "M", "倫"),
- (0xF9D5, "M", "崙"),
- (0xF9D6, "M", "淪"),
- (0xF9D7, "M", "輪"),
- (0xF9D8, "M", "律"),
- (0xF9D9, "M", "慄"),
- (0xF9DA, "M", "栗"),
- (0xF9DB, "M", "率"),
- (0xF9DC, "M", "隆"),
- (0xF9DD, "M", "利"),
- (0xF9DE, "M", "吏"),
- (0xF9DF, "M", "履"),
- (0xF9E0, "M", "易"),
- (0xF9E1, "M", "李"),
- (0xF9E2, "M", "梨"),
- (0xF9E3, "M", "泥"),
- (0xF9E4, "M", "理"),
- (0xF9E5, "M", "痢"),
- (0xF9E6, "M", "罹"),
- (0xF9E7, "M", "裏"),
- (0xF9E8, "M", "裡"),
- (0xF9E9, "M", "里"),
- (0xF9EA, "M", "離"),
- (0xF9EB, "M", "匿"),
- (0xF9EC, "M", "溺"),
- (0xF9ED, "M", "吝"),
- (0xF9EE, "M", "燐"),
- (0xF9EF, "M", "璘"),
- (0xF9F0, "M", "藺"),
- (0xF9F1, "M", "隣"),
- (0xF9F2, "M", "鱗"),
- (0xF9F3, "M", "麟"),
- (0xF9F4, "M", "林"),
- (0xF9F5, "M", "淋"),
- (0xF9F6, "M", "臨"),
- (0xF9F7, "M", "立"),
- (0xF9F8, "M", "笠"),
- (0xF9F9, "M", "粒"),
- (0xF9FA, "M", "狀"),
- (0xF9FB, "M", "炙"),
- (0xF9FC, "M", "識"),
- (0xF9FD, "M", "什"),
- (0xF9FE, "M", "茶"),
- (0xF9FF, "M", "刺"),
- (0xFA00, "M", "切"),
- (0xFA01, "M", "度"),
- (0xFA02, "M", "拓"),
- (0xFA03, "M", "糖"),
- (0xFA04, "M", "宅"),
- (0xFA05, "M", "洞"),
- (0xFA06, "M", "暴"),
- (0xFA07, "M", "輻"),
- (0xFA08, "M", "行"),
- (0xFA09, "M", "降"),
- (0xFA0A, "M", "見"),
- (0xFA0B, "M", "廓"),
- (0xFA0C, "M", "兀"),
- (0xFA0D, "M", "嗀"),
- (0xFA0E, "V"),
- (0xFA10, "M", "塚"),
- (0xFA11, "V"),
- (0xFA12, "M", "晴"),
- (0xFA13, "V"),
- (0xFA15, "M", "凞"),
- (0xFA16, "M", "猪"),
- (0xFA17, "M", "益"),
- (0xFA18, "M", "礼"),
- (0xFA19, "M", "神"),
- (0xFA1A, "M", "祥"),
- (0xFA1B, "M", "福"),
- (0xFA1C, "M", "靖"),
- (0xFA1D, "M", "精"),
- (0xFA1E, "M", "羽"),
- (0xFA1F, "V"),
- (0xFA20, "M", "蘒"),
- (0xFA21, "V"),
- (0xFA22, "M", "諸"),
- (0xFA23, "V"),
- (0xFA25, "M", "逸"),
- (0xFA26, "M", "都"),
- (0xFA27, "V"),
- (0xFA2A, "M", "飯"),
- (0xFA2B, "M", "飼"),
- (0xFA2C, "M", "館"),
- (0xFA2D, "M", "鶴"),
- (0xFA2E, "M", "郞"),
- (0xFA2F, "M", "隷"),
- (0xFA30, "M", "侮"),
- (0xFA31, "M", "僧"),
- (0xFA32, "M", "免"),
- (0xFA33, "M", "勉"),
- (0xFA34, "M", "勤"),
- (0xFA35, "M", "卑"),
- (0xFA36, "M", "喝"),
- (0xFA37, "M", "嘆"),
- (0xFA38, "M", "器"),
- (0xFA39, "M", "塀"),
- (0xFA3A, "M", "墨"),
- (0xFA3B, "M", "層"),
- (0xFA3C, "M", "屮"),
- (0xFA3D, "M", "悔"),
- (0xFA3E, "M", "慨"),
- (0xFA3F, "M", "憎"),
- (0xFA40, "M", "懲"),
- (0xFA41, "M", "敏"),
- (0xFA42, "M", "既"),
- (0xFA43, "M", "暑"),
- (0xFA44, "M", "梅"),
- (0xFA45, "M", "海"),
- (0xFA46, "M", "渚"),
- (0xFA47, "M", "漢"),
- (0xFA48, "M", "煮"),
- (0xFA49, "M", "爫"),
- (0xFA4A, "M", "琢"),
- (0xFA4B, "M", "碑"),
- (0xFA4C, "M", "社"),
- (0xFA4D, "M", "祉"),
- (0xFA4E, "M", "祈"),
- (0xFA4F, "M", "祐"),
- (0xFA50, "M", "祖"),
- (0xFA51, "M", "祝"),
- (0xFA52, "M", "禍"),
- (0xFA53, "M", "禎"),
- (0xFA54, "M", "穀"),
- (0xFA55, "M", "突"),
- (0xFA56, "M", "節"),
- (0xFA57, "M", "練"),
- (0xFA58, "M", "縉"),
- (0xFA59, "M", "繁"),
- (0xFA5A, "M", "署"),
- (0xFA5B, "M", "者"),
- (0xFA5C, "M", "臭"),
- (0xFA5D, "M", "艹"),
- (0xFA5F, "M", "著"),
- (0xFA60, "M", "褐"),
- (0xFA61, "M", "視"),
- (0xFA62, "M", "謁"),
- (0xFA63, "M", "謹"),
- (0xFA64, "M", "賓"),
- (0xFA65, "M", "贈"),
- (0xFA66, "M", "辶"),
- (0xFA67, "M", "逸"),
- (0xFA68, "M", "難"),
- (0xFA69, "M", "響"),
- (0xFA6A, "M", "頻"),
- (0xFA6B, "M", "恵"),
- (0xFA6C, "M", "𤋮"),
- (0xFA6D, "M", "舘"),
- (0xFA6E, "X"),
- (0xFA70, "M", "並"),
- (0xFA71, "M", "况"),
- (0xFA72, "M", "全"),
- (0xFA73, "M", "侀"),
- (0xFA74, "M", "充"),
- (0xFA75, "M", "冀"),
- (0xFA76, "M", "勇"),
- (0xFA77, "M", "勺"),
- (0xFA78, "M", "喝"),
- (0xFA79, "M", "啕"),
- (0xFA7A, "M", "喙"),
- (0xFA7B, "M", "嗢"),
- (0xFA7C, "M", "塚"),
- (0xFA7D, "M", "墳"),
- (0xFA7E, "M", "奄"),
- (0xFA7F, "M", "奔"),
- (0xFA80, "M", "婢"),
- (0xFA81, "M", "嬨"),
- (0xFA82, "M", "廒"),
- (0xFA83, "M", "廙"),
- (0xFA84, "M", "彩"),
- (0xFA85, "M", "徭"),
- (0xFA86, "M", "惘"),
- (0xFA87, "M", "慎"),
- (0xFA88, "M", "愈"),
- (0xFA89, "M", "憎"),
- (0xFA8A, "M", "慠"),
- (0xFA8B, "M", "懲"),
- (0xFA8C, "M", "戴"),
- (0xFA8D, "M", "揄"),
- (0xFA8E, "M", "搜"),
- (0xFA8F, "M", "摒"),
- (0xFA90, "M", "敖"),
- (0xFA91, "M", "晴"),
- (0xFA92, "M", "朗"),
- (0xFA93, "M", "望"),
- (0xFA94, "M", "杖"),
- (0xFA95, "M", "歹"),
- (0xFA96, "M", "殺"),
- (0xFA97, "M", "流"),
- (0xFA98, "M", "滛"),
- (0xFA99, "M", "滋"),
- (0xFA9A, "M", "漢"),
- (0xFA9B, "M", "瀞"),
- (0xFA9C, "M", "煮"),
- (0xFA9D, "M", "瞧"),
- (0xFA9E, "M", "爵"),
- (0xFA9F, "M", "犯"),
- (0xFAA0, "M", "猪"),
- (0xFAA1, "M", "瑱"),
- (0xFAA2, "M", "甆"),
- (0xFAA3, "M", "画"),
- (0xFAA4, "M", "瘝"),
- (0xFAA5, "M", "瘟"),
- (0xFAA6, "M", "益"),
- (0xFAA7, "M", "盛"),
- (0xFAA8, "M", "直"),
- (0xFAA9, "M", "睊"),
- (0xFAAA, "M", "着"),
- (0xFAAB, "M", "磌"),
- (0xFAAC, "M", "窱"),
- (0xFAAD, "M", "節"),
- (0xFAAE, "M", "类"),
- (0xFAAF, "M", "絛"),
- (0xFAB0, "M", "練"),
- (0xFAB1, "M", "缾"),
- (0xFAB2, "M", "者"),
- (0xFAB3, "M", "荒"),
- (0xFAB4, "M", "華"),
- (0xFAB5, "M", "蝹"),
- (0xFAB6, "M", "襁"),
- (0xFAB7, "M", "覆"),
- (0xFAB8, "M", "視"),
- (0xFAB9, "M", "調"),
- (0xFABA, "M", "諸"),
- (0xFABB, "M", "請"),
- (0xFABC, "M", "謁"),
- (0xFABD, "M", "諾"),
- (0xFABE, "M", "諭"),
- (0xFABF, "M", "謹"),
- (0xFAC0, "M", "變"),
- (0xFAC1, "M", "贈"),
- (0xFAC2, "M", "輸"),
- (0xFAC3, "M", "遲"),
- (0xFAC4, "M", "醙"),
- (0xFAC5, "M", "鉶"),
- (0xFAC6, "M", "陼"),
- (0xFAC7, "M", "難"),
- (0xFAC8, "M", "靖"),
- (0xFAC9, "M", "韛"),
- (0xFACA, "M", "響"),
- (0xFACB, "M", "頋"),
- (0xFACC, "M", "頻"),
- (0xFACD, "M", "鬒"),
- (0xFACE, "M", "龜"),
- (0xFACF, "M", "𢡊"),
- (0xFAD0, "M", "𢡄"),
- (0xFAD1, "M", "𣏕"),
- (0xFAD2, "M", "㮝"),
- (0xFAD3, "M", "䀘"),
- (0xFAD4, "M", "䀹"),
- (0xFAD5, "M", "𥉉"),
- (0xFAD6, "M", "𥳐"),
- (0xFAD7, "M", "𧻓"),
- (0xFAD8, "M", "齃"),
- (0xFAD9, "M", "龎"),
- (0xFADA, "X"),
- (0xFB00, "M", "ff"),
- (0xFB01, "M", "fi"),
- (0xFB02, "M", "fl"),
- (0xFB03, "M", "ffi"),
- (0xFB04, "M", "ffl"),
- (0xFB05, "M", "st"),
- (0xFB07, "X"),
- (0xFB13, "M", "մն"),
- (0xFB14, "M", "մե"),
- (0xFB15, "M", "մի"),
- (0xFB16, "M", "վն"),
- (0xFB17, "M", "մխ"),
- (0xFB18, "X"),
- (0xFB1D, "M", "יִ"),
- (0xFB1E, "V"),
- (0xFB1F, "M", "ײַ"),
- (0xFB20, "M", "ע"),
- (0xFB21, "M", "א"),
- (0xFB22, "M", "ד"),
- (0xFB23, "M", "ה"),
- (0xFB24, "M", "כ"),
- (0xFB25, "M", "ל"),
- (0xFB26, "M", "ם"),
- (0xFB27, "M", "ר"),
- (0xFB28, "M", "ת"),
- (0xFB29, "M", "+"),
- (0xFB2A, "M", "שׁ"),
- (0xFB2B, "M", "שׂ"),
- (0xFB2C, "M", "שּׁ"),
- (0xFB2D, "M", "שּׂ"),
- (0xFB2E, "M", "אַ"),
- (0xFB2F, "M", "אָ"),
- (0xFB30, "M", "אּ"),
- (0xFB31, "M", "בּ"),
- (0xFB32, "M", "גּ"),
- (0xFB33, "M", "דּ"),
- (0xFB34, "M", "הּ"),
- (0xFB35, "M", "וּ"),
- (0xFB36, "M", "זּ"),
- (0xFB37, "X"),
- (0xFB38, "M", "טּ"),
- (0xFB39, "M", "יּ"),
- (0xFB3A, "M", "ךּ"),
- (0xFB3B, "M", "כּ"),
- (0xFB3C, "M", "לּ"),
- (0xFB3D, "X"),
- (0xFB3E, "M", "מּ"),
- (0xFB3F, "X"),
- (0xFB40, "M", "נּ"),
- (0xFB41, "M", "סּ"),
- (0xFB42, "X"),
- (0xFB43, "M", "ףּ"),
- (0xFB44, "M", "פּ"),
- (0xFB45, "X"),
- (0xFB46, "M", "צּ"),
- (0xFB47, "M", "קּ"),
- (0xFB48, "M", "רּ"),
- (0xFB49, "M", "שּ"),
- (0xFB4A, "M", "תּ"),
- (0xFB4B, "M", "וֹ"),
- (0xFB4C, "M", "בֿ"),
- (0xFB4D, "M", "כֿ"),
- (0xFB4E, "M", "פֿ"),
- (0xFB4F, "M", "אל"),
- (0xFB50, "M", "ٱ"),
- (0xFB52, "M", "ٻ"),
- (0xFB56, "M", "پ"),
- (0xFB5A, "M", "ڀ"),
- (0xFB5E, "M", "ٺ"),
- (0xFB62, "M", "ٿ"),
- (0xFB66, "M", "ٹ"),
- (0xFB6A, "M", "ڤ"),
- (0xFB6E, "M", "ڦ"),
- (0xFB72, "M", "ڄ"),
- (0xFB76, "M", "ڃ"),
- (0xFB7A, "M", "چ"),
- (0xFB7E, "M", "ڇ"),
- (0xFB82, "M", "ڍ"),
- (0xFB84, "M", "ڌ"),
- (0xFB86, "M", "ڎ"),
- (0xFB88, "M", "ڈ"),
- (0xFB8A, "M", "ژ"),
- (0xFB8C, "M", "ڑ"),
- (0xFB8E, "M", "ک"),
- (0xFB92, "M", "گ"),
- (0xFB96, "M", "ڳ"),
- (0xFB9A, "M", "ڱ"),
- (0xFB9E, "M", "ں"),
- (0xFBA0, "M", "ڻ"),
- (0xFBA4, "M", "ۀ"),
- (0xFBA6, "M", "ہ"),
- (0xFBAA, "M", "ھ"),
- (0xFBAE, "M", "ے"),
- (0xFBB0, "M", "ۓ"),
- (0xFBB2, "V"),
- (0xFBD3, "M", "ڭ"),
- (0xFBD7, "M", "ۇ"),
- (0xFBD9, "M", "ۆ"),
- (0xFBDB, "M", "ۈ"),
- (0xFBDD, "M", "ۇٴ"),
- (0xFBDE, "M", "ۋ"),
- (0xFBE0, "M", "ۅ"),
- (0xFBE2, "M", "ۉ"),
- (0xFBE4, "M", "ې"),
- (0xFBE8, "M", "ى"),
- (0xFBEA, "M", "ئا"),
- (0xFBEC, "M", "ئە"),
- (0xFBEE, "M", "ئو"),
- (0xFBF0, "M", "ئۇ"),
- (0xFBF2, "M", "ئۆ"),
- (0xFBF4, "M", "ئۈ"),
- (0xFBF6, "M", "ئې"),
- (0xFBF9, "M", "ئى"),
- (0xFBFC, "M", "ی"),
- (0xFC00, "M", "ئج"),
- (0xFC01, "M", "ئح"),
- (0xFC02, "M", "ئم"),
- (0xFC03, "M", "ئى"),
- (0xFC04, "M", "ئي"),
- (0xFC05, "M", "بج"),
- (0xFC06, "M", "بح"),
- (0xFC07, "M", "بخ"),
- (0xFC08, "M", "بم"),
- (0xFC09, "M", "بى"),
- (0xFC0A, "M", "بي"),
- (0xFC0B, "M", "تج"),
- (0xFC0C, "M", "تح"),
- (0xFC0D, "M", "تخ"),
- (0xFC0E, "M", "تم"),
- (0xFC0F, "M", "تى"),
- (0xFC10, "M", "تي"),
- (0xFC11, "M", "ثج"),
- (0xFC12, "M", "ثم"),
- (0xFC13, "M", "ثى"),
- (0xFC14, "M", "ثي"),
- (0xFC15, "M", "جح"),
- (0xFC16, "M", "جم"),
- (0xFC17, "M", "حج"),
- (0xFC18, "M", "حم"),
- (0xFC19, "M", "خج"),
- (0xFC1A, "M", "خح"),
- (0xFC1B, "M", "خم"),
- (0xFC1C, "M", "سج"),
- (0xFC1D, "M", "سح"),
- (0xFC1E, "M", "سخ"),
- (0xFC1F, "M", "سم"),
- (0xFC20, "M", "صح"),
- (0xFC21, "M", "صم"),
- (0xFC22, "M", "ضج"),
- (0xFC23, "M", "ضح"),
- (0xFC24, "M", "ضخ"),
- (0xFC25, "M", "ضم"),
- (0xFC26, "M", "طح"),
- (0xFC27, "M", "طم"),
- (0xFC28, "M", "ظم"),
- (0xFC29, "M", "عج"),
- (0xFC2A, "M", "عم"),
- (0xFC2B, "M", "غج"),
- (0xFC2C, "M", "غم"),
- (0xFC2D, "M", "فج"),
- (0xFC2E, "M", "فح"),
- (0xFC2F, "M", "فخ"),
- (0xFC30, "M", "فم"),
- (0xFC31, "M", "فى"),
- (0xFC32, "M", "في"),
- (0xFC33, "M", "قح"),
- (0xFC34, "M", "قم"),
- (0xFC35, "M", "قى"),
- (0xFC36, "M", "قي"),
- (0xFC37, "M", "كا"),
- (0xFC38, "M", "كج"),
- (0xFC39, "M", "كح"),
- (0xFC3A, "M", "كخ"),
- (0xFC3B, "M", "كل"),
- (0xFC3C, "M", "كم"),
- (0xFC3D, "M", "كى"),
- (0xFC3E, "M", "كي"),
- (0xFC3F, "M", "لج"),
- (0xFC40, "M", "لح"),
- (0xFC41, "M", "لخ"),
- (0xFC42, "M", "لم"),
- (0xFC43, "M", "لى"),
- (0xFC44, "M", "لي"),
- (0xFC45, "M", "مج"),
- (0xFC46, "M", "مح"),
- (0xFC47, "M", "مخ"),
- (0xFC48, "M", "مم"),
- (0xFC49, "M", "مى"),
- (0xFC4A, "M", "مي"),
- (0xFC4B, "M", "نج"),
- (0xFC4C, "M", "نح"),
- (0xFC4D, "M", "نخ"),
- (0xFC4E, "M", "نم"),
- (0xFC4F, "M", "نى"),
- (0xFC50, "M", "ني"),
- (0xFC51, "M", "هج"),
- (0xFC52, "M", "هم"),
- (0xFC53, "M", "هى"),
- (0xFC54, "M", "هي"),
- (0xFC55, "M", "يج"),
- (0xFC56, "M", "يح"),
- (0xFC57, "M", "يخ"),
- (0xFC58, "M", "يم"),
- (0xFC59, "M", "يى"),
- (0xFC5A, "M", "يي"),
- (0xFC5B, "M", "ذٰ"),
- (0xFC5C, "M", "رٰ"),
- (0xFC5D, "M", "ىٰ"),
- (0xFC5E, "M", " ٌّ"),
- (0xFC5F, "M", " ٍّ"),
- (0xFC60, "M", " َّ"),
- (0xFC61, "M", " ُّ"),
- (0xFC62, "M", " ِّ"),
- (0xFC63, "M", " ّٰ"),
- (0xFC64, "M", "ئر"),
- (0xFC65, "M", "ئز"),
- (0xFC66, "M", "ئم"),
- (0xFC67, "M", "ئن"),
- (0xFC68, "M", "ئى"),
- (0xFC69, "M", "ئي"),
- (0xFC6A, "M", "بر"),
- (0xFC6B, "M", "بز"),
- (0xFC6C, "M", "بم"),
- (0xFC6D, "M", "بن"),
- (0xFC6E, "M", "بى"),
- (0xFC6F, "M", "بي"),
- (0xFC70, "M", "تر"),
- (0xFC71, "M", "تز"),
- (0xFC72, "M", "تم"),
- (0xFC73, "M", "تن"),
- (0xFC74, "M", "تى"),
- (0xFC75, "M", "تي"),
- (0xFC76, "M", "ثر"),
- (0xFC77, "M", "ثز"),
- (0xFC78, "M", "ثم"),
- (0xFC79, "M", "ثن"),
- (0xFC7A, "M", "ثى"),
- (0xFC7B, "M", "ثي"),
- (0xFC7C, "M", "فى"),
- (0xFC7D, "M", "في"),
- (0xFC7E, "M", "قى"),
- (0xFC7F, "M", "قي"),
- (0xFC80, "M", "كا"),
- (0xFC81, "M", "كل"),
- (0xFC82, "M", "كم"),
- (0xFC83, "M", "كى"),
- (0xFC84, "M", "كي"),
- (0xFC85, "M", "لم"),
- (0xFC86, "M", "لى"),
- (0xFC87, "M", "لي"),
- (0xFC88, "M", "ما"),
- (0xFC89, "M", "مم"),
- (0xFC8A, "M", "نر"),
- (0xFC8B, "M", "نز"),
- (0xFC8C, "M", "نم"),
- (0xFC8D, "M", "نن"),
- (0xFC8E, "M", "نى"),
- (0xFC8F, "M", "ني"),
- (0xFC90, "M", "ىٰ"),
- (0xFC91, "M", "ير"),
- (0xFC92, "M", "يز"),
- (0xFC93, "M", "يم"),
- (0xFC94, "M", "ين"),
- (0xFC95, "M", "يى"),
- (0xFC96, "M", "يي"),
- (0xFC97, "M", "ئج"),
- (0xFC98, "M", "ئح"),
- (0xFC99, "M", "ئخ"),
- (0xFC9A, "M", "ئم"),
- (0xFC9B, "M", "ئه"),
- (0xFC9C, "M", "بج"),
- (0xFC9D, "M", "بح"),
- (0xFC9E, "M", "بخ"),
- (0xFC9F, "M", "بم"),
- (0xFCA0, "M", "به"),
- (0xFCA1, "M", "تج"),
- (0xFCA2, "M", "تح"),
- (0xFCA3, "M", "تخ"),
- (0xFCA4, "M", "تم"),
- (0xFCA5, "M", "ته"),
- (0xFCA6, "M", "ثم"),
- (0xFCA7, "M", "جح"),
- (0xFCA8, "M", "جم"),
- (0xFCA9, "M", "حج"),
- (0xFCAA, "M", "حم"),
- (0xFCAB, "M", "خج"),
- (0xFCAC, "M", "خم"),
- (0xFCAD, "M", "سج"),
- (0xFCAE, "M", "سح"),
- (0xFCAF, "M", "سخ"),
- (0xFCB0, "M", "سم"),
- (0xFCB1, "M", "صح"),
- (0xFCB2, "M", "صخ"),
- (0xFCB3, "M", "صم"),
- (0xFCB4, "M", "ضج"),
- (0xFCB5, "M", "ضح"),
- (0xFCB6, "M", "ضخ"),
- (0xFCB7, "M", "ضم"),
- (0xFCB8, "M", "طح"),
- (0xFCB9, "M", "ظم"),
- (0xFCBA, "M", "عج"),
- (0xFCBB, "M", "عم"),
- (0xFCBC, "M", "غج"),
- (0xFCBD, "M", "غم"),
- (0xFCBE, "M", "فج"),
- (0xFCBF, "M", "فح"),
- (0xFCC0, "M", "فخ"),
- (0xFCC1, "M", "فم"),
- (0xFCC2, "M", "قح"),
- (0xFCC3, "M", "قم"),
- (0xFCC4, "M", "كج"),
- (0xFCC5, "M", "كح"),
- (0xFCC6, "M", "كخ"),
- (0xFCC7, "M", "كل"),
- (0xFCC8, "M", "كم"),
- (0xFCC9, "M", "لج"),
- (0xFCCA, "M", "لح"),
- (0xFCCB, "M", "لخ"),
- (0xFCCC, "M", "لم"),
- (0xFCCD, "M", "له"),
- (0xFCCE, "M", "مج"),
- (0xFCCF, "M", "مح"),
- (0xFCD0, "M", "مخ"),
- (0xFCD1, "M", "مم"),
- (0xFCD2, "M", "نج"),
- (0xFCD3, "M", "نح"),
- (0xFCD4, "M", "نخ"),
- (0xFCD5, "M", "نم"),
- (0xFCD6, "M", "نه"),
- (0xFCD7, "M", "هج"),
- (0xFCD8, "M", "هم"),
- (0xFCD9, "M", "هٰ"),
- (0xFCDA, "M", "يج"),
- (0xFCDB, "M", "يح"),
- (0xFCDC, "M", "يخ"),
- (0xFCDD, "M", "يم"),
- (0xFCDE, "M", "يه"),
- (0xFCDF, "M", "ئم"),
- (0xFCE0, "M", "ئه"),
- (0xFCE1, "M", "بم"),
- (0xFCE2, "M", "به"),
- (0xFCE3, "M", "تم"),
- (0xFCE4, "M", "ته"),
- (0xFCE5, "M", "ثم"),
- (0xFCE6, "M", "ثه"),
- (0xFCE7, "M", "سم"),
- (0xFCE8, "M", "سه"),
- (0xFCE9, "M", "شم"),
- (0xFCEA, "M", "شه"),
- (0xFCEB, "M", "كل"),
- (0xFCEC, "M", "كم"),
- (0xFCED, "M", "لم"),
- (0xFCEE, "M", "نم"),
- (0xFCEF, "M", "نه"),
- (0xFCF0, "M", "يم"),
- (0xFCF1, "M", "يه"),
- (0xFCF2, "M", "ـَّ"),
- (0xFCF3, "M", "ـُّ"),
- (0xFCF4, "M", "ـِّ"),
- (0xFCF5, "M", "طى"),
- (0xFCF6, "M", "طي"),
- (0xFCF7, "M", "عى"),
- (0xFCF8, "M", "عي"),
- (0xFCF9, "M", "غى"),
- (0xFCFA, "M", "غي"),
- (0xFCFB, "M", "سى"),
- (0xFCFC, "M", "سي"),
- (0xFCFD, "M", "شى"),
- (0xFCFE, "M", "شي"),
- (0xFCFF, "M", "حى"),
- (0xFD00, "M", "حي"),
- (0xFD01, "M", "جى"),
- (0xFD02, "M", "جي"),
- (0xFD03, "M", "خى"),
- (0xFD04, "M", "خي"),
- (0xFD05, "M", "صى"),
- (0xFD06, "M", "صي"),
- (0xFD07, "M", "ضى"),
- (0xFD08, "M", "ضي"),
- (0xFD09, "M", "شج"),
- (0xFD0A, "M", "شح"),
- (0xFD0B, "M", "شخ"),
- (0xFD0C, "M", "شم"),
- (0xFD0D, "M", "شر"),
- (0xFD0E, "M", "سر"),
- (0xFD0F, "M", "صر"),
- (0xFD10, "M", "ضر"),
- (0xFD11, "M", "طى"),
- (0xFD12, "M", "طي"),
- (0xFD13, "M", "عى"),
- (0xFD14, "M", "عي"),
- (0xFD15, "M", "غى"),
- (0xFD16, "M", "غي"),
- (0xFD17, "M", "سى"),
- (0xFD18, "M", "سي"),
- (0xFD19, "M", "شى"),
- (0xFD1A, "M", "شي"),
- (0xFD1B, "M", "حى"),
- (0xFD1C, "M", "حي"),
- (0xFD1D, "M", "جى"),
- (0xFD1E, "M", "جي"),
- (0xFD1F, "M", "خى"),
- (0xFD20, "M", "خي"),
- (0xFD21, "M", "صى"),
- (0xFD22, "M", "صي"),
- (0xFD23, "M", "ضى"),
- (0xFD24, "M", "ضي"),
- (0xFD25, "M", "شج"),
- (0xFD26, "M", "شح"),
- (0xFD27, "M", "شخ"),
- (0xFD28, "M", "شم"),
- (0xFD29, "M", "شر"),
- (0xFD2A, "M", "سر"),
- (0xFD2B, "M", "صر"),
- (0xFD2C, "M", "ضر"),
- (0xFD2D, "M", "شج"),
- (0xFD2E, "M", "شح"),
- (0xFD2F, "M", "شخ"),
- (0xFD30, "M", "شم"),
- (0xFD31, "M", "سه"),
- (0xFD32, "M", "شه"),
- (0xFD33, "M", "طم"),
- (0xFD34, "M", "سج"),
- (0xFD35, "M", "سح"),
- (0xFD36, "M", "سخ"),
- (0xFD37, "M", "شج"),
- (0xFD38, "M", "شح"),
- (0xFD39, "M", "شخ"),
- (0xFD3A, "M", "طم"),
- (0xFD3B, "M", "ظم"),
- (0xFD3C, "M", "اً"),
- (0xFD3E, "V"),
- (0xFD50, "M", "تجم"),
- (0xFD51, "M", "تحج"),
- (0xFD53, "M", "تحم"),
- (0xFD54, "M", "تخم"),
- (0xFD55, "M", "تمج"),
- (0xFD56, "M", "تمح"),
- (0xFD57, "M", "تمخ"),
- (0xFD58, "M", "جمح"),
- (0xFD5A, "M", "حمي"),
- (0xFD5B, "M", "حمى"),
- (0xFD5C, "M", "سحج"),
- (0xFD5D, "M", "سجح"),
- (0xFD5E, "M", "سجى"),
- (0xFD5F, "M", "سمح"),
- (0xFD61, "M", "سمج"),
- (0xFD62, "M", "سمم"),
- (0xFD64, "M", "صحح"),
- (0xFD66, "M", "صمم"),
- (0xFD67, "M", "شحم"),
- (0xFD69, "M", "شجي"),
- (0xFD6A, "M", "شمخ"),
- (0xFD6C, "M", "شمم"),
- (0xFD6E, "M", "ضحى"),
- (0xFD6F, "M", "ضخم"),
- (0xFD71, "M", "طمح"),
- (0xFD73, "M", "طمم"),
- (0xFD74, "M", "طمي"),
- (0xFD75, "M", "عجم"),
- (0xFD76, "M", "عمم"),
- (0xFD78, "M", "عمى"),
- (0xFD79, "M", "غمم"),
- (0xFD7A, "M", "غمي"),
- (0xFD7B, "M", "غمى"),
- (0xFD7C, "M", "فخم"),
- (0xFD7E, "M", "قمح"),
- (0xFD7F, "M", "قمم"),
- (0xFD80, "M", "لحم"),
- (0xFD81, "M", "لحي"),
- (0xFD82, "M", "لحى"),
- (0xFD83, "M", "لجج"),
- (0xFD85, "M", "لخم"),
- (0xFD87, "M", "لمح"),
- (0xFD89, "M", "محج"),
- (0xFD8A, "M", "محم"),
- (0xFD8B, "M", "محي"),
- (0xFD8C, "M", "مجح"),
- (0xFD8D, "M", "مجم"),
- (0xFD8E, "M", "مخج"),
- (0xFD8F, "M", "مخم"),
- (0xFD90, "V"),
- (0xFD92, "M", "مجخ"),
- (0xFD93, "M", "همج"),
- (0xFD94, "M", "همم"),
- (0xFD95, "M", "نحم"),
- (0xFD96, "M", "نحى"),
- (0xFD97, "M", "نجم"),
- (0xFD99, "M", "نجى"),
- (0xFD9A, "M", "نمي"),
- (0xFD9B, "M", "نمى"),
- (0xFD9C, "M", "يمم"),
- (0xFD9E, "M", "بخي"),
- (0xFD9F, "M", "تجي"),
- (0xFDA0, "M", "تجى"),
- (0xFDA1, "M", "تخي"),
- (0xFDA2, "M", "تخى"),
- (0xFDA3, "M", "تمي"),
- (0xFDA4, "M", "تمى"),
- (0xFDA5, "M", "جمي"),
- (0xFDA6, "M", "جحى"),
- (0xFDA7, "M", "جمى"),
- (0xFDA8, "M", "سخى"),
- (0xFDA9, "M", "صحي"),
- (0xFDAA, "M", "شحي"),
- (0xFDAB, "M", "ضحي"),
- (0xFDAC, "M", "لجي"),
- (0xFDAD, "M", "لمي"),
- (0xFDAE, "M", "يحي"),
- (0xFDAF, "M", "يجي"),
- (0xFDB0, "M", "يمي"),
- (0xFDB1, "M", "ممي"),
- (0xFDB2, "M", "قمي"),
- (0xFDB3, "M", "نحي"),
- (0xFDB4, "M", "قمح"),
- (0xFDB5, "M", "لحم"),
- (0xFDB6, "M", "عمي"),
- (0xFDB7, "M", "كمي"),
- (0xFDB8, "M", "نجح"),
- (0xFDB9, "M", "مخي"),
- (0xFDBA, "M", "لجم"),
- (0xFDBB, "M", "كمم"),
- (0xFDBC, "M", "لجم"),
- (0xFDBD, "M", "نجح"),
- (0xFDBE, "M", "جحي"),
- (0xFDBF, "M", "حجي"),
- (0xFDC0, "M", "مجي"),
- (0xFDC1, "M", "فمي"),
- (0xFDC2, "M", "بحي"),
- (0xFDC3, "M", "كمم"),
- (0xFDC4, "M", "عجم"),
- (0xFDC5, "M", "صمم"),
- (0xFDC6, "M", "سخي"),
- (0xFDC7, "M", "نجي"),
- (0xFDC8, "V"),
- (0xFDD0, "X"),
- (0xFDF0, "M", "صلے"),
- (0xFDF1, "M", "قلے"),
- (0xFDF2, "M", "الله"),
- (0xFDF3, "M", "اكبر"),
- (0xFDF4, "M", "محمد"),
- (0xFDF5, "M", "صلعم"),
- (0xFDF6, "M", "رسول"),
- (0xFDF7, "M", "عليه"),
- (0xFDF8, "M", "وسلم"),
- (0xFDF9, "M", "صلى"),
- (0xFDFA, "M", "صلى الله عليه وسلم"),
- (0xFDFB, "M", "جل جلاله"),
- (0xFDFC, "M", "ریال"),
- (0xFDFD, "V"),
- (0xFE00, "I"),
- (0xFE10, "M", ","),
- (0xFE11, "M", "、"),
- (0xFE12, "X"),
- (0xFE13, "M", ":"),
- (0xFE14, "M", ";"),
- (0xFE15, "M", "!"),
- (0xFE16, "M", "?"),
- (0xFE17, "M", "〖"),
- (0xFE18, "M", "〗"),
- (0xFE19, "X"),
- (0xFE20, "V"),
- (0xFE30, "X"),
- (0xFE31, "M", "—"),
- (0xFE32, "M", "–"),
- (0xFE33, "M", "_"),
- (0xFE35, "M", "("),
- (0xFE36, "M", ")"),
- (0xFE37, "M", "{"),
- (0xFE38, "M", "}"),
- (0xFE39, "M", "〔"),
- (0xFE3A, "M", "〕"),
- (0xFE3B, "M", "【"),
- (0xFE3C, "M", "】"),
- (0xFE3D, "M", "《"),
- (0xFE3E, "M", "》"),
- (0xFE3F, "M", "〈"),
- (0xFE40, "M", "〉"),
- (0xFE41, "M", "「"),
- (0xFE42, "M", "」"),
- (0xFE43, "M", "『"),
- (0xFE44, "M", "』"),
- (0xFE45, "V"),
- (0xFE47, "M", "["),
- (0xFE48, "M", "]"),
- (0xFE49, "M", " ̅"),
- (0xFE4D, "M", "_"),
- (0xFE50, "M", ","),
- (0xFE51, "M", "、"),
- (0xFE52, "X"),
- (0xFE54, "M", ";"),
- (0xFE55, "M", ":"),
- (0xFE56, "M", "?"),
- (0xFE57, "M", "!"),
- (0xFE58, "M", "—"),
- (0xFE59, "M", "("),
- (0xFE5A, "M", ")"),
- (0xFE5B, "M", "{"),
- (0xFE5C, "M", "}"),
- (0xFE5D, "M", "〔"),
- (0xFE5E, "M", "〕"),
- (0xFE5F, "M", "#"),
- (0xFE60, "M", "&"),
- (0xFE61, "M", "*"),
- (0xFE62, "M", "+"),
- (0xFE63, "M", "-"),
- (0xFE64, "M", "<"),
- (0xFE65, "M", ">"),
- (0xFE66, "M", "="),
- (0xFE67, "X"),
- (0xFE68, "M", "\\"),
- (0xFE69, "M", "$"),
- (0xFE6A, "M", "%"),
- (0xFE6B, "M", "@"),
- (0xFE6C, "X"),
- (0xFE70, "M", " ً"),
- (0xFE71, "M", "ـً"),
- (0xFE72, "M", " ٌ"),
- (0xFE73, "V"),
- (0xFE74, "M", " ٍ"),
- (0xFE75, "X"),
- (0xFE76, "M", " َ"),
- (0xFE77, "M", "ـَ"),
- (0xFE78, "M", " ُ"),
- (0xFE79, "M", "ـُ"),
- (0xFE7A, "M", " ِ"),
- (0xFE7B, "M", "ـِ"),
- (0xFE7C, "M", " ّ"),
- (0xFE7D, "M", "ـّ"),
- (0xFE7E, "M", " ْ"),
- (0xFE7F, "M", "ـْ"),
- (0xFE80, "M", "ء"),
- (0xFE81, "M", "آ"),
- (0xFE83, "M", "أ"),
- (0xFE85, "M", "ؤ"),
- (0xFE87, "M", "إ"),
- (0xFE89, "M", "ئ"),
- (0xFE8D, "M", "ا"),
- (0xFE8F, "M", "ب"),
- (0xFE93, "M", "ة"),
- (0xFE95, "M", "ت"),
- (0xFE99, "M", "ث"),
- (0xFE9D, "M", "ج"),
- (0xFEA1, "M", "ح"),
- (0xFEA5, "M", "خ"),
- (0xFEA9, "M", "د"),
- (0xFEAB, "M", "ذ"),
- (0xFEAD, "M", "ر"),
- (0xFEAF, "M", "ز"),
- (0xFEB1, "M", "س"),
- (0xFEB5, "M", "ش"),
- (0xFEB9, "M", "ص"),
- (0xFEBD, "M", "ض"),
- (0xFEC1, "M", "ط"),
- (0xFEC5, "M", "ظ"),
- (0xFEC9, "M", "ع"),
- (0xFECD, "M", "غ"),
- (0xFED1, "M", "ف"),
- (0xFED5, "M", "ق"),
- (0xFED9, "M", "ك"),
- (0xFEDD, "M", "ل"),
- (0xFEE1, "M", "م"),
- (0xFEE5, "M", "ن"),
- (0xFEE9, "M", "ه"),
- (0xFEED, "M", "و"),
- (0xFEEF, "M", "ى"),
- (0xFEF1, "M", "ي"),
- (0xFEF5, "M", "لآ"),
- (0xFEF7, "M", "لأ"),
- (0xFEF9, "M", "لإ"),
- (0xFEFB, "M", "لا"),
- (0xFEFD, "X"),
- (0xFEFF, "I"),
- (0xFF00, "X"),
- (0xFF01, "M", "!"),
- (0xFF02, "M", '"'),
- (0xFF03, "M", "#"),
- (0xFF04, "M", "$"),
- (0xFF05, "M", "%"),
- (0xFF06, "M", "&"),
- (0xFF07, "M", "'"),
- (0xFF08, "M", "("),
- (0xFF09, "M", ")"),
- (0xFF0A, "M", "*"),
- (0xFF0B, "M", "+"),
- (0xFF0C, "M", ","),
- (0xFF0D, "M", "-"),
- (0xFF0E, "M", "."),
- (0xFF0F, "M", "/"),
- (0xFF10, "M", "0"),
- (0xFF11, "M", "1"),
- (0xFF12, "M", "2"),
- (0xFF13, "M", "3"),
- (0xFF14, "M", "4"),
- (0xFF15, "M", "5"),
- (0xFF16, "M", "6"),
- (0xFF17, "M", "7"),
- (0xFF18, "M", "8"),
- (0xFF19, "M", "9"),
- (0xFF1A, "M", ":"),
- (0xFF1B, "M", ";"),
- (0xFF1C, "M", "<"),
- (0xFF1D, "M", "="),
- (0xFF1E, "M", ">"),
- (0xFF1F, "M", "?"),
- (0xFF20, "M", "@"),
- (0xFF21, "M", "a"),
- (0xFF22, "M", "b"),
- (0xFF23, "M", "c"),
- (0xFF24, "M", "d"),
- (0xFF25, "M", "e"),
- (0xFF26, "M", "f"),
- (0xFF27, "M", "g"),
- (0xFF28, "M", "h"),
- (0xFF29, "M", "i"),
- (0xFF2A, "M", "j"),
- (0xFF2B, "M", "k"),
- (0xFF2C, "M", "l"),
- (0xFF2D, "M", "m"),
- (0xFF2E, "M", "n"),
- (0xFF2F, "M", "o"),
- (0xFF30, "M", "p"),
- (0xFF31, "M", "q"),
- (0xFF32, "M", "r"),
- (0xFF33, "M", "s"),
- (0xFF34, "M", "t"),
- (0xFF35, "M", "u"),
- (0xFF36, "M", "v"),
- (0xFF37, "M", "w"),
- (0xFF38, "M", "x"),
- (0xFF39, "M", "y"),
- (0xFF3A, "M", "z"),
- (0xFF3B, "M", "["),
- (0xFF3C, "M", "\\"),
- (0xFF3D, "M", "]"),
- (0xFF3E, "M", "^"),
- (0xFF3F, "M", "_"),
- (0xFF40, "M", "`"),
- (0xFF41, "M", "a"),
- (0xFF42, "M", "b"),
- (0xFF43, "M", "c"),
- (0xFF44, "M", "d"),
- (0xFF45, "M", "e"),
- (0xFF46, "M", "f"),
- (0xFF47, "M", "g"),
- (0xFF48, "M", "h"),
- (0xFF49, "M", "i"),
- (0xFF4A, "M", "j"),
- (0xFF4B, "M", "k"),
- (0xFF4C, "M", "l"),
- (0xFF4D, "M", "m"),
- (0xFF4E, "M", "n"),
- (0xFF4F, "M", "o"),
- (0xFF50, "M", "p"),
- (0xFF51, "M", "q"),
- (0xFF52, "M", "r"),
- (0xFF53, "M", "s"),
- (0xFF54, "M", "t"),
- (0xFF55, "M", "u"),
- (0xFF56, "M", "v"),
- (0xFF57, "M", "w"),
- (0xFF58, "M", "x"),
- (0xFF59, "M", "y"),
- (0xFF5A, "M", "z"),
- (0xFF5B, "M", "{"),
- (0xFF5C, "M", "|"),
- (0xFF5D, "M", "}"),
- (0xFF5E, "M", "~"),
- (0xFF5F, "M", "⦅"),
- (0xFF60, "M", "⦆"),
- (0xFF61, "M", "."),
- (0xFF62, "M", "「"),
- (0xFF63, "M", "」"),
- (0xFF64, "M", "、"),
- (0xFF65, "M", "・"),
- (0xFF66, "M", "ヲ"),
- (0xFF67, "M", "ァ"),
- (0xFF68, "M", "ィ"),
- (0xFF69, "M", "ゥ"),
- (0xFF6A, "M", "ェ"),
- (0xFF6B, "M", "ォ"),
- (0xFF6C, "M", "ャ"),
- (0xFF6D, "M", "ュ"),
- (0xFF6E, "M", "ョ"),
- (0xFF6F, "M", "ッ"),
- (0xFF70, "M", "ー"),
- (0xFF71, "M", "ア"),
- (0xFF72, "M", "イ"),
- (0xFF73, "M", "ウ"),
- (0xFF74, "M", "エ"),
- (0xFF75, "M", "オ"),
- (0xFF76, "M", "カ"),
- (0xFF77, "M", "キ"),
- (0xFF78, "M", "ク"),
- (0xFF79, "M", "ケ"),
- (0xFF7A, "M", "コ"),
- (0xFF7B, "M", "サ"),
- (0xFF7C, "M", "シ"),
- (0xFF7D, "M", "ス"),
- (0xFF7E, "M", "セ"),
- (0xFF7F, "M", "ソ"),
- (0xFF80, "M", "タ"),
- (0xFF81, "M", "チ"),
- (0xFF82, "M", "ツ"),
- (0xFF83, "M", "テ"),
- (0xFF84, "M", "ト"),
- (0xFF85, "M", "ナ"),
- (0xFF86, "M", "ニ"),
- (0xFF87, "M", "ヌ"),
- (0xFF88, "M", "ネ"),
- (0xFF89, "M", "ノ"),
- (0xFF8A, "M", "ハ"),
- (0xFF8B, "M", "ヒ"),
- (0xFF8C, "M", "フ"),
- (0xFF8D, "M", "ヘ"),
- (0xFF8E, "M", "ホ"),
- (0xFF8F, "M", "マ"),
- (0xFF90, "M", "ミ"),
- (0xFF91, "M", "ム"),
- (0xFF92, "M", "メ"),
- (0xFF93, "M", "モ"),
- (0xFF94, "M", "ヤ"),
- (0xFF95, "M", "ユ"),
- (0xFF96, "M", "ヨ"),
- (0xFF97, "M", "ラ"),
- (0xFF98, "M", "リ"),
- (0xFF99, "M", "ル"),
- (0xFF9A, "M", "レ"),
- (0xFF9B, "M", "ロ"),
- (0xFF9C, "M", "ワ"),
- (0xFF9D, "M", "ン"),
- (0xFF9E, "M", "゙"),
- (0xFF9F, "M", "゚"),
- (0xFFA0, "I"),
- (0xFFA1, "M", "ᄀ"),
- (0xFFA2, "M", "ᄁ"),
- (0xFFA3, "M", "ᆪ"),
- (0xFFA4, "M", "ᄂ"),
- (0xFFA5, "M", "ᆬ"),
- (0xFFA6, "M", "ᆭ"),
- (0xFFA7, "M", "ᄃ"),
- (0xFFA8, "M", "ᄄ"),
- (0xFFA9, "M", "ᄅ"),
- (0xFFAA, "M", "ᆰ"),
- (0xFFAB, "M", "ᆱ"),
- (0xFFAC, "M", "ᆲ"),
- (0xFFAD, "M", "ᆳ"),
- (0xFFAE, "M", "ᆴ"),
- (0xFFAF, "M", "ᆵ"),
- (0xFFB0, "M", "ᄚ"),
- (0xFFB1, "M", "ᄆ"),
- (0xFFB2, "M", "ᄇ"),
- (0xFFB3, "M", "ᄈ"),
- (0xFFB4, "M", "ᄡ"),
- (0xFFB5, "M", "ᄉ"),
- (0xFFB6, "M", "ᄊ"),
- (0xFFB7, "M", "ᄋ"),
- (0xFFB8, "M", "ᄌ"),
- (0xFFB9, "M", "ᄍ"),
- (0xFFBA, "M", "ᄎ"),
- (0xFFBB, "M", "ᄏ"),
- (0xFFBC, "M", "ᄐ"),
- (0xFFBD, "M", "ᄑ"),
- (0xFFBE, "M", "ᄒ"),
- (0xFFBF, "X"),
- (0xFFC2, "M", "ᅡ"),
- (0xFFC3, "M", "ᅢ"),
- (0xFFC4, "M", "ᅣ"),
- (0xFFC5, "M", "ᅤ"),
- (0xFFC6, "M", "ᅥ"),
- (0xFFC7, "M", "ᅦ"),
- (0xFFC8, "X"),
- (0xFFCA, "M", "ᅧ"),
- (0xFFCB, "M", "ᅨ"),
- (0xFFCC, "M", "ᅩ"),
- (0xFFCD, "M", "ᅪ"),
- (0xFFCE, "M", "ᅫ"),
- (0xFFCF, "M", "ᅬ"),
- (0xFFD0, "X"),
- (0xFFD2, "M", "ᅭ"),
- (0xFFD3, "M", "ᅮ"),
- (0xFFD4, "M", "ᅯ"),
- (0xFFD5, "M", "ᅰ"),
- (0xFFD6, "M", "ᅱ"),
- (0xFFD7, "M", "ᅲ"),
- (0xFFD8, "X"),
- (0xFFDA, "M", "ᅳ"),
- (0xFFDB, "M", "ᅴ"),
- (0xFFDC, "M", "ᅵ"),
- (0xFFDD, "X"),
- (0xFFE0, "M", "¢"),
- (0xFFE1, "M", "£"),
- (0xFFE2, "M", "¬"),
- (0xFFE3, "M", " ̄"),
- (0xFFE4, "M", "¦"),
- (0xFFE5, "M", "¥"),
- (0xFFE6, "M", "₩"),
- (0xFFE7, "X"),
- (0xFFE8, "M", "│"),
- (0xFFE9, "M", "←"),
- (0xFFEA, "M", "↑"),
- (0xFFEB, "M", "→"),
- (0xFFEC, "M", "↓"),
- (0xFFED, "M", "■"),
- (0xFFEE, "M", "○"),
- (0xFFEF, "X"),
- (0x10000, "V"),
- (0x1000C, "X"),
- (0x1000D, "V"),
- (0x10027, "X"),
- (0x10028, "V"),
- (0x1003B, "X"),
- (0x1003C, "V"),
- (0x1003E, "X"),
- (0x1003F, "V"),
- (0x1004E, "X"),
- (0x10050, "V"),
- (0x1005E, "X"),
- (0x10080, "V"),
- (0x100FB, "X"),
- (0x10100, "V"),
- (0x10103, "X"),
- (0x10107, "V"),
- (0x10134, "X"),
- (0x10137, "V"),
- (0x1018F, "X"),
- (0x10190, "V"),
- (0x1019D, "X"),
- (0x101A0, "V"),
- (0x101A1, "X"),
- (0x101D0, "V"),
- (0x101FE, "X"),
- (0x10280, "V"),
- (0x1029D, "X"),
- (0x102A0, "V"),
- (0x102D1, "X"),
- (0x102E0, "V"),
- (0x102FC, "X"),
- (0x10300, "V"),
- (0x10324, "X"),
- (0x1032D, "V"),
- (0x1034B, "X"),
- (0x10350, "V"),
- (0x1037B, "X"),
- (0x10380, "V"),
- (0x1039E, "X"),
- (0x1039F, "V"),
- (0x103C4, "X"),
- (0x103C8, "V"),
- (0x103D6, "X"),
- (0x10400, "M", "𐐨"),
- (0x10401, "M", "𐐩"),
- (0x10402, "M", "𐐪"),
- (0x10403, "M", "𐐫"),
- (0x10404, "M", "𐐬"),
- (0x10405, "M", "𐐭"),
- (0x10406, "M", "𐐮"),
- (0x10407, "M", "𐐯"),
- (0x10408, "M", "𐐰"),
- (0x10409, "M", "𐐱"),
- (0x1040A, "M", "𐐲"),
- (0x1040B, "M", "𐐳"),
- (0x1040C, "M", "𐐴"),
- (0x1040D, "M", "𐐵"),
- (0x1040E, "M", "𐐶"),
- (0x1040F, "M", "𐐷"),
- (0x10410, "M", "𐐸"),
- (0x10411, "M", "𐐹"),
- (0x10412, "M", "𐐺"),
- (0x10413, "M", "𐐻"),
- (0x10414, "M", "𐐼"),
- (0x10415, "M", "𐐽"),
- (0x10416, "M", "𐐾"),
- (0x10417, "M", "𐐿"),
- (0x10418, "M", "𐑀"),
- (0x10419, "M", "𐑁"),
- (0x1041A, "M", "𐑂"),
- (0x1041B, "M", "𐑃"),
- (0x1041C, "M", "𐑄"),
- (0x1041D, "M", "𐑅"),
- (0x1041E, "M", "𐑆"),
- (0x1041F, "M", "𐑇"),
- (0x10420, "M", "𐑈"),
- (0x10421, "M", "𐑉"),
- (0x10422, "M", "𐑊"),
- (0x10423, "M", "𐑋"),
- (0x10424, "M", "𐑌"),
- (0x10425, "M", "𐑍"),
- (0x10426, "M", "𐑎"),
- (0x10427, "M", "𐑏"),
- (0x10428, "V"),
- (0x1049E, "X"),
- (0x104A0, "V"),
- (0x104AA, "X"),
- (0x104B0, "M", "𐓘"),
- (0x104B1, "M", "𐓙"),
- (0x104B2, "M", "𐓚"),
- (0x104B3, "M", "𐓛"),
- (0x104B4, "M", "𐓜"),
- (0x104B5, "M", "𐓝"),
- (0x104B6, "M", "𐓞"),
- (0x104B7, "M", "𐓟"),
- (0x104B8, "M", "𐓠"),
- (0x104B9, "M", "𐓡"),
- (0x104BA, "M", "𐓢"),
- (0x104BB, "M", "𐓣"),
- (0x104BC, "M", "𐓤"),
- (0x104BD, "M", "𐓥"),
- (0x104BE, "M", "𐓦"),
- (0x104BF, "M", "𐓧"),
- (0x104C0, "M", "𐓨"),
- (0x104C1, "M", "𐓩"),
- (0x104C2, "M", "𐓪"),
- (0x104C3, "M", "𐓫"),
- (0x104C4, "M", "𐓬"),
- (0x104C5, "M", "𐓭"),
- (0x104C6, "M", "𐓮"),
- (0x104C7, "M", "𐓯"),
- (0x104C8, "M", "𐓰"),
- (0x104C9, "M", "𐓱"),
- (0x104CA, "M", "𐓲"),
- (0x104CB, "M", "𐓳"),
- (0x104CC, "M", "𐓴"),
- (0x104CD, "M", "𐓵"),
- (0x104CE, "M", "𐓶"),
- (0x104CF, "M", "𐓷"),
- (0x104D0, "M", "𐓸"),
- (0x104D1, "M", "𐓹"),
- (0x104D2, "M", "𐓺"),
- (0x104D3, "M", "𐓻"),
- (0x104D4, "X"),
- (0x104D8, "V"),
- (0x104FC, "X"),
- (0x10500, "V"),
- (0x10528, "X"),
- (0x10530, "V"),
- (0x10564, "X"),
- (0x1056F, "V"),
- (0x10570, "M", "𐖗"),
- (0x10571, "M", "𐖘"),
- (0x10572, "M", "𐖙"),
- (0x10573, "M", "𐖚"),
- (0x10574, "M", "𐖛"),
- (0x10575, "M", "𐖜"),
- (0x10576, "M", "𐖝"),
- (0x10577, "M", "𐖞"),
- (0x10578, "M", "𐖟"),
- (0x10579, "M", "𐖠"),
- (0x1057A, "M", "𐖡"),
- (0x1057B, "X"),
- (0x1057C, "M", "𐖣"),
- (0x1057D, "M", "𐖤"),
- (0x1057E, "M", "𐖥"),
- (0x1057F, "M", "𐖦"),
- (0x10580, "M", "𐖧"),
- (0x10581, "M", "𐖨"),
- (0x10582, "M", "𐖩"),
- (0x10583, "M", "𐖪"),
- (0x10584, "M", "𐖫"),
- (0x10585, "M", "𐖬"),
- (0x10586, "M", "𐖭"),
- (0x10587, "M", "𐖮"),
- (0x10588, "M", "𐖯"),
- (0x10589, "M", "𐖰"),
- (0x1058A, "M", "𐖱"),
- (0x1058B, "X"),
- (0x1058C, "M", "𐖳"),
- (0x1058D, "M", "𐖴"),
- (0x1058E, "M", "𐖵"),
- (0x1058F, "M", "𐖶"),
- (0x10590, "M", "𐖷"),
- (0x10591, "M", "𐖸"),
- (0x10592, "M", "𐖹"),
- (0x10593, "X"),
- (0x10594, "M", "𐖻"),
- (0x10595, "M", "𐖼"),
- (0x10596, "X"),
- (0x10597, "V"),
- (0x105A2, "X"),
- (0x105A3, "V"),
- (0x105B2, "X"),
- (0x105B3, "V"),
- (0x105BA, "X"),
- (0x105BB, "V"),
- (0x105BD, "X"),
- (0x105C0, "V"),
- (0x105F4, "X"),
- (0x10600, "V"),
- (0x10737, "X"),
- (0x10740, "V"),
- (0x10756, "X"),
- (0x10760, "V"),
- (0x10768, "X"),
- (0x10780, "V"),
- (0x10781, "M", "ː"),
- (0x10782, "M", "ˑ"),
- (0x10783, "M", "æ"),
- (0x10784, "M", "ʙ"),
- (0x10785, "M", "ɓ"),
- (0x10786, "X"),
- (0x10787, "M", "ʣ"),
- (0x10788, "M", "ꭦ"),
- (0x10789, "M", "ʥ"),
- (0x1078A, "M", "ʤ"),
- (0x1078B, "M", "ɖ"),
- (0x1078C, "M", "ɗ"),
- (0x1078D, "M", "ᶑ"),
- (0x1078E, "M", "ɘ"),
- (0x1078F, "M", "ɞ"),
- (0x10790, "M", "ʩ"),
- (0x10791, "M", "ɤ"),
- (0x10792, "M", "ɢ"),
- (0x10793, "M", "ɠ"),
- (0x10794, "M", "ʛ"),
- (0x10795, "M", "ħ"),
- (0x10796, "M", "ʜ"),
- (0x10797, "M", "ɧ"),
- (0x10798, "M", "ʄ"),
- (0x10799, "M", "ʪ"),
- (0x1079A, "M", "ʫ"),
- (0x1079B, "M", "ɬ"),
- (0x1079C, "M", "𝼄"),
- (0x1079D, "M", "ꞎ"),
- (0x1079E, "M", "ɮ"),
- (0x1079F, "M", "𝼅"),
- (0x107A0, "M", "ʎ"),
- (0x107A1, "M", "𝼆"),
- (0x107A2, "M", "ø"),
- (0x107A3, "M", "ɶ"),
- (0x107A4, "M", "ɷ"),
- (0x107A5, "M", "q"),
- (0x107A6, "M", "ɺ"),
- (0x107A7, "M", "𝼈"),
- (0x107A8, "M", "ɽ"),
- (0x107A9, "M", "ɾ"),
- (0x107AA, "M", "ʀ"),
- (0x107AB, "M", "ʨ"),
- (0x107AC, "M", "ʦ"),
- (0x107AD, "M", "ꭧ"),
- (0x107AE, "M", "ʧ"),
- (0x107AF, "M", "ʈ"),
- (0x107B0, "M", "ⱱ"),
- (0x107B1, "X"),
- (0x107B2, "M", "ʏ"),
- (0x107B3, "M", "ʡ"),
- (0x107B4, "M", "ʢ"),
- (0x107B5, "M", "ʘ"),
- (0x107B6, "M", "ǀ"),
- (0x107B7, "M", "ǁ"),
- (0x107B8, "M", "ǂ"),
- (0x107B9, "M", "𝼊"),
- (0x107BA, "M", "𝼞"),
- (0x107BB, "X"),
- (0x10800, "V"),
- (0x10806, "X"),
- (0x10808, "V"),
- (0x10809, "X"),
- (0x1080A, "V"),
- (0x10836, "X"),
- (0x10837, "V"),
- (0x10839, "X"),
- (0x1083C, "V"),
- (0x1083D, "X"),
- (0x1083F, "V"),
- (0x10856, "X"),
- (0x10857, "V"),
- (0x1089F, "X"),
- (0x108A7, "V"),
- (0x108B0, "X"),
- (0x108E0, "V"),
- (0x108F3, "X"),
- (0x108F4, "V"),
- (0x108F6, "X"),
- (0x108FB, "V"),
- (0x1091C, "X"),
- (0x1091F, "V"),
- (0x1093A, "X"),
- (0x1093F, "V"),
- (0x1095A, "X"),
- (0x10980, "V"),
- (0x109B8, "X"),
- (0x109BC, "V"),
- (0x109D0, "X"),
- (0x109D2, "V"),
- (0x10A04, "X"),
- (0x10A05, "V"),
- (0x10A07, "X"),
- (0x10A0C, "V"),
- (0x10A14, "X"),
- (0x10A15, "V"),
- (0x10A18, "X"),
- (0x10A19, "V"),
- (0x10A36, "X"),
- (0x10A38, "V"),
- (0x10A3B, "X"),
- (0x10A3F, "V"),
- (0x10A49, "X"),
- (0x10A50, "V"),
- (0x10A59, "X"),
- (0x10A60, "V"),
- (0x10AA0, "X"),
- (0x10AC0, "V"),
- (0x10AE7, "X"),
- (0x10AEB, "V"),
- (0x10AF7, "X"),
- (0x10B00, "V"),
- (0x10B36, "X"),
- (0x10B39, "V"),
- (0x10B56, "X"),
- (0x10B58, "V"),
- (0x10B73, "X"),
- (0x10B78, "V"),
- (0x10B92, "X"),
- (0x10B99, "V"),
- (0x10B9D, "X"),
- (0x10BA9, "V"),
- (0x10BB0, "X"),
- (0x10C00, "V"),
- (0x10C49, "X"),
- (0x10C80, "M", "𐳀"),
- (0x10C81, "M", "𐳁"),
- (0x10C82, "M", "𐳂"),
- (0x10C83, "M", "𐳃"),
- (0x10C84, "M", "𐳄"),
- (0x10C85, "M", "𐳅"),
- (0x10C86, "M", "𐳆"),
- (0x10C87, "M", "𐳇"),
- (0x10C88, "M", "𐳈"),
- (0x10C89, "M", "𐳉"),
- (0x10C8A, "M", "𐳊"),
- (0x10C8B, "M", "𐳋"),
- (0x10C8C, "M", "𐳌"),
- (0x10C8D, "M", "𐳍"),
- (0x10C8E, "M", "𐳎"),
- (0x10C8F, "M", "𐳏"),
- (0x10C90, "M", "𐳐"),
- (0x10C91, "M", "𐳑"),
- (0x10C92, "M", "𐳒"),
- (0x10C93, "M", "𐳓"),
- (0x10C94, "M", "𐳔"),
- (0x10C95, "M", "𐳕"),
- (0x10C96, "M", "𐳖"),
- (0x10C97, "M", "𐳗"),
- (0x10C98, "M", "𐳘"),
- (0x10C99, "M", "𐳙"),
- (0x10C9A, "M", "𐳚"),
- (0x10C9B, "M", "𐳛"),
- (0x10C9C, "M", "𐳜"),
- (0x10C9D, "M", "𐳝"),
- (0x10C9E, "M", "𐳞"),
- (0x10C9F, "M", "𐳟"),
- (0x10CA0, "M", "𐳠"),
- (0x10CA1, "M", "𐳡"),
- (0x10CA2, "M", "𐳢"),
- (0x10CA3, "M", "𐳣"),
- (0x10CA4, "M", "𐳤"),
- (0x10CA5, "M", "𐳥"),
- (0x10CA6, "M", "𐳦"),
- (0x10CA7, "M", "𐳧"),
- (0x10CA8, "M", "𐳨"),
- (0x10CA9, "M", "𐳩"),
- (0x10CAA, "M", "𐳪"),
- (0x10CAB, "M", "𐳫"),
- (0x10CAC, "M", "𐳬"),
- (0x10CAD, "M", "𐳭"),
- (0x10CAE, "M", "𐳮"),
- (0x10CAF, "M", "𐳯"),
- (0x10CB0, "M", "𐳰"),
- (0x10CB1, "M", "𐳱"),
- (0x10CB2, "M", "𐳲"),
- (0x10CB3, "X"),
- (0x10CC0, "V"),
- (0x10CF3, "X"),
- (0x10CFA, "V"),
- (0x10D28, "X"),
- (0x10D30, "V"),
- (0x10D3A, "X"),
- (0x10D40, "V"),
- (0x10D50, "M", "𐵰"),
- (0x10D51, "M", "𐵱"),
- (0x10D52, "M", "𐵲"),
- (0x10D53, "M", "𐵳"),
- (0x10D54, "M", "𐵴"),
- (0x10D55, "M", "𐵵"),
- (0x10D56, "M", "𐵶"),
- (0x10D57, "M", "𐵷"),
- (0x10D58, "M", "𐵸"),
- (0x10D59, "M", "𐵹"),
- (0x10D5A, "M", "𐵺"),
- (0x10D5B, "M", "𐵻"),
- (0x10D5C, "M", "𐵼"),
- (0x10D5D, "M", "𐵽"),
- (0x10D5E, "M", "𐵾"),
- (0x10D5F, "M", "𐵿"),
- (0x10D60, "M", "𐶀"),
- (0x10D61, "M", "𐶁"),
- (0x10D62, "M", "𐶂"),
- (0x10D63, "M", "𐶃"),
- (0x10D64, "M", "𐶄"),
- (0x10D65, "M", "𐶅"),
- (0x10D66, "X"),
- (0x10D69, "V"),
- (0x10D86, "X"),
- (0x10D8E, "V"),
- (0x10D90, "X"),
- (0x10E60, "V"),
- (0x10E7F, "X"),
- (0x10E80, "V"),
- (0x10EAA, "X"),
- (0x10EAB, "V"),
- (0x10EAE, "X"),
- (0x10EB0, "V"),
- (0x10EB2, "X"),
- (0x10EC2, "V"),
- (0x10EC8, "X"),
- (0x10ED0, "V"),
- (0x10ED9, "X"),
- (0x10EFA, "V"),
- (0x10F28, "X"),
- (0x10F30, "V"),
- (0x10F5A, "X"),
- (0x10F70, "V"),
- (0x10F8A, "X"),
- (0x10FB0, "V"),
- (0x10FCC, "X"),
- (0x10FE0, "V"),
- (0x10FF7, "X"),
- (0x11000, "V"),
- (0x1104E, "X"),
- (0x11052, "V"),
- (0x11076, "X"),
- (0x1107F, "V"),
- (0x110BD, "X"),
- (0x110BE, "V"),
- (0x110C3, "X"),
- (0x110D0, "V"),
- (0x110E9, "X"),
- (0x110F0, "V"),
- (0x110FA, "X"),
- (0x11100, "V"),
- (0x11135, "X"),
- (0x11136, "V"),
- (0x11148, "X"),
- (0x11150, "V"),
- (0x11177, "X"),
- (0x11180, "V"),
- (0x111E0, "X"),
- (0x111E1, "V"),
- (0x111F5, "X"),
- (0x11200, "V"),
- (0x11212, "X"),
- (0x11213, "V"),
- (0x11242, "X"),
- (0x11280, "V"),
- (0x11287, "X"),
- (0x11288, "V"),
- (0x11289, "X"),
- (0x1128A, "V"),
- (0x1128E, "X"),
- (0x1128F, "V"),
- (0x1129E, "X"),
- (0x1129F, "V"),
- (0x112AA, "X"),
- (0x112B0, "V"),
- (0x112EB, "X"),
- (0x112F0, "V"),
- (0x112FA, "X"),
- (0x11300, "V"),
- (0x11304, "X"),
- (0x11305, "V"),
- (0x1130D, "X"),
- (0x1130F, "V"),
- (0x11311, "X"),
- (0x11313, "V"),
- (0x11329, "X"),
- (0x1132A, "V"),
- (0x11331, "X"),
- (0x11332, "V"),
- (0x11334, "X"),
- (0x11335, "V"),
- (0x1133A, "X"),
- (0x1133B, "V"),
- (0x11345, "X"),
- (0x11347, "V"),
- (0x11349, "X"),
- (0x1134B, "V"),
- (0x1134E, "X"),
- (0x11350, "V"),
- (0x11351, "X"),
- (0x11357, "V"),
- (0x11358, "X"),
- (0x1135D, "V"),
- (0x11364, "X"),
- (0x11366, "V"),
- (0x1136D, "X"),
- (0x11370, "V"),
- (0x11375, "X"),
- (0x11380, "V"),
- (0x1138A, "X"),
- (0x1138B, "V"),
- (0x1138C, "X"),
- (0x1138E, "V"),
- (0x1138F, "X"),
- (0x11390, "V"),
- (0x113B6, "X"),
- (0x113B7, "V"),
- (0x113C1, "X"),
- (0x113C2, "V"),
- (0x113C3, "X"),
- (0x113C5, "V"),
- (0x113C6, "X"),
- (0x113C7, "V"),
- (0x113CB, "X"),
- (0x113CC, "V"),
- (0x113D6, "X"),
- (0x113D7, "V"),
- (0x113D9, "X"),
- (0x113E1, "V"),
- (0x113E3, "X"),
- (0x11400, "V"),
- (0x1145C, "X"),
- (0x1145D, "V"),
- (0x11462, "X"),
- (0x11480, "V"),
- (0x114C8, "X"),
- (0x114D0, "V"),
- (0x114DA, "X"),
- (0x11580, "V"),
- (0x115B6, "X"),
- (0x115B8, "V"),
- (0x115DE, "X"),
- (0x11600, "V"),
- (0x11645, "X"),
- (0x11650, "V"),
- (0x1165A, "X"),
- (0x11660, "V"),
- (0x1166D, "X"),
- (0x11680, "V"),
- (0x116BA, "X"),
- (0x116C0, "V"),
- (0x116CA, "X"),
- (0x116D0, "V"),
- (0x116E4, "X"),
- (0x11700, "V"),
- (0x1171B, "X"),
- (0x1171D, "V"),
- (0x1172C, "X"),
- (0x11730, "V"),
- (0x11747, "X"),
- (0x11800, "V"),
- (0x1183C, "X"),
- (0x118A0, "M", "𑣀"),
- (0x118A1, "M", "𑣁"),
- (0x118A2, "M", "𑣂"),
- (0x118A3, "M", "𑣃"),
- (0x118A4, "M", "𑣄"),
- (0x118A5, "M", "𑣅"),
- (0x118A6, "M", "𑣆"),
- (0x118A7, "M", "𑣇"),
- (0x118A8, "M", "𑣈"),
- (0x118A9, "M", "𑣉"),
- (0x118AA, "M", "𑣊"),
- (0x118AB, "M", "𑣋"),
- (0x118AC, "M", "𑣌"),
- (0x118AD, "M", "𑣍"),
- (0x118AE, "M", "𑣎"),
- (0x118AF, "M", "𑣏"),
- (0x118B0, "M", "𑣐"),
- (0x118B1, "M", "𑣑"),
- (0x118B2, "M", "𑣒"),
- (0x118B3, "M", "𑣓"),
- (0x118B4, "M", "𑣔"),
- (0x118B5, "M", "𑣕"),
- (0x118B6, "M", "𑣖"),
- (0x118B7, "M", "𑣗"),
- (0x118B8, "M", "𑣘"),
- (0x118B9, "M", "𑣙"),
- (0x118BA, "M", "𑣚"),
- (0x118BB, "M", "𑣛"),
- (0x118BC, "M", "𑣜"),
- (0x118BD, "M", "𑣝"),
- (0x118BE, "M", "𑣞"),
- (0x118BF, "M", "𑣟"),
- (0x118C0, "V"),
- (0x118F3, "X"),
- (0x118FF, "V"),
- (0x11907, "X"),
- (0x11909, "V"),
- (0x1190A, "X"),
- (0x1190C, "V"),
- (0x11914, "X"),
- (0x11915, "V"),
- (0x11917, "X"),
- (0x11918, "V"),
- (0x11936, "X"),
- (0x11937, "V"),
- (0x11939, "X"),
- (0x1193B, "V"),
- (0x11947, "X"),
- (0x11950, "V"),
- (0x1195A, "X"),
- (0x119A0, "V"),
- (0x119A8, "X"),
- (0x119AA, "V"),
- (0x119D8, "X"),
- (0x119DA, "V"),
- (0x119E5, "X"),
- (0x11A00, "V"),
- (0x11A48, "X"),
- (0x11A50, "V"),
- (0x11AA3, "X"),
- (0x11AB0, "V"),
- (0x11AF9, "X"),
- (0x11B00, "V"),
- (0x11B0A, "X"),
- (0x11B60, "V"),
- (0x11B68, "X"),
- (0x11BC0, "V"),
- (0x11BE2, "X"),
- (0x11BF0, "V"),
- (0x11BFA, "X"),
- (0x11C00, "V"),
- (0x11C09, "X"),
- (0x11C0A, "V"),
- (0x11C37, "X"),
- (0x11C38, "V"),
- (0x11C46, "X"),
- (0x11C50, "V"),
- (0x11C6D, "X"),
- (0x11C70, "V"),
- (0x11C90, "X"),
- (0x11C92, "V"),
- (0x11CA8, "X"),
- (0x11CA9, "V"),
- (0x11CB7, "X"),
- (0x11D00, "V"),
- (0x11D07, "X"),
- (0x11D08, "V"),
- (0x11D0A, "X"),
- (0x11D0B, "V"),
- (0x11D37, "X"),
- (0x11D3A, "V"),
- (0x11D3B, "X"),
- (0x11D3C, "V"),
- (0x11D3E, "X"),
- (0x11D3F, "V"),
- (0x11D48, "X"),
- (0x11D50, "V"),
- (0x11D5A, "X"),
- (0x11D60, "V"),
- (0x11D66, "X"),
- (0x11D67, "V"),
- (0x11D69, "X"),
- (0x11D6A, "V"),
- (0x11D8F, "X"),
- (0x11D90, "V"),
- (0x11D92, "X"),
- (0x11D93, "V"),
- (0x11D99, "X"),
- (0x11DA0, "V"),
- (0x11DAA, "X"),
- (0x11DB0, "V"),
- (0x11DDC, "X"),
- (0x11DE0, "V"),
- (0x11DEA, "X"),
- (0x11EE0, "V"),
- (0x11EF9, "X"),
- (0x11F00, "V"),
- (0x11F11, "X"),
- (0x11F12, "V"),
- (0x11F3B, "X"),
- (0x11F3E, "V"),
- (0x11F5B, "X"),
- (0x11FB0, "V"),
- (0x11FB1, "X"),
- (0x11FC0, "V"),
- (0x11FF2, "X"),
- (0x11FFF, "V"),
- (0x1239A, "X"),
- (0x12400, "V"),
- (0x1246F, "X"),
- (0x12470, "V"),
- (0x12475, "X"),
- (0x12480, "V"),
- (0x12544, "X"),
- (0x12F90, "V"),
- (0x12FF3, "X"),
- (0x13000, "V"),
- (0x13430, "X"),
- (0x13440, "V"),
- (0x13456, "X"),
- (0x13460, "V"),
- (0x143FB, "X"),
- (0x14400, "V"),
- (0x14647, "X"),
- (0x16100, "V"),
- (0x1613A, "X"),
- (0x16800, "V"),
- (0x16A39, "X"),
- (0x16A40, "V"),
- (0x16A5F, "X"),
- (0x16A60, "V"),
- (0x16A6A, "X"),
- (0x16A6E, "V"),
- (0x16ABF, "X"),
- (0x16AC0, "V"),
- (0x16ACA, "X"),
- (0x16AD0, "V"),
- (0x16AEE, "X"),
- (0x16AF0, "V"),
- (0x16AF6, "X"),
- (0x16B00, "V"),
- (0x16B46, "X"),
- (0x16B50, "V"),
- (0x16B5A, "X"),
- (0x16B5B, "V"),
- (0x16B62, "X"),
- (0x16B63, "V"),
- (0x16B78, "X"),
- (0x16B7D, "V"),
- (0x16B90, "X"),
- (0x16D40, "V"),
- (0x16D7A, "X"),
- (0x16E40, "M", "𖹠"),
- (0x16E41, "M", "𖹡"),
- (0x16E42, "M", "𖹢"),
- (0x16E43, "M", "𖹣"),
- (0x16E44, "M", "𖹤"),
- (0x16E45, "M", "𖹥"),
- (0x16E46, "M", "𖹦"),
- (0x16E47, "M", "𖹧"),
- (0x16E48, "M", "𖹨"),
- (0x16E49, "M", "𖹩"),
- (0x16E4A, "M", "𖹪"),
- (0x16E4B, "M", "𖹫"),
- (0x16E4C, "M", "𖹬"),
- (0x16E4D, "M", "𖹭"),
- (0x16E4E, "M", "𖹮"),
- (0x16E4F, "M", "𖹯"),
- (0x16E50, "M", "𖹰"),
- (0x16E51, "M", "𖹱"),
- (0x16E52, "M", "𖹲"),
- (0x16E53, "M", "𖹳"),
- (0x16E54, "M", "𖹴"),
- (0x16E55, "M", "𖹵"),
- (0x16E56, "M", "𖹶"),
- (0x16E57, "M", "𖹷"),
- (0x16E58, "M", "𖹸"),
- (0x16E59, "M", "𖹹"),
- (0x16E5A, "M", "𖹺"),
- (0x16E5B, "M", "𖹻"),
- (0x16E5C, "M", "𖹼"),
- (0x16E5D, "M", "𖹽"),
- (0x16E5E, "M", "𖹾"),
- (0x16E5F, "M", "𖹿"),
- (0x16E60, "V"),
- (0x16E9B, "X"),
- (0x16EA0, "M", "𖺻"),
- (0x16EA1, "M", "𖺼"),
- (0x16EA2, "M", "𖺽"),
- (0x16EA3, "M", "𖺾"),
- (0x16EA4, "M", "𖺿"),
- (0x16EA5, "M", "𖻀"),
- (0x16EA6, "M", "𖻁"),
- (0x16EA7, "M", "𖻂"),
- (0x16EA8, "M", "𖻃"),
- (0x16EA9, "M", "𖻄"),
- (0x16EAA, "M", "𖻅"),
- (0x16EAB, "M", "𖻆"),
- (0x16EAC, "M", "𖻇"),
- (0x16EAD, "M", "𖻈"),
- (0x16EAE, "M", "𖻉"),
- (0x16EAF, "M", "𖻊"),
- (0x16EB0, "M", "𖻋"),
- (0x16EB1, "M", "𖻌"),
- (0x16EB2, "M", "𖻍"),
- (0x16EB3, "M", "𖻎"),
- (0x16EB4, "M", "𖻏"),
- (0x16EB5, "M", "𖻐"),
- (0x16EB6, "M", "𖻑"),
- (0x16EB7, "M", "𖻒"),
- (0x16EB8, "M", "𖻓"),
- (0x16EB9, "X"),
- (0x16EBB, "V"),
- (0x16ED4, "X"),
- (0x16F00, "V"),
- (0x16F4B, "X"),
- (0x16F4F, "V"),
- (0x16F88, "X"),
- (0x16F8F, "V"),
- (0x16FA0, "X"),
- (0x16FE0, "V"),
- (0x16FE5, "X"),
- (0x16FF0, "V"),
- (0x16FF7, "X"),
- (0x17000, "V"),
- (0x18CD6, "X"),
- (0x18CFF, "V"),
- (0x18D1F, "X"),
- (0x18D80, "V"),
- (0x18DF3, "X"),
- (0x1AFF0, "V"),
- (0x1AFF4, "X"),
- (0x1AFF5, "V"),
- (0x1AFFC, "X"),
- (0x1AFFD, "V"),
- (0x1AFFF, "X"),
- (0x1B000, "V"),
- (0x1B123, "X"),
- (0x1B132, "V"),
- (0x1B133, "X"),
- (0x1B150, "V"),
- (0x1B153, "X"),
- (0x1B155, "V"),
- (0x1B156, "X"),
- (0x1B164, "V"),
- (0x1B168, "X"),
- (0x1B170, "V"),
- (0x1B2FC, "X"),
- (0x1BC00, "V"),
- (0x1BC6B, "X"),
- (0x1BC70, "V"),
- (0x1BC7D, "X"),
- (0x1BC80, "V"),
- (0x1BC89, "X"),
- (0x1BC90, "V"),
- (0x1BC9A, "X"),
- (0x1BC9C, "V"),
- (0x1BCA0, "I"),
- (0x1BCA4, "X"),
- (0x1CC00, "V"),
- (0x1CCD6, "M", "a"),
- (0x1CCD7, "M", "b"),
- (0x1CCD8, "M", "c"),
- (0x1CCD9, "M", "d"),
- (0x1CCDA, "M", "e"),
- (0x1CCDB, "M", "f"),
- (0x1CCDC, "M", "g"),
- (0x1CCDD, "M", "h"),
- (0x1CCDE, "M", "i"),
- (0x1CCDF, "M", "j"),
- (0x1CCE0, "M", "k"),
- (0x1CCE1, "M", "l"),
- (0x1CCE2, "M", "m"),
- (0x1CCE3, "M", "n"),
- (0x1CCE4, "M", "o"),
- (0x1CCE5, "M", "p"),
- (0x1CCE6, "M", "q"),
- (0x1CCE7, "M", "r"),
- (0x1CCE8, "M", "s"),
- (0x1CCE9, "M", "t"),
- (0x1CCEA, "M", "u"),
- (0x1CCEB, "M", "v"),
- (0x1CCEC, "M", "w"),
- (0x1CCED, "M", "x"),
- (0x1CCEE, "M", "y"),
- (0x1CCEF, "M", "z"),
- (0x1CCF0, "M", "0"),
- (0x1CCF1, "M", "1"),
- (0x1CCF2, "M", "2"),
- (0x1CCF3, "M", "3"),
- (0x1CCF4, "M", "4"),
- (0x1CCF5, "M", "5"),
- (0x1CCF6, "M", "6"),
- (0x1CCF7, "M", "7"),
- (0x1CCF8, "M", "8"),
- (0x1CCF9, "M", "9"),
- (0x1CCFA, "V"),
- (0x1CCFD, "X"),
- (0x1CD00, "V"),
- (0x1CEB4, "X"),
- (0x1CEBA, "V"),
- (0x1CED1, "X"),
- (0x1CEE0, "V"),
- (0x1CEF1, "X"),
- (0x1CF00, "V"),
- (0x1CF2E, "X"),
- (0x1CF30, "V"),
- (0x1CF47, "X"),
- (0x1CF50, "V"),
- (0x1CFC4, "X"),
- (0x1D000, "V"),
- (0x1D0F6, "X"),
- (0x1D100, "V"),
- (0x1D127, "X"),
- (0x1D129, "V"),
- (0x1D15E, "M", "𝅗𝅥"),
- (0x1D15F, "M", "𝅘𝅥"),
- (0x1D160, "M", "𝅘𝅥𝅮"),
- (0x1D161, "M", "𝅘𝅥𝅯"),
- (0x1D162, "M", "𝅘𝅥𝅰"),
- (0x1D163, "M", "𝅘𝅥𝅱"),
- (0x1D164, "M", "𝅘𝅥𝅲"),
- (0x1D165, "V"),
- (0x1D173, "I"),
- (0x1D17B, "V"),
- (0x1D1BB, "M", "𝆹𝅥"),
- (0x1D1BC, "M", "𝆺𝅥"),
- (0x1D1BD, "M", "𝆹𝅥𝅮"),
- (0x1D1BE, "M", "𝆺𝅥𝅮"),
- (0x1D1BF, "M", "𝆹𝅥𝅯"),
- (0x1D1C0, "M", "𝆺𝅥𝅯"),
- (0x1D1C1, "V"),
- (0x1D1EB, "X"),
- (0x1D200, "V"),
- (0x1D246, "X"),
- (0x1D2C0, "V"),
- (0x1D2D4, "X"),
- (0x1D2E0, "V"),
- (0x1D2F4, "X"),
- (0x1D300, "V"),
- (0x1D357, "X"),
- (0x1D360, "V"),
- (0x1D379, "X"),
- (0x1D400, "M", "a"),
- (0x1D401, "M", "b"),
- (0x1D402, "M", "c"),
- (0x1D403, "M", "d"),
- (0x1D404, "M", "e"),
- (0x1D405, "M", "f"),
- (0x1D406, "M", "g"),
- (0x1D407, "M", "h"),
- (0x1D408, "M", "i"),
- (0x1D409, "M", "j"),
- (0x1D40A, "M", "k"),
- (0x1D40B, "M", "l"),
- (0x1D40C, "M", "m"),
- (0x1D40D, "M", "n"),
- (0x1D40E, "M", "o"),
- (0x1D40F, "M", "p"),
- (0x1D410, "M", "q"),
- (0x1D411, "M", "r"),
- (0x1D412, "M", "s"),
- (0x1D413, "M", "t"),
- (0x1D414, "M", "u"),
- (0x1D415, "M", "v"),
- (0x1D416, "M", "w"),
- (0x1D417, "M", "x"),
- (0x1D418, "M", "y"),
- (0x1D419, "M", "z"),
- (0x1D41A, "M", "a"),
- (0x1D41B, "M", "b"),
- (0x1D41C, "M", "c"),
- (0x1D41D, "M", "d"),
- (0x1D41E, "M", "e"),
- (0x1D41F, "M", "f"),
- (0x1D420, "M", "g"),
- (0x1D421, "M", "h"),
- (0x1D422, "M", "i"),
- (0x1D423, "M", "j"),
- (0x1D424, "M", "k"),
- (0x1D425, "M", "l"),
- (0x1D426, "M", "m"),
- (0x1D427, "M", "n"),
- (0x1D428, "M", "o"),
- (0x1D429, "M", "p"),
- (0x1D42A, "M", "q"),
- (0x1D42B, "M", "r"),
- (0x1D42C, "M", "s"),
- (0x1D42D, "M", "t"),
- (0x1D42E, "M", "u"),
- (0x1D42F, "M", "v"),
- (0x1D430, "M", "w"),
- (0x1D431, "M", "x"),
- (0x1D432, "M", "y"),
- (0x1D433, "M", "z"),
- (0x1D434, "M", "a"),
- (0x1D435, "M", "b"),
- (0x1D436, "M", "c"),
- (0x1D437, "M", "d"),
- (0x1D438, "M", "e"),
- (0x1D439, "M", "f"),
- (0x1D43A, "M", "g"),
- (0x1D43B, "M", "h"),
- (0x1D43C, "M", "i"),
- (0x1D43D, "M", "j"),
- (0x1D43E, "M", "k"),
- (0x1D43F, "M", "l"),
- (0x1D440, "M", "m"),
- (0x1D441, "M", "n"),
- (0x1D442, "M", "o"),
- (0x1D443, "M", "p"),
- (0x1D444, "M", "q"),
- (0x1D445, "M", "r"),
- (0x1D446, "M", "s"),
- (0x1D447, "M", "t"),
- (0x1D448, "M", "u"),
- (0x1D449, "M", "v"),
- (0x1D44A, "M", "w"),
- (0x1D44B, "M", "x"),
- (0x1D44C, "M", "y"),
- (0x1D44D, "M", "z"),
- (0x1D44E, "M", "a"),
- (0x1D44F, "M", "b"),
- (0x1D450, "M", "c"),
- (0x1D451, "M", "d"),
- (0x1D452, "M", "e"),
- (0x1D453, "M", "f"),
- (0x1D454, "M", "g"),
- (0x1D455, "X"),
- (0x1D456, "M", "i"),
- (0x1D457, "M", "j"),
- (0x1D458, "M", "k"),
- (0x1D459, "M", "l"),
- (0x1D45A, "M", "m"),
- (0x1D45B, "M", "n"),
- (0x1D45C, "M", "o"),
- (0x1D45D, "M", "p"),
- (0x1D45E, "M", "q"),
- (0x1D45F, "M", "r"),
- (0x1D460, "M", "s"),
- (0x1D461, "M", "t"),
- (0x1D462, "M", "u"),
- (0x1D463, "M", "v"),
- (0x1D464, "M", "w"),
- (0x1D465, "M", "x"),
- (0x1D466, "M", "y"),
- (0x1D467, "M", "z"),
- (0x1D468, "M", "a"),
- (0x1D469, "M", "b"),
- (0x1D46A, "M", "c"),
- (0x1D46B, "M", "d"),
- (0x1D46C, "M", "e"),
- (0x1D46D, "M", "f"),
- (0x1D46E, "M", "g"),
- (0x1D46F, "M", "h"),
- (0x1D470, "M", "i"),
- (0x1D471, "M", "j"),
- (0x1D472, "M", "k"),
- (0x1D473, "M", "l"),
- (0x1D474, "M", "m"),
- (0x1D475, "M", "n"),
- (0x1D476, "M", "o"),
- (0x1D477, "M", "p"),
- (0x1D478, "M", "q"),
- (0x1D479, "M", "r"),
- (0x1D47A, "M", "s"),
- (0x1D47B, "M", "t"),
- (0x1D47C, "M", "u"),
- (0x1D47D, "M", "v"),
- (0x1D47E, "M", "w"),
- (0x1D47F, "M", "x"),
- (0x1D480, "M", "y"),
- (0x1D481, "M", "z"),
- (0x1D482, "M", "a"),
- (0x1D483, "M", "b"),
- (0x1D484, "M", "c"),
- (0x1D485, "M", "d"),
- (0x1D486, "M", "e"),
- (0x1D487, "M", "f"),
- (0x1D488, "M", "g"),
- (0x1D489, "M", "h"),
- (0x1D48A, "M", "i"),
- (0x1D48B, "M", "j"),
- (0x1D48C, "M", "k"),
- (0x1D48D, "M", "l"),
- (0x1D48E, "M", "m"),
- (0x1D48F, "M", "n"),
- (0x1D490, "M", "o"),
- (0x1D491, "M", "p"),
- (0x1D492, "M", "q"),
- (0x1D493, "M", "r"),
- (0x1D494, "M", "s"),
- (0x1D495, "M", "t"),
- (0x1D496, "M", "u"),
- (0x1D497, "M", "v"),
- (0x1D498, "M", "w"),
- (0x1D499, "M", "x"),
- (0x1D49A, "M", "y"),
- (0x1D49B, "M", "z"),
- (0x1D49C, "M", "a"),
- (0x1D49D, "X"),
- (0x1D49E, "M", "c"),
- (0x1D49F, "M", "d"),
- (0x1D4A0, "X"),
- (0x1D4A2, "M", "g"),
- (0x1D4A3, "X"),
- (0x1D4A5, "M", "j"),
- (0x1D4A6, "M", "k"),
- (0x1D4A7, "X"),
- (0x1D4A9, "M", "n"),
- (0x1D4AA, "M", "o"),
- (0x1D4AB, "M", "p"),
- (0x1D4AC, "M", "q"),
- (0x1D4AD, "X"),
- (0x1D4AE, "M", "s"),
- (0x1D4AF, "M", "t"),
- (0x1D4B0, "M", "u"),
- (0x1D4B1, "M", "v"),
- (0x1D4B2, "M", "w"),
- (0x1D4B3, "M", "x"),
- (0x1D4B4, "M", "y"),
- (0x1D4B5, "M", "z"),
- (0x1D4B6, "M", "a"),
- (0x1D4B7, "M", "b"),
- (0x1D4B8, "M", "c"),
- (0x1D4B9, "M", "d"),
- (0x1D4BA, "X"),
- (0x1D4BB, "M", "f"),
- (0x1D4BC, "X"),
- (0x1D4BD, "M", "h"),
- (0x1D4BE, "M", "i"),
- (0x1D4BF, "M", "j"),
- (0x1D4C0, "M", "k"),
- (0x1D4C1, "M", "l"),
- (0x1D4C2, "M", "m"),
- (0x1D4C3, "M", "n"),
- (0x1D4C4, "X"),
- (0x1D4C5, "M", "p"),
- (0x1D4C6, "M", "q"),
- (0x1D4C7, "M", "r"),
- (0x1D4C8, "M", "s"),
- (0x1D4C9, "M", "t"),
- (0x1D4CA, "M", "u"),
- (0x1D4CB, "M", "v"),
- (0x1D4CC, "M", "w"),
- (0x1D4CD, "M", "x"),
- (0x1D4CE, "M", "y"),
- (0x1D4CF, "M", "z"),
- (0x1D4D0, "M", "a"),
- (0x1D4D1, "M", "b"),
- (0x1D4D2, "M", "c"),
- (0x1D4D3, "M", "d"),
- (0x1D4D4, "M", "e"),
- (0x1D4D5, "M", "f"),
- (0x1D4D6, "M", "g"),
- (0x1D4D7, "M", "h"),
- (0x1D4D8, "M", "i"),
- (0x1D4D9, "M", "j"),
- (0x1D4DA, "M", "k"),
- (0x1D4DB, "M", "l"),
- (0x1D4DC, "M", "m"),
- (0x1D4DD, "M", "n"),
- (0x1D4DE, "M", "o"),
- (0x1D4DF, "M", "p"),
- (0x1D4E0, "M", "q"),
- (0x1D4E1, "M", "r"),
- (0x1D4E2, "M", "s"),
- (0x1D4E3, "M", "t"),
- (0x1D4E4, "M", "u"),
- (0x1D4E5, "M", "v"),
- (0x1D4E6, "M", "w"),
- (0x1D4E7, "M", "x"),
- (0x1D4E8, "M", "y"),
- (0x1D4E9, "M", "z"),
- (0x1D4EA, "M", "a"),
- (0x1D4EB, "M", "b"),
- (0x1D4EC, "M", "c"),
- (0x1D4ED, "M", "d"),
- (0x1D4EE, "M", "e"),
- (0x1D4EF, "M", "f"),
- (0x1D4F0, "M", "g"),
- (0x1D4F1, "M", "h"),
- (0x1D4F2, "M", "i"),
- (0x1D4F3, "M", "j"),
- (0x1D4F4, "M", "k"),
- (0x1D4F5, "M", "l"),
- (0x1D4F6, "M", "m"),
- (0x1D4F7, "M", "n"),
- (0x1D4F8, "M", "o"),
- (0x1D4F9, "M", "p"),
- (0x1D4FA, "M", "q"),
- (0x1D4FB, "M", "r"),
- (0x1D4FC, "M", "s"),
- (0x1D4FD, "M", "t"),
- (0x1D4FE, "M", "u"),
- (0x1D4FF, "M", "v"),
- (0x1D500, "M", "w"),
- (0x1D501, "M", "x"),
- (0x1D502, "M", "y"),
- (0x1D503, "M", "z"),
- (0x1D504, "M", "a"),
- (0x1D505, "M", "b"),
- (0x1D506, "X"),
- (0x1D507, "M", "d"),
- (0x1D508, "M", "e"),
- (0x1D509, "M", "f"),
- (0x1D50A, "M", "g"),
- (0x1D50B, "X"),
- (0x1D50D, "M", "j"),
- (0x1D50E, "M", "k"),
- (0x1D50F, "M", "l"),
- (0x1D510, "M", "m"),
- (0x1D511, "M", "n"),
- (0x1D512, "M", "o"),
- (0x1D513, "M", "p"),
- (0x1D514, "M", "q"),
- (0x1D515, "X"),
- (0x1D516, "M", "s"),
- (0x1D517, "M", "t"),
- (0x1D518, "M", "u"),
- (0x1D519, "M", "v"),
- (0x1D51A, "M", "w"),
- (0x1D51B, "M", "x"),
- (0x1D51C, "M", "y"),
- (0x1D51D, "X"),
- (0x1D51E, "M", "a"),
- (0x1D51F, "M", "b"),
- (0x1D520, "M", "c"),
- (0x1D521, "M", "d"),
- (0x1D522, "M", "e"),
- (0x1D523, "M", "f"),
- (0x1D524, "M", "g"),
- (0x1D525, "M", "h"),
- (0x1D526, "M", "i"),
- (0x1D527, "M", "j"),
- (0x1D528, "M", "k"),
- (0x1D529, "M", "l"),
- (0x1D52A, "M", "m"),
- (0x1D52B, "M", "n"),
- (0x1D52C, "M", "o"),
- (0x1D52D, "M", "p"),
- (0x1D52E, "M", "q"),
- (0x1D52F, "M", "r"),
- (0x1D530, "M", "s"),
- (0x1D531, "M", "t"),
- (0x1D532, "M", "u"),
- (0x1D533, "M", "v"),
- (0x1D534, "M", "w"),
- (0x1D535, "M", "x"),
- (0x1D536, "M", "y"),
- (0x1D537, "M", "z"),
- (0x1D538, "M", "a"),
- (0x1D539, "M", "b"),
- (0x1D53A, "X"),
- (0x1D53B, "M", "d"),
- (0x1D53C, "M", "e"),
- (0x1D53D, "M", "f"),
- (0x1D53E, "M", "g"),
- (0x1D53F, "X"),
- (0x1D540, "M", "i"),
- (0x1D541, "M", "j"),
- (0x1D542, "M", "k"),
- (0x1D543, "M", "l"),
- (0x1D544, "M", "m"),
- (0x1D545, "X"),
- (0x1D546, "M", "o"),
- (0x1D547, "X"),
- (0x1D54A, "M", "s"),
- (0x1D54B, "M", "t"),
- (0x1D54C, "M", "u"),
- (0x1D54D, "M", "v"),
- (0x1D54E, "M", "w"),
- (0x1D54F, "M", "x"),
- (0x1D550, "M", "y"),
- (0x1D551, "X"),
- (0x1D552, "M", "a"),
- (0x1D553, "M", "b"),
- (0x1D554, "M", "c"),
- (0x1D555, "M", "d"),
- (0x1D556, "M", "e"),
- (0x1D557, "M", "f"),
- (0x1D558, "M", "g"),
- (0x1D559, "M", "h"),
- (0x1D55A, "M", "i"),
- (0x1D55B, "M", "j"),
- (0x1D55C, "M", "k"),
- (0x1D55D, "M", "l"),
- (0x1D55E, "M", "m"),
- (0x1D55F, "M", "n"),
- (0x1D560, "M", "o"),
- (0x1D561, "M", "p"),
- (0x1D562, "M", "q"),
- (0x1D563, "M", "r"),
- (0x1D564, "M", "s"),
- (0x1D565, "M", "t"),
- (0x1D566, "M", "u"),
- (0x1D567, "M", "v"),
- (0x1D568, "M", "w"),
- (0x1D569, "M", "x"),
- (0x1D56A, "M", "y"),
- (0x1D56B, "M", "z"),
- (0x1D56C, "M", "a"),
- (0x1D56D, "M", "b"),
- (0x1D56E, "M", "c"),
- (0x1D56F, "M", "d"),
- (0x1D570, "M", "e"),
- (0x1D571, "M", "f"),
- (0x1D572, "M", "g"),
- (0x1D573, "M", "h"),
- (0x1D574, "M", "i"),
- (0x1D575, "M", "j"),
- (0x1D576, "M", "k"),
- (0x1D577, "M", "l"),
- (0x1D578, "M", "m"),
- (0x1D579, "M", "n"),
- (0x1D57A, "M", "o"),
- (0x1D57B, "M", "p"),
- (0x1D57C, "M", "q"),
- (0x1D57D, "M", "r"),
- (0x1D57E, "M", "s"),
- (0x1D57F, "M", "t"),
- (0x1D580, "M", "u"),
- (0x1D581, "M", "v"),
- (0x1D582, "M", "w"),
- (0x1D583, "M", "x"),
- (0x1D584, "M", "y"),
- (0x1D585, "M", "z"),
- (0x1D586, "M", "a"),
- (0x1D587, "M", "b"),
- (0x1D588, "M", "c"),
- (0x1D589, "M", "d"),
- (0x1D58A, "M", "e"),
- (0x1D58B, "M", "f"),
- (0x1D58C, "M", "g"),
- (0x1D58D, "M", "h"),
- (0x1D58E, "M", "i"),
- (0x1D58F, "M", "j"),
- (0x1D590, "M", "k"),
- (0x1D591, "M", "l"),
- (0x1D592, "M", "m"),
- (0x1D593, "M", "n"),
- (0x1D594, "M", "o"),
- (0x1D595, "M", "p"),
- (0x1D596, "M", "q"),
- (0x1D597, "M", "r"),
- (0x1D598, "M", "s"),
- (0x1D599, "M", "t"),
- (0x1D59A, "M", "u"),
- (0x1D59B, "M", "v"),
- (0x1D59C, "M", "w"),
- (0x1D59D, "M", "x"),
- (0x1D59E, "M", "y"),
- (0x1D59F, "M", "z"),
- (0x1D5A0, "M", "a"),
- (0x1D5A1, "M", "b"),
- (0x1D5A2, "M", "c"),
- (0x1D5A3, "M", "d"),
- (0x1D5A4, "M", "e"),
- (0x1D5A5, "M", "f"),
- (0x1D5A6, "M", "g"),
- (0x1D5A7, "M", "h"),
- (0x1D5A8, "M", "i"),
- (0x1D5A9, "M", "j"),
- (0x1D5AA, "M", "k"),
- (0x1D5AB, "M", "l"),
- (0x1D5AC, "M", "m"),
- (0x1D5AD, "M", "n"),
- (0x1D5AE, "M", "o"),
- (0x1D5AF, "M", "p"),
- (0x1D5B0, "M", "q"),
- (0x1D5B1, "M", "r"),
- (0x1D5B2, "M", "s"),
- (0x1D5B3, "M", "t"),
- (0x1D5B4, "M", "u"),
- (0x1D5B5, "M", "v"),
- (0x1D5B6, "M", "w"),
- (0x1D5B7, "M", "x"),
- (0x1D5B8, "M", "y"),
- (0x1D5B9, "M", "z"),
- (0x1D5BA, "M", "a"),
- (0x1D5BB, "M", "b"),
- (0x1D5BC, "M", "c"),
- (0x1D5BD, "M", "d"),
- (0x1D5BE, "M", "e"),
- (0x1D5BF, "M", "f"),
- (0x1D5C0, "M", "g"),
- (0x1D5C1, "M", "h"),
- (0x1D5C2, "M", "i"),
- (0x1D5C3, "M", "j"),
- (0x1D5C4, "M", "k"),
- (0x1D5C5, "M", "l"),
- (0x1D5C6, "M", "m"),
- (0x1D5C7, "M", "n"),
- (0x1D5C8, "M", "o"),
- (0x1D5C9, "M", "p"),
- (0x1D5CA, "M", "q"),
- (0x1D5CB, "M", "r"),
- (0x1D5CC, "M", "s"),
- (0x1D5CD, "M", "t"),
- (0x1D5CE, "M", "u"),
- (0x1D5CF, "M", "v"),
- (0x1D5D0, "M", "w"),
- (0x1D5D1, "M", "x"),
- (0x1D5D2, "M", "y"),
- (0x1D5D3, "M", "z"),
- (0x1D5D4, "M", "a"),
- (0x1D5D5, "M", "b"),
- (0x1D5D6, "M", "c"),
- (0x1D5D7, "M", "d"),
- (0x1D5D8, "M", "e"),
- (0x1D5D9, "M", "f"),
- (0x1D5DA, "M", "g"),
- (0x1D5DB, "M", "h"),
- (0x1D5DC, "M", "i"),
- (0x1D5DD, "M", "j"),
- (0x1D5DE, "M", "k"),
- (0x1D5DF, "M", "l"),
- (0x1D5E0, "M", "m"),
- (0x1D5E1, "M", "n"),
- (0x1D5E2, "M", "o"),
- (0x1D5E3, "M", "p"),
- (0x1D5E4, "M", "q"),
- (0x1D5E5, "M", "r"),
- (0x1D5E6, "M", "s"),
- (0x1D5E7, "M", "t"),
- (0x1D5E8, "M", "u"),
- (0x1D5E9, "M", "v"),
- (0x1D5EA, "M", "w"),
- (0x1D5EB, "M", "x"),
- (0x1D5EC, "M", "y"),
- (0x1D5ED, "M", "z"),
- (0x1D5EE, "M", "a"),
- (0x1D5EF, "M", "b"),
- (0x1D5F0, "M", "c"),
- (0x1D5F1, "M", "d"),
- (0x1D5F2, "M", "e"),
- (0x1D5F3, "M", "f"),
- (0x1D5F4, "M", "g"),
- (0x1D5F5, "M", "h"),
- (0x1D5F6, "M", "i"),
- (0x1D5F7, "M", "j"),
- (0x1D5F8, "M", "k"),
- (0x1D5F9, "M", "l"),
- (0x1D5FA, "M", "m"),
- (0x1D5FB, "M", "n"),
- (0x1D5FC, "M", "o"),
- (0x1D5FD, "M", "p"),
- (0x1D5FE, "M", "q"),
- (0x1D5FF, "M", "r"),
- (0x1D600, "M", "s"),
- (0x1D601, "M", "t"),
- (0x1D602, "M", "u"),
- (0x1D603, "M", "v"),
- (0x1D604, "M", "w"),
- (0x1D605, "M", "x"),
- (0x1D606, "M", "y"),
- (0x1D607, "M", "z"),
- (0x1D608, "M", "a"),
- (0x1D609, "M", "b"),
- (0x1D60A, "M", "c"),
- (0x1D60B, "M", "d"),
- (0x1D60C, "M", "e"),
- (0x1D60D, "M", "f"),
- (0x1D60E, "M", "g"),
- (0x1D60F, "M", "h"),
- (0x1D610, "M", "i"),
- (0x1D611, "M", "j"),
- (0x1D612, "M", "k"),
- (0x1D613, "M", "l"),
- (0x1D614, "M", "m"),
- (0x1D615, "M", "n"),
- (0x1D616, "M", "o"),
- (0x1D617, "M", "p"),
- (0x1D618, "M", "q"),
- (0x1D619, "M", "r"),
- (0x1D61A, "M", "s"),
- (0x1D61B, "M", "t"),
- (0x1D61C, "M", "u"),
- (0x1D61D, "M", "v"),
- (0x1D61E, "M", "w"),
- (0x1D61F, "M", "x"),
- (0x1D620, "M", "y"),
- (0x1D621, "M", "z"),
- (0x1D622, "M", "a"),
- (0x1D623, "M", "b"),
- (0x1D624, "M", "c"),
- (0x1D625, "M", "d"),
- (0x1D626, "M", "e"),
- (0x1D627, "M", "f"),
- (0x1D628, "M", "g"),
- (0x1D629, "M", "h"),
- (0x1D62A, "M", "i"),
- (0x1D62B, "M", "j"),
- (0x1D62C, "M", "k"),
- (0x1D62D, "M", "l"),
- (0x1D62E, "M", "m"),
- (0x1D62F, "M", "n"),
- (0x1D630, "M", "o"),
- (0x1D631, "M", "p"),
- (0x1D632, "M", "q"),
- (0x1D633, "M", "r"),
- (0x1D634, "M", "s"),
- (0x1D635, "M", "t"),
- (0x1D636, "M", "u"),
- (0x1D637, "M", "v"),
- (0x1D638, "M", "w"),
- (0x1D639, "M", "x"),
- (0x1D63A, "M", "y"),
- (0x1D63B, "M", "z"),
- (0x1D63C, "M", "a"),
- (0x1D63D, "M", "b"),
- (0x1D63E, "M", "c"),
- (0x1D63F, "M", "d"),
- (0x1D640, "M", "e"),
- (0x1D641, "M", "f"),
- (0x1D642, "M", "g"),
- (0x1D643, "M", "h"),
- (0x1D644, "M", "i"),
- (0x1D645, "M", "j"),
- (0x1D646, "M", "k"),
- (0x1D647, "M", "l"),
- (0x1D648, "M", "m"),
- (0x1D649, "M", "n"),
- (0x1D64A, "M", "o"),
- (0x1D64B, "M", "p"),
- (0x1D64C, "M", "q"),
- (0x1D64D, "M", "r"),
- (0x1D64E, "M", "s"),
- (0x1D64F, "M", "t"),
- (0x1D650, "M", "u"),
- (0x1D651, "M", "v"),
- (0x1D652, "M", "w"),
- (0x1D653, "M", "x"),
- (0x1D654, "M", "y"),
- (0x1D655, "M", "z"),
- (0x1D656, "M", "a"),
- (0x1D657, "M", "b"),
- (0x1D658, "M", "c"),
- (0x1D659, "M", "d"),
- (0x1D65A, "M", "e"),
- (0x1D65B, "M", "f"),
- (0x1D65C, "M", "g"),
- (0x1D65D, "M", "h"),
- (0x1D65E, "M", "i"),
- (0x1D65F, "M", "j"),
- (0x1D660, "M", "k"),
- (0x1D661, "M", "l"),
- (0x1D662, "M", "m"),
- (0x1D663, "M", "n"),
- (0x1D664, "M", "o"),
- (0x1D665, "M", "p"),
- (0x1D666, "M", "q"),
- (0x1D667, "M", "r"),
- (0x1D668, "M", "s"),
- (0x1D669, "M", "t"),
- (0x1D66A, "M", "u"),
- (0x1D66B, "M", "v"),
- (0x1D66C, "M", "w"),
- (0x1D66D, "M", "x"),
- (0x1D66E, "M", "y"),
- (0x1D66F, "M", "z"),
- (0x1D670, "M", "a"),
- (0x1D671, "M", "b"),
- (0x1D672, "M", "c"),
- (0x1D673, "M", "d"),
- (0x1D674, "M", "e"),
- (0x1D675, "M", "f"),
- (0x1D676, "M", "g"),
- (0x1D677, "M", "h"),
- (0x1D678, "M", "i"),
- (0x1D679, "M", "j"),
- (0x1D67A, "M", "k"),
- (0x1D67B, "M", "l"),
- (0x1D67C, "M", "m"),
- (0x1D67D, "M", "n"),
- (0x1D67E, "M", "o"),
- (0x1D67F, "M", "p"),
- (0x1D680, "M", "q"),
- (0x1D681, "M", "r"),
- (0x1D682, "M", "s"),
- (0x1D683, "M", "t"),
- (0x1D684, "M", "u"),
- (0x1D685, "M", "v"),
- (0x1D686, "M", "w"),
- (0x1D687, "M", "x"),
- (0x1D688, "M", "y"),
- (0x1D689, "M", "z"),
- (0x1D68A, "M", "a"),
- (0x1D68B, "M", "b"),
- (0x1D68C, "M", "c"),
- (0x1D68D, "M", "d"),
- (0x1D68E, "M", "e"),
- (0x1D68F, "M", "f"),
- (0x1D690, "M", "g"),
- (0x1D691, "M", "h"),
- (0x1D692, "M", "i"),
- (0x1D693, "M", "j"),
- (0x1D694, "M", "k"),
- (0x1D695, "M", "l"),
- (0x1D696, "M", "m"),
- (0x1D697, "M", "n"),
- (0x1D698, "M", "o"),
- (0x1D699, "M", "p"),
- (0x1D69A, "M", "q"),
- (0x1D69B, "M", "r"),
- (0x1D69C, "M", "s"),
- (0x1D69D, "M", "t"),
- (0x1D69E, "M", "u"),
- (0x1D69F, "M", "v"),
- (0x1D6A0, "M", "w"),
- (0x1D6A1, "M", "x"),
- (0x1D6A2, "M", "y"),
- (0x1D6A3, "M", "z"),
- (0x1D6A4, "M", "ı"),
- (0x1D6A5, "M", "ȷ"),
- (0x1D6A6, "X"),
- (0x1D6A8, "M", "α"),
- (0x1D6A9, "M", "β"),
- (0x1D6AA, "M", "γ"),
- (0x1D6AB, "M", "δ"),
- (0x1D6AC, "M", "ε"),
- (0x1D6AD, "M", "ζ"),
- (0x1D6AE, "M", "η"),
- (0x1D6AF, "M", "θ"),
- (0x1D6B0, "M", "ι"),
- (0x1D6B1, "M", "κ"),
- (0x1D6B2, "M", "λ"),
- (0x1D6B3, "M", "μ"),
- (0x1D6B4, "M", "ν"),
- (0x1D6B5, "M", "ξ"),
- (0x1D6B6, "M", "ο"),
- (0x1D6B7, "M", "π"),
- (0x1D6B8, "M", "ρ"),
- (0x1D6B9, "M", "θ"),
- (0x1D6BA, "M", "σ"),
- (0x1D6BB, "M", "τ"),
- (0x1D6BC, "M", "υ"),
- (0x1D6BD, "M", "φ"),
- (0x1D6BE, "M", "χ"),
- (0x1D6BF, "M", "ψ"),
- (0x1D6C0, "M", "ω"),
- (0x1D6C1, "M", "∇"),
- (0x1D6C2, "M", "α"),
- (0x1D6C3, "M", "β"),
- (0x1D6C4, "M", "γ"),
- (0x1D6C5, "M", "δ"),
- (0x1D6C6, "M", "ε"),
- (0x1D6C7, "M", "ζ"),
- (0x1D6C8, "M", "η"),
- (0x1D6C9, "M", "θ"),
- (0x1D6CA, "M", "ι"),
- (0x1D6CB, "M", "κ"),
- (0x1D6CC, "M", "λ"),
- (0x1D6CD, "M", "μ"),
- (0x1D6CE, "M", "ν"),
- (0x1D6CF, "M", "ξ"),
- (0x1D6D0, "M", "ο"),
- (0x1D6D1, "M", "π"),
- (0x1D6D2, "M", "ρ"),
- (0x1D6D3, "M", "σ"),
- (0x1D6D5, "M", "τ"),
- (0x1D6D6, "M", "υ"),
- (0x1D6D7, "M", "φ"),
- (0x1D6D8, "M", "χ"),
- (0x1D6D9, "M", "ψ"),
- (0x1D6DA, "M", "ω"),
- (0x1D6DB, "M", "∂"),
- (0x1D6DC, "M", "ε"),
- (0x1D6DD, "M", "θ"),
- (0x1D6DE, "M", "κ"),
- (0x1D6DF, "M", "φ"),
- (0x1D6E0, "M", "ρ"),
- (0x1D6E1, "M", "π"),
- (0x1D6E2, "M", "α"),
- (0x1D6E3, "M", "β"),
- (0x1D6E4, "M", "γ"),
- (0x1D6E5, "M", "δ"),
- (0x1D6E6, "M", "ε"),
- (0x1D6E7, "M", "ζ"),
- (0x1D6E8, "M", "η"),
- (0x1D6E9, "M", "θ"),
- (0x1D6EA, "M", "ι"),
- (0x1D6EB, "M", "κ"),
- (0x1D6EC, "M", "λ"),
- (0x1D6ED, "M", "μ"),
- (0x1D6EE, "M", "ν"),
- (0x1D6EF, "M", "ξ"),
- (0x1D6F0, "M", "ο"),
- (0x1D6F1, "M", "π"),
- (0x1D6F2, "M", "ρ"),
- (0x1D6F3, "M", "θ"),
- (0x1D6F4, "M", "σ"),
- (0x1D6F5, "M", "τ"),
- (0x1D6F6, "M", "υ"),
- (0x1D6F7, "M", "φ"),
- (0x1D6F8, "M", "χ"),
- (0x1D6F9, "M", "ψ"),
- (0x1D6FA, "M", "ω"),
- (0x1D6FB, "M", "∇"),
- (0x1D6FC, "M", "α"),
- (0x1D6FD, "M", "β"),
- (0x1D6FE, "M", "γ"),
- (0x1D6FF, "M", "δ"),
- (0x1D700, "M", "ε"),
- (0x1D701, "M", "ζ"),
- (0x1D702, "M", "η"),
- (0x1D703, "M", "θ"),
- (0x1D704, "M", "ι"),
- (0x1D705, "M", "κ"),
- (0x1D706, "M", "λ"),
- (0x1D707, "M", "μ"),
- (0x1D708, "M", "ν"),
- (0x1D709, "M", "ξ"),
- (0x1D70A, "M", "ο"),
- (0x1D70B, "M", "π"),
- (0x1D70C, "M", "ρ"),
- (0x1D70D, "M", "σ"),
- (0x1D70F, "M", "τ"),
- (0x1D710, "M", "υ"),
- (0x1D711, "M", "φ"),
- (0x1D712, "M", "χ"),
- (0x1D713, "M", "ψ"),
- (0x1D714, "M", "ω"),
- (0x1D715, "M", "∂"),
- (0x1D716, "M", "ε"),
- (0x1D717, "M", "θ"),
- (0x1D718, "M", "κ"),
- (0x1D719, "M", "φ"),
- (0x1D71A, "M", "ρ"),
- (0x1D71B, "M", "π"),
- (0x1D71C, "M", "α"),
- (0x1D71D, "M", "β"),
- (0x1D71E, "M", "γ"),
- (0x1D71F, "M", "δ"),
- (0x1D720, "M", "ε"),
- (0x1D721, "M", "ζ"),
- (0x1D722, "M", "η"),
- (0x1D723, "M", "θ"),
- (0x1D724, "M", "ι"),
- (0x1D725, "M", "κ"),
- (0x1D726, "M", "λ"),
- (0x1D727, "M", "μ"),
- (0x1D728, "M", "ν"),
- (0x1D729, "M", "ξ"),
- (0x1D72A, "M", "ο"),
- (0x1D72B, "M", "π"),
- (0x1D72C, "M", "ρ"),
- (0x1D72D, "M", "θ"),
- (0x1D72E, "M", "σ"),
- (0x1D72F, "M", "τ"),
- (0x1D730, "M", "υ"),
- (0x1D731, "M", "φ"),
- (0x1D732, "M", "χ"),
- (0x1D733, "M", "ψ"),
- (0x1D734, "M", "ω"),
- (0x1D735, "M", "∇"),
- (0x1D736, "M", "α"),
- (0x1D737, "M", "β"),
- (0x1D738, "M", "γ"),
- (0x1D739, "M", "δ"),
- (0x1D73A, "M", "ε"),
- (0x1D73B, "M", "ζ"),
- (0x1D73C, "M", "η"),
- (0x1D73D, "M", "θ"),
- (0x1D73E, "M", "ι"),
- (0x1D73F, "M", "κ"),
- (0x1D740, "M", "λ"),
- (0x1D741, "M", "μ"),
- (0x1D742, "M", "ν"),
- (0x1D743, "M", "ξ"),
- (0x1D744, "M", "ο"),
- (0x1D745, "M", "π"),
- (0x1D746, "M", "ρ"),
- (0x1D747, "M", "σ"),
- (0x1D749, "M", "τ"),
- (0x1D74A, "M", "υ"),
- (0x1D74B, "M", "φ"),
- (0x1D74C, "M", "χ"),
- (0x1D74D, "M", "ψ"),
- (0x1D74E, "M", "ω"),
- (0x1D74F, "M", "∂"),
- (0x1D750, "M", "ε"),
- (0x1D751, "M", "θ"),
- (0x1D752, "M", "κ"),
- (0x1D753, "M", "φ"),
- (0x1D754, "M", "ρ"),
- (0x1D755, "M", "π"),
- (0x1D756, "M", "α"),
- (0x1D757, "M", "β"),
- (0x1D758, "M", "γ"),
- (0x1D759, "M", "δ"),
- (0x1D75A, "M", "ε"),
- (0x1D75B, "M", "ζ"),
- (0x1D75C, "M", "η"),
- (0x1D75D, "M", "θ"),
- (0x1D75E, "M", "ι"),
- (0x1D75F, "M", "κ"),
- (0x1D760, "M", "λ"),
- (0x1D761, "M", "μ"),
- (0x1D762, "M", "ν"),
- (0x1D763, "M", "ξ"),
- (0x1D764, "M", "ο"),
- (0x1D765, "M", "π"),
- (0x1D766, "M", "ρ"),
- (0x1D767, "M", "θ"),
- (0x1D768, "M", "σ"),
- (0x1D769, "M", "τ"),
- (0x1D76A, "M", "υ"),
- (0x1D76B, "M", "φ"),
- (0x1D76C, "M", "χ"),
- (0x1D76D, "M", "ψ"),
- (0x1D76E, "M", "ω"),
- (0x1D76F, "M", "∇"),
- (0x1D770, "M", "α"),
- (0x1D771, "M", "β"),
- (0x1D772, "M", "γ"),
- (0x1D773, "M", "δ"),
- (0x1D774, "M", "ε"),
- (0x1D775, "M", "ζ"),
- (0x1D776, "M", "η"),
- (0x1D777, "M", "θ"),
- (0x1D778, "M", "ι"),
- (0x1D779, "M", "κ"),
- (0x1D77A, "M", "λ"),
- (0x1D77B, "M", "μ"),
- (0x1D77C, "M", "ν"),
- (0x1D77D, "M", "ξ"),
- (0x1D77E, "M", "ο"),
- (0x1D77F, "M", "π"),
- (0x1D780, "M", "ρ"),
- (0x1D781, "M", "σ"),
- (0x1D783, "M", "τ"),
- (0x1D784, "M", "υ"),
- (0x1D785, "M", "φ"),
- (0x1D786, "M", "χ"),
- (0x1D787, "M", "ψ"),
- (0x1D788, "M", "ω"),
- (0x1D789, "M", "∂"),
- (0x1D78A, "M", "ε"),
- (0x1D78B, "M", "θ"),
- (0x1D78C, "M", "κ"),
- (0x1D78D, "M", "φ"),
- (0x1D78E, "M", "ρ"),
- (0x1D78F, "M", "π"),
- (0x1D790, "M", "α"),
- (0x1D791, "M", "β"),
- (0x1D792, "M", "γ"),
- (0x1D793, "M", "δ"),
- (0x1D794, "M", "ε"),
- (0x1D795, "M", "ζ"),
- (0x1D796, "M", "η"),
- (0x1D797, "M", "θ"),
- (0x1D798, "M", "ι"),
- (0x1D799, "M", "κ"),
- (0x1D79A, "M", "λ"),
- (0x1D79B, "M", "μ"),
- (0x1D79C, "M", "ν"),
- (0x1D79D, "M", "ξ"),
- (0x1D79E, "M", "ο"),
- (0x1D79F, "M", "π"),
- (0x1D7A0, "M", "ρ"),
- (0x1D7A1, "M", "θ"),
- (0x1D7A2, "M", "σ"),
- (0x1D7A3, "M", "τ"),
- (0x1D7A4, "M", "υ"),
- (0x1D7A5, "M", "φ"),
- (0x1D7A6, "M", "χ"),
- (0x1D7A7, "M", "ψ"),
- (0x1D7A8, "M", "ω"),
- (0x1D7A9, "M", "∇"),
- (0x1D7AA, "M", "α"),
- (0x1D7AB, "M", "β"),
- (0x1D7AC, "M", "γ"),
- (0x1D7AD, "M", "δ"),
- (0x1D7AE, "M", "ε"),
- (0x1D7AF, "M", "ζ"),
- (0x1D7B0, "M", "η"),
- (0x1D7B1, "M", "θ"),
- (0x1D7B2, "M", "ι"),
- (0x1D7B3, "M", "κ"),
- (0x1D7B4, "M", "λ"),
- (0x1D7B5, "M", "μ"),
- (0x1D7B6, "M", "ν"),
- (0x1D7B7, "M", "ξ"),
- (0x1D7B8, "M", "ο"),
- (0x1D7B9, "M", "π"),
- (0x1D7BA, "M", "ρ"),
- (0x1D7BB, "M", "σ"),
- (0x1D7BD, "M", "τ"),
- (0x1D7BE, "M", "υ"),
- (0x1D7BF, "M", "φ"),
- (0x1D7C0, "M", "χ"),
- (0x1D7C1, "M", "ψ"),
- (0x1D7C2, "M", "ω"),
- (0x1D7C3, "M", "∂"),
- (0x1D7C4, "M", "ε"),
- (0x1D7C5, "M", "θ"),
- (0x1D7C6, "M", "κ"),
- (0x1D7C7, "M", "φ"),
- (0x1D7C8, "M", "ρ"),
- (0x1D7C9, "M", "π"),
- (0x1D7CA, "M", "ϝ"),
- (0x1D7CC, "X"),
- (0x1D7CE, "M", "0"),
- (0x1D7CF, "M", "1"),
- (0x1D7D0, "M", "2"),
- (0x1D7D1, "M", "3"),
- (0x1D7D2, "M", "4"),
- (0x1D7D3, "M", "5"),
- (0x1D7D4, "M", "6"),
- (0x1D7D5, "M", "7"),
- (0x1D7D6, "M", "8"),
- (0x1D7D7, "M", "9"),
- (0x1D7D8, "M", "0"),
- (0x1D7D9, "M", "1"),
- (0x1D7DA, "M", "2"),
- (0x1D7DB, "M", "3"),
- (0x1D7DC, "M", "4"),
- (0x1D7DD, "M", "5"),
- (0x1D7DE, "M", "6"),
- (0x1D7DF, "M", "7"),
- (0x1D7E0, "M", "8"),
- (0x1D7E1, "M", "9"),
- (0x1D7E2, "M", "0"),
- (0x1D7E3, "M", "1"),
- (0x1D7E4, "M", "2"),
- (0x1D7E5, "M", "3"),
- (0x1D7E6, "M", "4"),
- (0x1D7E7, "M", "5"),
- (0x1D7E8, "M", "6"),
- (0x1D7E9, "M", "7"),
- (0x1D7EA, "M", "8"),
- (0x1D7EB, "M", "9"),
- (0x1D7EC, "M", "0"),
- (0x1D7ED, "M", "1"),
- (0x1D7EE, "M", "2"),
- (0x1D7EF, "M", "3"),
- (0x1D7F0, "M", "4"),
- (0x1D7F1, "M", "5"),
- (0x1D7F2, "M", "6"),
- (0x1D7F3, "M", "7"),
- (0x1D7F4, "M", "8"),
- (0x1D7F5, "M", "9"),
- (0x1D7F6, "M", "0"),
- (0x1D7F7, "M", "1"),
- (0x1D7F8, "M", "2"),
- (0x1D7F9, "M", "3"),
- (0x1D7FA, "M", "4"),
- (0x1D7FB, "M", "5"),
- (0x1D7FC, "M", "6"),
- (0x1D7FD, "M", "7"),
- (0x1D7FE, "M", "8"),
- (0x1D7FF, "M", "9"),
- (0x1D800, "V"),
- (0x1DA8C, "X"),
- (0x1DA9B, "V"),
- (0x1DAA0, "X"),
- (0x1DAA1, "V"),
- (0x1DAB0, "X"),
- (0x1DF00, "V"),
- (0x1DF1F, "X"),
- (0x1DF25, "V"),
- (0x1DF2B, "X"),
- (0x1E000, "V"),
- (0x1E007, "X"),
- (0x1E008, "V"),
- (0x1E019, "X"),
- (0x1E01B, "V"),
- (0x1E022, "X"),
- (0x1E023, "V"),
- (0x1E025, "X"),
- (0x1E026, "V"),
- (0x1E02B, "X"),
- (0x1E030, "M", "а"),
- (0x1E031, "M", "б"),
- (0x1E032, "M", "в"),
- (0x1E033, "M", "г"),
- (0x1E034, "M", "д"),
- (0x1E035, "M", "е"),
- (0x1E036, "M", "ж"),
- (0x1E037, "M", "з"),
- (0x1E038, "M", "и"),
- (0x1E039, "M", "к"),
- (0x1E03A, "M", "л"),
- (0x1E03B, "M", "м"),
- (0x1E03C, "M", "о"),
- (0x1E03D, "M", "п"),
- (0x1E03E, "M", "р"),
- (0x1E03F, "M", "с"),
- (0x1E040, "M", "т"),
- (0x1E041, "M", "у"),
- (0x1E042, "M", "ф"),
- (0x1E043, "M", "х"),
- (0x1E044, "M", "ц"),
- (0x1E045, "M", "ч"),
- (0x1E046, "M", "ш"),
- (0x1E047, "M", "ы"),
- (0x1E048, "M", "э"),
- (0x1E049, "M", "ю"),
- (0x1E04A, "M", "ꚉ"),
- (0x1E04B, "M", "ә"),
- (0x1E04C, "M", "і"),
- (0x1E04D, "M", "ј"),
- (0x1E04E, "M", "ө"),
- (0x1E04F, "M", "ү"),
- (0x1E050, "M", "ӏ"),
- (0x1E051, "M", "а"),
- (0x1E052, "M", "б"),
- (0x1E053, "M", "в"),
- (0x1E054, "M", "г"),
- (0x1E055, "M", "д"),
- (0x1E056, "M", "е"),
- (0x1E057, "M", "ж"),
- (0x1E058, "M", "з"),
- (0x1E059, "M", "и"),
- (0x1E05A, "M", "к"),
- (0x1E05B, "M", "л"),
- (0x1E05C, "M", "о"),
- (0x1E05D, "M", "п"),
- (0x1E05E, "M", "с"),
- (0x1E05F, "M", "у"),
- (0x1E060, "M", "ф"),
- (0x1E061, "M", "х"),
- (0x1E062, "M", "ц"),
- (0x1E063, "M", "ч"),
- (0x1E064, "M", "ш"),
- (0x1E065, "M", "ъ"),
- (0x1E066, "M", "ы"),
- (0x1E067, "M", "ґ"),
- (0x1E068, "M", "і"),
- (0x1E069, "M", "ѕ"),
- (0x1E06A, "M", "џ"),
- (0x1E06B, "M", "ҫ"),
- (0x1E06C, "M", "ꙑ"),
- (0x1E06D, "M", "ұ"),
- (0x1E06E, "X"),
- (0x1E08F, "V"),
- (0x1E090, "X"),
- (0x1E100, "V"),
- (0x1E12D, "X"),
- (0x1E130, "V"),
- (0x1E13E, "X"),
- (0x1E140, "V"),
- (0x1E14A, "X"),
- (0x1E14E, "V"),
- (0x1E150, "X"),
- (0x1E290, "V"),
- (0x1E2AF, "X"),
- (0x1E2C0, "V"),
- (0x1E2FA, "X"),
- (0x1E2FF, "V"),
- (0x1E300, "X"),
- (0x1E4D0, "V"),
- (0x1E4FA, "X"),
- (0x1E5D0, "V"),
- (0x1E5FB, "X"),
- (0x1E5FF, "V"),
- (0x1E600, "X"),
- (0x1E6C0, "V"),
- (0x1E6DF, "X"),
- (0x1E6E0, "V"),
- (0x1E6F6, "X"),
- (0x1E6FE, "V"),
- (0x1E700, "X"),
- (0x1E7E0, "V"),
- (0x1E7E7, "X"),
- (0x1E7E8, "V"),
- (0x1E7EC, "X"),
- (0x1E7ED, "V"),
- (0x1E7EF, "X"),
- (0x1E7F0, "V"),
- (0x1E7FF, "X"),
- (0x1E800, "V"),
- (0x1E8C5, "X"),
- (0x1E8C7, "V"),
- (0x1E8D7, "X"),
- (0x1E900, "M", "𞤢"),
- (0x1E901, "M", "𞤣"),
- (0x1E902, "M", "𞤤"),
- (0x1E903, "M", "𞤥"),
- (0x1E904, "M", "𞤦"),
- (0x1E905, "M", "𞤧"),
- (0x1E906, "M", "𞤨"),
- (0x1E907, "M", "𞤩"),
- (0x1E908, "M", "𞤪"),
- (0x1E909, "M", "𞤫"),
- (0x1E90A, "M", "𞤬"),
- (0x1E90B, "M", "𞤭"),
- (0x1E90C, "M", "𞤮"),
- (0x1E90D, "M", "𞤯"),
- (0x1E90E, "M", "𞤰"),
- (0x1E90F, "M", "𞤱"),
- (0x1E910, "M", "𞤲"),
- (0x1E911, "M", "𞤳"),
- (0x1E912, "M", "𞤴"),
- (0x1E913, "M", "𞤵"),
- (0x1E914, "M", "𞤶"),
- (0x1E915, "M", "𞤷"),
- (0x1E916, "M", "𞤸"),
- (0x1E917, "M", "𞤹"),
- (0x1E918, "M", "𞤺"),
- (0x1E919, "M", "𞤻"),
- (0x1E91A, "M", "𞤼"),
- (0x1E91B, "M", "𞤽"),
- (0x1E91C, "M", "𞤾"),
- (0x1E91D, "M", "𞤿"),
- (0x1E91E, "M", "𞥀"),
- (0x1E91F, "M", "𞥁"),
- (0x1E920, "M", "𞥂"),
- (0x1E921, "M", "𞥃"),
- (0x1E922, "V"),
- (0x1E94C, "X"),
- (0x1E950, "V"),
- (0x1E95A, "X"),
- (0x1E95E, "V"),
- (0x1E960, "X"),
- (0x1EC71, "V"),
- (0x1ECB5, "X"),
- (0x1ED01, "V"),
- (0x1ED3E, "X"),
- (0x1EE00, "M", "ا"),
- (0x1EE01, "M", "ب"),
- (0x1EE02, "M", "ج"),
- (0x1EE03, "M", "د"),
- (0x1EE04, "X"),
- (0x1EE05, "M", "و"),
- (0x1EE06, "M", "ز"),
- (0x1EE07, "M", "ح"),
- (0x1EE08, "M", "ط"),
- (0x1EE09, "M", "ي"),
- (0x1EE0A, "M", "ك"),
- (0x1EE0B, "M", "ل"),
- (0x1EE0C, "M", "م"),
- (0x1EE0D, "M", "ن"),
- (0x1EE0E, "M", "س"),
- (0x1EE0F, "M", "ع"),
- (0x1EE10, "M", "ف"),
- (0x1EE11, "M", "ص"),
- (0x1EE12, "M", "ق"),
- (0x1EE13, "M", "ر"),
- (0x1EE14, "M", "ش"),
- (0x1EE15, "M", "ت"),
- (0x1EE16, "M", "ث"),
- (0x1EE17, "M", "خ"),
- (0x1EE18, "M", "ذ"),
- (0x1EE19, "M", "ض"),
- (0x1EE1A, "M", "ظ"),
- (0x1EE1B, "M", "غ"),
- (0x1EE1C, "M", "ٮ"),
- (0x1EE1D, "M", "ں"),
- (0x1EE1E, "M", "ڡ"),
- (0x1EE1F, "M", "ٯ"),
- (0x1EE20, "X"),
- (0x1EE21, "M", "ب"),
- (0x1EE22, "M", "ج"),
- (0x1EE23, "X"),
- (0x1EE24, "M", "ه"),
- (0x1EE25, "X"),
- (0x1EE27, "M", "ح"),
- (0x1EE28, "X"),
- (0x1EE29, "M", "ي"),
- (0x1EE2A, "M", "ك"),
- (0x1EE2B, "M", "ل"),
- (0x1EE2C, "M", "م"),
- (0x1EE2D, "M", "ن"),
- (0x1EE2E, "M", "س"),
- (0x1EE2F, "M", "ع"),
- (0x1EE30, "M", "ف"),
- (0x1EE31, "M", "ص"),
- (0x1EE32, "M", "ق"),
- (0x1EE33, "X"),
- (0x1EE34, "M", "ش"),
- (0x1EE35, "M", "ت"),
- (0x1EE36, "M", "ث"),
- (0x1EE37, "M", "خ"),
- (0x1EE38, "X"),
- (0x1EE39, "M", "ض"),
- (0x1EE3A, "X"),
- (0x1EE3B, "M", "غ"),
- (0x1EE3C, "X"),
- (0x1EE42, "M", "ج"),
- (0x1EE43, "X"),
- (0x1EE47, "M", "ح"),
- (0x1EE48, "X"),
- (0x1EE49, "M", "ي"),
- (0x1EE4A, "X"),
- (0x1EE4B, "M", "ل"),
- (0x1EE4C, "X"),
- (0x1EE4D, "M", "ن"),
- (0x1EE4E, "M", "س"),
- (0x1EE4F, "M", "ع"),
- (0x1EE50, "X"),
- (0x1EE51, "M", "ص"),
- (0x1EE52, "M", "ق"),
- (0x1EE53, "X"),
- (0x1EE54, "M", "ش"),
- (0x1EE55, "X"),
- (0x1EE57, "M", "خ"),
- (0x1EE58, "X"),
- (0x1EE59, "M", "ض"),
- (0x1EE5A, "X"),
- (0x1EE5B, "M", "غ"),
- (0x1EE5C, "X"),
- (0x1EE5D, "M", "ں"),
- (0x1EE5E, "X"),
- (0x1EE5F, "M", "ٯ"),
- (0x1EE60, "X"),
- (0x1EE61, "M", "ب"),
- (0x1EE62, "M", "ج"),
- (0x1EE63, "X"),
- (0x1EE64, "M", "ه"),
- (0x1EE65, "X"),
- (0x1EE67, "M", "ح"),
- (0x1EE68, "M", "ط"),
- (0x1EE69, "M", "ي"),
- (0x1EE6A, "M", "ك"),
- (0x1EE6B, "X"),
- (0x1EE6C, "M", "م"),
- (0x1EE6D, "M", "ن"),
- (0x1EE6E, "M", "س"),
- (0x1EE6F, "M", "ع"),
- (0x1EE70, "M", "ف"),
- (0x1EE71, "M", "ص"),
- (0x1EE72, "M", "ق"),
- (0x1EE73, "X"),
- (0x1EE74, "M", "ش"),
- (0x1EE75, "M", "ت"),
- (0x1EE76, "M", "ث"),
- (0x1EE77, "M", "خ"),
- (0x1EE78, "X"),
- (0x1EE79, "M", "ض"),
- (0x1EE7A, "M", "ظ"),
- (0x1EE7B, "M", "غ"),
- (0x1EE7C, "M", "ٮ"),
- (0x1EE7D, "X"),
- (0x1EE7E, "M", "ڡ"),
- (0x1EE7F, "X"),
- (0x1EE80, "M", "ا"),
- (0x1EE81, "M", "ب"),
- (0x1EE82, "M", "ج"),
- (0x1EE83, "M", "د"),
- (0x1EE84, "M", "ه"),
- (0x1EE85, "M", "و"),
- (0x1EE86, "M", "ز"),
- (0x1EE87, "M", "ح"),
- (0x1EE88, "M", "ط"),
- (0x1EE89, "M", "ي"),
- (0x1EE8A, "X"),
- (0x1EE8B, "M", "ل"),
- (0x1EE8C, "M", "م"),
- (0x1EE8D, "M", "ن"),
- (0x1EE8E, "M", "س"),
- (0x1EE8F, "M", "ع"),
- (0x1EE90, "M", "ف"),
- (0x1EE91, "M", "ص"),
- (0x1EE92, "M", "ق"),
- (0x1EE93, "M", "ر"),
- (0x1EE94, "M", "ش"),
- (0x1EE95, "M", "ت"),
- (0x1EE96, "M", "ث"),
- (0x1EE97, "M", "خ"),
- (0x1EE98, "M", "ذ"),
- (0x1EE99, "M", "ض"),
- (0x1EE9A, "M", "ظ"),
- (0x1EE9B, "M", "غ"),
- (0x1EE9C, "X"),
- (0x1EEA1, "M", "ب"),
- (0x1EEA2, "M", "ج"),
- (0x1EEA3, "M", "د"),
- (0x1EEA4, "X"),
- (0x1EEA5, "M", "و"),
- (0x1EEA6, "M", "ز"),
- (0x1EEA7, "M", "ح"),
- (0x1EEA8, "M", "ط"),
- (0x1EEA9, "M", "ي"),
- (0x1EEAA, "X"),
- (0x1EEAB, "M", "ل"),
- (0x1EEAC, "M", "م"),
- (0x1EEAD, "M", "ن"),
- (0x1EEAE, "M", "س"),
- (0x1EEAF, "M", "ع"),
- (0x1EEB0, "M", "ف"),
- (0x1EEB1, "M", "ص"),
- (0x1EEB2, "M", "ق"),
- (0x1EEB3, "M", "ر"),
- (0x1EEB4, "M", "ش"),
- (0x1EEB5, "M", "ت"),
- (0x1EEB6, "M", "ث"),
- (0x1EEB7, "M", "خ"),
- (0x1EEB8, "M", "ذ"),
- (0x1EEB9, "M", "ض"),
- (0x1EEBA, "M", "ظ"),
- (0x1EEBB, "M", "غ"),
- (0x1EEBC, "X"),
- (0x1EEF0, "V"),
- (0x1EEF2, "X"),
- (0x1F000, "V"),
- (0x1F02C, "X"),
- (0x1F030, "V"),
- (0x1F094, "X"),
- (0x1F0A0, "V"),
- (0x1F0AF, "X"),
- (0x1F0B1, "V"),
- (0x1F0C0, "X"),
- (0x1F0C1, "V"),
- (0x1F0D0, "X"),
- (0x1F0D1, "V"),
- (0x1F0F6, "X"),
- (0x1F101, "M", "0,"),
- (0x1F102, "M", "1,"),
- (0x1F103, "M", "2,"),
- (0x1F104, "M", "3,"),
- (0x1F105, "M", "4,"),
- (0x1F106, "M", "5,"),
- (0x1F107, "M", "6,"),
- (0x1F108, "M", "7,"),
- (0x1F109, "M", "8,"),
- (0x1F10A, "M", "9,"),
- (0x1F10B, "V"),
- (0x1F110, "M", "(a)"),
- (0x1F111, "M", "(b)"),
- (0x1F112, "M", "(c)"),
- (0x1F113, "M", "(d)"),
- (0x1F114, "M", "(e)"),
- (0x1F115, "M", "(f)"),
- (0x1F116, "M", "(g)"),
- (0x1F117, "M", "(h)"),
- (0x1F118, "M", "(i)"),
- (0x1F119, "M", "(j)"),
- (0x1F11A, "M", "(k)"),
- (0x1F11B, "M", "(l)"),
- (0x1F11C, "M", "(m)"),
- (0x1F11D, "M", "(n)"),
- (0x1F11E, "M", "(o)"),
- (0x1F11F, "M", "(p)"),
- (0x1F120, "M", "(q)"),
- (0x1F121, "M", "(r)"),
- (0x1F122, "M", "(s)"),
- (0x1F123, "M", "(t)"),
- (0x1F124, "M", "(u)"),
- (0x1F125, "M", "(v)"),
- (0x1F126, "M", "(w)"),
- (0x1F127, "M", "(x)"),
- (0x1F128, "M", "(y)"),
- (0x1F129, "M", "(z)"),
- (0x1F12A, "M", "〔s〕"),
- (0x1F12B, "M", "c"),
- (0x1F12C, "M", "r"),
- (0x1F12D, "M", "cd"),
- (0x1F12E, "M", "wz"),
- (0x1F12F, "V"),
- (0x1F130, "M", "a"),
- (0x1F131, "M", "b"),
- (0x1F132, "M", "c"),
- (0x1F133, "M", "d"),
- (0x1F134, "M", "e"),
- (0x1F135, "M", "f"),
- (0x1F136, "M", "g"),
- (0x1F137, "M", "h"),
- (0x1F138, "M", "i"),
- (0x1F139, "M", "j"),
- (0x1F13A, "M", "k"),
- (0x1F13B, "M", "l"),
- (0x1F13C, "M", "m"),
- (0x1F13D, "M", "n"),
- (0x1F13E, "M", "o"),
- (0x1F13F, "M", "p"),
- (0x1F140, "M", "q"),
- (0x1F141, "M", "r"),
- (0x1F142, "M", "s"),
- (0x1F143, "M", "t"),
- (0x1F144, "M", "u"),
- (0x1F145, "M", "v"),
- (0x1F146, "M", "w"),
- (0x1F147, "M", "x"),
- (0x1F148, "M", "y"),
- (0x1F149, "M", "z"),
- (0x1F14A, "M", "hv"),
- (0x1F14B, "M", "mv"),
- (0x1F14C, "M", "sd"),
- (0x1F14D, "M", "ss"),
- (0x1F14E, "M", "ppv"),
- (0x1F14F, "M", "wc"),
- (0x1F150, "V"),
- (0x1F16A, "M", "mc"),
- (0x1F16B, "M", "md"),
- (0x1F16C, "M", "mr"),
- (0x1F16D, "V"),
- (0x1F190, "M", "dj"),
- (0x1F191, "V"),
- (0x1F1AE, "X"),
- (0x1F1E6, "V"),
- (0x1F200, "M", "ほか"),
- (0x1F201, "M", "ココ"),
- (0x1F202, "M", "サ"),
- (0x1F203, "X"),
- (0x1F210, "M", "手"),
- (0x1F211, "M", "字"),
- (0x1F212, "M", "双"),
- (0x1F213, "M", "デ"),
- (0x1F214, "M", "二"),
- (0x1F215, "M", "多"),
- (0x1F216, "M", "解"),
- (0x1F217, "M", "天"),
- (0x1F218, "M", "交"),
- (0x1F219, "M", "映"),
- (0x1F21A, "M", "無"),
- (0x1F21B, "M", "料"),
- (0x1F21C, "M", "前"),
- (0x1F21D, "M", "後"),
- (0x1F21E, "M", "再"),
- (0x1F21F, "M", "新"),
- (0x1F220, "M", "初"),
- (0x1F221, "M", "終"),
- (0x1F222, "M", "生"),
- (0x1F223, "M", "販"),
- (0x1F224, "M", "声"),
- (0x1F225, "M", "吹"),
- (0x1F226, "M", "演"),
- (0x1F227, "M", "投"),
- (0x1F228, "M", "捕"),
- (0x1F229, "M", "一"),
- (0x1F22A, "M", "三"),
- (0x1F22B, "M", "遊"),
- (0x1F22C, "M", "左"),
- (0x1F22D, "M", "中"),
- (0x1F22E, "M", "右"),
- (0x1F22F, "M", "指"),
- (0x1F230, "M", "走"),
- (0x1F231, "M", "打"),
- (0x1F232, "M", "禁"),
- (0x1F233, "M", "空"),
- (0x1F234, "M", "合"),
- (0x1F235, "M", "満"),
- (0x1F236, "M", "有"),
- (0x1F237, "M", "月"),
- (0x1F238, "M", "申"),
- (0x1F239, "M", "割"),
- (0x1F23A, "M", "営"),
- (0x1F23B, "M", "配"),
- (0x1F23C, "X"),
- (0x1F240, "M", "〔本〕"),
- (0x1F241, "M", "〔三〕"),
- (0x1F242, "M", "〔二〕"),
- (0x1F243, "M", "〔安〕"),
- (0x1F244, "M", "〔点〕"),
- (0x1F245, "M", "〔打〕"),
- (0x1F246, "M", "〔盗〕"),
- (0x1F247, "M", "〔勝〕"),
- (0x1F248, "M", "〔敗〕"),
- (0x1F249, "X"),
- (0x1F250, "M", "得"),
- (0x1F251, "M", "可"),
- (0x1F252, "X"),
- (0x1F260, "V"),
- (0x1F266, "X"),
- (0x1F300, "V"),
- (0x1F6D9, "X"),
- (0x1F6DC, "V"),
- (0x1F6ED, "X"),
- (0x1F6F0, "V"),
- (0x1F6FD, "X"),
- (0x1F700, "V"),
- (0x1F7DA, "X"),
- (0x1F7E0, "V"),
- (0x1F7EC, "X"),
- (0x1F7F0, "V"),
- (0x1F7F1, "X"),
- (0x1F800, "V"),
- (0x1F80C, "X"),
- (0x1F810, "V"),
- (0x1F848, "X"),
- (0x1F850, "V"),
- (0x1F85A, "X"),
- (0x1F860, "V"),
- (0x1F888, "X"),
- (0x1F890, "V"),
- (0x1F8AE, "X"),
- (0x1F8B0, "V"),
- (0x1F8BC, "X"),
- (0x1F8C0, "V"),
- (0x1F8C2, "X"),
- (0x1F8D0, "V"),
- (0x1F8D9, "X"),
- (0x1F900, "V"),
- (0x1FA58, "X"),
- (0x1FA60, "V"),
- (0x1FA6E, "X"),
- (0x1FA70, "V"),
- (0x1FA7D, "X"),
- (0x1FA80, "V"),
- (0x1FA8B, "X"),
- (0x1FA8E, "V"),
- (0x1FAC7, "X"),
- (0x1FAC8, "V"),
- (0x1FAC9, "X"),
- (0x1FACD, "V"),
- (0x1FADD, "X"),
- (0x1FADF, "V"),
- (0x1FAEB, "X"),
- (0x1FAEF, "V"),
- (0x1FAF9, "X"),
- (0x1FB00, "V"),
- (0x1FB93, "X"),
- (0x1FB94, "V"),
- (0x1FBF0, "M", "0"),
- (0x1FBF1, "M", "1"),
- (0x1FBF2, "M", "2"),
- (0x1FBF3, "M", "3"),
- (0x1FBF4, "M", "4"),
- (0x1FBF5, "M", "5"),
- (0x1FBF6, "M", "6"),
- (0x1FBF7, "M", "7"),
- (0x1FBF8, "M", "8"),
- (0x1FBF9, "M", "9"),
- (0x1FBFA, "V"),
- (0x1FBFB, "X"),
- (0x20000, "V"),
- (0x2A6E0, "X"),
- (0x2A700, "V"),
- (0x2B81E, "X"),
- (0x2B820, "V"),
- (0x2CEAE, "X"),
- (0x2CEB0, "V"),
- (0x2EBE1, "X"),
- (0x2EBF0, "V"),
- (0x2EE5E, "X"),
- (0x2F800, "M", "丽"),
- (0x2F801, "M", "丸"),
- (0x2F802, "M", "乁"),
- (0x2F803, "M", "𠄢"),
- (0x2F804, "M", "你"),
- (0x2F805, "M", "侮"),
- (0x2F806, "M", "侻"),
- (0x2F807, "M", "倂"),
- (0x2F808, "M", "偺"),
- (0x2F809, "M", "備"),
- (0x2F80A, "M", "僧"),
- (0x2F80B, "M", "像"),
- (0x2F80C, "M", "㒞"),
- (0x2F80D, "M", "𠘺"),
- (0x2F80E, "M", "免"),
- (0x2F80F, "M", "兔"),
- (0x2F810, "M", "兤"),
- (0x2F811, "M", "具"),
- (0x2F812, "M", "𠔜"),
- (0x2F813, "M", "㒹"),
- (0x2F814, "M", "內"),
- (0x2F815, "M", "再"),
- (0x2F816, "M", "𠕋"),
- (0x2F817, "M", "冗"),
- (0x2F818, "M", "冤"),
- (0x2F819, "M", "仌"),
- (0x2F81A, "M", "冬"),
- (0x2F81B, "M", "况"),
- (0x2F81C, "M", "𩇟"),
- (0x2F81D, "M", "凵"),
- (0x2F81E, "M", "刃"),
- (0x2F81F, "M", "㓟"),
- (0x2F820, "M", "刻"),
- (0x2F821, "M", "剆"),
- (0x2F822, "M", "割"),
- (0x2F823, "M", "剷"),
- (0x2F824, "M", "㔕"),
- (0x2F825, "M", "勇"),
- (0x2F826, "M", "勉"),
- (0x2F827, "M", "勤"),
- (0x2F828, "M", "勺"),
- (0x2F829, "M", "包"),
- (0x2F82A, "M", "匆"),
- (0x2F82B, "M", "北"),
- (0x2F82C, "M", "卉"),
- (0x2F82D, "M", "卑"),
- (0x2F82E, "M", "博"),
- (0x2F82F, "M", "即"),
- (0x2F830, "M", "卽"),
- (0x2F831, "M", "卿"),
- (0x2F834, "M", "𠨬"),
- (0x2F835, "M", "灰"),
- (0x2F836, "M", "及"),
- (0x2F837, "M", "叟"),
- (0x2F838, "M", "𠭣"),
- (0x2F839, "M", "叫"),
- (0x2F83A, "M", "叱"),
- (0x2F83B, "M", "吆"),
- (0x2F83C, "M", "咞"),
- (0x2F83D, "M", "吸"),
- (0x2F83E, "M", "呈"),
- (0x2F83F, "M", "周"),
- (0x2F840, "M", "咢"),
- (0x2F841, "M", "哶"),
- (0x2F842, "M", "唐"),
- (0x2F843, "M", "啓"),
- (0x2F844, "M", "啣"),
- (0x2F845, "M", "善"),
- (0x2F847, "M", "喙"),
- (0x2F848, "M", "喫"),
- (0x2F849, "M", "喳"),
- (0x2F84A, "M", "嗂"),
- (0x2F84B, "M", "圖"),
- (0x2F84C, "M", "嘆"),
- (0x2F84D, "M", "圗"),
- (0x2F84E, "M", "噑"),
- (0x2F84F, "M", "噴"),
- (0x2F850, "M", "切"),
- (0x2F851, "M", "壮"),
- (0x2F852, "M", "城"),
- (0x2F853, "M", "埴"),
- (0x2F854, "M", "堍"),
- (0x2F855, "M", "型"),
- (0x2F856, "M", "堲"),
- (0x2F857, "M", "報"),
- (0x2F858, "M", "墬"),
- (0x2F859, "M", "𡓤"),
- (0x2F85A, "M", "売"),
- (0x2F85B, "M", "壷"),
- (0x2F85C, "M", "夆"),
- (0x2F85D, "M", "多"),
- (0x2F85E, "M", "夢"),
- (0x2F85F, "M", "奢"),
- (0x2F860, "M", "𡚨"),
- (0x2F861, "M", "𡛪"),
- (0x2F862, "M", "姬"),
- (0x2F863, "M", "娛"),
- (0x2F864, "M", "娧"),
- (0x2F865, "M", "姘"),
- (0x2F866, "M", "婦"),
- (0x2F867, "M", "㛮"),
- (0x2F868, "M", "㛼"),
- (0x2F869, "M", "嬈"),
- (0x2F86A, "M", "嬾"),
- (0x2F86C, "M", "𡧈"),
- (0x2F86D, "M", "寃"),
- (0x2F86E, "M", "寘"),
- (0x2F86F, "M", "寧"),
- (0x2F870, "M", "寳"),
- (0x2F871, "M", "𡬘"),
- (0x2F872, "M", "寿"),
- (0x2F873, "M", "将"),
- (0x2F874, "M", "当"),
- (0x2F875, "M", "尢"),
- (0x2F876, "M", "㞁"),
- (0x2F877, "M", "屠"),
- (0x2F878, "M", "屮"),
- (0x2F879, "M", "峀"),
- (0x2F87A, "M", "岍"),
- (0x2F87B, "M", "𡷤"),
- (0x2F87C, "M", "嵃"),
- (0x2F87D, "M", "𡷦"),
- (0x2F87E, "M", "嵮"),
- (0x2F87F, "M", "嵫"),
- (0x2F880, "M", "嵼"),
- (0x2F881, "M", "巡"),
- (0x2F882, "M", "巢"),
- (0x2F883, "M", "㠯"),
- (0x2F884, "M", "巽"),
- (0x2F885, "M", "帨"),
- (0x2F886, "M", "帽"),
- (0x2F887, "M", "幩"),
- (0x2F888, "M", "㡢"),
- (0x2F889, "M", "𢆃"),
- (0x2F88A, "M", "㡼"),
- (0x2F88B, "M", "庰"),
- (0x2F88C, "M", "庳"),
- (0x2F88D, "M", "庶"),
- (0x2F88E, "M", "廊"),
- (0x2F88F, "M", "𪎒"),
- (0x2F890, "M", "廾"),
- (0x2F891, "M", "𢌱"),
- (0x2F893, "M", "舁"),
- (0x2F894, "M", "弢"),
- (0x2F896, "M", "㣇"),
- (0x2F897, "M", "𣊸"),
- (0x2F898, "M", "𦇚"),
- (0x2F899, "M", "形"),
- (0x2F89A, "M", "彫"),
- (0x2F89B, "M", "㣣"),
- (0x2F89C, "M", "徚"),
- (0x2F89D, "M", "忍"),
- (0x2F89E, "M", "志"),
- (0x2F89F, "M", "忹"),
- (0x2F8A0, "M", "悁"),
- (0x2F8A1, "M", "㤺"),
- (0x2F8A2, "M", "㤜"),
- (0x2F8A3, "M", "悔"),
- (0x2F8A4, "M", "𢛔"),
- (0x2F8A5, "M", "惇"),
- (0x2F8A6, "M", "慈"),
- (0x2F8A7, "M", "慌"),
- (0x2F8A8, "M", "慎"),
- (0x2F8A9, "M", "慌"),
- (0x2F8AA, "M", "慺"),
- (0x2F8AB, "M", "憎"),
- (0x2F8AC, "M", "憲"),
- (0x2F8AD, "M", "憤"),
- (0x2F8AE, "M", "憯"),
- (0x2F8AF, "M", "懞"),
- (0x2F8B0, "M", "懲"),
- (0x2F8B1, "M", "懶"),
- (0x2F8B2, "M", "成"),
- (0x2F8B3, "M", "戛"),
- (0x2F8B4, "M", "扝"),
- (0x2F8B5, "M", "抱"),
- (0x2F8B6, "M", "拔"),
- (0x2F8B7, "M", "捐"),
- (0x2F8B8, "M", "𢬌"),
- (0x2F8B9, "M", "挽"),
- (0x2F8BA, "M", "拼"),
- (0x2F8BB, "M", "捨"),
- (0x2F8BC, "M", "掃"),
- (0x2F8BD, "M", "揤"),
- (0x2F8BE, "M", "𢯱"),
- (0x2F8BF, "M", "搢"),
- (0x2F8C0, "M", "揅"),
- (0x2F8C1, "M", "掩"),
- (0x2F8C2, "M", "㨮"),
- (0x2F8C3, "M", "摩"),
- (0x2F8C4, "M", "摾"),
- (0x2F8C5, "M", "撝"),
- (0x2F8C6, "M", "摷"),
- (0x2F8C7, "M", "㩬"),
- (0x2F8C8, "M", "敏"),
- (0x2F8C9, "M", "敬"),
- (0x2F8CA, "M", "𣀊"),
- (0x2F8CB, "M", "旣"),
- (0x2F8CC, "M", "書"),
- (0x2F8CD, "M", "晉"),
- (0x2F8CE, "M", "㬙"),
- (0x2F8CF, "M", "暑"),
- (0x2F8D0, "M", "㬈"),
- (0x2F8D1, "M", "㫤"),
- (0x2F8D2, "M", "冒"),
- (0x2F8D3, "M", "冕"),
- (0x2F8D4, "M", "最"),
- (0x2F8D5, "M", "暜"),
- (0x2F8D6, "M", "肭"),
- (0x2F8D7, "M", "䏙"),
- (0x2F8D8, "M", "朗"),
- (0x2F8D9, "M", "望"),
- (0x2F8DA, "M", "朡"),
- (0x2F8DB, "M", "杞"),
- (0x2F8DC, "M", "杓"),
- (0x2F8DD, "M", "𣏃"),
- (0x2F8DE, "M", "㭉"),
- (0x2F8DF, "M", "柺"),
- (0x2F8E0, "M", "枅"),
- (0x2F8E1, "M", "桒"),
- (0x2F8E2, "M", "梅"),
- (0x2F8E3, "M", "𣑭"),
- (0x2F8E4, "M", "梎"),
- (0x2F8E5, "M", "栟"),
- (0x2F8E6, "M", "椔"),
- (0x2F8E7, "M", "㮝"),
- (0x2F8E8, "M", "楂"),
- (0x2F8E9, "M", "榣"),
- (0x2F8EA, "M", "槪"),
- (0x2F8EB, "M", "檨"),
- (0x2F8EC, "M", "𣚣"),
- (0x2F8ED, "M", "櫛"),
- (0x2F8EE, "M", "㰘"),
- (0x2F8EF, "M", "次"),
- (0x2F8F0, "M", "𣢧"),
- (0x2F8F1, "M", "歔"),
- (0x2F8F2, "M", "㱎"),
- (0x2F8F3, "M", "歲"),
- (0x2F8F4, "M", "殟"),
- (0x2F8F5, "M", "殺"),
- (0x2F8F6, "M", "殻"),
- (0x2F8F7, "M", "𣪍"),
- (0x2F8F8, "M", "𡴋"),
- (0x2F8F9, "M", "𣫺"),
- (0x2F8FA, "M", "汎"),
- (0x2F8FB, "M", "𣲼"),
- (0x2F8FC, "M", "沿"),
- (0x2F8FD, "M", "泍"),
- (0x2F8FE, "M", "汧"),
- (0x2F8FF, "M", "洖"),
- (0x2F900, "M", "派"),
- (0x2F901, "M", "海"),
- (0x2F902, "M", "流"),
- (0x2F903, "M", "浩"),
- (0x2F904, "M", "浸"),
- (0x2F905, "M", "涅"),
- (0x2F906, "M", "𣴞"),
- (0x2F907, "M", "洴"),
- (0x2F908, "M", "港"),
- (0x2F909, "M", "湮"),
- (0x2F90A, "M", "㴳"),
- (0x2F90B, "M", "滋"),
- (0x2F90C, "M", "滇"),
- (0x2F90D, "M", "𣻑"),
- (0x2F90E, "M", "淹"),
- (0x2F90F, "M", "潮"),
- (0x2F910, "M", "𣽞"),
- (0x2F911, "M", "𣾎"),
- (0x2F912, "M", "濆"),
- (0x2F913, "M", "瀹"),
- (0x2F914, "M", "瀞"),
- (0x2F915, "M", "瀛"),
- (0x2F916, "M", "㶖"),
- (0x2F917, "M", "灊"),
- (0x2F918, "M", "災"),
- (0x2F919, "M", "灷"),
- (0x2F91A, "M", "炭"),
- (0x2F91B, "M", "𠔥"),
- (0x2F91C, "M", "煅"),
- (0x2F91D, "M", "𤉣"),
- (0x2F91E, "M", "熜"),
- (0x2F91F, "M", "𤎫"),
- (0x2F920, "M", "爨"),
- (0x2F921, "M", "爵"),
- (0x2F922, "M", "牐"),
- (0x2F923, "M", "𤘈"),
- (0x2F924, "M", "犀"),
- (0x2F925, "M", "犕"),
- (0x2F926, "M", "𤜵"),
- (0x2F927, "M", "𤠔"),
- (0x2F928, "M", "獺"),
- (0x2F929, "M", "王"),
- (0x2F92A, "M", "㺬"),
- (0x2F92B, "M", "玥"),
- (0x2F92C, "M", "㺸"),
- (0x2F92E, "M", "瑇"),
- (0x2F92F, "M", "瑜"),
- (0x2F930, "M", "瑱"),
- (0x2F931, "M", "璅"),
- (0x2F932, "M", "瓊"),
- (0x2F933, "M", "㼛"),
- (0x2F934, "M", "甤"),
- (0x2F935, "M", "𤰶"),
- (0x2F936, "M", "甾"),
- (0x2F937, "M", "𤲒"),
- (0x2F938, "M", "異"),
- (0x2F939, "M", "𢆟"),
- (0x2F93A, "M", "瘐"),
- (0x2F93B, "M", "𤾡"),
- (0x2F93C, "M", "𤾸"),
- (0x2F93D, "M", "𥁄"),
- (0x2F93E, "M", "㿼"),
- (0x2F93F, "M", "䀈"),
- (0x2F940, "M", "直"),
- (0x2F941, "M", "𥃳"),
- (0x2F942, "M", "𥃲"),
- (0x2F943, "M", "𥄙"),
- (0x2F944, "M", "𥄳"),
- (0x2F945, "M", "眞"),
- (0x2F946, "M", "真"),
- (0x2F948, "M", "睊"),
- (0x2F949, "M", "䀹"),
- (0x2F94A, "M", "瞋"),
- (0x2F94B, "M", "䁆"),
- (0x2F94C, "M", "䂖"),
- (0x2F94D, "M", "𥐝"),
- (0x2F94E, "M", "硎"),
- (0x2F94F, "M", "碌"),
- (0x2F950, "M", "磌"),
- (0x2F951, "M", "䃣"),
- (0x2F952, "M", "𥘦"),
- (0x2F953, "M", "祖"),
- (0x2F954, "M", "𥚚"),
- (0x2F955, "M", "𥛅"),
- (0x2F956, "M", "福"),
- (0x2F957, "M", "秫"),
- (0x2F958, "M", "䄯"),
- (0x2F959, "M", "穀"),
- (0x2F95A, "M", "穊"),
- (0x2F95B, "M", "穏"),
- (0x2F95C, "M", "𥥼"),
- (0x2F95D, "M", "𥪧"),
- (0x2F95F, "M", "竮"),
- (0x2F960, "M", "䈂"),
- (0x2F961, "M", "𥮫"),
- (0x2F962, "M", "篆"),
- (0x2F963, "M", "築"),
- (0x2F964, "M", "䈧"),
- (0x2F965, "M", "𥲀"),
- (0x2F966, "M", "糒"),
- (0x2F967, "M", "䊠"),
- (0x2F968, "M", "糨"),
- (0x2F969, "M", "糣"),
- (0x2F96A, "M", "紀"),
- (0x2F96B, "M", "𥾆"),
- (0x2F96C, "M", "絣"),
- (0x2F96D, "M", "䌁"),
- (0x2F96E, "M", "緇"),
- (0x2F96F, "M", "縂"),
- (0x2F970, "M", "繅"),
- (0x2F971, "M", "䌴"),
- (0x2F972, "M", "𦈨"),
- (0x2F973, "M", "𦉇"),
- (0x2F974, "M", "䍙"),
- (0x2F975, "M", "𦋙"),
- (0x2F976, "M", "罺"),
- (0x2F977, "M", "𦌾"),
- (0x2F978, "M", "羕"),
- (0x2F979, "M", "翺"),
- (0x2F97A, "M", "者"),
- (0x2F97B, "M", "𦓚"),
- (0x2F97C, "M", "𦔣"),
- (0x2F97D, "M", "聠"),
- (0x2F97E, "M", "𦖨"),
- (0x2F97F, "M", "聰"),
- (0x2F980, "M", "𣍟"),
- (0x2F981, "M", "䏕"),
- (0x2F982, "M", "育"),
- (0x2F983, "M", "脃"),
- (0x2F984, "M", "䐋"),
- (0x2F985, "M", "脾"),
- (0x2F986, "M", "媵"),
- (0x2F987, "M", "𦞧"),
- (0x2F988, "M", "𦞵"),
- (0x2F989, "M", "𣎓"),
- (0x2F98A, "M", "𣎜"),
- (0x2F98B, "M", "舁"),
- (0x2F98C, "M", "舄"),
- (0x2F98D, "M", "辞"),
- (0x2F98E, "M", "䑫"),
- (0x2F98F, "M", "芑"),
- (0x2F990, "M", "芋"),
- (0x2F991, "M", "芝"),
- (0x2F992, "M", "劳"),
- (0x2F993, "M", "花"),
- (0x2F994, "M", "芳"),
- (0x2F995, "M", "芽"),
- (0x2F996, "M", "苦"),
- (0x2F997, "M", "𦬼"),
- (0x2F998, "M", "若"),
- (0x2F999, "M", "茝"),
- (0x2F99A, "M", "荣"),
- (0x2F99B, "M", "莭"),
- (0x2F99C, "M", "茣"),
- (0x2F99D, "M", "莽"),
- (0x2F99E, "M", "菧"),
- (0x2F99F, "M", "著"),
- (0x2F9A0, "M", "荓"),
- (0x2F9A1, "M", "菊"),
- (0x2F9A2, "M", "菌"),
- (0x2F9A3, "M", "菜"),
- (0x2F9A4, "M", "𦰶"),
- (0x2F9A5, "M", "𦵫"),
- (0x2F9A6, "M", "𦳕"),
- (0x2F9A7, "M", "䔫"),
- (0x2F9A8, "M", "蓱"),
- (0x2F9A9, "M", "蓳"),
- (0x2F9AA, "M", "蔖"),
- (0x2F9AB, "M", "𧏊"),
- (0x2F9AC, "M", "蕤"),
- (0x2F9AD, "M", "𦼬"),
- (0x2F9AE, "M", "䕝"),
- (0x2F9AF, "M", "䕡"),
- (0x2F9B0, "M", "𦾱"),
- (0x2F9B1, "M", "𧃒"),
- (0x2F9B2, "M", "䕫"),
- (0x2F9B3, "M", "虐"),
- (0x2F9B4, "M", "虜"),
- (0x2F9B5, "M", "虧"),
- (0x2F9B6, "M", "虩"),
- (0x2F9B7, "M", "蚩"),
- (0x2F9B8, "M", "蚈"),
- (0x2F9B9, "M", "蜎"),
- (0x2F9BA, "M", "蛢"),
- (0x2F9BB, "M", "蝹"),
- (0x2F9BC, "M", "蜨"),
- (0x2F9BD, "M", "蝫"),
- (0x2F9BE, "M", "螆"),
- (0x2F9BF, "M", "䗗"),
- (0x2F9C0, "M", "蟡"),
- (0x2F9C1, "M", "蠁"),
- (0x2F9C2, "M", "䗹"),
- (0x2F9C3, "M", "衠"),
- (0x2F9C4, "M", "衣"),
- (0x2F9C5, "M", "𧙧"),
- (0x2F9C6, "M", "裗"),
- (0x2F9C7, "M", "裞"),
- (0x2F9C8, "M", "䘵"),
- (0x2F9C9, "M", "裺"),
- (0x2F9CA, "M", "㒻"),
- (0x2F9CB, "M", "𧢮"),
- (0x2F9CC, "M", "𧥦"),
- (0x2F9CD, "M", "䚾"),
- (0x2F9CE, "M", "䛇"),
- (0x2F9CF, "M", "誠"),
- (0x2F9D0, "M", "諭"),
- (0x2F9D1, "M", "變"),
- (0x2F9D2, "M", "豕"),
- (0x2F9D3, "M", "𧲨"),
- (0x2F9D4, "M", "貫"),
- (0x2F9D5, "M", "賁"),
- (0x2F9D6, "M", "贛"),
- (0x2F9D7, "M", "起"),
- (0x2F9D8, "M", "𧼯"),
- (0x2F9D9, "M", "𠠄"),
- (0x2F9DA, "M", "跋"),
- (0x2F9DB, "M", "趼"),
- (0x2F9DC, "M", "跰"),
- (0x2F9DD, "M", "𠣞"),
- (0x2F9DE, "M", "軔"),
- (0x2F9DF, "M", "輸"),
- (0x2F9E0, "M", "𨗒"),
- (0x2F9E1, "M", "𨗭"),
- (0x2F9E2, "M", "邔"),
- (0x2F9E3, "M", "郱"),
- (0x2F9E4, "M", "鄑"),
- (0x2F9E5, "M", "𨜮"),
- (0x2F9E6, "M", "鄛"),
- (0x2F9E7, "M", "鈸"),
- (0x2F9E8, "M", "鋗"),
- (0x2F9E9, "M", "鋘"),
- (0x2F9EA, "M", "鉼"),
- (0x2F9EB, "M", "鏹"),
- (0x2F9EC, "M", "鐕"),
- (0x2F9ED, "M", "𨯺"),
- (0x2F9EE, "M", "開"),
- (0x2F9EF, "M", "䦕"),
- (0x2F9F0, "M", "閷"),
- (0x2F9F1, "M", "𨵷"),
- (0x2F9F2, "M", "䧦"),
- (0x2F9F3, "M", "雃"),
- (0x2F9F4, "M", "嶲"),
- (0x2F9F5, "M", "霣"),
- (0x2F9F6, "M", "𩅅"),
- (0x2F9F7, "M", "𩈚"),
- (0x2F9F8, "M", "䩮"),
- (0x2F9F9, "M", "䩶"),
- (0x2F9FA, "M", "韠"),
- (0x2F9FB, "M", "𩐊"),
- (0x2F9FC, "M", "䪲"),
- (0x2F9FD, "M", "𩒖"),
- (0x2F9FE, "M", "頋"),
- (0x2FA00, "M", "頩"),
- (0x2FA01, "M", "𩖶"),
- (0x2FA02, "M", "飢"),
- (0x2FA03, "M", "䬳"),
- (0x2FA04, "M", "餩"),
- (0x2FA05, "M", "馧"),
- (0x2FA06, "M", "駂"),
- (0x2FA07, "M", "駾"),
- (0x2FA08, "M", "䯎"),
- (0x2FA09, "M", "𩬰"),
- (0x2FA0A, "M", "鬒"),
- (0x2FA0B, "M", "鱀"),
- (0x2FA0C, "M", "鳽"),
- (0x2FA0D, "M", "䳎"),
- (0x2FA0E, "M", "䳭"),
- (0x2FA0F, "M", "鵧"),
- (0x2FA10, "M", "𪃎"),
- (0x2FA11, "M", "䳸"),
- (0x2FA12, "M", "𪄅"),
- (0x2FA13, "M", "𪈎"),
- (0x2FA14, "M", "𪊑"),
- (0x2FA15, "M", "麻"),
- (0x2FA16, "M", "䵖"),
- (0x2FA17, "M", "黹"),
- (0x2FA18, "M", "黾"),
- (0x2FA19, "M", "鼅"),
- (0x2FA1A, "M", "鼏"),
- (0x2FA1B, "M", "鼖"),
- (0x2FA1C, "M", "鼻"),
- (0x2FA1D, "M", "𪘀"),
- (0x2FA1E, "X"),
- (0x30000, "V"),
- (0x3134B, "X"),
- (0x31350, "V"),
- (0x3347A, "X"),
- (0xE0100, "I"),
- (0xE01F0, "X"),
+uts46_starts: "array[int]" = array(
+ "I",
+ (
+ 0x0,
+ 0x1,
+ 0x2,
+ 0x3,
+ 0x4,
+ 0x5,
+ 0x6,
+ 0x7,
+ 0x8,
+ 0x9,
+ 0xA,
+ 0xB,
+ 0xC,
+ 0xD,
+ 0xE,
+ 0xF,
+ 0x10,
+ 0x11,
+ 0x12,
+ 0x13,
+ 0x14,
+ 0x15,
+ 0x16,
+ 0x17,
+ 0x18,
+ 0x19,
+ 0x1A,
+ 0x1B,
+ 0x1C,
+ 0x1D,
+ 0x1E,
+ 0x1F,
+ 0x20,
+ 0x21,
+ 0x22,
+ 0x23,
+ 0x24,
+ 0x25,
+ 0x26,
+ 0x27,
+ 0x28,
+ 0x29,
+ 0x2A,
+ 0x2B,
+ 0x2C,
+ 0x2D,
+ 0x2E,
+ 0x2F,
+ 0x30,
+ 0x31,
+ 0x32,
+ 0x33,
+ 0x34,
+ 0x35,
+ 0x36,
+ 0x37,
+ 0x38,
+ 0x39,
+ 0x3A,
+ 0x3B,
+ 0x3C,
+ 0x3D,
+ 0x3E,
+ 0x3F,
+ 0x40,
+ 0x41,
+ 0x42,
+ 0x43,
+ 0x44,
+ 0x45,
+ 0x46,
+ 0x47,
+ 0x48,
+ 0x49,
+ 0x4A,
+ 0x4B,
+ 0x4C,
+ 0x4D,
+ 0x4E,
+ 0x4F,
+ 0x50,
+ 0x51,
+ 0x52,
+ 0x53,
+ 0x54,
+ 0x55,
+ 0x56,
+ 0x57,
+ 0x58,
+ 0x59,
+ 0x5A,
+ 0x5B,
+ 0x5C,
+ 0x5D,
+ 0x5E,
+ 0x5F,
+ 0x60,
+ 0x61,
+ 0x62,
+ 0x63,
+ 0x64,
+ 0x65,
+ 0x66,
+ 0x67,
+ 0x68,
+ 0x69,
+ 0x6A,
+ 0x6B,
+ 0x6C,
+ 0x6D,
+ 0x6E,
+ 0x6F,
+ 0x70,
+ 0x71,
+ 0x72,
+ 0x73,
+ 0x74,
+ 0x75,
+ 0x76,
+ 0x77,
+ 0x78,
+ 0x79,
+ 0x7A,
+ 0x7B,
+ 0x7C,
+ 0x7D,
+ 0x7E,
+ 0x7F,
+ 0x80,
+ 0x81,
+ 0x82,
+ 0x83,
+ 0x84,
+ 0x85,
+ 0x86,
+ 0x87,
+ 0x88,
+ 0x89,
+ 0x8A,
+ 0x8B,
+ 0x8C,
+ 0x8D,
+ 0x8E,
+ 0x8F,
+ 0x90,
+ 0x91,
+ 0x92,
+ 0x93,
+ 0x94,
+ 0x95,
+ 0x96,
+ 0x97,
+ 0x98,
+ 0x99,
+ 0x9A,
+ 0x9B,
+ 0x9C,
+ 0x9D,
+ 0x9E,
+ 0x9F,
+ 0xA0,
+ 0xA1,
+ 0xA2,
+ 0xA3,
+ 0xA4,
+ 0xA5,
+ 0xA6,
+ 0xA7,
+ 0xA8,
+ 0xA9,
+ 0xAA,
+ 0xAB,
+ 0xAC,
+ 0xAD,
+ 0xAE,
+ 0xAF,
+ 0xB0,
+ 0xB1,
+ 0xB2,
+ 0xB3,
+ 0xB4,
+ 0xB5,
+ 0xB6,
+ 0xB7,
+ 0xB8,
+ 0xB9,
+ 0xBA,
+ 0xBB,
+ 0xBC,
+ 0xBD,
+ 0xBE,
+ 0xBF,
+ 0xC0,
+ 0xC1,
+ 0xC2,
+ 0xC3,
+ 0xC4,
+ 0xC5,
+ 0xC6,
+ 0xC7,
+ 0xC8,
+ 0xC9,
+ 0xCA,
+ 0xCB,
+ 0xCC,
+ 0xCD,
+ 0xCE,
+ 0xCF,
+ 0xD0,
+ 0xD1,
+ 0xD2,
+ 0xD3,
+ 0xD4,
+ 0xD5,
+ 0xD6,
+ 0xD7,
+ 0xD8,
+ 0xD9,
+ 0xDA,
+ 0xDB,
+ 0xDC,
+ 0xDD,
+ 0xDE,
+ 0xDF,
+ 0xE0,
+ 0xE1,
+ 0xE2,
+ 0xE3,
+ 0xE4,
+ 0xE5,
+ 0xE6,
+ 0xE7,
+ 0xE8,
+ 0xE9,
+ 0xEA,
+ 0xEB,
+ 0xEC,
+ 0xED,
+ 0xEE,
+ 0xEF,
+ 0xF0,
+ 0xF1,
+ 0xF2,
+ 0xF3,
+ 0xF4,
+ 0xF5,
+ 0xF6,
+ 0xF7,
+ 0xF8,
+ 0xF9,
+ 0xFA,
+ 0xFB,
+ 0xFC,
+ 0xFD,
+ 0xFE,
+ 0xFF,
+ 0x100,
+ 0x101,
+ 0x102,
+ 0x103,
+ 0x104,
+ 0x105,
+ 0x106,
+ 0x107,
+ 0x108,
+ 0x109,
+ 0x10A,
+ 0x10B,
+ 0x10C,
+ 0x10D,
+ 0x10E,
+ 0x10F,
+ 0x110,
+ 0x111,
+ 0x112,
+ 0x113,
+ 0x114,
+ 0x115,
+ 0x116,
+ 0x117,
+ 0x118,
+ 0x119,
+ 0x11A,
+ 0x11B,
+ 0x11C,
+ 0x11D,
+ 0x11E,
+ 0x11F,
+ 0x120,
+ 0x121,
+ 0x122,
+ 0x123,
+ 0x124,
+ 0x125,
+ 0x126,
+ 0x127,
+ 0x128,
+ 0x129,
+ 0x12A,
+ 0x12B,
+ 0x12C,
+ 0x12D,
+ 0x12E,
+ 0x12F,
+ 0x130,
+ 0x131,
+ 0x132,
+ 0x134,
+ 0x135,
+ 0x136,
+ 0x137,
+ 0x139,
+ 0x13A,
+ 0x13B,
+ 0x13C,
+ 0x13D,
+ 0x13E,
+ 0x13F,
+ 0x141,
+ 0x142,
+ 0x143,
+ 0x144,
+ 0x145,
+ 0x146,
+ 0x147,
+ 0x148,
+ 0x149,
+ 0x14A,
+ 0x14B,
+ 0x14C,
+ 0x14D,
+ 0x14E,
+ 0x14F,
+ 0x150,
+ 0x151,
+ 0x152,
+ 0x153,
+ 0x154,
+ 0x155,
+ 0x156,
+ 0x157,
+ 0x158,
+ 0x159,
+ 0x15A,
+ 0x15B,
+ 0x15C,
+ 0x15D,
+ 0x15E,
+ 0x15F,
+ 0x160,
+ 0x161,
+ 0x162,
+ 0x163,
+ 0x164,
+ 0x165,
+ 0x166,
+ 0x167,
+ 0x168,
+ 0x169,
+ 0x16A,
+ 0x16B,
+ 0x16C,
+ 0x16D,
+ 0x16E,
+ 0x16F,
+ 0x170,
+ 0x171,
+ 0x172,
+ 0x173,
+ 0x174,
+ 0x175,
+ 0x176,
+ 0x177,
+ 0x178,
+ 0x179,
+ 0x17A,
+ 0x17B,
+ 0x17C,
+ 0x17D,
+ 0x17E,
+ 0x17F,
+ 0x180,
+ 0x181,
+ 0x182,
+ 0x183,
+ 0x184,
+ 0x185,
+ 0x186,
+ 0x187,
+ 0x188,
+ 0x189,
+ 0x18A,
+ 0x18B,
+ 0x18C,
+ 0x18E,
+ 0x18F,
+ 0x190,
+ 0x191,
+ 0x192,
+ 0x193,
+ 0x194,
+ 0x195,
+ 0x196,
+ 0x197,
+ 0x198,
+ 0x199,
+ 0x19C,
+ 0x19D,
+ 0x19E,
+ 0x19F,
+ 0x1A0,
+ 0x1A1,
+ 0x1A2,
+ 0x1A3,
+ 0x1A4,
+ 0x1A5,
+ 0x1A6,
+ 0x1A7,
+ 0x1A8,
+ 0x1A9,
+ 0x1AA,
+ 0x1AC,
+ 0x1AD,
+ 0x1AE,
+ 0x1AF,
+ 0x1B0,
+ 0x1B1,
+ 0x1B2,
+ 0x1B3,
+ 0x1B4,
+ 0x1B5,
+ 0x1B6,
+ 0x1B7,
+ 0x1B8,
+ 0x1B9,
+ 0x1BC,
+ 0x1BD,
+ 0x1C4,
+ 0x1C7,
+ 0x1CA,
+ 0x1CD,
+ 0x1CE,
+ 0x1CF,
+ 0x1D0,
+ 0x1D1,
+ 0x1D2,
+ 0x1D3,
+ 0x1D4,
+ 0x1D5,
+ 0x1D6,
+ 0x1D7,
+ 0x1D8,
+ 0x1D9,
+ 0x1DA,
+ 0x1DB,
+ 0x1DC,
+ 0x1DE,
+ 0x1DF,
+ 0x1E0,
+ 0x1E1,
+ 0x1E2,
+ 0x1E3,
+ 0x1E4,
+ 0x1E5,
+ 0x1E6,
+ 0x1E7,
+ 0x1E8,
+ 0x1E9,
+ 0x1EA,
+ 0x1EB,
+ 0x1EC,
+ 0x1ED,
+ 0x1EE,
+ 0x1EF,
+ 0x1F1,
+ 0x1F4,
+ 0x1F5,
+ 0x1F6,
+ 0x1F7,
+ 0x1F8,
+ 0x1F9,
+ 0x1FA,
+ 0x1FB,
+ 0x1FC,
+ 0x1FD,
+ 0x1FE,
+ 0x1FF,
+ 0x200,
+ 0x201,
+ 0x202,
+ 0x203,
+ 0x204,
+ 0x205,
+ 0x206,
+ 0x207,
+ 0x208,
+ 0x209,
+ 0x20A,
+ 0x20B,
+ 0x20C,
+ 0x20D,
+ 0x20E,
+ 0x20F,
+ 0x210,
+ 0x211,
+ 0x212,
+ 0x213,
+ 0x214,
+ 0x215,
+ 0x216,
+ 0x217,
+ 0x218,
+ 0x219,
+ 0x21A,
+ 0x21B,
+ 0x21C,
+ 0x21D,
+ 0x21E,
+ 0x21F,
+ 0x220,
+ 0x221,
+ 0x222,
+ 0x223,
+ 0x224,
+ 0x225,
+ 0x226,
+ 0x227,
+ 0x228,
+ 0x229,
+ 0x22A,
+ 0x22B,
+ 0x22C,
+ 0x22D,
+ 0x22E,
+ 0x22F,
+ 0x230,
+ 0x231,
+ 0x232,
+ 0x233,
+ 0x23A,
+ 0x23B,
+ 0x23C,
+ 0x23D,
+ 0x23E,
+ 0x23F,
+ 0x241,
+ 0x242,
+ 0x243,
+ 0x244,
+ 0x245,
+ 0x246,
+ 0x247,
+ 0x248,
+ 0x249,
+ 0x24A,
+ 0x24B,
+ 0x24C,
+ 0x24D,
+ 0x24E,
+ 0x24F,
+ 0x2B0,
+ 0x2B1,
+ 0x2B2,
+ 0x2B3,
+ 0x2B4,
+ 0x2B5,
+ 0x2B6,
+ 0x2B7,
+ 0x2B8,
+ 0x2B9,
+ 0x2D8,
+ 0x2D9,
+ 0x2DA,
+ 0x2DB,
+ 0x2DC,
+ 0x2DD,
+ 0x2DE,
+ 0x2E0,
+ 0x2E1,
+ 0x2E2,
+ 0x2E3,
+ 0x2E4,
+ 0x2E5,
+ 0x340,
+ 0x341,
+ 0x342,
+ 0x343,
+ 0x344,
+ 0x345,
+ 0x346,
+ 0x34F,
+ 0x350,
+ 0x370,
+ 0x371,
+ 0x372,
+ 0x373,
+ 0x374,
+ 0x375,
+ 0x376,
+ 0x377,
+ 0x378,
+ 0x37A,
+ 0x37B,
+ 0x37E,
+ 0x37F,
+ 0x380,
+ 0x384,
+ 0x385,
+ 0x386,
+ 0x387,
+ 0x388,
+ 0x389,
+ 0x38A,
+ 0x38B,
+ 0x38C,
+ 0x38D,
+ 0x38E,
+ 0x38F,
+ 0x390,
+ 0x391,
+ 0x392,
+ 0x393,
+ 0x394,
+ 0x395,
+ 0x396,
+ 0x397,
+ 0x398,
+ 0x399,
+ 0x39A,
+ 0x39B,
+ 0x39C,
+ 0x39D,
+ 0x39E,
+ 0x39F,
+ 0x3A0,
+ 0x3A1,
+ 0x3A2,
+ 0x3A3,
+ 0x3A4,
+ 0x3A5,
+ 0x3A6,
+ 0x3A7,
+ 0x3A8,
+ 0x3A9,
+ 0x3AA,
+ 0x3AB,
+ 0x3AC,
+ 0x3C2,
+ 0x3C3,
+ 0x3CF,
+ 0x3D0,
+ 0x3D1,
+ 0x3D2,
+ 0x3D3,
+ 0x3D4,
+ 0x3D5,
+ 0x3D6,
+ 0x3D7,
+ 0x3D8,
+ 0x3D9,
+ 0x3DA,
+ 0x3DB,
+ 0x3DC,
+ 0x3DD,
+ 0x3DE,
+ 0x3DF,
+ 0x3E0,
+ 0x3E1,
+ 0x3E2,
+ 0x3E3,
+ 0x3E4,
+ 0x3E5,
+ 0x3E6,
+ 0x3E7,
+ 0x3E8,
+ 0x3E9,
+ 0x3EA,
+ 0x3EB,
+ 0x3EC,
+ 0x3ED,
+ 0x3EE,
+ 0x3EF,
+ 0x3F0,
+ 0x3F1,
+ 0x3F2,
+ 0x3F3,
+ 0x3F4,
+ 0x3F5,
+ 0x3F6,
+ 0x3F7,
+ 0x3F8,
+ 0x3F9,
+ 0x3FA,
+ 0x3FB,
+ 0x3FD,
+ 0x3FE,
+ 0x3FF,
+ 0x400,
+ 0x401,
+ 0x402,
+ 0x403,
+ 0x404,
+ 0x405,
+ 0x406,
+ 0x407,
+ 0x408,
+ 0x409,
+ 0x40A,
+ 0x40B,
+ 0x40C,
+ 0x40D,
+ 0x40E,
+ 0x40F,
+ 0x410,
+ 0x411,
+ 0x412,
+ 0x413,
+ 0x414,
+ 0x415,
+ 0x416,
+ 0x417,
+ 0x418,
+ 0x419,
+ 0x41A,
+ 0x41B,
+ 0x41C,
+ 0x41D,
+ 0x41E,
+ 0x41F,
+ 0x420,
+ 0x421,
+ 0x422,
+ 0x423,
+ 0x424,
+ 0x425,
+ 0x426,
+ 0x427,
+ 0x428,
+ 0x429,
+ 0x42A,
+ 0x42B,
+ 0x42C,
+ 0x42D,
+ 0x42E,
+ 0x42F,
+ 0x430,
+ 0x460,
+ 0x461,
+ 0x462,
+ 0x463,
+ 0x464,
+ 0x465,
+ 0x466,
+ 0x467,
+ 0x468,
+ 0x469,
+ 0x46A,
+ 0x46B,
+ 0x46C,
+ 0x46D,
+ 0x46E,
+ 0x46F,
+ 0x470,
+ 0x471,
+ 0x472,
+ 0x473,
+ 0x474,
+ 0x475,
+ 0x476,
+ 0x477,
+ 0x478,
+ 0x479,
+ 0x47A,
+ 0x47B,
+ 0x47C,
+ 0x47D,
+ 0x47E,
+ 0x47F,
+ 0x480,
+ 0x481,
+ 0x48A,
+ 0x48B,
+ 0x48C,
+ 0x48D,
+ 0x48E,
+ 0x48F,
+ 0x490,
+ 0x491,
+ 0x492,
+ 0x493,
+ 0x494,
+ 0x495,
+ 0x496,
+ 0x497,
+ 0x498,
+ 0x499,
+ 0x49A,
+ 0x49B,
+ 0x49C,
+ 0x49D,
+ 0x49E,
+ 0x49F,
+ 0x4A0,
+ 0x4A1,
+ 0x4A2,
+ 0x4A3,
+ 0x4A4,
+ 0x4A5,
+ 0x4A6,
+ 0x4A7,
+ 0x4A8,
+ 0x4A9,
+ 0x4AA,
+ 0x4AB,
+ 0x4AC,
+ 0x4AD,
+ 0x4AE,
+ 0x4AF,
+ 0x4B0,
+ 0x4B1,
+ 0x4B2,
+ 0x4B3,
+ 0x4B4,
+ 0x4B5,
+ 0x4B6,
+ 0x4B7,
+ 0x4B8,
+ 0x4B9,
+ 0x4BA,
+ 0x4BB,
+ 0x4BC,
+ 0x4BD,
+ 0x4BE,
+ 0x4BF,
+ 0x4C0,
+ 0x4C1,
+ 0x4C2,
+ 0x4C3,
+ 0x4C4,
+ 0x4C5,
+ 0x4C6,
+ 0x4C7,
+ 0x4C8,
+ 0x4C9,
+ 0x4CA,
+ 0x4CB,
+ 0x4CC,
+ 0x4CD,
+ 0x4CE,
+ 0x4D0,
+ 0x4D1,
+ 0x4D2,
+ 0x4D3,
+ 0x4D4,
+ 0x4D5,
+ 0x4D6,
+ 0x4D7,
+ 0x4D8,
+ 0x4D9,
+ 0x4DA,
+ 0x4DB,
+ 0x4DC,
+ 0x4DD,
+ 0x4DE,
+ 0x4DF,
+ 0x4E0,
+ 0x4E1,
+ 0x4E2,
+ 0x4E3,
+ 0x4E4,
+ 0x4E5,
+ 0x4E6,
+ 0x4E7,
+ 0x4E8,
+ 0x4E9,
+ 0x4EA,
+ 0x4EB,
+ 0x4EC,
+ 0x4ED,
+ 0x4EE,
+ 0x4EF,
+ 0x4F0,
+ 0x4F1,
+ 0x4F2,
+ 0x4F3,
+ 0x4F4,
+ 0x4F5,
+ 0x4F6,
+ 0x4F7,
+ 0x4F8,
+ 0x4F9,
+ 0x4FA,
+ 0x4FB,
+ 0x4FC,
+ 0x4FD,
+ 0x4FE,
+ 0x4FF,
+ 0x500,
+ 0x501,
+ 0x502,
+ 0x503,
+ 0x504,
+ 0x505,
+ 0x506,
+ 0x507,
+ 0x508,
+ 0x509,
+ 0x50A,
+ 0x50B,
+ 0x50C,
+ 0x50D,
+ 0x50E,
+ 0x50F,
+ 0x510,
+ 0x511,
+ 0x512,
+ 0x513,
+ 0x514,
+ 0x515,
+ 0x516,
+ 0x517,
+ 0x518,
+ 0x519,
+ 0x51A,
+ 0x51B,
+ 0x51C,
+ 0x51D,
+ 0x51E,
+ 0x51F,
+ 0x520,
+ 0x521,
+ 0x522,
+ 0x523,
+ 0x524,
+ 0x525,
+ 0x526,
+ 0x527,
+ 0x528,
+ 0x529,
+ 0x52A,
+ 0x52B,
+ 0x52C,
+ 0x52D,
+ 0x52E,
+ 0x52F,
+ 0x530,
+ 0x531,
+ 0x532,
+ 0x533,
+ 0x534,
+ 0x535,
+ 0x536,
+ 0x537,
+ 0x538,
+ 0x539,
+ 0x53A,
+ 0x53B,
+ 0x53C,
+ 0x53D,
+ 0x53E,
+ 0x53F,
+ 0x540,
+ 0x541,
+ 0x542,
+ 0x543,
+ 0x544,
+ 0x545,
+ 0x546,
+ 0x547,
+ 0x548,
+ 0x549,
+ 0x54A,
+ 0x54B,
+ 0x54C,
+ 0x54D,
+ 0x54E,
+ 0x54F,
+ 0x550,
+ 0x551,
+ 0x552,
+ 0x553,
+ 0x554,
+ 0x555,
+ 0x556,
+ 0x557,
+ 0x559,
+ 0x587,
+ 0x588,
+ 0x58B,
+ 0x58D,
+ 0x590,
+ 0x591,
+ 0x5C8,
+ 0x5D0,
+ 0x5EB,
+ 0x5EF,
+ 0x5F5,
+ 0x606,
+ 0x61C,
+ 0x61D,
+ 0x675,
+ 0x676,
+ 0x677,
+ 0x678,
+ 0x679,
+ 0x6DD,
+ 0x6DE,
+ 0x70E,
+ 0x710,
+ 0x74B,
+ 0x74D,
+ 0x7B2,
+ 0x7C0,
+ 0x7FB,
+ 0x7FD,
+ 0x82E,
+ 0x830,
+ 0x83F,
+ 0x840,
+ 0x85C,
+ 0x85E,
+ 0x85F,
+ 0x860,
+ 0x86B,
+ 0x870,
+ 0x890,
+ 0x897,
+ 0x8E2,
+ 0x8E3,
+ 0x958,
+ 0x959,
+ 0x95A,
+ 0x95B,
+ 0x95C,
+ 0x95D,
+ 0x95E,
+ 0x95F,
+ 0x960,
+ 0x984,
+ 0x985,
+ 0x98D,
+ 0x98F,
+ 0x991,
+ 0x993,
+ 0x9A9,
+ 0x9AA,
+ 0x9B1,
+ 0x9B2,
+ 0x9B3,
+ 0x9B6,
+ 0x9BA,
+ 0x9BC,
+ 0x9C5,
+ 0x9C7,
+ 0x9C9,
+ 0x9CB,
+ 0x9CF,
+ 0x9D7,
+ 0x9D8,
+ 0x9DC,
+ 0x9DD,
+ 0x9DE,
+ 0x9DF,
+ 0x9E0,
+ 0x9E4,
+ 0x9E6,
+ 0x9FF,
+ 0xA01,
+ 0xA04,
+ 0xA05,
+ 0xA0B,
+ 0xA0F,
+ 0xA11,
+ 0xA13,
+ 0xA29,
+ 0xA2A,
+ 0xA31,
+ 0xA32,
+ 0xA33,
+ 0xA34,
+ 0xA35,
+ 0xA36,
+ 0xA37,
+ 0xA38,
+ 0xA3A,
+ 0xA3C,
+ 0xA3D,
+ 0xA3E,
+ 0xA43,
+ 0xA47,
+ 0xA49,
+ 0xA4B,
+ 0xA4E,
+ 0xA51,
+ 0xA52,
+ 0xA59,
+ 0xA5A,
+ 0xA5B,
+ 0xA5C,
+ 0xA5D,
+ 0xA5E,
+ 0xA5F,
+ 0xA66,
+ 0xA77,
+ 0xA81,
+ 0xA84,
+ 0xA85,
+ 0xA8E,
+ 0xA8F,
+ 0xA92,
+ 0xA93,
+ 0xAA9,
+ 0xAAA,
+ 0xAB1,
+ 0xAB2,
+ 0xAB4,
+ 0xAB5,
+ 0xABA,
+ 0xABC,
+ 0xAC6,
+ 0xAC7,
+ 0xACA,
+ 0xACB,
+ 0xACE,
+ 0xAD0,
+ 0xAD1,
+ 0xAE0,
+ 0xAE4,
+ 0xAE6,
+ 0xAF2,
+ 0xAF9,
+ 0xB00,
+ 0xB01,
+ 0xB04,
+ 0xB05,
+ 0xB0D,
+ 0xB0F,
+ 0xB11,
+ 0xB13,
+ 0xB29,
+ 0xB2A,
+ 0xB31,
+ 0xB32,
+ 0xB34,
+ 0xB35,
+ 0xB3A,
+ 0xB3C,
+ 0xB45,
+ 0xB47,
+ 0xB49,
+ 0xB4B,
+ 0xB4E,
+ 0xB55,
+ 0xB58,
+ 0xB5C,
+ 0xB5D,
+ 0xB5E,
+ 0xB5F,
+ 0xB64,
+ 0xB66,
+ 0xB78,
+ 0xB82,
+ 0xB84,
+ 0xB85,
+ 0xB8B,
+ 0xB8E,
+ 0xB91,
+ 0xB92,
+ 0xB96,
+ 0xB99,
+ 0xB9B,
+ 0xB9C,
+ 0xB9D,
+ 0xB9E,
+ 0xBA0,
+ 0xBA3,
+ 0xBA5,
+ 0xBA8,
+ 0xBAB,
+ 0xBAE,
+ 0xBBA,
+ 0xBBE,
+ 0xBC3,
+ 0xBC6,
+ 0xBC9,
+ 0xBCA,
+ 0xBCE,
+ 0xBD0,
+ 0xBD1,
+ 0xBD7,
+ 0xBD8,
+ 0xBE6,
+ 0xBFB,
+ 0xC00,
+ 0xC0D,
+ 0xC0E,
+ 0xC11,
+ 0xC12,
+ 0xC29,
+ 0xC2A,
+ 0xC3A,
+ 0xC3C,
+ 0xC45,
+ 0xC46,
+ 0xC49,
+ 0xC4A,
+ 0xC4E,
+ 0xC55,
+ 0xC57,
+ 0xC58,
+ 0xC5B,
+ 0xC5C,
+ 0xC5E,
+ 0xC60,
+ 0xC64,
+ 0xC66,
+ 0xC70,
+ 0xC77,
+ 0xC8D,
+ 0xC8E,
+ 0xC91,
+ 0xC92,
+ 0xCA9,
+ 0xCAA,
+ 0xCB4,
+ 0xCB5,
+ 0xCBA,
+ 0xCBC,
+ 0xCC5,
+ 0xCC6,
+ 0xCC9,
+ 0xCCA,
+ 0xCCE,
+ 0xCD5,
+ 0xCD7,
+ 0xCDC,
+ 0xCDF,
+ 0xCE0,
+ 0xCE4,
+ 0xCE6,
+ 0xCF0,
+ 0xCF1,
+ 0xCF4,
+ 0xD00,
+ 0xD0D,
+ 0xD0E,
+ 0xD11,
+ 0xD12,
+ 0xD45,
+ 0xD46,
+ 0xD49,
+ 0xD4A,
+ 0xD50,
+ 0xD54,
+ 0xD64,
+ 0xD66,
+ 0xD80,
+ 0xD81,
+ 0xD84,
+ 0xD85,
+ 0xD97,
+ 0xD9A,
+ 0xDB2,
+ 0xDB3,
+ 0xDBC,
+ 0xDBD,
+ 0xDBE,
+ 0xDC0,
+ 0xDC7,
+ 0xDCA,
+ 0xDCB,
+ 0xDCF,
+ 0xDD5,
+ 0xDD6,
+ 0xDD7,
+ 0xDD8,
+ 0xDE0,
+ 0xDE6,
+ 0xDF0,
+ 0xDF2,
+ 0xDF5,
+ 0xE01,
+ 0xE33,
+ 0xE34,
+ 0xE3B,
+ 0xE3F,
+ 0xE5C,
+ 0xE81,
+ 0xE83,
+ 0xE84,
+ 0xE85,
+ 0xE86,
+ 0xE8B,
+ 0xE8C,
+ 0xEA4,
+ 0xEA5,
+ 0xEA6,
+ 0xEA7,
+ 0xEB3,
+ 0xEB4,
+ 0xEBE,
+ 0xEC0,
+ 0xEC5,
+ 0xEC6,
+ 0xEC7,
+ 0xEC8,
+ 0xECF,
+ 0xED0,
+ 0xEDA,
+ 0xEDC,
+ 0xEDD,
+ 0xEDE,
+ 0xEE0,
+ 0xF00,
+ 0xF0C,
+ 0xF0D,
+ 0xF43,
+ 0xF44,
+ 0xF48,
+ 0xF49,
+ 0xF4D,
+ 0xF4E,
+ 0xF52,
+ 0xF53,
+ 0xF57,
+ 0xF58,
+ 0xF5C,
+ 0xF5D,
+ 0xF69,
+ 0xF6A,
+ 0xF6D,
+ 0xF71,
+ 0xF73,
+ 0xF74,
+ 0xF75,
+ 0xF76,
+ 0xF77,
+ 0xF78,
+ 0xF79,
+ 0xF7A,
+ 0xF81,
+ 0xF82,
+ 0xF93,
+ 0xF94,
+ 0xF98,
+ 0xF99,
+ 0xF9D,
+ 0xF9E,
+ 0xFA2,
+ 0xFA3,
+ 0xFA7,
+ 0xFA8,
+ 0xFAC,
+ 0xFAD,
+ 0xFB9,
+ 0xFBA,
+ 0xFBD,
+ 0xFBE,
+ 0xFCD,
+ 0xFCE,
+ 0xFDB,
+ 0x1000,
+ 0x10A0,
+ 0x10A1,
+ 0x10A2,
+ 0x10A3,
+ 0x10A4,
+ 0x10A5,
+ 0x10A6,
+ 0x10A7,
+ 0x10A8,
+ 0x10A9,
+ 0x10AA,
+ 0x10AB,
+ 0x10AC,
+ 0x10AD,
+ 0x10AE,
+ 0x10AF,
+ 0x10B0,
+ 0x10B1,
+ 0x10B2,
+ 0x10B3,
+ 0x10B4,
+ 0x10B5,
+ 0x10B6,
+ 0x10B7,
+ 0x10B8,
+ 0x10B9,
+ 0x10BA,
+ 0x10BB,
+ 0x10BC,
+ 0x10BD,
+ 0x10BE,
+ 0x10BF,
+ 0x10C0,
+ 0x10C1,
+ 0x10C2,
+ 0x10C3,
+ 0x10C4,
+ 0x10C5,
+ 0x10C6,
+ 0x10C7,
+ 0x10C8,
+ 0x10CD,
+ 0x10CE,
+ 0x10D0,
+ 0x10FC,
+ 0x10FD,
+ 0x115F,
+ 0x1161,
+ 0x1249,
+ 0x124A,
+ 0x124E,
+ 0x1250,
+ 0x1257,
+ 0x1258,
+ 0x1259,
+ 0x125A,
+ 0x125E,
+ 0x1260,
+ 0x1289,
+ 0x128A,
+ 0x128E,
+ 0x1290,
+ 0x12B1,
+ 0x12B2,
+ 0x12B6,
+ 0x12B8,
+ 0x12BF,
+ 0x12C0,
+ 0x12C1,
+ 0x12C2,
+ 0x12C6,
+ 0x12C8,
+ 0x12D7,
+ 0x12D8,
+ 0x1311,
+ 0x1312,
+ 0x1316,
+ 0x1318,
+ 0x135B,
+ 0x135D,
+ 0x137D,
+ 0x1380,
+ 0x139A,
+ 0x13A0,
+ 0x13F6,
+ 0x13F8,
+ 0x13F9,
+ 0x13FA,
+ 0x13FB,
+ 0x13FC,
+ 0x13FD,
+ 0x13FE,
+ 0x1400,
+ 0x1680,
+ 0x1681,
+ 0x169D,
+ 0x16A0,
+ 0x16F9,
+ 0x1700,
+ 0x1716,
+ 0x171F,
+ 0x1737,
+ 0x1740,
+ 0x1754,
+ 0x1760,
+ 0x176D,
+ 0x176E,
+ 0x1771,
+ 0x1772,
+ 0x1774,
+ 0x1780,
+ 0x17B4,
+ 0x17B6,
+ 0x17DE,
+ 0x17E0,
+ 0x17EA,
+ 0x17F0,
+ 0x17FA,
+ 0x1800,
+ 0x180B,
+ 0x1810,
+ 0x181A,
+ 0x1820,
+ 0x1879,
+ 0x1880,
+ 0x18AB,
+ 0x18B0,
+ 0x18F6,
+ 0x1900,
+ 0x191F,
+ 0x1920,
+ 0x192C,
+ 0x1930,
+ 0x193C,
+ 0x1940,
+ 0x1941,
+ 0x1944,
+ 0x196E,
+ 0x1970,
+ 0x1975,
+ 0x1980,
+ 0x19AC,
+ 0x19B0,
+ 0x19CA,
+ 0x19D0,
+ 0x19DB,
+ 0x19DE,
+ 0x1A1C,
+ 0x1A1E,
+ 0x1A5F,
+ 0x1A60,
+ 0x1A7D,
+ 0x1A7F,
+ 0x1A8A,
+ 0x1A90,
+ 0x1A9A,
+ 0x1AA0,
+ 0x1AAE,
+ 0x1AB0,
+ 0x1ADE,
+ 0x1AE0,
+ 0x1AEC,
+ 0x1B00,
+ 0x1B4D,
+ 0x1B4E,
+ 0x1BF4,
+ 0x1BFC,
+ 0x1C38,
+ 0x1C3B,
+ 0x1C4A,
+ 0x1C4D,
+ 0x1C80,
+ 0x1C81,
+ 0x1C82,
+ 0x1C83,
+ 0x1C84,
+ 0x1C86,
+ 0x1C87,
+ 0x1C88,
+ 0x1C89,
+ 0x1C8A,
+ 0x1C8B,
+ 0x1C90,
+ 0x1C91,
+ 0x1C92,
+ 0x1C93,
+ 0x1C94,
+ 0x1C95,
+ 0x1C96,
+ 0x1C97,
+ 0x1C98,
+ 0x1C99,
+ 0x1C9A,
+ 0x1C9B,
+ 0x1C9C,
+ 0x1C9D,
+ 0x1C9E,
+ 0x1C9F,
+ 0x1CA0,
+ 0x1CA1,
+ 0x1CA2,
+ 0x1CA3,
+ 0x1CA4,
+ 0x1CA5,
+ 0x1CA6,
+ 0x1CA7,
+ 0x1CA8,
+ 0x1CA9,
+ 0x1CAA,
+ 0x1CAB,
+ 0x1CAC,
+ 0x1CAD,
+ 0x1CAE,
+ 0x1CAF,
+ 0x1CB0,
+ 0x1CB1,
+ 0x1CB2,
+ 0x1CB3,
+ 0x1CB4,
+ 0x1CB5,
+ 0x1CB6,
+ 0x1CB7,
+ 0x1CB8,
+ 0x1CB9,
+ 0x1CBA,
+ 0x1CBB,
+ 0x1CBD,
+ 0x1CBE,
+ 0x1CBF,
+ 0x1CC0,
+ 0x1CC8,
+ 0x1CD0,
+ 0x1CFB,
+ 0x1D00,
+ 0x1D2C,
+ 0x1D2D,
+ 0x1D2E,
+ 0x1D2F,
+ 0x1D30,
+ 0x1D31,
+ 0x1D32,
+ 0x1D33,
+ 0x1D34,
+ 0x1D35,
+ 0x1D36,
+ 0x1D37,
+ 0x1D38,
+ 0x1D39,
+ 0x1D3A,
+ 0x1D3B,
+ 0x1D3C,
+ 0x1D3D,
+ 0x1D3E,
+ 0x1D3F,
+ 0x1D40,
+ 0x1D41,
+ 0x1D42,
+ 0x1D43,
+ 0x1D44,
+ 0x1D45,
+ 0x1D46,
+ 0x1D47,
+ 0x1D48,
+ 0x1D49,
+ 0x1D4A,
+ 0x1D4B,
+ 0x1D4C,
+ 0x1D4D,
+ 0x1D4E,
+ 0x1D4F,
+ 0x1D50,
+ 0x1D51,
+ 0x1D52,
+ 0x1D53,
+ 0x1D54,
+ 0x1D55,
+ 0x1D56,
+ 0x1D57,
+ 0x1D58,
+ 0x1D59,
+ 0x1D5A,
+ 0x1D5B,
+ 0x1D5C,
+ 0x1D5D,
+ 0x1D5E,
+ 0x1D5F,
+ 0x1D60,
+ 0x1D61,
+ 0x1D62,
+ 0x1D63,
+ 0x1D64,
+ 0x1D65,
+ 0x1D66,
+ 0x1D67,
+ 0x1D68,
+ 0x1D69,
+ 0x1D6A,
+ 0x1D6B,
+ 0x1D78,
+ 0x1D79,
+ 0x1D9B,
+ 0x1D9C,
+ 0x1D9D,
+ 0x1D9E,
+ 0x1D9F,
+ 0x1DA0,
+ 0x1DA1,
+ 0x1DA2,
+ 0x1DA3,
+ 0x1DA4,
+ 0x1DA5,
+ 0x1DA6,
+ 0x1DA7,
+ 0x1DA8,
+ 0x1DA9,
+ 0x1DAA,
+ 0x1DAB,
+ 0x1DAC,
+ 0x1DAD,
+ 0x1DAE,
+ 0x1DAF,
+ 0x1DB0,
+ 0x1DB1,
+ 0x1DB2,
+ 0x1DB3,
+ 0x1DB4,
+ 0x1DB5,
+ 0x1DB6,
+ 0x1DB7,
+ 0x1DB8,
+ 0x1DB9,
+ 0x1DBA,
+ 0x1DBB,
+ 0x1DBC,
+ 0x1DBD,
+ 0x1DBE,
+ 0x1DBF,
+ 0x1DC0,
+ 0x1E00,
+ 0x1E01,
+ 0x1E02,
+ 0x1E03,
+ 0x1E04,
+ 0x1E05,
+ 0x1E06,
+ 0x1E07,
+ 0x1E08,
+ 0x1E09,
+ 0x1E0A,
+ 0x1E0B,
+ 0x1E0C,
+ 0x1E0D,
+ 0x1E0E,
+ 0x1E0F,
+ 0x1E10,
+ 0x1E11,
+ 0x1E12,
+ 0x1E13,
+ 0x1E14,
+ 0x1E15,
+ 0x1E16,
+ 0x1E17,
+ 0x1E18,
+ 0x1E19,
+ 0x1E1A,
+ 0x1E1B,
+ 0x1E1C,
+ 0x1E1D,
+ 0x1E1E,
+ 0x1E1F,
+ 0x1E20,
+ 0x1E21,
+ 0x1E22,
+ 0x1E23,
+ 0x1E24,
+ 0x1E25,
+ 0x1E26,
+ 0x1E27,
+ 0x1E28,
+ 0x1E29,
+ 0x1E2A,
+ 0x1E2B,
+ 0x1E2C,
+ 0x1E2D,
+ 0x1E2E,
+ 0x1E2F,
+ 0x1E30,
+ 0x1E31,
+ 0x1E32,
+ 0x1E33,
+ 0x1E34,
+ 0x1E35,
+ 0x1E36,
+ 0x1E37,
+ 0x1E38,
+ 0x1E39,
+ 0x1E3A,
+ 0x1E3B,
+ 0x1E3C,
+ 0x1E3D,
+ 0x1E3E,
+ 0x1E3F,
+ 0x1E40,
+ 0x1E41,
+ 0x1E42,
+ 0x1E43,
+ 0x1E44,
+ 0x1E45,
+ 0x1E46,
+ 0x1E47,
+ 0x1E48,
+ 0x1E49,
+ 0x1E4A,
+ 0x1E4B,
+ 0x1E4C,
+ 0x1E4D,
+ 0x1E4E,
+ 0x1E4F,
+ 0x1E50,
+ 0x1E51,
+ 0x1E52,
+ 0x1E53,
+ 0x1E54,
+ 0x1E55,
+ 0x1E56,
+ 0x1E57,
+ 0x1E58,
+ 0x1E59,
+ 0x1E5A,
+ 0x1E5B,
+ 0x1E5C,
+ 0x1E5D,
+ 0x1E5E,
+ 0x1E5F,
+ 0x1E60,
+ 0x1E61,
+ 0x1E62,
+ 0x1E63,
+ 0x1E64,
+ 0x1E65,
+ 0x1E66,
+ 0x1E67,
+ 0x1E68,
+ 0x1E69,
+ 0x1E6A,
+ 0x1E6B,
+ 0x1E6C,
+ 0x1E6D,
+ 0x1E6E,
+ 0x1E6F,
+ 0x1E70,
+ 0x1E71,
+ 0x1E72,
+ 0x1E73,
+ 0x1E74,
+ 0x1E75,
+ 0x1E76,
+ 0x1E77,
+ 0x1E78,
+ 0x1E79,
+ 0x1E7A,
+ 0x1E7B,
+ 0x1E7C,
+ 0x1E7D,
+ 0x1E7E,
+ 0x1E7F,
+ 0x1E80,
+ 0x1E81,
+ 0x1E82,
+ 0x1E83,
+ 0x1E84,
+ 0x1E85,
+ 0x1E86,
+ 0x1E87,
+ 0x1E88,
+ 0x1E89,
+ 0x1E8A,
+ 0x1E8B,
+ 0x1E8C,
+ 0x1E8D,
+ 0x1E8E,
+ 0x1E8F,
+ 0x1E90,
+ 0x1E91,
+ 0x1E92,
+ 0x1E93,
+ 0x1E94,
+ 0x1E95,
+ 0x1E9A,
+ 0x1E9B,
+ 0x1E9C,
+ 0x1E9E,
+ 0x1E9F,
+ 0x1EA0,
+ 0x1EA1,
+ 0x1EA2,
+ 0x1EA3,
+ 0x1EA4,
+ 0x1EA5,
+ 0x1EA6,
+ 0x1EA7,
+ 0x1EA8,
+ 0x1EA9,
+ 0x1EAA,
+ 0x1EAB,
+ 0x1EAC,
+ 0x1EAD,
+ 0x1EAE,
+ 0x1EAF,
+ 0x1EB0,
+ 0x1EB1,
+ 0x1EB2,
+ 0x1EB3,
+ 0x1EB4,
+ 0x1EB5,
+ 0x1EB6,
+ 0x1EB7,
+ 0x1EB8,
+ 0x1EB9,
+ 0x1EBA,
+ 0x1EBB,
+ 0x1EBC,
+ 0x1EBD,
+ 0x1EBE,
+ 0x1EBF,
+ 0x1EC0,
+ 0x1EC1,
+ 0x1EC2,
+ 0x1EC3,
+ 0x1EC4,
+ 0x1EC5,
+ 0x1EC6,
+ 0x1EC7,
+ 0x1EC8,
+ 0x1EC9,
+ 0x1ECA,
+ 0x1ECB,
+ 0x1ECC,
+ 0x1ECD,
+ 0x1ECE,
+ 0x1ECF,
+ 0x1ED0,
+ 0x1ED1,
+ 0x1ED2,
+ 0x1ED3,
+ 0x1ED4,
+ 0x1ED5,
+ 0x1ED6,
+ 0x1ED7,
+ 0x1ED8,
+ 0x1ED9,
+ 0x1EDA,
+ 0x1EDB,
+ 0x1EDC,
+ 0x1EDD,
+ 0x1EDE,
+ 0x1EDF,
+ 0x1EE0,
+ 0x1EE1,
+ 0x1EE2,
+ 0x1EE3,
+ 0x1EE4,
+ 0x1EE5,
+ 0x1EE6,
+ 0x1EE7,
+ 0x1EE8,
+ 0x1EE9,
+ 0x1EEA,
+ 0x1EEB,
+ 0x1EEC,
+ 0x1EED,
+ 0x1EEE,
+ 0x1EEF,
+ 0x1EF0,
+ 0x1EF1,
+ 0x1EF2,
+ 0x1EF3,
+ 0x1EF4,
+ 0x1EF5,
+ 0x1EF6,
+ 0x1EF7,
+ 0x1EF8,
+ 0x1EF9,
+ 0x1EFA,
+ 0x1EFB,
+ 0x1EFC,
+ 0x1EFD,
+ 0x1EFE,
+ 0x1EFF,
+ 0x1F08,
+ 0x1F09,
+ 0x1F0A,
+ 0x1F0B,
+ 0x1F0C,
+ 0x1F0D,
+ 0x1F0E,
+ 0x1F0F,
+ 0x1F10,
+ 0x1F16,
+ 0x1F18,
+ 0x1F19,
+ 0x1F1A,
+ 0x1F1B,
+ 0x1F1C,
+ 0x1F1D,
+ 0x1F1E,
+ 0x1F20,
+ 0x1F28,
+ 0x1F29,
+ 0x1F2A,
+ 0x1F2B,
+ 0x1F2C,
+ 0x1F2D,
+ 0x1F2E,
+ 0x1F2F,
+ 0x1F30,
+ 0x1F38,
+ 0x1F39,
+ 0x1F3A,
+ 0x1F3B,
+ 0x1F3C,
+ 0x1F3D,
+ 0x1F3E,
+ 0x1F3F,
+ 0x1F40,
+ 0x1F46,
+ 0x1F48,
+ 0x1F49,
+ 0x1F4A,
+ 0x1F4B,
+ 0x1F4C,
+ 0x1F4D,
+ 0x1F4E,
+ 0x1F50,
+ 0x1F58,
+ 0x1F59,
+ 0x1F5A,
+ 0x1F5B,
+ 0x1F5C,
+ 0x1F5D,
+ 0x1F5E,
+ 0x1F5F,
+ 0x1F60,
+ 0x1F68,
+ 0x1F69,
+ 0x1F6A,
+ 0x1F6B,
+ 0x1F6C,
+ 0x1F6D,
+ 0x1F6E,
+ 0x1F6F,
+ 0x1F70,
+ 0x1F71,
+ 0x1F72,
+ 0x1F73,
+ 0x1F74,
+ 0x1F75,
+ 0x1F76,
+ 0x1F77,
+ 0x1F78,
+ 0x1F79,
+ 0x1F7A,
+ 0x1F7B,
+ 0x1F7C,
+ 0x1F7D,
+ 0x1F7E,
+ 0x1F80,
+ 0x1F81,
+ 0x1F82,
+ 0x1F83,
+ 0x1F84,
+ 0x1F85,
+ 0x1F86,
+ 0x1F87,
+ 0x1F88,
+ 0x1F89,
+ 0x1F8A,
+ 0x1F8B,
+ 0x1F8C,
+ 0x1F8D,
+ 0x1F8E,
+ 0x1F8F,
+ 0x1F90,
+ 0x1F91,
+ 0x1F92,
+ 0x1F93,
+ 0x1F94,
+ 0x1F95,
+ 0x1F96,
+ 0x1F97,
+ 0x1F98,
+ 0x1F99,
+ 0x1F9A,
+ 0x1F9B,
+ 0x1F9C,
+ 0x1F9D,
+ 0x1F9E,
+ 0x1F9F,
+ 0x1FA0,
+ 0x1FA1,
+ 0x1FA2,
+ 0x1FA3,
+ 0x1FA4,
+ 0x1FA5,
+ 0x1FA6,
+ 0x1FA7,
+ 0x1FA8,
+ 0x1FA9,
+ 0x1FAA,
+ 0x1FAB,
+ 0x1FAC,
+ 0x1FAD,
+ 0x1FAE,
+ 0x1FAF,
+ 0x1FB0,
+ 0x1FB2,
+ 0x1FB3,
+ 0x1FB4,
+ 0x1FB5,
+ 0x1FB6,
+ 0x1FB7,
+ 0x1FB8,
+ 0x1FB9,
+ 0x1FBA,
+ 0x1FBB,
+ 0x1FBC,
+ 0x1FBD,
+ 0x1FBE,
+ 0x1FBF,
+ 0x1FC0,
+ 0x1FC1,
+ 0x1FC2,
+ 0x1FC3,
+ 0x1FC4,
+ 0x1FC5,
+ 0x1FC6,
+ 0x1FC7,
+ 0x1FC8,
+ 0x1FC9,
+ 0x1FCA,
+ 0x1FCB,
+ 0x1FCC,
+ 0x1FCD,
+ 0x1FCE,
+ 0x1FCF,
+ 0x1FD0,
+ 0x1FD3,
+ 0x1FD4,
+ 0x1FD6,
+ 0x1FD8,
+ 0x1FD9,
+ 0x1FDA,
+ 0x1FDB,
+ 0x1FDC,
+ 0x1FDD,
+ 0x1FDE,
+ 0x1FDF,
+ 0x1FE0,
+ 0x1FE3,
+ 0x1FE4,
+ 0x1FE8,
+ 0x1FE9,
+ 0x1FEA,
+ 0x1FEB,
+ 0x1FEC,
+ 0x1FED,
+ 0x1FEE,
+ 0x1FEF,
+ 0x1FF0,
+ 0x1FF2,
+ 0x1FF3,
+ 0x1FF4,
+ 0x1FF5,
+ 0x1FF6,
+ 0x1FF7,
+ 0x1FF8,
+ 0x1FF9,
+ 0x1FFA,
+ 0x1FFB,
+ 0x1FFC,
+ 0x1FFD,
+ 0x1FFE,
+ 0x1FFF,
+ 0x2000,
+ 0x200B,
+ 0x200C,
+ 0x200E,
+ 0x2010,
+ 0x2011,
+ 0x2012,
+ 0x2017,
+ 0x2018,
+ 0x2024,
+ 0x2027,
+ 0x2028,
+ 0x202F,
+ 0x2030,
+ 0x2033,
+ 0x2034,
+ 0x2035,
+ 0x2036,
+ 0x2037,
+ 0x2038,
+ 0x203C,
+ 0x203D,
+ 0x203E,
+ 0x203F,
+ 0x2047,
+ 0x2048,
+ 0x2049,
+ 0x204A,
+ 0x2057,
+ 0x2058,
+ 0x205F,
+ 0x2060,
+ 0x2065,
+ 0x206A,
+ 0x2070,
+ 0x2071,
+ 0x2072,
+ 0x2074,
+ 0x2075,
+ 0x2076,
+ 0x2077,
+ 0x2078,
+ 0x2079,
+ 0x207A,
+ 0x207B,
+ 0x207C,
+ 0x207D,
+ 0x207E,
+ 0x207F,
+ 0x2080,
+ 0x2081,
+ 0x2082,
+ 0x2083,
+ 0x2084,
+ 0x2085,
+ 0x2086,
+ 0x2087,
+ 0x2088,
+ 0x2089,
+ 0x208A,
+ 0x208B,
+ 0x208C,
+ 0x208D,
+ 0x208E,
+ 0x208F,
+ 0x2090,
+ 0x2091,
+ 0x2092,
+ 0x2093,
+ 0x2094,
+ 0x2095,
+ 0x2096,
+ 0x2097,
+ 0x2098,
+ 0x2099,
+ 0x209A,
+ 0x209B,
+ 0x209C,
+ 0x209D,
+ 0x20A0,
+ 0x20A8,
+ 0x20A9,
+ 0x20C2,
+ 0x20D0,
+ 0x20F1,
+ 0x2100,
+ 0x2101,
+ 0x2102,
+ 0x2103,
+ 0x2104,
+ 0x2105,
+ 0x2106,
+ 0x2107,
+ 0x2108,
+ 0x2109,
+ 0x210A,
+ 0x210B,
+ 0x210F,
+ 0x2110,
+ 0x2112,
+ 0x2114,
+ 0x2115,
+ 0x2116,
+ 0x2117,
+ 0x2119,
+ 0x211A,
+ 0x211B,
+ 0x211E,
+ 0x2120,
+ 0x2121,
+ 0x2122,
+ 0x2123,
+ 0x2124,
+ 0x2125,
+ 0x2126,
+ 0x2127,
+ 0x2128,
+ 0x2129,
+ 0x212A,
+ 0x212B,
+ 0x212C,
+ 0x212D,
+ 0x212E,
+ 0x212F,
+ 0x2131,
+ 0x2132,
+ 0x2133,
+ 0x2134,
+ 0x2135,
+ 0x2136,
+ 0x2137,
+ 0x2138,
+ 0x2139,
+ 0x213A,
+ 0x213B,
+ 0x213C,
+ 0x213D,
+ 0x213F,
+ 0x2140,
+ 0x2141,
+ 0x2145,
+ 0x2147,
+ 0x2148,
+ 0x2149,
+ 0x214A,
+ 0x2150,
+ 0x2151,
+ 0x2152,
+ 0x2153,
+ 0x2154,
+ 0x2155,
+ 0x2156,
+ 0x2157,
+ 0x2158,
+ 0x2159,
+ 0x215A,
+ 0x215B,
+ 0x215C,
+ 0x215D,
+ 0x215E,
+ 0x215F,
+ 0x2160,
+ 0x2161,
+ 0x2162,
+ 0x2163,
+ 0x2164,
+ 0x2165,
+ 0x2166,
+ 0x2167,
+ 0x2168,
+ 0x2169,
+ 0x216A,
+ 0x216B,
+ 0x216C,
+ 0x216D,
+ 0x216E,
+ 0x216F,
+ 0x2170,
+ 0x2171,
+ 0x2172,
+ 0x2173,
+ 0x2174,
+ 0x2175,
+ 0x2176,
+ 0x2177,
+ 0x2178,
+ 0x2179,
+ 0x217A,
+ 0x217B,
+ 0x217C,
+ 0x217D,
+ 0x217E,
+ 0x217F,
+ 0x2180,
+ 0x2183,
+ 0x2184,
+ 0x2189,
+ 0x218A,
+ 0x218C,
+ 0x2190,
+ 0x222C,
+ 0x222D,
+ 0x222E,
+ 0x222F,
+ 0x2230,
+ 0x2231,
+ 0x2329,
+ 0x232A,
+ 0x232B,
+ 0x242A,
+ 0x2440,
+ 0x244B,
+ 0x2460,
+ 0x2461,
+ 0x2462,
+ 0x2463,
+ 0x2464,
+ 0x2465,
+ 0x2466,
+ 0x2467,
+ 0x2468,
+ 0x2469,
+ 0x246A,
+ 0x246B,
+ 0x246C,
+ 0x246D,
+ 0x246E,
+ 0x246F,
+ 0x2470,
+ 0x2471,
+ 0x2472,
+ 0x2473,
+ 0x2474,
+ 0x2475,
+ 0x2476,
+ 0x2477,
+ 0x2478,
+ 0x2479,
+ 0x247A,
+ 0x247B,
+ 0x247C,
+ 0x247D,
+ 0x247E,
+ 0x247F,
+ 0x2480,
+ 0x2481,
+ 0x2482,
+ 0x2483,
+ 0x2484,
+ 0x2485,
+ 0x2486,
+ 0x2487,
+ 0x2488,
+ 0x249C,
+ 0x249D,
+ 0x249E,
+ 0x249F,
+ 0x24A0,
+ 0x24A1,
+ 0x24A2,
+ 0x24A3,
+ 0x24A4,
+ 0x24A5,
+ 0x24A6,
+ 0x24A7,
+ 0x24A8,
+ 0x24A9,
+ 0x24AA,
+ 0x24AB,
+ 0x24AC,
+ 0x24AD,
+ 0x24AE,
+ 0x24AF,
+ 0x24B0,
+ 0x24B1,
+ 0x24B2,
+ 0x24B3,
+ 0x24B4,
+ 0x24B5,
+ 0x24B6,
+ 0x24B7,
+ 0x24B8,
+ 0x24B9,
+ 0x24BA,
+ 0x24BB,
+ 0x24BC,
+ 0x24BD,
+ 0x24BE,
+ 0x24BF,
+ 0x24C0,
+ 0x24C1,
+ 0x24C2,
+ 0x24C3,
+ 0x24C4,
+ 0x24C5,
+ 0x24C6,
+ 0x24C7,
+ 0x24C8,
+ 0x24C9,
+ 0x24CA,
+ 0x24CB,
+ 0x24CC,
+ 0x24CD,
+ 0x24CE,
+ 0x24CF,
+ 0x24D0,
+ 0x24D1,
+ 0x24D2,
+ 0x24D3,
+ 0x24D4,
+ 0x24D5,
+ 0x24D6,
+ 0x24D7,
+ 0x24D8,
+ 0x24D9,
+ 0x24DA,
+ 0x24DB,
+ 0x24DC,
+ 0x24DD,
+ 0x24DE,
+ 0x24DF,
+ 0x24E0,
+ 0x24E1,
+ 0x24E2,
+ 0x24E3,
+ 0x24E4,
+ 0x24E5,
+ 0x24E6,
+ 0x24E7,
+ 0x24E8,
+ 0x24E9,
+ 0x24EA,
+ 0x24EB,
+ 0x2A0C,
+ 0x2A0D,
+ 0x2A74,
+ 0x2A75,
+ 0x2A76,
+ 0x2A77,
+ 0x2ADC,
+ 0x2ADD,
+ 0x2B74,
+ 0x2B76,
+ 0x2C00,
+ 0x2C01,
+ 0x2C02,
+ 0x2C03,
+ 0x2C04,
+ 0x2C05,
+ 0x2C06,
+ 0x2C07,
+ 0x2C08,
+ 0x2C09,
+ 0x2C0A,
+ 0x2C0B,
+ 0x2C0C,
+ 0x2C0D,
+ 0x2C0E,
+ 0x2C0F,
+ 0x2C10,
+ 0x2C11,
+ 0x2C12,
+ 0x2C13,
+ 0x2C14,
+ 0x2C15,
+ 0x2C16,
+ 0x2C17,
+ 0x2C18,
+ 0x2C19,
+ 0x2C1A,
+ 0x2C1B,
+ 0x2C1C,
+ 0x2C1D,
+ 0x2C1E,
+ 0x2C1F,
+ 0x2C20,
+ 0x2C21,
+ 0x2C22,
+ 0x2C23,
+ 0x2C24,
+ 0x2C25,
+ 0x2C26,
+ 0x2C27,
+ 0x2C28,
+ 0x2C29,
+ 0x2C2A,
+ 0x2C2B,
+ 0x2C2C,
+ 0x2C2D,
+ 0x2C2E,
+ 0x2C2F,
+ 0x2C30,
+ 0x2C60,
+ 0x2C61,
+ 0x2C62,
+ 0x2C63,
+ 0x2C64,
+ 0x2C65,
+ 0x2C67,
+ 0x2C68,
+ 0x2C69,
+ 0x2C6A,
+ 0x2C6B,
+ 0x2C6C,
+ 0x2C6D,
+ 0x2C6E,
+ 0x2C6F,
+ 0x2C70,
+ 0x2C71,
+ 0x2C72,
+ 0x2C73,
+ 0x2C75,
+ 0x2C76,
+ 0x2C7C,
+ 0x2C7D,
+ 0x2C7E,
+ 0x2C7F,
+ 0x2C80,
+ 0x2C81,
+ 0x2C82,
+ 0x2C83,
+ 0x2C84,
+ 0x2C85,
+ 0x2C86,
+ 0x2C87,
+ 0x2C88,
+ 0x2C89,
+ 0x2C8A,
+ 0x2C8B,
+ 0x2C8C,
+ 0x2C8D,
+ 0x2C8E,
+ 0x2C8F,
+ 0x2C90,
+ 0x2C91,
+ 0x2C92,
+ 0x2C93,
+ 0x2C94,
+ 0x2C95,
+ 0x2C96,
+ 0x2C97,
+ 0x2C98,
+ 0x2C99,
+ 0x2C9A,
+ 0x2C9B,
+ 0x2C9C,
+ 0x2C9D,
+ 0x2C9E,
+ 0x2C9F,
+ 0x2CA0,
+ 0x2CA1,
+ 0x2CA2,
+ 0x2CA3,
+ 0x2CA4,
+ 0x2CA5,
+ 0x2CA6,
+ 0x2CA7,
+ 0x2CA8,
+ 0x2CA9,
+ 0x2CAA,
+ 0x2CAB,
+ 0x2CAC,
+ 0x2CAD,
+ 0x2CAE,
+ 0x2CAF,
+ 0x2CB0,
+ 0x2CB1,
+ 0x2CB2,
+ 0x2CB3,
+ 0x2CB4,
+ 0x2CB5,
+ 0x2CB6,
+ 0x2CB7,
+ 0x2CB8,
+ 0x2CB9,
+ 0x2CBA,
+ 0x2CBB,
+ 0x2CBC,
+ 0x2CBD,
+ 0x2CBE,
+ 0x2CBF,
+ 0x2CC0,
+ 0x2CC1,
+ 0x2CC2,
+ 0x2CC3,
+ 0x2CC4,
+ 0x2CC5,
+ 0x2CC6,
+ 0x2CC7,
+ 0x2CC8,
+ 0x2CC9,
+ 0x2CCA,
+ 0x2CCB,
+ 0x2CCC,
+ 0x2CCD,
+ 0x2CCE,
+ 0x2CCF,
+ 0x2CD0,
+ 0x2CD1,
+ 0x2CD2,
+ 0x2CD3,
+ 0x2CD4,
+ 0x2CD5,
+ 0x2CD6,
+ 0x2CD7,
+ 0x2CD8,
+ 0x2CD9,
+ 0x2CDA,
+ 0x2CDB,
+ 0x2CDC,
+ 0x2CDD,
+ 0x2CDE,
+ 0x2CDF,
+ 0x2CE0,
+ 0x2CE1,
+ 0x2CE2,
+ 0x2CE3,
+ 0x2CEB,
+ 0x2CEC,
+ 0x2CED,
+ 0x2CEE,
+ 0x2CF2,
+ 0x2CF3,
+ 0x2CF4,
+ 0x2CF9,
+ 0x2D26,
+ 0x2D27,
+ 0x2D28,
+ 0x2D2D,
+ 0x2D2E,
+ 0x2D30,
+ 0x2D68,
+ 0x2D6F,
+ 0x2D70,
+ 0x2D71,
+ 0x2D7F,
+ 0x2D97,
+ 0x2DA0,
+ 0x2DA7,
+ 0x2DA8,
+ 0x2DAF,
+ 0x2DB0,
+ 0x2DB7,
+ 0x2DB8,
+ 0x2DBF,
+ 0x2DC0,
+ 0x2DC7,
+ 0x2DC8,
+ 0x2DCF,
+ 0x2DD0,
+ 0x2DD7,
+ 0x2DD8,
+ 0x2DDF,
+ 0x2DE0,
+ 0x2E5E,
+ 0x2E80,
+ 0x2E9A,
+ 0x2E9B,
+ 0x2E9F,
+ 0x2EA0,
+ 0x2EF3,
+ 0x2EF4,
+ 0x2F00,
+ 0x2F01,
+ 0x2F02,
+ 0x2F03,
+ 0x2F04,
+ 0x2F05,
+ 0x2F06,
+ 0x2F07,
+ 0x2F08,
+ 0x2F09,
+ 0x2F0A,
+ 0x2F0B,
+ 0x2F0C,
+ 0x2F0D,
+ 0x2F0E,
+ 0x2F0F,
+ 0x2F10,
+ 0x2F11,
+ 0x2F12,
+ 0x2F13,
+ 0x2F14,
+ 0x2F15,
+ 0x2F16,
+ 0x2F17,
+ 0x2F18,
+ 0x2F19,
+ 0x2F1A,
+ 0x2F1B,
+ 0x2F1C,
+ 0x2F1D,
+ 0x2F1E,
+ 0x2F1F,
+ 0x2F20,
+ 0x2F21,
+ 0x2F22,
+ 0x2F23,
+ 0x2F24,
+ 0x2F25,
+ 0x2F26,
+ 0x2F27,
+ 0x2F28,
+ 0x2F29,
+ 0x2F2A,
+ 0x2F2B,
+ 0x2F2C,
+ 0x2F2D,
+ 0x2F2E,
+ 0x2F2F,
+ 0x2F30,
+ 0x2F31,
+ 0x2F32,
+ 0x2F33,
+ 0x2F34,
+ 0x2F35,
+ 0x2F36,
+ 0x2F37,
+ 0x2F38,
+ 0x2F39,
+ 0x2F3A,
+ 0x2F3B,
+ 0x2F3C,
+ 0x2F3D,
+ 0x2F3E,
+ 0x2F3F,
+ 0x2F40,
+ 0x2F41,
+ 0x2F42,
+ 0x2F43,
+ 0x2F44,
+ 0x2F45,
+ 0x2F46,
+ 0x2F47,
+ 0x2F48,
+ 0x2F49,
+ 0x2F4A,
+ 0x2F4B,
+ 0x2F4C,
+ 0x2F4D,
+ 0x2F4E,
+ 0x2F4F,
+ 0x2F50,
+ 0x2F51,
+ 0x2F52,
+ 0x2F53,
+ 0x2F54,
+ 0x2F55,
+ 0x2F56,
+ 0x2F57,
+ 0x2F58,
+ 0x2F59,
+ 0x2F5A,
+ 0x2F5B,
+ 0x2F5C,
+ 0x2F5D,
+ 0x2F5E,
+ 0x2F5F,
+ 0x2F60,
+ 0x2F61,
+ 0x2F62,
+ 0x2F63,
+ 0x2F64,
+ 0x2F65,
+ 0x2F66,
+ 0x2F67,
+ 0x2F68,
+ 0x2F69,
+ 0x2F6A,
+ 0x2F6B,
+ 0x2F6C,
+ 0x2F6D,
+ 0x2F6E,
+ 0x2F6F,
+ 0x2F70,
+ 0x2F71,
+ 0x2F72,
+ 0x2F73,
+ 0x2F74,
+ 0x2F75,
+ 0x2F76,
+ 0x2F77,
+ 0x2F78,
+ 0x2F79,
+ 0x2F7A,
+ 0x2F7B,
+ 0x2F7C,
+ 0x2F7D,
+ 0x2F7E,
+ 0x2F7F,
+ 0x2F80,
+ 0x2F81,
+ 0x2F82,
+ 0x2F83,
+ 0x2F84,
+ 0x2F85,
+ 0x2F86,
+ 0x2F87,
+ 0x2F88,
+ 0x2F89,
+ 0x2F8A,
+ 0x2F8B,
+ 0x2F8C,
+ 0x2F8D,
+ 0x2F8E,
+ 0x2F8F,
+ 0x2F90,
+ 0x2F91,
+ 0x2F92,
+ 0x2F93,
+ 0x2F94,
+ 0x2F95,
+ 0x2F96,
+ 0x2F97,
+ 0x2F98,
+ 0x2F99,
+ 0x2F9A,
+ 0x2F9B,
+ 0x2F9C,
+ 0x2F9D,
+ 0x2F9E,
+ 0x2F9F,
+ 0x2FA0,
+ 0x2FA1,
+ 0x2FA2,
+ 0x2FA3,
+ 0x2FA4,
+ 0x2FA5,
+ 0x2FA6,
+ 0x2FA7,
+ 0x2FA8,
+ 0x2FA9,
+ 0x2FAA,
+ 0x2FAB,
+ 0x2FAC,
+ 0x2FAD,
+ 0x2FAE,
+ 0x2FAF,
+ 0x2FB0,
+ 0x2FB1,
+ 0x2FB2,
+ 0x2FB3,
+ 0x2FB4,
+ 0x2FB5,
+ 0x2FB6,
+ 0x2FB7,
+ 0x2FB8,
+ 0x2FB9,
+ 0x2FBA,
+ 0x2FBB,
+ 0x2FBC,
+ 0x2FBD,
+ 0x2FBE,
+ 0x2FBF,
+ 0x2FC0,
+ 0x2FC1,
+ 0x2FC2,
+ 0x2FC3,
+ 0x2FC4,
+ 0x2FC5,
+ 0x2FC6,
+ 0x2FC7,
+ 0x2FC8,
+ 0x2FC9,
+ 0x2FCA,
+ 0x2FCB,
+ 0x2FCC,
+ 0x2FCD,
+ 0x2FCE,
+ 0x2FCF,
+ 0x2FD0,
+ 0x2FD1,
+ 0x2FD2,
+ 0x2FD3,
+ 0x2FD4,
+ 0x2FD5,
+ 0x2FD6,
+ 0x3000,
+ 0x3001,
+ 0x3002,
+ 0x3003,
+ 0x3036,
+ 0x3037,
+ 0x3038,
+ 0x3039,
+ 0x303A,
+ 0x303B,
+ 0x3040,
+ 0x3041,
+ 0x3097,
+ 0x3099,
+ 0x309B,
+ 0x309C,
+ 0x309D,
+ 0x309F,
+ 0x30A0,
+ 0x30FF,
+ 0x3100,
+ 0x3105,
+ 0x3130,
+ 0x3131,
+ 0x3132,
+ 0x3133,
+ 0x3134,
+ 0x3135,
+ 0x3136,
+ 0x3137,
+ 0x3138,
+ 0x3139,
+ 0x313A,
+ 0x313B,
+ 0x313C,
+ 0x313D,
+ 0x313E,
+ 0x313F,
+ 0x3140,
+ 0x3141,
+ 0x3142,
+ 0x3143,
+ 0x3144,
+ 0x3145,
+ 0x3146,
+ 0x3147,
+ 0x3148,
+ 0x3149,
+ 0x314A,
+ 0x314B,
+ 0x314C,
+ 0x314D,
+ 0x314E,
+ 0x314F,
+ 0x3150,
+ 0x3151,
+ 0x3152,
+ 0x3153,
+ 0x3154,
+ 0x3155,
+ 0x3156,
+ 0x3157,
+ 0x3158,
+ 0x3159,
+ 0x315A,
+ 0x315B,
+ 0x315C,
+ 0x315D,
+ 0x315E,
+ 0x315F,
+ 0x3160,
+ 0x3161,
+ 0x3162,
+ 0x3163,
+ 0x3164,
+ 0x3165,
+ 0x3166,
+ 0x3167,
+ 0x3168,
+ 0x3169,
+ 0x316A,
+ 0x316B,
+ 0x316C,
+ 0x316D,
+ 0x316E,
+ 0x316F,
+ 0x3170,
+ 0x3171,
+ 0x3172,
+ 0x3173,
+ 0x3174,
+ 0x3175,
+ 0x3176,
+ 0x3177,
+ 0x3178,
+ 0x3179,
+ 0x317A,
+ 0x317B,
+ 0x317C,
+ 0x317D,
+ 0x317E,
+ 0x317F,
+ 0x3180,
+ 0x3181,
+ 0x3182,
+ 0x3183,
+ 0x3184,
+ 0x3185,
+ 0x3186,
+ 0x3187,
+ 0x3188,
+ 0x3189,
+ 0x318A,
+ 0x318B,
+ 0x318C,
+ 0x318D,
+ 0x318E,
+ 0x318F,
+ 0x3190,
+ 0x3192,
+ 0x3193,
+ 0x3194,
+ 0x3195,
+ 0x3196,
+ 0x3197,
+ 0x3198,
+ 0x3199,
+ 0x319A,
+ 0x319B,
+ 0x319C,
+ 0x319D,
+ 0x319E,
+ 0x319F,
+ 0x31A0,
+ 0x31E6,
+ 0x31F0,
+ 0x3200,
+ 0x3201,
+ 0x3202,
+ 0x3203,
+ 0x3204,
+ 0x3205,
+ 0x3206,
+ 0x3207,
+ 0x3208,
+ 0x3209,
+ 0x320A,
+ 0x320B,
+ 0x320C,
+ 0x320D,
+ 0x320E,
+ 0x320F,
+ 0x3210,
+ 0x3211,
+ 0x3212,
+ 0x3213,
+ 0x3214,
+ 0x3215,
+ 0x3216,
+ 0x3217,
+ 0x3218,
+ 0x3219,
+ 0x321A,
+ 0x321B,
+ 0x321C,
+ 0x321D,
+ 0x321E,
+ 0x321F,
+ 0x3220,
+ 0x3221,
+ 0x3222,
+ 0x3223,
+ 0x3224,
+ 0x3225,
+ 0x3226,
+ 0x3227,
+ 0x3228,
+ 0x3229,
+ 0x322A,
+ 0x322B,
+ 0x322C,
+ 0x322D,
+ 0x322E,
+ 0x322F,
+ 0x3230,
+ 0x3231,
+ 0x3232,
+ 0x3233,
+ 0x3234,
+ 0x3235,
+ 0x3236,
+ 0x3237,
+ 0x3238,
+ 0x3239,
+ 0x323A,
+ 0x323B,
+ 0x323C,
+ 0x323D,
+ 0x323E,
+ 0x323F,
+ 0x3240,
+ 0x3241,
+ 0x3242,
+ 0x3243,
+ 0x3244,
+ 0x3245,
+ 0x3246,
+ 0x3247,
+ 0x3248,
+ 0x3250,
+ 0x3251,
+ 0x3252,
+ 0x3253,
+ 0x3254,
+ 0x3255,
+ 0x3256,
+ 0x3257,
+ 0x3258,
+ 0x3259,
+ 0x325A,
+ 0x325B,
+ 0x325C,
+ 0x325D,
+ 0x325E,
+ 0x325F,
+ 0x3260,
+ 0x3261,
+ 0x3262,
+ 0x3263,
+ 0x3264,
+ 0x3265,
+ 0x3266,
+ 0x3267,
+ 0x3268,
+ 0x3269,
+ 0x326A,
+ 0x326B,
+ 0x326C,
+ 0x326D,
+ 0x326E,
+ 0x326F,
+ 0x3270,
+ 0x3271,
+ 0x3272,
+ 0x3273,
+ 0x3274,
+ 0x3275,
+ 0x3276,
+ 0x3277,
+ 0x3278,
+ 0x3279,
+ 0x327A,
+ 0x327B,
+ 0x327C,
+ 0x327D,
+ 0x327E,
+ 0x327F,
+ 0x3280,
+ 0x3281,
+ 0x3282,
+ 0x3283,
+ 0x3284,
+ 0x3285,
+ 0x3286,
+ 0x3287,
+ 0x3288,
+ 0x3289,
+ 0x328A,
+ 0x328B,
+ 0x328C,
+ 0x328D,
+ 0x328E,
+ 0x328F,
+ 0x3290,
+ 0x3291,
+ 0x3292,
+ 0x3293,
+ 0x3294,
+ 0x3295,
+ 0x3296,
+ 0x3297,
+ 0x3298,
+ 0x3299,
+ 0x329A,
+ 0x329B,
+ 0x329C,
+ 0x329D,
+ 0x329E,
+ 0x329F,
+ 0x32A0,
+ 0x32A1,
+ 0x32A2,
+ 0x32A3,
+ 0x32A4,
+ 0x32A5,
+ 0x32A6,
+ 0x32A7,
+ 0x32A8,
+ 0x32A9,
+ 0x32AA,
+ 0x32AB,
+ 0x32AC,
+ 0x32AD,
+ 0x32AE,
+ 0x32AF,
+ 0x32B0,
+ 0x32B1,
+ 0x32B2,
+ 0x32B3,
+ 0x32B4,
+ 0x32B5,
+ 0x32B6,
+ 0x32B7,
+ 0x32B8,
+ 0x32B9,
+ 0x32BA,
+ 0x32BB,
+ 0x32BC,
+ 0x32BD,
+ 0x32BE,
+ 0x32BF,
+ 0x32C0,
+ 0x32C1,
+ 0x32C2,
+ 0x32C3,
+ 0x32C4,
+ 0x32C5,
+ 0x32C6,
+ 0x32C7,
+ 0x32C8,
+ 0x32C9,
+ 0x32CA,
+ 0x32CB,
+ 0x32CC,
+ 0x32CD,
+ 0x32CE,
+ 0x32CF,
+ 0x32D0,
+ 0x32D1,
+ 0x32D2,
+ 0x32D3,
+ 0x32D4,
+ 0x32D5,
+ 0x32D6,
+ 0x32D7,
+ 0x32D8,
+ 0x32D9,
+ 0x32DA,
+ 0x32DB,
+ 0x32DC,
+ 0x32DD,
+ 0x32DE,
+ 0x32DF,
+ 0x32E0,
+ 0x32E1,
+ 0x32E2,
+ 0x32E3,
+ 0x32E4,
+ 0x32E5,
+ 0x32E6,
+ 0x32E7,
+ 0x32E8,
+ 0x32E9,
+ 0x32EA,
+ 0x32EB,
+ 0x32EC,
+ 0x32ED,
+ 0x32EE,
+ 0x32EF,
+ 0x32F0,
+ 0x32F1,
+ 0x32F2,
+ 0x32F3,
+ 0x32F4,
+ 0x32F5,
+ 0x32F6,
+ 0x32F7,
+ 0x32F8,
+ 0x32F9,
+ 0x32FA,
+ 0x32FB,
+ 0x32FC,
+ 0x32FD,
+ 0x32FE,
+ 0x32FF,
+ 0x3300,
+ 0x3301,
+ 0x3302,
+ 0x3303,
+ 0x3304,
+ 0x3305,
+ 0x3306,
+ 0x3307,
+ 0x3308,
+ 0x3309,
+ 0x330A,
+ 0x330B,
+ 0x330C,
+ 0x330D,
+ 0x330E,
+ 0x330F,
+ 0x3310,
+ 0x3311,
+ 0x3312,
+ 0x3313,
+ 0x3314,
+ 0x3315,
+ 0x3316,
+ 0x3317,
+ 0x3318,
+ 0x3319,
+ 0x331A,
+ 0x331B,
+ 0x331C,
+ 0x331D,
+ 0x331E,
+ 0x331F,
+ 0x3320,
+ 0x3321,
+ 0x3322,
+ 0x3323,
+ 0x3324,
+ 0x3325,
+ 0x3326,
+ 0x3327,
+ 0x3328,
+ 0x3329,
+ 0x332A,
+ 0x332B,
+ 0x332C,
+ 0x332D,
+ 0x332E,
+ 0x332F,
+ 0x3330,
+ 0x3331,
+ 0x3332,
+ 0x3333,
+ 0x3334,
+ 0x3335,
+ 0x3336,
+ 0x3337,
+ 0x3338,
+ 0x3339,
+ 0x333A,
+ 0x333B,
+ 0x333C,
+ 0x333D,
+ 0x333E,
+ 0x333F,
+ 0x3340,
+ 0x3341,
+ 0x3342,
+ 0x3343,
+ 0x3344,
+ 0x3345,
+ 0x3346,
+ 0x3347,
+ 0x3348,
+ 0x3349,
+ 0x334A,
+ 0x334B,
+ 0x334C,
+ 0x334D,
+ 0x334E,
+ 0x334F,
+ 0x3350,
+ 0x3351,
+ 0x3352,
+ 0x3353,
+ 0x3354,
+ 0x3355,
+ 0x3356,
+ 0x3357,
+ 0x3358,
+ 0x3359,
+ 0x335A,
+ 0x335B,
+ 0x335C,
+ 0x335D,
+ 0x335E,
+ 0x335F,
+ 0x3360,
+ 0x3361,
+ 0x3362,
+ 0x3363,
+ 0x3364,
+ 0x3365,
+ 0x3366,
+ 0x3367,
+ 0x3368,
+ 0x3369,
+ 0x336A,
+ 0x336B,
+ 0x336C,
+ 0x336D,
+ 0x336E,
+ 0x336F,
+ 0x3370,
+ 0x3371,
+ 0x3372,
+ 0x3373,
+ 0x3374,
+ 0x3375,
+ 0x3376,
+ 0x3377,
+ 0x3378,
+ 0x3379,
+ 0x337A,
+ 0x337B,
+ 0x337C,
+ 0x337D,
+ 0x337E,
+ 0x337F,
+ 0x3380,
+ 0x3381,
+ 0x3382,
+ 0x3383,
+ 0x3384,
+ 0x3385,
+ 0x3386,
+ 0x3387,
+ 0x3388,
+ 0x3389,
+ 0x338A,
+ 0x338B,
+ 0x338C,
+ 0x338D,
+ 0x338E,
+ 0x338F,
+ 0x3390,
+ 0x3391,
+ 0x3392,
+ 0x3393,
+ 0x3394,
+ 0x3395,
+ 0x3396,
+ 0x3397,
+ 0x3398,
+ 0x3399,
+ 0x339A,
+ 0x339B,
+ 0x339C,
+ 0x339D,
+ 0x339E,
+ 0x339F,
+ 0x33A0,
+ 0x33A1,
+ 0x33A2,
+ 0x33A3,
+ 0x33A4,
+ 0x33A5,
+ 0x33A6,
+ 0x33A7,
+ 0x33A8,
+ 0x33A9,
+ 0x33AA,
+ 0x33AB,
+ 0x33AC,
+ 0x33AD,
+ 0x33AE,
+ 0x33AF,
+ 0x33B0,
+ 0x33B1,
+ 0x33B2,
+ 0x33B3,
+ 0x33B4,
+ 0x33B5,
+ 0x33B6,
+ 0x33B7,
+ 0x33B8,
+ 0x33B9,
+ 0x33BA,
+ 0x33BB,
+ 0x33BC,
+ 0x33BD,
+ 0x33BE,
+ 0x33BF,
+ 0x33C0,
+ 0x33C1,
+ 0x33C2,
+ 0x33C3,
+ 0x33C4,
+ 0x33C5,
+ 0x33C6,
+ 0x33C7,
+ 0x33C8,
+ 0x33C9,
+ 0x33CA,
+ 0x33CB,
+ 0x33CC,
+ 0x33CD,
+ 0x33CE,
+ 0x33CF,
+ 0x33D0,
+ 0x33D1,
+ 0x33D2,
+ 0x33D3,
+ 0x33D4,
+ 0x33D5,
+ 0x33D6,
+ 0x33D7,
+ 0x33D8,
+ 0x33D9,
+ 0x33DA,
+ 0x33DB,
+ 0x33DC,
+ 0x33DD,
+ 0x33DE,
+ 0x33DF,
+ 0x33E0,
+ 0x33E1,
+ 0x33E2,
+ 0x33E3,
+ 0x33E4,
+ 0x33E5,
+ 0x33E6,
+ 0x33E7,
+ 0x33E8,
+ 0x33E9,
+ 0x33EA,
+ 0x33EB,
+ 0x33EC,
+ 0x33ED,
+ 0x33EE,
+ 0x33EF,
+ 0x33F0,
+ 0x33F1,
+ 0x33F2,
+ 0x33F3,
+ 0x33F4,
+ 0x33F5,
+ 0x33F6,
+ 0x33F7,
+ 0x33F8,
+ 0x33F9,
+ 0x33FA,
+ 0x33FB,
+ 0x33FC,
+ 0x33FD,
+ 0x33FE,
+ 0x33FF,
+ 0x3400,
+ 0xA48D,
+ 0xA490,
+ 0xA4C7,
+ 0xA4D0,
+ 0xA62C,
+ 0xA640,
+ 0xA641,
+ 0xA642,
+ 0xA643,
+ 0xA644,
+ 0xA645,
+ 0xA646,
+ 0xA647,
+ 0xA648,
+ 0xA649,
+ 0xA64A,
+ 0xA64B,
+ 0xA64C,
+ 0xA64D,
+ 0xA64E,
+ 0xA64F,
+ 0xA650,
+ 0xA651,
+ 0xA652,
+ 0xA653,
+ 0xA654,
+ 0xA655,
+ 0xA656,
+ 0xA657,
+ 0xA658,
+ 0xA659,
+ 0xA65A,
+ 0xA65B,
+ 0xA65C,
+ 0xA65D,
+ 0xA65E,
+ 0xA65F,
+ 0xA660,
+ 0xA661,
+ 0xA662,
+ 0xA663,
+ 0xA664,
+ 0xA665,
+ 0xA666,
+ 0xA667,
+ 0xA668,
+ 0xA669,
+ 0xA66A,
+ 0xA66B,
+ 0xA66C,
+ 0xA66D,
+ 0xA680,
+ 0xA681,
+ 0xA682,
+ 0xA683,
+ 0xA684,
+ 0xA685,
+ 0xA686,
+ 0xA687,
+ 0xA688,
+ 0xA689,
+ 0xA68A,
+ 0xA68B,
+ 0xA68C,
+ 0xA68D,
+ 0xA68E,
+ 0xA68F,
+ 0xA690,
+ 0xA691,
+ 0xA692,
+ 0xA693,
+ 0xA694,
+ 0xA695,
+ 0xA696,
+ 0xA697,
+ 0xA698,
+ 0xA699,
+ 0xA69A,
+ 0xA69B,
+ 0xA69C,
+ 0xA69D,
+ 0xA69E,
+ 0xA6F8,
+ 0xA700,
+ 0xA722,
+ 0xA723,
+ 0xA724,
+ 0xA725,
+ 0xA726,
+ 0xA727,
+ 0xA728,
+ 0xA729,
+ 0xA72A,
+ 0xA72B,
+ 0xA72C,
+ 0xA72D,
+ 0xA72E,
+ 0xA72F,
+ 0xA732,
+ 0xA733,
+ 0xA734,
+ 0xA735,
+ 0xA736,
+ 0xA737,
+ 0xA738,
+ 0xA739,
+ 0xA73A,
+ 0xA73B,
+ 0xA73C,
+ 0xA73D,
+ 0xA73E,
+ 0xA73F,
+ 0xA740,
+ 0xA741,
+ 0xA742,
+ 0xA743,
+ 0xA744,
+ 0xA745,
+ 0xA746,
+ 0xA747,
+ 0xA748,
+ 0xA749,
+ 0xA74A,
+ 0xA74B,
+ 0xA74C,
+ 0xA74D,
+ 0xA74E,
+ 0xA74F,
+ 0xA750,
+ 0xA751,
+ 0xA752,
+ 0xA753,
+ 0xA754,
+ 0xA755,
+ 0xA756,
+ 0xA757,
+ 0xA758,
+ 0xA759,
+ 0xA75A,
+ 0xA75B,
+ 0xA75C,
+ 0xA75D,
+ 0xA75E,
+ 0xA75F,
+ 0xA760,
+ 0xA761,
+ 0xA762,
+ 0xA763,
+ 0xA764,
+ 0xA765,
+ 0xA766,
+ 0xA767,
+ 0xA768,
+ 0xA769,
+ 0xA76A,
+ 0xA76B,
+ 0xA76C,
+ 0xA76D,
+ 0xA76E,
+ 0xA76F,
+ 0xA770,
+ 0xA771,
+ 0xA779,
+ 0xA77A,
+ 0xA77B,
+ 0xA77C,
+ 0xA77D,
+ 0xA77E,
+ 0xA77F,
+ 0xA780,
+ 0xA781,
+ 0xA782,
+ 0xA783,
+ 0xA784,
+ 0xA785,
+ 0xA786,
+ 0xA787,
+ 0xA78B,
+ 0xA78C,
+ 0xA78D,
+ 0xA78E,
+ 0xA790,
+ 0xA791,
+ 0xA792,
+ 0xA793,
+ 0xA796,
+ 0xA797,
+ 0xA798,
+ 0xA799,
+ 0xA79A,
+ 0xA79B,
+ 0xA79C,
+ 0xA79D,
+ 0xA79E,
+ 0xA79F,
+ 0xA7A0,
+ 0xA7A1,
+ 0xA7A2,
+ 0xA7A3,
+ 0xA7A4,
+ 0xA7A5,
+ 0xA7A6,
+ 0xA7A7,
+ 0xA7A8,
+ 0xA7A9,
+ 0xA7AA,
+ 0xA7AB,
+ 0xA7AC,
+ 0xA7AD,
+ 0xA7AE,
+ 0xA7AF,
+ 0xA7B0,
+ 0xA7B1,
+ 0xA7B2,
+ 0xA7B3,
+ 0xA7B4,
+ 0xA7B5,
+ 0xA7B6,
+ 0xA7B7,
+ 0xA7B8,
+ 0xA7B9,
+ 0xA7BA,
+ 0xA7BB,
+ 0xA7BC,
+ 0xA7BD,
+ 0xA7BE,
+ 0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
+ 0xA7C3,
+ 0xA7C4,
+ 0xA7C5,
+ 0xA7C6,
+ 0xA7C7,
+ 0xA7C8,
+ 0xA7C9,
+ 0xA7CA,
+ 0xA7CB,
+ 0xA7CC,
+ 0xA7CD,
+ 0xA7CE,
+ 0xA7CF,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7DB,
+ 0xA7DC,
+ 0xA7DD,
+ 0xA7F1,
+ 0xA7F2,
+ 0xA7F3,
+ 0xA7F4,
+ 0xA7F5,
+ 0xA7F6,
+ 0xA7F8,
+ 0xA7F9,
+ 0xA7FA,
+ 0xA82D,
+ 0xA830,
+ 0xA83A,
+ 0xA840,
+ 0xA878,
+ 0xA880,
+ 0xA8C6,
+ 0xA8CE,
+ 0xA8DA,
+ 0xA8E0,
+ 0xA954,
+ 0xA95F,
+ 0xA97D,
+ 0xA980,
+ 0xA9CE,
+ 0xA9CF,
+ 0xA9DA,
+ 0xA9DE,
+ 0xA9FF,
+ 0xAA00,
+ 0xAA37,
+ 0xAA40,
+ 0xAA4E,
+ 0xAA50,
+ 0xAA5A,
+ 0xAA5C,
+ 0xAAC3,
+ 0xAADB,
+ 0xAAF7,
+ 0xAB01,
+ 0xAB07,
+ 0xAB09,
+ 0xAB0F,
+ 0xAB11,
+ 0xAB17,
+ 0xAB20,
+ 0xAB27,
+ 0xAB28,
+ 0xAB2F,
+ 0xAB30,
+ 0xAB5C,
+ 0xAB5D,
+ 0xAB5E,
+ 0xAB5F,
+ 0xAB60,
+ 0xAB69,
+ 0xAB6A,
+ 0xAB6C,
+ 0xAB70,
+ 0xAB71,
+ 0xAB72,
+ 0xAB73,
+ 0xAB74,
+ 0xAB75,
+ 0xAB76,
+ 0xAB77,
+ 0xAB78,
+ 0xAB79,
+ 0xAB7A,
+ 0xAB7B,
+ 0xAB7C,
+ 0xAB7D,
+ 0xAB7E,
+ 0xAB7F,
+ 0xAB80,
+ 0xAB81,
+ 0xAB82,
+ 0xAB83,
+ 0xAB84,
+ 0xAB85,
+ 0xAB86,
+ 0xAB87,
+ 0xAB88,
+ 0xAB89,
+ 0xAB8A,
+ 0xAB8B,
+ 0xAB8C,
+ 0xAB8D,
+ 0xAB8E,
+ 0xAB8F,
+ 0xAB90,
+ 0xAB91,
+ 0xAB92,
+ 0xAB93,
+ 0xAB94,
+ 0xAB95,
+ 0xAB96,
+ 0xAB97,
+ 0xAB98,
+ 0xAB99,
+ 0xAB9A,
+ 0xAB9B,
+ 0xAB9C,
+ 0xAB9D,
+ 0xAB9E,
+ 0xAB9F,
+ 0xABA0,
+ 0xABA1,
+ 0xABA2,
+ 0xABA3,
+ 0xABA4,
+ 0xABA5,
+ 0xABA6,
+ 0xABA7,
+ 0xABA8,
+ 0xABA9,
+ 0xABAA,
+ 0xABAB,
+ 0xABAC,
+ 0xABAD,
+ 0xABAE,
+ 0xABAF,
+ 0xABB0,
+ 0xABB1,
+ 0xABB2,
+ 0xABB3,
+ 0xABB4,
+ 0xABB5,
+ 0xABB6,
+ 0xABB7,
+ 0xABB8,
+ 0xABB9,
+ 0xABBA,
+ 0xABBB,
+ 0xABBC,
+ 0xABBD,
+ 0xABBE,
+ 0xABBF,
+ 0xABC0,
+ 0xABEE,
+ 0xABF0,
+ 0xABFA,
+ 0xAC00,
+ 0xD7A4,
+ 0xD7B0,
+ 0xD7C7,
+ 0xD7CB,
+ 0xD7FC,
+ 0xF900,
+ 0xF901,
+ 0xF902,
+ 0xF903,
+ 0xF904,
+ 0xF905,
+ 0xF906,
+ 0xF907,
+ 0xF909,
+ 0xF90A,
+ 0xF90B,
+ 0xF90C,
+ 0xF90D,
+ 0xF90E,
+ 0xF90F,
+ 0xF910,
+ 0xF911,
+ 0xF912,
+ 0xF913,
+ 0xF914,
+ 0xF915,
+ 0xF916,
+ 0xF917,
+ 0xF918,
+ 0xF919,
+ 0xF91A,
+ 0xF91B,
+ 0xF91C,
+ 0xF91D,
+ 0xF91E,
+ 0xF91F,
+ 0xF920,
+ 0xF921,
+ 0xF922,
+ 0xF923,
+ 0xF924,
+ 0xF925,
+ 0xF926,
+ 0xF927,
+ 0xF928,
+ 0xF929,
+ 0xF92A,
+ 0xF92B,
+ 0xF92C,
+ 0xF92D,
+ 0xF92E,
+ 0xF92F,
+ 0xF930,
+ 0xF931,
+ 0xF932,
+ 0xF933,
+ 0xF934,
+ 0xF935,
+ 0xF936,
+ 0xF937,
+ 0xF938,
+ 0xF939,
+ 0xF93A,
+ 0xF93B,
+ 0xF93C,
+ 0xF93D,
+ 0xF93E,
+ 0xF93F,
+ 0xF940,
+ 0xF941,
+ 0xF942,
+ 0xF943,
+ 0xF944,
+ 0xF945,
+ 0xF946,
+ 0xF947,
+ 0xF948,
+ 0xF949,
+ 0xF94A,
+ 0xF94B,
+ 0xF94C,
+ 0xF94D,
+ 0xF94E,
+ 0xF94F,
+ 0xF950,
+ 0xF951,
+ 0xF952,
+ 0xF953,
+ 0xF954,
+ 0xF955,
+ 0xF956,
+ 0xF957,
+ 0xF958,
+ 0xF959,
+ 0xF95A,
+ 0xF95B,
+ 0xF95C,
+ 0xF95D,
+ 0xF95E,
+ 0xF95F,
+ 0xF960,
+ 0xF961,
+ 0xF962,
+ 0xF963,
+ 0xF964,
+ 0xF965,
+ 0xF966,
+ 0xF967,
+ 0xF968,
+ 0xF969,
+ 0xF96A,
+ 0xF96B,
+ 0xF96C,
+ 0xF96D,
+ 0xF96E,
+ 0xF96F,
+ 0xF970,
+ 0xF971,
+ 0xF972,
+ 0xF973,
+ 0xF974,
+ 0xF975,
+ 0xF976,
+ 0xF977,
+ 0xF978,
+ 0xF979,
+ 0xF97A,
+ 0xF97B,
+ 0xF97C,
+ 0xF97D,
+ 0xF97E,
+ 0xF97F,
+ 0xF980,
+ 0xF981,
+ 0xF982,
+ 0xF983,
+ 0xF984,
+ 0xF985,
+ 0xF986,
+ 0xF987,
+ 0xF988,
+ 0xF989,
+ 0xF98A,
+ 0xF98B,
+ 0xF98C,
+ 0xF98D,
+ 0xF98E,
+ 0xF98F,
+ 0xF990,
+ 0xF991,
+ 0xF992,
+ 0xF993,
+ 0xF994,
+ 0xF995,
+ 0xF996,
+ 0xF997,
+ 0xF998,
+ 0xF999,
+ 0xF99A,
+ 0xF99B,
+ 0xF99C,
+ 0xF99D,
+ 0xF99E,
+ 0xF99F,
+ 0xF9A0,
+ 0xF9A1,
+ 0xF9A2,
+ 0xF9A3,
+ 0xF9A4,
+ 0xF9A5,
+ 0xF9A6,
+ 0xF9A7,
+ 0xF9A8,
+ 0xF9A9,
+ 0xF9AA,
+ 0xF9AB,
+ 0xF9AC,
+ 0xF9AD,
+ 0xF9AE,
+ 0xF9AF,
+ 0xF9B0,
+ 0xF9B1,
+ 0xF9B2,
+ 0xF9B3,
+ 0xF9B4,
+ 0xF9B5,
+ 0xF9B6,
+ 0xF9B7,
+ 0xF9B8,
+ 0xF9B9,
+ 0xF9BA,
+ 0xF9BB,
+ 0xF9BC,
+ 0xF9BD,
+ 0xF9BE,
+ 0xF9BF,
+ 0xF9C0,
+ 0xF9C1,
+ 0xF9C2,
+ 0xF9C3,
+ 0xF9C4,
+ 0xF9C5,
+ 0xF9C6,
+ 0xF9C7,
+ 0xF9C8,
+ 0xF9C9,
+ 0xF9CA,
+ 0xF9CB,
+ 0xF9CC,
+ 0xF9CD,
+ 0xF9CE,
+ 0xF9CF,
+ 0xF9D0,
+ 0xF9D1,
+ 0xF9D2,
+ 0xF9D3,
+ 0xF9D4,
+ 0xF9D5,
+ 0xF9D6,
+ 0xF9D7,
+ 0xF9D8,
+ 0xF9D9,
+ 0xF9DA,
+ 0xF9DB,
+ 0xF9DC,
+ 0xF9DD,
+ 0xF9DE,
+ 0xF9DF,
+ 0xF9E0,
+ 0xF9E1,
+ 0xF9E2,
+ 0xF9E3,
+ 0xF9E4,
+ 0xF9E5,
+ 0xF9E6,
+ 0xF9E7,
+ 0xF9E8,
+ 0xF9E9,
+ 0xF9EA,
+ 0xF9EB,
+ 0xF9EC,
+ 0xF9ED,
+ 0xF9EE,
+ 0xF9EF,
+ 0xF9F0,
+ 0xF9F1,
+ 0xF9F2,
+ 0xF9F3,
+ 0xF9F4,
+ 0xF9F5,
+ 0xF9F6,
+ 0xF9F7,
+ 0xF9F8,
+ 0xF9F9,
+ 0xF9FA,
+ 0xF9FB,
+ 0xF9FC,
+ 0xF9FD,
+ 0xF9FE,
+ 0xF9FF,
+ 0xFA00,
+ 0xFA01,
+ 0xFA02,
+ 0xFA03,
+ 0xFA04,
+ 0xFA05,
+ 0xFA06,
+ 0xFA07,
+ 0xFA08,
+ 0xFA09,
+ 0xFA0A,
+ 0xFA0B,
+ 0xFA0C,
+ 0xFA0D,
+ 0xFA0E,
+ 0xFA10,
+ 0xFA11,
+ 0xFA12,
+ 0xFA13,
+ 0xFA15,
+ 0xFA16,
+ 0xFA17,
+ 0xFA18,
+ 0xFA19,
+ 0xFA1A,
+ 0xFA1B,
+ 0xFA1C,
+ 0xFA1D,
+ 0xFA1E,
+ 0xFA1F,
+ 0xFA20,
+ 0xFA21,
+ 0xFA22,
+ 0xFA23,
+ 0xFA25,
+ 0xFA26,
+ 0xFA27,
+ 0xFA2A,
+ 0xFA2B,
+ 0xFA2C,
+ 0xFA2D,
+ 0xFA2E,
+ 0xFA2F,
+ 0xFA30,
+ 0xFA31,
+ 0xFA32,
+ 0xFA33,
+ 0xFA34,
+ 0xFA35,
+ 0xFA36,
+ 0xFA37,
+ 0xFA38,
+ 0xFA39,
+ 0xFA3A,
+ 0xFA3B,
+ 0xFA3C,
+ 0xFA3D,
+ 0xFA3E,
+ 0xFA3F,
+ 0xFA40,
+ 0xFA41,
+ 0xFA42,
+ 0xFA43,
+ 0xFA44,
+ 0xFA45,
+ 0xFA46,
+ 0xFA47,
+ 0xFA48,
+ 0xFA49,
+ 0xFA4A,
+ 0xFA4B,
+ 0xFA4C,
+ 0xFA4D,
+ 0xFA4E,
+ 0xFA4F,
+ 0xFA50,
+ 0xFA51,
+ 0xFA52,
+ 0xFA53,
+ 0xFA54,
+ 0xFA55,
+ 0xFA56,
+ 0xFA57,
+ 0xFA58,
+ 0xFA59,
+ 0xFA5A,
+ 0xFA5B,
+ 0xFA5C,
+ 0xFA5D,
+ 0xFA5F,
+ 0xFA60,
+ 0xFA61,
+ 0xFA62,
+ 0xFA63,
+ 0xFA64,
+ 0xFA65,
+ 0xFA66,
+ 0xFA67,
+ 0xFA68,
+ 0xFA69,
+ 0xFA6A,
+ 0xFA6B,
+ 0xFA6C,
+ 0xFA6D,
+ 0xFA6E,
+ 0xFA70,
+ 0xFA71,
+ 0xFA72,
+ 0xFA73,
+ 0xFA74,
+ 0xFA75,
+ 0xFA76,
+ 0xFA77,
+ 0xFA78,
+ 0xFA79,
+ 0xFA7A,
+ 0xFA7B,
+ 0xFA7C,
+ 0xFA7D,
+ 0xFA7E,
+ 0xFA7F,
+ 0xFA80,
+ 0xFA81,
+ 0xFA82,
+ 0xFA83,
+ 0xFA84,
+ 0xFA85,
+ 0xFA86,
+ 0xFA87,
+ 0xFA88,
+ 0xFA89,
+ 0xFA8A,
+ 0xFA8B,
+ 0xFA8C,
+ 0xFA8D,
+ 0xFA8E,
+ 0xFA8F,
+ 0xFA90,
+ 0xFA91,
+ 0xFA92,
+ 0xFA93,
+ 0xFA94,
+ 0xFA95,
+ 0xFA96,
+ 0xFA97,
+ 0xFA98,
+ 0xFA99,
+ 0xFA9A,
+ 0xFA9B,
+ 0xFA9C,
+ 0xFA9D,
+ 0xFA9E,
+ 0xFA9F,
+ 0xFAA0,
+ 0xFAA1,
+ 0xFAA2,
+ 0xFAA3,
+ 0xFAA4,
+ 0xFAA5,
+ 0xFAA6,
+ 0xFAA7,
+ 0xFAA8,
+ 0xFAA9,
+ 0xFAAA,
+ 0xFAAB,
+ 0xFAAC,
+ 0xFAAD,
+ 0xFAAE,
+ 0xFAAF,
+ 0xFAB0,
+ 0xFAB1,
+ 0xFAB2,
+ 0xFAB3,
+ 0xFAB4,
+ 0xFAB5,
+ 0xFAB6,
+ 0xFAB7,
+ 0xFAB8,
+ 0xFAB9,
+ 0xFABA,
+ 0xFABB,
+ 0xFABC,
+ 0xFABD,
+ 0xFABE,
+ 0xFABF,
+ 0xFAC0,
+ 0xFAC1,
+ 0xFAC2,
+ 0xFAC3,
+ 0xFAC4,
+ 0xFAC5,
+ 0xFAC6,
+ 0xFAC7,
+ 0xFAC8,
+ 0xFAC9,
+ 0xFACA,
+ 0xFACB,
+ 0xFACC,
+ 0xFACD,
+ 0xFACE,
+ 0xFACF,
+ 0xFAD0,
+ 0xFAD1,
+ 0xFAD2,
+ 0xFAD3,
+ 0xFAD4,
+ 0xFAD5,
+ 0xFAD6,
+ 0xFAD7,
+ 0xFAD8,
+ 0xFAD9,
+ 0xFADA,
+ 0xFB00,
+ 0xFB01,
+ 0xFB02,
+ 0xFB03,
+ 0xFB04,
+ 0xFB05,
+ 0xFB07,
+ 0xFB13,
+ 0xFB14,
+ 0xFB15,
+ 0xFB16,
+ 0xFB17,
+ 0xFB18,
+ 0xFB1D,
+ 0xFB1E,
+ 0xFB1F,
+ 0xFB20,
+ 0xFB21,
+ 0xFB22,
+ 0xFB23,
+ 0xFB24,
+ 0xFB25,
+ 0xFB26,
+ 0xFB27,
+ 0xFB28,
+ 0xFB29,
+ 0xFB2A,
+ 0xFB2B,
+ 0xFB2C,
+ 0xFB2D,
+ 0xFB2E,
+ 0xFB2F,
+ 0xFB30,
+ 0xFB31,
+ 0xFB32,
+ 0xFB33,
+ 0xFB34,
+ 0xFB35,
+ 0xFB36,
+ 0xFB37,
+ 0xFB38,
+ 0xFB39,
+ 0xFB3A,
+ 0xFB3B,
+ 0xFB3C,
+ 0xFB3D,
+ 0xFB3E,
+ 0xFB3F,
+ 0xFB40,
+ 0xFB41,
+ 0xFB42,
+ 0xFB43,
+ 0xFB44,
+ 0xFB45,
+ 0xFB46,
+ 0xFB47,
+ 0xFB48,
+ 0xFB49,
+ 0xFB4A,
+ 0xFB4B,
+ 0xFB4C,
+ 0xFB4D,
+ 0xFB4E,
+ 0xFB4F,
+ 0xFB50,
+ 0xFB52,
+ 0xFB56,
+ 0xFB5A,
+ 0xFB5E,
+ 0xFB62,
+ 0xFB66,
+ 0xFB6A,
+ 0xFB6E,
+ 0xFB72,
+ 0xFB76,
+ 0xFB7A,
+ 0xFB7E,
+ 0xFB82,
+ 0xFB84,
+ 0xFB86,
+ 0xFB88,
+ 0xFB8A,
+ 0xFB8C,
+ 0xFB8E,
+ 0xFB92,
+ 0xFB96,
+ 0xFB9A,
+ 0xFB9E,
+ 0xFBA0,
+ 0xFBA4,
+ 0xFBA6,
+ 0xFBAA,
+ 0xFBAE,
+ 0xFBB0,
+ 0xFBB2,
+ 0xFBD3,
+ 0xFBD7,
+ 0xFBD9,
+ 0xFBDB,
+ 0xFBDD,
+ 0xFBDE,
+ 0xFBE0,
+ 0xFBE2,
+ 0xFBE4,
+ 0xFBE8,
+ 0xFBEA,
+ 0xFBEC,
+ 0xFBEE,
+ 0xFBF0,
+ 0xFBF2,
+ 0xFBF4,
+ 0xFBF6,
+ 0xFBF9,
+ 0xFBFC,
+ 0xFC00,
+ 0xFC01,
+ 0xFC02,
+ 0xFC03,
+ 0xFC04,
+ 0xFC05,
+ 0xFC06,
+ 0xFC07,
+ 0xFC08,
+ 0xFC09,
+ 0xFC0A,
+ 0xFC0B,
+ 0xFC0C,
+ 0xFC0D,
+ 0xFC0E,
+ 0xFC0F,
+ 0xFC10,
+ 0xFC11,
+ 0xFC12,
+ 0xFC13,
+ 0xFC14,
+ 0xFC15,
+ 0xFC16,
+ 0xFC17,
+ 0xFC18,
+ 0xFC19,
+ 0xFC1A,
+ 0xFC1B,
+ 0xFC1C,
+ 0xFC1D,
+ 0xFC1E,
+ 0xFC1F,
+ 0xFC20,
+ 0xFC21,
+ 0xFC22,
+ 0xFC23,
+ 0xFC24,
+ 0xFC25,
+ 0xFC26,
+ 0xFC27,
+ 0xFC28,
+ 0xFC29,
+ 0xFC2A,
+ 0xFC2B,
+ 0xFC2C,
+ 0xFC2D,
+ 0xFC2E,
+ 0xFC2F,
+ 0xFC30,
+ 0xFC31,
+ 0xFC32,
+ 0xFC33,
+ 0xFC34,
+ 0xFC35,
+ 0xFC36,
+ 0xFC37,
+ 0xFC38,
+ 0xFC39,
+ 0xFC3A,
+ 0xFC3B,
+ 0xFC3C,
+ 0xFC3D,
+ 0xFC3E,
+ 0xFC3F,
+ 0xFC40,
+ 0xFC41,
+ 0xFC42,
+ 0xFC43,
+ 0xFC44,
+ 0xFC45,
+ 0xFC46,
+ 0xFC47,
+ 0xFC48,
+ 0xFC49,
+ 0xFC4A,
+ 0xFC4B,
+ 0xFC4C,
+ 0xFC4D,
+ 0xFC4E,
+ 0xFC4F,
+ 0xFC50,
+ 0xFC51,
+ 0xFC52,
+ 0xFC53,
+ 0xFC54,
+ 0xFC55,
+ 0xFC56,
+ 0xFC57,
+ 0xFC58,
+ 0xFC59,
+ 0xFC5A,
+ 0xFC5B,
+ 0xFC5C,
+ 0xFC5D,
+ 0xFC5E,
+ 0xFC5F,
+ 0xFC60,
+ 0xFC61,
+ 0xFC62,
+ 0xFC63,
+ 0xFC64,
+ 0xFC65,
+ 0xFC66,
+ 0xFC67,
+ 0xFC68,
+ 0xFC69,
+ 0xFC6A,
+ 0xFC6B,
+ 0xFC6C,
+ 0xFC6D,
+ 0xFC6E,
+ 0xFC6F,
+ 0xFC70,
+ 0xFC71,
+ 0xFC72,
+ 0xFC73,
+ 0xFC74,
+ 0xFC75,
+ 0xFC76,
+ 0xFC77,
+ 0xFC78,
+ 0xFC79,
+ 0xFC7A,
+ 0xFC7B,
+ 0xFC7C,
+ 0xFC7D,
+ 0xFC7E,
+ 0xFC7F,
+ 0xFC80,
+ 0xFC81,
+ 0xFC82,
+ 0xFC83,
+ 0xFC84,
+ 0xFC85,
+ 0xFC86,
+ 0xFC87,
+ 0xFC88,
+ 0xFC89,
+ 0xFC8A,
+ 0xFC8B,
+ 0xFC8C,
+ 0xFC8D,
+ 0xFC8E,
+ 0xFC8F,
+ 0xFC90,
+ 0xFC91,
+ 0xFC92,
+ 0xFC93,
+ 0xFC94,
+ 0xFC95,
+ 0xFC96,
+ 0xFC97,
+ 0xFC98,
+ 0xFC99,
+ 0xFC9A,
+ 0xFC9B,
+ 0xFC9C,
+ 0xFC9D,
+ 0xFC9E,
+ 0xFC9F,
+ 0xFCA0,
+ 0xFCA1,
+ 0xFCA2,
+ 0xFCA3,
+ 0xFCA4,
+ 0xFCA5,
+ 0xFCA6,
+ 0xFCA7,
+ 0xFCA8,
+ 0xFCA9,
+ 0xFCAA,
+ 0xFCAB,
+ 0xFCAC,
+ 0xFCAD,
+ 0xFCAE,
+ 0xFCAF,
+ 0xFCB0,
+ 0xFCB1,
+ 0xFCB2,
+ 0xFCB3,
+ 0xFCB4,
+ 0xFCB5,
+ 0xFCB6,
+ 0xFCB7,
+ 0xFCB8,
+ 0xFCB9,
+ 0xFCBA,
+ 0xFCBB,
+ 0xFCBC,
+ 0xFCBD,
+ 0xFCBE,
+ 0xFCBF,
+ 0xFCC0,
+ 0xFCC1,
+ 0xFCC2,
+ 0xFCC3,
+ 0xFCC4,
+ 0xFCC5,
+ 0xFCC6,
+ 0xFCC7,
+ 0xFCC8,
+ 0xFCC9,
+ 0xFCCA,
+ 0xFCCB,
+ 0xFCCC,
+ 0xFCCD,
+ 0xFCCE,
+ 0xFCCF,
+ 0xFCD0,
+ 0xFCD1,
+ 0xFCD2,
+ 0xFCD3,
+ 0xFCD4,
+ 0xFCD5,
+ 0xFCD6,
+ 0xFCD7,
+ 0xFCD8,
+ 0xFCD9,
+ 0xFCDA,
+ 0xFCDB,
+ 0xFCDC,
+ 0xFCDD,
+ 0xFCDE,
+ 0xFCDF,
+ 0xFCE0,
+ 0xFCE1,
+ 0xFCE2,
+ 0xFCE3,
+ 0xFCE4,
+ 0xFCE5,
+ 0xFCE6,
+ 0xFCE7,
+ 0xFCE8,
+ 0xFCE9,
+ 0xFCEA,
+ 0xFCEB,
+ 0xFCEC,
+ 0xFCED,
+ 0xFCEE,
+ 0xFCEF,
+ 0xFCF0,
+ 0xFCF1,
+ 0xFCF2,
+ 0xFCF3,
+ 0xFCF4,
+ 0xFCF5,
+ 0xFCF6,
+ 0xFCF7,
+ 0xFCF8,
+ 0xFCF9,
+ 0xFCFA,
+ 0xFCFB,
+ 0xFCFC,
+ 0xFCFD,
+ 0xFCFE,
+ 0xFCFF,
+ 0xFD00,
+ 0xFD01,
+ 0xFD02,
+ 0xFD03,
+ 0xFD04,
+ 0xFD05,
+ 0xFD06,
+ 0xFD07,
+ 0xFD08,
+ 0xFD09,
+ 0xFD0A,
+ 0xFD0B,
+ 0xFD0C,
+ 0xFD0D,
+ 0xFD0E,
+ 0xFD0F,
+ 0xFD10,
+ 0xFD11,
+ 0xFD12,
+ 0xFD13,
+ 0xFD14,
+ 0xFD15,
+ 0xFD16,
+ 0xFD17,
+ 0xFD18,
+ 0xFD19,
+ 0xFD1A,
+ 0xFD1B,
+ 0xFD1C,
+ 0xFD1D,
+ 0xFD1E,
+ 0xFD1F,
+ 0xFD20,
+ 0xFD21,
+ 0xFD22,
+ 0xFD23,
+ 0xFD24,
+ 0xFD25,
+ 0xFD26,
+ 0xFD27,
+ 0xFD28,
+ 0xFD29,
+ 0xFD2A,
+ 0xFD2B,
+ 0xFD2C,
+ 0xFD2D,
+ 0xFD2E,
+ 0xFD2F,
+ 0xFD30,
+ 0xFD31,
+ 0xFD32,
+ 0xFD33,
+ 0xFD34,
+ 0xFD35,
+ 0xFD36,
+ 0xFD37,
+ 0xFD38,
+ 0xFD39,
+ 0xFD3A,
+ 0xFD3B,
+ 0xFD3C,
+ 0xFD3E,
+ 0xFD50,
+ 0xFD51,
+ 0xFD53,
+ 0xFD54,
+ 0xFD55,
+ 0xFD56,
+ 0xFD57,
+ 0xFD58,
+ 0xFD5A,
+ 0xFD5B,
+ 0xFD5C,
+ 0xFD5D,
+ 0xFD5E,
+ 0xFD5F,
+ 0xFD61,
+ 0xFD62,
+ 0xFD64,
+ 0xFD66,
+ 0xFD67,
+ 0xFD69,
+ 0xFD6A,
+ 0xFD6C,
+ 0xFD6E,
+ 0xFD6F,
+ 0xFD71,
+ 0xFD73,
+ 0xFD74,
+ 0xFD75,
+ 0xFD76,
+ 0xFD78,
+ 0xFD79,
+ 0xFD7A,
+ 0xFD7B,
+ 0xFD7C,
+ 0xFD7E,
+ 0xFD7F,
+ 0xFD80,
+ 0xFD81,
+ 0xFD82,
+ 0xFD83,
+ 0xFD85,
+ 0xFD87,
+ 0xFD89,
+ 0xFD8A,
+ 0xFD8B,
+ 0xFD8C,
+ 0xFD8D,
+ 0xFD8E,
+ 0xFD8F,
+ 0xFD90,
+ 0xFD92,
+ 0xFD93,
+ 0xFD94,
+ 0xFD95,
+ 0xFD96,
+ 0xFD97,
+ 0xFD99,
+ 0xFD9A,
+ 0xFD9B,
+ 0xFD9C,
+ 0xFD9E,
+ 0xFD9F,
+ 0xFDA0,
+ 0xFDA1,
+ 0xFDA2,
+ 0xFDA3,
+ 0xFDA4,
+ 0xFDA5,
+ 0xFDA6,
+ 0xFDA7,
+ 0xFDA8,
+ 0xFDA9,
+ 0xFDAA,
+ 0xFDAB,
+ 0xFDAC,
+ 0xFDAD,
+ 0xFDAE,
+ 0xFDAF,
+ 0xFDB0,
+ 0xFDB1,
+ 0xFDB2,
+ 0xFDB3,
+ 0xFDB4,
+ 0xFDB5,
+ 0xFDB6,
+ 0xFDB7,
+ 0xFDB8,
+ 0xFDB9,
+ 0xFDBA,
+ 0xFDBB,
+ 0xFDBC,
+ 0xFDBD,
+ 0xFDBE,
+ 0xFDBF,
+ 0xFDC0,
+ 0xFDC1,
+ 0xFDC2,
+ 0xFDC3,
+ 0xFDC4,
+ 0xFDC5,
+ 0xFDC6,
+ 0xFDC7,
+ 0xFDC8,
+ 0xFDD0,
+ 0xFDF0,
+ 0xFDF1,
+ 0xFDF2,
+ 0xFDF3,
+ 0xFDF4,
+ 0xFDF5,
+ 0xFDF6,
+ 0xFDF7,
+ 0xFDF8,
+ 0xFDF9,
+ 0xFDFA,
+ 0xFDFB,
+ 0xFDFC,
+ 0xFDFD,
+ 0xFE00,
+ 0xFE10,
+ 0xFE11,
+ 0xFE12,
+ 0xFE13,
+ 0xFE14,
+ 0xFE15,
+ 0xFE16,
+ 0xFE17,
+ 0xFE18,
+ 0xFE19,
+ 0xFE20,
+ 0xFE30,
+ 0xFE31,
+ 0xFE32,
+ 0xFE33,
+ 0xFE35,
+ 0xFE36,
+ 0xFE37,
+ 0xFE38,
+ 0xFE39,
+ 0xFE3A,
+ 0xFE3B,
+ 0xFE3C,
+ 0xFE3D,
+ 0xFE3E,
+ 0xFE3F,
+ 0xFE40,
+ 0xFE41,
+ 0xFE42,
+ 0xFE43,
+ 0xFE44,
+ 0xFE45,
+ 0xFE47,
+ 0xFE48,
+ 0xFE49,
+ 0xFE4D,
+ 0xFE50,
+ 0xFE51,
+ 0xFE52,
+ 0xFE54,
+ 0xFE55,
+ 0xFE56,
+ 0xFE57,
+ 0xFE58,
+ 0xFE59,
+ 0xFE5A,
+ 0xFE5B,
+ 0xFE5C,
+ 0xFE5D,
+ 0xFE5E,
+ 0xFE5F,
+ 0xFE60,
+ 0xFE61,
+ 0xFE62,
+ 0xFE63,
+ 0xFE64,
+ 0xFE65,
+ 0xFE66,
+ 0xFE67,
+ 0xFE68,
+ 0xFE69,
+ 0xFE6A,
+ 0xFE6B,
+ 0xFE6C,
+ 0xFE70,
+ 0xFE71,
+ 0xFE72,
+ 0xFE73,
+ 0xFE74,
+ 0xFE75,
+ 0xFE76,
+ 0xFE77,
+ 0xFE78,
+ 0xFE79,
+ 0xFE7A,
+ 0xFE7B,
+ 0xFE7C,
+ 0xFE7D,
+ 0xFE7E,
+ 0xFE7F,
+ 0xFE80,
+ 0xFE81,
+ 0xFE83,
+ 0xFE85,
+ 0xFE87,
+ 0xFE89,
+ 0xFE8D,
+ 0xFE8F,
+ 0xFE93,
+ 0xFE95,
+ 0xFE99,
+ 0xFE9D,
+ 0xFEA1,
+ 0xFEA5,
+ 0xFEA9,
+ 0xFEAB,
+ 0xFEAD,
+ 0xFEAF,
+ 0xFEB1,
+ 0xFEB5,
+ 0xFEB9,
+ 0xFEBD,
+ 0xFEC1,
+ 0xFEC5,
+ 0xFEC9,
+ 0xFECD,
+ 0xFED1,
+ 0xFED5,
+ 0xFED9,
+ 0xFEDD,
+ 0xFEE1,
+ 0xFEE5,
+ 0xFEE9,
+ 0xFEED,
+ 0xFEEF,
+ 0xFEF1,
+ 0xFEF5,
+ 0xFEF7,
+ 0xFEF9,
+ 0xFEFB,
+ 0xFEFD,
+ 0xFEFF,
+ 0xFF00,
+ 0xFF01,
+ 0xFF02,
+ 0xFF03,
+ 0xFF04,
+ 0xFF05,
+ 0xFF06,
+ 0xFF07,
+ 0xFF08,
+ 0xFF09,
+ 0xFF0A,
+ 0xFF0B,
+ 0xFF0C,
+ 0xFF0D,
+ 0xFF0E,
+ 0xFF0F,
+ 0xFF10,
+ 0xFF11,
+ 0xFF12,
+ 0xFF13,
+ 0xFF14,
+ 0xFF15,
+ 0xFF16,
+ 0xFF17,
+ 0xFF18,
+ 0xFF19,
+ 0xFF1A,
+ 0xFF1B,
+ 0xFF1C,
+ 0xFF1D,
+ 0xFF1E,
+ 0xFF1F,
+ 0xFF20,
+ 0xFF21,
+ 0xFF22,
+ 0xFF23,
+ 0xFF24,
+ 0xFF25,
+ 0xFF26,
+ 0xFF27,
+ 0xFF28,
+ 0xFF29,
+ 0xFF2A,
+ 0xFF2B,
+ 0xFF2C,
+ 0xFF2D,
+ 0xFF2E,
+ 0xFF2F,
+ 0xFF30,
+ 0xFF31,
+ 0xFF32,
+ 0xFF33,
+ 0xFF34,
+ 0xFF35,
+ 0xFF36,
+ 0xFF37,
+ 0xFF38,
+ 0xFF39,
+ 0xFF3A,
+ 0xFF3B,
+ 0xFF3C,
+ 0xFF3D,
+ 0xFF3E,
+ 0xFF3F,
+ 0xFF40,
+ 0xFF41,
+ 0xFF42,
+ 0xFF43,
+ 0xFF44,
+ 0xFF45,
+ 0xFF46,
+ 0xFF47,
+ 0xFF48,
+ 0xFF49,
+ 0xFF4A,
+ 0xFF4B,
+ 0xFF4C,
+ 0xFF4D,
+ 0xFF4E,
+ 0xFF4F,
+ 0xFF50,
+ 0xFF51,
+ 0xFF52,
+ 0xFF53,
+ 0xFF54,
+ 0xFF55,
+ 0xFF56,
+ 0xFF57,
+ 0xFF58,
+ 0xFF59,
+ 0xFF5A,
+ 0xFF5B,
+ 0xFF5C,
+ 0xFF5D,
+ 0xFF5E,
+ 0xFF5F,
+ 0xFF60,
+ 0xFF61,
+ 0xFF62,
+ 0xFF63,
+ 0xFF64,
+ 0xFF65,
+ 0xFF66,
+ 0xFF67,
+ 0xFF68,
+ 0xFF69,
+ 0xFF6A,
+ 0xFF6B,
+ 0xFF6C,
+ 0xFF6D,
+ 0xFF6E,
+ 0xFF6F,
+ 0xFF70,
+ 0xFF71,
+ 0xFF72,
+ 0xFF73,
+ 0xFF74,
+ 0xFF75,
+ 0xFF76,
+ 0xFF77,
+ 0xFF78,
+ 0xFF79,
+ 0xFF7A,
+ 0xFF7B,
+ 0xFF7C,
+ 0xFF7D,
+ 0xFF7E,
+ 0xFF7F,
+ 0xFF80,
+ 0xFF81,
+ 0xFF82,
+ 0xFF83,
+ 0xFF84,
+ 0xFF85,
+ 0xFF86,
+ 0xFF87,
+ 0xFF88,
+ 0xFF89,
+ 0xFF8A,
+ 0xFF8B,
+ 0xFF8C,
+ 0xFF8D,
+ 0xFF8E,
+ 0xFF8F,
+ 0xFF90,
+ 0xFF91,
+ 0xFF92,
+ 0xFF93,
+ 0xFF94,
+ 0xFF95,
+ 0xFF96,
+ 0xFF97,
+ 0xFF98,
+ 0xFF99,
+ 0xFF9A,
+ 0xFF9B,
+ 0xFF9C,
+ 0xFF9D,
+ 0xFF9E,
+ 0xFF9F,
+ 0xFFA0,
+ 0xFFA1,
+ 0xFFA2,
+ 0xFFA3,
+ 0xFFA4,
+ 0xFFA5,
+ 0xFFA6,
+ 0xFFA7,
+ 0xFFA8,
+ 0xFFA9,
+ 0xFFAA,
+ 0xFFAB,
+ 0xFFAC,
+ 0xFFAD,
+ 0xFFAE,
+ 0xFFAF,
+ 0xFFB0,
+ 0xFFB1,
+ 0xFFB2,
+ 0xFFB3,
+ 0xFFB4,
+ 0xFFB5,
+ 0xFFB6,
+ 0xFFB7,
+ 0xFFB8,
+ 0xFFB9,
+ 0xFFBA,
+ 0xFFBB,
+ 0xFFBC,
+ 0xFFBD,
+ 0xFFBE,
+ 0xFFBF,
+ 0xFFC2,
+ 0xFFC3,
+ 0xFFC4,
+ 0xFFC5,
+ 0xFFC6,
+ 0xFFC7,
+ 0xFFC8,
+ 0xFFCA,
+ 0xFFCB,
+ 0xFFCC,
+ 0xFFCD,
+ 0xFFCE,
+ 0xFFCF,
+ 0xFFD0,
+ 0xFFD2,
+ 0xFFD3,
+ 0xFFD4,
+ 0xFFD5,
+ 0xFFD6,
+ 0xFFD7,
+ 0xFFD8,
+ 0xFFDA,
+ 0xFFDB,
+ 0xFFDC,
+ 0xFFDD,
+ 0xFFE0,
+ 0xFFE1,
+ 0xFFE2,
+ 0xFFE3,
+ 0xFFE4,
+ 0xFFE5,
+ 0xFFE6,
+ 0xFFE7,
+ 0xFFE8,
+ 0xFFE9,
+ 0xFFEA,
+ 0xFFEB,
+ 0xFFEC,
+ 0xFFED,
+ 0xFFEE,
+ 0xFFEF,
+ 0x10000,
+ 0x1000C,
+ 0x1000D,
+ 0x10027,
+ 0x10028,
+ 0x1003B,
+ 0x1003C,
+ 0x1003E,
+ 0x1003F,
+ 0x1004E,
+ 0x10050,
+ 0x1005E,
+ 0x10080,
+ 0x100FB,
+ 0x10100,
+ 0x10103,
+ 0x10107,
+ 0x10134,
+ 0x10137,
+ 0x1018F,
+ 0x10190,
+ 0x1019D,
+ 0x101A0,
+ 0x101A1,
+ 0x101D0,
+ 0x101FE,
+ 0x10280,
+ 0x1029D,
+ 0x102A0,
+ 0x102D1,
+ 0x102E0,
+ 0x102FC,
+ 0x10300,
+ 0x10324,
+ 0x1032D,
+ 0x1034B,
+ 0x10350,
+ 0x1037B,
+ 0x10380,
+ 0x1039E,
+ 0x1039F,
+ 0x103C4,
+ 0x103C8,
+ 0x103D6,
+ 0x10400,
+ 0x10401,
+ 0x10402,
+ 0x10403,
+ 0x10404,
+ 0x10405,
+ 0x10406,
+ 0x10407,
+ 0x10408,
+ 0x10409,
+ 0x1040A,
+ 0x1040B,
+ 0x1040C,
+ 0x1040D,
+ 0x1040E,
+ 0x1040F,
+ 0x10410,
+ 0x10411,
+ 0x10412,
+ 0x10413,
+ 0x10414,
+ 0x10415,
+ 0x10416,
+ 0x10417,
+ 0x10418,
+ 0x10419,
+ 0x1041A,
+ 0x1041B,
+ 0x1041C,
+ 0x1041D,
+ 0x1041E,
+ 0x1041F,
+ 0x10420,
+ 0x10421,
+ 0x10422,
+ 0x10423,
+ 0x10424,
+ 0x10425,
+ 0x10426,
+ 0x10427,
+ 0x10428,
+ 0x1049E,
+ 0x104A0,
+ 0x104AA,
+ 0x104B0,
+ 0x104B1,
+ 0x104B2,
+ 0x104B3,
+ 0x104B4,
+ 0x104B5,
+ 0x104B6,
+ 0x104B7,
+ 0x104B8,
+ 0x104B9,
+ 0x104BA,
+ 0x104BB,
+ 0x104BC,
+ 0x104BD,
+ 0x104BE,
+ 0x104BF,
+ 0x104C0,
+ 0x104C1,
+ 0x104C2,
+ 0x104C3,
+ 0x104C4,
+ 0x104C5,
+ 0x104C6,
+ 0x104C7,
+ 0x104C8,
+ 0x104C9,
+ 0x104CA,
+ 0x104CB,
+ 0x104CC,
+ 0x104CD,
+ 0x104CE,
+ 0x104CF,
+ 0x104D0,
+ 0x104D1,
+ 0x104D2,
+ 0x104D3,
+ 0x104D4,
+ 0x104D8,
+ 0x104FC,
+ 0x10500,
+ 0x10528,
+ 0x10530,
+ 0x10564,
+ 0x1056F,
+ 0x10570,
+ 0x10571,
+ 0x10572,
+ 0x10573,
+ 0x10574,
+ 0x10575,
+ 0x10576,
+ 0x10577,
+ 0x10578,
+ 0x10579,
+ 0x1057A,
+ 0x1057B,
+ 0x1057C,
+ 0x1057D,
+ 0x1057E,
+ 0x1057F,
+ 0x10580,
+ 0x10581,
+ 0x10582,
+ 0x10583,
+ 0x10584,
+ 0x10585,
+ 0x10586,
+ 0x10587,
+ 0x10588,
+ 0x10589,
+ 0x1058A,
+ 0x1058B,
+ 0x1058C,
+ 0x1058D,
+ 0x1058E,
+ 0x1058F,
+ 0x10590,
+ 0x10591,
+ 0x10592,
+ 0x10593,
+ 0x10594,
+ 0x10595,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x105C0,
+ 0x105F4,
+ 0x10600,
+ 0x10737,
+ 0x10740,
+ 0x10756,
+ 0x10760,
+ 0x10768,
+ 0x10780,
+ 0x10781,
+ 0x10782,
+ 0x10783,
+ 0x10784,
+ 0x10785,
+ 0x10786,
+ 0x10787,
+ 0x10788,
+ 0x10789,
+ 0x1078A,
+ 0x1078B,
+ 0x1078C,
+ 0x1078D,
+ 0x1078E,
+ 0x1078F,
+ 0x10790,
+ 0x10791,
+ 0x10792,
+ 0x10793,
+ 0x10794,
+ 0x10795,
+ 0x10796,
+ 0x10797,
+ 0x10798,
+ 0x10799,
+ 0x1079A,
+ 0x1079B,
+ 0x1079C,
+ 0x1079D,
+ 0x1079E,
+ 0x1079F,
+ 0x107A0,
+ 0x107A1,
+ 0x107A2,
+ 0x107A3,
+ 0x107A4,
+ 0x107A5,
+ 0x107A6,
+ 0x107A7,
+ 0x107A8,
+ 0x107A9,
+ 0x107AA,
+ 0x107AB,
+ 0x107AC,
+ 0x107AD,
+ 0x107AE,
+ 0x107AF,
+ 0x107B0,
+ 0x107B1,
+ 0x107B2,
+ 0x107B3,
+ 0x107B4,
+ 0x107B5,
+ 0x107B6,
+ 0x107B7,
+ 0x107B8,
+ 0x107B9,
+ 0x107BA,
+ 0x107BB,
+ 0x10800,
+ 0x10806,
+ 0x10808,
+ 0x10809,
+ 0x1080A,
+ 0x10836,
+ 0x10837,
+ 0x10839,
+ 0x1083C,
+ 0x1083D,
+ 0x1083F,
+ 0x10856,
+ 0x10857,
+ 0x1089F,
+ 0x108A7,
+ 0x108B0,
+ 0x108E0,
+ 0x108F3,
+ 0x108F4,
+ 0x108F6,
+ 0x108FB,
+ 0x1091C,
+ 0x1091F,
+ 0x1093A,
+ 0x1093F,
+ 0x1095A,
+ 0x10980,
+ 0x109B8,
+ 0x109BC,
+ 0x109D0,
+ 0x109D2,
+ 0x10A04,
+ 0x10A05,
+ 0x10A07,
+ 0x10A0C,
+ 0x10A14,
+ 0x10A15,
+ 0x10A18,
+ 0x10A19,
+ 0x10A36,
+ 0x10A38,
+ 0x10A3B,
+ 0x10A3F,
+ 0x10A49,
+ 0x10A50,
+ 0x10A59,
+ 0x10A60,
+ 0x10AA0,
+ 0x10AC0,
+ 0x10AE7,
+ 0x10AEB,
+ 0x10AF7,
+ 0x10B00,
+ 0x10B36,
+ 0x10B39,
+ 0x10B56,
+ 0x10B58,
+ 0x10B73,
+ 0x10B78,
+ 0x10B92,
+ 0x10B99,
+ 0x10B9D,
+ 0x10BA9,
+ 0x10BB0,
+ 0x10C00,
+ 0x10C49,
+ 0x10C80,
+ 0x10C81,
+ 0x10C82,
+ 0x10C83,
+ 0x10C84,
+ 0x10C85,
+ 0x10C86,
+ 0x10C87,
+ 0x10C88,
+ 0x10C89,
+ 0x10C8A,
+ 0x10C8B,
+ 0x10C8C,
+ 0x10C8D,
+ 0x10C8E,
+ 0x10C8F,
+ 0x10C90,
+ 0x10C91,
+ 0x10C92,
+ 0x10C93,
+ 0x10C94,
+ 0x10C95,
+ 0x10C96,
+ 0x10C97,
+ 0x10C98,
+ 0x10C99,
+ 0x10C9A,
+ 0x10C9B,
+ 0x10C9C,
+ 0x10C9D,
+ 0x10C9E,
+ 0x10C9F,
+ 0x10CA0,
+ 0x10CA1,
+ 0x10CA2,
+ 0x10CA3,
+ 0x10CA4,
+ 0x10CA5,
+ 0x10CA6,
+ 0x10CA7,
+ 0x10CA8,
+ 0x10CA9,
+ 0x10CAA,
+ 0x10CAB,
+ 0x10CAC,
+ 0x10CAD,
+ 0x10CAE,
+ 0x10CAF,
+ 0x10CB0,
+ 0x10CB1,
+ 0x10CB2,
+ 0x10CB3,
+ 0x10CC0,
+ 0x10CF3,
+ 0x10CFA,
+ 0x10D28,
+ 0x10D30,
+ 0x10D3A,
+ 0x10D40,
+ 0x10D50,
+ 0x10D51,
+ 0x10D52,
+ 0x10D53,
+ 0x10D54,
+ 0x10D55,
+ 0x10D56,
+ 0x10D57,
+ 0x10D58,
+ 0x10D59,
+ 0x10D5A,
+ 0x10D5B,
+ 0x10D5C,
+ 0x10D5D,
+ 0x10D5E,
+ 0x10D5F,
+ 0x10D60,
+ 0x10D61,
+ 0x10D62,
+ 0x10D63,
+ 0x10D64,
+ 0x10D65,
+ 0x10D66,
+ 0x10D69,
+ 0x10D86,
+ 0x10D8E,
+ 0x10D90,
+ 0x10E60,
+ 0x10E7F,
+ 0x10E80,
+ 0x10EAA,
+ 0x10EAB,
+ 0x10EAE,
+ 0x10EB0,
+ 0x10EB2,
+ 0x10EC2,
+ 0x10EC8,
+ 0x10ED0,
+ 0x10ED9,
+ 0x10EFA,
+ 0x10F28,
+ 0x10F30,
+ 0x10F5A,
+ 0x10F70,
+ 0x10F8A,
+ 0x10FB0,
+ 0x10FCC,
+ 0x10FE0,
+ 0x10FF7,
+ 0x11000,
+ 0x1104E,
+ 0x11052,
+ 0x11076,
+ 0x1107F,
+ 0x110BD,
+ 0x110BE,
+ 0x110C3,
+ 0x110D0,
+ 0x110E9,
+ 0x110F0,
+ 0x110FA,
+ 0x11100,
+ 0x11135,
+ 0x11136,
+ 0x11148,
+ 0x11150,
+ 0x11177,
+ 0x11180,
+ 0x111E0,
+ 0x111E1,
+ 0x111F5,
+ 0x11200,
+ 0x11212,
+ 0x11213,
+ 0x11242,
+ 0x11280,
+ 0x11287,
+ 0x11288,
+ 0x11289,
+ 0x1128A,
+ 0x1128E,
+ 0x1128F,
+ 0x1129E,
+ 0x1129F,
+ 0x112AA,
+ 0x112B0,
+ 0x112EB,
+ 0x112F0,
+ 0x112FA,
+ 0x11300,
+ 0x11304,
+ 0x11305,
+ 0x1130D,
+ 0x1130F,
+ 0x11311,
+ 0x11313,
+ 0x11329,
+ 0x1132A,
+ 0x11331,
+ 0x11332,
+ 0x11334,
+ 0x11335,
+ 0x1133A,
+ 0x1133B,
+ 0x11345,
+ 0x11347,
+ 0x11349,
+ 0x1134B,
+ 0x1134E,
+ 0x11350,
+ 0x11351,
+ 0x11357,
+ 0x11358,
+ 0x1135D,
+ 0x11364,
+ 0x11366,
+ 0x1136D,
+ 0x11370,
+ 0x11375,
+ 0x11380,
+ 0x1138A,
+ 0x1138B,
+ 0x1138C,
+ 0x1138E,
+ 0x1138F,
+ 0x11390,
+ 0x113B6,
+ 0x113B7,
+ 0x113C1,
+ 0x113C2,
+ 0x113C3,
+ 0x113C5,
+ 0x113C6,
+ 0x113C7,
+ 0x113CB,
+ 0x113CC,
+ 0x113D6,
+ 0x113D7,
+ 0x113D9,
+ 0x113E1,
+ 0x113E3,
+ 0x11400,
+ 0x1145C,
+ 0x1145D,
+ 0x11462,
+ 0x11480,
+ 0x114C8,
+ 0x114D0,
+ 0x114DA,
+ 0x11580,
+ 0x115B6,
+ 0x115B8,
+ 0x115DE,
+ 0x11600,
+ 0x11645,
+ 0x11650,
+ 0x1165A,
+ 0x11660,
+ 0x1166D,
+ 0x11680,
+ 0x116BA,
+ 0x116C0,
+ 0x116CA,
+ 0x116D0,
+ 0x116E4,
+ 0x11700,
+ 0x1171B,
+ 0x1171D,
+ 0x1172C,
+ 0x11730,
+ 0x11747,
+ 0x11800,
+ 0x1183C,
+ 0x118A0,
+ 0x118A1,
+ 0x118A2,
+ 0x118A3,
+ 0x118A4,
+ 0x118A5,
+ 0x118A6,
+ 0x118A7,
+ 0x118A8,
+ 0x118A9,
+ 0x118AA,
+ 0x118AB,
+ 0x118AC,
+ 0x118AD,
+ 0x118AE,
+ 0x118AF,
+ 0x118B0,
+ 0x118B1,
+ 0x118B2,
+ 0x118B3,
+ 0x118B4,
+ 0x118B5,
+ 0x118B6,
+ 0x118B7,
+ 0x118B8,
+ 0x118B9,
+ 0x118BA,
+ 0x118BB,
+ 0x118BC,
+ 0x118BD,
+ 0x118BE,
+ 0x118BF,
+ 0x118C0,
+ 0x118F3,
+ 0x118FF,
+ 0x11907,
+ 0x11909,
+ 0x1190A,
+ 0x1190C,
+ 0x11914,
+ 0x11915,
+ 0x11917,
+ 0x11918,
+ 0x11936,
+ 0x11937,
+ 0x11939,
+ 0x1193B,
+ 0x11947,
+ 0x11950,
+ 0x1195A,
+ 0x119A0,
+ 0x119A8,
+ 0x119AA,
+ 0x119D8,
+ 0x119DA,
+ 0x119E5,
+ 0x11A00,
+ 0x11A48,
+ 0x11A50,
+ 0x11AA3,
+ 0x11AB0,
+ 0x11AF9,
+ 0x11B00,
+ 0x11B0A,
+ 0x11B60,
+ 0x11B68,
+ 0x11BC0,
+ 0x11BE2,
+ 0x11BF0,
+ 0x11BFA,
+ 0x11C00,
+ 0x11C09,
+ 0x11C0A,
+ 0x11C37,
+ 0x11C38,
+ 0x11C46,
+ 0x11C50,
+ 0x11C6D,
+ 0x11C70,
+ 0x11C90,
+ 0x11C92,
+ 0x11CA8,
+ 0x11CA9,
+ 0x11CB7,
+ 0x11D00,
+ 0x11D07,
+ 0x11D08,
+ 0x11D0A,
+ 0x11D0B,
+ 0x11D37,
+ 0x11D3A,
+ 0x11D3B,
+ 0x11D3C,
+ 0x11D3E,
+ 0x11D3F,
+ 0x11D48,
+ 0x11D50,
+ 0x11D5A,
+ 0x11D60,
+ 0x11D66,
+ 0x11D67,
+ 0x11D69,
+ 0x11D6A,
+ 0x11D8F,
+ 0x11D90,
+ 0x11D92,
+ 0x11D93,
+ 0x11D99,
+ 0x11DA0,
+ 0x11DAA,
+ 0x11DB0,
+ 0x11DDC,
+ 0x11DE0,
+ 0x11DEA,
+ 0x11EE0,
+ 0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5B,
+ 0x11FB0,
+ 0x11FB1,
+ 0x11FC0,
+ 0x11FF2,
+ 0x11FFF,
+ 0x1239A,
+ 0x12400,
+ 0x1246F,
+ 0x12470,
+ 0x12475,
+ 0x12480,
+ 0x12544,
+ 0x12F90,
+ 0x12FF3,
+ 0x13000,
+ 0x13430,
+ 0x13440,
+ 0x13456,
+ 0x13460,
+ 0x143FB,
+ 0x14400,
+ 0x14647,
+ 0x16100,
+ 0x1613A,
+ 0x16800,
+ 0x16A39,
+ 0x16A40,
+ 0x16A5F,
+ 0x16A60,
+ 0x16A6A,
+ 0x16A6E,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
+ 0x16AD0,
+ 0x16AEE,
+ 0x16AF0,
+ 0x16AF6,
+ 0x16B00,
+ 0x16B46,
+ 0x16B50,
+ 0x16B5A,
+ 0x16B5B,
+ 0x16B62,
+ 0x16B63,
+ 0x16B78,
+ 0x16B7D,
+ 0x16B90,
+ 0x16D40,
+ 0x16D7A,
+ 0x16E40,
+ 0x16E41,
+ 0x16E42,
+ 0x16E43,
+ 0x16E44,
+ 0x16E45,
+ 0x16E46,
+ 0x16E47,
+ 0x16E48,
+ 0x16E49,
+ 0x16E4A,
+ 0x16E4B,
+ 0x16E4C,
+ 0x16E4D,
+ 0x16E4E,
+ 0x16E4F,
+ 0x16E50,
+ 0x16E51,
+ 0x16E52,
+ 0x16E53,
+ 0x16E54,
+ 0x16E55,
+ 0x16E56,
+ 0x16E57,
+ 0x16E58,
+ 0x16E59,
+ 0x16E5A,
+ 0x16E5B,
+ 0x16E5C,
+ 0x16E5D,
+ 0x16E5E,
+ 0x16E5F,
+ 0x16E60,
+ 0x16E9B,
+ 0x16EA0,
+ 0x16EA1,
+ 0x16EA2,
+ 0x16EA3,
+ 0x16EA4,
+ 0x16EA5,
+ 0x16EA6,
+ 0x16EA7,
+ 0x16EA8,
+ 0x16EA9,
+ 0x16EAA,
+ 0x16EAB,
+ 0x16EAC,
+ 0x16EAD,
+ 0x16EAE,
+ 0x16EAF,
+ 0x16EB0,
+ 0x16EB1,
+ 0x16EB2,
+ 0x16EB3,
+ 0x16EB4,
+ 0x16EB5,
+ 0x16EB6,
+ 0x16EB7,
+ 0x16EB8,
+ 0x16EB9,
+ 0x16EBB,
+ 0x16ED4,
+ 0x16F00,
+ 0x16F4B,
+ 0x16F4F,
+ 0x16F88,
+ 0x16F8F,
+ 0x16FA0,
+ 0x16FE0,
+ 0x16FE5,
+ 0x16FF0,
+ 0x16FF7,
+ 0x17000,
+ 0x18CD6,
+ 0x18CFF,
+ 0x18D1F,
+ 0x18D80,
+ 0x18DF3,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1B000,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
+ 0x1B150,
+ 0x1B153,
+ 0x1B155,
+ 0x1B156,
+ 0x1B164,
+ 0x1B168,
+ 0x1B170,
+ 0x1B2FC,
+ 0x1BC00,
+ 0x1BC6B,
+ 0x1BC70,
+ 0x1BC7D,
+ 0x1BC80,
+ 0x1BC89,
+ 0x1BC90,
+ 0x1BC9A,
+ 0x1BC9C,
+ 0x1BCA0,
+ 0x1BCA4,
+ 0x1CC00,
+ 0x1CCD6,
+ 0x1CCD7,
+ 0x1CCD8,
+ 0x1CCD9,
+ 0x1CCDA,
+ 0x1CCDB,
+ 0x1CCDC,
+ 0x1CCDD,
+ 0x1CCDE,
+ 0x1CCDF,
+ 0x1CCE0,
+ 0x1CCE1,
+ 0x1CCE2,
+ 0x1CCE3,
+ 0x1CCE4,
+ 0x1CCE5,
+ 0x1CCE6,
+ 0x1CCE7,
+ 0x1CCE8,
+ 0x1CCE9,
+ 0x1CCEA,
+ 0x1CCEB,
+ 0x1CCEC,
+ 0x1CCED,
+ 0x1CCEE,
+ 0x1CCEF,
+ 0x1CCF0,
+ 0x1CCF1,
+ 0x1CCF2,
+ 0x1CCF3,
+ 0x1CCF4,
+ 0x1CCF5,
+ 0x1CCF6,
+ 0x1CCF7,
+ 0x1CCF8,
+ 0x1CCF9,
+ 0x1CCFA,
+ 0x1CCFD,
+ 0x1CD00,
+ 0x1CEB4,
+ 0x1CEBA,
+ 0x1CED1,
+ 0x1CEE0,
+ 0x1CEF1,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
+ 0x1D000,
+ 0x1D0F6,
+ 0x1D100,
+ 0x1D127,
+ 0x1D129,
+ 0x1D15E,
+ 0x1D15F,
+ 0x1D160,
+ 0x1D161,
+ 0x1D162,
+ 0x1D163,
+ 0x1D164,
+ 0x1D165,
+ 0x1D173,
+ 0x1D17B,
+ 0x1D1BB,
+ 0x1D1BC,
+ 0x1D1BD,
+ 0x1D1BE,
+ 0x1D1BF,
+ 0x1D1C0,
+ 0x1D1C1,
+ 0x1D1EB,
+ 0x1D200,
+ 0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
+ 0x1D2E0,
+ 0x1D2F4,
+ 0x1D300,
+ 0x1D357,
+ 0x1D360,
+ 0x1D379,
+ 0x1D400,
+ 0x1D401,
+ 0x1D402,
+ 0x1D403,
+ 0x1D404,
+ 0x1D405,
+ 0x1D406,
+ 0x1D407,
+ 0x1D408,
+ 0x1D409,
+ 0x1D40A,
+ 0x1D40B,
+ 0x1D40C,
+ 0x1D40D,
+ 0x1D40E,
+ 0x1D40F,
+ 0x1D410,
+ 0x1D411,
+ 0x1D412,
+ 0x1D413,
+ 0x1D414,
+ 0x1D415,
+ 0x1D416,
+ 0x1D417,
+ 0x1D418,
+ 0x1D419,
+ 0x1D41A,
+ 0x1D41B,
+ 0x1D41C,
+ 0x1D41D,
+ 0x1D41E,
+ 0x1D41F,
+ 0x1D420,
+ 0x1D421,
+ 0x1D422,
+ 0x1D423,
+ 0x1D424,
+ 0x1D425,
+ 0x1D426,
+ 0x1D427,
+ 0x1D428,
+ 0x1D429,
+ 0x1D42A,
+ 0x1D42B,
+ 0x1D42C,
+ 0x1D42D,
+ 0x1D42E,
+ 0x1D42F,
+ 0x1D430,
+ 0x1D431,
+ 0x1D432,
+ 0x1D433,
+ 0x1D434,
+ 0x1D435,
+ 0x1D436,
+ 0x1D437,
+ 0x1D438,
+ 0x1D439,
+ 0x1D43A,
+ 0x1D43B,
+ 0x1D43C,
+ 0x1D43D,
+ 0x1D43E,
+ 0x1D43F,
+ 0x1D440,
+ 0x1D441,
+ 0x1D442,
+ 0x1D443,
+ 0x1D444,
+ 0x1D445,
+ 0x1D446,
+ 0x1D447,
+ 0x1D448,
+ 0x1D449,
+ 0x1D44A,
+ 0x1D44B,
+ 0x1D44C,
+ 0x1D44D,
+ 0x1D44E,
+ 0x1D44F,
+ 0x1D450,
+ 0x1D451,
+ 0x1D452,
+ 0x1D453,
+ 0x1D454,
+ 0x1D455,
+ 0x1D456,
+ 0x1D457,
+ 0x1D458,
+ 0x1D459,
+ 0x1D45A,
+ 0x1D45B,
+ 0x1D45C,
+ 0x1D45D,
+ 0x1D45E,
+ 0x1D45F,
+ 0x1D460,
+ 0x1D461,
+ 0x1D462,
+ 0x1D463,
+ 0x1D464,
+ 0x1D465,
+ 0x1D466,
+ 0x1D467,
+ 0x1D468,
+ 0x1D469,
+ 0x1D46A,
+ 0x1D46B,
+ 0x1D46C,
+ 0x1D46D,
+ 0x1D46E,
+ 0x1D46F,
+ 0x1D470,
+ 0x1D471,
+ 0x1D472,
+ 0x1D473,
+ 0x1D474,
+ 0x1D475,
+ 0x1D476,
+ 0x1D477,
+ 0x1D478,
+ 0x1D479,
+ 0x1D47A,
+ 0x1D47B,
+ 0x1D47C,
+ 0x1D47D,
+ 0x1D47E,
+ 0x1D47F,
+ 0x1D480,
+ 0x1D481,
+ 0x1D482,
+ 0x1D483,
+ 0x1D484,
+ 0x1D485,
+ 0x1D486,
+ 0x1D487,
+ 0x1D488,
+ 0x1D489,
+ 0x1D48A,
+ 0x1D48B,
+ 0x1D48C,
+ 0x1D48D,
+ 0x1D48E,
+ 0x1D48F,
+ 0x1D490,
+ 0x1D491,
+ 0x1D492,
+ 0x1D493,
+ 0x1D494,
+ 0x1D495,
+ 0x1D496,
+ 0x1D497,
+ 0x1D498,
+ 0x1D499,
+ 0x1D49A,
+ 0x1D49B,
+ 0x1D49C,
+ 0x1D49D,
+ 0x1D49E,
+ 0x1D49F,
+ 0x1D4A0,
+ 0x1D4A2,
+ 0x1D4A3,
+ 0x1D4A5,
+ 0x1D4A6,
+ 0x1D4A7,
+ 0x1D4A9,
+ 0x1D4AA,
+ 0x1D4AB,
+ 0x1D4AC,
+ 0x1D4AD,
+ 0x1D4AE,
+ 0x1D4AF,
+ 0x1D4B0,
+ 0x1D4B1,
+ 0x1D4B2,
+ 0x1D4B3,
+ 0x1D4B4,
+ 0x1D4B5,
+ 0x1D4B6,
+ 0x1D4B7,
+ 0x1D4B8,
+ 0x1D4B9,
+ 0x1D4BA,
+ 0x1D4BB,
+ 0x1D4BC,
+ 0x1D4BD,
+ 0x1D4BE,
+ 0x1D4BF,
+ 0x1D4C0,
+ 0x1D4C1,
+ 0x1D4C2,
+ 0x1D4C3,
+ 0x1D4C4,
+ 0x1D4C5,
+ 0x1D4C6,
+ 0x1D4C7,
+ 0x1D4C8,
+ 0x1D4C9,
+ 0x1D4CA,
+ 0x1D4CB,
+ 0x1D4CC,
+ 0x1D4CD,
+ 0x1D4CE,
+ 0x1D4CF,
+ 0x1D4D0,
+ 0x1D4D1,
+ 0x1D4D2,
+ 0x1D4D3,
+ 0x1D4D4,
+ 0x1D4D5,
+ 0x1D4D6,
+ 0x1D4D7,
+ 0x1D4D8,
+ 0x1D4D9,
+ 0x1D4DA,
+ 0x1D4DB,
+ 0x1D4DC,
+ 0x1D4DD,
+ 0x1D4DE,
+ 0x1D4DF,
+ 0x1D4E0,
+ 0x1D4E1,
+ 0x1D4E2,
+ 0x1D4E3,
+ 0x1D4E4,
+ 0x1D4E5,
+ 0x1D4E6,
+ 0x1D4E7,
+ 0x1D4E8,
+ 0x1D4E9,
+ 0x1D4EA,
+ 0x1D4EB,
+ 0x1D4EC,
+ 0x1D4ED,
+ 0x1D4EE,
+ 0x1D4EF,
+ 0x1D4F0,
+ 0x1D4F1,
+ 0x1D4F2,
+ 0x1D4F3,
+ 0x1D4F4,
+ 0x1D4F5,
+ 0x1D4F6,
+ 0x1D4F7,
+ 0x1D4F8,
+ 0x1D4F9,
+ 0x1D4FA,
+ 0x1D4FB,
+ 0x1D4FC,
+ 0x1D4FD,
+ 0x1D4FE,
+ 0x1D4FF,
+ 0x1D500,
+ 0x1D501,
+ 0x1D502,
+ 0x1D503,
+ 0x1D504,
+ 0x1D505,
+ 0x1D506,
+ 0x1D507,
+ 0x1D508,
+ 0x1D509,
+ 0x1D50A,
+ 0x1D50B,
+ 0x1D50D,
+ 0x1D50E,
+ 0x1D50F,
+ 0x1D510,
+ 0x1D511,
+ 0x1D512,
+ 0x1D513,
+ 0x1D514,
+ 0x1D515,
+ 0x1D516,
+ 0x1D517,
+ 0x1D518,
+ 0x1D519,
+ 0x1D51A,
+ 0x1D51B,
+ 0x1D51C,
+ 0x1D51D,
+ 0x1D51E,
+ 0x1D51F,
+ 0x1D520,
+ 0x1D521,
+ 0x1D522,
+ 0x1D523,
+ 0x1D524,
+ 0x1D525,
+ 0x1D526,
+ 0x1D527,
+ 0x1D528,
+ 0x1D529,
+ 0x1D52A,
+ 0x1D52B,
+ 0x1D52C,
+ 0x1D52D,
+ 0x1D52E,
+ 0x1D52F,
+ 0x1D530,
+ 0x1D531,
+ 0x1D532,
+ 0x1D533,
+ 0x1D534,
+ 0x1D535,
+ 0x1D536,
+ 0x1D537,
+ 0x1D538,
+ 0x1D539,
+ 0x1D53A,
+ 0x1D53B,
+ 0x1D53C,
+ 0x1D53D,
+ 0x1D53E,
+ 0x1D53F,
+ 0x1D540,
+ 0x1D541,
+ 0x1D542,
+ 0x1D543,
+ 0x1D544,
+ 0x1D545,
+ 0x1D546,
+ 0x1D547,
+ 0x1D54A,
+ 0x1D54B,
+ 0x1D54C,
+ 0x1D54D,
+ 0x1D54E,
+ 0x1D54F,
+ 0x1D550,
+ 0x1D551,
+ 0x1D552,
+ 0x1D553,
+ 0x1D554,
+ 0x1D555,
+ 0x1D556,
+ 0x1D557,
+ 0x1D558,
+ 0x1D559,
+ 0x1D55A,
+ 0x1D55B,
+ 0x1D55C,
+ 0x1D55D,
+ 0x1D55E,
+ 0x1D55F,
+ 0x1D560,
+ 0x1D561,
+ 0x1D562,
+ 0x1D563,
+ 0x1D564,
+ 0x1D565,
+ 0x1D566,
+ 0x1D567,
+ 0x1D568,
+ 0x1D569,
+ 0x1D56A,
+ 0x1D56B,
+ 0x1D56C,
+ 0x1D56D,
+ 0x1D56E,
+ 0x1D56F,
+ 0x1D570,
+ 0x1D571,
+ 0x1D572,
+ 0x1D573,
+ 0x1D574,
+ 0x1D575,
+ 0x1D576,
+ 0x1D577,
+ 0x1D578,
+ 0x1D579,
+ 0x1D57A,
+ 0x1D57B,
+ 0x1D57C,
+ 0x1D57D,
+ 0x1D57E,
+ 0x1D57F,
+ 0x1D580,
+ 0x1D581,
+ 0x1D582,
+ 0x1D583,
+ 0x1D584,
+ 0x1D585,
+ 0x1D586,
+ 0x1D587,
+ 0x1D588,
+ 0x1D589,
+ 0x1D58A,
+ 0x1D58B,
+ 0x1D58C,
+ 0x1D58D,
+ 0x1D58E,
+ 0x1D58F,
+ 0x1D590,
+ 0x1D591,
+ 0x1D592,
+ 0x1D593,
+ 0x1D594,
+ 0x1D595,
+ 0x1D596,
+ 0x1D597,
+ 0x1D598,
+ 0x1D599,
+ 0x1D59A,
+ 0x1D59B,
+ 0x1D59C,
+ 0x1D59D,
+ 0x1D59E,
+ 0x1D59F,
+ 0x1D5A0,
+ 0x1D5A1,
+ 0x1D5A2,
+ 0x1D5A3,
+ 0x1D5A4,
+ 0x1D5A5,
+ 0x1D5A6,
+ 0x1D5A7,
+ 0x1D5A8,
+ 0x1D5A9,
+ 0x1D5AA,
+ 0x1D5AB,
+ 0x1D5AC,
+ 0x1D5AD,
+ 0x1D5AE,
+ 0x1D5AF,
+ 0x1D5B0,
+ 0x1D5B1,
+ 0x1D5B2,
+ 0x1D5B3,
+ 0x1D5B4,
+ 0x1D5B5,
+ 0x1D5B6,
+ 0x1D5B7,
+ 0x1D5B8,
+ 0x1D5B9,
+ 0x1D5BA,
+ 0x1D5BB,
+ 0x1D5BC,
+ 0x1D5BD,
+ 0x1D5BE,
+ 0x1D5BF,
+ 0x1D5C0,
+ 0x1D5C1,
+ 0x1D5C2,
+ 0x1D5C3,
+ 0x1D5C4,
+ 0x1D5C5,
+ 0x1D5C6,
+ 0x1D5C7,
+ 0x1D5C8,
+ 0x1D5C9,
+ 0x1D5CA,
+ 0x1D5CB,
+ 0x1D5CC,
+ 0x1D5CD,
+ 0x1D5CE,
+ 0x1D5CF,
+ 0x1D5D0,
+ 0x1D5D1,
+ 0x1D5D2,
+ 0x1D5D3,
+ 0x1D5D4,
+ 0x1D5D5,
+ 0x1D5D6,
+ 0x1D5D7,
+ 0x1D5D8,
+ 0x1D5D9,
+ 0x1D5DA,
+ 0x1D5DB,
+ 0x1D5DC,
+ 0x1D5DD,
+ 0x1D5DE,
+ 0x1D5DF,
+ 0x1D5E0,
+ 0x1D5E1,
+ 0x1D5E2,
+ 0x1D5E3,
+ 0x1D5E4,
+ 0x1D5E5,
+ 0x1D5E6,
+ 0x1D5E7,
+ 0x1D5E8,
+ 0x1D5E9,
+ 0x1D5EA,
+ 0x1D5EB,
+ 0x1D5EC,
+ 0x1D5ED,
+ 0x1D5EE,
+ 0x1D5EF,
+ 0x1D5F0,
+ 0x1D5F1,
+ 0x1D5F2,
+ 0x1D5F3,
+ 0x1D5F4,
+ 0x1D5F5,
+ 0x1D5F6,
+ 0x1D5F7,
+ 0x1D5F8,
+ 0x1D5F9,
+ 0x1D5FA,
+ 0x1D5FB,
+ 0x1D5FC,
+ 0x1D5FD,
+ 0x1D5FE,
+ 0x1D5FF,
+ 0x1D600,
+ 0x1D601,
+ 0x1D602,
+ 0x1D603,
+ 0x1D604,
+ 0x1D605,
+ 0x1D606,
+ 0x1D607,
+ 0x1D608,
+ 0x1D609,
+ 0x1D60A,
+ 0x1D60B,
+ 0x1D60C,
+ 0x1D60D,
+ 0x1D60E,
+ 0x1D60F,
+ 0x1D610,
+ 0x1D611,
+ 0x1D612,
+ 0x1D613,
+ 0x1D614,
+ 0x1D615,
+ 0x1D616,
+ 0x1D617,
+ 0x1D618,
+ 0x1D619,
+ 0x1D61A,
+ 0x1D61B,
+ 0x1D61C,
+ 0x1D61D,
+ 0x1D61E,
+ 0x1D61F,
+ 0x1D620,
+ 0x1D621,
+ 0x1D622,
+ 0x1D623,
+ 0x1D624,
+ 0x1D625,
+ 0x1D626,
+ 0x1D627,
+ 0x1D628,
+ 0x1D629,
+ 0x1D62A,
+ 0x1D62B,
+ 0x1D62C,
+ 0x1D62D,
+ 0x1D62E,
+ 0x1D62F,
+ 0x1D630,
+ 0x1D631,
+ 0x1D632,
+ 0x1D633,
+ 0x1D634,
+ 0x1D635,
+ 0x1D636,
+ 0x1D637,
+ 0x1D638,
+ 0x1D639,
+ 0x1D63A,
+ 0x1D63B,
+ 0x1D63C,
+ 0x1D63D,
+ 0x1D63E,
+ 0x1D63F,
+ 0x1D640,
+ 0x1D641,
+ 0x1D642,
+ 0x1D643,
+ 0x1D644,
+ 0x1D645,
+ 0x1D646,
+ 0x1D647,
+ 0x1D648,
+ 0x1D649,
+ 0x1D64A,
+ 0x1D64B,
+ 0x1D64C,
+ 0x1D64D,
+ 0x1D64E,
+ 0x1D64F,
+ 0x1D650,
+ 0x1D651,
+ 0x1D652,
+ 0x1D653,
+ 0x1D654,
+ 0x1D655,
+ 0x1D656,
+ 0x1D657,
+ 0x1D658,
+ 0x1D659,
+ 0x1D65A,
+ 0x1D65B,
+ 0x1D65C,
+ 0x1D65D,
+ 0x1D65E,
+ 0x1D65F,
+ 0x1D660,
+ 0x1D661,
+ 0x1D662,
+ 0x1D663,
+ 0x1D664,
+ 0x1D665,
+ 0x1D666,
+ 0x1D667,
+ 0x1D668,
+ 0x1D669,
+ 0x1D66A,
+ 0x1D66B,
+ 0x1D66C,
+ 0x1D66D,
+ 0x1D66E,
+ 0x1D66F,
+ 0x1D670,
+ 0x1D671,
+ 0x1D672,
+ 0x1D673,
+ 0x1D674,
+ 0x1D675,
+ 0x1D676,
+ 0x1D677,
+ 0x1D678,
+ 0x1D679,
+ 0x1D67A,
+ 0x1D67B,
+ 0x1D67C,
+ 0x1D67D,
+ 0x1D67E,
+ 0x1D67F,
+ 0x1D680,
+ 0x1D681,
+ 0x1D682,
+ 0x1D683,
+ 0x1D684,
+ 0x1D685,
+ 0x1D686,
+ 0x1D687,
+ 0x1D688,
+ 0x1D689,
+ 0x1D68A,
+ 0x1D68B,
+ 0x1D68C,
+ 0x1D68D,
+ 0x1D68E,
+ 0x1D68F,
+ 0x1D690,
+ 0x1D691,
+ 0x1D692,
+ 0x1D693,
+ 0x1D694,
+ 0x1D695,
+ 0x1D696,
+ 0x1D697,
+ 0x1D698,
+ 0x1D699,
+ 0x1D69A,
+ 0x1D69B,
+ 0x1D69C,
+ 0x1D69D,
+ 0x1D69E,
+ 0x1D69F,
+ 0x1D6A0,
+ 0x1D6A1,
+ 0x1D6A2,
+ 0x1D6A3,
+ 0x1D6A4,
+ 0x1D6A5,
+ 0x1D6A6,
+ 0x1D6A8,
+ 0x1D6A9,
+ 0x1D6AA,
+ 0x1D6AB,
+ 0x1D6AC,
+ 0x1D6AD,
+ 0x1D6AE,
+ 0x1D6AF,
+ 0x1D6B0,
+ 0x1D6B1,
+ 0x1D6B2,
+ 0x1D6B3,
+ 0x1D6B4,
+ 0x1D6B5,
+ 0x1D6B6,
+ 0x1D6B7,
+ 0x1D6B8,
+ 0x1D6B9,
+ 0x1D6BA,
+ 0x1D6BB,
+ 0x1D6BC,
+ 0x1D6BD,
+ 0x1D6BE,
+ 0x1D6BF,
+ 0x1D6C0,
+ 0x1D6C1,
+ 0x1D6C2,
+ 0x1D6C3,
+ 0x1D6C4,
+ 0x1D6C5,
+ 0x1D6C6,
+ 0x1D6C7,
+ 0x1D6C8,
+ 0x1D6C9,
+ 0x1D6CA,
+ 0x1D6CB,
+ 0x1D6CC,
+ 0x1D6CD,
+ 0x1D6CE,
+ 0x1D6CF,
+ 0x1D6D0,
+ 0x1D6D1,
+ 0x1D6D2,
+ 0x1D6D3,
+ 0x1D6D5,
+ 0x1D6D6,
+ 0x1D6D7,
+ 0x1D6D8,
+ 0x1D6D9,
+ 0x1D6DA,
+ 0x1D6DB,
+ 0x1D6DC,
+ 0x1D6DD,
+ 0x1D6DE,
+ 0x1D6DF,
+ 0x1D6E0,
+ 0x1D6E1,
+ 0x1D6E2,
+ 0x1D6E3,
+ 0x1D6E4,
+ 0x1D6E5,
+ 0x1D6E6,
+ 0x1D6E7,
+ 0x1D6E8,
+ 0x1D6E9,
+ 0x1D6EA,
+ 0x1D6EB,
+ 0x1D6EC,
+ 0x1D6ED,
+ 0x1D6EE,
+ 0x1D6EF,
+ 0x1D6F0,
+ 0x1D6F1,
+ 0x1D6F2,
+ 0x1D6F3,
+ 0x1D6F4,
+ 0x1D6F5,
+ 0x1D6F6,
+ 0x1D6F7,
+ 0x1D6F8,
+ 0x1D6F9,
+ 0x1D6FA,
+ 0x1D6FB,
+ 0x1D6FC,
+ 0x1D6FD,
+ 0x1D6FE,
+ 0x1D6FF,
+ 0x1D700,
+ 0x1D701,
+ 0x1D702,
+ 0x1D703,
+ 0x1D704,
+ 0x1D705,
+ 0x1D706,
+ 0x1D707,
+ 0x1D708,
+ 0x1D709,
+ 0x1D70A,
+ 0x1D70B,
+ 0x1D70C,
+ 0x1D70D,
+ 0x1D70F,
+ 0x1D710,
+ 0x1D711,
+ 0x1D712,
+ 0x1D713,
+ 0x1D714,
+ 0x1D715,
+ 0x1D716,
+ 0x1D717,
+ 0x1D718,
+ 0x1D719,
+ 0x1D71A,
+ 0x1D71B,
+ 0x1D71C,
+ 0x1D71D,
+ 0x1D71E,
+ 0x1D71F,
+ 0x1D720,
+ 0x1D721,
+ 0x1D722,
+ 0x1D723,
+ 0x1D724,
+ 0x1D725,
+ 0x1D726,
+ 0x1D727,
+ 0x1D728,
+ 0x1D729,
+ 0x1D72A,
+ 0x1D72B,
+ 0x1D72C,
+ 0x1D72D,
+ 0x1D72E,
+ 0x1D72F,
+ 0x1D730,
+ 0x1D731,
+ 0x1D732,
+ 0x1D733,
+ 0x1D734,
+ 0x1D735,
+ 0x1D736,
+ 0x1D737,
+ 0x1D738,
+ 0x1D739,
+ 0x1D73A,
+ 0x1D73B,
+ 0x1D73C,
+ 0x1D73D,
+ 0x1D73E,
+ 0x1D73F,
+ 0x1D740,
+ 0x1D741,
+ 0x1D742,
+ 0x1D743,
+ 0x1D744,
+ 0x1D745,
+ 0x1D746,
+ 0x1D747,
+ 0x1D749,
+ 0x1D74A,
+ 0x1D74B,
+ 0x1D74C,
+ 0x1D74D,
+ 0x1D74E,
+ 0x1D74F,
+ 0x1D750,
+ 0x1D751,
+ 0x1D752,
+ 0x1D753,
+ 0x1D754,
+ 0x1D755,
+ 0x1D756,
+ 0x1D757,
+ 0x1D758,
+ 0x1D759,
+ 0x1D75A,
+ 0x1D75B,
+ 0x1D75C,
+ 0x1D75D,
+ 0x1D75E,
+ 0x1D75F,
+ 0x1D760,
+ 0x1D761,
+ 0x1D762,
+ 0x1D763,
+ 0x1D764,
+ 0x1D765,
+ 0x1D766,
+ 0x1D767,
+ 0x1D768,
+ 0x1D769,
+ 0x1D76A,
+ 0x1D76B,
+ 0x1D76C,
+ 0x1D76D,
+ 0x1D76E,
+ 0x1D76F,
+ 0x1D770,
+ 0x1D771,
+ 0x1D772,
+ 0x1D773,
+ 0x1D774,
+ 0x1D775,
+ 0x1D776,
+ 0x1D777,
+ 0x1D778,
+ 0x1D779,
+ 0x1D77A,
+ 0x1D77B,
+ 0x1D77C,
+ 0x1D77D,
+ 0x1D77E,
+ 0x1D77F,
+ 0x1D780,
+ 0x1D781,
+ 0x1D783,
+ 0x1D784,
+ 0x1D785,
+ 0x1D786,
+ 0x1D787,
+ 0x1D788,
+ 0x1D789,
+ 0x1D78A,
+ 0x1D78B,
+ 0x1D78C,
+ 0x1D78D,
+ 0x1D78E,
+ 0x1D78F,
+ 0x1D790,
+ 0x1D791,
+ 0x1D792,
+ 0x1D793,
+ 0x1D794,
+ 0x1D795,
+ 0x1D796,
+ 0x1D797,
+ 0x1D798,
+ 0x1D799,
+ 0x1D79A,
+ 0x1D79B,
+ 0x1D79C,
+ 0x1D79D,
+ 0x1D79E,
+ 0x1D79F,
+ 0x1D7A0,
+ 0x1D7A1,
+ 0x1D7A2,
+ 0x1D7A3,
+ 0x1D7A4,
+ 0x1D7A5,
+ 0x1D7A6,
+ 0x1D7A7,
+ 0x1D7A8,
+ 0x1D7A9,
+ 0x1D7AA,
+ 0x1D7AB,
+ 0x1D7AC,
+ 0x1D7AD,
+ 0x1D7AE,
+ 0x1D7AF,
+ 0x1D7B0,
+ 0x1D7B1,
+ 0x1D7B2,
+ 0x1D7B3,
+ 0x1D7B4,
+ 0x1D7B5,
+ 0x1D7B6,
+ 0x1D7B7,
+ 0x1D7B8,
+ 0x1D7B9,
+ 0x1D7BA,
+ 0x1D7BB,
+ 0x1D7BD,
+ 0x1D7BE,
+ 0x1D7BF,
+ 0x1D7C0,
+ 0x1D7C1,
+ 0x1D7C2,
+ 0x1D7C3,
+ 0x1D7C4,
+ 0x1D7C5,
+ 0x1D7C6,
+ 0x1D7C7,
+ 0x1D7C8,
+ 0x1D7C9,
+ 0x1D7CA,
+ 0x1D7CC,
+ 0x1D7CE,
+ 0x1D7CF,
+ 0x1D7D0,
+ 0x1D7D1,
+ 0x1D7D2,
+ 0x1D7D3,
+ 0x1D7D4,
+ 0x1D7D5,
+ 0x1D7D6,
+ 0x1D7D7,
+ 0x1D7D8,
+ 0x1D7D9,
+ 0x1D7DA,
+ 0x1D7DB,
+ 0x1D7DC,
+ 0x1D7DD,
+ 0x1D7DE,
+ 0x1D7DF,
+ 0x1D7E0,
+ 0x1D7E1,
+ 0x1D7E2,
+ 0x1D7E3,
+ 0x1D7E4,
+ 0x1D7E5,
+ 0x1D7E6,
+ 0x1D7E7,
+ 0x1D7E8,
+ 0x1D7E9,
+ 0x1D7EA,
+ 0x1D7EB,
+ 0x1D7EC,
+ 0x1D7ED,
+ 0x1D7EE,
+ 0x1D7EF,
+ 0x1D7F0,
+ 0x1D7F1,
+ 0x1D7F2,
+ 0x1D7F3,
+ 0x1D7F4,
+ 0x1D7F5,
+ 0x1D7F6,
+ 0x1D7F7,
+ 0x1D7F8,
+ 0x1D7F9,
+ 0x1D7FA,
+ 0x1D7FB,
+ 0x1D7FC,
+ 0x1D7FD,
+ 0x1D7FE,
+ 0x1D7FF,
+ 0x1D800,
+ 0x1DA8C,
+ 0x1DA9B,
+ 0x1DAA0,
+ 0x1DAA1,
+ 0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E000,
+ 0x1E007,
+ 0x1E008,
+ 0x1E019,
+ 0x1E01B,
+ 0x1E022,
+ 0x1E023,
+ 0x1E025,
+ 0x1E026,
+ 0x1E02B,
+ 0x1E030,
+ 0x1E031,
+ 0x1E032,
+ 0x1E033,
+ 0x1E034,
+ 0x1E035,
+ 0x1E036,
+ 0x1E037,
+ 0x1E038,
+ 0x1E039,
+ 0x1E03A,
+ 0x1E03B,
+ 0x1E03C,
+ 0x1E03D,
+ 0x1E03E,
+ 0x1E03F,
+ 0x1E040,
+ 0x1E041,
+ 0x1E042,
+ 0x1E043,
+ 0x1E044,
+ 0x1E045,
+ 0x1E046,
+ 0x1E047,
+ 0x1E048,
+ 0x1E049,
+ 0x1E04A,
+ 0x1E04B,
+ 0x1E04C,
+ 0x1E04D,
+ 0x1E04E,
+ 0x1E04F,
+ 0x1E050,
+ 0x1E051,
+ 0x1E052,
+ 0x1E053,
+ 0x1E054,
+ 0x1E055,
+ 0x1E056,
+ 0x1E057,
+ 0x1E058,
+ 0x1E059,
+ 0x1E05A,
+ 0x1E05B,
+ 0x1E05C,
+ 0x1E05D,
+ 0x1E05E,
+ 0x1E05F,
+ 0x1E060,
+ 0x1E061,
+ 0x1E062,
+ 0x1E063,
+ 0x1E064,
+ 0x1E065,
+ 0x1E066,
+ 0x1E067,
+ 0x1E068,
+ 0x1E069,
+ 0x1E06A,
+ 0x1E06B,
+ 0x1E06C,
+ 0x1E06D,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E100,
+ 0x1E12D,
+ 0x1E130,
+ 0x1E13E,
+ 0x1E140,
+ 0x1E14A,
+ 0x1E14E,
+ 0x1E150,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E2C0,
+ 0x1E2FA,
+ 0x1E2FF,
+ 0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E5D0,
+ 0x1E5FB,
+ 0x1E5FF,
+ 0x1E600,
+ 0x1E6C0,
+ 0x1E6DF,
+ 0x1E6E0,
+ 0x1E6F6,
+ 0x1E6FE,
+ 0x1E700,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
+ 0x1E800,
+ 0x1E8C5,
+ 0x1E8C7,
+ 0x1E8D7,
+ 0x1E900,
+ 0x1E901,
+ 0x1E902,
+ 0x1E903,
+ 0x1E904,
+ 0x1E905,
+ 0x1E906,
+ 0x1E907,
+ 0x1E908,
+ 0x1E909,
+ 0x1E90A,
+ 0x1E90B,
+ 0x1E90C,
+ 0x1E90D,
+ 0x1E90E,
+ 0x1E90F,
+ 0x1E910,
+ 0x1E911,
+ 0x1E912,
+ 0x1E913,
+ 0x1E914,
+ 0x1E915,
+ 0x1E916,
+ 0x1E917,
+ 0x1E918,
+ 0x1E919,
+ 0x1E91A,
+ 0x1E91B,
+ 0x1E91C,
+ 0x1E91D,
+ 0x1E91E,
+ 0x1E91F,
+ 0x1E920,
+ 0x1E921,
+ 0x1E922,
+ 0x1E94C,
+ 0x1E950,
+ 0x1E95A,
+ 0x1E95E,
+ 0x1E960,
+ 0x1EC71,
+ 0x1ECB5,
+ 0x1ED01,
+ 0x1ED3E,
+ 0x1EE00,
+ 0x1EE01,
+ 0x1EE02,
+ 0x1EE03,
+ 0x1EE04,
+ 0x1EE05,
+ 0x1EE06,
+ 0x1EE07,
+ 0x1EE08,
+ 0x1EE09,
+ 0x1EE0A,
+ 0x1EE0B,
+ 0x1EE0C,
+ 0x1EE0D,
+ 0x1EE0E,
+ 0x1EE0F,
+ 0x1EE10,
+ 0x1EE11,
+ 0x1EE12,
+ 0x1EE13,
+ 0x1EE14,
+ 0x1EE15,
+ 0x1EE16,
+ 0x1EE17,
+ 0x1EE18,
+ 0x1EE19,
+ 0x1EE1A,
+ 0x1EE1B,
+ 0x1EE1C,
+ 0x1EE1D,
+ 0x1EE1E,
+ 0x1EE1F,
+ 0x1EE20,
+ 0x1EE21,
+ 0x1EE22,
+ 0x1EE23,
+ 0x1EE24,
+ 0x1EE25,
+ 0x1EE27,
+ 0x1EE28,
+ 0x1EE29,
+ 0x1EE2A,
+ 0x1EE2B,
+ 0x1EE2C,
+ 0x1EE2D,
+ 0x1EE2E,
+ 0x1EE2F,
+ 0x1EE30,
+ 0x1EE31,
+ 0x1EE32,
+ 0x1EE33,
+ 0x1EE34,
+ 0x1EE35,
+ 0x1EE36,
+ 0x1EE37,
+ 0x1EE38,
+ 0x1EE39,
+ 0x1EE3A,
+ 0x1EE3B,
+ 0x1EE3C,
+ 0x1EE42,
+ 0x1EE43,
+ 0x1EE47,
+ 0x1EE48,
+ 0x1EE49,
+ 0x1EE4A,
+ 0x1EE4B,
+ 0x1EE4C,
+ 0x1EE4D,
+ 0x1EE4E,
+ 0x1EE4F,
+ 0x1EE50,
+ 0x1EE51,
+ 0x1EE52,
+ 0x1EE53,
+ 0x1EE54,
+ 0x1EE55,
+ 0x1EE57,
+ 0x1EE58,
+ 0x1EE59,
+ 0x1EE5A,
+ 0x1EE5B,
+ 0x1EE5C,
+ 0x1EE5D,
+ 0x1EE5E,
+ 0x1EE5F,
+ 0x1EE60,
+ 0x1EE61,
+ 0x1EE62,
+ 0x1EE63,
+ 0x1EE64,
+ 0x1EE65,
+ 0x1EE67,
+ 0x1EE68,
+ 0x1EE69,
+ 0x1EE6A,
+ 0x1EE6B,
+ 0x1EE6C,
+ 0x1EE6D,
+ 0x1EE6E,
+ 0x1EE6F,
+ 0x1EE70,
+ 0x1EE71,
+ 0x1EE72,
+ 0x1EE73,
+ 0x1EE74,
+ 0x1EE75,
+ 0x1EE76,
+ 0x1EE77,
+ 0x1EE78,
+ 0x1EE79,
+ 0x1EE7A,
+ 0x1EE7B,
+ 0x1EE7C,
+ 0x1EE7D,
+ 0x1EE7E,
+ 0x1EE7F,
+ 0x1EE80,
+ 0x1EE81,
+ 0x1EE82,
+ 0x1EE83,
+ 0x1EE84,
+ 0x1EE85,
+ 0x1EE86,
+ 0x1EE87,
+ 0x1EE88,
+ 0x1EE89,
+ 0x1EE8A,
+ 0x1EE8B,
+ 0x1EE8C,
+ 0x1EE8D,
+ 0x1EE8E,
+ 0x1EE8F,
+ 0x1EE90,
+ 0x1EE91,
+ 0x1EE92,
+ 0x1EE93,
+ 0x1EE94,
+ 0x1EE95,
+ 0x1EE96,
+ 0x1EE97,
+ 0x1EE98,
+ 0x1EE99,
+ 0x1EE9A,
+ 0x1EE9B,
+ 0x1EE9C,
+ 0x1EEA1,
+ 0x1EEA2,
+ 0x1EEA3,
+ 0x1EEA4,
+ 0x1EEA5,
+ 0x1EEA6,
+ 0x1EEA7,
+ 0x1EEA8,
+ 0x1EEA9,
+ 0x1EEAA,
+ 0x1EEAB,
+ 0x1EEAC,
+ 0x1EEAD,
+ 0x1EEAE,
+ 0x1EEAF,
+ 0x1EEB0,
+ 0x1EEB1,
+ 0x1EEB2,
+ 0x1EEB3,
+ 0x1EEB4,
+ 0x1EEB5,
+ 0x1EEB6,
+ 0x1EEB7,
+ 0x1EEB8,
+ 0x1EEB9,
+ 0x1EEBA,
+ 0x1EEBB,
+ 0x1EEBC,
+ 0x1EEF0,
+ 0x1EEF2,
+ 0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
+ 0x1F101,
+ 0x1F102,
+ 0x1F103,
+ 0x1F104,
+ 0x1F105,
+ 0x1F106,
+ 0x1F107,
+ 0x1F108,
+ 0x1F109,
+ 0x1F10A,
+ 0x1F10B,
+ 0x1F110,
+ 0x1F111,
+ 0x1F112,
+ 0x1F113,
+ 0x1F114,
+ 0x1F115,
+ 0x1F116,
+ 0x1F117,
+ 0x1F118,
+ 0x1F119,
+ 0x1F11A,
+ 0x1F11B,
+ 0x1F11C,
+ 0x1F11D,
+ 0x1F11E,
+ 0x1F11F,
+ 0x1F120,
+ 0x1F121,
+ 0x1F122,
+ 0x1F123,
+ 0x1F124,
+ 0x1F125,
+ 0x1F126,
+ 0x1F127,
+ 0x1F128,
+ 0x1F129,
+ 0x1F12A,
+ 0x1F12B,
+ 0x1F12C,
+ 0x1F12D,
+ 0x1F12E,
+ 0x1F12F,
+ 0x1F130,
+ 0x1F131,
+ 0x1F132,
+ 0x1F133,
+ 0x1F134,
+ 0x1F135,
+ 0x1F136,
+ 0x1F137,
+ 0x1F138,
+ 0x1F139,
+ 0x1F13A,
+ 0x1F13B,
+ 0x1F13C,
+ 0x1F13D,
+ 0x1F13E,
+ 0x1F13F,
+ 0x1F140,
+ 0x1F141,
+ 0x1F142,
+ 0x1F143,
+ 0x1F144,
+ 0x1F145,
+ 0x1F146,
+ 0x1F147,
+ 0x1F148,
+ 0x1F149,
+ 0x1F14A,
+ 0x1F14B,
+ 0x1F14C,
+ 0x1F14D,
+ 0x1F14E,
+ 0x1F14F,
+ 0x1F150,
+ 0x1F16A,
+ 0x1F16B,
+ 0x1F16C,
+ 0x1F16D,
+ 0x1F190,
+ 0x1F191,
+ 0x1F1AE,
+ 0x1F1E6,
+ 0x1F200,
+ 0x1F201,
+ 0x1F202,
+ 0x1F203,
+ 0x1F210,
+ 0x1F211,
+ 0x1F212,
+ 0x1F213,
+ 0x1F214,
+ 0x1F215,
+ 0x1F216,
+ 0x1F217,
+ 0x1F218,
+ 0x1F219,
+ 0x1F21A,
+ 0x1F21B,
+ 0x1F21C,
+ 0x1F21D,
+ 0x1F21E,
+ 0x1F21F,
+ 0x1F220,
+ 0x1F221,
+ 0x1F222,
+ 0x1F223,
+ 0x1F224,
+ 0x1F225,
+ 0x1F226,
+ 0x1F227,
+ 0x1F228,
+ 0x1F229,
+ 0x1F22A,
+ 0x1F22B,
+ 0x1F22C,
+ 0x1F22D,
+ 0x1F22E,
+ 0x1F22F,
+ 0x1F230,
+ 0x1F231,
+ 0x1F232,
+ 0x1F233,
+ 0x1F234,
+ 0x1F235,
+ 0x1F236,
+ 0x1F237,
+ 0x1F238,
+ 0x1F239,
+ 0x1F23A,
+ 0x1F23B,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F241,
+ 0x1F242,
+ 0x1F243,
+ 0x1F244,
+ 0x1F245,
+ 0x1F246,
+ 0x1F247,
+ 0x1F248,
+ 0x1F249,
+ 0x1F250,
+ 0x1F251,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
+ 0x1F6D9,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
+ 0x1F700,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
+ 0x1F800,
+ 0x1F80C,
+ 0x1F810,
+ 0x1F848,
+ 0x1F850,
+ 0x1F85A,
+ 0x1F860,
+ 0x1F888,
+ 0x1F890,
+ 0x1F8AE,
+ 0x1F8B0,
+ 0x1F8BC,
+ 0x1F8C0,
+ 0x1F8C2,
+ 0x1F8D0,
+ 0x1F8D9,
+ 0x1F900,
+ 0x1FA58,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA8B,
+ 0x1FA8E,
+ 0x1FAC7,
+ 0x1FAC8,
+ 0x1FAC9,
+ 0x1FACD,
+ 0x1FADD,
+ 0x1FADF,
+ 0x1FAEB,
+ 0x1FAEF,
+ 0x1FAF9,
+ 0x1FB00,
+ 0x1FB93,
+ 0x1FB94,
+ 0x1FBF0,
+ 0x1FBF1,
+ 0x1FBF2,
+ 0x1FBF3,
+ 0x1FBF4,
+ 0x1FBF5,
+ 0x1FBF6,
+ 0x1FBF7,
+ 0x1FBF8,
+ 0x1FBF9,
+ 0x1FBFA,
+ 0x1FBFB,
+ 0x20000,
+ 0x2A6E0,
+ 0x2A700,
+ 0x2B81E,
+ 0x2B820,
+ 0x2CEAE,
+ 0x2CEB0,
+ 0x2EBE1,
+ 0x2EBF0,
+ 0x2EE5E,
+ 0x2F800,
+ 0x2F801,
+ 0x2F802,
+ 0x2F803,
+ 0x2F804,
+ 0x2F805,
+ 0x2F806,
+ 0x2F807,
+ 0x2F808,
+ 0x2F809,
+ 0x2F80A,
+ 0x2F80B,
+ 0x2F80C,
+ 0x2F80D,
+ 0x2F80E,
+ 0x2F80F,
+ 0x2F810,
+ 0x2F811,
+ 0x2F812,
+ 0x2F813,
+ 0x2F814,
+ 0x2F815,
+ 0x2F816,
+ 0x2F817,
+ 0x2F818,
+ 0x2F819,
+ 0x2F81A,
+ 0x2F81B,
+ 0x2F81C,
+ 0x2F81D,
+ 0x2F81E,
+ 0x2F81F,
+ 0x2F820,
+ 0x2F821,
+ 0x2F822,
+ 0x2F823,
+ 0x2F824,
+ 0x2F825,
+ 0x2F826,
+ 0x2F827,
+ 0x2F828,
+ 0x2F829,
+ 0x2F82A,
+ 0x2F82B,
+ 0x2F82C,
+ 0x2F82D,
+ 0x2F82E,
+ 0x2F82F,
+ 0x2F830,
+ 0x2F831,
+ 0x2F834,
+ 0x2F835,
+ 0x2F836,
+ 0x2F837,
+ 0x2F838,
+ 0x2F839,
+ 0x2F83A,
+ 0x2F83B,
+ 0x2F83C,
+ 0x2F83D,
+ 0x2F83E,
+ 0x2F83F,
+ 0x2F840,
+ 0x2F841,
+ 0x2F842,
+ 0x2F843,
+ 0x2F844,
+ 0x2F845,
+ 0x2F847,
+ 0x2F848,
+ 0x2F849,
+ 0x2F84A,
+ 0x2F84B,
+ 0x2F84C,
+ 0x2F84D,
+ 0x2F84E,
+ 0x2F84F,
+ 0x2F850,
+ 0x2F851,
+ 0x2F852,
+ 0x2F853,
+ 0x2F854,
+ 0x2F855,
+ 0x2F856,
+ 0x2F857,
+ 0x2F858,
+ 0x2F859,
+ 0x2F85A,
+ 0x2F85B,
+ 0x2F85C,
+ 0x2F85D,
+ 0x2F85E,
+ 0x2F85F,
+ 0x2F860,
+ 0x2F861,
+ 0x2F862,
+ 0x2F863,
+ 0x2F864,
+ 0x2F865,
+ 0x2F866,
+ 0x2F867,
+ 0x2F868,
+ 0x2F869,
+ 0x2F86A,
+ 0x2F86C,
+ 0x2F86D,
+ 0x2F86E,
+ 0x2F86F,
+ 0x2F870,
+ 0x2F871,
+ 0x2F872,
+ 0x2F873,
+ 0x2F874,
+ 0x2F875,
+ 0x2F876,
+ 0x2F877,
+ 0x2F878,
+ 0x2F879,
+ 0x2F87A,
+ 0x2F87B,
+ 0x2F87C,
+ 0x2F87D,
+ 0x2F87E,
+ 0x2F87F,
+ 0x2F880,
+ 0x2F881,
+ 0x2F882,
+ 0x2F883,
+ 0x2F884,
+ 0x2F885,
+ 0x2F886,
+ 0x2F887,
+ 0x2F888,
+ 0x2F889,
+ 0x2F88A,
+ 0x2F88B,
+ 0x2F88C,
+ 0x2F88D,
+ 0x2F88E,
+ 0x2F88F,
+ 0x2F890,
+ 0x2F891,
+ 0x2F893,
+ 0x2F894,
+ 0x2F896,
+ 0x2F897,
+ 0x2F898,
+ 0x2F899,
+ 0x2F89A,
+ 0x2F89B,
+ 0x2F89C,
+ 0x2F89D,
+ 0x2F89E,
+ 0x2F89F,
+ 0x2F8A0,
+ 0x2F8A1,
+ 0x2F8A2,
+ 0x2F8A3,
+ 0x2F8A4,
+ 0x2F8A5,
+ 0x2F8A6,
+ 0x2F8A7,
+ 0x2F8A8,
+ 0x2F8A9,
+ 0x2F8AA,
+ 0x2F8AB,
+ 0x2F8AC,
+ 0x2F8AD,
+ 0x2F8AE,
+ 0x2F8AF,
+ 0x2F8B0,
+ 0x2F8B1,
+ 0x2F8B2,
+ 0x2F8B3,
+ 0x2F8B4,
+ 0x2F8B5,
+ 0x2F8B6,
+ 0x2F8B7,
+ 0x2F8B8,
+ 0x2F8B9,
+ 0x2F8BA,
+ 0x2F8BB,
+ 0x2F8BC,
+ 0x2F8BD,
+ 0x2F8BE,
+ 0x2F8BF,
+ 0x2F8C0,
+ 0x2F8C1,
+ 0x2F8C2,
+ 0x2F8C3,
+ 0x2F8C4,
+ 0x2F8C5,
+ 0x2F8C6,
+ 0x2F8C7,
+ 0x2F8C8,
+ 0x2F8C9,
+ 0x2F8CA,
+ 0x2F8CB,
+ 0x2F8CC,
+ 0x2F8CD,
+ 0x2F8CE,
+ 0x2F8CF,
+ 0x2F8D0,
+ 0x2F8D1,
+ 0x2F8D2,
+ 0x2F8D3,
+ 0x2F8D4,
+ 0x2F8D5,
+ 0x2F8D6,
+ 0x2F8D7,
+ 0x2F8D8,
+ 0x2F8D9,
+ 0x2F8DA,
+ 0x2F8DB,
+ 0x2F8DC,
+ 0x2F8DD,
+ 0x2F8DE,
+ 0x2F8DF,
+ 0x2F8E0,
+ 0x2F8E1,
+ 0x2F8E2,
+ 0x2F8E3,
+ 0x2F8E4,
+ 0x2F8E5,
+ 0x2F8E6,
+ 0x2F8E7,
+ 0x2F8E8,
+ 0x2F8E9,
+ 0x2F8EA,
+ 0x2F8EB,
+ 0x2F8EC,
+ 0x2F8ED,
+ 0x2F8EE,
+ 0x2F8EF,
+ 0x2F8F0,
+ 0x2F8F1,
+ 0x2F8F2,
+ 0x2F8F3,
+ 0x2F8F4,
+ 0x2F8F5,
+ 0x2F8F6,
+ 0x2F8F7,
+ 0x2F8F8,
+ 0x2F8F9,
+ 0x2F8FA,
+ 0x2F8FB,
+ 0x2F8FC,
+ 0x2F8FD,
+ 0x2F8FE,
+ 0x2F8FF,
+ 0x2F900,
+ 0x2F901,
+ 0x2F902,
+ 0x2F903,
+ 0x2F904,
+ 0x2F905,
+ 0x2F906,
+ 0x2F907,
+ 0x2F908,
+ 0x2F909,
+ 0x2F90A,
+ 0x2F90B,
+ 0x2F90C,
+ 0x2F90D,
+ 0x2F90E,
+ 0x2F90F,
+ 0x2F910,
+ 0x2F911,
+ 0x2F912,
+ 0x2F913,
+ 0x2F914,
+ 0x2F915,
+ 0x2F916,
+ 0x2F917,
+ 0x2F918,
+ 0x2F919,
+ 0x2F91A,
+ 0x2F91B,
+ 0x2F91C,
+ 0x2F91D,
+ 0x2F91E,
+ 0x2F91F,
+ 0x2F920,
+ 0x2F921,
+ 0x2F922,
+ 0x2F923,
+ 0x2F924,
+ 0x2F925,
+ 0x2F926,
+ 0x2F927,
+ 0x2F928,
+ 0x2F929,
+ 0x2F92A,
+ 0x2F92B,
+ 0x2F92C,
+ 0x2F92E,
+ 0x2F92F,
+ 0x2F930,
+ 0x2F931,
+ 0x2F932,
+ 0x2F933,
+ 0x2F934,
+ 0x2F935,
+ 0x2F936,
+ 0x2F937,
+ 0x2F938,
+ 0x2F939,
+ 0x2F93A,
+ 0x2F93B,
+ 0x2F93C,
+ 0x2F93D,
+ 0x2F93E,
+ 0x2F93F,
+ 0x2F940,
+ 0x2F941,
+ 0x2F942,
+ 0x2F943,
+ 0x2F944,
+ 0x2F945,
+ 0x2F946,
+ 0x2F948,
+ 0x2F949,
+ 0x2F94A,
+ 0x2F94B,
+ 0x2F94C,
+ 0x2F94D,
+ 0x2F94E,
+ 0x2F94F,
+ 0x2F950,
+ 0x2F951,
+ 0x2F952,
+ 0x2F953,
+ 0x2F954,
+ 0x2F955,
+ 0x2F956,
+ 0x2F957,
+ 0x2F958,
+ 0x2F959,
+ 0x2F95A,
+ 0x2F95B,
+ 0x2F95C,
+ 0x2F95D,
+ 0x2F95F,
+ 0x2F960,
+ 0x2F961,
+ 0x2F962,
+ 0x2F963,
+ 0x2F964,
+ 0x2F965,
+ 0x2F966,
+ 0x2F967,
+ 0x2F968,
+ 0x2F969,
+ 0x2F96A,
+ 0x2F96B,
+ 0x2F96C,
+ 0x2F96D,
+ 0x2F96E,
+ 0x2F96F,
+ 0x2F970,
+ 0x2F971,
+ 0x2F972,
+ 0x2F973,
+ 0x2F974,
+ 0x2F975,
+ 0x2F976,
+ 0x2F977,
+ 0x2F978,
+ 0x2F979,
+ 0x2F97A,
+ 0x2F97B,
+ 0x2F97C,
+ 0x2F97D,
+ 0x2F97E,
+ 0x2F97F,
+ 0x2F980,
+ 0x2F981,
+ 0x2F982,
+ 0x2F983,
+ 0x2F984,
+ 0x2F985,
+ 0x2F986,
+ 0x2F987,
+ 0x2F988,
+ 0x2F989,
+ 0x2F98A,
+ 0x2F98B,
+ 0x2F98C,
+ 0x2F98D,
+ 0x2F98E,
+ 0x2F98F,
+ 0x2F990,
+ 0x2F991,
+ 0x2F992,
+ 0x2F993,
+ 0x2F994,
+ 0x2F995,
+ 0x2F996,
+ 0x2F997,
+ 0x2F998,
+ 0x2F999,
+ 0x2F99A,
+ 0x2F99B,
+ 0x2F99C,
+ 0x2F99D,
+ 0x2F99E,
+ 0x2F99F,
+ 0x2F9A0,
+ 0x2F9A1,
+ 0x2F9A2,
+ 0x2F9A3,
+ 0x2F9A4,
+ 0x2F9A5,
+ 0x2F9A6,
+ 0x2F9A7,
+ 0x2F9A8,
+ 0x2F9A9,
+ 0x2F9AA,
+ 0x2F9AB,
+ 0x2F9AC,
+ 0x2F9AD,
+ 0x2F9AE,
+ 0x2F9AF,
+ 0x2F9B0,
+ 0x2F9B1,
+ 0x2F9B2,
+ 0x2F9B3,
+ 0x2F9B4,
+ 0x2F9B5,
+ 0x2F9B6,
+ 0x2F9B7,
+ 0x2F9B8,
+ 0x2F9B9,
+ 0x2F9BA,
+ 0x2F9BB,
+ 0x2F9BC,
+ 0x2F9BD,
+ 0x2F9BE,
+ 0x2F9BF,
+ 0x2F9C0,
+ 0x2F9C1,
+ 0x2F9C2,
+ 0x2F9C3,
+ 0x2F9C4,
+ 0x2F9C5,
+ 0x2F9C6,
+ 0x2F9C7,
+ 0x2F9C8,
+ 0x2F9C9,
+ 0x2F9CA,
+ 0x2F9CB,
+ 0x2F9CC,
+ 0x2F9CD,
+ 0x2F9CE,
+ 0x2F9CF,
+ 0x2F9D0,
+ 0x2F9D1,
+ 0x2F9D2,
+ 0x2F9D3,
+ 0x2F9D4,
+ 0x2F9D5,
+ 0x2F9D6,
+ 0x2F9D7,
+ 0x2F9D8,
+ 0x2F9D9,
+ 0x2F9DA,
+ 0x2F9DB,
+ 0x2F9DC,
+ 0x2F9DD,
+ 0x2F9DE,
+ 0x2F9DF,
+ 0x2F9E0,
+ 0x2F9E1,
+ 0x2F9E2,
+ 0x2F9E3,
+ 0x2F9E4,
+ 0x2F9E5,
+ 0x2F9E6,
+ 0x2F9E7,
+ 0x2F9E8,
+ 0x2F9E9,
+ 0x2F9EA,
+ 0x2F9EB,
+ 0x2F9EC,
+ 0x2F9ED,
+ 0x2F9EE,
+ 0x2F9EF,
+ 0x2F9F0,
+ 0x2F9F1,
+ 0x2F9F2,
+ 0x2F9F3,
+ 0x2F9F4,
+ 0x2F9F5,
+ 0x2F9F6,
+ 0x2F9F7,
+ 0x2F9F8,
+ 0x2F9F9,
+ 0x2F9FA,
+ 0x2F9FB,
+ 0x2F9FC,
+ 0x2F9FD,
+ 0x2F9FE,
+ 0x2FA00,
+ 0x2FA01,
+ 0x2FA02,
+ 0x2FA03,
+ 0x2FA04,
+ 0x2FA05,
+ 0x2FA06,
+ 0x2FA07,
+ 0x2FA08,
+ 0x2FA09,
+ 0x2FA0A,
+ 0x2FA0B,
+ 0x2FA0C,
+ 0x2FA0D,
+ 0x2FA0E,
+ 0x2FA0F,
+ 0x2FA10,
+ 0x2FA11,
+ 0x2FA12,
+ 0x2FA13,
+ 0x2FA14,
+ 0x2FA15,
+ 0x2FA16,
+ 0x2FA17,
+ 0x2FA18,
+ 0x2FA19,
+ 0x2FA1A,
+ 0x2FA1B,
+ 0x2FA1C,
+ 0x2FA1D,
+ 0x2FA1E,
+ 0x30000,
+ 0x3134B,
+ 0x31350,
+ 0x3347A,
+ 0xE0100,
+ 0xE01F0,
+ ),
+)
+
+uts46_statuses: bytes = (
+ b"VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ b"VMMMMMMMMMMMMMMMMMMMMMMMMMMVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ b"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMVVVVVVVMVMVVIVMVVMMMMVVMMMVMMMV"
+ b"MMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMDVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMVMVMVMVMVMMV"
+ b"MVMVMVMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMVMVMVMVMM"
+ b"VMVMMVMMMVMMMMVMMVMMMVMMVMMVMVMVMMVMVMVMMVMMMVMVMMVMVMMMMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMMVMMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVM"
+ b"VMVMVMVMVMVMVMVMVMVMVMVMVMVMMVMMVMVMMMMVMVMVMVMVMMMMMMMMMVMMMMMM"
+ b"VMMMMMVMMVMMMVIVMVMVMVMVXMVMMXMMMMMMMXMXMMVMMMMMMMMMMMMMMMMMXMMM"
+ b"MMMMMMVDVMMMMMMMMVMVMVMVMVMVMVMVMVMVMVMVMVMMMVMMVMVMMVMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVM"
+ b"VMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVXMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMXVMVXVXVXVXVXVXVMMMMVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVMMMMMMMMVXVXVXVXVXVXVXVXVXVXVXMMXMVXVXVXVXVXVXVXVMXVMXVXVXV"
+ b"XVXVXVXMMMVXMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXMMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXV"
+ b"XVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXV"
+ b"XVMVXVXVXVXVXVXVXVMVXVXVXVXVXMMVXVMVMVXVMVMVMVMVMVXVMVMMMMMVMVMV"
+ b"XVMVMVMVMVMVXVXVXVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMXMXVMV"
+ b"IVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXMMMMMMXVXVXVXVXVXVXVXVXVX"
+ b"VIVXVXVXVIVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVMMM"
+ b"MMMMMMVXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMVXVXVMMMV"
+ b"MMMMMMMMMMMVMMMMMMMMMMMMMMMMMMVMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMVMVM"
+ b"VMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVM"
+ b"VMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMMMMMMMVXMMMMMMXVMMMMMMMMVMMMMMM"
+ b"MMVXMMMMMMXVXMXMXMXMVMMMMMMMMVMVMVMVMVMVMVMXMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMXVMMMMMMMMMMMMMMXVMMMMMMMMMVMXVM"
+ b"MMMXMMMVMVMMMMMMMMXMMMXVMMMMMMMMXMIDXVMVMVXVXMVMMVMMVMVMVMMMVMVM"
+ b"IXIMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMMMMMMMMMMXVMVXVXMMMMVMMMVM"
+ b"MMMMMVMMVMMMVMMMVMVMVMVMMMMVMMMMMMMMMMVMMMMMVMMMMVMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMVXVMMVMMVMMVXVXMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMMMVMVXVMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMVMMMVMVMVMVMMMMVMVMVMM"
+ b"MMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVXVXVXVXVXMVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVMVMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMVMVMVMMMVXVXVMMVMVMXV"
+ b"XMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMIMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXVMMMMMMMMMMMMMMVXVMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMXMMMMMMMMMMMMM"
+ b"MMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVXMVMVMVMVMVMVMVM"
+ b"VMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMVXV"
+ b"MVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMV"
+ b"MVMVMVMVMVMVMVMVMVMMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMMMMMVM"
+ b"MMMMVMVMVMVMVMVMVMVMMMMVMVMMVMVMVMVMVMVMVMVMXMMMMMVMMVXVXVXVXVXV"
+ b"XVXVXVXVXVXVXVXVXVXVXVXVXVXVXVMMMMVMVXMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVXVXVX"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMVMVMVMMMMMMMMMMVMVMVMMVMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMXMMMMMMXMMMMMXMVMMMMMMMMMMMMMMMMMMMMMMMMXMMMMM"
+ b"XMXMMXMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXMMMMMMMMMMMMMVIMMXMMM"
+ b"MMMXVXMMMMMMMMMMMMMMMMMMMVMMMMMMXMMMMMMMMMMMMMMMMMMMXMMMMXMMMVMX"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXIXMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMIMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMMMXMMMMM"
+ b"MXMMMMMMXMMMXMMMMMMMXMMMMMMMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXV"
+ b"XVXVXVXVXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMXVXVXVXVMMMMMMMMMMMXMMMMMMMMMMMMMMMXMMM"
+ b"MMMMXMMXVXVXVXVXVXVXVXVXVMMMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMXMMMMMMMMMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMXVXVXVXVMMMMMMMMMMMMMMMMMMMMMMXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMVXMMMMMMMMMMMMMMMMMMMMMMMMMXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVIXVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVX"
+ b"VXVXVXVXVXVXVMMMMMMMVIVMMMMMMVXVXVXVXVXVXMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMXMMXMXMMXMMMMXMMMMMMMMMMMMXMXMMMMMMMXMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMXMMMMMMMMXMMMMM"
+ b"MMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMXMMMMMXMXMMMMMMMXMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVXVXVXVXVXVXVXVXMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXVXVXVXVXVXVXVXVXVX"
+ b"VXVXVXVXVXVXVXVXVXVXVXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVXVXVXVX"
+ b"VXMMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMXMMXMXMXMMMMMMMMMMXMMMMXMXMXMX"
+ b"MXMXMXMMMXMMXMXMXMXMXMXMXMMXMXMMMMXMMMMMMMXMMMMXMMMMXMXMMMMMMMMM"
+ b"MXMMMMMMMMMMMMMMMMMXMMMXMMMMMXMMMMMMMMMMMMMMMMMXVXVXVXVXVXVXVXMM"
+ b"MMMMMMMMVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMVMMMVMVXVMMMXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMXMMMMMMMMMXMMXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX"
+ b"VXVMMMMMMMMMMVXVXVXVXVXVXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
+ b"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMXVXVXIX"
+)
+
+uts46_replacements: tuple[Optional[str], ...] = (
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ " ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ " ̈",
+ None,
+ "a",
+ None,
+ None,
+ None,
+ None,
+ " ̄",
+ None,
+ None,
+ "2",
+ "3",
+ " ́",
+ "μ",
+ None,
+ None,
+ " ̧",
+ "1",
+ "o",
+ None,
+ "1⁄4",
+ "1⁄2",
+ "3⁄4",
+ None,
+ "à",
+ "á",
+ "â",
+ "ã",
+ "ä",
+ "å",
+ "æ",
+ "ç",
+ "è",
+ "é",
+ "ê",
+ "ë",
+ "ì",
+ "í",
+ "î",
+ "ï",
+ "ð",
+ "ñ",
+ "ò",
+ "ó",
+ "ô",
+ "õ",
+ "ö",
+ None,
+ "ø",
+ "ù",
+ "ú",
+ "û",
+ "ü",
+ "ý",
+ "þ",
+ "ss",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ā",
+ None,
+ "ă",
+ None,
+ "ą",
+ None,
+ "ć",
+ None,
+ "ĉ",
+ None,
+ "ċ",
+ None,
+ "č",
+ None,
+ "ď",
+ None,
+ "đ",
+ None,
+ "ē",
+ None,
+ "ĕ",
+ None,
+ "ė",
+ None,
+ "ę",
+ None,
+ "ě",
+ None,
+ "ĝ",
+ None,
+ "ğ",
+ None,
+ "ġ",
+ None,
+ "ģ",
+ None,
+ "ĥ",
+ None,
+ "ħ",
+ None,
+ "ĩ",
+ None,
+ "ī",
+ None,
+ "ĭ",
+ None,
+ "į",
+ None,
+ "i̇",
+ None,
+ "ij",
+ "ĵ",
+ None,
+ "ķ",
+ None,
+ "ĺ",
+ None,
+ "ļ",
+ None,
+ "ľ",
+ None,
+ "l·",
+ "ł",
+ None,
+ "ń",
+ None,
+ "ņ",
+ None,
+ "ň",
+ None,
+ "ʼn",
+ "ŋ",
+ None,
+ "ō",
+ None,
+ "ŏ",
+ None,
+ "ő",
+ None,
+ "œ",
+ None,
+ "ŕ",
+ None,
+ "ŗ",
+ None,
+ "ř",
+ None,
+ "ś",
+ None,
+ "ŝ",
+ None,
+ "ş",
+ None,
+ "š",
+ None,
+ "ţ",
+ None,
+ "ť",
+ None,
+ "ŧ",
+ None,
+ "ũ",
+ None,
+ "ū",
+ None,
+ "ŭ",
+ None,
+ "ů",
+ None,
+ "ű",
+ None,
+ "ų",
+ None,
+ "ŵ",
+ None,
+ "ŷ",
+ None,
+ "ÿ",
+ "ź",
+ None,
+ "ż",
+ None,
+ "ž",
+ None,
+ "s",
+ None,
+ "ɓ",
+ "ƃ",
+ None,
+ "ƅ",
+ None,
+ "ɔ",
+ "ƈ",
+ None,
+ "ɖ",
+ "ɗ",
+ "ƌ",
+ None,
+ "ǝ",
+ "ə",
+ "ɛ",
+ "ƒ",
+ None,
+ "ɠ",
+ "ɣ",
+ None,
+ "ɩ",
+ "ɨ",
+ "ƙ",
+ None,
+ "ɯ",
+ "ɲ",
+ None,
+ "ɵ",
+ "ơ",
+ None,
+ "ƣ",
+ None,
+ "ƥ",
+ None,
+ "ʀ",
+ "ƨ",
+ None,
+ "ʃ",
+ None,
+ "ƭ",
+ None,
+ "ʈ",
+ "ư",
+ None,
+ "ʊ",
+ "ʋ",
+ "ƴ",
+ None,
+ "ƶ",
+ None,
+ "ʒ",
+ "ƹ",
+ None,
+ "ƽ",
+ None,
+ "dž",
+ "lj",
+ "nj",
+ "ǎ",
+ None,
+ "ǐ",
+ None,
+ "ǒ",
+ None,
+ "ǔ",
+ None,
+ "ǖ",
+ None,
+ "ǘ",
+ None,
+ "ǚ",
+ None,
+ "ǜ",
+ None,
+ "ǟ",
+ None,
+ "ǡ",
+ None,
+ "ǣ",
+ None,
+ "ǥ",
+ None,
+ "ǧ",
+ None,
+ "ǩ",
+ None,
+ "ǫ",
+ None,
+ "ǭ",
+ None,
+ "ǯ",
+ None,
+ "dz",
+ "ǵ",
+ None,
+ "ƕ",
+ "ƿ",
+ "ǹ",
+ None,
+ "ǻ",
+ None,
+ "ǽ",
+ None,
+ "ǿ",
+ None,
+ "ȁ",
+ None,
+ "ȃ",
+ None,
+ "ȅ",
+ None,
+ "ȇ",
+ None,
+ "ȉ",
+ None,
+ "ȋ",
+ None,
+ "ȍ",
+ None,
+ "ȏ",
+ None,
+ "ȑ",
+ None,
+ "ȓ",
+ None,
+ "ȕ",
+ None,
+ "ȗ",
+ None,
+ "ș",
+ None,
+ "ț",
+ None,
+ "ȝ",
+ None,
+ "ȟ",
+ None,
+ "ƞ",
+ None,
+ "ȣ",
+ None,
+ "ȥ",
+ None,
+ "ȧ",
+ None,
+ "ȩ",
+ None,
+ "ȫ",
+ None,
+ "ȭ",
+ None,
+ "ȯ",
+ None,
+ "ȱ",
+ None,
+ "ȳ",
+ None,
+ "ⱥ",
+ "ȼ",
+ None,
+ "ƚ",
+ "ⱦ",
+ None,
+ "ɂ",
+ None,
+ "ƀ",
+ "ʉ",
+ "ʌ",
+ "ɇ",
+ None,
+ "ɉ",
+ None,
+ "ɋ",
+ None,
+ "ɍ",
+ None,
+ "ɏ",
+ None,
+ "h",
+ "ɦ",
+ "j",
+ "r",
+ "ɹ",
+ "ɻ",
+ "ʁ",
+ "w",
+ "y",
+ None,
+ " ̆",
+ " ̇",
+ " ̊",
+ " ̨",
+ " ̃",
+ " ̋",
+ None,
+ "ɣ",
+ "l",
+ "s",
+ "x",
+ "ʕ",
+ None,
+ "̀",
+ "́",
+ None,
+ "̓",
+ "̈́",
+ "ι",
+ None,
+ None,
+ None,
+ "ͱ",
+ None,
+ "ͳ",
+ None,
+ "ʹ",
+ None,
+ "ͷ",
+ None,
+ None,
+ " ι",
+ None,
+ ";",
+ "ϳ",
+ None,
+ " ́",
+ " ̈́",
+ "ά",
+ "·",
+ "έ",
+ "ή",
+ "ί",
+ None,
+ "ό",
+ None,
+ "ύ",
+ "ώ",
+ None,
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ None,
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "ϊ",
+ "ϋ",
+ None,
+ "σ",
+ None,
+ "ϗ",
+ "β",
+ "θ",
+ "υ",
+ "ύ",
+ "ϋ",
+ "φ",
+ "π",
+ None,
+ "ϙ",
+ None,
+ "ϛ",
+ None,
+ "ϝ",
+ None,
+ "ϟ",
+ None,
+ "ϡ",
+ None,
+ "ϣ",
+ None,
+ "ϥ",
+ None,
+ "ϧ",
+ None,
+ "ϩ",
+ None,
+ "ϫ",
+ None,
+ "ϭ",
+ None,
+ "ϯ",
+ None,
+ "κ",
+ "ρ",
+ "σ",
+ None,
+ "θ",
+ "ε",
+ None,
+ "ϸ",
+ None,
+ "σ",
+ "ϻ",
+ None,
+ "ͻ",
+ "ͼ",
+ "ͽ",
+ "ѐ",
+ "ё",
+ "ђ",
+ "ѓ",
+ "є",
+ "ѕ",
+ "і",
+ "ї",
+ "ј",
+ "љ",
+ "њ",
+ "ћ",
+ "ќ",
+ "ѝ",
+ "ў",
+ "џ",
+ "а",
+ "б",
+ "в",
+ "г",
+ "д",
+ "е",
+ "ж",
+ "з",
+ "и",
+ "й",
+ "к",
+ "л",
+ "м",
+ "н",
+ "о",
+ "п",
+ "р",
+ "с",
+ "т",
+ "у",
+ "ф",
+ "х",
+ "ц",
+ "ч",
+ "ш",
+ "щ",
+ "ъ",
+ "ы",
+ "ь",
+ "э",
+ "ю",
+ "я",
+ None,
+ "ѡ",
+ None,
+ "ѣ",
+ None,
+ "ѥ",
+ None,
+ "ѧ",
+ None,
+ "ѩ",
+ None,
+ "ѫ",
+ None,
+ "ѭ",
+ None,
+ "ѯ",
+ None,
+ "ѱ",
+ None,
+ "ѳ",
+ None,
+ "ѵ",
+ None,
+ "ѷ",
+ None,
+ "ѹ",
+ None,
+ "ѻ",
+ None,
+ "ѽ",
+ None,
+ "ѿ",
+ None,
+ "ҁ",
+ None,
+ "ҋ",
+ None,
+ "ҍ",
+ None,
+ "ҏ",
+ None,
+ "ґ",
+ None,
+ "ғ",
+ None,
+ "ҕ",
+ None,
+ "җ",
+ None,
+ "ҙ",
+ None,
+ "қ",
+ None,
+ "ҝ",
+ None,
+ "ҟ",
+ None,
+ "ҡ",
+ None,
+ "ң",
+ None,
+ "ҥ",
+ None,
+ "ҧ",
+ None,
+ "ҩ",
+ None,
+ "ҫ",
+ None,
+ "ҭ",
+ None,
+ "ү",
+ None,
+ "ұ",
+ None,
+ "ҳ",
+ None,
+ "ҵ",
+ None,
+ "ҷ",
+ None,
+ "ҹ",
+ None,
+ "һ",
+ None,
+ "ҽ",
+ None,
+ "ҿ",
+ None,
+ "ӏ",
+ "ӂ",
+ None,
+ "ӄ",
+ None,
+ "ӆ",
+ None,
+ "ӈ",
+ None,
+ "ӊ",
+ None,
+ "ӌ",
+ None,
+ "ӎ",
+ None,
+ "ӑ",
+ None,
+ "ӓ",
+ None,
+ "ӕ",
+ None,
+ "ӗ",
+ None,
+ "ә",
+ None,
+ "ӛ",
+ None,
+ "ӝ",
+ None,
+ "ӟ",
+ None,
+ "ӡ",
+ None,
+ "ӣ",
+ None,
+ "ӥ",
+ None,
+ "ӧ",
+ None,
+ "ө",
+ None,
+ "ӫ",
+ None,
+ "ӭ",
+ None,
+ "ӯ",
+ None,
+ "ӱ",
+ None,
+ "ӳ",
+ None,
+ "ӵ",
+ None,
+ "ӷ",
+ None,
+ "ӹ",
+ None,
+ "ӻ",
+ None,
+ "ӽ",
+ None,
+ "ӿ",
+ None,
+ "ԁ",
+ None,
+ "ԃ",
+ None,
+ "ԅ",
+ None,
+ "ԇ",
+ None,
+ "ԉ",
+ None,
+ "ԋ",
+ None,
+ "ԍ",
+ None,
+ "ԏ",
+ None,
+ "ԑ",
+ None,
+ "ԓ",
+ None,
+ "ԕ",
+ None,
+ "ԗ",
+ None,
+ "ԙ",
+ None,
+ "ԛ",
+ None,
+ "ԝ",
+ None,
+ "ԟ",
+ None,
+ "ԡ",
+ None,
+ "ԣ",
+ None,
+ "ԥ",
+ None,
+ "ԧ",
+ None,
+ "ԩ",
+ None,
+ "ԫ",
+ None,
+ "ԭ",
+ None,
+ "ԯ",
+ None,
+ None,
+ "ա",
+ "բ",
+ "գ",
+ "դ",
+ "ե",
+ "զ",
+ "է",
+ "ը",
+ "թ",
+ "ժ",
+ "ի",
+ "լ",
+ "խ",
+ "ծ",
+ "կ",
+ "հ",
+ "ձ",
+ "ղ",
+ "ճ",
+ "մ",
+ "յ",
+ "ն",
+ "շ",
+ "ո",
+ "չ",
+ "պ",
+ "ջ",
+ "ռ",
+ "ս",
+ "վ",
+ "տ",
+ "ր",
+ "ց",
+ "ւ",
+ "փ",
+ "ք",
+ "օ",
+ "ֆ",
+ None,
+ None,
+ "եւ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "اٴ",
+ "وٴ",
+ "ۇٴ",
+ "يٴ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "क़",
+ "ख़",
+ "ग़",
+ "ज़",
+ "ड़",
+ "ढ़",
+ "फ़",
+ "य़",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ড়",
+ "ঢ়",
+ None,
+ "য়",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ਲ਼",
+ None,
+ None,
+ "ਸ਼",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ਖ਼",
+ "ਗ਼",
+ "ਜ਼",
+ None,
+ None,
+ "ਫ਼",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ଡ଼",
+ "ଢ଼",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ํา",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ໍາ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ຫນ",
+ "ຫມ",
+ None,
+ None,
+ None,
+ "་",
+ None,
+ "གྷ",
+ None,
+ None,
+ None,
+ "ཌྷ",
+ None,
+ "དྷ",
+ None,
+ "བྷ",
+ None,
+ "ཛྷ",
+ None,
+ "ཀྵ",
+ None,
+ None,
+ None,
+ "ཱི",
+ None,
+ "ཱུ",
+ "ྲྀ",
+ "ྲཱྀ",
+ "ླྀ",
+ "ླཱྀ",
+ None,
+ "ཱྀ",
+ None,
+ "ྒྷ",
+ None,
+ None,
+ None,
+ "ྜྷ",
+ None,
+ "ྡྷ",
+ None,
+ "ྦྷ",
+ None,
+ "ྫྷ",
+ None,
+ "ྐྵ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ⴀ",
+ "ⴁ",
+ "ⴂ",
+ "ⴃ",
+ "ⴄ",
+ "ⴅ",
+ "ⴆ",
+ "ⴇ",
+ "ⴈ",
+ "ⴉ",
+ "ⴊ",
+ "ⴋ",
+ "ⴌ",
+ "ⴍ",
+ "ⴎ",
+ "ⴏ",
+ "ⴐ",
+ "ⴑ",
+ "ⴒ",
+ "ⴓ",
+ "ⴔ",
+ "ⴕ",
+ "ⴖ",
+ "ⴗ",
+ "ⴘ",
+ "ⴙ",
+ "ⴚ",
+ "ⴛ",
+ "ⴜ",
+ "ⴝ",
+ "ⴞ",
+ "ⴟ",
+ "ⴠ",
+ "ⴡ",
+ "ⴢ",
+ "ⴣ",
+ "ⴤ",
+ "ⴥ",
+ None,
+ "ⴧ",
+ None,
+ "ⴭ",
+ None,
+ None,
+ "ნ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "Ᏸ",
+ "Ᏹ",
+ "Ᏺ",
+ "Ᏻ",
+ "Ᏼ",
+ "Ᏽ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "в",
+ "д",
+ "о",
+ "с",
+ "т",
+ "ъ",
+ "ѣ",
+ "ꙋ",
+ "\u1c8a",
+ None,
+ None,
+ "ა",
+ "ბ",
+ "გ",
+ "დ",
+ "ე",
+ "ვ",
+ "ზ",
+ "თ",
+ "ი",
+ "კ",
+ "ლ",
+ "მ",
+ "ნ",
+ "ო",
+ "პ",
+ "ჟ",
+ "რ",
+ "ს",
+ "ტ",
+ "უ",
+ "ფ",
+ "ქ",
+ "ღ",
+ "ყ",
+ "შ",
+ "ჩ",
+ "ც",
+ "ძ",
+ "წ",
+ "ჭ",
+ "ხ",
+ "ჯ",
+ "ჰ",
+ "ჱ",
+ "ჲ",
+ "ჳ",
+ "ჴ",
+ "ჵ",
+ "ჶ",
+ "ჷ",
+ "ჸ",
+ "ჹ",
+ "ჺ",
+ None,
+ "ჽ",
+ "ჾ",
+ "ჿ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ "a",
+ "æ",
+ "b",
+ None,
+ "d",
+ "e",
+ "ǝ",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ None,
+ "o",
+ "ȣ",
+ "p",
+ "r",
+ "t",
+ "u",
+ "w",
+ "a",
+ "ɐ",
+ "ɑ",
+ "ᴂ",
+ "b",
+ "d",
+ "e",
+ "ə",
+ "ɛ",
+ "ɜ",
+ "g",
+ None,
+ "k",
+ "m",
+ "ŋ",
+ "o",
+ "ɔ",
+ "ᴖ",
+ "ᴗ",
+ "p",
+ "t",
+ "u",
+ "ᴝ",
+ "ɯ",
+ "v",
+ "ᴥ",
+ "β",
+ "γ",
+ "δ",
+ "φ",
+ "χ",
+ "i",
+ "r",
+ "u",
+ "v",
+ "β",
+ "γ",
+ "ρ",
+ "φ",
+ "χ",
+ None,
+ "н",
+ None,
+ "ɒ",
+ "c",
+ "ɕ",
+ "ð",
+ "ɜ",
+ "f",
+ "ɟ",
+ "ɡ",
+ "ɥ",
+ "ɨ",
+ "ɩ",
+ "ɪ",
+ "ᵻ",
+ "ʝ",
+ "ɭ",
+ "ᶅ",
+ "ʟ",
+ "ɱ",
+ "ɰ",
+ "ɲ",
+ "ɳ",
+ "ɴ",
+ "ɵ",
+ "ɸ",
+ "ʂ",
+ "ʃ",
+ "ƫ",
+ "ʉ",
+ "ʊ",
+ "ᴜ",
+ "ʋ",
+ "ʌ",
+ "z",
+ "ʐ",
+ "ʑ",
+ "ʒ",
+ "θ",
+ None,
+ "ḁ",
+ None,
+ "ḃ",
+ None,
+ "ḅ",
+ None,
+ "ḇ",
+ None,
+ "ḉ",
+ None,
+ "ḋ",
+ None,
+ "ḍ",
+ None,
+ "ḏ",
+ None,
+ "ḑ",
+ None,
+ "ḓ",
+ None,
+ "ḕ",
+ None,
+ "ḗ",
+ None,
+ "ḙ",
+ None,
+ "ḛ",
+ None,
+ "ḝ",
+ None,
+ "ḟ",
+ None,
+ "ḡ",
+ None,
+ "ḣ",
+ None,
+ "ḥ",
+ None,
+ "ḧ",
+ None,
+ "ḩ",
+ None,
+ "ḫ",
+ None,
+ "ḭ",
+ None,
+ "ḯ",
+ None,
+ "ḱ",
+ None,
+ "ḳ",
+ None,
+ "ḵ",
+ None,
+ "ḷ",
+ None,
+ "ḹ",
+ None,
+ "ḻ",
+ None,
+ "ḽ",
+ None,
+ "ḿ",
+ None,
+ "ṁ",
+ None,
+ "ṃ",
+ None,
+ "ṅ",
+ None,
+ "ṇ",
+ None,
+ "ṉ",
+ None,
+ "ṋ",
+ None,
+ "ṍ",
+ None,
+ "ṏ",
+ None,
+ "ṑ",
+ None,
+ "ṓ",
+ None,
+ "ṕ",
+ None,
+ "ṗ",
+ None,
+ "ṙ",
+ None,
+ "ṛ",
+ None,
+ "ṝ",
+ None,
+ "ṟ",
+ None,
+ "ṡ",
+ None,
+ "ṣ",
+ None,
+ "ṥ",
+ None,
+ "ṧ",
+ None,
+ "ṩ",
+ None,
+ "ṫ",
+ None,
+ "ṭ",
+ None,
+ "ṯ",
+ None,
+ "ṱ",
+ None,
+ "ṳ",
+ None,
+ "ṵ",
+ None,
+ "ṷ",
+ None,
+ "ṹ",
+ None,
+ "ṻ",
+ None,
+ "ṽ",
+ None,
+ "ṿ",
+ None,
+ "ẁ",
+ None,
+ "ẃ",
+ None,
+ "ẅ",
+ None,
+ "ẇ",
+ None,
+ "ẉ",
+ None,
+ "ẋ",
+ None,
+ "ẍ",
+ None,
+ "ẏ",
+ None,
+ "ẑ",
+ None,
+ "ẓ",
+ None,
+ "ẕ",
+ None,
+ "aʾ",
+ "ṡ",
+ None,
+ "ß",
+ None,
+ "ạ",
+ None,
+ "ả",
+ None,
+ "ấ",
+ None,
+ "ầ",
+ None,
+ "ẩ",
+ None,
+ "ẫ",
+ None,
+ "ậ",
+ None,
+ "ắ",
+ None,
+ "ằ",
+ None,
+ "ẳ",
+ None,
+ "ẵ",
+ None,
+ "ặ",
+ None,
+ "ẹ",
+ None,
+ "ẻ",
+ None,
+ "ẽ",
+ None,
+ "ế",
+ None,
+ "ề",
+ None,
+ "ể",
+ None,
+ "ễ",
+ None,
+ "ệ",
+ None,
+ "ỉ",
+ None,
+ "ị",
+ None,
+ "ọ",
+ None,
+ "ỏ",
+ None,
+ "ố",
+ None,
+ "ồ",
+ None,
+ "ổ",
+ None,
+ "ỗ",
+ None,
+ "ộ",
+ None,
+ "ớ",
+ None,
+ "ờ",
+ None,
+ "ở",
+ None,
+ "ỡ",
+ None,
+ "ợ",
+ None,
+ "ụ",
+ None,
+ "ủ",
+ None,
+ "ứ",
+ None,
+ "ừ",
+ None,
+ "ử",
+ None,
+ "ữ",
+ None,
+ "ự",
+ None,
+ "ỳ",
+ None,
+ "ỵ",
+ None,
+ "ỷ",
+ None,
+ "ỹ",
+ None,
+ "ỻ",
+ None,
+ "ỽ",
+ None,
+ "ỿ",
+ None,
+ "ἀ",
+ "ἁ",
+ "ἂ",
+ "ἃ",
+ "ἄ",
+ "ἅ",
+ "ἆ",
+ "ἇ",
+ None,
+ None,
+ "ἐ",
+ "ἑ",
+ "ἒ",
+ "ἓ",
+ "ἔ",
+ "ἕ",
+ None,
+ None,
+ "ἠ",
+ "ἡ",
+ "ἢ",
+ "ἣ",
+ "ἤ",
+ "ἥ",
+ "ἦ",
+ "ἧ",
+ None,
+ "ἰ",
+ "ἱ",
+ "ἲ",
+ "ἳ",
+ "ἴ",
+ "ἵ",
+ "ἶ",
+ "ἷ",
+ None,
+ None,
+ "ὀ",
+ "ὁ",
+ "ὂ",
+ "ὃ",
+ "ὄ",
+ "ὅ",
+ None,
+ None,
+ None,
+ "ὑ",
+ None,
+ "ὓ",
+ None,
+ "ὕ",
+ None,
+ "ὗ",
+ None,
+ "ὠ",
+ "ὡ",
+ "ὢ",
+ "ὣ",
+ "ὤ",
+ "ὥ",
+ "ὦ",
+ "ὧ",
+ None,
+ "ά",
+ None,
+ "έ",
+ None,
+ "ή",
+ None,
+ "ί",
+ None,
+ "ό",
+ None,
+ "ύ",
+ None,
+ "ώ",
+ None,
+ "ἀι",
+ "ἁι",
+ "ἂι",
+ "ἃι",
+ "ἄι",
+ "ἅι",
+ "ἆι",
+ "ἇι",
+ "ἀι",
+ "ἁι",
+ "ἂι",
+ "ἃι",
+ "ἄι",
+ "ἅι",
+ "ἆι",
+ "ἇι",
+ "ἠι",
+ "ἡι",
+ "ἢι",
+ "ἣι",
+ "ἤι",
+ "ἥι",
+ "ἦι",
+ "ἧι",
+ "ἠι",
+ "ἡι",
+ "ἢι",
+ "ἣι",
+ "ἤι",
+ "ἥι",
+ "ἦι",
+ "ἧι",
+ "ὠι",
+ "ὡι",
+ "ὢι",
+ "ὣι",
+ "ὤι",
+ "ὥι",
+ "ὦι",
+ "ὧι",
+ "ὠι",
+ "ὡι",
+ "ὢι",
+ "ὣι",
+ "ὤι",
+ "ὥι",
+ "ὦι",
+ "ὧι",
+ None,
+ "ὰι",
+ "αι",
+ "άι",
+ None,
+ None,
+ "ᾶι",
+ "ᾰ",
+ "ᾱ",
+ "ὰ",
+ "ά",
+ "αι",
+ " ̓",
+ "ι",
+ " ̓",
+ " ͂",
+ " ̈͂",
+ "ὴι",
+ "ηι",
+ "ήι",
+ None,
+ None,
+ "ῆι",
+ "ὲ",
+ "έ",
+ "ὴ",
+ "ή",
+ "ηι",
+ " ̓̀",
+ " ̓́",
+ " ̓͂",
+ None,
+ "ΐ",
+ None,
+ None,
+ "ῐ",
+ "ῑ",
+ "ὶ",
+ "ί",
+ None,
+ " ̔̀",
+ " ̔́",
+ " ̔͂",
+ None,
+ "ΰ",
+ None,
+ "ῠ",
+ "ῡ",
+ "ὺ",
+ "ύ",
+ "ῥ",
+ " ̈̀",
+ " ̈́",
+ "`",
+ None,
+ "ὼι",
+ "ωι",
+ "ώι",
+ None,
+ None,
+ "ῶι",
+ "ὸ",
+ "ό",
+ "ὼ",
+ "ώ",
+ "ωι",
+ " ́",
+ " ̔",
+ None,
+ " ",
+ None,
+ "",
+ None,
+ None,
+ "‐",
+ None,
+ " ̳",
+ None,
+ None,
+ None,
+ None,
+ " ",
+ None,
+ "′′",
+ "′′′",
+ None,
+ "‵‵",
+ "‵‵‵",
+ None,
+ "!!",
+ None,
+ " ̅",
+ None,
+ "??",
+ "?!",
+ "!?",
+ None,
+ "′′′′",
+ None,
+ " ",
+ None,
+ None,
+ None,
+ "0",
+ "i",
+ None,
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "+",
+ "−",
+ "=",
+ "(",
+ ")",
+ "n",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "+",
+ "−",
+ "=",
+ "(",
+ ")",
+ None,
+ "a",
+ "e",
+ "o",
+ "x",
+ "ə",
+ "h",
+ "k",
+ "l",
+ "m",
+ "n",
+ "p",
+ "s",
+ "t",
+ None,
+ None,
+ "rs",
+ None,
+ None,
+ None,
+ None,
+ "a/c",
+ "a/s",
+ "c",
+ "°c",
+ None,
+ "c/o",
+ "c/u",
+ "ɛ",
+ None,
+ "°f",
+ "g",
+ "h",
+ "ħ",
+ "i",
+ "l",
+ None,
+ "n",
+ "no",
+ None,
+ "p",
+ "q",
+ "r",
+ None,
+ "sm",
+ "tel",
+ "tm",
+ None,
+ "z",
+ None,
+ "ω",
+ None,
+ "z",
+ None,
+ "k",
+ "å",
+ "b",
+ "c",
+ None,
+ "e",
+ "f",
+ "ⅎ",
+ "m",
+ "o",
+ "א",
+ "ב",
+ "ג",
+ "ד",
+ "i",
+ None,
+ "fax",
+ "π",
+ "γ",
+ "π",
+ "∑",
+ None,
+ "d",
+ "e",
+ "i",
+ "j",
+ None,
+ "1⁄7",
+ "1⁄9",
+ "1⁄10",
+ "1⁄3",
+ "2⁄3",
+ "1⁄5",
+ "2⁄5",
+ "3⁄5",
+ "4⁄5",
+ "1⁄6",
+ "5⁄6",
+ "1⁄8",
+ "3⁄8",
+ "5⁄8",
+ "7⁄8",
+ "1⁄",
+ "i",
+ "ii",
+ "iii",
+ "iv",
+ "v",
+ "vi",
+ "vii",
+ "viii",
+ "ix",
+ "x",
+ "xi",
+ "xii",
+ "l",
+ "c",
+ "d",
+ "m",
+ "i",
+ "ii",
+ "iii",
+ "iv",
+ "v",
+ "vi",
+ "vii",
+ "viii",
+ "ix",
+ "x",
+ "xi",
+ "xii",
+ "l",
+ "c",
+ "d",
+ "m",
+ None,
+ "ↄ",
+ None,
+ "0⁄3",
+ None,
+ None,
+ None,
+ "∫∫",
+ "∫∫∫",
+ None,
+ "∮∮",
+ "∮∮∮",
+ None,
+ "〈",
+ "〉",
+ None,
+ None,
+ None,
+ None,
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15",
+ "16",
+ "17",
+ "18",
+ "19",
+ "20",
+ "(1)",
+ "(2)",
+ "(3)",
+ "(4)",
+ "(5)",
+ "(6)",
+ "(7)",
+ "(8)",
+ "(9)",
+ "(10)",
+ "(11)",
+ "(12)",
+ "(13)",
+ "(14)",
+ "(15)",
+ "(16)",
+ "(17)",
+ "(18)",
+ "(19)",
+ "(20)",
+ None,
+ "(a)",
+ "(b)",
+ "(c)",
+ "(d)",
+ "(e)",
+ "(f)",
+ "(g)",
+ "(h)",
+ "(i)",
+ "(j)",
+ "(k)",
+ "(l)",
+ "(m)",
+ "(n)",
+ "(o)",
+ "(p)",
+ "(q)",
+ "(r)",
+ "(s)",
+ "(t)",
+ "(u)",
+ "(v)",
+ "(w)",
+ "(x)",
+ "(y)",
+ "(z)",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "0",
+ None,
+ "∫∫∫∫",
+ None,
+ "::=",
+ "==",
+ "===",
+ None,
+ "⫝̸",
+ None,
+ None,
+ None,
+ "ⰰ",
+ "ⰱ",
+ "ⰲ",
+ "ⰳ",
+ "ⰴ",
+ "ⰵ",
+ "ⰶ",
+ "ⰷ",
+ "ⰸ",
+ "ⰹ",
+ "ⰺ",
+ "ⰻ",
+ "ⰼ",
+ "ⰽ",
+ "ⰾ",
+ "ⰿ",
+ "ⱀ",
+ "ⱁ",
+ "ⱂ",
+ "ⱃ",
+ "ⱄ",
+ "ⱅ",
+ "ⱆ",
+ "ⱇ",
+ "ⱈ",
+ "ⱉ",
+ "ⱊ",
+ "ⱋ",
+ "ⱌ",
+ "ⱍ",
+ "ⱎ",
+ "ⱏ",
+ "ⱐ",
+ "ⱑ",
+ "ⱒ",
+ "ⱓ",
+ "ⱔ",
+ "ⱕ",
+ "ⱖ",
+ "ⱗ",
+ "ⱘ",
+ "ⱙ",
+ "ⱚ",
+ "ⱛ",
+ "ⱜ",
+ "ⱝ",
+ "ⱞ",
+ "ⱟ",
+ None,
+ "ⱡ",
+ None,
+ "ɫ",
+ "ᵽ",
+ "ɽ",
+ None,
+ "ⱨ",
+ None,
+ "ⱪ",
+ None,
+ "ⱬ",
+ None,
+ "ɑ",
+ "ɱ",
+ "ɐ",
+ "ɒ",
+ None,
+ "ⱳ",
+ None,
+ "ⱶ",
+ None,
+ "j",
+ "v",
+ "ȿ",
+ "ɀ",
+ "ⲁ",
+ None,
+ "ⲃ",
+ None,
+ "ⲅ",
+ None,
+ "ⲇ",
+ None,
+ "ⲉ",
+ None,
+ "ⲋ",
+ None,
+ "ⲍ",
+ None,
+ "ⲏ",
+ None,
+ "ⲑ",
+ None,
+ "ⲓ",
+ None,
+ "ⲕ",
+ None,
+ "ⲗ",
+ None,
+ "ⲙ",
+ None,
+ "ⲛ",
+ None,
+ "ⲝ",
+ None,
+ "ⲟ",
+ None,
+ "ⲡ",
+ None,
+ "ⲣ",
+ None,
+ "ⲥ",
+ None,
+ "ⲧ",
+ None,
+ "ⲩ",
+ None,
+ "ⲫ",
+ None,
+ "ⲭ",
+ None,
+ "ⲯ",
+ None,
+ "ⲱ",
+ None,
+ "ⲳ",
+ None,
+ "ⲵ",
+ None,
+ "ⲷ",
+ None,
+ "ⲹ",
+ None,
+ "ⲻ",
+ None,
+ "ⲽ",
+ None,
+ "ⲿ",
+ None,
+ "ⳁ",
+ None,
+ "ⳃ",
+ None,
+ "ⳅ",
+ None,
+ "ⳇ",
+ None,
+ "ⳉ",
+ None,
+ "ⳋ",
+ None,
+ "ⳍ",
+ None,
+ "ⳏ",
+ None,
+ "ⳑ",
+ None,
+ "ⳓ",
+ None,
+ "ⳕ",
+ None,
+ "ⳗ",
+ None,
+ "ⳙ",
+ None,
+ "ⳛ",
+ None,
+ "ⳝ",
+ None,
+ "ⳟ",
+ None,
+ "ⳡ",
+ None,
+ "ⳣ",
+ None,
+ "ⳬ",
+ None,
+ "ⳮ",
+ None,
+ "ⳳ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ⵡ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "母",
+ None,
+ "龟",
+ None,
+ "一",
+ "丨",
+ "丶",
+ "丿",
+ "乙",
+ "亅",
+ "二",
+ "亠",
+ "人",
+ "儿",
+ "入",
+ "八",
+ "冂",
+ "冖",
+ "冫",
+ "几",
+ "凵",
+ "刀",
+ "力",
+ "勹",
+ "匕",
+ "匚",
+ "匸",
+ "十",
+ "卜",
+ "卩",
+ "厂",
+ "厶",
+ "又",
+ "口",
+ "囗",
+ "土",
+ "士",
+ "夂",
+ "夊",
+ "夕",
+ "大",
+ "女",
+ "子",
+ "宀",
+ "寸",
+ "小",
+ "尢",
+ "尸",
+ "屮",
+ "山",
+ "巛",
+ "工",
+ "己",
+ "巾",
+ "干",
+ "幺",
+ "广",
+ "廴",
+ "廾",
+ "弋",
+ "弓",
+ "彐",
+ "彡",
+ "彳",
+ "心",
+ "戈",
+ "戶",
+ "手",
+ "支",
+ "攴",
+ "文",
+ "斗",
+ "斤",
+ "方",
+ "无",
+ "日",
+ "曰",
+ "月",
+ "木",
+ "欠",
+ "止",
+ "歹",
+ "殳",
+ "毋",
+ "比",
+ "毛",
+ "氏",
+ "气",
+ "水",
+ "火",
+ "爪",
+ "父",
+ "爻",
+ "爿",
+ "片",
+ "牙",
+ "牛",
+ "犬",
+ "玄",
+ "玉",
+ "瓜",
+ "瓦",
+ "甘",
+ "生",
+ "用",
+ "田",
+ "疋",
+ "疒",
+ "癶",
+ "白",
+ "皮",
+ "皿",
+ "目",
+ "矛",
+ "矢",
+ "石",
+ "示",
+ "禸",
+ "禾",
+ "穴",
+ "立",
+ "竹",
+ "米",
+ "糸",
+ "缶",
+ "网",
+ "羊",
+ "羽",
+ "老",
+ "而",
+ "耒",
+ "耳",
+ "聿",
+ "肉",
+ "臣",
+ "自",
+ "至",
+ "臼",
+ "舌",
+ "舛",
+ "舟",
+ "艮",
+ "色",
+ "艸",
+ "虍",
+ "虫",
+ "血",
+ "行",
+ "衣",
+ "襾",
+ "見",
+ "角",
+ "言",
+ "谷",
+ "豆",
+ "豕",
+ "豸",
+ "貝",
+ "赤",
+ "走",
+ "足",
+ "身",
+ "車",
+ "辛",
+ "辰",
+ "辵",
+ "邑",
+ "酉",
+ "釆",
+ "里",
+ "金",
+ "長",
+ "門",
+ "阜",
+ "隶",
+ "隹",
+ "雨",
+ "靑",
+ "非",
+ "面",
+ "革",
+ "韋",
+ "韭",
+ "音",
+ "頁",
+ "風",
+ "飛",
+ "食",
+ "首",
+ "香",
+ "馬",
+ "骨",
+ "高",
+ "髟",
+ "鬥",
+ "鬯",
+ "鬲",
+ "鬼",
+ "魚",
+ "鳥",
+ "鹵",
+ "鹿",
+ "麥",
+ "麻",
+ "黃",
+ "黍",
+ "黑",
+ "黹",
+ "黽",
+ "鼎",
+ "鼓",
+ "鼠",
+ "鼻",
+ "齊",
+ "齒",
+ "龍",
+ "龜",
+ "龠",
+ None,
+ " ",
+ None,
+ ".",
+ None,
+ "〒",
+ None,
+ "十",
+ "卄",
+ "卅",
+ None,
+ None,
+ None,
+ None,
+ None,
+ " ゙",
+ " ゚",
+ None,
+ "より",
+ None,
+ "コト",
+ None,
+ None,
+ None,
+ "ᄀ",
+ "ᄁ",
+ "ᆪ",
+ "ᄂ",
+ "ᆬ",
+ "ᆭ",
+ "ᄃ",
+ "ᄄ",
+ "ᄅ",
+ "ᆰ",
+ "ᆱ",
+ "ᆲ",
+ "ᆳ",
+ "ᆴ",
+ "ᆵ",
+ "ᄚ",
+ "ᄆ",
+ "ᄇ",
+ "ᄈ",
+ "ᄡ",
+ "ᄉ",
+ "ᄊ",
+ "ᄋ",
+ "ᄌ",
+ "ᄍ",
+ "ᄎ",
+ "ᄏ",
+ "ᄐ",
+ "ᄑ",
+ "ᄒ",
+ "ᅡ",
+ "ᅢ",
+ "ᅣ",
+ "ᅤ",
+ "ᅥ",
+ "ᅦ",
+ "ᅧ",
+ "ᅨ",
+ "ᅩ",
+ "ᅪ",
+ "ᅫ",
+ "ᅬ",
+ "ᅭ",
+ "ᅮ",
+ "ᅯ",
+ "ᅰ",
+ "ᅱ",
+ "ᅲ",
+ "ᅳ",
+ "ᅴ",
+ "ᅵ",
+ None,
+ "ᄔ",
+ "ᄕ",
+ "ᇇ",
+ "ᇈ",
+ "ᇌ",
+ "ᇎ",
+ "ᇓ",
+ "ᇗ",
+ "ᇙ",
+ "ᄜ",
+ "ᇝ",
+ "ᇟ",
+ "ᄝ",
+ "ᄞ",
+ "ᄠ",
+ "ᄢ",
+ "ᄣ",
+ "ᄧ",
+ "ᄩ",
+ "ᄫ",
+ "ᄬ",
+ "ᄭ",
+ "ᄮ",
+ "ᄯ",
+ "ᄲ",
+ "ᄶ",
+ "ᅀ",
+ "ᅇ",
+ "ᅌ",
+ "ᇱ",
+ "ᇲ",
+ "ᅗ",
+ "ᅘ",
+ "ᅙ",
+ "ᆄ",
+ "ᆅ",
+ "ᆈ",
+ "ᆑ",
+ "ᆒ",
+ "ᆔ",
+ "ᆞ",
+ "ᆡ",
+ None,
+ None,
+ "一",
+ "二",
+ "三",
+ "四",
+ "上",
+ "中",
+ "下",
+ "甲",
+ "乙",
+ "丙",
+ "丁",
+ "天",
+ "地",
+ "人",
+ None,
+ None,
+ None,
+ "(ᄀ)",
+ "(ᄂ)",
+ "(ᄃ)",
+ "(ᄅ)",
+ "(ᄆ)",
+ "(ᄇ)",
+ "(ᄉ)",
+ "(ᄋ)",
+ "(ᄌ)",
+ "(ᄎ)",
+ "(ᄏ)",
+ "(ᄐ)",
+ "(ᄑ)",
+ "(ᄒ)",
+ "(가)",
+ "(나)",
+ "(다)",
+ "(라)",
+ "(마)",
+ "(바)",
+ "(사)",
+ "(아)",
+ "(자)",
+ "(차)",
+ "(카)",
+ "(타)",
+ "(파)",
+ "(하)",
+ "(주)",
+ "(오전)",
+ "(오후)",
+ None,
+ "(一)",
+ "(二)",
+ "(三)",
+ "(四)",
+ "(五)",
+ "(六)",
+ "(七)",
+ "(八)",
+ "(九)",
+ "(十)",
+ "(月)",
+ "(火)",
+ "(水)",
+ "(木)",
+ "(金)",
+ "(土)",
+ "(日)",
+ "(株)",
+ "(有)",
+ "(社)",
+ "(名)",
+ "(特)",
+ "(財)",
+ "(祝)",
+ "(労)",
+ "(代)",
+ "(呼)",
+ "(学)",
+ "(監)",
+ "(企)",
+ "(資)",
+ "(協)",
+ "(祭)",
+ "(休)",
+ "(自)",
+ "(至)",
+ "問",
+ "幼",
+ "文",
+ "箏",
+ None,
+ "pte",
+ "21",
+ "22",
+ "23",
+ "24",
+ "25",
+ "26",
+ "27",
+ "28",
+ "29",
+ "30",
+ "31",
+ "32",
+ "33",
+ "34",
+ "35",
+ "ᄀ",
+ "ᄂ",
+ "ᄃ",
+ "ᄅ",
+ "ᄆ",
+ "ᄇ",
+ "ᄉ",
+ "ᄋ",
+ "ᄌ",
+ "ᄎ",
+ "ᄏ",
+ "ᄐ",
+ "ᄑ",
+ "ᄒ",
+ "가",
+ "나",
+ "다",
+ "라",
+ "마",
+ "바",
+ "사",
+ "아",
+ "자",
+ "차",
+ "카",
+ "타",
+ "파",
+ "하",
+ "참고",
+ "주의",
+ "우",
+ None,
+ "一",
+ "二",
+ "三",
+ "四",
+ "五",
+ "六",
+ "七",
+ "八",
+ "九",
+ "十",
+ "月",
+ "火",
+ "水",
+ "木",
+ "金",
+ "土",
+ "日",
+ "株",
+ "有",
+ "社",
+ "名",
+ "特",
+ "財",
+ "祝",
+ "労",
+ "秘",
+ "男",
+ "女",
+ "適",
+ "優",
+ "印",
+ "注",
+ "項",
+ "休",
+ "写",
+ "正",
+ "上",
+ "中",
+ "下",
+ "左",
+ "右",
+ "医",
+ "宗",
+ "学",
+ "監",
+ "企",
+ "資",
+ "協",
+ "夜",
+ "36",
+ "37",
+ "38",
+ "39",
+ "40",
+ "41",
+ "42",
+ "43",
+ "44",
+ "45",
+ "46",
+ "47",
+ "48",
+ "49",
+ "50",
+ "1月",
+ "2月",
+ "3月",
+ "4月",
+ "5月",
+ "6月",
+ "7月",
+ "8月",
+ "9月",
+ "10月",
+ "11月",
+ "12月",
+ "hg",
+ "erg",
+ "ev",
+ "ltd",
+ "ア",
+ "イ",
+ "ウ",
+ "エ",
+ "オ",
+ "カ",
+ "キ",
+ "ク",
+ "ケ",
+ "コ",
+ "サ",
+ "シ",
+ "ス",
+ "セ",
+ "ソ",
+ "タ",
+ "チ",
+ "ツ",
+ "テ",
+ "ト",
+ "ナ",
+ "ニ",
+ "ヌ",
+ "ネ",
+ "ノ",
+ "ハ",
+ "ヒ",
+ "フ",
+ "ヘ",
+ "ホ",
+ "マ",
+ "ミ",
+ "ム",
+ "メ",
+ "モ",
+ "ヤ",
+ "ユ",
+ "ヨ",
+ "ラ",
+ "リ",
+ "ル",
+ "レ",
+ "ロ",
+ "ワ",
+ "ヰ",
+ "ヱ",
+ "ヲ",
+ "令和",
+ "アパート",
+ "アルファ",
+ "アンペア",
+ "アール",
+ "イニング",
+ "インチ",
+ "ウォン",
+ "エスクード",
+ "エーカー",
+ "オンス",
+ "オーム",
+ "カイリ",
+ "カラット",
+ "カロリー",
+ "ガロン",
+ "ガンマ",
+ "ギガ",
+ "ギニー",
+ "キュリー",
+ "ギルダー",
+ "キロ",
+ "キログラム",
+ "キロメートル",
+ "キロワット",
+ "グラム",
+ "グラムトン",
+ "クルゼイロ",
+ "クローネ",
+ "ケース",
+ "コルナ",
+ "コーポ",
+ "サイクル",
+ "サンチーム",
+ "シリング",
+ "センチ",
+ "セント",
+ "ダース",
+ "デシ",
+ "ドル",
+ "トン",
+ "ナノ",
+ "ノット",
+ "ハイツ",
+ "パーセント",
+ "パーツ",
+ "バーレル",
+ "ピアストル",
+ "ピクル",
+ "ピコ",
+ "ビル",
+ "ファラッド",
+ "フィート",
+ "ブッシェル",
+ "フラン",
+ "ヘクタール",
+ "ペソ",
+ "ペニヒ",
+ "ヘルツ",
+ "ペンス",
+ "ページ",
+ "ベータ",
+ "ポイント",
+ "ボルト",
+ "ホン",
+ "ポンド",
+ "ホール",
+ "ホーン",
+ "マイクロ",
+ "マイル",
+ "マッハ",
+ "マルク",
+ "マンション",
+ "ミクロン",
+ "ミリ",
+ "ミリバール",
+ "メガ",
+ "メガトン",
+ "メートル",
+ "ヤード",
+ "ヤール",
+ "ユアン",
+ "リットル",
+ "リラ",
+ "ルピー",
+ "ルーブル",
+ "レム",
+ "レントゲン",
+ "ワット",
+ "0点",
+ "1点",
+ "2点",
+ "3点",
+ "4点",
+ "5点",
+ "6点",
+ "7点",
+ "8点",
+ "9点",
+ "10点",
+ "11点",
+ "12点",
+ "13点",
+ "14点",
+ "15点",
+ "16点",
+ "17点",
+ "18点",
+ "19点",
+ "20点",
+ "21点",
+ "22点",
+ "23点",
+ "24点",
+ "hpa",
+ "da",
+ "au",
+ "bar",
+ "ov",
+ "pc",
+ "dm",
+ "dm2",
+ "dm3",
+ "iu",
+ "平成",
+ "昭和",
+ "大正",
+ "明治",
+ "株式会社",
+ "pa",
+ "na",
+ "μa",
+ "ma",
+ "ka",
+ "kb",
+ "mb",
+ "gb",
+ "cal",
+ "kcal",
+ "pf",
+ "nf",
+ "μf",
+ "μg",
+ "mg",
+ "kg",
+ "hz",
+ "khz",
+ "mhz",
+ "ghz",
+ "thz",
+ "μl",
+ "ml",
+ "dl",
+ "kl",
+ "fm",
+ "nm",
+ "μm",
+ "mm",
+ "cm",
+ "km",
+ "mm2",
+ "cm2",
+ "m2",
+ "km2",
+ "mm3",
+ "cm3",
+ "m3",
+ "km3",
+ "m∕s",
+ "m∕s2",
+ "pa",
+ "kpa",
+ "mpa",
+ "gpa",
+ "rad",
+ "rad∕s",
+ "rad∕s2",
+ "ps",
+ "ns",
+ "μs",
+ "ms",
+ "pv",
+ "nv",
+ "μv",
+ "mv",
+ "kv",
+ "mv",
+ "pw",
+ "nw",
+ "μw",
+ "mw",
+ "kw",
+ "mw",
+ "kω",
+ "mω",
+ None,
+ "bq",
+ "cc",
+ "cd",
+ "c∕kg",
+ None,
+ "db",
+ "gy",
+ "ha",
+ "hp",
+ "in",
+ "kk",
+ "km",
+ "kt",
+ "lm",
+ "ln",
+ "log",
+ "lx",
+ "mb",
+ "mil",
+ "mol",
+ "ph",
+ None,
+ "ppm",
+ "pr",
+ "sr",
+ "sv",
+ "wb",
+ "v∕m",
+ "a∕m",
+ "1日",
+ "2日",
+ "3日",
+ "4日",
+ "5日",
+ "6日",
+ "7日",
+ "8日",
+ "9日",
+ "10日",
+ "11日",
+ "12日",
+ "13日",
+ "14日",
+ "15日",
+ "16日",
+ "17日",
+ "18日",
+ "19日",
+ "20日",
+ "21日",
+ "22日",
+ "23日",
+ "24日",
+ "25日",
+ "26日",
+ "27日",
+ "28日",
+ "29日",
+ "30日",
+ "31日",
+ "gal",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ꙁ",
+ None,
+ "ꙃ",
+ None,
+ "ꙅ",
+ None,
+ "ꙇ",
+ None,
+ "ꙉ",
+ None,
+ "ꙋ",
+ None,
+ "ꙍ",
+ None,
+ "ꙏ",
+ None,
+ "ꙑ",
+ None,
+ "ꙓ",
+ None,
+ "ꙕ",
+ None,
+ "ꙗ",
+ None,
+ "ꙙ",
+ None,
+ "ꙛ",
+ None,
+ "ꙝ",
+ None,
+ "ꙟ",
+ None,
+ "ꙡ",
+ None,
+ "ꙣ",
+ None,
+ "ꙥ",
+ None,
+ "ꙧ",
+ None,
+ "ꙩ",
+ None,
+ "ꙫ",
+ None,
+ "ꙭ",
+ None,
+ "ꚁ",
+ None,
+ "ꚃ",
+ None,
+ "ꚅ",
+ None,
+ "ꚇ",
+ None,
+ "ꚉ",
+ None,
+ "ꚋ",
+ None,
+ "ꚍ",
+ None,
+ "ꚏ",
+ None,
+ "ꚑ",
+ None,
+ "ꚓ",
+ None,
+ "ꚕ",
+ None,
+ "ꚗ",
+ None,
+ "ꚙ",
+ None,
+ "ꚛ",
+ None,
+ "ъ",
+ "ь",
+ None,
+ None,
+ None,
+ "ꜣ",
+ None,
+ "ꜥ",
+ None,
+ "ꜧ",
+ None,
+ "ꜩ",
+ None,
+ "ꜫ",
+ None,
+ "ꜭ",
+ None,
+ "ꜯ",
+ None,
+ "ꜳ",
+ None,
+ "ꜵ",
+ None,
+ "ꜷ",
+ None,
+ "ꜹ",
+ None,
+ "ꜻ",
+ None,
+ "ꜽ",
+ None,
+ "ꜿ",
+ None,
+ "ꝁ",
+ None,
+ "ꝃ",
+ None,
+ "ꝅ",
+ None,
+ "ꝇ",
+ None,
+ "ꝉ",
+ None,
+ "ꝋ",
+ None,
+ "ꝍ",
+ None,
+ "ꝏ",
+ None,
+ "ꝑ",
+ None,
+ "ꝓ",
+ None,
+ "ꝕ",
+ None,
+ "ꝗ",
+ None,
+ "ꝙ",
+ None,
+ "ꝛ",
+ None,
+ "ꝝ",
+ None,
+ "ꝟ",
+ None,
+ "ꝡ",
+ None,
+ "ꝣ",
+ None,
+ "ꝥ",
+ None,
+ "ꝧ",
+ None,
+ "ꝩ",
+ None,
+ "ꝫ",
+ None,
+ "ꝭ",
+ None,
+ "ꝯ",
+ None,
+ "ꝯ",
+ None,
+ "ꝺ",
+ None,
+ "ꝼ",
+ None,
+ "ᵹ",
+ "ꝿ",
+ None,
+ "ꞁ",
+ None,
+ "ꞃ",
+ None,
+ "ꞅ",
+ None,
+ "ꞇ",
+ None,
+ "ꞌ",
+ None,
+ "ɥ",
+ None,
+ "ꞑ",
+ None,
+ "ꞓ",
+ None,
+ "ꞗ",
+ None,
+ "ꞙ",
+ None,
+ "ꞛ",
+ None,
+ "ꞝ",
+ None,
+ "ꞟ",
+ None,
+ "ꞡ",
+ None,
+ "ꞣ",
+ None,
+ "ꞥ",
+ None,
+ "ꞧ",
+ None,
+ "ꞩ",
+ None,
+ "ɦ",
+ "ɜ",
+ "ɡ",
+ "ɬ",
+ "ɪ",
+ None,
+ "ʞ",
+ "ʇ",
+ "ʝ",
+ "ꭓ",
+ "ꞵ",
+ None,
+ "ꞷ",
+ None,
+ "ꞹ",
+ None,
+ "ꞻ",
+ None,
+ "ꞽ",
+ None,
+ "ꞿ",
+ None,
+ "ꟁ",
+ None,
+ "ꟃ",
+ None,
+ "ꞔ",
+ "ʂ",
+ "ᶎ",
+ "ꟈ",
+ None,
+ "ꟊ",
+ None,
+ "ɤ",
+ "\ua7cd",
+ None,
+ "\ua7cf",
+ None,
+ "ꟑ",
+ None,
+ "ꟓ",
+ None,
+ "ꟕ",
+ None,
+ "ꟗ",
+ None,
+ "ꟙ",
+ None,
+ "\ua7db",
+ None,
+ "ƛ",
+ None,
+ "s",
+ "c",
+ "f",
+ "q",
+ "ꟶ",
+ None,
+ "ħ",
+ "œ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ꜧ",
+ "ꬷ",
+ "ɫ",
+ "ꭒ",
+ None,
+ "ʍ",
+ None,
+ None,
+ "Ꭰ",
+ "Ꭱ",
+ "Ꭲ",
+ "Ꭳ",
+ "Ꭴ",
+ "Ꭵ",
+ "Ꭶ",
+ "Ꭷ",
+ "Ꭸ",
+ "Ꭹ",
+ "Ꭺ",
+ "Ꭻ",
+ "Ꭼ",
+ "Ꭽ",
+ "Ꭾ",
+ "Ꭿ",
+ "Ꮀ",
+ "Ꮁ",
+ "Ꮂ",
+ "Ꮃ",
+ "Ꮄ",
+ "Ꮅ",
+ "Ꮆ",
+ "Ꮇ",
+ "Ꮈ",
+ "Ꮉ",
+ "Ꮊ",
+ "Ꮋ",
+ "Ꮌ",
+ "Ꮍ",
+ "Ꮎ",
+ "Ꮏ",
+ "Ꮐ",
+ "Ꮑ",
+ "Ꮒ",
+ "Ꮓ",
+ "Ꮔ",
+ "Ꮕ",
+ "Ꮖ",
+ "Ꮗ",
+ "Ꮘ",
+ "Ꮙ",
+ "Ꮚ",
+ "Ꮛ",
+ "Ꮜ",
+ "Ꮝ",
+ "Ꮞ",
+ "Ꮟ",
+ "Ꮠ",
+ "Ꮡ",
+ "Ꮢ",
+ "Ꮣ",
+ "Ꮤ",
+ "Ꮥ",
+ "Ꮦ",
+ "Ꮧ",
+ "Ꮨ",
+ "Ꮩ",
+ "Ꮪ",
+ "Ꮫ",
+ "Ꮬ",
+ "Ꮭ",
+ "Ꮮ",
+ "Ꮯ",
+ "Ꮰ",
+ "Ꮱ",
+ "Ꮲ",
+ "Ꮳ",
+ "Ꮴ",
+ "Ꮵ",
+ "Ꮶ",
+ "Ꮷ",
+ "Ꮸ",
+ "Ꮹ",
+ "Ꮺ",
+ "Ꮻ",
+ "Ꮼ",
+ "Ꮽ",
+ "Ꮾ",
+ "Ꮿ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "豈",
+ "更",
+ "車",
+ "賈",
+ "滑",
+ "串",
+ "句",
+ "龜",
+ "契",
+ "金",
+ "喇",
+ "奈",
+ "懶",
+ "癩",
+ "羅",
+ "蘿",
+ "螺",
+ "裸",
+ "邏",
+ "樂",
+ "洛",
+ "烙",
+ "珞",
+ "落",
+ "酪",
+ "駱",
+ "亂",
+ "卵",
+ "欄",
+ "爛",
+ "蘭",
+ "鸞",
+ "嵐",
+ "濫",
+ "藍",
+ "襤",
+ "拉",
+ "臘",
+ "蠟",
+ "廊",
+ "朗",
+ "浪",
+ "狼",
+ "郎",
+ "來",
+ "冷",
+ "勞",
+ "擄",
+ "櫓",
+ "爐",
+ "盧",
+ "老",
+ "蘆",
+ "虜",
+ "路",
+ "露",
+ "魯",
+ "鷺",
+ "碌",
+ "祿",
+ "綠",
+ "菉",
+ "錄",
+ "鹿",
+ "論",
+ "壟",
+ "弄",
+ "籠",
+ "聾",
+ "牢",
+ "磊",
+ "賂",
+ "雷",
+ "壘",
+ "屢",
+ "樓",
+ "淚",
+ "漏",
+ "累",
+ "縷",
+ "陋",
+ "勒",
+ "肋",
+ "凜",
+ "凌",
+ "稜",
+ "綾",
+ "菱",
+ "陵",
+ "讀",
+ "拏",
+ "樂",
+ "諾",
+ "丹",
+ "寧",
+ "怒",
+ "率",
+ "異",
+ "北",
+ "磻",
+ "便",
+ "復",
+ "不",
+ "泌",
+ "數",
+ "索",
+ "參",
+ "塞",
+ "省",
+ "葉",
+ "說",
+ "殺",
+ "辰",
+ "沈",
+ "拾",
+ "若",
+ "掠",
+ "略",
+ "亮",
+ "兩",
+ "凉",
+ "梁",
+ "糧",
+ "良",
+ "諒",
+ "量",
+ "勵",
+ "呂",
+ "女",
+ "廬",
+ "旅",
+ "濾",
+ "礪",
+ "閭",
+ "驪",
+ "麗",
+ "黎",
+ "力",
+ "曆",
+ "歷",
+ "轢",
+ "年",
+ "憐",
+ "戀",
+ "撚",
+ "漣",
+ "煉",
+ "璉",
+ "秊",
+ "練",
+ "聯",
+ "輦",
+ "蓮",
+ "連",
+ "鍊",
+ "列",
+ "劣",
+ "咽",
+ "烈",
+ "裂",
+ "說",
+ "廉",
+ "念",
+ "捻",
+ "殮",
+ "簾",
+ "獵",
+ "令",
+ "囹",
+ "寧",
+ "嶺",
+ "怜",
+ "玲",
+ "瑩",
+ "羚",
+ "聆",
+ "鈴",
+ "零",
+ "靈",
+ "領",
+ "例",
+ "禮",
+ "醴",
+ "隸",
+ "惡",
+ "了",
+ "僚",
+ "寮",
+ "尿",
+ "料",
+ "樂",
+ "燎",
+ "療",
+ "蓼",
+ "遼",
+ "龍",
+ "暈",
+ "阮",
+ "劉",
+ "杻",
+ "柳",
+ "流",
+ "溜",
+ "琉",
+ "留",
+ "硫",
+ "紐",
+ "類",
+ "六",
+ "戮",
+ "陸",
+ "倫",
+ "崙",
+ "淪",
+ "輪",
+ "律",
+ "慄",
+ "栗",
+ "率",
+ "隆",
+ "利",
+ "吏",
+ "履",
+ "易",
+ "李",
+ "梨",
+ "泥",
+ "理",
+ "痢",
+ "罹",
+ "裏",
+ "裡",
+ "里",
+ "離",
+ "匿",
+ "溺",
+ "吝",
+ "燐",
+ "璘",
+ "藺",
+ "隣",
+ "鱗",
+ "麟",
+ "林",
+ "淋",
+ "臨",
+ "立",
+ "笠",
+ "粒",
+ "狀",
+ "炙",
+ "識",
+ "什",
+ "茶",
+ "刺",
+ "切",
+ "度",
+ "拓",
+ "糖",
+ "宅",
+ "洞",
+ "暴",
+ "輻",
+ "行",
+ "降",
+ "見",
+ "廓",
+ "兀",
+ "嗀",
+ None,
+ "塚",
+ None,
+ "晴",
+ None,
+ "凞",
+ "猪",
+ "益",
+ "礼",
+ "神",
+ "祥",
+ "福",
+ "靖",
+ "精",
+ "羽",
+ None,
+ "蘒",
+ None,
+ "諸",
+ None,
+ "逸",
+ "都",
+ None,
+ "飯",
+ "飼",
+ "館",
+ "鶴",
+ "郞",
+ "隷",
+ "侮",
+ "僧",
+ "免",
+ "勉",
+ "勤",
+ "卑",
+ "喝",
+ "嘆",
+ "器",
+ "塀",
+ "墨",
+ "層",
+ "屮",
+ "悔",
+ "慨",
+ "憎",
+ "懲",
+ "敏",
+ "既",
+ "暑",
+ "梅",
+ "海",
+ "渚",
+ "漢",
+ "煮",
+ "爫",
+ "琢",
+ "碑",
+ "社",
+ "祉",
+ "祈",
+ "祐",
+ "祖",
+ "祝",
+ "禍",
+ "禎",
+ "穀",
+ "突",
+ "節",
+ "練",
+ "縉",
+ "繁",
+ "署",
+ "者",
+ "臭",
+ "艹",
+ "著",
+ "褐",
+ "視",
+ "謁",
+ "謹",
+ "賓",
+ "贈",
+ "辶",
+ "逸",
+ "難",
+ "響",
+ "頻",
+ "恵",
+ "𤋮",
+ "舘",
+ None,
+ "並",
+ "况",
+ "全",
+ "侀",
+ "充",
+ "冀",
+ "勇",
+ "勺",
+ "喝",
+ "啕",
+ "喙",
+ "嗢",
+ "塚",
+ "墳",
+ "奄",
+ "奔",
+ "婢",
+ "嬨",
+ "廒",
+ "廙",
+ "彩",
+ "徭",
+ "惘",
+ "慎",
+ "愈",
+ "憎",
+ "慠",
+ "懲",
+ "戴",
+ "揄",
+ "搜",
+ "摒",
+ "敖",
+ "晴",
+ "朗",
+ "望",
+ "杖",
+ "歹",
+ "殺",
+ "流",
+ "滛",
+ "滋",
+ "漢",
+ "瀞",
+ "煮",
+ "瞧",
+ "爵",
+ "犯",
+ "猪",
+ "瑱",
+ "甆",
+ "画",
+ "瘝",
+ "瘟",
+ "益",
+ "盛",
+ "直",
+ "睊",
+ "着",
+ "磌",
+ "窱",
+ "節",
+ "类",
+ "絛",
+ "練",
+ "缾",
+ "者",
+ "荒",
+ "華",
+ "蝹",
+ "襁",
+ "覆",
+ "視",
+ "調",
+ "諸",
+ "請",
+ "謁",
+ "諾",
+ "諭",
+ "謹",
+ "變",
+ "贈",
+ "輸",
+ "遲",
+ "醙",
+ "鉶",
+ "陼",
+ "難",
+ "靖",
+ "韛",
+ "響",
+ "頋",
+ "頻",
+ "鬒",
+ "龜",
+ "𢡊",
+ "𢡄",
+ "𣏕",
+ "㮝",
+ "䀘",
+ "䀹",
+ "𥉉",
+ "𥳐",
+ "𧻓",
+ "齃",
+ "龎",
+ None,
+ "ff",
+ "fi",
+ "fl",
+ "ffi",
+ "ffl",
+ "st",
+ None,
+ "մն",
+ "մե",
+ "մի",
+ "վն",
+ "մխ",
+ None,
+ "יִ",
+ None,
+ "ײַ",
+ "ע",
+ "א",
+ "ד",
+ "ה",
+ "כ",
+ "ל",
+ "ם",
+ "ר",
+ "ת",
+ "+",
+ "שׁ",
+ "שׂ",
+ "שּׁ",
+ "שּׂ",
+ "אַ",
+ "אָ",
+ "אּ",
+ "בּ",
+ "גּ",
+ "דּ",
+ "הּ",
+ "וּ",
+ "זּ",
+ None,
+ "טּ",
+ "יּ",
+ "ךּ",
+ "כּ",
+ "לּ",
+ None,
+ "מּ",
+ None,
+ "נּ",
+ "סּ",
+ None,
+ "ףּ",
+ "פּ",
+ None,
+ "צּ",
+ "קּ",
+ "רּ",
+ "שּ",
+ "תּ",
+ "וֹ",
+ "בֿ",
+ "כֿ",
+ "פֿ",
+ "אל",
+ "ٱ",
+ "ٻ",
+ "پ",
+ "ڀ",
+ "ٺ",
+ "ٿ",
+ "ٹ",
+ "ڤ",
+ "ڦ",
+ "ڄ",
+ "ڃ",
+ "چ",
+ "ڇ",
+ "ڍ",
+ "ڌ",
+ "ڎ",
+ "ڈ",
+ "ژ",
+ "ڑ",
+ "ک",
+ "گ",
+ "ڳ",
+ "ڱ",
+ "ں",
+ "ڻ",
+ "ۀ",
+ "ہ",
+ "ھ",
+ "ے",
+ "ۓ",
+ None,
+ "ڭ",
+ "ۇ",
+ "ۆ",
+ "ۈ",
+ "ۇٴ",
+ "ۋ",
+ "ۅ",
+ "ۉ",
+ "ې",
+ "ى",
+ "ئا",
+ "ئە",
+ "ئو",
+ "ئۇ",
+ "ئۆ",
+ "ئۈ",
+ "ئې",
+ "ئى",
+ "ی",
+ "ئج",
+ "ئح",
+ "ئم",
+ "ئى",
+ "ئي",
+ "بج",
+ "بح",
+ "بخ",
+ "بم",
+ "بى",
+ "بي",
+ "تج",
+ "تح",
+ "تخ",
+ "تم",
+ "تى",
+ "تي",
+ "ثج",
+ "ثم",
+ "ثى",
+ "ثي",
+ "جح",
+ "جم",
+ "حج",
+ "حم",
+ "خج",
+ "خح",
+ "خم",
+ "سج",
+ "سح",
+ "سخ",
+ "سم",
+ "صح",
+ "صم",
+ "ضج",
+ "ضح",
+ "ضخ",
+ "ضم",
+ "طح",
+ "طم",
+ "ظم",
+ "عج",
+ "عم",
+ "غج",
+ "غم",
+ "فج",
+ "فح",
+ "فخ",
+ "فم",
+ "فى",
+ "في",
+ "قح",
+ "قم",
+ "قى",
+ "قي",
+ "كا",
+ "كج",
+ "كح",
+ "كخ",
+ "كل",
+ "كم",
+ "كى",
+ "كي",
+ "لج",
+ "لح",
+ "لخ",
+ "لم",
+ "لى",
+ "لي",
+ "مج",
+ "مح",
+ "مخ",
+ "مم",
+ "مى",
+ "مي",
+ "نج",
+ "نح",
+ "نخ",
+ "نم",
+ "نى",
+ "ني",
+ "هج",
+ "هم",
+ "هى",
+ "هي",
+ "يج",
+ "يح",
+ "يخ",
+ "يم",
+ "يى",
+ "يي",
+ "ذٰ",
+ "رٰ",
+ "ىٰ",
+ " ٌّ",
+ " ٍّ",
+ " َّ",
+ " ُّ",
+ " ِّ",
+ " ّٰ",
+ "ئر",
+ "ئز",
+ "ئم",
+ "ئن",
+ "ئى",
+ "ئي",
+ "بر",
+ "بز",
+ "بم",
+ "بن",
+ "بى",
+ "بي",
+ "تر",
+ "تز",
+ "تم",
+ "تن",
+ "تى",
+ "تي",
+ "ثر",
+ "ثز",
+ "ثم",
+ "ثن",
+ "ثى",
+ "ثي",
+ "فى",
+ "في",
+ "قى",
+ "قي",
+ "كا",
+ "كل",
+ "كم",
+ "كى",
+ "كي",
+ "لم",
+ "لى",
+ "لي",
+ "ما",
+ "مم",
+ "نر",
+ "نز",
+ "نم",
+ "نن",
+ "نى",
+ "ني",
+ "ىٰ",
+ "ير",
+ "يز",
+ "يم",
+ "ين",
+ "يى",
+ "يي",
+ "ئج",
+ "ئح",
+ "ئخ",
+ "ئم",
+ "ئه",
+ "بج",
+ "بح",
+ "بخ",
+ "بم",
+ "به",
+ "تج",
+ "تح",
+ "تخ",
+ "تم",
+ "ته",
+ "ثم",
+ "جح",
+ "جم",
+ "حج",
+ "حم",
+ "خج",
+ "خم",
+ "سج",
+ "سح",
+ "سخ",
+ "سم",
+ "صح",
+ "صخ",
+ "صم",
+ "ضج",
+ "ضح",
+ "ضخ",
+ "ضم",
+ "طح",
+ "ظم",
+ "عج",
+ "عم",
+ "غج",
+ "غم",
+ "فج",
+ "فح",
+ "فخ",
+ "فم",
+ "قح",
+ "قم",
+ "كج",
+ "كح",
+ "كخ",
+ "كل",
+ "كم",
+ "لج",
+ "لح",
+ "لخ",
+ "لم",
+ "له",
+ "مج",
+ "مح",
+ "مخ",
+ "مم",
+ "نج",
+ "نح",
+ "نخ",
+ "نم",
+ "نه",
+ "هج",
+ "هم",
+ "هٰ",
+ "يج",
+ "يح",
+ "يخ",
+ "يم",
+ "يه",
+ "ئم",
+ "ئه",
+ "بم",
+ "به",
+ "تم",
+ "ته",
+ "ثم",
+ "ثه",
+ "سم",
+ "سه",
+ "شم",
+ "شه",
+ "كل",
+ "كم",
+ "لم",
+ "نم",
+ "نه",
+ "يم",
+ "يه",
+ "ـَّ",
+ "ـُّ",
+ "ـِّ",
+ "طى",
+ "طي",
+ "عى",
+ "عي",
+ "غى",
+ "غي",
+ "سى",
+ "سي",
+ "شى",
+ "شي",
+ "حى",
+ "حي",
+ "جى",
+ "جي",
+ "خى",
+ "خي",
+ "صى",
+ "صي",
+ "ضى",
+ "ضي",
+ "شج",
+ "شح",
+ "شخ",
+ "شم",
+ "شر",
+ "سر",
+ "صر",
+ "ضر",
+ "طى",
+ "طي",
+ "عى",
+ "عي",
+ "غى",
+ "غي",
+ "سى",
+ "سي",
+ "شى",
+ "شي",
+ "حى",
+ "حي",
+ "جى",
+ "جي",
+ "خى",
+ "خي",
+ "صى",
+ "صي",
+ "ضى",
+ "ضي",
+ "شج",
+ "شح",
+ "شخ",
+ "شم",
+ "شر",
+ "سر",
+ "صر",
+ "ضر",
+ "شج",
+ "شح",
+ "شخ",
+ "شم",
+ "سه",
+ "شه",
+ "طم",
+ "سج",
+ "سح",
+ "سخ",
+ "شج",
+ "شح",
+ "شخ",
+ "طم",
+ "ظم",
+ "اً",
+ None,
+ "تجم",
+ "تحج",
+ "تحم",
+ "تخم",
+ "تمج",
+ "تمح",
+ "تمخ",
+ "جمح",
+ "حمي",
+ "حمى",
+ "سحج",
+ "سجح",
+ "سجى",
+ "سمح",
+ "سمج",
+ "سمم",
+ "صحح",
+ "صمم",
+ "شحم",
+ "شجي",
+ "شمخ",
+ "شمم",
+ "ضحى",
+ "ضخم",
+ "طمح",
+ "طمم",
+ "طمي",
+ "عجم",
+ "عمم",
+ "عمى",
+ "غمم",
+ "غمي",
+ "غمى",
+ "فخم",
+ "قمح",
+ "قمم",
+ "لحم",
+ "لحي",
+ "لحى",
+ "لجج",
+ "لخم",
+ "لمح",
+ "محج",
+ "محم",
+ "محي",
+ "مجح",
+ "مجم",
+ "مخج",
+ "مخم",
+ None,
+ "مجخ",
+ "همج",
+ "همم",
+ "نحم",
+ "نحى",
+ "نجم",
+ "نجى",
+ "نمي",
+ "نمى",
+ "يمم",
+ "بخي",
+ "تجي",
+ "تجى",
+ "تخي",
+ "تخى",
+ "تمي",
+ "تمى",
+ "جمي",
+ "جحى",
+ "جمى",
+ "سخى",
+ "صحي",
+ "شحي",
+ "ضحي",
+ "لجي",
+ "لمي",
+ "يحي",
+ "يجي",
+ "يمي",
+ "ممي",
+ "قمي",
+ "نحي",
+ "قمح",
+ "لحم",
+ "عمي",
+ "كمي",
+ "نجح",
+ "مخي",
+ "لجم",
+ "كمم",
+ "لجم",
+ "نجح",
+ "جحي",
+ "حجي",
+ "مجي",
+ "فمي",
+ "بحي",
+ "كمم",
+ "عجم",
+ "صمم",
+ "سخي",
+ "نجي",
+ None,
+ None,
+ "صلے",
+ "قلے",
+ "الله",
+ "اكبر",
+ "محمد",
+ "صلعم",
+ "رسول",
+ "عليه",
+ "وسلم",
+ "صلى",
+ "صلى الله عليه وسلم",
+ "جل جلاله",
+ "ریال",
+ None,
+ None,
+ ",",
+ "、",
+ None,
+ ":",
+ ";",
+ "!",
+ "?",
+ "〖",
+ "〗",
+ None,
+ None,
+ None,
+ "—",
+ "–",
+ "_",
+ "(",
+ ")",
+ "{",
+ "}",
+ "〔",
+ "〕",
+ "【",
+ "】",
+ "《",
+ "》",
+ "〈",
+ "〉",
+ "「",
+ "」",
+ "『",
+ "』",
+ None,
+ "[",
+ "]",
+ " ̅",
+ "_",
+ ",",
+ "、",
+ None,
+ ";",
+ ":",
+ "?",
+ "!",
+ "—",
+ "(",
+ ")",
+ "{",
+ "}",
+ "〔",
+ "〕",
+ "#",
+ "&",
+ "*",
+ "+",
+ "-",
+ "<",
+ ">",
+ "=",
+ None,
+ "\\",
+ "$",
+ "%",
+ "@",
+ None,
+ " ً",
+ "ـً",
+ " ٌ",
+ None,
+ " ٍ",
+ None,
+ " َ",
+ "ـَ",
+ " ُ",
+ "ـُ",
+ " ِ",
+ "ـِ",
+ " ّ",
+ "ـّ",
+ " ْ",
+ "ـْ",
+ "ء",
+ "آ",
+ "أ",
+ "ؤ",
+ "إ",
+ "ئ",
+ "ا",
+ "ب",
+ "ة",
+ "ت",
+ "ث",
+ "ج",
+ "ح",
+ "خ",
+ "د",
+ "ذ",
+ "ر",
+ "ز",
+ "س",
+ "ش",
+ "ص",
+ "ض",
+ "ط",
+ "ظ",
+ "ع",
+ "غ",
+ "ف",
+ "ق",
+ "ك",
+ "ل",
+ "م",
+ "ن",
+ "ه",
+ "و",
+ "ى",
+ "ي",
+ "لآ",
+ "لأ",
+ "لإ",
+ "لا",
+ None,
+ None,
+ None,
+ "!",
+ '"',
+ "#",
+ "$",
+ "%",
+ "&",
+ "'",
+ "(",
+ ")",
+ "*",
+ "+",
+ ",",
+ "-",
+ ".",
+ "/",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ ":",
+ ";",
+ "<",
+ "=",
+ ">",
+ "?",
+ "@",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "[",
+ "\\",
+ "]",
+ "^",
+ "_",
+ "`",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "{",
+ "|",
+ "}",
+ "~",
+ "⦅",
+ "⦆",
+ ".",
+ "「",
+ "」",
+ "、",
+ "・",
+ "ヲ",
+ "ァ",
+ "ィ",
+ "ゥ",
+ "ェ",
+ "ォ",
+ "ャ",
+ "ュ",
+ "ョ",
+ "ッ",
+ "ー",
+ "ア",
+ "イ",
+ "ウ",
+ "エ",
+ "オ",
+ "カ",
+ "キ",
+ "ク",
+ "ケ",
+ "コ",
+ "サ",
+ "シ",
+ "ス",
+ "セ",
+ "ソ",
+ "タ",
+ "チ",
+ "ツ",
+ "テ",
+ "ト",
+ "ナ",
+ "ニ",
+ "ヌ",
+ "ネ",
+ "ノ",
+ "ハ",
+ "ヒ",
+ "フ",
+ "ヘ",
+ "ホ",
+ "マ",
+ "ミ",
+ "ム",
+ "メ",
+ "モ",
+ "ヤ",
+ "ユ",
+ "ヨ",
+ "ラ",
+ "リ",
+ "ル",
+ "レ",
+ "ロ",
+ "ワ",
+ "ン",
+ "゙",
+ "゚",
+ None,
+ "ᄀ",
+ "ᄁ",
+ "ᆪ",
+ "ᄂ",
+ "ᆬ",
+ "ᆭ",
+ "ᄃ",
+ "ᄄ",
+ "ᄅ",
+ "ᆰ",
+ "ᆱ",
+ "ᆲ",
+ "ᆳ",
+ "ᆴ",
+ "ᆵ",
+ "ᄚ",
+ "ᄆ",
+ "ᄇ",
+ "ᄈ",
+ "ᄡ",
+ "ᄉ",
+ "ᄊ",
+ "ᄋ",
+ "ᄌ",
+ "ᄍ",
+ "ᄎ",
+ "ᄏ",
+ "ᄐ",
+ "ᄑ",
+ "ᄒ",
+ None,
+ "ᅡ",
+ "ᅢ",
+ "ᅣ",
+ "ᅤ",
+ "ᅥ",
+ "ᅦ",
+ None,
+ "ᅧ",
+ "ᅨ",
+ "ᅩ",
+ "ᅪ",
+ "ᅫ",
+ "ᅬ",
+ None,
+ "ᅭ",
+ "ᅮ",
+ "ᅯ",
+ "ᅰ",
+ "ᅱ",
+ "ᅲ",
+ None,
+ "ᅳ",
+ "ᅴ",
+ "ᅵ",
+ None,
+ "¢",
+ "£",
+ "¬",
+ " ̄",
+ "¦",
+ "¥",
+ "₩",
+ None,
+ "│",
+ "←",
+ "↑",
+ "→",
+ "↓",
+ "■",
+ "○",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𐐨",
+ "𐐩",
+ "𐐪",
+ "𐐫",
+ "𐐬",
+ "𐐭",
+ "𐐮",
+ "𐐯",
+ "𐐰",
+ "𐐱",
+ "𐐲",
+ "𐐳",
+ "𐐴",
+ "𐐵",
+ "𐐶",
+ "𐐷",
+ "𐐸",
+ "𐐹",
+ "𐐺",
+ "𐐻",
+ "𐐼",
+ "𐐽",
+ "𐐾",
+ "𐐿",
+ "𐑀",
+ "𐑁",
+ "𐑂",
+ "𐑃",
+ "𐑄",
+ "𐑅",
+ "𐑆",
+ "𐑇",
+ "𐑈",
+ "𐑉",
+ "𐑊",
+ "𐑋",
+ "𐑌",
+ "𐑍",
+ "𐑎",
+ "𐑏",
+ None,
+ None,
+ None,
+ None,
+ "𐓘",
+ "𐓙",
+ "𐓚",
+ "𐓛",
+ "𐓜",
+ "𐓝",
+ "𐓞",
+ "𐓟",
+ "𐓠",
+ "𐓡",
+ "𐓢",
+ "𐓣",
+ "𐓤",
+ "𐓥",
+ "𐓦",
+ "𐓧",
+ "𐓨",
+ "𐓩",
+ "𐓪",
+ "𐓫",
+ "𐓬",
+ "𐓭",
+ "𐓮",
+ "𐓯",
+ "𐓰",
+ "𐓱",
+ "𐓲",
+ "𐓳",
+ "𐓴",
+ "𐓵",
+ "𐓶",
+ "𐓷",
+ "𐓸",
+ "𐓹",
+ "𐓺",
+ "𐓻",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𐖗",
+ "𐖘",
+ "𐖙",
+ "𐖚",
+ "𐖛",
+ "𐖜",
+ "𐖝",
+ "𐖞",
+ "𐖟",
+ "𐖠",
+ "𐖡",
+ None,
+ "𐖣",
+ "𐖤",
+ "𐖥",
+ "𐖦",
+ "𐖧",
+ "𐖨",
+ "𐖩",
+ "𐖪",
+ "𐖫",
+ "𐖬",
+ "𐖭",
+ "𐖮",
+ "𐖯",
+ "𐖰",
+ "𐖱",
+ None,
+ "𐖳",
+ "𐖴",
+ "𐖵",
+ "𐖶",
+ "𐖷",
+ "𐖸",
+ "𐖹",
+ None,
+ "𐖻",
+ "𐖼",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ː",
+ "ˑ",
+ "æ",
+ "ʙ",
+ "ɓ",
+ None,
+ "ʣ",
+ "ꭦ",
+ "ʥ",
+ "ʤ",
+ "ɖ",
+ "ɗ",
+ "ᶑ",
+ "ɘ",
+ "ɞ",
+ "ʩ",
+ "ɤ",
+ "ɢ",
+ "ɠ",
+ "ʛ",
+ "ħ",
+ "ʜ",
+ "ɧ",
+ "ʄ",
+ "ʪ",
+ "ʫ",
+ "ɬ",
+ "𝼄",
+ "ꞎ",
+ "ɮ",
+ "𝼅",
+ "ʎ",
+ "𝼆",
+ "ø",
+ "ɶ",
+ "ɷ",
+ "q",
+ "ɺ",
+ "𝼈",
+ "ɽ",
+ "ɾ",
+ "ʀ",
+ "ʨ",
+ "ʦ",
+ "ꭧ",
+ "ʧ",
+ "ʈ",
+ "ⱱ",
+ None,
+ "ʏ",
+ "ʡ",
+ "ʢ",
+ "ʘ",
+ "ǀ",
+ "ǁ",
+ "ǂ",
+ "𝼊",
+ "𝼞",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𐳀",
+ "𐳁",
+ "𐳂",
+ "𐳃",
+ "𐳄",
+ "𐳅",
+ "𐳆",
+ "𐳇",
+ "𐳈",
+ "𐳉",
+ "𐳊",
+ "𐳋",
+ "𐳌",
+ "𐳍",
+ "𐳎",
+ "𐳏",
+ "𐳐",
+ "𐳑",
+ "𐳒",
+ "𐳓",
+ "𐳔",
+ "𐳕",
+ "𐳖",
+ "𐳗",
+ "𐳘",
+ "𐳙",
+ "𐳚",
+ "𐳛",
+ "𐳜",
+ "𐳝",
+ "𐳞",
+ "𐳟",
+ "𐳠",
+ "𐳡",
+ "𐳢",
+ "𐳣",
+ "𐳤",
+ "𐳥",
+ "𐳦",
+ "𐳧",
+ "𐳨",
+ "𐳩",
+ "𐳪",
+ "𐳫",
+ "𐳬",
+ "𐳭",
+ "𐳮",
+ "𐳯",
+ "𐳰",
+ "𐳱",
+ "𐳲",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "\U00010d70",
+ "\U00010d71",
+ "\U00010d72",
+ "\U00010d73",
+ "\U00010d74",
+ "\U00010d75",
+ "\U00010d76",
+ "\U00010d77",
+ "\U00010d78",
+ "\U00010d79",
+ "\U00010d7a",
+ "\U00010d7b",
+ "\U00010d7c",
+ "\U00010d7d",
+ "\U00010d7e",
+ "\U00010d7f",
+ "\U00010d80",
+ "\U00010d81",
+ "\U00010d82",
+ "\U00010d83",
+ "\U00010d84",
+ "\U00010d85",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𑣀",
+ "𑣁",
+ "𑣂",
+ "𑣃",
+ "𑣄",
+ "𑣅",
+ "𑣆",
+ "𑣇",
+ "𑣈",
+ "𑣉",
+ "𑣊",
+ "𑣋",
+ "𑣌",
+ "𑣍",
+ "𑣎",
+ "𑣏",
+ "𑣐",
+ "𑣑",
+ "𑣒",
+ "𑣓",
+ "𑣔",
+ "𑣕",
+ "𑣖",
+ "𑣗",
+ "𑣘",
+ "𑣙",
+ "𑣚",
+ "𑣛",
+ "𑣜",
+ "𑣝",
+ "𑣞",
+ "𑣟",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𖹠",
+ "𖹡",
+ "𖹢",
+ "𖹣",
+ "𖹤",
+ "𖹥",
+ "𖹦",
+ "𖹧",
+ "𖹨",
+ "𖹩",
+ "𖹪",
+ "𖹫",
+ "𖹬",
+ "𖹭",
+ "𖹮",
+ "𖹯",
+ "𖹰",
+ "𖹱",
+ "𖹲",
+ "𖹳",
+ "𖹴",
+ "𖹵",
+ "𖹶",
+ "𖹷",
+ "𖹸",
+ "𖹹",
+ "𖹺",
+ "𖹻",
+ "𖹼",
+ "𖹽",
+ "𖹾",
+ "𖹿",
+ None,
+ None,
+ "\U00016ebb",
+ "\U00016ebc",
+ "\U00016ebd",
+ "\U00016ebe",
+ "\U00016ebf",
+ "\U00016ec0",
+ "\U00016ec1",
+ "\U00016ec2",
+ "\U00016ec3",
+ "\U00016ec4",
+ "\U00016ec5",
+ "\U00016ec6",
+ "\U00016ec7",
+ "\U00016ec8",
+ "\U00016ec9",
+ "\U00016eca",
+ "\U00016ecb",
+ "\U00016ecc",
+ "\U00016ecd",
+ "\U00016ece",
+ "\U00016ecf",
+ "\U00016ed0",
+ "\U00016ed1",
+ "\U00016ed2",
+ "\U00016ed3",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𝅗𝅥",
+ "𝅘𝅥",
+ "𝅘𝅥𝅮",
+ "𝅘𝅥𝅯",
+ "𝅘𝅥𝅰",
+ "𝅘𝅥𝅱",
+ "𝅘𝅥𝅲",
+ None,
+ None,
+ None,
+ "𝆹𝅥",
+ "𝆺𝅥",
+ "𝆹𝅥𝅮",
+ "𝆺𝅥𝅮",
+ "𝆹𝅥𝅯",
+ "𝆺𝅥𝅯",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ None,
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ None,
+ "c",
+ "d",
+ None,
+ "g",
+ None,
+ "j",
+ "k",
+ None,
+ "n",
+ "o",
+ "p",
+ "q",
+ None,
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ None,
+ "f",
+ None,
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ None,
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ None,
+ "d",
+ "e",
+ "f",
+ "g",
+ None,
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ None,
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ None,
+ "d",
+ "e",
+ "f",
+ "g",
+ None,
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ None,
+ "o",
+ None,
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "ı",
+ "ȷ",
+ None,
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "θ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∇",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∂",
+ "ε",
+ "θ",
+ "κ",
+ "φ",
+ "ρ",
+ "π",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "θ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∇",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∂",
+ "ε",
+ "θ",
+ "κ",
+ "φ",
+ "ρ",
+ "π",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "θ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∇",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∂",
+ "ε",
+ "θ",
+ "κ",
+ "φ",
+ "ρ",
+ "π",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "θ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∇",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∂",
+ "ε",
+ "θ",
+ "κ",
+ "φ",
+ "ρ",
+ "π",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "θ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∇",
+ "α",
+ "β",
+ "γ",
+ "δ",
+ "ε",
+ "ζ",
+ "η",
+ "θ",
+ "ι",
+ "κ",
+ "λ",
+ "μ",
+ "ν",
+ "ξ",
+ "ο",
+ "π",
+ "ρ",
+ "σ",
+ "τ",
+ "υ",
+ "φ",
+ "χ",
+ "ψ",
+ "ω",
+ "∂",
+ "ε",
+ "θ",
+ "κ",
+ "φ",
+ "ρ",
+ "π",
+ "ϝ",
+ None,
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "а",
+ "б",
+ "в",
+ "г",
+ "д",
+ "е",
+ "ж",
+ "з",
+ "и",
+ "к",
+ "л",
+ "м",
+ "о",
+ "п",
+ "р",
+ "с",
+ "т",
+ "у",
+ "ф",
+ "х",
+ "ц",
+ "ч",
+ "ш",
+ "ы",
+ "э",
+ "ю",
+ "ꚉ",
+ "ә",
+ "і",
+ "ј",
+ "ө",
+ "ү",
+ "ӏ",
+ "а",
+ "б",
+ "в",
+ "г",
+ "д",
+ "е",
+ "ж",
+ "з",
+ "и",
+ "к",
+ "л",
+ "о",
+ "п",
+ "с",
+ "у",
+ "ф",
+ "х",
+ "ц",
+ "ч",
+ "ш",
+ "ъ",
+ "ы",
+ "ґ",
+ "і",
+ "ѕ",
+ "џ",
+ "ҫ",
+ "ꙑ",
+ "ұ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "𞤢",
+ "𞤣",
+ "𞤤",
+ "𞤥",
+ "𞤦",
+ "𞤧",
+ "𞤨",
+ "𞤩",
+ "𞤪",
+ "𞤫",
+ "𞤬",
+ "𞤭",
+ "𞤮",
+ "𞤯",
+ "𞤰",
+ "𞤱",
+ "𞤲",
+ "𞤳",
+ "𞤴",
+ "𞤵",
+ "𞤶",
+ "𞤷",
+ "𞤸",
+ "𞤹",
+ "𞤺",
+ "𞤻",
+ "𞤼",
+ "𞤽",
+ "𞤾",
+ "𞤿",
+ "𞥀",
+ "𞥁",
+ "𞥂",
+ "𞥃",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "ا",
+ "ب",
+ "ج",
+ "د",
+ None,
+ "و",
+ "ز",
+ "ح",
+ "ط",
+ "ي",
+ "ك",
+ "ل",
+ "م",
+ "ن",
+ "س",
+ "ع",
+ "ف",
+ "ص",
+ "ق",
+ "ر",
+ "ش",
+ "ت",
+ "ث",
+ "خ",
+ "ذ",
+ "ض",
+ "ظ",
+ "غ",
+ "ٮ",
+ "ں",
+ "ڡ",
+ "ٯ",
+ None,
+ "ب",
+ "ج",
+ None,
+ "ه",
+ None,
+ "ح",
+ None,
+ "ي",
+ "ك",
+ "ل",
+ "م",
+ "ن",
+ "س",
+ "ع",
+ "ف",
+ "ص",
+ "ق",
+ None,
+ "ش",
+ "ت",
+ "ث",
+ "خ",
+ None,
+ "ض",
+ None,
+ "غ",
+ None,
+ "ج",
+ None,
+ "ح",
+ None,
+ "ي",
+ None,
+ "ل",
+ None,
+ "ن",
+ "س",
+ "ع",
+ None,
+ "ص",
+ "ق",
+ None,
+ "ش",
+ None,
+ "خ",
+ None,
+ "ض",
+ None,
+ "غ",
+ None,
+ "ں",
+ None,
+ "ٯ",
+ None,
+ "ب",
+ "ج",
+ None,
+ "ه",
+ None,
+ "ح",
+ "ط",
+ "ي",
+ "ك",
+ None,
+ "م",
+ "ن",
+ "س",
+ "ع",
+ "ف",
+ "ص",
+ "ق",
+ None,
+ "ش",
+ "ت",
+ "ث",
+ "خ",
+ None,
+ "ض",
+ "ظ",
+ "غ",
+ "ٮ",
+ None,
+ "ڡ",
+ None,
+ "ا",
+ "ب",
+ "ج",
+ "د",
+ "ه",
+ "و",
+ "ز",
+ "ح",
+ "ط",
+ "ي",
+ None,
+ "ل",
+ "م",
+ "ن",
+ "س",
+ "ع",
+ "ف",
+ "ص",
+ "ق",
+ "ر",
+ "ش",
+ "ت",
+ "ث",
+ "خ",
+ "ذ",
+ "ض",
+ "ظ",
+ "غ",
+ None,
+ "ب",
+ "ج",
+ "د",
+ None,
+ "و",
+ "ز",
+ "ح",
+ "ط",
+ "ي",
+ None,
+ "ل",
+ "م",
+ "ن",
+ "س",
+ "ع",
+ "ف",
+ "ص",
+ "ق",
+ "ر",
+ "ش",
+ "ت",
+ "ث",
+ "خ",
+ "ذ",
+ "ض",
+ "ظ",
+ "غ",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "0,",
+ "1,",
+ "2,",
+ "3,",
+ "4,",
+ "5,",
+ "6,",
+ "7,",
+ "8,",
+ "9,",
+ None,
+ "(a)",
+ "(b)",
+ "(c)",
+ "(d)",
+ "(e)",
+ "(f)",
+ "(g)",
+ "(h)",
+ "(i)",
+ "(j)",
+ "(k)",
+ "(l)",
+ "(m)",
+ "(n)",
+ "(o)",
+ "(p)",
+ "(q)",
+ "(r)",
+ "(s)",
+ "(t)",
+ "(u)",
+ "(v)",
+ "(w)",
+ "(x)",
+ "(y)",
+ "(z)",
+ "〔s〕",
+ "c",
+ "r",
+ "cd",
+ "wz",
+ None,
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "hv",
+ "mv",
+ "sd",
+ "ss",
+ "ppv",
+ "wc",
+ None,
+ "mc",
+ "md",
+ "mr",
+ None,
+ "dj",
+ None,
+ None,
+ None,
+ "ほか",
+ "ココ",
+ "サ",
+ None,
+ "手",
+ "字",
+ "双",
+ "デ",
+ "二",
+ "多",
+ "解",
+ "天",
+ "交",
+ "映",
+ "無",
+ "料",
+ "前",
+ "後",
+ "再",
+ "新",
+ "初",
+ "終",
+ "生",
+ "販",
+ "声",
+ "吹",
+ "演",
+ "投",
+ "捕",
+ "一",
+ "三",
+ "遊",
+ "左",
+ "中",
+ "右",
+ "指",
+ "走",
+ "打",
+ "禁",
+ "空",
+ "合",
+ "満",
+ "有",
+ "月",
+ "申",
+ "割",
+ "営",
+ "配",
+ None,
+ "〔本〕",
+ "〔三〕",
+ "〔二〕",
+ "〔安〕",
+ "〔点〕",
+ "〔打〕",
+ "〔盗〕",
+ "〔勝〕",
+ "〔敗〕",
+ None,
+ "得",
+ "可",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ "丽",
+ "丸",
+ "乁",
+ "𠄢",
+ "你",
+ "侮",
+ "侻",
+ "倂",
+ "偺",
+ "備",
+ "僧",
+ "像",
+ "㒞",
+ "𠘺",
+ "免",
+ "兔",
+ "兤",
+ "具",
+ "𠔜",
+ "㒹",
+ "內",
+ "再",
+ "𠕋",
+ "冗",
+ "冤",
+ "仌",
+ "冬",
+ "况",
+ "𩇟",
+ "凵",
+ "刃",
+ "㓟",
+ "刻",
+ "剆",
+ "割",
+ "剷",
+ "㔕",
+ "勇",
+ "勉",
+ "勤",
+ "勺",
+ "包",
+ "匆",
+ "北",
+ "卉",
+ "卑",
+ "博",
+ "即",
+ "卽",
+ "卿",
+ "𠨬",
+ "灰",
+ "及",
+ "叟",
+ "𠭣",
+ "叫",
+ "叱",
+ "吆",
+ "咞",
+ "吸",
+ "呈",
+ "周",
+ "咢",
+ "哶",
+ "唐",
+ "啓",
+ "啣",
+ "善",
+ "喙",
+ "喫",
+ "喳",
+ "嗂",
+ "圖",
+ "嘆",
+ "圗",
+ "噑",
+ "噴",
+ "切",
+ "壮",
+ "城",
+ "埴",
+ "堍",
+ "型",
+ "堲",
+ "報",
+ "墬",
+ "𡓤",
+ "売",
+ "壷",
+ "夆",
+ "多",
+ "夢",
+ "奢",
+ "𡚨",
+ "𡛪",
+ "姬",
+ "娛",
+ "娧",
+ "姘",
+ "婦",
+ "㛮",
+ "㛼",
+ "嬈",
+ "嬾",
+ "𡧈",
+ "寃",
+ "寘",
+ "寧",
+ "寳",
+ "𡬘",
+ "寿",
+ "将",
+ "当",
+ "尢",
+ "㞁",
+ "屠",
+ "屮",
+ "峀",
+ "岍",
+ "𡷤",
+ "嵃",
+ "𡷦",
+ "嵮",
+ "嵫",
+ "嵼",
+ "巡",
+ "巢",
+ "㠯",
+ "巽",
+ "帨",
+ "帽",
+ "幩",
+ "㡢",
+ "𢆃",
+ "㡼",
+ "庰",
+ "庳",
+ "庶",
+ "廊",
+ "𪎒",
+ "廾",
+ "𢌱",
+ "舁",
+ "弢",
+ "㣇",
+ "𣊸",
+ "𦇚",
+ "形",
+ "彫",
+ "㣣",
+ "徚",
+ "忍",
+ "志",
+ "忹",
+ "悁",
+ "㤺",
+ "㤜",
+ "悔",
+ "𢛔",
+ "惇",
+ "慈",
+ "慌",
+ "慎",
+ "慌",
+ "慺",
+ "憎",
+ "憲",
+ "憤",
+ "憯",
+ "懞",
+ "懲",
+ "懶",
+ "成",
+ "戛",
+ "扝",
+ "抱",
+ "拔",
+ "捐",
+ "𢬌",
+ "挽",
+ "拼",
+ "捨",
+ "掃",
+ "揤",
+ "𢯱",
+ "搢",
+ "揅",
+ "掩",
+ "㨮",
+ "摩",
+ "摾",
+ "撝",
+ "摷",
+ "㩬",
+ "敏",
+ "敬",
+ "𣀊",
+ "旣",
+ "書",
+ "晉",
+ "㬙",
+ "暑",
+ "㬈",
+ "㫤",
+ "冒",
+ "冕",
+ "最",
+ "暜",
+ "肭",
+ "䏙",
+ "朗",
+ "望",
+ "朡",
+ "杞",
+ "杓",
+ "𣏃",
+ "㭉",
+ "柺",
+ "枅",
+ "桒",
+ "梅",
+ "𣑭",
+ "梎",
+ "栟",
+ "椔",
+ "㮝",
+ "楂",
+ "榣",
+ "槪",
+ "檨",
+ "𣚣",
+ "櫛",
+ "㰘",
+ "次",
+ "𣢧",
+ "歔",
+ "㱎",
+ "歲",
+ "殟",
+ "殺",
+ "殻",
+ "𣪍",
+ "𡴋",
+ "𣫺",
+ "汎",
+ "𣲼",
+ "沿",
+ "泍",
+ "汧",
+ "洖",
+ "派",
+ "海",
+ "流",
+ "浩",
+ "浸",
+ "涅",
+ "𣴞",
+ "洴",
+ "港",
+ "湮",
+ "㴳",
+ "滋",
+ "滇",
+ "𣻑",
+ "淹",
+ "潮",
+ "𣽞",
+ "𣾎",
+ "濆",
+ "瀹",
+ "瀞",
+ "瀛",
+ "㶖",
+ "灊",
+ "災",
+ "灷",
+ "炭",
+ "𠔥",
+ "煅",
+ "𤉣",
+ "熜",
+ "𤎫",
+ "爨",
+ "爵",
+ "牐",
+ "𤘈",
+ "犀",
+ "犕",
+ "𤜵",
+ "𤠔",
+ "獺",
+ "王",
+ "㺬",
+ "玥",
+ "㺸",
+ "瑇",
+ "瑜",
+ "瑱",
+ "璅",
+ "瓊",
+ "㼛",
+ "甤",
+ "𤰶",
+ "甾",
+ "𤲒",
+ "異",
+ "𢆟",
+ "瘐",
+ "𤾡",
+ "𤾸",
+ "𥁄",
+ "㿼",
+ "䀈",
+ "直",
+ "𥃳",
+ "𥃲",
+ "𥄙",
+ "𥄳",
+ "眞",
+ "真",
+ "睊",
+ "䀹",
+ "瞋",
+ "䁆",
+ "䂖",
+ "𥐝",
+ "硎",
+ "碌",
+ "磌",
+ "䃣",
+ "𥘦",
+ "祖",
+ "𥚚",
+ "𥛅",
+ "福",
+ "秫",
+ "䄯",
+ "穀",
+ "穊",
+ "穏",
+ "𥥼",
+ "𥪧",
+ "竮",
+ "䈂",
+ "𥮫",
+ "篆",
+ "築",
+ "䈧",
+ "𥲀",
+ "糒",
+ "䊠",
+ "糨",
+ "糣",
+ "紀",
+ "𥾆",
+ "絣",
+ "䌁",
+ "緇",
+ "縂",
+ "繅",
+ "䌴",
+ "𦈨",
+ "𦉇",
+ "䍙",
+ "𦋙",
+ "罺",
+ "𦌾",
+ "羕",
+ "翺",
+ "者",
+ "𦓚",
+ "𦔣",
+ "聠",
+ "𦖨",
+ "聰",
+ "𣍟",
+ "䏕",
+ "育",
+ "脃",
+ "䐋",
+ "脾",
+ "媵",
+ "𦞧",
+ "𦞵",
+ "𣎓",
+ "𣎜",
+ "舁",
+ "舄",
+ "辞",
+ "䑫",
+ "芑",
+ "芋",
+ "芝",
+ "劳",
+ "花",
+ "芳",
+ "芽",
+ "苦",
+ "𦬼",
+ "若",
+ "茝",
+ "荣",
+ "莭",
+ "茣",
+ "莽",
+ "菧",
+ "著",
+ "荓",
+ "菊",
+ "菌",
+ "菜",
+ "𦰶",
+ "𦵫",
+ "𦳕",
+ "䔫",
+ "蓱",
+ "蓳",
+ "蔖",
+ "𧏊",
+ "蕤",
+ "𦼬",
+ "䕝",
+ "䕡",
+ "𦾱",
+ "𧃒",
+ "䕫",
+ "虐",
+ "虜",
+ "虧",
+ "虩",
+ "蚩",
+ "蚈",
+ "蜎",
+ "蛢",
+ "蝹",
+ "蜨",
+ "蝫",
+ "螆",
+ "䗗",
+ "蟡",
+ "蠁",
+ "䗹",
+ "衠",
+ "衣",
+ "𧙧",
+ "裗",
+ "裞",
+ "䘵",
+ "裺",
+ "㒻",
+ "𧢮",
+ "𧥦",
+ "䚾",
+ "䛇",
+ "誠",
+ "諭",
+ "變",
+ "豕",
+ "𧲨",
+ "貫",
+ "賁",
+ "贛",
+ "起",
+ "𧼯",
+ "𠠄",
+ "跋",
+ "趼",
+ "跰",
+ "𠣞",
+ "軔",
+ "輸",
+ "𨗒",
+ "𨗭",
+ "邔",
+ "郱",
+ "鄑",
+ "𨜮",
+ "鄛",
+ "鈸",
+ "鋗",
+ "鋘",
+ "鉼",
+ "鏹",
+ "鐕",
+ "𨯺",
+ "開",
+ "䦕",
+ "閷",
+ "𨵷",
+ "䧦",
+ "雃",
+ "嶲",
+ "霣",
+ "𩅅",
+ "𩈚",
+ "䩮",
+ "䩶",
+ "韠",
+ "𩐊",
+ "䪲",
+ "𩒖",
+ "頋",
+ "頩",
+ "𩖶",
+ "飢",
+ "䬳",
+ "餩",
+ "馧",
+ "駂",
+ "駾",
+ "䯎",
+ "𩬰",
+ "鬒",
+ "鱀",
+ "鳽",
+ "䳎",
+ "䳭",
+ "鵧",
+ "𪃎",
+ "䳸",
+ "𪄅",
+ "𪈎",
+ "𪊑",
+ "麻",
+ "䵖",
+ "黹",
+ "黾",
+ "鼅",
+ "鼏",
+ "鼖",
+ "鼻",
+ "𪘀",
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
+ None,
)
diff --git a/contrib/python/idna/py3/tests/test_idna.py b/contrib/python/idna/py3/tests/test_idna.py
index e6029aede1f..4a31866b626 100644
--- a/contrib/python/idna/py3/tests/test_idna.py
+++ b/contrib/python/idna/py3/tests/test_idna.py
@@ -349,6 +349,61 @@ class IDNATests(unittest.TestCase):
self.assertRaises(idna.IDNAError, idna.encode, value)
self.assertRaises(idna.IDNAError, idna.decode, value)
+ def test_decode_display(self):
+ # A label whose Punycode decode succeeds but contains disallowed
+ # codepoints — under display decoding, the original A-label is kept.
+ self.assertRaises(idna.IDNAError, idna.decode, "a.b.c.xn--pokxncvks")
+ self.assertEqual(
+ idna.decode("a.b.c.xn--pokxncvks", display=True),
+ "a.b.c.xn--pokxncvks",
+ )
+
+ # Mixed valid/invalid labels: the valid label still decodes, the
+ # invalid xn-- label is preserved verbatim.
+ self.assertEqual(
+ idna.decode("xn--zckzah.xn--pokxncvks", display=True),
+ "テスト.xn--pokxncvks",
+ )
+
+ # A label whose Punycode itself is malformed.
+ self.assertEqual(
+ idna.decode("xn--.example", display=True),
+ "xn--.example",
+ )
+
+ # Uppercase A-label prefix: the kept label is lowercased to match
+ # what a successful ulabel() call would have returned.
+ self.assertEqual(
+ idna.decode("XN--POKXNCVKS.example", display=True),
+ "xn--pokxncvks.example",
+ )
+
+ # display must not swallow errors for non-xn-- labels.
+ self.assertRaises(
+ idna.IDNAError,
+ idna.decode,
+ "-bad.example",
+ display=True,
+ )
+
+ # display should be a no-op for fully valid input.
+ self.assertEqual(
+ idna.decode("xn--zckzah.xn--zckzah", display=True),
+ "テスト.テスト",
+ )
+
+ # Trailing dot preserved under display recovery.
+ self.assertEqual(
+ idna.decode("xn--pokxncvks.", display=True),
+ "xn--pokxncvks.",
+ )
+
+ # Bytes input is supported, matching decode()'s normal contract.
+ self.assertEqual(
+ idna.decode(b"a.b.c.xn--pokxncvks", display=True),
+ "a.b.c.xn--pokxncvks",
+ )
+
if __name__ == "__main__":
unittest.main()
diff --git a/contrib/python/idna/py3/ya.make b/contrib/python/idna/py3/ya.make
index 8f96cee300d..4e3ded2a921 100644
--- a/contrib/python/idna/py3/ya.make
+++ b/contrib/python/idna/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(3.16)
+VERSION(3.18)
LICENSE(BSD-3-Clause)
diff --git a/contrib/python/propcache/.dist-info/METADATA b/contrib/python/propcache/.dist-info/METADATA
new file mode 100644
index 00000000000..37cb00053d8
--- /dev/null
+++ b/contrib/python/propcache/.dist-info/METADATA
@@ -0,0 +1,539 @@
+Metadata-Version: 2.4
+Name: propcache
+Version: 0.5.2
+Summary: Accelerated property cache
+Home-page: https://github.com/aio-libs/propcache
+Author: Andrew Svetlov
+Author-email: [email protected]
+Maintainer: aiohttp team <[email protected]>
+Maintainer-email: [email protected]
+License: Apache-2.0
+Project-URL: Chat: Matrix, https://matrix.to/#/#aio-libs:matrix.org
+Project-URL: Chat: Matrix Space, https://matrix.to/#/#aio-libs-space:matrix.org
+Project-URL: CI: GitHub Workflows, https://github.com/aio-libs/propcache/actions?query=branch:master
+Project-URL: Code of Conduct, https://github.com/aio-libs/.github/blob/master/CODE_OF_CONDUCT.md
+Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/propcache
+Project-URL: Docs: Changelog, https://propcache.readthedocs.io/en/latest/changes/
+Project-URL: Docs: RTD, https://propcache.readthedocs.io
+Project-URL: GitHub: issues, https://github.com/aio-libs/propcache/issues
+Project-URL: GitHub: repo, https://github.com/aio-libs/propcache
+Keywords: cython,cext,propcache
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Cython
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Requires-Python: >=3.10
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+License-File: NOTICE
+Dynamic: license-file
+
+propcache
+=========
+
+The module provides a fast implementation of cached properties for Python 3.10+.
+
+.. image:: https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg
+ :target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI
+ :align: right
+
+.. image:: https://codecov.io/gh/aio-libs/propcache/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/aio-libs/propcache
+
+.. image:: https://badge.fury.io/py/propcache.svg
+ :target: https://badge.fury.io/py/propcache
+
+
+.. image:: https://readthedocs.org/projects/propcache/badge/?version=latest
+ :target: https://propcache.readthedocs.io
+
+
+.. image:: https://img.shields.io/pypi/pyversions/propcache.svg
+ :target: https://pypi.python.org/pypi/propcache
+
+.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs:matrix.org
+ :alt: Matrix Room — #aio-libs:matrix.org
+
+.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs-space:matrix.org
+ :alt: Matrix Space — #aio-libs-space:matrix.org
+
+Introduction
+------------
+
+The API is designed to be nearly identical to the built-in ``functools.cached_property`` class,
+except for the additional ``under_cached_property`` class which uses ``self._cache``
+instead of ``self.__dict__`` to store the cached values and prevents ``__set__`` from being called.
+
+For full documentation please read https://propcache.readthedocs.io.
+
+Installation
+------------
+
+::
+
+ $ pip install propcache
+
+The library is Python 3 only!
+
+PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
+``propcache`` on another operating system where wheels are not provided,
+the the tarball will be used to compile the library from
+the source code. It requires a C compiler and and Python headers installed.
+
+To skip the compilation you must explicitly opt-in by using a PEP 517
+configuration setting ``pure-python``, or setting the ``PROPCACHE_NO_EXTENSIONS``
+environment variable to a non-empty value, e.g.:
+
+.. code-block:: console
+
+ $ pip install propcache --config-settings=pure-python=false
+
+Please note that the pure-Python (uncompiled) version is much slower. However,
+PyPy always uses a pure-Python implementation, and, as such, it is unaffected
+by this variable.
+
+
+API documentation
+------------------
+
+The documentation is located at https://propcache.readthedocs.io.
+
+Source code
+-----------
+
+The project is hosted on GitHub_
+
+Please file an issue on the `bug tracker
+<https://github.com/aio-libs/propcache/issues>`_ if you have found a bug
+or have some suggestion in order to improve the library.
+
+Discussion list
+---------------
+
+*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
+
+Feel free to post your questions and ideas here.
+
+
+Authors and License
+-------------------
+
+The ``propcache`` package is derived from ``yarl`` which is written by Andrew Svetlov.
+
+It's *Apache 2* licensed and freely available.
+
+
+.. _GitHub: https://github.com/aio-libs/propcache
+
+=========
+Changelog
+=========
+
+..
+ You should *NOT* be adding new change log entries to this file, this
+ file is managed by towncrier. You *may* edit previous change logs to
+ fix problems like typo corrections or such.
+ To add a new change log entry, please see
+ https://pip.pypa.io/en/latest/development/#adding-a-news-entry
+ we named the news folder "changes".
+
+ WARNING: Don't drop the next directive!
+
+.. towncrier release notes start
+
+0.5.2
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.1
+=====
+
+*(2026-05-08)*
+
+
+No significant changes.
+
+
+----
+
+
+0.5.0
+=====
+
+*(2026-05-08)*
+
+
+Features
+--------
+
+- Added support for newer type hints and remove ``Optional`` and ``Union`` from all annotations
+ -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__
+
+ *Related issues and pull requests on GitHub:*
+ `#193 <https://github.com/aio-libs/propcache/issues/193>`__.
+
+
+Removals and backward incompatible breaking changes
+---------------------------------------------------
+
+- Dropped support for Python 3.9 as it has reached end of life.
+
+ *Related issues and pull requests on GitHub:*
+ `#216 <https://github.com/aio-libs/propcache/issues/216>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Changed the Cython build dependency from ``~= 3.1.0`` to ``>= 3.2.0``,
+ removing the upper version bound to avoid conflicts for downstream packagers
+ -- by `@jameshilliard <https://github.com/sponsors/jameshilliard>`__ and `@gundalow <https://github.com/sponsors/gundalow>`__.
+
+ The upstream Cython version is pinned to 3.2.4 in the CI/CD environment.
+
+ *Related issues and pull requests on GitHub:*
+ `#184 <https://github.com/aio-libs/propcache/issues/184>`__, `#188 <https://github.com/aio-libs/propcache/issues/188>`__, `#214 <https://github.com/aio-libs/propcache/issues/214>`__.
+
+- Start building and shipping riscv64 wheels
+ -- by `@justeph <https://github.com/sponsors/justeph>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#194 <https://github.com/aio-libs/propcache/issues/194>`__.
+
+- The `PEP 517 <https://peps.python.org/pep-517>`__ build backend now supports a new ``build-inplace``
+ config setting (and ``PROPCACHE_BUILD_INPLACE`` environment variable)
+ for controlling whether to build the project in-tree or in a
+ temporary directory. It only affects wheels and is set up to build
+ in a temporary directory by default. It does not affect editable
+ wheel builds; they will keep being built in-tree regardless.
+
+ Here's an example of using this setting:
+
+ .. code-block:: console
+
+ $ python -m build --config-setting=build-inplace=true
+
+ Additionally, when building wheels in an automatically created
+ temporary directory, the build backend now normalizes the
+ respective file system path to a deterministic source checkout
+ directory by injecting the ``-ffile-prefix-map`` compiler option
+ into the ``CFLAGS`` environment variable, as suggested by known
+ `reproducible build practices
+ <https://reproducible-builds.org/docs/build-path/>`__.
+
+ The effect is that downstreams will get reproducible build results.
+
+ *Related issues and pull requests on GitHub:*
+ `#218 <https://github.com/aio-libs/propcache/issues/218>`__.
+
+
+----
+
+
+0.4.1
+=====
+
+*(2025-10-08)*
+
+
+Bug fixes
+---------
+
+- Fixed reference leak caused by ``Py_INCREF`` because Cython has its own reference counter systems -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#162 <https://github.com/aio-libs/propcache/issues/162>`__.
+
+
+Contributor-facing changes
+--------------------------
+
+- Fixes the default value for the ``os``
+ parameter in ``reusable-build-wheel.yml``
+ to be ``ubuntu-latest`` instead of
+ ``ubuntu``.
+
+ *Related issues and pull requests on GitHub:*
+ `#155 <https://github.com/aio-libs/propcache/issues/155>`__.
+
+
+----
+
+
+0.4.0
+=====
+
+*(2025-10-04)*
+
+
+Features
+--------
+
+- Optimized propcache by replacing sentinel ``object`` for checking if
+ the ``object`` is ``NULL`` and changed ``dict`` API for
+ Python C-API -- by `@Vizonex <https://github.com/sponsors/Vizonex>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#121 <https://github.com/aio-libs/propcache/issues/121>`__.
+
+
+Contributor-facing changes
+--------------------------
+
+- Builds have been added for arm64 Windows
+ wheels and the ``reusable-build-wheel.yml``
+ workflow has been modified to allow for
+ an OS value (``windows-11-arm``) which
+ does not include the ``-latest`` postfix
+ -- by `@finnagin <https://github.com/sponsors/finnagin>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#133 <https://github.com/aio-libs/propcache/issues/133>`__.
+
+- Added CI for CPython 3.14 -- by `@kumaraditya303 <https://github.com/sponsors/kumaraditya303>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#140 <https://github.com/aio-libs/propcache/issues/140>`__.
+
+
+----
+
+
+0.3.2
+=====
+
+*(2025-06-09)*
+
+
+Improved documentation
+----------------------
+
+- Fixed incorrect decorator usage in the ``~propcache.api.under_cached_property`` example code -- by `@meanmail <https://github.com/sponsors/meanmail>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#109 <https://github.com/aio-libs/propcache/issues/109>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Updated to use Cython 3.1 universally across the build path -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#117 <https://github.com/aio-libs/propcache/issues/117>`__.
+
+- Made Cython line tracing opt-in via the ``with-cython-tracing`` build config setting -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ Previously, line tracing was enabled by default in ``pyproject.toml``, which caused build issues for some users and made wheels nearly twice as slow.
+
+ Now line tracing is only enabled when explicitly requested via ``pip install . --config-setting=with-cython-tracing=true`` or by setting the ``PROPCACHE_CYTHON_TRACING`` environment variable.
+
+ *Related issues and pull requests on GitHub:*
+ `#118 <https://github.com/aio-libs/propcache/issues/118>`__.
+
+
+----
+
+
+0.3.1
+=====
+
+*(2025-03-25)*
+
+
+Bug fixes
+---------
+
+- Improved typing annotations, fixing some type errors under correct usage
+ and improving typing robustness generally -- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#103 <https://github.com/aio-libs/propcache/issues/103>`__.
+
+
+----
+
+
+0.3.0
+=====
+
+*(2025-02-20)*
+
+
+Features
+--------
+
+- Implemented support for the free-threaded build of CPython 3.13 -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#84 <https://github.com/aio-libs/propcache/issues/84>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Started building wheels for the free-threaded build of CPython 3.13 -- by `@lysnikolaou <https://github.com/sponsors/lysnikolaou>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#84 <https://github.com/aio-libs/propcache/issues/84>`__.
+
+
+Contributor-facing changes
+--------------------------
+
+- GitHub Actions CI/CD is now configured to manage caching pip-ecosystem
+ dependencies using `re-actors/cache-python-deps`_ -- an action by
+ `@webknjaz <https://github.com/sponsors/webknjaz>`__ that takes into account ABI stability and the exact
+ version of Python runtime.
+
+ .. _`re-actors/cache-python-deps`:
+ https://github.com/marketplace/actions/cache-python-deps
+
+ *Related issues and pull requests on GitHub:*
+ `#93 <https://github.com/aio-libs/propcache/issues/93>`__.
+
+
+----
+
+
+0.2.1
+=====
+
+*(2024-12-01)*
+
+
+Bug fixes
+---------
+
+- Stopped implicitly allowing the use of Cython pre-release versions when
+ building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
+ `@markgreene74 <https://github.com/sponsors/markgreene74>`__.
+
+ *Related commits on GitHub:*
+ `64df0a6 <https://github.com/aio-libs/propcache/commit/64df0a6>`__.
+
+- Fixed ``wrapped`` and ``func`` not being accessible in the Cython versions of ``propcache.api.cached_property`` and ``propcache.api.under_cached_property`` decorators -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#72 <https://github.com/aio-libs/propcache/issues/72>`__.
+
+
+Removals and backward incompatible breaking changes
+---------------------------------------------------
+
+- Removed support for Python 3.8 as it has reached end of life -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#57 <https://github.com/aio-libs/propcache/issues/57>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Stopped implicitly allowing the use of Cython pre-release versions when
+ building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
+ `@markgreene74 <https://github.com/sponsors/markgreene74>`__.
+
+ *Related commits on GitHub:*
+ `64df0a6 <https://github.com/aio-libs/propcache/commit/64df0a6>`__.
+
+
+----
+
+
+0.2.0
+=====
+
+*(2024-10-07)*
+
+
+Bug fixes
+---------
+
+- Fixed loading the C-extensions on Python 3.8 -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#26 <https://github.com/aio-libs/propcache/issues/26>`__.
+
+
+Features
+--------
+
+- Improved typing for the ``propcache.api.under_cached_property`` decorator -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#38 <https://github.com/aio-libs/propcache/issues/38>`__.
+
+
+Improved documentation
+----------------------
+
+- Added API documentation for the ``propcache.api.cached_property`` and ``propcache.api.under_cached_property`` decorators -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#16 <https://github.com/aio-libs/propcache/issues/16>`__.
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Moved ``propcache.api.under_cached_property`` and ``propcache.api.cached_property`` to `propcache.api` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ Both decorators remain importable from the top-level package, however importing from `propcache.api` is now the recommended way to use them.
+
+ *Related issues and pull requests on GitHub:*
+ `#19 <https://github.com/aio-libs/propcache/issues/19>`__, `#24 <https://github.com/aio-libs/propcache/issues/24>`__, `#32 <https://github.com/aio-libs/propcache/issues/32>`__.
+
+- Converted project to use a src layout -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#22 <https://github.com/aio-libs/propcache/issues/22>`__, `#29 <https://github.com/aio-libs/propcache/issues/29>`__, `#37 <https://github.com/aio-libs/propcache/issues/37>`__.
+
+
+----
+
+
+0.1.0
+=====
+
+*(2024-10-03)*
+
+
+Features
+--------
+
+- Added ``armv7l`` wheels -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#5 <https://github.com/aio-libs/propcache/issues/5>`__.
+
+
+----
+
+
+0.0.0
+=====
+
+*(2024-10-02)*
+
+
+- Initial release.
diff --git a/contrib/python/propcache/.dist-info/top_level.txt b/contrib/python/propcache/.dist-info/top_level.txt
new file mode 100644
index 00000000000..8c9accf6226
--- /dev/null
+++ b/contrib/python/propcache/.dist-info/top_level.txt
@@ -0,0 +1 @@
+propcache
diff --git a/contrib/python/propcache/.yandex_meta/yamaker.yaml b/contrib/python/propcache/.yandex_meta/yamaker.yaml
new file mode 100644
index 00000000000..4daee40a45c
--- /dev/null
+++ b/contrib/python/propcache/.yandex_meta/yamaker.yaml
@@ -0,0 +1,4 @@
+mark_as_cython_c:
+ - propcache/_helpers_c.pyx
+exclude:
+ - tests/test_benchmarks.py
diff --git a/contrib/python/propcache/LICENSE b/contrib/python/propcache/LICENSE
new file mode 100644
index 00000000000..d6456956733
--- /dev/null
+++ b/contrib/python/propcache/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/python/propcache/NOTICE b/contrib/python/propcache/NOTICE
new file mode 100644
index 00000000000..fa53b2b138d
--- /dev/null
+++ b/contrib/python/propcache/NOTICE
@@ -0,0 +1,13 @@
+ Copyright 2016-2021, Andrew Svetlov and aio-libs team
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/contrib/python/propcache/README.rst b/contrib/python/propcache/README.rst
new file mode 100644
index 00000000000..ce10fbf8037
--- /dev/null
+++ b/contrib/python/propcache/README.rst
@@ -0,0 +1,98 @@
+propcache
+=========
+
+The module provides a fast implementation of cached properties for Python 3.10+.
+
+.. image:: https://github.com/aio-libs/propcache/actions/workflows/ci-cd.yml/badge.svg
+ :target: https://github.com/aio-libs/propcache/actions?query=workflow%3ACI
+ :align: right
+
+.. image:: https://codecov.io/gh/aio-libs/propcache/branch/master/graph/badge.svg
+ :target: https://codecov.io/gh/aio-libs/propcache
+
+.. image:: https://badge.fury.io/py/propcache.svg
+ :target: https://badge.fury.io/py/propcache
+
+
+.. image:: https://readthedocs.org/projects/propcache/badge/?version=latest
+ :target: https://propcache.readthedocs.io
+
+
+.. image:: https://img.shields.io/pypi/pyversions/propcache.svg
+ :target: https://pypi.python.org/pypi/propcache
+
+.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs:matrix.org
+ :alt: Matrix Room — #aio-libs:matrix.org
+
+.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
+ :target: https://matrix.to/#/%23aio-libs-space:matrix.org
+ :alt: Matrix Space — #aio-libs-space:matrix.org
+
+Introduction
+------------
+
+The API is designed to be nearly identical to the built-in ``functools.cached_property`` class,
+except for the additional ``under_cached_property`` class which uses ``self._cache``
+instead of ``self.__dict__`` to store the cached values and prevents ``__set__`` from being called.
+
+For full documentation please read https://propcache.readthedocs.io.
+
+Installation
+------------
+
+::
+
+ $ pip install propcache
+
+The library is Python 3 only!
+
+PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
+``propcache`` on another operating system where wheels are not provided,
+the the tarball will be used to compile the library from
+the source code. It requires a C compiler and and Python headers installed.
+
+To skip the compilation you must explicitly opt-in by using a PEP 517
+configuration setting ``pure-python``, or setting the ``PROPCACHE_NO_EXTENSIONS``
+environment variable to a non-empty value, e.g.:
+
+.. code-block:: console
+
+ $ pip install propcache --config-settings=pure-python=false
+
+Please note that the pure-Python (uncompiled) version is much slower. However,
+PyPy always uses a pure-Python implementation, and, as such, it is unaffected
+by this variable.
+
+
+API documentation
+------------------
+
+The documentation is located at https://propcache.readthedocs.io.
+
+Source code
+-----------
+
+The project is hosted on GitHub_
+
+Please file an issue on the `bug tracker
+<https://github.com/aio-libs/propcache/issues>`_ if you have found a bug
+or have some suggestion in order to improve the library.
+
+Discussion list
+---------------
+
+*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
+
+Feel free to post your questions and ideas here.
+
+
+Authors and License
+-------------------
+
+The ``propcache`` package is derived from ``yarl`` which is written by Andrew Svetlov.
+
+It's *Apache 2* licensed and freely available.
+
+
+.. _GitHub: https://github.com/aio-libs/propcache
diff --git a/contrib/python/propcache/propcache/__init__.py b/contrib/python/propcache/propcache/__init__.py
new file mode 100644
index 00000000000..bbfd78a3628
--- /dev/null
+++ b/contrib/python/propcache/propcache/__init__.py
@@ -0,0 +1,32 @@
+"""propcache: An accelerated property cache for Python classes."""
+
+from typing import TYPE_CHECKING
+
+_PUBLIC_API = ("cached_property", "under_cached_property")
+
+__version__ = "0.5.2"
+__all__ = ()
+
+# Imports have moved to `propcache.api` in 0.2.0+.
+# This module is now a facade for the API.
+if TYPE_CHECKING:
+ from .api import cached_property as cached_property # noqa: F401
+ from .api import under_cached_property as under_cached_property # noqa: F401
+
+
+def _import_facade(attr: str) -> object:
+ """Import the public API from the `api` module."""
+ if attr in _PUBLIC_API:
+ from . import api # pylint: disable=import-outside-toplevel
+
+ return getattr(api, attr)
+ raise AttributeError(f"module '{__package__}' has no attribute '{attr}'")
+
+
+def _dir_facade() -> list[str]:
+ """Include the public API in the module's dir() output."""
+ return [*_PUBLIC_API, *globals().keys()]
+
+
+__getattr__ = _import_facade
+__dir__ = _dir_facade
diff --git a/contrib/python/yarl/yarl/_helpers.py b/contrib/python/propcache/propcache/_helpers.py
index ac01158c7f5..1e52895c151 100644
--- a/contrib/python/yarl/yarl/_helpers.py
+++ b/contrib/python/propcache/propcache/_helpers.py
@@ -2,10 +2,10 @@ import os
import sys
from typing import TYPE_CHECKING
-__all__ = ("cached_property",)
+__all__ = ("cached_property", "under_cached_property")
-NO_EXTENSIONS = bool(os.environ.get("YARL_NO_EXTENSIONS")) # type: bool
+NO_EXTENSIONS = bool(os.environ.get("PROPCACHE_NO_EXTENSIONS")) # type: bool
if sys.implementation.name != "cpython":
NO_EXTENSIONS = True
@@ -13,19 +13,27 @@ if sys.implementation.name != "cpython":
# isort: off
if TYPE_CHECKING:
from ._helpers_py import cached_property as cached_property_py
+ from ._helpers_py import under_cached_property as under_cached_property_py
cached_property = cached_property_py
+ under_cached_property = under_cached_property_py
elif not NO_EXTENSIONS: # pragma: no branch
try:
- from ._helpers_c import cached_property as cached_property_c # type: ignore[attr-defined, unused-ignore] # noqa: E501
+ from ._helpers_c import cached_property as cached_property_c # type: ignore[attr-defined, unused-ignore]
+ from ._helpers_c import under_cached_property as under_cached_property_c # type: ignore[attr-defined, unused-ignore]
cached_property = cached_property_c
+ under_cached_property = under_cached_property_c
except ImportError: # pragma: no cover
from ._helpers_py import cached_property as cached_property_py
+ from ._helpers_py import under_cached_property as under_cached_property_py
cached_property = cached_property_py # type: ignore[assignment, misc]
+ under_cached_property = under_cached_property_py
else:
from ._helpers_py import cached_property as cached_property_py
+ from ._helpers_py import under_cached_property as under_cached_property_py
cached_property = cached_property_py # type: ignore[assignment, misc]
+ under_cached_property = under_cached_property_py
# isort: on
diff --git a/contrib/python/propcache/propcache/_helpers_c.pyx b/contrib/python/propcache/propcache/_helpers_c.pyx
new file mode 100644
index 00000000000..9e9e5589b95
--- /dev/null
+++ b/contrib/python/propcache/propcache/_helpers_c.pyx
@@ -0,0 +1,103 @@
+# cython: language_level=3, freethreading_compatible=True
+from types import GenericAlias
+
+from cpython.dict cimport PyDict_GetItem
+from cpython.object cimport PyObject
+
+
+cdef extern from "Python.h":
+ # Call a callable Python object callable with exactly
+ # 1 positional argument arg and no keyword arguments.
+ # Return the result of the call on success, or raise
+ # an exception and return NULL on failure.
+ PyObject* PyObject_CallOneArg(
+ object callable, object arg
+ ) except NULL
+ int PyDict_SetItem(
+ object dict, object key, PyObject* value
+ ) except -1
+ void Py_DECREF(PyObject*)
+
+
+cdef class under_cached_property:
+ """Use as a class method decorator. It operates almost exactly like
+ the Python `@property` decorator, but it puts the result of the
+ method it decorates into the instance dict after the first call,
+ effectively replacing the function it decorates with an instance
+ variable. It is, in Python parlance, a data descriptor.
+
+ """
+
+ cdef readonly object wrapped
+ cdef object name
+
+ def __init__(self, object wrapped):
+ self.wrapped = wrapped
+ self.name = wrapped.__name__
+
+ @property
+ def __doc__(self):
+ return self.wrapped.__doc__
+
+ def __get__(self, object inst, owner):
+ if inst is None:
+ return self
+ cdef dict cache = inst._cache
+ cdef PyObject* val = PyDict_GetItem(cache, self.name)
+ if val == NULL:
+ val = PyObject_CallOneArg(self.wrapped, inst)
+ PyDict_SetItem(cache, self.name, val)
+ Py_DECREF(val)
+ return <object>val
+
+ def __set__(self, inst, value):
+ raise AttributeError("cached property is read-only")
+
+ __class_getitem__ = classmethod(GenericAlias)
+
+
+cdef class cached_property:
+ """Use as a class method decorator. It operates almost exactly like
+ the Python `@property` decorator, but it puts the result of the
+ method it decorates into the instance dict after the first call,
+ effectively replacing the function it decorates with an instance
+ variable. It is, in Python parlance, a data descriptor.
+
+ """
+
+ cdef readonly object func
+ cdef object name
+
+ def __init__(self, func):
+ self.func = func
+ self.name = None
+
+ @property
+ def __doc__(self):
+ return self.func.__doc__
+
+ def __set_name__(self, owner, object name):
+ if self.name is None:
+ self.name = name
+ elif name != self.name:
+ raise TypeError(
+ "Cannot assign the same cached_property to two different names "
+ f"({self.name!r} and {name!r})."
+ )
+
+ def __get__(self, inst, owner):
+ if inst is None:
+ return self
+ if self.name is None:
+ raise TypeError(
+ "Cannot use cached_property instance"
+ " without calling __set_name__ on it.")
+ cdef dict cache = inst.__dict__
+ cdef PyObject* val = PyDict_GetItem(cache, self.name)
+ if val is NULL:
+ val = PyObject_CallOneArg(self.func, inst)
+ PyDict_SetItem(cache, self.name, val)
+ Py_DECREF(val)
+ return <object>val
+
+ __class_getitem__ = classmethod(GenericAlias)
diff --git a/contrib/python/propcache/propcache/_helpers_py.py b/contrib/python/propcache/propcache/_helpers_py.py
new file mode 100644
index 00000000000..db5b8d6378f
--- /dev/null
+++ b/contrib/python/propcache/propcache/_helpers_py.py
@@ -0,0 +1,64 @@
+"""Various helper functions."""
+
+from __future__ import annotations
+
+import sys
+from collections.abc import Callable, Mapping
+from functools import cached_property
+from typing import Any, Generic, Protocol, TypeVar, overload
+
+__all__ = ("under_cached_property", "cached_property")
+
+
+if sys.version_info >= (3, 11):
+ from typing import Self
+else:
+ Self = Any
+
+_T = TypeVar("_T")
+# We use Mapping to make it possible to use TypedDict, but this isn't
+# technically type safe as we need to assign into the dict.
+_Cache = TypeVar("_Cache", bound=Mapping[str, Any])
+
+
+class _CacheImpl(Protocol[_Cache]):
+ _cache: _Cache
+
+
+class under_cached_property(Generic[_T]):
+ """Use as a class method decorator.
+
+ It operates almost exactly like
+ the Python `@property` decorator, but it puts the result of the
+ method it decorates into the instance dict after the first call,
+ effectively replacing the function it decorates with an instance
+ variable. It is, in Python parlance, a data descriptor.
+ """
+
+ def __init__(self, wrapped: Callable[[Any], _T]) -> None:
+ self.wrapped = wrapped
+ self.__doc__ = wrapped.__doc__
+ self.name = wrapped.__name__
+
+ @overload
+ def __get__(self, inst: None, owner: type[object] | None = None) -> Self: ...
+
+ @overload
+ def __get__(
+ self, inst: _CacheImpl[Any], owner: type[object] | None = None
+ ) -> _T: ...
+
+ def __get__(
+ self, inst: _CacheImpl[Any] | None, owner: type[object] | None = None
+ ) -> _T | Self:
+ if inst is None:
+ return self
+ try:
+ return inst._cache[self.name] # type: ignore[no-any-return]
+ except KeyError:
+ val = self.wrapped(inst)
+ inst._cache[self.name] = val
+ return val
+
+ def __set__(self, inst: _CacheImpl[Any], value: _T) -> None:
+ raise AttributeError("cached property is read-only")
diff --git a/contrib/python/propcache/propcache/api.py b/contrib/python/propcache/propcache/api.py
new file mode 100644
index 00000000000..22389e6337f
--- /dev/null
+++ b/contrib/python/propcache/propcache/api.py
@@ -0,0 +1,8 @@
+"""Public API of the property caching library."""
+
+from ._helpers import cached_property, under_cached_property
+
+__all__ = (
+ "cached_property",
+ "under_cached_property",
+)
diff --git a/contrib/python/propcache/propcache/py.typed b/contrib/python/propcache/propcache/py.typed
new file mode 100644
index 00000000000..dcf2c804da5
--- /dev/null
+++ b/contrib/python/propcache/propcache/py.typed
@@ -0,0 +1 @@
+# Placeholder
diff --git a/contrib/python/propcache/tests/conftest.py b/contrib/python/propcache/tests/conftest.py
new file mode 100644
index 00000000000..ee43f339231
--- /dev/null
+++ b/contrib/python/propcache/tests/conftest.py
@@ -0,0 +1,115 @@
+import argparse
+from dataclasses import dataclass
+from functools import cached_property
+from importlib import import_module
+from types import ModuleType
+
+import pytest
+
+C_EXT_MARK = pytest.mark.c_extension
+
+
+@dataclass(frozen=True)
+class PropcacheImplementation:
+ """A facade for accessing importable propcache module variants.
+
+ An instance essentially represents a c-extension or a pure-python module.
+ The actual underlying module is accessed dynamically through a property and
+ is cached.
+
+ It also has a text tag depending on what variant it is, and a string
+ representation suitable for use in Pytest's test IDs via parametrization.
+ """
+
+ is_pure_python: bool
+ """A flag showing whether this is a pure-python module or a C-extension."""
+
+ @cached_property
+ def tag(self) -> str:
+ """Return a text representation of the pure-python attribute."""
+ return "pure-python" if self.is_pure_python else "c-extension"
+
+ @cached_property
+ def imported_module(self) -> ModuleType:
+ """Return a loaded importable containing a propcache variant."""
+ importable_module = "_helpers_py" if self.is_pure_python else "_helpers_c"
+ return import_module(f"propcache.{importable_module}")
+
+ def __str__(self) -> str:
+ """Render the implementation facade instance as a string."""
+ return f"{self.tag}-module"
+
+
+ scope="session",
+ params=(
+ pytest.param(
+ PropcacheImplementation(is_pure_python=False),
+ marks=C_EXT_MARK,
+ ),
+ PropcacheImplementation(is_pure_python=True),
+ ),
+ ids=str,
+)
+def propcache_implementation(request: pytest.FixtureRequest) -> PropcacheImplementation:
+ """Return a propcache variant facade."""
+ return request.param # type: ignore[no-any-return]
+
+
[email protected](scope="session")
+def propcache_module(
+ propcache_implementation: PropcacheImplementation,
+) -> ModuleType:
+ """Return a pre-imported module containing a propcache variant."""
+ return propcache_implementation.imported_module
+
+
+def pytest_addoption(
+ parser: pytest.Parser,
+ pluginmanager: pytest.PytestPluginManager,
+) -> None:
+ """Define a new ``--c-extensions`` flag.
+
+ This lets the callers deselect tests executed against the C-extension
+ version of the ``propcache`` implementation.
+ """
+ del pluginmanager
+ parser.addoption(
+ "--c-extensions", # disabled with `--no-c-extensions`
+ action=argparse.BooleanOptionalAction,
+ default=True,
+ dest="c_extensions",
+ help="Test C-extensions (on by default)",
+ )
+
+
+def pytest_collection_modifyitems(
+ session: pytest.Session,
+ config: pytest.Config,
+ items: list[pytest.Item],
+) -> None:
+ """Deselect tests against C-extensions when requested via CLI."""
+ test_c_extensions = config.getoption("--c-extensions") is True
+
+ if test_c_extensions:
+ return
+
+ selected_tests: list[pytest.Item] = []
+ deselected_tests: list[pytest.Item] = []
+
+ for item in items:
+ c_ext = item.get_closest_marker(C_EXT_MARK.name) is not None
+
+ target_items_list = deselected_tests if c_ext else selected_tests
+ target_items_list.append(item)
+
+ config.hook.pytest_deselected(items=deselected_tests)
+ items[:] = selected_tests
+
+
+def pytest_configure(config: pytest.Config) -> None:
+ """Declare the C-extension marker in config."""
+ config.addinivalue_line(
+ "markers",
+ f"{C_EXT_MARK.name}: tests running against the C-extension implementation.",
+ )
diff --git a/contrib/python/propcache/tests/test_api.py b/contrib/python/propcache/tests/test_api.py
new file mode 100644
index 00000000000..85beec3606a
--- /dev/null
+++ b/contrib/python/propcache/tests/test_api.py
@@ -0,0 +1,11 @@
+"""Test we do not break the public API."""
+
+from propcache import _helpers, api
+
+
+def test_api() -> None:
+ """Verify the public API is accessible."""
+ assert api.cached_property is not None
+ assert api.under_cached_property is not None
+ assert api.cached_property is _helpers.cached_property
+ assert api.under_cached_property is _helpers.under_cached_property
diff --git a/contrib/python/propcache/tests/test_cached_property.py b/contrib/python/propcache/tests/test_cached_property.py
new file mode 100644
index 00000000000..a46c715c31b
--- /dev/null
+++ b/contrib/python/propcache/tests/test_cached_property.py
@@ -0,0 +1,226 @@
+import gc
+import sys
+from collections.abc import Callable
+from operator import not_
+from typing import TYPE_CHECKING, Any, Protocol, TypeVar
+
+import pytest
+
+from propcache.api import cached_property
+
+IS_PYPY = hasattr(sys, "pypy_version_info")
+
+if sys.version_info >= (3, 11):
+ from typing import assert_type
+
+_T_co = TypeVar("_T_co", covariant=True)
+
+
+class APIProtocol(Protocol):
+ def cached_property(
+ self, func: Callable[[Any], _T_co]
+ ) -> cached_property[_T_co]: ...
+
+
+def test_cached_property(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> int:
+ return 1
+
+ a = A()
+ if sys.version_info >= (3, 11):
+ assert_type(a.prop, int)
+ assert a.prop == 1
+
+
+def test_cached_property_without_cache(propcache_module: APIProtocol) -> None:
+ class A:
+
+ __slots__ = ()
+
+ def __init__(self) -> None:
+ pass
+
+ @propcache_module.cached_property
+ def prop(self) -> None:
+ """Mock property."""
+
+ a = A()
+
+ with pytest.raises(AttributeError):
+ a.prop = 123 # type: ignore[assignment]
+
+
+def test_cached_property_check_without_cache(propcache_module: APIProtocol) -> None:
+ class A:
+
+ __slots__ = ()
+
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> None:
+ """Mock property."""
+
+ a = A()
+ with pytest.raises((TypeError, AttributeError)):
+ assert a.prop == 1
+
+
+def test_cached_property_caching(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> int:
+ """Docstring."""
+ return 1
+
+ a = A()
+ assert a.prop == 1
+
+
+def test_cached_property_class_docstring(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> None:
+ """Docstring."""
+
+ if TYPE_CHECKING:
+ assert isinstance(A.prop, cached_property)
+ else:
+ assert isinstance(A.prop, propcache_module.cached_property)
+ assert "Docstring." == A.prop.__doc__
+
+
+def test_set_name(propcache_module: APIProtocol) -> None:
+ """Test that the __set_name__ method is called and checked."""
+
+ class A:
+
+ @propcache_module.cached_property
+ def prop(self) -> None:
+ """Docstring."""
+
+ A.prop.__set_name__(A, "prop")
+
+ match = r"Cannot assign the same cached_property to two "
+ with pytest.raises(TypeError, match=match):
+ A.prop.__set_name__(A, "something_else")
+
+
+def test_get_without_set_name(propcache_module: APIProtocol) -> None:
+ """Test that get without __set_name__ fails."""
+ cp = propcache_module.cached_property(not_)
+
+ class A:
+ """A class."""
+
+ A.cp = cp # type: ignore[attr-defined]
+ match = r"Cannot use cached_property instance "
+ with pytest.raises(TypeError, match=match):
+ _ = A().cp # type: ignore[attr-defined]
+
+
+def test_ensured_wrapped_function_is_accessible(propcache_module: APIProtocol) -> None:
+ """Test that the wrapped function can be accessed from python."""
+
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> int:
+ """Docstring."""
+ return 1
+
+ a = A()
+ assert A.prop.func(a) == 1
+
+
[email protected](IS_PYPY, reason="PyPy has no C extension")
+def test_cached_property_no_refcount_leak(propcache_module: APIProtocol) -> None:
+ """Test that cached_property does not leak references."""
+
+ class CachedPropertySentinel:
+ """A unique object we can track."""
+
+ def count_sentinels() -> int:
+ """Count the number of CachedPropertySentinel instances in gc."""
+ gc.collect()
+ return sum(
+ 1 for obj in gc.get_objects() if isinstance(obj, CachedPropertySentinel)
+ )
+
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.cached_property
+ def prop(self) -> CachedPropertySentinel:
+ """Return a sentinel object."""
+ return CachedPropertySentinel()
+
+ initial_sentinel_count = count_sentinels()
+
+ a = A()
+
+ # First access - creates and caches the object
+ result = a.prop
+ # sys.getrefcount returns 1 higher than actual (the temp ref from the call)
+ # After first access: result owns 1, __dict__ owns 1, getrefcount call owns 1 = 3
+ initial_refcount = sys.getrefcount(result)
+
+ # Should have exactly 1 Sentinel instance now
+ assert count_sentinels() == initial_sentinel_count + 1
+
+ # Second access - should return the cached object without creating new refs
+ result2 = a.prop
+ assert result is result2
+ # After second access: result owns 1, result2 owns 1, __dict__ owns 1, getrefcount call owns 1 = 4
+ # Only result2 should add 1
+ second_refcount = sys.getrefcount(result)
+ assert second_refcount == initial_refcount + 1
+
+ # Still should have exactly 1 Sentinel instance
+ assert count_sentinels() == initial_sentinel_count + 1
+
+ # Third access
+ result3 = a.prop
+ assert result is result3
+ # result2 and result3 each add 1
+ third_refcount = sys.getrefcount(result)
+ assert third_refcount == initial_refcount + 2
+
+ # Clean up local refs - should be back to just result and __dict__
+ del result2
+ del result3
+ after_cleanup_refcount = sys.getrefcount(result)
+ assert after_cleanup_refcount == initial_refcount
+
+ # Clear the cache and verify no leak when re-fetching
+ # After clearing: only result owns it
+ del a.__dict__["prop"]
+ cleared_refcount = sys.getrefcount(result)
+ assert cleared_refcount == initial_refcount - 1 # No longer in __dict__
+
+ # Re-fetch - this should create a new object, not affect old one
+ result4 = a.prop
+ assert result4 is not result # Should be a new object
+ refetch_refcount = sys.getrefcount(result)
+ assert refetch_refcount == cleared_refcount # Original object refcount unchanged
+
+ # Now we should have 2 Sentinel instances:
+ # - original in `result`
+ # - new one in `result4`
+ assert count_sentinels() == initial_sentinel_count + 2
diff --git a/contrib/python/propcache/tests/test_init.py b/contrib/python/propcache/tests/test_init.py
new file mode 100644
index 00000000000..6bcffe7faa6
--- /dev/null
+++ b/contrib/python/propcache/tests/test_init.py
@@ -0,0 +1,43 @@
+"""Test imports can happen from top-level."""
+
+import pytest
+
+import propcache
+from propcache import _helpers
+
+
+def test_api_at_top_level() -> None:
+ """Verify the public API is accessible at top-level."""
+ assert propcache.cached_property is not None
+ assert propcache.under_cached_property is not None
+ assert propcache.cached_property is _helpers.cached_property
+ assert propcache.under_cached_property is _helpers.under_cached_property
+
+
+ "prop_name",
+ ("cached_property", "under_cached_property"),
+)
+def test_public_api_is_discoverable_in_dir(prop_name: str) -> None:
+ """Verify the public API is discoverable programmatically."""
+ assert prop_name in dir(propcache)
+
+
+def test_importing_invalid_attr_raises() -> None:
+ """Verify importing an invalid attribute raises an AttributeError."""
+ match = r"^module 'propcache' has no attribute 'invalid_attr'$"
+ with pytest.raises(AttributeError, match=match):
+ propcache.invalid_attr
+
+
+def test_import_error_invalid_attr() -> None:
+ """Verify importing an invalid attribute raises an ImportError."""
+ # No match here because the error is raised by the import system
+ # and may vary between Python versions.
+ with pytest.raises(ImportError):
+ from propcache import invalid_attr # noqa: F401
+
+
+def test_no_wildcard_imports() -> None:
+ """Verify wildcard imports are prohibited."""
+ assert not propcache.__all__
diff --git a/contrib/python/propcache/tests/test_under_cached_property.py b/contrib/python/propcache/tests/test_under_cached_property.py
new file mode 100644
index 00000000000..9c0dc304f65
--- /dev/null
+++ b/contrib/python/propcache/tests/test_under_cached_property.py
@@ -0,0 +1,252 @@
+import gc
+import sys
+from collections.abc import Callable
+from typing import TYPE_CHECKING, Any, Protocol, TypedDict, TypeVar
+
+import pytest
+
+from propcache.api import under_cached_property
+
+IS_PYPY = hasattr(sys, "pypy_version_info")
+
+if sys.version_info >= (3, 11):
+ from typing import assert_type
+
+_T_co = TypeVar("_T_co", covariant=True)
+
+
+class APIProtocol(Protocol):
+ def under_cached_property(
+ self, func: Callable[[Any], _T_co]
+ ) -> under_cached_property[_T_co]: ...
+
+
+def test_under_cached_property(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ self._cache: dict[str, int] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> int:
+ return 1
+
+ @propcache_module.under_cached_property
+ def prop2(self) -> str:
+ return "foo"
+
+ a = A()
+ if sys.version_info >= (3, 11):
+ assert_type(a.prop, int)
+ assert a.prop == 1
+ if sys.version_info >= (3, 11):
+ assert_type(a.prop2, str)
+ assert a.prop2 == "foo"
+
+
+def test_under_cached_property_typeddict(propcache_module: APIProtocol) -> None:
+ """Test static typing passes with TypedDict."""
+
+ class _Cache(TypedDict, total=False):
+ prop: int
+ prop2: str
+
+ class A:
+ def __init__(self) -> None:
+ self._cache: _Cache = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> int:
+ return 1
+
+ @propcache_module.under_cached_property
+ def prop2(self) -> str:
+ return "foo"
+
+ a = A()
+ if sys.version_info >= (3, 11):
+ assert_type(a.prop, int)
+ assert a.prop == 1
+ if sys.version_info >= (3, 11):
+ assert_type(a.prop2, str)
+ assert a.prop2 == "foo"
+
+
+def test_under_cached_property_assignment(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ self._cache: dict[str, Any] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> None:
+ """Mock property."""
+
+ a = A()
+
+ with pytest.raises(AttributeError):
+ a.prop = 123 # type: ignore[assignment]
+
+
+def test_under_cached_property_without_cache(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+ self._cache: dict[str, int] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> None:
+ """Mock property."""
+
+ a = A()
+
+ with pytest.raises(AttributeError):
+ a.prop = 123 # type: ignore[assignment]
+
+
+def test_under_cached_property_check_without_cache(
+ propcache_module: APIProtocol,
+) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+ # Note that self._cache is intentionally missing
+ # here to verify AttributeError
+
+ @propcache_module.under_cached_property
+ def prop(self) -> None:
+ """Mock property."""
+
+ a = A()
+ with pytest.raises(AttributeError):
+ _ = a.prop # type: ignore[call-overload]
+
+
+def test_under_cached_property_caching(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ self._cache: dict[str, int] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> int:
+ """Docstring."""
+ return 1
+
+ a = A()
+ assert a.prop == 1
+
+
+def test_under_cached_property_class_docstring(propcache_module: APIProtocol) -> None:
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+
+ @propcache_module.under_cached_property
+ def prop(self) -> None:
+ """Docstring."""
+
+ if TYPE_CHECKING:
+ # At type checking, the fixture doesn't represent the real module, so
+ # we use the global-level imported module to verify the isinstance() check here
+ # matches the behaviour users would see in real code.
+ assert isinstance(A.prop, under_cached_property)
+ else:
+ assert isinstance(A.prop, propcache_module.under_cached_property)
+ assert "Docstring." == A.prop.__doc__
+
+
+def test_ensured_wrapped_function_is_accessible(propcache_module: APIProtocol) -> None:
+ """Test that the wrapped function can be accessed from python."""
+
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+ self._cache: dict[str, int] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> int:
+ """Docstring."""
+ return 1
+
+ a = A()
+ assert A.prop.wrapped(a) == 1
+
+
[email protected](IS_PYPY, reason="PyPy has no C extension")
+def test_under_cached_property_no_refcount_leak(propcache_module: APIProtocol) -> None:
+ """Test that under_cached_property does not leak references."""
+
+ class UnderCachedPropertySentinel:
+ """A unique object we can track."""
+
+ def count_sentinels() -> int:
+ """Count the number of UnderCachedPropertySentinel instances in gc."""
+ gc.collect()
+ return sum(
+ 1
+ for obj in gc.get_objects()
+ if isinstance(obj, UnderCachedPropertySentinel)
+ )
+
+ class A:
+ def __init__(self) -> None:
+ """Init."""
+ self._cache: dict[str, Any] = {}
+
+ @propcache_module.under_cached_property
+ def prop(self) -> UnderCachedPropertySentinel:
+ """Return a sentinel object."""
+ return UnderCachedPropertySentinel()
+
+ initial_sentinel_count = count_sentinels()
+
+ a = A()
+
+ # First access - creates and caches the object
+ result = a.prop
+ # sys.getrefcount returns 1 higher than actual (the temp ref from the call)
+ # After first access: result owns 1, _cache owns 1, getrefcount call owns 1 = 3
+ initial_refcount = sys.getrefcount(result)
+
+ # Should have exactly 1 Sentinel instance now
+ assert count_sentinels() == initial_sentinel_count + 1
+
+ # Second access - should return the cached object without creating new refs
+ result2 = a.prop
+ assert result is result2
+ # After second access: result owns 1, result2 owns 1, _cache owns 1, getrefcount call owns 1 = 4
+ # Only result2 should add 1
+ second_refcount = sys.getrefcount(result)
+ assert second_refcount == initial_refcount + 1
+
+ # Still should have exactly 1 Sentinel instance
+ assert count_sentinels() == initial_sentinel_count + 1
+
+ # Third access
+ result3 = a.prop
+ assert result is result3
+ # result2 and result3 each add 1
+ third_refcount = sys.getrefcount(result)
+ assert third_refcount == initial_refcount + 2
+
+ # Clean up local refs - should be back to just result and _cache
+ del result2
+ del result3
+ after_cleanup_refcount = sys.getrefcount(result)
+ assert after_cleanup_refcount == initial_refcount
+
+ # Clear the cache and verify no leak when re-fetching
+ # After clearing: only result owns it
+ del a._cache["prop"]
+ cleared_refcount = sys.getrefcount(result)
+ assert cleared_refcount == initial_refcount - 1 # No longer in _cache
+
+ # Re-fetch - this should create a new object, not affect old one
+ result4 = a.prop
+ assert result4 is not result # Should be a new object
+ refetch_refcount = sys.getrefcount(result)
+ assert refetch_refcount == cleared_refcount # Original object refcount unchanged
+
+ # Now we should have 2 Sentinel instances:
+ # - original in `result`
+ # - new one in `result4`
+ assert count_sentinels() == initial_sentinel_count + 2
diff --git a/contrib/python/propcache/tests/ya.make b/contrib/python/propcache/tests/ya.make
new file mode 100644
index 00000000000..53173b0a58f
--- /dev/null
+++ b/contrib/python/propcache/tests/ya.make
@@ -0,0 +1,11 @@
+PY3TEST()
+
+PEERDIR(
+ contrib/python/propcache
+)
+
+ALL_PYTEST_SRCS()
+
+NO_LINT()
+
+END()
diff --git a/contrib/python/propcache/ya.make b/contrib/python/propcache/ya.make
new file mode 100644
index 00000000000..dea81d7aa7f
--- /dev/null
+++ b/contrib/python/propcache/ya.make
@@ -0,0 +1,34 @@
+# Generated by devtools/yamaker (pypi).
+
+PY3_LIBRARY()
+
+VERSION(0.5.2)
+
+LICENSE(Apache-2.0)
+
+NO_COMPILER_WARNINGS()
+
+NO_LINT()
+
+PY_SRCS(
+ TOP_LEVEL
+ propcache/__init__.py
+ propcache/_helpers.py
+ propcache/_helpers_py.py
+ propcache/api.py
+ CYTHON_C
+ propcache/_helpers_c.pyx
+)
+
+RESOURCE_FILES(
+ PREFIX contrib/python/propcache/
+ .dist-info/METADATA
+ .dist-info/top_level.txt
+ propcache/py.typed
+)
+
+END()
+
+RECURSE_FOR_TESTS(
+ tests
+)
diff --git a/contrib/python/yarl/.dist-info/METADATA b/contrib/python/yarl/.dist-info/METADATA
index 97585939dab..2995555026d 100644
--- a/contrib/python/yarl/.dist-info/METADATA
+++ b/contrib/python/yarl/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: yarl
-Version: 1.13.1
+Version: 1.14.0
Summary: Yet another URL library
Home-page: https://github.com/aio-libs/yarl
Author: Andrew Svetlov
@@ -38,6 +38,7 @@ License-File: LICENSE
License-File: NOTICE
Requires-Dist: idna >=2.0
Requires-Dist: multidict >=4.0
+Requires-Dist: propcache >=0.2.0
yarl
====
@@ -150,9 +151,8 @@ Installation
The library is Python 3 only!
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
-``yarl`` on another operating system (like *Alpine Linux*, which is not
-manylinux-compliant because of the missing glibc and therefore, cannot be
-used with our wheels) the the tarball will be used to compile the library from
+``yarl`` on another operating system where wheels are not provided,
+the the tarball will be used to compile the library from
the source code. It requires a C compiler and and Python headers installed.
To skip the compilation you must explicitly opt-in by using a PEP 517
@@ -170,7 +170,7 @@ by this variable.
Dependencies
------------
-YARL requires multidict_ library.
+YARL requires multidict_ and propcache_ libraries.
API documentation
@@ -246,6 +246,8 @@ It's *Apache 2* licensed and freely available.
.. _multidict: https://github.com/aio-libs/multidict
+.. _propcache: https://github.com/aio-libs/propcache
+
=========
Changelog
=========
@@ -262,6 +264,64 @@ Changelog
.. towncrier release notes start
+1.14.0
+======
+
+*(2024-10-08)*
+
+
+Packaging updates and notes for downstreams
+-------------------------------------------
+
+- Switched to using the ``propcache`` package for property caching
+ -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ The ``propcache`` package is derived from the property caching
+ code in ``yarl`` and has been broken out to avoid maintaining it for multiple
+ projects.
+
+ *Related issues and pull requests on GitHub:*
+ `#1169 <https://github.com/aio-libs/yarl/issues/1169>`__.
+
+
+Contributor-facing changes
+--------------------------
+
+- Started testing with Hypothesis -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__ and `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ Special thanks to `@Zac-HD <https://github.com/sponsors/Zac-HD>`__ for helping us get started with this framework.
+
+ *Related issues and pull requests on GitHub:*
+ `#860 <https://github.com/aio-libs/yarl/issues/860>`__.
+
+
+Miscellaneous internal changes
+------------------------------
+
+- Improved performance of ``yarl.URL.is_default_port()`` when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#1168 <https://github.com/aio-libs/yarl/issues/1168>`__.
+
+- Improved performance of converting ``~yarl.URL`` to a string when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#1170 <https://github.com/aio-libs/yarl/issues/1170>`__.
+
+- Improved performance of the ``yarl.URL.origin()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#1175 <https://github.com/aio-libs/yarl/issues/1175>`__.
+
+- Improved performance of encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
+
+ *Related issues and pull requests on GitHub:*
+ `#1176 <https://github.com/aio-libs/yarl/issues/1176>`__.
+
+
+----
+
+
1.13.1
======
diff --git a/contrib/python/yarl/README.rst b/contrib/python/yarl/README.rst
index fe9c856551d..c7a286e6212 100644
--- a/contrib/python/yarl/README.rst
+++ b/contrib/python/yarl/README.rst
@@ -109,9 +109,8 @@ Installation
The library is Python 3 only!
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
-``yarl`` on another operating system (like *Alpine Linux*, which is not
-manylinux-compliant because of the missing glibc and therefore, cannot be
-used with our wheels) the the tarball will be used to compile the library from
+``yarl`` on another operating system where wheels are not provided,
+the the tarball will be used to compile the library from
the source code. It requires a C compiler and and Python headers installed.
To skip the compilation you must explicitly opt-in by using a PEP 517
@@ -129,7 +128,7 @@ by this variable.
Dependencies
------------
-YARL requires multidict_ library.
+YARL requires multidict_ and propcache_ libraries.
API documentation
@@ -204,3 +203,5 @@ It's *Apache 2* licensed and freely available.
.. _GitHub: https://github.com/aio-libs/yarl
.. _multidict: https://github.com/aio-libs/multidict
+
+.. _propcache: https://github.com/aio-libs/propcache
diff --git a/contrib/python/yarl/tests/test_helpers.py b/contrib/python/yarl/tests/test_helpers.py
deleted file mode 100644
index cdfff129e6d..00000000000
--- a/contrib/python/yarl/tests/test_helpers.py
+++ /dev/null
@@ -1,91 +0,0 @@
-import platform
-
-import pytest
-
-from yarl import _helpers, _helpers_py
-
-IS_PYPY = platform.python_implementation() == "PyPy"
-
-
-class CachedPropertyMixin:
- cached_property = NotImplemented
-
- def test_cached_property(self) -> None:
- class A:
- def __init__(self):
- self._cache = {}
-
- @self.cached_property # type: ignore[misc]
- def prop(self):
- return 1
-
- a = A()
- assert a.prop == 1
-
- def test_cached_property_class(self) -> None:
- class A:
- def __init__(self):
- """Init."""
- # self._cache not set because its never accessed in this test
-
- @self.cached_property # type: ignore[misc]
- def prop(self):
- """Docstring."""
-
- assert isinstance(A.prop, self.cached_property)
- assert A.prop.__doc__ == "Docstring."
-
- def test_cached_property_assignment(self) -> None:
- class A:
- def __init__(self):
- self._cache = {}
-
- @self.cached_property # type: ignore[misc]
- def prop(self):
- """Mock property."""
-
- a = A()
-
- with pytest.raises(AttributeError):
- a.prop = 123
-
- def test_cached_property_without_cache(self) -> None:
- class A:
- def __init__(self):
- pass
-
- @self.cached_property # type: ignore[misc]
- def prop(self):
- """Mock property."""
-
- a = A()
-
- with pytest.raises(AttributeError):
- a.prop = 123
-
- def test_cached_property_check_without_cache(self) -> None:
- class A:
- def __init__(self):
- pass
-
- @self.cached_property # type: ignore[misc]
- def prop(self):
- """Mock property."""
-
- a = A()
- with pytest.raises(AttributeError):
- assert a.prop == 1
-
-
-class TestPyCachedProperty(CachedPropertyMixin):
- cached_property = _helpers_py.cached_property # type: ignore[assignment]
-
-
-if (
- not _helpers.NO_EXTENSIONS
- and not IS_PYPY
- and hasattr(_helpers, "cached_property_c")
-):
-
- class TestCCachedProperty(CachedPropertyMixin):
- cached_property = _helpers.cached_property_c # type: ignore[assignment, attr-defined, unused-ignore] # noqa: E501
diff --git a/contrib/python/yarl/tests/test_quoting.py b/contrib/python/yarl/tests/test_quoting.py
index d9b6ae8e4bf..1f9cba6aa40 100644
--- a/contrib/python/yarl/tests/test_quoting.py
+++ b/contrib/python/yarl/tests/test_quoting.py
@@ -1,4 +1,8 @@
+from typing import Type
+
import pytest
+from hypothesis import assume, example, given, note
+from hypothesis import strategies as st
from yarl._quoting import NO_EXTENSIONS
from yarl._quoting_py import _Quoter as _PyQuoter
@@ -16,6 +20,10 @@ if not NO_EXTENSIONS:
def unquoter(request):
return request.param
+ quoters = [_PyQuoter, _CQuoter]
+ quoter_ids = ["PyQuoter", "CQuoter"]
+ unquoters = [_PyUnquoter, _CUnquoter]
+ unquoter_ids = ["PyUnquoter", "CUnquoter"]
else:
@pytest.fixture(params=[_PyQuoter], ids=["py_quoter"])
@@ -26,6 +34,11 @@ else:
def unquoter(request):
return request.param
+ quoters = [_PyQuoter]
+ quoter_ids = ["PyQuoter"]
+ unquoters = [_PyUnquoter]
+ unquoter_ids = ["PyUnquoter"]
+
def hexescape(char):
"""Escape char as RFC 2396 specifies"""
@@ -455,3 +468,79 @@ def test_quoter_path_with_plus(quoter):
def test_unquoter_path_with_plus(unquoter):
s = "/test/x+y%2Bz/:+%2B/"
assert "/test/x+y+z/:++/" == unquoter(unsafe="+")(s)
+
+
+@given(safe=st.text(), protected=st.text(), qs=st.booleans(), requote=st.booleans())
+def test_fuzz__PyQuoter(safe, protected, qs, requote):
+ """Verify that _PyQuoter can be instantiated with any valid arguments."""
+ assert _PyQuoter(safe=safe, protected=protected, qs=qs, requote=requote)
+
+
+@given(ignore=st.text(), unsafe=st.text(), qs=st.booleans())
+def test_fuzz__PyUnquoter(ignore, unsafe, qs):
+ """Verify that _PyUnquoter can be instantiated with any valid arguments."""
+ assert _PyUnquoter(ignore=ignore, unsafe=unsafe, qs=qs)
+
+
+@example(text_input="0")
+@given(
+ text_input=st.text(
+ alphabet=st.characters(max_codepoint=127, blacklist_characters="%")
+ ),
+)
[email protected]("quoter", quoters, ids=quoter_ids)
[email protected]("unquoter", unquoters, ids=unquoter_ids)
+def test_quote_unquote_parameter(
+ quoter: Type[_PyQuoter],
+ unquoter: Type[_PyUnquoter],
+ text_input: str,
+) -> None:
+ quote = quoter()
+ unquote = unquoter()
+ text_quoted = quote(text_input)
+ note(f"text_quoted={text_quoted!r}")
+ text_output = unquote(text_quoted)
+ assert text_input == text_output
+
+
+@example(text_input="0")
+@given(
+ text_input=st.text(
+ alphabet=st.characters(max_codepoint=127, blacklist_characters="%")
+ ),
+)
[email protected]("quoter", quoters, ids=quoter_ids)
[email protected]("unquoter", unquoters, ids=unquoter_ids)
+def test_quote_unquote_parameter_requote(
+ quoter: Type[_PyQuoter],
+ unquoter: Type[_PyUnquoter],
+ text_input: str,
+) -> None:
+ quote = quoter(requote=True)
+ unquote = unquoter()
+ text_quoted = quote(text_input)
+ note(f"text_quoted={text_quoted!r}")
+ text_output = unquote(text_quoted)
+ assert text_input == text_output
+
+
+@example(text_input="0")
+@given(
+ text_input=st.text(
+ alphabet=st.characters(max_codepoint=127, blacklist_characters="%")
+ ),
+)
[email protected]("quoter", quoters, ids=quoter_ids)
[email protected]("unquoter", unquoters, ids=unquoter_ids)
+def test_quote_unquote_parameter_path_safe(
+ quoter: Type[_PyQuoter],
+ unquoter: Type[_PyUnquoter],
+ text_input: str,
+) -> None:
+ quote = quoter()
+ unquote = unquoter(ignore="/%", unsafe="+")
+ assume("+" not in text_input and "/" not in text_input)
+ text_quoted = quote(text_input)
+ note(f"text_quoted={text_quoted!r}")
+ text_output = unquote(text_quoted)
+ assert text_input == text_output
diff --git a/contrib/python/yarl/tests/test_url.py b/contrib/python/yarl/tests/test_url.py
index 44018c73bce..193f1b584c8 100644
--- a/contrib/python/yarl/tests/test_url.py
+++ b/contrib/python/yarl/tests/test_url.py
@@ -63,6 +63,11 @@ def test_origin():
assert URL("http://example.com:8888") == url.origin()
+def test_origin_with_no_auth():
+ url = URL("http://example.com:8888/path/to?a=1&b=2")
+ assert URL("http://example.com:8888") == url.origin()
+
+
def test_origin_nonascii():
url = URL("http://user:password@оун-упа.укр:8888/path/to?a=1&b=2")
assert str(url.origin()) == "http://xn----8sb1bdhvc.xn--j1amh:8888"
@@ -304,35 +309,43 @@ def test_port_for_implicit_port():
def test_port_for_relative_url():
url = URL("/path/to")
assert url.port is None
+ assert url._port_not_default is None
+ assert url.explicit_port is None
def test_port_for_unknown_scheme():
url = URL("unknown://example.com")
assert url.port is None
+ assert url._port_not_default is None
+ assert url.explicit_port is None
def test_explicit_port_for_explicit_port():
url = URL("http://example.com:8888")
assert 8888 == url.explicit_port
assert url.explicit_port == url._val.port
+ assert url._port_not_default == 8888
def test_explicit_port_for_implicit_port():
url = URL("http://example.com")
assert url.explicit_port is None
assert url.explicit_port == url._val.port
+ assert url._port_not_default is None
def test_explicit_port_for_relative_url():
url = URL("/path/to")
assert url.explicit_port is None
assert url.explicit_port == url._val.port
+ assert url._port_not_default is None
def test_explicit_port_for_unknown_scheme():
url = URL("unknown://example.com")
assert url.explicit_port is None
assert url.explicit_port == url._val.port
+ assert url._port_not_default is None
def test_raw_path_string_empty():
diff --git a/contrib/python/yarl/tests/ya.make b/contrib/python/yarl/tests/ya.make
index b93020851f0..73d45a2785a 100644
--- a/contrib/python/yarl/tests/ya.make
+++ b/contrib/python/yarl/tests/ya.make
@@ -1,6 +1,7 @@
PY3TEST()
PEERDIR(
+ contrib/python/hypothesis
contrib/python/yarl
)
diff --git a/contrib/python/yarl/ya.make b/contrib/python/yarl/ya.make
index b272e44b23e..f8435827974 100644
--- a/contrib/python/yarl/ya.make
+++ b/contrib/python/yarl/ya.make
@@ -2,13 +2,14 @@
PY3_LIBRARY()
-VERSION(1.13.1)
+VERSION(1.14.0)
LICENSE(Apache-2.0)
PEERDIR(
contrib/python/idna
contrib/python/multidict
+ contrib/python/propcache
)
NO_COMPILER_WARNINGS()
@@ -18,15 +19,11 @@ NO_LINT()
PY_SRCS(
TOP_LEVEL
yarl/__init__.py
- yarl/_helpers.py
- yarl/_helpers_c.pyi
- yarl/_helpers_py.py
yarl/_quoting.py
yarl/_quoting_c.pyi
yarl/_quoting_py.py
yarl/_url.py
CYTHON_C
- yarl/_helpers_c.pyx
yarl/_quoting_c.pyx
)
diff --git a/contrib/python/yarl/yarl/__init__.py b/contrib/python/yarl/yarl/__init__.py
index 1bc12c9e4f4..d9703013c6e 100644
--- a/contrib/python/yarl/yarl/__init__.py
+++ b/contrib/python/yarl/yarl/__init__.py
@@ -8,7 +8,7 @@ from ._url import (
cache_info,
)
-__version__ = "1.13.1"
+__version__ = "1.14.0"
__all__ = (
"URL",
diff --git a/contrib/python/yarl/yarl/_helpers_c.pyi b/contrib/python/yarl/yarl/_helpers_c.pyi
deleted file mode 100644
index 69034921219..00000000000
--- a/contrib/python/yarl/yarl/_helpers_c.pyi
+++ /dev/null
@@ -1,6 +0,0 @@
-from typing import Any
-
-class cached_property:
- def __init__(self, wrapped: Any) -> None: ...
- def __get__(self, inst: Any, owner: Any) -> Any: ...
- def __set__(self, inst: Any, value: Any) -> None: ...
diff --git a/contrib/python/yarl/yarl/_helpers_c.pyx b/contrib/python/yarl/yarl/_helpers_c.pyx
deleted file mode 100644
index e6eec375435..00000000000
--- a/contrib/python/yarl/yarl/_helpers_c.pyx
+++ /dev/null
@@ -1,36 +0,0 @@
-# cython: language_level=3
-
-cdef _sentinel = object()
-
-cdef class cached_property:
- """Use as a class method decorator. It operates almost exactly like
- the Python `@property` decorator, but it puts the result of the
- method it decorates into the instance dict after the first call,
- effectively replacing the function it decorates with an instance
- variable. It is, in Python parlance, a data descriptor.
-
- """
-
- cdef object wrapped
- cdef object name
-
- def __init__(self, wrapped):
- self.wrapped = wrapped
- self.name = wrapped.__name__
-
- @property
- def __doc__(self):
- return self.wrapped.__doc__
-
- def __get__(self, inst, owner):
- if inst is None:
- return self
- cdef dict cache = inst._cache
- val = cache.get(self.name, _sentinel)
- if val is _sentinel:
- val = self.wrapped(inst)
- cache[self.name] = val
- return val
-
- def __set__(self, inst, value):
- raise AttributeError("cached property is read-only")
diff --git a/contrib/python/yarl/yarl/_helpers_py.py b/contrib/python/yarl/yarl/_helpers_py.py
deleted file mode 100644
index 5a18afb5c39..00000000000
--- a/contrib/python/yarl/yarl/_helpers_py.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""Various helper functions."""
-
-from typing import Any, Callable, Dict, Generic, Optional, Protocol, Type, TypeVar
-
-_T = TypeVar("_T")
-
-
-class _TSelf(Protocol, Generic[_T]):
- _cache: Dict[str, _T]
-
-
-class cached_property(Generic[_T]):
- """Use as a class method decorator.
-
- It operates almost exactly like
- the Python `@property` decorator, but it puts the result of the
- method it decorates into the instance dict after the first call,
- effectively replacing the function it decorates with an instance
- variable. It is, in Python parlance, a data descriptor.
- """
-
- def __init__(self, wrapped: Callable[..., _T]) -> None:
- self.wrapped = wrapped
- self.__doc__ = wrapped.__doc__
- self.name = wrapped.__name__
-
- def __get__(self, inst: _TSelf[_T], owner: Optional[Type[Any]] = None) -> _T:
- try:
- try:
- return inst._cache[self.name]
- except KeyError:
- val = self.wrapped(inst)
- inst._cache[self.name] = val
- return val
- except AttributeError:
- if inst is None:
- return self
- raise
-
- def __set__(self, inst: _TSelf[_T], value: _T) -> None:
- raise AttributeError("cached property is read-only")
diff --git a/contrib/python/yarl/yarl/_url.py b/contrib/python/yarl/yarl/_url.py
index e695800b967..eff4dc3fbd6 100644
--- a/contrib/python/yarl/yarl/_url.py
+++ b/contrib/python/yarl/yarl/_url.py
@@ -32,8 +32,8 @@ from urllib.parse import (
import idna
from multidict import MultiDict, MultiDictProxy, istr
+from propcache.api import under_cached_property as cached_property
-from ._helpers import cached_property
from ._quoting import _Quoter, _Unquoter
DEFAULT_PORTS = {"http": 80, "https": 443, "ws": 80, "wss": 443, "ftp": 21}
@@ -95,6 +95,7 @@ class _SplitResultDict(TypedDict, total=False):
class _InternalURLCache(TypedDict, total=False):
+ _origin: "URL"
absolute: bool
scheme: str
raw_authority: str
@@ -529,12 +530,12 @@ class URL:
Return False for relative URLs.
"""
- default = self._default_port
- explicit = self.explicit_port
- if explicit is None:
- # A relative URL does not have an implicit port / default port
- return default is not None
- return explicit == default
+ if (explicit := self.explicit_port) is None:
+ # If the explicit port is None, then the URL must be
+ # using the default port unless its a relative URL
+ # which does not have an implicit port / default port
+ return self.absolute
+ return explicit == self._default_port
def origin(self) -> "URL":
"""Return an URL with scheme, host and port parts only.
@@ -543,13 +544,24 @@ class URL:
"""
# TODO: add a keyword-only option for keeping user/pass maybe?
- if not self.absolute:
+ return self._origin
+
+ @cached_property
+ def _origin(self) -> "URL":
+ """Return an URL with scheme, host and port parts only.
+
+ user, password, path, query and fragment are removed.
+ """
+ v = self._val
+ if not v.netloc:
raise ValueError("URL should be absolute")
- if not self._val.scheme:
+ if not v.scheme:
raise ValueError("URL should have scheme")
- v = self._val
- netloc = self._make_netloc(None, None, v.hostname, v.port)
- val = v._replace(netloc=netloc, path="", query="", fragment="")
+ if "@" not in v.netloc:
+ val = v._replace(path="", query="", fragment="")
+ else:
+ netloc = self._make_netloc(None, None, v.hostname, v.port)
+ val = v._replace(netloc=netloc, path="", query="", fragment="")
return URL(val, encoded=True)
def relative(self) -> "URL":
@@ -598,15 +610,15 @@ class URL:
@cached_property
def _default_port(self) -> Union[int, None]:
"""Default port for the scheme or None if not known."""
- return DEFAULT_PORTS.get(self.scheme)
+ return DEFAULT_PORTS.get(self._val.scheme)
@cached_property
def _port_not_default(self) -> Union[int, None]:
"""The port part of URL normalized to None if its the default port."""
- port = self.port
- if self._default_port == port:
+ explicit_port = self.explicit_port
+ if explicit_port is None or explicit_port == self._default_port:
return None
- return port
+ return explicit_port
@cached_property
def authority(self) -> str:
@@ -769,7 +781,7 @@ class URL:
@cached_property
def _parsed_query(self) -> List[Tuple[str, str]]:
"""Parse query part of URL."""
- return parse_qsl(self.raw_query_string, keep_blank_values=True)
+ return parse_qsl(self._val.query, keep_blank_values=True)
@cached_property
def query(self) -> "MultiDictProxy[str]":
@@ -797,7 +809,7 @@ class URL:
Empty string if query is missing.
"""
- return self._QS_UNQUOTER(self.raw_query_string)
+ return self._QS_UNQUOTER(self._val.query)
@cached_property
def path_qs(self) -> str:
@@ -809,9 +821,9 @@ class URL:
@cached_property
def raw_path_qs(self) -> str:
"""Encoded path of URL with query."""
- if not self.raw_query_string:
+ if not self._val.query:
return self.raw_path
- return f"{self.raw_path}?{self.raw_query_string}"
+ return f"{self.raw_path}?{self._val.query}"
@cached_property
def raw_fragment(self) -> str:
@@ -829,7 +841,7 @@ class URL:
Empty string if fragment is missing.
"""
- return self._UNQUOTER(self.raw_fragment)
+ return self._UNQUOTER(self._val.fragment)
@cached_property
def raw_parts(self) -> Tuple[str, ...]:
@@ -868,7 +880,7 @@ class URL:
"""
path = self.raw_path
if not path or path == "/":
- if self.raw_fragment or self.raw_query_string:
+ if self._val.fragment or self._val.query:
return URL(self._val._replace(query="", fragment=""), encoded=True)
return self
parts = path.split("/")
@@ -985,13 +997,18 @@ class URL:
def _encode_host(
cls, host: str, human: bool = False, validate_host: bool = True
) -> str:
- if "%" in host:
- raw_ip, sep, zone = host.partition("%")
- else:
- raw_ip = host
- sep = zone = ""
-
- if raw_ip and raw_ip[-1].isdigit() or ":" in raw_ip:
+ if host and host[-1].isdigit() or ":" in host:
+ # If the host ends with a digit or contains a colon, its likely
+ # an IP address. So we check with _ip_compressed_version
+ # and fall-through if its not an IP address. This is a performance
+ # optimization to avoid parsing IP addresses as much as possible
+ # because it is orders of magnitude slower than almost any other
+ # operation this library does.
+ if "%" in host:
+ raw_ip, sep, zone = host.partition("%")
+ else:
+ raw_ip = host
+ sep = zone = ""
# Might be an IP address, check it
#
# IP Addresses can look like:
@@ -1004,10 +1021,6 @@ class URL:
# Rare IP Address formats are not supported per:
# https://datatracker.ietf.org/doc/html/rfc3986#section-7.4
#
- # We try to avoid parsing IP addresses as much as possible
- # since its orders of magnitude slower than almost any other operation
- # this library does.
- #
# IP parsing is slow, so its wrapped in an LRU
try:
ip_compressed_version = _ip_compressed_version(raw_ip)
@@ -1017,11 +1030,9 @@ class URL:
# These checks should not happen in the
# LRU to keep the cache size small
host, version = ip_compressed_version
- if sep:
- host += "%" + zone
if version == 6:
- return f"[{host}]"
- return host
+ return f"[{host}%{zone}]" if sep else f"[{host}]"
+ return f"{host}%{zone}" if sep else host
host = host.lower()
if human:
@@ -1052,26 +1063,24 @@ class URL:
) -> str:
if host is None:
return ""
- quoter = cls._REQUOTER if requote else cls._QUOTER
- if encode_host:
- ret = cls._encode_host(host)
- else:
- ret = host
+ ret = cls._encode_host(host) if encode_host else host
if port is not None:
ret = f"{ret}:{port}"
+ if user is None and password is None:
+ return ret
+ quoter = cls._REQUOTER if requote else cls._QUOTER
if password is not None:
if not user:
user = ""
- else:
- if encode:
- user = quoter(user)
+ elif encode:
+ user = quoter(user)
if encode:
password = quoter(password)
- user = user + ":" + password
+ user = f"{user}:{password}"
elif user and encode:
user = quoter(user)
if user:
- ret = user + "@" + ret
+ ret = f"{user}@{ret}"
return ret
@classmethod
@@ -1352,7 +1361,7 @@ class URL:
new_query_string = self._get_str_query(*args, **kwargs)
if not new_query_string:
return self
- if current_query := self.raw_query_string:
+ if current_query := self._val.query:
# both strings are already encoded so we can use a simple
# string join
if current_query[-1] == "&":
@@ -1416,7 +1425,7 @@ class URL:
raise TypeError("Invalid fragment type")
else:
raw_fragment = self._FRAGMENT_QUOTER(fragment)
- if self.raw_fragment == raw_fragment:
+ if self._val.fragment == raw_fragment:
return self
return URL(self._val._replace(fragment=raw_fragment), encoded=True)
@@ -1550,7 +1559,7 @@ class URL:
netloc = self._make_netloc(
user, password, host, self.explicit_port, encode_host=False
)
- val = SplitResult(self.scheme, netloc, path, query_string, fragment)
+ val = SplitResult(self._val.scheme, netloc, path, query_string, fragment)
return urlunsplit(val)