Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetprober.py +147 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +19 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/enums.py +85 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/escprober.py +102 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/eucjpprober.py +102 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/euctwfreq.py +388 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312freq.py +284 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312prober.py +47 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/hebrewprober.py +316 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/jpcntx.py +238 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/langgreekmodel.py +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/langrussianmodel.py +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/langthaimodel.py +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/langturkishmodel.py +4380 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/latin1prober.py +147 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/macromanprober.py +162 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcharsetprober.py +95 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcssm.py +661 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/py.typed +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/resultdict.py +16 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/sbcharsetprober.py +162 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/sjisprober.py +105 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/chardet/version.py +9 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/__init__.py +11 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/_parser.py +691 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/_re.py +107 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/_types.py +10 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/tomli/py.typed +1 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-311.pyc +0 -0
- .venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetgroupprober.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Communicator client code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import List, Optional, Union
|
| 29 |
+
|
| 30 |
+
from .charsetprober import CharSetProber
|
| 31 |
+
from .enums import LanguageFilter, ProbingState
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class CharSetGroupProber(CharSetProber):
|
| 35 |
+
def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None:
|
| 36 |
+
super().__init__(lang_filter=lang_filter)
|
| 37 |
+
self._active_num = 0
|
| 38 |
+
self.probers: List[CharSetProber] = []
|
| 39 |
+
self._best_guess_prober: Optional[CharSetProber] = None
|
| 40 |
+
|
| 41 |
+
def reset(self) -> None:
|
| 42 |
+
super().reset()
|
| 43 |
+
self._active_num = 0
|
| 44 |
+
for prober in self.probers:
|
| 45 |
+
prober.reset()
|
| 46 |
+
prober.active = True
|
| 47 |
+
self._active_num += 1
|
| 48 |
+
self._best_guess_prober = None
|
| 49 |
+
|
| 50 |
+
@property
|
| 51 |
+
def charset_name(self) -> Optional[str]:
|
| 52 |
+
if not self._best_guess_prober:
|
| 53 |
+
self.get_confidence()
|
| 54 |
+
if not self._best_guess_prober:
|
| 55 |
+
return None
|
| 56 |
+
return self._best_guess_prober.charset_name
|
| 57 |
+
|
| 58 |
+
@property
|
| 59 |
+
def language(self) -> Optional[str]:
|
| 60 |
+
if not self._best_guess_prober:
|
| 61 |
+
self.get_confidence()
|
| 62 |
+
if not self._best_guess_prober:
|
| 63 |
+
return None
|
| 64 |
+
return self._best_guess_prober.language
|
| 65 |
+
|
| 66 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 67 |
+
for prober in self.probers:
|
| 68 |
+
if not prober.active:
|
| 69 |
+
continue
|
| 70 |
+
state = prober.feed(byte_str)
|
| 71 |
+
if not state:
|
| 72 |
+
continue
|
| 73 |
+
if state == ProbingState.FOUND_IT:
|
| 74 |
+
self._best_guess_prober = prober
|
| 75 |
+
self._state = ProbingState.FOUND_IT
|
| 76 |
+
return self.state
|
| 77 |
+
if state == ProbingState.NOT_ME:
|
| 78 |
+
prober.active = False
|
| 79 |
+
self._active_num -= 1
|
| 80 |
+
if self._active_num <= 0:
|
| 81 |
+
self._state = ProbingState.NOT_ME
|
| 82 |
+
return self.state
|
| 83 |
+
return self.state
|
| 84 |
+
|
| 85 |
+
def get_confidence(self) -> float:
|
| 86 |
+
state = self.state
|
| 87 |
+
if state == ProbingState.FOUND_IT:
|
| 88 |
+
return 0.99
|
| 89 |
+
if state == ProbingState.NOT_ME:
|
| 90 |
+
return 0.01
|
| 91 |
+
best_conf = 0.0
|
| 92 |
+
self._best_guess_prober = None
|
| 93 |
+
for prober in self.probers:
|
| 94 |
+
if not prober.active:
|
| 95 |
+
self.logger.debug("%s not active", prober.charset_name)
|
| 96 |
+
continue
|
| 97 |
+
conf = prober.get_confidence()
|
| 98 |
+
self.logger.debug(
|
| 99 |
+
"%s %s confidence = %s", prober.charset_name, prober.language, conf
|
| 100 |
+
)
|
| 101 |
+
if best_conf < conf:
|
| 102 |
+
best_conf = conf
|
| 103 |
+
self._best_guess_prober = prober
|
| 104 |
+
if not self._best_guess_prober:
|
| 105 |
+
return 0.0
|
| 106 |
+
return best_conf
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/charsetprober.py
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
# Shy Shalom - original C code
|
| 12 |
+
#
|
| 13 |
+
# This library is free software; you can redistribute it and/or
|
| 14 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 15 |
+
# License as published by the Free Software Foundation; either
|
| 16 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 17 |
+
#
|
| 18 |
+
# This library is distributed in the hope that it will be useful,
|
| 19 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 20 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 21 |
+
# Lesser General Public License for more details.
|
| 22 |
+
#
|
| 23 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 24 |
+
# License along with this library; if not, write to the Free Software
|
| 25 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 26 |
+
# 02110-1301 USA
|
| 27 |
+
######################### END LICENSE BLOCK #########################
|
| 28 |
+
|
| 29 |
+
import logging
|
| 30 |
+
import re
|
| 31 |
+
from typing import Optional, Union
|
| 32 |
+
|
| 33 |
+
from .enums import LanguageFilter, ProbingState
|
| 34 |
+
|
| 35 |
+
INTERNATIONAL_WORDS_PATTERN = re.compile(
|
| 36 |
+
b"[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?"
|
| 37 |
+
)
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class CharSetProber:
|
| 41 |
+
|
| 42 |
+
SHORTCUT_THRESHOLD = 0.95
|
| 43 |
+
|
| 44 |
+
def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None:
|
| 45 |
+
self._state = ProbingState.DETECTING
|
| 46 |
+
self.active = True
|
| 47 |
+
self.lang_filter = lang_filter
|
| 48 |
+
self.logger = logging.getLogger(__name__)
|
| 49 |
+
|
| 50 |
+
def reset(self) -> None:
|
| 51 |
+
self._state = ProbingState.DETECTING
|
| 52 |
+
|
| 53 |
+
@property
|
| 54 |
+
def charset_name(self) -> Optional[str]:
|
| 55 |
+
return None
|
| 56 |
+
|
| 57 |
+
@property
|
| 58 |
+
def language(self) -> Optional[str]:
|
| 59 |
+
raise NotImplementedError
|
| 60 |
+
|
| 61 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 62 |
+
raise NotImplementedError
|
| 63 |
+
|
| 64 |
+
@property
|
| 65 |
+
def state(self) -> ProbingState:
|
| 66 |
+
return self._state
|
| 67 |
+
|
| 68 |
+
def get_confidence(self) -> float:
|
| 69 |
+
return 0.0
|
| 70 |
+
|
| 71 |
+
@staticmethod
|
| 72 |
+
def filter_high_byte_only(buf: Union[bytes, bytearray]) -> bytes:
|
| 73 |
+
buf = re.sub(b"([\x00-\x7F])+", b" ", buf)
|
| 74 |
+
return buf
|
| 75 |
+
|
| 76 |
+
@staticmethod
|
| 77 |
+
def filter_international_words(buf: Union[bytes, bytearray]) -> bytearray:
|
| 78 |
+
"""
|
| 79 |
+
We define three types of bytes:
|
| 80 |
+
alphabet: english alphabets [a-zA-Z]
|
| 81 |
+
international: international characters [\x80-\xFF]
|
| 82 |
+
marker: everything else [^a-zA-Z\x80-\xFF]
|
| 83 |
+
The input buffer can be thought to contain a series of words delimited
|
| 84 |
+
by markers. This function works to filter all words that contain at
|
| 85 |
+
least one international character. All contiguous sequences of markers
|
| 86 |
+
are replaced by a single space ascii character.
|
| 87 |
+
This filter applies to all scripts which do not use English characters.
|
| 88 |
+
"""
|
| 89 |
+
filtered = bytearray()
|
| 90 |
+
|
| 91 |
+
# This regex expression filters out only words that have at-least one
|
| 92 |
+
# international character. The word may include one marker character at
|
| 93 |
+
# the end.
|
| 94 |
+
words = INTERNATIONAL_WORDS_PATTERN.findall(buf)
|
| 95 |
+
|
| 96 |
+
for word in words:
|
| 97 |
+
filtered.extend(word[:-1])
|
| 98 |
+
|
| 99 |
+
# If the last character in the word is a marker, replace it with a
|
| 100 |
+
# space as markers shouldn't affect our analysis (they are used
|
| 101 |
+
# similarly across all languages and may thus have similar
|
| 102 |
+
# frequencies).
|
| 103 |
+
last_char = word[-1:]
|
| 104 |
+
if not last_char.isalpha() and last_char < b"\x80":
|
| 105 |
+
last_char = b" "
|
| 106 |
+
filtered.extend(last_char)
|
| 107 |
+
|
| 108 |
+
return filtered
|
| 109 |
+
|
| 110 |
+
@staticmethod
|
| 111 |
+
def remove_xml_tags(buf: Union[bytes, bytearray]) -> bytes:
|
| 112 |
+
"""
|
| 113 |
+
Returns a copy of ``buf`` that retains only the sequences of English
|
| 114 |
+
alphabet and high byte characters that are not between <> characters.
|
| 115 |
+
This filter can be applied to all scripts which contain both English
|
| 116 |
+
characters and extended ASCII characters, but is currently only used by
|
| 117 |
+
``Latin1Prober``.
|
| 118 |
+
"""
|
| 119 |
+
filtered = bytearray()
|
| 120 |
+
in_tag = False
|
| 121 |
+
prev = 0
|
| 122 |
+
buf = memoryview(buf).cast("c")
|
| 123 |
+
|
| 124 |
+
for curr, buf_char in enumerate(buf):
|
| 125 |
+
# Check if we're coming out of or entering an XML tag
|
| 126 |
+
|
| 127 |
+
# https://github.com/python/typeshed/issues/8182
|
| 128 |
+
if buf_char == b">": # type: ignore[comparison-overlap]
|
| 129 |
+
prev = curr + 1
|
| 130 |
+
in_tag = False
|
| 131 |
+
# https://github.com/python/typeshed/issues/8182
|
| 132 |
+
elif buf_char == b"<": # type: ignore[comparison-overlap]
|
| 133 |
+
if curr > prev and not in_tag:
|
| 134 |
+
# Keep everything after last non-extended-ASCII,
|
| 135 |
+
# non-alphabetic character
|
| 136 |
+
filtered.extend(buf[prev:curr])
|
| 137 |
+
# Output a space to delimit stretch we kept
|
| 138 |
+
filtered.extend(b" ")
|
| 139 |
+
in_tag = True
|
| 140 |
+
|
| 141 |
+
# If we're not in a tag...
|
| 142 |
+
if not in_tag:
|
| 143 |
+
# Keep everything after last non-extended-ASCII, non-alphabetic
|
| 144 |
+
# character
|
| 145 |
+
filtered.extend(buf[prev:])
|
| 146 |
+
|
| 147 |
+
return filtered
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/codingstatemachinedict.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import TYPE_CHECKING, Tuple
|
| 2 |
+
|
| 3 |
+
if TYPE_CHECKING:
|
| 4 |
+
# TypedDict was introduced in Python 3.8.
|
| 5 |
+
#
|
| 6 |
+
# TODO: Remove the else block and TYPE_CHECKING check when dropping support
|
| 7 |
+
# for Python 3.7.
|
| 8 |
+
from typing import TypedDict
|
| 9 |
+
|
| 10 |
+
class CodingStateMachineDict(TypedDict, total=False):
|
| 11 |
+
class_table: Tuple[int, ...]
|
| 12 |
+
class_factor: int
|
| 13 |
+
state_table: Tuple[int, ...]
|
| 14 |
+
char_len_table: Tuple[int, ...]
|
| 15 |
+
name: str
|
| 16 |
+
language: str # Optional key
|
| 17 |
+
|
| 18 |
+
else:
|
| 19 |
+
CodingStateMachineDict = dict
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/cp949prober.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from .chardistribution import EUCKRDistributionAnalysis
|
| 29 |
+
from .codingstatemachine import CodingStateMachine
|
| 30 |
+
from .mbcharsetprober import MultiByteCharSetProber
|
| 31 |
+
from .mbcssm import CP949_SM_MODEL
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class CP949Prober(MultiByteCharSetProber):
|
| 35 |
+
def __init__(self) -> None:
|
| 36 |
+
super().__init__()
|
| 37 |
+
self.coding_sm = CodingStateMachine(CP949_SM_MODEL)
|
| 38 |
+
# NOTE: CP949 is a superset of EUC-KR, so the distribution should be
|
| 39 |
+
# not different.
|
| 40 |
+
self.distribution_analyzer = EUCKRDistributionAnalysis()
|
| 41 |
+
self.reset()
|
| 42 |
+
|
| 43 |
+
@property
|
| 44 |
+
def charset_name(self) -> str:
|
| 45 |
+
return "CP949"
|
| 46 |
+
|
| 47 |
+
@property
|
| 48 |
+
def language(self) -> str:
|
| 49 |
+
return "Korean"
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/enums.py
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
All of the Enums that are used throughout the chardet package.
|
| 3 |
+
|
| 4 |
+
:author: Dan Blanchard (dan.blanchard@gmail.com)
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
from enum import Enum, Flag
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
class InputState:
|
| 11 |
+
"""
|
| 12 |
+
This enum represents the different states a universal detector can be in.
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
PURE_ASCII = 0
|
| 16 |
+
ESC_ASCII = 1
|
| 17 |
+
HIGH_BYTE = 2
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
class LanguageFilter(Flag):
|
| 21 |
+
"""
|
| 22 |
+
This enum represents the different language filters we can apply to a
|
| 23 |
+
``UniversalDetector``.
|
| 24 |
+
"""
|
| 25 |
+
|
| 26 |
+
NONE = 0x00
|
| 27 |
+
CHINESE_SIMPLIFIED = 0x01
|
| 28 |
+
CHINESE_TRADITIONAL = 0x02
|
| 29 |
+
JAPANESE = 0x04
|
| 30 |
+
KOREAN = 0x08
|
| 31 |
+
NON_CJK = 0x10
|
| 32 |
+
ALL = 0x1F
|
| 33 |
+
CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL
|
| 34 |
+
CJK = CHINESE | JAPANESE | KOREAN
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
class ProbingState(Enum):
|
| 38 |
+
"""
|
| 39 |
+
This enum represents the different states a prober can be in.
|
| 40 |
+
"""
|
| 41 |
+
|
| 42 |
+
DETECTING = 0
|
| 43 |
+
FOUND_IT = 1
|
| 44 |
+
NOT_ME = 2
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
class MachineState:
|
| 48 |
+
"""
|
| 49 |
+
This enum represents the different states a state machine can be in.
|
| 50 |
+
"""
|
| 51 |
+
|
| 52 |
+
START = 0
|
| 53 |
+
ERROR = 1
|
| 54 |
+
ITS_ME = 2
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
class SequenceLikelihood:
|
| 58 |
+
"""
|
| 59 |
+
This enum represents the likelihood of a character following the previous one.
|
| 60 |
+
"""
|
| 61 |
+
|
| 62 |
+
NEGATIVE = 0
|
| 63 |
+
UNLIKELY = 1
|
| 64 |
+
LIKELY = 2
|
| 65 |
+
POSITIVE = 3
|
| 66 |
+
|
| 67 |
+
@classmethod
|
| 68 |
+
def get_num_categories(cls) -> int:
|
| 69 |
+
""":returns: The number of likelihood categories in the enum."""
|
| 70 |
+
return 4
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
class CharacterCategory:
|
| 74 |
+
"""
|
| 75 |
+
This enum represents the different categories language models for
|
| 76 |
+
``SingleByteCharsetProber`` put characters into.
|
| 77 |
+
|
| 78 |
+
Anything less than CONTROL is considered a letter.
|
| 79 |
+
"""
|
| 80 |
+
|
| 81 |
+
UNDEFINED = 255
|
| 82 |
+
LINE_BREAK = 254
|
| 83 |
+
SYMBOL = 253
|
| 84 |
+
DIGIT = 252
|
| 85 |
+
CONTROL = 251
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/escprober.py
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import Optional, Union
|
| 29 |
+
|
| 30 |
+
from .charsetprober import CharSetProber
|
| 31 |
+
from .codingstatemachine import CodingStateMachine
|
| 32 |
+
from .enums import LanguageFilter, MachineState, ProbingState
|
| 33 |
+
from .escsm import (
|
| 34 |
+
HZ_SM_MODEL,
|
| 35 |
+
ISO2022CN_SM_MODEL,
|
| 36 |
+
ISO2022JP_SM_MODEL,
|
| 37 |
+
ISO2022KR_SM_MODEL,
|
| 38 |
+
)
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
class EscCharSetProber(CharSetProber):
|
| 42 |
+
"""
|
| 43 |
+
This CharSetProber uses a "code scheme" approach for detecting encodings,
|
| 44 |
+
whereby easily recognizable escape or shift sequences are relied on to
|
| 45 |
+
identify these encodings.
|
| 46 |
+
"""
|
| 47 |
+
|
| 48 |
+
def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None:
|
| 49 |
+
super().__init__(lang_filter=lang_filter)
|
| 50 |
+
self.coding_sm = []
|
| 51 |
+
if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED:
|
| 52 |
+
self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL))
|
| 53 |
+
self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL))
|
| 54 |
+
if self.lang_filter & LanguageFilter.JAPANESE:
|
| 55 |
+
self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL))
|
| 56 |
+
if self.lang_filter & LanguageFilter.KOREAN:
|
| 57 |
+
self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL))
|
| 58 |
+
self.active_sm_count = 0
|
| 59 |
+
self._detected_charset: Optional[str] = None
|
| 60 |
+
self._detected_language: Optional[str] = None
|
| 61 |
+
self._state = ProbingState.DETECTING
|
| 62 |
+
self.reset()
|
| 63 |
+
|
| 64 |
+
def reset(self) -> None:
|
| 65 |
+
super().reset()
|
| 66 |
+
for coding_sm in self.coding_sm:
|
| 67 |
+
coding_sm.active = True
|
| 68 |
+
coding_sm.reset()
|
| 69 |
+
self.active_sm_count = len(self.coding_sm)
|
| 70 |
+
self._detected_charset = None
|
| 71 |
+
self._detected_language = None
|
| 72 |
+
|
| 73 |
+
@property
|
| 74 |
+
def charset_name(self) -> Optional[str]:
|
| 75 |
+
return self._detected_charset
|
| 76 |
+
|
| 77 |
+
@property
|
| 78 |
+
def language(self) -> Optional[str]:
|
| 79 |
+
return self._detected_language
|
| 80 |
+
|
| 81 |
+
def get_confidence(self) -> float:
|
| 82 |
+
return 0.99 if self._detected_charset else 0.00
|
| 83 |
+
|
| 84 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 85 |
+
for c in byte_str:
|
| 86 |
+
for coding_sm in self.coding_sm:
|
| 87 |
+
if not coding_sm.active:
|
| 88 |
+
continue
|
| 89 |
+
coding_state = coding_sm.next_state(c)
|
| 90 |
+
if coding_state == MachineState.ERROR:
|
| 91 |
+
coding_sm.active = False
|
| 92 |
+
self.active_sm_count -= 1
|
| 93 |
+
if self.active_sm_count <= 0:
|
| 94 |
+
self._state = ProbingState.NOT_ME
|
| 95 |
+
return self.state
|
| 96 |
+
elif coding_state == MachineState.ITS_ME:
|
| 97 |
+
self._state = ProbingState.FOUND_IT
|
| 98 |
+
self._detected_charset = coding_sm.get_coding_state_machine()
|
| 99 |
+
self._detected_language = coding_sm.language
|
| 100 |
+
return self.state
|
| 101 |
+
|
| 102 |
+
return self.state
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/eucjpprober.py
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import Union
|
| 29 |
+
|
| 30 |
+
from .chardistribution import EUCJPDistributionAnalysis
|
| 31 |
+
from .codingstatemachine import CodingStateMachine
|
| 32 |
+
from .enums import MachineState, ProbingState
|
| 33 |
+
from .jpcntx import EUCJPContextAnalysis
|
| 34 |
+
from .mbcharsetprober import MultiByteCharSetProber
|
| 35 |
+
from .mbcssm import EUCJP_SM_MODEL
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
class EUCJPProber(MultiByteCharSetProber):
|
| 39 |
+
def __init__(self) -> None:
|
| 40 |
+
super().__init__()
|
| 41 |
+
self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL)
|
| 42 |
+
self.distribution_analyzer = EUCJPDistributionAnalysis()
|
| 43 |
+
self.context_analyzer = EUCJPContextAnalysis()
|
| 44 |
+
self.reset()
|
| 45 |
+
|
| 46 |
+
def reset(self) -> None:
|
| 47 |
+
super().reset()
|
| 48 |
+
self.context_analyzer.reset()
|
| 49 |
+
|
| 50 |
+
@property
|
| 51 |
+
def charset_name(self) -> str:
|
| 52 |
+
return "EUC-JP"
|
| 53 |
+
|
| 54 |
+
@property
|
| 55 |
+
def language(self) -> str:
|
| 56 |
+
return "Japanese"
|
| 57 |
+
|
| 58 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 59 |
+
assert self.coding_sm is not None
|
| 60 |
+
assert self.distribution_analyzer is not None
|
| 61 |
+
|
| 62 |
+
for i, byte in enumerate(byte_str):
|
| 63 |
+
# PY3K: byte_str is a byte array, so byte is an int, not a byte
|
| 64 |
+
coding_state = self.coding_sm.next_state(byte)
|
| 65 |
+
if coding_state == MachineState.ERROR:
|
| 66 |
+
self.logger.debug(
|
| 67 |
+
"%s %s prober hit error at byte %s",
|
| 68 |
+
self.charset_name,
|
| 69 |
+
self.language,
|
| 70 |
+
i,
|
| 71 |
+
)
|
| 72 |
+
self._state = ProbingState.NOT_ME
|
| 73 |
+
break
|
| 74 |
+
if coding_state == MachineState.ITS_ME:
|
| 75 |
+
self._state = ProbingState.FOUND_IT
|
| 76 |
+
break
|
| 77 |
+
if coding_state == MachineState.START:
|
| 78 |
+
char_len = self.coding_sm.get_current_charlen()
|
| 79 |
+
if i == 0:
|
| 80 |
+
self._last_char[1] = byte
|
| 81 |
+
self.context_analyzer.feed(self._last_char, char_len)
|
| 82 |
+
self.distribution_analyzer.feed(self._last_char, char_len)
|
| 83 |
+
else:
|
| 84 |
+
self.context_analyzer.feed(byte_str[i - 1 : i + 1], char_len)
|
| 85 |
+
self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len)
|
| 86 |
+
|
| 87 |
+
self._last_char[0] = byte_str[-1]
|
| 88 |
+
|
| 89 |
+
if self.state == ProbingState.DETECTING:
|
| 90 |
+
if self.context_analyzer.got_enough_data() and (
|
| 91 |
+
self.get_confidence() > self.SHORTCUT_THRESHOLD
|
| 92 |
+
):
|
| 93 |
+
self._state = ProbingState.FOUND_IT
|
| 94 |
+
|
| 95 |
+
return self.state
|
| 96 |
+
|
| 97 |
+
def get_confidence(self) -> float:
|
| 98 |
+
assert self.distribution_analyzer is not None
|
| 99 |
+
|
| 100 |
+
context_conf = self.context_analyzer.get_confidence()
|
| 101 |
+
distrib_conf = self.distribution_analyzer.get_confidence()
|
| 102 |
+
return max(context_conf, distrib_conf)
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/euckrprober.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from .chardistribution import EUCKRDistributionAnalysis
|
| 29 |
+
from .codingstatemachine import CodingStateMachine
|
| 30 |
+
from .mbcharsetprober import MultiByteCharSetProber
|
| 31 |
+
from .mbcssm import EUCKR_SM_MODEL
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class EUCKRProber(MultiByteCharSetProber):
|
| 35 |
+
def __init__(self) -> None:
|
| 36 |
+
super().__init__()
|
| 37 |
+
self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL)
|
| 38 |
+
self.distribution_analyzer = EUCKRDistributionAnalysis()
|
| 39 |
+
self.reset()
|
| 40 |
+
|
| 41 |
+
@property
|
| 42 |
+
def charset_name(self) -> str:
|
| 43 |
+
return "EUC-KR"
|
| 44 |
+
|
| 45 |
+
@property
|
| 46 |
+
def language(self) -> str:
|
| 47 |
+
return "Korean"
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/euctwfreq.py
ADDED
|
@@ -0,0 +1,388 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Communicator client code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
# EUCTW frequency table
|
| 29 |
+
# Converted from big5 work
|
| 30 |
+
# by Taiwan's Mandarin Promotion Council
|
| 31 |
+
# <http:#www.edu.tw:81/mandr/>
|
| 32 |
+
|
| 33 |
+
# 128 --> 0.42261
|
| 34 |
+
# 256 --> 0.57851
|
| 35 |
+
# 512 --> 0.74851
|
| 36 |
+
# 1024 --> 0.89384
|
| 37 |
+
# 2048 --> 0.97583
|
| 38 |
+
#
|
| 39 |
+
# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98
|
| 40 |
+
# Random Distribution Ration = 512/(5401-512)=0.105
|
| 41 |
+
#
|
| 42 |
+
# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR
|
| 43 |
+
|
| 44 |
+
EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75
|
| 45 |
+
|
| 46 |
+
# Char to FreqOrder table
|
| 47 |
+
EUCTW_TABLE_SIZE = 5376
|
| 48 |
+
|
| 49 |
+
# fmt: off
|
| 50 |
+
EUCTW_CHAR_TO_FREQ_ORDER = (
|
| 51 |
+
1, 1800, 1506, 255, 1431, 198, 9, 82, 6, 7310, 177, 202, 3615, 1256, 2808, 110, # 2742
|
| 52 |
+
3735, 33, 3241, 261, 76, 44, 2113, 16, 2931, 2184, 1176, 659, 3868, 26, 3404, 2643, # 2758
|
| 53 |
+
1198, 3869, 3313, 4060, 410, 2211, 302, 590, 361, 1963, 8, 204, 58, 4296, 7311, 1931, # 2774
|
| 54 |
+
63, 7312, 7313, 317, 1614, 75, 222, 159, 4061, 2412, 1480, 7314, 3500, 3068, 224, 2809, # 2790
|
| 55 |
+
3616, 3, 10, 3870, 1471, 29, 2774, 1135, 2852, 1939, 873, 130, 3242, 1123, 312, 7315, # 2806
|
| 56 |
+
4297, 2051, 507, 252, 682, 7316, 142, 1914, 124, 206, 2932, 34, 3501, 3173, 64, 604, # 2822
|
| 57 |
+
7317, 2494, 1976, 1977, 155, 1990, 645, 641, 1606, 7318, 3405, 337, 72, 406, 7319, 80, # 2838
|
| 58 |
+
630, 238, 3174, 1509, 263, 939, 1092, 2644, 756, 1440, 1094, 3406, 449, 69, 2969, 591, # 2854
|
| 59 |
+
179, 2095, 471, 115, 2034, 1843, 60, 50, 2970, 134, 806, 1868, 734, 2035, 3407, 180, # 2870
|
| 60 |
+
995, 1607, 156, 537, 2893, 688, 7320, 319, 1305, 779, 2144, 514, 2374, 298, 4298, 359, # 2886
|
| 61 |
+
2495, 90, 2707, 1338, 663, 11, 906, 1099, 2545, 20, 2436, 182, 532, 1716, 7321, 732, # 2902
|
| 62 |
+
1376, 4062, 1311, 1420, 3175, 25, 2312, 1056, 113, 399, 382, 1949, 242, 3408, 2467, 529, # 2918
|
| 63 |
+
3243, 475, 1447, 3617, 7322, 117, 21, 656, 810, 1297, 2295, 2329, 3502, 7323, 126, 4063, # 2934
|
| 64 |
+
706, 456, 150, 613, 4299, 71, 1118, 2036, 4064, 145, 3069, 85, 835, 486, 2114, 1246, # 2950
|
| 65 |
+
1426, 428, 727, 1285, 1015, 800, 106, 623, 303, 1281, 7324, 2127, 2354, 347, 3736, 221, # 2966
|
| 66 |
+
3503, 3110, 7325, 1955, 1153, 4065, 83, 296, 1199, 3070, 192, 624, 93, 7326, 822, 1897, # 2982
|
| 67 |
+
2810, 3111, 795, 2064, 991, 1554, 1542, 1592, 27, 43, 2853, 859, 139, 1456, 860, 4300, # 2998
|
| 68 |
+
437, 712, 3871, 164, 2392, 3112, 695, 211, 3017, 2096, 195, 3872, 1608, 3504, 3505, 3618, # 3014
|
| 69 |
+
3873, 234, 811, 2971, 2097, 3874, 2229, 1441, 3506, 1615, 2375, 668, 2076, 1638, 305, 228, # 3030
|
| 70 |
+
1664, 4301, 467, 415, 7327, 262, 2098, 1593, 239, 108, 300, 200, 1033, 512, 1247, 2077, # 3046
|
| 71 |
+
7328, 7329, 2173, 3176, 3619, 2673, 593, 845, 1062, 3244, 88, 1723, 2037, 3875, 1950, 212, # 3062
|
| 72 |
+
266, 152, 149, 468, 1898, 4066, 4302, 77, 187, 7330, 3018, 37, 5, 2972, 7331, 3876, # 3078
|
| 73 |
+
7332, 7333, 39, 2517, 4303, 2894, 3177, 2078, 55, 148, 74, 4304, 545, 483, 1474, 1029, # 3094
|
| 74 |
+
1665, 217, 1869, 1531, 3113, 1104, 2645, 4067, 24, 172, 3507, 900, 3877, 3508, 3509, 4305, # 3110
|
| 75 |
+
32, 1408, 2811, 1312, 329, 487, 2355, 2247, 2708, 784, 2674, 4, 3019, 3314, 1427, 1788, # 3126
|
| 76 |
+
188, 109, 499, 7334, 3620, 1717, 1789, 888, 1217, 3020, 4306, 7335, 3510, 7336, 3315, 1520, # 3142
|
| 77 |
+
3621, 3878, 196, 1034, 775, 7337, 7338, 929, 1815, 249, 439, 38, 7339, 1063, 7340, 794, # 3158
|
| 78 |
+
3879, 1435, 2296, 46, 178, 3245, 2065, 7341, 2376, 7342, 214, 1709, 4307, 804, 35, 707, # 3174
|
| 79 |
+
324, 3622, 1601, 2546, 140, 459, 4068, 7343, 7344, 1365, 839, 272, 978, 2257, 2572, 3409, # 3190
|
| 80 |
+
2128, 1363, 3623, 1423, 697, 100, 3071, 48, 70, 1231, 495, 3114, 2193, 7345, 1294, 7346, # 3206
|
| 81 |
+
2079, 462, 586, 1042, 3246, 853, 256, 988, 185, 2377, 3410, 1698, 434, 1084, 7347, 3411, # 3222
|
| 82 |
+
314, 2615, 2775, 4308, 2330, 2331, 569, 2280, 637, 1816, 2518, 757, 1162, 1878, 1616, 3412, # 3238
|
| 83 |
+
287, 1577, 2115, 768, 4309, 1671, 2854, 3511, 2519, 1321, 3737, 909, 2413, 7348, 4069, 933, # 3254
|
| 84 |
+
3738, 7349, 2052, 2356, 1222, 4310, 765, 2414, 1322, 786, 4311, 7350, 1919, 1462, 1677, 2895, # 3270
|
| 85 |
+
1699, 7351, 4312, 1424, 2437, 3115, 3624, 2590, 3316, 1774, 1940, 3413, 3880, 4070, 309, 1369, # 3286
|
| 86 |
+
1130, 2812, 364, 2230, 1653, 1299, 3881, 3512, 3882, 3883, 2646, 525, 1085, 3021, 902, 2000, # 3302
|
| 87 |
+
1475, 964, 4313, 421, 1844, 1415, 1057, 2281, 940, 1364, 3116, 376, 4314, 4315, 1381, 7, # 3318
|
| 88 |
+
2520, 983, 2378, 336, 1710, 2675, 1845, 321, 3414, 559, 1131, 3022, 2742, 1808, 1132, 1313, # 3334
|
| 89 |
+
265, 1481, 1857, 7352, 352, 1203, 2813, 3247, 167, 1089, 420, 2814, 776, 792, 1724, 3513, # 3350
|
| 90 |
+
4071, 2438, 3248, 7353, 4072, 7354, 446, 229, 333, 2743, 901, 3739, 1200, 1557, 4316, 2647, # 3366
|
| 91 |
+
1920, 395, 2744, 2676, 3740, 4073, 1835, 125, 916, 3178, 2616, 4317, 7355, 7356, 3741, 7357, # 3382
|
| 92 |
+
7358, 7359, 4318, 3117, 3625, 1133, 2547, 1757, 3415, 1510, 2313, 1409, 3514, 7360, 2145, 438, # 3398
|
| 93 |
+
2591, 2896, 2379, 3317, 1068, 958, 3023, 461, 311, 2855, 2677, 4074, 1915, 3179, 4075, 1978, # 3414
|
| 94 |
+
383, 750, 2745, 2617, 4076, 274, 539, 385, 1278, 1442, 7361, 1154, 1964, 384, 561, 210, # 3430
|
| 95 |
+
98, 1295, 2548, 3515, 7362, 1711, 2415, 1482, 3416, 3884, 2897, 1257, 129, 7363, 3742, 642, # 3446
|
| 96 |
+
523, 2776, 2777, 2648, 7364, 141, 2231, 1333, 68, 176, 441, 876, 907, 4077, 603, 2592, # 3462
|
| 97 |
+
710, 171, 3417, 404, 549, 18, 3118, 2393, 1410, 3626, 1666, 7365, 3516, 4319, 2898, 4320, # 3478
|
| 98 |
+
7366, 2973, 368, 7367, 146, 366, 99, 871, 3627, 1543, 748, 807, 1586, 1185, 22, 2258, # 3494
|
| 99 |
+
379, 3743, 3180, 7368, 3181, 505, 1941, 2618, 1991, 1382, 2314, 7369, 380, 2357, 218, 702, # 3510
|
| 100 |
+
1817, 1248, 3418, 3024, 3517, 3318, 3249, 7370, 2974, 3628, 930, 3250, 3744, 7371, 59, 7372, # 3526
|
| 101 |
+
585, 601, 4078, 497, 3419, 1112, 1314, 4321, 1801, 7373, 1223, 1472, 2174, 7374, 749, 1836, # 3542
|
| 102 |
+
690, 1899, 3745, 1772, 3885, 1476, 429, 1043, 1790, 2232, 2116, 917, 4079, 447, 1086, 1629, # 3558
|
| 103 |
+
7375, 556, 7376, 7377, 2020, 1654, 844, 1090, 105, 550, 966, 1758, 2815, 1008, 1782, 686, # 3574
|
| 104 |
+
1095, 7378, 2282, 793, 1602, 7379, 3518, 2593, 4322, 4080, 2933, 2297, 4323, 3746, 980, 2496, # 3590
|
| 105 |
+
544, 353, 527, 4324, 908, 2678, 2899, 7380, 381, 2619, 1942, 1348, 7381, 1341, 1252, 560, # 3606
|
| 106 |
+
3072, 7382, 3420, 2856, 7383, 2053, 973, 886, 2080, 143, 4325, 7384, 7385, 157, 3886, 496, # 3622
|
| 107 |
+
4081, 57, 840, 540, 2038, 4326, 4327, 3421, 2117, 1445, 970, 2259, 1748, 1965, 2081, 4082, # 3638
|
| 108 |
+
3119, 1234, 1775, 3251, 2816, 3629, 773, 1206, 2129, 1066, 2039, 1326, 3887, 1738, 1725, 4083, # 3654
|
| 109 |
+
279, 3120, 51, 1544, 2594, 423, 1578, 2130, 2066, 173, 4328, 1879, 7386, 7387, 1583, 264, # 3670
|
| 110 |
+
610, 3630, 4329, 2439, 280, 154, 7388, 7389, 7390, 1739, 338, 1282, 3073, 693, 2857, 1411, # 3686
|
| 111 |
+
1074, 3747, 2440, 7391, 4330, 7392, 7393, 1240, 952, 2394, 7394, 2900, 1538, 2679, 685, 1483, # 3702
|
| 112 |
+
4084, 2468, 1436, 953, 4085, 2054, 4331, 671, 2395, 79, 4086, 2441, 3252, 608, 567, 2680, # 3718
|
| 113 |
+
3422, 4087, 4088, 1691, 393, 1261, 1791, 2396, 7395, 4332, 7396, 7397, 7398, 7399, 1383, 1672, # 3734
|
| 114 |
+
3748, 3182, 1464, 522, 1119, 661, 1150, 216, 675, 4333, 3888, 1432, 3519, 609, 4334, 2681, # 3750
|
| 115 |
+
2397, 7400, 7401, 7402, 4089, 3025, 0, 7403, 2469, 315, 231, 2442, 301, 3319, 4335, 2380, # 3766
|
| 116 |
+
7404, 233, 4090, 3631, 1818, 4336, 4337, 7405, 96, 1776, 1315, 2082, 7406, 257, 7407, 1809, # 3782
|
| 117 |
+
3632, 2709, 1139, 1819, 4091, 2021, 1124, 2163, 2778, 1777, 2649, 7408, 3074, 363, 1655, 3183, # 3798
|
| 118 |
+
7409, 2975, 7410, 7411, 7412, 3889, 1567, 3890, 718, 103, 3184, 849, 1443, 341, 3320, 2934, # 3814
|
| 119 |
+
1484, 7413, 1712, 127, 67, 339, 4092, 2398, 679, 1412, 821, 7414, 7415, 834, 738, 351, # 3830
|
| 120 |
+
2976, 2146, 846, 235, 1497, 1880, 418, 1992, 3749, 2710, 186, 1100, 2147, 2746, 3520, 1545, # 3846
|
| 121 |
+
1355, 2935, 2858, 1377, 583, 3891, 4093, 2573, 2977, 7416, 1298, 3633, 1078, 2549, 3634, 2358, # 3862
|
| 122 |
+
78, 3750, 3751, 267, 1289, 2099, 2001, 1594, 4094, 348, 369, 1274, 2194, 2175, 1837, 4338, # 3878
|
| 123 |
+
1820, 2817, 3635, 2747, 2283, 2002, 4339, 2936, 2748, 144, 3321, 882, 4340, 3892, 2749, 3423, # 3894
|
| 124 |
+
4341, 2901, 7417, 4095, 1726, 320, 7418, 3893, 3026, 788, 2978, 7419, 2818, 1773, 1327, 2859, # 3910
|
| 125 |
+
3894, 2819, 7420, 1306, 4342, 2003, 1700, 3752, 3521, 2359, 2650, 787, 2022, 506, 824, 3636, # 3926
|
| 126 |
+
534, 323, 4343, 1044, 3322, 2023, 1900, 946, 3424, 7421, 1778, 1500, 1678, 7422, 1881, 4344, # 3942
|
| 127 |
+
165, 243, 4345, 3637, 2521, 123, 683, 4096, 764, 4346, 36, 3895, 1792, 589, 2902, 816, # 3958
|
| 128 |
+
626, 1667, 3027, 2233, 1639, 1555, 1622, 3753, 3896, 7423, 3897, 2860, 1370, 1228, 1932, 891, # 3974
|
| 129 |
+
2083, 2903, 304, 4097, 7424, 292, 2979, 2711, 3522, 691, 2100, 4098, 1115, 4347, 118, 662, # 3990
|
| 130 |
+
7425, 611, 1156, 854, 2381, 1316, 2861, 2, 386, 515, 2904, 7426, 7427, 3253, 868, 2234, # 4006
|
| 131 |
+
1486, 855, 2651, 785, 2212, 3028, 7428, 1040, 3185, 3523, 7429, 3121, 448, 7430, 1525, 7431, # 4022
|
| 132 |
+
2164, 4348, 7432, 3754, 7433, 4099, 2820, 3524, 3122, 503, 818, 3898, 3123, 1568, 814, 676, # 4038
|
| 133 |
+
1444, 306, 1749, 7434, 3755, 1416, 1030, 197, 1428, 805, 2821, 1501, 4349, 7435, 7436, 7437, # 4054
|
| 134 |
+
1993, 7438, 4350, 7439, 7440, 2195, 13, 2779, 3638, 2980, 3124, 1229, 1916, 7441, 3756, 2131, # 4070
|
| 135 |
+
7442, 4100, 4351, 2399, 3525, 7443, 2213, 1511, 1727, 1120, 7444, 7445, 646, 3757, 2443, 307, # 4086
|
| 136 |
+
7446, 7447, 1595, 3186, 7448, 7449, 7450, 3639, 1113, 1356, 3899, 1465, 2522, 2523, 7451, 519, # 4102
|
| 137 |
+
7452, 128, 2132, 92, 2284, 1979, 7453, 3900, 1512, 342, 3125, 2196, 7454, 2780, 2214, 1980, # 4118
|
| 138 |
+
3323, 7455, 290, 1656, 1317, 789, 827, 2360, 7456, 3758, 4352, 562, 581, 3901, 7457, 401, # 4134
|
| 139 |
+
4353, 2248, 94, 4354, 1399, 2781, 7458, 1463, 2024, 4355, 3187, 1943, 7459, 828, 1105, 4101, # 4150
|
| 140 |
+
1262, 1394, 7460, 4102, 605, 4356, 7461, 1783, 2862, 7462, 2822, 819, 2101, 578, 2197, 2937, # 4166
|
| 141 |
+
7463, 1502, 436, 3254, 4103, 3255, 2823, 3902, 2905, 3425, 3426, 7464, 2712, 2315, 7465, 7466, # 4182
|
| 142 |
+
2332, 2067, 23, 4357, 193, 826, 3759, 2102, 699, 1630, 4104, 3075, 390, 1793, 1064, 3526, # 4198
|
| 143 |
+
7467, 1579, 3076, 3077, 1400, 7468, 4105, 1838, 1640, 2863, 7469, 4358, 4359, 137, 4106, 598, # 4214
|
| 144 |
+
3078, 1966, 780, 104, 974, 2938, 7470, 278, 899, 253, 402, 572, 504, 493, 1339, 7471, # 4230
|
| 145 |
+
3903, 1275, 4360, 2574, 2550, 7472, 3640, 3029, 3079, 2249, 565, 1334, 2713, 863, 41, 7473, # 4246
|
| 146 |
+
7474, 4361, 7475, 1657, 2333, 19, 463, 2750, 4107, 606, 7476, 2981, 3256, 1087, 2084, 1323, # 4262
|
| 147 |
+
2652, 2982, 7477, 1631, 1623, 1750, 4108, 2682, 7478, 2864, 791, 2714, 2653, 2334, 232, 2416, # 4278
|
| 148 |
+
7479, 2983, 1498, 7480, 2654, 2620, 755, 1366, 3641, 3257, 3126, 2025, 1609, 119, 1917, 3427, # 4294
|
| 149 |
+
862, 1026, 4109, 7481, 3904, 3760, 4362, 3905, 4363, 2260, 1951, 2470, 7482, 1125, 817, 4110, # 4310
|
| 150 |
+
4111, 3906, 1513, 1766, 2040, 1487, 4112, 3030, 3258, 2824, 3761, 3127, 7483, 7484, 1507, 7485, # 4326
|
| 151 |
+
2683, 733, 40, 1632, 1106, 2865, 345, 4113, 841, 2524, 230, 4364, 2984, 1846, 3259, 3428, # 4342
|
| 152 |
+
7486, 1263, 986, 3429, 7487, 735, 879, 254, 1137, 857, 622, 1300, 1180, 1388, 1562, 3907, # 4358
|
| 153 |
+
3908, 2939, 967, 2751, 2655, 1349, 592, 2133, 1692, 3324, 2985, 1994, 4114, 1679, 3909, 1901, # 4374
|
| 154 |
+
2185, 7488, 739, 3642, 2715, 1296, 1290, 7489, 4115, 2198, 2199, 1921, 1563, 2595, 2551, 1870, # 4390
|
| 155 |
+
2752, 2986, 7490, 435, 7491, 343, 1108, 596, 17, 1751, 4365, 2235, 3430, 3643, 7492, 4366, # 4406
|
| 156 |
+
294, 3527, 2940, 1693, 477, 979, 281, 2041, 3528, 643, 2042, 3644, 2621, 2782, 2261, 1031, # 4422
|
| 157 |
+
2335, 2134, 2298, 3529, 4367, 367, 1249, 2552, 7493, 3530, 7494, 4368, 1283, 3325, 2004, 240, # 4438
|
| 158 |
+
1762, 3326, 4369, 4370, 836, 1069, 3128, 474, 7495, 2148, 2525, 268, 3531, 7496, 3188, 1521, # 4454
|
| 159 |
+
1284, 7497, 1658, 1546, 4116, 7498, 3532, 3533, 7499, 4117, 3327, 2684, 1685, 4118, 961, 1673, # 4470
|
| 160 |
+
2622, 190, 2005, 2200, 3762, 4371, 4372, 7500, 570, 2497, 3645, 1490, 7501, 4373, 2623, 3260, # 4486
|
| 161 |
+
1956, 4374, 584, 1514, 396, 1045, 1944, 7502, 4375, 1967, 2444, 7503, 7504, 4376, 3910, 619, # 4502
|
| 162 |
+
7505, 3129, 3261, 215, 2006, 2783, 2553, 3189, 4377, 3190, 4378, 763, 4119, 3763, 4379, 7506, # 4518
|
| 163 |
+
7507, 1957, 1767, 2941, 3328, 3646, 1174, 452, 1477, 4380, 3329, 3130, 7508, 2825, 1253, 2382, # 4534
|
| 164 |
+
2186, 1091, 2285, 4120, 492, 7509, 638, 1169, 1824, 2135, 1752, 3911, 648, 926, 1021, 1324, # 4550
|
| 165 |
+
4381, 520, 4382, 997, 847, 1007, 892, 4383, 3764, 2262, 1871, 3647, 7510, 2400, 1784, 4384, # 4566
|
| 166 |
+
1952, 2942, 3080, 3191, 1728, 4121, 2043, 3648, 4385, 2007, 1701, 3131, 1551, 30, 2263, 4122, # 4582
|
| 167 |
+
7511, 2026, 4386, 3534, 7512, 501, 7513, 4123, 594, 3431, 2165, 1821, 3535, 3432, 3536, 3192, # 4598
|
| 168 |
+
829, 2826, 4124, 7514, 1680, 3132, 1225, 4125, 7515, 3262, 4387, 4126, 3133, 2336, 7516, 4388, # 4614
|
| 169 |
+
4127, 7517, 3912, 3913, 7518, 1847, 2383, 2596, 3330, 7519, 4389, 374, 3914, 652, 4128, 4129, # 4630
|
| 170 |
+
375, 1140, 798, 7520, 7521, 7522, 2361, 4390, 2264, 546, 1659, 138, 3031, 2445, 4391, 7523, # 4646
|
| 171 |
+
2250, 612, 1848, 910, 796, 3765, 1740, 1371, 825, 3766, 3767, 7524, 2906, 2554, 7525, 692, # 4662
|
| 172 |
+
444, 3032, 2624, 801, 4392, 4130, 7526, 1491, 244, 1053, 3033, 4131, 4132, 340, 7527, 3915, # 4678
|
| 173 |
+
1041, 2987, 293, 1168, 87, 1357, 7528, 1539, 959, 7529, 2236, 721, 694, 4133, 3768, 219, # 4694
|
| 174 |
+
1478, 644, 1417, 3331, 2656, 1413, 1401, 1335, 1389, 3916, 7530, 7531, 2988, 2362, 3134, 1825, # 4710
|
| 175 |
+
730, 1515, 184, 2827, 66, 4393, 7532, 1660, 2943, 246, 3332, 378, 1457, 226, 3433, 975, # 4726
|
| 176 |
+
3917, 2944, 1264, 3537, 674, 696, 7533, 163, 7534, 1141, 2417, 2166, 713, 3538, 3333, 4394, # 4742
|
| 177 |
+
3918, 7535, 7536, 1186, 15, 7537, 1079, 1070, 7538, 1522, 3193, 3539, 276, 1050, 2716, 758, # 4758
|
| 178 |
+
1126, 653, 2945, 3263, 7539, 2337, 889, 3540, 3919, 3081, 2989, 903, 1250, 4395, 3920, 3434, # 4774
|
| 179 |
+
3541, 1342, 1681, 1718, 766, 3264, 286, 89, 2946, 3649, 7540, 1713, 7541, 2597, 3334, 2990, # 4790
|
| 180 |
+
7542, 2947, 2215, 3194, 2866, 7543, 4396, 2498, 2526, 181, 387, 1075, 3921, 731, 2187, 3335, # 4806
|
| 181 |
+
7544, 3265, 310, 313, 3435, 2299, 770, 4134, 54, 3034, 189, 4397, 3082, 3769, 3922, 7545, # 4822
|
| 182 |
+
1230, 1617, 1849, 355, 3542, 4135, 4398, 3336, 111, 4136, 3650, 1350, 3135, 3436, 3035, 4137, # 4838
|
| 183 |
+
2149, 3266, 3543, 7546, 2784, 3923, 3924, 2991, 722, 2008, 7547, 1071, 247, 1207, 2338, 2471, # 4854
|
| 184 |
+
1378, 4399, 2009, 864, 1437, 1214, 4400, 373, 3770, 1142, 2216, 667, 4401, 442, 2753, 2555, # 4870
|
| 185 |
+
3771, 3925, 1968, 4138, 3267, 1839, 837, 170, 1107, 934, 1336, 1882, 7548, 7549, 2118, 4139, # 4886
|
| 186 |
+
2828, 743, 1569, 7550, 4402, 4140, 582, 2384, 1418, 3437, 7551, 1802, 7552, 357, 1395, 1729, # 4902
|
| 187 |
+
3651, 3268, 2418, 1564, 2237, 7553, 3083, 3772, 1633, 4403, 1114, 2085, 4141, 1532, 7554, 482, # 4918
|
| 188 |
+
2446, 4404, 7555, 7556, 1492, 833, 1466, 7557, 2717, 3544, 1641, 2829, 7558, 1526, 1272, 3652, # 4934
|
| 189 |
+
4142, 1686, 1794, 416, 2556, 1902, 1953, 1803, 7559, 3773, 2785, 3774, 1159, 2316, 7560, 2867, # 4950
|
| 190 |
+
4405, 1610, 1584, 3036, 2419, 2754, 443, 3269, 1163, 3136, 7561, 7562, 3926, 7563, 4143, 2499, # 4966
|
| 191 |
+
3037, 4406, 3927, 3137, 2103, 1647, 3545, 2010, 1872, 4144, 7564, 4145, 431, 3438, 7565, 250, # 4982
|
| 192 |
+
97, 81, 4146, 7566, 1648, 1850, 1558, 160, 848, 7567, 866, 740, 1694, 7568, 2201, 2830, # 4998
|
| 193 |
+
3195, 4147, 4407, 3653, 1687, 950, 2472, 426, 469, 3196, 3654, 3655, 3928, 7569, 7570, 1188, # 5014
|
| 194 |
+
424, 1995, 861, 3546, 4148, 3775, 2202, 2685, 168, 1235, 3547, 4149, 7571, 2086, 1674, 4408, # 5030
|
| 195 |
+
3337, 3270, 220, 2557, 1009, 7572, 3776, 670, 2992, 332, 1208, 717, 7573, 7574, 3548, 2447, # 5046
|
| 196 |
+
3929, 3338, 7575, 513, 7576, 1209, 2868, 3339, 3138, 4409, 1080, 7577, 7578, 7579, 7580, 2527, # 5062
|
| 197 |
+
3656, 3549, 815, 1587, 3930, 3931, 7581, 3550, 3439, 3777, 1254, 4410, 1328, 3038, 1390, 3932, # 5078
|
| 198 |
+
1741, 3933, 3778, 3934, 7582, 236, 3779, 2448, 3271, 7583, 7584, 3657, 3780, 1273, 3781, 4411, # 5094
|
| 199 |
+
7585, 308, 7586, 4412, 245, 4413, 1851, 2473, 1307, 2575, 430, 715, 2136, 2449, 7587, 270, # 5110
|
| 200 |
+
199, 2869, 3935, 7588, 3551, 2718, 1753, 761, 1754, 725, 1661, 1840, 4414, 3440, 3658, 7589, # 5126
|
| 201 |
+
7590, 587, 14, 3272, 227, 2598, 326, 480, 2265, 943, 2755, 3552, 291, 650, 1883, 7591, # 5142
|
| 202 |
+
1702, 1226, 102, 1547, 62, 3441, 904, 4415, 3442, 1164, 4150, 7592, 7593, 1224, 1548, 2756, # 5158
|
| 203 |
+
391, 498, 1493, 7594, 1386, 1419, 7595, 2055, 1177, 4416, 813, 880, 1081, 2363, 566, 1145, # 5174
|
| 204 |
+
4417, 2286, 1001, 1035, 2558, 2599, 2238, 394, 1286, 7596, 7597, 2068, 7598, 86, 1494, 1730, # 5190
|
| 205 |
+
3936, 491, 1588, 745, 897, 2948, 843, 3340, 3937, 2757, 2870, 3273, 1768, 998, 2217, 2069, # 5206
|
| 206 |
+
397, 1826, 1195, 1969, 3659, 2993, 3341, 284, 7599, 3782, 2500, 2137, 2119, 1903, 7600, 3938, # 5222
|
| 207 |
+
2150, 3939, 4151, 1036, 3443, 1904, 114, 2559, 4152, 209, 1527, 7601, 7602, 2949, 2831, 2625, # 5238
|
| 208 |
+
2385, 2719, 3139, 812, 2560, 7603, 3274, 7604, 1559, 737, 1884, 3660, 1210, 885, 28, 2686, # 5254
|
| 209 |
+
3553, 3783, 7605, 4153, 1004, 1779, 4418, 7606, 346, 1981, 2218, 2687, 4419, 3784, 1742, 797, # 5270
|
| 210 |
+
1642, 3940, 1933, 1072, 1384, 2151, 896, 3941, 3275, 3661, 3197, 2871, 3554, 7607, 2561, 1958, # 5286
|
| 211 |
+
4420, 2450, 1785, 7608, 7609, 7610, 3942, 4154, 1005, 1308, 3662, 4155, 2720, 4421, 4422, 1528, # 5302
|
| 212 |
+
2600, 161, 1178, 4156, 1982, 987, 4423, 1101, 4157, 631, 3943, 1157, 3198, 2420, 1343, 1241, # 5318
|
| 213 |
+
1016, 2239, 2562, 372, 877, 2339, 2501, 1160, 555, 1934, 911, 3944, 7611, 466, 1170, 169, # 5334
|
| 214 |
+
1051, 2907, 2688, 3663, 2474, 2994, 1182, 2011, 2563, 1251, 2626, 7612, 992, 2340, 3444, 1540, # 5350
|
| 215 |
+
2721, 1201, 2070, 2401, 1996, 2475, 7613, 4424, 528, 1922, 2188, 1503, 1873, 1570, 2364, 3342, # 5366
|
| 216 |
+
3276, 7614, 557, 1073, 7615, 1827, 3445, 2087, 2266, 3140, 3039, 3084, 767, 3085, 2786, 4425, # 5382
|
| 217 |
+
1006, 4158, 4426, 2341, 1267, 2176, 3664, 3199, 778, 3945, 3200, 2722, 1597, 2657, 7616, 4427, # 5398
|
| 218 |
+
7617, 3446, 7618, 7619, 7620, 3277, 2689, 1433, 3278, 131, 95, 1504, 3946, 723, 4159, 3141, # 5414
|
| 219 |
+
1841, 3555, 2758, 2189, 3947, 2027, 2104, 3665, 7621, 2995, 3948, 1218, 7622, 3343, 3201, 3949, # 5430
|
| 220 |
+
4160, 2576, 248, 1634, 3785, 912, 7623, 2832, 3666, 3040, 3786, 654, 53, 7624, 2996, 7625, # 5446
|
| 221 |
+
1688, 4428, 777, 3447, 1032, 3950, 1425, 7626, 191, 820, 2120, 2833, 971, 4429, 931, 3202, # 5462
|
| 222 |
+
135, 664, 783, 3787, 1997, 772, 2908, 1935, 3951, 3788, 4430, 2909, 3203, 282, 2723, 640, # 5478
|
| 223 |
+
1372, 3448, 1127, 922, 325, 3344, 7627, 7628, 711, 2044, 7629, 7630, 3952, 2219, 2787, 1936, # 5494
|
| 224 |
+
3953, 3345, 2220, 2251, 3789, 2300, 7631, 4431, 3790, 1258, 3279, 3954, 3204, 2138, 2950, 3955, # 5510
|
| 225 |
+
3956, 7632, 2221, 258, 3205, 4432, 101, 1227, 7633, 3280, 1755, 7634, 1391, 3281, 7635, 2910, # 5526
|
| 226 |
+
2056, 893, 7636, 7637, 7638, 1402, 4161, 2342, 7639, 7640, 3206, 3556, 7641, 7642, 878, 1325, # 5542
|
| 227 |
+
1780, 2788, 4433, 259, 1385, 2577, 744, 1183, 2267, 4434, 7643, 3957, 2502, 7644, 684, 1024, # 5558
|
| 228 |
+
4162, 7645, 472, 3557, 3449, 1165, 3282, 3958, 3959, 322, 2152, 881, 455, 1695, 1152, 1340, # 5574
|
| 229 |
+
660, 554, 2153, 4435, 1058, 4436, 4163, 830, 1065, 3346, 3960, 4437, 1923, 7646, 1703, 1918, # 5590
|
| 230 |
+
7647, 932, 2268, 122, 7648, 4438, 947, 677, 7649, 3791, 2627, 297, 1905, 1924, 2269, 4439, # 5606
|
| 231 |
+
2317, 3283, 7650, 7651, 4164, 7652, 4165, 84, 4166, 112, 989, 7653, 547, 1059, 3961, 701, # 5622
|
| 232 |
+
3558, 1019, 7654, 4167, 7655, 3450, 942, 639, 457, 2301, 2451, 993, 2951, 407, 851, 494, # 5638
|
| 233 |
+
4440, 3347, 927, 7656, 1237, 7657, 2421, 3348, 573, 4168, 680, 921, 2911, 1279, 1874, 285, # 5654
|
| 234 |
+
790, 1448, 1983, 719, 2167, 7658, 7659, 4441, 3962, 3963, 1649, 7660, 1541, 563, 7661, 1077, # 5670
|
| 235 |
+
7662, 3349, 3041, 3451, 511, 2997, 3964, 3965, 3667, 3966, 1268, 2564, 3350, 3207, 4442, 4443, # 5686
|
| 236 |
+
7663, 535, 1048, 1276, 1189, 2912, 2028, 3142, 1438, 1373, 2834, 2952, 1134, 2012, 7664, 4169, # 5702
|
| 237 |
+
1238, 2578, 3086, 1259, 7665, 700, 7666, 2953, 3143, 3668, 4170, 7667, 4171, 1146, 1875, 1906, # 5718
|
| 238 |
+
4444, 2601, 3967, 781, 2422, 132, 1589, 203, 147, 273, 2789, 2402, 898, 1786, 2154, 3968, # 5734
|
| 239 |
+
3969, 7668, 3792, 2790, 7669, 7670, 4445, 4446, 7671, 3208, 7672, 1635, 3793, 965, 7673, 1804, # 5750
|
| 240 |
+
2690, 1516, 3559, 1121, 1082, 1329, 3284, 3970, 1449, 3794, 65, 1128, 2835, 2913, 2759, 1590, # 5766
|
| 241 |
+
3795, 7674, 7675, 12, 2658, 45, 976, 2579, 3144, 4447, 517, 2528, 1013, 1037, 3209, 7676, # 5782
|
| 242 |
+
3796, 2836, 7677, 3797, 7678, 3452, 7679, 2602, 614, 1998, 2318, 3798, 3087, 2724, 2628, 7680, # 5798
|
| 243 |
+
2580, 4172, 599, 1269, 7681, 1810, 3669, 7682, 2691, 3088, 759, 1060, 489, 1805, 3351, 3285, # 5814
|
| 244 |
+
1358, 7683, 7684, 2386, 1387, 1215, 2629, 2252, 490, 7685, 7686, 4173, 1759, 2387, 2343, 7687, # 5830
|
| 245 |
+
4448, 3799, 1907, 3971, 2630, 1806, 3210, 4449, 3453, 3286, 2760, 2344, 874, 7688, 7689, 3454, # 5846
|
| 246 |
+
3670, 1858, 91, 2914, 3671, 3042, 3800, 4450, 7690, 3145, 3972, 2659, 7691, 3455, 1202, 1403, # 5862
|
| 247 |
+
3801, 2954, 2529, 1517, 2503, 4451, 3456, 2504, 7692, 4452, 7693, 2692, 1885, 1495, 1731, 3973, # 5878
|
| 248 |
+
2365, 4453, 7694, 2029, 7695, 7696, 3974, 2693, 1216, 237, 2581, 4174, 2319, 3975, 3802, 4454, # 5894
|
| 249 |
+
4455, 2694, 3560, 3457, 445, 4456, 7697, 7698, 7699, 7700, 2761, 61, 3976, 3672, 1822, 3977, # 5910
|
| 250 |
+
7701, 687, 2045, 935, 925, 405, 2660, 703, 1096, 1859, 2725, 4457, 3978, 1876, 1367, 2695, # 5926
|
| 251 |
+
3352, 918, 2105, 1781, 2476, 334, 3287, 1611, 1093, 4458, 564, 3146, 3458, 3673, 3353, 945, # 5942
|
| 252 |
+
2631, 2057, 4459, 7702, 1925, 872, 4175, 7703, 3459, 2696, 3089, 349, 4176, 3674, 3979, 4460, # 5958
|
| 253 |
+
3803, 4177, 3675, 2155, 3980, 4461, 4462, 4178, 4463, 2403, 2046, 782, 3981, 400, 251, 4179, # 5974
|
| 254 |
+
1624, 7704, 7705, 277, 3676, 299, 1265, 476, 1191, 3804, 2121, 4180, 4181, 1109, 205, 7706, # 5990
|
| 255 |
+
2582, 1000, 2156, 3561, 1860, 7707, 7708, 7709, 4464, 7710, 4465, 2565, 107, 2477, 2157, 3982, # 6006
|
| 256 |
+
3460, 3147, 7711, 1533, 541, 1301, 158, 753, 4182, 2872, 3562, 7712, 1696, 370, 1088, 4183, # 6022
|
| 257 |
+
4466, 3563, 579, 327, 440, 162, 2240, 269, 1937, 1374, 3461, 968, 3043, 56, 1396, 3090, # 6038
|
| 258 |
+
2106, 3288, 3354, 7713, 1926, 2158, 4467, 2998, 7714, 3564, 7715, 7716, 3677, 4468, 2478, 7717, # 6054
|
| 259 |
+
2791, 7718, 1650, 4469, 7719, 2603, 7720, 7721, 3983, 2661, 3355, 1149, 3356, 3984, 3805, 3985, # 6070
|
| 260 |
+
7722, 1076, 49, 7723, 951, 3211, 3289, 3290, 450, 2837, 920, 7724, 1811, 2792, 2366, 4184, # 6086
|
| 261 |
+
1908, 1138, 2367, 3806, 3462, 7725, 3212, 4470, 1909, 1147, 1518, 2423, 4471, 3807, 7726, 4472, # 6102
|
| 262 |
+
2388, 2604, 260, 1795, 3213, 7727, 7728, 3808, 3291, 708, 7729, 3565, 1704, 7730, 3566, 1351, # 6118
|
| 263 |
+
1618, 3357, 2999, 1886, 944, 4185, 3358, 4186, 3044, 3359, 4187, 7731, 3678, 422, 413, 1714, # 6134
|
| 264 |
+
3292, 500, 2058, 2345, 4188, 2479, 7732, 1344, 1910, 954, 7733, 1668, 7734, 7735, 3986, 2404, # 6150
|
| 265 |
+
4189, 3567, 3809, 4190, 7736, 2302, 1318, 2505, 3091, 133, 3092, 2873, 4473, 629, 31, 2838, # 6166
|
| 266 |
+
2697, 3810, 4474, 850, 949, 4475, 3987, 2955, 1732, 2088, 4191, 1496, 1852, 7737, 3988, 620, # 6182
|
| 267 |
+
3214, 981, 1242, 3679, 3360, 1619, 3680, 1643, 3293, 2139, 2452, 1970, 1719, 3463, 2168, 7738, # 6198
|
| 268 |
+
3215, 7739, 7740, 3361, 1828, 7741, 1277, 4476, 1565, 2047, 7742, 1636, 3568, 3093, 7743, 869, # 6214
|
| 269 |
+
2839, 655, 3811, 3812, 3094, 3989, 3000, 3813, 1310, 3569, 4477, 7744, 7745, 7746, 1733, 558, # 6230
|
| 270 |
+
4478, 3681, 335, 1549, 3045, 1756, 4192, 3682, 1945, 3464, 1829, 1291, 1192, 470, 2726, 2107, # 6246
|
| 271 |
+
2793, 913, 1054, 3990, 7747, 1027, 7748, 3046, 3991, 4479, 982, 2662, 3362, 3148, 3465, 3216, # 6262
|
| 272 |
+
3217, 1946, 2794, 7749, 571, 4480, 7750, 1830, 7751, 3570, 2583, 1523, 2424, 7752, 2089, 984, # 6278
|
| 273 |
+
4481, 3683, 1959, 7753, 3684, 852, 923, 2795, 3466, 3685, 969, 1519, 999, 2048, 2320, 1705, # 6294
|
| 274 |
+
7754, 3095, 615, 1662, 151, 597, 3992, 2405, 2321, 1049, 275, 4482, 3686, 4193, 568, 3687, # 6310
|
| 275 |
+
3571, 2480, 4194, 3688, 7755, 2425, 2270, 409, 3218, 7756, 1566, 2874, 3467, 1002, 769, 2840, # 6326
|
| 276 |
+
194, 2090, 3149, 3689, 2222, 3294, 4195, 628, 1505, 7757, 7758, 1763, 2177, 3001, 3993, 521, # 6342
|
| 277 |
+
1161, 2584, 1787, 2203, 2406, 4483, 3994, 1625, 4196, 4197, 412, 42, 3096, 464, 7759, 2632, # 6358
|
| 278 |
+
4484, 3363, 1760, 1571, 2875, 3468, 2530, 1219, 2204, 3814, 2633, 2140, 2368, 4485, 4486, 3295, # 6374
|
| 279 |
+
1651, 3364, 3572, 7760, 7761, 3573, 2481, 3469, 7762, 3690, 7763, 7764, 2271, 2091, 460, 7765, # 6390
|
| 280 |
+
4487, 7766, 3002, 962, 588, 3574, 289, 3219, 2634, 1116, 52, 7767, 3047, 1796, 7768, 7769, # 6406
|
| 281 |
+
7770, 1467, 7771, 1598, 1143, 3691, 4198, 1984, 1734, 1067, 4488, 1280, 3365, 465, 4489, 1572, # 6422
|
| 282 |
+
510, 7772, 1927, 2241, 1812, 1644, 3575, 7773, 4490, 3692, 7774, 7775, 2663, 1573, 1534, 7776, # 6438
|
| 283 |
+
7777, 4199, 536, 1807, 1761, 3470, 3815, 3150, 2635, 7778, 7779, 7780, 4491, 3471, 2915, 1911, # 6454
|
| 284 |
+
2796, 7781, 3296, 1122, 377, 3220, 7782, 360, 7783, 7784, 4200, 1529, 551, 7785, 2059, 3693, # 6470
|
| 285 |
+
1769, 2426, 7786, 2916, 4201, 3297, 3097, 2322, 2108, 2030, 4492, 1404, 136, 1468, 1479, 672, # 6486
|
| 286 |
+
1171, 3221, 2303, 271, 3151, 7787, 2762, 7788, 2049, 678, 2727, 865, 1947, 4493, 7789, 2013, # 6502
|
| 287 |
+
3995, 2956, 7790, 2728, 2223, 1397, 3048, 3694, 4494, 4495, 1735, 2917, 3366, 3576, 7791, 3816, # 6518
|
| 288 |
+
509, 2841, 2453, 2876, 3817, 7792, 7793, 3152, 3153, 4496, 4202, 2531, 4497, 2304, 1166, 1010, # 6534
|
| 289 |
+
552, 681, 1887, 7794, 7795, 2957, 2958, 3996, 1287, 1596, 1861, 3154, 358, 453, 736, 175, # 6550
|
| 290 |
+
478, 1117, 905, 1167, 1097, 7796, 1853, 1530, 7797, 1706, 7798, 2178, 3472, 2287, 3695, 3473, # 6566
|
| 291 |
+
3577, 4203, 2092, 4204, 7799, 3367, 1193, 2482, 4205, 1458, 2190, 2205, 1862, 1888, 1421, 3298, # 6582
|
| 292 |
+
2918, 3049, 2179, 3474, 595, 2122, 7800, 3997, 7801, 7802, 4206, 1707, 2636, 223, 3696, 1359, # 6598
|
| 293 |
+
751, 3098, 183, 3475, 7803, 2797, 3003, 419, 2369, 633, 704, 3818, 2389, 241, 7804, 7805, # 6614
|
| 294 |
+
7806, 838, 3004, 3697, 2272, 2763, 2454, 3819, 1938, 2050, 3998, 1309, 3099, 2242, 1181, 7807, # 6630
|
| 295 |
+
1136, 2206, 3820, 2370, 1446, 4207, 2305, 4498, 7808, 7809, 4208, 1055, 2605, 484, 3698, 7810, # 6646
|
| 296 |
+
3999, 625, 4209, 2273, 3368, 1499, 4210, 4000, 7811, 4001, 4211, 3222, 2274, 2275, 3476, 7812, # 6662
|
| 297 |
+
7813, 2764, 808, 2606, 3699, 3369, 4002, 4212, 3100, 2532, 526, 3370, 3821, 4213, 955, 7814, # 6678
|
| 298 |
+
1620, 4214, 2637, 2427, 7815, 1429, 3700, 1669, 1831, 994, 928, 7816, 3578, 1260, 7817, 7818, # 6694
|
| 299 |
+
7819, 1948, 2288, 741, 2919, 1626, 4215, 2729, 2455, 867, 1184, 362, 3371, 1392, 7820, 7821, # 6710
|
| 300 |
+
4003, 4216, 1770, 1736, 3223, 2920, 4499, 4500, 1928, 2698, 1459, 1158, 7822, 3050, 3372, 2877, # 6726
|
| 301 |
+
1292, 1929, 2506, 2842, 3701, 1985, 1187, 2071, 2014, 2607, 4217, 7823, 2566, 2507, 2169, 3702, # 6742
|
| 302 |
+
2483, 3299, 7824, 3703, 4501, 7825, 7826, 666, 1003, 3005, 1022, 3579, 4218, 7827, 4502, 1813, # 6758
|
| 303 |
+
2253, 574, 3822, 1603, 295, 1535, 705, 3823, 4219, 283, 858, 417, 7828, 7829, 3224, 4503, # 6774
|
| 304 |
+
4504, 3051, 1220, 1889, 1046, 2276, 2456, 4004, 1393, 1599, 689, 2567, 388, 4220, 7830, 2484, # 6790
|
| 305 |
+
802, 7831, 2798, 3824, 2060, 1405, 2254, 7832, 4505, 3825, 2109, 1052, 1345, 3225, 1585, 7833, # 6806
|
| 306 |
+
809, 7834, 7835, 7836, 575, 2730, 3477, 956, 1552, 1469, 1144, 2323, 7837, 2324, 1560, 2457, # 6822
|
| 307 |
+
3580, 3226, 4005, 616, 2207, 3155, 2180, 2289, 7838, 1832, 7839, 3478, 4506, 7840, 1319, 3704, # 6838
|
| 308 |
+
3705, 1211, 3581, 1023, 3227, 1293, 2799, 7841, 7842, 7843, 3826, 607, 2306, 3827, 762, 2878, # 6854
|
| 309 |
+
1439, 4221, 1360, 7844, 1485, 3052, 7845, 4507, 1038, 4222, 1450, 2061, 2638, 4223, 1379, 4508, # 6870
|
| 310 |
+
2585, 7846, 7847, 4224, 1352, 1414, 2325, 2921, 1172, 7848, 7849, 3828, 3829, 7850, 1797, 1451, # 6886
|
| 311 |
+
7851, 7852, 7853, 7854, 2922, 4006, 4007, 2485, 2346, 411, 4008, 4009, 3582, 3300, 3101, 4509, # 6902
|
| 312 |
+
1561, 2664, 1452, 4010, 1375, 7855, 7856, 47, 2959, 316, 7857, 1406, 1591, 2923, 3156, 7858, # 6918
|
| 313 |
+
1025, 2141, 3102, 3157, 354, 2731, 884, 2224, 4225, 2407, 508, 3706, 726, 3583, 996, 2428, # 6934
|
| 314 |
+
3584, 729, 7859, 392, 2191, 1453, 4011, 4510, 3707, 7860, 7861, 2458, 3585, 2608, 1675, 2800, # 6950
|
| 315 |
+
919, 2347, 2960, 2348, 1270, 4511, 4012, 73, 7862, 7863, 647, 7864, 3228, 2843, 2255, 1550, # 6966
|
| 316 |
+
1346, 3006, 7865, 1332, 883, 3479, 7866, 7867, 7868, 7869, 3301, 2765, 7870, 1212, 831, 1347, # 6982
|
| 317 |
+
4226, 4512, 2326, 3830, 1863, 3053, 720, 3831, 4513, 4514, 3832, 7871, 4227, 7872, 7873, 4515, # 6998
|
| 318 |
+
7874, 7875, 1798, 4516, 3708, 2609, 4517, 3586, 1645, 2371, 7876, 7877, 2924, 669, 2208, 2665, # 7014
|
| 319 |
+
2429, 7878, 2879, 7879, 7880, 1028, 3229, 7881, 4228, 2408, 7882, 2256, 1353, 7883, 7884, 4518, # 7030
|
| 320 |
+
3158, 518, 7885, 4013, 7886, 4229, 1960, 7887, 2142, 4230, 7888, 7889, 3007, 2349, 2350, 3833, # 7046
|
| 321 |
+
516, 1833, 1454, 4014, 2699, 4231, 4519, 2225, 2610, 1971, 1129, 3587, 7890, 2766, 7891, 2961, # 7062
|
| 322 |
+
1422, 577, 1470, 3008, 1524, 3373, 7892, 7893, 432, 4232, 3054, 3480, 7894, 2586, 1455, 2508, # 7078
|
| 323 |
+
2226, 1972, 1175, 7895, 1020, 2732, 4015, 3481, 4520, 7896, 2733, 7897, 1743, 1361, 3055, 3482, # 7094
|
| 324 |
+
2639, 4016, 4233, 4521, 2290, 895, 924, 4234, 2170, 331, 2243, 3056, 166, 1627, 3057, 1098, # 7110
|
| 325 |
+
7898, 1232, 2880, 2227, 3374, 4522, 657, 403, 1196, 2372, 542, 3709, 3375, 1600, 4235, 3483, # 7126
|
| 326 |
+
7899, 4523, 2767, 3230, 576, 530, 1362, 7900, 4524, 2533, 2666, 3710, 4017, 7901, 842, 3834, # 7142
|
| 327 |
+
7902, 2801, 2031, 1014, 4018, 213, 2700, 3376, 665, 621, 4236, 7903, 3711, 2925, 2430, 7904, # 7158
|
| 328 |
+
2431, 3302, 3588, 3377, 7905, 4237, 2534, 4238, 4525, 3589, 1682, 4239, 3484, 1380, 7906, 724, # 7174
|
| 329 |
+
2277, 600, 1670, 7907, 1337, 1233, 4526, 3103, 2244, 7908, 1621, 4527, 7909, 651, 4240, 7910, # 7190
|
| 330 |
+
1612, 4241, 2611, 7911, 2844, 7912, 2734, 2307, 3058, 7913, 716, 2459, 3059, 174, 1255, 2701, # 7206
|
| 331 |
+
4019, 3590, 548, 1320, 1398, 728, 4020, 1574, 7914, 1890, 1197, 3060, 4021, 7915, 3061, 3062, # 7222
|
| 332 |
+
3712, 3591, 3713, 747, 7916, 635, 4242, 4528, 7917, 7918, 7919, 4243, 7920, 7921, 4529, 7922, # 7238
|
| 333 |
+
3378, 4530, 2432, 451, 7923, 3714, 2535, 2072, 4244, 2735, 4245, 4022, 7924, 1764, 4531, 7925, # 7254
|
| 334 |
+
4246, 350, 7926, 2278, 2390, 2486, 7927, 4247, 4023, 2245, 1434, 4024, 488, 4532, 458, 4248, # 7270
|
| 335 |
+
4025, 3715, 771, 1330, 2391, 3835, 2568, 3159, 2159, 2409, 1553, 2667, 3160, 4249, 7928, 2487, # 7286
|
| 336 |
+
2881, 2612, 1720, 2702, 4250, 3379, 4533, 7929, 2536, 4251, 7930, 3231, 4252, 2768, 7931, 2015, # 7302
|
| 337 |
+
2736, 7932, 1155, 1017, 3716, 3836, 7933, 3303, 2308, 201, 1864, 4253, 1430, 7934, 4026, 7935, # 7318
|
| 338 |
+
7936, 7937, 7938, 7939, 4254, 1604, 7940, 414, 1865, 371, 2587, 4534, 4535, 3485, 2016, 3104, # 7334
|
| 339 |
+
4536, 1708, 960, 4255, 887, 389, 2171, 1536, 1663, 1721, 7941, 2228, 4027, 2351, 2926, 1580, # 7350
|
| 340 |
+
7942, 7943, 7944, 1744, 7945, 2537, 4537, 4538, 7946, 4539, 7947, 2073, 7948, 7949, 3592, 3380, # 7366
|
| 341 |
+
2882, 4256, 7950, 4257, 2640, 3381, 2802, 673, 2703, 2460, 709, 3486, 4028, 3593, 4258, 7951, # 7382
|
| 342 |
+
1148, 502, 634, 7952, 7953, 1204, 4540, 3594, 1575, 4541, 2613, 3717, 7954, 3718, 3105, 948, # 7398
|
| 343 |
+
3232, 121, 1745, 3837, 1110, 7955, 4259, 3063, 2509, 3009, 4029, 3719, 1151, 1771, 3838, 1488, # 7414
|
| 344 |
+
4030, 1986, 7956, 2433, 3487, 7957, 7958, 2093, 7959, 4260, 3839, 1213, 1407, 2803, 531, 2737, # 7430
|
| 345 |
+
2538, 3233, 1011, 1537, 7960, 2769, 4261, 3106, 1061, 7961, 3720, 3721, 1866, 2883, 7962, 2017, # 7446
|
| 346 |
+
120, 4262, 4263, 2062, 3595, 3234, 2309, 3840, 2668, 3382, 1954, 4542, 7963, 7964, 3488, 1047, # 7462
|
| 347 |
+
2704, 1266, 7965, 1368, 4543, 2845, 649, 3383, 3841, 2539, 2738, 1102, 2846, 2669, 7966, 7967, # 7478
|
| 348 |
+
1999, 7968, 1111, 3596, 2962, 7969, 2488, 3842, 3597, 2804, 1854, 3384, 3722, 7970, 7971, 3385, # 7494
|
| 349 |
+
2410, 2884, 3304, 3235, 3598, 7972, 2569, 7973, 3599, 2805, 4031, 1460, 856, 7974, 3600, 7975, # 7510
|
| 350 |
+
2885, 2963, 7976, 2886, 3843, 7977, 4264, 632, 2510, 875, 3844, 1697, 3845, 2291, 7978, 7979, # 7526
|
| 351 |
+
4544, 3010, 1239, 580, 4545, 4265, 7980, 914, 936, 2074, 1190, 4032, 1039, 2123, 7981, 7982, # 7542
|
| 352 |
+
7983, 3386, 1473, 7984, 1354, 4266, 3846, 7985, 2172, 3064, 4033, 915, 3305, 4267, 4268, 3306, # 7558
|
| 353 |
+
1605, 1834, 7986, 2739, 398, 3601, 4269, 3847, 4034, 328, 1912, 2847, 4035, 3848, 1331, 4270, # 7574
|
| 354 |
+
3011, 937, 4271, 7987, 3602, 4036, 4037, 3387, 2160, 4546, 3388, 524, 742, 538, 3065, 1012, # 7590
|
| 355 |
+
7988, 7989, 3849, 2461, 7990, 658, 1103, 225, 3850, 7991, 7992, 4547, 7993, 4548, 7994, 3236, # 7606
|
| 356 |
+
1243, 7995, 4038, 963, 2246, 4549, 7996, 2705, 3603, 3161, 7997, 7998, 2588, 2327, 7999, 4550, # 7622
|
| 357 |
+
8000, 8001, 8002, 3489, 3307, 957, 3389, 2540, 2032, 1930, 2927, 2462, 870, 2018, 3604, 1746, # 7638
|
| 358 |
+
2770, 2771, 2434, 2463, 8003, 3851, 8004, 3723, 3107, 3724, 3490, 3390, 3725, 8005, 1179, 3066, # 7654
|
| 359 |
+
8006, 3162, 2373, 4272, 3726, 2541, 3163, 3108, 2740, 4039, 8007, 3391, 1556, 2542, 2292, 977, # 7670
|
| 360 |
+
2887, 2033, 4040, 1205, 3392, 8008, 1765, 3393, 3164, 2124, 1271, 1689, 714, 4551, 3491, 8009, # 7686
|
| 361 |
+
2328, 3852, 533, 4273, 3605, 2181, 617, 8010, 2464, 3308, 3492, 2310, 8011, 8012, 3165, 8013, # 7702
|
| 362 |
+
8014, 3853, 1987, 618, 427, 2641, 3493, 3394, 8015, 8016, 1244, 1690, 8017, 2806, 4274, 4552, # 7718
|
| 363 |
+
8018, 3494, 8019, 8020, 2279, 1576, 473, 3606, 4275, 3395, 972, 8021, 3607, 8022, 3067, 8023, # 7734
|
| 364 |
+
8024, 4553, 4554, 8025, 3727, 4041, 4042, 8026, 153, 4555, 356, 8027, 1891, 2888, 4276, 2143, # 7750
|
| 365 |
+
408, 803, 2352, 8028, 3854, 8029, 4277, 1646, 2570, 2511, 4556, 4557, 3855, 8030, 3856, 4278, # 7766
|
| 366 |
+
8031, 2411, 3396, 752, 8032, 8033, 1961, 2964, 8034, 746, 3012, 2465, 8035, 4279, 3728, 698, # 7782
|
| 367 |
+
4558, 1892, 4280, 3608, 2543, 4559, 3609, 3857, 8036, 3166, 3397, 8037, 1823, 1302, 4043, 2706, # 7798
|
| 368 |
+
3858, 1973, 4281, 8038, 4282, 3167, 823, 1303, 1288, 1236, 2848, 3495, 4044, 3398, 774, 3859, # 7814
|
| 369 |
+
8039, 1581, 4560, 1304, 2849, 3860, 4561, 8040, 2435, 2161, 1083, 3237, 4283, 4045, 4284, 344, # 7830
|
| 370 |
+
1173, 288, 2311, 454, 1683, 8041, 8042, 1461, 4562, 4046, 2589, 8043, 8044, 4563, 985, 894, # 7846
|
| 371 |
+
8045, 3399, 3168, 8046, 1913, 2928, 3729, 1988, 8047, 2110, 1974, 8048, 4047, 8049, 2571, 1194, # 7862
|
| 372 |
+
425, 8050, 4564, 3169, 1245, 3730, 4285, 8051, 8052, 2850, 8053, 636, 4565, 1855, 3861, 760, # 7878
|
| 373 |
+
1799, 8054, 4286, 2209, 1508, 4566, 4048, 1893, 1684, 2293, 8055, 8056, 8057, 4287, 4288, 2210, # 7894
|
| 374 |
+
479, 8058, 8059, 832, 8060, 4049, 2489, 8061, 2965, 2490, 3731, 990, 3109, 627, 1814, 2642, # 7910
|
| 375 |
+
4289, 1582, 4290, 2125, 2111, 3496, 4567, 8062, 799, 4291, 3170, 8063, 4568, 2112, 1737, 3013, # 7926
|
| 376 |
+
1018, 543, 754, 4292, 3309, 1676, 4569, 4570, 4050, 8064, 1489, 8065, 3497, 8066, 2614, 2889, # 7942
|
| 377 |
+
4051, 8067, 8068, 2966, 8069, 8070, 8071, 8072, 3171, 4571, 4572, 2182, 1722, 8073, 3238, 3239, # 7958
|
| 378 |
+
1842, 3610, 1715, 481, 365, 1975, 1856, 8074, 8075, 1962, 2491, 4573, 8076, 2126, 3611, 3240, # 7974
|
| 379 |
+
433, 1894, 2063, 2075, 8077, 602, 2741, 8078, 8079, 8080, 8081, 8082, 3014, 1628, 3400, 8083, # 7990
|
| 380 |
+
3172, 4574, 4052, 2890, 4575, 2512, 8084, 2544, 2772, 8085, 8086, 8087, 3310, 4576, 2891, 8088, # 8006
|
| 381 |
+
4577, 8089, 2851, 4578, 4579, 1221, 2967, 4053, 2513, 8090, 8091, 8092, 1867, 1989, 8093, 8094, # 8022
|
| 382 |
+
8095, 1895, 8096, 8097, 4580, 1896, 4054, 318, 8098, 2094, 4055, 4293, 8099, 8100, 485, 8101, # 8038
|
| 383 |
+
938, 3862, 553, 2670, 116, 8102, 3863, 3612, 8103, 3498, 2671, 2773, 3401, 3311, 2807, 8104, # 8054
|
| 384 |
+
3613, 2929, 4056, 1747, 2930, 2968, 8105, 8106, 207, 8107, 8108, 2672, 4581, 2514, 8109, 3015, # 8070
|
| 385 |
+
890, 3614, 3864, 8110, 1877, 3732, 3402, 8111, 2183, 2353, 3403, 1652, 8112, 8113, 8114, 941, # 8086
|
| 386 |
+
2294, 208, 3499, 4057, 2019, 330, 4294, 3865, 2892, 2492, 3733, 4295, 8115, 8116, 8117, 8118, # 8102
|
| 387 |
+
)
|
| 388 |
+
# fmt: on
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312freq.py
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Communicator client code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
# GB2312 most frequently used character table
|
| 29 |
+
#
|
| 30 |
+
# Char to FreqOrder table , from hz6763
|
| 31 |
+
|
| 32 |
+
# 512 --> 0.79 -- 0.79
|
| 33 |
+
# 1024 --> 0.92 -- 0.13
|
| 34 |
+
# 2048 --> 0.98 -- 0.06
|
| 35 |
+
# 6768 --> 1.00 -- 0.02
|
| 36 |
+
#
|
| 37 |
+
# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79
|
| 38 |
+
# Random Distribution Ration = 512 / (3755 - 512) = 0.157
|
| 39 |
+
#
|
| 40 |
+
# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR
|
| 41 |
+
|
| 42 |
+
GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9
|
| 43 |
+
|
| 44 |
+
GB2312_TABLE_SIZE = 3760
|
| 45 |
+
|
| 46 |
+
# fmt: off
|
| 47 |
+
GB2312_CHAR_TO_FREQ_ORDER = (
|
| 48 |
+
1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205,
|
| 49 |
+
2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842,
|
| 50 |
+
2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409,
|
| 51 |
+
249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670,
|
| 52 |
+
1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820,
|
| 53 |
+
1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585,
|
| 54 |
+
152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566,
|
| 55 |
+
1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575,
|
| 56 |
+
2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853,
|
| 57 |
+
3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061,
|
| 58 |
+
544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155,
|
| 59 |
+
1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406,
|
| 60 |
+
927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816,
|
| 61 |
+
2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606,
|
| 62 |
+
360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023,
|
| 63 |
+
2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414,
|
| 64 |
+
1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513,
|
| 65 |
+
3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052,
|
| 66 |
+
198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570,
|
| 67 |
+
1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575,
|
| 68 |
+
253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250,
|
| 69 |
+
2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506,
|
| 70 |
+
1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26,
|
| 71 |
+
3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835,
|
| 72 |
+
1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686,
|
| 73 |
+
2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054,
|
| 74 |
+
1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894,
|
| 75 |
+
585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105,
|
| 76 |
+
3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403,
|
| 77 |
+
3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694,
|
| 78 |
+
252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873,
|
| 79 |
+
3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940,
|
| 80 |
+
836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121,
|
| 81 |
+
1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648,
|
| 82 |
+
3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992,
|
| 83 |
+
2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233,
|
| 84 |
+
1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157,
|
| 85 |
+
755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807,
|
| 86 |
+
1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094,
|
| 87 |
+
4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258,
|
| 88 |
+
887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478,
|
| 89 |
+
3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152,
|
| 90 |
+
3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909,
|
| 91 |
+
509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272,
|
| 92 |
+
1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221,
|
| 93 |
+
2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252,
|
| 94 |
+
1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301,
|
| 95 |
+
1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254,
|
| 96 |
+
389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070,
|
| 97 |
+
3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461,
|
| 98 |
+
3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360,
|
| 99 |
+
4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124,
|
| 100 |
+
296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535,
|
| 101 |
+
3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243,
|
| 102 |
+
1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713,
|
| 103 |
+
1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071,
|
| 104 |
+
4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442,
|
| 105 |
+
215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946,
|
| 106 |
+
814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257,
|
| 107 |
+
3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180,
|
| 108 |
+
1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427,
|
| 109 |
+
602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781,
|
| 110 |
+
1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724,
|
| 111 |
+
2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937,
|
| 112 |
+
930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943,
|
| 113 |
+
432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789,
|
| 114 |
+
396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552,
|
| 115 |
+
3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246,
|
| 116 |
+
4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451,
|
| 117 |
+
3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310,
|
| 118 |
+
750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860,
|
| 119 |
+
2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297,
|
| 120 |
+
2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780,
|
| 121 |
+
2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745,
|
| 122 |
+
776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936,
|
| 123 |
+
2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032,
|
| 124 |
+
968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657,
|
| 125 |
+
163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414,
|
| 126 |
+
220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976,
|
| 127 |
+
3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436,
|
| 128 |
+
2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254,
|
| 129 |
+
2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536,
|
| 130 |
+
1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238,
|
| 131 |
+
18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059,
|
| 132 |
+
2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741,
|
| 133 |
+
90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447,
|
| 134 |
+
286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601,
|
| 135 |
+
1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269,
|
| 136 |
+
1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894,
|
| 137 |
+
915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173,
|
| 138 |
+
681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994,
|
| 139 |
+
1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956,
|
| 140 |
+
2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437,
|
| 141 |
+
3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154,
|
| 142 |
+
2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240,
|
| 143 |
+
2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143,
|
| 144 |
+
2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634,
|
| 145 |
+
3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472,
|
| 146 |
+
1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541,
|
| 147 |
+
1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143,
|
| 148 |
+
2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312,
|
| 149 |
+
1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414,
|
| 150 |
+
3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754,
|
| 151 |
+
1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424,
|
| 152 |
+
1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302,
|
| 153 |
+
3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739,
|
| 154 |
+
795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004,
|
| 155 |
+
2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484,
|
| 156 |
+
1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739,
|
| 157 |
+
4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535,
|
| 158 |
+
1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641,
|
| 159 |
+
1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307,
|
| 160 |
+
3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573,
|
| 161 |
+
1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533,
|
| 162 |
+
47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965,
|
| 163 |
+
504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99,
|
| 164 |
+
1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280,
|
| 165 |
+
160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505,
|
| 166 |
+
1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012,
|
| 167 |
+
1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039,
|
| 168 |
+
744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982,
|
| 169 |
+
3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530,
|
| 170 |
+
4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392,
|
| 171 |
+
3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656,
|
| 172 |
+
2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220,
|
| 173 |
+
2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766,
|
| 174 |
+
1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535,
|
| 175 |
+
3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728,
|
| 176 |
+
2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338,
|
| 177 |
+
1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627,
|
| 178 |
+
1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885,
|
| 179 |
+
125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411,
|
| 180 |
+
2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671,
|
| 181 |
+
2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162,
|
| 182 |
+
3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774,
|
| 183 |
+
4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524,
|
| 184 |
+
3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346,
|
| 185 |
+
180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040,
|
| 186 |
+
3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188,
|
| 187 |
+
2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280,
|
| 188 |
+
1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131,
|
| 189 |
+
259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947,
|
| 190 |
+
774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970,
|
| 191 |
+
3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814,
|
| 192 |
+
4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557,
|
| 193 |
+
2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997,
|
| 194 |
+
1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972,
|
| 195 |
+
1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369,
|
| 196 |
+
766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376,
|
| 197 |
+
1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480,
|
| 198 |
+
3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610,
|
| 199 |
+
955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128,
|
| 200 |
+
642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769,
|
| 201 |
+
1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207,
|
| 202 |
+
57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392,
|
| 203 |
+
1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623,
|
| 204 |
+
193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782,
|
| 205 |
+
2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650,
|
| 206 |
+
158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478,
|
| 207 |
+
2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773,
|
| 208 |
+
2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007,
|
| 209 |
+
1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323,
|
| 210 |
+
1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598,
|
| 211 |
+
2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961,
|
| 212 |
+
819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302,
|
| 213 |
+
1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409,
|
| 214 |
+
1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683,
|
| 215 |
+
2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191,
|
| 216 |
+
2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616,
|
| 217 |
+
3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302,
|
| 218 |
+
1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774,
|
| 219 |
+
4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147,
|
| 220 |
+
571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731,
|
| 221 |
+
845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464,
|
| 222 |
+
3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377,
|
| 223 |
+
1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315,
|
| 224 |
+
470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557,
|
| 225 |
+
3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903,
|
| 226 |
+
1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060,
|
| 227 |
+
4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261,
|
| 228 |
+
1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092,
|
| 229 |
+
2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810,
|
| 230 |
+
1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708,
|
| 231 |
+
498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658,
|
| 232 |
+
1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871,
|
| 233 |
+
3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503,
|
| 234 |
+
448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229,
|
| 235 |
+
2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112,
|
| 236 |
+
136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504,
|
| 237 |
+
1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389,
|
| 238 |
+
1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27,
|
| 239 |
+
1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542,
|
| 240 |
+
3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861,
|
| 241 |
+
2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845,
|
| 242 |
+
3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700,
|
| 243 |
+
3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469,
|
| 244 |
+
3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582,
|
| 245 |
+
996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999,
|
| 246 |
+
2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274,
|
| 247 |
+
786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020,
|
| 248 |
+
2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601,
|
| 249 |
+
12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628,
|
| 250 |
+
1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31,
|
| 251 |
+
475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668,
|
| 252 |
+
233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778,
|
| 253 |
+
1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169,
|
| 254 |
+
3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667,
|
| 255 |
+
3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881,
|
| 256 |
+
1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276,
|
| 257 |
+
1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320,
|
| 258 |
+
3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751,
|
| 259 |
+
2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432,
|
| 260 |
+
2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772,
|
| 261 |
+
1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843,
|
| 262 |
+
3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116,
|
| 263 |
+
451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904,
|
| 264 |
+
4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652,
|
| 265 |
+
1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664,
|
| 266 |
+
2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770,
|
| 267 |
+
3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283,
|
| 268 |
+
3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626,
|
| 269 |
+
1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713,
|
| 270 |
+
768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333,
|
| 271 |
+
391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062,
|
| 272 |
+
2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555,
|
| 273 |
+
931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014,
|
| 274 |
+
1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510,
|
| 275 |
+
386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015,
|
| 276 |
+
1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459,
|
| 277 |
+
1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390,
|
| 278 |
+
1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238,
|
| 279 |
+
1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232,
|
| 280 |
+
1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624,
|
| 281 |
+
381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189,
|
| 282 |
+
852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512
|
| 283 |
+
)
|
| 284 |
+
# fmt: on
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/gb2312prober.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from .chardistribution import GB2312DistributionAnalysis
|
| 29 |
+
from .codingstatemachine import CodingStateMachine
|
| 30 |
+
from .mbcharsetprober import MultiByteCharSetProber
|
| 31 |
+
from .mbcssm import GB2312_SM_MODEL
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class GB2312Prober(MultiByteCharSetProber):
|
| 35 |
+
def __init__(self) -> None:
|
| 36 |
+
super().__init__()
|
| 37 |
+
self.coding_sm = CodingStateMachine(GB2312_SM_MODEL)
|
| 38 |
+
self.distribution_analyzer = GB2312DistributionAnalysis()
|
| 39 |
+
self.reset()
|
| 40 |
+
|
| 41 |
+
@property
|
| 42 |
+
def charset_name(self) -> str:
|
| 43 |
+
return "GB2312"
|
| 44 |
+
|
| 45 |
+
@property
|
| 46 |
+
def language(self) -> str:
|
| 47 |
+
return "Chinese"
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/hebrewprober.py
ADDED
|
@@ -0,0 +1,316 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Shy Shalom
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 2005
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import Optional, Union
|
| 29 |
+
|
| 30 |
+
from .charsetprober import CharSetProber
|
| 31 |
+
from .enums import ProbingState
|
| 32 |
+
from .sbcharsetprober import SingleByteCharSetProber
|
| 33 |
+
|
| 34 |
+
# This prober doesn't actually recognize a language or a charset.
|
| 35 |
+
# It is a helper prober for the use of the Hebrew model probers
|
| 36 |
+
|
| 37 |
+
### General ideas of the Hebrew charset recognition ###
|
| 38 |
+
#
|
| 39 |
+
# Four main charsets exist in Hebrew:
|
| 40 |
+
# "ISO-8859-8" - Visual Hebrew
|
| 41 |
+
# "windows-1255" - Logical Hebrew
|
| 42 |
+
# "ISO-8859-8-I" - Logical Hebrew
|
| 43 |
+
# "x-mac-hebrew" - ?? Logical Hebrew ??
|
| 44 |
+
#
|
| 45 |
+
# Both "ISO" charsets use a completely identical set of code points, whereas
|
| 46 |
+
# "windows-1255" and "x-mac-hebrew" are two different proper supersets of
|
| 47 |
+
# these code points. windows-1255 defines additional characters in the range
|
| 48 |
+
# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific
|
| 49 |
+
# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6.
|
| 50 |
+
# x-mac-hebrew defines similar additional code points but with a different
|
| 51 |
+
# mapping.
|
| 52 |
+
#
|
| 53 |
+
# As far as an average Hebrew text with no diacritics is concerned, all four
|
| 54 |
+
# charsets are identical with respect to code points. Meaning that for the
|
| 55 |
+
# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters
|
| 56 |
+
# (including final letters).
|
| 57 |
+
#
|
| 58 |
+
# The dominant difference between these charsets is their directionality.
|
| 59 |
+
# "Visual" directionality means that the text is ordered as if the renderer is
|
| 60 |
+
# not aware of a BIDI rendering algorithm. The renderer sees the text and
|
| 61 |
+
# draws it from left to right. The text itself when ordered naturally is read
|
| 62 |
+
# backwards. A buffer of Visual Hebrew generally looks like so:
|
| 63 |
+
# "[last word of first line spelled backwards] [whole line ordered backwards
|
| 64 |
+
# and spelled backwards] [first word of first line spelled backwards]
|
| 65 |
+
# [end of line] [last word of second line] ... etc' "
|
| 66 |
+
# adding punctuation marks, numbers and English text to visual text is
|
| 67 |
+
# naturally also "visual" and from left to right.
|
| 68 |
+
#
|
| 69 |
+
# "Logical" directionality means the text is ordered "naturally" according to
|
| 70 |
+
# the order it is read. It is the responsibility of the renderer to display
|
| 71 |
+
# the text from right to left. A BIDI algorithm is used to place general
|
| 72 |
+
# punctuation marks, numbers and English text in the text.
|
| 73 |
+
#
|
| 74 |
+
# Texts in x-mac-hebrew are almost impossible to find on the Internet. From
|
| 75 |
+
# what little evidence I could find, it seems that its general directionality
|
| 76 |
+
# is Logical.
|
| 77 |
+
#
|
| 78 |
+
# To sum up all of the above, the Hebrew probing mechanism knows about two
|
| 79 |
+
# charsets:
|
| 80 |
+
# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are
|
| 81 |
+
# backwards while line order is natural. For charset recognition purposes
|
| 82 |
+
# the line order is unimportant (In fact, for this implementation, even
|
| 83 |
+
# word order is unimportant).
|
| 84 |
+
# Logical Hebrew - "windows-1255" - normal, naturally ordered text.
|
| 85 |
+
#
|
| 86 |
+
# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be
|
| 87 |
+
# specifically identified.
|
| 88 |
+
# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew
|
| 89 |
+
# that contain special punctuation marks or diacritics is displayed with
|
| 90 |
+
# some unconverted characters showing as question marks. This problem might
|
| 91 |
+
# be corrected using another model prober for x-mac-hebrew. Due to the fact
|
| 92 |
+
# that x-mac-hebrew texts are so rare, writing another model prober isn't
|
| 93 |
+
# worth the effort and performance hit.
|
| 94 |
+
#
|
| 95 |
+
#### The Prober ####
|
| 96 |
+
#
|
| 97 |
+
# The prober is divided between two SBCharSetProbers and a HebrewProber,
|
| 98 |
+
# all of which are managed, created, fed data, inquired and deleted by the
|
| 99 |
+
# SBCSGroupProber. The two SBCharSetProbers identify that the text is in
|
| 100 |
+
# fact some kind of Hebrew, Logical or Visual. The final decision about which
|
| 101 |
+
# one is it is made by the HebrewProber by combining final-letter scores
|
| 102 |
+
# with the scores of the two SBCharSetProbers to produce a final answer.
|
| 103 |
+
#
|
| 104 |
+
# The SBCSGroupProber is responsible for stripping the original text of HTML
|
| 105 |
+
# tags, English characters, numbers, low-ASCII punctuation characters, spaces
|
| 106 |
+
# and new lines. It reduces any sequence of such characters to a single space.
|
| 107 |
+
# The buffer fed to each prober in the SBCS group prober is pure text in
|
| 108 |
+
# high-ASCII.
|
| 109 |
+
# The two SBCharSetProbers (model probers) share the same language model:
|
| 110 |
+
# Win1255Model.
|
| 111 |
+
# The first SBCharSetProber uses the model normally as any other
|
| 112 |
+
# SBCharSetProber does, to recognize windows-1255, upon which this model was
|
| 113 |
+
# built. The second SBCharSetProber is told to make the pair-of-letter
|
| 114 |
+
# lookup in the language model backwards. This in practice exactly simulates
|
| 115 |
+
# a visual Hebrew model using the windows-1255 logical Hebrew model.
|
| 116 |
+
#
|
| 117 |
+
# The HebrewProber is not using any language model. All it does is look for
|
| 118 |
+
# final-letter evidence suggesting the text is either logical Hebrew or visual
|
| 119 |
+
# Hebrew. Disjointed from the model probers, the results of the HebrewProber
|
| 120 |
+
# alone are meaningless. HebrewProber always returns 0.00 as confidence
|
| 121 |
+
# since it never identifies a charset by itself. Instead, the pointer to the
|
| 122 |
+
# HebrewProber is passed to the model probers as a helper "Name Prober".
|
| 123 |
+
# When the Group prober receives a positive identification from any prober,
|
| 124 |
+
# it asks for the name of the charset identified. If the prober queried is a
|
| 125 |
+
# Hebrew model prober, the model prober forwards the call to the
|
| 126 |
+
# HebrewProber to make the final decision. In the HebrewProber, the
|
| 127 |
+
# decision is made according to the final-letters scores maintained and Both
|
| 128 |
+
# model probers scores. The answer is returned in the form of the name of the
|
| 129 |
+
# charset identified, either "windows-1255" or "ISO-8859-8".
|
| 130 |
+
|
| 131 |
+
|
| 132 |
+
class HebrewProber(CharSetProber):
|
| 133 |
+
SPACE = 0x20
|
| 134 |
+
# windows-1255 / ISO-8859-8 code points of interest
|
| 135 |
+
FINAL_KAF = 0xEA
|
| 136 |
+
NORMAL_KAF = 0xEB
|
| 137 |
+
FINAL_MEM = 0xED
|
| 138 |
+
NORMAL_MEM = 0xEE
|
| 139 |
+
FINAL_NUN = 0xEF
|
| 140 |
+
NORMAL_NUN = 0xF0
|
| 141 |
+
FINAL_PE = 0xF3
|
| 142 |
+
NORMAL_PE = 0xF4
|
| 143 |
+
FINAL_TSADI = 0xF5
|
| 144 |
+
NORMAL_TSADI = 0xF6
|
| 145 |
+
|
| 146 |
+
# Minimum Visual vs Logical final letter score difference.
|
| 147 |
+
# If the difference is below this, don't rely solely on the final letter score
|
| 148 |
+
# distance.
|
| 149 |
+
MIN_FINAL_CHAR_DISTANCE = 5
|
| 150 |
+
|
| 151 |
+
# Minimum Visual vs Logical model score difference.
|
| 152 |
+
# If the difference is below this, don't rely at all on the model score
|
| 153 |
+
# distance.
|
| 154 |
+
MIN_MODEL_DISTANCE = 0.01
|
| 155 |
+
|
| 156 |
+
VISUAL_HEBREW_NAME = "ISO-8859-8"
|
| 157 |
+
LOGICAL_HEBREW_NAME = "windows-1255"
|
| 158 |
+
|
| 159 |
+
def __init__(self) -> None:
|
| 160 |
+
super().__init__()
|
| 161 |
+
self._final_char_logical_score = 0
|
| 162 |
+
self._final_char_visual_score = 0
|
| 163 |
+
self._prev = self.SPACE
|
| 164 |
+
self._before_prev = self.SPACE
|
| 165 |
+
self._logical_prober: Optional[SingleByteCharSetProber] = None
|
| 166 |
+
self._visual_prober: Optional[SingleByteCharSetProber] = None
|
| 167 |
+
self.reset()
|
| 168 |
+
|
| 169 |
+
def reset(self) -> None:
|
| 170 |
+
self._final_char_logical_score = 0
|
| 171 |
+
self._final_char_visual_score = 0
|
| 172 |
+
# The two last characters seen in the previous buffer,
|
| 173 |
+
# mPrev and mBeforePrev are initialized to space in order to simulate
|
| 174 |
+
# a word delimiter at the beginning of the data
|
| 175 |
+
self._prev = self.SPACE
|
| 176 |
+
self._before_prev = self.SPACE
|
| 177 |
+
# These probers are owned by the group prober.
|
| 178 |
+
|
| 179 |
+
def set_model_probers(
|
| 180 |
+
self,
|
| 181 |
+
logical_prober: SingleByteCharSetProber,
|
| 182 |
+
visual_prober: SingleByteCharSetProber,
|
| 183 |
+
) -> None:
|
| 184 |
+
self._logical_prober = logical_prober
|
| 185 |
+
self._visual_prober = visual_prober
|
| 186 |
+
|
| 187 |
+
def is_final(self, c: int) -> bool:
|
| 188 |
+
return c in [
|
| 189 |
+
self.FINAL_KAF,
|
| 190 |
+
self.FINAL_MEM,
|
| 191 |
+
self.FINAL_NUN,
|
| 192 |
+
self.FINAL_PE,
|
| 193 |
+
self.FINAL_TSADI,
|
| 194 |
+
]
|
| 195 |
+
|
| 196 |
+
def is_non_final(self, c: int) -> bool:
|
| 197 |
+
# The normal Tsadi is not a good Non-Final letter due to words like
|
| 198 |
+
# 'lechotet' (to chat) containing an apostrophe after the tsadi. This
|
| 199 |
+
# apostrophe is converted to a space in FilterWithoutEnglishLetters
|
| 200 |
+
# causing the Non-Final tsadi to appear at an end of a word even
|
| 201 |
+
# though this is not the case in the original text.
|
| 202 |
+
# The letters Pe and Kaf rarely display a related behavior of not being
|
| 203 |
+
# a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak'
|
| 204 |
+
# for example legally end with a Non-Final Pe or Kaf. However, the
|
| 205 |
+
# benefit of these letters as Non-Final letters outweighs the damage
|
| 206 |
+
# since these words are quite rare.
|
| 207 |
+
return c in [self.NORMAL_KAF, self.NORMAL_MEM, self.NORMAL_NUN, self.NORMAL_PE]
|
| 208 |
+
|
| 209 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 210 |
+
# Final letter analysis for logical-visual decision.
|
| 211 |
+
# Look for evidence that the received buffer is either logical Hebrew
|
| 212 |
+
# or visual Hebrew.
|
| 213 |
+
# The following cases are checked:
|
| 214 |
+
# 1) A word longer than 1 letter, ending with a final letter. This is
|
| 215 |
+
# an indication that the text is laid out "naturally" since the
|
| 216 |
+
# final letter really appears at the end. +1 for logical score.
|
| 217 |
+
# 2) A word longer than 1 letter, ending with a Non-Final letter. In
|
| 218 |
+
# normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi,
|
| 219 |
+
# should not end with the Non-Final form of that letter. Exceptions
|
| 220 |
+
# to this rule are mentioned above in isNonFinal(). This is an
|
| 221 |
+
# indication that the text is laid out backwards. +1 for visual
|
| 222 |
+
# score
|
| 223 |
+
# 3) A word longer than 1 letter, starting with a final letter. Final
|
| 224 |
+
# letters should not appear at the beginning of a word. This is an
|
| 225 |
+
# indication that the text is laid out backwards. +1 for visual
|
| 226 |
+
# score.
|
| 227 |
+
#
|
| 228 |
+
# The visual score and logical score are accumulated throughout the
|
| 229 |
+
# text and are finally checked against each other in GetCharSetName().
|
| 230 |
+
# No checking for final letters in the middle of words is done since
|
| 231 |
+
# that case is not an indication for either Logical or Visual text.
|
| 232 |
+
#
|
| 233 |
+
# We automatically filter out all 7-bit characters (replace them with
|
| 234 |
+
# spaces) so the word boundary detection works properly. [MAP]
|
| 235 |
+
|
| 236 |
+
if self.state == ProbingState.NOT_ME:
|
| 237 |
+
# Both model probers say it's not them. No reason to continue.
|
| 238 |
+
return ProbingState.NOT_ME
|
| 239 |
+
|
| 240 |
+
byte_str = self.filter_high_byte_only(byte_str)
|
| 241 |
+
|
| 242 |
+
for cur in byte_str:
|
| 243 |
+
if cur == self.SPACE:
|
| 244 |
+
# We stand on a space - a word just ended
|
| 245 |
+
if self._before_prev != self.SPACE:
|
| 246 |
+
# next-to-last char was not a space so self._prev is not a
|
| 247 |
+
# 1 letter word
|
| 248 |
+
if self.is_final(self._prev):
|
| 249 |
+
# case (1) [-2:not space][-1:final letter][cur:space]
|
| 250 |
+
self._final_char_logical_score += 1
|
| 251 |
+
elif self.is_non_final(self._prev):
|
| 252 |
+
# case (2) [-2:not space][-1:Non-Final letter][
|
| 253 |
+
# cur:space]
|
| 254 |
+
self._final_char_visual_score += 1
|
| 255 |
+
else:
|
| 256 |
+
# Not standing on a space
|
| 257 |
+
if (
|
| 258 |
+
(self._before_prev == self.SPACE)
|
| 259 |
+
and (self.is_final(self._prev))
|
| 260 |
+
and (cur != self.SPACE)
|
| 261 |
+
):
|
| 262 |
+
# case (3) [-2:space][-1:final letter][cur:not space]
|
| 263 |
+
self._final_char_visual_score += 1
|
| 264 |
+
self._before_prev = self._prev
|
| 265 |
+
self._prev = cur
|
| 266 |
+
|
| 267 |
+
# Forever detecting, till the end or until both model probers return
|
| 268 |
+
# ProbingState.NOT_ME (handled above)
|
| 269 |
+
return ProbingState.DETECTING
|
| 270 |
+
|
| 271 |
+
@property
|
| 272 |
+
def charset_name(self) -> str:
|
| 273 |
+
assert self._logical_prober is not None
|
| 274 |
+
assert self._visual_prober is not None
|
| 275 |
+
|
| 276 |
+
# Make the decision: is it Logical or Visual?
|
| 277 |
+
# If the final letter score distance is dominant enough, rely on it.
|
| 278 |
+
finalsub = self._final_char_logical_score - self._final_char_visual_score
|
| 279 |
+
if finalsub >= self.MIN_FINAL_CHAR_DISTANCE:
|
| 280 |
+
return self.LOGICAL_HEBREW_NAME
|
| 281 |
+
if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE:
|
| 282 |
+
return self.VISUAL_HEBREW_NAME
|
| 283 |
+
|
| 284 |
+
# It's not dominant enough, try to rely on the model scores instead.
|
| 285 |
+
modelsub = (
|
| 286 |
+
self._logical_prober.get_confidence() - self._visual_prober.get_confidence()
|
| 287 |
+
)
|
| 288 |
+
if modelsub > self.MIN_MODEL_DISTANCE:
|
| 289 |
+
return self.LOGICAL_HEBREW_NAME
|
| 290 |
+
if modelsub < -self.MIN_MODEL_DISTANCE:
|
| 291 |
+
return self.VISUAL_HEBREW_NAME
|
| 292 |
+
|
| 293 |
+
# Still no good, back to final letter distance, maybe it'll save the
|
| 294 |
+
# day.
|
| 295 |
+
if finalsub < 0.0:
|
| 296 |
+
return self.VISUAL_HEBREW_NAME
|
| 297 |
+
|
| 298 |
+
# (finalsub > 0 - Logical) or (don't know what to do) default to
|
| 299 |
+
# Logical.
|
| 300 |
+
return self.LOGICAL_HEBREW_NAME
|
| 301 |
+
|
| 302 |
+
@property
|
| 303 |
+
def language(self) -> str:
|
| 304 |
+
return "Hebrew"
|
| 305 |
+
|
| 306 |
+
@property
|
| 307 |
+
def state(self) -> ProbingState:
|
| 308 |
+
assert self._logical_prober is not None
|
| 309 |
+
assert self._visual_prober is not None
|
| 310 |
+
|
| 311 |
+
# Remain active as long as any of the model probers are active.
|
| 312 |
+
if (self._logical_prober.state == ProbingState.NOT_ME) and (
|
| 313 |
+
self._visual_prober.state == ProbingState.NOT_ME
|
| 314 |
+
):
|
| 315 |
+
return ProbingState.NOT_ME
|
| 316 |
+
return ProbingState.DETECTING
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/jisfreq.py
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Communicator client code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
# Sampling from about 20M text materials include literature and computer technology
|
| 29 |
+
#
|
| 30 |
+
# Japanese frequency table, applied to both S-JIS and EUC-JP
|
| 31 |
+
# They are sorted in order.
|
| 32 |
+
|
| 33 |
+
# 128 --> 0.77094
|
| 34 |
+
# 256 --> 0.85710
|
| 35 |
+
# 512 --> 0.92635
|
| 36 |
+
# 1024 --> 0.97130
|
| 37 |
+
# 2048 --> 0.99431
|
| 38 |
+
#
|
| 39 |
+
# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58
|
| 40 |
+
# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191
|
| 41 |
+
#
|
| 42 |
+
# Typical Distribution Ratio, 25% of IDR
|
| 43 |
+
|
| 44 |
+
JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0
|
| 45 |
+
|
| 46 |
+
# Char to FreqOrder table ,
|
| 47 |
+
JIS_TABLE_SIZE = 4368
|
| 48 |
+
|
| 49 |
+
# fmt: off
|
| 50 |
+
JIS_CHAR_TO_FREQ_ORDER = (
|
| 51 |
+
40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16
|
| 52 |
+
3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32
|
| 53 |
+
1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48
|
| 54 |
+
2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64
|
| 55 |
+
2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80
|
| 56 |
+
5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96
|
| 57 |
+
1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112
|
| 58 |
+
5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128
|
| 59 |
+
5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144
|
| 60 |
+
5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160
|
| 61 |
+
5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176
|
| 62 |
+
5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192
|
| 63 |
+
5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208
|
| 64 |
+
1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224
|
| 65 |
+
1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240
|
| 66 |
+
1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256
|
| 67 |
+
2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272
|
| 68 |
+
3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288
|
| 69 |
+
3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304
|
| 70 |
+
4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320
|
| 71 |
+
12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336
|
| 72 |
+
1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352
|
| 73 |
+
109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368
|
| 74 |
+
5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384
|
| 75 |
+
271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400
|
| 76 |
+
32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416
|
| 77 |
+
43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432
|
| 78 |
+
280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448
|
| 79 |
+
54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464
|
| 80 |
+
5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480
|
| 81 |
+
5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496
|
| 82 |
+
5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512
|
| 83 |
+
4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528
|
| 84 |
+
5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544
|
| 85 |
+
5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560
|
| 86 |
+
5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576
|
| 87 |
+
5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592
|
| 88 |
+
5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608
|
| 89 |
+
5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624
|
| 90 |
+
5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640
|
| 91 |
+
5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656
|
| 92 |
+
5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672
|
| 93 |
+
3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688
|
| 94 |
+
5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704
|
| 95 |
+
5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720
|
| 96 |
+
5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736
|
| 97 |
+
5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752
|
| 98 |
+
5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768
|
| 99 |
+
5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784
|
| 100 |
+
5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800
|
| 101 |
+
5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816
|
| 102 |
+
5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832
|
| 103 |
+
5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848
|
| 104 |
+
5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864
|
| 105 |
+
5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880
|
| 106 |
+
5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896
|
| 107 |
+
5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912
|
| 108 |
+
5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928
|
| 109 |
+
5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944
|
| 110 |
+
5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960
|
| 111 |
+
5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976
|
| 112 |
+
5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992
|
| 113 |
+
5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008
|
| 114 |
+
5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024
|
| 115 |
+
5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040
|
| 116 |
+
5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056
|
| 117 |
+
5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072
|
| 118 |
+
5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088
|
| 119 |
+
5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104
|
| 120 |
+
5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120
|
| 121 |
+
5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136
|
| 122 |
+
5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152
|
| 123 |
+
5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168
|
| 124 |
+
5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184
|
| 125 |
+
5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200
|
| 126 |
+
5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216
|
| 127 |
+
5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232
|
| 128 |
+
5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248
|
| 129 |
+
5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264
|
| 130 |
+
5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280
|
| 131 |
+
5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296
|
| 132 |
+
6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312
|
| 133 |
+
6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328
|
| 134 |
+
6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344
|
| 135 |
+
6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360
|
| 136 |
+
6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376
|
| 137 |
+
6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392
|
| 138 |
+
6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408
|
| 139 |
+
6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424
|
| 140 |
+
4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440
|
| 141 |
+
854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456
|
| 142 |
+
665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472
|
| 143 |
+
1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488
|
| 144 |
+
1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504
|
| 145 |
+
896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520
|
| 146 |
+
3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536
|
| 147 |
+
3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552
|
| 148 |
+
804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568
|
| 149 |
+
3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584
|
| 150 |
+
3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600
|
| 151 |
+
586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616
|
| 152 |
+
2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632
|
| 153 |
+
277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648
|
| 154 |
+
3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664
|
| 155 |
+
1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680
|
| 156 |
+
380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696
|
| 157 |
+
1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712
|
| 158 |
+
850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728
|
| 159 |
+
2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744
|
| 160 |
+
2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760
|
| 161 |
+
2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776
|
| 162 |
+
2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792
|
| 163 |
+
1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808
|
| 164 |
+
1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824
|
| 165 |
+
1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840
|
| 166 |
+
1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856
|
| 167 |
+
2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872
|
| 168 |
+
1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888
|
| 169 |
+
2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904
|
| 170 |
+
1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920
|
| 171 |
+
1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936
|
| 172 |
+
1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952
|
| 173 |
+
1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968
|
| 174 |
+
1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984
|
| 175 |
+
1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000
|
| 176 |
+
606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016
|
| 177 |
+
684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032
|
| 178 |
+
1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048
|
| 179 |
+
2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064
|
| 180 |
+
2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080
|
| 181 |
+
2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096
|
| 182 |
+
3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112
|
| 183 |
+
3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128
|
| 184 |
+
884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144
|
| 185 |
+
3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160
|
| 186 |
+
1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176
|
| 187 |
+
861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192
|
| 188 |
+
2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208
|
| 189 |
+
1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224
|
| 190 |
+
576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240
|
| 191 |
+
3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256
|
| 192 |
+
4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272
|
| 193 |
+
2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288
|
| 194 |
+
1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304
|
| 195 |
+
2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320
|
| 196 |
+
1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336
|
| 197 |
+
385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352
|
| 198 |
+
178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368
|
| 199 |
+
1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384
|
| 200 |
+
2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400
|
| 201 |
+
2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416
|
| 202 |
+
2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432
|
| 203 |
+
3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448
|
| 204 |
+
1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464
|
| 205 |
+
2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480
|
| 206 |
+
359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496
|
| 207 |
+
837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512
|
| 208 |
+
855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528
|
| 209 |
+
1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544
|
| 210 |
+
2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560
|
| 211 |
+
633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576
|
| 212 |
+
1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592
|
| 213 |
+
1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608
|
| 214 |
+
353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624
|
| 215 |
+
1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640
|
| 216 |
+
1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656
|
| 217 |
+
1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672
|
| 218 |
+
764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688
|
| 219 |
+
2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704
|
| 220 |
+
278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720
|
| 221 |
+
2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736
|
| 222 |
+
3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752
|
| 223 |
+
2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768
|
| 224 |
+
1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784
|
| 225 |
+
6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800
|
| 226 |
+
1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816
|
| 227 |
+
2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832
|
| 228 |
+
1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848
|
| 229 |
+
470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864
|
| 230 |
+
72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880
|
| 231 |
+
3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896
|
| 232 |
+
3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912
|
| 233 |
+
1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928
|
| 234 |
+
1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944
|
| 235 |
+
1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960
|
| 236 |
+
1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976
|
| 237 |
+
123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992
|
| 238 |
+
913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008
|
| 239 |
+
2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024
|
| 240 |
+
900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040
|
| 241 |
+
3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056
|
| 242 |
+
2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072
|
| 243 |
+
423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088
|
| 244 |
+
1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104
|
| 245 |
+
2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120
|
| 246 |
+
220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136
|
| 247 |
+
1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152
|
| 248 |
+
745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168
|
| 249 |
+
4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184
|
| 250 |
+
2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200
|
| 251 |
+
1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216
|
| 252 |
+
666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232
|
| 253 |
+
1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248
|
| 254 |
+
2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264
|
| 255 |
+
376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280
|
| 256 |
+
6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296
|
| 257 |
+
1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312
|
| 258 |
+
1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328
|
| 259 |
+
2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344
|
| 260 |
+
3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360
|
| 261 |
+
914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376
|
| 262 |
+
3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392
|
| 263 |
+
1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408
|
| 264 |
+
674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424
|
| 265 |
+
1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440
|
| 266 |
+
199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456
|
| 267 |
+
3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472
|
| 268 |
+
370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488
|
| 269 |
+
2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504
|
| 270 |
+
414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520
|
| 271 |
+
4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536
|
| 272 |
+
2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552
|
| 273 |
+
1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568
|
| 274 |
+
1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584
|
| 275 |
+
1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600
|
| 276 |
+
166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616
|
| 277 |
+
1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632
|
| 278 |
+
3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648
|
| 279 |
+
1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664
|
| 280 |
+
3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680
|
| 281 |
+
264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696
|
| 282 |
+
543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712
|
| 283 |
+
983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728
|
| 284 |
+
2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744
|
| 285 |
+
1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760
|
| 286 |
+
867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776
|
| 287 |
+
1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792
|
| 288 |
+
894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808
|
| 289 |
+
1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824
|
| 290 |
+
530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840
|
| 291 |
+
839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856
|
| 292 |
+
480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872
|
| 293 |
+
1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888
|
| 294 |
+
1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904
|
| 295 |
+
2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920
|
| 296 |
+
4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936
|
| 297 |
+
227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952
|
| 298 |
+
1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968
|
| 299 |
+
328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984
|
| 300 |
+
1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000
|
| 301 |
+
3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016
|
| 302 |
+
1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032
|
| 303 |
+
2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048
|
| 304 |
+
2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064
|
| 305 |
+
1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080
|
| 306 |
+
1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096
|
| 307 |
+
2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112
|
| 308 |
+
455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128
|
| 309 |
+
2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144
|
| 310 |
+
1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160
|
| 311 |
+
1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176
|
| 312 |
+
1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192
|
| 313 |
+
1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208
|
| 314 |
+
3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224
|
| 315 |
+
2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240
|
| 316 |
+
2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256
|
| 317 |
+
575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272
|
| 318 |
+
3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288
|
| 319 |
+
3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304
|
| 320 |
+
1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320
|
| 321 |
+
2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336
|
| 322 |
+
1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352
|
| 323 |
+
2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512
|
| 324 |
+
)
|
| 325 |
+
# fmt: on
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/jpcntx.py
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Communicator client code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import List, Tuple, Union
|
| 29 |
+
|
| 30 |
+
# This is hiragana 2-char sequence table, the number in each cell represents its frequency category
|
| 31 |
+
# fmt: off
|
| 32 |
+
jp2_char_context = (
|
| 33 |
+
(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
|
| 34 |
+
(2, 4, 0, 4, 0, 3, 0, 4, 0, 3, 4, 4, 4, 2, 4, 3, 3, 4, 3, 2, 3, 3, 4, 2, 3, 3, 3, 2, 4, 1, 4, 3, 3, 1, 5, 4, 3, 4, 3, 4, 3, 5, 3, 0, 3, 5, 4, 2, 0, 3, 1, 0, 3, 3, 0, 3, 3, 0, 1, 1, 0, 4, 3, 0, 3, 3, 0, 4, 0, 2, 0, 3, 5, 5, 5, 5, 4, 0, 4, 1, 0, 3, 4),
|
| 35 |
+
(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2),
|
| 36 |
+
(0, 4, 0, 5, 0, 5, 0, 4, 0, 4, 5, 4, 4, 3, 5, 3, 5, 1, 5, 3, 4, 3, 4, 4, 3, 4, 3, 3, 4, 3, 5, 4, 4, 3, 5, 5, 3, 5, 5, 5, 3, 5, 5, 3, 4, 5, 5, 3, 1, 3, 2, 0, 3, 4, 0, 4, 2, 0, 4, 2, 1, 5, 3, 2, 3, 5, 0, 4, 0, 2, 0, 5, 4, 4, 5, 4, 5, 0, 4, 0, 0, 4, 4),
|
| 37 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
| 38 |
+
(0, 3, 0, 4, 0, 3, 0, 3, 0, 4, 5, 4, 3, 3, 3, 3, 4, 3, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 4, 4, 4, 4, 5, 3, 4, 4, 3, 4, 5, 5, 4, 5, 5, 1, 4, 5, 4, 3, 0, 3, 3, 1, 3, 3, 0, 4, 4, 0, 3, 3, 1, 5, 3, 3, 3, 5, 0, 4, 0, 3, 0, 4, 4, 3, 4, 3, 3, 0, 4, 1, 1, 3, 4),
|
| 39 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
| 40 |
+
(0, 4, 0, 3, 0, 3, 0, 4, 0, 3, 4, 4, 3, 2, 2, 1, 2, 1, 3, 1, 3, 3, 3, 3, 3, 4, 3, 1, 3, 3, 5, 3, 3, 0, 4, 3, 0, 5, 4, 3, 3, 5, 4, 4, 3, 4, 4, 5, 0, 1, 2, 0, 1, 2, 0, 2, 2, 0, 1, 0, 0, 5, 2, 2, 1, 4, 0, 3, 0, 1, 0, 4, 4, 3, 5, 4, 3, 0, 2, 1, 0, 4, 3),
|
| 41 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
| 42 |
+
(0, 3, 0, 5, 0, 4, 0, 2, 1, 4, 4, 2, 4, 1, 4, 2, 4, 2, 4, 3, 3, 3, 4, 3, 3, 3, 3, 1, 4, 2, 3, 3, 3, 1, 4, 4, 1, 1, 1, 4, 3, 3, 2, 0, 2, 4, 3, 2, 0, 3, 3, 0, 3, 1, 1, 0, 0, 0, 3, 3, 0, 4, 2, 2, 3, 4, 0, 4, 0, 3, 0, 4, 4, 5, 3, 4, 4, 0, 3, 0, 0, 1, 4),
|
| 43 |
+
(1, 4, 0, 4, 0, 4, 0, 4, 0, 3, 5, 4, 4, 3, 4, 3, 5, 4, 3, 3, 4, 3, 5, 4, 4, 4, 4, 3, 4, 2, 4, 3, 3, 1, 5, 4, 3, 2, 4, 5, 4, 5, 5, 4, 4, 5, 4, 4, 0, 3, 2, 2, 3, 3, 0, 4, 3, 1, 3, 2, 1, 4, 3, 3, 4, 5, 0, 3, 0, 2, 0, 4, 5, 5, 4, 5, 4, 0, 4, 0, 0, 5, 4),
|
| 44 |
+
(0, 5, 0, 5, 0, 4, 0, 3, 0, 4, 4, 3, 4, 3, 3, 3, 4, 0, 4, 4, 4, 3, 4, 3, 4, 3, 3, 1, 4, 2, 4, 3, 4, 0, 5, 4, 1, 4, 5, 4, 4, 5, 3, 2, 4, 3, 4, 3, 2, 4, 1, 3, 3, 3, 2, 3, 2, 0, 4, 3, 3, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 5, 4, 4, 4, 3, 0, 4, 1, 0, 1, 3),
|
| 45 |
+
(0, 3, 1, 4, 0, 3, 0, 2, 0, 3, 4, 4, 3, 1, 4, 2, 3, 3, 4, 3, 4, 3, 4, 3, 4, 4, 3, 2, 3, 1, 5, 4, 4, 1, 4, 4, 3, 5, 4, 4, 3, 5, 5, 4, 3, 4, 4, 3, 1, 2, 3, 1, 2, 2, 0, 3, 2, 0, 3, 1, 0, 5, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 4, 4, 5, 4, 2, 0, 3, 3, 2, 4, 3),
|
| 46 |
+
(0, 2, 0, 3, 0, 1, 0, 1, 0, 0, 3, 2, 0, 0, 2, 0, 1, 0, 2, 1, 3, 3, 3, 1, 2, 3, 1, 0, 1, 0, 4, 2, 1, 1, 3, 3, 0, 4, 3, 3, 1, 4, 3, 3, 0, 3, 3, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 4, 1, 0, 2, 3, 2, 2, 2, 1, 3, 3, 3, 4, 4, 3, 2, 0, 3, 1, 0, 3, 3),
|
| 47 |
+
(0, 4, 0, 4, 0, 3, 0, 3, 0, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 3, 4, 2, 4, 3, 4, 3, 3, 2, 4, 3, 4, 5, 4, 1, 4, 5, 3, 5, 4, 5, 3, 5, 4, 0, 3, 5, 5, 3, 1, 3, 3, 2, 2, 3, 0, 3, 4, 1, 3, 3, 2, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 5, 4, 4, 5, 3, 0, 4, 1, 0, 3, 4),
|
| 48 |
+
(0, 2, 0, 3, 0, 3, 0, 0, 0, 2, 2, 2, 1, 0, 1, 0, 0, 0, 3, 0, 3, 0, 3, 0, 1, 3, 1, 0, 3, 1, 3, 3, 3, 1, 3, 3, 3, 0, 1, 3, 1, 3, 4, 0, 0, 3, 1, 1, 0, 3, 2, 0, 0, 0, 0, 1, 3, 0, 1, 0, 0, 3, 3, 2, 0, 3, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 3, 0, 3, 0, 0, 2, 3),
|
| 49 |
+
(2, 3, 0, 3, 0, 2, 0, 1, 0, 3, 3, 4, 3, 1, 3, 1, 1, 1, 3, 1, 4, 3, 4, 3, 3, 3, 0, 0, 3, 1, 5, 4, 3, 1, 4, 3, 2, 5, 5, 4, 4, 4, 4, 3, 3, 4, 4, 4, 0, 2, 1, 1, 3, 2, 0, 1, 2, 0, 0, 1, 0, 4, 1, 3, 3, 3, 0, 3, 0, 1, 0, 4, 4, 4, 5, 5, 3, 0, 2, 0, 0, 4, 4),
|
| 50 |
+
(0, 2, 0, 1, 0, 3, 1, 3, 0, 2, 3, 3, 3, 0, 3, 1, 0, 0, 3, 0, 3, 2, 3, 1, 3, 2, 1, 1, 0, 0, 4, 2, 1, 0, 2, 3, 1, 4, 3, 2, 0, 4, 4, 3, 1, 3, 1, 3, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 4, 1, 1, 1, 2, 0, 3, 0, 0, 0, 3, 4, 2, 4, 3, 2, 0, 1, 0, 0, 3, 3),
|
| 51 |
+
(0, 1, 0, 4, 0, 5, 0, 4, 0, 2, 4, 4, 2, 3, 3, 2, 3, 3, 5, 3, 3, 3, 4, 3, 4, 2, 3, 0, 4, 3, 3, 3, 4, 1, 4, 3, 2, 1, 5, 5, 3, 4, 5, 1, 3, 5, 4, 2, 0, 3, 3, 0, 1, 3, 0, 4, 2, 0, 1, 3, 1, 4, 3, 3, 3, 3, 0, 3, 0, 1, 0, 3, 4, 4, 4, 5, 5, 0, 3, 0, 1, 4, 5),
|
| 52 |
+
(0, 2, 0, 3, 0, 3, 0, 0, 0, 2, 3, 1, 3, 0, 4, 0, 1, 1, 3, 0, 3, 4, 3, 2, 3, 1, 0, 3, 3, 2, 3, 1, 3, 0, 2, 3, 0, 2, 1, 4, 1, 2, 2, 0, 0, 3, 3, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 3, 2, 1, 3, 3, 0, 2, 0, 2, 0, 0, 3, 3, 1, 2, 4, 0, 3, 0, 2, 2, 3),
|
| 53 |
+
(2, 4, 0, 5, 0, 4, 0, 4, 0, 2, 4, 4, 4, 3, 4, 3, 3, 3, 1, 2, 4, 3, 4, 3, 4, 4, 5, 0, 3, 3, 3, 3, 2, 0, 4, 3, 1, 4, 3, 4, 1, 4, 4, 3, 3, 4, 4, 3, 1, 2, 3, 0, 4, 2, 0, 4, 1, 0, 3, 3, 0, 4, 3, 3, 3, 4, 0, 4, 0, 2, 0, 3, 5, 3, 4, 5, 2, 0, 3, 0, 0, 4, 5),
|
| 54 |
+
(0, 3, 0, 4, 0, 1, 0, 1, 0, 1, 3, 2, 2, 1, 3, 0, 3, 0, 2, 0, 2, 0, 3, 0, 2, 0, 0, 0, 1, 0, 1, 1, 0, 0, 3, 1, 0, 0, 0, 4, 0, 3, 1, 0, 2, 1, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 2, 2, 3, 1, 0, 3, 0, 0, 0, 1, 4, 4, 4, 3, 0, 0, 4, 0, 0, 1, 4),
|
| 55 |
+
(1, 4, 1, 5, 0, 3, 0, 3, 0, 4, 5, 4, 4, 3, 5, 3, 3, 4, 4, 3, 4, 1, 3, 3, 3, 3, 2, 1, 4, 1, 5, 4, 3, 1, 4, 4, 3, 5, 4, 4, 3, 5, 4, 3, 3, 4, 4, 4, 0, 3, 3, 1, 2, 3, 0, 3, 1, 0, 3, 3, 0, 5, 4, 4, 4, 4, 4, 4, 3, 3, 5, 4, 4, 3, 3, 5, 4, 0, 3, 2, 0, 4, 4),
|
| 56 |
+
(0, 2, 0, 3, 0, 1, 0, 0, 0, 1, 3, 3, 3, 2, 4, 1, 3, 0, 3, 1, 3, 0, 2, 2, 1, 1, 0, 0, 2, 0, 4, 3, 1, 0, 4, 3, 0, 4, 4, 4, 1, 4, 3, 1, 1, 3, 3, 1, 0, 2, 0, 0, 1, 3, 0, 0, 0, 0, 2, 0, 0, 4, 3, 2, 4, 3, 5, 4, 3, 3, 3, 4, 3, 3, 4, 3, 3, 0, 2, 1, 0, 3, 3),
|
| 57 |
+
(0, 2, 0, 4, 0, 3, 0, 2, 0, 2, 5, 5, 3, 4, 4, 4, 4, 1, 4, 3, 3, 0, 4, 3, 4, 3, 1, 3, 3, 2, 4, 3, 0, 3, 4, 3, 0, 3, 4, 4, 2, 4, 4, 0, 4, 5, 3, 3, 2, 2, 1, 1, 1, 2, 0, 1, 5, 0, 3, 3, 2, 4, 3, 3, 3, 4, 0, 3, 0, 2, 0, 4, 4, 3, 5, 5, 0, 0, 3, 0, 2, 3, 3),
|
| 58 |
+
(0, 3, 0, 4, 0, 3, 0, 1, 0, 3, 4, 3, 3, 1, 3, 3, 3, 0, 3, 1, 3, 0, 4, 3, 3, 1, 1, 0, 3, 0, 3, 3, 0, 0, 4, 4, 0, 1, 5, 4, 3, 3, 5, 0, 3, 3, 4, 3, 0, 2, 0, 1, 1, 1, 0, 1, 3, 0, 1, 2, 1, 3, 3, 2, 3, 3, 0, 3, 0, 1, 0, 1, 3, 3, 4, 4, 1, 0, 1, 2, 2, 1, 3),
|
| 59 |
+
(0, 1, 0, 4, 0, 4, 0, 3, 0, 1, 3, 3, 3, 2, 3, 1, 1, 0, 3, 0, 3, 3, 4, 3, 2, 4, 2, 0, 1, 0, 4, 3, 2, 0, 4, 3, 0, 5, 3, 3, 2, 4, 4, 4, 3, 3, 3, 4, 0, 1, 3, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 4, 2, 3, 3, 3, 0, 3, 0, 0, 0, 4, 4, 4, 5, 3, 2, 0, 3, 3, 0, 3, 5),
|
| 60 |
+
(0, 2, 0, 3, 0, 0, 0, 3, 0, 1, 3, 0, 2, 0, 0, 0, 1, 0, 3, 1, 1, 3, 3, 0, 0, 3, 0, 0, 3, 0, 2, 3, 1, 0, 3, 1, 0, 3, 3, 2, 0, 4, 2, 2, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 1, 0, 1, 0, 0, 0, 1, 3, 1, 2, 0, 0, 0, 1, 0, 0, 1, 4),
|
| 61 |
+
(0, 3, 0, 3, 0, 5, 0, 1, 0, 2, 4, 3, 1, 3, 3, 2, 1, 1, 5, 2, 1, 0, 5, 1, 2, 0, 0, 0, 3, 3, 2, 2, 3, 2, 4, 3, 0, 0, 3, 3, 1, 3, 3, 0, 2, 5, 3, 4, 0, 3, 3, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 2, 2, 3, 3, 3, 0, 2, 0, 1, 0, 3, 4, 4, 2, 5, 4, 0, 3, 0, 0, 3, 5),
|
| 62 |
+
(0, 3, 0, 3, 0, 3, 0, 1, 0, 3, 3, 3, 3, 0, 3, 0, 2, 0, 2, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 1, 0, 0, 1, 0, 3, 2, 0, 0, 3, 3, 1, 2, 3, 1, 0, 3, 3, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 3, 1, 2, 3, 0, 3, 0, 1, 0, 3, 2, 1, 0, 4, 3, 0, 1, 1, 0, 3, 3),
|
| 63 |
+
(0, 4, 0, 5, 0, 3, 0, 3, 0, 4, 5, 5, 4, 3, 5, 3, 4, 3, 5, 3, 3, 2, 5, 3, 4, 4, 4, 3, 4, 3, 4, 5, 5, 3, 4, 4, 3, 4, 4, 5, 4, 4, 4, 3, 4, 5, 5, 4, 2, 3, 4, 2, 3, 4, 0, 3, 3, 1, 4, 3, 2, 4, 3, 3, 5, 5, 0, 3, 0, 3, 0, 5, 5, 5, 5, 4, 4, 0, 4, 0, 1, 4, 4),
|
| 64 |
+
(0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 5, 4, 4, 2, 3, 2, 5, 1, 3, 2, 5, 1, 4, 2, 3, 2, 3, 3, 4, 3, 3, 3, 3, 2, 5, 4, 1, 3, 3, 5, 3, 4, 4, 0, 4, 4, 3, 1, 1, 3, 1, 0, 2, 3, 0, 2, 3, 0, 3, 0, 0, 4, 3, 1, 3, 4, 0, 3, 0, 2, 0, 4, 4, 4, 3, 4, 5, 0, 4, 0, 0, 3, 4),
|
| 65 |
+
(0, 3, 0, 3, 0, 3, 1, 2, 0, 3, 4, 4, 3, 3, 3, 0, 2, 2, 4, 3, 3, 1, 3, 3, 3, 1, 1, 0, 3, 1, 4, 3, 2, 3, 4, 4, 2, 4, 4, 4, 3, 4, 4, 3, 2, 4, 4, 3, 1, 3, 3, 1, 3, 3, 0, 4, 1, 0, 2, 2, 1, 4, 3, 2, 3, 3, 5, 4, 3, 3, 5, 4, 4, 3, 3, 0, 4, 0, 3, 2, 2, 4, 4),
|
| 66 |
+
(0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 0, 0, 2, 0, 1, 2, 1, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 0, 3, 4, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1),
|
| 67 |
+
(0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 4, 1, 4, 0, 3, 0, 4, 0, 3, 0, 4, 0, 3, 0, 3, 0, 4, 1, 5, 1, 4, 0, 0, 3, 0, 5, 0, 5, 2, 0, 1, 0, 0, 0, 2, 1, 4, 0, 1, 3, 0, 0, 3, 0, 0, 3, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),
|
| 68 |
+
(1, 4, 0, 5, 0, 3, 0, 2, 0, 3, 5, 4, 4, 3, 4, 3, 5, 3, 4, 3, 3, 0, 4, 3, 3, 3, 3, 3, 3, 2, 4, 4, 3, 1, 3, 4, 4, 5, 4, 4, 3, 4, 4, 1, 3, 5, 4, 3, 3, 3, 1, 2, 2, 3, 3, 1, 3, 1, 3, 3, 3, 5, 3, 3, 4, 5, 0, 3, 0, 3, 0, 3, 4, 3, 4, 4, 3, 0, 3, 0, 2, 4, 3),
|
| 69 |
+
(0, 1, 0, 4, 0, 0, 0, 0, 0, 1, 4, 0, 4, 1, 4, 2, 4, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 3, 1, 1, 1, 0, 3, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 3, 2, 0, 2, 2, 0, 1, 0, 0, 0, 2, 3, 2, 3, 3, 0, 0, 0, 0, 2, 1, 0),
|
| 70 |
+
(0, 5, 1, 5, 0, 3, 0, 3, 0, 5, 4, 4, 5, 1, 5, 3, 3, 0, 4, 3, 4, 3, 5, 3, 4, 3, 3, 2, 4, 3, 4, 3, 3, 0, 3, 3, 1, 4, 4, 3, 4, 4, 4, 3, 4, 5, 5, 3, 2, 3, 1, 1, 3, 3, 1, 3, 1, 1, 3, 3, 2, 4, 5, 3, 3, 5, 0, 4, 0, 3, 0, 4, 4, 3, 5, 3, 3, 0, 3, 4, 0, 4, 3),
|
| 71 |
+
(0, 5, 0, 5, 0, 3, 0, 2, 0, 4, 4, 3, 5, 2, 4, 3, 3, 3, 4, 4, 4, 3, 5, 3, 5, 3, 3, 1, 4, 0, 4, 3, 3, 0, 3, 3, 0, 4, 4, 4, 4, 5, 4, 3, 3, 5, 5, 3, 2, 3, 1, 2, 3, 2, 0, 1, 0, 0, 3, 2, 2, 4, 4, 3, 1, 5, 0, 4, 0, 3, 0, 4, 3, 1, 3, 2, 1, 0, 3, 3, 0, 3, 3),
|
| 72 |
+
(0, 4, 0, 5, 0, 5, 0, 4, 0, 4, 5, 5, 5, 3, 4, 3, 3, 2, 5, 4, 4, 3, 5, 3, 5, 3, 4, 0, 4, 3, 4, 4, 3, 2, 4, 4, 3, 4, 5, 4, 4, 5, 5, 0, 3, 5, 5, 4, 1, 3, 3, 2, 3, 3, 1, 3, 1, 0, 4, 3, 1, 4, 4, 3, 4, 5, 0, 4, 0, 2, 0, 4, 3, 4, 4, 3, 3, 0, 4, 0, 0, 5, 5),
|
| 73 |
+
(0, 4, 0, 4, 0, 5, 0, 1, 1, 3, 3, 4, 4, 3, 4, 1, 3, 0, 5, 1, 3, 0, 3, 1, 3, 1, 1, 0, 3, 0, 3, 3, 4, 0, 4, 3, 0, 4, 4, 4, 3, 4, 4, 0, 3, 5, 4, 1, 0, 3, 0, 0, 2, 3, 0, 3, 1, 0, 3, 1, 0, 3, 2, 1, 3, 5, 0, 3, 0, 1, 0, 3, 2, 3, 3, 4, 4, 0, 2, 2, 0, 4, 4),
|
| 74 |
+
(2, 4, 0, 5, 0, 4, 0, 3, 0, 4, 5, 5, 4, 3, 5, 3, 5, 3, 5, 3, 5, 2, 5, 3, 4, 3, 3, 4, 3, 4, 5, 3, 2, 1, 5, 4, 3, 2, 3, 4, 5, 3, 4, 1, 2, 5, 4, 3, 0, 3, 3, 0, 3, 2, 0, 2, 3, 0, 4, 1, 0, 3, 4, 3, 3, 5, 0, 3, 0, 1, 0, 4, 5, 5, 5, 4, 3, 0, 4, 2, 0, 3, 5),
|
| 75 |
+
(0, 5, 0, 4, 0, 4, 0, 2, 0, 5, 4, 3, 4, 3, 4, 3, 3, 3, 4, 3, 4, 2, 5, 3, 5, 3, 4, 1, 4, 3, 4, 4, 4, 0, 3, 5, 0, 4, 4, 4, 4, 5, 3, 1, 3, 4, 5, 3, 3, 3, 3, 3, 3, 3, 0, 2, 2, 0, 3, 3, 2, 4, 3, 3, 3, 5, 3, 4, 1, 3, 3, 5, 3, 2, 0, 0, 0, 0, 4, 3, 1, 3, 3),
|
| 76 |
+
(0, 1, 0, 3, 0, 3, 0, 1, 0, 1, 3, 3, 3, 2, 3, 3, 3, 0, 3, 0, 0, 0, 3, 1, 3, 0, 0, 0, 2, 2, 2, 3, 0, 0, 3, 2, 0, 1, 2, 4, 1, 3, 3, 0, 0, 3, 3, 3, 0, 1, 0, 0, 2, 1, 0, 0, 3, 0, 3, 1, 0, 3, 0, 0, 1, 3, 0, 2, 0, 1, 0, 3, 3, 1, 3, 3, 0, 0, 1, 1, 0, 3, 3),
|
| 77 |
+
(0, 2, 0, 3, 0, 2, 1, 4, 0, 2, 2, 3, 1, 1, 3, 1, 1, 0, 2, 0, 3, 1, 2, 3, 1, 3, 0, 0, 1, 0, 4, 3, 2, 3, 3, 3, 1, 4, 2, 3, 3, 3, 3, 1, 0, 3, 1, 4, 0, 1, 1, 0, 1, 2, 0, 1, 1, 0, 1, 1, 0, 3, 1, 3, 2, 2, 0, 1, 0, 0, 0, 2, 3, 3, 3, 1, 0, 0, 0, 0, 0, 2, 3),
|
| 78 |
+
(0, 5, 0, 4, 0, 5, 0, 2, 0, 4, 5, 5, 3, 3, 4, 3, 3, 1, 5, 4, 4, 2, 4, 4, 4, 3, 4, 2, 4, 3, 5, 5, 4, 3, 3, 4, 3, 3, 5, 5, 4, 5, 5, 1, 3, 4, 5, 3, 1, 4, 3, 1, 3, 3, 0, 3, 3, 1, 4, 3, 1, 4, 5, 3, 3, 5, 0, 4, 0, 3, 0, 5, 3, 3, 1, 4, 3, 0, 4, 0, 1, 5, 3),
|
| 79 |
+
(0, 5, 0, 5, 0, 4, 0, 2, 0, 4, 4, 3, 4, 3, 3, 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, 5, 3, 3, 5, 2, 4, 4, 4, 3, 4, 4, 3, 3, 4, 4, 5, 5, 3, 3, 4, 3, 4, 3, 3, 4, 3, 3, 3, 3, 1, 2, 2, 1, 4, 3, 3, 5, 4, 4, 3, 4, 0, 4, 0, 3, 0, 4, 4, 4, 4, 4, 1, 0, 4, 2, 0, 2, 4),
|
| 80 |
+
(0, 4, 0, 4, 0, 3, 0, 1, 0, 3, 5, 2, 3, 0, 3, 0, 2, 1, 4, 2, 3, 3, 4, 1, 4, 3, 3, 2, 4, 1, 3, 3, 3, 0, 3, 3, 0, 0, 3, 3, 3, 5, 3, 3, 3, 3, 3, 2, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 1, 0, 0, 3, 1, 2, 2, 3, 0, 3, 0, 2, 0, 4, 4, 3, 3, 4, 1, 0, 3, 0, 0, 2, 4),
|
| 81 |
+
(0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 3, 1, 3, 0, 3, 2, 0, 0, 0, 1, 0, 3, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 2, 0, 0, 0, 0, 0, 0, 2),
|
| 82 |
+
(0, 2, 1, 3, 0, 2, 0, 2, 0, 3, 3, 3, 3, 1, 3, 1, 3, 3, 3, 3, 3, 3, 4, 2, 2, 1, 2, 1, 4, 0, 4, 3, 1, 3, 3, 3, 2, 4, 3, 5, 4, 3, 3, 3, 3, 3, 3, 3, 0, 1, 3, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 4, 2, 0, 2, 3, 0, 3, 3, 0, 3, 3, 4, 2, 3, 1, 4, 0, 1, 2, 0, 2, 3),
|
| 83 |
+
(0, 3, 0, 3, 0, 1, 0, 3, 0, 2, 3, 3, 3, 0, 3, 1, 2, 0, 3, 3, 2, 3, 3, 2, 3, 2, 3, 1, 3, 0, 4, 3, 2, 0, 3, 3, 1, 4, 3, 3, 2, 3, 4, 3, 1, 3, 3, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 4, 1, 1, 0, 3, 0, 3, 1, 0, 2, 3, 3, 3, 3, 3, 1, 0, 0, 2, 0, 3, 3),
|
| 84 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3),
|
| 85 |
+
(0, 2, 0, 3, 1, 3, 0, 3, 0, 2, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1, 3, 0, 2, 3, 1, 1, 4, 3, 3, 2, 3, 3, 1, 2, 2, 4, 1, 3, 3, 0, 1, 4, 2, 3, 0, 1, 3, 0, 3, 0, 0, 1, 3, 0, 2, 0, 0, 3, 3, 2, 1, 3, 0, 3, 0, 2, 0, 3, 4, 4, 4, 3, 1, 0, 3, 0, 0, 3, 3),
|
| 86 |
+
(0, 2, 0, 1, 0, 2, 0, 0, 0, 1, 3, 2, 2, 1, 3, 0, 1, 1, 3, 0, 3, 2, 3, 1, 2, 0, 2, 0, 1, 1, 3, 3, 3, 0, 3, 3, 1, 1, 2, 3, 2, 3, 3, 1, 2, 3, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 2, 1, 2, 1, 3, 0, 3, 0, 0, 0, 3, 4, 4, 4, 3, 2, 0, 2, 0, 0, 2, 4),
|
| 87 |
+
(0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0, 0, 3),
|
| 88 |
+
(0, 3, 0, 3, 0, 2, 0, 3, 0, 3, 3, 3, 2, 3, 2, 2, 2, 0, 3, 1, 3, 3, 3, 2, 3, 3, 0, 0, 3, 0, 3, 2, 2, 0, 2, 3, 1, 4, 3, 4, 3, 3, 2, 3, 1, 5, 4, 4, 0, 3, 1, 2, 1, 3, 0, 3, 1, 1, 2, 0, 2, 3, 1, 3, 1, 3, 0, 3, 0, 1, 0, 3, 3, 4, 4, 2, 1, 0, 2, 1, 0, 2, 4),
|
| 89 |
+
(0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 4, 2, 5, 1, 4, 0, 2, 0, 2, 1, 3, 1, 4, 0, 2, 1, 0, 0, 2, 1, 4, 1, 1, 0, 3, 3, 0, 5, 1, 3, 2, 3, 3, 1, 0, 3, 2, 3, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 1, 0, 3, 0, 2, 0, 1, 0, 3, 3, 3, 4, 3, 3, 0, 0, 0, 0, 2, 3),
|
| 90 |
+
(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 1, 0, 0, 0, 0, 0, 3),
|
| 91 |
+
(0, 1, 0, 3, 0, 4, 0, 3, 0, 2, 4, 3, 1, 0, 3, 2, 2, 1, 3, 1, 2, 2, 3, 1, 1, 1, 2, 1, 3, 0, 1, 2, 0, 1, 3, 2, 1, 3, 0, 5, 5, 1, 0, 0, 1, 3, 2, 1, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 3, 4, 0, 1, 1, 1, 3, 2, 0, 2, 0, 1, 0, 2, 3, 3, 1, 2, 3, 0, 1, 0, 1, 0, 4),
|
| 92 |
+
(0, 0, 0, 1, 0, 3, 0, 3, 0, 2, 2, 1, 0, 0, 4, 0, 3, 0, 3, 1, 3, 0, 3, 0, 3, 0, 1, 0, 3, 0, 3, 1, 3, 0, 3, 3, 0, 0, 1, 2, 1, 1, 1, 0, 1, 2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 3, 3, 3, 3, 0, 0, 0, 0, 1, 4),
|
| 93 |
+
(0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 3, 1, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 2, 3, 0, 0, 2, 2, 3, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 2, 3),
|
| 94 |
+
(2, 4, 0, 5, 0, 5, 0, 4, 0, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 2, 3, 0, 5, 5, 4, 1, 5, 4, 3, 1, 5, 4, 3, 4, 4, 3, 3, 4, 3, 3, 0, 3, 2, 0, 2, 3, 0, 3, 0, 0, 3, 3, 0, 5, 3, 2, 3, 3, 0, 3, 0, 3, 0, 3, 4, 5, 4, 5, 3, 0, 4, 3, 0, 3, 4),
|
| 95 |
+
(0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 3, 4, 3, 2, 3, 2, 3, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 2, 4, 3, 3, 1, 3, 4, 3, 4, 4, 4, 3, 4, 4, 3, 2, 4, 4, 1, 0, 2, 0, 0, 1, 1, 0, 2, 0, 0, 3, 1, 0, 5, 3, 2, 1, 3, 0, 3, 0, 1, 2, 4, 3, 2, 4, 3, 3, 0, 3, 2, 0, 4, 4),
|
| 96 |
+
(0, 3, 0, 3, 0, 1, 0, 0, 0, 1, 4, 3, 3, 2, 3, 1, 3, 1, 4, 2, 3, 2, 4, 2, 3, 4, 3, 0, 2, 2, 3, 3, 3, 0, 3, 3, 3, 0, 3, 4, 1, 3, 3, 0, 3, 4, 3, 3, 0, 1, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 0, 3, 1, 2, 1, 3, 0, 4, 0, 1, 0, 4, 3, 3, 4, 3, 3, 0, 2, 0, 0, 3, 3),
|
| 97 |
+
(0, 3, 0, 4, 0, 1, 0, 3, 0, 3, 4, 3, 3, 0, 3, 3, 3, 1, 3, 1, 3, 3, 4, 3, 3, 3, 0, 0, 3, 1, 5, 3, 3, 1, 3, 3, 2, 5, 4, 3, 3, 4, 5, 3, 2, 5, 3, 4, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 1, 1, 0, 4, 2, 2, 1, 3, 0, 3, 0, 2, 0, 4, 4, 3, 5, 3, 2, 0, 1, 1, 0, 3, 4),
|
| 98 |
+
(0, 5, 0, 4, 0, 5, 0, 2, 0, 4, 4, 3, 3, 2, 3, 3, 3, 1, 4, 3, 4, 1, 5, 3, 4, 3, 4, 0, 4, 2, 4, 3, 4, 1, 5, 4, 0, 4, 4, 4, 4, 5, 4, 1, 3, 5, 4, 2, 1, 4, 1, 1, 3, 2, 0, 3, 1, 0, 3, 2, 1, 4, 3, 3, 3, 4, 0, 4, 0, 3, 0, 4, 4, 4, 3, 3, 3, 0, 4, 2, 0, 3, 4),
|
| 99 |
+
(1, 4, 0, 4, 0, 3, 0, 1, 0, 3, 3, 3, 1, 1, 3, 3, 2, 2, 3, 3, 1, 0, 3, 2, 2, 1, 2, 0, 3, 1, 2, 1, 2, 0, 3, 2, 0, 2, 2, 3, 3, 4, 3, 0, 3, 3, 1, 2, 0, 1, 1, 3, 1, 2, 0, 0, 3, 0, 1, 1, 0, 3, 2, 2, 3, 3, 0, 3, 0, 0, 0, 2, 3, 3, 4, 3, 3, 0, 1, 0, 0, 1, 4),
|
| 100 |
+
(0, 4, 0, 4, 0, 4, 0, 0, 0, 3, 4, 4, 3, 1, 4, 2, 3, 2, 3, 3, 3, 1, 4, 3, 4, 0, 3, 0, 4, 2, 3, 3, 2, 2, 5, 4, 2, 1, 3, 4, 3, 4, 3, 1, 3, 3, 4, 2, 0, 2, 1, 0, 3, 3, 0, 0, 2, 0, 3, 1, 0, 4, 4, 3, 4, 3, 0, 4, 0, 1, 0, 2, 4, 4, 4, 4, 4, 0, 3, 2, 0, 3, 3),
|
| 101 |
+
(0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 2, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2),
|
| 102 |
+
(0, 2, 0, 3, 0, 4, 0, 4, 0, 1, 3, 3, 3, 0, 4, 0, 2, 1, 2, 1, 1, 1, 2, 0, 3, 1, 1, 0, 1, 0, 3, 1, 0, 0, 3, 3, 2, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 2, 2, 0, 3, 1, 0, 0, 1, 0, 1, 1, 0, 1, 2, 0, 3, 0, 0, 0, 0, 1, 0, 0, 3, 3, 4, 3, 1, 0, 1, 0, 3, 0, 2),
|
| 103 |
+
(0, 0, 0, 3, 0, 5, 0, 0, 0, 0, 1, 0, 2, 0, 3, 1, 0, 1, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 2, 3, 0, 1, 4, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 3),
|
| 104 |
+
(0, 2, 0, 5, 0, 5, 0, 1, 0, 2, 4, 3, 3, 2, 5, 1, 3, 2, 3, 3, 3, 0, 4, 1, 2, 0, 3, 0, 4, 0, 2, 2, 1, 1, 5, 3, 0, 0, 1, 4, 2, 3, 2, 0, 3, 3, 3, 2, 0, 2, 4, 1, 1, 2, 0, 1, 1, 0, 3, 1, 0, 1, 3, 1, 2, 3, 0, 2, 0, 0, 0, 1, 3, 5, 4, 4, 4, 0, 3, 0, 0, 1, 3),
|
| 105 |
+
(0, 4, 0, 5, 0, 4, 0, 4, 0, 4, 5, 4, 3, 3, 4, 3, 3, 3, 4, 3, 4, 4, 5, 3, 4, 5, 4, 2, 4, 2, 3, 4, 3, 1, 4, 4, 1, 3, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 2, 3, 3, 1, 4, 3, 1, 3, 3, 0, 3, 3, 1, 4, 3, 4, 4, 4, 0, 3, 0, 4, 0, 3, 3, 4, 4, 5, 0, 0, 4, 3, 0, 4, 5),
|
| 106 |
+
(0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 4, 4, 4, 3, 3, 2, 4, 3, 4, 3, 4, 3, 5, 3, 4, 3, 2, 1, 4, 2, 4, 4, 3, 1, 3, 4, 2, 4, 5, 5, 3, 4, 5, 4, 1, 5, 4, 3, 0, 3, 2, 2, 3, 2, 1, 3, 1, 0, 3, 3, 3, 5, 3, 3, 3, 5, 4, 4, 2, 3, 3, 4, 3, 3, 3, 2, 1, 0, 3, 2, 1, 4, 3),
|
| 107 |
+
(0, 4, 0, 5, 0, 4, 0, 3, 0, 3, 5, 5, 3, 2, 4, 3, 4, 0, 5, 4, 4, 1, 4, 4, 4, 3, 3, 3, 4, 3, 5, 5, 2, 3, 3, 4, 1, 2, 5, 5, 3, 5, 5, 2, 3, 5, 5, 4, 0, 3, 2, 0, 3, 3, 1, 1, 5, 1, 4, 1, 0, 4, 3, 2, 3, 5, 0, 4, 0, 3, 0, 5, 4, 3, 4, 3, 0, 0, 4, 1, 0, 4, 4),
|
| 108 |
+
(1, 3, 0, 4, 0, 2, 0, 2, 0, 2, 5, 5, 3, 3, 3, 3, 3, 0, 4, 2, 3, 4, 4, 4, 3, 4, 0, 0, 3, 4, 5, 4, 3, 3, 3, 3, 2, 5, 5, 4, 5, 5, 5, 4, 3, 5, 5, 5, 1, 3, 1, 0, 1, 0, 0, 3, 2, 0, 4, 2, 0, 5, 2, 3, 2, 4, 1, 3, 0, 3, 0, 4, 5, 4, 5, 4, 3, 0, 4, 2, 0, 5, 4),
|
| 109 |
+
(0, 3, 0, 4, 0, 5, 0, 3, 0, 3, 4, 4, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, 4, 3, 3, 2, 2, 0, 3, 3, 3, 3, 3, 1, 3, 3, 3, 0, 4, 4, 3, 4, 4, 1, 1, 4, 4, 2, 0, 3, 1, 0, 1, 1, 0, 4, 1, 0, 2, 3, 1, 3, 3, 1, 3, 4, 0, 3, 0, 1, 0, 3, 1, 3, 0, 0, 1, 0, 2, 0, 0, 4, 4),
|
| 110 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
|
| 111 |
+
(0, 3, 0, 3, 0, 2, 0, 3, 0, 1, 5, 4, 3, 3, 3, 1, 4, 2, 1, 2, 3, 4, 4, 2, 4, 4, 5, 0, 3, 1, 4, 3, 4, 0, 4, 3, 3, 3, 2, 3, 2, 5, 3, 4, 3, 2, 2, 3, 0, 0, 3, 0, 2, 1, 0, 1, 2, 0, 0, 0, 0, 2, 1, 1, 3, 1, 0, 2, 0, 4, 0, 3, 4, 4, 4, 5, 2, 0, 2, 0, 0, 1, 3),
|
| 112 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 4, 2, 1, 1, 0, 1, 0, 3, 2, 0, 0, 3, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 4, 0, 4, 2, 1, 0, 0, 0, 0, 0, 1),
|
| 113 |
+
(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 2, 0, 2, 1, 0, 0, 1, 2, 1, 0, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2),
|
| 114 |
+
(0, 4, 0, 4, 0, 4, 0, 3, 0, 4, 4, 3, 4, 2, 4, 3, 2, 0, 4, 4, 4, 3, 5, 3, 5, 3, 3, 2, 4, 2, 4, 3, 4, 3, 1, 4, 0, 2, 3, 4, 4, 4, 3, 3, 3, 4, 4, 4, 3, 4, 1, 3, 4, 3, 2, 1, 2, 1, 3, 3, 3, 4, 4, 3, 3, 5, 0, 4, 0, 3, 0, 4, 3, 3, 3, 2, 1, 0, 3, 0, 0, 3, 3),
|
| 115 |
+
(0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 5, 5, 3, 3, 3, 3, 4, 3, 4, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 4, 3, 5, 3, 3, 1, 3, 2, 4, 5, 5, 5, 5, 4, 3, 4, 5, 5, 3, 2, 2, 3, 3, 3, 3, 2, 3, 3, 1, 2, 3, 2, 4, 3, 3, 3, 4, 0, 4, 0, 2, 0, 4, 3, 2, 2, 1, 2, 0, 3, 0, 0, 4, 1),
|
| 116 |
+
)
|
| 117 |
+
# fmt: on
|
| 118 |
+
|
| 119 |
+
|
| 120 |
+
class JapaneseContextAnalysis:
|
| 121 |
+
NUM_OF_CATEGORY = 6
|
| 122 |
+
DONT_KNOW = -1
|
| 123 |
+
ENOUGH_REL_THRESHOLD = 100
|
| 124 |
+
MAX_REL_THRESHOLD = 1000
|
| 125 |
+
MINIMUM_DATA_THRESHOLD = 4
|
| 126 |
+
|
| 127 |
+
def __init__(self) -> None:
|
| 128 |
+
self._total_rel = 0
|
| 129 |
+
self._rel_sample: List[int] = []
|
| 130 |
+
self._need_to_skip_char_num = 0
|
| 131 |
+
self._last_char_order = -1
|
| 132 |
+
self._done = False
|
| 133 |
+
self.reset()
|
| 134 |
+
|
| 135 |
+
def reset(self) -> None:
|
| 136 |
+
self._total_rel = 0 # total sequence received
|
| 137 |
+
# category counters, each integer counts sequence in its category
|
| 138 |
+
self._rel_sample = [0] * self.NUM_OF_CATEGORY
|
| 139 |
+
# if last byte in current buffer is not the last byte of a character,
|
| 140 |
+
# we need to know how many bytes to skip in next buffer
|
| 141 |
+
self._need_to_skip_char_num = 0
|
| 142 |
+
self._last_char_order = -1 # The order of previous char
|
| 143 |
+
# If this flag is set to True, detection is done and conclusion has
|
| 144 |
+
# been made
|
| 145 |
+
self._done = False
|
| 146 |
+
|
| 147 |
+
def feed(self, byte_str: Union[bytes, bytearray], num_bytes: int) -> None:
|
| 148 |
+
if self._done:
|
| 149 |
+
return
|
| 150 |
+
|
| 151 |
+
# The buffer we got is byte oriented, and a character may span in more than one
|
| 152 |
+
# buffers. In case the last one or two byte in last buffer is not
|
| 153 |
+
# complete, we record how many byte needed to complete that character
|
| 154 |
+
# and skip these bytes here. We can choose to record those bytes as
|
| 155 |
+
# well and analyse the character once it is complete, but since a
|
| 156 |
+
# character will not make much difference, by simply skipping
|
| 157 |
+
# this character will simply our logic and improve performance.
|
| 158 |
+
i = self._need_to_skip_char_num
|
| 159 |
+
while i < num_bytes:
|
| 160 |
+
order, char_len = self.get_order(byte_str[i : i + 2])
|
| 161 |
+
i += char_len
|
| 162 |
+
if i > num_bytes:
|
| 163 |
+
self._need_to_skip_char_num = i - num_bytes
|
| 164 |
+
self._last_char_order = -1
|
| 165 |
+
else:
|
| 166 |
+
if (order != -1) and (self._last_char_order != -1):
|
| 167 |
+
self._total_rel += 1
|
| 168 |
+
if self._total_rel > self.MAX_REL_THRESHOLD:
|
| 169 |
+
self._done = True
|
| 170 |
+
break
|
| 171 |
+
self._rel_sample[
|
| 172 |
+
jp2_char_context[self._last_char_order][order]
|
| 173 |
+
] += 1
|
| 174 |
+
self._last_char_order = order
|
| 175 |
+
|
| 176 |
+
def got_enough_data(self) -> bool:
|
| 177 |
+
return self._total_rel > self.ENOUGH_REL_THRESHOLD
|
| 178 |
+
|
| 179 |
+
def get_confidence(self) -> float:
|
| 180 |
+
# This is just one way to calculate confidence. It works well for me.
|
| 181 |
+
if self._total_rel > self.MINIMUM_DATA_THRESHOLD:
|
| 182 |
+
return (self._total_rel - self._rel_sample[0]) / self._total_rel
|
| 183 |
+
return self.DONT_KNOW
|
| 184 |
+
|
| 185 |
+
def get_order(self, _: Union[bytes, bytearray]) -> Tuple[int, int]:
|
| 186 |
+
return -1, 1
|
| 187 |
+
|
| 188 |
+
|
| 189 |
+
class SJISContextAnalysis(JapaneseContextAnalysis):
|
| 190 |
+
def __init__(self) -> None:
|
| 191 |
+
super().__init__()
|
| 192 |
+
self._charset_name = "SHIFT_JIS"
|
| 193 |
+
|
| 194 |
+
@property
|
| 195 |
+
def charset_name(self) -> str:
|
| 196 |
+
return self._charset_name
|
| 197 |
+
|
| 198 |
+
def get_order(self, byte_str: Union[bytes, bytearray]) -> Tuple[int, int]:
|
| 199 |
+
if not byte_str:
|
| 200 |
+
return -1, 1
|
| 201 |
+
# find out current char's byte length
|
| 202 |
+
first_char = byte_str[0]
|
| 203 |
+
if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC):
|
| 204 |
+
char_len = 2
|
| 205 |
+
if (first_char == 0x87) or (0xFA <= first_char <= 0xFC):
|
| 206 |
+
self._charset_name = "CP932"
|
| 207 |
+
else:
|
| 208 |
+
char_len = 1
|
| 209 |
+
|
| 210 |
+
# return its order if it is hiragana
|
| 211 |
+
if len(byte_str) > 1:
|
| 212 |
+
second_char = byte_str[1]
|
| 213 |
+
if (first_char == 202) and (0x9F <= second_char <= 0xF1):
|
| 214 |
+
return second_char - 0x9F, char_len
|
| 215 |
+
|
| 216 |
+
return -1, char_len
|
| 217 |
+
|
| 218 |
+
|
| 219 |
+
class EUCJPContextAnalysis(JapaneseContextAnalysis):
|
| 220 |
+
def get_order(self, byte_str: Union[bytes, bytearray]) -> Tuple[int, int]:
|
| 221 |
+
if not byte_str:
|
| 222 |
+
return -1, 1
|
| 223 |
+
# find out current char's byte length
|
| 224 |
+
first_char = byte_str[0]
|
| 225 |
+
if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE):
|
| 226 |
+
char_len = 2
|
| 227 |
+
elif first_char == 0x8F:
|
| 228 |
+
char_len = 3
|
| 229 |
+
else:
|
| 230 |
+
char_len = 1
|
| 231 |
+
|
| 232 |
+
# return its order if it is hiragana
|
| 233 |
+
if len(byte_str) > 1:
|
| 234 |
+
second_char = byte_str[1]
|
| 235 |
+
if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3):
|
| 236 |
+
return second_char - 0xA1, char_len
|
| 237 |
+
|
| 238 |
+
return -1, char_len
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/langgreekmodel.py
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/langrussianmodel.py
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/langthaimodel.py
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/langturkishmodel.py
ADDED
|
@@ -0,0 +1,4380 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
|
| 2 |
+
|
| 3 |
+
# 3: Positive
|
| 4 |
+
# 2: Likely
|
| 5 |
+
# 1: Unlikely
|
| 6 |
+
# 0: Negative
|
| 7 |
+
|
| 8 |
+
TURKISH_LANG_MODEL = {
|
| 9 |
+
23: { # 'A'
|
| 10 |
+
23: 0, # 'A'
|
| 11 |
+
37: 0, # 'B'
|
| 12 |
+
47: 0, # 'C'
|
| 13 |
+
39: 0, # 'D'
|
| 14 |
+
29: 0, # 'E'
|
| 15 |
+
52: 0, # 'F'
|
| 16 |
+
36: 0, # 'G'
|
| 17 |
+
45: 0, # 'H'
|
| 18 |
+
53: 0, # 'I'
|
| 19 |
+
60: 0, # 'J'
|
| 20 |
+
16: 0, # 'K'
|
| 21 |
+
49: 0, # 'L'
|
| 22 |
+
20: 0, # 'M'
|
| 23 |
+
46: 0, # 'N'
|
| 24 |
+
42: 0, # 'O'
|
| 25 |
+
48: 0, # 'P'
|
| 26 |
+
44: 0, # 'R'
|
| 27 |
+
35: 0, # 'S'
|
| 28 |
+
31: 0, # 'T'
|
| 29 |
+
51: 0, # 'U'
|
| 30 |
+
38: 0, # 'V'
|
| 31 |
+
62: 0, # 'W'
|
| 32 |
+
43: 0, # 'Y'
|
| 33 |
+
56: 0, # 'Z'
|
| 34 |
+
1: 3, # 'a'
|
| 35 |
+
21: 0, # 'b'
|
| 36 |
+
28: 0, # 'c'
|
| 37 |
+
12: 2, # 'd'
|
| 38 |
+
2: 3, # 'e'
|
| 39 |
+
18: 0, # 'f'
|
| 40 |
+
27: 1, # 'g'
|
| 41 |
+
25: 1, # 'h'
|
| 42 |
+
3: 1, # 'i'
|
| 43 |
+
24: 0, # 'j'
|
| 44 |
+
10: 2, # 'k'
|
| 45 |
+
5: 1, # 'l'
|
| 46 |
+
13: 1, # 'm'
|
| 47 |
+
4: 1, # 'n'
|
| 48 |
+
15: 0, # 'o'
|
| 49 |
+
26: 0, # 'p'
|
| 50 |
+
7: 1, # 'r'
|
| 51 |
+
8: 1, # 's'
|
| 52 |
+
9: 1, # 't'
|
| 53 |
+
14: 1, # 'u'
|
| 54 |
+
32: 0, # 'v'
|
| 55 |
+
57: 0, # 'w'
|
| 56 |
+
58: 0, # 'x'
|
| 57 |
+
11: 3, # 'y'
|
| 58 |
+
22: 0, # 'z'
|
| 59 |
+
63: 0, # '·'
|
| 60 |
+
54: 0, # 'Ç'
|
| 61 |
+
50: 0, # 'Ö'
|
| 62 |
+
55: 0, # 'Ü'
|
| 63 |
+
59: 0, # 'â'
|
| 64 |
+
33: 1, # 'ç'
|
| 65 |
+
61: 0, # 'î'
|
| 66 |
+
34: 0, # 'ö'
|
| 67 |
+
17: 0, # 'ü'
|
| 68 |
+
30: 0, # 'ğ'
|
| 69 |
+
41: 0, # 'İ'
|
| 70 |
+
6: 0, # 'ı'
|
| 71 |
+
40: 0, # 'Ş'
|
| 72 |
+
19: 0, # 'ş'
|
| 73 |
+
},
|
| 74 |
+
37: { # 'B'
|
| 75 |
+
23: 0, # 'A'
|
| 76 |
+
37: 0, # 'B'
|
| 77 |
+
47: 2, # 'C'
|
| 78 |
+
39: 0, # 'D'
|
| 79 |
+
29: 0, # 'E'
|
| 80 |
+
52: 2, # 'F'
|
| 81 |
+
36: 0, # 'G'
|
| 82 |
+
45: 0, # 'H'
|
| 83 |
+
53: 0, # 'I'
|
| 84 |
+
60: 0, # 'J'
|
| 85 |
+
16: 1, # 'K'
|
| 86 |
+
49: 0, # 'L'
|
| 87 |
+
20: 0, # 'M'
|
| 88 |
+
46: 0, # 'N'
|
| 89 |
+
42: 0, # 'O'
|
| 90 |
+
48: 1, # 'P'
|
| 91 |
+
44: 0, # 'R'
|
| 92 |
+
35: 1, # 'S'
|
| 93 |
+
31: 0, # 'T'
|
| 94 |
+
51: 0, # 'U'
|
| 95 |
+
38: 1, # 'V'
|
| 96 |
+
62: 0, # 'W'
|
| 97 |
+
43: 1, # 'Y'
|
| 98 |
+
56: 0, # 'Z'
|
| 99 |
+
1: 2, # 'a'
|
| 100 |
+
21: 0, # 'b'
|
| 101 |
+
28: 2, # 'c'
|
| 102 |
+
12: 0, # 'd'
|
| 103 |
+
2: 3, # 'e'
|
| 104 |
+
18: 0, # 'f'
|
| 105 |
+
27: 0, # 'g'
|
| 106 |
+
25: 0, # 'h'
|
| 107 |
+
3: 0, # 'i'
|
| 108 |
+
24: 0, # 'j'
|
| 109 |
+
10: 0, # 'k'
|
| 110 |
+
5: 0, # 'l'
|
| 111 |
+
13: 1, # 'm'
|
| 112 |
+
4: 1, # 'n'
|
| 113 |
+
15: 0, # 'o'
|
| 114 |
+
26: 0, # 'p'
|
| 115 |
+
7: 0, # 'r'
|
| 116 |
+
8: 0, # 's'
|
| 117 |
+
9: 0, # 't'
|
| 118 |
+
14: 2, # 'u'
|
| 119 |
+
32: 0, # 'v'
|
| 120 |
+
57: 0, # 'w'
|
| 121 |
+
58: 0, # 'x'
|
| 122 |
+
11: 0, # 'y'
|
| 123 |
+
22: 1, # 'z'
|
| 124 |
+
63: 0, # '·'
|
| 125 |
+
54: 0, # 'Ç'
|
| 126 |
+
50: 1, # 'Ö'
|
| 127 |
+
55: 0, # 'Ü'
|
| 128 |
+
59: 0, # 'â'
|
| 129 |
+
33: 0, # 'ç'
|
| 130 |
+
61: 0, # 'î'
|
| 131 |
+
34: 1, # 'ö'
|
| 132 |
+
17: 0, # 'ü'
|
| 133 |
+
30: 0, # 'ğ'
|
| 134 |
+
41: 0, # 'İ'
|
| 135 |
+
6: 0, # 'ı'
|
| 136 |
+
40: 1, # 'Ş'
|
| 137 |
+
19: 1, # 'ş'
|
| 138 |
+
},
|
| 139 |
+
47: { # 'C'
|
| 140 |
+
23: 0, # 'A'
|
| 141 |
+
37: 0, # 'B'
|
| 142 |
+
47: 0, # 'C'
|
| 143 |
+
39: 0, # 'D'
|
| 144 |
+
29: 0, # 'E'
|
| 145 |
+
52: 1, # 'F'
|
| 146 |
+
36: 0, # 'G'
|
| 147 |
+
45: 0, # 'H'
|
| 148 |
+
53: 0, # 'I'
|
| 149 |
+
60: 0, # 'J'
|
| 150 |
+
16: 0, # 'K'
|
| 151 |
+
49: 1, # 'L'
|
| 152 |
+
20: 0, # 'M'
|
| 153 |
+
46: 1, # 'N'
|
| 154 |
+
42: 0, # 'O'
|
| 155 |
+
48: 1, # 'P'
|
| 156 |
+
44: 1, # 'R'
|
| 157 |
+
35: 0, # 'S'
|
| 158 |
+
31: 0, # 'T'
|
| 159 |
+
51: 0, # 'U'
|
| 160 |
+
38: 1, # 'V'
|
| 161 |
+
62: 0, # 'W'
|
| 162 |
+
43: 1, # 'Y'
|
| 163 |
+
56: 0, # 'Z'
|
| 164 |
+
1: 3, # 'a'
|
| 165 |
+
21: 0, # 'b'
|
| 166 |
+
28: 2, # 'c'
|
| 167 |
+
12: 0, # 'd'
|
| 168 |
+
2: 3, # 'e'
|
| 169 |
+
18: 0, # 'f'
|
| 170 |
+
27: 0, # 'g'
|
| 171 |
+
25: 0, # 'h'
|
| 172 |
+
3: 0, # 'i'
|
| 173 |
+
24: 2, # 'j'
|
| 174 |
+
10: 1, # 'k'
|
| 175 |
+
5: 2, # 'l'
|
| 176 |
+
13: 2, # 'm'
|
| 177 |
+
4: 2, # 'n'
|
| 178 |
+
15: 1, # 'o'
|
| 179 |
+
26: 0, # 'p'
|
| 180 |
+
7: 2, # 'r'
|
| 181 |
+
8: 0, # 's'
|
| 182 |
+
9: 0, # 't'
|
| 183 |
+
14: 3, # 'u'
|
| 184 |
+
32: 0, # 'v'
|
| 185 |
+
57: 0, # 'w'
|
| 186 |
+
58: 0, # 'x'
|
| 187 |
+
11: 0, # 'y'
|
| 188 |
+
22: 2, # 'z'
|
| 189 |
+
63: 0, # '·'
|
| 190 |
+
54: 0, # 'Ç'
|
| 191 |
+
50: 1, # 'Ö'
|
| 192 |
+
55: 0, # 'Ü'
|
| 193 |
+
59: 0, # 'â'
|
| 194 |
+
33: 1, # 'ç'
|
| 195 |
+
61: 0, # 'î'
|
| 196 |
+
34: 1, # 'ö'
|
| 197 |
+
17: 0, # 'ü'
|
| 198 |
+
30: 0, # 'ğ'
|
| 199 |
+
41: 1, # 'İ'
|
| 200 |
+
6: 3, # 'ı'
|
| 201 |
+
40: 0, # 'Ş'
|
| 202 |
+
19: 0, # 'ş'
|
| 203 |
+
},
|
| 204 |
+
39: { # 'D'
|
| 205 |
+
23: 0, # 'A'
|
| 206 |
+
37: 0, # 'B'
|
| 207 |
+
47: 0, # 'C'
|
| 208 |
+
39: 0, # 'D'
|
| 209 |
+
29: 0, # 'E'
|
| 210 |
+
52: 1, # 'F'
|
| 211 |
+
36: 0, # 'G'
|
| 212 |
+
45: 0, # 'H'
|
| 213 |
+
53: 0, # 'I'
|
| 214 |
+
60: 0, # 'J'
|
| 215 |
+
16: 1, # 'K'
|
| 216 |
+
49: 0, # 'L'
|
| 217 |
+
20: 0, # 'M'
|
| 218 |
+
46: 0, # 'N'
|
| 219 |
+
42: 0, # 'O'
|
| 220 |
+
48: 1, # 'P'
|
| 221 |
+
44: 0, # 'R'
|
| 222 |
+
35: 0, # 'S'
|
| 223 |
+
31: 0, # 'T'
|
| 224 |
+
51: 0, # 'U'
|
| 225 |
+
38: 0, # 'V'
|
| 226 |
+
62: 0, # 'W'
|
| 227 |
+
43: 0, # 'Y'
|
| 228 |
+
56: 0, # 'Z'
|
| 229 |
+
1: 2, # 'a'
|
| 230 |
+
21: 0, # 'b'
|
| 231 |
+
28: 2, # 'c'
|
| 232 |
+
12: 0, # 'd'
|
| 233 |
+
2: 2, # 'e'
|
| 234 |
+
18: 0, # 'f'
|
| 235 |
+
27: 0, # 'g'
|
| 236 |
+
25: 0, # 'h'
|
| 237 |
+
3: 0, # 'i'
|
| 238 |
+
24: 0, # 'j'
|
| 239 |
+
10: 0, # 'k'
|
| 240 |
+
5: 1, # 'l'
|
| 241 |
+
13: 3, # 'm'
|
| 242 |
+
4: 0, # 'n'
|
| 243 |
+
15: 1, # 'o'
|
| 244 |
+
26: 0, # 'p'
|
| 245 |
+
7: 0, # 'r'
|
| 246 |
+
8: 0, # 's'
|
| 247 |
+
9: 0, # 't'
|
| 248 |
+
14: 1, # 'u'
|
| 249 |
+
32: 0, # 'v'
|
| 250 |
+
57: 0, # 'w'
|
| 251 |
+
58: 0, # 'x'
|
| 252 |
+
11: 0, # 'y'
|
| 253 |
+
22: 1, # 'z'
|
| 254 |
+
63: 0, # '·'
|
| 255 |
+
54: 1, # 'Ç'
|
| 256 |
+
50: 0, # 'Ö'
|
| 257 |
+
55: 0, # 'Ü'
|
| 258 |
+
59: 0, # 'â'
|
| 259 |
+
33: 1, # 'ç'
|
| 260 |
+
61: 0, # 'î'
|
| 261 |
+
34: 0, # 'ö'
|
| 262 |
+
17: 0, # 'ü'
|
| 263 |
+
30: 1, # 'ğ'
|
| 264 |
+
41: 0, # 'İ'
|
| 265 |
+
6: 1, # 'ı'
|
| 266 |
+
40: 1, # 'Ş'
|
| 267 |
+
19: 0, # 'ş'
|
| 268 |
+
},
|
| 269 |
+
29: { # 'E'
|
| 270 |
+
23: 0, # 'A'
|
| 271 |
+
37: 0, # 'B'
|
| 272 |
+
47: 0, # 'C'
|
| 273 |
+
39: 0, # 'D'
|
| 274 |
+
29: 1, # 'E'
|
| 275 |
+
52: 0, # 'F'
|
| 276 |
+
36: 0, # 'G'
|
| 277 |
+
45: 0, # 'H'
|
| 278 |
+
53: 0, # 'I'
|
| 279 |
+
60: 0, # 'J'
|
| 280 |
+
16: 3, # 'K'
|
| 281 |
+
49: 0, # 'L'
|
| 282 |
+
20: 1, # 'M'
|
| 283 |
+
46: 0, # 'N'
|
| 284 |
+
42: 0, # 'O'
|
| 285 |
+
48: 0, # 'P'
|
| 286 |
+
44: 0, # 'R'
|
| 287 |
+
35: 0, # 'S'
|
| 288 |
+
31: 0, # 'T'
|
| 289 |
+
51: 0, # 'U'
|
| 290 |
+
38: 0, # 'V'
|
| 291 |
+
62: 0, # 'W'
|
| 292 |
+
43: 0, # 'Y'
|
| 293 |
+
56: 0, # 'Z'
|
| 294 |
+
1: 3, # 'a'
|
| 295 |
+
21: 0, # 'b'
|
| 296 |
+
28: 0, # 'c'
|
| 297 |
+
12: 2, # 'd'
|
| 298 |
+
2: 3, # 'e'
|
| 299 |
+
18: 0, # 'f'
|
| 300 |
+
27: 1, # 'g'
|
| 301 |
+
25: 0, # 'h'
|
| 302 |
+
3: 1, # 'i'
|
| 303 |
+
24: 1, # 'j'
|
| 304 |
+
10: 0, # 'k'
|
| 305 |
+
5: 3, # 'l'
|
| 306 |
+
13: 3, # 'm'
|
| 307 |
+
4: 3, # 'n'
|
| 308 |
+
15: 0, # 'o'
|
| 309 |
+
26: 0, # 'p'
|
| 310 |
+
7: 0, # 'r'
|
| 311 |
+
8: 1, # 's'
|
| 312 |
+
9: 1, # 't'
|
| 313 |
+
14: 1, # 'u'
|
| 314 |
+
32: 1, # 'v'
|
| 315 |
+
57: 0, # 'w'
|
| 316 |
+
58: 0, # 'x'
|
| 317 |
+
11: 2, # 'y'
|
| 318 |
+
22: 0, # 'z'
|
| 319 |
+
63: 0, # '·'
|
| 320 |
+
54: 0, # 'Ç'
|
| 321 |
+
50: 0, # 'Ö'
|
| 322 |
+
55: 0, # 'Ü'
|
| 323 |
+
59: 0, # 'â'
|
| 324 |
+
33: 0, # 'ç'
|
| 325 |
+
61: 0, # 'î'
|
| 326 |
+
34: 0, # 'ö'
|
| 327 |
+
17: 0, # 'ü'
|
| 328 |
+
30: 0, # 'ğ'
|
| 329 |
+
41: 0, # 'İ'
|
| 330 |
+
6: 3, # 'ı'
|
| 331 |
+
40: 0, # 'Ş'
|
| 332 |
+
19: 0, # 'ş'
|
| 333 |
+
},
|
| 334 |
+
52: { # 'F'
|
| 335 |
+
23: 0, # 'A'
|
| 336 |
+
37: 1, # 'B'
|
| 337 |
+
47: 1, # 'C'
|
| 338 |
+
39: 1, # 'D'
|
| 339 |
+
29: 1, # 'E'
|
| 340 |
+
52: 2, # 'F'
|
| 341 |
+
36: 0, # 'G'
|
| 342 |
+
45: 2, # 'H'
|
| 343 |
+
53: 1, # 'I'
|
| 344 |
+
60: 0, # 'J'
|
| 345 |
+
16: 0, # 'K'
|
| 346 |
+
49: 0, # 'L'
|
| 347 |
+
20: 1, # 'M'
|
| 348 |
+
46: 1, # 'N'
|
| 349 |
+
42: 1, # 'O'
|
| 350 |
+
48: 2, # 'P'
|
| 351 |
+
44: 1, # 'R'
|
| 352 |
+
35: 1, # 'S'
|
| 353 |
+
31: 1, # 'T'
|
| 354 |
+
51: 1, # 'U'
|
| 355 |
+
38: 1, # 'V'
|
| 356 |
+
62: 0, # 'W'
|
| 357 |
+
43: 2, # 'Y'
|
| 358 |
+
56: 0, # 'Z'
|
| 359 |
+
1: 0, # 'a'
|
| 360 |
+
21: 1, # 'b'
|
| 361 |
+
28: 1, # 'c'
|
| 362 |
+
12: 1, # 'd'
|
| 363 |
+
2: 0, # 'e'
|
| 364 |
+
18: 1, # 'f'
|
| 365 |
+
27: 0, # 'g'
|
| 366 |
+
25: 0, # 'h'
|
| 367 |
+
3: 2, # 'i'
|
| 368 |
+
24: 1, # 'j'
|
| 369 |
+
10: 0, # 'k'
|
| 370 |
+
5: 0, # 'l'
|
| 371 |
+
13: 1, # 'm'
|
| 372 |
+
4: 2, # 'n'
|
| 373 |
+
15: 1, # 'o'
|
| 374 |
+
26: 0, # 'p'
|
| 375 |
+
7: 2, # 'r'
|
| 376 |
+
8: 1, # 's'
|
| 377 |
+
9: 1, # 't'
|
| 378 |
+
14: 1, # 'u'
|
| 379 |
+
32: 0, # 'v'
|
| 380 |
+
57: 0, # 'w'
|
| 381 |
+
58: 0, # 'x'
|
| 382 |
+
11: 1, # 'y'
|
| 383 |
+
22: 1, # 'z'
|
| 384 |
+
63: 0, # '·'
|
| 385 |
+
54: 0, # 'Ç'
|
| 386 |
+
50: 1, # 'Ö'
|
| 387 |
+
55: 2, # 'Ü'
|
| 388 |
+
59: 0, # 'â'
|
| 389 |
+
33: 0, # 'ç'
|
| 390 |
+
61: 0, # 'î'
|
| 391 |
+
34: 2, # 'ö'
|
| 392 |
+
17: 0, # 'ü'
|
| 393 |
+
30: 1, # 'ğ'
|
| 394 |
+
41: 1, # 'İ'
|
| 395 |
+
6: 2, # 'ı'
|
| 396 |
+
40: 0, # 'Ş'
|
| 397 |
+
19: 2, # 'ş'
|
| 398 |
+
},
|
| 399 |
+
36: { # 'G'
|
| 400 |
+
23: 1, # 'A'
|
| 401 |
+
37: 0, # 'B'
|
| 402 |
+
47: 1, # 'C'
|
| 403 |
+
39: 0, # 'D'
|
| 404 |
+
29: 0, # 'E'
|
| 405 |
+
52: 1, # 'F'
|
| 406 |
+
36: 2, # 'G'
|
| 407 |
+
45: 0, # 'H'
|
| 408 |
+
53: 0, # 'I'
|
| 409 |
+
60: 0, # 'J'
|
| 410 |
+
16: 2, # 'K'
|
| 411 |
+
49: 0, # 'L'
|
| 412 |
+
20: 0, # 'M'
|
| 413 |
+
46: 2, # 'N'
|
| 414 |
+
42: 1, # 'O'
|
| 415 |
+
48: 1, # 'P'
|
| 416 |
+
44: 1, # 'R'
|
| 417 |
+
35: 1, # 'S'
|
| 418 |
+
31: 0, # 'T'
|
| 419 |
+
51: 1, # 'U'
|
| 420 |
+
38: 2, # 'V'
|
| 421 |
+
62: 0, # 'W'
|
| 422 |
+
43: 0, # 'Y'
|
| 423 |
+
56: 0, # 'Z'
|
| 424 |
+
1: 3, # 'a'
|
| 425 |
+
21: 0, # 'b'
|
| 426 |
+
28: 1, # 'c'
|
| 427 |
+
12: 0, # 'd'
|
| 428 |
+
2: 3, # 'e'
|
| 429 |
+
18: 0, # 'f'
|
| 430 |
+
27: 0, # 'g'
|
| 431 |
+
25: 0, # 'h'
|
| 432 |
+
3: 0, # 'i'
|
| 433 |
+
24: 1, # 'j'
|
| 434 |
+
10: 1, # 'k'
|
| 435 |
+
5: 0, # 'l'
|
| 436 |
+
13: 3, # 'm'
|
| 437 |
+
4: 2, # 'n'
|
| 438 |
+
15: 0, # 'o'
|
| 439 |
+
26: 1, # 'p'
|
| 440 |
+
7: 0, # 'r'
|
| 441 |
+
8: 1, # 's'
|
| 442 |
+
9: 1, # 't'
|
| 443 |
+
14: 3, # 'u'
|
| 444 |
+
32: 0, # 'v'
|
| 445 |
+
57: 0, # 'w'
|
| 446 |
+
58: 1, # 'x'
|
| 447 |
+
11: 0, # 'y'
|
| 448 |
+
22: 2, # 'z'
|
| 449 |
+
63: 0, # '·'
|
| 450 |
+
54: 1, # 'Ç'
|
| 451 |
+
50: 2, # 'Ö'
|
| 452 |
+
55: 0, # 'Ü'
|
| 453 |
+
59: 1, # 'â'
|
| 454 |
+
33: 2, # 'ç'
|
| 455 |
+
61: 0, # 'î'
|
| 456 |
+
34: 0, # 'ö'
|
| 457 |
+
17: 0, # 'ü'
|
| 458 |
+
30: 1, # 'ğ'
|
| 459 |
+
41: 1, # 'İ'
|
| 460 |
+
6: 2, # 'ı'
|
| 461 |
+
40: 2, # 'Ş'
|
| 462 |
+
19: 1, # 'ş'
|
| 463 |
+
},
|
| 464 |
+
45: { # 'H'
|
| 465 |
+
23: 0, # 'A'
|
| 466 |
+
37: 1, # 'B'
|
| 467 |
+
47: 0, # 'C'
|
| 468 |
+
39: 0, # 'D'
|
| 469 |
+
29: 0, # 'E'
|
| 470 |
+
52: 2, # 'F'
|
| 471 |
+
36: 2, # 'G'
|
| 472 |
+
45: 1, # 'H'
|
| 473 |
+
53: 1, # 'I'
|
| 474 |
+
60: 0, # 'J'
|
| 475 |
+
16: 2, # 'K'
|
| 476 |
+
49: 1, # 'L'
|
| 477 |
+
20: 0, # 'M'
|
| 478 |
+
46: 1, # 'N'
|
| 479 |
+
42: 1, # 'O'
|
| 480 |
+
48: 1, # 'P'
|
| 481 |
+
44: 0, # 'R'
|
| 482 |
+
35: 2, # 'S'
|
| 483 |
+
31: 0, # 'T'
|
| 484 |
+
51: 1, # 'U'
|
| 485 |
+
38: 2, # 'V'
|
| 486 |
+
62: 0, # 'W'
|
| 487 |
+
43: 0, # 'Y'
|
| 488 |
+
56: 0, # 'Z'
|
| 489 |
+
1: 3, # 'a'
|
| 490 |
+
21: 0, # 'b'
|
| 491 |
+
28: 2, # 'c'
|
| 492 |
+
12: 0, # 'd'
|
| 493 |
+
2: 3, # 'e'
|
| 494 |
+
18: 0, # 'f'
|
| 495 |
+
27: 0, # 'g'
|
| 496 |
+
25: 0, # 'h'
|
| 497 |
+
3: 2, # 'i'
|
| 498 |
+
24: 0, # 'j'
|
| 499 |
+
10: 1, # 'k'
|
| 500 |
+
5: 0, # 'l'
|
| 501 |
+
13: 2, # 'm'
|
| 502 |
+
4: 0, # 'n'
|
| 503 |
+
15: 1, # 'o'
|
| 504 |
+
26: 1, # 'p'
|
| 505 |
+
7: 1, # 'r'
|
| 506 |
+
8: 0, # 's'
|
| 507 |
+
9: 0, # 't'
|
| 508 |
+
14: 3, # 'u'
|
| 509 |
+
32: 0, # 'v'
|
| 510 |
+
57: 0, # 'w'
|
| 511 |
+
58: 0, # 'x'
|
| 512 |
+
11: 0, # 'y'
|
| 513 |
+
22: 2, # 'z'
|
| 514 |
+
63: 0, # '·'
|
| 515 |
+
54: 1, # 'Ç'
|
| 516 |
+
50: 1, # 'Ö'
|
| 517 |
+
55: 0, # 'Ü'
|
| 518 |
+
59: 0, # 'â'
|
| 519 |
+
33: 1, # 'ç'
|
| 520 |
+
61: 0, # 'î'
|
| 521 |
+
34: 1, # 'ö'
|
| 522 |
+
17: 0, # 'ü'
|
| 523 |
+
30: 2, # 'ğ'
|
| 524 |
+
41: 1, # 'İ'
|
| 525 |
+
6: 0, # 'ı'
|
| 526 |
+
40: 2, # 'Ş'
|
| 527 |
+
19: 1, # 'ş'
|
| 528 |
+
},
|
| 529 |
+
53: { # 'I'
|
| 530 |
+
23: 0, # 'A'
|
| 531 |
+
37: 0, # 'B'
|
| 532 |
+
47: 0, # 'C'
|
| 533 |
+
39: 0, # 'D'
|
| 534 |
+
29: 0, # 'E'
|
| 535 |
+
52: 1, # 'F'
|
| 536 |
+
36: 0, # 'G'
|
| 537 |
+
45: 0, # 'H'
|
| 538 |
+
53: 0, # 'I'
|
| 539 |
+
60: 0, # 'J'
|
| 540 |
+
16: 2, # 'K'
|
| 541 |
+
49: 0, # 'L'
|
| 542 |
+
20: 0, # 'M'
|
| 543 |
+
46: 0, # 'N'
|
| 544 |
+
42: 0, # 'O'
|
| 545 |
+
48: 1, # 'P'
|
| 546 |
+
44: 0, # 'R'
|
| 547 |
+
35: 0, # 'S'
|
| 548 |
+
31: 0, # 'T'
|
| 549 |
+
51: 0, # 'U'
|
| 550 |
+
38: 0, # 'V'
|
| 551 |
+
62: 0, # 'W'
|
| 552 |
+
43: 0, # 'Y'
|
| 553 |
+
56: 0, # 'Z'
|
| 554 |
+
1: 2, # 'a'
|
| 555 |
+
21: 0, # 'b'
|
| 556 |
+
28: 2, # 'c'
|
| 557 |
+
12: 0, # 'd'
|
| 558 |
+
2: 2, # 'e'
|
| 559 |
+
18: 0, # 'f'
|
| 560 |
+
27: 0, # 'g'
|
| 561 |
+
25: 0, # 'h'
|
| 562 |
+
3: 0, # 'i'
|
| 563 |
+
24: 0, # 'j'
|
| 564 |
+
10: 0, # 'k'
|
| 565 |
+
5: 2, # 'l'
|
| 566 |
+
13: 2, # 'm'
|
| 567 |
+
4: 0, # 'n'
|
| 568 |
+
15: 0, # 'o'
|
| 569 |
+
26: 0, # 'p'
|
| 570 |
+
7: 0, # 'r'
|
| 571 |
+
8: 0, # 's'
|
| 572 |
+
9: 0, # 't'
|
| 573 |
+
14: 2, # 'u'
|
| 574 |
+
32: 0, # 'v'
|
| 575 |
+
57: 0, # 'w'
|
| 576 |
+
58: 0, # 'x'
|
| 577 |
+
11: 0, # 'y'
|
| 578 |
+
22: 2, # 'z'
|
| 579 |
+
63: 0, # '·'
|
| 580 |
+
54: 1, # 'Ç'
|
| 581 |
+
50: 0, # 'Ö'
|
| 582 |
+
55: 0, # 'Ü'
|
| 583 |
+
59: 0, # 'â'
|
| 584 |
+
33: 2, # 'ç'
|
| 585 |
+
61: 0, # 'î'
|
| 586 |
+
34: 1, # 'ö'
|
| 587 |
+
17: 0, # 'ü'
|
| 588 |
+
30: 0, # 'ğ'
|
| 589 |
+
41: 0, # 'İ'
|
| 590 |
+
6: 0, # 'ı'
|
| 591 |
+
40: 1, # 'Ş'
|
| 592 |
+
19: 1, # 'ş'
|
| 593 |
+
},
|
| 594 |
+
60: { # 'J'
|
| 595 |
+
23: 0, # 'A'
|
| 596 |
+
37: 0, # 'B'
|
| 597 |
+
47: 0, # 'C'
|
| 598 |
+
39: 0, # 'D'
|
| 599 |
+
29: 0, # 'E'
|
| 600 |
+
52: 0, # 'F'
|
| 601 |
+
36: 0, # 'G'
|
| 602 |
+
45: 0, # 'H'
|
| 603 |
+
53: 0, # 'I'
|
| 604 |
+
60: 0, # 'J'
|
| 605 |
+
16: 0, # 'K'
|
| 606 |
+
49: 0, # 'L'
|
| 607 |
+
20: 1, # 'M'
|
| 608 |
+
46: 0, # 'N'
|
| 609 |
+
42: 0, # 'O'
|
| 610 |
+
48: 0, # 'P'
|
| 611 |
+
44: 0, # 'R'
|
| 612 |
+
35: 0, # 'S'
|
| 613 |
+
31: 0, # 'T'
|
| 614 |
+
51: 0, # 'U'
|
| 615 |
+
38: 0, # 'V'
|
| 616 |
+
62: 0, # 'W'
|
| 617 |
+
43: 0, # 'Y'
|
| 618 |
+
56: 0, # 'Z'
|
| 619 |
+
1: 0, # 'a'
|
| 620 |
+
21: 1, # 'b'
|
| 621 |
+
28: 0, # 'c'
|
| 622 |
+
12: 1, # 'd'
|
| 623 |
+
2: 0, # 'e'
|
| 624 |
+
18: 0, # 'f'
|
| 625 |
+
27: 0, # 'g'
|
| 626 |
+
25: 0, # 'h'
|
| 627 |
+
3: 1, # 'i'
|
| 628 |
+
24: 0, # 'j'
|
| 629 |
+
10: 0, # 'k'
|
| 630 |
+
5: 0, # 'l'
|
| 631 |
+
13: 0, # 'm'
|
| 632 |
+
4: 1, # 'n'
|
| 633 |
+
15: 0, # 'o'
|
| 634 |
+
26: 0, # 'p'
|
| 635 |
+
7: 0, # 'r'
|
| 636 |
+
8: 1, # 's'
|
| 637 |
+
9: 0, # 't'
|
| 638 |
+
14: 0, # 'u'
|
| 639 |
+
32: 0, # 'v'
|
| 640 |
+
57: 0, # 'w'
|
| 641 |
+
58: 0, # 'x'
|
| 642 |
+
11: 0, # 'y'
|
| 643 |
+
22: 0, # 'z'
|
| 644 |
+
63: 0, # '·'
|
| 645 |
+
54: 0, # 'Ç'
|
| 646 |
+
50: 0, # 'Ö'
|
| 647 |
+
55: 0, # 'Ü'
|
| 648 |
+
59: 0, # 'â'
|
| 649 |
+
33: 0, # 'ç'
|
| 650 |
+
61: 0, # 'î'
|
| 651 |
+
34: 0, # 'ö'
|
| 652 |
+
17: 0, # 'ü'
|
| 653 |
+
30: 0, # 'ğ'
|
| 654 |
+
41: 0, # 'İ'
|
| 655 |
+
6: 0, # 'ı'
|
| 656 |
+
40: 0, # 'Ş'
|
| 657 |
+
19: 0, # 'ş'
|
| 658 |
+
},
|
| 659 |
+
16: { # 'K'
|
| 660 |
+
23: 0, # 'A'
|
| 661 |
+
37: 0, # 'B'
|
| 662 |
+
47: 0, # 'C'
|
| 663 |
+
39: 0, # 'D'
|
| 664 |
+
29: 3, # 'E'
|
| 665 |
+
52: 0, # 'F'
|
| 666 |
+
36: 0, # 'G'
|
| 667 |
+
45: 0, # 'H'
|
| 668 |
+
53: 0, # 'I'
|
| 669 |
+
60: 0, # 'J'
|
| 670 |
+
16: 0, # 'K'
|
| 671 |
+
49: 0, # 'L'
|
| 672 |
+
20: 2, # 'M'
|
| 673 |
+
46: 0, # 'N'
|
| 674 |
+
42: 0, # 'O'
|
| 675 |
+
48: 0, # 'P'
|
| 676 |
+
44: 0, # 'R'
|
| 677 |
+
35: 0, # 'S'
|
| 678 |
+
31: 2, # 'T'
|
| 679 |
+
51: 0, # 'U'
|
| 680 |
+
38: 0, # 'V'
|
| 681 |
+
62: 0, # 'W'
|
| 682 |
+
43: 0, # 'Y'
|
| 683 |
+
56: 0, # 'Z'
|
| 684 |
+
1: 2, # 'a'
|
| 685 |
+
21: 3, # 'b'
|
| 686 |
+
28: 0, # 'c'
|
| 687 |
+
12: 3, # 'd'
|
| 688 |
+
2: 1, # 'e'
|
| 689 |
+
18: 3, # 'f'
|
| 690 |
+
27: 3, # 'g'
|
| 691 |
+
25: 3, # 'h'
|
| 692 |
+
3: 3, # 'i'
|
| 693 |
+
24: 2, # 'j'
|
| 694 |
+
10: 3, # 'k'
|
| 695 |
+
5: 0, # 'l'
|
| 696 |
+
13: 0, # 'm'
|
| 697 |
+
4: 3, # 'n'
|
| 698 |
+
15: 0, # 'o'
|
| 699 |
+
26: 1, # 'p'
|
| 700 |
+
7: 3, # 'r'
|
| 701 |
+
8: 3, # 's'
|
| 702 |
+
9: 3, # 't'
|
| 703 |
+
14: 0, # 'u'
|
| 704 |
+
32: 3, # 'v'
|
| 705 |
+
57: 0, # 'w'
|
| 706 |
+
58: 0, # 'x'
|
| 707 |
+
11: 2, # 'y'
|
| 708 |
+
22: 1, # 'z'
|
| 709 |
+
63: 0, # '·'
|
| 710 |
+
54: 0, # 'Ç'
|
| 711 |
+
50: 0, # 'Ö'
|
| 712 |
+
55: 0, # 'Ü'
|
| 713 |
+
59: 0, # 'â'
|
| 714 |
+
33: 0, # 'ç'
|
| 715 |
+
61: 0, # 'î'
|
| 716 |
+
34: 0, # 'ö'
|
| 717 |
+
17: 2, # 'ü'
|
| 718 |
+
30: 0, # 'ğ'
|
| 719 |
+
41: 1, # 'İ'
|
| 720 |
+
6: 3, # 'ı'
|
| 721 |
+
40: 0, # 'Ş'
|
| 722 |
+
19: 0, # 'ş'
|
| 723 |
+
},
|
| 724 |
+
49: { # 'L'
|
| 725 |
+
23: 0, # 'A'
|
| 726 |
+
37: 0, # 'B'
|
| 727 |
+
47: 0, # 'C'
|
| 728 |
+
39: 0, # 'D'
|
| 729 |
+
29: 2, # 'E'
|
| 730 |
+
52: 0, # 'F'
|
| 731 |
+
36: 1, # 'G'
|
| 732 |
+
45: 1, # 'H'
|
| 733 |
+
53: 0, # 'I'
|
| 734 |
+
60: 0, # 'J'
|
| 735 |
+
16: 0, # 'K'
|
| 736 |
+
49: 0, # 'L'
|
| 737 |
+
20: 1, # 'M'
|
| 738 |
+
46: 0, # 'N'
|
| 739 |
+
42: 2, # 'O'
|
| 740 |
+
48: 0, # 'P'
|
| 741 |
+
44: 0, # 'R'
|
| 742 |
+
35: 0, # 'S'
|
| 743 |
+
31: 0, # 'T'
|
| 744 |
+
51: 0, # 'U'
|
| 745 |
+
38: 0, # 'V'
|
| 746 |
+
62: 0, # 'W'
|
| 747 |
+
43: 1, # 'Y'
|
| 748 |
+
56: 0, # 'Z'
|
| 749 |
+
1: 0, # 'a'
|
| 750 |
+
21: 3, # 'b'
|
| 751 |
+
28: 0, # 'c'
|
| 752 |
+
12: 2, # 'd'
|
| 753 |
+
2: 0, # 'e'
|
| 754 |
+
18: 0, # 'f'
|
| 755 |
+
27: 0, # 'g'
|
| 756 |
+
25: 0, # 'h'
|
| 757 |
+
3: 2, # 'i'
|
| 758 |
+
24: 0, # 'j'
|
| 759 |
+
10: 1, # 'k'
|
| 760 |
+
5: 0, # 'l'
|
| 761 |
+
13: 0, # 'm'
|
| 762 |
+
4: 2, # 'n'
|
| 763 |
+
15: 1, # 'o'
|
| 764 |
+
26: 1, # 'p'
|
| 765 |
+
7: 1, # 'r'
|
| 766 |
+
8: 1, # 's'
|
| 767 |
+
9: 1, # 't'
|
| 768 |
+
14: 0, # 'u'
|
| 769 |
+
32: 0, # 'v'
|
| 770 |
+
57: 0, # 'w'
|
| 771 |
+
58: 0, # 'x'
|
| 772 |
+
11: 2, # 'y'
|
| 773 |
+
22: 0, # 'z'
|
| 774 |
+
63: 0, # '·'
|
| 775 |
+
54: 0, # 'Ç'
|
| 776 |
+
50: 0, # 'Ö'
|
| 777 |
+
55: 2, # 'Ü'
|
| 778 |
+
59: 0, # 'â'
|
| 779 |
+
33: 0, # 'ç'
|
| 780 |
+
61: 0, # 'î'
|
| 781 |
+
34: 1, # 'ö'
|
| 782 |
+
17: 1, # 'ü'
|
| 783 |
+
30: 1, # 'ğ'
|
| 784 |
+
41: 0, # 'İ'
|
| 785 |
+
6: 2, # 'ı'
|
| 786 |
+
40: 0, # 'Ş'
|
| 787 |
+
19: 0, # 'ş'
|
| 788 |
+
},
|
| 789 |
+
20: { # 'M'
|
| 790 |
+
23: 1, # 'A'
|
| 791 |
+
37: 0, # 'B'
|
| 792 |
+
47: 0, # 'C'
|
| 793 |
+
39: 0, # 'D'
|
| 794 |
+
29: 0, # 'E'
|
| 795 |
+
52: 0, # 'F'
|
| 796 |
+
36: 0, # 'G'
|
| 797 |
+
45: 0, # 'H'
|
| 798 |
+
53: 0, # 'I'
|
| 799 |
+
60: 1, # 'J'
|
| 800 |
+
16: 3, # 'K'
|
| 801 |
+
49: 0, # 'L'
|
| 802 |
+
20: 2, # 'M'
|
| 803 |
+
46: 0, # 'N'
|
| 804 |
+
42: 0, # 'O'
|
| 805 |
+
48: 0, # 'P'
|
| 806 |
+
44: 0, # 'R'
|
| 807 |
+
35: 0, # 'S'
|
| 808 |
+
31: 1, # 'T'
|
| 809 |
+
51: 0, # 'U'
|
| 810 |
+
38: 0, # 'V'
|
| 811 |
+
62: 0, # 'W'
|
| 812 |
+
43: 0, # 'Y'
|
| 813 |
+
56: 0, # 'Z'
|
| 814 |
+
1: 3, # 'a'
|
| 815 |
+
21: 2, # 'b'
|
| 816 |
+
28: 0, # 'c'
|
| 817 |
+
12: 3, # 'd'
|
| 818 |
+
2: 3, # 'e'
|
| 819 |
+
18: 0, # 'f'
|
| 820 |
+
27: 1, # 'g'
|
| 821 |
+
25: 1, # 'h'
|
| 822 |
+
3: 2, # 'i'
|
| 823 |
+
24: 2, # 'j'
|
| 824 |
+
10: 2, # 'k'
|
| 825 |
+
5: 2, # 'l'
|
| 826 |
+
13: 3, # 'm'
|
| 827 |
+
4: 3, # 'n'
|
| 828 |
+
15: 0, # 'o'
|
| 829 |
+
26: 1, # 'p'
|
| 830 |
+
7: 3, # 'r'
|
| 831 |
+
8: 0, # 's'
|
| 832 |
+
9: 2, # 't'
|
| 833 |
+
14: 3, # 'u'
|
| 834 |
+
32: 0, # 'v'
|
| 835 |
+
57: 0, # 'w'
|
| 836 |
+
58: 0, # 'x'
|
| 837 |
+
11: 2, # 'y'
|
| 838 |
+
22: 0, # 'z'
|
| 839 |
+
63: 0, # '·'
|
| 840 |
+
54: 0, # 'Ç'
|
| 841 |
+
50: 0, # 'Ö'
|
| 842 |
+
55: 0, # 'Ü'
|
| 843 |
+
59: 0, # 'â'
|
| 844 |
+
33: 3, # 'ç'
|
| 845 |
+
61: 0, # 'î'
|
| 846 |
+
34: 0, # 'ö'
|
| 847 |
+
17: 0, # 'ü'
|
| 848 |
+
30: 0, # 'ğ'
|
| 849 |
+
41: 0, # 'İ'
|
| 850 |
+
6: 3, # 'ı'
|
| 851 |
+
40: 0, # 'Ş'
|
| 852 |
+
19: 0, # 'ş'
|
| 853 |
+
},
|
| 854 |
+
46: { # 'N'
|
| 855 |
+
23: 0, # 'A'
|
| 856 |
+
37: 1, # 'B'
|
| 857 |
+
47: 0, # 'C'
|
| 858 |
+
39: 0, # 'D'
|
| 859 |
+
29: 0, # 'E'
|
| 860 |
+
52: 1, # 'F'
|
| 861 |
+
36: 1, # 'G'
|
| 862 |
+
45: 1, # 'H'
|
| 863 |
+
53: 0, # 'I'
|
| 864 |
+
60: 0, # 'J'
|
| 865 |
+
16: 2, # 'K'
|
| 866 |
+
49: 0, # 'L'
|
| 867 |
+
20: 0, # 'M'
|
| 868 |
+
46: 1, # 'N'
|
| 869 |
+
42: 0, # 'O'
|
| 870 |
+
48: 0, # 'P'
|
| 871 |
+
44: 1, # 'R'
|
| 872 |
+
35: 1, # 'S'
|
| 873 |
+
31: 0, # 'T'
|
| 874 |
+
51: 1, # 'U'
|
| 875 |
+
38: 2, # 'V'
|
| 876 |
+
62: 0, # 'W'
|
| 877 |
+
43: 1, # 'Y'
|
| 878 |
+
56: 0, # 'Z'
|
| 879 |
+
1: 3, # 'a'
|
| 880 |
+
21: 0, # 'b'
|
| 881 |
+
28: 2, # 'c'
|
| 882 |
+
12: 0, # 'd'
|
| 883 |
+
2: 3, # 'e'
|
| 884 |
+
18: 0, # 'f'
|
| 885 |
+
27: 1, # 'g'
|
| 886 |
+
25: 0, # 'h'
|
| 887 |
+
3: 0, # 'i'
|
| 888 |
+
24: 2, # 'j'
|
| 889 |
+
10: 1, # 'k'
|
| 890 |
+
5: 1, # 'l'
|
| 891 |
+
13: 3, # 'm'
|
| 892 |
+
4: 2, # 'n'
|
| 893 |
+
15: 1, # 'o'
|
| 894 |
+
26: 1, # 'p'
|
| 895 |
+
7: 1, # 'r'
|
| 896 |
+
8: 0, # 's'
|
| 897 |
+
9: 0, # 't'
|
| 898 |
+
14: 3, # 'u'
|
| 899 |
+
32: 0, # 'v'
|
| 900 |
+
57: 0, # 'w'
|
| 901 |
+
58: 1, # 'x'
|
| 902 |
+
11: 1, # 'y'
|
| 903 |
+
22: 2, # 'z'
|
| 904 |
+
63: 0, # '·'
|
| 905 |
+
54: 1, # 'Ç'
|
| 906 |
+
50: 1, # 'Ö'
|
| 907 |
+
55: 0, # 'Ü'
|
| 908 |
+
59: 0, # 'â'
|
| 909 |
+
33: 0, # 'ç'
|
| 910 |
+
61: 0, # 'î'
|
| 911 |
+
34: 1, # 'ö'
|
| 912 |
+
17: 0, # 'ü'
|
| 913 |
+
30: 0, # 'ğ'
|
| 914 |
+
41: 1, # 'İ'
|
| 915 |
+
6: 2, # 'ı'
|
| 916 |
+
40: 1, # 'Ş'
|
| 917 |
+
19: 1, # 'ş'
|
| 918 |
+
},
|
| 919 |
+
42: { # 'O'
|
| 920 |
+
23: 0, # 'A'
|
| 921 |
+
37: 0, # 'B'
|
| 922 |
+
47: 0, # 'C'
|
| 923 |
+
39: 0, # 'D'
|
| 924 |
+
29: 0, # 'E'
|
| 925 |
+
52: 1, # 'F'
|
| 926 |
+
36: 0, # 'G'
|
| 927 |
+
45: 1, # 'H'
|
| 928 |
+
53: 0, # 'I'
|
| 929 |
+
60: 0, # 'J'
|
| 930 |
+
16: 2, # 'K'
|
| 931 |
+
49: 1, # 'L'
|
| 932 |
+
20: 0, # 'M'
|
| 933 |
+
46: 0, # 'N'
|
| 934 |
+
42: 0, # 'O'
|
| 935 |
+
48: 2, # 'P'
|
| 936 |
+
44: 1, # 'R'
|
| 937 |
+
35: 1, # 'S'
|
| 938 |
+
31: 0, # 'T'
|
| 939 |
+
51: 1, # 'U'
|
| 940 |
+
38: 1, # 'V'
|
| 941 |
+
62: 0, # 'W'
|
| 942 |
+
43: 0, # 'Y'
|
| 943 |
+
56: 0, # 'Z'
|
| 944 |
+
1: 3, # 'a'
|
| 945 |
+
21: 0, # 'b'
|
| 946 |
+
28: 2, # 'c'
|
| 947 |
+
12: 0, # 'd'
|
| 948 |
+
2: 2, # 'e'
|
| 949 |
+
18: 0, # 'f'
|
| 950 |
+
27: 0, # 'g'
|
| 951 |
+
25: 0, # 'h'
|
| 952 |
+
3: 0, # 'i'
|
| 953 |
+
24: 0, # 'j'
|
| 954 |
+
10: 0, # 'k'
|
| 955 |
+
5: 3, # 'l'
|
| 956 |
+
13: 3, # 'm'
|
| 957 |
+
4: 0, # 'n'
|
| 958 |
+
15: 1, # 'o'
|
| 959 |
+
26: 0, # 'p'
|
| 960 |
+
7: 0, # 'r'
|
| 961 |
+
8: 0, # 's'
|
| 962 |
+
9: 0, # 't'
|
| 963 |
+
14: 2, # 'u'
|
| 964 |
+
32: 0, # 'v'
|
| 965 |
+
57: 0, # 'w'
|
| 966 |
+
58: 0, # 'x'
|
| 967 |
+
11: 0, # 'y'
|
| 968 |
+
22: 2, # 'z'
|
| 969 |
+
63: 0, # '·'
|
| 970 |
+
54: 2, # 'Ç'
|
| 971 |
+
50: 1, # 'Ö'
|
| 972 |
+
55: 0, # 'Ü'
|
| 973 |
+
59: 0, # 'â'
|
| 974 |
+
33: 2, # 'ç'
|
| 975 |
+
61: 0, # 'î'
|
| 976 |
+
34: 1, # 'ö'
|
| 977 |
+
17: 0, # 'ü'
|
| 978 |
+
30: 1, # 'ğ'
|
| 979 |
+
41: 2, # 'İ'
|
| 980 |
+
6: 1, # 'ı'
|
| 981 |
+
40: 1, # 'Ş'
|
| 982 |
+
19: 1, # 'ş'
|
| 983 |
+
},
|
| 984 |
+
48: { # 'P'
|
| 985 |
+
23: 0, # 'A'
|
| 986 |
+
37: 0, # 'B'
|
| 987 |
+
47: 2, # 'C'
|
| 988 |
+
39: 0, # 'D'
|
| 989 |
+
29: 0, # 'E'
|
| 990 |
+
52: 2, # 'F'
|
| 991 |
+
36: 1, # 'G'
|
| 992 |
+
45: 1, # 'H'
|
| 993 |
+
53: 0, # 'I'
|
| 994 |
+
60: 0, # 'J'
|
| 995 |
+
16: 2, # 'K'
|
| 996 |
+
49: 0, # 'L'
|
| 997 |
+
20: 0, # 'M'
|
| 998 |
+
46: 1, # 'N'
|
| 999 |
+
42: 1, # 'O'
|
| 1000 |
+
48: 1, # 'P'
|
| 1001 |
+
44: 0, # 'R'
|
| 1002 |
+
35: 1, # 'S'
|
| 1003 |
+
31: 0, # 'T'
|
| 1004 |
+
51: 0, # 'U'
|
| 1005 |
+
38: 1, # 'V'
|
| 1006 |
+
62: 0, # 'W'
|
| 1007 |
+
43: 0, # 'Y'
|
| 1008 |
+
56: 0, # 'Z'
|
| 1009 |
+
1: 2, # 'a'
|
| 1010 |
+
21: 0, # 'b'
|
| 1011 |
+
28: 2, # 'c'
|
| 1012 |
+
12: 0, # 'd'
|
| 1013 |
+
2: 3, # 'e'
|
| 1014 |
+
18: 0, # 'f'
|
| 1015 |
+
27: 0, # 'g'
|
| 1016 |
+
25: 0, # 'h'
|
| 1017 |
+
3: 0, # 'i'
|
| 1018 |
+
24: 0, # 'j'
|
| 1019 |
+
10: 1, # 'k'
|
| 1020 |
+
5: 0, # 'l'
|
| 1021 |
+
13: 2, # 'm'
|
| 1022 |
+
4: 0, # 'n'
|
| 1023 |
+
15: 2, # 'o'
|
| 1024 |
+
26: 0, # 'p'
|
| 1025 |
+
7: 0, # 'r'
|
| 1026 |
+
8: 0, # 's'
|
| 1027 |
+
9: 0, # 't'
|
| 1028 |
+
14: 2, # 'u'
|
| 1029 |
+
32: 0, # 'v'
|
| 1030 |
+
57: 0, # 'w'
|
| 1031 |
+
58: 2, # 'x'
|
| 1032 |
+
11: 0, # 'y'
|
| 1033 |
+
22: 2, # 'z'
|
| 1034 |
+
63: 0, # '·'
|
| 1035 |
+
54: 1, # 'Ç'
|
| 1036 |
+
50: 2, # 'Ö'
|
| 1037 |
+
55: 0, # 'Ü'
|
| 1038 |
+
59: 0, # 'â'
|
| 1039 |
+
33: 0, # 'ç'
|
| 1040 |
+
61: 0, # 'î'
|
| 1041 |
+
34: 2, # 'ö'
|
| 1042 |
+
17: 0, # 'ü'
|
| 1043 |
+
30: 1, # 'ğ'
|
| 1044 |
+
41: 1, # 'İ'
|
| 1045 |
+
6: 0, # 'ı'
|
| 1046 |
+
40: 2, # 'Ş'
|
| 1047 |
+
19: 1, # 'ş'
|
| 1048 |
+
},
|
| 1049 |
+
44: { # 'R'
|
| 1050 |
+
23: 0, # 'A'
|
| 1051 |
+
37: 0, # 'B'
|
| 1052 |
+
47: 1, # 'C'
|
| 1053 |
+
39: 0, # 'D'
|
| 1054 |
+
29: 0, # 'E'
|
| 1055 |
+
52: 1, # 'F'
|
| 1056 |
+
36: 0, # 'G'
|
| 1057 |
+
45: 0, # 'H'
|
| 1058 |
+
53: 0, # 'I'
|
| 1059 |
+
60: 0, # 'J'
|
| 1060 |
+
16: 3, # 'K'
|
| 1061 |
+
49: 0, # 'L'
|
| 1062 |
+
20: 0, # 'M'
|
| 1063 |
+
46: 0, # 'N'
|
| 1064 |
+
42: 0, # 'O'
|
| 1065 |
+
48: 1, # 'P'
|
| 1066 |
+
44: 0, # 'R'
|
| 1067 |
+
35: 0, # 'S'
|
| 1068 |
+
31: 0, # 'T'
|
| 1069 |
+
51: 0, # 'U'
|
| 1070 |
+
38: 0, # 'V'
|
| 1071 |
+
62: 0, # 'W'
|
| 1072 |
+
43: 1, # 'Y'
|
| 1073 |
+
56: 0, # 'Z'
|
| 1074 |
+
1: 3, # 'a'
|
| 1075 |
+
21: 1, # 'b'
|
| 1076 |
+
28: 1, # 'c'
|
| 1077 |
+
12: 0, # 'd'
|
| 1078 |
+
2: 2, # 'e'
|
| 1079 |
+
18: 0, # 'f'
|
| 1080 |
+
27: 0, # 'g'
|
| 1081 |
+
25: 0, # 'h'
|
| 1082 |
+
3: 0, # 'i'
|
| 1083 |
+
24: 0, # 'j'
|
| 1084 |
+
10: 1, # 'k'
|
| 1085 |
+
5: 2, # 'l'
|
| 1086 |
+
13: 2, # 'm'
|
| 1087 |
+
4: 0, # 'n'
|
| 1088 |
+
15: 1, # 'o'
|
| 1089 |
+
26: 0, # 'p'
|
| 1090 |
+
7: 0, # 'r'
|
| 1091 |
+
8: 0, # 's'
|
| 1092 |
+
9: 0, # 't'
|
| 1093 |
+
14: 2, # 'u'
|
| 1094 |
+
32: 0, # 'v'
|
| 1095 |
+
57: 0, # 'w'
|
| 1096 |
+
58: 0, # 'x'
|
| 1097 |
+
11: 1, # 'y'
|
| 1098 |
+
22: 2, # 'z'
|
| 1099 |
+
63: 0, # '·'
|
| 1100 |
+
54: 0, # 'Ç'
|
| 1101 |
+
50: 1, # 'Ö'
|
| 1102 |
+
55: 0, # 'Ü'
|
| 1103 |
+
59: 0, # 'â'
|
| 1104 |
+
33: 1, # 'ç'
|
| 1105 |
+
61: 0, # 'î'
|
| 1106 |
+
34: 1, # 'ö'
|
| 1107 |
+
17: 1, # 'ü'
|
| 1108 |
+
30: 1, # 'ğ'
|
| 1109 |
+
41: 0, # 'İ'
|
| 1110 |
+
6: 2, # 'ı'
|
| 1111 |
+
40: 1, # 'Ş'
|
| 1112 |
+
19: 1, # 'ş'
|
| 1113 |
+
},
|
| 1114 |
+
35: { # 'S'
|
| 1115 |
+
23: 0, # 'A'
|
| 1116 |
+
37: 0, # 'B'
|
| 1117 |
+
47: 1, # 'C'
|
| 1118 |
+
39: 0, # 'D'
|
| 1119 |
+
29: 0, # 'E'
|
| 1120 |
+
52: 1, # 'F'
|
| 1121 |
+
36: 1, # 'G'
|
| 1122 |
+
45: 1, # 'H'
|
| 1123 |
+
53: 0, # 'I'
|
| 1124 |
+
60: 0, # 'J'
|
| 1125 |
+
16: 3, # 'K'
|
| 1126 |
+
49: 1, # 'L'
|
| 1127 |
+
20: 1, # 'M'
|
| 1128 |
+
46: 0, # 'N'
|
| 1129 |
+
42: 0, # 'O'
|
| 1130 |
+
48: 1, # 'P'
|
| 1131 |
+
44: 0, # 'R'
|
| 1132 |
+
35: 0, # 'S'
|
| 1133 |
+
31: 0, # 'T'
|
| 1134 |
+
51: 1, # 'U'
|
| 1135 |
+
38: 1, # 'V'
|
| 1136 |
+
62: 0, # 'W'
|
| 1137 |
+
43: 1, # 'Y'
|
| 1138 |
+
56: 0, # 'Z'
|
| 1139 |
+
1: 3, # 'a'
|
| 1140 |
+
21: 0, # 'b'
|
| 1141 |
+
28: 2, # 'c'
|
| 1142 |
+
12: 0, # 'd'
|
| 1143 |
+
2: 3, # 'e'
|
| 1144 |
+
18: 0, # 'f'
|
| 1145 |
+
27: 0, # 'g'
|
| 1146 |
+
25: 0, # 'h'
|
| 1147 |
+
3: 0, # 'i'
|
| 1148 |
+
24: 0, # 'j'
|
| 1149 |
+
10: 1, # 'k'
|
| 1150 |
+
5: 1, # 'l'
|
| 1151 |
+
13: 2, # 'm'
|
| 1152 |
+
4: 1, # 'n'
|
| 1153 |
+
15: 0, # 'o'
|
| 1154 |
+
26: 0, # 'p'
|
| 1155 |
+
7: 0, # 'r'
|
| 1156 |
+
8: 0, # 's'
|
| 1157 |
+
9: 1, # 't'
|
| 1158 |
+
14: 2, # 'u'
|
| 1159 |
+
32: 0, # 'v'
|
| 1160 |
+
57: 0, # 'w'
|
| 1161 |
+
58: 0, # 'x'
|
| 1162 |
+
11: 0, # 'y'
|
| 1163 |
+
22: 1, # 'z'
|
| 1164 |
+
63: 0, # '·'
|
| 1165 |
+
54: 2, # 'Ç'
|
| 1166 |
+
50: 2, # 'Ö'
|
| 1167 |
+
55: 0, # 'Ü'
|
| 1168 |
+
59: 0, # 'â'
|
| 1169 |
+
33: 3, # 'ç'
|
| 1170 |
+
61: 0, # 'î'
|
| 1171 |
+
34: 1, # 'ö'
|
| 1172 |
+
17: 0, # 'ü'
|
| 1173 |
+
30: 0, # 'ğ'
|
| 1174 |
+
41: 0, # 'İ'
|
| 1175 |
+
6: 3, # 'ı'
|
| 1176 |
+
40: 2, # 'Ş'
|
| 1177 |
+
19: 1, # 'ş'
|
| 1178 |
+
},
|
| 1179 |
+
31: { # 'T'
|
| 1180 |
+
23: 0, # 'A'
|
| 1181 |
+
37: 0, # 'B'
|
| 1182 |
+
47: 0, # 'C'
|
| 1183 |
+
39: 0, # 'D'
|
| 1184 |
+
29: 0, # 'E'
|
| 1185 |
+
52: 0, # 'F'
|
| 1186 |
+
36: 0, # 'G'
|
| 1187 |
+
45: 0, # 'H'
|
| 1188 |
+
53: 0, # 'I'
|
| 1189 |
+
60: 1, # 'J'
|
| 1190 |
+
16: 2, # 'K'
|
| 1191 |
+
49: 0, # 'L'
|
| 1192 |
+
20: 1, # 'M'
|
| 1193 |
+
46: 0, # 'N'
|
| 1194 |
+
42: 0, # 'O'
|
| 1195 |
+
48: 0, # 'P'
|
| 1196 |
+
44: 0, # 'R'
|
| 1197 |
+
35: 0, # 'S'
|
| 1198 |
+
31: 2, # 'T'
|
| 1199 |
+
51: 0, # 'U'
|
| 1200 |
+
38: 0, # 'V'
|
| 1201 |
+
62: 0, # 'W'
|
| 1202 |
+
43: 0, # 'Y'
|
| 1203 |
+
56: 0, # 'Z'
|
| 1204 |
+
1: 3, # 'a'
|
| 1205 |
+
21: 2, # 'b'
|
| 1206 |
+
28: 0, # 'c'
|
| 1207 |
+
12: 1, # 'd'
|
| 1208 |
+
2: 3, # 'e'
|
| 1209 |
+
18: 2, # 'f'
|
| 1210 |
+
27: 2, # 'g'
|
| 1211 |
+
25: 0, # 'h'
|
| 1212 |
+
3: 1, # 'i'
|
| 1213 |
+
24: 1, # 'j'
|
| 1214 |
+
10: 2, # 'k'
|
| 1215 |
+
5: 2, # 'l'
|
| 1216 |
+
13: 3, # 'm'
|
| 1217 |
+
4: 3, # 'n'
|
| 1218 |
+
15: 0, # 'o'
|
| 1219 |
+
26: 2, # 'p'
|
| 1220 |
+
7: 2, # 'r'
|
| 1221 |
+
8: 0, # 's'
|
| 1222 |
+
9: 2, # 't'
|
| 1223 |
+
14: 2, # 'u'
|
| 1224 |
+
32: 1, # 'v'
|
| 1225 |
+
57: 1, # 'w'
|
| 1226 |
+
58: 1, # 'x'
|
| 1227 |
+
11: 2, # 'y'
|
| 1228 |
+
22: 0, # 'z'
|
| 1229 |
+
63: 0, # '·'
|
| 1230 |
+
54: 0, # 'Ç'
|
| 1231 |
+
50: 0, # 'Ö'
|
| 1232 |
+
55: 0, # 'Ü'
|
| 1233 |
+
59: 0, # 'â'
|
| 1234 |
+
33: 0, # 'ç'
|
| 1235 |
+
61: 0, # 'î'
|
| 1236 |
+
34: 0, # 'ö'
|
| 1237 |
+
17: 1, # 'ü'
|
| 1238 |
+
30: 0, # 'ğ'
|
| 1239 |
+
41: 0, # 'İ'
|
| 1240 |
+
6: 3, # 'ı'
|
| 1241 |
+
40: 0, # 'Ş'
|
| 1242 |
+
19: 0, # 'ş'
|
| 1243 |
+
},
|
| 1244 |
+
51: { # 'U'
|
| 1245 |
+
23: 0, # 'A'
|
| 1246 |
+
37: 0, # 'B'
|
| 1247 |
+
47: 0, # 'C'
|
| 1248 |
+
39: 0, # 'D'
|
| 1249 |
+
29: 0, # 'E'
|
| 1250 |
+
52: 1, # 'F'
|
| 1251 |
+
36: 1, # 'G'
|
| 1252 |
+
45: 0, # 'H'
|
| 1253 |
+
53: 0, # 'I'
|
| 1254 |
+
60: 0, # 'J'
|
| 1255 |
+
16: 1, # 'K'
|
| 1256 |
+
49: 0, # 'L'
|
| 1257 |
+
20: 0, # 'M'
|
| 1258 |
+
46: 1, # 'N'
|
| 1259 |
+
42: 0, # 'O'
|
| 1260 |
+
48: 1, # 'P'
|
| 1261 |
+
44: 0, # 'R'
|
| 1262 |
+
35: 0, # 'S'
|
| 1263 |
+
31: 0, # 'T'
|
| 1264 |
+
51: 1, # 'U'
|
| 1265 |
+
38: 1, # 'V'
|
| 1266 |
+
62: 0, # 'W'
|
| 1267 |
+
43: 0, # 'Y'
|
| 1268 |
+
56: 0, # 'Z'
|
| 1269 |
+
1: 3, # 'a'
|
| 1270 |
+
21: 0, # 'b'
|
| 1271 |
+
28: 1, # 'c'
|
| 1272 |
+
12: 0, # 'd'
|
| 1273 |
+
2: 3, # 'e'
|
| 1274 |
+
18: 0, # 'f'
|
| 1275 |
+
27: 2, # 'g'
|
| 1276 |
+
25: 0, # 'h'
|
| 1277 |
+
3: 0, # 'i'
|
| 1278 |
+
24: 0, # 'j'
|
| 1279 |
+
10: 1, # 'k'
|
| 1280 |
+
5: 1, # 'l'
|
| 1281 |
+
13: 3, # 'm'
|
| 1282 |
+
4: 2, # 'n'
|
| 1283 |
+
15: 0, # 'o'
|
| 1284 |
+
26: 1, # 'p'
|
| 1285 |
+
7: 0, # 'r'
|
| 1286 |
+
8: 0, # 's'
|
| 1287 |
+
9: 0, # 't'
|
| 1288 |
+
14: 2, # 'u'
|
| 1289 |
+
32: 0, # 'v'
|
| 1290 |
+
57: 0, # 'w'
|
| 1291 |
+
58: 0, # 'x'
|
| 1292 |
+
11: 0, # 'y'
|
| 1293 |
+
22: 2, # 'z'
|
| 1294 |
+
63: 0, # '·'
|
| 1295 |
+
54: 1, # 'Ç'
|
| 1296 |
+
50: 1, # 'Ö'
|
| 1297 |
+
55: 0, # 'Ü'
|
| 1298 |
+
59: 0, # 'â'
|
| 1299 |
+
33: 0, # 'ç'
|
| 1300 |
+
61: 0, # 'î'
|
| 1301 |
+
34: 0, # 'ö'
|
| 1302 |
+
17: 0, # 'ü'
|
| 1303 |
+
30: 1, # 'ğ'
|
| 1304 |
+
41: 1, # 'İ'
|
| 1305 |
+
6: 2, # 'ı'
|
| 1306 |
+
40: 0, # 'Ş'
|
| 1307 |
+
19: 1, # 'ş'
|
| 1308 |
+
},
|
| 1309 |
+
38: { # 'V'
|
| 1310 |
+
23: 1, # 'A'
|
| 1311 |
+
37: 1, # 'B'
|
| 1312 |
+
47: 1, # 'C'
|
| 1313 |
+
39: 0, # 'D'
|
| 1314 |
+
29: 0, # 'E'
|
| 1315 |
+
52: 2, # 'F'
|
| 1316 |
+
36: 0, # 'G'
|
| 1317 |
+
45: 0, # 'H'
|
| 1318 |
+
53: 0, # 'I'
|
| 1319 |
+
60: 0, # 'J'
|
| 1320 |
+
16: 3, # 'K'
|
| 1321 |
+
49: 0, # 'L'
|
| 1322 |
+
20: 3, # 'M'
|
| 1323 |
+
46: 0, # 'N'
|
| 1324 |
+
42: 0, # 'O'
|
| 1325 |
+
48: 1, # 'P'
|
| 1326 |
+
44: 1, # 'R'
|
| 1327 |
+
35: 0, # 'S'
|
| 1328 |
+
31: 0, # 'T'
|
| 1329 |
+
51: 1, # 'U'
|
| 1330 |
+
38: 1, # 'V'
|
| 1331 |
+
62: 0, # 'W'
|
| 1332 |
+
43: 0, # 'Y'
|
| 1333 |
+
56: 0, # 'Z'
|
| 1334 |
+
1: 3, # 'a'
|
| 1335 |
+
21: 0, # 'b'
|
| 1336 |
+
28: 2, # 'c'
|
| 1337 |
+
12: 0, # 'd'
|
| 1338 |
+
2: 3, # 'e'
|
| 1339 |
+
18: 0, # 'f'
|
| 1340 |
+
27: 0, # 'g'
|
| 1341 |
+
25: 0, # 'h'
|
| 1342 |
+
3: 0, # 'i'
|
| 1343 |
+
24: 0, # 'j'
|
| 1344 |
+
10: 0, # 'k'
|
| 1345 |
+
5: 2, # 'l'
|
| 1346 |
+
13: 2, # 'm'
|
| 1347 |
+
4: 0, # 'n'
|
| 1348 |
+
15: 2, # 'o'
|
| 1349 |
+
26: 0, # 'p'
|
| 1350 |
+
7: 0, # 'r'
|
| 1351 |
+
8: 0, # 's'
|
| 1352 |
+
9: 1, # 't'
|
| 1353 |
+
14: 3, # 'u'
|
| 1354 |
+
32: 0, # 'v'
|
| 1355 |
+
57: 0, # 'w'
|
| 1356 |
+
58: 0, # 'x'
|
| 1357 |
+
11: 1, # 'y'
|
| 1358 |
+
22: 2, # 'z'
|
| 1359 |
+
63: 0, # '·'
|
| 1360 |
+
54: 1, # 'Ç'
|
| 1361 |
+
50: 1, # 'Ö'
|
| 1362 |
+
55: 0, # 'Ü'
|
| 1363 |
+
59: 1, # 'â'
|
| 1364 |
+
33: 2, # 'ç'
|
| 1365 |
+
61: 0, # 'î'
|
| 1366 |
+
34: 1, # 'ö'
|
| 1367 |
+
17: 0, # 'ü'
|
| 1368 |
+
30: 1, # 'ğ'
|
| 1369 |
+
41: 1, # 'İ'
|
| 1370 |
+
6: 3, # 'ı'
|
| 1371 |
+
40: 2, # 'Ş'
|
| 1372 |
+
19: 1, # 'ş'
|
| 1373 |
+
},
|
| 1374 |
+
62: { # 'W'
|
| 1375 |
+
23: 0, # 'A'
|
| 1376 |
+
37: 0, # 'B'
|
| 1377 |
+
47: 0, # 'C'
|
| 1378 |
+
39: 0, # 'D'
|
| 1379 |
+
29: 0, # 'E'
|
| 1380 |
+
52: 0, # 'F'
|
| 1381 |
+
36: 0, # 'G'
|
| 1382 |
+
45: 0, # 'H'
|
| 1383 |
+
53: 0, # 'I'
|
| 1384 |
+
60: 0, # 'J'
|
| 1385 |
+
16: 0, # 'K'
|
| 1386 |
+
49: 0, # 'L'
|
| 1387 |
+
20: 0, # 'M'
|
| 1388 |
+
46: 0, # 'N'
|
| 1389 |
+
42: 0, # 'O'
|
| 1390 |
+
48: 0, # 'P'
|
| 1391 |
+
44: 0, # 'R'
|
| 1392 |
+
35: 0, # 'S'
|
| 1393 |
+
31: 0, # 'T'
|
| 1394 |
+
51: 0, # 'U'
|
| 1395 |
+
38: 0, # 'V'
|
| 1396 |
+
62: 0, # 'W'
|
| 1397 |
+
43: 0, # 'Y'
|
| 1398 |
+
56: 0, # 'Z'
|
| 1399 |
+
1: 0, # 'a'
|
| 1400 |
+
21: 0, # 'b'
|
| 1401 |
+
28: 0, # 'c'
|
| 1402 |
+
12: 0, # 'd'
|
| 1403 |
+
2: 0, # 'e'
|
| 1404 |
+
18: 0, # 'f'
|
| 1405 |
+
27: 0, # 'g'
|
| 1406 |
+
25: 0, # 'h'
|
| 1407 |
+
3: 0, # 'i'
|
| 1408 |
+
24: 0, # 'j'
|
| 1409 |
+
10: 0, # 'k'
|
| 1410 |
+
5: 0, # 'l'
|
| 1411 |
+
13: 0, # 'm'
|
| 1412 |
+
4: 0, # 'n'
|
| 1413 |
+
15: 0, # 'o'
|
| 1414 |
+
26: 0, # 'p'
|
| 1415 |
+
7: 0, # 'r'
|
| 1416 |
+
8: 0, # 's'
|
| 1417 |
+
9: 0, # 't'
|
| 1418 |
+
14: 0, # 'u'
|
| 1419 |
+
32: 0, # 'v'
|
| 1420 |
+
57: 0, # 'w'
|
| 1421 |
+
58: 0, # 'x'
|
| 1422 |
+
11: 0, # 'y'
|
| 1423 |
+
22: 0, # 'z'
|
| 1424 |
+
63: 0, # '·'
|
| 1425 |
+
54: 0, # 'Ç'
|
| 1426 |
+
50: 0, # 'Ö'
|
| 1427 |
+
55: 0, # 'Ü'
|
| 1428 |
+
59: 0, # 'â'
|
| 1429 |
+
33: 0, # 'ç'
|
| 1430 |
+
61: 0, # 'î'
|
| 1431 |
+
34: 0, # 'ö'
|
| 1432 |
+
17: 0, # 'ü'
|
| 1433 |
+
30: 0, # 'ğ'
|
| 1434 |
+
41: 0, # 'İ'
|
| 1435 |
+
6: 0, # 'ı'
|
| 1436 |
+
40: 0, # 'Ş'
|
| 1437 |
+
19: 0, # 'ş'
|
| 1438 |
+
},
|
| 1439 |
+
43: { # 'Y'
|
| 1440 |
+
23: 0, # 'A'
|
| 1441 |
+
37: 0, # 'B'
|
| 1442 |
+
47: 1, # 'C'
|
| 1443 |
+
39: 0, # 'D'
|
| 1444 |
+
29: 0, # 'E'
|
| 1445 |
+
52: 2, # 'F'
|
| 1446 |
+
36: 0, # 'G'
|
| 1447 |
+
45: 1, # 'H'
|
| 1448 |
+
53: 1, # 'I'
|
| 1449 |
+
60: 0, # 'J'
|
| 1450 |
+
16: 2, # 'K'
|
| 1451 |
+
49: 0, # 'L'
|
| 1452 |
+
20: 0, # 'M'
|
| 1453 |
+
46: 2, # 'N'
|
| 1454 |
+
42: 0, # 'O'
|
| 1455 |
+
48: 2, # 'P'
|
| 1456 |
+
44: 1, # 'R'
|
| 1457 |
+
35: 1, # 'S'
|
| 1458 |
+
31: 0, # 'T'
|
| 1459 |
+
51: 1, # 'U'
|
| 1460 |
+
38: 2, # 'V'
|
| 1461 |
+
62: 0, # 'W'
|
| 1462 |
+
43: 0, # 'Y'
|
| 1463 |
+
56: 0, # 'Z'
|
| 1464 |
+
1: 3, # 'a'
|
| 1465 |
+
21: 0, # 'b'
|
| 1466 |
+
28: 2, # 'c'
|
| 1467 |
+
12: 0, # 'd'
|
| 1468 |
+
2: 2, # 'e'
|
| 1469 |
+
18: 0, # 'f'
|
| 1470 |
+
27: 0, # 'g'
|
| 1471 |
+
25: 0, # 'h'
|
| 1472 |
+
3: 0, # 'i'
|
| 1473 |
+
24: 1, # 'j'
|
| 1474 |
+
10: 1, # 'k'
|
| 1475 |
+
5: 1, # 'l'
|
| 1476 |
+
13: 3, # 'm'
|
| 1477 |
+
4: 0, # 'n'
|
| 1478 |
+
15: 2, # 'o'
|
| 1479 |
+
26: 0, # 'p'
|
| 1480 |
+
7: 0, # 'r'
|
| 1481 |
+
8: 0, # 's'
|
| 1482 |
+
9: 0, # 't'
|
| 1483 |
+
14: 3, # 'u'
|
| 1484 |
+
32: 0, # 'v'
|
| 1485 |
+
57: 0, # 'w'
|
| 1486 |
+
58: 1, # 'x'
|
| 1487 |
+
11: 0, # 'y'
|
| 1488 |
+
22: 2, # 'z'
|
| 1489 |
+
63: 0, # '·'
|
| 1490 |
+
54: 1, # 'Ç'
|
| 1491 |
+
50: 2, # 'Ö'
|
| 1492 |
+
55: 1, # 'Ü'
|
| 1493 |
+
59: 1, # 'â'
|
| 1494 |
+
33: 0, # 'ç'
|
| 1495 |
+
61: 0, # 'î'
|
| 1496 |
+
34: 1, # 'ö'
|
| 1497 |
+
17: 0, # 'ü'
|
| 1498 |
+
30: 1, # 'ğ'
|
| 1499 |
+
41: 1, # 'İ'
|
| 1500 |
+
6: 0, # 'ı'
|
| 1501 |
+
40: 2, # 'Ş'
|
| 1502 |
+
19: 1, # 'ş'
|
| 1503 |
+
},
|
| 1504 |
+
56: { # 'Z'
|
| 1505 |
+
23: 0, # 'A'
|
| 1506 |
+
37: 0, # 'B'
|
| 1507 |
+
47: 0, # 'C'
|
| 1508 |
+
39: 0, # 'D'
|
| 1509 |
+
29: 0, # 'E'
|
| 1510 |
+
52: 0, # 'F'
|
| 1511 |
+
36: 0, # 'G'
|
| 1512 |
+
45: 0, # 'H'
|
| 1513 |
+
53: 0, # 'I'
|
| 1514 |
+
60: 0, # 'J'
|
| 1515 |
+
16: 0, # 'K'
|
| 1516 |
+
49: 0, # 'L'
|
| 1517 |
+
20: 0, # 'M'
|
| 1518 |
+
46: 0, # 'N'
|
| 1519 |
+
42: 0, # 'O'
|
| 1520 |
+
48: 0, # 'P'
|
| 1521 |
+
44: 0, # 'R'
|
| 1522 |
+
35: 0, # 'S'
|
| 1523 |
+
31: 0, # 'T'
|
| 1524 |
+
51: 0, # 'U'
|
| 1525 |
+
38: 0, # 'V'
|
| 1526 |
+
62: 0, # 'W'
|
| 1527 |
+
43: 0, # 'Y'
|
| 1528 |
+
56: 2, # 'Z'
|
| 1529 |
+
1: 2, # 'a'
|
| 1530 |
+
21: 1, # 'b'
|
| 1531 |
+
28: 0, # 'c'
|
| 1532 |
+
12: 0, # 'd'
|
| 1533 |
+
2: 2, # 'e'
|
| 1534 |
+
18: 0, # 'f'
|
| 1535 |
+
27: 0, # 'g'
|
| 1536 |
+
25: 0, # 'h'
|
| 1537 |
+
3: 2, # 'i'
|
| 1538 |
+
24: 1, # 'j'
|
| 1539 |
+
10: 0, # 'k'
|
| 1540 |
+
5: 0, # 'l'
|
| 1541 |
+
13: 1, # 'm'
|
| 1542 |
+
4: 1, # 'n'
|
| 1543 |
+
15: 0, # 'o'
|
| 1544 |
+
26: 0, # 'p'
|
| 1545 |
+
7: 1, # 'r'
|
| 1546 |
+
8: 1, # 's'
|
| 1547 |
+
9: 0, # 't'
|
| 1548 |
+
14: 2, # 'u'
|
| 1549 |
+
32: 0, # 'v'
|
| 1550 |
+
57: 0, # 'w'
|
| 1551 |
+
58: 0, # 'x'
|
| 1552 |
+
11: 0, # 'y'
|
| 1553 |
+
22: 0, # 'z'
|
| 1554 |
+
63: 0, # '·'
|
| 1555 |
+
54: 0, # 'Ç'
|
| 1556 |
+
50: 0, # 'Ö'
|
| 1557 |
+
55: 0, # 'Ü'
|
| 1558 |
+
59: 0, # 'â'
|
| 1559 |
+
33: 0, # 'ç'
|
| 1560 |
+
61: 0, # 'î'
|
| 1561 |
+
34: 0, # 'ö'
|
| 1562 |
+
17: 1, # 'ü'
|
| 1563 |
+
30: 0, # 'ğ'
|
| 1564 |
+
41: 0, # 'İ'
|
| 1565 |
+
6: 1, # 'ı'
|
| 1566 |
+
40: 0, # 'Ş'
|
| 1567 |
+
19: 0, # 'ş'
|
| 1568 |
+
},
|
| 1569 |
+
1: { # 'a'
|
| 1570 |
+
23: 3, # 'A'
|
| 1571 |
+
37: 0, # 'B'
|
| 1572 |
+
47: 1, # 'C'
|
| 1573 |
+
39: 0, # 'D'
|
| 1574 |
+
29: 3, # 'E'
|
| 1575 |
+
52: 0, # 'F'
|
| 1576 |
+
36: 1, # 'G'
|
| 1577 |
+
45: 1, # 'H'
|
| 1578 |
+
53: 0, # 'I'
|
| 1579 |
+
60: 0, # 'J'
|
| 1580 |
+
16: 0, # 'K'
|
| 1581 |
+
49: 0, # 'L'
|
| 1582 |
+
20: 3, # 'M'
|
| 1583 |
+
46: 1, # 'N'
|
| 1584 |
+
42: 0, # 'O'
|
| 1585 |
+
48: 1, # 'P'
|
| 1586 |
+
44: 0, # 'R'
|
| 1587 |
+
35: 0, # 'S'
|
| 1588 |
+
31: 3, # 'T'
|
| 1589 |
+
51: 0, # 'U'
|
| 1590 |
+
38: 1, # 'V'
|
| 1591 |
+
62: 0, # 'W'
|
| 1592 |
+
43: 0, # 'Y'
|
| 1593 |
+
56: 2, # 'Z'
|
| 1594 |
+
1: 2, # 'a'
|
| 1595 |
+
21: 3, # 'b'
|
| 1596 |
+
28: 0, # 'c'
|
| 1597 |
+
12: 3, # 'd'
|
| 1598 |
+
2: 2, # 'e'
|
| 1599 |
+
18: 3, # 'f'
|
| 1600 |
+
27: 3, # 'g'
|
| 1601 |
+
25: 3, # 'h'
|
| 1602 |
+
3: 3, # 'i'
|
| 1603 |
+
24: 3, # 'j'
|
| 1604 |
+
10: 3, # 'k'
|
| 1605 |
+
5: 0, # 'l'
|
| 1606 |
+
13: 2, # 'm'
|
| 1607 |
+
4: 3, # 'n'
|
| 1608 |
+
15: 1, # 'o'
|
| 1609 |
+
26: 3, # 'p'
|
| 1610 |
+
7: 3, # 'r'
|
| 1611 |
+
8: 3, # 's'
|
| 1612 |
+
9: 3, # 't'
|
| 1613 |
+
14: 3, # 'u'
|
| 1614 |
+
32: 3, # 'v'
|
| 1615 |
+
57: 2, # 'w'
|
| 1616 |
+
58: 0, # 'x'
|
| 1617 |
+
11: 3, # 'y'
|
| 1618 |
+
22: 0, # 'z'
|
| 1619 |
+
63: 1, # '·'
|
| 1620 |
+
54: 0, # 'Ç'
|
| 1621 |
+
50: 0, # 'Ö'
|
| 1622 |
+
55: 0, # 'Ü'
|
| 1623 |
+
59: 0, # 'â'
|
| 1624 |
+
33: 1, # 'ç'
|
| 1625 |
+
61: 1, # 'î'
|
| 1626 |
+
34: 1, # 'ö'
|
| 1627 |
+
17: 3, # 'ü'
|
| 1628 |
+
30: 0, # 'ğ'
|
| 1629 |
+
41: 0, # 'İ'
|
| 1630 |
+
6: 3, # 'ı'
|
| 1631 |
+
40: 0, # 'Ş'
|
| 1632 |
+
19: 1, # 'ş'
|
| 1633 |
+
},
|
| 1634 |
+
21: { # 'b'
|
| 1635 |
+
23: 0, # 'A'
|
| 1636 |
+
37: 0, # 'B'
|
| 1637 |
+
47: 0, # 'C'
|
| 1638 |
+
39: 0, # 'D'
|
| 1639 |
+
29: 0, # 'E'
|
| 1640 |
+
52: 0, # 'F'
|
| 1641 |
+
36: 1, # 'G'
|
| 1642 |
+
45: 0, # 'H'
|
| 1643 |
+
53: 0, # 'I'
|
| 1644 |
+
60: 1, # 'J'
|
| 1645 |
+
16: 2, # 'K'
|
| 1646 |
+
49: 0, # 'L'
|
| 1647 |
+
20: 2, # 'M'
|
| 1648 |
+
46: 0, # 'N'
|
| 1649 |
+
42: 0, # 'O'
|
| 1650 |
+
48: 0, # 'P'
|
| 1651 |
+
44: 0, # 'R'
|
| 1652 |
+
35: 0, # 'S'
|
| 1653 |
+
31: 1, # 'T'
|
| 1654 |
+
51: 0, # 'U'
|
| 1655 |
+
38: 0, # 'V'
|
| 1656 |
+
62: 0, # 'W'
|
| 1657 |
+
43: 1, # 'Y'
|
| 1658 |
+
56: 0, # 'Z'
|
| 1659 |
+
1: 3, # 'a'
|
| 1660 |
+
21: 2, # 'b'
|
| 1661 |
+
28: 0, # 'c'
|
| 1662 |
+
12: 3, # 'd'
|
| 1663 |
+
2: 3, # 'e'
|
| 1664 |
+
18: 0, # 'f'
|
| 1665 |
+
27: 3, # 'g'
|
| 1666 |
+
25: 1, # 'h'
|
| 1667 |
+
3: 3, # 'i'
|
| 1668 |
+
24: 2, # 'j'
|
| 1669 |
+
10: 3, # 'k'
|
| 1670 |
+
5: 3, # 'l'
|
| 1671 |
+
13: 3, # 'm'
|
| 1672 |
+
4: 3, # 'n'
|
| 1673 |
+
15: 0, # 'o'
|
| 1674 |
+
26: 3, # 'p'
|
| 1675 |
+
7: 1, # 'r'
|
| 1676 |
+
8: 2, # 's'
|
| 1677 |
+
9: 2, # 't'
|
| 1678 |
+
14: 2, # 'u'
|
| 1679 |
+
32: 1, # 'v'
|
| 1680 |
+
57: 0, # 'w'
|
| 1681 |
+
58: 1, # 'x'
|
| 1682 |
+
11: 3, # 'y'
|
| 1683 |
+
22: 0, # 'z'
|
| 1684 |
+
63: 0, # '·'
|
| 1685 |
+
54: 0, # 'Ç'
|
| 1686 |
+
50: 0, # 'Ö'
|
| 1687 |
+
55: 0, # 'Ü'
|
| 1688 |
+
59: 0, # 'â'
|
| 1689 |
+
33: 1, # 'ç'
|
| 1690 |
+
61: 0, # 'î'
|
| 1691 |
+
34: 0, # 'ö'
|
| 1692 |
+
17: 0, # 'ü'
|
| 1693 |
+
30: 1, # 'ğ'
|
| 1694 |
+
41: 0, # 'İ'
|
| 1695 |
+
6: 2, # 'ı'
|
| 1696 |
+
40: 0, # 'Ş'
|
| 1697 |
+
19: 0, # 'ş'
|
| 1698 |
+
},
|
| 1699 |
+
28: { # 'c'
|
| 1700 |
+
23: 0, # 'A'
|
| 1701 |
+
37: 1, # 'B'
|
| 1702 |
+
47: 1, # 'C'
|
| 1703 |
+
39: 1, # 'D'
|
| 1704 |
+
29: 2, # 'E'
|
| 1705 |
+
52: 0, # 'F'
|
| 1706 |
+
36: 2, # 'G'
|
| 1707 |
+
45: 2, # 'H'
|
| 1708 |
+
53: 1, # 'I'
|
| 1709 |
+
60: 0, # 'J'
|
| 1710 |
+
16: 0, # 'K'
|
| 1711 |
+
49: 0, # 'L'
|
| 1712 |
+
20: 2, # 'M'
|
| 1713 |
+
46: 1, # 'N'
|
| 1714 |
+
42: 1, # 'O'
|
| 1715 |
+
48: 2, # 'P'
|
| 1716 |
+
44: 1, # 'R'
|
| 1717 |
+
35: 1, # 'S'
|
| 1718 |
+
31: 2, # 'T'
|
| 1719 |
+
51: 2, # 'U'
|
| 1720 |
+
38: 2, # 'V'
|
| 1721 |
+
62: 0, # 'W'
|
| 1722 |
+
43: 3, # 'Y'
|
| 1723 |
+
56: 0, # 'Z'
|
| 1724 |
+
1: 1, # 'a'
|
| 1725 |
+
21: 1, # 'b'
|
| 1726 |
+
28: 2, # 'c'
|
| 1727 |
+
12: 2, # 'd'
|
| 1728 |
+
2: 1, # 'e'
|
| 1729 |
+
18: 1, # 'f'
|
| 1730 |
+
27: 2, # 'g'
|
| 1731 |
+
25: 2, # 'h'
|
| 1732 |
+
3: 3, # 'i'
|
| 1733 |
+
24: 1, # 'j'
|
| 1734 |
+
10: 3, # 'k'
|
| 1735 |
+
5: 0, # 'l'
|
| 1736 |
+
13: 2, # 'm'
|
| 1737 |
+
4: 3, # 'n'
|
| 1738 |
+
15: 2, # 'o'
|
| 1739 |
+
26: 2, # 'p'
|
| 1740 |
+
7: 3, # 'r'
|
| 1741 |
+
8: 3, # 's'
|
| 1742 |
+
9: 3, # 't'
|
| 1743 |
+
14: 1, # 'u'
|
| 1744 |
+
32: 0, # 'v'
|
| 1745 |
+
57: 1, # 'w'
|
| 1746 |
+
58: 0, # 'x'
|
| 1747 |
+
11: 2, # 'y'
|
| 1748 |
+
22: 1, # 'z'
|
| 1749 |
+
63: 1, # '·'
|
| 1750 |
+
54: 0, # 'Ç'
|
| 1751 |
+
50: 0, # 'Ö'
|
| 1752 |
+
55: 1, # 'Ü'
|
| 1753 |
+
59: 0, # 'â'
|
| 1754 |
+
33: 0, # 'ç'
|
| 1755 |
+
61: 1, # 'î'
|
| 1756 |
+
34: 2, # 'ö'
|
| 1757 |
+
17: 2, # 'ü'
|
| 1758 |
+
30: 2, # 'ğ'
|
| 1759 |
+
41: 1, # 'İ'
|
| 1760 |
+
6: 3, # 'ı'
|
| 1761 |
+
40: 0, # 'Ş'
|
| 1762 |
+
19: 2, # 'ş'
|
| 1763 |
+
},
|
| 1764 |
+
12: { # 'd'
|
| 1765 |
+
23: 1, # 'A'
|
| 1766 |
+
37: 0, # 'B'
|
| 1767 |
+
47: 0, # 'C'
|
| 1768 |
+
39: 0, # 'D'
|
| 1769 |
+
29: 0, # 'E'
|
| 1770 |
+
52: 0, # 'F'
|
| 1771 |
+
36: 0, # 'G'
|
| 1772 |
+
45: 0, # 'H'
|
| 1773 |
+
53: 0, # 'I'
|
| 1774 |
+
60: 2, # 'J'
|
| 1775 |
+
16: 3, # 'K'
|
| 1776 |
+
49: 0, # 'L'
|
| 1777 |
+
20: 3, # 'M'
|
| 1778 |
+
46: 0, # 'N'
|
| 1779 |
+
42: 0, # 'O'
|
| 1780 |
+
48: 0, # 'P'
|
| 1781 |
+
44: 0, # 'R'
|
| 1782 |
+
35: 1, # 'S'
|
| 1783 |
+
31: 1, # 'T'
|
| 1784 |
+
51: 0, # 'U'
|
| 1785 |
+
38: 0, # 'V'
|
| 1786 |
+
62: 0, # 'W'
|
| 1787 |
+
43: 0, # 'Y'
|
| 1788 |
+
56: 0, # 'Z'
|
| 1789 |
+
1: 3, # 'a'
|
| 1790 |
+
21: 2, # 'b'
|
| 1791 |
+
28: 1, # 'c'
|
| 1792 |
+
12: 3, # 'd'
|
| 1793 |
+
2: 3, # 'e'
|
| 1794 |
+
18: 1, # 'f'
|
| 1795 |
+
27: 3, # 'g'
|
| 1796 |
+
25: 3, # 'h'
|
| 1797 |
+
3: 2, # 'i'
|
| 1798 |
+
24: 3, # 'j'
|
| 1799 |
+
10: 2, # 'k'
|
| 1800 |
+
5: 3, # 'l'
|
| 1801 |
+
13: 3, # 'm'
|
| 1802 |
+
4: 3, # 'n'
|
| 1803 |
+
15: 1, # 'o'
|
| 1804 |
+
26: 2, # 'p'
|
| 1805 |
+
7: 3, # 'r'
|
| 1806 |
+
8: 2, # 's'
|
| 1807 |
+
9: 2, # 't'
|
| 1808 |
+
14: 3, # 'u'
|
| 1809 |
+
32: 1, # 'v'
|
| 1810 |
+
57: 0, # 'w'
|
| 1811 |
+
58: 1, # 'x'
|
| 1812 |
+
11: 3, # 'y'
|
| 1813 |
+
22: 1, # 'z'
|
| 1814 |
+
63: 1, # '·'
|
| 1815 |
+
54: 0, # 'Ç'
|
| 1816 |
+
50: 0, # 'Ö'
|
| 1817 |
+
55: 0, # 'Ü'
|
| 1818 |
+
59: 0, # 'â'
|
| 1819 |
+
33: 0, # 'ç'
|
| 1820 |
+
61: 0, # 'î'
|
| 1821 |
+
34: 0, # 'ö'
|
| 1822 |
+
17: 1, # 'ü'
|
| 1823 |
+
30: 0, # 'ğ'
|
| 1824 |
+
41: 0, # 'İ'
|
| 1825 |
+
6: 2, # 'ı'
|
| 1826 |
+
40: 0, # 'Ş'
|
| 1827 |
+
19: 0, # 'ş'
|
| 1828 |
+
},
|
| 1829 |
+
2: { # 'e'
|
| 1830 |
+
23: 2, # 'A'
|
| 1831 |
+
37: 0, # 'B'
|
| 1832 |
+
47: 2, # 'C'
|
| 1833 |
+
39: 0, # 'D'
|
| 1834 |
+
29: 3, # 'E'
|
| 1835 |
+
52: 1, # 'F'
|
| 1836 |
+
36: 0, # 'G'
|
| 1837 |
+
45: 0, # 'H'
|
| 1838 |
+
53: 0, # 'I'
|
| 1839 |
+
60: 0, # 'J'
|
| 1840 |
+
16: 1, # 'K'
|
| 1841 |
+
49: 0, # 'L'
|
| 1842 |
+
20: 3, # 'M'
|
| 1843 |
+
46: 1, # 'N'
|
| 1844 |
+
42: 0, # 'O'
|
| 1845 |
+
48: 1, # 'P'
|
| 1846 |
+
44: 1, # 'R'
|
| 1847 |
+
35: 0, # 'S'
|
| 1848 |
+
31: 3, # 'T'
|
| 1849 |
+
51: 0, # 'U'
|
| 1850 |
+
38: 1, # 'V'
|
| 1851 |
+
62: 0, # 'W'
|
| 1852 |
+
43: 1, # 'Y'
|
| 1853 |
+
56: 0, # 'Z'
|
| 1854 |
+
1: 3, # 'a'
|
| 1855 |
+
21: 3, # 'b'
|
| 1856 |
+
28: 0, # 'c'
|
| 1857 |
+
12: 3, # 'd'
|
| 1858 |
+
2: 2, # 'e'
|
| 1859 |
+
18: 3, # 'f'
|
| 1860 |
+
27: 3, # 'g'
|
| 1861 |
+
25: 3, # 'h'
|
| 1862 |
+
3: 3, # 'i'
|
| 1863 |
+
24: 3, # 'j'
|
| 1864 |
+
10: 3, # 'k'
|
| 1865 |
+
5: 0, # 'l'
|
| 1866 |
+
13: 2, # 'm'
|
| 1867 |
+
4: 3, # 'n'
|
| 1868 |
+
15: 1, # 'o'
|
| 1869 |
+
26: 3, # 'p'
|
| 1870 |
+
7: 3, # 'r'
|
| 1871 |
+
8: 3, # 's'
|
| 1872 |
+
9: 3, # 't'
|
| 1873 |
+
14: 3, # 'u'
|
| 1874 |
+
32: 3, # 'v'
|
| 1875 |
+
57: 2, # 'w'
|
| 1876 |
+
58: 0, # 'x'
|
| 1877 |
+
11: 3, # 'y'
|
| 1878 |
+
22: 1, # 'z'
|
| 1879 |
+
63: 1, # '·'
|
| 1880 |
+
54: 0, # 'Ç'
|
| 1881 |
+
50: 0, # 'Ö'
|
| 1882 |
+
55: 0, # 'Ü'
|
| 1883 |
+
59: 0, # 'â'
|
| 1884 |
+
33: 1, # 'ç'
|
| 1885 |
+
61: 0, # 'î'
|
| 1886 |
+
34: 1, # 'ö'
|
| 1887 |
+
17: 3, # 'ü'
|
| 1888 |
+
30: 0, # 'ğ'
|
| 1889 |
+
41: 0, # 'İ'
|
| 1890 |
+
6: 3, # 'ı'
|
| 1891 |
+
40: 0, # 'Ş'
|
| 1892 |
+
19: 0, # 'ş'
|
| 1893 |
+
},
|
| 1894 |
+
18: { # 'f'
|
| 1895 |
+
23: 0, # 'A'
|
| 1896 |
+
37: 0, # 'B'
|
| 1897 |
+
47: 0, # 'C'
|
| 1898 |
+
39: 0, # 'D'
|
| 1899 |
+
29: 0, # 'E'
|
| 1900 |
+
52: 0, # 'F'
|
| 1901 |
+
36: 0, # 'G'
|
| 1902 |
+
45: 0, # 'H'
|
| 1903 |
+
53: 0, # 'I'
|
| 1904 |
+
60: 0, # 'J'
|
| 1905 |
+
16: 2, # 'K'
|
| 1906 |
+
49: 0, # 'L'
|
| 1907 |
+
20: 2, # 'M'
|
| 1908 |
+
46: 0, # 'N'
|
| 1909 |
+
42: 0, # 'O'
|
| 1910 |
+
48: 0, # 'P'
|
| 1911 |
+
44: 0, # 'R'
|
| 1912 |
+
35: 0, # 'S'
|
| 1913 |
+
31: 2, # 'T'
|
| 1914 |
+
51: 0, # 'U'
|
| 1915 |
+
38: 0, # 'V'
|
| 1916 |
+
62: 0, # 'W'
|
| 1917 |
+
43: 0, # 'Y'
|
| 1918 |
+
56: 0, # 'Z'
|
| 1919 |
+
1: 3, # 'a'
|
| 1920 |
+
21: 1, # 'b'
|
| 1921 |
+
28: 0, # 'c'
|
| 1922 |
+
12: 3, # 'd'
|
| 1923 |
+
2: 3, # 'e'
|
| 1924 |
+
18: 2, # 'f'
|
| 1925 |
+
27: 1, # 'g'
|
| 1926 |
+
25: 1, # 'h'
|
| 1927 |
+
3: 1, # 'i'
|
| 1928 |
+
24: 1, # 'j'
|
| 1929 |
+
10: 1, # 'k'
|
| 1930 |
+
5: 3, # 'l'
|
| 1931 |
+
13: 3, # 'm'
|
| 1932 |
+
4: 3, # 'n'
|
| 1933 |
+
15: 0, # 'o'
|
| 1934 |
+
26: 2, # 'p'
|
| 1935 |
+
7: 1, # 'r'
|
| 1936 |
+
8: 3, # 's'
|
| 1937 |
+
9: 3, # 't'
|
| 1938 |
+
14: 1, # 'u'
|
| 1939 |
+
32: 2, # 'v'
|
| 1940 |
+
57: 0, # 'w'
|
| 1941 |
+
58: 0, # 'x'
|
| 1942 |
+
11: 1, # 'y'
|
| 1943 |
+
22: 0, # 'z'
|
| 1944 |
+
63: 0, # '·'
|
| 1945 |
+
54: 0, # 'Ç'
|
| 1946 |
+
50: 0, # 'Ö'
|
| 1947 |
+
55: 0, # 'Ü'
|
| 1948 |
+
59: 0, # 'â'
|
| 1949 |
+
33: 1, # 'ç'
|
| 1950 |
+
61: 0, # 'î'
|
| 1951 |
+
34: 0, # 'ö'
|
| 1952 |
+
17: 1, # 'ü'
|
| 1953 |
+
30: 0, # 'ğ'
|
| 1954 |
+
41: 0, # 'İ'
|
| 1955 |
+
6: 1, # 'ı'
|
| 1956 |
+
40: 0, # 'Ş'
|
| 1957 |
+
19: 0, # 'ş'
|
| 1958 |
+
},
|
| 1959 |
+
27: { # 'g'
|
| 1960 |
+
23: 0, # 'A'
|
| 1961 |
+
37: 0, # 'B'
|
| 1962 |
+
47: 0, # 'C'
|
| 1963 |
+
39: 0, # 'D'
|
| 1964 |
+
29: 0, # 'E'
|
| 1965 |
+
52: 0, # 'F'
|
| 1966 |
+
36: 0, # 'G'
|
| 1967 |
+
45: 0, # 'H'
|
| 1968 |
+
53: 0, # 'I'
|
| 1969 |
+
60: 0, # 'J'
|
| 1970 |
+
16: 3, # 'K'
|
| 1971 |
+
49: 0, # 'L'
|
| 1972 |
+
20: 0, # 'M'
|
| 1973 |
+
46: 0, # 'N'
|
| 1974 |
+
42: 0, # 'O'
|
| 1975 |
+
48: 0, # 'P'
|
| 1976 |
+
44: 0, # 'R'
|
| 1977 |
+
35: 1, # 'S'
|
| 1978 |
+
31: 1, # 'T'
|
| 1979 |
+
51: 0, # 'U'
|
| 1980 |
+
38: 2, # 'V'
|
| 1981 |
+
62: 0, # 'W'
|
| 1982 |
+
43: 0, # 'Y'
|
| 1983 |
+
56: 0, # 'Z'
|
| 1984 |
+
1: 3, # 'a'
|
| 1985 |
+
21: 1, # 'b'
|
| 1986 |
+
28: 0, # 'c'
|
| 1987 |
+
12: 1, # 'd'
|
| 1988 |
+
2: 3, # 'e'
|
| 1989 |
+
18: 0, # 'f'
|
| 1990 |
+
27: 2, # 'g'
|
| 1991 |
+
25: 1, # 'h'
|
| 1992 |
+
3: 2, # 'i'
|
| 1993 |
+
24: 3, # 'j'
|
| 1994 |
+
10: 2, # 'k'
|
| 1995 |
+
5: 3, # 'l'
|
| 1996 |
+
13: 3, # 'm'
|
| 1997 |
+
4: 2, # 'n'
|
| 1998 |
+
15: 0, # 'o'
|
| 1999 |
+
26: 1, # 'p'
|
| 2000 |
+
7: 2, # 'r'
|
| 2001 |
+
8: 2, # 's'
|
| 2002 |
+
9: 3, # 't'
|
| 2003 |
+
14: 3, # 'u'
|
| 2004 |
+
32: 1, # 'v'
|
| 2005 |
+
57: 0, # 'w'
|
| 2006 |
+
58: 0, # 'x'
|
| 2007 |
+
11: 1, # 'y'
|
| 2008 |
+
22: 0, # 'z'
|
| 2009 |
+
63: 1, # '·'
|
| 2010 |
+
54: 0, # 'Ç'
|
| 2011 |
+
50: 0, # 'Ö'
|
| 2012 |
+
55: 0, # 'Ü'
|
| 2013 |
+
59: 0, # 'â'
|
| 2014 |
+
33: 0, # 'ç'
|
| 2015 |
+
61: 0, # 'î'
|
| 2016 |
+
34: 0, # 'ö'
|
| 2017 |
+
17: 0, # 'ü'
|
| 2018 |
+
30: 0, # 'ğ'
|
| 2019 |
+
41: 0, # 'İ'
|
| 2020 |
+
6: 2, # 'ı'
|
| 2021 |
+
40: 0, # 'Ş'
|
| 2022 |
+
19: 0, # 'ş'
|
| 2023 |
+
},
|
| 2024 |
+
25: { # 'h'
|
| 2025 |
+
23: 0, # 'A'
|
| 2026 |
+
37: 0, # 'B'
|
| 2027 |
+
47: 0, # 'C'
|
| 2028 |
+
39: 0, # 'D'
|
| 2029 |
+
29: 0, # 'E'
|
| 2030 |
+
52: 0, # 'F'
|
| 2031 |
+
36: 0, # 'G'
|
| 2032 |
+
45: 0, # 'H'
|
| 2033 |
+
53: 0, # 'I'
|
| 2034 |
+
60: 0, # 'J'
|
| 2035 |
+
16: 2, # 'K'
|
| 2036 |
+
49: 0, # 'L'
|
| 2037 |
+
20: 0, # 'M'
|
| 2038 |
+
46: 0, # 'N'
|
| 2039 |
+
42: 0, # 'O'
|
| 2040 |
+
48: 0, # 'P'
|
| 2041 |
+
44: 0, # 'R'
|
| 2042 |
+
35: 0, # 'S'
|
| 2043 |
+
31: 0, # 'T'
|
| 2044 |
+
51: 0, # 'U'
|
| 2045 |
+
38: 0, # 'V'
|
| 2046 |
+
62: 0, # 'W'
|
| 2047 |
+
43: 0, # 'Y'
|
| 2048 |
+
56: 0, # 'Z'
|
| 2049 |
+
1: 3, # 'a'
|
| 2050 |
+
21: 0, # 'b'
|
| 2051 |
+
28: 0, # 'c'
|
| 2052 |
+
12: 2, # 'd'
|
| 2053 |
+
2: 3, # 'e'
|
| 2054 |
+
18: 0, # 'f'
|
| 2055 |
+
27: 1, # 'g'
|
| 2056 |
+
25: 2, # 'h'
|
| 2057 |
+
3: 2, # 'i'
|
| 2058 |
+
24: 3, # 'j'
|
| 2059 |
+
10: 3, # 'k'
|
| 2060 |
+
5: 3, # 'l'
|
| 2061 |
+
13: 3, # 'm'
|
| 2062 |
+
4: 3, # 'n'
|
| 2063 |
+
15: 1, # 'o'
|
| 2064 |
+
26: 1, # 'p'
|
| 2065 |
+
7: 3, # 'r'
|
| 2066 |
+
8: 3, # 's'
|
| 2067 |
+
9: 2, # 't'
|
| 2068 |
+
14: 3, # 'u'
|
| 2069 |
+
32: 2, # 'v'
|
| 2070 |
+
57: 1, # 'w'
|
| 2071 |
+
58: 0, # 'x'
|
| 2072 |
+
11: 1, # 'y'
|
| 2073 |
+
22: 0, # 'z'
|
| 2074 |
+
63: 0, # '·'
|
| 2075 |
+
54: 0, # 'Ç'
|
| 2076 |
+
50: 0, # 'Ö'
|
| 2077 |
+
55: 0, # 'Ü'
|
| 2078 |
+
59: 0, # 'â'
|
| 2079 |
+
33: 0, # 'ç'
|
| 2080 |
+
61: 0, # 'î'
|
| 2081 |
+
34: 0, # 'ö'
|
| 2082 |
+
17: 0, # 'ü'
|
| 2083 |
+
30: 0, # 'ğ'
|
| 2084 |
+
41: 0, # 'İ'
|
| 2085 |
+
6: 3, # 'ı'
|
| 2086 |
+
40: 0, # 'Ş'
|
| 2087 |
+
19: 0, # 'ş'
|
| 2088 |
+
},
|
| 2089 |
+
3: { # 'i'
|
| 2090 |
+
23: 2, # 'A'
|
| 2091 |
+
37: 0, # 'B'
|
| 2092 |
+
47: 0, # 'C'
|
| 2093 |
+
39: 0, # 'D'
|
| 2094 |
+
29: 0, # 'E'
|
| 2095 |
+
52: 0, # 'F'
|
| 2096 |
+
36: 0, # 'G'
|
| 2097 |
+
45: 0, # 'H'
|
| 2098 |
+
53: 0, # 'I'
|
| 2099 |
+
60: 1, # 'J'
|
| 2100 |
+
16: 3, # 'K'
|
| 2101 |
+
49: 0, # 'L'
|
| 2102 |
+
20: 3, # 'M'
|
| 2103 |
+
46: 0, # 'N'
|
| 2104 |
+
42: 1, # 'O'
|
| 2105 |
+
48: 0, # 'P'
|
| 2106 |
+
44: 0, # 'R'
|
| 2107 |
+
35: 1, # 'S'
|
| 2108 |
+
31: 2, # 'T'
|
| 2109 |
+
51: 0, # 'U'
|
| 2110 |
+
38: 1, # 'V'
|
| 2111 |
+
62: 0, # 'W'
|
| 2112 |
+
43: 0, # 'Y'
|
| 2113 |
+
56: 0, # 'Z'
|
| 2114 |
+
1: 3, # 'a'
|
| 2115 |
+
21: 2, # 'b'
|
| 2116 |
+
28: 0, # 'c'
|
| 2117 |
+
12: 3, # 'd'
|
| 2118 |
+
2: 3, # 'e'
|
| 2119 |
+
18: 2, # 'f'
|
| 2120 |
+
27: 3, # 'g'
|
| 2121 |
+
25: 1, # 'h'
|
| 2122 |
+
3: 3, # 'i'
|
| 2123 |
+
24: 2, # 'j'
|
| 2124 |
+
10: 3, # 'k'
|
| 2125 |
+
5: 3, # 'l'
|
| 2126 |
+
13: 3, # 'm'
|
| 2127 |
+
4: 3, # 'n'
|
| 2128 |
+
15: 1, # 'o'
|
| 2129 |
+
26: 3, # 'p'
|
| 2130 |
+
7: 3, # 'r'
|
| 2131 |
+
8: 3, # 's'
|
| 2132 |
+
9: 3, # 't'
|
| 2133 |
+
14: 3, # 'u'
|
| 2134 |
+
32: 2, # 'v'
|
| 2135 |
+
57: 1, # 'w'
|
| 2136 |
+
58: 1, # 'x'
|
| 2137 |
+
11: 3, # 'y'
|
| 2138 |
+
22: 1, # 'z'
|
| 2139 |
+
63: 1, # '·'
|
| 2140 |
+
54: 0, # 'Ç'
|
| 2141 |
+
50: 0, # 'Ö'
|
| 2142 |
+
55: 1, # 'Ü'
|
| 2143 |
+
59: 0, # 'â'
|
| 2144 |
+
33: 2, # 'ç'
|
| 2145 |
+
61: 0, # 'î'
|
| 2146 |
+
34: 0, # 'ö'
|
| 2147 |
+
17: 3, # 'ü'
|
| 2148 |
+
30: 0, # 'ğ'
|
| 2149 |
+
41: 1, # 'İ'
|
| 2150 |
+
6: 2, # 'ı'
|
| 2151 |
+
40: 0, # 'Ş'
|
| 2152 |
+
19: 0, # 'ş'
|
| 2153 |
+
},
|
| 2154 |
+
24: { # 'j'
|
| 2155 |
+
23: 0, # 'A'
|
| 2156 |
+
37: 0, # 'B'
|
| 2157 |
+
47: 0, # 'C'
|
| 2158 |
+
39: 0, # 'D'
|
| 2159 |
+
29: 0, # 'E'
|
| 2160 |
+
52: 0, # 'F'
|
| 2161 |
+
36: 0, # 'G'
|
| 2162 |
+
45: 0, # 'H'
|
| 2163 |
+
53: 0, # 'I'
|
| 2164 |
+
60: 1, # 'J'
|
| 2165 |
+
16: 2, # 'K'
|
| 2166 |
+
49: 0, # 'L'
|
| 2167 |
+
20: 2, # 'M'
|
| 2168 |
+
46: 0, # 'N'
|
| 2169 |
+
42: 0, # 'O'
|
| 2170 |
+
48: 1, # 'P'
|
| 2171 |
+
44: 0, # 'R'
|
| 2172 |
+
35: 0, # 'S'
|
| 2173 |
+
31: 1, # 'T'
|
| 2174 |
+
51: 0, # 'U'
|
| 2175 |
+
38: 0, # 'V'
|
| 2176 |
+
62: 0, # 'W'
|
| 2177 |
+
43: 0, # 'Y'
|
| 2178 |
+
56: 1, # 'Z'
|
| 2179 |
+
1: 3, # 'a'
|
| 2180 |
+
21: 1, # 'b'
|
| 2181 |
+
28: 1, # 'c'
|
| 2182 |
+
12: 3, # 'd'
|
| 2183 |
+
2: 3, # 'e'
|
| 2184 |
+
18: 2, # 'f'
|
| 2185 |
+
27: 1, # 'g'
|
| 2186 |
+
25: 1, # 'h'
|
| 2187 |
+
3: 2, # 'i'
|
| 2188 |
+
24: 1, # 'j'
|
| 2189 |
+
10: 2, # 'k'
|
| 2190 |
+
5: 2, # 'l'
|
| 2191 |
+
13: 3, # 'm'
|
| 2192 |
+
4: 2, # 'n'
|
| 2193 |
+
15: 0, # 'o'
|
| 2194 |
+
26: 1, # 'p'
|
| 2195 |
+
7: 2, # 'r'
|
| 2196 |
+
8: 3, # 's'
|
| 2197 |
+
9: 2, # 't'
|
| 2198 |
+
14: 3, # 'u'
|
| 2199 |
+
32: 2, # 'v'
|
| 2200 |
+
57: 0, # 'w'
|
| 2201 |
+
58: 2, # 'x'
|
| 2202 |
+
11: 1, # 'y'
|
| 2203 |
+
22: 0, # 'z'
|
| 2204 |
+
63: 0, # '·'
|
| 2205 |
+
54: 0, # 'Ç'
|
| 2206 |
+
50: 0, # 'Ö'
|
| 2207 |
+
55: 0, # 'Ü'
|
| 2208 |
+
59: 0, # 'â'
|
| 2209 |
+
33: 1, # 'ç'
|
| 2210 |
+
61: 0, # 'î'
|
| 2211 |
+
34: 0, # 'ö'
|
| 2212 |
+
17: 1, # 'ü'
|
| 2213 |
+
30: 0, # 'ğ'
|
| 2214 |
+
41: 0, # 'İ'
|
| 2215 |
+
6: 3, # 'ı'
|
| 2216 |
+
40: 0, # 'Ş'
|
| 2217 |
+
19: 0, # 'ş'
|
| 2218 |
+
},
|
| 2219 |
+
10: { # 'k'
|
| 2220 |
+
23: 0, # 'A'
|
| 2221 |
+
37: 0, # 'B'
|
| 2222 |
+
47: 0, # 'C'
|
| 2223 |
+
39: 0, # 'D'
|
| 2224 |
+
29: 0, # 'E'
|
| 2225 |
+
52: 0, # 'F'
|
| 2226 |
+
36: 0, # 'G'
|
| 2227 |
+
45: 0, # 'H'
|
| 2228 |
+
53: 0, # 'I'
|
| 2229 |
+
60: 0, # 'J'
|
| 2230 |
+
16: 3, # 'K'
|
| 2231 |
+
49: 0, # 'L'
|
| 2232 |
+
20: 2, # 'M'
|
| 2233 |
+
46: 0, # 'N'
|
| 2234 |
+
42: 0, # 'O'
|
| 2235 |
+
48: 0, # 'P'
|
| 2236 |
+
44: 0, # 'R'
|
| 2237 |
+
35: 0, # 'S'
|
| 2238 |
+
31: 3, # 'T'
|
| 2239 |
+
51: 0, # 'U'
|
| 2240 |
+
38: 1, # 'V'
|
| 2241 |
+
62: 0, # 'W'
|
| 2242 |
+
43: 0, # 'Y'
|
| 2243 |
+
56: 1, # 'Z'
|
| 2244 |
+
1: 3, # 'a'
|
| 2245 |
+
21: 2, # 'b'
|
| 2246 |
+
28: 0, # 'c'
|
| 2247 |
+
12: 2, # 'd'
|
| 2248 |
+
2: 3, # 'e'
|
| 2249 |
+
18: 1, # 'f'
|
| 2250 |
+
27: 2, # 'g'
|
| 2251 |
+
25: 2, # 'h'
|
| 2252 |
+
3: 3, # 'i'
|
| 2253 |
+
24: 2, # 'j'
|
| 2254 |
+
10: 2, # 'k'
|
| 2255 |
+
5: 3, # 'l'
|
| 2256 |
+
13: 3, # 'm'
|
| 2257 |
+
4: 3, # 'n'
|
| 2258 |
+
15: 0, # 'o'
|
| 2259 |
+
26: 3, # 'p'
|
| 2260 |
+
7: 2, # 'r'
|
| 2261 |
+
8: 2, # 's'
|
| 2262 |
+
9: 2, # 't'
|
| 2263 |
+
14: 3, # 'u'
|
| 2264 |
+
32: 0, # 'v'
|
| 2265 |
+
57: 0, # 'w'
|
| 2266 |
+
58: 1, # 'x'
|
| 2267 |
+
11: 3, # 'y'
|
| 2268 |
+
22: 0, # 'z'
|
| 2269 |
+
63: 1, # '·'
|
| 2270 |
+
54: 0, # 'Ç'
|
| 2271 |
+
50: 0, # 'Ö'
|
| 2272 |
+
55: 0, # 'Ü'
|
| 2273 |
+
59: 0, # 'â'
|
| 2274 |
+
33: 3, # 'ç'
|
| 2275 |
+
61: 0, # 'î'
|
| 2276 |
+
34: 1, # 'ö'
|
| 2277 |
+
17: 3, # 'ü'
|
| 2278 |
+
30: 1, # 'ğ'
|
| 2279 |
+
41: 0, # 'İ'
|
| 2280 |
+
6: 3, # 'ı'
|
| 2281 |
+
40: 0, # 'Ş'
|
| 2282 |
+
19: 1, # 'ş'
|
| 2283 |
+
},
|
| 2284 |
+
5: { # 'l'
|
| 2285 |
+
23: 0, # 'A'
|
| 2286 |
+
37: 0, # 'B'
|
| 2287 |
+
47: 0, # 'C'
|
| 2288 |
+
39: 0, # 'D'
|
| 2289 |
+
29: 3, # 'E'
|
| 2290 |
+
52: 0, # 'F'
|
| 2291 |
+
36: 0, # 'G'
|
| 2292 |
+
45: 0, # 'H'
|
| 2293 |
+
53: 0, # 'I'
|
| 2294 |
+
60: 0, # 'J'
|
| 2295 |
+
16: 0, # 'K'
|
| 2296 |
+
49: 0, # 'L'
|
| 2297 |
+
20: 2, # 'M'
|
| 2298 |
+
46: 0, # 'N'
|
| 2299 |
+
42: 0, # 'O'
|
| 2300 |
+
48: 0, # 'P'
|
| 2301 |
+
44: 0, # 'R'
|
| 2302 |
+
35: 0, # 'S'
|
| 2303 |
+
31: 1, # 'T'
|
| 2304 |
+
51: 0, # 'U'
|
| 2305 |
+
38: 0, # 'V'
|
| 2306 |
+
62: 0, # 'W'
|
| 2307 |
+
43: 0, # 'Y'
|
| 2308 |
+
56: 0, # 'Z'
|
| 2309 |
+
1: 0, # 'a'
|
| 2310 |
+
21: 3, # 'b'
|
| 2311 |
+
28: 0, # 'c'
|
| 2312 |
+
12: 3, # 'd'
|
| 2313 |
+
2: 1, # 'e'
|
| 2314 |
+
18: 3, # 'f'
|
| 2315 |
+
27: 3, # 'g'
|
| 2316 |
+
25: 2, # 'h'
|
| 2317 |
+
3: 3, # 'i'
|
| 2318 |
+
24: 2, # 'j'
|
| 2319 |
+
10: 3, # 'k'
|
| 2320 |
+
5: 1, # 'l'
|
| 2321 |
+
13: 1, # 'm'
|
| 2322 |
+
4: 3, # 'n'
|
| 2323 |
+
15: 0, # 'o'
|
| 2324 |
+
26: 2, # 'p'
|
| 2325 |
+
7: 3, # 'r'
|
| 2326 |
+
8: 3, # 's'
|
| 2327 |
+
9: 3, # 't'
|
| 2328 |
+
14: 2, # 'u'
|
| 2329 |
+
32: 2, # 'v'
|
| 2330 |
+
57: 0, # 'w'
|
| 2331 |
+
58: 0, # 'x'
|
| 2332 |
+
11: 3, # 'y'
|
| 2333 |
+
22: 0, # 'z'
|
| 2334 |
+
63: 0, # '·'
|
| 2335 |
+
54: 0, # 'Ç'
|
| 2336 |
+
50: 0, # 'Ö'
|
| 2337 |
+
55: 0, # 'Ü'
|
| 2338 |
+
59: 0, # 'â'
|
| 2339 |
+
33: 1, # 'ç'
|
| 2340 |
+
61: 0, # 'î'
|
| 2341 |
+
34: 0, # 'ö'
|
| 2342 |
+
17: 2, # 'ü'
|
| 2343 |
+
30: 0, # 'ğ'
|
| 2344 |
+
41: 0, # 'İ'
|
| 2345 |
+
6: 3, # 'ı'
|
| 2346 |
+
40: 0, # 'Ş'
|
| 2347 |
+
19: 0, # 'ş'
|
| 2348 |
+
},
|
| 2349 |
+
13: { # 'm'
|
| 2350 |
+
23: 1, # 'A'
|
| 2351 |
+
37: 0, # 'B'
|
| 2352 |
+
47: 0, # 'C'
|
| 2353 |
+
39: 0, # 'D'
|
| 2354 |
+
29: 3, # 'E'
|
| 2355 |
+
52: 0, # 'F'
|
| 2356 |
+
36: 0, # 'G'
|
| 2357 |
+
45: 0, # 'H'
|
| 2358 |
+
53: 0, # 'I'
|
| 2359 |
+
60: 0, # 'J'
|
| 2360 |
+
16: 0, # 'K'
|
| 2361 |
+
49: 0, # 'L'
|
| 2362 |
+
20: 3, # 'M'
|
| 2363 |
+
46: 0, # 'N'
|
| 2364 |
+
42: 0, # 'O'
|
| 2365 |
+
48: 0, # 'P'
|
| 2366 |
+
44: 0, # 'R'
|
| 2367 |
+
35: 0, # 'S'
|
| 2368 |
+
31: 3, # 'T'
|
| 2369 |
+
51: 0, # 'U'
|
| 2370 |
+
38: 0, # 'V'
|
| 2371 |
+
62: 0, # 'W'
|
| 2372 |
+
43: 1, # 'Y'
|
| 2373 |
+
56: 0, # 'Z'
|
| 2374 |
+
1: 2, # 'a'
|
| 2375 |
+
21: 3, # 'b'
|
| 2376 |
+
28: 0, # 'c'
|
| 2377 |
+
12: 3, # 'd'
|
| 2378 |
+
2: 2, # 'e'
|
| 2379 |
+
18: 3, # 'f'
|
| 2380 |
+
27: 3, # 'g'
|
| 2381 |
+
25: 3, # 'h'
|
| 2382 |
+
3: 3, # 'i'
|
| 2383 |
+
24: 3, # 'j'
|
| 2384 |
+
10: 3, # 'k'
|
| 2385 |
+
5: 0, # 'l'
|
| 2386 |
+
13: 2, # 'm'
|
| 2387 |
+
4: 3, # 'n'
|
| 2388 |
+
15: 1, # 'o'
|
| 2389 |
+
26: 2, # 'p'
|
| 2390 |
+
7: 3, # 'r'
|
| 2391 |
+
8: 3, # 's'
|
| 2392 |
+
9: 3, # 't'
|
| 2393 |
+
14: 2, # 'u'
|
| 2394 |
+
32: 2, # 'v'
|
| 2395 |
+
57: 1, # 'w'
|
| 2396 |
+
58: 0, # 'x'
|
| 2397 |
+
11: 3, # 'y'
|
| 2398 |
+
22: 0, # 'z'
|
| 2399 |
+
63: 0, # '·'
|
| 2400 |
+
54: 0, # 'Ç'
|
| 2401 |
+
50: 0, # 'Ö'
|
| 2402 |
+
55: 0, # 'Ü'
|
| 2403 |
+
59: 0, # 'â'
|
| 2404 |
+
33: 0, # 'ç'
|
| 2405 |
+
61: 0, # 'î'
|
| 2406 |
+
34: 0, # 'ö'
|
| 2407 |
+
17: 3, # 'ü'
|
| 2408 |
+
30: 0, # 'ğ'
|
| 2409 |
+
41: 0, # 'İ'
|
| 2410 |
+
6: 3, # 'ı'
|
| 2411 |
+
40: 0, # 'Ş'
|
| 2412 |
+
19: 1, # 'ş'
|
| 2413 |
+
},
|
| 2414 |
+
4: { # 'n'
|
| 2415 |
+
23: 1, # 'A'
|
| 2416 |
+
37: 0, # 'B'
|
| 2417 |
+
47: 0, # 'C'
|
| 2418 |
+
39: 0, # 'D'
|
| 2419 |
+
29: 0, # 'E'
|
| 2420 |
+
52: 0, # 'F'
|
| 2421 |
+
36: 0, # 'G'
|
| 2422 |
+
45: 1, # 'H'
|
| 2423 |
+
53: 0, # 'I'
|
| 2424 |
+
60: 2, # 'J'
|
| 2425 |
+
16: 3, # 'K'
|
| 2426 |
+
49: 0, # 'L'
|
| 2427 |
+
20: 3, # 'M'
|
| 2428 |
+
46: 0, # 'N'
|
| 2429 |
+
42: 0, # 'O'
|
| 2430 |
+
48: 0, # 'P'
|
| 2431 |
+
44: 0, # 'R'
|
| 2432 |
+
35: 0, # 'S'
|
| 2433 |
+
31: 2, # 'T'
|
| 2434 |
+
51: 0, # 'U'
|
| 2435 |
+
38: 0, # 'V'
|
| 2436 |
+
62: 0, # 'W'
|
| 2437 |
+
43: 0, # 'Y'
|
| 2438 |
+
56: 0, # 'Z'
|
| 2439 |
+
1: 3, # 'a'
|
| 2440 |
+
21: 2, # 'b'
|
| 2441 |
+
28: 1, # 'c'
|
| 2442 |
+
12: 3, # 'd'
|
| 2443 |
+
2: 3, # 'e'
|
| 2444 |
+
18: 1, # 'f'
|
| 2445 |
+
27: 2, # 'g'
|
| 2446 |
+
25: 3, # 'h'
|
| 2447 |
+
3: 2, # 'i'
|
| 2448 |
+
24: 2, # 'j'
|
| 2449 |
+
10: 3, # 'k'
|
| 2450 |
+
5: 3, # 'l'
|
| 2451 |
+
13: 3, # 'm'
|
| 2452 |
+
4: 3, # 'n'
|
| 2453 |
+
15: 1, # 'o'
|
| 2454 |
+
26: 3, # 'p'
|
| 2455 |
+
7: 2, # 'r'
|
| 2456 |
+
8: 3, # 's'
|
| 2457 |
+
9: 3, # 't'
|
| 2458 |
+
14: 3, # 'u'
|
| 2459 |
+
32: 2, # 'v'
|
| 2460 |
+
57: 0, # 'w'
|
| 2461 |
+
58: 2, # 'x'
|
| 2462 |
+
11: 3, # 'y'
|
| 2463 |
+
22: 0, # 'z'
|
| 2464 |
+
63: 0, # '·'
|
| 2465 |
+
54: 0, # 'Ç'
|
| 2466 |
+
50: 0, # 'Ö'
|
| 2467 |
+
55: 0, # 'Ü'
|
| 2468 |
+
59: 0, # 'â'
|
| 2469 |
+
33: 1, # 'ç'
|
| 2470 |
+
61: 0, # 'î'
|
| 2471 |
+
34: 0, # 'ö'
|
| 2472 |
+
17: 2, # 'ü'
|
| 2473 |
+
30: 0, # 'ğ'
|
| 2474 |
+
41: 0, # 'İ'
|
| 2475 |
+
6: 1, # 'ı'
|
| 2476 |
+
40: 0, # 'Ş'
|
| 2477 |
+
19: 0, # 'ş'
|
| 2478 |
+
},
|
| 2479 |
+
15: { # 'o'
|
| 2480 |
+
23: 0, # 'A'
|
| 2481 |
+
37: 0, # 'B'
|
| 2482 |
+
47: 1, # 'C'
|
| 2483 |
+
39: 0, # 'D'
|
| 2484 |
+
29: 0, # 'E'
|
| 2485 |
+
52: 2, # 'F'
|
| 2486 |
+
36: 1, # 'G'
|
| 2487 |
+
45: 1, # 'H'
|
| 2488 |
+
53: 1, # 'I'
|
| 2489 |
+
60: 0, # 'J'
|
| 2490 |
+
16: 3, # 'K'
|
| 2491 |
+
49: 2, # 'L'
|
| 2492 |
+
20: 0, # 'M'
|
| 2493 |
+
46: 2, # 'N'
|
| 2494 |
+
42: 1, # 'O'
|
| 2495 |
+
48: 2, # 'P'
|
| 2496 |
+
44: 1, # 'R'
|
| 2497 |
+
35: 0, # 'S'
|
| 2498 |
+
31: 0, # 'T'
|
| 2499 |
+
51: 0, # 'U'
|
| 2500 |
+
38: 0, # 'V'
|
| 2501 |
+
62: 0, # 'W'
|
| 2502 |
+
43: 0, # 'Y'
|
| 2503 |
+
56: 0, # 'Z'
|
| 2504 |
+
1: 3, # 'a'
|
| 2505 |
+
21: 0, # 'b'
|
| 2506 |
+
28: 2, # 'c'
|
| 2507 |
+
12: 0, # 'd'
|
| 2508 |
+
2: 3, # 'e'
|
| 2509 |
+
18: 0, # 'f'
|
| 2510 |
+
27: 0, # 'g'
|
| 2511 |
+
25: 0, # 'h'
|
| 2512 |
+
3: 1, # 'i'
|
| 2513 |
+
24: 2, # 'j'
|
| 2514 |
+
10: 1, # 'k'
|
| 2515 |
+
5: 3, # 'l'
|
| 2516 |
+
13: 3, # 'm'
|
| 2517 |
+
4: 2, # 'n'
|
| 2518 |
+
15: 2, # 'o'
|
| 2519 |
+
26: 0, # 'p'
|
| 2520 |
+
7: 1, # 'r'
|
| 2521 |
+
8: 0, # 's'
|
| 2522 |
+
9: 0, # 't'
|
| 2523 |
+
14: 3, # 'u'
|
| 2524 |
+
32: 0, # 'v'
|
| 2525 |
+
57: 0, # 'w'
|
| 2526 |
+
58: 2, # 'x'
|
| 2527 |
+
11: 0, # 'y'
|
| 2528 |
+
22: 2, # 'z'
|
| 2529 |
+
63: 0, # '·'
|
| 2530 |
+
54: 1, # 'Ç'
|
| 2531 |
+
50: 2, # 'Ö'
|
| 2532 |
+
55: 0, # 'Ü'
|
| 2533 |
+
59: 0, # 'â'
|
| 2534 |
+
33: 3, # 'ç'
|
| 2535 |
+
61: 0, # 'î'
|
| 2536 |
+
34: 1, # 'ö'
|
| 2537 |
+
17: 0, # 'ü'
|
| 2538 |
+
30: 2, # 'ğ'
|
| 2539 |
+
41: 2, # 'İ'
|
| 2540 |
+
6: 3, # 'ı'
|
| 2541 |
+
40: 2, # 'Ş'
|
| 2542 |
+
19: 2, # 'ş'
|
| 2543 |
+
},
|
| 2544 |
+
26: { # 'p'
|
| 2545 |
+
23: 0, # 'A'
|
| 2546 |
+
37: 0, # 'B'
|
| 2547 |
+
47: 0, # 'C'
|
| 2548 |
+
39: 0, # 'D'
|
| 2549 |
+
29: 0, # 'E'
|
| 2550 |
+
52: 0, # 'F'
|
| 2551 |
+
36: 0, # 'G'
|
| 2552 |
+
45: 0, # 'H'
|
| 2553 |
+
53: 0, # 'I'
|
| 2554 |
+
60: 0, # 'J'
|
| 2555 |
+
16: 3, # 'K'
|
| 2556 |
+
49: 0, # 'L'
|
| 2557 |
+
20: 1, # 'M'
|
| 2558 |
+
46: 0, # 'N'
|
| 2559 |
+
42: 0, # 'O'
|
| 2560 |
+
48: 0, # 'P'
|
| 2561 |
+
44: 0, # 'R'
|
| 2562 |
+
35: 0, # 'S'
|
| 2563 |
+
31: 0, # 'T'
|
| 2564 |
+
51: 0, # 'U'
|
| 2565 |
+
38: 0, # 'V'
|
| 2566 |
+
62: 0, # 'W'
|
| 2567 |
+
43: 0, # 'Y'
|
| 2568 |
+
56: 0, # 'Z'
|
| 2569 |
+
1: 3, # 'a'
|
| 2570 |
+
21: 1, # 'b'
|
| 2571 |
+
28: 0, # 'c'
|
| 2572 |
+
12: 1, # 'd'
|
| 2573 |
+
2: 3, # 'e'
|
| 2574 |
+
18: 0, # 'f'
|
| 2575 |
+
27: 1, # 'g'
|
| 2576 |
+
25: 1, # 'h'
|
| 2577 |
+
3: 2, # 'i'
|
| 2578 |
+
24: 3, # 'j'
|
| 2579 |
+
10: 1, # 'k'
|
| 2580 |
+
5: 3, # 'l'
|
| 2581 |
+
13: 3, # 'm'
|
| 2582 |
+
4: 2, # 'n'
|
| 2583 |
+
15: 0, # 'o'
|
| 2584 |
+
26: 2, # 'p'
|
| 2585 |
+
7: 2, # 'r'
|
| 2586 |
+
8: 1, # 's'
|
| 2587 |
+
9: 1, # 't'
|
| 2588 |
+
14: 3, # 'u'
|
| 2589 |
+
32: 0, # 'v'
|
| 2590 |
+
57: 0, # 'w'
|
| 2591 |
+
58: 1, # 'x'
|
| 2592 |
+
11: 1, # 'y'
|
| 2593 |
+
22: 0, # 'z'
|
| 2594 |
+
63: 0, # '·'
|
| 2595 |
+
54: 0, # 'Ç'
|
| 2596 |
+
50: 0, # 'Ö'
|
| 2597 |
+
55: 0, # 'Ü'
|
| 2598 |
+
59: 0, # 'â'
|
| 2599 |
+
33: 3, # 'ç'
|
| 2600 |
+
61: 0, # 'î'
|
| 2601 |
+
34: 0, # 'ö'
|
| 2602 |
+
17: 1, # 'ü'
|
| 2603 |
+
30: 0, # 'ğ'
|
| 2604 |
+
41: 0, # 'İ'
|
| 2605 |
+
6: 3, # 'ı'
|
| 2606 |
+
40: 0, # 'Ş'
|
| 2607 |
+
19: 0, # 'ş'
|
| 2608 |
+
},
|
| 2609 |
+
7: { # 'r'
|
| 2610 |
+
23: 0, # 'A'
|
| 2611 |
+
37: 0, # 'B'
|
| 2612 |
+
47: 0, # 'C'
|
| 2613 |
+
39: 0, # 'D'
|
| 2614 |
+
29: 0, # 'E'
|
| 2615 |
+
52: 1, # 'F'
|
| 2616 |
+
36: 0, # 'G'
|
| 2617 |
+
45: 0, # 'H'
|
| 2618 |
+
53: 0, # 'I'
|
| 2619 |
+
60: 2, # 'J'
|
| 2620 |
+
16: 3, # 'K'
|
| 2621 |
+
49: 0, # 'L'
|
| 2622 |
+
20: 2, # 'M'
|
| 2623 |
+
46: 0, # 'N'
|
| 2624 |
+
42: 0, # 'O'
|
| 2625 |
+
48: 0, # 'P'
|
| 2626 |
+
44: 0, # 'R'
|
| 2627 |
+
35: 0, # 'S'
|
| 2628 |
+
31: 2, # 'T'
|
| 2629 |
+
51: 1, # 'U'
|
| 2630 |
+
38: 0, # 'V'
|
| 2631 |
+
62: 0, # 'W'
|
| 2632 |
+
43: 0, # 'Y'
|
| 2633 |
+
56: 1, # 'Z'
|
| 2634 |
+
1: 3, # 'a'
|
| 2635 |
+
21: 1, # 'b'
|
| 2636 |
+
28: 0, # 'c'
|
| 2637 |
+
12: 3, # 'd'
|
| 2638 |
+
2: 3, # 'e'
|
| 2639 |
+
18: 0, # 'f'
|
| 2640 |
+
27: 2, # 'g'
|
| 2641 |
+
25: 3, # 'h'
|
| 2642 |
+
3: 2, # 'i'
|
| 2643 |
+
24: 2, # 'j'
|
| 2644 |
+
10: 3, # 'k'
|
| 2645 |
+
5: 3, # 'l'
|
| 2646 |
+
13: 3, # 'm'
|
| 2647 |
+
4: 3, # 'n'
|
| 2648 |
+
15: 0, # 'o'
|
| 2649 |
+
26: 2, # 'p'
|
| 2650 |
+
7: 3, # 'r'
|
| 2651 |
+
8: 3, # 's'
|
| 2652 |
+
9: 3, # 't'
|
| 2653 |
+
14: 3, # 'u'
|
| 2654 |
+
32: 2, # 'v'
|
| 2655 |
+
57: 0, # 'w'
|
| 2656 |
+
58: 1, # 'x'
|
| 2657 |
+
11: 2, # 'y'
|
| 2658 |
+
22: 0, # 'z'
|
| 2659 |
+
63: 1, # '·'
|
| 2660 |
+
54: 0, # 'Ç'
|
| 2661 |
+
50: 0, # 'Ö'
|
| 2662 |
+
55: 0, # 'Ü'
|
| 2663 |
+
59: 0, # 'â'
|
| 2664 |
+
33: 2, # 'ç'
|
| 2665 |
+
61: 0, # 'î'
|
| 2666 |
+
34: 0, # 'ö'
|
| 2667 |
+
17: 3, # 'ü'
|
| 2668 |
+
30: 0, # 'ğ'
|
| 2669 |
+
41: 0, # 'İ'
|
| 2670 |
+
6: 2, # 'ı'
|
| 2671 |
+
40: 0, # 'Ş'
|
| 2672 |
+
19: 0, # 'ş'
|
| 2673 |
+
},
|
| 2674 |
+
8: { # 's'
|
| 2675 |
+
23: 1, # 'A'
|
| 2676 |
+
37: 0, # 'B'
|
| 2677 |
+
47: 0, # 'C'
|
| 2678 |
+
39: 0, # 'D'
|
| 2679 |
+
29: 0, # 'E'
|
| 2680 |
+
52: 0, # 'F'
|
| 2681 |
+
36: 1, # 'G'
|
| 2682 |
+
45: 0, # 'H'
|
| 2683 |
+
53: 0, # 'I'
|
| 2684 |
+
60: 0, # 'J'
|
| 2685 |
+
16: 3, # 'K'
|
| 2686 |
+
49: 0, # 'L'
|
| 2687 |
+
20: 3, # 'M'
|
| 2688 |
+
46: 0, # 'N'
|
| 2689 |
+
42: 0, # 'O'
|
| 2690 |
+
48: 0, # 'P'
|
| 2691 |
+
44: 0, # 'R'
|
| 2692 |
+
35: 0, # 'S'
|
| 2693 |
+
31: 2, # 'T'
|
| 2694 |
+
51: 0, # 'U'
|
| 2695 |
+
38: 0, # 'V'
|
| 2696 |
+
62: 0, # 'W'
|
| 2697 |
+
43: 0, # 'Y'
|
| 2698 |
+
56: 1, # 'Z'
|
| 2699 |
+
1: 3, # 'a'
|
| 2700 |
+
21: 2, # 'b'
|
| 2701 |
+
28: 1, # 'c'
|
| 2702 |
+
12: 3, # 'd'
|
| 2703 |
+
2: 3, # 'e'
|
| 2704 |
+
18: 0, # 'f'
|
| 2705 |
+
27: 2, # 'g'
|
| 2706 |
+
25: 2, # 'h'
|
| 2707 |
+
3: 2, # 'i'
|
| 2708 |
+
24: 3, # 'j'
|
| 2709 |
+
10: 3, # 'k'
|
| 2710 |
+
5: 3, # 'l'
|
| 2711 |
+
13: 3, # 'm'
|
| 2712 |
+
4: 3, # 'n'
|
| 2713 |
+
15: 0, # 'o'
|
| 2714 |
+
26: 3, # 'p'
|
| 2715 |
+
7: 3, # 'r'
|
| 2716 |
+
8: 3, # 's'
|
| 2717 |
+
9: 3, # 't'
|
| 2718 |
+
14: 3, # 'u'
|
| 2719 |
+
32: 2, # 'v'
|
| 2720 |
+
57: 0, # 'w'
|
| 2721 |
+
58: 1, # 'x'
|
| 2722 |
+
11: 2, # 'y'
|
| 2723 |
+
22: 1, # 'z'
|
| 2724 |
+
63: 0, # '·'
|
| 2725 |
+
54: 0, # 'Ç'
|
| 2726 |
+
50: 0, # 'Ö'
|
| 2727 |
+
55: 0, # 'Ü'
|
| 2728 |
+
59: 0, # 'â'
|
| 2729 |
+
33: 2, # 'ç'
|
| 2730 |
+
61: 0, # 'î'
|
| 2731 |
+
34: 0, # 'ö'
|
| 2732 |
+
17: 2, # 'ü'
|
| 2733 |
+
30: 0, # 'ğ'
|
| 2734 |
+
41: 0, # 'İ'
|
| 2735 |
+
6: 3, # 'ı'
|
| 2736 |
+
40: 0, # 'Ş'
|
| 2737 |
+
19: 1, # 'ş'
|
| 2738 |
+
},
|
| 2739 |
+
9: { # 't'
|
| 2740 |
+
23: 0, # 'A'
|
| 2741 |
+
37: 0, # 'B'
|
| 2742 |
+
47: 0, # 'C'
|
| 2743 |
+
39: 0, # 'D'
|
| 2744 |
+
29: 0, # 'E'
|
| 2745 |
+
52: 0, # 'F'
|
| 2746 |
+
36: 0, # 'G'
|
| 2747 |
+
45: 0, # 'H'
|
| 2748 |
+
53: 0, # 'I'
|
| 2749 |
+
60: 1, # 'J'
|
| 2750 |
+
16: 3, # 'K'
|
| 2751 |
+
49: 0, # 'L'
|
| 2752 |
+
20: 2, # 'M'
|
| 2753 |
+
46: 0, # 'N'
|
| 2754 |
+
42: 0, # 'O'
|
| 2755 |
+
48: 0, # 'P'
|
| 2756 |
+
44: 0, # 'R'
|
| 2757 |
+
35: 0, # 'S'
|
| 2758 |
+
31: 2, # 'T'
|
| 2759 |
+
51: 0, # 'U'
|
| 2760 |
+
38: 0, # 'V'
|
| 2761 |
+
62: 0, # 'W'
|
| 2762 |
+
43: 0, # 'Y'
|
| 2763 |
+
56: 1, # 'Z'
|
| 2764 |
+
1: 3, # 'a'
|
| 2765 |
+
21: 3, # 'b'
|
| 2766 |
+
28: 0, # 'c'
|
| 2767 |
+
12: 3, # 'd'
|
| 2768 |
+
2: 3, # 'e'
|
| 2769 |
+
18: 2, # 'f'
|
| 2770 |
+
27: 2, # 'g'
|
| 2771 |
+
25: 2, # 'h'
|
| 2772 |
+
3: 2, # 'i'
|
| 2773 |
+
24: 2, # 'j'
|
| 2774 |
+
10: 3, # 'k'
|
| 2775 |
+
5: 3, # 'l'
|
| 2776 |
+
13: 3, # 'm'
|
| 2777 |
+
4: 3, # 'n'
|
| 2778 |
+
15: 0, # 'o'
|
| 2779 |
+
26: 2, # 'p'
|
| 2780 |
+
7: 3, # 'r'
|
| 2781 |
+
8: 3, # 's'
|
| 2782 |
+
9: 3, # 't'
|
| 2783 |
+
14: 3, # 'u'
|
| 2784 |
+
32: 3, # 'v'
|
| 2785 |
+
57: 0, # 'w'
|
| 2786 |
+
58: 2, # 'x'
|
| 2787 |
+
11: 2, # 'y'
|
| 2788 |
+
22: 0, # 'z'
|
| 2789 |
+
63: 0, # '·'
|
| 2790 |
+
54: 0, # 'Ç'
|
| 2791 |
+
50: 0, # 'Ö'
|
| 2792 |
+
55: 0, # 'Ü'
|
| 2793 |
+
59: 0, # 'â'
|
| 2794 |
+
33: 3, # 'ç'
|
| 2795 |
+
61: 0, # 'î'
|
| 2796 |
+
34: 0, # 'ö'
|
| 2797 |
+
17: 2, # 'ü'
|
| 2798 |
+
30: 0, # 'ğ'
|
| 2799 |
+
41: 0, # 'İ'
|
| 2800 |
+
6: 3, # 'ı'
|
| 2801 |
+
40: 0, # 'Ş'
|
| 2802 |
+
19: 0, # 'ş'
|
| 2803 |
+
},
|
| 2804 |
+
14: { # 'u'
|
| 2805 |
+
23: 3, # 'A'
|
| 2806 |
+
37: 0, # 'B'
|
| 2807 |
+
47: 0, # 'C'
|
| 2808 |
+
39: 0, # 'D'
|
| 2809 |
+
29: 3, # 'E'
|
| 2810 |
+
52: 0, # 'F'
|
| 2811 |
+
36: 0, # 'G'
|
| 2812 |
+
45: 1, # 'H'
|
| 2813 |
+
53: 0, # 'I'
|
| 2814 |
+
60: 1, # 'J'
|
| 2815 |
+
16: 0, # 'K'
|
| 2816 |
+
49: 0, # 'L'
|
| 2817 |
+
20: 3, # 'M'
|
| 2818 |
+
46: 2, # 'N'
|
| 2819 |
+
42: 0, # 'O'
|
| 2820 |
+
48: 1, # 'P'
|
| 2821 |
+
44: 0, # 'R'
|
| 2822 |
+
35: 0, # 'S'
|
| 2823 |
+
31: 3, # 'T'
|
| 2824 |
+
51: 0, # 'U'
|
| 2825 |
+
38: 0, # 'V'
|
| 2826 |
+
62: 0, # 'W'
|
| 2827 |
+
43: 1, # 'Y'
|
| 2828 |
+
56: 2, # 'Z'
|
| 2829 |
+
1: 2, # 'a'
|
| 2830 |
+
21: 3, # 'b'
|
| 2831 |
+
28: 0, # 'c'
|
| 2832 |
+
12: 3, # 'd'
|
| 2833 |
+
2: 2, # 'e'
|
| 2834 |
+
18: 2, # 'f'
|
| 2835 |
+
27: 3, # 'g'
|
| 2836 |
+
25: 3, # 'h'
|
| 2837 |
+
3: 3, # 'i'
|
| 2838 |
+
24: 2, # 'j'
|
| 2839 |
+
10: 3, # 'k'
|
| 2840 |
+
5: 0, # 'l'
|
| 2841 |
+
13: 3, # 'm'
|
| 2842 |
+
4: 3, # 'n'
|
| 2843 |
+
15: 0, # 'o'
|
| 2844 |
+
26: 3, # 'p'
|
| 2845 |
+
7: 3, # 'r'
|
| 2846 |
+
8: 3, # 's'
|
| 2847 |
+
9: 3, # 't'
|
| 2848 |
+
14: 3, # 'u'
|
| 2849 |
+
32: 2, # 'v'
|
| 2850 |
+
57: 2, # 'w'
|
| 2851 |
+
58: 0, # 'x'
|
| 2852 |
+
11: 3, # 'y'
|
| 2853 |
+
22: 0, # 'z'
|
| 2854 |
+
63: 1, # '·'
|
| 2855 |
+
54: 0, # 'Ç'
|
| 2856 |
+
50: 0, # 'Ö'
|
| 2857 |
+
55: 0, # 'Ü'
|
| 2858 |
+
59: 0, # 'â'
|
| 2859 |
+
33: 0, # 'ç'
|
| 2860 |
+
61: 0, # 'î'
|
| 2861 |
+
34: 0, # 'ö'
|
| 2862 |
+
17: 3, # 'ü'
|
| 2863 |
+
30: 1, # 'ğ'
|
| 2864 |
+
41: 0, # 'İ'
|
| 2865 |
+
6: 3, # 'ı'
|
| 2866 |
+
40: 0, # 'Ş'
|
| 2867 |
+
19: 0, # 'ş'
|
| 2868 |
+
},
|
| 2869 |
+
32: { # 'v'
|
| 2870 |
+
23: 0, # 'A'
|
| 2871 |
+
37: 0, # 'B'
|
| 2872 |
+
47: 0, # 'C'
|
| 2873 |
+
39: 0, # 'D'
|
| 2874 |
+
29: 0, # 'E'
|
| 2875 |
+
52: 0, # 'F'
|
| 2876 |
+
36: 0, # 'G'
|
| 2877 |
+
45: 0, # 'H'
|
| 2878 |
+
53: 0, # 'I'
|
| 2879 |
+
60: 0, # 'J'
|
| 2880 |
+
16: 3, # 'K'
|
| 2881 |
+
49: 0, # 'L'
|
| 2882 |
+
20: 1, # 'M'
|
| 2883 |
+
46: 0, # 'N'
|
| 2884 |
+
42: 0, # 'O'
|
| 2885 |
+
48: 0, # 'P'
|
| 2886 |
+
44: 0, # 'R'
|
| 2887 |
+
35: 0, # 'S'
|
| 2888 |
+
31: 0, # 'T'
|
| 2889 |
+
51: 0, # 'U'
|
| 2890 |
+
38: 0, # 'V'
|
| 2891 |
+
62: 0, # 'W'
|
| 2892 |
+
43: 0, # 'Y'
|
| 2893 |
+
56: 0, # 'Z'
|
| 2894 |
+
1: 3, # 'a'
|
| 2895 |
+
21: 0, # 'b'
|
| 2896 |
+
28: 0, # 'c'
|
| 2897 |
+
12: 3, # 'd'
|
| 2898 |
+
2: 3, # 'e'
|
| 2899 |
+
18: 0, # 'f'
|
| 2900 |
+
27: 0, # 'g'
|
| 2901 |
+
25: 0, # 'h'
|
| 2902 |
+
3: 0, # 'i'
|
| 2903 |
+
24: 1, # 'j'
|
| 2904 |
+
10: 1, # 'k'
|
| 2905 |
+
5: 3, # 'l'
|
| 2906 |
+
13: 2, # 'm'
|
| 2907 |
+
4: 3, # 'n'
|
| 2908 |
+
15: 0, # 'o'
|
| 2909 |
+
26: 1, # 'p'
|
| 2910 |
+
7: 1, # 'r'
|
| 2911 |
+
8: 2, # 's'
|
| 2912 |
+
9: 3, # 't'
|
| 2913 |
+
14: 3, # 'u'
|
| 2914 |
+
32: 1, # 'v'
|
| 2915 |
+
57: 0, # 'w'
|
| 2916 |
+
58: 0, # 'x'
|
| 2917 |
+
11: 0, # 'y'
|
| 2918 |
+
22: 0, # 'z'
|
| 2919 |
+
63: 0, # '·'
|
| 2920 |
+
54: 0, # 'Ç'
|
| 2921 |
+
50: 0, # 'Ö'
|
| 2922 |
+
55: 0, # 'Ü'
|
| 2923 |
+
59: 0, # 'â'
|
| 2924 |
+
33: 2, # 'ç'
|
| 2925 |
+
61: 0, # 'î'
|
| 2926 |
+
34: 0, # 'ö'
|
| 2927 |
+
17: 0, # 'ü'
|
| 2928 |
+
30: 0, # 'ğ'
|
| 2929 |
+
41: 0, # 'İ'
|
| 2930 |
+
6: 1, # 'ı'
|
| 2931 |
+
40: 0, # 'Ş'
|
| 2932 |
+
19: 0, # 'ş'
|
| 2933 |
+
},
|
| 2934 |
+
57: { # 'w'
|
| 2935 |
+
23: 0, # 'A'
|
| 2936 |
+
37: 0, # 'B'
|
| 2937 |
+
47: 0, # 'C'
|
| 2938 |
+
39: 0, # 'D'
|
| 2939 |
+
29: 0, # 'E'
|
| 2940 |
+
52: 0, # 'F'
|
| 2941 |
+
36: 0, # 'G'
|
| 2942 |
+
45: 0, # 'H'
|
| 2943 |
+
53: 0, # 'I'
|
| 2944 |
+
60: 0, # 'J'
|
| 2945 |
+
16: 0, # 'K'
|
| 2946 |
+
49: 0, # 'L'
|
| 2947 |
+
20: 0, # 'M'
|
| 2948 |
+
46: 0, # 'N'
|
| 2949 |
+
42: 0, # 'O'
|
| 2950 |
+
48: 0, # 'P'
|
| 2951 |
+
44: 0, # 'R'
|
| 2952 |
+
35: 0, # 'S'
|
| 2953 |
+
31: 0, # 'T'
|
| 2954 |
+
51: 1, # 'U'
|
| 2955 |
+
38: 0, # 'V'
|
| 2956 |
+
62: 0, # 'W'
|
| 2957 |
+
43: 0, # 'Y'
|
| 2958 |
+
56: 0, # 'Z'
|
| 2959 |
+
1: 1, # 'a'
|
| 2960 |
+
21: 0, # 'b'
|
| 2961 |
+
28: 0, # 'c'
|
| 2962 |
+
12: 0, # 'd'
|
| 2963 |
+
2: 2, # 'e'
|
| 2964 |
+
18: 0, # 'f'
|
| 2965 |
+
27: 0, # 'g'
|
| 2966 |
+
25: 1, # 'h'
|
| 2967 |
+
3: 0, # 'i'
|
| 2968 |
+
24: 0, # 'j'
|
| 2969 |
+
10: 1, # 'k'
|
| 2970 |
+
5: 0, # 'l'
|
| 2971 |
+
13: 0, # 'm'
|
| 2972 |
+
4: 1, # 'n'
|
| 2973 |
+
15: 0, # 'o'
|
| 2974 |
+
26: 0, # 'p'
|
| 2975 |
+
7: 0, # 'r'
|
| 2976 |
+
8: 1, # 's'
|
| 2977 |
+
9: 0, # 't'
|
| 2978 |
+
14: 1, # 'u'
|
| 2979 |
+
32: 0, # 'v'
|
| 2980 |
+
57: 2, # 'w'
|
| 2981 |
+
58: 0, # 'x'
|
| 2982 |
+
11: 0, # 'y'
|
| 2983 |
+
22: 0, # 'z'
|
| 2984 |
+
63: 1, # '·'
|
| 2985 |
+
54: 0, # 'Ç'
|
| 2986 |
+
50: 0, # 'Ö'
|
| 2987 |
+
55: 0, # 'Ü'
|
| 2988 |
+
59: 0, # 'â'
|
| 2989 |
+
33: 0, # 'ç'
|
| 2990 |
+
61: 0, # 'î'
|
| 2991 |
+
34: 0, # 'ö'
|
| 2992 |
+
17: 1, # 'ü'
|
| 2993 |
+
30: 0, # 'ğ'
|
| 2994 |
+
41: 0, # 'İ'
|
| 2995 |
+
6: 0, # 'ı'
|
| 2996 |
+
40: 0, # 'Ş'
|
| 2997 |
+
19: 0, # 'ş'
|
| 2998 |
+
},
|
| 2999 |
+
58: { # 'x'
|
| 3000 |
+
23: 0, # 'A'
|
| 3001 |
+
37: 0, # 'B'
|
| 3002 |
+
47: 0, # 'C'
|
| 3003 |
+
39: 0, # 'D'
|
| 3004 |
+
29: 1, # 'E'
|
| 3005 |
+
52: 0, # 'F'
|
| 3006 |
+
36: 0, # 'G'
|
| 3007 |
+
45: 0, # 'H'
|
| 3008 |
+
53: 0, # 'I'
|
| 3009 |
+
60: 1, # 'J'
|
| 3010 |
+
16: 0, # 'K'
|
| 3011 |
+
49: 0, # 'L'
|
| 3012 |
+
20: 1, # 'M'
|
| 3013 |
+
46: 0, # 'N'
|
| 3014 |
+
42: 0, # 'O'
|
| 3015 |
+
48: 0, # 'P'
|
| 3016 |
+
44: 0, # 'R'
|
| 3017 |
+
35: 0, # 'S'
|
| 3018 |
+
31: 0, # 'T'
|
| 3019 |
+
51: 0, # 'U'
|
| 3020 |
+
38: 0, # 'V'
|
| 3021 |
+
62: 0, # 'W'
|
| 3022 |
+
43: 0, # 'Y'
|
| 3023 |
+
56: 0, # 'Z'
|
| 3024 |
+
1: 0, # 'a'
|
| 3025 |
+
21: 1, # 'b'
|
| 3026 |
+
28: 0, # 'c'
|
| 3027 |
+
12: 2, # 'd'
|
| 3028 |
+
2: 1, # 'e'
|
| 3029 |
+
18: 0, # 'f'
|
| 3030 |
+
27: 0, # 'g'
|
| 3031 |
+
25: 0, # 'h'
|
| 3032 |
+
3: 2, # 'i'
|
| 3033 |
+
24: 2, # 'j'
|
| 3034 |
+
10: 1, # 'k'
|
| 3035 |
+
5: 0, # 'l'
|
| 3036 |
+
13: 0, # 'm'
|
| 3037 |
+
4: 2, # 'n'
|
| 3038 |
+
15: 0, # 'o'
|
| 3039 |
+
26: 0, # 'p'
|
| 3040 |
+
7: 1, # 'r'
|
| 3041 |
+
8: 2, # 's'
|
| 3042 |
+
9: 1, # 't'
|
| 3043 |
+
14: 0, # 'u'
|
| 3044 |
+
32: 0, # 'v'
|
| 3045 |
+
57: 0, # 'w'
|
| 3046 |
+
58: 0, # 'x'
|
| 3047 |
+
11: 2, # 'y'
|
| 3048 |
+
22: 0, # 'z'
|
| 3049 |
+
63: 0, # '·'
|
| 3050 |
+
54: 0, # 'Ç'
|
| 3051 |
+
50: 0, # 'Ö'
|
| 3052 |
+
55: 0, # 'Ü'
|
| 3053 |
+
59: 0, # 'â'
|
| 3054 |
+
33: 0, # 'ç'
|
| 3055 |
+
61: 0, # 'î'
|
| 3056 |
+
34: 0, # 'ö'
|
| 3057 |
+
17: 1, # 'ü'
|
| 3058 |
+
30: 0, # 'ğ'
|
| 3059 |
+
41: 0, # 'İ'
|
| 3060 |
+
6: 2, # 'ı'
|
| 3061 |
+
40: 0, # 'Ş'
|
| 3062 |
+
19: 0, # 'ş'
|
| 3063 |
+
},
|
| 3064 |
+
11: { # 'y'
|
| 3065 |
+
23: 1, # 'A'
|
| 3066 |
+
37: 0, # 'B'
|
| 3067 |
+
47: 0, # 'C'
|
| 3068 |
+
39: 0, # 'D'
|
| 3069 |
+
29: 0, # 'E'
|
| 3070 |
+
52: 0, # 'F'
|
| 3071 |
+
36: 0, # 'G'
|
| 3072 |
+
45: 0, # 'H'
|
| 3073 |
+
53: 0, # 'I'
|
| 3074 |
+
60: 1, # 'J'
|
| 3075 |
+
16: 3, # 'K'
|
| 3076 |
+
49: 0, # 'L'
|
| 3077 |
+
20: 1, # 'M'
|
| 3078 |
+
46: 0, # 'N'
|
| 3079 |
+
42: 0, # 'O'
|
| 3080 |
+
48: 0, # 'P'
|
| 3081 |
+
44: 0, # 'R'
|
| 3082 |
+
35: 0, # 'S'
|
| 3083 |
+
31: 1, # 'T'
|
| 3084 |
+
51: 0, # 'U'
|
| 3085 |
+
38: 0, # 'V'
|
| 3086 |
+
62: 0, # 'W'
|
| 3087 |
+
43: 1, # 'Y'
|
| 3088 |
+
56: 1, # 'Z'
|
| 3089 |
+
1: 3, # 'a'
|
| 3090 |
+
21: 1, # 'b'
|
| 3091 |
+
28: 0, # 'c'
|
| 3092 |
+
12: 2, # 'd'
|
| 3093 |
+
2: 3, # 'e'
|
| 3094 |
+
18: 0, # 'f'
|
| 3095 |
+
27: 2, # 'g'
|
| 3096 |
+
25: 2, # 'h'
|
| 3097 |
+
3: 2, # 'i'
|
| 3098 |
+
24: 1, # 'j'
|
| 3099 |
+
10: 2, # 'k'
|
| 3100 |
+
5: 3, # 'l'
|
| 3101 |
+
13: 3, # 'm'
|
| 3102 |
+
4: 3, # 'n'
|
| 3103 |
+
15: 0, # 'o'
|
| 3104 |
+
26: 1, # 'p'
|
| 3105 |
+
7: 2, # 'r'
|
| 3106 |
+
8: 1, # 's'
|
| 3107 |
+
9: 2, # 't'
|
| 3108 |
+
14: 3, # 'u'
|
| 3109 |
+
32: 0, # 'v'
|
| 3110 |
+
57: 0, # 'w'
|
| 3111 |
+
58: 1, # 'x'
|
| 3112 |
+
11: 3, # 'y'
|
| 3113 |
+
22: 0, # 'z'
|
| 3114 |
+
63: 0, # '·'
|
| 3115 |
+
54: 0, # 'Ç'
|
| 3116 |
+
50: 0, # 'Ö'
|
| 3117 |
+
55: 0, # 'Ü'
|
| 3118 |
+
59: 0, # 'â'
|
| 3119 |
+
33: 3, # 'ç'
|
| 3120 |
+
61: 0, # 'î'
|
| 3121 |
+
34: 0, # 'ö'
|
| 3122 |
+
17: 2, # 'ü'
|
| 3123 |
+
30: 0, # 'ğ'
|
| 3124 |
+
41: 0, # 'İ'
|
| 3125 |
+
6: 3, # 'ı'
|
| 3126 |
+
40: 0, # 'Ş'
|
| 3127 |
+
19: 0, # 'ş'
|
| 3128 |
+
},
|
| 3129 |
+
22: { # 'z'
|
| 3130 |
+
23: 2, # 'A'
|
| 3131 |
+
37: 2, # 'B'
|
| 3132 |
+
47: 1, # 'C'
|
| 3133 |
+
39: 2, # 'D'
|
| 3134 |
+
29: 3, # 'E'
|
| 3135 |
+
52: 1, # 'F'
|
| 3136 |
+
36: 2, # 'G'
|
| 3137 |
+
45: 2, # 'H'
|
| 3138 |
+
53: 1, # 'I'
|
| 3139 |
+
60: 0, # 'J'
|
| 3140 |
+
16: 0, # 'K'
|
| 3141 |
+
49: 0, # 'L'
|
| 3142 |
+
20: 3, # 'M'
|
| 3143 |
+
46: 2, # 'N'
|
| 3144 |
+
42: 2, # 'O'
|
| 3145 |
+
48: 2, # 'P'
|
| 3146 |
+
44: 1, # 'R'
|
| 3147 |
+
35: 1, # 'S'
|
| 3148 |
+
31: 3, # 'T'
|
| 3149 |
+
51: 2, # 'U'
|
| 3150 |
+
38: 2, # 'V'
|
| 3151 |
+
62: 0, # 'W'
|
| 3152 |
+
43: 2, # 'Y'
|
| 3153 |
+
56: 1, # 'Z'
|
| 3154 |
+
1: 1, # 'a'
|
| 3155 |
+
21: 2, # 'b'
|
| 3156 |
+
28: 1, # 'c'
|
| 3157 |
+
12: 2, # 'd'
|
| 3158 |
+
2: 2, # 'e'
|
| 3159 |
+
18: 3, # 'f'
|
| 3160 |
+
27: 2, # 'g'
|
| 3161 |
+
25: 2, # 'h'
|
| 3162 |
+
3: 3, # 'i'
|
| 3163 |
+
24: 2, # 'j'
|
| 3164 |
+
10: 3, # 'k'
|
| 3165 |
+
5: 0, # 'l'
|
| 3166 |
+
13: 2, # 'm'
|
| 3167 |
+
4: 3, # 'n'
|
| 3168 |
+
15: 2, # 'o'
|
| 3169 |
+
26: 2, # 'p'
|
| 3170 |
+
7: 3, # 'r'
|
| 3171 |
+
8: 3, # 's'
|
| 3172 |
+
9: 3, # 't'
|
| 3173 |
+
14: 0, # 'u'
|
| 3174 |
+
32: 2, # 'v'
|
| 3175 |
+
57: 0, # 'w'
|
| 3176 |
+
58: 0, # 'x'
|
| 3177 |
+
11: 3, # 'y'
|
| 3178 |
+
22: 2, # 'z'
|
| 3179 |
+
63: 1, # '·'
|
| 3180 |
+
54: 0, # 'Ç'
|
| 3181 |
+
50: 0, # 'Ö'
|
| 3182 |
+
55: 2, # 'Ü'
|
| 3183 |
+
59: 1, # 'â'
|
| 3184 |
+
33: 0, # 'ç'
|
| 3185 |
+
61: 0, # 'î'
|
| 3186 |
+
34: 2, # 'ö'
|
| 3187 |
+
17: 2, # 'ü'
|
| 3188 |
+
30: 2, # 'ğ'
|
| 3189 |
+
41: 1, # 'İ'
|
| 3190 |
+
6: 3, # 'ı'
|
| 3191 |
+
40: 1, # 'Ş'
|
| 3192 |
+
19: 2, # 'ş'
|
| 3193 |
+
},
|
| 3194 |
+
63: { # '·'
|
| 3195 |
+
23: 0, # 'A'
|
| 3196 |
+
37: 0, # 'B'
|
| 3197 |
+
47: 0, # 'C'
|
| 3198 |
+
39: 0, # 'D'
|
| 3199 |
+
29: 0, # 'E'
|
| 3200 |
+
52: 0, # 'F'
|
| 3201 |
+
36: 0, # 'G'
|
| 3202 |
+
45: 0, # 'H'
|
| 3203 |
+
53: 0, # 'I'
|
| 3204 |
+
60: 0, # 'J'
|
| 3205 |
+
16: 0, # 'K'
|
| 3206 |
+
49: 0, # 'L'
|
| 3207 |
+
20: 0, # 'M'
|
| 3208 |
+
46: 0, # 'N'
|
| 3209 |
+
42: 0, # 'O'
|
| 3210 |
+
48: 0, # 'P'
|
| 3211 |
+
44: 0, # 'R'
|
| 3212 |
+
35: 0, # 'S'
|
| 3213 |
+
31: 0, # 'T'
|
| 3214 |
+
51: 0, # 'U'
|
| 3215 |
+
38: 0, # 'V'
|
| 3216 |
+
62: 0, # 'W'
|
| 3217 |
+
43: 0, # 'Y'
|
| 3218 |
+
56: 0, # 'Z'
|
| 3219 |
+
1: 0, # 'a'
|
| 3220 |
+
21: 0, # 'b'
|
| 3221 |
+
28: 0, # 'c'
|
| 3222 |
+
12: 0, # 'd'
|
| 3223 |
+
2: 1, # 'e'
|
| 3224 |
+
18: 0, # 'f'
|
| 3225 |
+
27: 0, # 'g'
|
| 3226 |
+
25: 0, # 'h'
|
| 3227 |
+
3: 0, # 'i'
|
| 3228 |
+
24: 0, # 'j'
|
| 3229 |
+
10: 0, # 'k'
|
| 3230 |
+
5: 0, # 'l'
|
| 3231 |
+
13: 2, # 'm'
|
| 3232 |
+
4: 0, # 'n'
|
| 3233 |
+
15: 0, # 'o'
|
| 3234 |
+
26: 0, # 'p'
|
| 3235 |
+
7: 0, # 'r'
|
| 3236 |
+
8: 0, # 's'
|
| 3237 |
+
9: 0, # 't'
|
| 3238 |
+
14: 2, # 'u'
|
| 3239 |
+
32: 0, # 'v'
|
| 3240 |
+
57: 0, # 'w'
|
| 3241 |
+
58: 0, # 'x'
|
| 3242 |
+
11: 0, # 'y'
|
| 3243 |
+
22: 0, # 'z'
|
| 3244 |
+
63: 0, # '·'
|
| 3245 |
+
54: 0, # 'Ç'
|
| 3246 |
+
50: 0, # 'Ö'
|
| 3247 |
+
55: 0, # 'Ü'
|
| 3248 |
+
59: 0, # 'â'
|
| 3249 |
+
33: 0, # 'ç'
|
| 3250 |
+
61: 0, # 'î'
|
| 3251 |
+
34: 0, # 'ö'
|
| 3252 |
+
17: 0, # 'ü'
|
| 3253 |
+
30: 0, # 'ğ'
|
| 3254 |
+
41: 0, # 'İ'
|
| 3255 |
+
6: 0, # 'ı'
|
| 3256 |
+
40: 0, # 'Ş'
|
| 3257 |
+
19: 0, # 'ş'
|
| 3258 |
+
},
|
| 3259 |
+
54: { # 'Ç'
|
| 3260 |
+
23: 0, # 'A'
|
| 3261 |
+
37: 0, # 'B'
|
| 3262 |
+
47: 1, # 'C'
|
| 3263 |
+
39: 1, # 'D'
|
| 3264 |
+
29: 0, # 'E'
|
| 3265 |
+
52: 0, # 'F'
|
| 3266 |
+
36: 1, # 'G'
|
| 3267 |
+
45: 1, # 'H'
|
| 3268 |
+
53: 1, # 'I'
|
| 3269 |
+
60: 0, # 'J'
|
| 3270 |
+
16: 0, # 'K'
|
| 3271 |
+
49: 0, # 'L'
|
| 3272 |
+
20: 0, # 'M'
|
| 3273 |
+
46: 0, # 'N'
|
| 3274 |
+
42: 1, # 'O'
|
| 3275 |
+
48: 1, # 'P'
|
| 3276 |
+
44: 0, # 'R'
|
| 3277 |
+
35: 0, # 'S'
|
| 3278 |
+
31: 0, # 'T'
|
| 3279 |
+
51: 1, # 'U'
|
| 3280 |
+
38: 1, # 'V'
|
| 3281 |
+
62: 0, # 'W'
|
| 3282 |
+
43: 2, # 'Y'
|
| 3283 |
+
56: 0, # 'Z'
|
| 3284 |
+
1: 0, # 'a'
|
| 3285 |
+
21: 1, # 'b'
|
| 3286 |
+
28: 0, # 'c'
|
| 3287 |
+
12: 1, # 'd'
|
| 3288 |
+
2: 0, # 'e'
|
| 3289 |
+
18: 0, # 'f'
|
| 3290 |
+
27: 1, # 'g'
|
| 3291 |
+
25: 0, # 'h'
|
| 3292 |
+
3: 3, # 'i'
|
| 3293 |
+
24: 0, # 'j'
|
| 3294 |
+
10: 1, # 'k'
|
| 3295 |
+
5: 0, # 'l'
|
| 3296 |
+
13: 0, # 'm'
|
| 3297 |
+
4: 2, # 'n'
|
| 3298 |
+
15: 1, # 'o'
|
| 3299 |
+
26: 0, # 'p'
|
| 3300 |
+
7: 2, # 'r'
|
| 3301 |
+
8: 0, # 's'
|
| 3302 |
+
9: 1, # 't'
|
| 3303 |
+
14: 0, # 'u'
|
| 3304 |
+
32: 2, # 'v'
|
| 3305 |
+
57: 0, # 'w'
|
| 3306 |
+
58: 0, # 'x'
|
| 3307 |
+
11: 0, # 'y'
|
| 3308 |
+
22: 0, # 'z'
|
| 3309 |
+
63: 0, # '·'
|
| 3310 |
+
54: 0, # 'Ç'
|
| 3311 |
+
50: 0, # 'Ö'
|
| 3312 |
+
55: 2, # 'Ü'
|
| 3313 |
+
59: 0, # 'â'
|
| 3314 |
+
33: 0, # 'ç'
|
| 3315 |
+
61: 0, # 'î'
|
| 3316 |
+
34: 1, # 'ö'
|
| 3317 |
+
17: 0, # 'ü'
|
| 3318 |
+
30: 0, # 'ğ'
|
| 3319 |
+
41: 0, # 'İ'
|
| 3320 |
+
6: 2, # 'ı'
|
| 3321 |
+
40: 0, # 'Ş'
|
| 3322 |
+
19: 1, # 'ş'
|
| 3323 |
+
},
|
| 3324 |
+
50: { # 'Ö'
|
| 3325 |
+
23: 0, # 'A'
|
| 3326 |
+
37: 0, # 'B'
|
| 3327 |
+
47: 1, # 'C'
|
| 3328 |
+
39: 1, # 'D'
|
| 3329 |
+
29: 2, # 'E'
|
| 3330 |
+
52: 0, # 'F'
|
| 3331 |
+
36: 1, # 'G'
|
| 3332 |
+
45: 2, # 'H'
|
| 3333 |
+
53: 0, # 'I'
|
| 3334 |
+
60: 0, # 'J'
|
| 3335 |
+
16: 0, # 'K'
|
| 3336 |
+
49: 0, # 'L'
|
| 3337 |
+
20: 1, # 'M'
|
| 3338 |
+
46: 1, # 'N'
|
| 3339 |
+
42: 2, # 'O'
|
| 3340 |
+
48: 2, # 'P'
|
| 3341 |
+
44: 1, # 'R'
|
| 3342 |
+
35: 0, # 'S'
|
| 3343 |
+
31: 0, # 'T'
|
| 3344 |
+
51: 1, # 'U'
|
| 3345 |
+
38: 1, # 'V'
|
| 3346 |
+
62: 0, # 'W'
|
| 3347 |
+
43: 2, # 'Y'
|
| 3348 |
+
56: 0, # 'Z'
|
| 3349 |
+
1: 0, # 'a'
|
| 3350 |
+
21: 2, # 'b'
|
| 3351 |
+
28: 1, # 'c'
|
| 3352 |
+
12: 2, # 'd'
|
| 3353 |
+
2: 0, # 'e'
|
| 3354 |
+
18: 1, # 'f'
|
| 3355 |
+
27: 1, # 'g'
|
| 3356 |
+
25: 1, # 'h'
|
| 3357 |
+
3: 2, # 'i'
|
| 3358 |
+
24: 0, # 'j'
|
| 3359 |
+
10: 2, # 'k'
|
| 3360 |
+
5: 0, # 'l'
|
| 3361 |
+
13: 0, # 'm'
|
| 3362 |
+
4: 3, # 'n'
|
| 3363 |
+
15: 2, # 'o'
|
| 3364 |
+
26: 2, # 'p'
|
| 3365 |
+
7: 3, # 'r'
|
| 3366 |
+
8: 1, # 's'
|
| 3367 |
+
9: 2, # 't'
|
| 3368 |
+
14: 0, # 'u'
|
| 3369 |
+
32: 1, # 'v'
|
| 3370 |
+
57: 0, # 'w'
|
| 3371 |
+
58: 0, # 'x'
|
| 3372 |
+
11: 0, # 'y'
|
| 3373 |
+
22: 1, # 'z'
|
| 3374 |
+
63: 0, # '·'
|
| 3375 |
+
54: 0, # 'Ç'
|
| 3376 |
+
50: 0, # 'Ö'
|
| 3377 |
+
55: 0, # 'Ü'
|
| 3378 |
+
59: 0, # 'â'
|
| 3379 |
+
33: 0, # 'ç'
|
| 3380 |
+
61: 0, # 'î'
|
| 3381 |
+
34: 2, # 'ö'
|
| 3382 |
+
17: 2, # 'ü'
|
| 3383 |
+
30: 1, # 'ğ'
|
| 3384 |
+
41: 0, # 'İ'
|
| 3385 |
+
6: 2, # 'ı'
|
| 3386 |
+
40: 0, # 'Ş'
|
| 3387 |
+
19: 1, # 'ş'
|
| 3388 |
+
},
|
| 3389 |
+
55: { # 'Ü'
|
| 3390 |
+
23: 0, # 'A'
|
| 3391 |
+
37: 0, # 'B'
|
| 3392 |
+
47: 0, # 'C'
|
| 3393 |
+
39: 0, # 'D'
|
| 3394 |
+
29: 0, # 'E'
|
| 3395 |
+
52: 2, # 'F'
|
| 3396 |
+
36: 0, # 'G'
|
| 3397 |
+
45: 0, # 'H'
|
| 3398 |
+
53: 0, # 'I'
|
| 3399 |
+
60: 0, # 'J'
|
| 3400 |
+
16: 1, # 'K'
|
| 3401 |
+
49: 0, # 'L'
|
| 3402 |
+
20: 0, # 'M'
|
| 3403 |
+
46: 0, # 'N'
|
| 3404 |
+
42: 0, # 'O'
|
| 3405 |
+
48: 1, # 'P'
|
| 3406 |
+
44: 0, # 'R'
|
| 3407 |
+
35: 0, # 'S'
|
| 3408 |
+
31: 0, # 'T'
|
| 3409 |
+
51: 0, # 'U'
|
| 3410 |
+
38: 1, # 'V'
|
| 3411 |
+
62: 0, # 'W'
|
| 3412 |
+
43: 0, # 'Y'
|
| 3413 |
+
56: 0, # 'Z'
|
| 3414 |
+
1: 2, # 'a'
|
| 3415 |
+
21: 0, # 'b'
|
| 3416 |
+
28: 2, # 'c'
|
| 3417 |
+
12: 0, # 'd'
|
| 3418 |
+
2: 2, # 'e'
|
| 3419 |
+
18: 0, # 'f'
|
| 3420 |
+
27: 1, # 'g'
|
| 3421 |
+
25: 0, # 'h'
|
| 3422 |
+
3: 0, # 'i'
|
| 3423 |
+
24: 0, # 'j'
|
| 3424 |
+
10: 0, # 'k'
|
| 3425 |
+
5: 1, # 'l'
|
| 3426 |
+
13: 1, # 'm'
|
| 3427 |
+
4: 1, # 'n'
|
| 3428 |
+
15: 0, # 'o'
|
| 3429 |
+
26: 0, # 'p'
|
| 3430 |
+
7: 0, # 'r'
|
| 3431 |
+
8: 0, # 's'
|
| 3432 |
+
9: 1, # 't'
|
| 3433 |
+
14: 2, # 'u'
|
| 3434 |
+
32: 0, # 'v'
|
| 3435 |
+
57: 0, # 'w'
|
| 3436 |
+
58: 0, # 'x'
|
| 3437 |
+
11: 0, # 'y'
|
| 3438 |
+
22: 1, # 'z'
|
| 3439 |
+
63: 0, # '·'
|
| 3440 |
+
54: 0, # 'Ç'
|
| 3441 |
+
50: 1, # 'Ö'
|
| 3442 |
+
55: 0, # 'Ü'
|
| 3443 |
+
59: 0, # 'â'
|
| 3444 |
+
33: 0, # 'ç'
|
| 3445 |
+
61: 0, # 'î'
|
| 3446 |
+
34: 1, # 'ö'
|
| 3447 |
+
17: 0, # 'ü'
|
| 3448 |
+
30: 1, # 'ğ'
|
| 3449 |
+
41: 1, # 'İ'
|
| 3450 |
+
6: 0, # 'ı'
|
| 3451 |
+
40: 0, # 'Ş'
|
| 3452 |
+
19: 1, # 'ş'
|
| 3453 |
+
},
|
| 3454 |
+
59: { # 'â'
|
| 3455 |
+
23: 0, # 'A'
|
| 3456 |
+
37: 0, # 'B'
|
| 3457 |
+
47: 0, # 'C'
|
| 3458 |
+
39: 0, # 'D'
|
| 3459 |
+
29: 0, # 'E'
|
| 3460 |
+
52: 0, # 'F'
|
| 3461 |
+
36: 1, # 'G'
|
| 3462 |
+
45: 0, # 'H'
|
| 3463 |
+
53: 0, # 'I'
|
| 3464 |
+
60: 0, # 'J'
|
| 3465 |
+
16: 1, # 'K'
|
| 3466 |
+
49: 0, # 'L'
|
| 3467 |
+
20: 0, # 'M'
|
| 3468 |
+
46: 0, # 'N'
|
| 3469 |
+
42: 0, # 'O'
|
| 3470 |
+
48: 0, # 'P'
|
| 3471 |
+
44: 0, # 'R'
|
| 3472 |
+
35: 0, # 'S'
|
| 3473 |
+
31: 0, # 'T'
|
| 3474 |
+
51: 0, # 'U'
|
| 3475 |
+
38: 0, # 'V'
|
| 3476 |
+
62: 0, # 'W'
|
| 3477 |
+
43: 0, # 'Y'
|
| 3478 |
+
56: 0, # 'Z'
|
| 3479 |
+
1: 2, # 'a'
|
| 3480 |
+
21: 0, # 'b'
|
| 3481 |
+
28: 0, # 'c'
|
| 3482 |
+
12: 0, # 'd'
|
| 3483 |
+
2: 2, # 'e'
|
| 3484 |
+
18: 0, # 'f'
|
| 3485 |
+
27: 0, # 'g'
|
| 3486 |
+
25: 0, # 'h'
|
| 3487 |
+
3: 0, # 'i'
|
| 3488 |
+
24: 0, # 'j'
|
| 3489 |
+
10: 0, # 'k'
|
| 3490 |
+
5: 0, # 'l'
|
| 3491 |
+
13: 2, # 'm'
|
| 3492 |
+
4: 0, # 'n'
|
| 3493 |
+
15: 1, # 'o'
|
| 3494 |
+
26: 0, # 'p'
|
| 3495 |
+
7: 0, # 'r'
|
| 3496 |
+
8: 0, # 's'
|
| 3497 |
+
9: 0, # 't'
|
| 3498 |
+
14: 2, # 'u'
|
| 3499 |
+
32: 0, # 'v'
|
| 3500 |
+
57: 0, # 'w'
|
| 3501 |
+
58: 0, # 'x'
|
| 3502 |
+
11: 0, # 'y'
|
| 3503 |
+
22: 1, # 'z'
|
| 3504 |
+
63: 0, # '·'
|
| 3505 |
+
54: 0, # 'Ç'
|
| 3506 |
+
50: 0, # 'Ö'
|
| 3507 |
+
55: 0, # 'Ü'
|
| 3508 |
+
59: 0, # 'â'
|
| 3509 |
+
33: 0, # 'ç'
|
| 3510 |
+
61: 0, # 'î'
|
| 3511 |
+
34: 0, # 'ö'
|
| 3512 |
+
17: 0, # 'ü'
|
| 3513 |
+
30: 0, # 'ğ'
|
| 3514 |
+
41: 0, # 'İ'
|
| 3515 |
+
6: 1, # 'ı'
|
| 3516 |
+
40: 1, # 'Ş'
|
| 3517 |
+
19: 0, # 'ş'
|
| 3518 |
+
},
|
| 3519 |
+
33: { # 'ç'
|
| 3520 |
+
23: 0, # 'A'
|
| 3521 |
+
37: 0, # 'B'
|
| 3522 |
+
47: 0, # 'C'
|
| 3523 |
+
39: 0, # 'D'
|
| 3524 |
+
29: 3, # 'E'
|
| 3525 |
+
52: 0, # 'F'
|
| 3526 |
+
36: 0, # 'G'
|
| 3527 |
+
45: 0, # 'H'
|
| 3528 |
+
53: 0, # 'I'
|
| 3529 |
+
60: 0, # 'J'
|
| 3530 |
+
16: 0, # 'K'
|
| 3531 |
+
49: 0, # 'L'
|
| 3532 |
+
20: 1, # 'M'
|
| 3533 |
+
46: 0, # 'N'
|
| 3534 |
+
42: 0, # 'O'
|
| 3535 |
+
48: 0, # 'P'
|
| 3536 |
+
44: 0, # 'R'
|
| 3537 |
+
35: 0, # 'S'
|
| 3538 |
+
31: 2, # 'T'
|
| 3539 |
+
51: 0, # 'U'
|
| 3540 |
+
38: 1, # 'V'
|
| 3541 |
+
62: 0, # 'W'
|
| 3542 |
+
43: 0, # 'Y'
|
| 3543 |
+
56: 0, # 'Z'
|
| 3544 |
+
1: 0, # 'a'
|
| 3545 |
+
21: 3, # 'b'
|
| 3546 |
+
28: 0, # 'c'
|
| 3547 |
+
12: 2, # 'd'
|
| 3548 |
+
2: 0, # 'e'
|
| 3549 |
+
18: 2, # 'f'
|
| 3550 |
+
27: 1, # 'g'
|
| 3551 |
+
25: 3, # 'h'
|
| 3552 |
+
3: 3, # 'i'
|
| 3553 |
+
24: 0, # 'j'
|
| 3554 |
+
10: 3, # 'k'
|
| 3555 |
+
5: 0, # 'l'
|
| 3556 |
+
13: 0, # 'm'
|
| 3557 |
+
4: 3, # 'n'
|
| 3558 |
+
15: 0, # 'o'
|
| 3559 |
+
26: 1, # 'p'
|
| 3560 |
+
7: 3, # 'r'
|
| 3561 |
+
8: 2, # 's'
|
| 3562 |
+
9: 3, # 't'
|
| 3563 |
+
14: 0, # 'u'
|
| 3564 |
+
32: 2, # 'v'
|
| 3565 |
+
57: 0, # 'w'
|
| 3566 |
+
58: 0, # 'x'
|
| 3567 |
+
11: 2, # 'y'
|
| 3568 |
+
22: 0, # 'z'
|
| 3569 |
+
63: 0, # '·'
|
| 3570 |
+
54: 0, # 'Ç'
|
| 3571 |
+
50: 0, # 'Ö'
|
| 3572 |
+
55: 0, # 'Ü'
|
| 3573 |
+
59: 0, # 'â'
|
| 3574 |
+
33: 0, # 'ç'
|
| 3575 |
+
61: 0, # 'î'
|
| 3576 |
+
34: 0, # 'ö'
|
| 3577 |
+
17: 1, # 'ü'
|
| 3578 |
+
30: 0, # 'ğ'
|
| 3579 |
+
41: 0, # 'İ'
|
| 3580 |
+
6: 3, # 'ı'
|
| 3581 |
+
40: 0, # 'Ş'
|
| 3582 |
+
19: 0, # 'ş'
|
| 3583 |
+
},
|
| 3584 |
+
61: { # 'î'
|
| 3585 |
+
23: 0, # 'A'
|
| 3586 |
+
37: 0, # 'B'
|
| 3587 |
+
47: 0, # 'C'
|
| 3588 |
+
39: 0, # 'D'
|
| 3589 |
+
29: 0, # 'E'
|
| 3590 |
+
52: 0, # 'F'
|
| 3591 |
+
36: 0, # 'G'
|
| 3592 |
+
45: 0, # 'H'
|
| 3593 |
+
53: 0, # 'I'
|
| 3594 |
+
60: 0, # 'J'
|
| 3595 |
+
16: 0, # 'K'
|
| 3596 |
+
49: 0, # 'L'
|
| 3597 |
+
20: 0, # 'M'
|
| 3598 |
+
46: 0, # 'N'
|
| 3599 |
+
42: 0, # 'O'
|
| 3600 |
+
48: 0, # 'P'
|
| 3601 |
+
44: 0, # 'R'
|
| 3602 |
+
35: 0, # 'S'
|
| 3603 |
+
31: 0, # 'T'
|
| 3604 |
+
51: 0, # 'U'
|
| 3605 |
+
38: 0, # 'V'
|
| 3606 |
+
62: 0, # 'W'
|
| 3607 |
+
43: 0, # 'Y'
|
| 3608 |
+
56: 1, # 'Z'
|
| 3609 |
+
1: 2, # 'a'
|
| 3610 |
+
21: 0, # 'b'
|
| 3611 |
+
28: 0, # 'c'
|
| 3612 |
+
12: 0, # 'd'
|
| 3613 |
+
2: 2, # 'e'
|
| 3614 |
+
18: 0, # 'f'
|
| 3615 |
+
27: 0, # 'g'
|
| 3616 |
+
25: 0, # 'h'
|
| 3617 |
+
3: 0, # 'i'
|
| 3618 |
+
24: 1, # 'j'
|
| 3619 |
+
10: 0, # 'k'
|
| 3620 |
+
5: 0, # 'l'
|
| 3621 |
+
13: 1, # 'm'
|
| 3622 |
+
4: 1, # 'n'
|
| 3623 |
+
15: 0, # 'o'
|
| 3624 |
+
26: 0, # 'p'
|
| 3625 |
+
7: 0, # 'r'
|
| 3626 |
+
8: 0, # 's'
|
| 3627 |
+
9: 0, # 't'
|
| 3628 |
+
14: 1, # 'u'
|
| 3629 |
+
32: 0, # 'v'
|
| 3630 |
+
57: 0, # 'w'
|
| 3631 |
+
58: 0, # 'x'
|
| 3632 |
+
11: 0, # 'y'
|
| 3633 |
+
22: 1, # 'z'
|
| 3634 |
+
63: 0, # '·'
|
| 3635 |
+
54: 0, # 'Ç'
|
| 3636 |
+
50: 0, # 'Ö'
|
| 3637 |
+
55: 0, # 'Ü'
|
| 3638 |
+
59: 0, # 'â'
|
| 3639 |
+
33: 0, # 'ç'
|
| 3640 |
+
61: 1, # 'î'
|
| 3641 |
+
34: 0, # 'ö'
|
| 3642 |
+
17: 0, # 'ü'
|
| 3643 |
+
30: 0, # 'ğ'
|
| 3644 |
+
41: 0, # 'İ'
|
| 3645 |
+
6: 1, # 'ı'
|
| 3646 |
+
40: 0, # 'Ş'
|
| 3647 |
+
19: 0, # 'ş'
|
| 3648 |
+
},
|
| 3649 |
+
34: { # 'ö'
|
| 3650 |
+
23: 0, # 'A'
|
| 3651 |
+
37: 1, # 'B'
|
| 3652 |
+
47: 1, # 'C'
|
| 3653 |
+
39: 0, # 'D'
|
| 3654 |
+
29: 0, # 'E'
|
| 3655 |
+
52: 2, # 'F'
|
| 3656 |
+
36: 1, # 'G'
|
| 3657 |
+
45: 1, # 'H'
|
| 3658 |
+
53: 0, # 'I'
|
| 3659 |
+
60: 0, # 'J'
|
| 3660 |
+
16: 3, # 'K'
|
| 3661 |
+
49: 1, # 'L'
|
| 3662 |
+
20: 0, # 'M'
|
| 3663 |
+
46: 1, # 'N'
|
| 3664 |
+
42: 1, # 'O'
|
| 3665 |
+
48: 2, # 'P'
|
| 3666 |
+
44: 1, # 'R'
|
| 3667 |
+
35: 1, # 'S'
|
| 3668 |
+
31: 1, # 'T'
|
| 3669 |
+
51: 1, # 'U'
|
| 3670 |
+
38: 1, # 'V'
|
| 3671 |
+
62: 0, # 'W'
|
| 3672 |
+
43: 0, # 'Y'
|
| 3673 |
+
56: 1, # 'Z'
|
| 3674 |
+
1: 3, # 'a'
|
| 3675 |
+
21: 1, # 'b'
|
| 3676 |
+
28: 2, # 'c'
|
| 3677 |
+
12: 1, # 'd'
|
| 3678 |
+
2: 3, # 'e'
|
| 3679 |
+
18: 0, # 'f'
|
| 3680 |
+
27: 2, # 'g'
|
| 3681 |
+
25: 2, # 'h'
|
| 3682 |
+
3: 1, # 'i'
|
| 3683 |
+
24: 2, # 'j'
|
| 3684 |
+
10: 1, # 'k'
|
| 3685 |
+
5: 2, # 'l'
|
| 3686 |
+
13: 3, # 'm'
|
| 3687 |
+
4: 2, # 'n'
|
| 3688 |
+
15: 2, # 'o'
|
| 3689 |
+
26: 0, # 'p'
|
| 3690 |
+
7: 0, # 'r'
|
| 3691 |
+
8: 3, # 's'
|
| 3692 |
+
9: 1, # 't'
|
| 3693 |
+
14: 3, # 'u'
|
| 3694 |
+
32: 0, # 'v'
|
| 3695 |
+
57: 0, # 'w'
|
| 3696 |
+
58: 0, # 'x'
|
| 3697 |
+
11: 1, # 'y'
|
| 3698 |
+
22: 2, # 'z'
|
| 3699 |
+
63: 0, # '·'
|
| 3700 |
+
54: 1, # 'Ç'
|
| 3701 |
+
50: 2, # 'Ö'
|
| 3702 |
+
55: 0, # 'Ü'
|
| 3703 |
+
59: 0, # 'â'
|
| 3704 |
+
33: 2, # 'ç'
|
| 3705 |
+
61: 0, # 'î'
|
| 3706 |
+
34: 2, # 'ö'
|
| 3707 |
+
17: 0, # 'ü'
|
| 3708 |
+
30: 2, # 'ğ'
|
| 3709 |
+
41: 1, # 'İ'
|
| 3710 |
+
6: 1, # 'ı'
|
| 3711 |
+
40: 2, # 'Ş'
|
| 3712 |
+
19: 1, # 'ş'
|
| 3713 |
+
},
|
| 3714 |
+
17: { # 'ü'
|
| 3715 |
+
23: 0, # 'A'
|
| 3716 |
+
37: 0, # 'B'
|
| 3717 |
+
47: 1, # 'C'
|
| 3718 |
+
39: 0, # 'D'
|
| 3719 |
+
29: 0, # 'E'
|
| 3720 |
+
52: 0, # 'F'
|
| 3721 |
+
36: 0, # 'G'
|
| 3722 |
+
45: 0, # 'H'
|
| 3723 |
+
53: 0, # 'I'
|
| 3724 |
+
60: 1, # 'J'
|
| 3725 |
+
16: 1, # 'K'
|
| 3726 |
+
49: 0, # 'L'
|
| 3727 |
+
20: 1, # 'M'
|
| 3728 |
+
46: 0, # 'N'
|
| 3729 |
+
42: 0, # 'O'
|
| 3730 |
+
48: 0, # 'P'
|
| 3731 |
+
44: 0, # 'R'
|
| 3732 |
+
35: 0, # 'S'
|
| 3733 |
+
31: 1, # 'T'
|
| 3734 |
+
51: 0, # 'U'
|
| 3735 |
+
38: 0, # 'V'
|
| 3736 |
+
62: 0, # 'W'
|
| 3737 |
+
43: 0, # 'Y'
|
| 3738 |
+
56: 1, # 'Z'
|
| 3739 |
+
1: 3, # 'a'
|
| 3740 |
+
21: 0, # 'b'
|
| 3741 |
+
28: 0, # 'c'
|
| 3742 |
+
12: 1, # 'd'
|
| 3743 |
+
2: 3, # 'e'
|
| 3744 |
+
18: 1, # 'f'
|
| 3745 |
+
27: 2, # 'g'
|
| 3746 |
+
25: 0, # 'h'
|
| 3747 |
+
3: 1, # 'i'
|
| 3748 |
+
24: 1, # 'j'
|
| 3749 |
+
10: 2, # 'k'
|
| 3750 |
+
5: 3, # 'l'
|
| 3751 |
+
13: 2, # 'm'
|
| 3752 |
+
4: 3, # 'n'
|
| 3753 |
+
15: 0, # 'o'
|
| 3754 |
+
26: 2, # 'p'
|
| 3755 |
+
7: 2, # 'r'
|
| 3756 |
+
8: 3, # 's'
|
| 3757 |
+
9: 2, # 't'
|
| 3758 |
+
14: 3, # 'u'
|
| 3759 |
+
32: 1, # 'v'
|
| 3760 |
+
57: 1, # 'w'
|
| 3761 |
+
58: 0, # 'x'
|
| 3762 |
+
11: 0, # 'y'
|
| 3763 |
+
22: 0, # 'z'
|
| 3764 |
+
63: 0, # '·'
|
| 3765 |
+
54: 0, # 'Ç'
|
| 3766 |
+
50: 0, # 'Ö'
|
| 3767 |
+
55: 0, # 'Ü'
|
| 3768 |
+
59: 0, # 'â'
|
| 3769 |
+
33: 1, # 'ç'
|
| 3770 |
+
61: 0, # 'î'
|
| 3771 |
+
34: 0, # 'ö'
|
| 3772 |
+
17: 2, # 'ü'
|
| 3773 |
+
30: 0, # 'ğ'
|
| 3774 |
+
41: 0, # 'İ'
|
| 3775 |
+
6: 2, # 'ı'
|
| 3776 |
+
40: 0, # 'Ş'
|
| 3777 |
+
19: 0, # 'ş'
|
| 3778 |
+
},
|
| 3779 |
+
30: { # 'ğ'
|
| 3780 |
+
23: 0, # 'A'
|
| 3781 |
+
37: 2, # 'B'
|
| 3782 |
+
47: 1, # 'C'
|
| 3783 |
+
39: 0, # 'D'
|
| 3784 |
+
29: 0, # 'E'
|
| 3785 |
+
52: 2, # 'F'
|
| 3786 |
+
36: 1, # 'G'
|
| 3787 |
+
45: 0, # 'H'
|
| 3788 |
+
53: 1, # 'I'
|
| 3789 |
+
60: 0, # 'J'
|
| 3790 |
+
16: 3, # 'K'
|
| 3791 |
+
49: 0, # 'L'
|
| 3792 |
+
20: 1, # 'M'
|
| 3793 |
+
46: 2, # 'N'
|
| 3794 |
+
42: 2, # 'O'
|
| 3795 |
+
48: 1, # 'P'
|
| 3796 |
+
44: 1, # 'R'
|
| 3797 |
+
35: 0, # 'S'
|
| 3798 |
+
31: 1, # 'T'
|
| 3799 |
+
51: 0, # 'U'
|
| 3800 |
+
38: 2, # 'V'
|
| 3801 |
+
62: 0, # 'W'
|
| 3802 |
+
43: 2, # 'Y'
|
| 3803 |
+
56: 0, # 'Z'
|
| 3804 |
+
1: 3, # 'a'
|
| 3805 |
+
21: 0, # 'b'
|
| 3806 |
+
28: 2, # 'c'
|
| 3807 |
+
12: 0, # 'd'
|
| 3808 |
+
2: 2, # 'e'
|
| 3809 |
+
18: 0, # 'f'
|
| 3810 |
+
27: 0, # 'g'
|
| 3811 |
+
25: 0, # 'h'
|
| 3812 |
+
3: 0, # 'i'
|
| 3813 |
+
24: 3, # 'j'
|
| 3814 |
+
10: 1, # 'k'
|
| 3815 |
+
5: 2, # 'l'
|
| 3816 |
+
13: 3, # 'm'
|
| 3817 |
+
4: 0, # 'n'
|
| 3818 |
+
15: 1, # 'o'
|
| 3819 |
+
26: 0, # 'p'
|
| 3820 |
+
7: 1, # 'r'
|
| 3821 |
+
8: 0, # 's'
|
| 3822 |
+
9: 0, # 't'
|
| 3823 |
+
14: 3, # 'u'
|
| 3824 |
+
32: 0, # 'v'
|
| 3825 |
+
57: 0, # 'w'
|
| 3826 |
+
58: 0, # 'x'
|
| 3827 |
+
11: 0, # 'y'
|
| 3828 |
+
22: 2, # 'z'
|
| 3829 |
+
63: 0, # '·'
|
| 3830 |
+
54: 2, # 'Ç'
|
| 3831 |
+
50: 2, # 'Ö'
|
| 3832 |
+
55: 0, # 'Ü'
|
| 3833 |
+
59: 0, # 'â'
|
| 3834 |
+
33: 1, # 'ç'
|
| 3835 |
+
61: 0, # 'î'
|
| 3836 |
+
34: 2, # 'ö'
|
| 3837 |
+
17: 0, # 'ü'
|
| 3838 |
+
30: 1, # 'ğ'
|
| 3839 |
+
41: 2, # 'İ'
|
| 3840 |
+
6: 2, # 'ı'
|
| 3841 |
+
40: 2, # 'Ş'
|
| 3842 |
+
19: 1, # 'ş'
|
| 3843 |
+
},
|
| 3844 |
+
41: { # 'İ'
|
| 3845 |
+
23: 0, # 'A'
|
| 3846 |
+
37: 0, # 'B'
|
| 3847 |
+
47: 1, # 'C'
|
| 3848 |
+
39: 1, # 'D'
|
| 3849 |
+
29: 1, # 'E'
|
| 3850 |
+
52: 0, # 'F'
|
| 3851 |
+
36: 2, # 'G'
|
| 3852 |
+
45: 2, # 'H'
|
| 3853 |
+
53: 0, # 'I'
|
| 3854 |
+
60: 0, # 'J'
|
| 3855 |
+
16: 0, # 'K'
|
| 3856 |
+
49: 0, # 'L'
|
| 3857 |
+
20: 2, # 'M'
|
| 3858 |
+
46: 1, # 'N'
|
| 3859 |
+
42: 1, # 'O'
|
| 3860 |
+
48: 2, # 'P'
|
| 3861 |
+
44: 0, # 'R'
|
| 3862 |
+
35: 1, # 'S'
|
| 3863 |
+
31: 1, # 'T'
|
| 3864 |
+
51: 1, # 'U'
|
| 3865 |
+
38: 1, # 'V'
|
| 3866 |
+
62: 0, # 'W'
|
| 3867 |
+
43: 2, # 'Y'
|
| 3868 |
+
56: 0, # 'Z'
|
| 3869 |
+
1: 1, # 'a'
|
| 3870 |
+
21: 2, # 'b'
|
| 3871 |
+
28: 1, # 'c'
|
| 3872 |
+
12: 2, # 'd'
|
| 3873 |
+
2: 1, # 'e'
|
| 3874 |
+
18: 0, # 'f'
|
| 3875 |
+
27: 3, # 'g'
|
| 3876 |
+
25: 2, # 'h'
|
| 3877 |
+
3: 2, # 'i'
|
| 3878 |
+
24: 2, # 'j'
|
| 3879 |
+
10: 2, # 'k'
|
| 3880 |
+
5: 0, # 'l'
|
| 3881 |
+
13: 1, # 'm'
|
| 3882 |
+
4: 3, # 'n'
|
| 3883 |
+
15: 1, # 'o'
|
| 3884 |
+
26: 1, # 'p'
|
| 3885 |
+
7: 3, # 'r'
|
| 3886 |
+
8: 3, # 's'
|
| 3887 |
+
9: 2, # 't'
|
| 3888 |
+
14: 0, # 'u'
|
| 3889 |
+
32: 0, # 'v'
|
| 3890 |
+
57: 1, # 'w'
|
| 3891 |
+
58: 0, # 'x'
|
| 3892 |
+
11: 2, # 'y'
|
| 3893 |
+
22: 0, # 'z'
|
| 3894 |
+
63: 0, # '·'
|
| 3895 |
+
54: 0, # 'Ç'
|
| 3896 |
+
50: 0, # 'Ö'
|
| 3897 |
+
55: 1, # 'Ü'
|
| 3898 |
+
59: 1, # 'â'
|
| 3899 |
+
33: 0, # 'ç'
|
| 3900 |
+
61: 0, # 'î'
|
| 3901 |
+
34: 1, # 'ö'
|
| 3902 |
+
17: 1, # 'ü'
|
| 3903 |
+
30: 2, # 'ğ'
|
| 3904 |
+
41: 0, # 'İ'
|
| 3905 |
+
6: 3, # 'ı'
|
| 3906 |
+
40: 0, # 'Ş'
|
| 3907 |
+
19: 1, # 'ş'
|
| 3908 |
+
},
|
| 3909 |
+
6: { # 'ı'
|
| 3910 |
+
23: 2, # 'A'
|
| 3911 |
+
37: 0, # 'B'
|
| 3912 |
+
47: 0, # 'C'
|
| 3913 |
+
39: 0, # 'D'
|
| 3914 |
+
29: 0, # 'E'
|
| 3915 |
+
52: 0, # 'F'
|
| 3916 |
+
36: 1, # 'G'
|
| 3917 |
+
45: 0, # 'H'
|
| 3918 |
+
53: 0, # 'I'
|
| 3919 |
+
60: 2, # 'J'
|
| 3920 |
+
16: 3, # 'K'
|
| 3921 |
+
49: 0, # 'L'
|
| 3922 |
+
20: 3, # 'M'
|
| 3923 |
+
46: 1, # 'N'
|
| 3924 |
+
42: 0, # 'O'
|
| 3925 |
+
48: 0, # 'P'
|
| 3926 |
+
44: 0, # 'R'
|
| 3927 |
+
35: 0, # 'S'
|
| 3928 |
+
31: 2, # 'T'
|
| 3929 |
+
51: 0, # 'U'
|
| 3930 |
+
38: 0, # 'V'
|
| 3931 |
+
62: 0, # 'W'
|
| 3932 |
+
43: 2, # 'Y'
|
| 3933 |
+
56: 1, # 'Z'
|
| 3934 |
+
1: 3, # 'a'
|
| 3935 |
+
21: 2, # 'b'
|
| 3936 |
+
28: 1, # 'c'
|
| 3937 |
+
12: 3, # 'd'
|
| 3938 |
+
2: 3, # 'e'
|
| 3939 |
+
18: 3, # 'f'
|
| 3940 |
+
27: 3, # 'g'
|
| 3941 |
+
25: 2, # 'h'
|
| 3942 |
+
3: 3, # 'i'
|
| 3943 |
+
24: 3, # 'j'
|
| 3944 |
+
10: 3, # 'k'
|
| 3945 |
+
5: 3, # 'l'
|
| 3946 |
+
13: 3, # 'm'
|
| 3947 |
+
4: 3, # 'n'
|
| 3948 |
+
15: 0, # 'o'
|
| 3949 |
+
26: 3, # 'p'
|
| 3950 |
+
7: 3, # 'r'
|
| 3951 |
+
8: 3, # 's'
|
| 3952 |
+
9: 3, # 't'
|
| 3953 |
+
14: 3, # 'u'
|
| 3954 |
+
32: 3, # 'v'
|
| 3955 |
+
57: 1, # 'w'
|
| 3956 |
+
58: 1, # 'x'
|
| 3957 |
+
11: 3, # 'y'
|
| 3958 |
+
22: 0, # 'z'
|
| 3959 |
+
63: 1, # '·'
|
| 3960 |
+
54: 0, # 'Ç'
|
| 3961 |
+
50: 0, # 'Ö'
|
| 3962 |
+
55: 0, # 'Ü'
|
| 3963 |
+
59: 0, # 'â'
|
| 3964 |
+
33: 2, # 'ç'
|
| 3965 |
+
61: 0, # 'î'
|
| 3966 |
+
34: 0, # 'ö'
|
| 3967 |
+
17: 3, # 'ü'
|
| 3968 |
+
30: 0, # 'ğ'
|
| 3969 |
+
41: 0, # 'İ'
|
| 3970 |
+
6: 3, # 'ı'
|
| 3971 |
+
40: 0, # 'Ş'
|
| 3972 |
+
19: 0, # 'ş'
|
| 3973 |
+
},
|
| 3974 |
+
40: { # 'Ş'
|
| 3975 |
+
23: 0, # 'A'
|
| 3976 |
+
37: 0, # 'B'
|
| 3977 |
+
47: 1, # 'C'
|
| 3978 |
+
39: 1, # 'D'
|
| 3979 |
+
29: 1, # 'E'
|
| 3980 |
+
52: 0, # 'F'
|
| 3981 |
+
36: 1, # 'G'
|
| 3982 |
+
45: 2, # 'H'
|
| 3983 |
+
53: 1, # 'I'
|
| 3984 |
+
60: 0, # 'J'
|
| 3985 |
+
16: 0, # 'K'
|
| 3986 |
+
49: 0, # 'L'
|
| 3987 |
+
20: 2, # 'M'
|
| 3988 |
+
46: 1, # 'N'
|
| 3989 |
+
42: 1, # 'O'
|
| 3990 |
+
48: 2, # 'P'
|
| 3991 |
+
44: 2, # 'R'
|
| 3992 |
+
35: 1, # 'S'
|
| 3993 |
+
31: 1, # 'T'
|
| 3994 |
+
51: 0, # 'U'
|
| 3995 |
+
38: 1, # 'V'
|
| 3996 |
+
62: 0, # 'W'
|
| 3997 |
+
43: 2, # 'Y'
|
| 3998 |
+
56: 1, # 'Z'
|
| 3999 |
+
1: 0, # 'a'
|
| 4000 |
+
21: 2, # 'b'
|
| 4001 |
+
28: 0, # 'c'
|
| 4002 |
+
12: 2, # 'd'
|
| 4003 |
+
2: 0, # 'e'
|
| 4004 |
+
18: 3, # 'f'
|
| 4005 |
+
27: 0, # 'g'
|
| 4006 |
+
25: 2, # 'h'
|
| 4007 |
+
3: 3, # 'i'
|
| 4008 |
+
24: 2, # 'j'
|
| 4009 |
+
10: 1, # 'k'
|
| 4010 |
+
5: 0, # 'l'
|
| 4011 |
+
13: 1, # 'm'
|
| 4012 |
+
4: 3, # 'n'
|
| 4013 |
+
15: 2, # 'o'
|
| 4014 |
+
26: 0, # 'p'
|
| 4015 |
+
7: 3, # 'r'
|
| 4016 |
+
8: 2, # 's'
|
| 4017 |
+
9: 2, # 't'
|
| 4018 |
+
14: 1, # 'u'
|
| 4019 |
+
32: 3, # 'v'
|
| 4020 |
+
57: 0, # 'w'
|
| 4021 |
+
58: 0, # 'x'
|
| 4022 |
+
11: 2, # 'y'
|
| 4023 |
+
22: 0, # 'z'
|
| 4024 |
+
63: 0, # '·'
|
| 4025 |
+
54: 0, # 'Ç'
|
| 4026 |
+
50: 0, # 'Ö'
|
| 4027 |
+
55: 1, # 'Ü'
|
| 4028 |
+
59: 0, # 'â'
|
| 4029 |
+
33: 0, # 'ç'
|
| 4030 |
+
61: 0, # 'î'
|
| 4031 |
+
34: 2, # 'ö'
|
| 4032 |
+
17: 1, # 'ü'
|
| 4033 |
+
30: 2, # 'ğ'
|
| 4034 |
+
41: 0, # 'İ'
|
| 4035 |
+
6: 2, # 'ı'
|
| 4036 |
+
40: 1, # 'Ş'
|
| 4037 |
+
19: 2, # 'ş'
|
| 4038 |
+
},
|
| 4039 |
+
19: { # 'ş'
|
| 4040 |
+
23: 0, # 'A'
|
| 4041 |
+
37: 0, # 'B'
|
| 4042 |
+
47: 1, # 'C'
|
| 4043 |
+
39: 0, # 'D'
|
| 4044 |
+
29: 0, # 'E'
|
| 4045 |
+
52: 2, # 'F'
|
| 4046 |
+
36: 1, # 'G'
|
| 4047 |
+
45: 0, # 'H'
|
| 4048 |
+
53: 0, # 'I'
|
| 4049 |
+
60: 0, # 'J'
|
| 4050 |
+
16: 3, # 'K'
|
| 4051 |
+
49: 2, # 'L'
|
| 4052 |
+
20: 0, # 'M'
|
| 4053 |
+
46: 1, # 'N'
|
| 4054 |
+
42: 1, # 'O'
|
| 4055 |
+
48: 1, # 'P'
|
| 4056 |
+
44: 1, # 'R'
|
| 4057 |
+
35: 1, # 'S'
|
| 4058 |
+
31: 0, # 'T'
|
| 4059 |
+
51: 1, # 'U'
|
| 4060 |
+
38: 1, # 'V'
|
| 4061 |
+
62: 0, # 'W'
|
| 4062 |
+
43: 1, # 'Y'
|
| 4063 |
+
56: 0, # 'Z'
|
| 4064 |
+
1: 3, # 'a'
|
| 4065 |
+
21: 1, # 'b'
|
| 4066 |
+
28: 2, # 'c'
|
| 4067 |
+
12: 0, # 'd'
|
| 4068 |
+
2: 3, # 'e'
|
| 4069 |
+
18: 0, # 'f'
|
| 4070 |
+
27: 2, # 'g'
|
| 4071 |
+
25: 1, # 'h'
|
| 4072 |
+
3: 1, # 'i'
|
| 4073 |
+
24: 0, # 'j'
|
| 4074 |
+
10: 2, # 'k'
|
| 4075 |
+
5: 2, # 'l'
|
| 4076 |
+
13: 3, # 'm'
|
| 4077 |
+
4: 0, # 'n'
|
| 4078 |
+
15: 0, # 'o'
|
| 4079 |
+
26: 1, # 'p'
|
| 4080 |
+
7: 3, # 'r'
|
| 4081 |
+
8: 0, # 's'
|
| 4082 |
+
9: 0, # 't'
|
| 4083 |
+
14: 3, # 'u'
|
| 4084 |
+
32: 0, # 'v'
|
| 4085 |
+
57: 0, # 'w'
|
| 4086 |
+
58: 0, # 'x'
|
| 4087 |
+
11: 0, # 'y'
|
| 4088 |
+
22: 2, # 'z'
|
| 4089 |
+
63: 0, # '·'
|
| 4090 |
+
54: 1, # 'Ç'
|
| 4091 |
+
50: 2, # 'Ö'
|
| 4092 |
+
55: 0, # 'Ü'
|
| 4093 |
+
59: 0, # 'â'
|
| 4094 |
+
33: 1, # 'ç'
|
| 4095 |
+
61: 1, # 'î'
|
| 4096 |
+
34: 2, # 'ö'
|
| 4097 |
+
17: 0, # 'ü'
|
| 4098 |
+
30: 1, # 'ğ'
|
| 4099 |
+
41: 1, # 'İ'
|
| 4100 |
+
6: 1, # 'ı'
|
| 4101 |
+
40: 1, # 'Ş'
|
| 4102 |
+
19: 1, # 'ş'
|
| 4103 |
+
},
|
| 4104 |
+
}
|
| 4105 |
+
|
| 4106 |
+
# 255: Undefined characters that did not exist in training text
|
| 4107 |
+
# 254: Carriage/Return
|
| 4108 |
+
# 253: symbol (punctuation) that does not belong to word
|
| 4109 |
+
# 252: 0 - 9
|
| 4110 |
+
# 251: Control characters
|
| 4111 |
+
|
| 4112 |
+
# Character Mapping Table(s):
|
| 4113 |
+
ISO_8859_9_TURKISH_CHAR_TO_ORDER = {
|
| 4114 |
+
0: 255, # '\x00'
|
| 4115 |
+
1: 255, # '\x01'
|
| 4116 |
+
2: 255, # '\x02'
|
| 4117 |
+
3: 255, # '\x03'
|
| 4118 |
+
4: 255, # '\x04'
|
| 4119 |
+
5: 255, # '\x05'
|
| 4120 |
+
6: 255, # '\x06'
|
| 4121 |
+
7: 255, # '\x07'
|
| 4122 |
+
8: 255, # '\x08'
|
| 4123 |
+
9: 255, # '\t'
|
| 4124 |
+
10: 255, # '\n'
|
| 4125 |
+
11: 255, # '\x0b'
|
| 4126 |
+
12: 255, # '\x0c'
|
| 4127 |
+
13: 255, # '\r'
|
| 4128 |
+
14: 255, # '\x0e'
|
| 4129 |
+
15: 255, # '\x0f'
|
| 4130 |
+
16: 255, # '\x10'
|
| 4131 |
+
17: 255, # '\x11'
|
| 4132 |
+
18: 255, # '\x12'
|
| 4133 |
+
19: 255, # '\x13'
|
| 4134 |
+
20: 255, # '\x14'
|
| 4135 |
+
21: 255, # '\x15'
|
| 4136 |
+
22: 255, # '\x16'
|
| 4137 |
+
23: 255, # '\x17'
|
| 4138 |
+
24: 255, # '\x18'
|
| 4139 |
+
25: 255, # '\x19'
|
| 4140 |
+
26: 255, # '\x1a'
|
| 4141 |
+
27: 255, # '\x1b'
|
| 4142 |
+
28: 255, # '\x1c'
|
| 4143 |
+
29: 255, # '\x1d'
|
| 4144 |
+
30: 255, # '\x1e'
|
| 4145 |
+
31: 255, # '\x1f'
|
| 4146 |
+
32: 255, # ' '
|
| 4147 |
+
33: 255, # '!'
|
| 4148 |
+
34: 255, # '"'
|
| 4149 |
+
35: 255, # '#'
|
| 4150 |
+
36: 255, # '$'
|
| 4151 |
+
37: 255, # '%'
|
| 4152 |
+
38: 255, # '&'
|
| 4153 |
+
39: 255, # "'"
|
| 4154 |
+
40: 255, # '('
|
| 4155 |
+
41: 255, # ')'
|
| 4156 |
+
42: 255, # '*'
|
| 4157 |
+
43: 255, # '+'
|
| 4158 |
+
44: 255, # ','
|
| 4159 |
+
45: 255, # '-'
|
| 4160 |
+
46: 255, # '.'
|
| 4161 |
+
47: 255, # '/'
|
| 4162 |
+
48: 255, # '0'
|
| 4163 |
+
49: 255, # '1'
|
| 4164 |
+
50: 255, # '2'
|
| 4165 |
+
51: 255, # '3'
|
| 4166 |
+
52: 255, # '4'
|
| 4167 |
+
53: 255, # '5'
|
| 4168 |
+
54: 255, # '6'
|
| 4169 |
+
55: 255, # '7'
|
| 4170 |
+
56: 255, # '8'
|
| 4171 |
+
57: 255, # '9'
|
| 4172 |
+
58: 255, # ':'
|
| 4173 |
+
59: 255, # ';'
|
| 4174 |
+
60: 255, # '<'
|
| 4175 |
+
61: 255, # '='
|
| 4176 |
+
62: 255, # '>'
|
| 4177 |
+
63: 255, # '?'
|
| 4178 |
+
64: 255, # '@'
|
| 4179 |
+
65: 23, # 'A'
|
| 4180 |
+
66: 37, # 'B'
|
| 4181 |
+
67: 47, # 'C'
|
| 4182 |
+
68: 39, # 'D'
|
| 4183 |
+
69: 29, # 'E'
|
| 4184 |
+
70: 52, # 'F'
|
| 4185 |
+
71: 36, # 'G'
|
| 4186 |
+
72: 45, # 'H'
|
| 4187 |
+
73: 53, # 'I'
|
| 4188 |
+
74: 60, # 'J'
|
| 4189 |
+
75: 16, # 'K'
|
| 4190 |
+
76: 49, # 'L'
|
| 4191 |
+
77: 20, # 'M'
|
| 4192 |
+
78: 46, # 'N'
|
| 4193 |
+
79: 42, # 'O'
|
| 4194 |
+
80: 48, # 'P'
|
| 4195 |
+
81: 69, # 'Q'
|
| 4196 |
+
82: 44, # 'R'
|
| 4197 |
+
83: 35, # 'S'
|
| 4198 |
+
84: 31, # 'T'
|
| 4199 |
+
85: 51, # 'U'
|
| 4200 |
+
86: 38, # 'V'
|
| 4201 |
+
87: 62, # 'W'
|
| 4202 |
+
88: 65, # 'X'
|
| 4203 |
+
89: 43, # 'Y'
|
| 4204 |
+
90: 56, # 'Z'
|
| 4205 |
+
91: 255, # '['
|
| 4206 |
+
92: 255, # '\\'
|
| 4207 |
+
93: 255, # ']'
|
| 4208 |
+
94: 255, # '^'
|
| 4209 |
+
95: 255, # '_'
|
| 4210 |
+
96: 255, # '`'
|
| 4211 |
+
97: 1, # 'a'
|
| 4212 |
+
98: 21, # 'b'
|
| 4213 |
+
99: 28, # 'c'
|
| 4214 |
+
100: 12, # 'd'
|
| 4215 |
+
101: 2, # 'e'
|
| 4216 |
+
102: 18, # 'f'
|
| 4217 |
+
103: 27, # 'g'
|
| 4218 |
+
104: 25, # 'h'
|
| 4219 |
+
105: 3, # 'i'
|
| 4220 |
+
106: 24, # 'j'
|
| 4221 |
+
107: 10, # 'k'
|
| 4222 |
+
108: 5, # 'l'
|
| 4223 |
+
109: 13, # 'm'
|
| 4224 |
+
110: 4, # 'n'
|
| 4225 |
+
111: 15, # 'o'
|
| 4226 |
+
112: 26, # 'p'
|
| 4227 |
+
113: 64, # 'q'
|
| 4228 |
+
114: 7, # 'r'
|
| 4229 |
+
115: 8, # 's'
|
| 4230 |
+
116: 9, # 't'
|
| 4231 |
+
117: 14, # 'u'
|
| 4232 |
+
118: 32, # 'v'
|
| 4233 |
+
119: 57, # 'w'
|
| 4234 |
+
120: 58, # 'x'
|
| 4235 |
+
121: 11, # 'y'
|
| 4236 |
+
122: 22, # 'z'
|
| 4237 |
+
123: 255, # '{'
|
| 4238 |
+
124: 255, # '|'
|
| 4239 |
+
125: 255, # '}'
|
| 4240 |
+
126: 255, # '~'
|
| 4241 |
+
127: 255, # '\x7f'
|
| 4242 |
+
128: 180, # '\x80'
|
| 4243 |
+
129: 179, # '\x81'
|
| 4244 |
+
130: 178, # '\x82'
|
| 4245 |
+
131: 177, # '\x83'
|
| 4246 |
+
132: 176, # '\x84'
|
| 4247 |
+
133: 175, # '\x85'
|
| 4248 |
+
134: 174, # '\x86'
|
| 4249 |
+
135: 173, # '\x87'
|
| 4250 |
+
136: 172, # '\x88'
|
| 4251 |
+
137: 171, # '\x89'
|
| 4252 |
+
138: 170, # '\x8a'
|
| 4253 |
+
139: 169, # '\x8b'
|
| 4254 |
+
140: 168, # '\x8c'
|
| 4255 |
+
141: 167, # '\x8d'
|
| 4256 |
+
142: 166, # '\x8e'
|
| 4257 |
+
143: 165, # '\x8f'
|
| 4258 |
+
144: 164, # '\x90'
|
| 4259 |
+
145: 163, # '\x91'
|
| 4260 |
+
146: 162, # '\x92'
|
| 4261 |
+
147: 161, # '\x93'
|
| 4262 |
+
148: 160, # '\x94'
|
| 4263 |
+
149: 159, # '\x95'
|
| 4264 |
+
150: 101, # '\x96'
|
| 4265 |
+
151: 158, # '\x97'
|
| 4266 |
+
152: 157, # '\x98'
|
| 4267 |
+
153: 156, # '\x99'
|
| 4268 |
+
154: 155, # '\x9a'
|
| 4269 |
+
155: 154, # '\x9b'
|
| 4270 |
+
156: 153, # '\x9c'
|
| 4271 |
+
157: 152, # '\x9d'
|
| 4272 |
+
158: 151, # '\x9e'
|
| 4273 |
+
159: 106, # '\x9f'
|
| 4274 |
+
160: 150, # '\xa0'
|
| 4275 |
+
161: 149, # '¡'
|
| 4276 |
+
162: 148, # '¢'
|
| 4277 |
+
163: 147, # '£'
|
| 4278 |
+
164: 146, # '¤'
|
| 4279 |
+
165: 145, # '¥'
|
| 4280 |
+
166: 144, # '¦'
|
| 4281 |
+
167: 100, # '§'
|
| 4282 |
+
168: 143, # '¨'
|
| 4283 |
+
169: 142, # '©'
|
| 4284 |
+
170: 141, # 'ª'
|
| 4285 |
+
171: 140, # '«'
|
| 4286 |
+
172: 139, # '¬'
|
| 4287 |
+
173: 138, # '\xad'
|
| 4288 |
+
174: 137, # '®'
|
| 4289 |
+
175: 136, # '¯'
|
| 4290 |
+
176: 94, # '°'
|
| 4291 |
+
177: 80, # '±'
|
| 4292 |
+
178: 93, # '²'
|
| 4293 |
+
179: 135, # '³'
|
| 4294 |
+
180: 105, # '´'
|
| 4295 |
+
181: 134, # 'µ'
|
| 4296 |
+
182: 133, # '¶'
|
| 4297 |
+
183: 63, # '·'
|
| 4298 |
+
184: 132, # '¸'
|
| 4299 |
+
185: 131, # '¹'
|
| 4300 |
+
186: 130, # 'º'
|
| 4301 |
+
187: 129, # '»'
|
| 4302 |
+
188: 128, # '¼'
|
| 4303 |
+
189: 127, # '½'
|
| 4304 |
+
190: 126, # '¾'
|
| 4305 |
+
191: 125, # '¿'
|
| 4306 |
+
192: 124, # 'À'
|
| 4307 |
+
193: 104, # 'Á'
|
| 4308 |
+
194: 73, # 'Â'
|
| 4309 |
+
195: 99, # 'Ã'
|
| 4310 |
+
196: 79, # 'Ä'
|
| 4311 |
+
197: 85, # 'Å'
|
| 4312 |
+
198: 123, # 'Æ'
|
| 4313 |
+
199: 54, # 'Ç'
|
| 4314 |
+
200: 122, # 'È'
|
| 4315 |
+
201: 98, # 'É'
|
| 4316 |
+
202: 92, # 'Ê'
|
| 4317 |
+
203: 121, # 'Ë'
|
| 4318 |
+
204: 120, # 'Ì'
|
| 4319 |
+
205: 91, # 'Í'
|
| 4320 |
+
206: 103, # 'Î'
|
| 4321 |
+
207: 119, # 'Ï'
|
| 4322 |
+
208: 68, # 'Ğ'
|
| 4323 |
+
209: 118, # 'Ñ'
|
| 4324 |
+
210: 117, # 'Ò'
|
| 4325 |
+
211: 97, # 'Ó'
|
| 4326 |
+
212: 116, # 'Ô'
|
| 4327 |
+
213: 115, # 'Õ'
|
| 4328 |
+
214: 50, # 'Ö'
|
| 4329 |
+
215: 90, # '×'
|
| 4330 |
+
216: 114, # 'Ø'
|
| 4331 |
+
217: 113, # 'Ù'
|
| 4332 |
+
218: 112, # 'Ú'
|
| 4333 |
+
219: 111, # 'Û'
|
| 4334 |
+
220: 55, # 'Ü'
|
| 4335 |
+
221: 41, # 'İ'
|
| 4336 |
+
222: 40, # 'Ş'
|
| 4337 |
+
223: 86, # 'ß'
|
| 4338 |
+
224: 89, # 'à'
|
| 4339 |
+
225: 70, # 'á'
|
| 4340 |
+
226: 59, # 'â'
|
| 4341 |
+
227: 78, # 'ã'
|
| 4342 |
+
228: 71, # 'ä'
|
| 4343 |
+
229: 82, # 'å'
|
| 4344 |
+
230: 88, # 'æ'
|
| 4345 |
+
231: 33, # 'ç'
|
| 4346 |
+
232: 77, # 'è'
|
| 4347 |
+
233: 66, # 'é'
|
| 4348 |
+
234: 84, # 'ê'
|
| 4349 |
+
235: 83, # 'ë'
|
| 4350 |
+
236: 110, # 'ì'
|
| 4351 |
+
237: 75, # 'í'
|
| 4352 |
+
238: 61, # 'î'
|
| 4353 |
+
239: 96, # 'ï'
|
| 4354 |
+
240: 30, # 'ğ'
|
| 4355 |
+
241: 67, # 'ñ'
|
| 4356 |
+
242: 109, # 'ò'
|
| 4357 |
+
243: 74, # 'ó'
|
| 4358 |
+
244: 87, # 'ô'
|
| 4359 |
+
245: 102, # 'õ'
|
| 4360 |
+
246: 34, # 'ö'
|
| 4361 |
+
247: 95, # '÷'
|
| 4362 |
+
248: 81, # 'ø'
|
| 4363 |
+
249: 108, # 'ù'
|
| 4364 |
+
250: 76, # 'ú'
|
| 4365 |
+
251: 72, # 'û'
|
| 4366 |
+
252: 17, # 'ü'
|
| 4367 |
+
253: 6, # 'ı'
|
| 4368 |
+
254: 19, # 'ş'
|
| 4369 |
+
255: 107, # 'ÿ'
|
| 4370 |
+
}
|
| 4371 |
+
|
| 4372 |
+
ISO_8859_9_TURKISH_MODEL = SingleByteCharSetModel(
|
| 4373 |
+
charset_name="ISO-8859-9",
|
| 4374 |
+
language="Turkish",
|
| 4375 |
+
char_to_order_map=ISO_8859_9_TURKISH_CHAR_TO_ORDER,
|
| 4376 |
+
language_model=TURKISH_LANG_MODEL,
|
| 4377 |
+
typical_positive_ratio=0.97029,
|
| 4378 |
+
keep_ascii_letters=True,
|
| 4379 |
+
alphabet="ABCDEFGHIJKLMNOPRSTUVYZabcdefghijklmnoprstuvyzÂÇÎÖÛÜâçîöûüĞğİıŞş",
|
| 4380 |
+
)
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/latin1prober.py
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
# Shy Shalom - original C code
|
| 12 |
+
#
|
| 13 |
+
# This library is free software; you can redistribute it and/or
|
| 14 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 15 |
+
# License as published by the Free Software Foundation; either
|
| 16 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 17 |
+
#
|
| 18 |
+
# This library is distributed in the hope that it will be useful,
|
| 19 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 20 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 21 |
+
# Lesser General Public License for more details.
|
| 22 |
+
#
|
| 23 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 24 |
+
# License along with this library; if not, write to the Free Software
|
| 25 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 26 |
+
# 02110-1301 USA
|
| 27 |
+
######################### END LICENSE BLOCK #########################
|
| 28 |
+
|
| 29 |
+
from typing import List, Union
|
| 30 |
+
|
| 31 |
+
from .charsetprober import CharSetProber
|
| 32 |
+
from .enums import ProbingState
|
| 33 |
+
|
| 34 |
+
FREQ_CAT_NUM = 4
|
| 35 |
+
|
| 36 |
+
UDF = 0 # undefined
|
| 37 |
+
OTH = 1 # other
|
| 38 |
+
ASC = 2 # ascii capital letter
|
| 39 |
+
ASS = 3 # ascii small letter
|
| 40 |
+
ACV = 4 # accent capital vowel
|
| 41 |
+
ACO = 5 # accent capital other
|
| 42 |
+
ASV = 6 # accent small vowel
|
| 43 |
+
ASO = 7 # accent small other
|
| 44 |
+
CLASS_NUM = 8 # total classes
|
| 45 |
+
|
| 46 |
+
# fmt: off
|
| 47 |
+
Latin1_CharToClass = (
|
| 48 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07
|
| 49 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F
|
| 50 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17
|
| 51 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F
|
| 52 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27
|
| 53 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F
|
| 54 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37
|
| 55 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F
|
| 56 |
+
OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47
|
| 57 |
+
ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F
|
| 58 |
+
ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57
|
| 59 |
+
ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F
|
| 60 |
+
OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67
|
| 61 |
+
ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F
|
| 62 |
+
ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77
|
| 63 |
+
ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F
|
| 64 |
+
OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87
|
| 65 |
+
OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F
|
| 66 |
+
UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97
|
| 67 |
+
OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F
|
| 68 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7
|
| 69 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF
|
| 70 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7
|
| 71 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF
|
| 72 |
+
ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7
|
| 73 |
+
ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF
|
| 74 |
+
ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7
|
| 75 |
+
ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF
|
| 76 |
+
ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7
|
| 77 |
+
ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF
|
| 78 |
+
ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7
|
| 79 |
+
ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF
|
| 80 |
+
)
|
| 81 |
+
|
| 82 |
+
# 0 : illegal
|
| 83 |
+
# 1 : very unlikely
|
| 84 |
+
# 2 : normal
|
| 85 |
+
# 3 : very likely
|
| 86 |
+
Latin1ClassModel = (
|
| 87 |
+
# UDF OTH ASC ASS ACV ACO ASV ASO
|
| 88 |
+
0, 0, 0, 0, 0, 0, 0, 0, # UDF
|
| 89 |
+
0, 3, 3, 3, 3, 3, 3, 3, # OTH
|
| 90 |
+
0, 3, 3, 3, 3, 3, 3, 3, # ASC
|
| 91 |
+
0, 3, 3, 3, 1, 1, 3, 3, # ASS
|
| 92 |
+
0, 3, 3, 3, 1, 2, 1, 2, # ACV
|
| 93 |
+
0, 3, 3, 3, 3, 3, 3, 3, # ACO
|
| 94 |
+
0, 3, 1, 3, 1, 1, 1, 3, # ASV
|
| 95 |
+
0, 3, 1, 3, 1, 1, 3, 3, # ASO
|
| 96 |
+
)
|
| 97 |
+
# fmt: on
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
class Latin1Prober(CharSetProber):
|
| 101 |
+
def __init__(self) -> None:
|
| 102 |
+
super().__init__()
|
| 103 |
+
self._last_char_class = OTH
|
| 104 |
+
self._freq_counter: List[int] = []
|
| 105 |
+
self.reset()
|
| 106 |
+
|
| 107 |
+
def reset(self) -> None:
|
| 108 |
+
self._last_char_class = OTH
|
| 109 |
+
self._freq_counter = [0] * FREQ_CAT_NUM
|
| 110 |
+
super().reset()
|
| 111 |
+
|
| 112 |
+
@property
|
| 113 |
+
def charset_name(self) -> str:
|
| 114 |
+
return "ISO-8859-1"
|
| 115 |
+
|
| 116 |
+
@property
|
| 117 |
+
def language(self) -> str:
|
| 118 |
+
return ""
|
| 119 |
+
|
| 120 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 121 |
+
byte_str = self.remove_xml_tags(byte_str)
|
| 122 |
+
for c in byte_str:
|
| 123 |
+
char_class = Latin1_CharToClass[c]
|
| 124 |
+
freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + char_class]
|
| 125 |
+
if freq == 0:
|
| 126 |
+
self._state = ProbingState.NOT_ME
|
| 127 |
+
break
|
| 128 |
+
self._freq_counter[freq] += 1
|
| 129 |
+
self._last_char_class = char_class
|
| 130 |
+
|
| 131 |
+
return self.state
|
| 132 |
+
|
| 133 |
+
def get_confidence(self) -> float:
|
| 134 |
+
if self.state == ProbingState.NOT_ME:
|
| 135 |
+
return 0.01
|
| 136 |
+
|
| 137 |
+
total = sum(self._freq_counter)
|
| 138 |
+
confidence = (
|
| 139 |
+
0.0
|
| 140 |
+
if total < 0.01
|
| 141 |
+
else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total
|
| 142 |
+
)
|
| 143 |
+
confidence = max(confidence, 0.0)
|
| 144 |
+
# lower the confidence of latin1 so that other more accurate
|
| 145 |
+
# detector can take priority.
|
| 146 |
+
confidence *= 0.73
|
| 147 |
+
return confidence
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/macromanprober.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# This code was modified from latin1prober.py by Rob Speer <rob@lumino.so>.
|
| 3 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 4 |
+
#
|
| 5 |
+
# The Initial Developer of the Original Code is
|
| 6 |
+
# Netscape Communications Corporation.
|
| 7 |
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
| 8 |
+
# the Initial Developer. All Rights Reserved.
|
| 9 |
+
#
|
| 10 |
+
# Contributor(s):
|
| 11 |
+
# Rob Speer - adapt to MacRoman encoding
|
| 12 |
+
# Mark Pilgrim - port to Python
|
| 13 |
+
# Shy Shalom - original C code
|
| 14 |
+
#
|
| 15 |
+
# This library is free software; you can redistribute it and/or
|
| 16 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 17 |
+
# License as published by the Free Software Foundation; either
|
| 18 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 19 |
+
#
|
| 20 |
+
# This library is distributed in the hope that it will be useful,
|
| 21 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 22 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 23 |
+
# Lesser General Public License for more details.
|
| 24 |
+
#
|
| 25 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 26 |
+
# License along with this library; if not, write to the Free Software
|
| 27 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 28 |
+
# 02110-1301 USA
|
| 29 |
+
######################### END LICENSE BLOCK #########################
|
| 30 |
+
|
| 31 |
+
from typing import List, Union
|
| 32 |
+
|
| 33 |
+
from .charsetprober import CharSetProber
|
| 34 |
+
from .enums import ProbingState
|
| 35 |
+
|
| 36 |
+
FREQ_CAT_NUM = 4
|
| 37 |
+
|
| 38 |
+
UDF = 0 # undefined
|
| 39 |
+
OTH = 1 # other
|
| 40 |
+
ASC = 2 # ascii capital letter
|
| 41 |
+
ASS = 3 # ascii small letter
|
| 42 |
+
ACV = 4 # accent capital vowel
|
| 43 |
+
ACO = 5 # accent capital other
|
| 44 |
+
ASV = 6 # accent small vowel
|
| 45 |
+
ASO = 7 # accent small other
|
| 46 |
+
ODD = 8 # character that is unlikely to appear
|
| 47 |
+
CLASS_NUM = 9 # total classes
|
| 48 |
+
|
| 49 |
+
# The change from Latin1 is that we explicitly look for extended characters
|
| 50 |
+
# that are infrequently-occurring symbols, and consider them to always be
|
| 51 |
+
# improbable. This should let MacRoman get out of the way of more likely
|
| 52 |
+
# encodings in most situations.
|
| 53 |
+
|
| 54 |
+
# fmt: off
|
| 55 |
+
MacRoman_CharToClass = (
|
| 56 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07
|
| 57 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F
|
| 58 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17
|
| 59 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F
|
| 60 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27
|
| 61 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F
|
| 62 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37
|
| 63 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F
|
| 64 |
+
OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47
|
| 65 |
+
ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F
|
| 66 |
+
ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57
|
| 67 |
+
ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F
|
| 68 |
+
OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67
|
| 69 |
+
ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F
|
| 70 |
+
ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77
|
| 71 |
+
ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F
|
| 72 |
+
ACV, ACV, ACO, ACV, ACO, ACV, ACV, ASV, # 80 - 87
|
| 73 |
+
ASV, ASV, ASV, ASV, ASV, ASO, ASV, ASV, # 88 - 8F
|
| 74 |
+
ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASV, # 90 - 97
|
| 75 |
+
ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # 98 - 9F
|
| 76 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, ASO, # A0 - A7
|
| 77 |
+
OTH, OTH, ODD, ODD, OTH, OTH, ACV, ACV, # A8 - AF
|
| 78 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7
|
| 79 |
+
OTH, OTH, OTH, OTH, OTH, OTH, ASV, ASV, # B8 - BF
|
| 80 |
+
OTH, OTH, ODD, OTH, ODD, OTH, OTH, OTH, # C0 - C7
|
| 81 |
+
OTH, OTH, OTH, ACV, ACV, ACV, ACV, ASV, # C8 - CF
|
| 82 |
+
OTH, OTH, OTH, OTH, OTH, OTH, OTH, ODD, # D0 - D7
|
| 83 |
+
ASV, ACV, ODD, OTH, OTH, OTH, OTH, OTH, # D8 - DF
|
| 84 |
+
OTH, OTH, OTH, OTH, OTH, ACV, ACV, ACV, # E0 - E7
|
| 85 |
+
ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # E8 - EF
|
| 86 |
+
ODD, ACV, ACV, ACV, ACV, ASV, ODD, ODD, # F0 - F7
|
| 87 |
+
ODD, ODD, ODD, ODD, ODD, ODD, ODD, ODD, # F8 - FF
|
| 88 |
+
)
|
| 89 |
+
|
| 90 |
+
# 0 : illegal
|
| 91 |
+
# 1 : very unlikely
|
| 92 |
+
# 2 : normal
|
| 93 |
+
# 3 : very likely
|
| 94 |
+
MacRomanClassModel = (
|
| 95 |
+
# UDF OTH ASC ASS ACV ACO ASV ASO ODD
|
| 96 |
+
0, 0, 0, 0, 0, 0, 0, 0, 0, # UDF
|
| 97 |
+
0, 3, 3, 3, 3, 3, 3, 3, 1, # OTH
|
| 98 |
+
0, 3, 3, 3, 3, 3, 3, 3, 1, # ASC
|
| 99 |
+
0, 3, 3, 3, 1, 1, 3, 3, 1, # ASS
|
| 100 |
+
0, 3, 3, 3, 1, 2, 1, 2, 1, # ACV
|
| 101 |
+
0, 3, 3, 3, 3, 3, 3, 3, 1, # ACO
|
| 102 |
+
0, 3, 1, 3, 1, 1, 1, 3, 1, # ASV
|
| 103 |
+
0, 3, 1, 3, 1, 1, 3, 3, 1, # ASO
|
| 104 |
+
0, 1, 1, 1, 1, 1, 1, 1, 1, # ODD
|
| 105 |
+
)
|
| 106 |
+
# fmt: on
|
| 107 |
+
|
| 108 |
+
|
| 109 |
+
class MacRomanProber(CharSetProber):
|
| 110 |
+
def __init__(self) -> None:
|
| 111 |
+
super().__init__()
|
| 112 |
+
self._last_char_class = OTH
|
| 113 |
+
self._freq_counter: List[int] = []
|
| 114 |
+
self.reset()
|
| 115 |
+
|
| 116 |
+
def reset(self) -> None:
|
| 117 |
+
self._last_char_class = OTH
|
| 118 |
+
self._freq_counter = [0] * FREQ_CAT_NUM
|
| 119 |
+
|
| 120 |
+
# express the prior that MacRoman is a somewhat rare encoding;
|
| 121 |
+
# this can be done by starting out in a slightly improbable state
|
| 122 |
+
# that must be overcome
|
| 123 |
+
self._freq_counter[2] = 10
|
| 124 |
+
|
| 125 |
+
super().reset()
|
| 126 |
+
|
| 127 |
+
@property
|
| 128 |
+
def charset_name(self) -> str:
|
| 129 |
+
return "MacRoman"
|
| 130 |
+
|
| 131 |
+
@property
|
| 132 |
+
def language(self) -> str:
|
| 133 |
+
return ""
|
| 134 |
+
|
| 135 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 136 |
+
byte_str = self.remove_xml_tags(byte_str)
|
| 137 |
+
for c in byte_str:
|
| 138 |
+
char_class = MacRoman_CharToClass[c]
|
| 139 |
+
freq = MacRomanClassModel[(self._last_char_class * CLASS_NUM) + char_class]
|
| 140 |
+
if freq == 0:
|
| 141 |
+
self._state = ProbingState.NOT_ME
|
| 142 |
+
break
|
| 143 |
+
self._freq_counter[freq] += 1
|
| 144 |
+
self._last_char_class = char_class
|
| 145 |
+
|
| 146 |
+
return self.state
|
| 147 |
+
|
| 148 |
+
def get_confidence(self) -> float:
|
| 149 |
+
if self.state == ProbingState.NOT_ME:
|
| 150 |
+
return 0.01
|
| 151 |
+
|
| 152 |
+
total = sum(self._freq_counter)
|
| 153 |
+
confidence = (
|
| 154 |
+
0.0
|
| 155 |
+
if total < 0.01
|
| 156 |
+
else (self._freq_counter[3] - self._freq_counter[1] * 20.0) / total
|
| 157 |
+
)
|
| 158 |
+
confidence = max(confidence, 0.0)
|
| 159 |
+
# lower the confidence of MacRoman so that other more accurate
|
| 160 |
+
# detector can take priority.
|
| 161 |
+
confidence *= 0.73
|
| 162 |
+
return confidence
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcharsetprober.py
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
# Shy Shalom - original C code
|
| 12 |
+
# Proofpoint, Inc.
|
| 13 |
+
#
|
| 14 |
+
# This library is free software; you can redistribute it and/or
|
| 15 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 16 |
+
# License as published by the Free Software Foundation; either
|
| 17 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 18 |
+
#
|
| 19 |
+
# This library is distributed in the hope that it will be useful,
|
| 20 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 21 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 22 |
+
# Lesser General Public License for more details.
|
| 23 |
+
#
|
| 24 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 25 |
+
# License along with this library; if not, write to the Free Software
|
| 26 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 27 |
+
# 02110-1301 USA
|
| 28 |
+
######################### END LICENSE BLOCK #########################
|
| 29 |
+
|
| 30 |
+
from typing import Optional, Union
|
| 31 |
+
|
| 32 |
+
from .chardistribution import CharDistributionAnalysis
|
| 33 |
+
from .charsetprober import CharSetProber
|
| 34 |
+
from .codingstatemachine import CodingStateMachine
|
| 35 |
+
from .enums import LanguageFilter, MachineState, ProbingState
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
class MultiByteCharSetProber(CharSetProber):
|
| 39 |
+
"""
|
| 40 |
+
MultiByteCharSetProber
|
| 41 |
+
"""
|
| 42 |
+
|
| 43 |
+
def __init__(self, lang_filter: LanguageFilter = LanguageFilter.NONE) -> None:
|
| 44 |
+
super().__init__(lang_filter=lang_filter)
|
| 45 |
+
self.distribution_analyzer: Optional[CharDistributionAnalysis] = None
|
| 46 |
+
self.coding_sm: Optional[CodingStateMachine] = None
|
| 47 |
+
self._last_char = bytearray(b"\0\0")
|
| 48 |
+
|
| 49 |
+
def reset(self) -> None:
|
| 50 |
+
super().reset()
|
| 51 |
+
if self.coding_sm:
|
| 52 |
+
self.coding_sm.reset()
|
| 53 |
+
if self.distribution_analyzer:
|
| 54 |
+
self.distribution_analyzer.reset()
|
| 55 |
+
self._last_char = bytearray(b"\0\0")
|
| 56 |
+
|
| 57 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 58 |
+
assert self.coding_sm is not None
|
| 59 |
+
assert self.distribution_analyzer is not None
|
| 60 |
+
|
| 61 |
+
for i, byte in enumerate(byte_str):
|
| 62 |
+
coding_state = self.coding_sm.next_state(byte)
|
| 63 |
+
if coding_state == MachineState.ERROR:
|
| 64 |
+
self.logger.debug(
|
| 65 |
+
"%s %s prober hit error at byte %s",
|
| 66 |
+
self.charset_name,
|
| 67 |
+
self.language,
|
| 68 |
+
i,
|
| 69 |
+
)
|
| 70 |
+
self._state = ProbingState.NOT_ME
|
| 71 |
+
break
|
| 72 |
+
if coding_state == MachineState.ITS_ME:
|
| 73 |
+
self._state = ProbingState.FOUND_IT
|
| 74 |
+
break
|
| 75 |
+
if coding_state == MachineState.START:
|
| 76 |
+
char_len = self.coding_sm.get_current_charlen()
|
| 77 |
+
if i == 0:
|
| 78 |
+
self._last_char[1] = byte
|
| 79 |
+
self.distribution_analyzer.feed(self._last_char, char_len)
|
| 80 |
+
else:
|
| 81 |
+
self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len)
|
| 82 |
+
|
| 83 |
+
self._last_char[0] = byte_str[-1]
|
| 84 |
+
|
| 85 |
+
if self.state == ProbingState.DETECTING:
|
| 86 |
+
if self.distribution_analyzer.got_enough_data() and (
|
| 87 |
+
self.get_confidence() > self.SHORTCUT_THRESHOLD
|
| 88 |
+
):
|
| 89 |
+
self._state = ProbingState.FOUND_IT
|
| 90 |
+
|
| 91 |
+
return self.state
|
| 92 |
+
|
| 93 |
+
def get_confidence(self) -> float:
|
| 94 |
+
assert self.distribution_analyzer is not None
|
| 95 |
+
return self.distribution_analyzer.get_confidence()
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/mbcssm.py
ADDED
|
@@ -0,0 +1,661 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from .codingstatemachinedict import CodingStateMachineDict
|
| 29 |
+
from .enums import MachineState
|
| 30 |
+
|
| 31 |
+
# BIG5
|
| 32 |
+
|
| 33 |
+
# fmt: off
|
| 34 |
+
BIG5_CLS = (
|
| 35 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 #allow 0x00 as legal value
|
| 36 |
+
1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f
|
| 37 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17
|
| 38 |
+
1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f
|
| 39 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27
|
| 40 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f
|
| 41 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37
|
| 42 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f
|
| 43 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47
|
| 44 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f
|
| 45 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57
|
| 46 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f
|
| 47 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67
|
| 48 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f
|
| 49 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77
|
| 50 |
+
2, 2, 2, 2, 2, 2, 2, 1, # 78 - 7f
|
| 51 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 80 - 87
|
| 52 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 88 - 8f
|
| 53 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 90 - 97
|
| 54 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 98 - 9f
|
| 55 |
+
4, 3, 3, 3, 3, 3, 3, 3, # a0 - a7
|
| 56 |
+
3, 3, 3, 3, 3, 3, 3, 3, # a8 - af
|
| 57 |
+
3, 3, 3, 3, 3, 3, 3, 3, # b0 - b7
|
| 58 |
+
3, 3, 3, 3, 3, 3, 3, 3, # b8 - bf
|
| 59 |
+
3, 3, 3, 3, 3, 3, 3, 3, # c0 - c7
|
| 60 |
+
3, 3, 3, 3, 3, 3, 3, 3, # c8 - cf
|
| 61 |
+
3, 3, 3, 3, 3, 3, 3, 3, # d0 - d7
|
| 62 |
+
3, 3, 3, 3, 3, 3, 3, 3, # d8 - df
|
| 63 |
+
3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7
|
| 64 |
+
3, 3, 3, 3, 3, 3, 3, 3, # e8 - ef
|
| 65 |
+
3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7
|
| 66 |
+
3, 3, 3, 3, 3, 3, 3, 0 # f8 - ff
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
BIG5_ST = (
|
| 70 |
+
MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 71 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f
|
| 72 |
+
MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17
|
| 73 |
+
)
|
| 74 |
+
# fmt: on
|
| 75 |
+
|
| 76 |
+
BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0)
|
| 77 |
+
|
| 78 |
+
BIG5_SM_MODEL: CodingStateMachineDict = {
|
| 79 |
+
"class_table": BIG5_CLS,
|
| 80 |
+
"class_factor": 5,
|
| 81 |
+
"state_table": BIG5_ST,
|
| 82 |
+
"char_len_table": BIG5_CHAR_LEN_TABLE,
|
| 83 |
+
"name": "Big5",
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
# CP949
|
| 87 |
+
# fmt: off
|
| 88 |
+
CP949_CLS = (
|
| 89 |
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, # 00 - 0f
|
| 90 |
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, # 10 - 1f
|
| 91 |
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, # 20 - 2f
|
| 92 |
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, # 30 - 3f
|
| 93 |
+
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, # 40 - 4f
|
| 94 |
+
4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, # 50 - 5f
|
| 95 |
+
1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, # 60 - 6f
|
| 96 |
+
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, # 70 - 7f
|
| 97 |
+
0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, # 80 - 8f
|
| 98 |
+
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, # 90 - 9f
|
| 99 |
+
6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, # a0 - af
|
| 100 |
+
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, # b0 - bf
|
| 101 |
+
7, 7, 7, 7, 7, 7, 9, 2, 2, 3, 2, 2, 2, 2, 2, 2, # c0 - cf
|
| 102 |
+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, # d0 - df
|
| 103 |
+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, # e0 - ef
|
| 104 |
+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, # f0 - ff
|
| 105 |
+
)
|
| 106 |
+
|
| 107 |
+
CP949_ST = (
|
| 108 |
+
#cls= 0 1 2 3 4 5 6 7 8 9 # previous state =
|
| 109 |
+
MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START
|
| 110 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR
|
| 111 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME
|
| 112 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3
|
| 113 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4
|
| 114 |
+
MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5
|
| 115 |
+
MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6
|
| 116 |
+
)
|
| 117 |
+
# fmt: on
|
| 118 |
+
|
| 119 |
+
CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2)
|
| 120 |
+
|
| 121 |
+
CP949_SM_MODEL: CodingStateMachineDict = {
|
| 122 |
+
"class_table": CP949_CLS,
|
| 123 |
+
"class_factor": 10,
|
| 124 |
+
"state_table": CP949_ST,
|
| 125 |
+
"char_len_table": CP949_CHAR_LEN_TABLE,
|
| 126 |
+
"name": "CP949",
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
# EUC-JP
|
| 130 |
+
# fmt: off
|
| 131 |
+
EUCJP_CLS = (
|
| 132 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 00 - 07
|
| 133 |
+
4, 4, 4, 4, 4, 4, 5, 5, # 08 - 0f
|
| 134 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 10 - 17
|
| 135 |
+
4, 4, 4, 5, 4, 4, 4, 4, # 18 - 1f
|
| 136 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 20 - 27
|
| 137 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 28 - 2f
|
| 138 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 30 - 37
|
| 139 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 38 - 3f
|
| 140 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 40 - 47
|
| 141 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 48 - 4f
|
| 142 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 50 - 57
|
| 143 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 58 - 5f
|
| 144 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 60 - 67
|
| 145 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 68 - 6f
|
| 146 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 70 - 77
|
| 147 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 78 - 7f
|
| 148 |
+
5, 5, 5, 5, 5, 5, 5, 5, # 80 - 87
|
| 149 |
+
5, 5, 5, 5, 5, 5, 1, 3, # 88 - 8f
|
| 150 |
+
5, 5, 5, 5, 5, 5, 5, 5, # 90 - 97
|
| 151 |
+
5, 5, 5, 5, 5, 5, 5, 5, # 98 - 9f
|
| 152 |
+
5, 2, 2, 2, 2, 2, 2, 2, # a0 - a7
|
| 153 |
+
2, 2, 2, 2, 2, 2, 2, 2, # a8 - af
|
| 154 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7
|
| 155 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf
|
| 156 |
+
2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7
|
| 157 |
+
2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf
|
| 158 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7
|
| 159 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d8 - df
|
| 160 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7
|
| 161 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef
|
| 162 |
+
0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7
|
| 163 |
+
0, 0, 0, 0, 0, 0, 0, 5 # f8 - ff
|
| 164 |
+
)
|
| 165 |
+
|
| 166 |
+
EUCJP_ST = (
|
| 167 |
+
3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 168 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 169 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17
|
| 170 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f
|
| 171 |
+
3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27
|
| 172 |
+
)
|
| 173 |
+
# fmt: on
|
| 174 |
+
|
| 175 |
+
EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0)
|
| 176 |
+
|
| 177 |
+
EUCJP_SM_MODEL: CodingStateMachineDict = {
|
| 178 |
+
"class_table": EUCJP_CLS,
|
| 179 |
+
"class_factor": 6,
|
| 180 |
+
"state_table": EUCJP_ST,
|
| 181 |
+
"char_len_table": EUCJP_CHAR_LEN_TABLE,
|
| 182 |
+
"name": "EUC-JP",
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
# EUC-KR
|
| 186 |
+
# fmt: off
|
| 187 |
+
EUCKR_CLS = (
|
| 188 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07
|
| 189 |
+
1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f
|
| 190 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17
|
| 191 |
+
1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f
|
| 192 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27
|
| 193 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f
|
| 194 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37
|
| 195 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f
|
| 196 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 40 - 47
|
| 197 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 48 - 4f
|
| 198 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 50 - 57
|
| 199 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 58 - 5f
|
| 200 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 60 - 67
|
| 201 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 68 - 6f
|
| 202 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 70 - 77
|
| 203 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 78 - 7f
|
| 204 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87
|
| 205 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f
|
| 206 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97
|
| 207 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f
|
| 208 |
+
0, 2, 2, 2, 2, 2, 2, 2, # a0 - a7
|
| 209 |
+
2, 2, 2, 2, 2, 3, 3, 3, # a8 - af
|
| 210 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7
|
| 211 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf
|
| 212 |
+
2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7
|
| 213 |
+
2, 3, 2, 2, 2, 2, 2, 2, # c8 - cf
|
| 214 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7
|
| 215 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d8 - df
|
| 216 |
+
2, 2, 2, 2, 2, 2, 2, 2, # e0 - e7
|
| 217 |
+
2, 2, 2, 2, 2, 2, 2, 2, # e8 - ef
|
| 218 |
+
2, 2, 2, 2, 2, 2, 2, 2, # f0 - f7
|
| 219 |
+
2, 2, 2, 2, 2, 2, 2, 0 # f8 - ff
|
| 220 |
+
)
|
| 221 |
+
|
| 222 |
+
EUCKR_ST = (
|
| 223 |
+
MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 224 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f
|
| 225 |
+
)
|
| 226 |
+
# fmt: on
|
| 227 |
+
|
| 228 |
+
EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0)
|
| 229 |
+
|
| 230 |
+
EUCKR_SM_MODEL: CodingStateMachineDict = {
|
| 231 |
+
"class_table": EUCKR_CLS,
|
| 232 |
+
"class_factor": 4,
|
| 233 |
+
"state_table": EUCKR_ST,
|
| 234 |
+
"char_len_table": EUCKR_CHAR_LEN_TABLE,
|
| 235 |
+
"name": "EUC-KR",
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
# JOHAB
|
| 239 |
+
# fmt: off
|
| 240 |
+
JOHAB_CLS = (
|
| 241 |
+
4,4,4,4,4,4,4,4, # 00 - 07
|
| 242 |
+
4,4,4,4,4,4,0,0, # 08 - 0f
|
| 243 |
+
4,4,4,4,4,4,4,4, # 10 - 17
|
| 244 |
+
4,4,4,0,4,4,4,4, # 18 - 1f
|
| 245 |
+
4,4,4,4,4,4,4,4, # 20 - 27
|
| 246 |
+
4,4,4,4,4,4,4,4, # 28 - 2f
|
| 247 |
+
4,3,3,3,3,3,3,3, # 30 - 37
|
| 248 |
+
3,3,3,3,3,3,3,3, # 38 - 3f
|
| 249 |
+
3,1,1,1,1,1,1,1, # 40 - 47
|
| 250 |
+
1,1,1,1,1,1,1,1, # 48 - 4f
|
| 251 |
+
1,1,1,1,1,1,1,1, # 50 - 57
|
| 252 |
+
1,1,1,1,1,1,1,1, # 58 - 5f
|
| 253 |
+
1,1,1,1,1,1,1,1, # 60 - 67
|
| 254 |
+
1,1,1,1,1,1,1,1, # 68 - 6f
|
| 255 |
+
1,1,1,1,1,1,1,1, # 70 - 77
|
| 256 |
+
1,1,1,1,1,1,1,2, # 78 - 7f
|
| 257 |
+
6,6,6,6,8,8,8,8, # 80 - 87
|
| 258 |
+
8,8,8,8,8,8,8,8, # 88 - 8f
|
| 259 |
+
8,7,7,7,7,7,7,7, # 90 - 97
|
| 260 |
+
7,7,7,7,7,7,7,7, # 98 - 9f
|
| 261 |
+
7,7,7,7,7,7,7,7, # a0 - a7
|
| 262 |
+
7,7,7,7,7,7,7,7, # a8 - af
|
| 263 |
+
7,7,7,7,7,7,7,7, # b0 - b7
|
| 264 |
+
7,7,7,7,7,7,7,7, # b8 - bf
|
| 265 |
+
7,7,7,7,7,7,7,7, # c0 - c7
|
| 266 |
+
7,7,7,7,7,7,7,7, # c8 - cf
|
| 267 |
+
7,7,7,7,5,5,5,5, # d0 - d7
|
| 268 |
+
5,9,9,9,9,9,9,5, # d8 - df
|
| 269 |
+
9,9,9,9,9,9,9,9, # e0 - e7
|
| 270 |
+
9,9,9,9,9,9,9,9, # e8 - ef
|
| 271 |
+
9,9,9,9,9,9,9,9, # f0 - f7
|
| 272 |
+
9,9,5,5,5,5,5,0 # f8 - ff
|
| 273 |
+
)
|
| 274 |
+
|
| 275 |
+
JOHAB_ST = (
|
| 276 |
+
# cls = 0 1 2 3 4 5 6 7 8 9
|
| 277 |
+
MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,3 ,3 ,4 , # MachineState.START
|
| 278 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME
|
| 279 |
+
MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR ,MachineState.ERROR , # MachineState.ERROR
|
| 280 |
+
MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.ERROR ,MachineState.ERROR ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START ,MachineState.START , # 3
|
| 281 |
+
MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START ,MachineState.ERROR ,MachineState.START , # 4
|
| 282 |
+
)
|
| 283 |
+
# fmt: on
|
| 284 |
+
|
| 285 |
+
JOHAB_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 0, 0, 2, 2, 2)
|
| 286 |
+
|
| 287 |
+
JOHAB_SM_MODEL: CodingStateMachineDict = {
|
| 288 |
+
"class_table": JOHAB_CLS,
|
| 289 |
+
"class_factor": 10,
|
| 290 |
+
"state_table": JOHAB_ST,
|
| 291 |
+
"char_len_table": JOHAB_CHAR_LEN_TABLE,
|
| 292 |
+
"name": "Johab",
|
| 293 |
+
}
|
| 294 |
+
|
| 295 |
+
# EUC-TW
|
| 296 |
+
# fmt: off
|
| 297 |
+
EUCTW_CLS = (
|
| 298 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 00 - 07
|
| 299 |
+
2, 2, 2, 2, 2, 2, 0, 0, # 08 - 0f
|
| 300 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 10 - 17
|
| 301 |
+
2, 2, 2, 0, 2, 2, 2, 2, # 18 - 1f
|
| 302 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 20 - 27
|
| 303 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 28 - 2f
|
| 304 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 30 - 37
|
| 305 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 38 - 3f
|
| 306 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47
|
| 307 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f
|
| 308 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57
|
| 309 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f
|
| 310 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67
|
| 311 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f
|
| 312 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77
|
| 313 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 78 - 7f
|
| 314 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87
|
| 315 |
+
0, 0, 0, 0, 0, 0, 6, 0, # 88 - 8f
|
| 316 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97
|
| 317 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f
|
| 318 |
+
0, 3, 4, 4, 4, 4, 4, 4, # a0 - a7
|
| 319 |
+
5, 5, 1, 1, 1, 1, 1, 1, # a8 - af
|
| 320 |
+
1, 1, 1, 1, 1, 1, 1, 1, # b0 - b7
|
| 321 |
+
1, 1, 1, 1, 1, 1, 1, 1, # b8 - bf
|
| 322 |
+
1, 1, 3, 1, 3, 3, 3, 3, # c0 - c7
|
| 323 |
+
3, 3, 3, 3, 3, 3, 3, 3, # c8 - cf
|
| 324 |
+
3, 3, 3, 3, 3, 3, 3, 3, # d0 - d7
|
| 325 |
+
3, 3, 3, 3, 3, 3, 3, 3, # d8 - df
|
| 326 |
+
3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7
|
| 327 |
+
3, 3, 3, 3, 3, 3, 3, 3, # e8 - ef
|
| 328 |
+
3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7
|
| 329 |
+
3, 3, 3, 3, 3, 3, 3, 0 # f8 - ff
|
| 330 |
+
)
|
| 331 |
+
|
| 332 |
+
EUCTW_ST = (
|
| 333 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07
|
| 334 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 335 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17
|
| 336 |
+
MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
|
| 337 |
+
5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27
|
| 338 |
+
MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f
|
| 339 |
+
)
|
| 340 |
+
# fmt: on
|
| 341 |
+
|
| 342 |
+
EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3)
|
| 343 |
+
|
| 344 |
+
EUCTW_SM_MODEL: CodingStateMachineDict = {
|
| 345 |
+
"class_table": EUCTW_CLS,
|
| 346 |
+
"class_factor": 7,
|
| 347 |
+
"state_table": EUCTW_ST,
|
| 348 |
+
"char_len_table": EUCTW_CHAR_LEN_TABLE,
|
| 349 |
+
"name": "x-euc-tw",
|
| 350 |
+
}
|
| 351 |
+
|
| 352 |
+
# GB2312
|
| 353 |
+
# fmt: off
|
| 354 |
+
GB2312_CLS = (
|
| 355 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07
|
| 356 |
+
1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f
|
| 357 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17
|
| 358 |
+
1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f
|
| 359 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27
|
| 360 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f
|
| 361 |
+
3, 3, 3, 3, 3, 3, 3, 3, # 30 - 37
|
| 362 |
+
3, 3, 1, 1, 1, 1, 1, 1, # 38 - 3f
|
| 363 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47
|
| 364 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f
|
| 365 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57
|
| 366 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f
|
| 367 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67
|
| 368 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f
|
| 369 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77
|
| 370 |
+
2, 2, 2, 2, 2, 2, 2, 4, # 78 - 7f
|
| 371 |
+
5, 6, 6, 6, 6, 6, 6, 6, # 80 - 87
|
| 372 |
+
6, 6, 6, 6, 6, 6, 6, 6, # 88 - 8f
|
| 373 |
+
6, 6, 6, 6, 6, 6, 6, 6, # 90 - 97
|
| 374 |
+
6, 6, 6, 6, 6, 6, 6, 6, # 98 - 9f
|
| 375 |
+
6, 6, 6, 6, 6, 6, 6, 6, # a0 - a7
|
| 376 |
+
6, 6, 6, 6, 6, 6, 6, 6, # a8 - af
|
| 377 |
+
6, 6, 6, 6, 6, 6, 6, 6, # b0 - b7
|
| 378 |
+
6, 6, 6, 6, 6, 6, 6, 6, # b8 - bf
|
| 379 |
+
6, 6, 6, 6, 6, 6, 6, 6, # c0 - c7
|
| 380 |
+
6, 6, 6, 6, 6, 6, 6, 6, # c8 - cf
|
| 381 |
+
6, 6, 6, 6, 6, 6, 6, 6, # d0 - d7
|
| 382 |
+
6, 6, 6, 6, 6, 6, 6, 6, # d8 - df
|
| 383 |
+
6, 6, 6, 6, 6, 6, 6, 6, # e0 - e7
|
| 384 |
+
6, 6, 6, 6, 6, 6, 6, 6, # e8 - ef
|
| 385 |
+
6, 6, 6, 6, 6, 6, 6, 6, # f0 - f7
|
| 386 |
+
6, 6, 6, 6, 6, 6, 6, 0 # f8 - ff
|
| 387 |
+
)
|
| 388 |
+
|
| 389 |
+
GB2312_ST = (
|
| 390 |
+
MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07
|
| 391 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 392 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17
|
| 393 |
+
4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
|
| 394 |
+
MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27
|
| 395 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f
|
| 396 |
+
)
|
| 397 |
+
# fmt: on
|
| 398 |
+
|
| 399 |
+
# To be accurate, the length of class 6 can be either 2 or 4.
|
| 400 |
+
# But it is not necessary to discriminate between the two since
|
| 401 |
+
# it is used for frequency analysis only, and we are validating
|
| 402 |
+
# each code range there as well. So it is safe to set it to be
|
| 403 |
+
# 2 here.
|
| 404 |
+
GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2)
|
| 405 |
+
|
| 406 |
+
GB2312_SM_MODEL: CodingStateMachineDict = {
|
| 407 |
+
"class_table": GB2312_CLS,
|
| 408 |
+
"class_factor": 7,
|
| 409 |
+
"state_table": GB2312_ST,
|
| 410 |
+
"char_len_table": GB2312_CHAR_LEN_TABLE,
|
| 411 |
+
"name": "GB2312",
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
# Shift_JIS
|
| 415 |
+
# fmt: off
|
| 416 |
+
SJIS_CLS = (
|
| 417 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07
|
| 418 |
+
1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f
|
| 419 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17
|
| 420 |
+
1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f
|
| 421 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27
|
| 422 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f
|
| 423 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37
|
| 424 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f
|
| 425 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 40 - 47
|
| 426 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 48 - 4f
|
| 427 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 50 - 57
|
| 428 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 58 - 5f
|
| 429 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 60 - 67
|
| 430 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 68 - 6f
|
| 431 |
+
2, 2, 2, 2, 2, 2, 2, 2, # 70 - 77
|
| 432 |
+
2, 2, 2, 2, 2, 2, 2, 1, # 78 - 7f
|
| 433 |
+
3, 3, 3, 3, 3, 2, 2, 3, # 80 - 87
|
| 434 |
+
3, 3, 3, 3, 3, 3, 3, 3, # 88 - 8f
|
| 435 |
+
3, 3, 3, 3, 3, 3, 3, 3, # 90 - 97
|
| 436 |
+
3, 3, 3, 3, 3, 3, 3, 3, # 98 - 9f
|
| 437 |
+
#0xa0 is illegal in sjis encoding, but some pages does
|
| 438 |
+
#contain such byte. We need to be more error forgiven.
|
| 439 |
+
2, 2, 2, 2, 2, 2, 2, 2, # a0 - a7
|
| 440 |
+
2, 2, 2, 2, 2, 2, 2, 2, # a8 - af
|
| 441 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b0 - b7
|
| 442 |
+
2, 2, 2, 2, 2, 2, 2, 2, # b8 - bf
|
| 443 |
+
2, 2, 2, 2, 2, 2, 2, 2, # c0 - c7
|
| 444 |
+
2, 2, 2, 2, 2, 2, 2, 2, # c8 - cf
|
| 445 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d0 - d7
|
| 446 |
+
2, 2, 2, 2, 2, 2, 2, 2, # d8 - df
|
| 447 |
+
3, 3, 3, 3, 3, 3, 3, 3, # e0 - e7
|
| 448 |
+
3, 3, 3, 3, 3, 4, 4, 4, # e8 - ef
|
| 449 |
+
3, 3, 3, 3, 3, 3, 3, 3, # f0 - f7
|
| 450 |
+
3, 3, 3, 3, 3, 0, 0, 0, # f8 - ff
|
| 451 |
+
)
|
| 452 |
+
|
| 453 |
+
SJIS_ST = (
|
| 454 |
+
MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 455 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 456 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17
|
| 457 |
+
)
|
| 458 |
+
# fmt: on
|
| 459 |
+
|
| 460 |
+
SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0)
|
| 461 |
+
|
| 462 |
+
SJIS_SM_MODEL: CodingStateMachineDict = {
|
| 463 |
+
"class_table": SJIS_CLS,
|
| 464 |
+
"class_factor": 6,
|
| 465 |
+
"state_table": SJIS_ST,
|
| 466 |
+
"char_len_table": SJIS_CHAR_LEN_TABLE,
|
| 467 |
+
"name": "Shift_JIS",
|
| 468 |
+
}
|
| 469 |
+
|
| 470 |
+
# UCS2-BE
|
| 471 |
+
# fmt: off
|
| 472 |
+
UCS2BE_CLS = (
|
| 473 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 00 - 07
|
| 474 |
+
0, 0, 1, 0, 0, 2, 0, 0, # 08 - 0f
|
| 475 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17
|
| 476 |
+
0, 0, 0, 3, 0, 0, 0, 0, # 18 - 1f
|
| 477 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27
|
| 478 |
+
0, 3, 3, 3, 3, 3, 0, 0, # 28 - 2f
|
| 479 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37
|
| 480 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f
|
| 481 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 40 - 47
|
| 482 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f
|
| 483 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57
|
| 484 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f
|
| 485 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67
|
| 486 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f
|
| 487 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77
|
| 488 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f
|
| 489 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87
|
| 490 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f
|
| 491 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97
|
| 492 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f
|
| 493 |
+
0, 0, 0, 0, 0, 0, 0, 0, # a0 - a7
|
| 494 |
+
0, 0, 0, 0, 0, 0, 0, 0, # a8 - af
|
| 495 |
+
0, 0, 0, 0, 0, 0, 0, 0, # b0 - b7
|
| 496 |
+
0, 0, 0, 0, 0, 0, 0, 0, # b8 - bf
|
| 497 |
+
0, 0, 0, 0, 0, 0, 0, 0, # c0 - c7
|
| 498 |
+
0, 0, 0, 0, 0, 0, 0, 0, # c8 - cf
|
| 499 |
+
0, 0, 0, 0, 0, 0, 0, 0, # d0 - d7
|
| 500 |
+
0, 0, 0, 0, 0, 0, 0, 0, # d8 - df
|
| 501 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7
|
| 502 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef
|
| 503 |
+
0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7
|
| 504 |
+
0, 0, 0, 0, 0, 0, 4, 5 # f8 - ff
|
| 505 |
+
)
|
| 506 |
+
|
| 507 |
+
UCS2BE_ST = (
|
| 508 |
+
5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 509 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 510 |
+
MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17
|
| 511 |
+
6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f
|
| 512 |
+
6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27
|
| 513 |
+
5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f
|
| 514 |
+
6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37
|
| 515 |
+
)
|
| 516 |
+
# fmt: on
|
| 517 |
+
|
| 518 |
+
UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2)
|
| 519 |
+
|
| 520 |
+
UCS2BE_SM_MODEL: CodingStateMachineDict = {
|
| 521 |
+
"class_table": UCS2BE_CLS,
|
| 522 |
+
"class_factor": 6,
|
| 523 |
+
"state_table": UCS2BE_ST,
|
| 524 |
+
"char_len_table": UCS2BE_CHAR_LEN_TABLE,
|
| 525 |
+
"name": "UTF-16BE",
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
# UCS2-LE
|
| 529 |
+
# fmt: off
|
| 530 |
+
UCS2LE_CLS = (
|
| 531 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 00 - 07
|
| 532 |
+
0, 0, 1, 0, 0, 2, 0, 0, # 08 - 0f
|
| 533 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 10 - 17
|
| 534 |
+
0, 0, 0, 3, 0, 0, 0, 0, # 18 - 1f
|
| 535 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 20 - 27
|
| 536 |
+
0, 3, 3, 3, 3, 3, 0, 0, # 28 - 2f
|
| 537 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 30 - 37
|
| 538 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 38 - 3f
|
| 539 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 40 - 47
|
| 540 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 48 - 4f
|
| 541 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 50 - 57
|
| 542 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 58 - 5f
|
| 543 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 60 - 67
|
| 544 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 68 - 6f
|
| 545 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 70 - 77
|
| 546 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 78 - 7f
|
| 547 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 80 - 87
|
| 548 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 88 - 8f
|
| 549 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 90 - 97
|
| 550 |
+
0, 0, 0, 0, 0, 0, 0, 0, # 98 - 9f
|
| 551 |
+
0, 0, 0, 0, 0, 0, 0, 0, # a0 - a7
|
| 552 |
+
0, 0, 0, 0, 0, 0, 0, 0, # a8 - af
|
| 553 |
+
0, 0, 0, 0, 0, 0, 0, 0, # b0 - b7
|
| 554 |
+
0, 0, 0, 0, 0, 0, 0, 0, # b8 - bf
|
| 555 |
+
0, 0, 0, 0, 0, 0, 0, 0, # c0 - c7
|
| 556 |
+
0, 0, 0, 0, 0, 0, 0, 0, # c8 - cf
|
| 557 |
+
0, 0, 0, 0, 0, 0, 0, 0, # d0 - d7
|
| 558 |
+
0, 0, 0, 0, 0, 0, 0, 0, # d8 - df
|
| 559 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e0 - e7
|
| 560 |
+
0, 0, 0, 0, 0, 0, 0, 0, # e8 - ef
|
| 561 |
+
0, 0, 0, 0, 0, 0, 0, 0, # f0 - f7
|
| 562 |
+
0, 0, 0, 0, 0, 0, 4, 5 # f8 - ff
|
| 563 |
+
)
|
| 564 |
+
|
| 565 |
+
UCS2LE_ST = (
|
| 566 |
+
6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07
|
| 567 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f
|
| 568 |
+
MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17
|
| 569 |
+
5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f
|
| 570 |
+
7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27
|
| 571 |
+
5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f
|
| 572 |
+
5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37
|
| 573 |
+
)
|
| 574 |
+
# fmt: on
|
| 575 |
+
|
| 576 |
+
UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2)
|
| 577 |
+
|
| 578 |
+
UCS2LE_SM_MODEL: CodingStateMachineDict = {
|
| 579 |
+
"class_table": UCS2LE_CLS,
|
| 580 |
+
"class_factor": 6,
|
| 581 |
+
"state_table": UCS2LE_ST,
|
| 582 |
+
"char_len_table": UCS2LE_CHAR_LEN_TABLE,
|
| 583 |
+
"name": "UTF-16LE",
|
| 584 |
+
}
|
| 585 |
+
|
| 586 |
+
# UTF-8
|
| 587 |
+
# fmt: off
|
| 588 |
+
UTF8_CLS = (
|
| 589 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 00 - 07 #allow 0x00 as a legal value
|
| 590 |
+
1, 1, 1, 1, 1, 1, 0, 0, # 08 - 0f
|
| 591 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 10 - 17
|
| 592 |
+
1, 1, 1, 0, 1, 1, 1, 1, # 18 - 1f
|
| 593 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 20 - 27
|
| 594 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 28 - 2f
|
| 595 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 30 - 37
|
| 596 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 38 - 3f
|
| 597 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 40 - 47
|
| 598 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 48 - 4f
|
| 599 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 50 - 57
|
| 600 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 58 - 5f
|
| 601 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 60 - 67
|
| 602 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 68 - 6f
|
| 603 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 70 - 77
|
| 604 |
+
1, 1, 1, 1, 1, 1, 1, 1, # 78 - 7f
|
| 605 |
+
2, 2, 2, 2, 3, 3, 3, 3, # 80 - 87
|
| 606 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 88 - 8f
|
| 607 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 90 - 97
|
| 608 |
+
4, 4, 4, 4, 4, 4, 4, 4, # 98 - 9f
|
| 609 |
+
5, 5, 5, 5, 5, 5, 5, 5, # a0 - a7
|
| 610 |
+
5, 5, 5, 5, 5, 5, 5, 5, # a8 - af
|
| 611 |
+
5, 5, 5, 5, 5, 5, 5, 5, # b0 - b7
|
| 612 |
+
5, 5, 5, 5, 5, 5, 5, 5, # b8 - bf
|
| 613 |
+
0, 0, 6, 6, 6, 6, 6, 6, # c0 - c7
|
| 614 |
+
6, 6, 6, 6, 6, 6, 6, 6, # c8 - cf
|
| 615 |
+
6, 6, 6, 6, 6, 6, 6, 6, # d0 - d7
|
| 616 |
+
6, 6, 6, 6, 6, 6, 6, 6, # d8 - df
|
| 617 |
+
7, 8, 8, 8, 8, 8, 8, 8, # e0 - e7
|
| 618 |
+
8, 8, 8, 8, 8, 9, 8, 8, # e8 - ef
|
| 619 |
+
10, 11, 11, 11, 11, 11, 11, 11, # f0 - f7
|
| 620 |
+
12, 13, 13, 13, 14, 15, 0, 0 # f8 - ff
|
| 621 |
+
)
|
| 622 |
+
|
| 623 |
+
UTF8_ST = (
|
| 624 |
+
MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07
|
| 625 |
+
9, 11, 8, 7, 6, 5, 4, 3,#08-0f
|
| 626 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17
|
| 627 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f
|
| 628 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27
|
| 629 |
+
MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f
|
| 630 |
+
MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37
|
| 631 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f
|
| 632 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47
|
| 633 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f
|
| 634 |
+
MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57
|
| 635 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f
|
| 636 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67
|
| 637 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f
|
| 638 |
+
MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77
|
| 639 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f
|
| 640 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87
|
| 641 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f
|
| 642 |
+
MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97
|
| 643 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f
|
| 644 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7
|
| 645 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af
|
| 646 |
+
MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7
|
| 647 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf
|
| 648 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7
|
| 649 |
+
MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf
|
| 650 |
+
)
|
| 651 |
+
# fmt: on
|
| 652 |
+
|
| 653 |
+
UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6)
|
| 654 |
+
|
| 655 |
+
UTF8_SM_MODEL: CodingStateMachineDict = {
|
| 656 |
+
"class_table": UTF8_CLS,
|
| 657 |
+
"class_factor": 16,
|
| 658 |
+
"state_table": UTF8_ST,
|
| 659 |
+
"char_len_table": UTF8_CHAR_LEN_TABLE,
|
| 660 |
+
"name": "UTF-8",
|
| 661 |
+
}
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/py.typed
ADDED
|
File without changes
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/resultdict.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import TYPE_CHECKING, Optional
|
| 2 |
+
|
| 3 |
+
if TYPE_CHECKING:
|
| 4 |
+
# TypedDict was introduced in Python 3.8.
|
| 5 |
+
#
|
| 6 |
+
# TODO: Remove the else block and TYPE_CHECKING check when dropping support
|
| 7 |
+
# for Python 3.7.
|
| 8 |
+
from typing import TypedDict
|
| 9 |
+
|
| 10 |
+
class ResultDict(TypedDict):
|
| 11 |
+
encoding: Optional[str]
|
| 12 |
+
confidence: float
|
| 13 |
+
language: Optional[str]
|
| 14 |
+
|
| 15 |
+
else:
|
| 16 |
+
ResultDict = dict
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/sbcharsetprober.py
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is Mozilla Universal charset detector code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 2001
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
# Shy Shalom - original C code
|
| 12 |
+
#
|
| 13 |
+
# This library is free software; you can redistribute it and/or
|
| 14 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 15 |
+
# License as published by the Free Software Foundation; either
|
| 16 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 17 |
+
#
|
| 18 |
+
# This library is distributed in the hope that it will be useful,
|
| 19 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 20 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 21 |
+
# Lesser General Public License for more details.
|
| 22 |
+
#
|
| 23 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 24 |
+
# License along with this library; if not, write to the Free Software
|
| 25 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 26 |
+
# 02110-1301 USA
|
| 27 |
+
######################### END LICENSE BLOCK #########################
|
| 28 |
+
|
| 29 |
+
from typing import Dict, List, NamedTuple, Optional, Union
|
| 30 |
+
|
| 31 |
+
from .charsetprober import CharSetProber
|
| 32 |
+
from .enums import CharacterCategory, ProbingState, SequenceLikelihood
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
class SingleByteCharSetModel(NamedTuple):
|
| 36 |
+
charset_name: str
|
| 37 |
+
language: str
|
| 38 |
+
char_to_order_map: Dict[int, int]
|
| 39 |
+
language_model: Dict[int, Dict[int, int]]
|
| 40 |
+
typical_positive_ratio: float
|
| 41 |
+
keep_ascii_letters: bool
|
| 42 |
+
alphabet: str
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
class SingleByteCharSetProber(CharSetProber):
|
| 46 |
+
SAMPLE_SIZE = 64
|
| 47 |
+
SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2
|
| 48 |
+
POSITIVE_SHORTCUT_THRESHOLD = 0.95
|
| 49 |
+
NEGATIVE_SHORTCUT_THRESHOLD = 0.05
|
| 50 |
+
|
| 51 |
+
def __init__(
|
| 52 |
+
self,
|
| 53 |
+
model: SingleByteCharSetModel,
|
| 54 |
+
is_reversed: bool = False,
|
| 55 |
+
name_prober: Optional[CharSetProber] = None,
|
| 56 |
+
) -> None:
|
| 57 |
+
super().__init__()
|
| 58 |
+
self._model = model
|
| 59 |
+
# TRUE if we need to reverse every pair in the model lookup
|
| 60 |
+
self._reversed = is_reversed
|
| 61 |
+
# Optional auxiliary prober for name decision
|
| 62 |
+
self._name_prober = name_prober
|
| 63 |
+
self._last_order = 255
|
| 64 |
+
self._seq_counters: List[int] = []
|
| 65 |
+
self._total_seqs = 0
|
| 66 |
+
self._total_char = 0
|
| 67 |
+
self._control_char = 0
|
| 68 |
+
self._freq_char = 0
|
| 69 |
+
self.reset()
|
| 70 |
+
|
| 71 |
+
def reset(self) -> None:
|
| 72 |
+
super().reset()
|
| 73 |
+
# char order of last character
|
| 74 |
+
self._last_order = 255
|
| 75 |
+
self._seq_counters = [0] * SequenceLikelihood.get_num_categories()
|
| 76 |
+
self._total_seqs = 0
|
| 77 |
+
self._total_char = 0
|
| 78 |
+
self._control_char = 0
|
| 79 |
+
# characters that fall in our sampling range
|
| 80 |
+
self._freq_char = 0
|
| 81 |
+
|
| 82 |
+
@property
|
| 83 |
+
def charset_name(self) -> Optional[str]:
|
| 84 |
+
if self._name_prober:
|
| 85 |
+
return self._name_prober.charset_name
|
| 86 |
+
return self._model.charset_name
|
| 87 |
+
|
| 88 |
+
@property
|
| 89 |
+
def language(self) -> Optional[str]:
|
| 90 |
+
if self._name_prober:
|
| 91 |
+
return self._name_prober.language
|
| 92 |
+
return self._model.language
|
| 93 |
+
|
| 94 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 95 |
+
# TODO: Make filter_international_words keep things in self.alphabet
|
| 96 |
+
if not self._model.keep_ascii_letters:
|
| 97 |
+
byte_str = self.filter_international_words(byte_str)
|
| 98 |
+
else:
|
| 99 |
+
byte_str = self.remove_xml_tags(byte_str)
|
| 100 |
+
if not byte_str:
|
| 101 |
+
return self.state
|
| 102 |
+
char_to_order_map = self._model.char_to_order_map
|
| 103 |
+
language_model = self._model.language_model
|
| 104 |
+
for char in byte_str:
|
| 105 |
+
order = char_to_order_map.get(char, CharacterCategory.UNDEFINED)
|
| 106 |
+
# XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but
|
| 107 |
+
# CharacterCategory.SYMBOL is actually 253, so we use CONTROL
|
| 108 |
+
# to make it closer to the original intent. The only difference
|
| 109 |
+
# is whether or not we count digits and control characters for
|
| 110 |
+
# _total_char purposes.
|
| 111 |
+
if order < CharacterCategory.CONTROL:
|
| 112 |
+
self._total_char += 1
|
| 113 |
+
if order < self.SAMPLE_SIZE:
|
| 114 |
+
self._freq_char += 1
|
| 115 |
+
if self._last_order < self.SAMPLE_SIZE:
|
| 116 |
+
self._total_seqs += 1
|
| 117 |
+
if not self._reversed:
|
| 118 |
+
lm_cat = language_model[self._last_order][order]
|
| 119 |
+
else:
|
| 120 |
+
lm_cat = language_model[order][self._last_order]
|
| 121 |
+
self._seq_counters[lm_cat] += 1
|
| 122 |
+
self._last_order = order
|
| 123 |
+
|
| 124 |
+
charset_name = self._model.charset_name
|
| 125 |
+
if self.state == ProbingState.DETECTING:
|
| 126 |
+
if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD:
|
| 127 |
+
confidence = self.get_confidence()
|
| 128 |
+
if confidence > self.POSITIVE_SHORTCUT_THRESHOLD:
|
| 129 |
+
self.logger.debug(
|
| 130 |
+
"%s confidence = %s, we have a winner", charset_name, confidence
|
| 131 |
+
)
|
| 132 |
+
self._state = ProbingState.FOUND_IT
|
| 133 |
+
elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD:
|
| 134 |
+
self.logger.debug(
|
| 135 |
+
"%s confidence = %s, below negative shortcut threshold %s",
|
| 136 |
+
charset_name,
|
| 137 |
+
confidence,
|
| 138 |
+
self.NEGATIVE_SHORTCUT_THRESHOLD,
|
| 139 |
+
)
|
| 140 |
+
self._state = ProbingState.NOT_ME
|
| 141 |
+
|
| 142 |
+
return self.state
|
| 143 |
+
|
| 144 |
+
def get_confidence(self) -> float:
|
| 145 |
+
r = 0.01
|
| 146 |
+
if self._total_seqs > 0:
|
| 147 |
+
r = (
|
| 148 |
+
(
|
| 149 |
+
self._seq_counters[SequenceLikelihood.POSITIVE]
|
| 150 |
+
+ 0.25 * self._seq_counters[SequenceLikelihood.LIKELY]
|
| 151 |
+
)
|
| 152 |
+
/ self._total_seqs
|
| 153 |
+
/ self._model.typical_positive_ratio
|
| 154 |
+
)
|
| 155 |
+
# The more control characters (proportionnaly to the size
|
| 156 |
+
# of the text), the less confident we become in the current
|
| 157 |
+
# charset.
|
| 158 |
+
r = r * (self._total_char - self._control_char) / self._total_char
|
| 159 |
+
r = r * self._freq_char / self._total_char
|
| 160 |
+
if r >= 1.0:
|
| 161 |
+
r = 0.99
|
| 162 |
+
return r
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/sjisprober.py
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
######################## BEGIN LICENSE BLOCK ########################
|
| 2 |
+
# The Original Code is mozilla.org code.
|
| 3 |
+
#
|
| 4 |
+
# The Initial Developer of the Original Code is
|
| 5 |
+
# Netscape Communications Corporation.
|
| 6 |
+
# Portions created by the Initial Developer are Copyright (C) 1998
|
| 7 |
+
# the Initial Developer. All Rights Reserved.
|
| 8 |
+
#
|
| 9 |
+
# Contributor(s):
|
| 10 |
+
# Mark Pilgrim - port to Python
|
| 11 |
+
#
|
| 12 |
+
# This library is free software; you can redistribute it and/or
|
| 13 |
+
# modify it under the terms of the GNU Lesser General Public
|
| 14 |
+
# License as published by the Free Software Foundation; either
|
| 15 |
+
# version 2.1 of the License, or (at your option) any later version.
|
| 16 |
+
#
|
| 17 |
+
# This library is distributed in the hope that it will be useful,
|
| 18 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 19 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 20 |
+
# Lesser General Public License for more details.
|
| 21 |
+
#
|
| 22 |
+
# You should have received a copy of the GNU Lesser General Public
|
| 23 |
+
# License along with this library; if not, write to the Free Software
|
| 24 |
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
| 25 |
+
# 02110-1301 USA
|
| 26 |
+
######################### END LICENSE BLOCK #########################
|
| 27 |
+
|
| 28 |
+
from typing import Union
|
| 29 |
+
|
| 30 |
+
from .chardistribution import SJISDistributionAnalysis
|
| 31 |
+
from .codingstatemachine import CodingStateMachine
|
| 32 |
+
from .enums import MachineState, ProbingState
|
| 33 |
+
from .jpcntx import SJISContextAnalysis
|
| 34 |
+
from .mbcharsetprober import MultiByteCharSetProber
|
| 35 |
+
from .mbcssm import SJIS_SM_MODEL
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
class SJISProber(MultiByteCharSetProber):
|
| 39 |
+
def __init__(self) -> None:
|
| 40 |
+
super().__init__()
|
| 41 |
+
self.coding_sm = CodingStateMachine(SJIS_SM_MODEL)
|
| 42 |
+
self.distribution_analyzer = SJISDistributionAnalysis()
|
| 43 |
+
self.context_analyzer = SJISContextAnalysis()
|
| 44 |
+
self.reset()
|
| 45 |
+
|
| 46 |
+
def reset(self) -> None:
|
| 47 |
+
super().reset()
|
| 48 |
+
self.context_analyzer.reset()
|
| 49 |
+
|
| 50 |
+
@property
|
| 51 |
+
def charset_name(self) -> str:
|
| 52 |
+
return self.context_analyzer.charset_name
|
| 53 |
+
|
| 54 |
+
@property
|
| 55 |
+
def language(self) -> str:
|
| 56 |
+
return "Japanese"
|
| 57 |
+
|
| 58 |
+
def feed(self, byte_str: Union[bytes, bytearray]) -> ProbingState:
|
| 59 |
+
assert self.coding_sm is not None
|
| 60 |
+
assert self.distribution_analyzer is not None
|
| 61 |
+
|
| 62 |
+
for i, byte in enumerate(byte_str):
|
| 63 |
+
coding_state = self.coding_sm.next_state(byte)
|
| 64 |
+
if coding_state == MachineState.ERROR:
|
| 65 |
+
self.logger.debug(
|
| 66 |
+
"%s %s prober hit error at byte %s",
|
| 67 |
+
self.charset_name,
|
| 68 |
+
self.language,
|
| 69 |
+
i,
|
| 70 |
+
)
|
| 71 |
+
self._state = ProbingState.NOT_ME
|
| 72 |
+
break
|
| 73 |
+
if coding_state == MachineState.ITS_ME:
|
| 74 |
+
self._state = ProbingState.FOUND_IT
|
| 75 |
+
break
|
| 76 |
+
if coding_state == MachineState.START:
|
| 77 |
+
char_len = self.coding_sm.get_current_charlen()
|
| 78 |
+
if i == 0:
|
| 79 |
+
self._last_char[1] = byte
|
| 80 |
+
self.context_analyzer.feed(
|
| 81 |
+
self._last_char[2 - char_len :], char_len
|
| 82 |
+
)
|
| 83 |
+
self.distribution_analyzer.feed(self._last_char, char_len)
|
| 84 |
+
else:
|
| 85 |
+
self.context_analyzer.feed(
|
| 86 |
+
byte_str[i + 1 - char_len : i + 3 - char_len], char_len
|
| 87 |
+
)
|
| 88 |
+
self.distribution_analyzer.feed(byte_str[i - 1 : i + 1], char_len)
|
| 89 |
+
|
| 90 |
+
self._last_char[0] = byte_str[-1]
|
| 91 |
+
|
| 92 |
+
if self.state == ProbingState.DETECTING:
|
| 93 |
+
if self.context_analyzer.got_enough_data() and (
|
| 94 |
+
self.get_confidence() > self.SHORTCUT_THRESHOLD
|
| 95 |
+
):
|
| 96 |
+
self._state = ProbingState.FOUND_IT
|
| 97 |
+
|
| 98 |
+
return self.state
|
| 99 |
+
|
| 100 |
+
def get_confidence(self) -> float:
|
| 101 |
+
assert self.distribution_analyzer is not None
|
| 102 |
+
|
| 103 |
+
context_conf = self.context_analyzer.get_confidence()
|
| 104 |
+
distrib_conf = self.distribution_analyzer.get_confidence()
|
| 105 |
+
return max(context_conf, distrib_conf)
|
.venv/lib/python3.11/site-packages/pip/_vendor/chardet/version.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
This module exists only to simplify retrieving the version number of chardet
|
| 3 |
+
from within setuptools and from chardet subpackages.
|
| 4 |
+
|
| 5 |
+
:author: Dan Blanchard (dan.blanchard@gmail.com)
|
| 6 |
+
"""
|
| 7 |
+
|
| 8 |
+
__version__ = "5.1.0"
|
| 9 |
+
VERSION = __version__.split(".")
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/__init__.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SPDX-License-Identifier: MIT
|
| 2 |
+
# SPDX-FileCopyrightText: 2021 Taneli Hukkinen
|
| 3 |
+
# Licensed to PSF under a Contributor Agreement.
|
| 4 |
+
|
| 5 |
+
__all__ = ("loads", "load", "TOMLDecodeError")
|
| 6 |
+
__version__ = "2.0.1" # DO NOT EDIT THIS LINE MANUALLY. LET bump2version UTILITY DO IT
|
| 7 |
+
|
| 8 |
+
from ._parser import TOMLDecodeError, load, loads
|
| 9 |
+
|
| 10 |
+
# Pretend this exception was created here.
|
| 11 |
+
TOMLDecodeError.__module__ = __name__
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (406 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-311.pyc
ADDED
|
Binary file (30.8 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-311.pyc
ADDED
|
Binary file (4.49 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-311.pyc
ADDED
|
Binary file (398 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/_parser.py
ADDED
|
@@ -0,0 +1,691 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SPDX-License-Identifier: MIT
|
| 2 |
+
# SPDX-FileCopyrightText: 2021 Taneli Hukkinen
|
| 3 |
+
# Licensed to PSF under a Contributor Agreement.
|
| 4 |
+
|
| 5 |
+
from __future__ import annotations
|
| 6 |
+
|
| 7 |
+
from collections.abc import Iterable
|
| 8 |
+
import string
|
| 9 |
+
from types import MappingProxyType
|
| 10 |
+
from typing import Any, BinaryIO, NamedTuple
|
| 11 |
+
|
| 12 |
+
from ._re import (
|
| 13 |
+
RE_DATETIME,
|
| 14 |
+
RE_LOCALTIME,
|
| 15 |
+
RE_NUMBER,
|
| 16 |
+
match_to_datetime,
|
| 17 |
+
match_to_localtime,
|
| 18 |
+
match_to_number,
|
| 19 |
+
)
|
| 20 |
+
from ._types import Key, ParseFloat, Pos
|
| 21 |
+
|
| 22 |
+
ASCII_CTRL = frozenset(chr(i) for i in range(32)) | frozenset(chr(127))
|
| 23 |
+
|
| 24 |
+
# Neither of these sets include quotation mark or backslash. They are
|
| 25 |
+
# currently handled as separate cases in the parser functions.
|
| 26 |
+
ILLEGAL_BASIC_STR_CHARS = ASCII_CTRL - frozenset("\t")
|
| 27 |
+
ILLEGAL_MULTILINE_BASIC_STR_CHARS = ASCII_CTRL - frozenset("\t\n")
|
| 28 |
+
|
| 29 |
+
ILLEGAL_LITERAL_STR_CHARS = ILLEGAL_BASIC_STR_CHARS
|
| 30 |
+
ILLEGAL_MULTILINE_LITERAL_STR_CHARS = ILLEGAL_MULTILINE_BASIC_STR_CHARS
|
| 31 |
+
|
| 32 |
+
ILLEGAL_COMMENT_CHARS = ILLEGAL_BASIC_STR_CHARS
|
| 33 |
+
|
| 34 |
+
TOML_WS = frozenset(" \t")
|
| 35 |
+
TOML_WS_AND_NEWLINE = TOML_WS | frozenset("\n")
|
| 36 |
+
BARE_KEY_CHARS = frozenset(string.ascii_letters + string.digits + "-_")
|
| 37 |
+
KEY_INITIAL_CHARS = BARE_KEY_CHARS | frozenset("\"'")
|
| 38 |
+
HEXDIGIT_CHARS = frozenset(string.hexdigits)
|
| 39 |
+
|
| 40 |
+
BASIC_STR_ESCAPE_REPLACEMENTS = MappingProxyType(
|
| 41 |
+
{
|
| 42 |
+
"\\b": "\u0008", # backspace
|
| 43 |
+
"\\t": "\u0009", # tab
|
| 44 |
+
"\\n": "\u000A", # linefeed
|
| 45 |
+
"\\f": "\u000C", # form feed
|
| 46 |
+
"\\r": "\u000D", # carriage return
|
| 47 |
+
'\\"': "\u0022", # quote
|
| 48 |
+
"\\\\": "\u005C", # backslash
|
| 49 |
+
}
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
class TOMLDecodeError(ValueError):
|
| 54 |
+
"""An error raised if a document is not valid TOML."""
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def load(__fp: BinaryIO, *, parse_float: ParseFloat = float) -> dict[str, Any]:
|
| 58 |
+
"""Parse TOML from a binary file object."""
|
| 59 |
+
b = __fp.read()
|
| 60 |
+
try:
|
| 61 |
+
s = b.decode()
|
| 62 |
+
except AttributeError:
|
| 63 |
+
raise TypeError(
|
| 64 |
+
"File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`"
|
| 65 |
+
) from None
|
| 66 |
+
return loads(s, parse_float=parse_float)
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
def loads(__s: str, *, parse_float: ParseFloat = float) -> dict[str, Any]: # noqa: C901
|
| 70 |
+
"""Parse TOML from a string."""
|
| 71 |
+
|
| 72 |
+
# The spec allows converting "\r\n" to "\n", even in string
|
| 73 |
+
# literals. Let's do so to simplify parsing.
|
| 74 |
+
src = __s.replace("\r\n", "\n")
|
| 75 |
+
pos = 0
|
| 76 |
+
out = Output(NestedDict(), Flags())
|
| 77 |
+
header: Key = ()
|
| 78 |
+
parse_float = make_safe_parse_float(parse_float)
|
| 79 |
+
|
| 80 |
+
# Parse one statement at a time
|
| 81 |
+
# (typically means one line in TOML source)
|
| 82 |
+
while True:
|
| 83 |
+
# 1. Skip line leading whitespace
|
| 84 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 85 |
+
|
| 86 |
+
# 2. Parse rules. Expect one of the following:
|
| 87 |
+
# - end of file
|
| 88 |
+
# - end of line
|
| 89 |
+
# - comment
|
| 90 |
+
# - key/value pair
|
| 91 |
+
# - append dict to list (and move to its namespace)
|
| 92 |
+
# - create dict (and move to its namespace)
|
| 93 |
+
# Skip trailing whitespace when applicable.
|
| 94 |
+
try:
|
| 95 |
+
char = src[pos]
|
| 96 |
+
except IndexError:
|
| 97 |
+
break
|
| 98 |
+
if char == "\n":
|
| 99 |
+
pos += 1
|
| 100 |
+
continue
|
| 101 |
+
if char in KEY_INITIAL_CHARS:
|
| 102 |
+
pos = key_value_rule(src, pos, out, header, parse_float)
|
| 103 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 104 |
+
elif char == "[":
|
| 105 |
+
try:
|
| 106 |
+
second_char: str | None = src[pos + 1]
|
| 107 |
+
except IndexError:
|
| 108 |
+
second_char = None
|
| 109 |
+
out.flags.finalize_pending()
|
| 110 |
+
if second_char == "[":
|
| 111 |
+
pos, header = create_list_rule(src, pos, out)
|
| 112 |
+
else:
|
| 113 |
+
pos, header = create_dict_rule(src, pos, out)
|
| 114 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 115 |
+
elif char != "#":
|
| 116 |
+
raise suffixed_err(src, pos, "Invalid statement")
|
| 117 |
+
|
| 118 |
+
# 3. Skip comment
|
| 119 |
+
pos = skip_comment(src, pos)
|
| 120 |
+
|
| 121 |
+
# 4. Expect end of line or end of file
|
| 122 |
+
try:
|
| 123 |
+
char = src[pos]
|
| 124 |
+
except IndexError:
|
| 125 |
+
break
|
| 126 |
+
if char != "\n":
|
| 127 |
+
raise suffixed_err(
|
| 128 |
+
src, pos, "Expected newline or end of document after a statement"
|
| 129 |
+
)
|
| 130 |
+
pos += 1
|
| 131 |
+
|
| 132 |
+
return out.data.dict
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
class Flags:
|
| 136 |
+
"""Flags that map to parsed keys/namespaces."""
|
| 137 |
+
|
| 138 |
+
# Marks an immutable namespace (inline array or inline table).
|
| 139 |
+
FROZEN = 0
|
| 140 |
+
# Marks a nest that has been explicitly created and can no longer
|
| 141 |
+
# be opened using the "[table]" syntax.
|
| 142 |
+
EXPLICIT_NEST = 1
|
| 143 |
+
|
| 144 |
+
def __init__(self) -> None:
|
| 145 |
+
self._flags: dict[str, dict] = {}
|
| 146 |
+
self._pending_flags: set[tuple[Key, int]] = set()
|
| 147 |
+
|
| 148 |
+
def add_pending(self, key: Key, flag: int) -> None:
|
| 149 |
+
self._pending_flags.add((key, flag))
|
| 150 |
+
|
| 151 |
+
def finalize_pending(self) -> None:
|
| 152 |
+
for key, flag in self._pending_flags:
|
| 153 |
+
self.set(key, flag, recursive=False)
|
| 154 |
+
self._pending_flags.clear()
|
| 155 |
+
|
| 156 |
+
def unset_all(self, key: Key) -> None:
|
| 157 |
+
cont = self._flags
|
| 158 |
+
for k in key[:-1]:
|
| 159 |
+
if k not in cont:
|
| 160 |
+
return
|
| 161 |
+
cont = cont[k]["nested"]
|
| 162 |
+
cont.pop(key[-1], None)
|
| 163 |
+
|
| 164 |
+
def set(self, key: Key, flag: int, *, recursive: bool) -> None: # noqa: A003
|
| 165 |
+
cont = self._flags
|
| 166 |
+
key_parent, key_stem = key[:-1], key[-1]
|
| 167 |
+
for k in key_parent:
|
| 168 |
+
if k not in cont:
|
| 169 |
+
cont[k] = {"flags": set(), "recursive_flags": set(), "nested": {}}
|
| 170 |
+
cont = cont[k]["nested"]
|
| 171 |
+
if key_stem not in cont:
|
| 172 |
+
cont[key_stem] = {"flags": set(), "recursive_flags": set(), "nested": {}}
|
| 173 |
+
cont[key_stem]["recursive_flags" if recursive else "flags"].add(flag)
|
| 174 |
+
|
| 175 |
+
def is_(self, key: Key, flag: int) -> bool:
|
| 176 |
+
if not key:
|
| 177 |
+
return False # document root has no flags
|
| 178 |
+
cont = self._flags
|
| 179 |
+
for k in key[:-1]:
|
| 180 |
+
if k not in cont:
|
| 181 |
+
return False
|
| 182 |
+
inner_cont = cont[k]
|
| 183 |
+
if flag in inner_cont["recursive_flags"]:
|
| 184 |
+
return True
|
| 185 |
+
cont = inner_cont["nested"]
|
| 186 |
+
key_stem = key[-1]
|
| 187 |
+
if key_stem in cont:
|
| 188 |
+
cont = cont[key_stem]
|
| 189 |
+
return flag in cont["flags"] or flag in cont["recursive_flags"]
|
| 190 |
+
return False
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class NestedDict:
|
| 194 |
+
def __init__(self) -> None:
|
| 195 |
+
# The parsed content of the TOML document
|
| 196 |
+
self.dict: dict[str, Any] = {}
|
| 197 |
+
|
| 198 |
+
def get_or_create_nest(
|
| 199 |
+
self,
|
| 200 |
+
key: Key,
|
| 201 |
+
*,
|
| 202 |
+
access_lists: bool = True,
|
| 203 |
+
) -> dict:
|
| 204 |
+
cont: Any = self.dict
|
| 205 |
+
for k in key:
|
| 206 |
+
if k not in cont:
|
| 207 |
+
cont[k] = {}
|
| 208 |
+
cont = cont[k]
|
| 209 |
+
if access_lists and isinstance(cont, list):
|
| 210 |
+
cont = cont[-1]
|
| 211 |
+
if not isinstance(cont, dict):
|
| 212 |
+
raise KeyError("There is no nest behind this key")
|
| 213 |
+
return cont
|
| 214 |
+
|
| 215 |
+
def append_nest_to_list(self, key: Key) -> None:
|
| 216 |
+
cont = self.get_or_create_nest(key[:-1])
|
| 217 |
+
last_key = key[-1]
|
| 218 |
+
if last_key in cont:
|
| 219 |
+
list_ = cont[last_key]
|
| 220 |
+
if not isinstance(list_, list):
|
| 221 |
+
raise KeyError("An object other than list found behind this key")
|
| 222 |
+
list_.append({})
|
| 223 |
+
else:
|
| 224 |
+
cont[last_key] = [{}]
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
class Output(NamedTuple):
|
| 228 |
+
data: NestedDict
|
| 229 |
+
flags: Flags
|
| 230 |
+
|
| 231 |
+
|
| 232 |
+
def skip_chars(src: str, pos: Pos, chars: Iterable[str]) -> Pos:
|
| 233 |
+
try:
|
| 234 |
+
while src[pos] in chars:
|
| 235 |
+
pos += 1
|
| 236 |
+
except IndexError:
|
| 237 |
+
pass
|
| 238 |
+
return pos
|
| 239 |
+
|
| 240 |
+
|
| 241 |
+
def skip_until(
|
| 242 |
+
src: str,
|
| 243 |
+
pos: Pos,
|
| 244 |
+
expect: str,
|
| 245 |
+
*,
|
| 246 |
+
error_on: frozenset[str],
|
| 247 |
+
error_on_eof: bool,
|
| 248 |
+
) -> Pos:
|
| 249 |
+
try:
|
| 250 |
+
new_pos = src.index(expect, pos)
|
| 251 |
+
except ValueError:
|
| 252 |
+
new_pos = len(src)
|
| 253 |
+
if error_on_eof:
|
| 254 |
+
raise suffixed_err(src, new_pos, f"Expected {expect!r}") from None
|
| 255 |
+
|
| 256 |
+
if not error_on.isdisjoint(src[pos:new_pos]):
|
| 257 |
+
while src[pos] not in error_on:
|
| 258 |
+
pos += 1
|
| 259 |
+
raise suffixed_err(src, pos, f"Found invalid character {src[pos]!r}")
|
| 260 |
+
return new_pos
|
| 261 |
+
|
| 262 |
+
|
| 263 |
+
def skip_comment(src: str, pos: Pos) -> Pos:
|
| 264 |
+
try:
|
| 265 |
+
char: str | None = src[pos]
|
| 266 |
+
except IndexError:
|
| 267 |
+
char = None
|
| 268 |
+
if char == "#":
|
| 269 |
+
return skip_until(
|
| 270 |
+
src, pos + 1, "\n", error_on=ILLEGAL_COMMENT_CHARS, error_on_eof=False
|
| 271 |
+
)
|
| 272 |
+
return pos
|
| 273 |
+
|
| 274 |
+
|
| 275 |
+
def skip_comments_and_array_ws(src: str, pos: Pos) -> Pos:
|
| 276 |
+
while True:
|
| 277 |
+
pos_before_skip = pos
|
| 278 |
+
pos = skip_chars(src, pos, TOML_WS_AND_NEWLINE)
|
| 279 |
+
pos = skip_comment(src, pos)
|
| 280 |
+
if pos == pos_before_skip:
|
| 281 |
+
return pos
|
| 282 |
+
|
| 283 |
+
|
| 284 |
+
def create_dict_rule(src: str, pos: Pos, out: Output) -> tuple[Pos, Key]:
|
| 285 |
+
pos += 1 # Skip "["
|
| 286 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 287 |
+
pos, key = parse_key(src, pos)
|
| 288 |
+
|
| 289 |
+
if out.flags.is_(key, Flags.EXPLICIT_NEST) or out.flags.is_(key, Flags.FROZEN):
|
| 290 |
+
raise suffixed_err(src, pos, f"Cannot declare {key} twice")
|
| 291 |
+
out.flags.set(key, Flags.EXPLICIT_NEST, recursive=False)
|
| 292 |
+
try:
|
| 293 |
+
out.data.get_or_create_nest(key)
|
| 294 |
+
except KeyError:
|
| 295 |
+
raise suffixed_err(src, pos, "Cannot overwrite a value") from None
|
| 296 |
+
|
| 297 |
+
if not src.startswith("]", pos):
|
| 298 |
+
raise suffixed_err(src, pos, "Expected ']' at the end of a table declaration")
|
| 299 |
+
return pos + 1, key
|
| 300 |
+
|
| 301 |
+
|
| 302 |
+
def create_list_rule(src: str, pos: Pos, out: Output) -> tuple[Pos, Key]:
|
| 303 |
+
pos += 2 # Skip "[["
|
| 304 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 305 |
+
pos, key = parse_key(src, pos)
|
| 306 |
+
|
| 307 |
+
if out.flags.is_(key, Flags.FROZEN):
|
| 308 |
+
raise suffixed_err(src, pos, f"Cannot mutate immutable namespace {key}")
|
| 309 |
+
# Free the namespace now that it points to another empty list item...
|
| 310 |
+
out.flags.unset_all(key)
|
| 311 |
+
# ...but this key precisely is still prohibited from table declaration
|
| 312 |
+
out.flags.set(key, Flags.EXPLICIT_NEST, recursive=False)
|
| 313 |
+
try:
|
| 314 |
+
out.data.append_nest_to_list(key)
|
| 315 |
+
except KeyError:
|
| 316 |
+
raise suffixed_err(src, pos, "Cannot overwrite a value") from None
|
| 317 |
+
|
| 318 |
+
if not src.startswith("]]", pos):
|
| 319 |
+
raise suffixed_err(src, pos, "Expected ']]' at the end of an array declaration")
|
| 320 |
+
return pos + 2, key
|
| 321 |
+
|
| 322 |
+
|
| 323 |
+
def key_value_rule(
|
| 324 |
+
src: str, pos: Pos, out: Output, header: Key, parse_float: ParseFloat
|
| 325 |
+
) -> Pos:
|
| 326 |
+
pos, key, value = parse_key_value_pair(src, pos, parse_float)
|
| 327 |
+
key_parent, key_stem = key[:-1], key[-1]
|
| 328 |
+
abs_key_parent = header + key_parent
|
| 329 |
+
|
| 330 |
+
relative_path_cont_keys = (header + key[:i] for i in range(1, len(key)))
|
| 331 |
+
for cont_key in relative_path_cont_keys:
|
| 332 |
+
# Check that dotted key syntax does not redefine an existing table
|
| 333 |
+
if out.flags.is_(cont_key, Flags.EXPLICIT_NEST):
|
| 334 |
+
raise suffixed_err(src, pos, f"Cannot redefine namespace {cont_key}")
|
| 335 |
+
# Containers in the relative path can't be opened with the table syntax or
|
| 336 |
+
# dotted key/value syntax in following table sections.
|
| 337 |
+
out.flags.add_pending(cont_key, Flags.EXPLICIT_NEST)
|
| 338 |
+
|
| 339 |
+
if out.flags.is_(abs_key_parent, Flags.FROZEN):
|
| 340 |
+
raise suffixed_err(
|
| 341 |
+
src, pos, f"Cannot mutate immutable namespace {abs_key_parent}"
|
| 342 |
+
)
|
| 343 |
+
|
| 344 |
+
try:
|
| 345 |
+
nest = out.data.get_or_create_nest(abs_key_parent)
|
| 346 |
+
except KeyError:
|
| 347 |
+
raise suffixed_err(src, pos, "Cannot overwrite a value") from None
|
| 348 |
+
if key_stem in nest:
|
| 349 |
+
raise suffixed_err(src, pos, "Cannot overwrite a value")
|
| 350 |
+
# Mark inline table and array namespaces recursively immutable
|
| 351 |
+
if isinstance(value, (dict, list)):
|
| 352 |
+
out.flags.set(header + key, Flags.FROZEN, recursive=True)
|
| 353 |
+
nest[key_stem] = value
|
| 354 |
+
return pos
|
| 355 |
+
|
| 356 |
+
|
| 357 |
+
def parse_key_value_pair(
|
| 358 |
+
src: str, pos: Pos, parse_float: ParseFloat
|
| 359 |
+
) -> tuple[Pos, Key, Any]:
|
| 360 |
+
pos, key = parse_key(src, pos)
|
| 361 |
+
try:
|
| 362 |
+
char: str | None = src[pos]
|
| 363 |
+
except IndexError:
|
| 364 |
+
char = None
|
| 365 |
+
if char != "=":
|
| 366 |
+
raise suffixed_err(src, pos, "Expected '=' after a key in a key/value pair")
|
| 367 |
+
pos += 1
|
| 368 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 369 |
+
pos, value = parse_value(src, pos, parse_float)
|
| 370 |
+
return pos, key, value
|
| 371 |
+
|
| 372 |
+
|
| 373 |
+
def parse_key(src: str, pos: Pos) -> tuple[Pos, Key]:
|
| 374 |
+
pos, key_part = parse_key_part(src, pos)
|
| 375 |
+
key: Key = (key_part,)
|
| 376 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 377 |
+
while True:
|
| 378 |
+
try:
|
| 379 |
+
char: str | None = src[pos]
|
| 380 |
+
except IndexError:
|
| 381 |
+
char = None
|
| 382 |
+
if char != ".":
|
| 383 |
+
return pos, key
|
| 384 |
+
pos += 1
|
| 385 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 386 |
+
pos, key_part = parse_key_part(src, pos)
|
| 387 |
+
key += (key_part,)
|
| 388 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 389 |
+
|
| 390 |
+
|
| 391 |
+
def parse_key_part(src: str, pos: Pos) -> tuple[Pos, str]:
|
| 392 |
+
try:
|
| 393 |
+
char: str | None = src[pos]
|
| 394 |
+
except IndexError:
|
| 395 |
+
char = None
|
| 396 |
+
if char in BARE_KEY_CHARS:
|
| 397 |
+
start_pos = pos
|
| 398 |
+
pos = skip_chars(src, pos, BARE_KEY_CHARS)
|
| 399 |
+
return pos, src[start_pos:pos]
|
| 400 |
+
if char == "'":
|
| 401 |
+
return parse_literal_str(src, pos)
|
| 402 |
+
if char == '"':
|
| 403 |
+
return parse_one_line_basic_str(src, pos)
|
| 404 |
+
raise suffixed_err(src, pos, "Invalid initial character for a key part")
|
| 405 |
+
|
| 406 |
+
|
| 407 |
+
def parse_one_line_basic_str(src: str, pos: Pos) -> tuple[Pos, str]:
|
| 408 |
+
pos += 1
|
| 409 |
+
return parse_basic_str(src, pos, multiline=False)
|
| 410 |
+
|
| 411 |
+
|
| 412 |
+
def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list]:
|
| 413 |
+
pos += 1
|
| 414 |
+
array: list = []
|
| 415 |
+
|
| 416 |
+
pos = skip_comments_and_array_ws(src, pos)
|
| 417 |
+
if src.startswith("]", pos):
|
| 418 |
+
return pos + 1, array
|
| 419 |
+
while True:
|
| 420 |
+
pos, val = parse_value(src, pos, parse_float)
|
| 421 |
+
array.append(val)
|
| 422 |
+
pos = skip_comments_and_array_ws(src, pos)
|
| 423 |
+
|
| 424 |
+
c = src[pos : pos + 1]
|
| 425 |
+
if c == "]":
|
| 426 |
+
return pos + 1, array
|
| 427 |
+
if c != ",":
|
| 428 |
+
raise suffixed_err(src, pos, "Unclosed array")
|
| 429 |
+
pos += 1
|
| 430 |
+
|
| 431 |
+
pos = skip_comments_and_array_ws(src, pos)
|
| 432 |
+
if src.startswith("]", pos):
|
| 433 |
+
return pos + 1, array
|
| 434 |
+
|
| 435 |
+
|
| 436 |
+
def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict]:
|
| 437 |
+
pos += 1
|
| 438 |
+
nested_dict = NestedDict()
|
| 439 |
+
flags = Flags()
|
| 440 |
+
|
| 441 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 442 |
+
if src.startswith("}", pos):
|
| 443 |
+
return pos + 1, nested_dict.dict
|
| 444 |
+
while True:
|
| 445 |
+
pos, key, value = parse_key_value_pair(src, pos, parse_float)
|
| 446 |
+
key_parent, key_stem = key[:-1], key[-1]
|
| 447 |
+
if flags.is_(key, Flags.FROZEN):
|
| 448 |
+
raise suffixed_err(src, pos, f"Cannot mutate immutable namespace {key}")
|
| 449 |
+
try:
|
| 450 |
+
nest = nested_dict.get_or_create_nest(key_parent, access_lists=False)
|
| 451 |
+
except KeyError:
|
| 452 |
+
raise suffixed_err(src, pos, "Cannot overwrite a value") from None
|
| 453 |
+
if key_stem in nest:
|
| 454 |
+
raise suffixed_err(src, pos, f"Duplicate inline table key {key_stem!r}")
|
| 455 |
+
nest[key_stem] = value
|
| 456 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 457 |
+
c = src[pos : pos + 1]
|
| 458 |
+
if c == "}":
|
| 459 |
+
return pos + 1, nested_dict.dict
|
| 460 |
+
if c != ",":
|
| 461 |
+
raise suffixed_err(src, pos, "Unclosed inline table")
|
| 462 |
+
if isinstance(value, (dict, list)):
|
| 463 |
+
flags.set(key, Flags.FROZEN, recursive=True)
|
| 464 |
+
pos += 1
|
| 465 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 466 |
+
|
| 467 |
+
|
| 468 |
+
def parse_basic_str_escape(
|
| 469 |
+
src: str, pos: Pos, *, multiline: bool = False
|
| 470 |
+
) -> tuple[Pos, str]:
|
| 471 |
+
escape_id = src[pos : pos + 2]
|
| 472 |
+
pos += 2
|
| 473 |
+
if multiline and escape_id in {"\\ ", "\\\t", "\\\n"}:
|
| 474 |
+
# Skip whitespace until next non-whitespace character or end of
|
| 475 |
+
# the doc. Error if non-whitespace is found before newline.
|
| 476 |
+
if escape_id != "\\\n":
|
| 477 |
+
pos = skip_chars(src, pos, TOML_WS)
|
| 478 |
+
try:
|
| 479 |
+
char = src[pos]
|
| 480 |
+
except IndexError:
|
| 481 |
+
return pos, ""
|
| 482 |
+
if char != "\n":
|
| 483 |
+
raise suffixed_err(src, pos, "Unescaped '\\' in a string")
|
| 484 |
+
pos += 1
|
| 485 |
+
pos = skip_chars(src, pos, TOML_WS_AND_NEWLINE)
|
| 486 |
+
return pos, ""
|
| 487 |
+
if escape_id == "\\u":
|
| 488 |
+
return parse_hex_char(src, pos, 4)
|
| 489 |
+
if escape_id == "\\U":
|
| 490 |
+
return parse_hex_char(src, pos, 8)
|
| 491 |
+
try:
|
| 492 |
+
return pos, BASIC_STR_ESCAPE_REPLACEMENTS[escape_id]
|
| 493 |
+
except KeyError:
|
| 494 |
+
raise suffixed_err(src, pos, "Unescaped '\\' in a string") from None
|
| 495 |
+
|
| 496 |
+
|
| 497 |
+
def parse_basic_str_escape_multiline(src: str, pos: Pos) -> tuple[Pos, str]:
|
| 498 |
+
return parse_basic_str_escape(src, pos, multiline=True)
|
| 499 |
+
|
| 500 |
+
|
| 501 |
+
def parse_hex_char(src: str, pos: Pos, hex_len: int) -> tuple[Pos, str]:
|
| 502 |
+
hex_str = src[pos : pos + hex_len]
|
| 503 |
+
if len(hex_str) != hex_len or not HEXDIGIT_CHARS.issuperset(hex_str):
|
| 504 |
+
raise suffixed_err(src, pos, "Invalid hex value")
|
| 505 |
+
pos += hex_len
|
| 506 |
+
hex_int = int(hex_str, 16)
|
| 507 |
+
if not is_unicode_scalar_value(hex_int):
|
| 508 |
+
raise suffixed_err(src, pos, "Escaped character is not a Unicode scalar value")
|
| 509 |
+
return pos, chr(hex_int)
|
| 510 |
+
|
| 511 |
+
|
| 512 |
+
def parse_literal_str(src: str, pos: Pos) -> tuple[Pos, str]:
|
| 513 |
+
pos += 1 # Skip starting apostrophe
|
| 514 |
+
start_pos = pos
|
| 515 |
+
pos = skip_until(
|
| 516 |
+
src, pos, "'", error_on=ILLEGAL_LITERAL_STR_CHARS, error_on_eof=True
|
| 517 |
+
)
|
| 518 |
+
return pos + 1, src[start_pos:pos] # Skip ending apostrophe
|
| 519 |
+
|
| 520 |
+
|
| 521 |
+
def parse_multiline_str(src: str, pos: Pos, *, literal: bool) -> tuple[Pos, str]:
|
| 522 |
+
pos += 3
|
| 523 |
+
if src.startswith("\n", pos):
|
| 524 |
+
pos += 1
|
| 525 |
+
|
| 526 |
+
if literal:
|
| 527 |
+
delim = "'"
|
| 528 |
+
end_pos = skip_until(
|
| 529 |
+
src,
|
| 530 |
+
pos,
|
| 531 |
+
"'''",
|
| 532 |
+
error_on=ILLEGAL_MULTILINE_LITERAL_STR_CHARS,
|
| 533 |
+
error_on_eof=True,
|
| 534 |
+
)
|
| 535 |
+
result = src[pos:end_pos]
|
| 536 |
+
pos = end_pos + 3
|
| 537 |
+
else:
|
| 538 |
+
delim = '"'
|
| 539 |
+
pos, result = parse_basic_str(src, pos, multiline=True)
|
| 540 |
+
|
| 541 |
+
# Add at maximum two extra apostrophes/quotes if the end sequence
|
| 542 |
+
# is 4 or 5 chars long instead of just 3.
|
| 543 |
+
if not src.startswith(delim, pos):
|
| 544 |
+
return pos, result
|
| 545 |
+
pos += 1
|
| 546 |
+
if not src.startswith(delim, pos):
|
| 547 |
+
return pos, result + delim
|
| 548 |
+
pos += 1
|
| 549 |
+
return pos, result + (delim * 2)
|
| 550 |
+
|
| 551 |
+
|
| 552 |
+
def parse_basic_str(src: str, pos: Pos, *, multiline: bool) -> tuple[Pos, str]:
|
| 553 |
+
if multiline:
|
| 554 |
+
error_on = ILLEGAL_MULTILINE_BASIC_STR_CHARS
|
| 555 |
+
parse_escapes = parse_basic_str_escape_multiline
|
| 556 |
+
else:
|
| 557 |
+
error_on = ILLEGAL_BASIC_STR_CHARS
|
| 558 |
+
parse_escapes = parse_basic_str_escape
|
| 559 |
+
result = ""
|
| 560 |
+
start_pos = pos
|
| 561 |
+
while True:
|
| 562 |
+
try:
|
| 563 |
+
char = src[pos]
|
| 564 |
+
except IndexError:
|
| 565 |
+
raise suffixed_err(src, pos, "Unterminated string") from None
|
| 566 |
+
if char == '"':
|
| 567 |
+
if not multiline:
|
| 568 |
+
return pos + 1, result + src[start_pos:pos]
|
| 569 |
+
if src.startswith('"""', pos):
|
| 570 |
+
return pos + 3, result + src[start_pos:pos]
|
| 571 |
+
pos += 1
|
| 572 |
+
continue
|
| 573 |
+
if char == "\\":
|
| 574 |
+
result += src[start_pos:pos]
|
| 575 |
+
pos, parsed_escape = parse_escapes(src, pos)
|
| 576 |
+
result += parsed_escape
|
| 577 |
+
start_pos = pos
|
| 578 |
+
continue
|
| 579 |
+
if char in error_on:
|
| 580 |
+
raise suffixed_err(src, pos, f"Illegal character {char!r}")
|
| 581 |
+
pos += 1
|
| 582 |
+
|
| 583 |
+
|
| 584 |
+
def parse_value( # noqa: C901
|
| 585 |
+
src: str, pos: Pos, parse_float: ParseFloat
|
| 586 |
+
) -> tuple[Pos, Any]:
|
| 587 |
+
try:
|
| 588 |
+
char: str | None = src[pos]
|
| 589 |
+
except IndexError:
|
| 590 |
+
char = None
|
| 591 |
+
|
| 592 |
+
# IMPORTANT: order conditions based on speed of checking and likelihood
|
| 593 |
+
|
| 594 |
+
# Basic strings
|
| 595 |
+
if char == '"':
|
| 596 |
+
if src.startswith('"""', pos):
|
| 597 |
+
return parse_multiline_str(src, pos, literal=False)
|
| 598 |
+
return parse_one_line_basic_str(src, pos)
|
| 599 |
+
|
| 600 |
+
# Literal strings
|
| 601 |
+
if char == "'":
|
| 602 |
+
if src.startswith("'''", pos):
|
| 603 |
+
return parse_multiline_str(src, pos, literal=True)
|
| 604 |
+
return parse_literal_str(src, pos)
|
| 605 |
+
|
| 606 |
+
# Booleans
|
| 607 |
+
if char == "t":
|
| 608 |
+
if src.startswith("true", pos):
|
| 609 |
+
return pos + 4, True
|
| 610 |
+
if char == "f":
|
| 611 |
+
if src.startswith("false", pos):
|
| 612 |
+
return pos + 5, False
|
| 613 |
+
|
| 614 |
+
# Arrays
|
| 615 |
+
if char == "[":
|
| 616 |
+
return parse_array(src, pos, parse_float)
|
| 617 |
+
|
| 618 |
+
# Inline tables
|
| 619 |
+
if char == "{":
|
| 620 |
+
return parse_inline_table(src, pos, parse_float)
|
| 621 |
+
|
| 622 |
+
# Dates and times
|
| 623 |
+
datetime_match = RE_DATETIME.match(src, pos)
|
| 624 |
+
if datetime_match:
|
| 625 |
+
try:
|
| 626 |
+
datetime_obj = match_to_datetime(datetime_match)
|
| 627 |
+
except ValueError as e:
|
| 628 |
+
raise suffixed_err(src, pos, "Invalid date or datetime") from e
|
| 629 |
+
return datetime_match.end(), datetime_obj
|
| 630 |
+
localtime_match = RE_LOCALTIME.match(src, pos)
|
| 631 |
+
if localtime_match:
|
| 632 |
+
return localtime_match.end(), match_to_localtime(localtime_match)
|
| 633 |
+
|
| 634 |
+
# Integers and "normal" floats.
|
| 635 |
+
# The regex will greedily match any type starting with a decimal
|
| 636 |
+
# char, so needs to be located after handling of dates and times.
|
| 637 |
+
number_match = RE_NUMBER.match(src, pos)
|
| 638 |
+
if number_match:
|
| 639 |
+
return number_match.end(), match_to_number(number_match, parse_float)
|
| 640 |
+
|
| 641 |
+
# Special floats
|
| 642 |
+
first_three = src[pos : pos + 3]
|
| 643 |
+
if first_three in {"inf", "nan"}:
|
| 644 |
+
return pos + 3, parse_float(first_three)
|
| 645 |
+
first_four = src[pos : pos + 4]
|
| 646 |
+
if first_four in {"-inf", "+inf", "-nan", "+nan"}:
|
| 647 |
+
return pos + 4, parse_float(first_four)
|
| 648 |
+
|
| 649 |
+
raise suffixed_err(src, pos, "Invalid value")
|
| 650 |
+
|
| 651 |
+
|
| 652 |
+
def suffixed_err(src: str, pos: Pos, msg: str) -> TOMLDecodeError:
|
| 653 |
+
"""Return a `TOMLDecodeError` where error message is suffixed with
|
| 654 |
+
coordinates in source."""
|
| 655 |
+
|
| 656 |
+
def coord_repr(src: str, pos: Pos) -> str:
|
| 657 |
+
if pos >= len(src):
|
| 658 |
+
return "end of document"
|
| 659 |
+
line = src.count("\n", 0, pos) + 1
|
| 660 |
+
if line == 1:
|
| 661 |
+
column = pos + 1
|
| 662 |
+
else:
|
| 663 |
+
column = pos - src.rindex("\n", 0, pos)
|
| 664 |
+
return f"line {line}, column {column}"
|
| 665 |
+
|
| 666 |
+
return TOMLDecodeError(f"{msg} (at {coord_repr(src, pos)})")
|
| 667 |
+
|
| 668 |
+
|
| 669 |
+
def is_unicode_scalar_value(codepoint: int) -> bool:
|
| 670 |
+
return (0 <= codepoint <= 55295) or (57344 <= codepoint <= 1114111)
|
| 671 |
+
|
| 672 |
+
|
| 673 |
+
def make_safe_parse_float(parse_float: ParseFloat) -> ParseFloat:
|
| 674 |
+
"""A decorator to make `parse_float` safe.
|
| 675 |
+
|
| 676 |
+
`parse_float` must not return dicts or lists, because these types
|
| 677 |
+
would be mixed with parsed TOML tables and arrays, thus confusing
|
| 678 |
+
the parser. The returned decorated callable raises `ValueError`
|
| 679 |
+
instead of returning illegal types.
|
| 680 |
+
"""
|
| 681 |
+
# The default `float` callable never returns illegal types. Optimize it.
|
| 682 |
+
if parse_float is float: # type: ignore[comparison-overlap]
|
| 683 |
+
return float
|
| 684 |
+
|
| 685 |
+
def safe_parse_float(float_str: str) -> Any:
|
| 686 |
+
float_value = parse_float(float_str)
|
| 687 |
+
if isinstance(float_value, (dict, list)):
|
| 688 |
+
raise ValueError("parse_float must not return dicts or lists")
|
| 689 |
+
return float_value
|
| 690 |
+
|
| 691 |
+
return safe_parse_float
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/_re.py
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SPDX-License-Identifier: MIT
|
| 2 |
+
# SPDX-FileCopyrightText: 2021 Taneli Hukkinen
|
| 3 |
+
# Licensed to PSF under a Contributor Agreement.
|
| 4 |
+
|
| 5 |
+
from __future__ import annotations
|
| 6 |
+
|
| 7 |
+
from datetime import date, datetime, time, timedelta, timezone, tzinfo
|
| 8 |
+
from functools import lru_cache
|
| 9 |
+
import re
|
| 10 |
+
from typing import Any
|
| 11 |
+
|
| 12 |
+
from ._types import ParseFloat
|
| 13 |
+
|
| 14 |
+
# E.g.
|
| 15 |
+
# - 00:32:00.999999
|
| 16 |
+
# - 00:32:00
|
| 17 |
+
_TIME_RE_STR = r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(?:\.([0-9]{1,6})[0-9]*)?"
|
| 18 |
+
|
| 19 |
+
RE_NUMBER = re.compile(
|
| 20 |
+
r"""
|
| 21 |
+
0
|
| 22 |
+
(?:
|
| 23 |
+
x[0-9A-Fa-f](?:_?[0-9A-Fa-f])* # hex
|
| 24 |
+
|
|
| 25 |
+
b[01](?:_?[01])* # bin
|
| 26 |
+
|
|
| 27 |
+
o[0-7](?:_?[0-7])* # oct
|
| 28 |
+
)
|
| 29 |
+
|
|
| 30 |
+
[+-]?(?:0|[1-9](?:_?[0-9])*) # dec, integer part
|
| 31 |
+
(?P<floatpart>
|
| 32 |
+
(?:\.[0-9](?:_?[0-9])*)? # optional fractional part
|
| 33 |
+
(?:[eE][+-]?[0-9](?:_?[0-9])*)? # optional exponent part
|
| 34 |
+
)
|
| 35 |
+
""",
|
| 36 |
+
flags=re.VERBOSE,
|
| 37 |
+
)
|
| 38 |
+
RE_LOCALTIME = re.compile(_TIME_RE_STR)
|
| 39 |
+
RE_DATETIME = re.compile(
|
| 40 |
+
rf"""
|
| 41 |
+
([0-9]{{4}})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) # date, e.g. 1988-10-27
|
| 42 |
+
(?:
|
| 43 |
+
[Tt ]
|
| 44 |
+
{_TIME_RE_STR}
|
| 45 |
+
(?:([Zz])|([+-])([01][0-9]|2[0-3]):([0-5][0-9]))? # optional time offset
|
| 46 |
+
)?
|
| 47 |
+
""",
|
| 48 |
+
flags=re.VERBOSE,
|
| 49 |
+
)
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def match_to_datetime(match: re.Match) -> datetime | date:
|
| 53 |
+
"""Convert a `RE_DATETIME` match to `datetime.datetime` or `datetime.date`.
|
| 54 |
+
|
| 55 |
+
Raises ValueError if the match does not correspond to a valid date
|
| 56 |
+
or datetime.
|
| 57 |
+
"""
|
| 58 |
+
(
|
| 59 |
+
year_str,
|
| 60 |
+
month_str,
|
| 61 |
+
day_str,
|
| 62 |
+
hour_str,
|
| 63 |
+
minute_str,
|
| 64 |
+
sec_str,
|
| 65 |
+
micros_str,
|
| 66 |
+
zulu_time,
|
| 67 |
+
offset_sign_str,
|
| 68 |
+
offset_hour_str,
|
| 69 |
+
offset_minute_str,
|
| 70 |
+
) = match.groups()
|
| 71 |
+
year, month, day = int(year_str), int(month_str), int(day_str)
|
| 72 |
+
if hour_str is None:
|
| 73 |
+
return date(year, month, day)
|
| 74 |
+
hour, minute, sec = int(hour_str), int(minute_str), int(sec_str)
|
| 75 |
+
micros = int(micros_str.ljust(6, "0")) if micros_str else 0
|
| 76 |
+
if offset_sign_str:
|
| 77 |
+
tz: tzinfo | None = cached_tz(
|
| 78 |
+
offset_hour_str, offset_minute_str, offset_sign_str
|
| 79 |
+
)
|
| 80 |
+
elif zulu_time:
|
| 81 |
+
tz = timezone.utc
|
| 82 |
+
else: # local date-time
|
| 83 |
+
tz = None
|
| 84 |
+
return datetime(year, month, day, hour, minute, sec, micros, tzinfo=tz)
|
| 85 |
+
|
| 86 |
+
|
| 87 |
+
@lru_cache(maxsize=None)
|
| 88 |
+
def cached_tz(hour_str: str, minute_str: str, sign_str: str) -> timezone:
|
| 89 |
+
sign = 1 if sign_str == "+" else -1
|
| 90 |
+
return timezone(
|
| 91 |
+
timedelta(
|
| 92 |
+
hours=sign * int(hour_str),
|
| 93 |
+
minutes=sign * int(minute_str),
|
| 94 |
+
)
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def match_to_localtime(match: re.Match) -> time:
|
| 99 |
+
hour_str, minute_str, sec_str, micros_str = match.groups()
|
| 100 |
+
micros = int(micros_str.ljust(6, "0")) if micros_str else 0
|
| 101 |
+
return time(int(hour_str), int(minute_str), int(sec_str), micros)
|
| 102 |
+
|
| 103 |
+
|
| 104 |
+
def match_to_number(match: re.Match, parse_float: ParseFloat) -> Any:
|
| 105 |
+
if match.group("floatpart"):
|
| 106 |
+
return parse_float(match.group())
|
| 107 |
+
return int(match.group(), 0)
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/_types.py
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# SPDX-License-Identifier: MIT
|
| 2 |
+
# SPDX-FileCopyrightText: 2021 Taneli Hukkinen
|
| 3 |
+
# Licensed to PSF under a Contributor Agreement.
|
| 4 |
+
|
| 5 |
+
from typing import Any, Callable, Tuple
|
| 6 |
+
|
| 7 |
+
# Type annotations
|
| 8 |
+
ParseFloat = Callable[[str], Any]
|
| 9 |
+
Key = Tuple[str, ...]
|
| 10 |
+
Pos = int
|
.venv/lib/python3.11/site-packages/pip/_vendor/tomli/py.typed
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
# Marker file for PEP 561
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (3.7 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-311.pyc
ADDED
|
Binary file (18.3 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-311.pyc
ADDED
|
Binary file (214 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-311.pyc
ADDED
|
Binary file (22.1 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-311.pyc
ADDED
|
Binary file (38.3 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-311.pyc
ADDED
|
Binary file (16.1 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-311.pyc
ADDED
|
Binary file (11.4 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-311.pyc
ADDED
|
Binary file (4.49 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-311.pyc
ADDED
|
Binary file (21.6 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-311.pyc
ADDED
|
Binary file (7.66 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-311.pyc
ADDED
|
Binary file (36.5 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-311.pyc
ADDED
|
Binary file (200 Bytes). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-311.pyc
ADDED
|
Binary file (36.8 kB). View file
|
|
|
.venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/__init__.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import absolute_import
|
| 2 |
+
|
| 3 |
+
# For backwards compatibility, provide imports that used to be here.
|
| 4 |
+
from .connection import is_connection_dropped
|
| 5 |
+
from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers
|
| 6 |
+
from .response import is_fp_closed
|
| 7 |
+
from .retry import Retry
|
| 8 |
+
from .ssl_ import (
|
| 9 |
+
ALPN_PROTOCOLS,
|
| 10 |
+
HAS_SNI,
|
| 11 |
+
IS_PYOPENSSL,
|
| 12 |
+
IS_SECURETRANSPORT,
|
| 13 |
+
PROTOCOL_TLS,
|
| 14 |
+
SSLContext,
|
| 15 |
+
assert_fingerprint,
|
| 16 |
+
resolve_cert_reqs,
|
| 17 |
+
resolve_ssl_version,
|
| 18 |
+
ssl_wrap_socket,
|
| 19 |
+
)
|
| 20 |
+
from .timeout import Timeout, current_time
|
| 21 |
+
from .url import Url, get_host, parse_url, split_first
|
| 22 |
+
from .wait import wait_for_read, wait_for_write
|
| 23 |
+
|
| 24 |
+
__all__ = (
|
| 25 |
+
"HAS_SNI",
|
| 26 |
+
"IS_PYOPENSSL",
|
| 27 |
+
"IS_SECURETRANSPORT",
|
| 28 |
+
"SSLContext",
|
| 29 |
+
"PROTOCOL_TLS",
|
| 30 |
+
"ALPN_PROTOCOLS",
|
| 31 |
+
"Retry",
|
| 32 |
+
"Timeout",
|
| 33 |
+
"Url",
|
| 34 |
+
"assert_fingerprint",
|
| 35 |
+
"current_time",
|
| 36 |
+
"is_connection_dropped",
|
| 37 |
+
"is_fp_closed",
|
| 38 |
+
"get_host",
|
| 39 |
+
"parse_url",
|
| 40 |
+
"make_headers",
|
| 41 |
+
"resolve_cert_reqs",
|
| 42 |
+
"resolve_ssl_version",
|
| 43 |
+
"split_first",
|
| 44 |
+
"ssl_wrap_socket",
|
| 45 |
+
"wait_for_read",
|
| 46 |
+
"wait_for_write",
|
| 47 |
+
"SKIP_HEADER",
|
| 48 |
+
"SKIPPABLE_HEADERS",
|
| 49 |
+
)
|