From webhook-mailer at python.org Thu Apr 1 02:00:49 2021 From: webhook-mailer at python.org (methane) Date: Thu, 01 Apr 2021 06:00:49 -0000 Subject: [Python-checkins] Fix typos in 3.10 "What's new" (GH-25104) Message-ID: https://github.com/python/cpython/commit/18701a0608b66a8fa147b31243a95de8d828211c commit: 18701a0608b66a8fa147b31243a95de8d828211c branch: master author: Don Kirkby committer: methane date: 2021-04-01T15:00:30+09:00 summary: Fix typos in 3.10 "What's new" (GH-25104) files: M Doc/whatsnew/3.10.rst diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index ea2834bc76145..a8ff56745c758 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -420,7 +420,7 @@ Several other key features: - Mapping patterns: ``{"bandwidth": b, "latency": l}`` captures the ``"bandwidth"`` and ``"latency"`` values from a dict. Unlike sequence patterns, extra keys are ignored. A wildcard ``**rest`` is also - supported. (But ``**_`` would be redundant, so it not allowed.) + supported. (But ``**_`` would be redundant, so is not allowed.) - Subpatterns may be captured using the ``as`` keyword:: @@ -462,13 +462,13 @@ Optional ``EncodingWarning`` and ``encoding="locale"`` option The default encoding of :class:`TextIOWrapper` and :func:`open` is platform and locale dependent. Since UTF-8 is used on most Unix platforms, omitting ``encoding`` option when opening UTF-8 files -(e.g. JSON, YAML, TOML, Markdown) is very common bug. For example:: +(e.g. JSON, YAML, TOML, Markdown) is a very common bug. For example:: # BUG: "rb" mode or encoding="utf-8" should be used. with open("data.json") as f: - data = json.laod(f) + data = json.load(f) -To find this type of bugs, optional ``EncodingWarning`` is added. +To find this type of bug, optional ``EncodingWarning`` is added. It is emitted when :data:`sys.flags.warn_default_encoding ` is true and locale-specific default encoding is used. From webhook-mailer at python.org Thu Apr 1 02:10:46 2021 From: webhook-mailer at python.org (methane) Date: Thu, 01 Apr 2021 06:10:46 -0000 Subject: [Python-checkins] Doc: io: Remove "In-memory streams" section (GH-24927) Message-ID: https://github.com/python/cpython/commit/4ea8b24027a514e47bc664e98070f2f2c04cff3f commit: 4ea8b24027a514e47bc664e98070f2f2c04cff3f branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: methane date: 2021-04-01T15:10:38+09:00 summary: Doc: io: Remove "In-memory streams" section (GH-24927) (cherry picked from commit b045cdaf341f80b7d1e4804b932b6e415600c2e1) Co-authored-by: Inada Naoki files: M Doc/library/io.rst diff --git a/Doc/library/io.rst b/Doc/library/io.rst index 32151a0ace458..6d51aa1c8e31d 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -155,16 +155,6 @@ High-level Module Interface when an unsupported operation is called on a stream. -In-memory streams -^^^^^^^^^^^^^^^^^ - -It is also possible to use a :class:`str` or :term:`bytes-like object` as a -file for both reading and writing. For strings :class:`StringIO` can be used -like a file opened in text mode. :class:`BytesIO` can be used like a file -opened in binary mode. Both provide full read-write capabilities with random -access. - - .. seealso:: :mod:`sys` From webhook-mailer at python.org Thu Apr 1 02:11:53 2021 From: webhook-mailer at python.org (methane) Date: Thu, 01 Apr 2021 06:11:53 -0000 Subject: [Python-checkins] Doc: io: Remove "In-memory streams" section (GH-24927) Message-ID: https://github.com/python/cpython/commit/244fa236e422020ad1a0c1be8d5b53496bd3d0f2 commit: 244fa236e422020ad1a0c1be8d5b53496bd3d0f2 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: methane date: 2021-04-01T15:11:49+09:00 summary: Doc: io: Remove "In-memory streams" section (GH-24927) (cherry picked from commit b045cdaf341f80b7d1e4804b932b6e415600c2e1) Co-authored-by: Inada Naoki files: M Doc/library/io.rst diff --git a/Doc/library/io.rst b/Doc/library/io.rst index aecbec56866d7..96e02e839ae65 100644 --- a/Doc/library/io.rst +++ b/Doc/library/io.rst @@ -155,16 +155,6 @@ High-level Module Interface when an unsupported operation is called on a stream. -In-memory streams -^^^^^^^^^^^^^^^^^ - -It is also possible to use a :class:`str` or :term:`bytes-like object` as a -file for both reading and writing. For strings :class:`StringIO` can be used -like a file opened in text mode. :class:`BytesIO` can be used like a file -opened in binary mode. Both provide full read-write capabilities with random -access. - - .. seealso:: :mod:`sys` From webhook-mailer at python.org Thu Apr 1 05:30:06 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Apr 2021 09:30:06 -0000 Subject: [Python-checkins] bpo-43688: Run make regen-limited-abi (GH-25134) Message-ID: https://github.com/python/cpython/commit/baf10da75072d1f8ec714d3c2c8550d34db343a9 commit: baf10da75072d1f8ec714d3c2c8550d34db343a9 branch: master author: Victor Stinner committer: vstinner date: 2021-04-01T11:29:46+02:00 summary: bpo-43688: Run make regen-limited-abi (GH-25134) files: M Doc/data/stable_abi.dat diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index 3adee103bce2d..ed20521b7f2d6 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -192,6 +192,7 @@ PyExc_ConnectionRefusedError PyExc_ConnectionResetError PyExc_DeprecationWarning PyExc_EOFError +PyExc_EncodingWarning PyExc_EnvironmentError PyExc_Exception PyExc_FileExistsError @@ -615,6 +616,7 @@ PyType_GetFlags PyType_GetModule PyType_GetModuleState PyType_GetSlot +PyType_HasFeature PyType_IsSubtype PyType_Modified PyType_Ready From webhook-mailer at python.org Thu Apr 1 08:14:09 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Apr 2021 12:14:09 -0000 Subject: [Python-checkins] bpo-43690: stable_abi.py no longer parses macros (GH-25136) Message-ID: https://github.com/python/cpython/commit/61092a99c4840f36dbde8457cb566fc3c012930f commit: 61092a99c4840f36dbde8457cb566fc3c012930f branch: master author: Victor Stinner committer: vstinner date: 2021-04-01T14:13:42+02:00 summary: bpo-43690: stable_abi.py no longer parses macros (GH-25136) The stable_abi.py script no longer parse macros. Macro targets can be static inline functions which are not part of the stable ABI, only part of the limited C API. Run "make regen-limited-abi" to exclude PyType_HasFeature from Doc/data/stable_abi.dat. files: M Doc/data/stable_abi.dat M Tools/scripts/stable_abi.py diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat index ed20521b7f2d6..cd9e384eaea2b 100644 --- a/Doc/data/stable_abi.dat +++ b/Doc/data/stable_abi.dat @@ -616,7 +616,6 @@ PyType_GetFlags PyType_GetModule PyType_GetModuleState PyType_GetSlot -PyType_HasFeature PyType_IsSubtype PyType_Modified PyType_Ready diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index 0f9e36547e765..14fcf2f56a207 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -112,11 +112,10 @@ def generate_limited_api_symbols(args): stable_data, stable_exported_data, stable_functions = get_limited_api_definitions( headers ) - macros = get_limited_api_macros(headers) stable_symbols = { symbol - for symbol in (stable_functions | stable_exported_data | stable_data | macros) + for symbol in (stable_functions | stable_exported_data | stable_data) if symbol.startswith("Py") and symbol in available_symbols } with open(args.output_file, "w") as output_file: @@ -128,36 +127,6 @@ def generate_limited_api_symbols(args): output_file.write(f"{symbol}\n") -def get_limited_api_macros(headers): - """Run the preprocesor over all the header files in "Include" setting - "-DPy_LIMITED_API" to the correct value for the running version of the interpreter - and extracting all macro definitions (via adding -dM to the compiler arguments). - """ - - preprocesor_output_with_macros = subprocess.check_output( - sysconfig.get_config_var("CC").split() - + [ - # Prevent the expansion of the exported macros so we can capture them later - "-DSIZEOF_WCHAR_T=4", # The actual value is not important - f"-DPy_LIMITED_API={sys.version_info.major << 24 | sys.version_info.minor << 16}", - "-I.", - "-I./Include", - "-dM", - "-E", - ] - + [str(file) for file in headers], - text=True, - stderr=subprocess.DEVNULL, - ) - - return { - target - for _, target in re.findall( - r"#define (\w+)\s*(?:\(.*?\))?\s+(\w+)", preprocesor_output_with_macros - ) - } - - def get_limited_api_definitions(headers): """Run the preprocesor over all the header files in "Include" setting "-DPy_LIMITED_API" to the correct value for the running version of the interpreter. From webhook-mailer at python.org Thu Apr 1 09:09:51 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Apr 2021 13:09:51 -0000 Subject: [Python-checkins] bpo-43688: Fix Py_LIMITED_API version of xxlimited (GH-25135) Message-ID: https://github.com/python/cpython/commit/2ac0515027699b5694d9a6ff40f1ddaba82c74c2 commit: 2ac0515027699b5694d9a6ff40f1ddaba82c74c2 branch: master author: Victor Stinner committer: vstinner date: 2021-04-01T15:09:33+02:00 summary: bpo-43688: Fix Py_LIMITED_API version of xxlimited (GH-25135) xxlimited targets Python 3.10, not Python 3.16: fix the hexadecimal version number used in the Py_LIMITED_API macro. files: M Include/methodobject.h M PCbuild/xxlimited.vcxproj M setup.py diff --git a/Include/methodobject.h b/Include/methodobject.h index 7aa4e41ccca1f..9ffe8e1a3ddfc 100644 --- a/Include/methodobject.h +++ b/Include/methodobject.h @@ -79,15 +79,15 @@ PyAPI_FUNC(PyObject *) PyCMethod_New(PyMethodDef *, PyObject *, #define METH_COEXIST 0x0040 -#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x03100000 -#define METH_FASTCALL 0x0080 +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030a0000 +# define METH_FASTCALL 0x0080 #endif /* This bit is preserved for Stackless Python */ #ifdef STACKLESS -#define METH_STACKLESS 0x0100 +# define METH_STACKLESS 0x0100 #else -#define METH_STACKLESS 0x0000 +# define METH_STACKLESS 0x0000 #endif /* METH_METHOD means the function stores an diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj index ece169127a286..61e4e5784e7ab 100644 --- a/PCbuild/xxlimited.vcxproj +++ b/PCbuild/xxlimited.vcxproj @@ -94,7 +94,7 @@ - %(PreprocessorDefinitions);Py_LIMITED_API=0x03100000 + %(PreprocessorDefinitions);Py_LIMITED_API=0x030A0000 wsock32.lib;%(AdditionalDependencies) diff --git a/setup.py b/setup.py index e3fbd78bc08b8..75bd16375063a 100644 --- a/setup.py +++ b/setup.py @@ -1867,7 +1867,7 @@ def detect_modules(self): if 'd' not in sysconfig.get_config_var('ABIFLAGS'): # Non-debug mode: Build xxlimited with limited API self.add(Extension('xxlimited', ['xxlimited.c'], - define_macros=[('Py_LIMITED_API', '0x03100000')])) + define_macros=[('Py_LIMITED_API', '0x030a0000')])) self.add(Extension('xxlimited_35', ['xxlimited_35.c'], define_macros=[('Py_LIMITED_API', '0x03050000')])) else: From webhook-mailer at python.org Thu Apr 1 11:00:42 2021 From: webhook-mailer at python.org (markshannon) Date: Thu, 01 Apr 2021 15:00:42 -0000 Subject: [Python-checkins] bpo-27129: Use instruction offsets, not byte offsets, in bytecode and internally. (GH-25069) Message-ID: https://github.com/python/cpython/commit/fcb55c0037baab6f98f91ee38ce84b6f874f034a commit: fcb55c0037baab6f98f91ee38ce84b6f874f034a branch: master author: Mark Shannon committer: markshannon date: 2021-04-01T16:00:31+01:00 summary: bpo-27129: Use instruction offsets, not byte offsets, in bytecode and internally. (GH-25069) * Use instruction offset, rather than bytecode offset. Streamlines interpreter dispatch a bit, and removes most EXTENDED_ARGs for jumps. * Change some uses of PyCode_Addr2Line to PyFrame_GetLineNumber files: A Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst M Lib/dis.py M Lib/importlib/_bootstrap_external.py M Lib/test/test_dis.py M Objects/codeobject.c M Objects/frameobject.c M Objects/genobject.c M Python/ceval.c M Python/compile.c M Python/importlib.h M Python/importlib_external.h M Python/importlib_zipimport.h M Python/traceback.c M Tools/gdb/libpython.py diff --git a/Lib/dis.py b/Lib/dis.py index ccbd65be73255..3fee1ce27725c 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -338,8 +338,11 @@ def _get_instructions_bytes(code, varnames=None, names=None, constants=None, argval, argrepr = _get_const_info(arg, constants) elif op in hasname: argval, argrepr = _get_name_info(arg, names) + elif op in hasjabs: + argval = arg*2 + argrepr = "to " + repr(argval) elif op in hasjrel: - argval = offset + 2 + arg + argval = offset + 2 + arg*2 argrepr = "to " + repr(argval) elif op in haslocal: argval, argrepr = _get_name_info(arg, varnames) @@ -437,9 +440,9 @@ def findlabels(code): for offset, op, arg in _unpack_opargs(code): if arg is not None: if op in hasjrel: - label = offset + 2 + arg + label = offset + 2 + arg*2 elif op in hasjabs: - label = arg + label = arg*2 else: continue if label not in labels: diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index bf7c2686037d7..6c3e0317b7d9f 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -314,6 +314,7 @@ def _write_atomic(path, data, mode=0o666): # Python 3.10a2 3432 (Function annotation for MAKE_FUNCTION is changed from dict to tuple bpo-42202) # Python 3.10a2 3433 (RERAISE restores f_lasti if oparg != 0) # Python 3.10a6 3434 (PEP 634: Structural Pattern Matching) +# Python 3.10a7 3435 Use instruction offsets (as opposed to byte offsets). # # MAGIC must change whenever the bytecode emitted by the compiler may no diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index e342a14bf0156..19e5c0f633502 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -127,10 +127,10 @@ def bug708901(): %3d 6 CALL_FUNCTION 2 8 GET_ITER - >> 10 FOR_ITER 4 (to 16) + >> 10 FOR_ITER 2 (to 16) 12 STORE_FAST 0 (res) -%3d 14 JUMP_ABSOLUTE 10 +%3d 14 JUMP_ABSOLUTE 5 (to 10) %3d >> 16 LOAD_CONST 0 (None) 18 RETURN_VALUE @@ -276,11 +276,11 @@ def bug42562(): 10 INPLACE_ADD 12 STORE_NAME 0 (x) - 2 14 JUMP_ABSOLUTE 6 + 2 14 JUMP_ABSOLUTE 3 (to 6) """ dis_traceback = """\ -%3d 0 SETUP_FINALLY 14 (to 16) +%3d 0 SETUP_FINALLY 7 (to 16) %3d 2 LOAD_CONST 1 (1) 4 LOAD_CONST 2 (0) @@ -293,11 +293,11 @@ def bug42562(): %3d >> 16 DUP_TOP 18 LOAD_GLOBAL 0 (Exception) - 20 JUMP_IF_NOT_EXC_MATCH 58 + 20 JUMP_IF_NOT_EXC_MATCH 29 (to 58) 22 POP_TOP 24 STORE_FAST 0 (e) 26 POP_TOP - 28 SETUP_FINALLY 20 (to 50) + 28 SETUP_FINALLY 10 (to 50) %3d 30 LOAD_FAST 0 (e) 32 LOAD_ATTR 1 (__traceback__) @@ -358,7 +358,7 @@ def _tryfinallyconst(b): b() dis_tryfinally = """\ -%3d 0 SETUP_FINALLY 12 (to 14) +%3d 0 SETUP_FINALLY 6 (to 14) %3d 2 LOAD_FAST 0 (a) 4 POP_BLOCK @@ -377,7 +377,7 @@ def _tryfinallyconst(b): ) dis_tryfinallyconst = """\ -%3d 0 SETUP_FINALLY 12 (to 14) +%3d 0 SETUP_FINALLY 6 (to 14) %3d 2 POP_BLOCK @@ -450,13 +450,13 @@ def foo(x): Disassembly of at 0x..., file "%s", line %d>: %3d 0 BUILD_LIST 0 2 LOAD_FAST 0 (.0) - >> 4 FOR_ITER 12 (to 18) + >> 4 FOR_ITER 6 (to 18) 6 STORE_FAST 1 (z) 8 LOAD_DEREF 0 (x) 10 LOAD_FAST 1 (z) 12 BINARY_ADD 14 LIST_APPEND 2 - 16 JUMP_ABSOLUTE 4 + 16 JUMP_ABSOLUTE 2 (to 4) >> 18 RETURN_VALUE """ % (dis_nested_1, __file__, @@ -1009,7 +1009,7 @@ def jumpy(): Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=10, argrepr='10', offset=2, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=4, starts_line=None, is_jump_target=False), Instruction(opname='GET_ITER', opcode=68, arg=None, argval=None, argrepr='', offset=6, starts_line=None, is_jump_target=False), - Instruction(opname='FOR_ITER', opcode=93, arg=34, argval=44, argrepr='to 44', offset=8, starts_line=None, is_jump_target=True), + Instruction(opname='FOR_ITER', opcode=93, arg=17, argval=44, argrepr='to 44', offset=8, starts_line=None, is_jump_target=True), Instruction(opname='STORE_FAST', opcode=125, arg=0, argval='i', argrepr='i', offset=10, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=12, starts_line=4, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=14, starts_line=None, is_jump_target=False), @@ -1018,21 +1018,21 @@ def jumpy(): Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=20, starts_line=5, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=22, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=24, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=30, argval=30, argrepr='', offset=26, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=8, argval=8, argrepr='', offset=28, starts_line=6, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=15, argval=30, argrepr='to 30', offset=26, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=28, starts_line=6, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=30, starts_line=7, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=32, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=34, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=42, argval=42, argrepr='', offset=36, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=21, argval=42, argrepr='to 42', offset=36, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=38, starts_line=8, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=52, argrepr='', offset=40, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=8, argval=8, argrepr='', offset=42, starts_line=7, is_jump_target=True), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=40, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=4, argval=8, argrepr='to 8', offset=42, starts_line=7, is_jump_target=True), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=44, starts_line=10, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=46, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=48, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=50, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=52, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=96, argval=96, argrepr='', offset=54, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=48, argval=96, argrepr='to 96', offset=54, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=56, starts_line=12, is_jump_target=True), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=58, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=60, starts_line=None, is_jump_target=False), @@ -1044,30 +1044,30 @@ def jumpy(): Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=72, starts_line=14, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval=6, argrepr='6', offset=74, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=4, argval='>', argrepr='>', offset=76, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=82, argval=82, argrepr='', offset=78, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=52, argrepr='', offset=80, starts_line=15, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=41, argval=82, argrepr='to 82', offset=78, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=26, argval=52, argrepr='to 52', offset=80, starts_line=15, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=82, starts_line=16, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval=4, argrepr='4', offset=84, starts_line=None, is_jump_target=False), Instruction(opname='COMPARE_OP', opcode=107, arg=0, argval='<', argrepr='<', offset=86, starts_line=None, is_jump_target=False), - Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=92, argval=92, argrepr='', offset=88, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=104, argval=104, argrepr='', offset=90, starts_line=17, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_FALSE', opcode=114, arg=46, argval=92, argrepr='to 92', offset=88, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_ABSOLUTE', opcode=113, arg=52, argval=104, argrepr='to 104', offset=90, starts_line=17, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=92, starts_line=11, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=56, argval=56, argrepr='', offset=94, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=28, argval=56, argrepr='to 56', offset=94, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=96, starts_line=19, is_jump_target=True), Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=98, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=100, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=102, starts_line=None, is_jump_target=False), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=96, argval=202, argrepr='to 202', offset=104, starts_line=20, is_jump_target=True), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=12, argval=120, argrepr='to 120', offset=106, starts_line=None, is_jump_target=False), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=48, argval=202, argrepr='to 202', offset=104, starts_line=20, is_jump_target=True), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=6, argval=120, argrepr='to 120', offset=106, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=108, starts_line=21, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=110, starts_line=None, is_jump_target=False), Instruction(opname='BINARY_TRUE_DIVIDE', opcode=27, arg=None, argval=None, argrepr='', offset=112, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=114, starts_line=None, is_jump_target=False), Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=116, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=24, argval=144, argrepr='to 144', offset=118, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=12, argval=144, argrepr='to 144', offset=118, starts_line=None, is_jump_target=False), Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=120, starts_line=22, is_jump_target=True), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=2, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=122, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=212, argval=212, argrepr='', offset=124, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_IF_NOT_EXC_MATCH', opcode=121, arg=106, argval=212, argrepr='to 212', offset=124, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=126, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=128, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=130, starts_line=None, is_jump_target=False), @@ -1076,9 +1076,9 @@ def jumpy(): Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=136, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=138, starts_line=None, is_jump_target=False), Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=140, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=44, argval=188, argrepr='to 188', offset=142, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=22, argval=188, argrepr='to 188', offset=142, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=144, starts_line=25, is_jump_target=True), - Instruction(opname='SETUP_WITH', opcode=143, arg=24, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), + Instruction(opname='SETUP_WITH', opcode=143, arg=12, argval=172, argrepr='to 172', offset=146, starts_line=None, is_jump_target=False), Instruction(opname='STORE_FAST', opcode=125, arg=1, argval='dodgy', argrepr='dodgy', offset=148, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=150, starts_line=26, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=9, argval='Never reach this', argrepr="'Never reach this'", offset=152, starts_line=None, is_jump_target=False), @@ -1090,9 +1090,9 @@ def jumpy(): Instruction(opname='DUP_TOP', opcode=4, arg=None, argval=None, argrepr='', offset=164, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=3, argval=3, argrepr='', offset=166, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=168, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=16, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=8, argval=188, argrepr='to 188', offset=170, starts_line=None, is_jump_target=False), Instruction(opname='WITH_EXCEPT_START', opcode=49, arg=None, argval=None, argrepr='', offset=172, starts_line=None, is_jump_target=True), - Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=178, argval=178, argrepr='', offset=174, starts_line=None, is_jump_target=False), + Instruction(opname='POP_JUMP_IF_TRUE', opcode=115, arg=89, argval=178, argrepr='to 178', offset=174, starts_line=None, is_jump_target=False), Instruction(opname='RERAISE', opcode=119, arg=1, argval=1, argrepr='', offset=176, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=178, starts_line=None, is_jump_target=True), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=180, starts_line=None, is_jump_target=False), diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst new file mode 100644 index 0000000000000..b1d6c822ce32c --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst @@ -0,0 +1,3 @@ +The bytecode interpreter uses instruction, rather byte, offsets internally. +This reduces the number of EXTENDED_ARG instructions needed and streamlines +instruction dispatch a bit. diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 69cb31c1ababc..9bb49f108be0c 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -1246,7 +1246,7 @@ PyTypeObject PyCode_Type = { int PyCode_Addr2Line(PyCodeObject *co, int addrq) { - if (addrq == -1) { + if (addrq < 0) { return co->co_firstlineno; } assert(addrq >= 0 && addrq < PyBytes_GET_SIZE(co->co_code)); diff --git a/Objects/frameobject.c b/Objects/frameobject.c index a1413d79cc248..9687ba5c7a93f 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -15,7 +15,6 @@ static PyMemberDef frame_memberlist[] = { {"f_code", T_OBJECT, OFF(f_code), READONLY}, {"f_builtins", T_OBJECT, OFF(f_builtins), READONLY}, {"f_globals", T_OBJECT, OFF(f_globals), READONLY}, - {"f_lasti", T_INT, OFF(f_lasti), READONLY}, {"f_trace_lines", T_BOOL, OFF(f_trace_lines), 0}, {"f_trace_opcodes", T_BOOL, OFF(f_trace_opcodes), 0}, {NULL} /* Sentinel */ @@ -46,7 +45,7 @@ PyFrame_GetLineNumber(PyFrameObject *f) return f->f_lineno; } else { - return PyCode_Addr2Line(f->f_code, f->f_lasti); + return PyCode_Addr2Line(f->f_code, f->f_lasti*2); } } @@ -56,6 +55,15 @@ frame_getlineno(PyFrameObject *f, void *closure) return PyLong_FromLong(PyFrame_GetLineNumber(f)); } +static PyObject * +frame_getlasti(PyFrameObject *f, void *closure) +{ + if (f->f_lasti < 0) { + return PyLong_FromLong(-1); + } + return PyLong_FromLong(f->f_lasti*2); +} + /* Given the index of the effective opcode, scan back to construct the oparg with EXTENDED_ARG */ @@ -135,7 +143,7 @@ markblocks(PyCodeObject *code_obj, int len) case POP_JUMP_IF_FALSE: case POP_JUMP_IF_TRUE: case JUMP_IF_NOT_EXC_MATCH: - j = get_arg(code, i) / sizeof(_Py_CODEUNIT); + j = get_arg(code, i); assert(j < len); if (blocks[j] == -1 && j < i) { todo = 1; @@ -145,7 +153,7 @@ markblocks(PyCodeObject *code_obj, int len) blocks[i+1] = block_stack; break; case JUMP_ABSOLUTE: - j = get_arg(code, i) / sizeof(_Py_CODEUNIT); + j = get_arg(code, i); assert(j < len); if (blocks[j] == -1 && j < i) { todo = 1; @@ -154,7 +162,7 @@ markblocks(PyCodeObject *code_obj, int len) blocks[j] = block_stack; break; case SETUP_FINALLY: - j = get_arg(code, i) / sizeof(_Py_CODEUNIT) + i + 1; + j = get_arg(code, i) + i + 1; assert(j < len); except_stack = push_block(block_stack, Except); assert(blocks[j] == -1 || blocks[j] == except_stack); @@ -164,7 +172,7 @@ markblocks(PyCodeObject *code_obj, int len) break; case SETUP_WITH: case SETUP_ASYNC_WITH: - j = get_arg(code, i) / sizeof(_Py_CODEUNIT) + i + 1; + j = get_arg(code, i) + i + 1; assert(j < len); except_stack = push_block(block_stack, Except); assert(blocks[j] == -1 || blocks[j] == except_stack); @@ -173,7 +181,7 @@ markblocks(PyCodeObject *code_obj, int len) blocks[i+1] = block_stack; break; case JUMP_FORWARD: - j = get_arg(code, i) / sizeof(_Py_CODEUNIT) + i + 1; + j = get_arg(code, i) + i + 1; assert(j < len); assert(blocks[j] == -1 || blocks[j] == block_stack); blocks[j] = block_stack; @@ -186,7 +194,7 @@ markblocks(PyCodeObject *code_obj, int len) case FOR_ITER: blocks[i+1] = block_stack; block_stack = pop_block(block_stack); - j = get_arg(code, i) / sizeof(_Py_CODEUNIT) + i + 1; + j = get_arg(code, i) + i + 1; assert(j < len); assert(blocks[j] == -1 || blocks[j] == block_stack); blocks[j] = block_stack; @@ -422,7 +430,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno, void *Py_UNUSED(ignore int64_t target_block_stack = -1; int64_t best_block_stack = -1; int best_addr = -1; - int64_t start_block_stack = blocks[f->f_lasti/sizeof(_Py_CODEUNIT)]; + int64_t start_block_stack = blocks[f->f_lasti]; const char *msg = "cannot find bytecode for specified line"; for (int i = 0; i < len; i++) { if (lines[i] == new_lineno) { @@ -431,7 +439,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno, void *Py_UNUSED(ignore msg = NULL; if (target_block_stack > best_block_stack) { best_block_stack = target_block_stack; - best_addr = i*sizeof(_Py_CODEUNIT); + best_addr = i; } } else if (msg) { @@ -511,6 +519,7 @@ static PyGetSetDef frame_getsetlist[] = { {"f_lineno", (getter)frame_getlineno, (setter)frame_setlineno, NULL}, {"f_trace", (getter)frame_gettrace, (setter)frame_settrace, NULL}, + {"f_lasti", (getter)frame_getlasti, NULL, NULL}, {0} }; diff --git a/Objects/genobject.c b/Objects/genobject.c index 26e27cc84c871..69989678efec1 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -357,7 +357,7 @@ _PyGen_yf(PyGenObject *gen) return NULL; } - if (code[f->f_lasti + sizeof(_Py_CODEUNIT)] != YIELD_FROM) + if (code[(f->f_lasti+1)*sizeof(_Py_CODEUNIT)] != YIELD_FROM) return NULL; assert(f->f_stackdepth > 0); yf = f->f_valuestack[f->f_stackdepth-1]; @@ -481,7 +481,7 @@ _gen_throw(PyGenObject *gen, int close_on_genexit, Py_DECREF(ret); /* Termination repetition of YIELD_FROM */ assert(gen->gi_frame->f_lasti >= 0); - gen->gi_frame->f_lasti += sizeof(_Py_CODEUNIT); + gen->gi_frame->f_lasti += 1; if (_PyGen_FetchStopIterationValue(&val) == 0) { ret = gen_send(gen, val); Py_DECREF(val); diff --git a/Python/ceval.c b/Python/ceval.c index fde08a64e24a5..b9d784a629840 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1338,16 +1338,15 @@ eval_frame_handle_pending(PyThreadState *tstate) /* Code access macros */ /* The integer overflow is checked by an assertion below. */ -#define INSTR_OFFSET() \ - (sizeof(_Py_CODEUNIT) * (int)(next_instr - first_instr)) +#define INSTR_OFFSET() ((int)(next_instr - first_instr)) #define NEXTOPARG() do { \ _Py_CODEUNIT word = *next_instr; \ opcode = _Py_OPCODE(word); \ oparg = _Py_OPARG(word); \ next_instr++; \ } while (0) -#define JUMPTO(x) (next_instr = first_instr + (x) / sizeof(_Py_CODEUNIT)) -#define JUMPBY(x) (next_instr += (x) / sizeof(_Py_CODEUNIT)) +#define JUMPTO(x) (next_instr = first_instr + (x)) +#define JUMPBY(x) (next_instr += (x)) /* OpCode prediction macros Some opcodes tend to come in pairs thus making it possible to @@ -1699,11 +1698,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) to the beginning of the combined pair.) */ assert(f->f_lasti >= -1); - next_instr = first_instr; - if (f->f_lasti >= 0) { - assert(f->f_lasti % sizeof(_Py_CODEUNIT) == 0); - next_instr += f->f_lasti / sizeof(_Py_CODEUNIT) + 1; - } + next_instr = first_instr + f->f_lasti + 1; stack_pointer = f->f_valuestack + f->f_stackdepth; /* Set f->f_stackdepth to -1. * Update when returning or calling trace function. @@ -2627,8 +2622,8 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, PyFrameObject *f, int throwflag) assert (gen_status == PYGEN_NEXT); /* receiver remains on stack, retval is value to be yielded */ /* and repeat... */ - assert(f->f_lasti >= (int)sizeof(_Py_CODEUNIT)); - f->f_lasti -= sizeof(_Py_CODEUNIT); + assert(f->f_lasti > 0); + f->f_lasti -= 1; f->f_state = FRAME_SUSPENDED; f->f_stackdepth = (int)(stack_pointer - f->f_valuestack); goto exiting; @@ -5511,7 +5506,7 @@ call_trace(Py_tracefunc func, PyObject *obj, } else { initialize_trace_info(trace_info, frame); - frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti, &trace_info->bounds); + frame->f_lineno = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); } result = func(obj, frame, what, arg); frame->f_lineno = 0; @@ -5552,11 +5547,11 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, */ initialize_trace_info(trace_info, frame); int lastline = trace_info->bounds.ar_line; - int line = _PyCode_CheckLineNumber(frame->f_lasti, &trace_info->bounds); + int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); if (line != -1 && frame->f_trace_lines) { /* Trace backward edges or first instruction of a new line */ if (frame->f_lasti < trace_info->instr_prev || - (line != lastline && frame->f_lasti == trace_info->bounds.ar_start)) + (line != lastline && frame->f_lasti*2 == trace_info->bounds.ar_start)) { result = call_trace(func, obj, tstate, frame, trace_info, PyTrace_LINE, Py_None); } @@ -6475,7 +6470,7 @@ dtrace_function_entry(PyFrameObject *f) PyCodeObject *code = f->f_code; filename = PyUnicode_AsUTF8(code->co_filename); funcname = PyUnicode_AsUTF8(code->co_name); - lineno = PyCode_Addr2Line(code, f->f_lasti); + lineno = PyFrame_GetLineNumber(f); PyDTrace_FUNCTION_ENTRY(filename, funcname, lineno); } @@ -6490,7 +6485,7 @@ dtrace_function_return(PyFrameObject *f) PyCodeObject *code = f->f_code; filename = PyUnicode_AsUTF8(code->co_filename); funcname = PyUnicode_AsUTF8(code->co_name); - lineno = PyCode_Addr2Line(code, f->f_lasti); + lineno = PyFrame_GetLineNumber(f); PyDTrace_FUNCTION_RETURN(filename, funcname, lineno); } @@ -6506,7 +6501,7 @@ maybe_dtrace_line(PyFrameObject *frame, instruction window, reset the window. */ initialize_trace_info(trace_info, frame); - int line = _PyCode_CheckLineNumber(frame->f_lasti, &trace_info->bounds); + int line = _PyCode_CheckLineNumber(frame->f_lasti*2, &trace_info->bounds); /* If the last instruction falls at the start of a line or if it represents a jump backwards, update the frame's line number and call the trace function. */ diff --git a/Python/compile.c b/Python/compile.c index bed2a1c944d96..308d6866c7dc4 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -6398,7 +6398,6 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c) if (is_relative_jump(instr)) { instr->i_oparg -= bsize; } - instr->i_oparg *= sizeof(_Py_CODEUNIT); if (instrsize(instr->i_oparg) != isize) { extended_arg_recompile = 1; } diff --git a/Python/importlib.h b/Python/importlib.h index 886b807aba0c0..f360407136768 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -54,8 +54,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 99,105,110,103,32,118,101,114,115,105,111,110,32,111,102,32, 116,104,105,115,32,109,111,100,117,108,101,46,10,10,99,1, 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, - 0,0,0,67,0,0,0,115,38,0,0,0,122,8,124,0, - 106,0,87,0,83,0,4,0,116,1,121,36,1,0,1,0, + 0,0,0,67,0,0,0,115,38,0,0,0,122,4,124,0, + 106,0,87,0,83,0,4,0,116,1,121,18,1,0,1,0, 1,0,116,2,124,0,131,1,106,0,6,0,89,0,83,0, 119,0,169,1,78,41,3,218,12,95,95,113,117,97,108,110, 97,109,101,95,95,218,14,65,116,116,114,105,98,117,116,101, @@ -67,9 +67,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,8,1,12,1,14,1,2,255,255,128,114,7,0,0,0, 78,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, 0,0,7,0,0,0,67,0,0,0,115,56,0,0,0,100, - 1,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, - 36,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, - 3,1,0,113,4,124,0,106,3,160,4,124,1,106,3,161, + 1,68,0,93,16,125,2,116,0,124,1,124,2,131,2,114, + 18,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, + 3,1,0,113,2,124,0,106,3,160,4,124,1,106,3,161, 1,1,0,100,2,83,0,41,3,122,47,83,105,109,112,108, 101,32,115,117,98,115,116,105,116,117,116,101,32,102,111,114, 32,102,117,110,99,116,111,111,108,115,46,117,112,100,97,116, @@ -134,10 +134,10 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,67,0,0,0,115,86,0,0,0,116,0,160,1, 161,0,125,1,124,0,106,2,125,2,116,3,131,0,125,3, 9,0,116,4,160,5,124,2,161,1,125,4,124,4,100,0, - 117,0,114,44,100,2,83,0,124,4,106,2,125,2,124,2, - 124,1,107,2,114,62,100,1,83,0,124,2,124,3,118,0, - 114,74,100,2,83,0,124,3,160,6,124,2,161,1,1,0, - 113,22,41,3,78,84,70,41,7,114,26,0,0,0,218,9, + 117,0,114,22,100,2,83,0,124,4,106,2,125,2,124,2, + 124,1,107,2,114,31,100,1,83,0,124,2,124,3,118,0, + 114,37,100,2,83,0,124,3,160,6,124,2,161,1,1,0, + 113,11,41,3,78,84,70,41,7,114,26,0,0,0,218,9, 103,101,116,95,105,100,101,110,116,114,29,0,0,0,218,3, 115,101,116,218,12,95,98,108,111,99,107,105,110,103,95,111, 110,218,3,103,101,116,218,3,97,100,100,41,5,114,33,0, @@ -151,17 +151,17 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,111,99,107,99,1,0,0,0,0,0,0,0,0,0,0, 0,2,0,0,0,8,0,0,0,67,0,0,0,115,198,0, 0,0,116,0,160,1,161,0,125,1,124,0,116,2,124,1, - 60,0,122,172,9,0,124,0,106,3,143,126,1,0,124,0, - 106,4,100,2,107,2,115,48,124,0,106,5,124,1,107,2, - 114,92,124,1,124,0,95,5,124,0,4,0,106,4,100,3, + 60,0,122,86,9,0,124,0,106,3,143,63,1,0,124,0, + 106,4,100,2,107,2,115,24,124,0,106,5,124,1,107,2, + 114,46,124,1,124,0,95,5,124,0,4,0,106,4,100,3, 55,0,2,0,95,4,87,0,100,4,4,0,4,0,131,3, 1,0,87,0,116,2,124,1,61,0,100,1,83,0,124,0, - 160,6,161,0,114,112,116,7,100,5,124,0,22,0,131,1, - 130,1,124,0,106,8,160,9,100,6,161,1,114,138,124,0, + 160,6,161,0,114,56,116,7,100,5,124,0,22,0,131,1, + 130,1,124,0,106,8,160,9,100,6,161,1,114,69,124,0, 4,0,106,10,100,3,55,0,2,0,95,10,87,0,100,4, - 4,0,4,0,131,3,1,0,110,16,49,0,115,158,119,1, + 4,0,4,0,131,3,1,0,110,8,49,0,115,79,119,1, 1,0,1,0,1,0,89,0,1,0,124,0,106,8,160,9, - 161,0,1,0,124,0,106,8,160,11,161,0,1,0,113,20, + 161,0,1,0,124,0,106,8,160,11,161,0,1,0,113,10, 116,2,124,1,61,0,119,0,41,7,122,185,10,32,32,32, 32,32,32,32,32,65,99,113,117,105,114,101,32,116,104,101, 32,109,111,100,117,108,101,32,108,111,99,107,46,32,32,73, @@ -190,14 +190,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 97,99,113,117,105,114,101,99,1,0,0,0,0,0,0,0, 0,0,0,0,2,0,0,0,8,0,0,0,67,0,0,0, 115,144,0,0,0,116,0,160,1,161,0,125,1,124,0,106, - 2,143,110,1,0,124,0,106,3,124,1,107,3,114,34,116, + 2,143,55,1,0,124,0,106,3,124,1,107,3,114,17,116, 4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,115, - 48,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, - 0,95,5,124,0,106,5,100,2,107,2,114,108,100,0,124, - 0,95,3,124,0,106,6,114,108,124,0,4,0,106,6,100, + 24,74,0,130,1,124,0,4,0,106,5,100,3,56,0,2, + 0,95,5,124,0,106,5,100,2,107,2,114,54,100,0,124, + 0,95,3,124,0,106,6,114,54,124,0,4,0,106,6,100, 3,56,0,2,0,95,6,124,0,106,7,160,8,161,0,1, 0,87,0,100,0,4,0,4,0,131,3,1,0,100,0,83, - 0,49,0,115,130,119,1,1,0,1,0,1,0,89,0,1, + 0,49,0,115,65,119,1,1,0,1,0,1,0,89,0,1, 0,100,0,83,0,41,4,78,250,31,99,97,110,110,111,116, 32,114,101,108,101,97,115,101,32,117,110,45,97,99,113,117, 105,114,101,100,32,108,111,99,107,114,25,0,0,0,114,42, @@ -256,7 +256,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 121,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, 105,114,101,99,1,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,3,0,0,0,67,0,0,0,115,36,0,0, - 0,124,0,106,0,100,1,107,2,114,18,116,1,100,2,131, + 0,124,0,106,0,100,1,107,2,114,9,116,1,100,2,131, 1,130,1,124,0,4,0,106,0,100,3,56,0,2,0,95, 0,100,0,83,0,41,4,78,114,25,0,0,0,114,46,0, 0,0,114,42,0,0,0,41,2,114,30,0,0,0,114,47, @@ -319,11 +319,11 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,115,10,0,0,0,8,0,8,2,8,4,12,4,255,128, 114,57,0,0,0,99,1,0,0,0,0,0,0,0,0,0, 0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,132, - 0,0,0,116,0,160,1,161,0,1,0,122,110,122,14,116, - 2,124,0,25,0,131,0,125,1,87,0,110,18,4,0,116, - 3,121,130,1,0,1,0,1,0,100,1,125,1,89,0,124, - 1,100,1,117,0,114,106,116,4,100,1,117,0,114,70,116, - 5,124,0,131,1,125,1,110,8,116,6,124,0,131,1,125, + 0,0,0,116,0,160,1,161,0,1,0,122,55,122,7,116, + 2,124,0,25,0,131,0,125,1,87,0,110,9,4,0,116, + 3,121,65,1,0,1,0,1,0,100,1,125,1,89,0,124, + 1,100,1,117,0,114,53,116,4,100,1,117,0,114,35,116, + 5,124,0,131,1,125,1,110,4,116,6,124,0,131,1,125, 1,124,0,102,1,100,2,100,3,132,1,125,2,116,7,160, 8,124,1,124,2,161,2,116,2,124,0,60,0,87,0,116, 0,160,9,161,0,1,0,124,1,83,0,116,0,160,9,161, @@ -338,8 +338,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 101,99,116,10,32,32,32,32,95,109,111,100,117,108,101,95, 108,111,99,107,115,46,78,99,2,0,0,0,0,0,0,0, 0,0,0,0,2,0,0,0,8,0,0,0,83,0,0,0, - 115,54,0,0,0,116,0,160,1,161,0,1,0,122,34,116, - 2,160,3,124,1,161,1,124,0,117,0,114,30,116,2,124, + 115,54,0,0,0,116,0,160,1,161,0,1,0,122,17,116, + 2,160,3,124,1,161,1,124,0,117,0,114,15,116,2,124, 1,61,0,87,0,116,0,160,4,161,0,1,0,100,0,83, 0,116,0,160,4,161,0,1,0,119,0,114,0,0,0,0, 41,5,218,4,95,105,109,112,218,12,97,99,113,117,105,114, @@ -362,8 +362,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 2,128,8,2,4,2,10,254,2,234,255,128,114,60,0,0, 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,8,0,0,0,67,0,0,0,115,54,0,0,0,116, - 0,124,0,131,1,125,1,122,12,124,1,160,1,161,0,1, - 0,87,0,110,18,4,0,116,2,121,52,1,0,1,0,1, + 0,124,0,131,1,125,1,122,6,124,1,160,1,161,0,1, + 0,87,0,110,9,4,0,116,2,121,26,1,0,1,0,1, 0,89,0,100,1,83,0,124,1,160,3,161,0,1,0,100, 1,83,0,119,0,41,2,122,189,65,99,113,117,105,114,101, 115,32,116,104,101,110,32,114,101,108,101,97,115,101,115,32, @@ -414,8 +414,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,41,1,218,9,118,101,114,98,111,115,105,116,121, 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, 0,4,0,0,0,71,0,0,0,115,58,0,0,0,116,0, - 106,1,106,2,124,1,107,5,114,54,124,0,160,3,100,1, - 161,1,115,30,100,2,124,0,23,0,125,0,116,4,124,0, + 106,1,106,2,124,1,107,5,114,27,124,0,160,3,100,1, + 161,1,115,15,100,2,124,0,23,0,125,0,116,4,124,0, 106,5,124,2,142,0,116,0,106,6,100,3,141,2,1,0, 100,4,83,0,100,4,83,0,41,5,122,61,80,114,105,110, 116,32,116,104,101,32,109,101,115,115,97,103,101,32,116,111, @@ -440,7 +440,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, 0,0,0,0,0,2,0,0,0,4,0,0,0,19,0,0, - 0,115,38,0,0,0,124,1,116,0,106,1,118,1,114,28, + 0,115,38,0,0,0,124,1,116,0,106,1,118,1,114,14, 116,2,100,1,160,3,124,1,161,1,124,1,100,2,141,2, 130,1,136,0,124,0,124,1,131,2,83,0,41,3,78,250, 29,123,33,114,125,32,105,115,32,110,111,116,32,97,32,98, @@ -468,7 +468,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 110,97,109,101,100,32,109,111,100,117,108,101,32,105,115,32, 102,114,111,122,101,110,46,99,2,0,0,0,0,0,0,0, 0,0,0,0,2,0,0,0,4,0,0,0,19,0,0,0, - 115,38,0,0,0,116,0,160,1,124,1,161,1,115,28,116, + 115,38,0,0,0,116,0,160,1,124,1,161,1,115,14,116, 2,100,1,160,3,124,1,161,1,124,1,100,2,141,2,130, 1,136,0,124,0,124,1,131,2,83,0,169,3,78,122,27, 123,33,114,125,32,105,115,32,110,111,116,32,97,32,102,114, @@ -489,7 +489,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,0, 0,115,74,0,0,0,100,1,125,2,116,0,160,1,124,2, 116,2,161,2,1,0,116,3,124,1,124,0,131,2,125,3, - 124,1,116,4,106,5,118,0,114,66,116,4,106,5,124,1, + 124,1,116,4,106,5,118,0,114,33,116,4,106,5,124,1, 25,0,125,4,116,6,124,3,124,4,131,2,1,0,116,4, 106,5,124,1,25,0,83,0,116,7,124,3,131,1,83,0, 41,3,122,130,76,111,97,100,32,116,104,101,32,115,112,101, @@ -521,14 +521,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 128,114,111,0,0,0,99,1,0,0,0,0,0,0,0,0, 0,0,0,5,0,0,0,8,0,0,0,67,0,0,0,115, 184,0,0,0,116,0,124,0,100,1,100,2,131,3,125,1, - 116,0,124,0,100,3,100,2,131,3,4,0,125,2,114,36, + 116,0,124,0,100,3,100,2,131,3,4,0,125,2,114,18, 116,1,124,2,131,1,83,0,116,2,124,1,100,4,131,2, - 114,74,122,12,124,1,160,3,124,0,161,1,87,0,83,0, - 4,0,116,4,121,182,1,0,1,0,1,0,89,0,122,10, - 124,0,106,5,125,3,87,0,110,18,4,0,116,6,121,180, - 1,0,1,0,1,0,100,5,125,3,89,0,122,10,124,0, - 106,7,125,4,87,0,110,50,4,0,116,6,121,178,1,0, - 1,0,1,0,124,1,100,2,117,0,114,150,100,6,160,8, + 114,37,122,6,124,1,160,3,124,0,161,1,87,0,83,0, + 4,0,116,4,121,91,1,0,1,0,1,0,89,0,122,5, + 124,0,106,5,125,3,87,0,110,9,4,0,116,6,121,90, + 1,0,1,0,1,0,100,5,125,3,89,0,122,5,124,0, + 106,7,125,4,87,0,110,25,4,0,116,6,121,89,1,0, + 1,0,1,0,124,1,100,2,117,0,114,75,100,6,160,8, 124,3,161,1,6,0,89,0,83,0,100,7,160,8,124,3, 124,1,161,2,6,0,89,0,83,0,100,8,160,8,124,3, 124,4,161,2,83,0,119,0,119,0,119,0,41,9,122,44, @@ -662,7 +662,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 103,101,99,3,0,0,0,0,0,0,0,3,0,0,0,6, 0,0,0,2,0,0,0,67,0,0,0,115,54,0,0,0, 124,1,124,0,95,0,124,2,124,0,95,1,124,3,124,0, - 95,2,124,4,124,0,95,3,124,5,114,32,103,0,110,2, + 95,2,124,4,124,0,95,3,124,5,114,16,103,0,110,1, 100,0,124,0,95,4,100,1,124,0,95,5,100,0,124,0, 95,6,100,0,83,0,41,2,78,70,41,7,114,20,0,0, 0,114,122,0,0,0,114,126,0,0,0,114,127,0,0,0, @@ -679,9 +679,9 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,115, 102,0,0,0,100,1,160,0,124,0,106,1,161,1,100,2, 160,0,124,0,106,2,161,1,103,2,125,1,124,0,106,3, - 100,0,117,1,114,52,124,1,160,4,100,3,160,0,124,0, + 100,0,117,1,114,26,124,1,160,4,100,3,160,0,124,0, 106,3,161,1,161,1,1,0,124,0,106,5,100,0,117,1, - 114,80,124,1,160,4,100,4,160,0,124,0,106,5,161,1, + 114,40,124,1,160,4,100,4,160,0,124,0,106,5,161,1, 161,1,1,0,100,5,160,0,124,0,106,6,106,7,100,6, 160,8,124,1,161,1,161,2,83,0,41,7,78,122,9,110, 97,109,101,61,123,33,114,125,122,11,108,111,97,100,101,114, @@ -699,12 +699,12 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 255,22,2,255,128,122,19,77,111,100,117,108,101,83,112,101, 99,46,95,95,114,101,112,114,95,95,99,2,0,0,0,0, 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,102,0,0,0,124,0,106,0,125,2,122,72, - 124,0,106,1,124,1,106,1,107,2,111,76,124,0,106,2, - 124,1,106,2,107,2,111,76,124,0,106,3,124,1,106,3, - 107,2,111,76,124,2,124,1,106,0,107,2,111,76,124,0, - 106,4,124,1,106,4,107,2,111,76,124,0,106,5,124,1, - 106,5,107,2,87,0,83,0,4,0,116,6,121,100,1,0, + 0,0,0,115,102,0,0,0,124,0,106,0,125,2,122,36, + 124,0,106,1,124,1,106,1,107,2,111,38,124,0,106,2, + 124,1,106,2,107,2,111,38,124,0,106,3,124,1,106,3, + 107,2,111,38,124,2,124,1,106,0,107,2,111,38,124,0, + 106,4,124,1,106,4,107,2,111,38,124,0,106,5,124,1, + 106,5,107,2,87,0,83,0,4,0,116,6,121,50,1,0, 1,0,1,0,116,7,6,0,89,0,83,0,119,0,114,0, 0,0,0,41,8,114,129,0,0,0,114,20,0,0,0,114, 122,0,0,0,114,126,0,0,0,218,6,99,97,99,104,101, @@ -719,8 +719,8 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 108,101,83,112,101,99,46,95,95,101,113,95,95,99,1,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, 0,0,67,0,0,0,115,58,0,0,0,124,0,106,0,100, - 0,117,0,114,52,124,0,106,1,100,0,117,1,114,52,124, - 0,106,2,114,52,116,3,100,0,117,0,114,38,116,4,130, + 0,117,0,114,26,124,0,106,1,100,0,117,1,114,26,124, + 0,106,2,114,26,116,3,100,0,117,0,114,19,116,4,130, 1,116,3,160,5,124,0,106,1,161,1,124,0,95,0,124, 0,106,0,83,0,114,0,0,0,0,41,6,114,131,0,0, 0,114,126,0,0,0,114,130,0,0,0,218,19,95,98,111, @@ -739,7 +739,7 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 6,0,0,0,114,135,0,0,0,144,1,0,0,115,4,0, 0,0,10,2,255,128,99,1,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 32,0,0,0,124,0,106,0,100,1,117,0,114,26,124,0, + 32,0,0,0,124,0,106,0,100,1,117,0,114,13,124,0, 106,1,160,2,100,2,161,1,100,3,25,0,83,0,124,0, 106,1,83,0,41,4,122,32,84,104,101,32,110,97,109,101, 32,111,102,32,116,104,101,32,109,111,100,117,108,101,39,115, @@ -775,14 +775,14 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 128,114,125,0,0,0,169,2,114,126,0,0,0,114,128,0, 0,0,99,2,0,0,0,0,0,0,0,2,0,0,0,6, 0,0,0,8,0,0,0,67,0,0,0,115,150,0,0,0, - 116,0,124,1,100,1,131,2,114,74,116,1,100,2,117,0, - 114,22,116,2,130,1,116,1,106,3,125,4,124,3,100,2, - 117,0,114,48,124,4,124,0,124,1,100,3,141,2,83,0, - 124,3,114,56,103,0,110,2,100,2,125,5,124,4,124,0, + 116,0,124,1,100,1,131,2,114,37,116,1,100,2,117,0, + 114,11,116,2,130,1,116,1,106,3,125,4,124,3,100,2, + 117,0,114,24,124,4,124,0,124,1,100,3,141,2,83,0, + 124,3,114,28,103,0,110,1,100,2,125,5,124,4,124,0, 124,1,124,5,100,4,141,3,83,0,124,3,100,2,117,0, - 114,132,116,0,124,1,100,5,131,2,114,128,122,14,124,1, - 160,4,124,0,161,1,125,3,87,0,110,24,4,0,116,5, - 121,148,1,0,1,0,1,0,100,2,125,3,89,0,110,4, + 114,66,116,0,124,1,100,5,131,2,114,64,122,7,124,1, + 160,4,124,0,161,1,125,3,87,0,110,12,4,0,116,5, + 121,74,1,0,1,0,1,0,100,2,125,3,89,0,110,2, 100,6,125,3,116,6,124,0,124,1,124,2,124,3,100,7, 141,4,83,0,119,0,41,8,122,53,82,101,116,117,114,110, 32,97,32,109,111,100,117,108,101,32,115,112,101,99,32,98, @@ -802,158 +802,155 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 1,12,1,6,1,2,1,6,255,8,3,10,1,2,1,14, 1,12,1,8,1,4,3,16,2,2,250,255,128,114,104,0, 0,0,99,3,0,0,0,0,0,0,0,0,0,0,0,8, - 0,0,0,8,0,0,0,67,0,0,0,115,44,1,0,0, - 122,10,124,0,106,0,125,3,87,0,110,18,4,0,116,1, - 144,1,121,42,1,0,1,0,1,0,89,0,110,12,124,3, - 100,0,117,1,114,42,124,3,83,0,124,0,106,2,125,4, - 124,1,100,0,117,0,114,84,122,10,124,0,106,3,125,1, - 87,0,110,16,4,0,116,1,144,1,121,40,1,0,1,0, - 1,0,89,0,122,10,124,0,106,4,125,5,87,0,110,20, - 4,0,116,1,144,1,121,38,1,0,1,0,1,0,100,0, - 125,5,89,0,124,2,100,0,117,0,114,170,124,5,100,0, - 117,0,114,166,122,10,124,1,106,5,125,2,87,0,110,26, - 4,0,116,1,144,1,121,36,1,0,1,0,1,0,100,0, - 125,2,89,0,110,4,124,5,125,2,122,10,124,0,106,6, - 125,6,87,0,110,20,4,0,116,1,144,1,121,34,1,0, - 1,0,1,0,100,0,125,6,89,0,122,14,116,7,124,0, - 106,8,131,1,125,7,87,0,110,20,4,0,116,1,144,1, - 121,32,1,0,1,0,1,0,100,0,125,7,89,0,116,9, - 124,4,124,1,124,2,100,1,141,3,125,3,124,5,100,0, - 117,0,144,1,114,10,100,2,110,2,100,3,124,3,95,10, - 124,6,124,3,95,11,124,7,124,3,95,12,124,3,83,0, - 119,0,119,0,119,0,119,0,119,0,119,0,41,4,78,169, - 1,114,126,0,0,0,70,84,41,13,114,113,0,0,0,114, - 2,0,0,0,114,9,0,0,0,114,112,0,0,0,114,121, - 0,0,0,218,7,95,79,82,73,71,73,78,218,10,95,95, - 99,97,99,104,101,100,95,95,218,4,108,105,115,116,218,8, - 95,95,112,97,116,104,95,95,114,125,0,0,0,114,130,0, - 0,0,114,135,0,0,0,114,129,0,0,0,41,8,114,110, - 0,0,0,114,122,0,0,0,114,126,0,0,0,114,109,0, - 0,0,114,20,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,135,0,0,0,114,129,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,17,95,115,112,101, - 99,95,102,114,111,109,95,109,111,100,117,108,101,191,1,0, - 0,115,86,0,0,0,2,2,10,1,14,1,4,1,8,2, - 4,1,6,2,8,1,2,1,10,1,14,1,2,2,2,1, - 10,1,14,1,6,1,8,1,8,1,2,1,10,1,14,1, - 8,1,4,2,2,1,10,1,14,1,6,1,2,1,14,1, - 14,1,6,1,14,2,20,1,6,1,6,1,4,1,2,249, - 2,252,2,250,2,250,2,251,2,246,255,128,114,155,0,0, - 0,70,169,1,218,8,111,118,101,114,114,105,100,101,99,2, - 0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,8, - 0,0,0,67,0,0,0,115,210,1,0,0,124,2,115,20, - 116,0,124,1,100,1,100,0,131,3,100,0,117,0,114,50, - 122,12,124,0,106,1,124,1,95,2,87,0,110,16,4,0, - 116,3,144,1,121,208,1,0,1,0,1,0,89,0,124,2, - 115,70,116,0,124,1,100,2,100,0,131,3,100,0,117,0, - 114,170,124,0,106,4,125,3,124,3,100,0,117,0,114,142, - 124,0,106,5,100,0,117,1,114,142,116,6,100,0,117,0, - 114,106,116,7,130,1,116,6,106,8,125,4,124,4,160,9, + 0,0,0,8,0,0,0,67,0,0,0,115,30,1,0,0, + 122,5,124,0,106,0,125,3,87,0,110,8,4,0,116,1, + 121,142,1,0,1,0,1,0,89,0,110,6,124,3,100,0, + 117,1,114,20,124,3,83,0,124,0,106,2,125,4,124,1, + 100,0,117,0,114,40,122,5,124,0,106,3,125,1,87,0, + 110,7,4,0,116,1,121,141,1,0,1,0,1,0,89,0, + 122,5,124,0,106,4,125,5,87,0,110,9,4,0,116,1, + 121,140,1,0,1,0,1,0,100,0,125,5,89,0,124,2, + 100,0,117,0,114,81,124,5,100,0,117,0,114,79,122,5, + 124,1,106,5,125,2,87,0,110,12,4,0,116,1,121,139, + 1,0,1,0,1,0,100,0,125,2,89,0,110,2,124,5, + 125,2,122,5,124,0,106,6,125,6,87,0,110,9,4,0, + 116,1,121,138,1,0,1,0,1,0,100,0,125,6,89,0, + 122,7,116,7,124,0,106,8,131,1,125,7,87,0,110,9, + 4,0,116,1,121,137,1,0,1,0,1,0,100,0,125,7, + 89,0,116,9,124,4,124,1,124,2,100,1,141,3,125,3, + 124,5,100,0,117,0,114,126,100,2,110,1,100,3,124,3, + 95,10,124,6,124,3,95,11,124,7,124,3,95,12,124,3, + 83,0,119,0,119,0,119,0,119,0,119,0,119,0,41,4, + 78,169,1,114,126,0,0,0,70,84,41,13,114,113,0,0, + 0,114,2,0,0,0,114,9,0,0,0,114,112,0,0,0, + 114,121,0,0,0,218,7,95,79,82,73,71,73,78,218,10, + 95,95,99,97,99,104,101,100,95,95,218,4,108,105,115,116, + 218,8,95,95,112,97,116,104,95,95,114,125,0,0,0,114, + 130,0,0,0,114,135,0,0,0,114,129,0,0,0,41,8, + 114,110,0,0,0,114,122,0,0,0,114,126,0,0,0,114, + 109,0,0,0,114,20,0,0,0,90,8,108,111,99,97,116, + 105,111,110,114,135,0,0,0,114,129,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,17,95,115, + 112,101,99,95,102,114,111,109,95,109,111,100,117,108,101,191, + 1,0,0,115,86,0,0,0,2,2,10,1,12,1,4,1, + 8,2,4,1,6,2,8,1,2,1,10,1,12,1,2,2, + 2,1,10,1,12,1,6,1,8,1,8,1,2,1,10,1, + 12,1,8,1,4,2,2,1,10,1,12,1,6,1,2,1, + 14,1,12,1,6,1,14,2,18,1,6,1,6,1,4,1, + 2,249,2,252,2,250,2,250,2,251,2,246,255,128,114,155, + 0,0,0,70,169,1,218,8,111,118,101,114,114,105,100,101, + 99,2,0,0,0,0,0,0,0,1,0,0,0,5,0,0, + 0,8,0,0,0,67,0,0,0,115,178,1,0,0,124,2, + 115,10,116,0,124,1,100,1,100,0,131,3,100,0,117,0, + 114,24,122,6,124,0,106,1,124,1,95,2,87,0,110,7, + 4,0,116,3,121,216,1,0,1,0,1,0,89,0,124,2, + 115,34,116,0,124,1,100,2,100,0,131,3,100,0,117,0, + 114,83,124,0,106,4,125,3,124,3,100,0,117,0,114,70, + 124,0,106,5,100,0,117,1,114,70,116,6,100,0,117,0, + 114,52,116,7,130,1,116,6,106,8,125,4,124,4,160,9, 124,4,161,1,125,3,124,0,106,5,124,3,95,10,124,3, - 124,0,95,4,100,0,124,1,95,11,122,10,124,3,124,1, - 95,12,87,0,110,16,4,0,116,3,144,1,121,206,1,0, - 1,0,1,0,89,0,124,2,115,190,116,0,124,1,100,3, - 100,0,131,3,100,0,117,0,114,220,122,12,124,0,106,13, - 124,1,95,14,87,0,110,16,4,0,116,3,144,1,121,204, - 1,0,1,0,1,0,89,0,122,10,124,0,124,1,95,15, - 87,0,110,16,4,0,116,3,144,1,121,202,1,0,1,0, - 1,0,89,0,124,2,144,1,115,16,116,0,124,1,100,4, - 100,0,131,3,100,0,117,0,144,1,114,58,124,0,106,5, - 100,0,117,1,144,1,114,58,122,12,124,0,106,5,124,1, - 95,16,87,0,110,16,4,0,116,3,144,1,121,200,1,0, - 1,0,1,0,89,0,124,0,106,17,144,1,114,192,124,2, - 144,1,115,90,116,0,124,1,100,5,100,0,131,3,100,0, - 117,0,144,1,114,120,122,12,124,0,106,18,124,1,95,11, - 87,0,110,16,4,0,116,3,144,1,121,198,1,0,1,0, - 1,0,89,0,124,2,144,1,115,144,116,0,124,1,100,6, - 100,0,131,3,100,0,117,0,144,1,114,192,124,0,106,19, - 100,0,117,1,144,1,114,192,122,14,124,0,106,19,124,1, - 95,20,87,0,124,1,83,0,4,0,116,3,144,1,121,196, - 1,0,1,0,1,0,89,0,124,1,83,0,124,1,83,0, - 119,0,119,0,119,0,119,0,119,0,119,0,119,0,41,7, - 78,114,9,0,0,0,114,112,0,0,0,218,11,95,95,112, - 97,99,107,97,103,101,95,95,114,154,0,0,0,114,121,0, - 0,0,114,152,0,0,0,41,21,114,13,0,0,0,114,20, - 0,0,0,114,9,0,0,0,114,2,0,0,0,114,122,0, - 0,0,114,129,0,0,0,114,139,0,0,0,114,140,0,0, - 0,218,16,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,218,7,95,95,110,101,119,95,95,90,5,95,112, - 97,116,104,114,121,0,0,0,114,112,0,0,0,114,143,0, - 0,0,114,158,0,0,0,114,113,0,0,0,114,154,0,0, - 0,114,136,0,0,0,114,126,0,0,0,114,135,0,0,0, - 114,152,0,0,0,41,5,114,109,0,0,0,114,110,0,0, - 0,114,157,0,0,0,114,122,0,0,0,114,159,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 18,95,105,110,105,116,95,109,111,100,117,108,101,95,97,116, - 116,114,115,236,1,0,0,115,114,0,0,0,20,4,2,1, - 12,1,14,1,2,1,20,2,6,1,8,1,10,2,8,1, - 4,1,6,1,10,2,8,1,6,1,6,11,2,1,10,1, - 14,1,2,1,20,2,2,1,12,1,14,1,2,1,2,2, - 10,1,14,1,2,1,24,2,12,1,2,1,12,1,14,1, - 2,1,8,2,24,1,2,1,12,1,14,1,2,1,24,2, - 12,1,2,1,10,1,4,3,14,254,2,1,8,1,2,254, - 2,249,2,249,2,249,2,251,2,250,2,228,255,128,114,161, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,3,0,0,0,67,0,0,0,115,82,0,0, - 0,100,1,125,1,116,0,124,0,106,1,100,2,131,2,114, - 30,124,0,106,1,160,2,124,0,161,1,125,1,110,20,116, - 0,124,0,106,1,100,3,131,2,114,50,116,3,100,4,131, - 1,130,1,124,1,100,1,117,0,114,68,116,4,124,0,106, - 5,131,1,125,1,116,6,124,0,124,1,131,2,1,0,124, - 1,83,0,41,5,122,43,67,114,101,97,116,101,32,97,32, - 109,111,100,117,108,101,32,98,97,115,101,100,32,111,110,32, - 116,104,101,32,112,114,111,118,105,100,101,100,32,115,112,101, - 99,46,78,218,13,99,114,101,97,116,101,95,109,111,100,117, - 108,101,218,11,101,120,101,99,95,109,111,100,117,108,101,122, - 66,108,111,97,100,101,114,115,32,116,104,97,116,32,100,101, - 102,105,110,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,109,117,115,116,32,97,108,115,111,32,100,101,102, - 105,110,101,32,99,114,101,97,116,101,95,109,111,100,117,108, - 101,40,41,41,7,114,11,0,0,0,114,122,0,0,0,114, - 162,0,0,0,114,87,0,0,0,114,21,0,0,0,114,20, - 0,0,0,114,161,0,0,0,169,2,114,109,0,0,0,114, - 110,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,218,16,109,111,100,117,108,101,95,102,114,111,109, - 95,115,112,101,99,52,2,0,0,115,20,0,0,0,4,3, - 12,1,14,3,12,1,8,1,8,2,10,1,10,1,4,1, - 255,128,114,165,0,0,0,99,1,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,4,0,0,0,67,0,0,0, - 115,100,0,0,0,124,0,106,0,100,1,117,0,114,14,100, - 2,110,4,124,0,106,0,125,1,124,0,106,1,100,1,117, - 0,114,64,124,0,106,2,100,1,117,0,114,50,100,3,160, - 3,124,1,161,1,83,0,100,4,160,3,124,1,124,0,106, - 2,161,2,83,0,124,0,106,4,114,84,100,5,160,3,124, - 1,124,0,106,1,161,2,83,0,100,6,160,3,124,0,106, - 0,124,0,106,1,161,2,83,0,41,7,122,38,82,101,116, - 117,114,110,32,116,104,101,32,114,101,112,114,32,116,111,32, - 117,115,101,32,102,111,114,32,116,104,101,32,109,111,100,117, - 108,101,46,78,114,115,0,0,0,114,116,0,0,0,114,117, - 0,0,0,114,118,0,0,0,250,18,60,109,111,100,117,108, - 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,20, - 0,0,0,114,126,0,0,0,114,122,0,0,0,114,50,0, - 0,0,114,136,0,0,0,41,2,114,109,0,0,0,114,20, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,119,0,0,0,69,2,0,0,115,18,0,0,0, - 20,3,10,1,10,1,10,1,14,2,6,2,14,1,16,2, - 255,128,114,119,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,10,0,0,0,67,0,0,0, - 115,26,1,0,0,124,0,106,0,125,2,116,1,124,2,131, - 1,143,246,1,0,116,2,106,3,160,4,124,2,161,1,124, - 1,117,1,114,54,100,1,160,5,124,2,161,1,125,3,116, - 6,124,3,124,2,100,2,141,2,130,1,122,160,124,0,106, - 7,100,3,117,0,114,106,124,0,106,8,100,3,117,0,114, - 90,116,6,100,4,124,0,106,0,100,2,141,2,130,1,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,110,80,116, - 9,124,0,124,1,100,5,100,6,141,3,1,0,116,10,124, - 0,106,7,100,7,131,2,115,174,116,11,124,0,106,7,131, - 1,155,0,100,8,157,2,125,3,116,12,160,13,124,3,116, - 14,161,2,1,0,124,0,106,7,160,15,124,2,161,1,1, - 0,110,12,124,0,106,7,160,16,124,1,161,1,1,0,87, - 0,116,2,106,3,160,17,124,0,106,0,161,1,125,1,124, - 1,116,2,106,3,124,0,106,0,60,0,110,28,116,2,106, - 3,160,17,124,0,106,0,161,1,125,1,124,1,116,2,106, - 3,124,0,106,0,60,0,119,0,87,0,100,3,4,0,4, - 0,131,3,1,0,124,1,83,0,49,0,144,1,115,12,119, + 124,0,95,4,100,0,124,1,95,11,122,5,124,3,124,1, + 95,12,87,0,110,7,4,0,116,3,121,215,1,0,1,0, + 1,0,89,0,124,2,115,93,116,0,124,1,100,3,100,0, + 131,3,100,0,117,0,114,107,122,6,124,0,106,13,124,1, + 95,14,87,0,110,7,4,0,116,3,121,214,1,0,1,0, + 1,0,89,0,122,5,124,0,124,1,95,15,87,0,110,7, + 4,0,116,3,121,213,1,0,1,0,1,0,89,0,124,2, + 115,130,116,0,124,1,100,4,100,0,131,3,100,0,117,0, + 114,149,124,0,106,5,100,0,117,1,114,149,122,6,124,0, + 106,5,124,1,95,16,87,0,110,7,4,0,116,3,121,212, + 1,0,1,0,1,0,89,0,124,0,106,17,114,208,124,2, + 115,162,116,0,124,1,100,5,100,0,131,3,100,0,117,0, + 114,176,122,6,124,0,106,18,124,1,95,11,87,0,110,7, + 4,0,116,3,121,211,1,0,1,0,1,0,89,0,124,2, + 115,186,116,0,124,1,100,6,100,0,131,3,100,0,117,0, + 114,208,124,0,106,19,100,0,117,1,114,208,122,7,124,0, + 106,19,124,1,95,20,87,0,124,1,83,0,4,0,116,3, + 121,210,1,0,1,0,1,0,89,0,124,1,83,0,124,1, + 83,0,119,0,119,0,119,0,119,0,119,0,119,0,119,0, + 41,7,78,114,9,0,0,0,114,112,0,0,0,218,11,95, + 95,112,97,99,107,97,103,101,95,95,114,154,0,0,0,114, + 121,0,0,0,114,152,0,0,0,41,21,114,13,0,0,0, + 114,20,0,0,0,114,9,0,0,0,114,2,0,0,0,114, + 122,0,0,0,114,129,0,0,0,114,139,0,0,0,114,140, + 0,0,0,218,16,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,218,7,95,95,110,101,119,95,95,90,5, + 95,112,97,116,104,114,121,0,0,0,114,112,0,0,0,114, + 143,0,0,0,114,158,0,0,0,114,113,0,0,0,114,154, + 0,0,0,114,136,0,0,0,114,126,0,0,0,114,135,0, + 0,0,114,152,0,0,0,41,5,114,109,0,0,0,114,110, + 0,0,0,114,157,0,0,0,114,122,0,0,0,114,159,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,18,95,105,110,105,116,95,109,111,100,117,108,101,95, + 97,116,116,114,115,236,1,0,0,115,114,0,0,0,20,4, + 2,1,12,1,12,1,2,1,20,2,6,1,8,1,10,2, + 8,1,4,1,6,1,10,2,8,1,6,1,6,11,2,1, + 10,1,12,1,2,1,20,2,2,1,12,1,12,1,2,1, + 2,2,10,1,12,1,2,1,20,2,10,1,2,1,12,1, + 12,1,2,1,6,2,20,1,2,1,12,1,12,1,2,1, + 20,2,10,1,2,1,10,1,4,3,12,254,2,1,8,1, + 2,254,2,249,2,249,2,249,2,251,2,250,2,228,255,128, + 114,161,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,82, + 0,0,0,100,1,125,1,116,0,124,0,106,1,100,2,131, + 2,114,15,124,0,106,1,160,2,124,0,161,1,125,1,110, + 10,116,0,124,0,106,1,100,3,131,2,114,25,116,3,100, + 4,131,1,130,1,124,1,100,1,117,0,114,34,116,4,124, + 0,106,5,131,1,125,1,116,6,124,0,124,1,131,2,1, + 0,124,1,83,0,41,5,122,43,67,114,101,97,116,101,32, + 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, + 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, + 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, + 101,122,66,108,111,97,100,101,114,115,32,116,104,97,116,32, + 100,101,102,105,110,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,109,117,115,116,32,97,108,115,111,32,100, + 101,102,105,110,101,32,99,114,101,97,116,101,95,109,111,100, + 117,108,101,40,41,41,7,114,11,0,0,0,114,122,0,0, + 0,114,162,0,0,0,114,87,0,0,0,114,21,0,0,0, + 114,20,0,0,0,114,161,0,0,0,169,2,114,109,0,0, + 0,114,110,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,218,16,109,111,100,117,108,101,95,102,114, + 111,109,95,115,112,101,99,52,2,0,0,115,20,0,0,0, + 4,3,12,1,14,3,12,1,8,1,8,2,10,1,10,1, + 4,1,255,128,114,165,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,0, + 0,0,115,100,0,0,0,124,0,106,0,100,1,117,0,114, + 7,100,2,110,2,124,0,106,0,125,1,124,0,106,1,100, + 1,117,0,114,32,124,0,106,2,100,1,117,0,114,25,100, + 3,160,3,124,1,161,1,83,0,100,4,160,3,124,1,124, + 0,106,2,161,2,83,0,124,0,106,4,114,42,100,5,160, + 3,124,1,124,0,106,1,161,2,83,0,100,6,160,3,124, + 0,106,0,124,0,106,1,161,2,83,0,41,7,122,38,82, + 101,116,117,114,110,32,116,104,101,32,114,101,112,114,32,116, + 111,32,117,115,101,32,102,111,114,32,116,104,101,32,109,111, + 100,117,108,101,46,78,114,115,0,0,0,114,116,0,0,0, + 114,117,0,0,0,114,118,0,0,0,250,18,60,109,111,100, + 117,108,101,32,123,33,114,125,32,40,123,125,41,62,41,5, + 114,20,0,0,0,114,126,0,0,0,114,122,0,0,0,114, + 50,0,0,0,114,136,0,0,0,41,2,114,109,0,0,0, + 114,20,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,119,0,0,0,69,2,0,0,115,18,0, + 0,0,20,3,10,1,10,1,10,1,14,2,6,2,14,1, + 16,2,255,128,114,119,0,0,0,99,2,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,10,0,0,0,67,0, + 0,0,115,24,1,0,0,124,0,106,0,125,2,116,1,124, + 2,131,1,143,123,1,0,116,2,106,3,160,4,124,2,161, + 1,124,1,117,1,114,27,100,1,160,5,124,2,161,1,125, + 3,116,6,124,3,124,2,100,2,141,2,130,1,122,80,124, + 0,106,7,100,3,117,0,114,53,124,0,106,8,100,3,117, + 0,114,45,116,6,100,4,124,0,106,0,100,2,141,2,130, + 1,116,9,124,0,124,1,100,5,100,6,141,3,1,0,110, + 40,116,9,124,0,124,1,100,5,100,6,141,3,1,0,116, + 10,124,0,106,7,100,7,131,2,115,87,116,11,124,0,106, + 7,131,1,155,0,100,8,157,2,125,3,116,12,160,13,124, + 3,116,14,161,2,1,0,124,0,106,7,160,15,124,2,161, + 1,1,0,110,6,124,0,106,7,160,16,124,1,161,1,1, + 0,87,0,116,2,106,3,160,17,124,0,106,0,161,1,125, + 1,124,1,116,2,106,3,124,0,106,0,60,0,110,14,116, + 2,106,3,160,17,124,0,106,0,161,1,125,1,124,1,116, + 2,106,3,124,0,106,0,60,0,119,0,87,0,100,3,4, + 0,4,0,131,3,1,0,124,1,83,0,49,0,115,133,119, 1,1,0,1,0,1,0,89,0,1,0,124,1,83,0,41, 9,122,70,69,120,101,99,117,116,101,32,116,104,101,32,115, 112,101,99,39,115,32,115,112,101,99,105,102,105,101,100,32, @@ -980,895 +977,893 @@ const unsigned char _Py_M__importlib_bootstrap[] = { 50,0,0,0,6,2,10,1,16,1,10,1,12,1,2,1, 10,1,10,1,14,1,16,2,14,2,12,1,16,1,12,2, 14,1,12,2,2,128,14,4,14,1,14,255,26,1,4,1, - 18,128,4,0,255,128,114,106,0,0,0,99,1,0,0,0, + 16,128,4,0,255,128,114,106,0,0,0,99,1,0,0,0, 0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0, - 67,0,0,0,115,18,1,0,0,122,18,124,0,106,0,160, - 1,124,0,106,2,161,1,1,0,87,0,110,46,1,0,1, - 0,1,0,124,0,106,2,116,3,106,4,118,0,114,64,116, + 67,0,0,0,115,10,1,0,0,122,9,124,0,106,0,160, + 1,124,0,106,2,161,1,1,0,87,0,110,23,1,0,1, + 0,1,0,124,0,106,2,116,3,106,4,118,0,114,32,116, 3,106,4,160,5,124,0,106,2,161,1,125,1,124,1,116, 3,106,4,124,0,106,2,60,0,130,0,116,3,106,4,160, 5,124,0,106,2,161,1,125,1,124,1,116,3,106,4,124, 0,106,2,60,0,116,6,124,1,100,1,100,0,131,3,100, - 0,117,0,114,138,122,12,124,0,106,0,124,1,95,7,87, - 0,110,16,4,0,116,8,144,1,121,16,1,0,1,0,1, - 0,89,0,116,6,124,1,100,2,100,0,131,3,100,0,117, - 0,114,212,122,40,124,1,106,9,124,1,95,10,116,11,124, - 1,100,3,131,2,115,192,124,0,106,2,160,12,100,4,161, - 1,100,5,25,0,124,1,95,10,87,0,110,16,4,0,116, - 8,144,1,121,14,1,0,1,0,1,0,89,0,116,6,124, - 1,100,6,100,0,131,3,100,0,117,0,144,1,114,8,122, - 12,124,0,124,1,95,13,87,0,124,1,83,0,4,0,116, - 8,144,1,121,12,1,0,1,0,1,0,89,0,124,1,83, - 0,124,1,83,0,119,0,119,0,119,0,41,7,78,114,112, - 0,0,0,114,158,0,0,0,114,154,0,0,0,114,141,0, - 0,0,114,25,0,0,0,114,113,0,0,0,41,14,114,122, - 0,0,0,114,170,0,0,0,114,20,0,0,0,114,18,0, - 0,0,114,105,0,0,0,114,171,0,0,0,114,13,0,0, - 0,114,112,0,0,0,114,2,0,0,0,114,9,0,0,0, - 114,158,0,0,0,114,11,0,0,0,114,142,0,0,0,114, - 113,0,0,0,114,164,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,25,95,108,111,97,100,95, - 98,97,99,107,119,97,114,100,95,99,111,109,112,97,116,105, - 98,108,101,116,2,0,0,115,66,0,0,0,2,3,18,1, - 6,1,12,1,14,1,12,1,2,1,14,3,12,1,16,1, - 2,1,12,1,14,1,2,1,16,1,2,1,8,4,10,1, - 18,1,4,128,14,1,2,1,18,1,2,1,8,1,4,3, - 14,254,2,1,8,1,2,254,2,251,2,246,255,128,114,172, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,11,0,0,0,67,0,0,0,115,242,0,0, - 0,124,0,106,0,100,0,117,1,114,58,116,1,124,0,106, - 0,100,1,131,2,115,58,116,2,124,0,106,0,131,1,155, - 0,100,2,157,2,125,1,116,3,160,4,124,1,116,5,161, - 2,1,0,116,6,124,0,131,1,83,0,116,7,124,0,131, - 1,125,2,100,3,124,0,95,8,122,158,124,2,116,9,106, - 10,124,0,106,11,60,0,122,52,124,0,106,0,100,0,117, - 0,114,124,124,0,106,12,100,0,117,0,114,122,116,13,100, - 4,124,0,106,11,100,5,141,2,130,1,110,12,124,0,106, - 0,160,14,124,2,161,1,1,0,87,0,110,38,1,0,1, - 0,1,0,122,14,116,9,106,10,124,0,106,11,61,0,87, - 0,130,0,4,0,116,15,121,240,1,0,1,0,1,0,89, - 0,130,0,116,9,106,10,160,16,124,0,106,11,161,1,125, - 2,124,2,116,9,106,10,124,0,106,11,60,0,116,17,100, - 6,124,0,106,11,124,0,106,0,131,3,1,0,87,0,100, - 7,124,0,95,8,124,2,83,0,100,7,124,0,95,8,119, - 0,119,0,41,8,78,114,163,0,0,0,114,168,0,0,0, - 84,114,167,0,0,0,114,19,0,0,0,122,18,105,109,112, - 111,114,116,32,123,33,114,125,32,35,32,123,33,114,125,70, - 41,18,114,122,0,0,0,114,11,0,0,0,114,7,0,0, - 0,114,101,0,0,0,114,102,0,0,0,114,169,0,0,0, - 114,172,0,0,0,114,165,0,0,0,90,13,95,105,110,105, - 116,105,97,108,105,122,105,110,103,114,18,0,0,0,114,105, - 0,0,0,114,20,0,0,0,114,129,0,0,0,114,87,0, - 0,0,114,163,0,0,0,114,70,0,0,0,114,171,0,0, - 0,114,83,0,0,0,41,3,114,109,0,0,0,114,108,0, - 0,0,114,110,0,0,0,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,218,14,95,108,111,97,100,95,117,110, - 108,111,99,107,101,100,152,2,0,0,115,62,0,0,0,10, - 2,12,2,16,1,12,2,8,1,8,2,6,5,2,1,12, - 1,2,1,10,1,10,1,14,1,2,255,12,4,4,128,6, - 1,2,1,12,1,2,3,12,254,2,1,2,1,14,5,12, - 1,18,1,6,2,4,2,8,254,2,245,255,128,114,173,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,8,0,0,0,67,0,0,0,115,54,0,0,0, - 116,0,124,0,106,1,131,1,143,24,1,0,116,2,124,0, - 131,1,87,0,2,0,100,1,4,0,4,0,131,3,1,0, - 83,0,49,0,115,40,119,1,1,0,1,0,1,0,89,0, - 1,0,100,1,83,0,41,2,122,191,82,101,116,117,114,110, - 32,97,32,110,101,119,32,109,111,100,117,108,101,32,111,98, - 106,101,99,116,44,32,108,111,97,100,101,100,32,98,121,32, - 116,104,101,32,115,112,101,99,39,115,32,108,111,97,100,101, - 114,46,10,10,32,32,32,32,84,104,101,32,109,111,100,117, - 108,101,32,105,115,32,110,111,116,32,97,100,100,101,100,32, - 116,111,32,105,116,115,32,112,97,114,101,110,116,46,10,10, - 32,32,32,32,73,102,32,97,32,109,111,100,117,108,101,32, - 105,115,32,97,108,114,101,97,100,121,32,105,110,32,115,121, - 115,46,109,111,100,117,108,101,115,44,32,116,104,97,116,32, - 101,120,105,115,116,105,110,103,32,109,111,100,117,108,101,32, - 103,101,116,115,10,32,32,32,32,99,108,111,98,98,101,114, - 101,100,46,10,10,32,32,32,32,78,41,3,114,57,0,0, - 0,114,20,0,0,0,114,173,0,0,0,169,1,114,109,0, - 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,107,0,0,0,197,2,0,0,115,8,0,0,0,12, - 9,22,1,20,128,255,128,114,107,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,64,0,0,0,115,140,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,90,4,101,5,100,3,100,4, - 132,0,131,1,90,6,101,7,100,20,100,6,100,7,132,1, - 131,1,90,8,101,7,100,21,100,8,100,9,132,1,131,1, - 90,9,101,5,100,10,100,11,132,0,131,1,90,10,101,5, - 100,12,100,13,132,0,131,1,90,11,101,7,101,12,100,14, - 100,15,132,0,131,1,131,1,90,13,101,7,101,12,100,16, - 100,17,132,0,131,1,131,1,90,14,101,7,101,12,100,18, - 100,19,132,0,131,1,131,1,90,15,101,7,101,16,131,1, - 90,17,100,5,83,0,41,22,218,15,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,122,144,77,101,116,97,32, - 112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,32, - 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, - 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, - 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, - 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, - 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, - 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, - 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, - 108,97,115,115,46,10,10,32,32,32,32,122,8,98,117,105, - 108,116,45,105,110,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,5,0,0,0,67,0,0,0,115,34, - 0,0,0,116,0,160,1,100,1,116,2,161,2,1,0,100, - 2,124,0,106,3,155,2,100,3,116,4,106,5,155,0,100, - 4,157,5,83,0,41,6,250,115,82,101,116,117,114,110,32, - 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, - 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, - 101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108, - 102,46,10,10,32,32,32,32,32,32,32,32,122,81,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,46,109,111, - 100,117,108,101,95,114,101,112,114,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,122, - 8,60,109,111,100,117,108,101,32,122,2,32,40,122,2,41, - 62,78,41,6,114,101,0,0,0,114,102,0,0,0,114,103, - 0,0,0,114,9,0,0,0,114,175,0,0,0,114,151,0, - 0,0,169,1,114,110,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,114,0,0,0,223,2,0, - 0,115,10,0,0,0,6,7,2,1,4,255,22,2,255,128, - 122,27,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,109,111,100,117,108,101,95,114,101,112,114,78,99,4, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5, - 0,0,0,67,0,0,0,115,42,0,0,0,124,2,100,0, - 117,1,114,12,100,0,83,0,116,0,160,1,124,1,161,1, - 114,38,116,2,124,1,124,0,124,0,106,3,100,1,141,3, - 83,0,100,0,83,0,169,2,78,114,150,0,0,0,41,4, - 114,64,0,0,0,90,10,105,115,95,98,117,105,108,116,105, - 110,114,104,0,0,0,114,151,0,0,0,169,4,218,3,99, - 108,115,114,89,0,0,0,218,4,112,97,116,104,218,6,116, - 97,114,103,101,116,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,9,102,105,110,100,95,115,112,101,99,234, - 2,0,0,115,12,0,0,0,8,2,4,1,10,1,16,1, - 4,2,255,128,122,25,66,117,105,108,116,105,110,73,109,112, - 111,114,116,101,114,46,102,105,110,100,95,115,112,101,99,99, - 3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 4,0,0,0,67,0,0,0,115,30,0,0,0,124,0,160, - 0,124,1,124,2,161,2,125,3,124,3,100,1,117,1,114, - 26,124,3,106,1,83,0,100,1,83,0,41,2,122,175,70, - 105,110,100,32,116,104,101,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,73,102,32,39,112,97,116,104,39,32,105,115,32,101, - 118,101,114,32,115,112,101,99,105,102,105,101,100,32,116,104, - 101,110,32,116,104,101,32,115,101,97,114,99,104,32,105,115, - 32,99,111,110,115,105,100,101,114,101,100,32,97,32,102,97, - 105,108,117,114,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,41, - 2,114,183,0,0,0,114,122,0,0,0,41,4,114,180,0, - 0,0,114,89,0,0,0,114,181,0,0,0,114,109,0,0, + 0,117,0,114,68,122,6,124,0,106,0,124,1,95,7,87, + 0,110,7,4,0,116,8,121,132,1,0,1,0,1,0,89, + 0,116,6,124,1,100,2,100,0,131,3,100,0,117,0,114, + 104,122,20,124,1,106,9,124,1,95,10,116,11,124,1,100, + 3,131,2,115,95,124,0,106,2,160,12,100,4,161,1,100, + 5,25,0,124,1,95,10,87,0,110,7,4,0,116,8,121, + 131,1,0,1,0,1,0,89,0,116,6,124,1,100,6,100, + 0,131,3,100,0,117,0,114,128,122,6,124,0,124,1,95, + 13,87,0,124,1,83,0,4,0,116,8,121,130,1,0,1, + 0,1,0,89,0,124,1,83,0,124,1,83,0,119,0,119, + 0,119,0,41,7,78,114,112,0,0,0,114,158,0,0,0, + 114,154,0,0,0,114,141,0,0,0,114,25,0,0,0,114, + 113,0,0,0,41,14,114,122,0,0,0,114,170,0,0,0, + 114,20,0,0,0,114,18,0,0,0,114,105,0,0,0,114, + 171,0,0,0,114,13,0,0,0,114,112,0,0,0,114,2, + 0,0,0,114,9,0,0,0,114,158,0,0,0,114,11,0, + 0,0,114,142,0,0,0,114,113,0,0,0,114,164,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 218,11,102,105,110,100,95,109,111,100,117,108,101,243,2,0, - 0,115,6,0,0,0,12,9,18,1,255,128,122,27,66,117, - 105,108,116,105,110,73,109,112,111,114,116,101,114,46,102,105, - 110,100,95,109,111,100,117,108,101,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, - 0,0,115,46,0,0,0,124,0,106,0,116,1,106,2,118, - 1,114,34,116,3,100,1,160,4,124,0,106,0,161,1,124, - 0,106,0,100,2,141,2,130,1,116,5,116,6,106,7,124, - 0,131,2,83,0,41,4,122,24,67,114,101,97,116,101,32, - 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,114,85,0,0,0,114,19,0,0,0,78,41,8,114,20, - 0,0,0,114,18,0,0,0,114,86,0,0,0,114,87,0, - 0,0,114,50,0,0,0,114,74,0,0,0,114,64,0,0, - 0,90,14,99,114,101,97,116,101,95,98,117,105,108,116,105, - 110,114,174,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,162,0,0,0,255,2,0,0,115,12, - 0,0,0,12,3,12,1,4,1,6,255,12,2,255,128,122, - 29,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, - 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,116,1, - 106,2,124,0,131,2,1,0,100,1,83,0,41,2,122,22, - 69,120,101,99,32,97,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,78,41,3,114,74,0,0,0,114,64, - 0,0,0,90,12,101,120,101,99,95,98,117,105,108,116,105, - 110,114,177,0,0,0,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,114,163,0,0,0,7,3,0,0,115,4, - 0,0,0,16,3,255,128,122,27,66,117,105,108,116,105,110, - 73,109,112,111,114,116,101,114,46,101,120,101,99,95,109,111, - 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,243,4,0, - 0,0,100,1,83,0,41,2,122,57,82,101,116,117,114,110, - 32,78,111,110,101,32,97,115,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,115,32,100,111,32,110,111,116, - 32,104,97,118,101,32,99,111,100,101,32,111,98,106,101,99, - 116,115,46,78,114,5,0,0,0,169,2,114,180,0,0,0, - 114,89,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,218,8,103,101,116,95,99,111,100,101,12,3, - 0,0,243,4,0,0,0,4,4,255,128,122,24,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,103,101,116, - 95,99,111,100,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,1,0,0,0,67,0,0,0,114,185, - 0,0,0,41,2,122,56,82,101,116,117,114,110,32,78,111, - 110,101,32,97,115,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,115,32,100,111,32,110,111,116,32,104,97, - 118,101,32,115,111,117,114,99,101,32,99,111,100,101,46,78, - 114,5,0,0,0,114,186,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,10,103,101,116,95,115, - 111,117,114,99,101,18,3,0,0,114,188,0,0,0,122,26, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, - 103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,114,185,0,0,0,41,3,122,52,82,101,116,117, - 114,110,32,70,97,108,115,101,32,97,115,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,114,101, - 32,110,101,118,101,114,32,112,97,99,107,97,103,101,115,46, - 70,78,114,5,0,0,0,114,186,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,114,128,0,0,0, - 24,3,0,0,114,188,0,0,0,122,26,66,117,105,108,116, - 105,110,73,109,112,111,114,116,101,114,46,105,115,95,112,97, - 99,107,97,103,101,41,2,78,78,41,1,78,41,18,114,9, - 0,0,0,114,8,0,0,0,114,1,0,0,0,114,10,0, - 0,0,114,151,0,0,0,218,12,115,116,97,116,105,99,109, - 101,116,104,111,100,114,114,0,0,0,218,11,99,108,97,115, - 115,109,101,116,104,111,100,114,183,0,0,0,114,184,0,0, - 0,114,162,0,0,0,114,163,0,0,0,114,95,0,0,0, - 114,187,0,0,0,114,189,0,0,0,114,128,0,0,0,114, - 111,0,0,0,114,170,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,5,0,0,0,114,6,0,0,0,114,175,0, - 0,0,212,2,0,0,115,48,0,0,0,8,0,4,2,4, - 7,2,2,10,1,2,10,12,1,2,8,12,1,2,11,10, - 1,2,7,10,1,2,4,2,1,12,1,2,4,2,1,12, - 1,2,4,2,1,12,1,12,4,255,128,114,175,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,64,0,0,0,115,144,0,0,0,101,0, - 90,1,100,0,90,2,100,1,90,3,100,2,90,4,101,5, - 100,3,100,4,132,0,131,1,90,6,101,7,100,22,100,6, - 100,7,132,1,131,1,90,8,101,7,100,23,100,8,100,9, - 132,1,131,1,90,9,101,5,100,10,100,11,132,0,131,1, - 90,10,101,5,100,12,100,13,132,0,131,1,90,11,101,7, - 100,14,100,15,132,0,131,1,90,12,101,7,101,13,100,16, - 100,17,132,0,131,1,131,1,90,14,101,7,101,13,100,18, - 100,19,132,0,131,1,131,1,90,15,101,7,101,13,100,20, - 100,21,132,0,131,1,131,1,90,16,100,5,83,0,41,24, - 218,14,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 122,142,77,101,116,97,32,112,97,116,104,32,105,109,112,111, - 114,116,32,102,111,114,32,102,114,111,122,101,110,32,109,111, - 100,117,108,101,115,46,10,10,32,32,32,32,65,108,108,32, - 109,101,116,104,111,100,115,32,97,114,101,32,101,105,116,104, - 101,114,32,99,108,97,115,115,32,111,114,32,115,116,97,116, - 105,99,32,109,101,116,104,111,100,115,32,116,111,32,97,118, - 111,105,100,32,116,104,101,32,110,101,101,100,32,116,111,10, - 32,32,32,32,105,110,115,116,97,110,116,105,97,116,101,32, - 116,104,101,32,99,108,97,115,115,46,10,10,32,32,32,32, - 90,6,102,114,111,122,101,110,99,1,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, - 0,115,28,0,0,0,116,0,160,1,100,1,116,2,161,2, - 1,0,100,2,160,3,124,0,106,4,116,5,106,6,161,2, - 83,0,41,4,114,176,0,0,0,122,80,70,114,111,122,101, + 218,25,95,108,111,97,100,95,98,97,99,107,119,97,114,100, + 95,99,111,109,112,97,116,105,98,108,101,116,2,0,0,115, + 66,0,0,0,2,3,18,1,6,1,12,1,14,1,12,1, + 2,1,14,3,12,1,16,1,2,1,12,1,12,1,2,1, + 16,1,2,1,8,4,10,1,18,1,4,128,12,1,2,1, + 16,1,2,1,8,1,4,3,12,254,2,1,8,1,2,254, + 2,251,2,246,255,128,114,172,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0, + 67,0,0,0,115,242,0,0,0,124,0,106,0,100,0,117, + 1,114,29,116,1,124,0,106,0,100,1,131,2,115,29,116, + 2,124,0,106,0,131,1,155,0,100,2,157,2,125,1,116, + 3,160,4,124,1,116,5,161,2,1,0,116,6,124,0,131, + 1,83,0,116,7,124,0,131,1,125,2,100,3,124,0,95, + 8,122,79,124,2,116,9,106,10,124,0,106,11,60,0,122, + 26,124,0,106,0,100,0,117,0,114,62,124,0,106,12,100, + 0,117,0,114,61,116,13,100,4,124,0,106,11,100,5,141, + 2,130,1,110,6,124,0,106,0,160,14,124,2,161,1,1, + 0,87,0,110,19,1,0,1,0,1,0,122,7,116,9,106, + 10,124,0,106,11,61,0,87,0,130,0,4,0,116,15,121, + 120,1,0,1,0,1,0,89,0,130,0,116,9,106,10,160, + 16,124,0,106,11,161,1,125,2,124,2,116,9,106,10,124, + 0,106,11,60,0,116,17,100,6,124,0,106,11,124,0,106, + 0,131,3,1,0,87,0,100,7,124,0,95,8,124,2,83, + 0,100,7,124,0,95,8,119,0,119,0,41,8,78,114,163, + 0,0,0,114,168,0,0,0,84,114,167,0,0,0,114,19, + 0,0,0,122,18,105,109,112,111,114,116,32,123,33,114,125, + 32,35,32,123,33,114,125,70,41,18,114,122,0,0,0,114, + 11,0,0,0,114,7,0,0,0,114,101,0,0,0,114,102, + 0,0,0,114,169,0,0,0,114,172,0,0,0,114,165,0, + 0,0,90,13,95,105,110,105,116,105,97,108,105,122,105,110, + 103,114,18,0,0,0,114,105,0,0,0,114,20,0,0,0, + 114,129,0,0,0,114,87,0,0,0,114,163,0,0,0,114, + 70,0,0,0,114,171,0,0,0,114,83,0,0,0,41,3, + 114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,14, + 95,108,111,97,100,95,117,110,108,111,99,107,101,100,152,2, + 0,0,115,62,0,0,0,10,2,12,2,16,1,12,2,8, + 1,8,2,6,5,2,1,12,1,2,1,10,1,10,1,14, + 1,2,255,12,4,4,128,6,1,2,1,12,1,2,3,12, + 254,2,1,2,1,14,5,12,1,18,1,6,2,4,2,8, + 254,2,245,255,128,114,173,0,0,0,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, + 0,0,0,115,54,0,0,0,116,0,124,0,106,1,131,1, + 143,12,1,0,116,2,124,0,131,1,87,0,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,49,0,115,20,119,1, + 1,0,1,0,1,0,89,0,1,0,100,1,83,0,41,2, + 122,191,82,101,116,117,114,110,32,97,32,110,101,119,32,109, + 111,100,117,108,101,32,111,98,106,101,99,116,44,32,108,111, + 97,100,101,100,32,98,121,32,116,104,101,32,115,112,101,99, + 39,115,32,108,111,97,100,101,114,46,10,10,32,32,32,32, + 84,104,101,32,109,111,100,117,108,101,32,105,115,32,110,111, + 116,32,97,100,100,101,100,32,116,111,32,105,116,115,32,112, + 97,114,101,110,116,46,10,10,32,32,32,32,73,102,32,97, + 32,109,111,100,117,108,101,32,105,115,32,97,108,114,101,97, + 100,121,32,105,110,32,115,121,115,46,109,111,100,117,108,101, + 115,44,32,116,104,97,116,32,101,120,105,115,116,105,110,103, + 32,109,111,100,117,108,101,32,103,101,116,115,10,32,32,32, + 32,99,108,111,98,98,101,114,101,100,46,10,10,32,32,32, + 32,78,41,3,114,57,0,0,0,114,20,0,0,0,114,173, + 0,0,0,169,1,114,109,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,107,0,0,0,197,2, + 0,0,115,8,0,0,0,12,9,22,1,20,128,255,128,114, + 107,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,64,0,0,0,115,140,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 90,4,101,5,100,3,100,4,132,0,131,1,90,6,101,7, + 100,20,100,6,100,7,132,1,131,1,90,8,101,7,100,21, + 100,8,100,9,132,1,131,1,90,9,101,5,100,10,100,11, + 132,0,131,1,90,10,101,5,100,12,100,13,132,0,131,1, + 90,11,101,7,101,12,100,14,100,15,132,0,131,1,131,1, + 90,13,101,7,101,12,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,12,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,16,131,1,90,17,100,5,83,0,41,22, + 218,15,66,117,105,108,116,105,110,73,109,112,111,114,116,101, + 114,122,144,77,101,116,97,32,112,97,116,104,32,105,109,112, + 111,114,116,32,102,111,114,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, + 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, + 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, + 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, + 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, + 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, + 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, + 32,32,32,122,8,98,117,105,108,116,45,105,110,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0, + 0,0,67,0,0,0,115,34,0,0,0,116,0,160,1,100, + 1,116,2,161,2,1,0,100,2,124,0,106,3,155,2,100, + 3,116,4,106,5,155,0,100,4,157,5,83,0,41,6,250, + 115,82,101,116,117,114,110,32,114,101,112,114,32,102,111,114, + 32,116,104,101,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,101,32,109,101,116,104,111,100, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, + 32,84,104,101,32,105,109,112,111,114,116,32,109,97,99,104, + 105,110,101,114,121,32,100,111,101,115,32,116,104,101,32,106, + 111,98,32,105,116,115,101,108,102,46,10,10,32,32,32,32, + 32,32,32,32,122,81,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,109,111,100,117,108,101,95,114,101,112, + 114,40,41,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,32,97,110,100,32,115,108,97,116,101,100,32,102,111,114, + 32,114,101,109,111,118,97,108,32,105,110,32,80,121,116,104, + 111,110,32,51,46,49,50,122,8,60,109,111,100,117,108,101, + 32,122,2,32,40,122,2,41,62,78,41,6,114,101,0,0, + 0,114,102,0,0,0,114,103,0,0,0,114,9,0,0,0, + 114,175,0,0,0,114,151,0,0,0,169,1,114,110,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,114,0,0,0,223,2,0,0,115,10,0,0,0,6,7, + 2,1,4,255,22,2,255,128,122,27,66,117,105,108,116,105, 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, - 95,114,101,112,114,40,41,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,32,97,110,100,32,115,108,97,116,101,100, - 32,102,111,114,32,114,101,109,111,118,97,108,32,105,110,32, - 80,121,116,104,111,110,32,51,46,49,50,114,166,0,0,0, - 78,41,7,114,101,0,0,0,114,102,0,0,0,114,103,0, - 0,0,114,50,0,0,0,114,9,0,0,0,114,192,0,0, - 0,114,151,0,0,0,41,1,218,1,109,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,114,0,0,0,44, - 3,0,0,115,10,0,0,0,6,7,2,1,4,255,16,2, - 255,128,122,26,70,114,111,122,101,110,73,109,112,111,114,116, - 101,114,46,109,111,100,117,108,101,95,114,101,112,114,78,99, - 4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 5,0,0,0,67,0,0,0,115,30,0,0,0,116,0,160, - 1,124,1,161,1,114,26,116,2,124,1,124,0,124,0,106, - 3,100,1,141,3,83,0,100,0,83,0,114,178,0,0,0, - 41,4,114,64,0,0,0,114,98,0,0,0,114,104,0,0, - 0,114,151,0,0,0,114,179,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,114,183,0,0,0,55, - 3,0,0,115,8,0,0,0,10,2,16,1,4,2,255,128, - 122,24,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,18,0,0,0,116,0,160,1,124,1,161,1, - 114,14,124,0,83,0,100,1,83,0,41,2,122,93,70,105, - 110,100,32,97,32,102,114,111,122,101,110,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, - 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110, - 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, - 46,10,10,32,32,32,32,32,32,32,32,78,41,2,114,64, - 0,0,0,114,98,0,0,0,41,3,114,180,0,0,0,114, - 89,0,0,0,114,181,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,114,184,0,0,0,62,3,0, - 0,115,4,0,0,0,18,7,255,128,122,26,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,102,105,110,100,95, - 109,111,100,117,108,101,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,114, - 185,0,0,0,41,2,122,42,85,115,101,32,100,101,102,97, - 117,108,116,32,115,101,109,97,110,116,105,99,115,32,102,111, - 114,32,109,111,100,117,108,101,32,99,114,101,97,116,105,111, - 110,46,78,114,5,0,0,0,114,174,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,162,0,0, - 0,71,3,0,0,115,4,0,0,0,4,0,255,128,122,28, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,99, - 114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0, - 0,67,0,0,0,115,64,0,0,0,124,0,106,0,106,1, - 125,1,116,2,160,3,124,1,161,1,115,36,116,4,100,1, - 160,5,124,1,161,1,124,1,100,2,141,2,130,1,116,6, - 116,2,106,7,124,1,131,2,125,2,116,8,124,2,124,0, - 106,9,131,2,1,0,100,0,83,0,114,97,0,0,0,41, - 10,114,113,0,0,0,114,20,0,0,0,114,64,0,0,0, - 114,98,0,0,0,114,87,0,0,0,114,50,0,0,0,114, - 74,0,0,0,218,17,103,101,116,95,102,114,111,122,101,110, - 95,111,98,106,101,99,116,218,4,101,120,101,99,114,14,0, - 0,0,41,3,114,110,0,0,0,114,20,0,0,0,218,4, - 99,111,100,101,114,5,0,0,0,114,5,0,0,0,114,6, - 0,0,0,114,163,0,0,0,75,3,0,0,115,16,0,0, - 0,8,2,10,1,10,1,2,1,6,255,12,2,16,1,255, - 128,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, - 114,46,101,120,101,99,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,124, - 1,131,2,83,0,41,2,122,95,76,111,97,100,32,97,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,46,10,10, + 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,0, + 0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,115, + 42,0,0,0,124,2,100,0,117,1,114,6,100,0,83,0, + 116,0,160,1,124,1,161,1,114,19,116,2,124,1,124,0, + 124,0,106,3,100,1,141,3,83,0,100,0,83,0,169,2, + 78,114,150,0,0,0,41,4,114,64,0,0,0,90,10,105, + 115,95,98,117,105,108,116,105,110,114,104,0,0,0,114,151, + 0,0,0,169,4,218,3,99,108,115,114,89,0,0,0,218, + 4,112,97,116,104,218,6,116,97,114,103,101,116,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,234,2,0,0,115,12,0,0,0, + 8,2,4,1,10,1,16,1,4,2,255,128,122,25,66,117, + 105,108,116,105,110,73,109,112,111,114,116,101,114,46,102,105, + 110,100,95,115,112,101,99,99,3,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, + 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, + 3,124,3,100,1,117,1,114,13,124,3,106,1,83,0,100, + 1,83,0,41,2,122,175,70,105,110,100,32,116,104,101,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,46, + 10,10,32,32,32,32,32,32,32,32,73,102,32,39,112,97, + 116,104,39,32,105,115,32,101,118,101,114,32,115,112,101,99, + 105,102,105,101,100,32,116,104,101,110,32,116,104,101,32,115, + 101,97,114,99,104,32,105,115,32,99,111,110,115,105,100,101, + 114,101,100,32,97,32,102,97,105,108,117,114,101,46,10,10, 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,46,32,32,85,115,101,32,101,120,101,99,95,109,111,100, - 117,108,101,40,41,32,105,110,115,116,101,97,100,46,10,10, - 32,32,32,32,32,32,32,32,78,41,1,114,111,0,0,0, - 114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,114, - 6,0,0,0,114,170,0,0,0,84,3,0,0,115,4,0, - 0,0,10,8,255,128,122,26,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,243,10,0,0,0, - 116,0,160,1,124,1,161,1,83,0,41,2,122,45,82,101, - 116,117,114,110,32,116,104,101,32,99,111,100,101,32,111,98, - 106,101,99,116,32,102,111,114,32,116,104,101,32,102,114,111, - 122,101,110,32,109,111,100,117,108,101,46,78,41,2,114,64, - 0,0,0,114,194,0,0,0,114,186,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,187,0,0, - 0,94,3,0,0,243,4,0,0,0,10,4,255,128,122,23, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 114,185,0,0,0,41,2,122,54,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,115,32,100,111,32,110,111,116,32,104,97, - 118,101,32,115,111,117,114,99,101,32,99,111,100,101,46,78, - 114,5,0,0,0,114,186,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,114,189,0,0,0,100,3, - 0,0,114,188,0,0,0,122,25,70,114,111,122,101,110,73, + 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,78,41,2,114,183,0,0,0,114,122, + 0,0,0,41,4,114,180,0,0,0,114,89,0,0,0,114, + 181,0,0,0,114,109,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,11,102,105,110,100,95,109, + 111,100,117,108,101,243,2,0,0,115,6,0,0,0,12,9, + 18,1,255,128,122,27,66,117,105,108,116,105,110,73,109,112, + 111,114,116,101,114,46,102,105,110,100,95,109,111,100,117,108, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,67,0,0,0,115,46,0,0,0,124, + 0,106,0,116,1,106,2,118,1,114,17,116,3,100,1,160, + 4,124,0,106,0,161,1,124,0,106,0,100,2,141,2,130, + 1,116,5,116,6,106,7,124,0,131,2,83,0,41,4,122, + 24,67,114,101,97,116,101,32,97,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,114,85,0,0,0,114,19, + 0,0,0,78,41,8,114,20,0,0,0,114,18,0,0,0, + 114,86,0,0,0,114,87,0,0,0,114,50,0,0,0,114, + 74,0,0,0,114,64,0,0,0,90,14,99,114,101,97,116, + 101,95,98,117,105,108,116,105,110,114,174,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,162,0, + 0,0,255,2,0,0,115,12,0,0,0,12,3,12,1,4, + 1,6,255,12,2,255,128,122,29,66,117,105,108,116,105,110, + 73,109,112,111,114,116,101,114,46,99,114,101,97,116,101,95, + 109,111,100,117,108,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 16,0,0,0,116,0,116,1,106,2,124,0,131,2,1,0, + 100,1,83,0,41,2,122,22,69,120,101,99,32,97,32,98, + 117,105,108,116,45,105,110,32,109,111,100,117,108,101,78,41, + 3,114,74,0,0,0,114,64,0,0,0,90,12,101,120,101, + 99,95,98,117,105,108,116,105,110,114,177,0,0,0,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,114,163,0, + 0,0,7,3,0,0,115,4,0,0,0,16,3,255,128,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,243,4,0,0,0,100,1,83,0,41,2, + 122,57,82,101,116,117,114,110,32,78,111,110,101,32,97,115, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 115,32,100,111,32,110,111,116,32,104,97,118,101,32,99,111, + 100,101,32,111,98,106,101,99,116,115,46,78,114,5,0,0, + 0,169,2,114,180,0,0,0,114,89,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,218,8,103,101, + 116,95,99,111,100,101,12,3,0,0,243,4,0,0,0,4, + 4,255,128,122,24,66,117,105,108,116,105,110,73,109,112,111, + 114,116,101,114,46,103,101,116,95,99,111,100,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,114,185,0,0,0,41,2,122,56,82, + 101,116,117,114,110,32,78,111,110,101,32,97,115,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,100, + 111,32,110,111,116,32,104,97,118,101,32,115,111,117,114,99, + 101,32,99,111,100,101,46,78,114,5,0,0,0,114,186,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,10,103,101,116,95,115,111,117,114,99,101,18,3,0, + 0,114,188,0,0,0,122,26,66,117,105,108,116,105,110,73, 109,112,111,114,116,101,114,46,103,101,116,95,115,111,117,114, 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,114,197,0,0,0, - 41,2,122,46,82,101,116,117,114,110,32,84,114,117,101,32, - 105,102,32,116,104,101,32,102,114,111,122,101,110,32,109,111, - 100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,103, - 101,46,78,41,2,114,64,0,0,0,90,17,105,115,95,102, - 114,111,122,101,110,95,112,97,99,107,97,103,101,114,186,0, + 0,0,0,1,0,0,0,67,0,0,0,114,185,0,0,0, + 41,3,122,52,82,101,116,117,114,110,32,70,97,108,115,101, + 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, + 117,108,101,115,32,97,114,101,32,110,101,118,101,114,32,112, + 97,99,107,97,103,101,115,46,70,78,114,5,0,0,0,114, + 186,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,114,128,0,0,0,24,3,0,0,114,188,0,0, + 0,122,26,66,117,105,108,116,105,110,73,109,112,111,114,116, + 101,114,46,105,115,95,112,97,99,107,97,103,101,41,2,78, + 78,41,1,78,41,18,114,9,0,0,0,114,8,0,0,0, + 114,1,0,0,0,114,10,0,0,0,114,151,0,0,0,218, + 12,115,116,97,116,105,99,109,101,116,104,111,100,114,114,0, + 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, + 183,0,0,0,114,184,0,0,0,114,162,0,0,0,114,163, + 0,0,0,114,95,0,0,0,114,187,0,0,0,114,189,0, + 0,0,114,128,0,0,0,114,111,0,0,0,114,170,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,5,0,0,0, + 114,6,0,0,0,114,175,0,0,0,212,2,0,0,115,48, + 0,0,0,8,0,4,2,4,7,2,2,10,1,2,10,12, + 1,2,8,12,1,2,11,10,1,2,7,10,1,2,4,2, + 1,12,1,2,4,2,1,12,1,2,4,2,1,12,1,12, + 4,255,128,114,175,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,144,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,100,2,90,4,101,5,100,3,100,4,132,0,131,1, + 90,6,101,7,100,22,100,6,100,7,132,1,131,1,90,8, + 101,7,100,23,100,8,100,9,132,1,131,1,90,9,101,5, + 100,10,100,11,132,0,131,1,90,10,101,5,100,12,100,13, + 132,0,131,1,90,11,101,7,100,14,100,15,132,0,131,1, + 90,12,101,7,101,13,100,16,100,17,132,0,131,1,131,1, + 90,14,101,7,101,13,100,18,100,19,132,0,131,1,131,1, + 90,15,101,7,101,13,100,20,100,21,132,0,131,1,131,1, + 90,16,100,5,83,0,41,24,218,14,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,112, + 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,10, + 32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,32, + 97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,115, + 32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,111, + 100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,32, + 110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,116, + 97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,115, + 115,46,10,10,32,32,32,32,90,6,102,114,111,122,101,110, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,28,0,0,0,116,0, + 160,1,100,1,116,2,161,2,1,0,100,2,160,3,124,0, + 106,4,116,5,106,6,161,2,83,0,41,4,114,176,0,0, + 0,122,80,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,114,166,0,0,0,78,41,7,114,101,0,0,0, + 114,102,0,0,0,114,103,0,0,0,114,50,0,0,0,114, + 9,0,0,0,114,192,0,0,0,114,151,0,0,0,41,1, + 218,1,109,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,114,0,0,0,44,3,0,0,115,10,0,0,0, + 6,7,2,1,4,255,16,2,255,128,122,26,70,114,111,122, + 101,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108, + 101,95,114,101,112,114,78,99,4,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,5,0,0,0,67,0,0,0, + 115,30,0,0,0,116,0,160,1,124,1,161,1,114,13,116, + 2,124,1,124,0,124,0,106,3,100,1,141,3,83,0,100, + 0,83,0,114,178,0,0,0,41,4,114,64,0,0,0,114, + 98,0,0,0,114,104,0,0,0,114,151,0,0,0,114,179, + 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, + 0,0,114,183,0,0,0,55,3,0,0,115,8,0,0,0, + 10,2,16,1,4,2,255,128,122,24,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,102,105,110,100,95,115,112, + 101,99,99,3,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,3,0,0,0,67,0,0,0,115,18,0,0,0, + 116,0,160,1,124,1,161,1,114,7,124,0,83,0,100,1, + 83,0,41,2,122,93,70,105,110,100,32,97,32,102,114,111, + 122,101,110,32,109,111,100,117,108,101,46,10,10,32,32,32, + 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, + 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, + 32,85,115,101,32,102,105,110,100,95,115,112,101,99,40,41, + 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, + 32,32,32,78,41,2,114,64,0,0,0,114,98,0,0,0, + 41,3,114,180,0,0,0,114,89,0,0,0,114,181,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 114,184,0,0,0,62,3,0,0,115,4,0,0,0,18,7, + 255,128,122,26,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1, + 0,0,0,67,0,0,0,114,185,0,0,0,41,2,122,42, + 85,115,101,32,100,101,102,97,117,108,116,32,115,101,109,97, + 110,116,105,99,115,32,102,111,114,32,109,111,100,117,108,101, + 32,99,114,101,97,116,105,111,110,46,78,114,5,0,0,0, + 114,174,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,162,0,0,0,71,3,0,0,115,4,0, + 0,0,4,0,255,128,122,28,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,99,114,101,97,116,101,95,109,111, + 100,117,108,101,99,1,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,4,0,0,0,67,0,0,0,115,64,0, + 0,0,124,0,106,0,106,1,125,1,116,2,160,3,124,1, + 161,1,115,18,116,4,100,1,160,5,124,1,161,1,124,1, + 100,2,141,2,130,1,116,6,116,2,106,7,124,1,131,2, + 125,2,116,8,124,2,124,0,106,9,131,2,1,0,100,0, + 83,0,114,97,0,0,0,41,10,114,113,0,0,0,114,20, + 0,0,0,114,64,0,0,0,114,98,0,0,0,114,87,0, + 0,0,114,50,0,0,0,114,74,0,0,0,218,17,103,101, + 116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,218, + 4,101,120,101,99,114,14,0,0,0,41,3,114,110,0,0, + 0,114,20,0,0,0,218,4,99,111,100,101,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,114,163,0,0,0, + 75,3,0,0,115,16,0,0,0,8,2,10,1,10,1,2, + 1,6,255,12,2,16,1,255,128,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,101,120,101,99,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,124,0,124,1,131,2,83,0,41,2,122, + 95,76,111,97,100,32,97,32,102,114,111,122,101,110,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, + 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, + 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, + 78,41,1,114,111,0,0,0,114,186,0,0,0,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,170,0,0, + 0,84,3,0,0,115,4,0,0,0,10,8,255,128,122,26, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,108, + 111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,243,10,0,0,0,116,0,160,1,124,1,161,1, + 83,0,41,2,122,45,82,101,116,117,114,110,32,116,104,101, + 32,99,111,100,101,32,111,98,106,101,99,116,32,102,111,114, + 32,116,104,101,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,46,78,41,2,114,64,0,0,0,114,194,0,0,0, + 114,186,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,187,0,0,0,94,3,0,0,243,4,0, + 0,0,10,4,255,128,122,23,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 1,0,0,0,67,0,0,0,114,185,0,0,0,41,2,122, + 54,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,115,32,100, + 111,32,110,111,116,32,104,97,118,101,32,115,111,117,114,99, + 101,32,99,111,100,101,46,78,114,5,0,0,0,114,186,0, 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, - 0,114,128,0,0,0,106,3,0,0,114,198,0,0,0,122, + 0,114,189,0,0,0,100,3,0,0,114,188,0,0,0,122, 25,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46, - 105,115,95,112,97,99,107,97,103,101,41,2,78,78,41,1, - 78,41,17,114,9,0,0,0,114,8,0,0,0,114,1,0, - 0,0,114,10,0,0,0,114,151,0,0,0,114,190,0,0, - 0,114,114,0,0,0,114,191,0,0,0,114,183,0,0,0, - 114,184,0,0,0,114,162,0,0,0,114,163,0,0,0,114, - 170,0,0,0,114,100,0,0,0,114,187,0,0,0,114,189, - 0,0,0,114,128,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,114,192,0,0, - 0,33,3,0,0,115,50,0,0,0,8,0,4,2,4,7, - 2,2,10,1,2,10,12,1,2,6,12,1,2,8,10,1, - 2,3,10,1,2,8,10,1,2,9,2,1,12,1,2,4, - 2,1,12,1,2,4,2,1,16,1,255,128,114,192,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,64,0,0,0,115,32,0,0,0,101, - 0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,132, - 0,90,4,100,4,100,5,132,0,90,5,100,6,83,0,41, - 7,218,18,95,73,109,112,111,114,116,76,111,99,107,67,111, - 110,116,101,120,116,122,36,67,111,110,116,101,120,116,32,109, - 97,110,97,103,101,114,32,102,111,114,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,46,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 67,0,0,0,243,12,0,0,0,116,0,160,1,161,0,1, - 0,100,1,83,0,41,2,122,24,65,99,113,117,105,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107, - 46,78,41,2,114,64,0,0,0,114,65,0,0,0,114,52, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,114,61,0,0,0,119,3,0,0,243,4,0,0,0, - 12,2,255,128,122,28,95,73,109,112,111,114,116,76,111,99, - 107,67,111,110,116,101,120,116,46,95,95,101,110,116,101,114, - 95,95,99,4,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,2,0,0,0,67,0,0,0,114,200,0,0,0, - 41,2,122,60,82,101,108,101,97,115,101,32,116,104,101,32, - 105,109,112,111,114,116,32,108,111,99,107,32,114,101,103,97, - 114,100,108,101,115,115,32,111,102,32,97,110,121,32,114,97, - 105,115,101,100,32,101,120,99,101,112,116,105,111,110,115,46, - 78,41,2,114,64,0,0,0,114,67,0,0,0,41,4,114, - 33,0,0,0,218,8,101,120,99,95,116,121,112,101,218,9, - 101,120,99,95,118,97,108,117,101,218,13,101,120,99,95,116, - 114,97,99,101,98,97,99,107,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,63,0,0,0,123,3,0,0, - 114,201,0,0,0,122,27,95,73,109,112,111,114,116,76,111, - 99,107,67,111,110,116,101,120,116,46,95,95,101,120,105,116, - 95,95,78,41,6,114,9,0,0,0,114,8,0,0,0,114, - 1,0,0,0,114,10,0,0,0,114,61,0,0,0,114,63, - 0,0,0,114,5,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,114,199,0,0,0,115,3,0,0, - 115,10,0,0,0,8,0,4,2,8,2,12,4,255,128,114, - 199,0,0,0,99,3,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,5,0,0,0,67,0,0,0,115,64,0, - 0,0,124,1,160,0,100,1,124,2,100,2,24,0,161,2, - 125,3,116,1,124,3,131,1,124,2,107,0,114,36,116,2, - 100,3,131,1,130,1,124,3,100,4,25,0,125,4,124,0, - 114,60,100,5,160,3,124,4,124,0,161,2,83,0,124,4, - 83,0,41,7,122,50,82,101,115,111,108,118,101,32,97,32, - 114,101,108,97,116,105,118,101,32,109,111,100,117,108,101,32, - 110,97,109,101,32,116,111,32,97,110,32,97,98,115,111,108, - 117,116,101,32,111,110,101,46,114,141,0,0,0,114,42,0, - 0,0,122,50,97,116,116,101,109,112,116,101,100,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,32,98,101, - 121,111,110,100,32,116,111,112,45,108,101,118,101,108,32,112, - 97,99,107,97,103,101,114,25,0,0,0,250,5,123,125,46, - 123,125,78,41,4,218,6,114,115,112,108,105,116,218,3,108, - 101,110,114,87,0,0,0,114,50,0,0,0,41,5,114,20, - 0,0,0,218,7,112,97,99,107,97,103,101,218,5,108,101, - 118,101,108,90,4,98,105,116,115,90,4,98,97,115,101,114, - 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,13, - 95,114,101,115,111,108,118,101,95,110,97,109,101,128,3,0, - 0,115,12,0,0,0,16,2,12,1,8,1,8,1,20,1, - 255,128,114,210,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, - 115,60,0,0,0,116,0,124,0,131,1,155,0,100,1,157, - 2,125,3,116,1,160,2,124,3,116,3,161,2,1,0,124, - 0,160,4,124,1,124,2,161,2,125,4,124,4,100,0,117, - 0,114,50,100,0,83,0,116,5,124,1,124,4,131,2,83, - 0,41,2,78,122,53,46,102,105,110,100,95,115,112,101,99, - 40,41,32,110,111,116,32,102,111,117,110,100,59,32,102,97, - 108,108,105,110,103,32,98,97,99,107,32,116,111,32,102,105, - 110,100,95,109,111,100,117,108,101,40,41,41,6,114,7,0, - 0,0,114,101,0,0,0,114,102,0,0,0,114,169,0,0, - 0,114,184,0,0,0,114,104,0,0,0,41,5,218,6,102, - 105,110,100,101,114,114,20,0,0,0,114,181,0,0,0,114, - 108,0,0,0,114,122,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,17,95,102,105,110,100,95, - 115,112,101,99,95,108,101,103,97,99,121,137,3,0,0,115, - 14,0,0,0,14,1,12,2,12,1,8,1,4,1,10,1, - 255,128,114,212,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,10,0,0,0,10,0,0,0,67,0,0,0, - 115,36,1,0,0,116,0,106,1,125,3,124,3,100,1,117, - 0,114,22,116,2,100,2,131,1,130,1,124,3,115,38,116, - 3,160,4,100,3,116,5,161,2,1,0,124,0,116,0,106, - 6,118,0,125,4,124,3,68,0,93,230,125,5,116,7,131, - 0,143,94,1,0,122,10,124,5,106,8,125,6,87,0,110, - 54,4,0,116,9,144,1,121,34,1,0,1,0,1,0,116, - 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,117, - 0,114,126,89,0,87,0,100,1,4,0,4,0,131,3,1, - 0,113,52,89,0,110,12,124,6,124,0,124,1,124,2,131, - 3,125,7,87,0,100,1,4,0,4,0,131,3,1,0,110, - 16,49,0,115,162,119,1,1,0,1,0,1,0,89,0,1, - 0,124,7,100,1,117,1,144,1,114,26,124,4,144,1,115, - 18,124,0,116,0,106,6,118,0,144,1,114,18,116,0,106, - 6,124,0,25,0,125,8,122,10,124,8,106,11,125,9,87, - 0,110,26,4,0,116,9,144,1,121,32,1,0,1,0,1, - 0,124,7,6,0,89,0,2,0,1,0,83,0,124,9,100, - 1,117,0,144,1,114,10,124,7,2,0,1,0,83,0,124, - 9,2,0,1,0,83,0,124,7,2,0,1,0,83,0,113, - 52,100,1,83,0,119,0,119,0,41,4,122,21,70,105,110, - 100,32,97,32,109,111,100,117,108,101,39,115,32,115,112,101, - 99,46,78,122,53,115,121,115,46,109,101,116,97,95,112,97, - 116,104,32,105,115,32,78,111,110,101,44,32,80,121,116,104, - 111,110,32,105,115,32,108,105,107,101,108,121,32,115,104,117, - 116,116,105,110,103,32,100,111,119,110,122,22,115,121,115,46, - 109,101,116,97,95,112,97,116,104,32,105,115,32,101,109,112, - 116,121,41,12,114,18,0,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,87,0,0,0,114,101,0,0,0,114,102, - 0,0,0,114,169,0,0,0,114,105,0,0,0,114,199,0, - 0,0,114,183,0,0,0,114,2,0,0,0,114,212,0,0, - 0,114,113,0,0,0,41,10,114,20,0,0,0,114,181,0, - 0,0,114,182,0,0,0,114,213,0,0,0,90,9,105,115, - 95,114,101,108,111,97,100,114,211,0,0,0,114,183,0,0, - 0,114,109,0,0,0,114,110,0,0,0,114,113,0,0,0, - 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, - 10,95,102,105,110,100,95,115,112,101,99,147,3,0,0,115, - 66,0,0,0,6,2,8,1,8,2,4,3,12,1,10,5, - 8,1,8,1,2,1,10,1,14,1,12,1,8,1,16,1, - 4,255,12,3,30,128,10,1,18,2,10,1,2,1,10,1, - 14,1,12,4,10,2,8,1,8,2,8,2,2,239,4,19, - 2,243,2,244,255,128,114,214,0,0,0,99,3,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0, - 67,0,0,0,115,110,0,0,0,116,0,124,0,116,1,131, - 2,115,28,116,2,100,1,160,3,116,4,124,0,131,1,161, - 1,131,1,130,1,124,2,100,2,107,0,114,44,116,5,100, - 3,131,1,130,1,124,2,100,2,107,4,114,82,116,0,124, - 1,116,1,131,2,115,70,116,2,100,4,131,1,130,1,124, - 1,115,82,116,6,100,5,131,1,130,1,124,0,115,106,124, - 2,100,2,107,2,114,102,116,5,100,6,131,1,130,1,100, - 7,83,0,100,7,83,0,41,8,122,28,86,101,114,105,102, - 121,32,97,114,103,117,109,101,110,116,115,32,97,114,101,32, - 34,115,97,110,101,34,46,122,31,109,111,100,117,108,101,32, - 110,97,109,101,32,109,117,115,116,32,98,101,32,115,116,114, - 44,32,110,111,116,32,123,125,114,25,0,0,0,122,18,108, - 101,118,101,108,32,109,117,115,116,32,98,101,32,62,61,32, - 48,122,31,95,95,112,97,99,107,97,103,101,95,95,32,110, - 111,116,32,115,101,116,32,116,111,32,97,32,115,116,114,105, - 110,103,122,54,97,116,116,101,109,112,116,101,100,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,32,119,105, - 116,104,32,110,111,32,107,110,111,119,110,32,112,97,114,101, - 110,116,32,112,97,99,107,97,103,101,122,17,69,109,112,116, - 121,32,109,111,100,117,108,101,32,110,97,109,101,78,41,7, - 218,10,105,115,105,110,115,116,97,110,99,101,218,3,115,116, - 114,218,9,84,121,112,101,69,114,114,111,114,114,50,0,0, - 0,114,3,0,0,0,218,10,86,97,108,117,101,69,114,114, - 111,114,114,87,0,0,0,169,3,114,20,0,0,0,114,208, - 0,0,0,114,209,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,13,95,115,97,110,105,116,121, - 95,99,104,101,99,107,194,3,0,0,115,26,0,0,0,10, - 2,18,1,8,1,8,1,8,1,10,1,8,1,4,1,8, - 1,12,2,8,1,8,255,255,128,114,220,0,0,0,122,16, - 78,111,32,109,111,100,117,108,101,32,110,97,109,101,100,32, - 122,4,123,33,114,125,99,2,0,0,0,0,0,0,0,0, - 0,0,0,9,0,0,0,8,0,0,0,67,0,0,0,115, - 22,1,0,0,100,0,125,2,124,0,160,0,100,1,161,1, - 100,2,25,0,125,3,124,3,114,128,124,3,116,1,106,2, - 118,1,114,42,116,3,124,1,124,3,131,2,1,0,124,0, - 116,1,106,2,118,0,114,62,116,1,106,2,124,0,25,0, - 83,0,116,1,106,2,124,3,25,0,125,4,122,10,124,4, - 106,4,125,2,87,0,110,44,4,0,116,5,144,1,121,20, - 1,0,1,0,1,0,116,6,100,3,23,0,160,7,124,0, - 124,3,161,2,125,5,116,8,124,5,124,0,100,4,141,2, - 100,0,130,2,116,9,124,0,124,2,131,2,125,6,124,6, - 100,0,117,0,114,164,116,8,116,6,160,7,124,0,161,1, - 124,0,100,4,141,2,130,1,116,10,124,6,131,1,125,7, - 124,3,144,1,114,14,116,1,106,2,124,3,25,0,125,4, - 124,0,160,0,100,1,161,1,100,5,25,0,125,8,122,18, - 116,11,124,4,124,8,124,7,131,3,1,0,87,0,124,7, - 83,0,4,0,116,5,144,1,121,18,1,0,1,0,1,0, - 100,6,124,3,155,2,100,7,124,8,155,2,157,4,125,5, - 116,12,160,13,124,5,116,14,161,2,1,0,89,0,124,7, - 83,0,124,7,83,0,119,0,119,0,41,8,78,114,141,0, - 0,0,114,25,0,0,0,122,23,59,32,123,33,114,125,32, - 105,115,32,110,111,116,32,97,32,112,97,99,107,97,103,101, - 114,19,0,0,0,233,2,0,0,0,122,27,67,97,110,110, - 111,116,32,115,101,116,32,97,110,32,97,116,116,114,105,98, - 117,116,101,32,111,110,32,122,18,32,102,111,114,32,99,104, - 105,108,100,32,109,111,100,117,108,101,32,41,15,114,142,0, - 0,0,114,18,0,0,0,114,105,0,0,0,114,74,0,0, - 0,114,154,0,0,0,114,2,0,0,0,218,8,95,69,82, - 82,95,77,83,71,114,50,0,0,0,218,19,77,111,100,117, - 108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,114, - 214,0,0,0,114,173,0,0,0,114,12,0,0,0,114,101, - 0,0,0,114,102,0,0,0,114,169,0,0,0,41,9,114, - 20,0,0,0,218,7,105,109,112,111,114,116,95,114,181,0, - 0,0,114,143,0,0,0,90,13,112,97,114,101,110,116,95, - 109,111,100,117,108,101,114,108,0,0,0,114,109,0,0,0, - 114,110,0,0,0,90,5,99,104,105,108,100,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,23,95,102,105, - 110,100,95,97,110,100,95,108,111,97,100,95,117,110,108,111, - 99,107,101,100,213,3,0,0,115,60,0,0,0,4,1,14, - 1,4,1,10,1,10,1,10,2,10,1,10,1,2,1,10, - 1,14,1,16,1,14,1,10,1,8,1,18,1,8,2,6, - 1,10,2,14,1,2,1,14,1,4,4,14,253,16,1,14, - 1,8,1,2,253,2,242,255,128,114,225,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,8, - 0,0,0,67,0,0,0,115,128,0,0,0,116,0,124,0, - 131,1,143,62,1,0,116,1,106,2,160,3,124,0,116,4, - 161,2,125,2,124,2,116,4,117,0,114,56,116,5,124,0, - 124,1,131,2,87,0,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,87,0,100,1,4,0,4,0,131,3,1,0, - 110,16,49,0,115,76,119,1,1,0,1,0,1,0,89,0, - 1,0,124,2,100,1,117,0,114,116,100,2,160,6,124,0, - 161,1,125,3,116,7,124,3,124,0,100,3,141,2,130,1, - 116,8,124,0,131,1,1,0,124,2,83,0,41,4,122,25, - 70,105,110,100,32,97,110,100,32,108,111,97,100,32,116,104, - 101,32,109,111,100,117,108,101,46,78,122,40,105,109,112,111, - 114,116,32,111,102,32,123,125,32,104,97,108,116,101,100,59, - 32,78,111,110,101,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,114,19,0,0,0,41,9,114,57,0,0,0, - 114,18,0,0,0,114,105,0,0,0,114,38,0,0,0,218, - 14,95,78,69,69,68,83,95,76,79,65,68,73,78,71,114, - 225,0,0,0,114,50,0,0,0,114,223,0,0,0,114,72, - 0,0,0,41,4,114,20,0,0,0,114,224,0,0,0,114, - 110,0,0,0,114,82,0,0,0,114,5,0,0,0,114,5, - 0,0,0,114,6,0,0,0,218,14,95,102,105,110,100,95, - 97,110,100,95,108,111,97,100,248,3,0,0,115,28,0,0, - 0,10,2,14,1,8,1,24,1,14,255,16,128,8,3,2, - 1,6,1,2,255,12,2,8,2,4,1,255,128,114,227,0, - 0,0,114,25,0,0,0,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, - 115,42,0,0,0,116,0,124,0,124,1,124,2,131,3,1, - 0,124,2,100,1,107,4,114,32,116,1,124,0,124,1,124, - 2,131,3,125,0,116,2,124,0,116,3,131,2,83,0,41, - 3,97,50,1,0,0,73,109,112,111,114,116,32,97,110,100, - 32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,117, - 108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,32, - 110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,103, - 101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,32, - 32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,111, - 109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,108, - 32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,32, - 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,103, - 114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,100, - 101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,117, - 110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,32, - 98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,109, - 111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,111, - 114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,117, - 100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,97, - 99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,116, - 104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,111, - 116,46,10,10,32,32,32,32,114,25,0,0,0,78,41,4, - 114,220,0,0,0,114,210,0,0,0,114,227,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,219,0,0, + 103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67, + 0,0,0,114,197,0,0,0,41,2,122,46,82,101,116,117, + 114,110,32,84,114,117,101,32,105,102,32,116,104,101,32,102, + 114,111,122,101,110,32,109,111,100,117,108,101,32,105,115,32, + 97,32,112,97,99,107,97,103,101,46,78,41,2,114,64,0, + 0,0,90,17,105,115,95,102,114,111,122,101,110,95,112,97, + 99,107,97,103,101,114,186,0,0,0,114,5,0,0,0,114, + 5,0,0,0,114,6,0,0,0,114,128,0,0,0,106,3, + 0,0,114,198,0,0,0,122,25,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, + 103,101,41,2,78,78,41,1,78,41,17,114,9,0,0,0, + 114,8,0,0,0,114,1,0,0,0,114,10,0,0,0,114, + 151,0,0,0,114,190,0,0,0,114,114,0,0,0,114,191, + 0,0,0,114,183,0,0,0,114,184,0,0,0,114,162,0, + 0,0,114,163,0,0,0,114,170,0,0,0,114,100,0,0, + 0,114,187,0,0,0,114,189,0,0,0,114,128,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,5,0,0,0,114, + 6,0,0,0,114,192,0,0,0,33,3,0,0,115,50,0, + 0,0,8,0,4,2,4,7,2,2,10,1,2,10,12,1, + 2,6,12,1,2,8,10,1,2,3,10,1,2,8,10,1, + 2,9,2,1,12,1,2,4,2,1,12,1,2,4,2,1, + 16,1,255,128,114,192,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0, + 0,0,115,32,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, + 0,90,5,100,6,83,0,41,7,218,18,95,73,109,112,111, + 114,116,76,111,99,107,67,111,110,116,101,120,116,122,36,67, + 111,110,116,101,120,116,32,109,97,110,97,103,101,114,32,102, + 111,114,32,116,104,101,32,105,109,112,111,114,116,32,108,111, + 99,107,46,99,1,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,2,0,0,0,67,0,0,0,243,12,0,0, + 0,116,0,160,1,161,0,1,0,100,1,83,0,41,2,122, + 24,65,99,113,117,105,114,101,32,116,104,101,32,105,109,112, + 111,114,116,32,108,111,99,107,46,78,41,2,114,64,0,0, + 0,114,65,0,0,0,114,52,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,6,0,0,0,114,61,0,0,0,119, + 3,0,0,243,4,0,0,0,12,2,255,128,122,28,95,73, + 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, + 46,95,95,101,110,116,101,114,95,95,99,4,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,2,0,0,0,67, + 0,0,0,114,200,0,0,0,41,2,122,60,82,101,108,101, + 97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,108, + 111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,111, + 102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,99, + 101,112,116,105,111,110,115,46,78,41,2,114,64,0,0,0, + 114,67,0,0,0,41,4,114,33,0,0,0,218,8,101,120, + 99,95,116,121,112,101,218,9,101,120,99,95,118,97,108,117, + 101,218,13,101,120,99,95,116,114,97,99,101,98,97,99,107, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 63,0,0,0,123,3,0,0,114,201,0,0,0,122,27,95, + 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, + 116,46,95,95,101,120,105,116,95,95,78,41,6,114,9,0, + 0,0,114,8,0,0,0,114,1,0,0,0,114,10,0,0, + 0,114,61,0,0,0,114,63,0,0,0,114,5,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,114, + 199,0,0,0,115,3,0,0,115,10,0,0,0,8,0,4, + 2,8,2,12,4,255,128,114,199,0,0,0,99,3,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, + 0,67,0,0,0,115,64,0,0,0,124,1,160,0,100,1, + 124,2,100,2,24,0,161,2,125,3,116,1,124,3,131,1, + 124,2,107,0,114,18,116,2,100,3,131,1,130,1,124,3, + 100,4,25,0,125,4,124,0,114,30,100,5,160,3,124,4, + 124,0,161,2,83,0,124,4,83,0,41,7,122,50,82,101, + 115,111,108,118,101,32,97,32,114,101,108,97,116,105,118,101, + 32,109,111,100,117,108,101,32,110,97,109,101,32,116,111,32, + 97,110,32,97,98,115,111,108,117,116,101,32,111,110,101,46, + 114,141,0,0,0,114,42,0,0,0,122,50,97,116,116,101, + 109,112,116,101,100,32,114,101,108,97,116,105,118,101,32,105, + 109,112,111,114,116,32,98,101,121,111,110,100,32,116,111,112, + 45,108,101,118,101,108,32,112,97,99,107,97,103,101,114,25, + 0,0,0,250,5,123,125,46,123,125,78,41,4,218,6,114, + 115,112,108,105,116,218,3,108,101,110,114,87,0,0,0,114, + 50,0,0,0,41,5,114,20,0,0,0,218,7,112,97,99, + 107,97,103,101,218,5,108,101,118,101,108,90,4,98,105,116, + 115,90,4,98,97,115,101,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,218,13,95,114,101,115,111,108,118,101, + 95,110,97,109,101,128,3,0,0,115,12,0,0,0,16,2, + 12,1,8,1,8,1,20,1,255,128,114,210,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, + 4,0,0,0,67,0,0,0,115,60,0,0,0,116,0,124, + 0,131,1,155,0,100,1,157,2,125,3,116,1,160,2,124, + 3,116,3,161,2,1,0,124,0,160,4,124,1,124,2,161, + 2,125,4,124,4,100,0,117,0,114,25,100,0,83,0,116, + 5,124,1,124,4,131,2,83,0,41,2,78,122,53,46,102, + 105,110,100,95,115,112,101,99,40,41,32,110,111,116,32,102, + 111,117,110,100,59,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,116,111,32,102,105,110,100,95,109,111,100,117,108, + 101,40,41,41,6,114,7,0,0,0,114,101,0,0,0,114, + 102,0,0,0,114,169,0,0,0,114,184,0,0,0,114,104, + 0,0,0,41,5,218,6,102,105,110,100,101,114,114,20,0, + 0,0,114,181,0,0,0,114,108,0,0,0,114,122,0,0, 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, - 114,228,0,0,0,8,4,0,0,115,10,0,0,0,12,9, - 8,1,12,1,10,1,255,128,114,228,0,0,0,169,1,218, - 9,114,101,99,117,114,115,105,118,101,99,3,0,0,0,0, - 0,0,0,1,0,0,0,8,0,0,0,11,0,0,0,67, - 0,0,0,115,218,0,0,0,124,1,68,0,93,206,125,4, - 116,0,124,4,116,1,131,2,115,64,124,3,114,34,124,0, - 106,2,100,1,23,0,125,5,110,4,100,2,125,5,116,3, - 100,3,124,5,155,0,100,4,116,4,124,4,131,1,106,2, - 155,0,157,4,131,1,130,1,124,4,100,5,107,2,114,106, - 124,3,115,104,116,5,124,0,100,6,131,2,114,104,116,6, - 124,0,124,0,106,7,124,2,100,7,100,8,141,4,1,0, - 113,4,116,5,124,0,124,4,131,2,115,210,100,9,160,8, - 124,0,106,2,124,4,161,2,125,6,122,14,116,9,124,2, - 124,6,131,2,1,0,87,0,113,4,4,0,116,10,121,216, - 1,0,125,7,1,0,122,42,124,7,106,11,124,6,107,2, - 114,200,116,12,106,13,160,14,124,6,116,15,161,2,100,10, - 117,1,114,200,87,0,89,0,100,10,125,7,126,7,113,4, - 130,0,100,10,125,7,126,7,119,1,113,4,124,0,83,0, - 119,0,41,11,122,238,70,105,103,117,114,101,32,111,117,116, - 32,119,104,97,116,32,95,95,105,109,112,111,114,116,95,95, - 32,115,104,111,117,108,100,32,114,101,116,117,114,110,46,10, - 10,32,32,32,32,84,104,101,32,105,109,112,111,114,116,95, - 32,112,97,114,97,109,101,116,101,114,32,105,115,32,97,32, - 99,97,108,108,97,98,108,101,32,119,104,105,99,104,32,116, - 97,107,101,115,32,116,104,101,32,110,97,109,101,32,111,102, - 32,109,111,100,117,108,101,32,116,111,10,32,32,32,32,105, - 109,112,111,114,116,46,32,73,116,32,105,115,32,114,101,113, - 117,105,114,101,100,32,116,111,32,100,101,99,111,117,112,108, - 101,32,116,104,101,32,102,117,110,99,116,105,111,110,32,102, - 114,111,109,32,97,115,115,117,109,105,110,103,32,105,109,112, - 111,114,116,108,105,98,39,115,10,32,32,32,32,105,109,112, - 111,114,116,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,105,115,32,100,101,115,105,114,101,100,46,10,10, - 32,32,32,32,122,8,46,95,95,97,108,108,95,95,122,13, - 96,96,102,114,111,109,32,108,105,115,116,39,39,122,8,73, - 116,101,109,32,105,110,32,122,18,32,109,117,115,116,32,98, - 101,32,115,116,114,44,32,110,111,116,32,250,1,42,218,7, - 95,95,97,108,108,95,95,84,114,229,0,0,0,114,205,0, - 0,0,78,41,16,114,215,0,0,0,114,216,0,0,0,114, - 9,0,0,0,114,217,0,0,0,114,3,0,0,0,114,11, - 0,0,0,218,16,95,104,97,110,100,108,101,95,102,114,111, - 109,108,105,115,116,114,232,0,0,0,114,50,0,0,0,114, - 74,0,0,0,114,223,0,0,0,114,20,0,0,0,114,18, - 0,0,0,114,105,0,0,0,114,38,0,0,0,114,226,0, - 0,0,41,8,114,110,0,0,0,218,8,102,114,111,109,108, - 105,115,116,114,224,0,0,0,114,230,0,0,0,218,1,120, - 90,5,119,104,101,114,101,90,9,102,114,111,109,95,110,97, - 109,101,90,3,101,120,99,114,5,0,0,0,114,5,0,0, - 0,114,6,0,0,0,114,233,0,0,0,23,4,0,0,115, - 58,0,0,0,8,10,10,1,4,1,12,1,4,2,10,1, - 8,1,8,255,8,2,14,1,10,1,2,1,6,255,2,128, - 10,2,14,1,2,1,14,1,14,1,10,4,16,1,2,255, - 12,2,2,1,8,128,2,245,4,12,2,248,255,128,114,233, - 0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,6,0,0,0,67,0,0,0,115,146,0,0, - 0,124,0,160,0,100,1,161,1,125,1,124,0,160,0,100, - 2,161,1,125,2,124,1,100,3,117,1,114,82,124,2,100, - 3,117,1,114,78,124,1,124,2,106,1,107,3,114,78,116, - 2,106,3,100,4,124,1,155,2,100,5,124,2,106,1,155, - 2,100,6,157,5,116,4,100,7,100,8,141,3,1,0,124, - 1,83,0,124,2,100,3,117,1,114,96,124,2,106,1,83, - 0,116,2,106,3,100,9,116,4,100,7,100,8,141,3,1, - 0,124,0,100,10,25,0,125,1,100,11,124,0,118,1,114, - 142,124,1,160,5,100,12,161,1,100,13,25,0,125,1,124, - 1,83,0,41,14,122,167,67,97,108,99,117,108,97,116,101, - 32,119,104,97,116,32,95,95,112,97,99,107,97,103,101,95, - 95,32,115,104,111,117,108,100,32,98,101,46,10,10,32,32, - 32,32,95,95,112,97,99,107,97,103,101,95,95,32,105,115, - 32,110,111,116,32,103,117,97,114,97,110,116,101,101,100,32, - 116,111,32,98,101,32,100,101,102,105,110,101,100,32,111,114, - 32,99,111,117,108,100,32,98,101,32,115,101,116,32,116,111, - 32,78,111,110,101,10,32,32,32,32,116,111,32,114,101,112, - 114,101,115,101,110,116,32,116,104,97,116,32,105,116,115,32, - 112,114,111,112,101,114,32,118,97,108,117,101,32,105,115,32, - 117,110,107,110,111,119,110,46,10,10,32,32,32,32,114,158, - 0,0,0,114,113,0,0,0,78,122,32,95,95,112,97,99, - 107,97,103,101,95,95,32,33,61,32,95,95,115,112,101,99, - 95,95,46,112,97,114,101,110,116,32,40,122,4,32,33,61, - 32,250,1,41,233,3,0,0,0,41,1,90,10,115,116,97, - 99,107,108,101,118,101,108,122,89,99,97,110,39,116,32,114, - 101,115,111,108,118,101,32,112,97,99,107,97,103,101,32,102, - 114,111,109,32,95,95,115,112,101,99,95,95,32,111,114,32, - 95,95,112,97,99,107,97,103,101,95,95,44,32,102,97,108, - 108,105,110,103,32,98,97,99,107,32,111,110,32,95,95,110, - 97,109,101,95,95,32,97,110,100,32,95,95,112,97,116,104, - 95,95,114,9,0,0,0,114,154,0,0,0,114,141,0,0, - 0,114,25,0,0,0,41,6,114,38,0,0,0,114,143,0, - 0,0,114,101,0,0,0,114,102,0,0,0,114,169,0,0, - 0,114,142,0,0,0,41,3,218,7,103,108,111,98,97,108, - 115,114,208,0,0,0,114,109,0,0,0,114,5,0,0,0, - 114,5,0,0,0,114,6,0,0,0,218,17,95,99,97,108, - 99,95,95,95,112,97,99,107,97,103,101,95,95,60,4,0, - 0,115,44,0,0,0,10,7,10,1,8,1,18,1,6,1, - 2,1,4,255,4,1,6,255,4,2,6,254,4,3,8,1, - 6,1,6,2,4,2,6,254,8,3,8,1,14,1,4,1, - 255,128,114,239,0,0,0,114,5,0,0,0,99,5,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,5,0,0, - 0,67,0,0,0,115,174,0,0,0,124,4,100,1,107,2, - 114,18,116,0,124,0,131,1,125,5,110,36,124,1,100,2, - 117,1,114,30,124,1,110,2,105,0,125,6,116,1,124,6, - 131,1,125,7,116,0,124,0,124,7,124,4,131,3,125,5, - 124,3,115,148,124,4,100,1,107,2,114,84,116,0,124,0, - 160,2,100,3,161,1,100,1,25,0,131,1,83,0,124,0, - 115,92,124,5,83,0,116,3,124,0,131,1,116,3,124,0, - 160,2,100,3,161,1,100,1,25,0,131,1,24,0,125,8, - 116,4,106,5,124,5,106,6,100,2,116,3,124,5,106,6, - 131,1,124,8,24,0,133,2,25,0,25,0,83,0,116,7, - 124,5,100,4,131,2,114,170,116,8,124,5,124,3,116,0, - 131,3,83,0,124,5,83,0,41,5,97,215,1,0,0,73, - 109,112,111,114,116,32,97,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,84,104,101,32,39,103,108,111,98,97,108, - 115,39,32,97,114,103,117,109,101,110,116,32,105,115,32,117, - 115,101,100,32,116,111,32,105,110,102,101,114,32,119,104,101, - 114,101,32,116,104,101,32,105,109,112,111,114,116,32,105,115, - 32,111,99,99,117,114,114,105,110,103,32,102,114,111,109,10, - 32,32,32,32,116,111,32,104,97,110,100,108,101,32,114,101, - 108,97,116,105,118,101,32,105,109,112,111,114,116,115,46,32, - 84,104,101,32,39,108,111,99,97,108,115,39,32,97,114,103, - 117,109,101,110,116,32,105,115,32,105,103,110,111,114,101,100, - 46,32,84,104,101,10,32,32,32,32,39,102,114,111,109,108, - 105,115,116,39,32,97,114,103,117,109,101,110,116,32,115,112, - 101,99,105,102,105,101,115,32,119,104,97,116,32,115,104,111, - 117,108,100,32,101,120,105,115,116,32,97,115,32,97,116,116, - 114,105,98,117,116,101,115,32,111,110,32,116,104,101,32,109, - 111,100,117,108,101,10,32,32,32,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,40,101,46,103,46,32,96, - 96,102,114,111,109,32,109,111,100,117,108,101,32,105,109,112, - 111,114,116,32,60,102,114,111,109,108,105,115,116,62,96,96, - 41,46,32,32,84,104,101,32,39,108,101,118,101,108,39,10, - 32,32,32,32,97,114,103,117,109,101,110,116,32,114,101,112, - 114,101,115,101,110,116,115,32,116,104,101,32,112,97,99,107, - 97,103,101,32,108,111,99,97,116,105,111,110,32,116,111,32, - 105,109,112,111,114,116,32,102,114,111,109,32,105,110,32,97, - 32,114,101,108,97,116,105,118,101,10,32,32,32,32,105,109, - 112,111,114,116,32,40,101,46,103,46,32,96,96,102,114,111, - 109,32,46,46,112,107,103,32,105,109,112,111,114,116,32,109, - 111,100,96,96,32,119,111,117,108,100,32,104,97,118,101,32, - 97,32,39,108,101,118,101,108,39,32,111,102,32,50,41,46, - 10,10,32,32,32,32,114,25,0,0,0,78,114,141,0,0, - 0,114,154,0,0,0,41,9,114,228,0,0,0,114,239,0, - 0,0,218,9,112,97,114,116,105,116,105,111,110,114,207,0, - 0,0,114,18,0,0,0,114,105,0,0,0,114,9,0,0, - 0,114,11,0,0,0,114,233,0,0,0,41,9,114,20,0, - 0,0,114,238,0,0,0,218,6,108,111,99,97,108,115,114, - 234,0,0,0,114,209,0,0,0,114,110,0,0,0,90,8, - 103,108,111,98,97,108,115,95,114,208,0,0,0,90,7,99, - 117,116,95,111,102,102,114,5,0,0,0,114,5,0,0,0, - 114,6,0,0,0,218,10,95,95,105,109,112,111,114,116,95, - 95,87,4,0,0,115,32,0,0,0,8,11,10,1,16,2, - 8,1,12,1,4,1,8,3,18,1,4,1,4,1,26,4, - 30,3,10,1,12,1,4,2,255,128,114,242,0,0,0,99, - 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 3,0,0,0,67,0,0,0,115,38,0,0,0,116,0,160, - 1,124,0,161,1,125,1,124,1,100,0,117,0,114,30,116, - 2,100,1,124,0,23,0,131,1,130,1,116,3,124,1,131, - 1,83,0,41,2,78,122,25,110,111,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,32,110,97,109,101,100, - 32,41,4,114,175,0,0,0,114,183,0,0,0,114,87,0, - 0,0,114,173,0,0,0,41,2,114,20,0,0,0,114,109, + 218,17,95,102,105,110,100,95,115,112,101,99,95,108,101,103, + 97,99,121,137,3,0,0,115,14,0,0,0,14,1,12,2, + 12,1,8,1,4,1,10,1,255,128,114,212,0,0,0,99, + 3,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0, + 10,0,0,0,67,0,0,0,115,24,1,0,0,116,0,106, + 1,125,3,124,3,100,1,117,0,114,11,116,2,100,2,131, + 1,130,1,124,3,115,19,116,3,160,4,100,3,116,5,161, + 2,1,0,124,0,116,0,106,6,118,0,125,4,124,3,68, + 0,93,109,125,5,116,7,131,0,143,46,1,0,122,5,124, + 5,106,8,125,6,87,0,110,26,4,0,116,9,121,139,1, + 0,1,0,1,0,116,10,124,5,124,0,124,1,131,3,125, + 7,124,7,100,1,117,0,114,62,89,0,87,0,100,1,4, + 0,4,0,131,3,1,0,113,26,89,0,110,6,124,6,124, + 0,124,1,124,2,131,3,125,7,87,0,100,1,4,0,4, + 0,131,3,1,0,110,8,49,0,115,80,119,1,1,0,1, + 0,1,0,89,0,1,0,124,7,100,1,117,1,114,135,124, + 4,115,131,124,0,116,0,106,6,118,0,114,131,116,0,106, + 6,124,0,25,0,125,8,122,5,124,8,106,11,125,9,87, + 0,110,12,4,0,116,9,121,138,1,0,1,0,1,0,124, + 7,6,0,89,0,2,0,1,0,83,0,124,9,100,1,117, + 0,114,127,124,7,2,0,1,0,83,0,124,9,2,0,1, + 0,83,0,124,7,2,0,1,0,83,0,113,26,100,1,83, + 0,119,0,119,0,41,4,122,21,70,105,110,100,32,97,32, + 109,111,100,117,108,101,39,115,32,115,112,101,99,46,78,122, + 53,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105, + 115,32,78,111,110,101,44,32,80,121,116,104,111,110,32,105, + 115,32,108,105,107,101,108,121,32,115,104,117,116,116,105,110, + 103,32,100,111,119,110,122,22,115,121,115,46,109,101,116,97, + 95,112,97,116,104,32,105,115,32,101,109,112,116,121,41,12, + 114,18,0,0,0,218,9,109,101,116,97,95,112,97,116,104, + 114,87,0,0,0,114,101,0,0,0,114,102,0,0,0,114, + 169,0,0,0,114,105,0,0,0,114,199,0,0,0,114,183, + 0,0,0,114,2,0,0,0,114,212,0,0,0,114,113,0, + 0,0,41,10,114,20,0,0,0,114,181,0,0,0,114,182, + 0,0,0,114,213,0,0,0,90,9,105,115,95,114,101,108, + 111,97,100,114,211,0,0,0,114,183,0,0,0,114,109,0, + 0,0,114,110,0,0,0,114,113,0,0,0,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,10,95,102,105, + 110,100,95,115,112,101,99,147,3,0,0,115,66,0,0,0, + 6,2,8,1,8,2,4,3,12,1,10,5,8,1,8,1, + 2,1,10,1,12,1,12,1,8,1,16,1,4,255,12,3, + 30,128,8,1,14,2,10,1,2,1,10,1,12,1,12,4, + 8,2,8,1,8,2,8,2,2,239,4,19,2,243,2,244, + 255,128,114,214,0,0,0,99,3,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, + 115,110,0,0,0,116,0,124,0,116,1,131,2,115,14,116, + 2,100,1,160,3,116,4,124,0,131,1,161,1,131,1,130, + 1,124,2,100,2,107,0,114,22,116,5,100,3,131,1,130, + 1,124,2,100,2,107,4,114,41,116,0,124,1,116,1,131, + 2,115,35,116,2,100,4,131,1,130,1,124,1,115,41,116, + 6,100,5,131,1,130,1,124,0,115,53,124,2,100,2,107, + 2,114,51,116,5,100,6,131,1,130,1,100,7,83,0,100, + 7,83,0,41,8,122,28,86,101,114,105,102,121,32,97,114, + 103,117,109,101,110,116,115,32,97,114,101,32,34,115,97,110, + 101,34,46,122,31,109,111,100,117,108,101,32,110,97,109,101, + 32,109,117,115,116,32,98,101,32,115,116,114,44,32,110,111, + 116,32,123,125,114,25,0,0,0,122,18,108,101,118,101,108, + 32,109,117,115,116,32,98,101,32,62,61,32,48,122,31,95, + 95,112,97,99,107,97,103,101,95,95,32,110,111,116,32,115, + 101,116,32,116,111,32,97,32,115,116,114,105,110,103,122,54, + 97,116,116,101,109,112,116,101,100,32,114,101,108,97,116,105, + 118,101,32,105,109,112,111,114,116,32,119,105,116,104,32,110, + 111,32,107,110,111,119,110,32,112,97,114,101,110,116,32,112, + 97,99,107,97,103,101,122,17,69,109,112,116,121,32,109,111, + 100,117,108,101,32,110,97,109,101,78,41,7,218,10,105,115, + 105,110,115,116,97,110,99,101,218,3,115,116,114,218,9,84, + 121,112,101,69,114,114,111,114,114,50,0,0,0,114,3,0, + 0,0,218,10,86,97,108,117,101,69,114,114,111,114,114,87, + 0,0,0,169,3,114,20,0,0,0,114,208,0,0,0,114, + 209,0,0,0,114,5,0,0,0,114,5,0,0,0,114,6, + 0,0,0,218,13,95,115,97,110,105,116,121,95,99,104,101, + 99,107,194,3,0,0,115,26,0,0,0,10,2,18,1,8, + 1,8,1,8,1,10,1,8,1,4,1,8,1,12,2,8, + 1,8,255,255,128,114,220,0,0,0,122,16,78,111,32,109, + 111,100,117,108,101,32,110,97,109,101,100,32,122,4,123,33, + 114,125,99,2,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,8,0,0,0,67,0,0,0,115,16,1,0,0, + 100,0,125,2,124,0,160,0,100,1,161,1,100,2,25,0, + 125,3,124,3,114,63,124,3,116,1,106,2,118,1,114,21, + 116,3,124,1,124,3,131,2,1,0,124,0,116,1,106,2, + 118,0,114,31,116,1,106,2,124,0,25,0,83,0,116,1, + 106,2,124,3,25,0,125,4,122,5,124,4,106,4,125,2, + 87,0,110,21,4,0,116,5,121,135,1,0,1,0,1,0, + 116,6,100,3,23,0,160,7,124,0,124,3,161,2,125,5, + 116,8,124,5,124,0,100,4,141,2,100,0,130,2,116,9, + 124,0,124,2,131,2,125,6,124,6,100,0,117,0,114,81, + 116,8,116,6,160,7,124,0,161,1,124,0,100,4,141,2, + 130,1,116,10,124,6,131,1,125,7,124,3,114,132,116,1, + 106,2,124,3,25,0,125,4,124,0,160,0,100,1,161,1, + 100,5,25,0,125,8,122,9,116,11,124,4,124,8,124,7, + 131,3,1,0,87,0,124,7,83,0,4,0,116,5,121,134, + 1,0,1,0,1,0,100,6,124,3,155,2,100,7,124,8, + 155,2,157,4,125,5,116,12,160,13,124,5,116,14,161,2, + 1,0,89,0,124,7,83,0,124,7,83,0,119,0,119,0, + 41,8,78,114,141,0,0,0,114,25,0,0,0,122,23,59, + 32,123,33,114,125,32,105,115,32,110,111,116,32,97,32,112, + 97,99,107,97,103,101,114,19,0,0,0,233,2,0,0,0, + 122,27,67,97,110,110,111,116,32,115,101,116,32,97,110,32, + 97,116,116,114,105,98,117,116,101,32,111,110,32,122,18,32, + 102,111,114,32,99,104,105,108,100,32,109,111,100,117,108,101, + 32,41,15,114,142,0,0,0,114,18,0,0,0,114,105,0, + 0,0,114,74,0,0,0,114,154,0,0,0,114,2,0,0, + 0,218,8,95,69,82,82,95,77,83,71,114,50,0,0,0, + 218,19,77,111,100,117,108,101,78,111,116,70,111,117,110,100, + 69,114,114,111,114,114,214,0,0,0,114,173,0,0,0,114, + 12,0,0,0,114,101,0,0,0,114,102,0,0,0,114,169, + 0,0,0,41,9,114,20,0,0,0,218,7,105,109,112,111, + 114,116,95,114,181,0,0,0,114,143,0,0,0,90,13,112, + 97,114,101,110,116,95,109,111,100,117,108,101,114,108,0,0, + 0,114,109,0,0,0,114,110,0,0,0,90,5,99,104,105, + 108,100,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,23,95,102,105,110,100,95,97,110,100,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,213,3,0,0,115,60, + 0,0,0,4,1,14,1,4,1,10,1,10,1,10,2,10, + 1,10,1,2,1,10,1,12,1,16,1,14,1,10,1,8, + 1,18,1,8,2,4,1,10,2,14,1,2,1,14,1,4, + 4,12,253,16,1,14,1,8,1,2,253,2,242,255,128,114, + 225,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,8,0,0,0,67,0,0,0,115,128,0, + 0,0,116,0,124,0,131,1,143,31,1,0,116,1,106,2, + 160,3,124,0,116,4,161,2,125,2,124,2,116,4,117,0, + 114,28,116,5,124,0,124,1,131,2,87,0,2,0,100,1, + 4,0,4,0,131,3,1,0,83,0,87,0,100,1,4,0, + 4,0,131,3,1,0,110,8,49,0,115,38,119,1,1,0, + 1,0,1,0,89,0,1,0,124,2,100,1,117,0,114,58, + 100,2,160,6,124,0,161,1,125,3,116,7,124,3,124,0, + 100,3,141,2,130,1,116,8,124,0,131,1,1,0,124,2, + 83,0,41,4,122,25,70,105,110,100,32,97,110,100,32,108, + 111,97,100,32,116,104,101,32,109,111,100,117,108,101,46,78, + 122,40,105,109,112,111,114,116,32,111,102,32,123,125,32,104, + 97,108,116,101,100,59,32,78,111,110,101,32,105,110,32,115, + 121,115,46,109,111,100,117,108,101,115,114,19,0,0,0,41, + 9,114,57,0,0,0,114,18,0,0,0,114,105,0,0,0, + 114,38,0,0,0,218,14,95,78,69,69,68,83,95,76,79, + 65,68,73,78,71,114,225,0,0,0,114,50,0,0,0,114, + 223,0,0,0,114,72,0,0,0,41,4,114,20,0,0,0, + 114,224,0,0,0,114,110,0,0,0,114,82,0,0,0,114, + 5,0,0,0,114,5,0,0,0,114,6,0,0,0,218,14, + 95,102,105,110,100,95,97,110,100,95,108,111,97,100,248,3, + 0,0,115,28,0,0,0,10,2,14,1,8,1,24,1,14, + 255,16,128,8,3,2,1,6,1,2,255,12,2,8,2,4, + 1,255,128,114,227,0,0,0,114,25,0,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0, + 0,0,67,0,0,0,115,42,0,0,0,116,0,124,0,124, + 1,124,2,131,3,1,0,124,2,100,1,107,4,114,16,116, + 1,124,0,124,1,124,2,131,3,125,0,116,2,124,0,116, + 3,131,2,83,0,41,3,97,50,1,0,0,73,109,112,111, + 114,116,32,97,110,100,32,114,101,116,117,114,110,32,116,104, + 101,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,105,116,115,32,110,97,109,101,44,32,116,104,101,32, + 112,97,99,107,97,103,101,32,116,104,101,32,99,97,108,108, + 32,105,115,10,32,32,32,32,98,101,105,110,103,32,109,97, + 100,101,32,102,114,111,109,44,32,97,110,100,32,116,104,101, + 32,108,101,118,101,108,32,97,100,106,117,115,116,109,101,110, + 116,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, + 99,116,105,111,110,32,114,101,112,114,101,115,101,110,116,115, + 32,116,104,101,32,103,114,101,97,116,101,115,116,32,99,111, + 109,109,111,110,32,100,101,110,111,109,105,110,97,116,111,114, + 32,111,102,32,102,117,110,99,116,105,111,110,97,108,105,116, + 121,10,32,32,32,32,98,101,116,119,101,101,110,32,105,109, + 112,111,114,116,95,109,111,100,117,108,101,32,97,110,100,32, + 95,95,105,109,112,111,114,116,95,95,46,32,84,104,105,115, + 32,105,110,99,108,117,100,101,115,32,115,101,116,116,105,110, + 103,32,95,95,112,97,99,107,97,103,101,95,95,32,105,102, + 10,32,32,32,32,116,104,101,32,108,111,97,100,101,114,32, + 100,105,100,32,110,111,116,46,10,10,32,32,32,32,114,25, + 0,0,0,78,41,4,114,220,0,0,0,114,210,0,0,0, + 114,227,0,0,0,218,11,95,103,99,100,95,105,109,112,111, + 114,116,114,219,0,0,0,114,5,0,0,0,114,5,0,0, + 0,114,6,0,0,0,114,228,0,0,0,8,4,0,0,115, + 10,0,0,0,12,9,8,1,12,1,10,1,255,128,114,228, + 0,0,0,169,1,218,9,114,101,99,117,114,115,105,118,101, + 99,3,0,0,0,0,0,0,0,1,0,0,0,8,0,0, + 0,11,0,0,0,67,0,0,0,115,218,0,0,0,124,1, + 68,0,93,103,125,4,116,0,124,4,116,1,131,2,115,32, + 124,3,114,17,124,0,106,2,100,1,23,0,125,5,110,2, + 100,2,125,5,116,3,100,3,124,5,155,0,100,4,116,4, + 124,4,131,1,106,2,155,0,157,4,131,1,130,1,124,4, + 100,5,107,2,114,53,124,3,115,52,116,5,124,0,100,6, + 131,2,114,52,116,6,124,0,124,0,106,7,124,2,100,7, + 100,8,141,4,1,0,113,2,116,5,124,0,124,4,131,2, + 115,105,100,9,160,8,124,0,106,2,124,4,161,2,125,6, + 122,7,116,9,124,2,124,6,131,2,1,0,87,0,113,2, + 4,0,116,10,121,108,1,0,125,7,1,0,122,21,124,7, + 106,11,124,6,107,2,114,100,116,12,106,13,160,14,124,6, + 116,15,161,2,100,10,117,1,114,100,87,0,89,0,100,10, + 125,7,126,7,113,2,130,0,100,10,125,7,126,7,119,1, + 113,2,124,0,83,0,119,0,41,11,122,238,70,105,103,117, + 114,101,32,111,117,116,32,119,104,97,116,32,95,95,105,109, + 112,111,114,116,95,95,32,115,104,111,117,108,100,32,114,101, + 116,117,114,110,46,10,10,32,32,32,32,84,104,101,32,105, + 109,112,111,114,116,95,32,112,97,114,97,109,101,116,101,114, + 32,105,115,32,97,32,99,97,108,108,97,98,108,101,32,119, + 104,105,99,104,32,116,97,107,101,115,32,116,104,101,32,110, + 97,109,101,32,111,102,32,109,111,100,117,108,101,32,116,111, + 10,32,32,32,32,105,109,112,111,114,116,46,32,73,116,32, + 105,115,32,114,101,113,117,105,114,101,100,32,116,111,32,100, + 101,99,111,117,112,108,101,32,116,104,101,32,102,117,110,99, + 116,105,111,110,32,102,114,111,109,32,97,115,115,117,109,105, + 110,103,32,105,109,112,111,114,116,108,105,98,39,115,10,32, + 32,32,32,105,109,112,111,114,116,32,105,109,112,108,101,109, + 101,110,116,97,116,105,111,110,32,105,115,32,100,101,115,105, + 114,101,100,46,10,10,32,32,32,32,122,8,46,95,95,97, + 108,108,95,95,122,13,96,96,102,114,111,109,32,108,105,115, + 116,39,39,122,8,73,116,101,109,32,105,110,32,122,18,32, + 109,117,115,116,32,98,101,32,115,116,114,44,32,110,111,116, + 32,250,1,42,218,7,95,95,97,108,108,95,95,84,114,229, + 0,0,0,114,205,0,0,0,78,41,16,114,215,0,0,0, + 114,216,0,0,0,114,9,0,0,0,114,217,0,0,0,114, + 3,0,0,0,114,11,0,0,0,218,16,95,104,97,110,100, + 108,101,95,102,114,111,109,108,105,115,116,114,232,0,0,0, + 114,50,0,0,0,114,74,0,0,0,114,223,0,0,0,114, + 20,0,0,0,114,18,0,0,0,114,105,0,0,0,114,38, + 0,0,0,114,226,0,0,0,41,8,114,110,0,0,0,218, + 8,102,114,111,109,108,105,115,116,114,224,0,0,0,114,230, + 0,0,0,218,1,120,90,5,119,104,101,114,101,90,9,102, + 114,111,109,95,110,97,109,101,90,3,101,120,99,114,5,0, + 0,0,114,5,0,0,0,114,6,0,0,0,114,233,0,0, + 0,23,4,0,0,115,58,0,0,0,8,10,10,1,4,1, + 12,1,4,2,10,1,8,1,8,255,8,2,14,1,10,1, + 2,1,6,255,2,128,10,2,14,1,2,1,14,1,14,1, + 10,4,16,1,2,255,12,2,2,1,8,128,2,245,4,12, + 2,248,255,128,114,233,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,6,0,0,0,67,0, + 0,0,115,146,0,0,0,124,0,160,0,100,1,161,1,125, + 1,124,0,160,0,100,2,161,1,125,2,124,1,100,3,117, + 1,114,41,124,2,100,3,117,1,114,39,124,1,124,2,106, + 1,107,3,114,39,116,2,106,3,100,4,124,1,155,2,100, + 5,124,2,106,1,155,2,100,6,157,5,116,4,100,7,100, + 8,141,3,1,0,124,1,83,0,124,2,100,3,117,1,114, + 48,124,2,106,1,83,0,116,2,106,3,100,9,116,4,100, + 7,100,8,141,3,1,0,124,0,100,10,25,0,125,1,100, + 11,124,0,118,1,114,71,124,1,160,5,100,12,161,1,100, + 13,25,0,125,1,124,1,83,0,41,14,122,167,67,97,108, + 99,117,108,97,116,101,32,119,104,97,116,32,95,95,112,97, + 99,107,97,103,101,95,95,32,115,104,111,117,108,100,32,98, + 101,46,10,10,32,32,32,32,95,95,112,97,99,107,97,103, + 101,95,95,32,105,115,32,110,111,116,32,103,117,97,114,97, + 110,116,101,101,100,32,116,111,32,98,101,32,100,101,102,105, + 110,101,100,32,111,114,32,99,111,117,108,100,32,98,101,32, + 115,101,116,32,116,111,32,78,111,110,101,10,32,32,32,32, + 116,111,32,114,101,112,114,101,115,101,110,116,32,116,104,97, + 116,32,105,116,115,32,112,114,111,112,101,114,32,118,97,108, + 117,101,32,105,115,32,117,110,107,110,111,119,110,46,10,10, + 32,32,32,32,114,158,0,0,0,114,113,0,0,0,78,122, + 32,95,95,112,97,99,107,97,103,101,95,95,32,33,61,32, + 95,95,115,112,101,99,95,95,46,112,97,114,101,110,116,32, + 40,122,4,32,33,61,32,250,1,41,233,3,0,0,0,41, + 1,90,10,115,116,97,99,107,108,101,118,101,108,122,89,99, + 97,110,39,116,32,114,101,115,111,108,118,101,32,112,97,99, + 107,97,103,101,32,102,114,111,109,32,95,95,115,112,101,99, + 95,95,32,111,114,32,95,95,112,97,99,107,97,103,101,95, + 95,44,32,102,97,108,108,105,110,103,32,98,97,99,107,32, + 111,110,32,95,95,110,97,109,101,95,95,32,97,110,100,32, + 95,95,112,97,116,104,95,95,114,9,0,0,0,114,154,0, + 0,0,114,141,0,0,0,114,25,0,0,0,41,6,114,38, + 0,0,0,114,143,0,0,0,114,101,0,0,0,114,102,0, + 0,0,114,169,0,0,0,114,142,0,0,0,41,3,218,7, + 103,108,111,98,97,108,115,114,208,0,0,0,114,109,0,0, + 0,114,5,0,0,0,114,5,0,0,0,114,6,0,0,0, + 218,17,95,99,97,108,99,95,95,95,112,97,99,107,97,103, + 101,95,95,60,4,0,0,115,44,0,0,0,10,7,10,1, + 8,1,18,1,6,1,2,1,4,255,4,1,6,255,4,2, + 6,254,4,3,8,1,6,1,6,2,4,2,6,254,8,3, + 8,1,14,1,4,1,255,128,114,239,0,0,0,114,5,0, + 0,0,99,5,0,0,0,0,0,0,0,0,0,0,0,9, + 0,0,0,5,0,0,0,67,0,0,0,115,174,0,0,0, + 124,4,100,1,107,2,114,9,116,0,124,0,131,1,125,5, + 110,18,124,1,100,2,117,1,114,15,124,1,110,1,105,0, + 125,6,116,1,124,6,131,1,125,7,116,0,124,0,124,7, + 124,4,131,3,125,5,124,3,115,74,124,4,100,1,107,2, + 114,42,116,0,124,0,160,2,100,3,161,1,100,1,25,0, + 131,1,83,0,124,0,115,46,124,5,83,0,116,3,124,0, + 131,1,116,3,124,0,160,2,100,3,161,1,100,1,25,0, + 131,1,24,0,125,8,116,4,106,5,124,5,106,6,100,2, + 116,3,124,5,106,6,131,1,124,8,24,0,133,2,25,0, + 25,0,83,0,116,7,124,5,100,4,131,2,114,85,116,8, + 124,5,124,3,116,0,131,3,83,0,124,5,83,0,41,5, + 97,215,1,0,0,73,109,112,111,114,116,32,97,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,84,104,101,32,39, + 103,108,111,98,97,108,115,39,32,97,114,103,117,109,101,110, + 116,32,105,115,32,117,115,101,100,32,116,111,32,105,110,102, + 101,114,32,119,104,101,114,101,32,116,104,101,32,105,109,112, + 111,114,116,32,105,115,32,111,99,99,117,114,114,105,110,103, + 32,102,114,111,109,10,32,32,32,32,116,111,32,104,97,110, + 100,108,101,32,114,101,108,97,116,105,118,101,32,105,109,112, + 111,114,116,115,46,32,84,104,101,32,39,108,111,99,97,108, + 115,39,32,97,114,103,117,109,101,110,116,32,105,115,32,105, + 103,110,111,114,101,100,46,32,84,104,101,10,32,32,32,32, + 39,102,114,111,109,108,105,115,116,39,32,97,114,103,117,109, + 101,110,116,32,115,112,101,99,105,102,105,101,115,32,119,104, + 97,116,32,115,104,111,117,108,100,32,101,120,105,115,116,32, + 97,115,32,97,116,116,114,105,98,117,116,101,115,32,111,110, + 32,116,104,101,32,109,111,100,117,108,101,10,32,32,32,32, + 98,101,105,110,103,32,105,109,112,111,114,116,101,100,32,40, + 101,46,103,46,32,96,96,102,114,111,109,32,109,111,100,117, + 108,101,32,105,109,112,111,114,116,32,60,102,114,111,109,108, + 105,115,116,62,96,96,41,46,32,32,84,104,101,32,39,108, + 101,118,101,108,39,10,32,32,32,32,97,114,103,117,109,101, + 110,116,32,114,101,112,114,101,115,101,110,116,115,32,116,104, + 101,32,112,97,99,107,97,103,101,32,108,111,99,97,116,105, + 111,110,32,116,111,32,105,109,112,111,114,116,32,102,114,111, + 109,32,105,110,32,97,32,114,101,108,97,116,105,118,101,10, + 32,32,32,32,105,109,112,111,114,116,32,40,101,46,103,46, + 32,96,96,102,114,111,109,32,46,46,112,107,103,32,105,109, + 112,111,114,116,32,109,111,100,96,96,32,119,111,117,108,100, + 32,104,97,118,101,32,97,32,39,108,101,118,101,108,39,32, + 111,102,32,50,41,46,10,10,32,32,32,32,114,25,0,0, + 0,78,114,141,0,0,0,114,154,0,0,0,41,9,114,228, + 0,0,0,114,239,0,0,0,218,9,112,97,114,116,105,116, + 105,111,110,114,207,0,0,0,114,18,0,0,0,114,105,0, + 0,0,114,9,0,0,0,114,11,0,0,0,114,233,0,0, + 0,41,9,114,20,0,0,0,114,238,0,0,0,218,6,108, + 111,99,97,108,115,114,234,0,0,0,114,209,0,0,0,114, + 110,0,0,0,90,8,103,108,111,98,97,108,115,95,114,208, + 0,0,0,90,7,99,117,116,95,111,102,102,114,5,0,0, + 0,114,5,0,0,0,114,6,0,0,0,218,10,95,95,105, + 109,112,111,114,116,95,95,87,4,0,0,115,32,0,0,0, + 8,11,10,1,16,2,8,1,12,1,4,1,8,3,18,1, + 4,1,4,1,26,4,30,3,10,1,12,1,4,2,255,128, + 114,242,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,38, + 0,0,0,116,0,160,1,124,0,161,1,125,1,124,1,100, + 0,117,0,114,15,116,2,100,1,124,0,23,0,131,1,130, + 1,116,3,124,1,131,1,83,0,41,2,78,122,25,110,111, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 32,110,97,109,101,100,32,41,4,114,175,0,0,0,114,183, + 0,0,0,114,87,0,0,0,114,173,0,0,0,41,2,114, + 20,0,0,0,114,109,0,0,0,114,5,0,0,0,114,5, + 0,0,0,114,6,0,0,0,218,18,95,98,117,105,108,116, + 105,110,95,102,114,111,109,95,110,97,109,101,124,4,0,0, + 115,10,0,0,0,10,1,8,1,12,1,8,1,255,128,114, + 243,0,0,0,99,2,0,0,0,0,0,0,0,0,0,0, + 0,10,0,0,0,5,0,0,0,67,0,0,0,115,166,0, + 0,0,124,1,97,0,124,0,97,1,116,2,116,1,131,1, + 125,2,116,1,106,3,160,4,161,0,68,0,93,36,92,2, + 125,3,125,4,116,5,124,4,124,2,131,2,114,49,124,3, + 116,1,106,6,118,0,114,30,116,7,125,5,110,9,116,0, + 160,8,124,3,161,1,114,38,116,9,125,5,110,1,113,13, + 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, + 131,2,1,0,113,13,116,1,106,3,116,12,25,0,125,7, + 100,1,68,0,93,23,125,8,124,8,116,1,106,3,118,1, + 114,69,116,13,124,8,131,1,125,9,110,5,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,57,100,2,83,0,41,3,122,250,83,101,116,117, + 112,32,105,109,112,111,114,116,108,105,98,32,98,121,32,105, + 109,112,111,114,116,105,110,103,32,110,101,101,100,101,100,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 32,97,110,100,32,105,110,106,101,99,116,105,110,103,32,116, + 104,101,109,10,32,32,32,32,105,110,116,111,32,116,104,101, + 32,103,108,111,98,97,108,32,110,97,109,101,115,112,97,99, + 101,46,10,10,32,32,32,32,65,115,32,115,121,115,32,105, + 115,32,110,101,101,100,101,100,32,102,111,114,32,115,121,115, + 46,109,111,100,117,108,101,115,32,97,99,99,101,115,115,32, + 97,110,100,32,95,105,109,112,32,105,115,32,110,101,101,100, + 101,100,32,116,111,32,108,111,97,100,32,98,117,105,108,116, + 45,105,110,10,32,32,32,32,109,111,100,117,108,101,115,44, + 32,116,104,111,115,101,32,116,119,111,32,109,111,100,117,108, + 101,115,32,109,117,115,116,32,98,101,32,101,120,112,108,105, + 99,105,116,108,121,32,112,97,115,115,101,100,32,105,110,46, + 10,10,32,32,32,32,41,3,114,26,0,0,0,114,101,0, + 0,0,114,71,0,0,0,78,41,15,114,64,0,0,0,114, + 18,0,0,0,114,3,0,0,0,114,105,0,0,0,218,5, + 105,116,101,109,115,114,215,0,0,0,114,86,0,0,0,114, + 175,0,0,0,114,98,0,0,0,114,192,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,9,0,0,0,114,243,0, + 0,0,114,12,0,0,0,41,10,218,10,115,121,115,95,109, + 111,100,117,108,101,218,11,95,105,109,112,95,109,111,100,117, + 108,101,90,11,109,111,100,117,108,101,95,116,121,112,101,114, + 20,0,0,0,114,110,0,0,0,114,122,0,0,0,114,109, + 0,0,0,90,11,115,101,108,102,95,109,111,100,117,108,101, + 90,12,98,117,105,108,116,105,110,95,110,97,109,101,90,14, + 98,117,105,108,116,105,110,95,109,111,100,117,108,101,114,5, + 0,0,0,114,5,0,0,0,114,6,0,0,0,218,6,95, + 115,101,116,117,112,131,4,0,0,115,42,0,0,0,4,9, + 4,1,8,3,18,1,10,1,10,1,6,1,10,1,6,1, + 2,2,10,1,10,1,2,128,10,3,8,1,10,1,10,1, + 10,2,14,1,4,251,255,128,114,247,0,0,0,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,38,0,0,0,116,0,124,0,124, + 1,131,2,1,0,116,1,106,2,160,3,116,4,161,1,1, + 0,116,1,106,2,160,3,116,5,161,1,1,0,100,1,83, + 0,41,2,122,48,73,110,115,116,97,108,108,32,105,109,112, + 111,114,116,101,114,115,32,102,111,114,32,98,117,105,108,116, + 105,110,32,97,110,100,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,115,78,41,6,114,247,0,0,0,114,18,0, + 0,0,114,213,0,0,0,114,132,0,0,0,114,175,0,0, + 0,114,192,0,0,0,41,2,114,245,0,0,0,114,246,0, + 0,0,114,5,0,0,0,114,5,0,0,0,114,6,0,0, + 0,218,8,95,105,110,115,116,97,108,108,166,4,0,0,115, + 8,0,0,0,10,2,12,2,16,1,255,128,114,248,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,1,0, + 0,0,4,0,0,0,67,0,0,0,115,32,0,0,0,100, + 1,100,2,108,0,125,0,124,0,97,1,124,0,160,2,116, + 3,106,4,116,5,25,0,161,1,1,0,100,2,83,0,41, + 3,122,57,73,110,115,116,97,108,108,32,105,109,112,111,114, + 116,101,114,115,32,116,104,97,116,32,114,101,113,117,105,114, + 101,32,101,120,116,101,114,110,97,108,32,102,105,108,101,115, + 121,115,116,101,109,32,97,99,99,101,115,115,114,25,0,0, + 0,78,41,6,218,26,95,102,114,111,122,101,110,95,105,109, + 112,111,114,116,108,105,98,95,101,120,116,101,114,110,97,108, + 114,139,0,0,0,114,248,0,0,0,114,18,0,0,0,114, + 105,0,0,0,114,9,0,0,0,41,1,114,249,0,0,0, + 114,5,0,0,0,114,5,0,0,0,114,6,0,0,0,218, + 27,95,105,110,115,116,97,108,108,95,101,120,116,101,114,110, + 97,108,95,105,109,112,111,114,116,101,114,115,174,4,0,0, + 115,8,0,0,0,8,3,4,1,20,1,255,128,114,250,0, + 0,0,41,2,78,78,41,1,78,41,2,78,114,25,0,0, + 0,41,4,78,78,114,5,0,0,0,114,25,0,0,0,41, + 54,114,10,0,0,0,114,7,0,0,0,114,26,0,0,0, + 114,101,0,0,0,114,71,0,0,0,114,139,0,0,0,114, + 17,0,0,0,114,21,0,0,0,114,66,0,0,0,114,37, + 0,0,0,114,47,0,0,0,114,22,0,0,0,114,23,0, + 0,0,114,55,0,0,0,114,57,0,0,0,114,60,0,0, + 0,114,72,0,0,0,114,74,0,0,0,114,83,0,0,0, + 114,95,0,0,0,114,100,0,0,0,114,111,0,0,0,114, + 124,0,0,0,114,125,0,0,0,114,104,0,0,0,114,155, + 0,0,0,114,161,0,0,0,114,165,0,0,0,114,119,0, + 0,0,114,106,0,0,0,114,172,0,0,0,114,173,0,0, + 0,114,107,0,0,0,114,175,0,0,0,114,192,0,0,0, + 114,199,0,0,0,114,210,0,0,0,114,212,0,0,0,114, + 214,0,0,0,114,220,0,0,0,90,15,95,69,82,82,95, + 77,83,71,95,80,82,69,70,73,88,114,222,0,0,0,114, + 225,0,0,0,218,6,111,98,106,101,99,116,114,226,0,0, + 0,114,227,0,0,0,114,228,0,0,0,114,233,0,0,0, + 114,239,0,0,0,114,242,0,0,0,114,243,0,0,0,114, + 247,0,0,0,114,248,0,0,0,114,250,0,0,0,114,5, 0,0,0,114,5,0,0,0,114,5,0,0,0,114,6,0, - 0,0,218,18,95,98,117,105,108,116,105,110,95,102,114,111, - 109,95,110,97,109,101,124,4,0,0,115,10,0,0,0,10, - 1,8,1,12,1,8,1,255,128,114,243,0,0,0,99,2, - 0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,5, - 0,0,0,67,0,0,0,115,166,0,0,0,124,1,97,0, - 124,0,97,1,116,2,116,1,131,1,125,2,116,1,106,3, - 160,4,161,0,68,0,93,72,92,2,125,3,125,4,116,5, - 124,4,124,2,131,2,114,98,124,3,116,1,106,6,118,0, - 114,60,116,7,125,5,110,18,116,0,160,8,124,3,161,1, - 114,76,116,9,125,5,110,2,113,26,116,10,124,4,124,5, - 131,2,125,6,116,11,124,6,124,4,131,2,1,0,113,26, - 116,1,106,3,116,12,25,0,125,7,100,1,68,0,93,46, - 125,8,124,8,116,1,106,3,118,1,114,138,116,13,124,8, - 131,1,125,9,110,10,116,1,106,3,124,8,25,0,125,9, - 116,14,124,7,124,8,124,9,131,3,1,0,113,114,100,2, - 83,0,41,3,122,250,83,101,116,117,112,32,105,109,112,111, - 114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105, - 110,103,32,110,101,101,100,101,100,32,98,117,105,108,116,45, - 105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,105, - 110,106,101,99,116,105,110,103,32,116,104,101,109,10,32,32, - 32,32,105,110,116,111,32,116,104,101,32,103,108,111,98,97, - 108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,32, - 32,32,65,115,32,115,121,115,32,105,115,32,110,101,101,100, - 101,100,32,102,111,114,32,115,121,115,46,109,111,100,117,108, - 101,115,32,97,99,99,101,115,115,32,97,110,100,32,95,105, - 109,112,32,105,115,32,110,101,101,100,101,100,32,116,111,32, - 108,111,97,100,32,98,117,105,108,116,45,105,110,10,32,32, - 32,32,109,111,100,117,108,101,115,44,32,116,104,111,115,101, - 32,116,119,111,32,109,111,100,117,108,101,115,32,109,117,115, - 116,32,98,101,32,101,120,112,108,105,99,105,116,108,121,32, - 112,97,115,115,101,100,32,105,110,46,10,10,32,32,32,32, - 41,3,114,26,0,0,0,114,101,0,0,0,114,71,0,0, - 0,78,41,15,114,64,0,0,0,114,18,0,0,0,114,3, - 0,0,0,114,105,0,0,0,218,5,105,116,101,109,115,114, - 215,0,0,0,114,86,0,0,0,114,175,0,0,0,114,98, - 0,0,0,114,192,0,0,0,114,155,0,0,0,114,161,0, - 0,0,114,9,0,0,0,114,243,0,0,0,114,12,0,0, - 0,41,10,218,10,115,121,115,95,109,111,100,117,108,101,218, - 11,95,105,109,112,95,109,111,100,117,108,101,90,11,109,111, - 100,117,108,101,95,116,121,112,101,114,20,0,0,0,114,110, - 0,0,0,114,122,0,0,0,114,109,0,0,0,90,11,115, - 101,108,102,95,109,111,100,117,108,101,90,12,98,117,105,108, - 116,105,110,95,110,97,109,101,90,14,98,117,105,108,116,105, - 110,95,109,111,100,117,108,101,114,5,0,0,0,114,5,0, - 0,0,114,6,0,0,0,218,6,95,115,101,116,117,112,131, - 4,0,0,115,42,0,0,0,4,9,4,1,8,3,18,1, - 10,1,10,1,6,1,10,1,6,1,2,2,10,1,10,1, - 2,128,10,3,8,1,10,1,10,1,10,2,14,1,4,251, - 255,128,114,247,0,0,0,99,2,0,0,0,0,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, - 115,38,0,0,0,116,0,124,0,124,1,131,2,1,0,116, - 1,106,2,160,3,116,4,161,1,1,0,116,1,106,2,160, - 3,116,5,161,1,1,0,100,1,83,0,41,2,122,48,73, - 110,115,116,97,108,108,32,105,109,112,111,114,116,101,114,115, - 32,102,111,114,32,98,117,105,108,116,105,110,32,97,110,100, - 32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,78, - 41,6,114,247,0,0,0,114,18,0,0,0,114,213,0,0, - 0,114,132,0,0,0,114,175,0,0,0,114,192,0,0,0, - 41,2,114,245,0,0,0,114,246,0,0,0,114,5,0,0, - 0,114,5,0,0,0,114,6,0,0,0,218,8,95,105,110, - 115,116,97,108,108,166,4,0,0,115,8,0,0,0,10,2, - 12,2,16,1,255,128,114,248,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,32,0,0,0,100,1,100,2,108,0,125, - 0,124,0,97,1,124,0,160,2,116,3,106,4,116,5,25, - 0,161,1,1,0,100,2,83,0,41,3,122,57,73,110,115, - 116,97,108,108,32,105,109,112,111,114,116,101,114,115,32,116, - 104,97,116,32,114,101,113,117,105,114,101,32,101,120,116,101, - 114,110,97,108,32,102,105,108,101,115,121,115,116,101,109,32, - 97,99,99,101,115,115,114,25,0,0,0,78,41,6,218,26, - 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105, - 98,95,101,120,116,101,114,110,97,108,114,139,0,0,0,114, - 248,0,0,0,114,18,0,0,0,114,105,0,0,0,114,9, - 0,0,0,41,1,114,249,0,0,0,114,5,0,0,0,114, - 5,0,0,0,114,6,0,0,0,218,27,95,105,110,115,116, - 97,108,108,95,101,120,116,101,114,110,97,108,95,105,109,112, - 111,114,116,101,114,115,174,4,0,0,115,8,0,0,0,8, - 3,4,1,20,1,255,128,114,250,0,0,0,41,2,78,78, - 41,1,78,41,2,78,114,25,0,0,0,41,4,78,78,114, - 5,0,0,0,114,25,0,0,0,41,54,114,10,0,0,0, - 114,7,0,0,0,114,26,0,0,0,114,101,0,0,0,114, - 71,0,0,0,114,139,0,0,0,114,17,0,0,0,114,21, - 0,0,0,114,66,0,0,0,114,37,0,0,0,114,47,0, - 0,0,114,22,0,0,0,114,23,0,0,0,114,55,0,0, - 0,114,57,0,0,0,114,60,0,0,0,114,72,0,0,0, - 114,74,0,0,0,114,83,0,0,0,114,95,0,0,0,114, - 100,0,0,0,114,111,0,0,0,114,124,0,0,0,114,125, - 0,0,0,114,104,0,0,0,114,155,0,0,0,114,161,0, - 0,0,114,165,0,0,0,114,119,0,0,0,114,106,0,0, - 0,114,172,0,0,0,114,173,0,0,0,114,107,0,0,0, - 114,175,0,0,0,114,192,0,0,0,114,199,0,0,0,114, - 210,0,0,0,114,212,0,0,0,114,214,0,0,0,114,220, - 0,0,0,90,15,95,69,82,82,95,77,83,71,95,80,82, - 69,70,73,88,114,222,0,0,0,114,225,0,0,0,218,6, - 111,98,106,101,99,116,114,226,0,0,0,114,227,0,0,0, - 114,228,0,0,0,114,233,0,0,0,114,239,0,0,0,114, - 242,0,0,0,114,243,0,0,0,114,247,0,0,0,114,248, - 0,0,0,114,250,0,0,0,114,5,0,0,0,114,5,0, - 0,0,114,5,0,0,0,114,6,0,0,0,218,8,60,109, - 111,100,117,108,101,62,1,0,0,0,115,106,0,0,0,4, - 0,8,22,4,9,4,1,4,1,4,3,8,3,8,8,4, - 8,4,2,16,3,14,4,14,77,14,21,8,16,8,37,8, - 17,14,11,8,8,8,11,8,12,8,19,14,26,16,101,10, - 26,14,45,8,72,8,17,8,17,8,30,8,36,8,45,14, - 15,14,77,14,82,8,13,8,9,10,10,8,47,4,16,8, - 1,8,2,6,32,8,3,10,16,14,15,8,37,10,27,8, - 37,8,7,8,35,12,8,255,128, + 0,0,218,8,60,109,111,100,117,108,101,62,1,0,0,0, + 115,106,0,0,0,4,0,8,22,4,9,4,1,4,1,4, + 3,8,3,8,8,4,8,4,2,16,3,14,4,14,77,14, + 21,8,16,8,37,8,17,14,11,8,8,8,11,8,12,8, + 19,14,26,16,101,10,26,14,45,8,72,8,17,8,17,8, + 30,8,36,8,45,14,15,14,77,14,82,8,13,8,9,10, + 10,8,47,4,16,8,1,8,2,6,32,8,3,10,16,14, + 15,8,37,10,27,8,37,8,7,8,35,12,8,255,128, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 9b5c720578ad7..0fac913f4cfea 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -1,15 +1,15 @@ /* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__importlib_bootstrap_external[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,64,0,0,0,115,216,2,0,0,100,0, + 0,5,0,0,0,64,0,0,0,115,214,2,0,0,100,0, 90,0,100,1,97,1,100,2,100,1,108,2,90,2,100,2, 100,1,108,3,90,3,100,2,100,1,108,4,90,4,100,2, 100,1,108,5,90,5,100,2,100,1,108,6,90,6,101,4, - 106,7,100,3,107,2,90,8,101,8,114,80,100,2,100,1, - 108,9,90,10,100,2,100,1,108,11,90,11,110,8,100,2, - 100,1,108,12,90,10,101,8,114,102,100,4,100,5,103,2, - 90,13,110,6,100,5,103,1,90,13,101,14,100,6,100,7, - 132,0,101,13,68,0,131,1,131,1,115,130,74,0,130,1, + 106,7,100,3,107,2,90,8,101,8,114,40,100,2,100,1, + 108,9,90,10,100,2,100,1,108,11,90,11,110,4,100,2, + 100,1,108,12,90,10,101,8,114,51,100,4,100,5,103,2, + 90,13,110,3,100,5,103,1,90,13,101,14,100,6,100,7, + 132,0,101,13,68,0,131,1,131,1,115,65,74,0,130,1, 101,13,100,2,25,0,90,15,100,8,160,16,101,13,161,1, 90,13,100,9,100,10,132,0,101,13,68,0,131,1,90,17, 100,11,90,18,100,12,90,19,101,19,101,18,23,0,90,20, @@ -22,2666 +22,2663 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 100,36,100,37,132,1,90,33,101,34,101,33,106,35,131,1, 90,36,100,38,160,37,100,39,100,40,161,2,100,41,23,0, 90,38,101,39,160,40,101,38,100,40,161,2,90,41,100,42, - 90,42,100,43,90,43,100,44,103,1,90,44,101,8,144,1, - 114,94,101,44,160,45,100,45,161,1,1,0,101,2,160,46, - 161,0,90,47,100,46,103,1,90,48,101,48,4,0,90,49, - 90,50,100,111,100,1,100,47,156,1,100,48,100,49,132,3, - 90,51,100,50,100,51,132,0,90,52,100,52,100,53,132,0, - 90,53,100,54,100,55,132,0,90,54,100,56,100,57,132,0, - 90,55,100,58,100,59,132,0,90,56,100,60,100,61,132,0, - 90,57,100,62,100,63,132,0,90,58,100,64,100,65,132,0, - 90,59,100,66,100,67,132,0,90,60,100,112,100,68,100,69, - 132,1,90,61,100,113,100,70,100,71,132,1,90,62,100,114, - 100,73,100,74,132,1,90,63,100,75,100,76,132,0,90,64, - 101,65,131,0,90,66,100,115,100,1,101,66,100,77,156,2, - 100,78,100,79,132,3,90,67,71,0,100,80,100,81,132,0, - 100,81,131,2,90,68,71,0,100,82,100,83,132,0,100,83, - 131,2,90,69,71,0,100,84,100,85,132,0,100,85,101,69, - 131,3,90,70,71,0,100,86,100,87,132,0,100,87,131,2, - 90,71,71,0,100,88,100,89,132,0,100,89,101,71,101,70, - 131,4,90,72,71,0,100,90,100,91,132,0,100,91,101,71, - 101,69,131,4,90,73,71,0,100,92,100,93,132,0,100,93, - 101,71,101,69,131,4,90,74,71,0,100,94,100,95,132,0, - 100,95,131,2,90,75,71,0,100,96,100,97,132,0,100,97, - 131,2,90,76,71,0,100,98,100,99,132,0,100,99,131,2, - 90,77,71,0,100,100,100,101,132,0,100,101,131,2,90,78, - 100,116,100,102,100,103,132,1,90,79,100,104,100,105,132,0, - 90,80,100,106,100,107,132,0,90,81,100,108,100,109,132,0, - 90,82,100,1,83,0,41,117,97,94,1,0,0,67,111,114, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,112,97,116,104,45,98,97,115,101,100,32,105, - 109,112,111,114,116,46,10,10,84,104,105,115,32,109,111,100, - 117,108,101,32,105,115,32,78,79,84,32,109,101,97,110,116, - 32,116,111,32,98,101,32,100,105,114,101,99,116,108,121,32, - 105,109,112,111,114,116,101,100,33,32,73,116,32,104,97,115, - 32,98,101,101,110,32,100,101,115,105,103,110,101,100,32,115, - 117,99,104,10,116,104,97,116,32,105,116,32,99,97,110,32, - 98,101,32,98,111,111,116,115,116,114,97,112,112,101,100,32, - 105,110,116,111,32,80,121,116,104,111,110,32,97,115,32,116, - 104,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, - 110,32,111,102,32,105,109,112,111,114,116,46,32,65,115,10, - 115,117,99,104,32,105,116,32,114,101,113,117,105,114,101,115, - 32,116,104,101,32,105,110,106,101,99,116,105,111,110,32,111, - 102,32,115,112,101,99,105,102,105,99,32,109,111,100,117,108, - 101,115,32,97,110,100,32,97,116,116,114,105,98,117,116,101, - 115,32,105,110,32,111,114,100,101,114,32,116,111,10,119,111, - 114,107,46,32,79,110,101,32,115,104,111,117,108,100,32,117, - 115,101,32,105,109,112,111,114,116,108,105,98,32,97,115,32, - 116,104,101,32,112,117,98,108,105,99,45,102,97,99,105,110, - 103,32,118,101,114,115,105,111,110,32,111,102,32,116,104,105, - 115,32,109,111,100,117,108,101,46,10,10,78,233,0,0,0, - 0,90,5,119,105,110,51,50,250,1,92,250,1,47,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,99,0,0,0,115,26,0,0,0,124,0,93,18, - 125,1,116,0,124,1,131,1,100,0,107,2,86,0,1,0, - 113,2,100,1,83,0,41,2,233,1,0,0,0,78,41,1, - 218,3,108,101,110,41,2,218,2,46,48,218,3,115,101,112, - 169,0,114,7,0,0,0,250,38,60,102,114,111,122,101,110, - 32,105,109,112,111,114,116,108,105,98,46,95,98,111,111,116, - 115,116,114,97,112,95,101,120,116,101,114,110,97,108,62,218, - 9,60,103,101,110,101,120,112,114,62,46,0,0,0,115,4, - 0,0,0,26,0,255,128,114,9,0,0,0,218,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,22,0,0,0,104,0,124,0, - 93,14,125,1,100,0,124,1,155,0,157,2,146,2,113,4, - 83,0,41,1,250,1,58,114,7,0,0,0,41,2,114,5, - 0,0,0,218,1,115,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,9,60,115,101,116,99,111,109,112,62, - 49,0,0,0,243,4,0,0,0,22,0,255,128,114,13,0, - 0,0,41,1,218,3,119,105,110,41,2,90,6,99,121,103, - 119,105,110,90,6,100,97,114,119,105,110,99,0,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 3,0,0,0,115,62,0,0,0,116,0,106,1,160,2,116, - 3,161,1,114,50,116,0,106,1,160,2,116,4,161,1,114, - 30,100,1,137,0,110,4,100,2,137,0,135,0,102,1,100, - 3,100,4,132,8,125,0,124,0,83,0,100,5,100,4,132, - 0,125,0,124,0,83,0,41,6,78,90,12,80,89,84,72, - 79,78,67,65,83,69,79,75,115,12,0,0,0,80,89,84, - 72,79,78,67,65,83,69,79,75,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,19,0, - 0,0,115,20,0,0,0,116,0,106,1,106,2,12,0,111, - 18,136,0,116,3,106,4,118,0,83,0,41,2,122,94,84, - 114,117,101,32,105,102,32,102,105,108,101,110,97,109,101,115, - 32,109,117,115,116,32,98,101,32,99,104,101,99,107,101,100, - 32,99,97,115,101,45,105,110,115,101,110,115,105,116,105,118, - 101,108,121,32,97,110,100,32,105,103,110,111,114,101,32,101, - 110,118,105,114,111,110,109,101,110,116,32,102,108,97,103,115, - 32,97,114,101,32,110,111,116,32,115,101,116,46,78,41,5, - 218,3,115,121,115,218,5,102,108,97,103,115,218,18,105,103, - 110,111,114,101,95,101,110,118,105,114,111,110,109,101,110,116, - 218,3,95,111,115,90,7,101,110,118,105,114,111,110,114,7, - 0,0,0,169,1,218,3,107,101,121,114,7,0,0,0,114, - 8,0,0,0,218,11,95,114,101,108,97,120,95,99,97,115, - 101,66,0,0,0,243,4,0,0,0,20,2,255,128,122,37, - 95,109,97,107,101,95,114,101,108,97,120,95,99,97,115,101, - 46,60,108,111,99,97,108,115,62,46,95,114,101,108,97,120, - 95,99,97,115,101,99,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,83,0,0,0,243,4, - 0,0,0,100,1,83,0,41,3,122,53,84,114,117,101,32, - 105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,115, - 116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,115, - 101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,46, - 70,78,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,22,0,0,0, - 70,0,0,0,243,4,0,0,0,4,2,255,128,41,5,114, - 16,0,0,0,218,8,112,108,97,116,102,111,114,109,218,10, - 115,116,97,114,116,115,119,105,116,104,218,27,95,67,65,83, - 69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,76, - 65,84,70,79,82,77,83,218,35,95,67,65,83,69,95,73, - 78,83,69,78,83,73,84,73,86,69,95,80,76,65,84,70, - 79,82,77,83,95,83,84,82,95,75,69,89,41,1,114,22, - 0,0,0,114,7,0,0,0,114,20,0,0,0,114,8,0, - 0,0,218,16,95,109,97,107,101,95,114,101,108,97,120,95, - 99,97,115,101,59,0,0,0,115,18,0,0,0,12,1,12, - 1,6,1,4,2,12,2,4,7,8,253,4,3,255,128,114, - 30,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,67,0,0,0,115,20,0, - 0,0,116,0,124,0,131,1,100,1,64,0,160,1,100,2, - 100,3,161,2,83,0,41,5,122,42,67,111,110,118,101,114, - 116,32,97,32,51,50,45,98,105,116,32,105,110,116,101,103, - 101,114,32,116,111,32,108,105,116,116,108,101,45,101,110,100, - 105,97,110,46,236,3,0,0,0,255,127,255,127,3,0,233, - 4,0,0,0,218,6,108,105,116,116,108,101,78,41,2,218, - 3,105,110,116,218,8,116,111,95,98,121,116,101,115,41,1, - 218,1,120,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,12,95,112,97,99,107,95,117,105,110,116,51,50, - 78,0,0,0,114,23,0,0,0,114,37,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, - 0,0,0,67,0,0,0,243,28,0,0,0,116,0,124,0, - 131,1,100,1,107,2,115,16,74,0,130,1,116,1,160,2, - 124,0,100,2,161,2,83,0,41,4,122,47,67,111,110,118, - 101,114,116,32,52,32,98,121,116,101,115,32,105,110,32,108, - 105,116,116,108,101,45,101,110,100,105,97,110,32,116,111,32, - 97,110,32,105,110,116,101,103,101,114,46,114,32,0,0,0, - 114,33,0,0,0,78,169,3,114,4,0,0,0,114,34,0, - 0,0,218,10,102,114,111,109,95,98,121,116,101,115,169,1, - 218,4,100,97,116,97,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,14,95,117,110,112,97,99,107,95,117, - 105,110,116,51,50,83,0,0,0,243,6,0,0,0,16,2, - 12,1,255,128,114,43,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,67,0, - 0,0,114,38,0,0,0,41,4,122,47,67,111,110,118,101, - 114,116,32,50,32,98,121,116,101,115,32,105,110,32,108,105, - 116,116,108,101,45,101,110,100,105,97,110,32,116,111,32,97, - 110,32,105,110,116,101,103,101,114,46,233,2,0,0,0,114, - 33,0,0,0,78,114,39,0,0,0,114,41,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,14, - 95,117,110,112,97,99,107,95,117,105,110,116,49,54,88,0, - 0,0,114,44,0,0,0,114,46,0,0,0,99,0,0,0, + 90,42,100,43,90,43,100,44,103,1,90,44,101,8,114,174, + 101,44,160,45,100,45,161,1,1,0,101,2,160,46,161,0, + 90,47,100,46,103,1,90,48,101,48,4,0,90,49,90,50, + 100,111,100,1,100,47,156,1,100,48,100,49,132,3,90,51, + 100,50,100,51,132,0,90,52,100,52,100,53,132,0,90,53, + 100,54,100,55,132,0,90,54,100,56,100,57,132,0,90,55, + 100,58,100,59,132,0,90,56,100,60,100,61,132,0,90,57, + 100,62,100,63,132,0,90,58,100,64,100,65,132,0,90,59, + 100,66,100,67,132,0,90,60,100,112,100,68,100,69,132,1, + 90,61,100,113,100,70,100,71,132,1,90,62,100,114,100,73, + 100,74,132,1,90,63,100,75,100,76,132,0,90,64,101,65, + 131,0,90,66,100,115,100,1,101,66,100,77,156,2,100,78, + 100,79,132,3,90,67,71,0,100,80,100,81,132,0,100,81, + 131,2,90,68,71,0,100,82,100,83,132,0,100,83,131,2, + 90,69,71,0,100,84,100,85,132,0,100,85,101,69,131,3, + 90,70,71,0,100,86,100,87,132,0,100,87,131,2,90,71, + 71,0,100,88,100,89,132,0,100,89,101,71,101,70,131,4, + 90,72,71,0,100,90,100,91,132,0,100,91,101,71,101,69, + 131,4,90,73,71,0,100,92,100,93,132,0,100,93,101,71, + 101,69,131,4,90,74,71,0,100,94,100,95,132,0,100,95, + 131,2,90,75,71,0,100,96,100,97,132,0,100,97,131,2, + 90,76,71,0,100,98,100,99,132,0,100,99,131,2,90,77, + 71,0,100,100,100,101,132,0,100,101,131,2,90,78,100,116, + 100,102,100,103,132,1,90,79,100,104,100,105,132,0,90,80, + 100,106,100,107,132,0,90,81,100,108,100,109,132,0,90,82, + 100,1,83,0,41,117,97,94,1,0,0,67,111,114,101,32, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, + 102,32,112,97,116,104,45,98,97,115,101,100,32,105,109,112, + 111,114,116,46,10,10,84,104,105,115,32,109,111,100,117,108, + 101,32,105,115,32,78,79,84,32,109,101,97,110,116,32,116, + 111,32,98,101,32,100,105,114,101,99,116,108,121,32,105,109, + 112,111,114,116,101,100,33,32,73,116,32,104,97,115,32,98, + 101,101,110,32,100,101,115,105,103,110,101,100,32,115,117,99, + 104,10,116,104,97,116,32,105,116,32,99,97,110,32,98,101, + 32,98,111,111,116,115,116,114,97,112,112,101,100,32,105,110, + 116,111,32,80,121,116,104,111,110,32,97,115,32,116,104,101, + 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32, + 111,102,32,105,109,112,111,114,116,46,32,65,115,10,115,117, + 99,104,32,105,116,32,114,101,113,117,105,114,101,115,32,116, + 104,101,32,105,110,106,101,99,116,105,111,110,32,111,102,32, + 115,112,101,99,105,102,105,99,32,109,111,100,117,108,101,115, + 32,97,110,100,32,97,116,116,114,105,98,117,116,101,115,32, + 105,110,32,111,114,100,101,114,32,116,111,10,119,111,114,107, + 46,32,79,110,101,32,115,104,111,117,108,100,32,117,115,101, + 32,105,109,112,111,114,116,108,105,98,32,97,115,32,116,104, + 101,32,112,117,98,108,105,99,45,102,97,99,105,110,103,32, + 118,101,114,115,105,111,110,32,111,102,32,116,104,105,115,32, + 109,111,100,117,108,101,46,10,10,78,233,0,0,0,0,90, + 5,119,105,110,51,50,250,1,92,250,1,47,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,99,0,0,0,115,26,0,0,0,124,0,93,9,125,1, + 116,0,124,1,131,1,100,0,107,2,86,0,1,0,113,1, + 100,1,83,0,41,2,233,1,0,0,0,78,41,1,218,3, + 108,101,110,41,2,218,2,46,48,218,3,115,101,112,169,0, + 114,7,0,0,0,250,38,60,102,114,111,122,101,110,32,105, + 109,112,111,114,116,108,105,98,46,95,98,111,111,116,115,116, + 114,97,112,95,101,120,116,101,114,110,97,108,62,218,9,60, + 103,101,110,101,120,112,114,62,46,0,0,0,115,4,0,0, + 0,26,0,255,128,114,9,0,0,0,218,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,67,0,0,0,115,22,0,0,0,104,0,124,0,93,7, + 125,1,100,0,124,1,155,0,157,2,146,2,113,2,83,0, + 41,1,250,1,58,114,7,0,0,0,41,2,114,5,0,0, + 0,218,1,115,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,9,60,115,101,116,99,111,109,112,62,49,0, + 0,0,243,4,0,0,0,22,0,255,128,114,13,0,0,0, + 41,1,218,3,119,105,110,41,2,90,6,99,121,103,119,105, + 110,90,6,100,97,114,119,105,110,99,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,3,0, + 0,0,115,62,0,0,0,116,0,106,1,160,2,116,3,161, + 1,114,25,116,0,106,1,160,2,116,4,161,1,114,15,100, + 1,137,0,110,2,100,2,137,0,135,0,102,1,100,3,100, + 4,132,8,125,0,124,0,83,0,100,5,100,4,132,0,125, + 0,124,0,83,0,41,6,78,90,12,80,89,84,72,79,78, + 67,65,83,69,79,75,115,12,0,0,0,80,89,84,72,79, + 78,67,65,83,69,79,75,99,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,19,0,0,0, + 115,20,0,0,0,116,0,106,1,106,2,12,0,111,9,136, + 0,116,3,106,4,118,0,83,0,41,2,122,94,84,114,117, + 101,32,105,102,32,102,105,108,101,110,97,109,101,115,32,109, + 117,115,116,32,98,101,32,99,104,101,99,107,101,100,32,99, + 97,115,101,45,105,110,115,101,110,115,105,116,105,118,101,108, + 121,32,97,110,100,32,105,103,110,111,114,101,32,101,110,118, + 105,114,111,110,109,101,110,116,32,102,108,97,103,115,32,97, + 114,101,32,110,111,116,32,115,101,116,46,78,41,5,218,3, + 115,121,115,218,5,102,108,97,103,115,218,18,105,103,110,111, + 114,101,95,101,110,118,105,114,111,110,109,101,110,116,218,3, + 95,111,115,90,7,101,110,118,105,114,111,110,114,7,0,0, + 0,169,1,218,3,107,101,121,114,7,0,0,0,114,8,0, + 0,0,218,11,95,114,101,108,97,120,95,99,97,115,101,66, + 0,0,0,243,4,0,0,0,20,2,255,128,122,37,95,109, + 97,107,101,95,114,101,108,97,120,95,99,97,115,101,46,60, + 108,111,99,97,108,115,62,46,95,114,101,108,97,120,95,99, + 97,115,101,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,83,0,0,0,243,4,0,0, + 0,100,1,83,0,41,3,122,53,84,114,117,101,32,105,102, + 32,102,105,108,101,110,97,109,101,115,32,109,117,115,116,32, + 98,101,32,99,104,101,99,107,101,100,32,99,97,115,101,45, + 105,110,115,101,110,115,105,116,105,118,101,108,121,46,70,78, + 114,7,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,22,0,0,0,70,0, + 0,0,243,4,0,0,0,4,2,255,128,41,5,114,16,0, + 0,0,218,8,112,108,97,116,102,111,114,109,218,10,115,116, + 97,114,116,115,119,105,116,104,218,27,95,67,65,83,69,95, + 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84, + 70,79,82,77,83,218,35,95,67,65,83,69,95,73,78,83, + 69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,82, + 77,83,95,83,84,82,95,75,69,89,41,1,114,22,0,0, + 0,114,7,0,0,0,114,20,0,0,0,114,8,0,0,0, + 218,16,95,109,97,107,101,95,114,101,108,97,120,95,99,97, + 115,101,59,0,0,0,115,18,0,0,0,12,1,12,1,6, + 1,4,2,12,2,4,7,8,253,4,3,255,128,114,30,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,20,0,0,0, + 116,0,124,0,131,1,100,1,64,0,160,1,100,2,100,3, + 161,2,83,0,41,5,122,42,67,111,110,118,101,114,116,32, + 97,32,51,50,45,98,105,116,32,105,110,116,101,103,101,114, + 32,116,111,32,108,105,116,116,108,101,45,101,110,100,105,97, + 110,46,236,3,0,0,0,255,127,255,127,3,0,233,4,0, + 0,0,218,6,108,105,116,116,108,101,78,41,2,218,3,105, + 110,116,218,8,116,111,95,98,121,116,101,115,41,1,218,1, + 120,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,12,95,112,97,99,107,95,117,105,110,116,51,50,78,0, + 0,0,114,23,0,0,0,114,37,0,0,0,99,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, - 0,71,0,0,0,115,20,0,0,0,116,0,160,1,100,1, - 100,2,132,0,124,0,68,0,131,1,161,1,83,0,41,4, - 122,31,82,101,112,108,97,99,101,109,101,110,116,32,102,111, - 114,32,111,115,46,112,97,116,104,46,106,111,105,110,40,41, - 46,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,5,0,0,0,83,0,0,0,115,26,0,0,0,103, - 0,124,0,93,18,125,1,124,1,114,4,124,1,160,0,116, - 1,161,1,145,2,113,4,83,0,114,7,0,0,0,41,2, - 218,6,114,115,116,114,105,112,218,15,112,97,116,104,95,115, - 101,112,97,114,97,116,111,114,115,41,2,114,5,0,0,0, - 218,4,112,97,114,116,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,60,108,105,115,116,99,111,109,112, - 62,96,0,0,0,115,8,0,0,0,6,0,6,1,14,255, - 255,128,122,30,95,112,97,116,104,95,106,111,105,110,46,60, - 108,111,99,97,108,115,62,46,60,108,105,115,116,99,111,109, - 112,62,78,41,2,218,8,112,97,116,104,95,115,101,112,218, - 4,106,111,105,110,41,1,218,10,112,97,116,104,95,112,97, - 114,116,115,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,10,95,112,97,116,104,95,106,111,105,110,94,0, - 0,0,115,8,0,0,0,10,2,2,1,8,255,255,128,114, - 54,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,5,0,0,0,67,0,0,0,115,96,0, - 0,0,116,0,116,1,131,1,100,1,107,2,114,36,124,0, - 160,2,116,3,161,1,92,3,125,1,125,2,125,3,124,1, - 124,3,102,2,83,0,116,4,124,0,131,1,68,0,93,42, - 125,4,124,4,116,1,118,0,114,86,124,0,106,5,124,4, - 100,1,100,2,141,2,92,2,125,1,125,3,124,1,124,3, - 102,2,2,0,1,0,83,0,113,44,100,3,124,0,102,2, - 83,0,41,5,122,32,82,101,112,108,97,99,101,109,101,110, - 116,32,102,111,114,32,111,115,46,112,97,116,104,46,115,112, - 108,105,116,40,41,46,114,3,0,0,0,41,1,90,8,109, - 97,120,115,112,108,105,116,114,10,0,0,0,78,41,6,114, - 4,0,0,0,114,48,0,0,0,218,10,114,112,97,114,116, - 105,116,105,111,110,114,51,0,0,0,218,8,114,101,118,101, - 114,115,101,100,218,6,114,115,112,108,105,116,41,5,218,4, - 112,97,116,104,90,5,102,114,111,110,116,218,1,95,218,4, - 116,97,105,108,114,36,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, - 115,112,108,105,116,100,0,0,0,115,20,0,0,0,12,2, - 16,1,8,1,12,1,8,1,18,1,12,1,2,254,8,3, - 255,128,114,61,0,0,0,99,1,0,0,0,0,0,0,0, + 0,67,0,0,0,243,28,0,0,0,116,0,124,0,131,1, + 100,1,107,2,115,8,74,0,130,1,116,1,160,2,124,0, + 100,2,161,2,83,0,41,4,122,47,67,111,110,118,101,114, + 116,32,52,32,98,121,116,101,115,32,105,110,32,108,105,116, + 116,108,101,45,101,110,100,105,97,110,32,116,111,32,97,110, + 32,105,110,116,101,103,101,114,46,114,32,0,0,0,114,33, + 0,0,0,78,169,3,114,4,0,0,0,114,34,0,0,0, + 218,10,102,114,111,109,95,98,121,116,101,115,169,1,218,4, + 100,97,116,97,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,14,95,117,110,112,97,99,107,95,117,105,110, + 116,51,50,83,0,0,0,243,6,0,0,0,16,2,12,1, + 255,128,114,43,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,1,0,0,0,4,0,0,0,67,0,0,0, + 114,38,0,0,0,41,4,122,47,67,111,110,118,101,114,116, + 32,50,32,98,121,116,101,115,32,105,110,32,108,105,116,116, + 108,101,45,101,110,100,105,97,110,32,116,111,32,97,110,32, + 105,110,116,101,103,101,114,46,233,2,0,0,0,114,33,0, + 0,0,78,114,39,0,0,0,114,41,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,14,95,117, + 110,112,97,99,107,95,117,105,110,116,49,54,88,0,0,0, + 114,44,0,0,0,114,46,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,71, + 0,0,0,115,20,0,0,0,116,0,160,1,100,1,100,2, + 132,0,124,0,68,0,131,1,161,1,83,0,41,4,122,31, + 82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,32, + 111,115,46,112,97,116,104,46,106,111,105,110,40,41,46,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 5,0,0,0,83,0,0,0,115,26,0,0,0,103,0,124, + 0,93,9,125,1,124,1,114,2,124,1,160,0,116,1,161, + 1,145,2,113,2,83,0,114,7,0,0,0,41,2,218,6, + 114,115,116,114,105,112,218,15,112,97,116,104,95,115,101,112, + 97,114,97,116,111,114,115,41,2,114,5,0,0,0,218,4, + 112,97,114,116,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,10,60,108,105,115,116,99,111,109,112,62,96, + 0,0,0,115,8,0,0,0,6,0,6,1,14,255,255,128, + 122,30,95,112,97,116,104,95,106,111,105,110,46,60,108,111, + 99,97,108,115,62,46,60,108,105,115,116,99,111,109,112,62, + 78,41,2,218,8,112,97,116,104,95,115,101,112,218,4,106, + 111,105,110,41,1,218,10,112,97,116,104,95,112,97,114,116, + 115,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,10,95,112,97,116,104,95,106,111,105,110,94,0,0,0, + 115,8,0,0,0,10,2,2,1,8,255,255,128,114,54,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,5,0,0,0,67,0,0,0,115,96,0,0,0, + 116,0,116,1,131,1,100,1,107,2,114,18,124,0,160,2, + 116,3,161,1,92,3,125,1,125,2,125,3,124,1,124,3, + 102,2,83,0,116,4,124,0,131,1,68,0,93,21,125,4, + 124,4,116,1,118,0,114,43,124,0,106,5,124,4,100,1, + 100,2,141,2,92,2,125,1,125,3,124,1,124,3,102,2, + 2,0,1,0,83,0,113,22,100,3,124,0,102,2,83,0, + 41,5,122,32,82,101,112,108,97,99,101,109,101,110,116,32, + 102,111,114,32,111,115,46,112,97,116,104,46,115,112,108,105, + 116,40,41,46,114,3,0,0,0,41,1,90,8,109,97,120, + 115,112,108,105,116,114,10,0,0,0,78,41,6,114,4,0, + 0,0,114,48,0,0,0,218,10,114,112,97,114,116,105,116, + 105,111,110,114,51,0,0,0,218,8,114,101,118,101,114,115, + 101,100,218,6,114,115,112,108,105,116,41,5,218,4,112,97, + 116,104,90,5,102,114,111,110,116,218,1,95,218,4,116,97, + 105,108,114,36,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,11,95,112,97,116,104,95,115,112, + 108,105,116,100,0,0,0,115,20,0,0,0,12,2,16,1, + 8,1,12,1,8,1,18,1,12,1,2,254,8,3,255,128, + 114,61,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,10, + 0,0,0,116,0,160,1,124,0,161,1,83,0,41,2,122, + 126,83,116,97,116,32,116,104,101,32,112,97,116,104,46,10, + 10,32,32,32,32,77,97,100,101,32,97,32,115,101,112,97, + 114,97,116,101,32,102,117,110,99,116,105,111,110,32,116,111, + 32,109,97,107,101,32,105,116,32,101,97,115,105,101,114,32, + 116,111,32,111,118,101,114,114,105,100,101,32,105,110,32,101, + 120,112,101,114,105,109,101,110,116,115,10,32,32,32,32,40, + 101,46,103,46,32,99,97,99,104,101,32,115,116,97,116,32, + 114,101,115,117,108,116,115,41,46,10,10,32,32,32,32,78, + 41,2,114,19,0,0,0,90,4,115,116,97,116,169,1,114, + 58,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,10,95,112,97,116,104,95,115,116,97,116,112, + 0,0,0,115,4,0,0,0,10,7,255,128,114,63,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,8,0,0,0,67,0,0,0,115,48,0,0,0,122, + 6,116,0,124,0,131,1,125,2,87,0,110,9,4,0,116, + 1,121,23,1,0,1,0,1,0,89,0,100,1,83,0,124, + 2,106,2,100,2,64,0,124,1,107,2,83,0,119,0,41, + 4,122,49,84,101,115,116,32,119,104,101,116,104,101,114,32, + 116,104,101,32,112,97,116,104,32,105,115,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,101,32,116, + 121,112,101,46,70,105,0,240,0,0,78,41,3,114,63,0, + 0,0,218,7,79,83,69,114,114,111,114,218,7,115,116,95, + 109,111,100,101,41,3,114,58,0,0,0,218,4,109,111,100, + 101,90,9,115,116,97,116,95,105,110,102,111,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,18,95,112,97, + 116,104,95,105,115,95,109,111,100,101,95,116,121,112,101,122, + 0,0,0,115,14,0,0,0,2,2,12,1,12,1,6,1, + 14,1,2,254,255,128,114,67,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,10,0,0,0,116,0,124,0,100,1,131, + 2,83,0,41,3,122,31,82,101,112,108,97,99,101,109,101, + 110,116,32,102,111,114,32,111,115,46,112,97,116,104,46,105, + 115,102,105,108,101,46,105,0,128,0,0,78,41,1,114,67, + 0,0,0,114,62,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,218,12,95,112,97,116,104,95,105, + 115,102,105,108,101,131,0,0,0,243,4,0,0,0,10,2, + 255,128,114,68,0,0,0,99,1,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, - 115,10,0,0,0,116,0,160,1,124,0,161,1,83,0,41, - 2,122,126,83,116,97,116,32,116,104,101,32,112,97,116,104, - 46,10,10,32,32,32,32,77,97,100,101,32,97,32,115,101, - 112,97,114,97,116,101,32,102,117,110,99,116,105,111,110,32, - 116,111,32,109,97,107,101,32,105,116,32,101,97,115,105,101, - 114,32,116,111,32,111,118,101,114,114,105,100,101,32,105,110, - 32,101,120,112,101,114,105,109,101,110,116,115,10,32,32,32, - 32,40,101,46,103,46,32,99,97,99,104,101,32,115,116,97, - 116,32,114,101,115,117,108,116,115,41,46,10,10,32,32,32, - 32,78,41,2,114,19,0,0,0,90,4,115,116,97,116,169, - 1,114,58,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,10,95,112,97,116,104,95,115,116,97, - 116,112,0,0,0,115,4,0,0,0,10,7,255,128,114,63, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,8,0,0,0,67,0,0,0,115,48,0,0, - 0,122,12,116,0,124,0,131,1,125,2,87,0,110,18,4, - 0,116,1,121,46,1,0,1,0,1,0,89,0,100,1,83, - 0,124,2,106,2,100,2,64,0,124,1,107,2,83,0,119, - 0,41,4,122,49,84,101,115,116,32,119,104,101,116,104,101, - 114,32,116,104,101,32,112,97,116,104,32,105,115,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,101, - 32,116,121,112,101,46,70,105,0,240,0,0,78,41,3,114, - 63,0,0,0,218,7,79,83,69,114,114,111,114,218,7,115, - 116,95,109,111,100,101,41,3,114,58,0,0,0,218,4,109, - 111,100,101,90,9,115,116,97,116,95,105,110,102,111,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,18,95, - 112,97,116,104,95,105,115,95,109,111,100,101,95,116,121,112, - 101,122,0,0,0,115,14,0,0,0,2,2,12,1,12,1, - 6,1,14,1,2,254,255,128,114,67,0,0,0,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,100, - 1,131,2,83,0,41,3,122,31,82,101,112,108,97,99,101, - 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, - 46,105,115,102,105,108,101,46,105,0,128,0,0,78,41,1, - 114,67,0,0,0,114,62,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,12,95,112,97,116,104, - 95,105,115,102,105,108,101,131,0,0,0,243,4,0,0,0, - 10,2,255,128,114,68,0,0,0,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,22,0,0,0,124,0,115,12,116,0,160,1,161, - 0,125,0,116,2,124,0,100,1,131,2,83,0,41,3,122, - 30,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114, - 32,111,115,46,112,97,116,104,46,105,115,100,105,114,46,105, - 0,64,0,0,78,41,3,114,19,0,0,0,218,6,103,101, - 116,99,119,100,114,67,0,0,0,114,62,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 112,97,116,104,95,105,115,100,105,114,136,0,0,0,115,8, - 0,0,0,4,2,8,1,10,1,255,128,114,71,0,0,0, - 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,26,0,0,0,124,0, - 160,0,116,1,161,1,112,24,124,0,100,1,100,2,133,2, - 25,0,116,2,118,0,83,0,41,4,122,142,82,101,112,108, - 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112, - 97,116,104,46,105,115,97,98,115,46,10,10,32,32,32,32, - 67,111,110,115,105,100,101,114,115,32,97,32,87,105,110,100, - 111,119,115,32,100,114,105,118,101,45,114,101,108,97,116,105, - 118,101,32,112,97,116,104,32,40,110,111,32,100,114,105,118, - 101,44,32,98,117,116,32,115,116,97,114,116,115,32,119,105, - 116,104,32,115,108,97,115,104,41,32,116,111,10,32,32,32, - 32,115,116,105,108,108,32,98,101,32,34,97,98,115,111,108, - 117,116,101,34,46,10,32,32,32,32,114,3,0,0,0,233, - 3,0,0,0,78,41,3,114,27,0,0,0,114,48,0,0, - 0,218,20,95,112,97,116,104,115,101,112,115,95,119,105,116, - 104,95,99,111,108,111,110,114,62,0,0,0,114,7,0,0, + 115,22,0,0,0,124,0,115,6,116,0,160,1,161,0,125, + 0,116,2,124,0,100,1,131,2,83,0,41,3,122,30,82, + 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, + 115,46,112,97,116,104,46,105,115,100,105,114,46,105,0,64, + 0,0,78,41,3,114,19,0,0,0,218,6,103,101,116,99, + 119,100,114,67,0,0,0,114,62,0,0,0,114,7,0,0, 0,114,7,0,0,0,114,8,0,0,0,218,11,95,112,97, - 116,104,95,105,115,97,98,115,143,0,0,0,115,4,0,0, - 0,26,6,255,128,114,74,0,0,0,233,182,1,0,0,99, - 3,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, - 11,0,0,0,67,0,0,0,115,170,0,0,0,100,1,160, - 0,124,0,116,1,124,0,131,1,161,2,125,3,116,2,160, - 3,124,3,116,2,106,4,116,2,106,5,66,0,116,2,106, - 6,66,0,124,2,100,2,64,0,161,3,125,4,122,72,116, - 7,160,8,124,4,100,3,161,2,143,26,125,5,124,5,160, - 9,124,1,161,1,1,0,87,0,100,4,4,0,4,0,131, - 3,1,0,110,16,49,0,115,94,119,1,1,0,1,0,1, - 0,89,0,1,0,116,2,160,10,124,3,124,0,161,2,1, - 0,87,0,100,4,83,0,4,0,116,11,121,168,1,0,1, - 0,1,0,122,14,116,2,160,12,124,3,161,1,1,0,87, - 0,130,0,4,0,116,11,121,166,1,0,1,0,1,0,89, - 0,130,0,119,0,119,0,41,5,122,162,66,101,115,116,45, - 101,102,102,111,114,116,32,102,117,110,99,116,105,111,110,32, - 116,111,32,119,114,105,116,101,32,100,97,116,97,32,116,111, - 32,97,32,112,97,116,104,32,97,116,111,109,105,99,97,108, - 108,121,46,10,32,32,32,32,66,101,32,112,114,101,112,97, - 114,101,100,32,116,111,32,104,97,110,100,108,101,32,97,32, - 70,105,108,101,69,120,105,115,116,115,69,114,114,111,114,32, - 105,102,32,99,111,110,99,117,114,114,101,110,116,32,119,114, - 105,116,105,110,103,32,111,102,32,116,104,101,10,32,32,32, - 32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32, - 105,115,32,97,116,116,101,109,112,116,101,100,46,250,5,123, - 125,46,123,125,114,75,0,0,0,90,2,119,98,78,41,13, - 218,6,102,111,114,109,97,116,218,2,105,100,114,19,0,0, - 0,90,4,111,112,101,110,90,6,79,95,69,88,67,76,90, - 7,79,95,67,82,69,65,84,90,8,79,95,87,82,79,78, - 76,89,218,3,95,105,111,218,6,70,105,108,101,73,79,218, - 5,119,114,105,116,101,218,7,114,101,112,108,97,99,101,114, - 64,0,0,0,90,6,117,110,108,105,110,107,41,6,114,58, - 0,0,0,114,42,0,0,0,114,66,0,0,0,90,8,112, - 97,116,104,95,116,109,112,90,2,102,100,218,4,102,105,108, + 116,104,95,105,115,100,105,114,136,0,0,0,115,8,0,0, + 0,4,2,8,1,10,1,255,128,114,71,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,67,0,0,0,115,26,0,0,0,124,0,160,0, + 116,1,161,1,112,12,124,0,100,1,100,2,133,2,25,0, + 116,2,118,0,83,0,41,4,122,142,82,101,112,108,97,99, + 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, + 104,46,105,115,97,98,115,46,10,10,32,32,32,32,67,111, + 110,115,105,100,101,114,115,32,97,32,87,105,110,100,111,119, + 115,32,100,114,105,118,101,45,114,101,108,97,116,105,118,101, + 32,112,97,116,104,32,40,110,111,32,100,114,105,118,101,44, + 32,98,117,116,32,115,116,97,114,116,115,32,119,105,116,104, + 32,115,108,97,115,104,41,32,116,111,10,32,32,32,32,115, + 116,105,108,108,32,98,101,32,34,97,98,115,111,108,117,116, + 101,34,46,10,32,32,32,32,114,3,0,0,0,233,3,0, + 0,0,78,41,3,114,27,0,0,0,114,48,0,0,0,218, + 20,95,112,97,116,104,115,101,112,115,95,119,105,116,104,95, + 99,111,108,111,110,114,62,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,95,112,97,116,104, + 95,105,115,97,98,115,143,0,0,0,115,4,0,0,0,26, + 6,255,128,114,74,0,0,0,233,182,1,0,0,99,3,0, + 0,0,0,0,0,0,0,0,0,0,6,0,0,0,11,0, + 0,0,67,0,0,0,115,170,0,0,0,100,1,160,0,124, + 0,116,1,124,0,131,1,161,2,125,3,116,2,160,3,124, + 3,116,2,106,4,116,2,106,5,66,0,116,2,106,6,66, + 0,124,2,100,2,64,0,161,3,125,4,122,36,116,7,160, + 8,124,4,100,3,161,2,143,13,125,5,124,5,160,9,124, + 1,161,1,1,0,87,0,100,4,4,0,4,0,131,3,1, + 0,110,8,49,0,115,47,119,1,1,0,1,0,1,0,89, + 0,1,0,116,2,160,10,124,3,124,0,161,2,1,0,87, + 0,100,4,83,0,4,0,116,11,121,84,1,0,1,0,1, + 0,122,7,116,2,160,12,124,3,161,1,1,0,87,0,130, + 0,4,0,116,11,121,83,1,0,1,0,1,0,89,0,130, + 0,119,0,119,0,41,5,122,162,66,101,115,116,45,101,102, + 102,111,114,116,32,102,117,110,99,116,105,111,110,32,116,111, + 32,119,114,105,116,101,32,100,97,116,97,32,116,111,32,97, + 32,112,97,116,104,32,97,116,111,109,105,99,97,108,108,121, + 46,10,32,32,32,32,66,101,32,112,114,101,112,97,114,101, + 100,32,116,111,32,104,97,110,100,108,101,32,97,32,70,105, + 108,101,69,120,105,115,116,115,69,114,114,111,114,32,105,102, + 32,99,111,110,99,117,114,114,101,110,116,32,119,114,105,116, + 105,110,103,32,111,102,32,116,104,101,10,32,32,32,32,116, + 101,109,112,111,114,97,114,121,32,102,105,108,101,32,105,115, + 32,97,116,116,101,109,112,116,101,100,46,250,5,123,125,46, + 123,125,114,75,0,0,0,90,2,119,98,78,41,13,218,6, + 102,111,114,109,97,116,218,2,105,100,114,19,0,0,0,90, + 4,111,112,101,110,90,6,79,95,69,88,67,76,90,7,79, + 95,67,82,69,65,84,90,8,79,95,87,82,79,78,76,89, + 218,3,95,105,111,218,6,70,105,108,101,73,79,218,5,119, + 114,105,116,101,218,7,114,101,112,108,97,99,101,114,64,0, + 0,0,90,6,117,110,108,105,110,107,41,6,114,58,0,0, + 0,114,42,0,0,0,114,66,0,0,0,90,8,112,97,116, + 104,95,116,109,112,90,2,102,100,218,4,102,105,108,101,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,13, + 95,119,114,105,116,101,95,97,116,111,109,105,99,152,0,0, + 0,115,38,0,0,0,16,5,6,1,22,1,4,255,2,2, + 14,3,24,1,16,128,18,1,12,1,2,1,12,1,2,3, + 12,254,2,1,2,1,2,254,2,253,255,128,114,84,0,0, + 0,105,106,13,0,0,114,45,0,0,0,114,33,0,0,0, + 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, + 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, + 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, + 112,116,105,109,105,122,97,116,105,111,110,99,2,0,0,0, + 0,0,0,0,1,0,0,0,12,0,0,0,5,0,0,0, + 67,0,0,0,115,80,1,0,0,124,1,100,1,117,1,114, + 26,116,0,160,1,100,2,116,2,161,2,1,0,124,2,100, + 1,117,1,114,20,100,3,125,3,116,3,124,3,131,1,130, + 1,124,1,114,24,100,4,110,1,100,5,125,2,116,4,160, + 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, + 4,125,5,124,5,160,7,100,6,161,1,92,3,125,6,125, + 7,125,8,116,8,106,9,106,10,125,9,124,9,100,1,117, + 0,114,57,116,11,100,7,131,1,130,1,100,4,160,12,124, + 6,114,63,124,6,110,1,124,8,124,7,124,9,103,3,161, + 1,125,10,124,2,100,1,117,0,114,86,116,8,106,13,106, + 14,100,8,107,2,114,82,100,4,125,2,110,4,116,8,106, + 13,106,14,125,2,116,15,124,2,131,1,125,2,124,2,100, + 4,107,3,114,112,124,2,160,16,161,0,115,105,116,17,100, + 9,160,18,124,2,161,1,131,1,130,1,100,10,160,18,124, + 10,116,19,124,2,161,3,125,10,124,10,116,20,100,8,25, + 0,23,0,125,11,116,8,106,21,100,1,117,1,114,162,116, + 22,124,4,131,1,115,134,116,23,116,4,160,24,161,0,124, + 4,131,2,125,4,124,4,100,5,25,0,100,11,107,2,114, + 152,124,4,100,8,25,0,116,25,118,1,114,152,124,4,100, + 12,100,1,133,2,25,0,125,4,116,23,116,8,106,21,124, + 4,160,26,116,25,161,1,124,11,131,3,83,0,116,23,124, + 4,116,27,124,11,131,3,83,0,41,13,97,254,2,0,0, + 71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,116, + 111,32,97,32,46,112,121,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, + 32,105,116,115,32,46,112,121,99,32,102,105,108,101,46,10, + 10,32,32,32,32,84,104,101,32,46,112,121,32,102,105,108, + 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, + 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, + 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, + 101,32,112,97,116,104,32,116,111,32,116,104,101,10,32,32, + 32,32,46,112,121,99,32,102,105,108,101,32,99,97,108,99, + 117,108,97,116,101,100,32,97,115,32,105,102,32,116,104,101, + 32,46,112,121,32,102,105,108,101,32,119,101,114,101,32,105, + 109,112,111,114,116,101,100,46,10,10,32,32,32,32,84,104, + 101,32,39,111,112,116,105,109,105,122,97,116,105,111,110,39, + 32,112,97,114,97,109,101,116,101,114,32,99,111,110,116,114, + 111,108,115,32,116,104,101,32,112,114,101,115,117,109,101,100, + 32,111,112,116,105,109,105,122,97,116,105,111,110,32,108,101, + 118,101,108,32,111,102,10,32,32,32,32,116,104,101,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,46,32,73,102, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 105,115,32,110,111,116,32,78,111,110,101,44,32,116,104,101, + 32,115,116,114,105,110,103,32,114,101,112,114,101,115,101,110, + 116,97,116,105,111,110,10,32,32,32,32,111,102,32,116,104, + 101,32,97,114,103,117,109,101,110,116,32,105,115,32,116,97, + 107,101,110,32,97,110,100,32,118,101,114,105,102,105,101,100, + 32,116,111,32,98,101,32,97,108,112,104,97,110,117,109,101, + 114,105,99,32,40,101,108,115,101,32,86,97,108,117,101,69, + 114,114,111,114,10,32,32,32,32,105,115,32,114,97,105,115, + 101,100,41,46,10,10,32,32,32,32,84,104,101,32,100,101, + 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114, + 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,32,73,102,32,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,32,105,115,32,110,111,116,32,78, + 111,110,101,44,10,32,32,32,32,97,32,84,114,117,101,32, + 118,97,108,117,101,32,105,115,32,116,104,101,32,115,97,109, + 101,32,97,115,32,115,101,116,116,105,110,103,32,39,111,112, + 116,105,109,105,122,97,116,105,111,110,39,32,116,111,32,116, + 104,101,32,101,109,112,116,121,32,115,116,114,105,110,103,10, + 32,32,32,32,119,104,105,108,101,32,97,32,70,97,108,115, + 101,32,118,97,108,117,101,32,105,115,32,101,113,117,105,118, + 97,108,101,110,116,32,116,111,32,115,101,116,116,105,110,103, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 116,111,32,39,49,39,46,10,10,32,32,32,32,73,102,32, + 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, + 78,111,110,101,32,116,104,101,110,32,78,111,116,73,109,112, + 108,101,109,101,110,116,101,100,69,114,114,111,114,32,105,115, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,122, + 70,116,104,101,32,100,101,98,117,103,95,111,118,101,114,114, + 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,59,32,117,115,101, + 32,39,111,112,116,105,109,105,122,97,116,105,111,110,39,32, + 105,110,115,116,101,97,100,122,50,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,32,111,114,32,111,112,116,105,109, + 105,122,97,116,105,111,110,32,109,117,115,116,32,98,101,32, + 115,101,116,32,116,111,32,78,111,110,101,114,10,0,0,0, + 114,3,0,0,0,218,1,46,250,36,115,121,115,46,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,46,99,97,99, + 104,101,95,116,97,103,32,105,115,32,78,111,110,101,114,0, + 0,0,0,122,24,123,33,114,125,32,105,115,32,110,111,116, + 32,97,108,112,104,97,110,117,109,101,114,105,99,122,7,123, + 125,46,123,125,123,125,114,11,0,0,0,114,45,0,0,0, + 41,28,218,9,95,119,97,114,110,105,110,103,115,218,4,119, + 97,114,110,218,18,68,101,112,114,101,99,97,116,105,111,110, + 87,97,114,110,105,110,103,218,9,84,121,112,101,69,114,114, + 111,114,114,19,0,0,0,218,6,102,115,112,97,116,104,114, + 61,0,0,0,114,55,0,0,0,114,16,0,0,0,218,14, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9, + 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109, + 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,52, + 0,0,0,114,17,0,0,0,218,8,111,112,116,105,109,105, + 122,101,218,3,115,116,114,218,7,105,115,97,108,110,117,109, + 218,10,86,97,108,117,101,69,114,114,111,114,114,77,0,0, + 0,218,4,95,79,80,84,218,17,66,89,84,69,67,79,68, + 69,95,83,85,70,70,73,88,69,83,218,14,112,121,99,97, + 99,104,101,95,112,114,101,102,105,120,114,74,0,0,0,114, + 54,0,0,0,114,70,0,0,0,114,48,0,0,0,218,6, + 108,115,116,114,105,112,218,8,95,80,89,67,65,67,72,69, + 41,12,114,58,0,0,0,90,14,100,101,98,117,103,95,111, + 118,101,114,114,105,100,101,114,85,0,0,0,218,7,109,101, + 115,115,97,103,101,218,4,104,101,97,100,114,60,0,0,0, + 90,4,98,97,115,101,114,6,0,0,0,218,4,114,101,115, + 116,90,3,116,97,103,90,15,97,108,109,111,115,116,95,102, + 105,108,101,110,97,109,101,218,8,102,105,108,101,110,97,109, 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 218,13,95,119,114,105,116,101,95,97,116,111,109,105,99,152, - 0,0,0,115,38,0,0,0,16,5,6,1,22,1,4,255, - 2,2,14,3,24,1,16,128,18,1,12,1,2,1,12,1, - 2,3,12,254,2,1,2,1,2,254,2,253,255,128,114,84, - 0,0,0,105,106,13,0,0,114,45,0,0,0,114,33,0, - 0,0,115,2,0,0,0,13,10,90,11,95,95,112,121,99, - 97,99,104,101,95,95,122,4,111,112,116,45,122,3,46,112, - 121,122,4,46,112,121,119,122,4,46,112,121,99,41,1,218, - 12,111,112,116,105,109,105,122,97,116,105,111,110,99,2,0, - 0,0,0,0,0,0,1,0,0,0,12,0,0,0,5,0, - 0,0,67,0,0,0,115,88,1,0,0,124,1,100,1,117, - 1,114,52,116,0,160,1,100,2,116,2,161,2,1,0,124, - 2,100,1,117,1,114,40,100,3,125,3,116,3,124,3,131, - 1,130,1,124,1,114,48,100,4,110,2,100,5,125,2,116, - 4,160,5,124,0,161,1,125,0,116,6,124,0,131,1,92, - 2,125,4,125,5,124,5,160,7,100,6,161,1,92,3,125, - 6,125,7,125,8,116,8,106,9,106,10,125,9,124,9,100, - 1,117,0,114,114,116,11,100,7,131,1,130,1,100,4,160, - 12,124,6,114,126,124,6,110,2,124,8,124,7,124,9,103, - 3,161,1,125,10,124,2,100,1,117,0,114,172,116,8,106, - 13,106,14,100,8,107,2,114,164,100,4,125,2,110,8,116, - 8,106,13,106,14,125,2,116,15,124,2,131,1,125,2,124, - 2,100,4,107,3,114,224,124,2,160,16,161,0,115,210,116, - 17,100,9,160,18,124,2,161,1,131,1,130,1,100,10,160, - 18,124,10,116,19,124,2,161,3,125,10,124,10,116,20,100, - 8,25,0,23,0,125,11,116,8,106,21,100,1,117,1,144, - 1,114,76,116,22,124,4,131,1,144,1,115,16,116,23,116, - 4,160,24,161,0,124,4,131,2,125,4,124,4,100,5,25, - 0,100,11,107,2,144,1,114,56,124,4,100,8,25,0,116, - 25,118,1,144,1,114,56,124,4,100,12,100,1,133,2,25, - 0,125,4,116,23,116,8,106,21,124,4,160,26,116,25,161, - 1,124,11,131,3,83,0,116,23,124,4,116,27,124,11,131, - 3,83,0,41,13,97,254,2,0,0,71,105,118,101,110,32, - 116,104,101,32,112,97,116,104,32,116,111,32,97,32,46,112, - 121,32,102,105,108,101,44,32,114,101,116,117,114,110,32,116, + 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, + 114,99,101,87,1,0,0,115,74,0,0,0,8,18,6,1, + 2,1,4,255,8,2,4,1,8,1,12,1,10,1,12,1, + 16,1,8,1,8,1,8,1,24,1,8,1,12,1,6,1, + 8,2,8,1,8,1,8,1,14,1,14,1,12,1,10,1, + 8,9,14,1,24,5,12,1,2,4,4,1,8,1,2,1, + 4,253,12,5,255,128,114,109,0,0,0,99,1,0,0,0, + 0,0,0,0,0,0,0,0,10,0,0,0,5,0,0,0, + 67,0,0,0,115,40,1,0,0,116,0,106,1,106,2,100, + 1,117,0,114,10,116,3,100,2,131,1,130,1,116,4,160, + 5,124,0,161,1,125,0,116,6,124,0,131,1,92,2,125, + 1,125,2,100,3,125,3,116,0,106,7,100,1,117,1,114, + 51,116,0,106,7,160,8,116,9,161,1,125,4,124,1,160, + 10,124,4,116,11,23,0,161,1,114,51,124,1,116,12,124, + 4,131,1,100,1,133,2,25,0,125,1,100,4,125,3,124, + 3,115,72,116,6,124,1,131,1,92,2,125,1,125,5,124, + 5,116,13,107,3,114,72,116,14,116,13,155,0,100,5,124, + 0,155,2,157,3,131,1,130,1,124,2,160,15,100,6,161, + 1,125,6,124,6,100,7,118,1,114,88,116,14,100,8,124, + 2,155,2,157,2,131,1,130,1,124,6,100,9,107,2,114, + 132,124,2,160,16,100,6,100,10,161,2,100,11,25,0,125, + 7,124,7,160,10,116,17,161,1,115,112,116,14,100,12,116, + 17,155,2,157,2,131,1,130,1,124,7,116,12,116,17,131, + 1,100,1,133,2,25,0,125,8,124,8,160,18,161,0,115, + 132,116,14,100,13,124,7,155,2,100,14,157,3,131,1,130, + 1,124,2,160,19,100,6,161,1,100,15,25,0,125,9,116, + 20,124,1,124,9,116,21,100,15,25,0,23,0,131,2,83, + 0,41,16,97,110,1,0,0,71,105,118,101,110,32,116,104, + 101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,99, + 46,32,102,105,108,101,44,32,114,101,116,117,114,110,32,116, 104,101,32,112,97,116,104,32,116,111,32,105,116,115,32,46, - 112,121,99,32,102,105,108,101,46,10,10,32,32,32,32,84, - 104,101,32,46,112,121,32,102,105,108,101,32,100,111,101,115, + 112,121,32,102,105,108,101,46,10,10,32,32,32,32,84,104, + 101,32,46,112,121,99,32,102,105,108,101,32,100,111,101,115, 32,110,111,116,32,110,101,101,100,32,116,111,32,101,120,105, 115,116,59,32,116,104,105,115,32,115,105,109,112,108,121,32, 114,101,116,117,114,110,115,32,116,104,101,32,112,97,116,104, - 32,116,111,32,116,104,101,10,32,32,32,32,46,112,121,99, - 32,102,105,108,101,32,99,97,108,99,117,108,97,116,101,100, - 32,97,115,32,105,102,32,116,104,101,32,46,112,121,32,102, - 105,108,101,32,119,101,114,101,32,105,109,112,111,114,116,101, - 100,46,10,10,32,32,32,32,84,104,101,32,39,111,112,116, - 105,109,105,122,97,116,105,111,110,39,32,112,97,114,97,109, - 101,116,101,114,32,99,111,110,116,114,111,108,115,32,116,104, - 101,32,112,114,101,115,117,109,101,100,32,111,112,116,105,109, - 105,122,97,116,105,111,110,32,108,101,118,101,108,32,111,102, - 10,32,32,32,32,116,104,101,32,98,121,116,101,99,111,100, - 101,32,102,105,108,101,46,32,73,102,32,39,111,112,116,105, - 109,105,122,97,116,105,111,110,39,32,105,115,32,110,111,116, - 32,78,111,110,101,44,32,116,104,101,32,115,116,114,105,110, - 103,32,114,101,112,114,101,115,101,110,116,97,116,105,111,110, - 10,32,32,32,32,111,102,32,116,104,101,32,97,114,103,117, - 109,101,110,116,32,105,115,32,116,97,107,101,110,32,97,110, - 100,32,118,101,114,105,102,105,101,100,32,116,111,32,98,101, - 32,97,108,112,104,97,110,117,109,101,114,105,99,32,40,101, - 108,115,101,32,86,97,108,117,101,69,114,114,111,114,10,32, - 32,32,32,105,115,32,114,97,105,115,101,100,41,46,10,10, - 32,32,32,32,84,104,101,32,100,101,98,117,103,95,111,118, - 101,114,114,105,100,101,32,112,97,114,97,109,101,116,101,114, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 73,102,32,100,101,98,117,103,95,111,118,101,114,114,105,100, - 101,32,105,115,32,110,111,116,32,78,111,110,101,44,10,32, - 32,32,32,97,32,84,114,117,101,32,118,97,108,117,101,32, - 105,115,32,116,104,101,32,115,97,109,101,32,97,115,32,115, - 101,116,116,105,110,103,32,39,111,112,116,105,109,105,122,97, - 116,105,111,110,39,32,116,111,32,116,104,101,32,101,109,112, - 116,121,32,115,116,114,105,110,103,10,32,32,32,32,119,104, - 105,108,101,32,97,32,70,97,108,115,101,32,118,97,108,117, - 101,32,105,115,32,101,113,117,105,118,97,108,101,110,116,32, - 116,111,32,115,101,116,116,105,110,103,32,39,111,112,116,105, - 109,105,122,97,116,105,111,110,39,32,116,111,32,39,49,39, - 46,10,10,32,32,32,32,73,102,32,115,121,115,46,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,46,99,97,99, - 104,101,95,116,97,103,32,105,115,32,78,111,110,101,32,116, - 104,101,110,32,78,111,116,73,109,112,108,101,109,101,110,116, - 101,100,69,114,114,111,114,32,105,115,32,114,97,105,115,101, - 100,46,10,10,32,32,32,32,78,122,70,116,104,101,32,100, - 101,98,117,103,95,111,118,101,114,114,105,100,101,32,112,97, - 114,97,109,101,116,101,114,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,59,32,117,115,101,32,39,111,112,116,105, - 109,105,122,97,116,105,111,110,39,32,105,110,115,116,101,97, - 100,122,50,100,101,98,117,103,95,111,118,101,114,114,105,100, - 101,32,111,114,32,111,112,116,105,109,105,122,97,116,105,111, - 110,32,109,117,115,116,32,98,101,32,115,101,116,32,116,111, - 32,78,111,110,101,114,10,0,0,0,114,3,0,0,0,218, - 1,46,250,36,115,121,115,46,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,46,99,97,99,104,101,95,116,97,103, - 32,105,115,32,78,111,110,101,114,0,0,0,0,122,24,123, - 33,114,125,32,105,115,32,110,111,116,32,97,108,112,104,97, - 110,117,109,101,114,105,99,122,7,123,125,46,123,125,123,125, - 114,11,0,0,0,114,45,0,0,0,41,28,218,9,95,119, - 97,114,110,105,110,103,115,218,4,119,97,114,110,218,18,68, - 101,112,114,101,99,97,116,105,111,110,87,97,114,110,105,110, - 103,218,9,84,121,112,101,69,114,114,111,114,114,19,0,0, - 0,218,6,102,115,112,97,116,104,114,61,0,0,0,114,55, - 0,0,0,114,16,0,0,0,218,14,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,218,9,99,97,99,104,101,95, - 116,97,103,218,19,78,111,116,73,109,112,108,101,109,101,110, - 116,101,100,69,114,114,111,114,114,52,0,0,0,114,17,0, - 0,0,218,8,111,112,116,105,109,105,122,101,218,3,115,116, - 114,218,7,105,115,97,108,110,117,109,218,10,86,97,108,117, - 101,69,114,114,111,114,114,77,0,0,0,218,4,95,79,80, - 84,218,17,66,89,84,69,67,79,68,69,95,83,85,70,70, - 73,88,69,83,218,14,112,121,99,97,99,104,101,95,112,114, - 101,102,105,120,114,74,0,0,0,114,54,0,0,0,114,70, - 0,0,0,114,48,0,0,0,218,6,108,115,116,114,105,112, - 218,8,95,80,89,67,65,67,72,69,41,12,114,58,0,0, - 0,90,14,100,101,98,117,103,95,111,118,101,114,114,105,100, - 101,114,85,0,0,0,218,7,109,101,115,115,97,103,101,218, - 4,104,101,97,100,114,60,0,0,0,90,4,98,97,115,101, - 114,6,0,0,0,218,4,114,101,115,116,90,3,116,97,103, - 90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,109, - 101,218,8,102,105,108,101,110,97,109,101,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,17,99,97,99,104, - 101,95,102,114,111,109,95,115,111,117,114,99,101,86,1,0, - 0,115,74,0,0,0,8,18,6,1,2,1,4,255,8,2, - 4,1,8,1,12,1,10,1,12,1,16,1,8,1,8,1, - 8,1,24,1,8,1,12,1,6,1,8,2,8,1,8,1, - 8,1,14,1,14,1,12,1,12,1,10,9,14,1,28,5, - 12,1,2,4,4,1,8,1,2,1,4,253,12,5,255,128, - 114,109,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,10,0,0,0,5,0,0,0,67,0,0,0,115,44, - 1,0,0,116,0,106,1,106,2,100,1,117,0,114,20,116, - 3,100,2,131,1,130,1,116,4,160,5,124,0,161,1,125, - 0,116,6,124,0,131,1,92,2,125,1,125,2,100,3,125, - 3,116,0,106,7,100,1,117,1,114,102,116,0,106,7,160, - 8,116,9,161,1,125,4,124,1,160,10,124,4,116,11,23, - 0,161,1,114,102,124,1,116,12,124,4,131,1,100,1,133, - 2,25,0,125,1,100,4,125,3,124,3,115,144,116,6,124, - 1,131,1,92,2,125,1,125,5,124,5,116,13,107,3,114, - 144,116,14,116,13,155,0,100,5,124,0,155,2,157,3,131, - 1,130,1,124,2,160,15,100,6,161,1,125,6,124,6,100, - 7,118,1,114,176,116,14,100,8,124,2,155,2,157,2,131, - 1,130,1,124,6,100,9,107,2,144,1,114,12,124,2,160, - 16,100,6,100,10,161,2,100,11,25,0,125,7,124,7,160, - 10,116,17,161,1,115,226,116,14,100,12,116,17,155,2,157, - 2,131,1,130,1,124,7,116,12,116,17,131,1,100,1,133, - 2,25,0,125,8,124,8,160,18,161,0,144,1,115,12,116, - 14,100,13,124,7,155,2,100,14,157,3,131,1,130,1,124, - 2,160,19,100,6,161,1,100,15,25,0,125,9,116,20,124, - 1,124,9,116,21,100,15,25,0,23,0,131,2,83,0,41, - 16,97,110,1,0,0,71,105,118,101,110,32,116,104,101,32, - 112,97,116,104,32,116,111,32,97,32,46,112,121,99,46,32, - 102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,101, - 32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,121, - 32,102,105,108,101,46,10,10,32,32,32,32,84,104,101,32, - 46,112,121,99,32,102,105,108,101,32,100,111,101,115,32,110, - 111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,116, - 59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,101, - 116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,116, - 111,10,32,32,32,32,116,104,101,32,46,112,121,32,102,105, - 108,101,32,99,97,108,99,117,108,97,116,101,100,32,116,111, - 32,99,111,114,114,101,115,112,111,110,100,32,116,111,32,116, - 104,101,32,46,112,121,99,32,102,105,108,101,46,32,32,73, - 102,32,112,97,116,104,32,100,111,101,115,10,32,32,32,32, - 110,111,116,32,99,111,110,102,111,114,109,32,116,111,32,80, - 69,80,32,51,49,52,55,47,52,56,56,32,102,111,114,109, - 97,116,44,32,86,97,108,117,101,69,114,114,111,114,32,119, - 105,108,108,32,98,101,32,114,97,105,115,101,100,46,32,73, - 102,10,32,32,32,32,115,121,115,46,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,116, - 97,103,32,105,115,32,78,111,110,101,32,116,104,101,110,32, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, - 32,32,32,32,78,114,87,0,0,0,70,84,122,31,32,110, - 111,116,32,98,111,116,116,111,109,45,108,101,118,101,108,32, - 100,105,114,101,99,116,111,114,121,32,105,110,32,114,86,0, - 0,0,62,2,0,0,0,114,45,0,0,0,114,72,0,0, - 0,122,29,101,120,112,101,99,116,101,100,32,111,110,108,121, - 32,50,32,111,114,32,51,32,100,111,116,115,32,105,110,32, - 114,72,0,0,0,114,45,0,0,0,233,254,255,255,255,122, - 53,111,112,116,105,109,105,122,97,116,105,111,110,32,112,111, - 114,116,105,111,110,32,111,102,32,102,105,108,101,110,97,109, - 101,32,100,111,101,115,32,110,111,116,32,115,116,97,114,116, - 32,119,105,116,104,32,122,19,111,112,116,105,109,105,122,97, - 116,105,111,110,32,108,101,118,101,108,32,122,29,32,105,115, - 32,110,111,116,32,97,110,32,97,108,112,104,97,110,117,109, - 101,114,105,99,32,118,97,108,117,101,114,0,0,0,0,41, - 22,114,16,0,0,0,114,93,0,0,0,114,94,0,0,0, - 114,95,0,0,0,114,19,0,0,0,114,92,0,0,0,114, - 61,0,0,0,114,102,0,0,0,114,47,0,0,0,114,48, - 0,0,0,114,27,0,0,0,114,51,0,0,0,114,4,0, - 0,0,114,104,0,0,0,114,99,0,0,0,218,5,99,111, - 117,110,116,114,57,0,0,0,114,100,0,0,0,114,98,0, - 0,0,218,9,112,97,114,116,105,116,105,111,110,114,54,0, - 0,0,218,15,83,79,85,82,67,69,95,83,85,70,70,73, - 88,69,83,41,10,114,58,0,0,0,114,106,0,0,0,90, - 16,112,121,99,97,99,104,101,95,102,105,108,101,110,97,109, - 101,90,23,102,111,117,110,100,95,105,110,95,112,121,99,97, - 99,104,101,95,112,114,101,102,105,120,90,13,115,116,114,105, - 112,112,101,100,95,112,97,116,104,90,7,112,121,99,97,99, - 104,101,90,9,100,111,116,95,99,111,117,110,116,114,85,0, - 0,0,90,9,111,112,116,95,108,101,118,101,108,90,13,98, - 97,115,101,95,102,105,108,101,110,97,109,101,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,17,115,111,117, - 114,99,101,95,102,114,111,109,95,99,97,99,104,101,157,1, - 0,0,115,62,0,0,0,12,9,8,1,10,1,12,1,4, - 1,10,1,12,1,14,1,16,1,4,1,4,1,12,1,8, - 1,8,1,2,1,8,255,10,2,8,1,14,1,10,1,16, - 1,10,1,4,1,2,1,8,255,16,2,10,1,16,1,14, - 2,18,1,255,128,114,114,0,0,0,99,1,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,9,0,0,0,67, - 0,0,0,115,122,0,0,0,116,0,124,0,131,1,100,1, - 107,2,114,16,100,2,83,0,124,0,160,1,100,3,161,1, - 92,3,125,1,125,2,125,3,124,1,114,56,124,3,160,2, - 161,0,100,4,100,5,133,2,25,0,100,6,107,3,114,60, - 124,0,83,0,122,12,116,3,124,0,131,1,125,4,87,0, - 110,30,4,0,116,4,116,5,102,2,121,120,1,0,1,0, - 1,0,124,0,100,2,100,5,133,2,25,0,125,4,89,0, - 116,6,124,4,131,1,114,116,124,4,83,0,124,0,83,0, - 119,0,41,7,122,188,67,111,110,118,101,114,116,32,97,32, - 98,121,116,101,99,111,100,101,32,102,105,108,101,32,112,97, - 116,104,32,116,111,32,97,32,115,111,117,114,99,101,32,112, - 97,116,104,32,40,105,102,32,112,111,115,115,105,98,108,101, - 41,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, - 99,116,105,111,110,32,101,120,105,115,116,115,32,112,117,114, - 101,108,121,32,102,111,114,32,98,97,99,107,119,97,114,100, - 115,45,99,111,109,112,97,116,105,98,105,108,105,116,121,32, - 102,111,114,10,32,32,32,32,80,121,73,109,112,111,114,116, - 95,69,120,101,99,67,111,100,101,77,111,100,117,108,101,87, - 105,116,104,70,105,108,101,110,97,109,101,115,40,41,32,105, - 110,32,116,104,101,32,67,32,65,80,73,46,10,10,32,32, - 32,32,114,0,0,0,0,78,114,86,0,0,0,233,253,255, - 255,255,233,255,255,255,255,90,2,112,121,41,7,114,4,0, - 0,0,114,55,0,0,0,218,5,108,111,119,101,114,114,114, - 0,0,0,114,95,0,0,0,114,99,0,0,0,114,68,0, - 0,0,41,5,218,13,98,121,116,101,99,111,100,101,95,112, - 97,116,104,114,107,0,0,0,114,59,0,0,0,90,9,101, - 120,116,101,110,115,105,111,110,218,11,115,111,117,114,99,101, - 95,112,97,116,104,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,15,95,103,101,116,95,115,111,117,114,99, - 101,102,105,108,101,197,1,0,0,115,24,0,0,0,12,7, - 4,1,16,1,24,1,4,1,2,1,12,1,16,1,14,1, - 16,1,2,254,255,128,114,120,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0, - 67,0,0,0,115,68,0,0,0,124,0,160,0,116,1,116, - 2,131,1,161,1,114,44,122,10,116,3,124,0,131,1,87, - 0,83,0,4,0,116,4,121,66,1,0,1,0,1,0,89, - 0,100,0,83,0,124,0,160,0,116,1,116,5,131,1,161, - 1,114,62,124,0,83,0,100,0,83,0,119,0,169,1,78, - 41,6,218,8,101,110,100,115,119,105,116,104,218,5,116,117, - 112,108,101,114,113,0,0,0,114,109,0,0,0,114,95,0, - 0,0,114,101,0,0,0,41,1,114,108,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,11,95, - 103,101,116,95,99,97,99,104,101,100,216,1,0,0,115,20, - 0,0,0,14,1,2,1,10,1,12,1,6,1,14,1,4, - 1,4,2,2,251,255,128,114,124,0,0,0,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0, - 0,67,0,0,0,115,48,0,0,0,122,14,116,0,124,0, - 131,1,106,1,125,1,87,0,110,18,4,0,116,2,121,46, - 1,0,1,0,1,0,100,1,125,1,89,0,124,1,100,2, - 79,0,125,1,124,1,83,0,119,0,41,4,122,51,67,97, - 108,99,117,108,97,116,101,32,116,104,101,32,109,111,100,101, - 32,112,101,114,109,105,115,115,105,111,110,115,32,102,111,114, - 32,97,32,98,121,116,101,99,111,100,101,32,102,105,108,101, - 46,114,75,0,0,0,233,128,0,0,0,78,41,3,114,63, - 0,0,0,114,65,0,0,0,114,64,0,0,0,41,2,114, - 58,0,0,0,114,66,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,10,95,99,97,108,99,95, - 109,111,100,101,228,1,0,0,115,16,0,0,0,2,2,14, - 1,12,1,6,1,8,3,4,1,2,251,255,128,114,126,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,4,0,0,0,3,0,0,0,115,52,0,0,0, - 100,6,135,0,102,1,100,2,100,3,132,9,125,1,116,0, - 100,1,117,1,114,30,116,0,106,1,125,2,110,8,100,4, - 100,5,132,0,125,2,124,2,124,1,136,0,131,2,1,0, - 124,1,83,0,41,7,122,252,68,101,99,111,114,97,116,111, - 114,32,116,111,32,118,101,114,105,102,121,32,116,104,97,116, - 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, - 103,32,114,101,113,117,101,115,116,101,100,32,109,97,116,99, - 104,101,115,32,116,104,101,32,111,110,101,32,116,104,101,10, - 32,32,32,32,108,111,97,100,101,114,32,99,97,110,32,104, - 97,110,100,108,101,46,10,10,32,32,32,32,84,104,101,32, - 102,105,114,115,116,32,97,114,103,117,109,101,110,116,32,40, - 115,101,108,102,41,32,109,117,115,116,32,100,101,102,105,110, - 101,32,95,110,97,109,101,32,119,104,105,99,104,32,116,104, - 101,32,115,101,99,111,110,100,32,97,114,103,117,109,101,110, - 116,32,105,115,10,32,32,32,32,99,111,109,112,97,114,101, - 100,32,97,103,97,105,110,115,116,46,32,73,102,32,116,104, - 101,32,99,111,109,112,97,114,105,115,111,110,32,102,97,105, - 108,115,32,116,104,101,110,32,73,109,112,111,114,116,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, - 32,32,32,32,78,99,2,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,4,0,0,0,31,0,0,0,115,72, - 0,0,0,124,1,100,0,117,0,114,16,124,0,106,0,125, - 1,110,32,124,0,106,0,124,1,107,3,114,48,116,1,100, - 1,124,0,106,0,124,1,102,2,22,0,124,1,100,2,141, - 2,130,1,136,0,124,0,124,1,103,2,124,2,162,1,82, - 0,105,0,124,3,164,1,142,1,83,0,41,3,78,122,30, - 108,111,97,100,101,114,32,102,111,114,32,37,115,32,99,97, - 110,110,111,116,32,104,97,110,100,108,101,32,37,115,169,1, - 218,4,110,97,109,101,41,2,114,128,0,0,0,218,11,73, - 109,112,111,114,116,69,114,114,111,114,41,4,218,4,115,101, - 108,102,114,128,0,0,0,218,4,97,114,103,115,218,6,107, - 119,97,114,103,115,169,1,218,6,109,101,116,104,111,100,114, - 7,0,0,0,114,8,0,0,0,218,19,95,99,104,101,99, - 107,95,110,97,109,101,95,119,114,97,112,112,101,114,248,1, - 0,0,115,20,0,0,0,8,1,8,1,10,1,4,1,8, - 1,2,255,2,1,6,255,24,2,255,128,122,40,95,99,104, - 101,99,107,95,110,97,109,101,46,60,108,111,99,97,108,115, - 62,46,95,99,104,101,99,107,95,110,97,109,101,95,119,114, - 97,112,112,101,114,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,7,0,0,0,83,0,0,0,115,56, - 0,0,0,100,1,68,0,93,32,125,2,116,0,124,1,124, - 2,131,2,114,36,116,1,124,0,124,2,116,2,124,1,124, - 2,131,2,131,3,1,0,113,4,124,0,106,3,160,4,124, - 1,106,3,161,1,1,0,100,0,83,0,41,2,78,41,4, - 218,10,95,95,109,111,100,117,108,101,95,95,218,8,95,95, - 110,97,109,101,95,95,218,12,95,95,113,117,97,108,110,97, - 109,101,95,95,218,7,95,95,100,111,99,95,95,41,5,218, - 7,104,97,115,97,116,116,114,218,7,115,101,116,97,116,116, - 114,218,7,103,101,116,97,116,116,114,218,8,95,95,100,105, - 99,116,95,95,218,6,117,112,100,97,116,101,41,3,90,3, - 110,101,119,90,3,111,108,100,114,82,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,5,95,119, - 114,97,112,5,2,0,0,115,12,0,0,0,8,1,10,1, - 18,1,2,128,18,1,255,128,122,26,95,99,104,101,99,107, - 95,110,97,109,101,46,60,108,111,99,97,108,115,62,46,95, - 119,114,97,112,41,1,78,41,2,218,10,95,98,111,111,116, - 115,116,114,97,112,114,145,0,0,0,41,3,114,134,0,0, - 0,114,135,0,0,0,114,145,0,0,0,114,7,0,0,0, - 114,133,0,0,0,114,8,0,0,0,218,11,95,99,104,101, - 99,107,95,110,97,109,101,240,1,0,0,115,14,0,0,0, - 14,8,8,10,8,1,8,2,10,6,4,1,255,128,114,147, - 0,0,0,99,2,0,0,0,0,0,0,0,0,0,0,0, - 5,0,0,0,6,0,0,0,67,0,0,0,115,60,0,0, - 0,124,0,160,0,124,1,161,1,92,2,125,2,125,3,124, - 2,100,1,117,0,114,56,116,1,124,3,131,1,114,56,100, - 2,125,4,116,2,160,3,124,4,160,4,124,3,100,3,25, - 0,161,1,116,5,161,2,1,0,124,2,83,0,41,4,122, - 155,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, - 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,98, - 121,32,100,101,108,101,103,97,116,105,110,103,32,116,111,10, - 32,32,32,32,115,101,108,102,46,102,105,110,100,95,108,111, - 97,100,101,114,40,41,46,10,10,32,32,32,32,84,104,105, - 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, - 101,99,97,116,101,100,32,105,110,32,102,97,118,111,114,32, - 111,102,32,102,105,110,100,101,114,46,102,105,110,100,95,115, - 112,101,99,40,41,46,10,10,32,32,32,32,78,122,44,78, - 111,116,32,105,109,112,111,114,116,105,110,103,32,100,105,114, - 101,99,116,111,114,121,32,123,125,58,32,109,105,115,115,105, - 110,103,32,95,95,105,110,105,116,95,95,114,0,0,0,0, - 41,6,218,11,102,105,110,100,95,108,111,97,100,101,114,114, - 4,0,0,0,114,88,0,0,0,114,89,0,0,0,114,77, - 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, - 110,103,41,5,114,130,0,0,0,218,8,102,117,108,108,110, - 97,109,101,218,6,108,111,97,100,101,114,218,8,112,111,114, - 116,105,111,110,115,218,3,109,115,103,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,95,102,105,110,100, - 95,109,111,100,117,108,101,95,115,104,105,109,15,2,0,0, - 115,12,0,0,0,14,10,16,1,4,1,22,1,4,1,255, - 128,114,154,0,0,0,99,3,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, - 166,0,0,0,124,0,100,1,100,2,133,2,25,0,125,3, - 124,3,116,0,107,3,114,64,100,3,124,1,155,2,100,4, - 124,3,155,2,157,4,125,4,116,1,160,2,100,5,124,4, - 161,2,1,0,116,3,124,4,102,1,105,0,124,2,164,1, - 142,1,130,1,116,4,124,0,131,1,100,6,107,0,114,106, - 100,7,124,1,155,2,157,2,125,4,116,1,160,2,100,5, - 124,4,161,2,1,0,116,5,124,4,131,1,130,1,116,6, - 124,0,100,2,100,8,133,2,25,0,131,1,125,5,124,5, - 100,9,64,0,114,162,100,10,124,5,155,2,100,11,124,1, - 155,2,157,4,125,4,116,3,124,4,102,1,105,0,124,2, - 164,1,142,1,130,1,124,5,83,0,41,12,97,84,2,0, - 0,80,101,114,102,111,114,109,32,98,97,115,105,99,32,118, - 97,108,105,100,105,116,121,32,99,104,101,99,107,105,110,103, - 32,111,102,32,97,32,112,121,99,32,104,101,97,100,101,114, - 32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,32, - 102,108,97,103,115,32,102,105,101,108,100,44,10,32,32,32, - 32,119,104,105,99,104,32,100,101,116,101,114,109,105,110,101, - 115,32,104,111,119,32,116,104,101,32,112,121,99,32,115,104, - 111,117,108,100,32,98,101,32,102,117,114,116,104,101,114,32, - 118,97,108,105,100,97,116,101,100,32,97,103,97,105,110,115, - 116,32,116,104,101,32,115,111,117,114,99,101,46,10,10,32, - 32,32,32,42,100,97,116,97,42,32,105,115,32,116,104,101, - 32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101, - 32,112,121,99,32,102,105,108,101,46,32,40,79,110,108,121, - 32,116,104,101,32,102,105,114,115,116,32,49,54,32,98,121, - 116,101,115,32,97,114,101,10,32,32,32,32,114,101,113,117, - 105,114,101,100,44,32,116,104,111,117,103,104,46,41,10,10, - 32,32,32,32,42,110,97,109,101,42,32,105,115,32,116,104, - 101,32,110,97,109,101,32,111,102,32,116,104,101,32,109,111, - 100,117,108,101,32,98,101,105,110,103,32,105,109,112,111,114, - 116,101,100,46,32,73,116,32,105,115,32,117,115,101,100,32, - 102,111,114,32,108,111,103,103,105,110,103,46,10,10,32,32, - 32,32,42,101,120,99,95,100,101,116,97,105,108,115,42,32, - 105,115,32,97,32,100,105,99,116,105,111,110,97,114,121,32, - 112,97,115,115,101,100,32,116,111,32,73,109,112,111,114,116, - 69,114,114,111,114,32,105,102,32,105,116,32,114,97,105,115, - 101,100,32,102,111,114,10,32,32,32,32,105,109,112,114,111, - 118,101,100,32,100,101,98,117,103,103,105,110,103,46,10,10, - 32,32,32,32,73,109,112,111,114,116,69,114,114,111,114,32, + 32,116,111,10,32,32,32,32,116,104,101,32,46,112,121,32, + 102,105,108,101,32,99,97,108,99,117,108,97,116,101,100,32, + 116,111,32,99,111,114,114,101,115,112,111,110,100,32,116,111, + 32,116,104,101,32,46,112,121,99,32,102,105,108,101,46,32, + 32,73,102,32,112,97,116,104,32,100,111,101,115,10,32,32, + 32,32,110,111,116,32,99,111,110,102,111,114,109,32,116,111, + 32,80,69,80,32,51,49,52,55,47,52,56,56,32,102,111, + 114,109,97,116,44,32,86,97,108,117,101,69,114,114,111,114, + 32,119,105,108,108,32,98,101,32,114,97,105,115,101,100,46, + 32,73,102,10,32,32,32,32,115,121,115,46,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,46,99,97,99,104,101, + 95,116,97,103,32,105,115,32,78,111,110,101,32,116,104,101, + 110,32,78,111,116,73,109,112,108,101,109,101,110,116,101,100, + 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,46, + 10,10,32,32,32,32,78,114,87,0,0,0,70,84,122,31, + 32,110,111,116,32,98,111,116,116,111,109,45,108,101,118,101, + 108,32,100,105,114,101,99,116,111,114,121,32,105,110,32,114, + 86,0,0,0,62,2,0,0,0,114,45,0,0,0,114,72, + 0,0,0,122,29,101,120,112,101,99,116,101,100,32,111,110, + 108,121,32,50,32,111,114,32,51,32,100,111,116,115,32,105, + 110,32,114,72,0,0,0,114,45,0,0,0,233,254,255,255, + 255,122,53,111,112,116,105,109,105,122,97,116,105,111,110,32, + 112,111,114,116,105,111,110,32,111,102,32,102,105,108,101,110, + 97,109,101,32,100,111,101,115,32,110,111,116,32,115,116,97, + 114,116,32,119,105,116,104,32,122,19,111,112,116,105,109,105, + 122,97,116,105,111,110,32,108,101,118,101,108,32,122,29,32, + 105,115,32,110,111,116,32,97,110,32,97,108,112,104,97,110, + 117,109,101,114,105,99,32,118,97,108,117,101,114,0,0,0, + 0,41,22,114,16,0,0,0,114,93,0,0,0,114,94,0, + 0,0,114,95,0,0,0,114,19,0,0,0,114,92,0,0, + 0,114,61,0,0,0,114,102,0,0,0,114,47,0,0,0, + 114,48,0,0,0,114,27,0,0,0,114,51,0,0,0,114, + 4,0,0,0,114,104,0,0,0,114,99,0,0,0,218,5, + 99,111,117,110,116,114,57,0,0,0,114,100,0,0,0,114, + 98,0,0,0,218,9,112,97,114,116,105,116,105,111,110,114, + 54,0,0,0,218,15,83,79,85,82,67,69,95,83,85,70, + 70,73,88,69,83,41,10,114,58,0,0,0,114,106,0,0, + 0,90,16,112,121,99,97,99,104,101,95,102,105,108,101,110, + 97,109,101,90,23,102,111,117,110,100,95,105,110,95,112,121, + 99,97,99,104,101,95,112,114,101,102,105,120,90,13,115,116, + 114,105,112,112,101,100,95,112,97,116,104,90,7,112,121,99, + 97,99,104,101,90,9,100,111,116,95,99,111,117,110,116,114, + 85,0,0,0,90,9,111,112,116,95,108,101,118,101,108,90, + 13,98,97,115,101,95,102,105,108,101,110,97,109,101,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,17,115, + 111,117,114,99,101,95,102,114,111,109,95,99,97,99,104,101, + 158,1,0,0,115,62,0,0,0,12,9,8,1,10,1,12, + 1,4,1,10,1,12,1,14,1,16,1,4,1,4,1,12, + 1,8,1,8,1,2,1,8,255,10,2,8,1,14,1,8, + 1,16,1,10,1,4,1,2,1,8,255,16,2,8,1,16, + 1,14,2,18,1,255,128,114,114,0,0,0,99,1,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,9,0,0, + 0,67,0,0,0,115,122,0,0,0,116,0,124,0,131,1, + 100,1,107,2,114,8,100,2,83,0,124,0,160,1,100,3, + 161,1,92,3,125,1,125,2,125,3,124,1,114,28,124,3, + 160,2,161,0,100,4,100,5,133,2,25,0,100,6,107,3, + 114,30,124,0,83,0,122,6,116,3,124,0,131,1,125,4, + 87,0,110,15,4,0,116,4,116,5,102,2,121,60,1,0, + 1,0,1,0,124,0,100,2,100,5,133,2,25,0,125,4, + 89,0,116,6,124,4,131,1,114,58,124,4,83,0,124,0, + 83,0,119,0,41,7,122,188,67,111,110,118,101,114,116,32, + 97,32,98,121,116,101,99,111,100,101,32,102,105,108,101,32, + 112,97,116,104,32,116,111,32,97,32,115,111,117,114,99,101, + 32,112,97,116,104,32,40,105,102,32,112,111,115,115,105,98, + 108,101,41,46,10,10,32,32,32,32,84,104,105,115,32,102, + 117,110,99,116,105,111,110,32,101,120,105,115,116,115,32,112, + 117,114,101,108,121,32,102,111,114,32,98,97,99,107,119,97, + 114,100,115,45,99,111,109,112,97,116,105,98,105,108,105,116, + 121,32,102,111,114,10,32,32,32,32,80,121,73,109,112,111, + 114,116,95,69,120,101,99,67,111,100,101,77,111,100,117,108, + 101,87,105,116,104,70,105,108,101,110,97,109,101,115,40,41, + 32,105,110,32,116,104,101,32,67,32,65,80,73,46,10,10, + 32,32,32,32,114,0,0,0,0,78,114,86,0,0,0,233, + 253,255,255,255,233,255,255,255,255,90,2,112,121,41,7,114, + 4,0,0,0,114,55,0,0,0,218,5,108,111,119,101,114, + 114,114,0,0,0,114,95,0,0,0,114,99,0,0,0,114, + 68,0,0,0,41,5,218,13,98,121,116,101,99,111,100,101, + 95,112,97,116,104,114,107,0,0,0,114,59,0,0,0,90, + 9,101,120,116,101,110,115,105,111,110,218,11,115,111,117,114, + 99,101,95,112,97,116,104,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,15,95,103,101,116,95,115,111,117, + 114,99,101,102,105,108,101,198,1,0,0,115,24,0,0,0, + 12,7,4,1,16,1,24,1,4,1,2,1,12,1,16,1, + 14,1,16,1,2,254,255,128,114,120,0,0,0,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0, + 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,116, + 1,116,2,131,1,161,1,114,22,122,5,116,3,124,0,131, + 1,87,0,83,0,4,0,116,4,121,33,1,0,1,0,1, + 0,89,0,100,0,83,0,124,0,160,0,116,1,116,5,131, + 1,161,1,114,31,124,0,83,0,100,0,83,0,119,0,169, + 1,78,41,6,218,8,101,110,100,115,119,105,116,104,218,5, + 116,117,112,108,101,114,113,0,0,0,114,109,0,0,0,114, + 95,0,0,0,114,101,0,0,0,41,1,114,108,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 11,95,103,101,116,95,99,97,99,104,101,100,217,1,0,0, + 115,20,0,0,0,14,1,2,1,10,1,12,1,6,1,14, + 1,4,1,4,2,2,251,255,128,114,124,0,0,0,99,1, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8, + 0,0,0,67,0,0,0,115,48,0,0,0,122,7,116,0, + 124,0,131,1,106,1,125,1,87,0,110,9,4,0,116,2, + 121,23,1,0,1,0,1,0,100,1,125,1,89,0,124,1, + 100,2,79,0,125,1,124,1,83,0,119,0,41,4,122,51, + 67,97,108,99,117,108,97,116,101,32,116,104,101,32,109,111, + 100,101,32,112,101,114,109,105,115,115,105,111,110,115,32,102, + 111,114,32,97,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,46,114,75,0,0,0,233,128,0,0,0,78,41,3, + 114,63,0,0,0,114,65,0,0,0,114,64,0,0,0,41, + 2,114,58,0,0,0,114,66,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,10,95,99,97,108, + 99,95,109,111,100,101,229,1,0,0,115,16,0,0,0,2, + 2,14,1,12,1,6,1,8,3,4,1,2,251,255,128,114, + 126,0,0,0,99,1,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,4,0,0,0,3,0,0,0,115,52,0, + 0,0,100,6,135,0,102,1,100,2,100,3,132,9,125,1, + 116,0,100,1,117,1,114,15,116,0,106,1,125,2,110,4, + 100,4,100,5,132,0,125,2,124,2,124,1,136,0,131,2, + 1,0,124,1,83,0,41,7,122,252,68,101,99,111,114,97, + 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, + 97,116,32,116,104,101,32,109,111,100,117,108,101,32,98,101, + 105,110,103,32,114,101,113,117,101,115,116,101,100,32,109,97, + 116,99,104,101,115,32,116,104,101,32,111,110,101,32,116,104, + 101,10,32,32,32,32,108,111,97,100,101,114,32,99,97,110, + 32,104,97,110,100,108,101,46,10,10,32,32,32,32,84,104, + 101,32,102,105,114,115,116,32,97,114,103,117,109,101,110,116, + 32,40,115,101,108,102,41,32,109,117,115,116,32,100,101,102, + 105,110,101,32,95,110,97,109,101,32,119,104,105,99,104,32, + 116,104,101,32,115,101,99,111,110,100,32,97,114,103,117,109, + 101,110,116,32,105,115,10,32,32,32,32,99,111,109,112,97, + 114,101,100,32,97,103,97,105,110,115,116,46,32,73,102,32, + 116,104,101,32,99,111,109,112,97,114,105,115,111,110,32,102, + 97,105,108,115,32,116,104,101,110,32,73,109,112,111,114,116, + 69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,46, + 10,10,32,32,32,32,78,99,2,0,0,0,0,0,0,0, + 0,0,0,0,4,0,0,0,4,0,0,0,31,0,0,0, + 115,72,0,0,0,124,1,100,0,117,0,114,8,124,0,106, + 0,125,1,110,16,124,0,106,0,124,1,107,3,114,24,116, + 1,100,1,124,0,106,0,124,1,102,2,22,0,124,1,100, + 2,141,2,130,1,136,0,124,0,124,1,103,2,124,2,162, + 1,82,0,105,0,124,3,164,1,142,1,83,0,41,3,78, + 122,30,108,111,97,100,101,114,32,102,111,114,32,37,115,32, + 99,97,110,110,111,116,32,104,97,110,100,108,101,32,37,115, + 169,1,218,4,110,97,109,101,41,2,114,128,0,0,0,218, + 11,73,109,112,111,114,116,69,114,114,111,114,41,4,218,4, + 115,101,108,102,114,128,0,0,0,218,4,97,114,103,115,218, + 6,107,119,97,114,103,115,169,1,218,6,109,101,116,104,111, + 100,114,7,0,0,0,114,8,0,0,0,218,19,95,99,104, + 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, + 249,1,0,0,115,20,0,0,0,8,1,8,1,10,1,4, + 1,8,1,2,255,2,1,6,255,24,2,255,128,122,40,95, + 99,104,101,99,107,95,110,97,109,101,46,60,108,111,99,97, + 108,115,62,46,95,99,104,101,99,107,95,110,97,109,101,95, + 119,114,97,112,112,101,114,99,2,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,7,0,0,0,83,0,0,0, + 115,56,0,0,0,100,1,68,0,93,16,125,2,116,0,124, + 1,124,2,131,2,114,18,116,1,124,0,124,2,116,2,124, + 1,124,2,131,2,131,3,1,0,113,2,124,0,106,3,160, + 4,124,1,106,3,161,1,1,0,100,0,83,0,41,2,78, + 41,4,218,10,95,95,109,111,100,117,108,101,95,95,218,8, + 95,95,110,97,109,101,95,95,218,12,95,95,113,117,97,108, + 110,97,109,101,95,95,218,7,95,95,100,111,99,95,95,41, + 5,218,7,104,97,115,97,116,116,114,218,7,115,101,116,97, + 116,116,114,218,7,103,101,116,97,116,116,114,218,8,95,95, + 100,105,99,116,95,95,218,6,117,112,100,97,116,101,41,3, + 90,3,110,101,119,90,3,111,108,100,114,82,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,5, + 95,119,114,97,112,6,2,0,0,115,12,0,0,0,8,1, + 10,1,18,1,2,128,18,1,255,128,122,26,95,99,104,101, + 99,107,95,110,97,109,101,46,60,108,111,99,97,108,115,62, + 46,95,119,114,97,112,41,1,78,41,2,218,10,95,98,111, + 111,116,115,116,114,97,112,114,145,0,0,0,41,3,114,134, + 0,0,0,114,135,0,0,0,114,145,0,0,0,114,7,0, + 0,0,114,133,0,0,0,114,8,0,0,0,218,11,95,99, + 104,101,99,107,95,110,97,109,101,241,1,0,0,115,14,0, + 0,0,14,8,8,10,8,1,8,2,10,6,4,1,255,128, + 114,147,0,0,0,99,2,0,0,0,0,0,0,0,0,0, + 0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,60, + 0,0,0,124,0,160,0,124,1,161,1,92,2,125,2,125, + 3,124,2,100,1,117,0,114,28,116,1,124,3,131,1,114, + 28,100,2,125,4,116,2,160,3,124,4,160,4,124,3,100, + 3,25,0,161,1,116,5,161,2,1,0,124,2,83,0,41, + 4,122,155,84,114,121,32,116,111,32,102,105,110,100,32,97, + 32,108,111,97,100,101,114,32,102,111,114,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,98,121,32,100,101,108,101,103,97,116,105,110,103,32,116, + 111,10,32,32,32,32,115,101,108,102,46,102,105,110,100,95, + 108,111,97,100,101,114,40,41,46,10,10,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,32,105,110,32,102,97,118,111, + 114,32,111,102,32,102,105,110,100,101,114,46,102,105,110,100, + 95,115,112,101,99,40,41,46,10,10,32,32,32,32,78,122, + 44,78,111,116,32,105,109,112,111,114,116,105,110,103,32,100, + 105,114,101,99,116,111,114,121,32,123,125,58,32,109,105,115, + 115,105,110,103,32,95,95,105,110,105,116,95,95,114,0,0, + 0,0,41,6,218,11,102,105,110,100,95,108,111,97,100,101, + 114,114,4,0,0,0,114,88,0,0,0,114,89,0,0,0, + 114,77,0,0,0,218,13,73,109,112,111,114,116,87,97,114, + 110,105,110,103,41,5,114,130,0,0,0,218,8,102,117,108, + 108,110,97,109,101,218,6,108,111,97,100,101,114,218,8,112, + 111,114,116,105,111,110,115,218,3,109,115,103,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,17,95,102,105, + 110,100,95,109,111,100,117,108,101,95,115,104,105,109,16,2, + 0,0,115,12,0,0,0,14,10,16,1,4,1,22,1,4, + 1,255,128,114,154,0,0,0,99,3,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0, + 0,115,166,0,0,0,124,0,100,1,100,2,133,2,25,0, + 125,3,124,3,116,0,107,3,114,32,100,3,124,1,155,2, + 100,4,124,3,155,2,157,4,125,4,116,1,160,2,100,5, + 124,4,161,2,1,0,116,3,124,4,102,1,105,0,124,2, + 164,1,142,1,130,1,116,4,124,0,131,1,100,6,107,0, + 114,53,100,7,124,1,155,2,157,2,125,4,116,1,160,2, + 100,5,124,4,161,2,1,0,116,5,124,4,131,1,130,1, + 116,6,124,0,100,2,100,8,133,2,25,0,131,1,125,5, + 124,5,100,9,64,0,114,81,100,10,124,5,155,2,100,11, + 124,1,155,2,157,4,125,4,116,3,124,4,102,1,105,0, + 124,2,164,1,142,1,130,1,124,5,83,0,41,12,97,84, + 2,0,0,80,101,114,102,111,114,109,32,98,97,115,105,99, + 32,118,97,108,105,100,105,116,121,32,99,104,101,99,107,105, + 110,103,32,111,102,32,97,32,112,121,99,32,104,101,97,100, + 101,114,32,97,110,100,32,114,101,116,117,114,110,32,116,104, + 101,32,102,108,97,103,115,32,102,105,101,108,100,44,10,32, + 32,32,32,119,104,105,99,104,32,100,101,116,101,114,109,105, + 110,101,115,32,104,111,119,32,116,104,101,32,112,121,99,32, + 115,104,111,117,108,100,32,98,101,32,102,117,114,116,104,101, + 114,32,118,97,108,105,100,97,116,101,100,32,97,103,97,105, + 110,115,116,32,116,104,101,32,115,111,117,114,99,101,46,10, + 10,32,32,32,32,42,100,97,116,97,42,32,105,115,32,116, + 104,101,32,99,111,110,116,101,110,116,115,32,111,102,32,116, + 104,101,32,112,121,99,32,102,105,108,101,46,32,40,79,110, + 108,121,32,116,104,101,32,102,105,114,115,116,32,49,54,32, + 98,121,116,101,115,32,97,114,101,10,32,32,32,32,114,101, + 113,117,105,114,101,100,44,32,116,104,111,117,103,104,46,41, + 10,10,32,32,32,32,42,110,97,109,101,42,32,105,115,32, + 116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,32, + 109,111,100,117,108,101,32,98,101,105,110,103,32,105,109,112, + 111,114,116,101,100,46,32,73,116,32,105,115,32,117,115,101, + 100,32,102,111,114,32,108,111,103,103,105,110,103,46,10,10, + 32,32,32,32,42,101,120,99,95,100,101,116,97,105,108,115, + 42,32,105,115,32,97,32,100,105,99,116,105,111,110,97,114, + 121,32,112,97,115,115,101,100,32,116,111,32,73,109,112,111, + 114,116,69,114,114,111,114,32,105,102,32,105,116,32,114,97, + 105,115,101,100,32,102,111,114,10,32,32,32,32,105,109,112, + 114,111,118,101,100,32,100,101,98,117,103,103,105,110,103,46, + 10,10,32,32,32,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,32,119,104,101,110, + 32,116,104,101,32,109,97,103,105,99,32,110,117,109,98,101, + 114,32,105,115,32,105,110,99,111,114,114,101,99,116,32,111, + 114,32,119,104,101,110,32,116,104,101,32,102,108,97,103,115, + 10,32,32,32,32,102,105,101,108,100,32,105,115,32,105,110, + 118,97,108,105,100,46,32,69,79,70,69,114,114,111,114,32, 105,115,32,114,97,105,115,101,100,32,119,104,101,110,32,116, - 104,101,32,109,97,103,105,99,32,110,117,109,98,101,114,32, - 105,115,32,105,110,99,111,114,114,101,99,116,32,111,114,32, - 119,104,101,110,32,116,104,101,32,102,108,97,103,115,10,32, - 32,32,32,102,105,101,108,100,32,105,115,32,105,110,118,97, - 108,105,100,46,32,69,79,70,69,114,114,111,114,32,105,115, - 32,114,97,105,115,101,100,32,119,104,101,110,32,116,104,101, - 32,100,97,116,97,32,105,115,32,102,111,117,110,100,32,116, - 111,32,98,101,32,116,114,117,110,99,97,116,101,100,46,10, - 10,32,32,32,32,78,114,32,0,0,0,122,20,98,97,100, - 32,109,97,103,105,99,32,110,117,109,98,101,114,32,105,110, - 32,122,2,58,32,250,2,123,125,233,16,0,0,0,122,40, - 114,101,97,99,104,101,100,32,69,79,70,32,119,104,105,108, - 101,32,114,101,97,100,105,110,103,32,112,121,99,32,104,101, - 97,100,101,114,32,111,102,32,233,8,0,0,0,233,252,255, - 255,255,122,14,105,110,118,97,108,105,100,32,102,108,97,103, - 115,32,122,4,32,105,110,32,41,7,218,12,77,65,71,73, - 67,95,78,85,77,66,69,82,114,146,0,0,0,218,16,95, - 118,101,114,98,111,115,101,95,109,101,115,115,97,103,101,114, - 129,0,0,0,114,4,0,0,0,218,8,69,79,70,69,114, - 114,111,114,114,43,0,0,0,41,6,114,42,0,0,0,114, - 128,0,0,0,218,11,101,120,99,95,100,101,116,97,105,108, - 115,90,5,109,97,103,105,99,114,105,0,0,0,114,17,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,13,95,99,108,97,115,115,105,102,121,95,112,121,99, - 32,2,0,0,115,30,0,0,0,12,16,8,1,16,1,12, - 1,16,1,12,1,10,1,12,1,8,1,16,1,8,2,16, - 1,16,1,4,1,255,128,114,163,0,0,0,99,5,0,0, - 0,0,0,0,0,0,0,0,0,6,0,0,0,4,0,0, - 0,67,0,0,0,115,124,0,0,0,116,0,124,0,100,1, - 100,2,133,2,25,0,131,1,124,1,100,3,64,0,107,3, - 114,62,100,4,124,3,155,2,157,2,125,5,116,1,160,2, - 100,5,124,5,161,2,1,0,116,3,124,5,102,1,105,0, - 124,4,164,1,142,1,130,1,124,2,100,6,117,1,114,120, - 116,0,124,0,100,2,100,7,133,2,25,0,131,1,124,2, - 100,3,64,0,107,3,114,116,116,3,100,4,124,3,155,2, - 157,2,102,1,105,0,124,4,164,1,142,1,130,1,100,6, - 83,0,100,6,83,0,41,8,97,7,2,0,0,86,97,108, - 105,100,97,116,101,32,97,32,112,121,99,32,97,103,97,105, - 110,115,116,32,116,104,101,32,115,111,117,114,99,101,32,108, - 97,115,116,45,109,111,100,105,102,105,101,100,32,116,105,109, - 101,46,10,10,32,32,32,32,42,100,97,116,97,42,32,105, - 115,32,116,104,101,32,99,111,110,116,101,110,116,115,32,111, - 102,32,116,104,101,32,112,121,99,32,102,105,108,101,46,32, - 40,79,110,108,121,32,116,104,101,32,102,105,114,115,116,32, - 49,54,32,98,121,116,101,115,32,97,114,101,10,32,32,32, - 32,114,101,113,117,105,114,101,100,46,41,10,10,32,32,32, - 32,42,115,111,117,114,99,101,95,109,116,105,109,101,42,32, - 105,115,32,116,104,101,32,108,97,115,116,32,109,111,100,105, - 102,105,101,100,32,116,105,109,101,115,116,97,109,112,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, - 101,46,10,10,32,32,32,32,42,115,111,117,114,99,101,95, - 115,105,122,101,42,32,105,115,32,78,111,110,101,32,111,114, - 32,116,104,101,32,115,105,122,101,32,111,102,32,116,104,101, - 32,115,111,117,114,99,101,32,102,105,108,101,32,105,110,32, - 98,121,116,101,115,46,10,10,32,32,32,32,42,110,97,109, - 101,42,32,105,115,32,116,104,101,32,110,97,109,101,32,111, - 102,32,116,104,101,32,109,111,100,117,108,101,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,46,32,73,116,32, - 105,115,32,117,115,101,100,32,102,111,114,32,108,111,103,103, - 105,110,103,46,10,10,32,32,32,32,42,101,120,99,95,100, - 101,116,97,105,108,115,42,32,105,115,32,97,32,100,105,99, - 116,105,111,110,97,114,121,32,112,97,115,115,101,100,32,116, - 111,32,73,109,112,111,114,116,69,114,114,111,114,32,105,102, - 32,105,116,32,114,97,105,115,101,100,32,102,111,114,10,32, - 32,32,32,105,109,112,114,111,118,101,100,32,100,101,98,117, - 103,103,105,110,103,46,10,10,32,32,32,32,65,110,32,73, - 109,112,111,114,116,69,114,114,111,114,32,105,115,32,114,97, - 105,115,101,100,32,105,102,32,116,104,101,32,98,121,116,101, - 99,111,100,101,32,105,115,32,115,116,97,108,101,46,10,10, - 32,32,32,32,114,157,0,0,0,233,12,0,0,0,114,31, - 0,0,0,122,22,98,121,116,101,99,111,100,101,32,105,115, - 32,115,116,97,108,101,32,102,111,114,32,114,155,0,0,0, - 78,114,156,0,0,0,41,4,114,43,0,0,0,114,146,0, - 0,0,114,160,0,0,0,114,129,0,0,0,41,6,114,42, - 0,0,0,218,12,115,111,117,114,99,101,95,109,116,105,109, - 101,218,11,115,111,117,114,99,101,95,115,105,122,101,114,128, - 0,0,0,114,162,0,0,0,114,105,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,23,95,118, - 97,108,105,100,97,116,101,95,116,105,109,101,115,116,97,109, - 112,95,112,121,99,65,2,0,0,115,20,0,0,0,24,19, - 10,1,12,1,16,1,8,1,22,1,2,255,22,2,8,254, - 255,128,114,167,0,0,0,99,4,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,42,0,0,0,124,0,100,1,100,2,133,2,25,0,124, - 1,107,3,114,38,116,0,100,3,124,2,155,2,157,2,102, - 1,105,0,124,3,164,1,142,1,130,1,100,4,83,0,41, - 5,97,243,1,0,0,86,97,108,105,100,97,116,101,32,97, - 32,104,97,115,104,45,98,97,115,101,100,32,112,121,99,32, - 98,121,32,99,104,101,99,107,105,110,103,32,116,104,101,32, - 114,101,97,108,32,115,111,117,114,99,101,32,104,97,115,104, - 32,97,103,97,105,110,115,116,32,116,104,101,32,111,110,101, - 32,105,110,10,32,32,32,32,116,104,101,32,112,121,99,32, - 104,101,97,100,101,114,46,10,10,32,32,32,32,42,100,97, - 116,97,42,32,105,115,32,116,104,101,32,99,111,110,116,101, - 110,116,115,32,111,102,32,116,104,101,32,112,121,99,32,102, - 105,108,101,46,32,40,79,110,108,121,32,116,104,101,32,102, - 105,114,115,116,32,49,54,32,98,121,116,101,115,32,97,114, - 101,10,32,32,32,32,114,101,113,117,105,114,101,100,46,41, - 10,10,32,32,32,32,42,115,111,117,114,99,101,95,104,97, - 115,104,42,32,105,115,32,116,104,101,32,105,109,112,111,114, - 116,108,105,98,46,117,116,105,108,46,115,111,117,114,99,101, - 95,104,97,115,104,40,41,32,111,102,32,116,104,101,32,115, - 111,117,114,99,101,32,102,105,108,101,46,10,10,32,32,32, - 32,42,110,97,109,101,42,32,105,115,32,116,104,101,32,110, - 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, - 101,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100, - 46,32,73,116,32,105,115,32,117,115,101,100,32,102,111,114, - 32,108,111,103,103,105,110,103,46,10,10,32,32,32,32,42, - 101,120,99,95,100,101,116,97,105,108,115,42,32,105,115,32, - 97,32,100,105,99,116,105,111,110,97,114,121,32,112,97,115, - 115,101,100,32,116,111,32,73,109,112,111,114,116,69,114,114, - 111,114,32,105,102,32,105,116,32,114,97,105,115,101,100,32, - 102,111,114,10,32,32,32,32,105,109,112,114,111,118,101,100, - 32,100,101,98,117,103,103,105,110,103,46,10,10,32,32,32, - 32,65,110,32,73,109,112,111,114,116,69,114,114,111,114,32, - 105,115,32,114,97,105,115,101,100,32,105,102,32,116,104,101, - 32,98,121,116,101,99,111,100,101,32,105,115,32,115,116,97, - 108,101,46,10,10,32,32,32,32,114,157,0,0,0,114,156, - 0,0,0,122,46,104,97,115,104,32,105,110,32,98,121,116, - 101,99,111,100,101,32,100,111,101,115,110,39,116,32,109,97, - 116,99,104,32,104,97,115,104,32,111,102,32,115,111,117,114, - 99,101,32,78,41,1,114,129,0,0,0,41,4,114,42,0, - 0,0,218,11,115,111,117,114,99,101,95,104,97,115,104,114, - 128,0,0,0,114,162,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,18,95,118,97,108,105,100, - 97,116,101,95,104,97,115,104,95,112,121,99,93,2,0,0, - 115,16,0,0,0,16,17,2,1,8,1,4,255,2,2,6, - 254,4,255,255,128,114,169,0,0,0,99,4,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,67, - 0,0,0,115,76,0,0,0,116,0,160,1,124,0,161,1, - 125,4,116,2,124,4,116,3,131,2,114,56,116,4,160,5, - 100,1,124,2,161,2,1,0,124,3,100,2,117,1,114,52, - 116,6,160,7,124,4,124,3,161,2,1,0,124,4,83,0, - 116,8,100,3,160,9,124,2,161,1,124,1,124,2,100,4, - 141,3,130,1,41,5,122,35,67,111,109,112,105,108,101,32, - 98,121,116,101,99,111,100,101,32,97,115,32,102,111,117,110, - 100,32,105,110,32,97,32,112,121,99,46,122,21,99,111,100, - 101,32,111,98,106,101,99,116,32,102,114,111,109,32,123,33, - 114,125,78,122,23,78,111,110,45,99,111,100,101,32,111,98, - 106,101,99,116,32,105,110,32,123,33,114,125,169,2,114,128, - 0,0,0,114,58,0,0,0,41,10,218,7,109,97,114,115, - 104,97,108,90,5,108,111,97,100,115,218,10,105,115,105,110, - 115,116,97,110,99,101,218,10,95,99,111,100,101,95,116,121, - 112,101,114,146,0,0,0,114,160,0,0,0,218,4,95,105, - 109,112,90,16,95,102,105,120,95,99,111,95,102,105,108,101, - 110,97,109,101,114,129,0,0,0,114,77,0,0,0,41,5, - 114,42,0,0,0,114,128,0,0,0,114,118,0,0,0,114, - 119,0,0,0,218,4,99,111,100,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,17,95,99,111,109,112, - 105,108,101,95,98,121,116,101,99,111,100,101,117,2,0,0, - 115,20,0,0,0,10,2,10,1,12,1,8,1,12,1,4, - 1,10,2,4,1,6,255,255,128,114,176,0,0,0,99,3, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5, - 0,0,0,67,0,0,0,115,70,0,0,0,116,0,116,1, - 131,1,125,3,124,3,160,2,116,3,100,1,131,1,161,1, - 1,0,124,3,160,2,116,3,124,1,131,1,161,1,1,0, - 124,3,160,2,116,3,124,2,131,1,161,1,1,0,124,3, - 160,2,116,4,160,5,124,0,161,1,161,1,1,0,124,3, - 83,0,41,3,122,43,80,114,111,100,117,99,101,32,116,104, - 101,32,100,97,116,97,32,102,111,114,32,97,32,116,105,109, - 101,115,116,97,109,112,45,98,97,115,101,100,32,112,121,99, - 46,114,0,0,0,0,78,41,6,218,9,98,121,116,101,97, - 114,114,97,121,114,159,0,0,0,218,6,101,120,116,101,110, - 100,114,37,0,0,0,114,171,0,0,0,218,5,100,117,109, - 112,115,41,4,114,175,0,0,0,218,5,109,116,105,109,101, - 114,166,0,0,0,114,42,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,22,95,99,111,100,101, - 95,116,111,95,116,105,109,101,115,116,97,109,112,95,112,121, - 99,130,2,0,0,115,14,0,0,0,8,2,14,1,14,1, - 14,1,16,1,4,1,255,128,114,181,0,0,0,84,99,3, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5, - 0,0,0,67,0,0,0,115,80,0,0,0,116,0,116,1, - 131,1,125,3,100,1,124,2,100,1,62,0,66,0,125,4, - 124,3,160,2,116,3,124,4,131,1,161,1,1,0,116,4, - 124,1,131,1,100,2,107,2,115,50,74,0,130,1,124,3, - 160,2,124,1,161,1,1,0,124,3,160,2,116,5,160,6, - 124,0,161,1,161,1,1,0,124,3,83,0,41,4,122,38, - 80,114,111,100,117,99,101,32,116,104,101,32,100,97,116,97, - 32,102,111,114,32,97,32,104,97,115,104,45,98,97,115,101, - 100,32,112,121,99,46,114,3,0,0,0,114,157,0,0,0, - 78,41,7,114,177,0,0,0,114,159,0,0,0,114,178,0, - 0,0,114,37,0,0,0,114,4,0,0,0,114,171,0,0, - 0,114,179,0,0,0,41,5,114,175,0,0,0,114,168,0, - 0,0,90,7,99,104,101,99,107,101,100,114,42,0,0,0, - 114,17,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,17,95,99,111,100,101,95,116,111,95,104, - 97,115,104,95,112,121,99,140,2,0,0,115,16,0,0,0, - 8,2,12,1,14,1,16,1,10,1,16,1,4,1,255,128, - 114,182,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,62, - 0,0,0,100,1,100,2,108,0,125,1,116,1,160,2,124, - 0,161,1,106,3,125,2,124,1,160,4,124,2,161,1,125, - 3,116,1,160,5,100,2,100,3,161,2,125,4,124,4,160, - 6,124,0,160,6,124,3,100,1,25,0,161,1,161,1,83, - 0,41,4,122,121,68,101,99,111,100,101,32,98,121,116,101, - 115,32,114,101,112,114,101,115,101,110,116,105,110,103,32,115, - 111,117,114,99,101,32,99,111,100,101,32,97,110,100,32,114, - 101,116,117,114,110,32,116,104,101,32,115,116,114,105,110,103, - 46,10,10,32,32,32,32,85,110,105,118,101,114,115,97,108, - 32,110,101,119,108,105,110,101,32,115,117,112,112,111,114,116, - 32,105,115,32,117,115,101,100,32,105,110,32,116,104,101,32, - 100,101,99,111,100,105,110,103,46,10,32,32,32,32,114,0, - 0,0,0,78,84,41,7,218,8,116,111,107,101,110,105,122, - 101,114,79,0,0,0,90,7,66,121,116,101,115,73,79,90, - 8,114,101,97,100,108,105,110,101,90,15,100,101,116,101,99, - 116,95,101,110,99,111,100,105,110,103,90,25,73,110,99,114, - 101,109,101,110,116,97,108,78,101,119,108,105,110,101,68,101, - 99,111,100,101,114,218,6,100,101,99,111,100,101,41,5,218, - 12,115,111,117,114,99,101,95,98,121,116,101,115,114,183,0, - 0,0,90,21,115,111,117,114,99,101,95,98,121,116,101,115, - 95,114,101,97,100,108,105,110,101,218,8,101,110,99,111,100, - 105,110,103,90,15,110,101,119,108,105,110,101,95,100,101,99, - 111,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,114, - 99,101,151,2,0,0,115,12,0,0,0,8,5,12,1,10, - 1,12,1,20,1,255,128,114,187,0,0,0,169,2,114,151, - 0,0,0,218,26,115,117,98,109,111,100,117,108,101,95,115, - 101,97,114,99,104,95,108,111,99,97,116,105,111,110,115,99, - 2,0,0,0,0,0,0,0,2,0,0,0,9,0,0,0, - 8,0,0,0,67,0,0,0,115,16,1,0,0,124,1,100, - 1,117,0,114,58,100,2,125,1,116,0,124,2,100,3,131, - 2,114,56,122,14,124,2,160,1,124,0,161,1,125,1,87, - 0,110,30,4,0,116,2,144,1,121,14,1,0,1,0,1, - 0,89,0,110,12,110,10,116,3,160,4,124,1,161,1,125, + 104,101,32,100,97,116,97,32,105,115,32,102,111,117,110,100, + 32,116,111,32,98,101,32,116,114,117,110,99,97,116,101,100, + 46,10,10,32,32,32,32,78,114,32,0,0,0,122,20,98, + 97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,32, + 105,110,32,122,2,58,32,250,2,123,125,233,16,0,0,0, + 122,40,114,101,97,99,104,101,100,32,69,79,70,32,119,104, + 105,108,101,32,114,101,97,100,105,110,103,32,112,121,99,32, + 104,101,97,100,101,114,32,111,102,32,233,8,0,0,0,233, + 252,255,255,255,122,14,105,110,118,97,108,105,100,32,102,108, + 97,103,115,32,122,4,32,105,110,32,41,7,218,12,77,65, + 71,73,67,95,78,85,77,66,69,82,114,146,0,0,0,218, + 16,95,118,101,114,98,111,115,101,95,109,101,115,115,97,103, + 101,114,129,0,0,0,114,4,0,0,0,218,8,69,79,70, + 69,114,114,111,114,114,43,0,0,0,41,6,114,42,0,0, + 0,114,128,0,0,0,218,11,101,120,99,95,100,101,116,97, + 105,108,115,90,5,109,97,103,105,99,114,105,0,0,0,114, + 17,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,13,95,99,108,97,115,115,105,102,121,95,112, + 121,99,33,2,0,0,115,30,0,0,0,12,16,8,1,16, + 1,12,1,16,1,12,1,10,1,12,1,8,1,16,1,8, + 2,16,1,16,1,4,1,255,128,114,163,0,0,0,99,5, + 0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,4, + 0,0,0,67,0,0,0,115,124,0,0,0,116,0,124,0, + 100,1,100,2,133,2,25,0,131,1,124,1,100,3,64,0, + 107,3,114,31,100,4,124,3,155,2,157,2,125,5,116,1, + 160,2,100,5,124,5,161,2,1,0,116,3,124,5,102,1, + 105,0,124,4,164,1,142,1,130,1,124,2,100,6,117,1, + 114,60,116,0,124,0,100,2,100,7,133,2,25,0,131,1, + 124,2,100,3,64,0,107,3,114,58,116,3,100,4,124,3, + 155,2,157,2,102,1,105,0,124,4,164,1,142,1,130,1, + 100,6,83,0,100,6,83,0,41,8,97,7,2,0,0,86, + 97,108,105,100,97,116,101,32,97,32,112,121,99,32,97,103, + 97,105,110,115,116,32,116,104,101,32,115,111,117,114,99,101, + 32,108,97,115,116,45,109,111,100,105,102,105,101,100,32,116, + 105,109,101,46,10,10,32,32,32,32,42,100,97,116,97,42, + 32,105,115,32,116,104,101,32,99,111,110,116,101,110,116,115, + 32,111,102,32,116,104,101,32,112,121,99,32,102,105,108,101, + 46,32,40,79,110,108,121,32,116,104,101,32,102,105,114,115, + 116,32,49,54,32,98,121,116,101,115,32,97,114,101,10,32, + 32,32,32,114,101,113,117,105,114,101,100,46,41,10,10,32, + 32,32,32,42,115,111,117,114,99,101,95,109,116,105,109,101, + 42,32,105,115,32,116,104,101,32,108,97,115,116,32,109,111, + 100,105,102,105,101,100,32,116,105,109,101,115,116,97,109,112, + 32,111,102,32,116,104,101,32,115,111,117,114,99,101,32,102, + 105,108,101,46,10,10,32,32,32,32,42,115,111,117,114,99, + 101,95,115,105,122,101,42,32,105,115,32,78,111,110,101,32, + 111,114,32,116,104,101,32,115,105,122,101,32,111,102,32,116, + 104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,105, + 110,32,98,121,116,101,115,46,10,10,32,32,32,32,42,110, + 97,109,101,42,32,105,115,32,116,104,101,32,110,97,109,101, + 32,111,102,32,116,104,101,32,109,111,100,117,108,101,32,98, + 101,105,110,103,32,105,109,112,111,114,116,101,100,46,32,73, + 116,32,105,115,32,117,115,101,100,32,102,111,114,32,108,111, + 103,103,105,110,103,46,10,10,32,32,32,32,42,101,120,99, + 95,100,101,116,97,105,108,115,42,32,105,115,32,97,32,100, + 105,99,116,105,111,110,97,114,121,32,112,97,115,115,101,100, + 32,116,111,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,102,32,105,116,32,114,97,105,115,101,100,32,102,111,114, + 10,32,32,32,32,105,109,112,114,111,118,101,100,32,100,101, + 98,117,103,103,105,110,103,46,10,10,32,32,32,32,65,110, + 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,32, + 114,97,105,115,101,100,32,105,102,32,116,104,101,32,98,121, + 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,46, + 10,10,32,32,32,32,114,157,0,0,0,233,12,0,0,0, + 114,31,0,0,0,122,22,98,121,116,101,99,111,100,101,32, + 105,115,32,115,116,97,108,101,32,102,111,114,32,114,155,0, + 0,0,78,114,156,0,0,0,41,4,114,43,0,0,0,114, + 146,0,0,0,114,160,0,0,0,114,129,0,0,0,41,6, + 114,42,0,0,0,218,12,115,111,117,114,99,101,95,109,116, + 105,109,101,218,11,115,111,117,114,99,101,95,115,105,122,101, + 114,128,0,0,0,114,162,0,0,0,114,105,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,23, + 95,118,97,108,105,100,97,116,101,95,116,105,109,101,115,116, + 97,109,112,95,112,121,99,66,2,0,0,115,20,0,0,0, + 24,19,10,1,12,1,16,1,8,1,22,1,2,255,22,2, + 8,254,255,128,114,167,0,0,0,99,4,0,0,0,0,0, + 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, + 0,0,115,42,0,0,0,124,0,100,1,100,2,133,2,25, + 0,124,1,107,3,114,19,116,0,100,3,124,2,155,2,157, + 2,102,1,105,0,124,3,164,1,142,1,130,1,100,4,83, + 0,41,5,97,243,1,0,0,86,97,108,105,100,97,116,101, + 32,97,32,104,97,115,104,45,98,97,115,101,100,32,112,121, + 99,32,98,121,32,99,104,101,99,107,105,110,103,32,116,104, + 101,32,114,101,97,108,32,115,111,117,114,99,101,32,104,97, + 115,104,32,97,103,97,105,110,115,116,32,116,104,101,32,111, + 110,101,32,105,110,10,32,32,32,32,116,104,101,32,112,121, + 99,32,104,101,97,100,101,114,46,10,10,32,32,32,32,42, + 100,97,116,97,42,32,105,115,32,116,104,101,32,99,111,110, + 116,101,110,116,115,32,111,102,32,116,104,101,32,112,121,99, + 32,102,105,108,101,46,32,40,79,110,108,121,32,116,104,101, + 32,102,105,114,115,116,32,49,54,32,98,121,116,101,115,32, + 97,114,101,10,32,32,32,32,114,101,113,117,105,114,101,100, + 46,41,10,10,32,32,32,32,42,115,111,117,114,99,101,95, + 104,97,115,104,42,32,105,115,32,116,104,101,32,105,109,112, + 111,114,116,108,105,98,46,117,116,105,108,46,115,111,117,114, + 99,101,95,104,97,115,104,40,41,32,111,102,32,116,104,101, + 32,115,111,117,114,99,101,32,102,105,108,101,46,10,10,32, + 32,32,32,42,110,97,109,101,42,32,105,115,32,116,104,101, + 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100, + 117,108,101,32,98,101,105,110,103,32,105,109,112,111,114,116, + 101,100,46,32,73,116,32,105,115,32,117,115,101,100,32,102, + 111,114,32,108,111,103,103,105,110,103,46,10,10,32,32,32, + 32,42,101,120,99,95,100,101,116,97,105,108,115,42,32,105, + 115,32,97,32,100,105,99,116,105,111,110,97,114,121,32,112, + 97,115,115,101,100,32,116,111,32,73,109,112,111,114,116,69, + 114,114,111,114,32,105,102,32,105,116,32,114,97,105,115,101, + 100,32,102,111,114,10,32,32,32,32,105,109,112,114,111,118, + 101,100,32,100,101,98,117,103,103,105,110,103,46,10,10,32, + 32,32,32,65,110,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,32,105,102,32,116, + 104,101,32,98,121,116,101,99,111,100,101,32,105,115,32,115, + 116,97,108,101,46,10,10,32,32,32,32,114,157,0,0,0, + 114,156,0,0,0,122,46,104,97,115,104,32,105,110,32,98, + 121,116,101,99,111,100,101,32,100,111,101,115,110,39,116,32, + 109,97,116,99,104,32,104,97,115,104,32,111,102,32,115,111, + 117,114,99,101,32,78,41,1,114,129,0,0,0,41,4,114, + 42,0,0,0,218,11,115,111,117,114,99,101,95,104,97,115, + 104,114,128,0,0,0,114,162,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,218,18,95,118,97,108, + 105,100,97,116,101,95,104,97,115,104,95,112,121,99,94,2, + 0,0,115,16,0,0,0,16,17,2,1,8,1,4,255,2, + 2,6,254,4,255,255,128,114,169,0,0,0,99,4,0,0, + 0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,0, + 0,67,0,0,0,115,76,0,0,0,116,0,160,1,124,0, + 161,1,125,4,116,2,124,4,116,3,131,2,114,28,116,4, + 160,5,100,1,124,2,161,2,1,0,124,3,100,2,117,1, + 114,26,116,6,160,7,124,4,124,3,161,2,1,0,124,4, + 83,0,116,8,100,3,160,9,124,2,161,1,124,1,124,2, + 100,4,141,3,130,1,41,5,122,35,67,111,109,112,105,108, + 101,32,98,121,116,101,99,111,100,101,32,97,115,32,102,111, + 117,110,100,32,105,110,32,97,32,112,121,99,46,122,21,99, + 111,100,101,32,111,98,106,101,99,116,32,102,114,111,109,32, + 123,33,114,125,78,122,23,78,111,110,45,99,111,100,101,32, + 111,98,106,101,99,116,32,105,110,32,123,33,114,125,169,2, + 114,128,0,0,0,114,58,0,0,0,41,10,218,7,109,97, + 114,115,104,97,108,90,5,108,111,97,100,115,218,10,105,115, + 105,110,115,116,97,110,99,101,218,10,95,99,111,100,101,95, + 116,121,112,101,114,146,0,0,0,114,160,0,0,0,218,4, + 95,105,109,112,90,16,95,102,105,120,95,99,111,95,102,105, + 108,101,110,97,109,101,114,129,0,0,0,114,77,0,0,0, + 41,5,114,42,0,0,0,114,128,0,0,0,114,118,0,0, + 0,114,119,0,0,0,218,4,99,111,100,101,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,17,95,99,111, + 109,112,105,108,101,95,98,121,116,101,99,111,100,101,118,2, + 0,0,115,20,0,0,0,10,2,10,1,12,1,8,1,12, + 1,4,1,10,2,4,1,6,255,255,128,114,176,0,0,0, + 99,3,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,5,0,0,0,67,0,0,0,115,70,0,0,0,116,0, + 116,1,131,1,125,3,124,3,160,2,116,3,100,1,131,1, + 161,1,1,0,124,3,160,2,116,3,124,1,131,1,161,1, + 1,0,124,3,160,2,116,3,124,2,131,1,161,1,1,0, + 124,3,160,2,116,4,160,5,124,0,161,1,161,1,1,0, + 124,3,83,0,41,3,122,43,80,114,111,100,117,99,101,32, + 116,104,101,32,100,97,116,97,32,102,111,114,32,97,32,116, + 105,109,101,115,116,97,109,112,45,98,97,115,101,100,32,112, + 121,99,46,114,0,0,0,0,78,41,6,218,9,98,121,116, + 101,97,114,114,97,121,114,159,0,0,0,218,6,101,120,116, + 101,110,100,114,37,0,0,0,114,171,0,0,0,218,5,100, + 117,109,112,115,41,4,114,175,0,0,0,218,5,109,116,105, + 109,101,114,166,0,0,0,114,42,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,218,22,95,99,111, + 100,101,95,116,111,95,116,105,109,101,115,116,97,109,112,95, + 112,121,99,131,2,0,0,115,14,0,0,0,8,2,14,1, + 14,1,14,1,16,1,4,1,255,128,114,181,0,0,0,84, + 99,3,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,5,0,0,0,67,0,0,0,115,80,0,0,0,116,0, + 116,1,131,1,125,3,100,1,124,2,100,1,62,0,66,0, + 125,4,124,3,160,2,116,3,124,4,131,1,161,1,1,0, + 116,4,124,1,131,1,100,2,107,2,115,25,74,0,130,1, + 124,3,160,2,124,1,161,1,1,0,124,3,160,2,116,5, + 160,6,124,0,161,1,161,1,1,0,124,3,83,0,41,4, + 122,38,80,114,111,100,117,99,101,32,116,104,101,32,100,97, + 116,97,32,102,111,114,32,97,32,104,97,115,104,45,98,97, + 115,101,100,32,112,121,99,46,114,3,0,0,0,114,157,0, + 0,0,78,41,7,114,177,0,0,0,114,159,0,0,0,114, + 178,0,0,0,114,37,0,0,0,114,4,0,0,0,114,171, + 0,0,0,114,179,0,0,0,41,5,114,175,0,0,0,114, + 168,0,0,0,90,7,99,104,101,99,107,101,100,114,42,0, + 0,0,114,17,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,17,95,99,111,100,101,95,116,111, + 95,104,97,115,104,95,112,121,99,141,2,0,0,115,16,0, + 0,0,8,2,12,1,14,1,16,1,10,1,16,1,4,1, + 255,128,114,182,0,0,0,99,1,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,6,0,0,0,67,0,0,0, + 115,62,0,0,0,100,1,100,2,108,0,125,1,116,1,160, + 2,124,0,161,1,106,3,125,2,124,1,160,4,124,2,161, + 1,125,3,116,1,160,5,100,2,100,3,161,2,125,4,124, + 4,160,6,124,0,160,6,124,3,100,1,25,0,161,1,161, + 1,83,0,41,4,122,121,68,101,99,111,100,101,32,98,121, + 116,101,115,32,114,101,112,114,101,115,101,110,116,105,110,103, + 32,115,111,117,114,99,101,32,99,111,100,101,32,97,110,100, + 32,114,101,116,117,114,110,32,116,104,101,32,115,116,114,105, + 110,103,46,10,10,32,32,32,32,85,110,105,118,101,114,115, + 97,108,32,110,101,119,108,105,110,101,32,115,117,112,112,111, + 114,116,32,105,115,32,117,115,101,100,32,105,110,32,116,104, + 101,32,100,101,99,111,100,105,110,103,46,10,32,32,32,32, + 114,0,0,0,0,78,84,41,7,218,8,116,111,107,101,110, + 105,122,101,114,79,0,0,0,90,7,66,121,116,101,115,73, + 79,90,8,114,101,97,100,108,105,110,101,90,15,100,101,116, + 101,99,116,95,101,110,99,111,100,105,110,103,90,25,73,110, + 99,114,101,109,101,110,116,97,108,78,101,119,108,105,110,101, + 68,101,99,111,100,101,114,218,6,100,101,99,111,100,101,41, + 5,218,12,115,111,117,114,99,101,95,98,121,116,101,115,114, + 183,0,0,0,90,21,115,111,117,114,99,101,95,98,121,116, + 101,115,95,114,101,97,100,108,105,110,101,218,8,101,110,99, + 111,100,105,110,103,90,15,110,101,119,108,105,110,101,95,100, + 101,99,111,100,101,114,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,13,100,101,99,111,100,101,95,115,111, + 117,114,99,101,152,2,0,0,115,12,0,0,0,8,5,12, + 1,10,1,12,1,20,1,255,128,114,187,0,0,0,169,2, + 114,151,0,0,0,218,26,115,117,98,109,111,100,117,108,101, + 95,115,101,97,114,99,104,95,108,111,99,97,116,105,111,110, + 115,99,2,0,0,0,0,0,0,0,2,0,0,0,9,0, + 0,0,8,0,0,0,67,0,0,0,115,8,1,0,0,124, + 1,100,1,117,0,114,28,100,2,125,1,116,0,124,2,100, + 3,131,2,114,27,122,7,124,2,160,1,124,0,161,1,125, + 1,87,0,110,14,4,0,116,2,121,131,1,0,1,0,1, + 0,89,0,110,6,110,5,116,3,160,4,124,1,161,1,125, 1,116,5,106,6,124,0,124,2,124,1,100,4,141,3,125, - 4,100,5,124,4,95,7,124,2,100,1,117,0,114,152,116, - 8,131,0,68,0,93,42,92,2,125,5,125,6,124,1,160, - 9,116,10,124,6,131,1,161,1,114,146,124,5,124,0,124, - 1,131,2,125,2,124,2,124,4,95,11,1,0,113,152,113, - 104,100,1,83,0,124,3,116,12,117,0,114,216,116,0,124, - 2,100,6,131,2,114,214,122,14,124,2,160,13,124,0,161, - 1,125,7,87,0,110,18,4,0,116,2,144,1,121,12,1, - 0,1,0,1,0,89,0,110,18,124,7,114,214,103,0,124, - 4,95,14,110,6,124,3,124,4,95,14,124,4,106,14,103, - 0,107,2,144,1,114,8,124,1,144,1,114,8,116,15,124, - 1,131,1,100,7,25,0,125,8,124,4,106,14,160,16,124, - 8,161,1,1,0,124,4,83,0,119,0,119,0,41,8,97, - 61,1,0,0,82,101,116,117,114,110,32,97,32,109,111,100, - 117,108,101,32,115,112,101,99,32,98,97,115,101,100,32,111, - 110,32,97,32,102,105,108,101,32,108,111,99,97,116,105,111, - 110,46,10,10,32,32,32,32,84,111,32,105,110,100,105,99, - 97,116,101,32,116,104,97,116,32,116,104,101,32,109,111,100, - 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, - 44,32,115,101,116,10,32,32,32,32,115,117,98,109,111,100, - 117,108,101,95,115,101,97,114,99,104,95,108,111,99,97,116, - 105,111,110,115,32,116,111,32,97,32,108,105,115,116,32,111, - 102,32,100,105,114,101,99,116,111,114,121,32,112,97,116,104, - 115,46,32,32,65,110,10,32,32,32,32,101,109,112,116,121, - 32,108,105,115,116,32,105,115,32,115,117,102,102,105,99,105, - 101,110,116,44,32,116,104,111,117,103,104,32,105,116,115,32, - 110,111,116,32,111,116,104,101,114,119,105,115,101,32,117,115, - 101,102,117,108,32,116,111,32,116,104,101,10,32,32,32,32, - 105,109,112,111,114,116,32,115,121,115,116,101,109,46,10,10, - 32,32,32,32,84,104,101,32,108,111,97,100,101,114,32,109, - 117,115,116,32,116,97,107,101,32,97,32,115,112,101,99,32, - 97,115,32,105,116,115,32,111,110,108,121,32,95,95,105,110, - 105,116,95,95,40,41,32,97,114,103,46,10,10,32,32,32, - 32,78,122,9,60,117,110,107,110,111,119,110,62,218,12,103, - 101,116,95,102,105,108,101,110,97,109,101,169,1,218,6,111, - 114,105,103,105,110,84,218,10,105,115,95,112,97,99,107,97, - 103,101,114,0,0,0,0,41,17,114,140,0,0,0,114,190, - 0,0,0,114,129,0,0,0,114,19,0,0,0,114,92,0, - 0,0,114,146,0,0,0,218,10,77,111,100,117,108,101,83, - 112,101,99,90,13,95,115,101,116,95,102,105,108,101,97,116, - 116,114,218,27,95,103,101,116,95,115,117,112,112,111,114,116, - 101,100,95,102,105,108,101,95,108,111,97,100,101,114,115,114, - 122,0,0,0,114,123,0,0,0,114,151,0,0,0,218,9, - 95,80,79,80,85,76,65,84,69,114,193,0,0,0,114,189, - 0,0,0,114,61,0,0,0,218,6,97,112,112,101,110,100, - 41,9,114,128,0,0,0,90,8,108,111,99,97,116,105,111, - 110,114,151,0,0,0,114,189,0,0,0,218,4,115,112,101, - 99,218,12,108,111,97,100,101,114,95,99,108,97,115,115,218, - 8,115,117,102,102,105,120,101,115,114,193,0,0,0,90,7, - 100,105,114,110,97,109,101,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,23,115,112,101,99,95,102,114,111, - 109,95,102,105,108,101,95,108,111,99,97,116,105,111,110,168, - 2,0,0,115,74,0,0,0,8,12,4,4,10,1,2,2, - 14,1,14,1,4,1,2,251,10,7,16,8,6,1,8,3, - 14,1,14,1,10,1,6,1,4,1,2,253,4,5,8,3, - 10,2,2,1,14,1,14,1,4,1,4,2,6,1,2,128, - 6,2,12,1,6,1,12,1,12,1,4,2,2,244,2,226, - 255,128,114,201,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, - 115,88,0,0,0,101,0,90,1,100,0,90,2,100,1,90, - 3,100,2,90,4,100,3,90,5,101,6,111,30,100,4,101, - 7,118,0,90,8,101,9,100,5,100,6,132,0,131,1,90, - 10,101,11,100,7,100,8,132,0,131,1,90,12,101,11,100, - 14,100,10,100,11,132,1,131,1,90,13,101,11,100,15,100, - 12,100,13,132,1,131,1,90,14,100,9,83,0,41,16,218, - 21,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, - 70,105,110,100,101,114,122,62,77,101,116,97,32,112,97,116, - 104,32,102,105,110,100,101,114,32,102,111,114,32,109,111,100, - 117,108,101,115,32,100,101,99,108,97,114,101,100,32,105,110, - 32,116,104,101,32,87,105,110,100,111,119,115,32,114,101,103, - 105,115,116,114,121,46,122,59,83,111,102,116,119,97,114,101, - 92,80,121,116,104,111,110,92,80,121,116,104,111,110,67,111, - 114,101,92,123,115,121,115,95,118,101,114,115,105,111,110,125, - 92,77,111,100,117,108,101,115,92,123,102,117,108,108,110,97, - 109,101,125,122,65,83,111,102,116,119,97,114,101,92,80,121, - 116,104,111,110,92,80,121,116,104,111,110,67,111,114,101,92, - 123,115,121,115,95,118,101,114,115,105,111,110,125,92,77,111, - 100,117,108,101,115,92,123,102,117,108,108,110,97,109,101,125, - 92,68,101,98,117,103,122,6,95,100,46,112,121,100,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8, - 0,0,0,67,0,0,0,115,50,0,0,0,122,16,116,0, - 160,1,116,0,106,2,124,0,161,2,87,0,83,0,4,0, - 116,3,121,48,1,0,1,0,1,0,116,0,160,1,116,0, - 106,4,124,0,161,2,6,0,89,0,83,0,119,0,114,121, - 0,0,0,41,5,218,6,119,105,110,114,101,103,90,7,79, - 112,101,110,75,101,121,90,17,72,75,69,89,95,67,85,82, - 82,69,78,84,95,85,83,69,82,114,64,0,0,0,90,18, - 72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73, - 78,69,114,20,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,14,95,111,112,101,110,95,114,101, - 103,105,115,116,114,121,248,2,0,0,115,12,0,0,0,2, - 2,16,1,12,1,18,1,2,255,255,128,122,36,87,105,110, - 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, - 101,114,46,95,111,112,101,110,95,114,101,103,105,115,116,114, - 121,99,2,0,0,0,0,0,0,0,0,0,0,0,6,0, - 0,0,8,0,0,0,67,0,0,0,115,130,0,0,0,124, - 0,106,0,114,14,124,0,106,1,125,2,110,6,124,0,106, - 2,125,2,124,2,106,3,124,1,100,1,116,4,106,5,100, - 0,100,2,133,2,25,0,22,0,100,3,141,2,125,3,122, - 60,124,0,160,6,124,3,161,1,143,28,125,4,116,7,160, - 8,124,4,100,4,161,2,125,5,87,0,100,0,4,0,4, - 0,131,3,1,0,110,16,49,0,115,94,119,1,1,0,1, - 0,1,0,89,0,1,0,87,0,124,5,83,0,4,0,116, - 9,121,128,1,0,1,0,1,0,89,0,100,0,83,0,119, - 0,41,5,78,122,5,37,100,46,37,100,114,45,0,0,0, - 41,2,114,150,0,0,0,90,11,115,121,115,95,118,101,114, - 115,105,111,110,114,10,0,0,0,41,10,218,11,68,69,66, - 85,71,95,66,85,73,76,68,218,18,82,69,71,73,83,84, - 82,89,95,75,69,89,95,68,69,66,85,71,218,12,82,69, - 71,73,83,84,82,89,95,75,69,89,114,77,0,0,0,114, - 16,0,0,0,218,12,118,101,114,115,105,111,110,95,105,110, - 102,111,114,204,0,0,0,114,203,0,0,0,90,10,81,117, - 101,114,121,86,97,108,117,101,114,64,0,0,0,41,6,218, - 3,99,108,115,114,150,0,0,0,90,12,114,101,103,105,115, - 116,114,121,95,107,101,121,114,21,0,0,0,90,4,104,107, - 101,121,218,8,102,105,108,101,112,97,116,104,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,16,95,115,101, - 97,114,99,104,95,114,101,103,105,115,116,114,121,255,2,0, - 0,115,30,0,0,0,6,2,8,1,6,2,6,1,16,1, - 6,255,2,2,12,1,26,1,18,128,4,3,12,254,6,1, - 2,255,255,128,122,38,87,105,110,100,111,119,115,82,101,103, - 105,115,116,114,121,70,105,110,100,101,114,46,95,115,101,97, - 114,99,104,95,114,101,103,105,115,116,114,121,78,99,4,0, - 0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0, - 0,0,67,0,0,0,115,120,0,0,0,124,0,160,0,124, - 1,161,1,125,4,124,4,100,0,117,0,114,22,100,0,83, - 0,122,12,116,1,124,4,131,1,1,0,87,0,110,18,4, - 0,116,2,121,118,1,0,1,0,1,0,89,0,100,0,83, - 0,116,3,131,0,68,0,93,52,92,2,125,5,125,6,124, - 4,160,4,116,5,124,6,131,1,161,1,114,112,116,6,106, - 7,124,1,124,5,124,1,124,4,131,2,124,4,100,1,141, - 3,125,7,124,7,2,0,1,0,83,0,113,60,100,0,83, - 0,119,0,41,2,78,114,191,0,0,0,41,8,114,211,0, - 0,0,114,63,0,0,0,114,64,0,0,0,114,195,0,0, - 0,114,122,0,0,0,114,123,0,0,0,114,146,0,0,0, - 218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, - 101,114,41,8,114,209,0,0,0,114,150,0,0,0,114,58, - 0,0,0,218,6,116,97,114,103,101,116,114,210,0,0,0, - 114,151,0,0,0,114,200,0,0,0,114,198,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,14,3,0,0,115,36,0, - 0,0,10,2,8,1,4,1,2,1,12,1,12,1,6,1, - 14,1,14,1,6,1,8,1,2,1,6,254,8,3,2,252, - 4,255,2,254,255,128,122,31,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,3,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, - 115,30,0,0,0,124,0,160,0,124,1,124,2,161,2,125, - 3,124,3,100,1,117,1,114,26,124,3,106,1,83,0,100, - 1,83,0,41,2,122,108,70,105,110,100,32,109,111,100,117, - 108,101,32,110,97,109,101,100,32,105,110,32,116,104,101,32, - 114,101,103,105,115,116,114,121,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, - 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, - 32,32,32,78,169,2,114,214,0,0,0,114,151,0,0,0, - 169,4,114,209,0,0,0,114,150,0,0,0,114,58,0,0, - 0,114,198,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,11,102,105,110,100,95,109,111,100,117, - 108,101,30,3,0,0,115,10,0,0,0,12,7,8,1,6, - 1,4,2,255,128,122,33,87,105,110,100,111,119,115,82,101, - 103,105,115,116,114,121,70,105,110,100,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,41,2,78,78,41,1,78,41, - 15,114,137,0,0,0,114,136,0,0,0,114,138,0,0,0, - 114,139,0,0,0,114,207,0,0,0,114,206,0,0,0,218, - 11,95,77,83,95,87,73,78,68,79,87,83,218,18,69,88, - 84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,83, - 114,205,0,0,0,218,12,115,116,97,116,105,99,109,101,116, - 104,111,100,114,204,0,0,0,218,11,99,108,97,115,115,109, - 101,116,104,111,100,114,211,0,0,0,114,214,0,0,0,114, - 217,0,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,202,0,0,0,236,2,0, - 0,115,32,0,0,0,8,0,4,2,2,3,2,255,2,4, - 2,255,12,3,2,2,10,1,2,6,10,1,2,14,12,1, - 2,15,16,1,255,128,114,202,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,48,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, - 5,132,0,90,5,100,6,100,7,132,0,90,6,100,8,100, - 9,132,0,90,7,100,10,83,0,41,11,218,13,95,76,111, - 97,100,101,114,66,97,115,105,99,115,122,83,66,97,115,101, - 32,99,108,97,115,115,32,111,102,32,99,111,109,109,111,110, - 32,99,111,100,101,32,110,101,101,100,101,100,32,98,121,32, - 98,111,116,104,32,83,111,117,114,99,101,76,111,97,100,101, - 114,32,97,110,100,10,32,32,32,32,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,46,99, - 2,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,124, - 0,160,1,124,1,161,1,131,1,100,1,25,0,125,2,124, - 2,160,2,100,2,100,1,161,2,100,3,25,0,125,3,124, - 1,160,3,100,2,161,1,100,4,25,0,125,4,124,3,100, - 5,107,2,111,62,124,4,100,5,107,3,83,0,41,7,122, - 141,67,111,110,99,114,101,116,101,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,111,102,32,73,110,115,112, - 101,99,116,76,111,97,100,101,114,46,105,115,95,112,97,99, - 107,97,103,101,32,98,121,32,99,104,101,99,107,105,110,103, - 32,105,102,10,32,32,32,32,32,32,32,32,116,104,101,32, - 112,97,116,104,32,114,101,116,117,114,110,101,100,32,98,121, - 32,103,101,116,95,102,105,108,101,110,97,109,101,32,104,97, - 115,32,97,32,102,105,108,101,110,97,109,101,32,111,102,32, - 39,95,95,105,110,105,116,95,95,46,112,121,39,46,114,3, - 0,0,0,114,86,0,0,0,114,0,0,0,0,114,45,0, - 0,0,218,8,95,95,105,110,105,116,95,95,78,41,4,114, - 61,0,0,0,114,190,0,0,0,114,57,0,0,0,114,55, - 0,0,0,41,5,114,130,0,0,0,114,150,0,0,0,114, - 108,0,0,0,90,13,102,105,108,101,110,97,109,101,95,98, - 97,115,101,90,9,116,97,105,108,95,110,97,109,101,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,193,0, - 0,0,49,3,0,0,115,10,0,0,0,18,3,16,1,14, - 1,16,1,255,128,122,24,95,76,111,97,100,101,114,66,97, - 115,105,99,115,46,105,115,95,112,97,99,107,97,103,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,114,24,0,0,0,169,2,122, - 42,85,115,101,32,100,101,102,97,117,108,116,32,115,101,109, - 97,110,116,105,99,115,32,102,111,114,32,109,111,100,117,108, - 101,32,99,114,101,97,116,105,111,110,46,78,114,7,0,0, - 0,169,2,114,130,0,0,0,114,198,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,13,99,114, - 101,97,116,101,95,109,111,100,117,108,101,57,3,0,0,243, - 4,0,0,0,4,0,255,128,122,27,95,76,111,97,100,101, - 114,66,97,115,105,99,115,46,99,114,101,97,116,101,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,5,0,0,0,67,0,0,0,115,56, - 0,0,0,124,0,160,0,124,1,106,1,161,1,125,2,124, - 2,100,1,117,0,114,36,116,2,100,2,160,3,124,1,106, - 1,161,1,131,1,130,1,116,4,160,5,116,6,124,2,124, - 1,106,7,161,3,1,0,100,1,83,0,41,3,122,19,69, - 120,101,99,117,116,101,32,116,104,101,32,109,111,100,117,108, - 101,46,78,122,52,99,97,110,110,111,116,32,108,111,97,100, - 32,109,111,100,117,108,101,32,123,33,114,125,32,119,104,101, - 110,32,103,101,116,95,99,111,100,101,40,41,32,114,101,116, - 117,114,110,115,32,78,111,110,101,41,8,218,8,103,101,116, - 95,99,111,100,101,114,137,0,0,0,114,129,0,0,0,114, - 77,0,0,0,114,146,0,0,0,218,25,95,99,97,108,108, - 95,119,105,116,104,95,102,114,97,109,101,115,95,114,101,109, - 111,118,101,100,218,4,101,120,101,99,114,143,0,0,0,41, - 3,114,130,0,0,0,218,6,109,111,100,117,108,101,114,175, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,11,101,120,101,99,95,109,111,100,117,108,101,60, - 3,0,0,115,14,0,0,0,12,2,8,1,4,1,8,1, - 4,255,20,2,255,128,122,25,95,76,111,97,100,101,114,66, - 97,115,105,99,115,46,101,120,101,99,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,12,0,0,0,116, - 0,160,1,124,0,124,1,161,2,83,0,41,2,122,26,84, - 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,46,78,41,2,114,146,0,0, - 0,218,17,95,108,111,97,100,95,109,111,100,117,108,101,95, - 115,104,105,109,169,2,114,130,0,0,0,114,150,0,0,0, + 4,100,5,124,4,95,7,124,2,100,1,117,0,114,75,116, + 8,131,0,68,0,93,21,92,2,125,5,125,6,124,1,160, + 9,116,10,124,6,131,1,161,1,114,72,124,5,124,0,124, + 1,131,2,125,2,124,2,124,4,95,11,1,0,113,75,113, + 51,100,1,83,0,124,3,116,12,117,0,114,106,116,0,124, + 2,100,6,131,2,114,105,122,7,124,2,160,13,124,0,161, + 1,125,7,87,0,110,8,4,0,116,2,121,130,1,0,1, + 0,1,0,89,0,110,9,124,7,114,105,103,0,124,4,95, + 14,110,3,124,3,124,4,95,14,124,4,106,14,103,0,107, + 2,114,128,124,1,114,128,116,15,124,1,131,1,100,7,25, + 0,125,8,124,4,106,14,160,16,124,8,161,1,1,0,124, + 4,83,0,119,0,119,0,41,8,97,61,1,0,0,82,101, + 116,117,114,110,32,97,32,109,111,100,117,108,101,32,115,112, + 101,99,32,98,97,115,101,100,32,111,110,32,97,32,102,105, + 108,101,32,108,111,99,97,116,105,111,110,46,10,10,32,32, + 32,32,84,111,32,105,110,100,105,99,97,116,101,32,116,104, + 97,116,32,116,104,101,32,109,111,100,117,108,101,32,105,115, + 32,97,32,112,97,99,107,97,103,101,44,32,115,101,116,10, + 32,32,32,32,115,117,98,109,111,100,117,108,101,95,115,101, + 97,114,99,104,95,108,111,99,97,116,105,111,110,115,32,116, + 111,32,97,32,108,105,115,116,32,111,102,32,100,105,114,101, + 99,116,111,114,121,32,112,97,116,104,115,46,32,32,65,110, + 10,32,32,32,32,101,109,112,116,121,32,108,105,115,116,32, + 105,115,32,115,117,102,102,105,99,105,101,110,116,44,32,116, + 104,111,117,103,104,32,105,116,115,32,110,111,116,32,111,116, + 104,101,114,119,105,115,101,32,117,115,101,102,117,108,32,116, + 111,32,116,104,101,10,32,32,32,32,105,109,112,111,114,116, + 32,115,121,115,116,101,109,46,10,10,32,32,32,32,84,104, + 101,32,108,111,97,100,101,114,32,109,117,115,116,32,116,97, + 107,101,32,97,32,115,112,101,99,32,97,115,32,105,116,115, + 32,111,110,108,121,32,95,95,105,110,105,116,95,95,40,41, + 32,97,114,103,46,10,10,32,32,32,32,78,122,9,60,117, + 110,107,110,111,119,110,62,218,12,103,101,116,95,102,105,108, + 101,110,97,109,101,169,1,218,6,111,114,105,103,105,110,84, + 218,10,105,115,95,112,97,99,107,97,103,101,114,0,0,0, + 0,41,17,114,140,0,0,0,114,190,0,0,0,114,129,0, + 0,0,114,19,0,0,0,114,92,0,0,0,114,146,0,0, + 0,218,10,77,111,100,117,108,101,83,112,101,99,90,13,95, + 115,101,116,95,102,105,108,101,97,116,116,114,218,27,95,103, + 101,116,95,115,117,112,112,111,114,116,101,100,95,102,105,108, + 101,95,108,111,97,100,101,114,115,114,122,0,0,0,114,123, + 0,0,0,114,151,0,0,0,218,9,95,80,79,80,85,76, + 65,84,69,114,193,0,0,0,114,189,0,0,0,114,61,0, + 0,0,218,6,97,112,112,101,110,100,41,9,114,128,0,0, + 0,90,8,108,111,99,97,116,105,111,110,114,151,0,0,0, + 114,189,0,0,0,218,4,115,112,101,99,218,12,108,111,97, + 100,101,114,95,99,108,97,115,115,218,8,115,117,102,102,105, + 120,101,115,114,193,0,0,0,90,7,100,105,114,110,97,109, + 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,23,115,112,101,99,95,102,114,111,109,95,102,105,108,101, + 95,108,111,99,97,116,105,111,110,169,2,0,0,115,74,0, + 0,0,8,12,4,4,10,1,2,2,14,1,12,1,4,1, + 2,251,10,7,16,8,6,1,8,3,14,1,14,1,10,1, + 6,1,4,1,2,253,4,5,8,3,10,2,2,1,14,1, + 12,1,4,1,4,2,6,1,2,128,6,2,10,1,4,1, + 12,1,12,1,4,2,2,244,2,226,255,128,114,201,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,64,0,0,0,115,88,0,0,0,101, + 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,100, + 3,90,5,101,6,111,15,100,4,101,7,118,0,90,8,101, + 9,100,5,100,6,132,0,131,1,90,10,101,11,100,7,100, + 8,132,0,131,1,90,12,101,11,100,14,100,10,100,11,132, + 1,131,1,90,13,101,11,100,15,100,12,100,13,132,1,131, + 1,90,14,100,9,83,0,41,16,218,21,87,105,110,100,111, + 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, + 122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,100, + 101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,100, + 101,99,108,97,114,101,100,32,105,110,32,116,104,101,32,87, + 105,110,100,111,119,115,32,114,101,103,105,115,116,114,121,46, + 122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,111, + 110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,121, + 115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,108, + 101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,83, + 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, + 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, + 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, + 123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,103, + 122,6,95,100,46,112,121,100,99,1,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, + 0,115,50,0,0,0,122,8,116,0,160,1,116,0,106,2, + 124,0,161,2,87,0,83,0,4,0,116,3,121,24,1,0, + 1,0,1,0,116,0,160,1,116,0,106,4,124,0,161,2, + 6,0,89,0,83,0,119,0,114,121,0,0,0,41,5,218, + 6,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, + 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, + 83,69,82,114,64,0,0,0,90,18,72,75,69,89,95,76, + 79,67,65,76,95,77,65,67,72,73,78,69,114,20,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, + 249,2,0,0,115,12,0,0,0,2,2,16,1,12,1,18, + 1,2,255,255,128,122,36,87,105,110,100,111,119,115,82,101, + 103,105,115,116,114,121,70,105,110,100,101,114,46,95,111,112, + 101,110,95,114,101,103,105,115,116,114,121,99,2,0,0,0, + 0,0,0,0,0,0,0,0,6,0,0,0,8,0,0,0, + 67,0,0,0,115,130,0,0,0,124,0,106,0,114,7,124, + 0,106,1,125,2,110,3,124,0,106,2,125,2,124,2,106, + 3,124,1,100,1,116,4,106,5,100,0,100,2,133,2,25, + 0,22,0,100,3,141,2,125,3,122,30,124,0,160,6,124, + 3,161,1,143,14,125,4,116,7,160,8,124,4,100,4,161, + 2,125,5,87,0,100,0,4,0,4,0,131,3,1,0,110, + 8,49,0,115,47,119,1,1,0,1,0,1,0,89,0,1, + 0,87,0,124,5,83,0,4,0,116,9,121,64,1,0,1, + 0,1,0,89,0,100,0,83,0,119,0,41,5,78,122,5, + 37,100,46,37,100,114,45,0,0,0,41,2,114,150,0,0, + 0,90,11,115,121,115,95,118,101,114,115,105,111,110,114,10, + 0,0,0,41,10,218,11,68,69,66,85,71,95,66,85,73, + 76,68,218,18,82,69,71,73,83,84,82,89,95,75,69,89, + 95,68,69,66,85,71,218,12,82,69,71,73,83,84,82,89, + 95,75,69,89,114,77,0,0,0,114,16,0,0,0,218,12, + 118,101,114,115,105,111,110,95,105,110,102,111,114,204,0,0, + 0,114,203,0,0,0,90,10,81,117,101,114,121,86,97,108, + 117,101,114,64,0,0,0,41,6,218,3,99,108,115,114,150, + 0,0,0,90,12,114,101,103,105,115,116,114,121,95,107,101, + 121,114,21,0,0,0,90,4,104,107,101,121,218,8,102,105, + 108,101,112,97,116,104,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,16,95,115,101,97,114,99,104,95,114, + 101,103,105,115,116,114,121,0,3,0,0,115,30,0,0,0, + 6,2,8,1,6,2,6,1,16,1,6,255,2,2,12,1, + 26,1,18,128,4,3,12,254,6,1,2,255,255,128,122,38, + 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, + 105,110,100,101,114,46,95,115,101,97,114,99,104,95,114,101, + 103,105,115,116,114,121,78,99,4,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,8,0,0,0,67,0,0,0, + 115,120,0,0,0,124,0,160,0,124,1,161,1,125,4,124, + 4,100,0,117,0,114,11,100,0,83,0,122,6,116,1,124, + 4,131,1,1,0,87,0,110,9,4,0,116,2,121,59,1, + 0,1,0,1,0,89,0,100,0,83,0,116,3,131,0,68, + 0,93,26,92,2,125,5,125,6,124,4,160,4,116,5,124, + 6,131,1,161,1,114,56,116,6,106,7,124,1,124,5,124, + 1,124,4,131,2,124,4,100,1,141,3,125,7,124,7,2, + 0,1,0,83,0,113,30,100,0,83,0,119,0,41,2,78, + 114,191,0,0,0,41,8,114,211,0,0,0,114,63,0,0, + 0,114,64,0,0,0,114,195,0,0,0,114,122,0,0,0, + 114,123,0,0,0,114,146,0,0,0,218,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,41,8,114,209, + 0,0,0,114,150,0,0,0,114,58,0,0,0,218,6,116, + 97,114,103,101,116,114,210,0,0,0,114,151,0,0,0,114, + 200,0,0,0,114,198,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,9,102,105,110,100,95,115, + 112,101,99,15,3,0,0,115,36,0,0,0,10,2,8,1, + 4,1,2,1,12,1,12,1,6,1,14,1,14,1,6,1, + 8,1,2,1,6,254,8,3,2,252,4,255,2,254,255,128, + 122,31,87,105,110,100,111,119,115,82,101,103,105,115,116,114, + 121,70,105,110,100,101,114,46,102,105,110,100,95,115,112,101, + 99,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,30,0,0,0,124, + 0,160,0,124,1,124,2,161,2,125,3,124,3,100,1,117, + 1,114,13,124,3,106,1,83,0,100,1,83,0,41,2,122, + 108,70,105,110,100,32,109,111,100,117,108,101,32,110,97,109, + 101,100,32,105,110,32,116,104,101,32,114,101,103,105,115,116, + 114,121,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,85,115,101,32,101,120,101, + 99,95,109,111,100,117,108,101,40,41,32,105,110,115,116,101, + 97,100,46,10,10,32,32,32,32,32,32,32,32,78,169,2, + 114,214,0,0,0,114,151,0,0,0,169,4,114,209,0,0, + 0,114,150,0,0,0,114,58,0,0,0,114,198,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,108,111,97,100,95,109,111,100,117,108,101,68,3,0,0, - 115,4,0,0,0,12,3,255,128,122,25,95,76,111,97,100, - 101,114,66,97,115,105,99,115,46,108,111,97,100,95,109,111, - 100,117,108,101,78,41,8,114,137,0,0,0,114,136,0,0, - 0,114,138,0,0,0,114,139,0,0,0,114,193,0,0,0, - 114,226,0,0,0,114,232,0,0,0,114,235,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,222,0,0,0,44,3,0,0,115,14,0,0, - 0,8,0,4,2,8,3,8,8,8,3,12,8,255,128,114, - 222,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,3,0,0,0,64,0,0,0,115,74,0, - 0,0,101,0,90,1,100,0,90,2,100,1,100,2,132,0, - 90,3,100,3,100,4,132,0,90,4,100,5,100,6,132,0, - 90,5,100,7,100,8,132,0,90,6,100,9,100,10,132,0, - 90,7,100,11,100,12,156,1,100,13,100,14,132,2,90,8, - 100,15,100,16,132,0,90,9,100,17,83,0,41,18,218,12, - 83,111,117,114,99,101,76,111,97,100,101,114,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, - 0,67,0,0,0,115,4,0,0,0,116,0,130,1,41,2, - 122,165,79,112,116,105,111,110,97,108,32,109,101,116,104,111, - 100,32,116,104,97,116,32,114,101,116,117,114,110,115,32,116, - 104,101,32,109,111,100,105,102,105,99,97,116,105,111,110,32, - 116,105,109,101,32,40,97,110,32,105,110,116,41,32,102,111, - 114,32,116,104,101,10,32,32,32,32,32,32,32,32,115,112, - 101,99,105,102,105,101,100,32,112,97,116,104,32,40,97,32, - 115,116,114,41,46,10,10,32,32,32,32,32,32,32,32,82, - 97,105,115,101,115,32,79,83,69,114,114,111,114,32,119,104, - 101,110,32,116,104,101,32,112,97,116,104,32,99,97,110,110, - 111,116,32,98,101,32,104,97,110,100,108,101,100,46,10,32, - 32,32,32,32,32,32,32,78,41,1,114,64,0,0,0,169, - 2,114,130,0,0,0,114,58,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,10,112,97,116,104, - 95,109,116,105,109,101,76,3,0,0,115,4,0,0,0,4, - 6,255,128,122,23,83,111,117,114,99,101,76,111,97,100,101, - 114,46,112,97,116,104,95,109,116,105,109,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,67,0,0,0,115,14,0,0,0,100,1,124,0,160,0, - 124,1,161,1,105,1,83,0,41,3,97,158,1,0,0,79, - 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,114, - 101,116,117,114,110,105,110,103,32,97,32,109,101,116,97,100, - 97,116,97,32,100,105,99,116,32,102,111,114,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,10,32,32,32,32,32, - 32,32,32,112,97,116,104,32,40,97,32,115,116,114,41,46, - 10,10,32,32,32,32,32,32,32,32,80,111,115,115,105,98, - 108,101,32,107,101,121,115,58,10,32,32,32,32,32,32,32, - 32,45,32,39,109,116,105,109,101,39,32,40,109,97,110,100, - 97,116,111,114,121,41,32,105,115,32,116,104,101,32,110,117, - 109,101,114,105,99,32,116,105,109,101,115,116,97,109,112,32, - 111,102,32,108,97,115,116,32,115,111,117,114,99,101,10,32, - 32,32,32,32,32,32,32,32,32,99,111,100,101,32,109,111, - 100,105,102,105,99,97,116,105,111,110,59,10,32,32,32,32, - 32,32,32,32,45,32,39,115,105,122,101,39,32,40,111,112, - 116,105,111,110,97,108,41,32,105,115,32,116,104,101,32,115, - 105,122,101,32,105,110,32,98,121,116,101,115,32,111,102,32, - 116,104,101,32,115,111,117,114,99,101,32,99,111,100,101,46, - 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, - 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, - 111,100,32,97,108,108,111,119,115,32,116,104,101,32,108,111, - 97,100,101,114,32,116,111,32,114,101,97,100,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,32, - 32,32,32,32,32,82,97,105,115,101,115,32,79,83,69,114, - 114,111,114,32,119,104,101,110,32,116,104,101,32,112,97,116, - 104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100, - 108,101,100,46,10,32,32,32,32,32,32,32,32,114,180,0, - 0,0,78,41,1,114,238,0,0,0,114,237,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,10, - 112,97,116,104,95,115,116,97,116,115,84,3,0,0,115,4, - 0,0,0,14,12,255,128,122,23,83,111,117,114,99,101,76, - 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, - 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,4,0,0,0,67,0,0,0,115,12,0,0,0,124,0, - 160,0,124,2,124,3,161,2,83,0,41,2,122,228,79,112, - 116,105,111,110,97,108,32,109,101,116,104,111,100,32,119,104, - 105,99,104,32,119,114,105,116,101,115,32,100,97,116,97,32, - 40,98,121,116,101,115,41,32,116,111,32,97,32,102,105,108, - 101,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, - 10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,101, - 110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,111, - 100,32,97,108,108,111,119,115,32,102,111,114,32,116,104,101, - 32,119,114,105,116,105,110,103,32,111,102,32,98,121,116,101, - 99,111,100,101,32,102,105,108,101,115,46,10,10,32,32,32, - 32,32,32,32,32,84,104,101,32,115,111,117,114,99,101,32, - 112,97,116,104,32,105,115,32,110,101,101,100,101,100,32,105, - 110,32,111,114,100,101,114,32,116,111,32,99,111,114,114,101, - 99,116,108,121,32,116,114,97,110,115,102,101,114,32,112,101, - 114,109,105,115,115,105,111,110,115,10,32,32,32,32,32,32, - 32,32,78,41,1,218,8,115,101,116,95,100,97,116,97,41, - 4,114,130,0,0,0,114,119,0,0,0,90,10,99,97,99, - 104,101,95,112,97,116,104,114,42,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,98,3,0,0, - 115,4,0,0,0,12,8,255,128,122,28,83,111,117,114,99, - 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98, - 121,116,101,99,111,100,101,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,1,0,0,0,67,0,0,0, - 114,24,0,0,0,41,2,122,150,79,112,116,105,111,110,97, - 108,32,109,101,116,104,111,100,32,119,104,105,99,104,32,119, - 114,105,116,101,115,32,100,97,116,97,32,40,98,121,116,101, - 115,41,32,116,111,32,97,32,102,105,108,101,32,112,97,116, + 11,102,105,110,100,95,109,111,100,117,108,101,31,3,0,0, + 115,10,0,0,0,12,7,8,1,6,1,4,2,255,128,122, + 33,87,105,110,100,111,119,115,82,101,103,105,115,116,114,121, + 70,105,110,100,101,114,46,102,105,110,100,95,109,111,100,117, + 108,101,41,2,78,78,41,1,78,41,15,114,137,0,0,0, + 114,136,0,0,0,114,138,0,0,0,114,139,0,0,0,114, + 207,0,0,0,114,206,0,0,0,218,11,95,77,83,95,87, + 73,78,68,79,87,83,218,18,69,88,84,69,78,83,73,79, + 78,95,83,85,70,70,73,88,69,83,114,205,0,0,0,218, + 12,115,116,97,116,105,99,109,101,116,104,111,100,114,204,0, + 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114, + 211,0,0,0,114,214,0,0,0,114,217,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,202,0,0,0,237,2,0,0,115,32,0,0,0, + 8,0,4,2,2,3,2,255,2,4,2,255,12,3,2,2, + 10,1,2,6,10,1,2,14,12,1,2,15,16,1,255,128, + 114,202,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,48, + 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100, + 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,100, + 6,100,7,132,0,90,6,100,8,100,9,132,0,90,7,100, + 10,83,0,41,11,218,13,95,76,111,97,100,101,114,66,97, + 115,105,99,115,122,83,66,97,115,101,32,99,108,97,115,115, + 32,111,102,32,99,111,109,109,111,110,32,99,111,100,101,32, + 110,101,101,100,101,100,32,98,121,32,98,111,116,104,32,83, + 111,117,114,99,101,76,111,97,100,101,114,32,97,110,100,10, + 32,32,32,32,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,46,99,2,0,0,0,0,0, + 0,0,0,0,0,0,5,0,0,0,4,0,0,0,67,0, + 0,0,115,64,0,0,0,116,0,124,0,160,1,124,1,161, + 1,131,1,100,1,25,0,125,2,124,2,160,2,100,2,100, + 1,161,2,100,3,25,0,125,3,124,1,160,3,100,2,161, + 1,100,4,25,0,125,4,124,3,100,5,107,2,111,31,124, + 4,100,5,107,3,83,0,41,7,122,141,67,111,110,99,114, + 101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,32,111,102,32,73,110,115,112,101,99,116,76,111,97, + 100,101,114,46,105,115,95,112,97,99,107,97,103,101,32,98, + 121,32,99,104,101,99,107,105,110,103,32,105,102,10,32,32, + 32,32,32,32,32,32,116,104,101,32,112,97,116,104,32,114, + 101,116,117,114,110,101,100,32,98,121,32,103,101,116,95,102, + 105,108,101,110,97,109,101,32,104,97,115,32,97,32,102,105, + 108,101,110,97,109,101,32,111,102,32,39,95,95,105,110,105, + 116,95,95,46,112,121,39,46,114,3,0,0,0,114,86,0, + 0,0,114,0,0,0,0,114,45,0,0,0,218,8,95,95, + 105,110,105,116,95,95,78,41,4,114,61,0,0,0,114,190, + 0,0,0,114,57,0,0,0,114,55,0,0,0,41,5,114, + 130,0,0,0,114,150,0,0,0,114,108,0,0,0,90,13, + 102,105,108,101,110,97,109,101,95,98,97,115,101,90,9,116, + 97,105,108,95,110,97,109,101,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,193,0,0,0,50,3,0,0, + 115,10,0,0,0,18,3,16,1,14,1,16,1,255,128,122, + 24,95,76,111,97,100,101,114,66,97,115,105,99,115,46,105, + 115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, + 0,0,114,24,0,0,0,169,2,122,42,85,115,101,32,100, + 101,102,97,117,108,116,32,115,101,109,97,110,116,105,99,115, + 32,102,111,114,32,109,111,100,117,108,101,32,99,114,101,97, + 116,105,111,110,46,78,114,7,0,0,0,169,2,114,130,0, + 0,0,114,198,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,13,99,114,101,97,116,101,95,109, + 111,100,117,108,101,58,3,0,0,243,4,0,0,0,4,0, + 255,128,122,27,95,76,111,97,100,101,114,66,97,115,105,99, + 115,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99, + 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, + 5,0,0,0,67,0,0,0,115,56,0,0,0,124,0,160, + 0,124,1,106,1,161,1,125,2,124,2,100,1,117,0,114, + 18,116,2,100,2,160,3,124,1,106,1,161,1,131,1,130, + 1,116,4,160,5,116,6,124,2,124,1,106,7,161,3,1, + 0,100,1,83,0,41,3,122,19,69,120,101,99,117,116,101, + 32,116,104,101,32,109,111,100,117,108,101,46,78,122,52,99, + 97,110,110,111,116,32,108,111,97,100,32,109,111,100,117,108, + 101,32,123,33,114,125,32,119,104,101,110,32,103,101,116,95, + 99,111,100,101,40,41,32,114,101,116,117,114,110,115,32,78, + 111,110,101,41,8,218,8,103,101,116,95,99,111,100,101,114, + 137,0,0,0,114,129,0,0,0,114,77,0,0,0,114,146, + 0,0,0,218,25,95,99,97,108,108,95,119,105,116,104,95, + 102,114,97,109,101,115,95,114,101,109,111,118,101,100,218,4, + 101,120,101,99,114,143,0,0,0,41,3,114,130,0,0,0, + 218,6,109,111,100,117,108,101,114,175,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,11,101,120, + 101,99,95,109,111,100,117,108,101,61,3,0,0,115,14,0, + 0,0,12,2,8,1,4,1,8,1,4,255,20,2,255,128, + 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, + 101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,12,0,0,0,116,0,160,1,124,0,124, + 1,161,2,83,0,41,2,122,26,84,104,105,115,32,109,101, + 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,46,78,41,2,114,146,0,0,0,218,17,95,108,111, + 97,100,95,109,111,100,117,108,101,95,115,104,105,109,169,2, + 114,130,0,0,0,114,150,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,108,111,97,100,95, + 109,111,100,117,108,101,69,3,0,0,115,4,0,0,0,12, + 3,255,128,122,25,95,76,111,97,100,101,114,66,97,115,105, + 99,115,46,108,111,97,100,95,109,111,100,117,108,101,78,41, + 8,114,137,0,0,0,114,136,0,0,0,114,138,0,0,0, + 114,139,0,0,0,114,193,0,0,0,114,226,0,0,0,114, + 232,0,0,0,114,235,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,222,0, + 0,0,45,3,0,0,115,14,0,0,0,8,0,4,2,8, + 3,8,8,8,3,12,8,255,128,114,222,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,64,0,0,0,115,74,0,0,0,101,0,90,1, + 100,0,90,2,100,1,100,2,132,0,90,3,100,3,100,4, + 132,0,90,4,100,5,100,6,132,0,90,5,100,7,100,8, + 132,0,90,6,100,9,100,10,132,0,90,7,100,11,100,12, + 156,1,100,13,100,14,132,2,90,8,100,15,100,16,132,0, + 90,9,100,17,83,0,41,18,218,12,83,111,117,114,99,101, + 76,111,97,100,101,114,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115, + 4,0,0,0,116,0,130,1,41,2,122,165,79,112,116,105, + 111,110,97,108,32,109,101,116,104,111,100,32,116,104,97,116, + 32,114,101,116,117,114,110,115,32,116,104,101,32,109,111,100, + 105,102,105,99,97,116,105,111,110,32,116,105,109,101,32,40, + 97,110,32,105,110,116,41,32,102,111,114,32,116,104,101,10, + 32,32,32,32,32,32,32,32,115,112,101,99,105,102,105,101, + 100,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, + 10,32,32,32,32,32,32,32,32,82,97,105,115,101,115,32, + 79,83,69,114,114,111,114,32,119,104,101,110,32,116,104,101, + 32,112,97,116,104,32,99,97,110,110,111,116,32,98,101,32, + 104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32, + 32,78,41,1,114,64,0,0,0,169,2,114,130,0,0,0, + 114,58,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, + 77,3,0,0,115,4,0,0,0,4,6,255,128,122,23,83, + 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, + 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, + 14,0,0,0,100,1,124,0,160,0,124,1,161,1,105,1, + 83,0,41,3,97,158,1,0,0,79,112,116,105,111,110,97, + 108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,105, + 110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,105, + 99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,10,32,32,32,32,32,32,32,32,112,97,116, 104,32,40,97,32,115,116,114,41,46,10,10,32,32,32,32, + 32,32,32,32,80,111,115,115,105,98,108,101,32,107,101,121, + 115,58,10,32,32,32,32,32,32,32,32,45,32,39,109,116, + 105,109,101,39,32,40,109,97,110,100,97,116,111,114,121,41, + 32,105,115,32,116,104,101,32,110,117,109,101,114,105,99,32, + 116,105,109,101,115,116,97,109,112,32,111,102,32,108,97,115, + 116,32,115,111,117,114,99,101,10,32,32,32,32,32,32,32, + 32,32,32,99,111,100,101,32,109,111,100,105,102,105,99,97, + 116,105,111,110,59,10,32,32,32,32,32,32,32,32,45,32, + 39,115,105,122,101,39,32,40,111,112,116,105,111,110,97,108, + 41,32,105,115,32,116,104,101,32,115,105,122,101,32,105,110, + 32,98,121,116,101,115,32,111,102,32,116,104,101,32,115,111, + 117,114,99,101,32,99,111,100,101,46,10,10,32,32,32,32, 32,32,32,32,73,109,112,108,101,109,101,110,116,105,110,103, 32,116,104,105,115,32,109,101,116,104,111,100,32,97,108,108, - 111,119,115,32,102,111,114,32,116,104,101,32,119,114,105,116, - 105,110,103,32,111,102,32,98,121,116,101,99,111,100,101,32, - 102,105,108,101,115,46,10,32,32,32,32,32,32,32,32,78, - 114,7,0,0,0,41,3,114,130,0,0,0,114,58,0,0, - 0,114,42,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,240,0,0,0,108,3,0,0,114,227, - 0,0,0,122,21,83,111,117,114,99,101,76,111,97,100,101, - 114,46,115,101,116,95,100,97,116,97,99,2,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,10,0,0,0,67, - 0,0,0,115,70,0,0,0,124,0,160,0,124,1,161,1, - 125,2,122,20,124,0,160,1,124,2,161,1,125,3,87,0, - 116,4,124,3,131,1,83,0,4,0,116,2,121,68,1,0, - 125,4,1,0,122,14,116,3,100,1,124,1,100,2,141,2, - 124,4,130,2,100,3,125,4,126,4,119,1,119,0,41,4, - 122,52,67,111,110,99,114,101,116,101,32,105,109,112,108,101, - 109,101,110,116,97,116,105,111,110,32,111,102,32,73,110,115, - 112,101,99,116,76,111,97,100,101,114,46,103,101,116,95,115, - 111,117,114,99,101,46,122,39,115,111,117,114,99,101,32,110, - 111,116,32,97,118,97,105,108,97,98,108,101,32,116,104,114, - 111,117,103,104,32,103,101,116,95,100,97,116,97,40,41,114, - 127,0,0,0,78,41,5,114,190,0,0,0,218,8,103,101, - 116,95,100,97,116,97,114,64,0,0,0,114,129,0,0,0, - 114,187,0,0,0,41,5,114,130,0,0,0,114,150,0,0, - 0,114,58,0,0,0,114,185,0,0,0,218,3,101,120,99, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 10,103,101,116,95,115,111,117,114,99,101,115,3,0,0,115, - 26,0,0,0,10,2,2,1,12,1,8,4,14,253,4,1, - 2,1,4,255,2,1,2,255,8,128,2,255,255,128,122,23, - 83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116, - 95,115,111,117,114,99,101,114,116,0,0,0,41,1,218,9, - 95,111,112,116,105,109,105,122,101,99,3,0,0,0,0,0, - 0,0,1,0,0,0,4,0,0,0,8,0,0,0,67,0, - 0,0,115,22,0,0,0,116,0,106,1,116,2,124,1,124, - 2,100,1,100,2,124,3,100,3,141,6,83,0,41,5,122, - 130,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, - 32,111,98,106,101,99,116,32,99,111,109,112,105,108,101,100, - 32,102,114,111,109,32,115,111,117,114,99,101,46,10,10,32, - 32,32,32,32,32,32,32,84,104,101,32,39,100,97,116,97, - 39,32,97,114,103,117,109,101,110,116,32,99,97,110,32,98, - 101,32,97,110,121,32,111,98,106,101,99,116,32,116,121,112, - 101,32,116,104,97,116,32,99,111,109,112,105,108,101,40,41, - 32,115,117,112,112,111,114,116,115,46,10,32,32,32,32,32, - 32,32,32,114,230,0,0,0,84,41,2,218,12,100,111,110, - 116,95,105,110,104,101,114,105,116,114,96,0,0,0,78,41, - 3,114,146,0,0,0,114,229,0,0,0,218,7,99,111,109, - 112,105,108,101,41,4,114,130,0,0,0,114,42,0,0,0, - 114,58,0,0,0,114,245,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,14,115,111,117,114,99, - 101,95,116,111,95,99,111,100,101,125,3,0,0,115,8,0, - 0,0,12,5,4,1,6,255,255,128,122,27,83,111,117,114, - 99,101,76,111,97,100,101,114,46,115,111,117,114,99,101,95, - 116,111,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 0,0,0,0,15,0,0,0,9,0,0,0,67,0,0,0, - 115,34,2,0,0,124,0,160,0,124,1,161,1,125,2,100, - 1,125,3,100,1,125,4,100,1,125,5,100,2,125,6,100, - 3,125,7,122,12,116,1,124,2,131,1,125,8,87,0,110, - 24,4,0,116,2,144,2,121,32,1,0,1,0,1,0,100, - 1,125,8,89,0,144,1,110,38,122,14,124,0,160,3,124, - 2,161,1,125,9,87,0,110,20,4,0,116,4,144,2,121, - 30,1,0,1,0,1,0,89,0,144,1,110,2,116,5,124, - 9,100,4,25,0,131,1,125,3,122,14,124,0,160,6,124, - 8,161,1,125,10,87,0,110,18,4,0,116,4,144,2,121, - 28,1,0,1,0,1,0,89,0,110,212,124,1,124,8,100, - 5,156,2,125,11,122,148,116,7,124,10,124,1,124,11,131, - 3,125,12,116,8,124,10,131,1,100,6,100,1,133,2,25, - 0,125,13,124,12,100,7,64,0,100,8,107,3,125,6,124, - 6,144,1,114,30,124,12,100,9,64,0,100,8,107,3,125, - 7,116,9,106,10,100,10,107,3,144,1,114,28,124,7,115, - 248,116,9,106,10,100,11,107,2,144,1,114,28,124,0,160, + 111,119,115,32,116,104,101,32,108,111,97,100,101,114,32,116, + 111,32,114,101,97,100,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,115,46,10,32,32,32,32,32,32,32,32,82, + 97,105,115,101,115,32,79,83,69,114,114,111,114,32,119,104, + 101,110,32,116,104,101,32,112,97,116,104,32,99,97,110,110, + 111,116,32,98,101,32,104,97,110,100,108,101,100,46,10,32, + 32,32,32,32,32,32,32,114,180,0,0,0,78,41,1,114, + 238,0,0,0,114,237,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,10,112,97,116,104,95,115, + 116,97,116,115,85,3,0,0,115,4,0,0,0,14,12,255, + 128,122,23,83,111,117,114,99,101,76,111,97,100,101,114,46, + 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,12,0,0,0,124,0,160,0,124,2,124,3, + 161,2,83,0,41,2,122,228,79,112,116,105,111,110,97,108, + 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114, + 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115, + 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104, + 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, + 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32, + 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111, + 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105, + 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102, + 105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,84, + 104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,105, + 115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,101, + 114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,116, + 114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,105, + 111,110,115,10,32,32,32,32,32,32,32,32,78,41,1,218, + 8,115,101,116,95,100,97,116,97,41,4,114,130,0,0,0, + 114,119,0,0,0,90,10,99,97,99,104,101,95,112,97,116, + 104,114,42,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,15,95,99,97,99,104,101,95,98,121, + 116,101,99,111,100,101,99,3,0,0,115,4,0,0,0,12, + 8,255,128,122,28,83,111,117,114,99,101,76,111,97,100,101, + 114,46,95,99,97,99,104,101,95,98,121,116,101,99,111,100, + 101,99,3,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,1,0,0,0,67,0,0,0,114,24,0,0,0,41, + 2,122,150,79,112,116,105,111,110,97,108,32,109,101,116,104, + 111,100,32,119,104,105,99,104,32,119,114,105,116,101,115,32, + 100,97,116,97,32,40,98,121,116,101,115,41,32,116,111,32, + 97,32,102,105,108,101,32,112,97,116,104,32,40,97,32,115, + 116,114,41,46,10,10,32,32,32,32,32,32,32,32,73,109, + 112,108,101,109,101,110,116,105,110,103,32,116,104,105,115,32, + 109,101,116,104,111,100,32,97,108,108,111,119,115,32,102,111, + 114,32,116,104,101,32,119,114,105,116,105,110,103,32,111,102, + 32,98,121,116,101,99,111,100,101,32,102,105,108,101,115,46, + 10,32,32,32,32,32,32,32,32,78,114,7,0,0,0,41, + 3,114,130,0,0,0,114,58,0,0,0,114,42,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 240,0,0,0,109,3,0,0,114,227,0,0,0,122,21,83, + 111,117,114,99,101,76,111,97,100,101,114,46,115,101,116,95, + 100,97,116,97,99,2,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,10,0,0,0,67,0,0,0,115,70,0, + 0,0,124,0,160,0,124,1,161,1,125,2,122,10,124,0, + 160,1,124,2,161,1,125,3,87,0,116,4,124,3,131,1, + 83,0,4,0,116,2,121,34,1,0,125,4,1,0,122,7, + 116,3,100,1,124,1,100,2,141,2,124,4,130,2,100,3, + 125,4,126,4,119,1,119,0,41,4,122,52,67,111,110,99, + 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, + 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,46, + 122,39,115,111,117,114,99,101,32,110,111,116,32,97,118,97, + 105,108,97,98,108,101,32,116,104,114,111,117,103,104,32,103, + 101,116,95,100,97,116,97,40,41,114,127,0,0,0,78,41, + 5,114,190,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,64,0,0,0,114,129,0,0,0,114,187,0,0,0,41, + 5,114,130,0,0,0,114,150,0,0,0,114,58,0,0,0, + 114,185,0,0,0,218,3,101,120,99,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,10,103,101,116,95,115, + 111,117,114,99,101,116,3,0,0,115,26,0,0,0,10,2, + 2,1,12,1,8,4,14,253,4,1,2,1,4,255,2,1, + 2,255,8,128,2,255,255,128,122,23,83,111,117,114,99,101, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,114,116,0,0,0,41,1,218,9,95,111,112,116,105,109, + 105,122,101,99,3,0,0,0,0,0,0,0,1,0,0,0, + 4,0,0,0,8,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,106,1,116,2,124,1,124,2,100,1,100,2,124, + 3,100,3,141,6,83,0,41,5,122,130,82,101,116,117,114, + 110,32,116,104,101,32,99,111,100,101,32,111,98,106,101,99, + 116,32,99,111,109,112,105,108,101,100,32,102,114,111,109,32, + 115,111,117,114,99,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,39,100,97,116,97,39,32,97,114,103,117, + 109,101,110,116,32,99,97,110,32,98,101,32,97,110,121,32, + 111,98,106,101,99,116,32,116,121,112,101,32,116,104,97,116, + 32,99,111,109,112,105,108,101,40,41,32,115,117,112,112,111, + 114,116,115,46,10,32,32,32,32,32,32,32,32,114,230,0, + 0,0,84,41,2,218,12,100,111,110,116,95,105,110,104,101, + 114,105,116,114,96,0,0,0,78,41,3,114,146,0,0,0, + 114,229,0,0,0,218,7,99,111,109,112,105,108,101,41,4, + 114,130,0,0,0,114,42,0,0,0,114,58,0,0,0,114, + 245,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,14,115,111,117,114,99,101,95,116,111,95,99, + 111,100,101,126,3,0,0,115,8,0,0,0,12,5,4,1, + 6,255,255,128,122,27,83,111,117,114,99,101,76,111,97,100, + 101,114,46,115,111,117,114,99,101,95,116,111,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,0,0,0,0,15,0, + 0,0,9,0,0,0,67,0,0,0,115,12,2,0,0,124, + 0,160,0,124,1,161,1,125,2,100,1,125,3,100,1,125, + 4,100,1,125,5,100,2,125,6,100,3,125,7,122,6,116, + 1,124,2,131,1,125,8,87,0,110,11,4,0,116,2,144, + 1,121,5,1,0,1,0,1,0,100,1,125,8,89,0,110, + 143,122,7,124,0,160,3,124,2,161,1,125,9,87,0,110, + 9,4,0,116,4,144,1,121,4,1,0,1,0,1,0,89, + 0,110,126,116,5,124,9,100,4,25,0,131,1,125,3,122, + 7,124,0,160,6,124,8,161,1,125,10,87,0,110,9,4, + 0,116,4,144,1,121,3,1,0,1,0,1,0,89,0,110, + 103,124,1,124,8,100,5,156,2,125,11,122,71,116,7,124, + 10,124,1,124,11,131,3,125,12,116,8,124,10,131,1,100, + 6,100,1,133,2,25,0,125,13,124,12,100,7,64,0,100, + 8,107,3,125,6,124,6,114,138,124,12,100,9,64,0,100, + 8,107,3,125,7,116,9,106,10,100,10,107,3,114,137,124, + 7,115,119,116,9,106,10,100,11,107,2,114,137,124,0,160, 6,124,2,161,1,125,4,116,9,160,11,116,12,124,4,161, 2,125,5,116,13,124,10,124,5,124,1,124,11,131,4,1, - 0,110,20,116,14,124,10,124,3,124,9,100,12,25,0,124, - 1,124,11,131,5,1,0,87,0,110,22,4,0,116,15,116, - 16,102,2,144,2,121,26,1,0,1,0,1,0,89,0,110, - 30,116,17,160,18,100,13,124,8,124,2,161,3,1,0,116, + 0,110,10,116,14,124,10,124,3,124,9,100,12,25,0,124, + 1,124,11,131,5,1,0,87,0,110,11,4,0,116,15,116, + 16,102,2,144,1,121,2,1,0,1,0,1,0,89,0,110, + 15,116,17,160,18,100,13,124,8,124,2,161,3,1,0,116, 19,124,13,124,1,124,8,124,2,100,14,141,4,83,0,124, - 4,100,1,117,0,144,1,114,126,124,0,160,6,124,2,161, - 1,125,4,124,0,160,20,124,4,124,2,161,2,125,14,116, - 17,160,18,100,15,124,2,161,2,1,0,116,21,106,22,144, - 2,115,20,124,8,100,1,117,1,144,2,114,20,124,3,100, - 1,117,1,144,2,114,20,124,6,144,1,114,218,124,5,100, - 1,117,0,144,1,114,204,116,9,160,11,124,4,161,1,125, - 5,116,23,124,14,124,5,124,7,131,3,125,10,110,16,116, - 24,124,14,124,3,116,25,124,4,131,1,131,3,125,10,122, - 20,124,0,160,26,124,2,124,8,124,10,161,3,1,0,87, - 0,124,14,83,0,4,0,116,2,144,2,121,24,1,0,1, - 0,1,0,89,0,124,14,83,0,124,14,83,0,119,0,119, - 0,119,0,119,0,119,0,41,16,122,190,67,111,110,99,114, - 101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,32,111,102,32,73,110,115,112,101,99,116,76,111,97, - 100,101,114,46,103,101,116,95,99,111,100,101,46,10,10,32, - 32,32,32,32,32,32,32,82,101,97,100,105,110,103,32,111, - 102,32,98,121,116,101,99,111,100,101,32,114,101,113,117,105, - 114,101,115,32,112,97,116,104,95,115,116,97,116,115,32,116, - 111,32,98,101,32,105,109,112,108,101,109,101,110,116,101,100, - 46,32,84,111,32,119,114,105,116,101,10,32,32,32,32,32, - 32,32,32,98,121,116,101,99,111,100,101,44,32,115,101,116, - 95,100,97,116,97,32,109,117,115,116,32,97,108,115,111,32, - 98,101,32,105,109,112,108,101,109,101,110,116,101,100,46,10, - 10,32,32,32,32,32,32,32,32,78,70,84,114,180,0,0, - 0,114,170,0,0,0,114,156,0,0,0,114,3,0,0,0, - 114,0,0,0,0,114,45,0,0,0,90,5,110,101,118,101, - 114,90,6,97,108,119,97,121,115,218,4,115,105,122,101,122, - 13,123,125,32,109,97,116,99,104,101,115,32,123,125,41,3, - 114,128,0,0,0,114,118,0,0,0,114,119,0,0,0,122, - 19,99,111,100,101,32,111,98,106,101,99,116,32,102,114,111, - 109,32,123,125,41,27,114,190,0,0,0,114,109,0,0,0, - 114,95,0,0,0,114,239,0,0,0,114,64,0,0,0,114, - 34,0,0,0,114,242,0,0,0,114,163,0,0,0,218,10, - 109,101,109,111,114,121,118,105,101,119,114,174,0,0,0,90, - 21,99,104,101,99,107,95,104,97,115,104,95,98,97,115,101, - 100,95,112,121,99,115,114,168,0,0,0,218,17,95,82,65, - 87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,169, - 0,0,0,114,167,0,0,0,114,129,0,0,0,114,161,0, - 0,0,114,146,0,0,0,114,160,0,0,0,114,176,0,0, - 0,114,248,0,0,0,114,16,0,0,0,218,19,100,111,110, - 116,95,119,114,105,116,101,95,98,121,116,101,99,111,100,101, - 114,182,0,0,0,114,181,0,0,0,114,4,0,0,0,114, - 241,0,0,0,41,15,114,130,0,0,0,114,150,0,0,0, - 114,119,0,0,0,114,165,0,0,0,114,185,0,0,0,114, - 168,0,0,0,90,10,104,97,115,104,95,98,97,115,101,100, - 90,12,99,104,101,99,107,95,115,111,117,114,99,101,114,118, - 0,0,0,218,2,115,116,114,42,0,0,0,114,162,0,0, - 0,114,17,0,0,0,90,10,98,121,116,101,115,95,100,97, - 116,97,90,11,99,111,100,101,95,111,98,106,101,99,116,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,228, - 0,0,0,133,3,0,0,115,170,0,0,0,10,7,4,1, - 4,1,4,1,4,1,4,1,2,1,12,1,14,1,10,1, - 2,2,14,1,14,1,6,1,12,2,2,1,14,1,14,1, - 4,1,2,3,2,1,6,254,2,4,12,1,16,1,12,1, - 6,1,12,1,12,1,2,1,2,255,8,2,4,254,10,3, - 4,1,2,1,2,1,4,254,8,4,2,1,4,255,2,128, - 2,3,2,1,2,1,6,1,2,1,2,1,4,251,4,128, - 18,7,4,1,8,2,2,1,4,255,6,2,2,1,2,1, - 6,254,10,3,10,1,12,1,12,1,18,1,6,1,4,255, - 6,2,10,1,10,1,14,1,6,2,6,1,4,255,2,2, - 16,1,4,3,14,254,2,1,8,1,2,254,2,233,2,225, - 2,250,2,251,255,128,122,21,83,111,117,114,99,101,76,111, - 97,100,101,114,46,103,101,116,95,99,111,100,101,78,41,10, - 114,137,0,0,0,114,136,0,0,0,114,138,0,0,0,114, - 238,0,0,0,114,239,0,0,0,114,241,0,0,0,114,240, - 0,0,0,114,244,0,0,0,114,248,0,0,0,114,228,0, - 0,0,114,7,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,236,0,0,0,74,3,0,0,115, - 18,0,0,0,8,0,8,2,8,8,8,14,8,10,8,7, - 14,10,12,8,255,128,114,236,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0, - 0,0,0,0,115,92,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, - 5,132,0,90,5,100,6,100,7,132,0,90,6,101,7,135, - 0,102,1,100,8,100,9,132,8,131,1,90,8,101,7,100, - 10,100,11,132,0,131,1,90,9,100,12,100,13,132,0,90, - 10,101,7,100,14,100,15,132,0,131,1,90,11,135,0,4, - 0,90,12,83,0,41,16,218,10,70,105,108,101,76,111,97, - 100,101,114,122,103,66,97,115,101,32,102,105,108,101,32,108, - 111,97,100,101,114,32,99,108,97,115,115,32,119,104,105,99, - 104,32,105,109,112,108,101,109,101,110,116,115,32,116,104,101, - 32,108,111,97,100,101,114,32,112,114,111,116,111,99,111,108, - 32,109,101,116,104,111,100,115,32,116,104,97,116,10,32,32, - 32,32,114,101,113,117,105,114,101,32,102,105,108,101,32,115, - 121,115,116,101,109,32,117,115,97,103,101,46,99,3,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0, - 0,67,0,0,0,115,16,0,0,0,124,1,124,0,95,0, - 124,2,124,0,95,1,100,1,83,0,41,2,122,75,67,97, - 99,104,101,32,116,104,101,32,109,111,100,117,108,101,32,110, - 97,109,101,32,97,110,100,32,116,104,101,32,112,97,116,104, - 32,116,111,32,116,104,101,32,102,105,108,101,32,102,111,117, - 110,100,32,98,121,32,116,104,101,10,32,32,32,32,32,32, - 32,32,102,105,110,100,101,114,46,78,114,170,0,0,0,41, - 3,114,130,0,0,0,114,150,0,0,0,114,58,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 223,0,0,0,223,3,0,0,115,6,0,0,0,6,3,10, - 1,255,128,122,19,70,105,108,101,76,111,97,100,101,114,46, - 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, - 0,243,24,0,0,0,124,0,106,0,124,1,106,0,107,2, - 111,22,124,0,106,1,124,1,106,1,107,2,83,0,114,121, - 0,0,0,169,2,218,9,95,95,99,108,97,115,115,95,95, - 114,143,0,0,0,169,2,114,130,0,0,0,90,5,111,116, - 104,101,114,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,6,95,95,101,113,95,95,229,3,0,0,243,8, - 0,0,0,12,1,10,1,2,255,255,128,122,17,70,105,108, - 101,76,111,97,100,101,114,46,95,95,101,113,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,67,0,0,0,243,20,0,0,0,116,0,124,0, - 106,1,131,1,116,0,124,0,106,2,131,1,65,0,83,0, - 114,121,0,0,0,169,3,218,4,104,97,115,104,114,128,0, - 0,0,114,58,0,0,0,169,1,114,130,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,8,95, - 95,104,97,115,104,95,95,233,3,0,0,243,4,0,0,0, - 20,1,255,128,122,19,70,105,108,101,76,111,97,100,101,114, - 46,95,95,104,97,115,104,95,95,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,115,16,0,0,0,116,0,116,1,124,0,131,2,160, - 2,124,1,161,1,83,0,41,2,122,100,76,111,97,100,32, - 97,32,109,111,100,117,108,101,32,102,114,111,109,32,97,32, - 102,105,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, - 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101, - 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, - 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, - 41,3,218,5,115,117,112,101,114,114,254,0,0,0,114,235, - 0,0,0,114,234,0,0,0,169,1,114,1,1,0,0,114, - 7,0,0,0,114,8,0,0,0,114,235,0,0,0,236,3, - 0,0,115,4,0,0,0,16,10,255,128,122,22,70,105,108, - 101,76,111,97,100,101,114,46,108,111,97,100,95,109,111,100, - 117,108,101,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,243,6,0,0, - 0,124,0,106,0,83,0,169,2,122,58,82,101,116,117,114, - 110,32,116,104,101,32,112,97,116,104,32,116,111,32,116,104, - 101,32,115,111,117,114,99,101,32,102,105,108,101,32,97,115, - 32,102,111,117,110,100,32,98,121,32,116,104,101,32,102,105, - 110,100,101,114,46,78,114,62,0,0,0,114,234,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 190,0,0,0,248,3,0,0,243,4,0,0,0,6,3,255, - 128,122,23,70,105,108,101,76,111,97,100,101,114,46,103,101, - 116,95,102,105,108,101,110,97,109,101,99,2,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, - 0,0,0,115,128,0,0,0,116,0,124,0,116,1,116,2, - 102,2,131,2,114,72,116,3,160,4,116,5,124,1,131,1, - 161,1,143,24,125,2,124,2,160,6,161,0,87,0,2,0, - 100,1,4,0,4,0,131,3,1,0,83,0,49,0,115,58, - 119,1,1,0,1,0,1,0,89,0,1,0,100,1,83,0, - 116,3,160,7,124,1,100,2,161,2,143,24,125,2,124,2, - 160,6,161,0,87,0,2,0,100,1,4,0,4,0,131,3, - 1,0,83,0,49,0,115,114,119,1,1,0,1,0,1,0, - 89,0,1,0,100,1,83,0,41,3,122,39,82,101,116,117, - 114,110,32,116,104,101,32,100,97,116,97,32,102,114,111,109, - 32,112,97,116,104,32,97,115,32,114,97,119,32,98,121,116, - 101,115,46,78,218,1,114,41,8,114,172,0,0,0,114,236, - 0,0,0,218,19,69,120,116,101,110,115,105,111,110,70,105, - 108,101,76,111,97,100,101,114,114,79,0,0,0,90,9,111, - 112,101,110,95,99,111,100,101,114,97,0,0,0,90,4,114, - 101,97,100,114,80,0,0,0,41,3,114,130,0,0,0,114, - 58,0,0,0,114,83,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,242,0,0,0,253,3,0, - 0,115,16,0,0,0,14,2,16,1,22,1,20,128,14,2, - 22,1,20,128,255,128,122,19,70,105,108,101,76,111,97,100, - 101,114,46,103,101,116,95,100,97,116,97,99,2,0,0,0, - 0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0, - 67,0,0,0,115,20,0,0,0,100,1,100,2,108,0,109, - 1,125,2,1,0,124,2,124,0,131,1,83,0,41,3,78, - 114,0,0,0,0,41,1,218,10,70,105,108,101,82,101,97, - 100,101,114,41,2,218,17,105,109,112,111,114,116,108,105,98, - 46,114,101,97,100,101,114,115,114,18,1,0,0,41,3,114, - 130,0,0,0,114,231,0,0,0,114,18,1,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,218,19,103, - 101,116,95,114,101,115,111,117,114,99,101,95,114,101,97,100, - 101,114,6,4,0,0,115,6,0,0,0,12,2,8,1,255, - 128,122,30,70,105,108,101,76,111,97,100,101,114,46,103,101, - 116,95,114,101,115,111,117,114,99,101,95,114,101,97,100,101, - 114,41,13,114,137,0,0,0,114,136,0,0,0,114,138,0, - 0,0,114,139,0,0,0,114,223,0,0,0,114,3,1,0, - 0,114,9,1,0,0,114,147,0,0,0,114,235,0,0,0, - 114,190,0,0,0,114,242,0,0,0,114,20,1,0,0,90, - 13,95,95,99,108,97,115,115,99,101,108,108,95,95,114,7, - 0,0,0,114,7,0,0,0,114,12,1,0,0,114,8,0, - 0,0,114,254,0,0,0,218,3,0,0,115,26,0,0,0, - 8,0,4,2,8,3,8,6,8,4,2,3,14,1,2,11, - 10,1,8,4,2,9,18,1,255,128,114,254,0,0,0,99, + 4,100,1,117,0,114,185,124,0,160,6,124,2,161,1,125, + 4,124,0,160,20,124,4,124,2,161,2,125,14,116,17,160, + 18,100,15,124,2,161,2,1,0,116,21,106,22,115,255,124, + 8,100,1,117,1,114,255,124,3,100,1,117,1,114,255,124, + 6,114,226,124,5,100,1,117,0,114,219,116,9,160,11,124, + 4,161,1,125,5,116,23,124,14,124,5,124,7,131,3,125, + 10,110,8,116,24,124,14,124,3,116,25,124,4,131,1,131, + 3,125,10,122,10,124,0,160,26,124,2,124,8,124,10,161, + 3,1,0,87,0,124,14,83,0,4,0,116,2,144,1,121, + 1,1,0,1,0,1,0,89,0,124,14,83,0,124,14,83, + 0,119,0,119,0,119,0,119,0,119,0,41,16,122,190,67, + 111,110,99,114,101,116,101,32,105,109,112,108,101,109,101,110, + 116,97,116,105,111,110,32,111,102,32,73,110,115,112,101,99, + 116,76,111,97,100,101,114,46,103,101,116,95,99,111,100,101, + 46,10,10,32,32,32,32,32,32,32,32,82,101,97,100,105, + 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,114, + 101,113,117,105,114,101,115,32,112,97,116,104,95,115,116,97, + 116,115,32,116,111,32,98,101,32,105,109,112,108,101,109,101, + 110,116,101,100,46,32,84,111,32,119,114,105,116,101,10,32, + 32,32,32,32,32,32,32,98,121,116,101,99,111,100,101,44, + 32,115,101,116,95,100,97,116,97,32,109,117,115,116,32,97, + 108,115,111,32,98,101,32,105,109,112,108,101,109,101,110,116, + 101,100,46,10,10,32,32,32,32,32,32,32,32,78,70,84, + 114,180,0,0,0,114,170,0,0,0,114,156,0,0,0,114, + 3,0,0,0,114,0,0,0,0,114,45,0,0,0,90,5, + 110,101,118,101,114,90,6,97,108,119,97,121,115,218,4,115, + 105,122,101,122,13,123,125,32,109,97,116,99,104,101,115,32, + 123,125,41,3,114,128,0,0,0,114,118,0,0,0,114,119, + 0,0,0,122,19,99,111,100,101,32,111,98,106,101,99,116, + 32,102,114,111,109,32,123,125,41,27,114,190,0,0,0,114, + 109,0,0,0,114,95,0,0,0,114,239,0,0,0,114,64, + 0,0,0,114,34,0,0,0,114,242,0,0,0,114,163,0, + 0,0,218,10,109,101,109,111,114,121,118,105,101,119,114,174, + 0,0,0,90,21,99,104,101,99,107,95,104,97,115,104,95, + 98,97,115,101,100,95,112,121,99,115,114,168,0,0,0,218, + 17,95,82,65,87,95,77,65,71,73,67,95,78,85,77,66, + 69,82,114,169,0,0,0,114,167,0,0,0,114,129,0,0, + 0,114,161,0,0,0,114,146,0,0,0,114,160,0,0,0, + 114,176,0,0,0,114,248,0,0,0,114,16,0,0,0,218, + 19,100,111,110,116,95,119,114,105,116,101,95,98,121,116,101, + 99,111,100,101,114,182,0,0,0,114,181,0,0,0,114,4, + 0,0,0,114,241,0,0,0,41,15,114,130,0,0,0,114, + 150,0,0,0,114,119,0,0,0,114,165,0,0,0,114,185, + 0,0,0,114,168,0,0,0,90,10,104,97,115,104,95,98, + 97,115,101,100,90,12,99,104,101,99,107,95,115,111,117,114, + 99,101,114,118,0,0,0,218,2,115,116,114,42,0,0,0, + 114,162,0,0,0,114,17,0,0,0,90,10,98,121,116,101, + 115,95,100,97,116,97,90,11,99,111,100,101,95,111,98,106, + 101,99,116,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,228,0,0,0,134,3,0,0,115,170,0,0,0, + 10,7,4,1,4,1,4,1,4,1,4,1,2,1,12,1, + 14,1,8,1,2,2,14,1,14,1,4,1,12,2,2,1, + 14,1,14,1,4,1,2,3,2,1,6,254,2,4,12,1, + 16,1,12,1,4,1,12,1,10,1,2,1,2,255,8,2, + 2,254,10,3,4,1,2,1,2,1,4,254,8,4,2,1, + 4,255,2,128,2,3,2,1,2,1,6,1,2,1,2,1, + 4,251,4,128,18,7,4,1,8,2,2,1,4,255,6,2, + 2,1,2,1,6,254,8,3,10,1,12,1,12,1,14,1, + 6,1,2,255,4,2,8,1,10,1,14,1,6,2,6,1, + 4,255,2,2,16,1,4,3,14,254,2,1,8,1,2,254, + 2,233,2,225,2,250,2,251,255,128,122,21,83,111,117,114, + 99,101,76,111,97,100,101,114,46,103,101,116,95,99,111,100, + 101,78,41,10,114,137,0,0,0,114,136,0,0,0,114,138, + 0,0,0,114,238,0,0,0,114,239,0,0,0,114,241,0, + 0,0,114,240,0,0,0,114,244,0,0,0,114,248,0,0, + 0,114,228,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,236,0,0,0,75, + 3,0,0,115,18,0,0,0,8,0,8,2,8,8,8,14, + 8,10,8,7,14,10,12,8,255,128,114,236,0,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 3,0,0,0,64,0,0,0,115,46,0,0,0,101,0,90, + 4,0,0,0,0,0,0,0,115,92,0,0,0,101,0,90, 1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,90, - 4,100,4,100,5,132,0,90,5,100,6,100,7,156,1,100, - 8,100,9,132,2,90,6,100,10,83,0,41,11,218,16,83, - 111,117,114,99,101,70,105,108,101,76,111,97,100,101,114,122, - 62,67,111,110,99,114,101,116,101,32,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,32,111,102,32,83,111,117,114, - 99,101,76,111,97,100,101,114,32,117,115,105,110,103,32,116, - 104,101,32,102,105,108,101,32,115,121,115,116,101,109,46,99, + 4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,90, + 6,101,7,135,0,102,1,100,8,100,9,132,8,131,1,90, + 8,101,7,100,10,100,11,132,0,131,1,90,9,100,12,100, + 13,132,0,90,10,101,7,100,14,100,15,132,0,131,1,90, + 11,135,0,4,0,90,12,83,0,41,16,218,10,70,105,108, + 101,76,111,97,100,101,114,122,103,66,97,115,101,32,102,105, + 108,101,32,108,111,97,100,101,114,32,99,108,97,115,115,32, + 119,104,105,99,104,32,105,109,112,108,101,109,101,110,116,115, + 32,116,104,101,32,108,111,97,100,101,114,32,112,114,111,116, + 111,99,111,108,32,109,101,116,104,111,100,115,32,116,104,97, + 116,10,32,32,32,32,114,101,113,117,105,114,101,32,102,105, + 108,101,32,115,121,115,116,101,109,32,117,115,97,103,101,46, + 99,3,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, + 124,0,95,0,124,2,124,0,95,1,100,1,83,0,41,2, + 122,75,67,97,99,104,101,32,116,104,101,32,109,111,100,117, + 108,101,32,110,97,109,101,32,97,110,100,32,116,104,101,32, + 112,97,116,104,32,116,111,32,116,104,101,32,102,105,108,101, + 32,102,111,117,110,100,32,98,121,32,116,104,101,10,32,32, + 32,32,32,32,32,32,102,105,110,100,101,114,46,78,114,170, + 0,0,0,41,3,114,130,0,0,0,114,150,0,0,0,114, + 58,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,223,0,0,0,224,3,0,0,115,6,0,0, + 0,6,3,10,1,255,128,122,19,70,105,108,101,76,111,97, + 100,101,114,46,95,95,105,110,105,116,95,95,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,243,24,0,0,0,124,0,106,0,124,1, + 106,0,107,2,111,11,124,0,106,1,124,1,106,1,107,2, + 83,0,114,121,0,0,0,169,2,218,9,95,95,99,108,97, + 115,115,95,95,114,143,0,0,0,169,2,114,130,0,0,0, + 90,5,111,116,104,101,114,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,6,95,95,101,113,95,95,230,3, + 0,0,243,8,0,0,0,12,1,10,1,2,255,255,128,122, + 17,70,105,108,101,76,111,97,100,101,114,46,95,95,101,113, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,243,20,0,0,0, + 116,0,124,0,106,1,131,1,116,0,124,0,106,2,131,1, + 65,0,83,0,114,121,0,0,0,169,3,218,4,104,97,115, + 104,114,128,0,0,0,114,58,0,0,0,169,1,114,130,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,8,95,95,104,97,115,104,95,95,234,3,0,0,243, + 4,0,0,0,20,1,255,128,122,19,70,105,108,101,76,111, + 97,100,101,114,46,95,95,104,97,115,104,95,95,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,3,0,0,0,115,16,0,0,0,116,0,116,1,124, + 0,131,2,160,2,124,1,161,1,83,0,41,2,122,100,76, + 111,97,100,32,97,32,109,111,100,117,108,101,32,102,114,111, + 109,32,97,32,102,105,108,101,46,10,10,32,32,32,32,32, + 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, + 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, + 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, + 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, + 32,32,32,78,41,3,218,5,115,117,112,101,114,114,254,0, + 0,0,114,235,0,0,0,114,234,0,0,0,169,1,114,1, + 1,0,0,114,7,0,0,0,114,8,0,0,0,114,235,0, + 0,0,237,3,0,0,115,4,0,0,0,16,10,255,128,122, + 22,70,105,108,101,76,111,97,100,101,114,46,108,111,97,100, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, + 243,6,0,0,0,124,0,106,0,83,0,169,2,122,58,82, + 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116, + 111,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108, + 101,32,97,115,32,102,111,117,110,100,32,98,121,32,116,104, + 101,32,102,105,110,100,101,114,46,78,114,62,0,0,0,114, + 234,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,190,0,0,0,249,3,0,0,243,4,0,0, + 0,6,3,255,128,122,23,70,105,108,101,76,111,97,100,101, + 114,46,103,101,116,95,102,105,108,101,110,97,109,101,99,2, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8, + 0,0,0,67,0,0,0,115,128,0,0,0,116,0,124,0, + 116,1,116,2,102,2,131,2,114,36,116,3,160,4,116,5, + 124,1,131,1,161,1,143,12,125,2,124,2,160,6,161,0, + 87,0,2,0,100,1,4,0,4,0,131,3,1,0,83,0, + 49,0,115,29,119,1,1,0,1,0,1,0,89,0,1,0, + 100,1,83,0,116,3,160,7,124,1,100,2,161,2,143,12, + 125,2,124,2,160,6,161,0,87,0,2,0,100,1,4,0, + 4,0,131,3,1,0,83,0,49,0,115,57,119,1,1,0, + 1,0,1,0,89,0,1,0,100,1,83,0,41,3,122,39, + 82,101,116,117,114,110,32,116,104,101,32,100,97,116,97,32, + 102,114,111,109,32,112,97,116,104,32,97,115,32,114,97,119, + 32,98,121,116,101,115,46,78,218,1,114,41,8,114,172,0, + 0,0,114,236,0,0,0,218,19,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,114,79,0,0, + 0,90,9,111,112,101,110,95,99,111,100,101,114,97,0,0, + 0,90,4,114,101,97,100,114,80,0,0,0,41,3,114,130, + 0,0,0,114,58,0,0,0,114,83,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,242,0,0, + 0,254,3,0,0,115,16,0,0,0,14,2,16,1,22,1, + 20,128,14,2,22,1,20,128,255,128,122,19,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,100,97,116,97,99, 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,22,0,0,0,116,0,124, - 1,131,1,125,2,124,2,106,1,124,2,106,2,100,1,156, - 2,83,0,41,3,122,33,82,101,116,117,114,110,32,116,104, - 101,32,109,101,116,97,100,97,116,97,32,102,111,114,32,116, - 104,101,32,112,97,116,104,46,41,2,114,180,0,0,0,114, - 249,0,0,0,78,41,3,114,63,0,0,0,218,8,115,116, - 95,109,116,105,109,101,90,7,115,116,95,115,105,122,101,41, - 3,114,130,0,0,0,114,58,0,0,0,114,253,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 239,0,0,0,16,4,0,0,115,6,0,0,0,8,2,14, - 1,255,128,122,27,83,111,117,114,99,101,70,105,108,101,76, - 111,97,100,101,114,46,112,97,116,104,95,115,116,97,116,115, - 99,4,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,5,0,0,0,67,0,0,0,115,24,0,0,0,116,0, - 124,1,131,1,125,4,124,0,106,1,124,2,124,3,124,4, - 100,1,141,3,83,0,41,2,78,169,1,218,5,95,109,111, - 100,101,41,2,114,126,0,0,0,114,240,0,0,0,41,5, - 114,130,0,0,0,114,119,0,0,0,114,118,0,0,0,114, - 42,0,0,0,114,66,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,241,0,0,0,21,4,0, - 0,115,6,0,0,0,8,2,16,1,255,128,122,32,83,111, - 117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,114,75, - 0,0,0,114,23,1,0,0,99,3,0,0,0,0,0,0, - 0,1,0,0,0,9,0,0,0,11,0,0,0,67,0,0, - 0,115,254,0,0,0,116,0,124,1,131,1,92,2,125,4, - 125,5,103,0,125,6,124,4,114,62,116,1,124,4,131,1, - 115,62,116,0,124,4,131,1,92,2,125,4,125,7,124,6, - 160,2,124,7,161,1,1,0,124,4,114,62,116,1,124,4, - 131,1,114,28,116,3,124,6,131,1,68,0,93,96,125,7, - 116,4,124,4,124,7,131,2,125,4,122,14,116,5,160,6, - 124,4,161,1,1,0,87,0,113,70,4,0,116,7,121,116, - 1,0,1,0,1,0,89,0,113,70,4,0,116,8,121,252, - 1,0,125,8,1,0,122,30,116,9,160,10,100,1,124,4, - 124,8,161,3,1,0,87,0,89,0,100,2,125,8,126,8, - 1,0,100,2,83,0,100,2,125,8,126,8,119,1,122,30, - 116,11,124,1,124,2,124,3,131,3,1,0,116,9,160,10, - 100,3,124,1,161,2,1,0,87,0,100,2,83,0,4,0, - 116,8,121,250,1,0,125,8,1,0,122,28,116,9,160,10, - 100,1,124,1,124,8,161,3,1,0,87,0,89,0,100,2, - 125,8,126,8,100,2,83,0,100,2,125,8,126,8,119,1, - 119,0,119,0,41,4,122,27,87,114,105,116,101,32,98,121, - 116,101,115,32,100,97,116,97,32,116,111,32,97,32,102,105, - 108,101,46,122,27,99,111,117,108,100,32,110,111,116,32,99, - 114,101,97,116,101,32,123,33,114,125,58,32,123,33,114,125, - 78,122,12,99,114,101,97,116,101,100,32,123,33,114,125,41, - 12,114,61,0,0,0,114,71,0,0,0,114,197,0,0,0, - 114,56,0,0,0,114,54,0,0,0,114,19,0,0,0,90, - 5,109,107,100,105,114,218,15,70,105,108,101,69,120,105,115, - 116,115,69,114,114,111,114,114,64,0,0,0,114,146,0,0, - 0,114,160,0,0,0,114,84,0,0,0,41,9,114,130,0, - 0,0,114,58,0,0,0,114,42,0,0,0,114,24,1,0, - 0,218,6,112,97,114,101,110,116,114,108,0,0,0,114,53, - 0,0,0,114,49,0,0,0,114,243,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,240,0,0, - 0,26,4,0,0,115,58,0,0,0,12,2,4,1,12,2, - 12,1,10,1,12,254,12,4,10,1,2,1,14,1,12,1, - 4,2,14,1,6,3,4,1,4,255,16,2,8,128,2,1, - 12,1,18,1,14,1,8,2,2,1,18,255,8,128,2,254, - 2,247,255,128,122,25,83,111,117,114,99,101,70,105,108,101, - 76,111,97,100,101,114,46,115,101,116,95,100,97,116,97,78, - 41,7,114,137,0,0,0,114,136,0,0,0,114,138,0,0, - 0,114,139,0,0,0,114,239,0,0,0,114,241,0,0,0, - 114,240,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,21,1,0,0,12,4, - 0,0,115,12,0,0,0,8,0,4,2,8,2,8,5,18, - 5,255,128,114,21,1,0,0,99,0,0,0,0,0,0,0, + 2,0,0,0,67,0,0,0,115,20,0,0,0,100,1,100, + 2,108,0,109,1,125,2,1,0,124,2,124,0,131,1,83, + 0,41,3,78,114,0,0,0,0,41,1,218,10,70,105,108, + 101,82,101,97,100,101,114,41,2,218,17,105,109,112,111,114, + 116,108,105,98,46,114,101,97,100,101,114,115,114,18,1,0, + 0,41,3,114,130,0,0,0,114,231,0,0,0,114,18,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95, + 114,101,97,100,101,114,7,4,0,0,115,6,0,0,0,12, + 2,8,1,255,128,122,30,70,105,108,101,76,111,97,100,101, + 114,46,103,101,116,95,114,101,115,111,117,114,99,101,95,114, + 101,97,100,101,114,41,13,114,137,0,0,0,114,136,0,0, + 0,114,138,0,0,0,114,139,0,0,0,114,223,0,0,0, + 114,3,1,0,0,114,9,1,0,0,114,147,0,0,0,114, + 235,0,0,0,114,190,0,0,0,114,242,0,0,0,114,20, + 1,0,0,90,13,95,95,99,108,97,115,115,99,101,108,108, + 95,95,114,7,0,0,0,114,7,0,0,0,114,12,1,0, + 0,114,8,0,0,0,114,254,0,0,0,219,3,0,0,115, + 26,0,0,0,8,0,4,2,8,3,8,6,8,4,2,3, + 14,1,2,11,10,1,8,4,2,9,18,1,255,128,114,254, + 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,64,0,0,0,115,46,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, + 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100, + 7,156,1,100,8,100,9,132,2,90,6,100,10,83,0,41, + 11,218,16,83,111,117,114,99,101,70,105,108,101,76,111,97, + 100,101,114,122,62,67,111,110,99,114,101,116,101,32,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, + 83,111,117,114,99,101,76,111,97,100,101,114,32,117,115,105, + 110,103,32,116,104,101,32,102,105,108,101,32,115,121,115,116, + 101,109,46,99,2,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,124,1,131,1,125,2,124,2,106,1,124,2,106, + 2,100,1,156,2,83,0,41,3,122,33,82,101,116,117,114, + 110,32,116,104,101,32,109,101,116,97,100,97,116,97,32,102, + 111,114,32,116,104,101,32,112,97,116,104,46,41,2,114,180, + 0,0,0,114,249,0,0,0,78,41,3,114,63,0,0,0, + 218,8,115,116,95,109,116,105,109,101,90,7,115,116,95,115, + 105,122,101,41,3,114,130,0,0,0,114,58,0,0,0,114, + 253,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,239,0,0,0,17,4,0,0,115,6,0,0, + 0,8,2,14,1,255,128,122,27,83,111,117,114,99,101,70, + 105,108,101,76,111,97,100,101,114,46,112,97,116,104,95,115, + 116,97,116,115,99,4,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,24,0, + 0,0,116,0,124,1,131,1,125,4,124,0,106,1,124,2, + 124,3,124,4,100,1,141,3,83,0,41,2,78,169,1,218, + 5,95,109,111,100,101,41,2,114,126,0,0,0,114,240,0, + 0,0,41,5,114,130,0,0,0,114,119,0,0,0,114,118, + 0,0,0,114,42,0,0,0,114,66,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,241,0,0, + 0,22,4,0,0,115,6,0,0,0,8,2,16,1,255,128, + 122,32,83,111,117,114,99,101,70,105,108,101,76,111,97,100, + 101,114,46,95,99,97,99,104,101,95,98,121,116,101,99,111, + 100,101,114,75,0,0,0,114,23,1,0,0,99,3,0,0, + 0,0,0,0,0,1,0,0,0,9,0,0,0,11,0,0, + 0,67,0,0,0,115,254,0,0,0,116,0,124,1,131,1, + 92,2,125,4,125,5,103,0,125,6,124,4,114,31,116,1, + 124,4,131,1,115,31,116,0,124,4,131,1,92,2,125,4, + 125,7,124,6,160,2,124,7,161,1,1,0,124,4,114,31, + 116,1,124,4,131,1,114,14,116,3,124,6,131,1,68,0, + 93,48,125,7,116,4,124,4,124,7,131,2,125,4,122,7, + 116,5,160,6,124,4,161,1,1,0,87,0,113,35,4,0, + 116,7,121,58,1,0,1,0,1,0,89,0,113,35,4,0, + 116,8,121,126,1,0,125,8,1,0,122,15,116,9,160,10, + 100,1,124,4,124,8,161,3,1,0,87,0,89,0,100,2, + 125,8,126,8,1,0,100,2,83,0,100,2,125,8,126,8, + 119,1,122,15,116,11,124,1,124,2,124,3,131,3,1,0, + 116,9,160,10,100,3,124,1,161,2,1,0,87,0,100,2, + 83,0,4,0,116,8,121,125,1,0,125,8,1,0,122,14, + 116,9,160,10,100,1,124,1,124,8,161,3,1,0,87,0, + 89,0,100,2,125,8,126,8,100,2,83,0,100,2,125,8, + 126,8,119,1,119,0,119,0,41,4,122,27,87,114,105,116, + 101,32,98,121,116,101,115,32,100,97,116,97,32,116,111,32, + 97,32,102,105,108,101,46,122,27,99,111,117,108,100,32,110, + 111,116,32,99,114,101,97,116,101,32,123,33,114,125,58,32, + 123,33,114,125,78,122,12,99,114,101,97,116,101,100,32,123, + 33,114,125,41,12,114,61,0,0,0,114,71,0,0,0,114, + 197,0,0,0,114,56,0,0,0,114,54,0,0,0,114,19, + 0,0,0,90,5,109,107,100,105,114,218,15,70,105,108,101, + 69,120,105,115,116,115,69,114,114,111,114,114,64,0,0,0, + 114,146,0,0,0,114,160,0,0,0,114,84,0,0,0,41, + 9,114,130,0,0,0,114,58,0,0,0,114,42,0,0,0, + 114,24,1,0,0,218,6,112,97,114,101,110,116,114,108,0, + 0,0,114,53,0,0,0,114,49,0,0,0,114,243,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,240,0,0,0,27,4,0,0,115,58,0,0,0,12,2, + 4,1,12,2,12,1,10,1,12,254,12,4,10,1,2,1, + 14,1,12,1,4,2,14,1,6,3,4,1,4,255,16,2, + 8,128,2,1,12,1,18,1,14,1,8,2,2,1,18,255, + 8,128,2,254,2,247,255,128,122,25,83,111,117,114,99,101, + 70,105,108,101,76,111,97,100,101,114,46,115,101,116,95,100, + 97,116,97,78,41,7,114,137,0,0,0,114,136,0,0,0, + 114,138,0,0,0,114,139,0,0,0,114,239,0,0,0,114, + 241,0,0,0,114,240,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,21,1, + 0,0,13,4,0,0,115,12,0,0,0,8,0,4,2,8, + 2,8,5,18,5,255,128,114,21,1,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,64,0,0,0,115,32,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, + 100,5,132,0,90,5,100,6,83,0,41,7,218,20,83,111, + 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, + 101,114,122,45,76,111,97,100,101,114,32,119,104,105,99,104, + 32,104,97,110,100,108,101,115,32,115,111,117,114,99,101,108, + 101,115,115,32,102,105,108,101,32,105,109,112,111,114,116,115, + 46,99,2,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,5,0,0,0,67,0,0,0,115,68,0,0,0,124, + 0,160,0,124,1,161,1,125,2,124,0,160,1,124,2,161, + 1,125,3,124,1,124,2,100,1,156,2,125,4,116,2,124, + 3,124,1,124,4,131,3,1,0,116,3,116,4,124,3,131, + 1,100,2,100,0,133,2,25,0,124,1,124,2,100,3,141, + 3,83,0,41,4,78,114,170,0,0,0,114,156,0,0,0, + 41,2,114,128,0,0,0,114,118,0,0,0,41,5,114,190, + 0,0,0,114,242,0,0,0,114,163,0,0,0,114,176,0, + 0,0,114,250,0,0,0,41,5,114,130,0,0,0,114,150, + 0,0,0,114,58,0,0,0,114,42,0,0,0,114,162,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,228,0,0,0,62,4,0,0,115,24,0,0,0,10, + 1,10,1,2,4,2,1,6,254,12,4,2,1,14,1,2, + 1,2,1,6,253,255,128,122,29,83,111,117,114,99,101,108, + 101,115,115,70,105,108,101,76,111,97,100,101,114,46,103,101, + 116,95,99,111,100,101,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,114, + 24,0,0,0,41,2,122,39,82,101,116,117,114,110,32,78, + 111,110,101,32,97,115,32,116,104,101,114,101,32,105,115,32, + 110,111,32,115,111,117,114,99,101,32,99,111,100,101,46,78, + 114,7,0,0,0,114,234,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,244,0,0,0,78,4, + 0,0,114,25,0,0,0,122,31,83,111,117,114,99,101,108, + 101,115,115,70,105,108,101,76,111,97,100,101,114,46,103,101, + 116,95,115,111,117,114,99,101,78,41,6,114,137,0,0,0, + 114,136,0,0,0,114,138,0,0,0,114,139,0,0,0,114, + 228,0,0,0,114,244,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,27,1, + 0,0,58,4,0,0,115,10,0,0,0,8,0,4,2,8, + 2,12,16,255,128,114,27,1,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64, + 0,0,0,115,92,0,0,0,101,0,90,1,100,0,90,2, + 100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,5, + 132,0,90,5,100,6,100,7,132,0,90,6,100,8,100,9, + 132,0,90,7,100,10,100,11,132,0,90,8,100,12,100,13, + 132,0,90,9,100,14,100,15,132,0,90,10,100,16,100,17, + 132,0,90,11,101,12,100,18,100,19,132,0,131,1,90,13, + 100,20,83,0,41,21,114,17,1,0,0,122,93,76,111,97, + 100,101,114,32,102,111,114,32,101,120,116,101,110,115,105,111, + 110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,32, + 84,104,101,32,99,111,110,115,116,114,117,99,116,111,114,32, + 105,115,32,100,101,115,105,103,110,101,100,32,116,111,32,119, + 111,114,107,32,119,105,116,104,32,70,105,108,101,70,105,110, + 100,101,114,46,10,10,32,32,32,32,99,3,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,67, + 0,0,0,115,16,0,0,0,124,1,124,0,95,0,124,2, + 124,0,95,1,100,0,83,0,114,121,0,0,0,114,170,0, + 0,0,41,3,114,130,0,0,0,114,128,0,0,0,114,58, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,223,0,0,0,91,4,0,0,115,6,0,0,0, + 6,1,10,1,255,128,122,28,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110, + 105,116,95,95,99,2,0,0,0,0,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,114,255,0, + 0,0,114,121,0,0,0,114,0,1,0,0,114,2,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,3,1,0,0,95,4,0,0,114,4,1,0,0,122,26, + 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, + 100,101,114,46,95,95,101,113,95,95,99,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, + 0,0,0,114,5,1,0,0,114,121,0,0,0,114,6,1, + 0,0,114,8,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,9,1,0,0,99,4,0,0,114, + 10,1,0,0,122,28,69,120,116,101,110,115,105,111,110,70, + 105,108,101,76,111,97,100,101,114,46,95,95,104,97,115,104, + 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,3, + 0,0,0,5,0,0,0,67,0,0,0,115,36,0,0,0, + 116,0,160,1,116,2,106,3,124,1,161,2,125,2,116,0, + 160,4,100,1,124,1,106,5,124,0,106,6,161,3,1,0, + 124,2,83,0,41,3,122,38,67,114,101,97,116,101,32,97, + 110,32,117,110,105,116,105,97,108,105,122,101,100,32,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,38, + 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, + 32,123,33,114,125,32,108,111,97,100,101,100,32,102,114,111, + 109,32,123,33,114,125,78,41,7,114,146,0,0,0,114,229, + 0,0,0,114,174,0,0,0,90,14,99,114,101,97,116,101, + 95,100,121,110,97,109,105,99,114,160,0,0,0,114,128,0, + 0,0,114,58,0,0,0,41,3,114,130,0,0,0,114,198, + 0,0,0,114,231,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,226,0,0,0,102,4,0,0, + 115,16,0,0,0,4,2,6,1,4,255,6,2,8,1,4, + 255,4,2,255,128,122,33,69,120,116,101,110,115,105,111,110, + 70,105,108,101,76,111,97,100,101,114,46,99,114,101,97,116, + 101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0, + 0,115,36,0,0,0,116,0,160,1,116,2,106,3,124,1, + 161,2,1,0,116,0,160,4,100,1,124,0,106,5,124,0, + 106,6,161,3,1,0,100,2,83,0,41,3,122,30,73,110, + 105,116,105,97,108,105,122,101,32,97,110,32,101,120,116,101, + 110,115,105,111,110,32,109,111,100,117,108,101,122,40,101,120, + 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,123, + 33,114,125,32,101,120,101,99,117,116,101,100,32,102,114,111, + 109,32,123,33,114,125,78,41,7,114,146,0,0,0,114,229, + 0,0,0,114,174,0,0,0,90,12,101,120,101,99,95,100, + 121,110,97,109,105,99,114,160,0,0,0,114,128,0,0,0, + 114,58,0,0,0,169,2,114,130,0,0,0,114,231,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,232,0,0,0,110,4,0,0,115,10,0,0,0,14,2, + 6,1,8,1,8,255,255,128,122,31,69,120,116,101,110,115, + 105,111,110,70,105,108,101,76,111,97,100,101,114,46,101,120, + 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,3,0, + 0,0,115,36,0,0,0,116,0,124,0,106,1,131,1,100, + 1,25,0,137,0,116,2,135,0,102,1,100,2,100,3,132, + 8,116,3,68,0,131,1,131,1,83,0,41,5,122,49,82, + 101,116,117,114,110,32,84,114,117,101,32,105,102,32,116,104, + 101,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,46, + 114,3,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,51,0,0,0,115,26, + 0,0,0,124,0,93,9,125,1,136,0,100,0,124,1,23, + 0,107,2,86,0,1,0,113,1,100,1,83,0,41,2,114, + 223,0,0,0,78,114,7,0,0,0,169,2,114,5,0,0, + 0,218,6,115,117,102,102,105,120,169,1,90,9,102,105,108, + 101,95,110,97,109,101,114,7,0,0,0,114,8,0,0,0, + 114,9,0,0,0,119,4,0,0,115,8,0,0,0,4,0, + 2,1,20,255,255,128,122,49,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,46,105,115,95,112, + 97,99,107,97,103,101,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,78,41,4,114,61,0,0, + 0,114,58,0,0,0,218,3,97,110,121,114,219,0,0,0, + 114,234,0,0,0,114,7,0,0,0,114,31,1,0,0,114, + 8,0,0,0,114,193,0,0,0,116,4,0,0,115,10,0, + 0,0,14,2,12,1,2,1,8,255,255,128,122,30,69,120, + 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, + 114,46,105,115,95,112,97,99,107,97,103,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0, + 0,67,0,0,0,114,24,0,0,0,41,2,122,63,82,101, + 116,117,114,110,32,78,111,110,101,32,97,115,32,97,110,32, + 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, + 32,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97, + 32,99,111,100,101,32,111,98,106,101,99,116,46,78,114,7, + 0,0,0,114,234,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,228,0,0,0,122,4,0,0, + 114,25,0,0,0,122,28,69,120,116,101,110,115,105,111,110, + 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,99, + 111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,114,24,0,0, + 0,41,2,122,53,82,101,116,117,114,110,32,78,111,110,101, + 32,97,115,32,101,120,116,101,110,115,105,111,110,32,109,111, + 100,117,108,101,115,32,104,97,118,101,32,110,111,32,115,111, + 117,114,99,101,32,99,111,100,101,46,78,114,7,0,0,0, + 114,234,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,244,0,0,0,126,4,0,0,114,25,0, + 0,0,122,30,69,120,116,101,110,115,105,111,110,70,105,108, + 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, + 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,1,0,0,0,67,0,0,0,114,13,1,0,0, + 114,14,1,0,0,114,62,0,0,0,114,234,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,190, + 0,0,0,130,4,0,0,114,15,1,0,0,122,32,69,120, + 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, + 114,46,103,101,116,95,102,105,108,101,110,97,109,101,78,41, + 14,114,137,0,0,0,114,136,0,0,0,114,138,0,0,0, + 114,139,0,0,0,114,223,0,0,0,114,3,1,0,0,114, + 9,1,0,0,114,226,0,0,0,114,232,0,0,0,114,193, + 0,0,0,114,228,0,0,0,114,244,0,0,0,114,147,0, + 0,0,114,190,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,17,1,0,0, + 83,4,0,0,115,26,0,0,0,8,0,4,2,8,6,8, + 4,8,4,8,3,8,8,8,6,8,6,8,4,2,4,14, + 1,255,128,114,17,1,0,0,99,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, - 0,115,32,0,0,0,101,0,90,1,100,0,90,2,100,1, + 0,115,104,0,0,0,101,0,90,1,100,0,90,2,100,1, 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, - 90,5,100,6,83,0,41,7,218,20,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, - 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, - 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, - 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0, - 0,0,67,0,0,0,115,68,0,0,0,124,0,160,0,124, - 1,161,1,125,2,124,0,160,1,124,2,161,1,125,3,124, - 1,124,2,100,1,156,2,125,4,116,2,124,3,124,1,124, - 4,131,3,1,0,116,3,116,4,124,3,131,1,100,2,100, - 0,133,2,25,0,124,1,124,2,100,3,141,3,83,0,41, - 4,78,114,170,0,0,0,114,156,0,0,0,41,2,114,128, - 0,0,0,114,118,0,0,0,41,5,114,190,0,0,0,114, - 242,0,0,0,114,163,0,0,0,114,176,0,0,0,114,250, - 0,0,0,41,5,114,130,0,0,0,114,150,0,0,0,114, - 58,0,0,0,114,42,0,0,0,114,162,0,0,0,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,228,0, - 0,0,61,4,0,0,115,24,0,0,0,10,1,10,1,2, - 4,2,1,6,254,12,4,2,1,14,1,2,1,2,1,6, - 253,255,128,122,29,83,111,117,114,99,101,108,101,115,115,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,111, - 100,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,1,0,0,0,67,0,0,0,114,24,0,0,0, - 41,2,122,39,82,101,116,117,114,110,32,78,111,110,101,32, - 97,115,32,116,104,101,114,101,32,105,115,32,110,111,32,115, - 111,117,114,99,101,32,99,111,100,101,46,78,114,7,0,0, - 0,114,234,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,244,0,0,0,77,4,0,0,114,25, - 0,0,0,122,31,83,111,117,114,99,101,108,101,115,115,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,115,111, - 117,114,99,101,78,41,6,114,137,0,0,0,114,136,0,0, - 0,114,138,0,0,0,114,139,0,0,0,114,228,0,0,0, - 114,244,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,27,1,0,0,57,4, - 0,0,115,10,0,0,0,8,0,4,2,8,2,12,16,255, - 128,114,27,1,0,0,99,0,0,0,0,0,0,0,0,0, + 90,5,100,6,100,7,132,0,90,6,100,8,100,9,132,0, + 90,7,100,10,100,11,132,0,90,8,100,12,100,13,132,0, + 90,9,100,14,100,15,132,0,90,10,100,16,100,17,132,0, + 90,11,100,18,100,19,132,0,90,12,100,20,100,21,132,0, + 90,13,100,22,100,23,132,0,90,14,100,24,83,0,41,25, + 218,14,95,78,97,109,101,115,112,97,99,101,80,97,116,104, + 97,38,1,0,0,82,101,112,114,101,115,101,110,116,115,32, + 97,32,110,97,109,101,115,112,97,99,101,32,112,97,99,107, + 97,103,101,39,115,32,112,97,116,104,46,32,32,73,116,32, + 117,115,101,115,32,116,104,101,32,109,111,100,117,108,101,32, + 110,97,109,101,10,32,32,32,32,116,111,32,102,105,110,100, + 32,105,116,115,32,112,97,114,101,110,116,32,109,111,100,117, + 108,101,44,32,97,110,100,32,102,114,111,109,32,116,104,101, + 114,101,32,105,116,32,108,111,111,107,115,32,117,112,32,116, + 104,101,32,112,97,114,101,110,116,39,115,10,32,32,32,32, + 95,95,112,97,116,104,95,95,46,32,32,87,104,101,110,32, + 116,104,105,115,32,99,104,97,110,103,101,115,44,32,116,104, + 101,32,109,111,100,117,108,101,39,115,32,111,119,110,32,112, + 97,116,104,32,105,115,32,114,101,99,111,109,112,117,116,101, + 100,44,10,32,32,32,32,117,115,105,110,103,32,112,97,116, + 104,95,102,105,110,100,101,114,46,32,32,70,111,114,32,116, + 111,112,45,108,101,118,101,108,32,109,111,100,117,108,101,115, + 44,32,116,104,101,32,112,97,114,101,110,116,32,109,111,100, + 117,108,101,39,115,32,112,97,116,104,10,32,32,32,32,105, + 115,32,115,121,115,46,112,97,116,104,46,99,4,0,0,0, + 0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0, + 67,0,0,0,115,36,0,0,0,124,1,124,0,95,0,124, + 2,124,0,95,1,116,2,124,0,160,3,161,0,131,1,124, + 0,95,4,124,3,124,0,95,5,100,0,83,0,114,121,0, + 0,0,41,6,218,5,95,110,97,109,101,218,5,95,112,97, + 116,104,114,123,0,0,0,218,16,95,103,101,116,95,112,97, + 114,101,110,116,95,112,97,116,104,218,17,95,108,97,115,116, + 95,112,97,114,101,110,116,95,112,97,116,104,218,12,95,112, + 97,116,104,95,102,105,110,100,101,114,169,4,114,130,0,0, + 0,114,128,0,0,0,114,58,0,0,0,90,11,112,97,116, + 104,95,102,105,110,100,101,114,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,223,0,0,0,143,4,0,0, + 115,10,0,0,0,6,1,6,1,14,1,10,1,255,128,122, + 23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0, + 0,115,38,0,0,0,124,0,106,0,160,1,100,1,161,1, + 92,3,125,1,125,2,125,3,124,2,100,2,107,2,114,15, + 100,3,83,0,124,1,100,4,102,2,83,0,41,6,122,62, + 82,101,116,117,114,110,115,32,97,32,116,117,112,108,101,32, + 111,102,32,40,112,97,114,101,110,116,45,109,111,100,117,108, + 101,45,110,97,109,101,44,32,112,97,114,101,110,116,45,112, + 97,116,104,45,97,116,116,114,45,110,97,109,101,41,114,86, + 0,0,0,114,10,0,0,0,41,2,114,16,0,0,0,114, + 58,0,0,0,90,8,95,95,112,97,116,104,95,95,78,41, + 2,114,34,1,0,0,114,55,0,0,0,41,4,114,130,0, + 0,0,114,26,1,0,0,218,3,100,111,116,90,2,109,101, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 23,95,102,105,110,100,95,112,97,114,101,110,116,95,112,97, + 116,104,95,110,97,109,101,115,149,4,0,0,115,10,0,0, + 0,18,2,8,1,4,2,8,3,255,128,122,38,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,102,105,110, + 100,95,112,97,114,101,110,116,95,112,97,116,104,95,110,97, + 109,101,115,99,1,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,28,0,0, + 0,124,0,160,0,161,0,92,2,125,1,125,2,116,1,116, + 2,106,3,124,1,25,0,124,2,131,2,83,0,114,121,0, + 0,0,41,4,114,41,1,0,0,114,142,0,0,0,114,16, + 0,0,0,218,7,109,111,100,117,108,101,115,41,3,114,130, + 0,0,0,90,18,112,97,114,101,110,116,95,109,111,100,117, + 108,101,95,110,97,109,101,90,14,112,97,116,104,95,97,116, + 116,114,95,110,97,109,101,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,114,36,1,0,0,159,4,0,0,115, + 6,0,0,0,12,1,16,1,255,128,122,31,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,95, + 112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0, + 67,0,0,0,115,80,0,0,0,116,0,124,0,160,1,161, + 0,131,1,125,1,124,1,124,0,106,2,107,3,114,37,124, + 0,160,3,124,0,106,4,124,1,161,2,125,2,124,2,100, + 0,117,1,114,34,124,2,106,5,100,0,117,0,114,34,124, + 2,106,6,114,34,124,2,106,6,124,0,95,7,124,1,124, + 0,95,2,124,0,106,7,83,0,114,121,0,0,0,41,8, + 114,123,0,0,0,114,36,1,0,0,114,37,1,0,0,114, + 38,1,0,0,114,34,1,0,0,114,151,0,0,0,114,189, + 0,0,0,114,35,1,0,0,41,3,114,130,0,0,0,90, + 11,112,97,114,101,110,116,95,112,97,116,104,114,198,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,12,95,114,101,99,97,108,99,117,108,97,116,101,163,4, + 0,0,115,18,0,0,0,12,2,10,1,14,1,18,3,6, + 1,8,1,6,1,6,1,255,128,122,27,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,108, + 99,117,108,97,116,101,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,243, + 12,0,0,0,116,0,124,0,160,1,161,0,131,1,83,0, + 114,121,0,0,0,41,2,218,4,105,116,101,114,114,43,1, + 0,0,114,8,1,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,8,95,95,105,116,101,114,95,95, + 176,4,0,0,243,4,0,0,0,12,1,255,128,122,23,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, + 105,116,101,114,95,95,99,2,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 12,0,0,0,124,0,160,0,161,0,124,1,25,0,83,0, + 114,121,0,0,0,169,1,114,43,1,0,0,41,2,114,130, + 0,0,0,218,5,105,110,100,101,120,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,11,95,95,103,101,116, + 105,116,101,109,95,95,179,4,0,0,114,47,1,0,0,122, + 26,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, + 95,95,103,101,116,105,116,101,109,95,95,99,3,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, + 67,0,0,0,115,14,0,0,0,124,2,124,0,106,0,124, + 1,60,0,100,0,83,0,114,121,0,0,0,41,1,114,35, + 1,0,0,41,3,114,130,0,0,0,114,49,1,0,0,114, + 58,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,218,11,95,95,115,101,116,105,116,101,109,95,95, + 182,4,0,0,115,4,0,0,0,14,1,255,128,122,26,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, + 115,101,116,105,116,101,109,95,95,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, + 0,0,114,44,1,0,0,114,121,0,0,0,41,2,114,4, + 0,0,0,114,43,1,0,0,114,8,1,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,7,95,95, + 108,101,110,95,95,185,4,0,0,114,47,1,0,0,122,22, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, + 95,108,101,110,95,95,99,1,0,0,0,0,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,243, + 12,0,0,0,100,1,160,0,124,0,106,1,161,1,83,0, + 41,2,78,122,20,95,78,97,109,101,115,112,97,99,101,80, + 97,116,104,40,123,33,114,125,41,41,2,114,77,0,0,0, + 114,35,1,0,0,114,8,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,8,95,95,114,101,112, + 114,95,95,188,4,0,0,114,47,1,0,0,122,23,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,114, + 101,112,114,95,95,99,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,12, + 0,0,0,124,1,124,0,160,0,161,0,118,0,83,0,114, + 121,0,0,0,114,48,1,0,0,169,2,114,130,0,0,0, + 218,4,105,116,101,109,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,12,95,95,99,111,110,116,97,105,110, + 115,95,95,191,4,0,0,114,47,1,0,0,122,27,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,99, + 111,110,116,97,105,110,115,95,95,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, + 0,0,115,16,0,0,0,124,0,106,0,160,1,124,1,161, + 1,1,0,100,0,83,0,114,121,0,0,0,41,2,114,35, + 1,0,0,114,197,0,0,0,114,55,1,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,197,0,0, + 0,194,4,0,0,243,4,0,0,0,16,1,255,128,122,21, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,97, + 112,112,101,110,100,78,41,15,114,137,0,0,0,114,136,0, + 0,0,114,138,0,0,0,114,139,0,0,0,114,223,0,0, + 0,114,41,1,0,0,114,36,1,0,0,114,43,1,0,0, + 114,46,1,0,0,114,50,1,0,0,114,51,1,0,0,114, + 52,1,0,0,114,54,1,0,0,114,57,1,0,0,114,197, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,33,1,0,0,136,4,0,0, + 115,28,0,0,0,8,0,4,1,8,6,8,6,8,10,8, + 4,8,13,8,3,8,3,8,3,8,3,8,3,12,3,255, + 128,114,33,1,0,0,99,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, - 92,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, - 100,2,100,3,132,0,90,4,100,4,100,5,132,0,90,5, - 100,6,100,7,132,0,90,6,100,8,100,9,132,0,90,7, - 100,10,100,11,132,0,90,8,100,12,100,13,132,0,90,9, - 100,14,100,15,132,0,90,10,100,16,100,17,132,0,90,11, - 101,12,100,18,100,19,132,0,131,1,90,13,100,20,83,0, - 41,21,114,17,1,0,0,122,93,76,111,97,100,101,114,32, - 102,111,114,32,101,120,116,101,110,115,105,111,110,32,109,111, - 100,117,108,101,115,46,10,10,32,32,32,32,84,104,101,32, - 99,111,110,115,116,114,117,99,116,111,114,32,105,115,32,100, - 101,115,105,103,110,101,100,32,116,111,32,119,111,114,107,32, - 119,105,116,104,32,70,105,108,101,70,105,110,100,101,114,46, - 10,10,32,32,32,32,99,3,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, - 100,0,83,0,114,121,0,0,0,114,170,0,0,0,41,3, - 114,130,0,0,0,114,128,0,0,0,114,58,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,223, - 0,0,0,90,4,0,0,115,6,0,0,0,6,1,10,1, - 255,128,122,28,69,120,116,101,110,115,105,111,110,70,105,108, - 101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95, - 99,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,2,0,0,0,67,0,0,0,114,255,0,0,0,114,121, - 0,0,0,114,0,1,0,0,114,2,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,3,1,0, - 0,94,4,0,0,114,4,1,0,0,122,26,69,120,116,101, - 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46, - 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,114, - 5,1,0,0,114,121,0,0,0,114,6,1,0,0,114,8, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,9,1,0,0,98,4,0,0,114,10,1,0,0, - 122,28,69,120,116,101,110,115,105,111,110,70,105,108,101,76, - 111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,2, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5, - 0,0,0,67,0,0,0,115,36,0,0,0,116,0,160,1, - 116,2,106,3,124,1,161,2,125,2,116,0,160,4,100,1, - 124,1,106,5,124,0,106,6,161,3,1,0,124,2,83,0, - 41,3,122,38,67,114,101,97,116,101,32,97,110,32,117,110, - 105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,122,38,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,32,123,33,114, - 125,32,108,111,97,100,101,100,32,102,114,111,109,32,123,33, - 114,125,78,41,7,114,146,0,0,0,114,229,0,0,0,114, - 174,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, - 97,109,105,99,114,160,0,0,0,114,128,0,0,0,114,58, - 0,0,0,41,3,114,130,0,0,0,114,198,0,0,0,114, - 231,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,226,0,0,0,101,4,0,0,115,16,0,0, - 0,4,2,6,1,4,255,6,2,8,1,4,255,4,2,255, - 128,122,33,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,99,114,101,97,116,101,95,109,111, - 100,117,108,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, - 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, - 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, - 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, - 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, - 110,32,109,111,100,117,108,101,122,40,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,32,123,33,114,125,32, - 101,120,101,99,117,116,101,100,32,102,114,111,109,32,123,33, - 114,125,78,41,7,114,146,0,0,0,114,229,0,0,0,114, - 174,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, - 105,99,114,160,0,0,0,114,128,0,0,0,114,58,0,0, - 0,169,2,114,130,0,0,0,114,231,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,232,0,0, - 0,109,4,0,0,115,10,0,0,0,14,2,6,1,8,1, - 8,255,255,128,122,31,69,120,116,101,110,115,105,111,110,70, - 105,108,101,76,111,97,100,101,114,46,101,120,101,99,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,3,0,0,0,115,36, - 0,0,0,116,0,124,0,106,1,131,1,100,1,25,0,137, - 0,116,2,135,0,102,1,100,2,100,3,132,8,116,3,68, - 0,131,1,131,1,83,0,41,5,122,49,82,101,116,117,114, - 110,32,84,114,117,101,32,105,102,32,116,104,101,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,105, - 115,32,97,32,112,97,99,107,97,103,101,46,114,3,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,51,0,0,0,115,26,0,0,0,124, - 0,93,18,125,1,136,0,100,0,124,1,23,0,107,2,86, - 0,1,0,113,2,100,1,83,0,41,2,114,223,0,0,0, - 78,114,7,0,0,0,169,2,114,5,0,0,0,218,6,115, - 117,102,102,105,120,169,1,90,9,102,105,108,101,95,110,97, - 109,101,114,7,0,0,0,114,8,0,0,0,114,9,0,0, - 0,118,4,0,0,115,8,0,0,0,4,0,2,1,20,255, - 255,128,122,49,69,120,116,101,110,115,105,111,110,70,105,108, - 101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97, - 103,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, - 101,120,112,114,62,78,41,4,114,61,0,0,0,114,58,0, - 0,0,218,3,97,110,121,114,219,0,0,0,114,234,0,0, - 0,114,7,0,0,0,114,31,1,0,0,114,8,0,0,0, - 114,193,0,0,0,115,4,0,0,115,10,0,0,0,14,2, - 12,1,2,1,8,255,255,128,122,30,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,46,105,115, + 88,0,0,0,101,0,90,1,100,0,90,2,100,1,100,2, + 132,0,90,3,101,4,100,3,100,4,132,0,131,1,90,5, + 100,5,100,6,132,0,90,6,100,7,100,8,132,0,90,7, + 100,9,100,10,132,0,90,8,100,11,100,12,132,0,90,9, + 100,13,100,14,132,0,90,10,100,15,100,16,132,0,90,11, + 100,17,100,18,132,0,90,12,100,19,83,0,41,20,218,16, + 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, + 99,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,67,0,0,0,115,18,0,0,0,116,0, + 124,1,124,2,124,3,131,3,124,0,95,1,100,0,83,0, + 114,121,0,0,0,41,2,114,33,1,0,0,114,35,1,0, + 0,114,39,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,223,0,0,0,200,4,0,0,115,4, + 0,0,0,18,1,255,128,122,25,95,78,97,109,101,115,112, + 97,99,101,76,111,97,100,101,114,46,95,95,105,110,105,116, + 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,4,0,0,0,67,0,0,0,115,24,0,0,0, + 116,0,160,1,100,1,116,2,161,2,1,0,100,2,160,3, + 124,0,106,4,161,1,83,0,41,4,122,115,82,101,116,117, + 114,110,32,114,101,112,114,32,102,111,114,32,116,104,101,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,109,101,116,104,111,100,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,46,32,32,84,104,101,32, + 105,109,112,111,114,116,32,109,97,99,104,105,110,101,114,121, + 32,100,111,101,115,32,116,104,101,32,106,111,98,32,105,116, + 115,101,108,102,46,10,10,32,32,32,32,32,32,32,32,122, + 82,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, + 114,46,109,111,100,117,108,101,95,114,101,112,114,40,41,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,32,97,110, + 100,32,115,108,97,116,101,100,32,102,111,114,32,114,101,109, + 111,118,97,108,32,105,110,32,80,121,116,104,111,110,32,51, + 46,49,50,122,25,60,109,111,100,117,108,101,32,123,33,114, + 125,32,40,110,97,109,101,115,112,97,99,101,41,62,78,41, + 5,114,88,0,0,0,114,89,0,0,0,114,90,0,0,0, + 114,77,0,0,0,114,137,0,0,0,41,1,114,231,0,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,11,109,111,100,117,108,101,95,114,101,112,114,203,4,0, + 0,115,10,0,0,0,6,7,2,1,4,255,12,2,255,128, + 122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,100, + 101,114,46,109,111,100,117,108,101,95,114,101,112,114,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,114,24,0,0,0,41,2,78,84, + 114,7,0,0,0,114,234,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,193,0,0,0,214,4, + 0,0,243,4,0,0,0,4,1,255,128,122,27,95,78,97, + 109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,115, 95,112,97,99,107,97,103,101,99,2,0,0,0,0,0,0, 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, - 0,114,24,0,0,0,41,2,122,63,82,101,116,117,114,110, - 32,78,111,110,101,32,97,115,32,97,110,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,32,99,97,110, - 110,111,116,32,99,114,101,97,116,101,32,97,32,99,111,100, - 101,32,111,98,106,101,99,116,46,78,114,7,0,0,0,114, - 234,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,228,0,0,0,121,4,0,0,114,25,0,0, - 0,122,28,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,114,24,0,0,0,41,2,122, - 53,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, - 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, - 115,32,104,97,118,101,32,110,111,32,115,111,117,114,99,101, - 32,99,111,100,101,46,78,114,7,0,0,0,114,234,0,0, + 0,114,24,0,0,0,41,2,78,114,10,0,0,0,114,7, + 0,0,0,114,234,0,0,0,114,7,0,0,0,114,7,0, + 0,0,114,8,0,0,0,114,244,0,0,0,217,4,0,0, + 114,61,1,0,0,122,27,95,78,97,109,101,115,112,97,99, + 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, + 99,101,99,2,0,0,0,0,0,0,0,0,0,0,0,2, + 0,0,0,6,0,0,0,67,0,0,0,115,16,0,0,0, + 116,0,100,1,100,2,100,3,100,4,100,5,141,4,83,0, + 41,6,78,114,10,0,0,0,122,8,60,115,116,114,105,110, + 103,62,114,230,0,0,0,84,41,1,114,246,0,0,0,41, + 1,114,247,0,0,0,114,234,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,228,0,0,0,220, + 4,0,0,114,58,1,0,0,122,25,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,99, + 111,100,101,99,2,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,114,24,0,0, + 0,114,224,0,0,0,114,7,0,0,0,114,225,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 226,0,0,0,223,4,0,0,114,227,0,0,0,122,30,95, + 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, + 99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,0,83,0,114, + 121,0,0,0,114,7,0,0,0,114,28,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,114,232,0, + 0,0,226,4,0,0,114,61,1,0,0,122,28,95,78,97, + 109,101,115,112,97,99,101,76,111,97,100,101,114,46,101,120, + 101,99,95,109,111,100,117,108,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,0, + 0,0,115,26,0,0,0,116,0,160,1,100,1,124,0,106, + 2,161,2,1,0,116,0,160,3,124,0,124,1,161,2,83, + 0,41,3,122,98,76,111,97,100,32,97,32,110,97,109,101, + 115,112,97,99,101,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32, + 32,32,32,32,32,32,32,122,38,110,97,109,101,115,112,97, + 99,101,32,109,111,100,117,108,101,32,108,111,97,100,101,100, + 32,119,105,116,104,32,112,97,116,104,32,123,33,114,125,78, + 41,4,114,146,0,0,0,114,160,0,0,0,114,35,1,0, + 0,114,233,0,0,0,114,234,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,235,0,0,0,229, + 4,0,0,115,10,0,0,0,6,7,4,1,4,255,12,3, + 255,128,122,28,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,101, + 99,2,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,2,0,0,0,67,0,0,0,115,22,0,0,0,100,1, + 100,2,108,0,109,1,125,2,1,0,124,2,124,0,106,2, + 131,1,83,0,41,3,78,114,0,0,0,0,41,1,218,15, + 78,97,109,101,115,112,97,99,101,82,101,97,100,101,114,41, + 3,114,19,1,0,0,114,62,1,0,0,114,35,1,0,0, + 41,3,114,130,0,0,0,114,231,0,0,0,114,62,1,0, 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,244,0,0,0,125,4,0,0,114,25,0,0,0,122,30, - 69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,97, - 100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1, - 0,0,0,67,0,0,0,114,13,1,0,0,114,14,1,0, - 0,114,62,0,0,0,114,234,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,190,0,0,0,129, - 4,0,0,114,15,1,0,0,122,32,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,46,103,101, - 116,95,102,105,108,101,110,97,109,101,78,41,14,114,137,0, - 0,0,114,136,0,0,0,114,138,0,0,0,114,139,0,0, - 0,114,223,0,0,0,114,3,1,0,0,114,9,1,0,0, - 114,226,0,0,0,114,232,0,0,0,114,193,0,0,0,114, - 228,0,0,0,114,244,0,0,0,114,147,0,0,0,114,190, - 0,0,0,114,7,0,0,0,114,7,0,0,0,114,7,0, - 0,0,114,8,0,0,0,114,17,1,0,0,82,4,0,0, - 115,26,0,0,0,8,0,4,2,8,6,8,4,8,4,8, - 3,8,8,8,6,8,6,8,4,2,4,14,1,255,128,114, - 17,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,104,0, - 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, - 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, - 100,7,132,0,90,6,100,8,100,9,132,0,90,7,100,10, - 100,11,132,0,90,8,100,12,100,13,132,0,90,9,100,14, - 100,15,132,0,90,10,100,16,100,17,132,0,90,11,100,18, - 100,19,132,0,90,12,100,20,100,21,132,0,90,13,100,22, - 100,23,132,0,90,14,100,24,83,0,41,25,218,14,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,97,38,1,0, - 0,82,101,112,114,101,115,101,110,116,115,32,97,32,110,97, - 109,101,115,112,97,99,101,32,112,97,99,107,97,103,101,39, - 115,32,112,97,116,104,46,32,32,73,116,32,117,115,101,115, - 32,116,104,101,32,109,111,100,117,108,101,32,110,97,109,101, - 10,32,32,32,32,116,111,32,102,105,110,100,32,105,116,115, - 32,112,97,114,101,110,116,32,109,111,100,117,108,101,44,32, - 97,110,100,32,102,114,111,109,32,116,104,101,114,101,32,105, - 116,32,108,111,111,107,115,32,117,112,32,116,104,101,32,112, - 97,114,101,110,116,39,115,10,32,32,32,32,95,95,112,97, - 116,104,95,95,46,32,32,87,104,101,110,32,116,104,105,115, - 32,99,104,97,110,103,101,115,44,32,116,104,101,32,109,111, - 100,117,108,101,39,115,32,111,119,110,32,112,97,116,104,32, - 105,115,32,114,101,99,111,109,112,117,116,101,100,44,10,32, - 32,32,32,117,115,105,110,103,32,112,97,116,104,95,102,105, - 110,100,101,114,46,32,32,70,111,114,32,116,111,112,45,108, - 101,118,101,108,32,109,111,100,117,108,101,115,44,32,116,104, - 101,32,112,97,114,101,110,116,32,109,111,100,117,108,101,39, - 115,32,112,97,116,104,10,32,32,32,32,105,115,32,115,121, - 115,46,112,97,116,104,46,99,4,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0, - 115,36,0,0,0,124,1,124,0,95,0,124,2,124,0,95, - 1,116,2,124,0,160,3,161,0,131,1,124,0,95,4,124, - 3,124,0,95,5,100,0,83,0,114,121,0,0,0,41,6, - 218,5,95,110,97,109,101,218,5,95,112,97,116,104,114,123, - 0,0,0,218,16,95,103,101,116,95,112,97,114,101,110,116, - 95,112,97,116,104,218,17,95,108,97,115,116,95,112,97,114, - 101,110,116,95,112,97,116,104,218,12,95,112,97,116,104,95, - 102,105,110,100,101,114,169,4,114,130,0,0,0,114,128,0, - 0,0,114,58,0,0,0,90,11,112,97,116,104,95,102,105, + 114,20,1,0,0,241,4,0,0,115,6,0,0,0,12,1, + 10,1,255,128,122,36,95,78,97,109,101,115,112,97,99,101, + 76,111,97,100,101,114,46,103,101,116,95,114,101,115,111,117, + 114,99,101,95,114,101,97,100,101,114,78,41,13,114,137,0, + 0,0,114,136,0,0,0,114,138,0,0,0,114,223,0,0, + 0,114,220,0,0,0,114,60,1,0,0,114,193,0,0,0, + 114,244,0,0,0,114,228,0,0,0,114,226,0,0,0,114, + 232,0,0,0,114,235,0,0,0,114,20,1,0,0,114,7, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,114,59,1,0,0,199,4,0,0,115,24,0,0,0, + 8,0,8,1,2,3,10,1,8,10,8,3,8,3,8,3, + 8,3,8,3,12,12,255,128,114,59,1,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,64,0,0,0,115,118,0,0,0,101,0,90,1,100, + 0,90,2,100,1,90,3,101,4,100,2,100,3,132,0,131, + 1,90,5,101,4,100,4,100,5,132,0,131,1,90,6,101, + 7,100,6,100,7,132,0,131,1,90,8,101,7,100,8,100, + 9,132,0,131,1,90,9,101,7,100,19,100,11,100,12,132, + 1,131,1,90,10,101,7,100,20,100,13,100,14,132,1,131, + 1,90,11,101,7,100,21,100,15,100,16,132,1,131,1,90, + 12,101,4,100,17,100,18,132,0,131,1,90,13,100,10,83, + 0,41,22,218,10,80,97,116,104,70,105,110,100,101,114,122, + 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, + 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97, + 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116, + 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 4,0,0,0,67,0,0,0,115,64,0,0,0,116,0,116, + 1,106,2,160,3,161,0,131,1,68,0,93,22,92,2,125, + 0,125,1,124,1,100,1,117,0,114,20,116,1,106,2,124, + 0,61,0,113,7,116,4,124,1,100,2,131,2,114,29,124, + 1,160,5,161,0,1,0,113,7,100,1,83,0,41,3,122, + 125,67,97,108,108,32,116,104,101,32,105,110,118,97,108,105, + 100,97,116,101,95,99,97,99,104,101,115,40,41,32,109,101, + 116,104,111,100,32,111,110,32,97,108,108,32,112,97,116,104, + 32,101,110,116,114,121,32,102,105,110,100,101,114,115,10,32, + 32,32,32,32,32,32,32,115,116,111,114,101,100,32,105,110, + 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,115,32,40,119,104,101,114,101, + 32,105,109,112,108,101,109,101,110,116,101,100,41,46,78,218, + 17,105,110,118,97,108,105,100,97,116,101,95,99,97,99,104, + 101,115,41,6,218,4,108,105,115,116,114,16,0,0,0,218, + 19,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, + 97,99,104,101,218,5,105,116,101,109,115,114,140,0,0,0, + 114,64,1,0,0,41,2,114,128,0,0,0,218,6,102,105, 110,100,101,114,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,223,0,0,0,142,4,0,0,115,10,0,0, - 0,6,1,6,1,14,1,10,1,255,128,122,23,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, - 0,4,0,0,0,3,0,0,0,67,0,0,0,115,38,0, - 0,0,124,0,106,0,160,1,100,1,161,1,92,3,125,1, - 125,2,125,3,124,2,100,2,107,2,114,30,100,3,83,0, - 124,1,100,4,102,2,83,0,41,6,122,62,82,101,116,117, - 114,110,115,32,97,32,116,117,112,108,101,32,111,102,32,40, - 112,97,114,101,110,116,45,109,111,100,117,108,101,45,110,97, - 109,101,44,32,112,97,114,101,110,116,45,112,97,116,104,45, - 97,116,116,114,45,110,97,109,101,41,114,86,0,0,0,114, - 10,0,0,0,41,2,114,16,0,0,0,114,58,0,0,0, - 90,8,95,95,112,97,116,104,95,95,78,41,2,114,34,1, - 0,0,114,55,0,0,0,41,4,114,130,0,0,0,114,26, - 1,0,0,218,3,100,111,116,90,2,109,101,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,23,95,102,105, - 110,100,95,112,97,114,101,110,116,95,112,97,116,104,95,110, - 97,109,101,115,148,4,0,0,115,10,0,0,0,18,2,8, - 1,4,2,8,3,255,128,122,38,95,78,97,109,101,115,112, - 97,99,101,80,97,116,104,46,95,102,105,110,100,95,112,97, - 114,101,110,116,95,112,97,116,104,95,110,97,109,101,115,99, - 1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,28,0,0,0,124,0,160, - 0,161,0,92,2,125,1,125,2,116,1,116,2,106,3,124, - 1,25,0,124,2,131,2,83,0,114,121,0,0,0,41,4, - 114,41,1,0,0,114,142,0,0,0,114,16,0,0,0,218, - 7,109,111,100,117,108,101,115,41,3,114,130,0,0,0,90, - 18,112,97,114,101,110,116,95,109,111,100,117,108,101,95,110, - 97,109,101,90,14,112,97,116,104,95,97,116,116,114,95,110, - 97,109,101,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,114,36,1,0,0,158,4,0,0,115,6,0,0,0, - 12,1,16,1,255,128,122,31,95,78,97,109,101,115,112,97, - 99,101,80,97,116,104,46,95,103,101,116,95,112,97,114,101, - 110,116,95,112,97,116,104,99,1,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, - 115,80,0,0,0,116,0,124,0,160,1,161,0,131,1,125, - 1,124,1,124,0,106,2,107,3,114,74,124,0,160,3,124, - 0,106,4,124,1,161,2,125,2,124,2,100,0,117,1,114, - 68,124,2,106,5,100,0,117,0,114,68,124,2,106,6,114, - 68,124,2,106,6,124,0,95,7,124,1,124,0,95,2,124, - 0,106,7,83,0,114,121,0,0,0,41,8,114,123,0,0, - 0,114,36,1,0,0,114,37,1,0,0,114,38,1,0,0, - 114,34,1,0,0,114,151,0,0,0,114,189,0,0,0,114, - 35,1,0,0,41,3,114,130,0,0,0,90,11,112,97,114, - 101,110,116,95,112,97,116,104,114,198,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,12,95,114, - 101,99,97,108,99,117,108,97,116,101,162,4,0,0,115,18, - 0,0,0,12,2,10,1,14,1,18,3,6,1,8,1,6, - 1,6,1,255,128,122,27,95,78,97,109,101,115,112,97,99, - 101,80,97,116,104,46,95,114,101,99,97,108,99,117,108,97, - 116,101,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,243,12,0,0,0, - 116,0,124,0,160,1,161,0,131,1,83,0,114,121,0,0, - 0,41,2,218,4,105,116,101,114,114,43,1,0,0,114,8, - 1,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,8,95,95,105,116,101,114,95,95,175,4,0,0, - 243,4,0,0,0,12,1,255,128,122,23,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,105,116,101,114, - 95,95,99,2,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,12,0,0,0, - 124,0,160,0,161,0,124,1,25,0,83,0,114,121,0,0, - 0,169,1,114,43,1,0,0,41,2,114,130,0,0,0,218, - 5,105,110,100,101,120,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,11,95,95,103,101,116,105,116,101,109, - 95,95,178,4,0,0,114,47,1,0,0,122,26,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,103,101, - 116,105,116,101,109,95,95,99,3,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, - 115,14,0,0,0,124,2,124,0,106,0,124,1,60,0,100, - 0,83,0,114,121,0,0,0,41,1,114,35,1,0,0,41, - 3,114,130,0,0,0,114,49,1,0,0,114,58,0,0,0, + 0,0,0,114,64,1,0,0,252,4,0,0,115,16,0,0, + 0,22,4,8,1,10,1,10,1,8,1,2,128,4,252,255, + 128,122,28,80,97,116,104,70,105,110,100,101,114,46,105,110, + 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,99, + 1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 9,0,0,0,67,0,0,0,115,76,0,0,0,116,0,106, + 1,100,1,117,1,114,14,116,0,106,1,115,14,116,2,160, + 3,100,2,116,4,161,2,1,0,116,0,106,1,68,0,93, + 17,125,1,122,7,124,1,124,0,131,1,87,0,2,0,1, + 0,83,0,4,0,116,5,121,37,1,0,1,0,1,0,89, + 0,113,17,100,1,83,0,119,0,41,3,122,46,83,101,97, + 114,99,104,32,115,121,115,46,112,97,116,104,95,104,111,111, + 107,115,32,102,111,114,32,97,32,102,105,110,100,101,114,32, + 102,111,114,32,39,112,97,116,104,39,46,78,122,23,115,121, + 115,46,112,97,116,104,95,104,111,111,107,115,32,105,115,32, + 101,109,112,116,121,41,6,114,16,0,0,0,218,10,112,97, + 116,104,95,104,111,111,107,115,114,88,0,0,0,114,89,0, + 0,0,114,149,0,0,0,114,129,0,0,0,41,2,114,58, + 0,0,0,90,4,104,111,111,107,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,11,95,112,97,116,104,95, + 104,111,111,107,115,6,5,0,0,115,20,0,0,0,16,3, + 12,1,10,1,2,1,14,1,12,1,4,1,4,2,2,253, + 255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,95, + 112,97,116,104,95,104,111,111,107,115,99,2,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,67, + 0,0,0,115,100,0,0,0,124,1,100,1,107,2,114,20, + 122,6,116,0,160,1,161,0,125,1,87,0,110,9,4,0, + 116,2,121,49,1,0,1,0,1,0,89,0,100,2,83,0, + 122,8,116,3,106,4,124,1,25,0,125,2,87,0,124,2, + 83,0,4,0,116,5,121,48,1,0,1,0,1,0,124,0, + 160,6,124,1,161,1,125,2,124,2,116,3,106,4,124,1, + 60,0,89,0,124,2,83,0,119,0,119,0,41,3,122,210, + 71,101,116,32,116,104,101,32,102,105,110,100,101,114,32,102, + 111,114,32,116,104,101,32,112,97,116,104,32,101,110,116,114, + 121,32,102,114,111,109,32,115,121,115,46,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,46,10, + 10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32, + 112,97,116,104,32,101,110,116,114,121,32,105,115,32,110,111, + 116,32,105,110,32,116,104,101,32,99,97,99,104,101,44,32, + 102,105,110,100,32,116,104,101,32,97,112,112,114,111,112,114, + 105,97,116,101,32,102,105,110,100,101,114,10,32,32,32,32, + 32,32,32,32,97,110,100,32,99,97,99,104,101,32,105,116, + 46,32,73,102,32,110,111,32,102,105,110,100,101,114,32,105, + 115,32,97,118,97,105,108,97,98,108,101,44,32,115,116,111, + 114,101,32,78,111,110,101,46,10,10,32,32,32,32,32,32, + 32,32,114,10,0,0,0,78,41,7,114,19,0,0,0,114, + 70,0,0,0,218,17,70,105,108,101,78,111,116,70,111,117, + 110,100,69,114,114,111,114,114,16,0,0,0,114,66,1,0, + 0,218,8,75,101,121,69,114,114,111,114,114,70,1,0,0, + 41,3,114,209,0,0,0,114,58,0,0,0,114,68,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 218,20,95,112,97,116,104,95,105,109,112,111,114,116,101,114, + 95,99,97,99,104,101,19,5,0,0,115,30,0,0,0,8, + 8,2,1,12,1,12,1,6,3,2,1,12,1,4,4,12, + 253,10,1,12,1,4,1,2,253,2,250,255,128,122,31,80, + 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, + 105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3, + 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4, + 0,0,0,67,0,0,0,115,110,0,0,0,116,0,124,2, + 100,1,131,2,114,13,124,2,160,1,124,1,161,1,92,2, + 125,3,125,4,110,21,116,2,160,3,124,2,161,1,155,0, + 100,2,157,2,125,5,116,4,160,5,124,5,116,6,161,2, + 1,0,124,2,160,7,124,1,161,1,125,3,103,0,125,4, + 124,3,100,0,117,1,114,44,116,2,160,8,124,1,124,3, + 161,2,83,0,116,2,160,9,124,1,100,0,161,2,125,6, + 124,4,124,6,95,10,124,6,83,0,41,3,78,114,148,0, + 0,0,122,53,46,102,105,110,100,95,115,112,101,99,40,41, + 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, + 105,110,103,32,98,97,99,107,32,116,111,32,102,105,110,100, + 95,109,111,100,117,108,101,40,41,41,11,114,140,0,0,0, + 114,148,0,0,0,114,146,0,0,0,90,12,95,111,98,106, + 101,99,116,95,110,97,109,101,114,88,0,0,0,114,89,0, + 0,0,114,149,0,0,0,114,217,0,0,0,114,212,0,0, + 0,114,194,0,0,0,114,189,0,0,0,41,7,114,209,0, + 0,0,114,150,0,0,0,114,68,1,0,0,114,151,0,0, + 0,114,152,0,0,0,114,153,0,0,0,114,198,0,0,0, 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 11,95,95,115,101,116,105,116,101,109,95,95,181,4,0,0, - 115,4,0,0,0,14,1,255,128,122,26,95,78,97,109,101, - 115,112,97,99,101,80,97,116,104,46,95,95,115,101,116,105, - 116,101,109,95,95,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,44, - 1,0,0,114,121,0,0,0,41,2,114,4,0,0,0,114, - 43,1,0,0,114,8,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,7,95,95,108,101,110,95, - 95,184,4,0,0,114,47,1,0,0,122,22,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110, - 95,95,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,243,12,0,0,0, - 100,1,160,0,124,0,106,1,161,1,83,0,41,2,78,122, - 20,95,78,97,109,101,115,112,97,99,101,80,97,116,104,40, - 123,33,114,125,41,41,2,114,77,0,0,0,114,35,1,0, - 0,114,8,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,95,95,114,101,112,114,95,95,187, - 4,0,0,114,47,1,0,0,122,23,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,46,95,95,114,101,112,114,95, - 95,99,2,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,67,0,0,0,115,12,0,0,0,124, - 1,124,0,160,0,161,0,118,0,83,0,114,121,0,0,0, - 114,48,1,0,0,169,2,114,130,0,0,0,218,4,105,116, - 101,109,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,218,12,95,95,99,111,110,116,97,105,110,115,95,95,190, - 4,0,0,114,47,1,0,0,122,27,95,78,97,109,101,115, - 112,97,99,101,80,97,116,104,46,95,95,99,111,110,116,97, - 105,110,115,95,95,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,16, - 0,0,0,124,0,106,0,160,1,124,1,161,1,1,0,100, - 0,83,0,114,121,0,0,0,41,2,114,35,1,0,0,114, - 197,0,0,0,114,55,1,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,197,0,0,0,193,4,0, - 0,243,4,0,0,0,16,1,255,128,122,21,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,97,112,112,101,110, - 100,78,41,15,114,137,0,0,0,114,136,0,0,0,114,138, - 0,0,0,114,139,0,0,0,114,223,0,0,0,114,41,1, - 0,0,114,36,1,0,0,114,43,1,0,0,114,46,1,0, - 0,114,50,1,0,0,114,51,1,0,0,114,52,1,0,0, - 114,54,1,0,0,114,57,1,0,0,114,197,0,0,0,114, + 16,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101, + 99,41,5,0,0,115,24,0,0,0,10,4,16,1,16,2, + 12,2,10,1,4,1,8,1,12,1,12,1,6,1,4,1, + 255,128,122,27,80,97,116,104,70,105,110,100,101,114,46,95, + 108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,78, + 99,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0, + 0,5,0,0,0,67,0,0,0,115,166,0,0,0,103,0, + 125,4,124,2,68,0,93,67,125,5,116,0,124,5,116,1, + 116,2,102,2,131,2,115,14,113,4,124,0,160,3,124,5, + 161,1,125,6,124,6,100,1,117,1,114,71,116,4,124,6, + 100,2,131,2,114,35,124,6,160,5,124,1,124,3,161,2, + 125,7,110,6,124,0,160,6,124,1,124,6,161,2,125,7, + 124,7,100,1,117,0,114,46,113,4,124,7,106,7,100,1, + 117,1,114,55,124,7,2,0,1,0,83,0,124,7,106,8, + 125,8,124,8,100,1,117,0,114,66,116,9,100,3,131,1, + 130,1,124,4,160,10,124,8,161,1,1,0,113,4,116,11, + 160,12,124,1,100,1,161,2,125,7,124,4,124,7,95,8, + 124,7,83,0,41,4,122,63,70,105,110,100,32,116,104,101, + 32,108,111,97,100,101,114,32,111,114,32,110,97,109,101,115, + 112,97,99,101,95,112,97,116,104,32,102,111,114,32,116,104, + 105,115,32,109,111,100,117,108,101,47,112,97,99,107,97,103, + 101,32,110,97,109,101,46,78,114,214,0,0,0,122,19,115, + 112,101,99,32,109,105,115,115,105,110,103,32,108,111,97,100, + 101,114,41,13,114,172,0,0,0,114,97,0,0,0,218,5, + 98,121,116,101,115,114,73,1,0,0,114,140,0,0,0,114, + 214,0,0,0,114,74,1,0,0,114,151,0,0,0,114,189, + 0,0,0,114,129,0,0,0,114,178,0,0,0,114,146,0, + 0,0,114,194,0,0,0,41,9,114,209,0,0,0,114,150, + 0,0,0,114,58,0,0,0,114,213,0,0,0,218,14,110, + 97,109,101,115,112,97,99,101,95,112,97,116,104,90,5,101, + 110,116,114,121,114,68,1,0,0,114,198,0,0,0,114,152, + 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,9,95,103,101,116,95,115,112,101,99,59,5,0, + 0,115,44,0,0,0,4,5,8,1,14,1,2,1,10,1, + 8,1,10,1,14,1,12,2,8,1,2,1,10,1,8,1, + 6,1,8,1,8,1,10,5,2,128,12,2,6,1,4,1, + 255,128,122,20,80,97,116,104,70,105,110,100,101,114,46,95, + 103,101,116,95,115,112,101,99,99,4,0,0,0,0,0,0, + 0,0,0,0,0,6,0,0,0,5,0,0,0,67,0,0, + 0,115,94,0,0,0,124,2,100,1,117,0,114,7,116,0, + 106,1,125,2,124,0,160,2,124,1,124,2,124,3,161,3, + 125,4,124,4,100,1,117,0,114,20,100,1,83,0,124,4, + 106,3,100,1,117,0,114,45,124,4,106,4,125,5,124,5, + 114,43,100,1,124,4,95,5,116,6,124,1,124,5,124,0, + 106,2,131,3,124,4,95,4,124,4,83,0,100,1,83,0, + 124,4,83,0,41,2,122,141,84,114,121,32,116,111,32,102, + 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,39, + 102,117,108,108,110,97,109,101,39,32,111,110,32,115,121,115, + 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,46, + 10,10,32,32,32,32,32,32,32,32,84,104,101,32,115,101, + 97,114,99,104,32,105,115,32,98,97,115,101,100,32,111,110, + 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, + 97,110,100,32,115,121,115,46,112,97,116,104,95,105,109,112, + 111,114,116,101,114,95,99,97,99,104,101,46,10,32,32,32, + 32,32,32,32,32,78,41,7,114,16,0,0,0,114,58,0, + 0,0,114,77,1,0,0,114,151,0,0,0,114,189,0,0, + 0,114,192,0,0,0,114,33,1,0,0,41,6,114,209,0, + 0,0,114,150,0,0,0,114,58,0,0,0,114,213,0,0, + 0,114,198,0,0,0,114,76,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,214,0,0,0,91, + 5,0,0,115,28,0,0,0,8,6,6,1,14,1,8,1, + 4,1,10,1,6,1,4,1,6,3,16,1,4,1,4,2, + 4,2,255,128,122,20,80,97,116,104,70,105,110,100,101,114, + 46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,30,0,0,0,124,0,160,0,124,1,124,2, + 161,2,125,3,124,3,100,1,117,0,114,12,100,1,83,0, + 124,3,106,1,83,0,41,2,122,170,102,105,110,100,32,116, + 104,101,32,109,111,100,117,108,101,32,111,110,32,115,121,115, + 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,32, + 98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116, + 104,95,104,111,111,107,115,32,97,110,100,10,32,32,32,32, + 32,32,32,32,115,121,115,46,112,97,116,104,95,105,109,112, + 111,114,116,101,114,95,99,97,99,104,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,78,114,215,0,0,0,114,216,0,0,0,114, + 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,217, + 0,0,0,115,5,0,0,115,10,0,0,0,12,8,8,1, + 4,1,6,1,255,128,122,22,80,97,116,104,70,105,110,100, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,0, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, + 0,0,0,79,0,0,0,115,28,0,0,0,100,1,100,2, + 108,0,109,1,125,2,1,0,124,2,106,2,124,0,105,0, + 124,1,164,1,142,1,83,0,41,4,97,32,1,0,0,10, + 32,32,32,32,32,32,32,32,70,105,110,100,32,100,105,115, + 116,114,105,98,117,116,105,111,110,115,46,10,10,32,32,32, + 32,32,32,32,32,82,101,116,117,114,110,32,97,110,32,105, + 116,101,114,97,98,108,101,32,111,102,32,97,108,108,32,68, + 105,115,116,114,105,98,117,116,105,111,110,32,105,110,115,116, + 97,110,99,101,115,32,99,97,112,97,98,108,101,32,111,102, + 10,32,32,32,32,32,32,32,32,108,111,97,100,105,110,103, + 32,116,104,101,32,109,101,116,97,100,97,116,97,32,102,111, + 114,32,112,97,99,107,97,103,101,115,32,109,97,116,99,104, + 105,110,103,32,96,96,99,111,110,116,101,120,116,46,110,97, + 109,101,96,96,10,32,32,32,32,32,32,32,32,40,111,114, + 32,97,108,108,32,110,97,109,101,115,32,105,102,32,96,96, + 78,111,110,101,96,96,32,105,110,100,105,99,97,116,101,100, + 41,32,97,108,111,110,103,32,116,104,101,32,112,97,116,104, + 115,32,105,110,32,116,104,101,32,108,105,115,116,10,32,32, + 32,32,32,32,32,32,111,102,32,100,105,114,101,99,116,111, + 114,105,101,115,32,96,96,99,111,110,116,101,120,116,46,112, + 97,116,104,96,96,46,10,32,32,32,32,32,32,32,32,114, + 0,0,0,0,41,1,218,18,77,101,116,97,100,97,116,97, + 80,97,116,104,70,105,110,100,101,114,78,41,3,90,18,105, + 109,112,111,114,116,108,105,98,46,109,101,116,97,100,97,116, + 97,114,78,1,0,0,218,18,102,105,110,100,95,100,105,115, + 116,114,105,98,117,116,105,111,110,115,41,3,114,131,0,0, + 0,114,132,0,0,0,114,78,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,79,1,0,0,128, + 5,0,0,115,6,0,0,0,12,10,16,1,255,128,122,29, + 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, + 100,105,115,116,114,105,98,117,116,105,111,110,115,41,1,78, + 41,2,78,78,41,1,78,41,14,114,137,0,0,0,114,136, + 0,0,0,114,138,0,0,0,114,139,0,0,0,114,220,0, + 0,0,114,64,1,0,0,114,70,1,0,0,114,221,0,0, + 0,114,73,1,0,0,114,74,1,0,0,114,77,1,0,0, + 114,214,0,0,0,114,217,0,0,0,114,79,1,0,0,114, 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,33,1,0,0,135,4,0,0,115,28,0,0, - 0,8,0,4,1,8,6,8,6,8,10,8,4,8,13,8, - 3,8,3,8,3,8,3,8,3,12,3,255,128,114,33,1, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,64,0,0,0,115,88,0,0,0, - 101,0,90,1,100,0,90,2,100,1,100,2,132,0,90,3, - 101,4,100,3,100,4,132,0,131,1,90,5,100,5,100,6, - 132,0,90,6,100,7,100,8,132,0,90,7,100,9,100,10, - 132,0,90,8,100,11,100,12,132,0,90,9,100,13,100,14, - 132,0,90,10,100,15,100,16,132,0,90,11,100,17,100,18, - 132,0,90,12,100,19,83,0,41,20,218,16,95,78,97,109, - 101,115,112,97,99,101,76,111,97,100,101,114,99,4,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0, - 0,67,0,0,0,115,18,0,0,0,116,0,124,1,124,2, - 124,3,131,3,124,0,95,1,100,0,83,0,114,121,0,0, - 0,41,2,114,33,1,0,0,114,35,1,0,0,114,39,1, + 0,0,0,114,63,1,0,0,248,4,0,0,115,38,0,0, + 0,8,0,4,2,2,2,10,1,2,9,10,1,2,12,10, + 1,2,21,10,1,2,17,12,1,2,31,12,1,2,23,12, + 1,2,12,14,1,255,128,114,63,1,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,64,0,0,0,115,90,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, + 100,5,132,0,90,5,101,6,90,7,100,6,100,7,132,0, + 90,8,100,8,100,9,132,0,90,9,100,19,100,11,100,12, + 132,1,90,10,100,13,100,14,132,0,90,11,101,12,100,15, + 100,16,132,0,131,1,90,13,100,17,100,18,132,0,90,14, + 100,10,83,0,41,20,218,10,70,105,108,101,70,105,110,100, + 101,114,122,172,70,105,108,101,45,98,97,115,101,100,32,102, + 105,110,100,101,114,46,10,10,32,32,32,32,73,110,116,101, + 114,97,99,116,105,111,110,115,32,119,105,116,104,32,116,104, + 101,32,102,105,108,101,32,115,121,115,116,101,109,32,97,114, + 101,32,99,97,99,104,101,100,32,102,111,114,32,112,101,114, + 102,111,114,109,97,110,99,101,44,32,98,101,105,110,103,10, + 32,32,32,32,114,101,102,114,101,115,104,101,100,32,119,104, + 101,110,32,116,104,101,32,100,105,114,101,99,116,111,114,121, + 32,116,104,101,32,102,105,110,100,101,114,32,105,115,32,104, + 97,110,100,108,105,110,103,32,104,97,115,32,98,101,101,110, + 32,109,111,100,105,102,105,101,100,46,10,10,32,32,32,32, + 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,6,0,0,0,7,0,0,0,115,84,0,0,0,103,0, + 125,3,124,2,68,0,93,16,92,2,137,0,125,4,124,3, + 160,0,135,0,102,1,100,1,100,2,132,8,124,4,68,0, + 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, + 112,27,100,3,124,0,95,2,100,4,124,0,95,3,116,4, + 131,0,124,0,95,5,116,4,131,0,124,0,95,6,100,5, + 83,0,41,6,122,154,73,110,105,116,105,97,108,105,122,101, + 32,119,105,116,104,32,116,104,101,32,112,97,116,104,32,116, + 111,32,115,101,97,114,99,104,32,111,110,32,97,110,100,32, + 97,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101, + 114,32,111,102,10,32,32,32,32,32,32,32,32,50,45,116, + 117,112,108,101,115,32,99,111,110,116,97,105,110,105,110,103, + 32,116,104,101,32,108,111,97,100,101,114,32,97,110,100,32, + 116,104,101,32,102,105,108,101,32,115,117,102,102,105,120,101, + 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, + 32,32,32,32,32,114,101,99,111,103,110,105,122,101,115,46, + 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,3,0,0,0,51,0,0,0,115,22,0,0,0,124,0, + 93,7,125,1,124,1,136,0,102,2,86,0,1,0,113,1, + 100,0,83,0,114,121,0,0,0,114,7,0,0,0,114,29, + 1,0,0,169,1,114,151,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,9,0,0,0,157,5,0,0,114,14,0, + 0,0,122,38,70,105,108,101,70,105,110,100,101,114,46,95, + 95,105,110,105,116,95,95,46,60,108,111,99,97,108,115,62, + 46,60,103,101,110,101,120,112,114,62,114,86,0,0,0,114, + 116,0,0,0,78,41,7,114,178,0,0,0,218,8,95,108, + 111,97,100,101,114,115,114,58,0,0,0,218,11,95,112,97, + 116,104,95,109,116,105,109,101,218,3,115,101,116,218,11,95, + 112,97,116,104,95,99,97,99,104,101,218,19,95,114,101,108, + 97,120,101,100,95,112,97,116,104,95,99,97,99,104,101,41, + 5,114,130,0,0,0,114,58,0,0,0,218,14,108,111,97, + 100,101,114,95,100,101,116,97,105,108,115,90,7,108,111,97, + 100,101,114,115,114,200,0,0,0,114,7,0,0,0,114,81, + 1,0,0,114,8,0,0,0,114,223,0,0,0,151,5,0, + 0,115,18,0,0,0,4,4,12,1,26,1,6,1,10,2, + 6,1,8,1,12,1,255,128,122,19,70,105,108,101,70,105, + 110,100,101,114,46,95,95,105,110,105,116,95,95,99,1,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0, + 0,0,67,0,0,0,115,10,0,0,0,100,1,124,0,95, + 0,100,2,83,0,41,3,122,31,73,110,118,97,108,105,100, + 97,116,101,32,116,104,101,32,100,105,114,101,99,116,111,114, + 121,32,109,116,105,109,101,46,114,116,0,0,0,78,41,1, + 114,83,1,0,0,114,8,1,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,64,1,0,0,165,5, + 0,0,114,69,0,0,0,122,28,70,105,108,101,70,105,110, + 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,42, + 0,0,0,124,0,160,0,124,1,161,1,125,2,124,2,100, + 1,117,0,114,13,100,1,103,0,102,2,83,0,124,2,106, + 1,124,2,106,2,112,19,103,0,102,2,83,0,41,2,122, + 197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, + 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32, + 111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101, + 10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101, + 32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114, + 110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116, + 45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, + 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,78,41,3,114,214,0,0,0,114,151, + 0,0,0,114,189,0,0,0,41,3,114,130,0,0,0,114, + 150,0,0,0,114,198,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,148,0,0,0,171,5,0, + 0,115,10,0,0,0,10,7,8,1,8,1,16,1,255,128, + 122,22,70,105,108,101,70,105,110,100,101,114,46,102,105,110, + 100,95,108,111,97,100,101,114,99,6,0,0,0,0,0,0, + 0,0,0,0,0,7,0,0,0,6,0,0,0,67,0,0, + 0,115,26,0,0,0,124,1,124,2,124,3,131,2,125,6, + 116,0,124,2,124,3,124,6,124,4,100,1,141,4,83,0, + 41,2,78,114,188,0,0,0,41,1,114,201,0,0,0,41, + 7,114,130,0,0,0,114,199,0,0,0,114,150,0,0,0, + 114,58,0,0,0,90,4,115,109,115,108,114,213,0,0,0, + 114,151,0,0,0,114,7,0,0,0,114,7,0,0,0,114, + 8,0,0,0,114,77,1,0,0,183,5,0,0,115,10,0, + 0,0,10,1,8,1,2,1,6,255,255,128,122,20,70,105, + 108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,112, + 101,99,78,99,3,0,0,0,0,0,0,0,0,0,0,0, + 14,0,0,0,8,0,0,0,67,0,0,0,115,92,1,0, + 0,100,1,125,3,124,1,160,0,100,2,161,1,100,3,25, + 0,125,4,122,12,116,1,124,0,106,2,112,17,116,3,160, + 4,161,0,131,1,106,5,125,5,87,0,110,9,4,0,116, + 6,121,173,1,0,1,0,1,0,100,4,125,5,89,0,124, + 5,124,0,106,7,107,3,114,43,124,0,160,8,161,0,1, + 0,124,5,124,0,95,7,116,9,131,0,114,54,124,0,106, + 10,125,6,124,4,160,11,161,0,125,7,110,5,124,0,106, + 12,125,6,124,4,125,7,124,7,124,6,118,0,114,106,116, + 13,124,0,106,2,124,4,131,2,125,8,124,0,106,14,68, + 0,93,29,92,2,125,9,125,10,100,5,124,9,23,0,125, + 11,116,13,124,8,124,11,131,2,125,12,116,15,124,12,131, + 1,114,101,124,0,160,16,124,10,124,1,124,12,124,8,103, + 1,124,2,161,5,2,0,1,0,83,0,113,72,116,17,124, + 8,131,1,125,3,124,0,106,14,68,0,93,41,92,2,125, + 9,125,10,116,13,124,0,106,2,124,4,124,9,23,0,131, + 2,125,12,116,18,106,19,100,6,124,12,100,3,100,7,141, + 3,1,0,124,7,124,9,23,0,124,6,118,0,114,150,116, + 15,124,12,131,1,114,150,124,0,160,16,124,10,124,1,124, + 12,100,8,124,2,161,5,2,0,1,0,83,0,113,109,124, + 3,114,171,116,18,160,19,100,9,124,8,161,2,1,0,116, + 18,160,20,124,1,100,8,161,2,125,13,124,8,103,1,124, + 13,95,21,124,13,83,0,100,8,83,0,119,0,41,10,122, + 111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,115, + 112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,116, + 104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,99, + 44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,116, + 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, + 70,114,86,0,0,0,114,45,0,0,0,114,116,0,0,0, + 114,223,0,0,0,122,9,116,114,121,105,110,103,32,123,125, + 41,1,90,9,118,101,114,98,111,115,105,116,121,78,122,25, + 112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,97, + 99,101,32,102,111,114,32,123,125,41,22,114,55,0,0,0, + 114,63,0,0,0,114,58,0,0,0,114,19,0,0,0,114, + 70,0,0,0,114,22,1,0,0,114,64,0,0,0,114,83, + 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, + 114,22,0,0,0,114,86,1,0,0,114,117,0,0,0,114, + 85,1,0,0,114,54,0,0,0,114,82,1,0,0,114,68, + 0,0,0,114,77,1,0,0,114,71,0,0,0,114,146,0, + 0,0,114,160,0,0,0,114,194,0,0,0,114,189,0,0, + 0,41,14,114,130,0,0,0,114,150,0,0,0,114,213,0, + 0,0,90,12,105,115,95,110,97,109,101,115,112,97,99,101, + 90,11,116,97,105,108,95,109,111,100,117,108,101,114,180,0, + 0,0,90,5,99,97,99,104,101,90,12,99,97,99,104,101, + 95,109,111,100,117,108,101,90,9,98,97,115,101,95,112,97, + 116,104,114,30,1,0,0,114,199,0,0,0,90,13,105,110, + 105,116,95,102,105,108,101,110,97,109,101,90,9,102,117,108, + 108,95,112,97,116,104,114,198,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,214,0,0,0,188, + 5,0,0,115,80,0,0,0,4,5,14,1,2,1,24,1, + 12,1,6,1,10,1,8,1,6,1,6,2,6,1,10,1, + 6,2,4,1,8,2,12,1,14,1,8,1,10,1,8,1, + 24,1,2,255,8,5,14,2,16,1,16,1,12,1,8,1, + 10,1,4,1,8,255,2,128,4,2,12,1,12,1,8,1, + 4,1,4,1,2,219,255,128,122,20,70,105,108,101,70,105, + 110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,1, + 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,10, + 0,0,0,67,0,0,0,115,190,0,0,0,124,0,106,0, + 125,1,122,11,116,1,160,2,124,1,112,11,116,1,160,3, + 161,0,161,1,125,2,87,0,110,12,4,0,116,4,116,5, + 116,6,102,3,121,94,1,0,1,0,1,0,103,0,125,2, + 89,0,116,7,106,8,160,9,100,1,161,1,115,39,116,10, + 124,2,131,1,124,0,95,11,110,37,116,10,131,0,125,3, + 124,2,68,0,93,28,125,4,124,4,160,12,100,2,161,1, + 92,3,125,5,125,6,125,7,124,6,114,65,100,3,160,13, + 124,5,124,7,160,14,161,0,161,2,125,8,110,2,124,5, + 125,8,124,3,160,15,124,8,161,1,1,0,113,44,124,3, + 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,92, + 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, + 100,6,83,0,100,6,83,0,119,0,41,7,122,68,70,105, + 108,108,32,116,104,101,32,99,97,99,104,101,32,111,102,32, + 112,111,116,101,110,116,105,97,108,32,109,111,100,117,108,101, + 115,32,97,110,100,32,112,97,99,107,97,103,101,115,32,102, + 111,114,32,116,104,105,115,32,100,105,114,101,99,116,111,114, + 121,46,114,15,0,0,0,114,86,0,0,0,114,76,0,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,83,0,0,0,115,20,0,0,0,104, + 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, + 2,83,0,114,7,0,0,0,41,1,114,117,0,0,0,41, + 2,114,5,0,0,0,90,2,102,110,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,114,13,0,0,0,9,6, + 0,0,115,4,0,0,0,20,0,255,128,122,41,70,105,108, + 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, + 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, + 116,99,111,109,112,62,78,41,18,114,58,0,0,0,114,19, + 0,0,0,90,7,108,105,115,116,100,105,114,114,70,0,0, + 0,114,71,1,0,0,218,15,80,101,114,109,105,115,115,105, + 111,110,69,114,114,111,114,218,18,78,111,116,65,68,105,114, + 101,99,116,111,114,121,69,114,114,111,114,114,16,0,0,0, + 114,26,0,0,0,114,27,0,0,0,114,84,1,0,0,114, + 85,1,0,0,114,112,0,0,0,114,77,0,0,0,114,117, + 0,0,0,218,3,97,100,100,114,28,0,0,0,114,86,1, + 0,0,41,9,114,130,0,0,0,114,58,0,0,0,90,8, + 99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,95, + 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, + 56,1,0,0,114,128,0,0,0,114,40,1,0,0,114,30, + 1,0,0,90,8,110,101,119,95,110,97,109,101,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,88,1,0, + 0,236,5,0,0,115,40,0,0,0,6,2,2,1,22,1, + 18,1,6,3,12,3,12,1,6,7,8,1,16,1,4,1, + 18,1,4,2,12,1,6,1,12,1,20,1,4,255,2,233, + 255,128,122,22,70,105,108,101,70,105,110,100,101,114,46,95, + 102,105,108,108,95,99,97,99,104,101,99,1,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,7, + 0,0,0,115,18,0,0,0,135,0,135,1,102,2,100,1, + 100,2,132,8,125,2,124,2,83,0,41,4,97,20,1,0, + 0,65,32,99,108,97,115,115,32,109,101,116,104,111,100,32, + 119,104,105,99,104,32,114,101,116,117,114,110,115,32,97,32, + 99,108,111,115,117,114,101,32,116,111,32,117,115,101,32,111, + 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,10, + 32,32,32,32,32,32,32,32,119,104,105,99,104,32,119,105, + 108,108,32,114,101,116,117,114,110,32,97,110,32,105,110,115, + 116,97,110,99,101,32,117,115,105,110,103,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,108,111,97,100,101,114, + 115,32,97,110,100,32,116,104,101,32,112,97,116,104,10,32, + 32,32,32,32,32,32,32,99,97,108,108,101,100,32,111,110, + 32,116,104,101,32,99,108,111,115,117,114,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, + 116,104,32,99,97,108,108,101,100,32,111,110,32,116,104,101, + 32,99,108,111,115,117,114,101,32,105,115,32,110,111,116,32, + 97,32,100,105,114,101,99,116,111,114,121,44,32,73,109,112, + 111,114,116,69,114,114,111,114,32,105,115,10,32,32,32,32, + 32,32,32,32,114,97,105,115,101,100,46,10,10,32,32,32, + 32,32,32,32,32,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,36, + 0,0,0,116,0,124,0,131,1,115,10,116,1,100,1,124, + 0,100,2,141,2,130,1,136,0,124,0,103,1,136,1,162, + 1,82,0,142,0,83,0,41,4,122,45,80,97,116,104,32, + 104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,108, + 105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,108, + 101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,100, + 105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,115, + 117,112,112,111,114,116,101,100,114,62,0,0,0,78,41,2, + 114,71,0,0,0,114,129,0,0,0,114,62,0,0,0,169, + 2,114,209,0,0,0,114,87,1,0,0,114,7,0,0,0, + 114,8,0,0,0,218,24,112,97,116,104,95,104,111,111,107, + 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,21, + 6,0,0,115,8,0,0,0,8,2,12,1,16,1,255,128, + 122,54,70,105,108,101,70,105,110,100,101,114,46,112,97,116, + 104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,46, + 112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105, + 108,101,70,105,110,100,101,114,78,114,7,0,0,0,41,3, + 114,209,0,0,0,114,87,1,0,0,114,93,1,0,0,114, + 7,0,0,0,114,92,1,0,0,114,8,0,0,0,218,9, + 112,97,116,104,95,104,111,111,107,11,6,0,0,115,6,0, + 0,0,14,10,4,6,255,128,122,20,70,105,108,101,70,105, + 110,100,101,114,46,112,97,116,104,95,104,111,111,107,99,1, + 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, + 0,0,0,67,0,0,0,114,53,1,0,0,41,2,78,122, + 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125, + 41,41,2,114,77,0,0,0,114,58,0,0,0,114,8,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,223,0,0,0,199,4,0,0,115,4,0,0,0,18, - 1,255,128,122,25,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, - 0,0,0,67,0,0,0,115,24,0,0,0,116,0,160,1, - 100,1,116,2,161,2,1,0,100,2,160,3,124,0,106,4, - 161,1,83,0,41,4,122,115,82,101,116,117,114,110,32,114, - 101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,46,32,32,84,104,101,32,105,109,112,111, - 114,116,32,109,97,99,104,105,110,101,114,121,32,100,111,101, - 115,32,116,104,101,32,106,111,98,32,105,116,115,101,108,102, - 46,10,10,32,32,32,32,32,32,32,32,122,82,95,78,97, - 109,101,115,112,97,99,101,76,111,97,100,101,114,46,109,111, - 100,117,108,101,95,114,101,112,114,40,41,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, - 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, - 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,122, - 25,60,109,111,100,117,108,101,32,123,33,114,125,32,40,110, - 97,109,101,115,112,97,99,101,41,62,78,41,5,114,88,0, - 0,0,114,89,0,0,0,114,90,0,0,0,114,77,0,0, - 0,114,137,0,0,0,41,1,114,231,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,11,109,111, - 100,117,108,101,95,114,101,112,114,202,4,0,0,115,10,0, - 0,0,6,7,2,1,4,255,12,2,255,128,122,28,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,109, - 111,100,117,108,101,95,114,101,112,114,99,2,0,0,0,0, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,114,24,0,0,0,41,2,78,84,114,7,0,0, - 0,114,234,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,193,0,0,0,213,4,0,0,243,4, - 0,0,0,4,1,255,128,122,27,95,78,97,109,101,115,112, - 97,99,101,76,111,97,100,101,114,46,105,115,95,112,97,99, - 107,97,103,101,99,2,0,0,0,0,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,114,24,0, - 0,0,41,2,78,114,10,0,0,0,114,7,0,0,0,114, - 234,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,244,0,0,0,216,4,0,0,114,61,1,0, - 0,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,6, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,100,1, - 100,2,100,3,100,4,100,5,141,4,83,0,41,6,78,114, - 10,0,0,0,122,8,60,115,116,114,105,110,103,62,114,230, - 0,0,0,84,41,1,114,246,0,0,0,41,1,114,247,0, - 0,0,114,234,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,228,0,0,0,219,4,0,0,114, - 58,1,0,0,122,25,95,78,97,109,101,115,112,97,99,101, - 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99, - 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 1,0,0,0,67,0,0,0,114,24,0,0,0,114,224,0, - 0,0,114,7,0,0,0,114,225,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,114,226,0,0,0, - 222,4,0,0,114,227,0,0,0,122,30,95,78,97,109,101, - 115,112,97,99,101,76,111,97,100,101,114,46,99,114,101,97, - 116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,0,83,0,114,121,0,0,0, - 114,7,0,0,0,114,28,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,232,0,0,0,225,4, - 0,0,114,61,1,0,0,122,28,95,78,97,109,101,115,112, - 97,99,101,76,111,97,100,101,114,46,101,120,101,99,95,109, - 111,100,117,108,101,99,2,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,26, - 0,0,0,116,0,160,1,100,1,124,0,106,2,161,2,1, - 0,116,0,160,3,124,0,124,1,161,2,83,0,41,3,122, - 98,76,111,97,100,32,97,32,110,97,109,101,115,112,97,99, - 101,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, - 115,101,32,101,120,101,99,95,109,111,100,117,108,101,40,41, - 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, - 32,32,32,122,38,110,97,109,101,115,112,97,99,101,32,109, - 111,100,117,108,101,32,108,111,97,100,101,100,32,119,105,116, - 104,32,112,97,116,104,32,123,33,114,125,78,41,4,114,146, - 0,0,0,114,160,0,0,0,114,35,1,0,0,114,233,0, - 0,0,114,234,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,235,0,0,0,228,4,0,0,115, - 10,0,0,0,6,7,4,1,4,255,12,3,255,128,122,28, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0, - 0,67,0,0,0,115,22,0,0,0,100,1,100,2,108,0, - 109,1,125,2,1,0,124,2,124,0,106,2,131,1,83,0, - 41,3,78,114,0,0,0,0,41,1,218,15,78,97,109,101, - 115,112,97,99,101,82,101,97,100,101,114,41,3,114,19,1, - 0,0,114,62,1,0,0,114,35,1,0,0,41,3,114,130, - 0,0,0,114,231,0,0,0,114,62,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,20,1,0, - 0,240,4,0,0,115,6,0,0,0,12,1,10,1,255,128, - 122,36,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,46,103,101,116,95,114,101,115,111,117,114,99,101,95, - 114,101,97,100,101,114,78,41,13,114,137,0,0,0,114,136, - 0,0,0,114,138,0,0,0,114,223,0,0,0,114,220,0, - 0,0,114,60,1,0,0,114,193,0,0,0,114,244,0,0, - 0,114,228,0,0,0,114,226,0,0,0,114,232,0,0,0, - 114,235,0,0,0,114,20,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,59, - 1,0,0,198,4,0,0,115,24,0,0,0,8,0,8,1, - 2,3,10,1,8,10,8,3,8,3,8,3,8,3,8,3, - 12,12,255,128,114,59,1,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,4,0,0,0,64,0, - 0,0,115,118,0,0,0,101,0,90,1,100,0,90,2,100, - 1,90,3,101,4,100,2,100,3,132,0,131,1,90,5,101, - 4,100,4,100,5,132,0,131,1,90,6,101,7,100,6,100, - 7,132,0,131,1,90,8,101,7,100,8,100,9,132,0,131, - 1,90,9,101,7,100,19,100,11,100,12,132,1,131,1,90, - 10,101,7,100,20,100,13,100,14,132,1,131,1,90,11,101, - 7,100,21,100,15,100,16,132,1,131,1,90,12,101,4,100, - 17,100,18,132,0,131,1,90,13,100,10,83,0,41,22,218, - 10,80,97,116,104,70,105,110,100,101,114,122,62,77,101,116, - 97,32,112,97,116,104,32,102,105,110,100,101,114,32,102,111, - 114,32,115,121,115,46,112,97,116,104,32,97,110,100,32,112, - 97,99,107,97,103,101,32,95,95,112,97,116,104,95,95,32, - 97,116,116,114,105,98,117,116,101,115,46,99,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,64,0,0,0,116,0,116,1,106,2,160, - 3,161,0,131,1,68,0,93,44,92,2,125,0,125,1,124, - 1,100,1,117,0,114,40,116,1,106,2,124,0,61,0,113, - 14,116,4,124,1,100,2,131,2,114,58,124,1,160,5,161, - 0,1,0,113,14,100,1,83,0,41,3,122,125,67,97,108, - 108,32,116,104,101,32,105,110,118,97,108,105,100,97,116,101, - 95,99,97,99,104,101,115,40,41,32,109,101,116,104,111,100, - 32,111,110,32,97,108,108,32,112,97,116,104,32,101,110,116, - 114,121,32,102,105,110,100,101,114,115,10,32,32,32,32,32, - 32,32,32,115,116,111,114,101,100,32,105,110,32,115,121,115, - 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99, - 97,99,104,101,115,32,40,119,104,101,114,101,32,105,109,112, - 108,101,109,101,110,116,101,100,41,46,78,218,17,105,110,118, - 97,108,105,100,97,116,101,95,99,97,99,104,101,115,41,6, - 218,4,108,105,115,116,114,16,0,0,0,218,19,112,97,116, - 104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,101, - 218,5,105,116,101,109,115,114,140,0,0,0,114,64,1,0, - 0,41,2,114,128,0,0,0,218,6,102,105,110,100,101,114, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 64,1,0,0,251,4,0,0,115,16,0,0,0,22,4,8, - 1,10,1,10,1,8,1,2,128,4,252,255,128,122,28,80, - 97,116,104,70,105,110,100,101,114,46,105,110,118,97,108,105, - 100,97,116,101,95,99,97,99,104,101,115,99,1,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,9,0,0,0, - 67,0,0,0,115,76,0,0,0,116,0,106,1,100,1,117, - 1,114,28,116,0,106,1,115,28,116,2,160,3,100,2,116, - 4,161,2,1,0,116,0,106,1,68,0,93,34,125,1,122, - 14,124,1,124,0,131,1,87,0,2,0,1,0,83,0,4, - 0,116,5,121,74,1,0,1,0,1,0,89,0,113,34,100, - 1,83,0,119,0,41,3,122,46,83,101,97,114,99,104,32, - 115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,102, - 111,114,32,97,32,102,105,110,100,101,114,32,102,111,114,32, - 39,112,97,116,104,39,46,78,122,23,115,121,115,46,112,97, - 116,104,95,104,111,111,107,115,32,105,115,32,101,109,112,116, - 121,41,6,114,16,0,0,0,218,10,112,97,116,104,95,104, - 111,111,107,115,114,88,0,0,0,114,89,0,0,0,114,149, - 0,0,0,114,129,0,0,0,41,2,114,58,0,0,0,90, - 4,104,111,111,107,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,218,11,95,112,97,116,104,95,104,111,111,107, - 115,5,5,0,0,115,20,0,0,0,16,3,12,1,10,1, - 2,1,14,1,12,1,4,1,4,2,2,253,255,128,122,22, - 80,97,116,104,70,105,110,100,101,114,46,95,112,97,116,104, - 95,104,111,111,107,115,99,2,0,0,0,0,0,0,0,0, - 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115, - 100,0,0,0,124,1,100,1,107,2,114,40,122,12,116,0, - 160,1,161,0,125,1,87,0,110,18,4,0,116,2,121,98, - 1,0,1,0,1,0,89,0,100,2,83,0,122,16,116,3, - 106,4,124,1,25,0,125,2,87,0,124,2,83,0,4,0, - 116,5,121,96,1,0,1,0,1,0,124,0,160,6,124,1, - 161,1,125,2,124,2,116,3,106,4,124,1,60,0,89,0, - 124,2,83,0,119,0,119,0,41,3,122,210,71,101,116,32, - 116,104,101,32,102,105,110,100,101,114,32,102,111,114,32,116, - 104,101,32,112,97,116,104,32,101,110,116,114,121,32,102,114, - 111,109,32,115,121,115,46,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104, - 32,101,110,116,114,121,32,105,115,32,110,111,116,32,105,110, - 32,116,104,101,32,99,97,99,104,101,44,32,102,105,110,100, - 32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,101, - 32,102,105,110,100,101,114,10,32,32,32,32,32,32,32,32, - 97,110,100,32,99,97,99,104,101,32,105,116,46,32,73,102, - 32,110,111,32,102,105,110,100,101,114,32,105,115,32,97,118, - 97,105,108,97,98,108,101,44,32,115,116,111,114,101,32,78, - 111,110,101,46,10,10,32,32,32,32,32,32,32,32,114,10, - 0,0,0,78,41,7,114,19,0,0,0,114,70,0,0,0, - 218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,114, - 114,111,114,114,16,0,0,0,114,66,1,0,0,218,8,75, - 101,121,69,114,114,111,114,114,70,1,0,0,41,3,114,209, - 0,0,0,114,58,0,0,0,114,68,1,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,20,95,112, - 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,18,5,0,0,115,30,0,0,0,8,8,2,1,12, - 1,12,1,6,3,2,1,12,1,4,4,12,253,10,1,12, - 1,4,1,2,253,2,250,255,128,122,31,80,97,116,104,70, - 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, - 114,116,101,114,95,99,97,99,104,101,99,3,0,0,0,0, - 0,0,0,0,0,0,0,7,0,0,0,4,0,0,0,67, - 0,0,0,115,110,0,0,0,116,0,124,2,100,1,131,2, - 114,26,124,2,160,1,124,1,161,1,92,2,125,3,125,4, - 110,42,116,2,160,3,124,2,161,1,155,0,100,2,157,2, - 125,5,116,4,160,5,124,5,116,6,161,2,1,0,124,2, - 160,7,124,1,161,1,125,3,103,0,125,4,124,3,100,0, - 117,1,114,88,116,2,160,8,124,1,124,3,161,2,83,0, - 116,2,160,9,124,1,100,0,161,2,125,6,124,4,124,6, - 95,10,124,6,83,0,41,3,78,114,148,0,0,0,122,53, - 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, - 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, - 98,97,99,107,32,116,111,32,102,105,110,100,95,109,111,100, - 117,108,101,40,41,41,11,114,140,0,0,0,114,148,0,0, - 0,114,146,0,0,0,90,12,95,111,98,106,101,99,116,95, - 110,97,109,101,114,88,0,0,0,114,89,0,0,0,114,149, - 0,0,0,114,217,0,0,0,114,212,0,0,0,114,194,0, - 0,0,114,189,0,0,0,41,7,114,209,0,0,0,114,150, - 0,0,0,114,68,1,0,0,114,151,0,0,0,114,152,0, - 0,0,114,153,0,0,0,114,198,0,0,0,114,7,0,0, - 0,114,7,0,0,0,114,8,0,0,0,218,16,95,108,101, - 103,97,99,121,95,103,101,116,95,115,112,101,99,40,5,0, - 0,115,24,0,0,0,10,4,16,1,16,2,12,2,10,1, - 4,1,8,1,12,1,12,1,6,1,4,1,255,128,122,27, - 80,97,116,104,70,105,110,100,101,114,46,95,108,101,103,97, - 99,121,95,103,101,116,95,115,112,101,99,78,99,4,0,0, - 0,0,0,0,0,0,0,0,0,9,0,0,0,5,0,0, - 0,67,0,0,0,115,166,0,0,0,103,0,125,4,124,2, - 68,0,93,134,125,5,116,0,124,5,116,1,116,2,102,2, - 131,2,115,28,113,8,124,0,160,3,124,5,161,1,125,6, - 124,6,100,1,117,1,114,142,116,4,124,6,100,2,131,2, - 114,70,124,6,160,5,124,1,124,3,161,2,125,7,110,12, - 124,0,160,6,124,1,124,6,161,2,125,7,124,7,100,1, - 117,0,114,92,113,8,124,7,106,7,100,1,117,1,114,110, - 124,7,2,0,1,0,83,0,124,7,106,8,125,8,124,8, - 100,1,117,0,114,132,116,9,100,3,131,1,130,1,124,4, - 160,10,124,8,161,1,1,0,113,8,116,11,160,12,124,1, - 100,1,161,2,125,7,124,4,124,7,95,8,124,7,83,0, - 41,4,122,63,70,105,110,100,32,116,104,101,32,108,111,97, - 100,101,114,32,111,114,32,110,97,109,101,115,112,97,99,101, - 95,112,97,116,104,32,102,111,114,32,116,104,105,115,32,109, - 111,100,117,108,101,47,112,97,99,107,97,103,101,32,110,97, - 109,101,46,78,114,214,0,0,0,122,19,115,112,101,99,32, - 109,105,115,115,105,110,103,32,108,111,97,100,101,114,41,13, - 114,172,0,0,0,114,97,0,0,0,218,5,98,121,116,101, - 115,114,73,1,0,0,114,140,0,0,0,114,214,0,0,0, - 114,74,1,0,0,114,151,0,0,0,114,189,0,0,0,114, - 129,0,0,0,114,178,0,0,0,114,146,0,0,0,114,194, - 0,0,0,41,9,114,209,0,0,0,114,150,0,0,0,114, - 58,0,0,0,114,213,0,0,0,218,14,110,97,109,101,115, - 112,97,99,101,95,112,97,116,104,90,5,101,110,116,114,121, - 114,68,1,0,0,114,198,0,0,0,114,152,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,218,9, - 95,103,101,116,95,115,112,101,99,58,5,0,0,115,44,0, - 0,0,4,5,8,1,14,1,2,1,10,1,8,1,10,1, - 14,1,12,2,8,1,2,1,10,1,8,1,6,1,8,1, - 8,1,10,5,2,128,12,2,6,1,4,1,255,128,122,20, - 80,97,116,104,70,105,110,100,101,114,46,95,103,101,116,95, - 115,112,101,99,99,4,0,0,0,0,0,0,0,0,0,0, - 0,6,0,0,0,5,0,0,0,67,0,0,0,115,94,0, - 0,0,124,2,100,1,117,0,114,14,116,0,106,1,125,2, - 124,0,160,2,124,1,124,2,124,3,161,3,125,4,124,4, - 100,1,117,0,114,40,100,1,83,0,124,4,106,3,100,1, - 117,0,114,90,124,4,106,4,125,5,124,5,114,86,100,1, - 124,4,95,5,116,6,124,1,124,5,124,0,106,2,131,3, - 124,4,95,4,124,4,83,0,100,1,83,0,124,4,83,0, - 41,2,122,141,84,114,121,32,116,111,32,102,105,110,100,32, - 97,32,115,112,101,99,32,102,111,114,32,39,102,117,108,108, - 110,97,109,101,39,32,111,110,32,115,121,115,46,112,97,116, - 104,32,111,114,32,39,112,97,116,104,39,46,10,10,32,32, - 32,32,32,32,32,32,84,104,101,32,115,101,97,114,99,104, - 32,105,115,32,98,97,115,101,100,32,111,110,32,115,121,115, - 46,112,97,116,104,95,104,111,111,107,115,32,97,110,100,32, - 115,121,115,46,112,97,116,104,95,105,109,112,111,114,116,101, - 114,95,99,97,99,104,101,46,10,32,32,32,32,32,32,32, - 32,78,41,7,114,16,0,0,0,114,58,0,0,0,114,77, - 1,0,0,114,151,0,0,0,114,189,0,0,0,114,192,0, - 0,0,114,33,1,0,0,41,6,114,209,0,0,0,114,150, - 0,0,0,114,58,0,0,0,114,213,0,0,0,114,198,0, - 0,0,114,76,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,214,0,0,0,90,5,0,0,115, - 28,0,0,0,8,6,6,1,14,1,8,1,4,1,10,1, - 6,1,4,1,6,3,16,1,4,1,4,2,4,2,255,128, - 122,20,80,97,116,104,70,105,110,100,101,114,46,102,105,110, - 100,95,115,112,101,99,99,3,0,0,0,0,0,0,0,0, - 0,0,0,4,0,0,0,4,0,0,0,67,0,0,0,115, - 30,0,0,0,124,0,160,0,124,1,124,2,161,2,125,3, - 124,3,100,1,117,0,114,24,100,1,83,0,124,3,106,1, - 83,0,41,2,122,170,102,105,110,100,32,116,104,101,32,109, - 111,100,117,108,101,32,111,110,32,115,121,115,46,112,97,116, - 104,32,111,114,32,39,112,97,116,104,39,32,98,97,115,101, - 100,32,111,110,32,115,121,115,46,112,97,116,104,95,104,111, - 111,107,115,32,97,110,100,10,32,32,32,32,32,32,32,32, - 115,121,115,46,112,97,116,104,95,105,109,112,111,114,116,101, - 114,95,99,97,99,104,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115, - 32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,115, - 101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,110, - 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, - 78,114,215,0,0,0,114,216,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,217,0,0,0,114, - 5,0,0,115,10,0,0,0,12,8,8,1,4,1,6,1, - 255,128,122,22,80,97,116,104,70,105,110,100,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,99,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,79, - 0,0,0,115,28,0,0,0,100,1,100,2,108,0,109,1, - 125,2,1,0,124,2,106,2,124,0,105,0,124,1,164,1, - 142,1,83,0,41,4,97,32,1,0,0,10,32,32,32,32, - 32,32,32,32,70,105,110,100,32,100,105,115,116,114,105,98, - 117,116,105,111,110,115,46,10,10,32,32,32,32,32,32,32, - 32,82,101,116,117,114,110,32,97,110,32,105,116,101,114,97, - 98,108,101,32,111,102,32,97,108,108,32,68,105,115,116,114, - 105,98,117,116,105,111,110,32,105,110,115,116,97,110,99,101, - 115,32,99,97,112,97,98,108,101,32,111,102,10,32,32,32, - 32,32,32,32,32,108,111,97,100,105,110,103,32,116,104,101, - 32,109,101,116,97,100,97,116,97,32,102,111,114,32,112,97, - 99,107,97,103,101,115,32,109,97,116,99,104,105,110,103,32, - 96,96,99,111,110,116,101,120,116,46,110,97,109,101,96,96, - 10,32,32,32,32,32,32,32,32,40,111,114,32,97,108,108, - 32,110,97,109,101,115,32,105,102,32,96,96,78,111,110,101, - 96,96,32,105,110,100,105,99,97,116,101,100,41,32,97,108, - 111,110,103,32,116,104,101,32,112,97,116,104,115,32,105,110, - 32,116,104,101,32,108,105,115,116,10,32,32,32,32,32,32, - 32,32,111,102,32,100,105,114,101,99,116,111,114,105,101,115, - 32,96,96,99,111,110,116,101,120,116,46,112,97,116,104,96, - 96,46,10,32,32,32,32,32,32,32,32,114,0,0,0,0, - 41,1,218,18,77,101,116,97,100,97,116,97,80,97,116,104, - 70,105,110,100,101,114,78,41,3,90,18,105,109,112,111,114, - 116,108,105,98,46,109,101,116,97,100,97,116,97,114,78,1, - 0,0,218,18,102,105,110,100,95,100,105,115,116,114,105,98, - 117,116,105,111,110,115,41,3,114,131,0,0,0,114,132,0, - 0,0,114,78,1,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,114,79,1,0,0,127,5,0,0,115, - 6,0,0,0,12,10,16,1,255,128,122,29,80,97,116,104, - 70,105,110,100,101,114,46,102,105,110,100,95,100,105,115,116, - 114,105,98,117,116,105,111,110,115,41,1,78,41,2,78,78, - 41,1,78,41,14,114,137,0,0,0,114,136,0,0,0,114, - 138,0,0,0,114,139,0,0,0,114,220,0,0,0,114,64, - 1,0,0,114,70,1,0,0,114,221,0,0,0,114,73,1, - 0,0,114,74,1,0,0,114,77,1,0,0,114,214,0,0, - 0,114,217,0,0,0,114,79,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, - 63,1,0,0,247,4,0,0,115,38,0,0,0,8,0,4, - 2,2,2,10,1,2,9,10,1,2,12,10,1,2,21,10, - 1,2,17,12,1,2,31,12,1,2,23,12,1,2,12,14, - 1,255,128,114,63,1,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, - 0,115,90,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, - 90,5,101,6,90,7,100,6,100,7,132,0,90,8,100,8, - 100,9,132,0,90,9,100,19,100,11,100,12,132,1,90,10, - 100,13,100,14,132,0,90,11,101,12,100,15,100,16,132,0, - 131,1,90,13,100,17,100,18,132,0,90,14,100,10,83,0, - 41,20,218,10,70,105,108,101,70,105,110,100,101,114,122,172, - 70,105,108,101,45,98,97,115,101,100,32,102,105,110,100,101, - 114,46,10,10,32,32,32,32,73,110,116,101,114,97,99,116, - 105,111,110,115,32,119,105,116,104,32,116,104,101,32,102,105, - 108,101,32,115,121,115,116,101,109,32,97,114,101,32,99,97, - 99,104,101,100,32,102,111,114,32,112,101,114,102,111,114,109, - 97,110,99,101,44,32,98,101,105,110,103,10,32,32,32,32, - 114,101,102,114,101,115,104,101,100,32,119,104,101,110,32,116, - 104,101,32,100,105,114,101,99,116,111,114,121,32,116,104,101, - 32,102,105,110,100,101,114,32,105,115,32,104,97,110,100,108, - 105,110,103,32,104,97,115,32,98,101,101,110,32,109,111,100, - 105,102,105,101,100,46,10,10,32,32,32,32,99,2,0,0, - 0,0,0,0,0,0,0,0,0,5,0,0,0,6,0,0, - 0,7,0,0,0,115,84,0,0,0,103,0,125,3,124,2, - 68,0,93,32,92,2,137,0,125,4,124,3,160,0,135,0, - 102,1,100,1,100,2,132,8,124,4,68,0,131,1,161,1, - 1,0,113,8,124,3,124,0,95,1,124,1,112,54,100,3, - 124,0,95,2,100,4,124,0,95,3,116,4,131,0,124,0, - 95,5,116,4,131,0,124,0,95,6,100,5,83,0,41,6, - 122,154,73,110,105,116,105,97,108,105,122,101,32,119,105,116, - 104,32,116,104,101,32,112,97,116,104,32,116,111,32,115,101, - 97,114,99,104,32,111,110,32,97,110,100,32,97,32,118,97, - 114,105,97,98,108,101,32,110,117,109,98,101,114,32,111,102, - 10,32,32,32,32,32,32,32,32,50,45,116,117,112,108,101, - 115,32,99,111,110,116,97,105,110,105,110,103,32,116,104,101, - 32,108,111,97,100,101,114,32,97,110,100,32,116,104,101,32, - 102,105,108,101,32,115,117,102,102,105,120,101,115,32,116,104, - 101,32,108,111,97,100,101,114,10,32,32,32,32,32,32,32, - 32,114,101,99,111,103,110,105,122,101,115,46,99,1,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0, - 0,51,0,0,0,115,22,0,0,0,124,0,93,14,125,1, - 124,1,136,0,102,2,86,0,1,0,113,2,100,0,83,0, - 114,121,0,0,0,114,7,0,0,0,114,29,1,0,0,169, - 1,114,151,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,9,0,0,0,156,5,0,0,114,14,0,0,0,122,38, - 70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,105, - 116,95,95,46,60,108,111,99,97,108,115,62,46,60,103,101, - 110,101,120,112,114,62,114,86,0,0,0,114,116,0,0,0, - 78,41,7,114,178,0,0,0,218,8,95,108,111,97,100,101, - 114,115,114,58,0,0,0,218,11,95,112,97,116,104,95,109, - 116,105,109,101,218,3,115,101,116,218,11,95,112,97,116,104, - 95,99,97,99,104,101,218,19,95,114,101,108,97,120,101,100, - 95,112,97,116,104,95,99,97,99,104,101,41,5,114,130,0, - 0,0,114,58,0,0,0,218,14,108,111,97,100,101,114,95, - 100,101,116,97,105,108,115,90,7,108,111,97,100,101,114,115, - 114,200,0,0,0,114,7,0,0,0,114,81,1,0,0,114, - 8,0,0,0,114,223,0,0,0,150,5,0,0,115,18,0, - 0,0,4,4,12,1,26,1,6,1,10,2,6,1,8,1, - 12,1,255,128,122,19,70,105,108,101,70,105,110,100,101,114, - 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, - 0,0,115,10,0,0,0,100,1,124,0,95,0,100,2,83, - 0,41,3,122,31,73,110,118,97,108,105,100,97,116,101,32, - 116,104,101,32,100,105,114,101,99,116,111,114,121,32,109,116, - 105,109,101,46,114,116,0,0,0,78,41,1,114,83,1,0, - 0,114,8,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,64,1,0,0,164,5,0,0,114,69, - 0,0,0,122,28,70,105,108,101,70,105,110,100,101,114,46, - 105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101, - 115,99,2,0,0,0,0,0,0,0,0,0,0,0,3,0, - 0,0,3,0,0,0,67,0,0,0,115,42,0,0,0,124, - 0,160,0,124,1,161,1,125,2,124,2,100,1,117,0,114, - 26,100,1,103,0,102,2,83,0,124,2,106,1,124,2,106, - 2,112,38,103,0,102,2,83,0,41,2,122,197,84,114,121, - 32,116,111,32,102,105,110,100,32,97,32,108,111,97,100,101, - 114,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,44,32,111,114,32,116, - 104,101,32,110,97,109,101,115,112,97,99,101,10,32,32,32, - 32,32,32,32,32,112,97,99,107,97,103,101,32,112,111,114, - 116,105,111,110,115,46,32,82,101,116,117,114,110,115,32,40, - 108,111,97,100,101,114,44,32,108,105,115,116,45,111,102,45, - 112,111,114,116,105,111,110,115,41,46,10,10,32,32,32,32, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, - 85,115,101,32,102,105,110,100,95,115,112,101,99,40,41,32, - 105,110,115,116,101,97,100,46,10,10,32,32,32,32,32,32, - 32,32,78,41,3,114,214,0,0,0,114,151,0,0,0,114, - 189,0,0,0,41,3,114,130,0,0,0,114,150,0,0,0, - 114,198,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,148,0,0,0,170,5,0,0,115,10,0, - 0,0,10,7,8,1,8,1,16,1,255,128,122,22,70,105, - 108,101,70,105,110,100,101,114,46,102,105,110,100,95,108,111, - 97,100,101,114,99,6,0,0,0,0,0,0,0,0,0,0, - 0,7,0,0,0,6,0,0,0,67,0,0,0,115,26,0, - 0,0,124,1,124,2,124,3,131,2,125,6,116,0,124,2, - 124,3,124,6,124,4,100,1,141,4,83,0,41,2,78,114, - 188,0,0,0,41,1,114,201,0,0,0,41,7,114,130,0, - 0,0,114,199,0,0,0,114,150,0,0,0,114,58,0,0, - 0,90,4,115,109,115,108,114,213,0,0,0,114,151,0,0, - 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,77,1,0,0,182,5,0,0,115,10,0,0,0,10,1, - 8,1,2,1,6,255,255,128,122,20,70,105,108,101,70,105, - 110,100,101,114,46,95,103,101,116,95,115,112,101,99,78,99, - 3,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, - 8,0,0,0,67,0,0,0,115,100,1,0,0,100,1,125, - 3,124,1,160,0,100,2,161,1,100,3,25,0,125,4,122, - 24,116,1,124,0,106,2,112,34,116,3,160,4,161,0,131, - 1,106,5,125,5,87,0,110,20,4,0,116,6,144,1,121, - 98,1,0,1,0,1,0,100,4,125,5,89,0,124,5,124, - 0,106,7,107,3,114,88,124,0,160,8,161,0,1,0,124, - 5,124,0,95,7,116,9,131,0,114,110,124,0,106,10,125, - 6,124,4,160,11,161,0,125,7,110,10,124,0,106,12,125, - 6,124,4,125,7,124,7,124,6,118,0,114,214,116,13,124, - 0,106,2,124,4,131,2,125,8,124,0,106,14,68,0,93, - 58,92,2,125,9,125,10,100,5,124,9,23,0,125,11,116, - 13,124,8,124,11,131,2,125,12,116,15,124,12,131,1,114, - 204,124,0,160,16,124,10,124,1,124,12,124,8,103,1,124, - 2,161,5,2,0,1,0,83,0,113,146,116,17,124,8,131, - 1,125,3,124,0,106,14,68,0,93,86,92,2,125,9,125, - 10,116,13,124,0,106,2,124,4,124,9,23,0,131,2,125, - 12,116,18,106,19,100,6,124,12,100,3,100,7,141,3,1, - 0,124,7,124,9,23,0,124,6,118,0,144,1,114,50,116, - 15,124,12,131,1,144,1,114,50,124,0,160,16,124,10,124, - 1,124,12,100,8,124,2,161,5,2,0,1,0,83,0,113, - 220,124,3,144,1,114,94,116,18,160,19,100,9,124,8,161, - 2,1,0,116,18,160,20,124,1,100,8,161,2,125,13,124, - 8,103,1,124,13,95,21,124,13,83,0,100,8,83,0,119, - 0,41,10,122,111,84,114,121,32,116,111,32,102,105,110,100, - 32,97,32,115,112,101,99,32,102,111,114,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 46,10,10,32,32,32,32,32,32,32,32,82,101,116,117,114, - 110,115,32,116,104,101,32,109,97,116,99,104,105,110,103,32, - 115,112,101,99,44,32,111,114,32,78,111,110,101,32,105,102, - 32,110,111,116,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,70,114,86,0,0,0,114,45,0,0,0,114, - 116,0,0,0,114,223,0,0,0,122,9,116,114,121,105,110, - 103,32,123,125,41,1,90,9,118,101,114,98,111,115,105,116, - 121,78,122,25,112,111,115,115,105,98,108,101,32,110,97,109, - 101,115,112,97,99,101,32,102,111,114,32,123,125,41,22,114, - 55,0,0,0,114,63,0,0,0,114,58,0,0,0,114,19, - 0,0,0,114,70,0,0,0,114,22,1,0,0,114,64,0, - 0,0,114,83,1,0,0,218,11,95,102,105,108,108,95,99, - 97,99,104,101,114,22,0,0,0,114,86,1,0,0,114,117, - 0,0,0,114,85,1,0,0,114,54,0,0,0,114,82,1, - 0,0,114,68,0,0,0,114,77,1,0,0,114,71,0,0, - 0,114,146,0,0,0,114,160,0,0,0,114,194,0,0,0, - 114,189,0,0,0,41,14,114,130,0,0,0,114,150,0,0, - 0,114,213,0,0,0,90,12,105,115,95,110,97,109,101,115, - 112,97,99,101,90,11,116,97,105,108,95,109,111,100,117,108, - 101,114,180,0,0,0,90,5,99,97,99,104,101,90,12,99, - 97,99,104,101,95,109,111,100,117,108,101,90,9,98,97,115, - 101,95,112,97,116,104,114,30,1,0,0,114,199,0,0,0, - 90,13,105,110,105,116,95,102,105,108,101,110,97,109,101,90, - 9,102,117,108,108,95,112,97,116,104,114,198,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,214, - 0,0,0,187,5,0,0,115,80,0,0,0,4,5,14,1, - 2,1,24,1,14,1,6,1,10,1,8,1,6,1,6,2, - 6,1,10,1,6,2,4,1,8,2,12,1,14,1,8,1, - 10,1,8,1,24,1,2,255,8,5,14,2,16,1,16,1, - 14,1,10,1,10,1,4,1,8,255,2,128,6,2,12,1, - 12,1,8,1,4,1,4,1,2,219,255,128,122,20,70,105, - 108,101,70,105,110,100,101,114,46,102,105,110,100,95,115,112, - 101,99,99,1,0,0,0,0,0,0,0,0,0,0,0,9, - 0,0,0,10,0,0,0,67,0,0,0,115,190,0,0,0, - 124,0,106,0,125,1,122,22,116,1,160,2,124,1,112,22, - 116,1,160,3,161,0,161,1,125,2,87,0,110,24,4,0, - 116,4,116,5,116,6,102,3,121,188,1,0,1,0,1,0, - 103,0,125,2,89,0,116,7,106,8,160,9,100,1,161,1, - 115,78,116,10,124,2,131,1,124,0,95,11,110,74,116,10, - 131,0,125,3,124,2,68,0,93,56,125,4,124,4,160,12, - 100,2,161,1,92,3,125,5,125,6,125,7,124,6,114,130, - 100,3,160,13,124,5,124,7,160,14,161,0,161,2,125,8, - 110,4,124,5,125,8,124,3,160,15,124,8,161,1,1,0, - 113,88,124,3,124,0,95,11,116,7,106,8,160,9,116,16, - 161,1,114,184,100,4,100,5,132,0,124,2,68,0,131,1, - 124,0,95,17,100,6,83,0,100,6,83,0,119,0,41,7, - 122,68,70,105,108,108,32,116,104,101,32,99,97,99,104,101, - 32,111,102,32,112,111,116,101,110,116,105,97,108,32,109,111, - 100,117,108,101,115,32,97,110,100,32,112,97,99,107,97,103, - 101,115,32,102,111,114,32,116,104,105,115,32,100,105,114,101, - 99,116,111,114,121,46,114,15,0,0,0,114,86,0,0,0, - 114,76,0,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,83,0,0,0,115,20, - 0,0,0,104,0,124,0,93,12,125,1,124,1,160,0,161, - 0,146,2,113,4,83,0,114,7,0,0,0,41,1,114,117, - 0,0,0,41,2,114,5,0,0,0,90,2,102,110,114,7, - 0,0,0,114,7,0,0,0,114,8,0,0,0,114,13,0, - 0,0,8,6,0,0,115,4,0,0,0,20,0,255,128,122, - 41,70,105,108,101,70,105,110,100,101,114,46,95,102,105,108, - 108,95,99,97,99,104,101,46,60,108,111,99,97,108,115,62, - 46,60,115,101,116,99,111,109,112,62,78,41,18,114,58,0, - 0,0,114,19,0,0,0,90,7,108,105,115,116,100,105,114, - 114,70,0,0,0,114,71,1,0,0,218,15,80,101,114,109, - 105,115,115,105,111,110,69,114,114,111,114,218,18,78,111,116, - 65,68,105,114,101,99,116,111,114,121,69,114,114,111,114,114, - 16,0,0,0,114,26,0,0,0,114,27,0,0,0,114,84, - 1,0,0,114,85,1,0,0,114,112,0,0,0,114,77,0, - 0,0,114,117,0,0,0,218,3,97,100,100,114,28,0,0, - 0,114,86,1,0,0,41,9,114,130,0,0,0,114,58,0, - 0,0,90,8,99,111,110,116,101,110,116,115,90,21,108,111, - 119,101,114,95,115,117,102,102,105,120,95,99,111,110,116,101, - 110,116,115,114,56,1,0,0,114,128,0,0,0,114,40,1, - 0,0,114,30,1,0,0,90,8,110,101,119,95,110,97,109, - 101,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, - 114,88,1,0,0,235,5,0,0,115,40,0,0,0,6,2, - 2,1,22,1,18,1,6,3,12,3,12,1,6,7,8,1, - 16,1,4,1,18,1,4,2,12,1,6,1,12,1,20,1, - 4,255,2,233,255,128,122,22,70,105,108,101,70,105,110,100, - 101,114,46,95,102,105,108,108,95,99,97,99,104,101,99,1, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,7,0,0,0,115,18,0,0,0,135,0,135,1, - 102,2,100,1,100,2,132,8,125,2,124,2,83,0,41,4, - 97,20,1,0,0,65,32,99,108,97,115,115,32,109,101,116, - 104,111,100,32,119,104,105,99,104,32,114,101,116,117,114,110, - 115,32,97,32,99,108,111,115,117,114,101,32,116,111,32,117, - 115,101,32,111,110,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,10,32,32,32,32,32,32,32,32,119,104,105,99, - 104,32,119,105,108,108,32,114,101,116,117,114,110,32,97,110, - 32,105,110,115,116,97,110,99,101,32,117,115,105,110,103,32, - 116,104,101,32,115,112,101,99,105,102,105,101,100,32,108,111, - 97,100,101,114,115,32,97,110,100,32,116,104,101,32,112,97, - 116,104,10,32,32,32,32,32,32,32,32,99,97,108,108,101, - 100,32,111,110,32,116,104,101,32,99,108,111,115,117,114,101, - 46,10,10,32,32,32,32,32,32,32,32,73,102,32,116,104, - 101,32,112,97,116,104,32,99,97,108,108,101,100,32,111,110, - 32,116,104,101,32,99,108,111,115,117,114,101,32,105,115,32, - 110,111,116,32,97,32,100,105,114,101,99,116,111,114,121,44, - 32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,10, - 32,32,32,32,32,32,32,32,114,97,105,115,101,100,46,10, - 10,32,32,32,32,32,32,32,32,99,1,0,0,0,0,0, - 0,0,0,0,0,0,1,0,0,0,4,0,0,0,19,0, - 0,0,115,36,0,0,0,116,0,124,0,131,1,115,20,116, - 1,100,1,124,0,100,2,141,2,130,1,136,0,124,0,103, - 1,136,1,162,1,82,0,142,0,83,0,41,4,122,45,80, - 97,116,104,32,104,111,111,107,32,102,111,114,32,105,109,112, - 111,114,116,108,105,98,46,109,97,99,104,105,110,101,114,121, - 46,70,105,108,101,70,105,110,100,101,114,46,122,30,111,110, - 108,121,32,100,105,114,101,99,116,111,114,105,101,115,32,97, - 114,101,32,115,117,112,112,111,114,116,101,100,114,62,0,0, - 0,78,41,2,114,71,0,0,0,114,129,0,0,0,114,62, - 0,0,0,169,2,114,209,0,0,0,114,87,1,0,0,114, - 7,0,0,0,114,8,0,0,0,218,24,112,97,116,104,95, - 104,111,111,107,95,102,111,114,95,70,105,108,101,70,105,110, - 100,101,114,20,6,0,0,115,8,0,0,0,8,2,12,1, - 16,1,255,128,122,54,70,105,108,101,70,105,110,100,101,114, - 46,112,97,116,104,95,104,111,111,107,46,60,108,111,99,97, - 108,115,62,46,112,97,116,104,95,104,111,111,107,95,102,111, - 114,95,70,105,108,101,70,105,110,100,101,114,78,114,7,0, - 0,0,41,3,114,209,0,0,0,114,87,1,0,0,114,93, - 1,0,0,114,7,0,0,0,114,92,1,0,0,114,8,0, - 0,0,218,9,112,97,116,104,95,104,111,111,107,10,6,0, - 0,115,6,0,0,0,14,10,4,6,255,128,122,20,70,105, - 108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111, - 111,107,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,3,0,0,0,67,0,0,0,114,53,1,0,0, - 41,2,78,122,16,70,105,108,101,70,105,110,100,101,114,40, - 123,33,114,125,41,41,2,114,77,0,0,0,114,58,0,0, - 0,114,8,1,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,54,1,0,0,28,6,0,0,114,47, - 1,0,0,122,19,70,105,108,101,70,105,110,100,101,114,46, - 95,95,114,101,112,114,95,95,41,1,78,41,15,114,137,0, - 0,0,114,136,0,0,0,114,138,0,0,0,114,139,0,0, - 0,114,223,0,0,0,114,64,1,0,0,114,154,0,0,0, - 114,217,0,0,0,114,148,0,0,0,114,77,1,0,0,114, - 214,0,0,0,114,88,1,0,0,114,221,0,0,0,114,94, - 1,0,0,114,54,1,0,0,114,7,0,0,0,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,80,1,0, - 0,141,5,0,0,115,26,0,0,0,8,0,4,2,8,7, - 8,14,4,4,8,2,8,12,10,5,8,48,2,31,10,1, - 12,17,255,128,114,80,1,0,0,99,4,0,0,0,0,0, - 0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0, - 0,0,115,144,0,0,0,124,0,160,0,100,1,161,1,125, - 4,124,0,160,0,100,2,161,1,125,5,124,4,115,66,124, - 5,114,36,124,5,106,1,125,4,110,30,124,2,124,3,107, - 2,114,56,116,2,124,1,124,2,131,2,125,4,110,10,116, - 3,124,1,124,2,131,2,125,4,124,5,115,84,116,4,124, - 1,124,2,124,4,100,3,141,3,125,5,122,38,124,5,124, - 0,100,2,60,0,124,4,124,0,100,1,60,0,124,2,124, - 0,100,4,60,0,124,3,124,0,100,5,60,0,87,0,100, - 0,83,0,4,0,116,5,121,142,1,0,1,0,1,0,89, - 0,100,0,83,0,119,0,41,6,78,218,10,95,95,108,111, - 97,100,101,114,95,95,218,8,95,95,115,112,101,99,95,95, - 114,81,1,0,0,90,8,95,95,102,105,108,101,95,95,90, - 10,95,95,99,97,99,104,101,100,95,95,41,6,218,3,103, - 101,116,114,151,0,0,0,114,27,1,0,0,114,21,1,0, - 0,114,201,0,0,0,218,9,69,120,99,101,112,116,105,111, - 110,41,6,90,2,110,115,114,128,0,0,0,90,8,112,97, - 116,104,110,97,109,101,90,9,99,112,97,116,104,110,97,109, - 101,114,151,0,0,0,114,198,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,218,14,95,102,105,120, - 95,117,112,95,109,111,100,117,108,101,34,6,0,0,115,38, - 0,0,0,10,2,10,1,4,1,4,1,8,1,8,1,12, - 1,10,2,4,1,14,1,2,1,8,1,8,1,8,1,14, - 1,12,1,6,2,2,254,255,128,114,99,1,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3, - 0,0,0,67,0,0,0,115,38,0,0,0,116,0,116,1, - 160,2,161,0,102,2,125,0,116,3,116,4,102,2,125,1, - 116,5,116,6,102,2,125,2,124,0,124,1,124,2,103,3, - 83,0,41,2,122,95,82,101,116,117,114,110,115,32,97,32, - 108,105,115,116,32,111,102,32,102,105,108,101,45,98,97,115, - 101,100,32,109,111,100,117,108,101,32,108,111,97,100,101,114, - 115,46,10,10,32,32,32,32,69,97,99,104,32,105,116,101, - 109,32,105,115,32,97,32,116,117,112,108,101,32,40,108,111, - 97,100,101,114,44,32,115,117,102,102,105,120,101,115,41,46, - 10,32,32,32,32,78,41,7,114,17,1,0,0,114,174,0, - 0,0,218,18,101,120,116,101,110,115,105,111,110,95,115,117, - 102,102,105,120,101,115,114,21,1,0,0,114,113,0,0,0, - 114,27,1,0,0,114,101,0,0,0,41,3,90,10,101,120, - 116,101,110,115,105,111,110,115,90,6,115,111,117,114,99,101, - 90,8,98,121,116,101,99,111,100,101,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,195,0,0,0,57,6, - 0,0,115,10,0,0,0,12,5,8,1,8,1,10,1,255, - 128,114,195,0,0,0,99,1,0,0,0,0,0,0,0,0, - 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115, - 8,0,0,0,124,0,97,0,100,0,83,0,114,121,0,0, - 0,41,1,114,146,0,0,0,41,1,218,17,95,98,111,111, - 116,115,116,114,97,112,95,109,111,100,117,108,101,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,218,21,95,115, - 101,116,95,98,111,111,116,115,116,114,97,112,95,109,111,100, - 117,108,101,68,6,0,0,115,4,0,0,0,8,2,255,128, - 114,102,1,0,0,99,1,0,0,0,0,0,0,0,0,0, - 0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,50, - 0,0,0,116,0,124,0,131,1,1,0,116,1,131,0,125, - 1,116,2,106,3,160,4,116,5,106,6,124,1,142,0,103, - 1,161,1,1,0,116,2,106,7,160,8,116,9,161,1,1, - 0,100,1,83,0,41,2,122,41,73,110,115,116,97,108,108, - 32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32, - 105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116, - 115,46,78,41,10,114,102,1,0,0,114,195,0,0,0,114, - 16,0,0,0,114,69,1,0,0,114,178,0,0,0,114,80, - 1,0,0,114,94,1,0,0,218,9,109,101,116,97,95,112, - 97,116,104,114,197,0,0,0,114,63,1,0,0,41,2,114, - 101,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95, - 108,111,97,100,101,114,115,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,8,95,105,110,115,116,97,108,108, - 73,6,0,0,115,10,0,0,0,8,2,6,1,20,1,16, - 1,255,128,114,104,1,0,0,41,1,114,75,0,0,0,41, - 1,78,41,3,78,78,78,41,2,114,0,0,0,0,114,0, - 0,0,0,41,1,84,41,1,78,41,1,78,41,83,114,139, - 0,0,0,114,146,0,0,0,114,174,0,0,0,114,79,0, - 0,0,114,16,0,0,0,114,88,0,0,0,114,171,0,0, - 0,114,26,0,0,0,114,218,0,0,0,90,2,110,116,114, - 19,0,0,0,114,203,0,0,0,90,5,112,111,115,105,120, - 114,48,0,0,0,218,3,97,108,108,114,51,0,0,0,114, - 52,0,0,0,114,73,0,0,0,114,29,0,0,0,90,37, - 95,67,65,83,69,95,73,78,83,69,78,83,73,84,73,86, - 69,95,80,76,65,84,70,79,82,77,83,95,66,89,84,69, - 83,95,75,69,89,114,28,0,0,0,114,30,0,0,0,114, - 22,0,0,0,114,37,0,0,0,114,43,0,0,0,114,46, - 0,0,0,114,54,0,0,0,114,61,0,0,0,114,63,0, - 0,0,114,67,0,0,0,114,68,0,0,0,114,71,0,0, - 0,114,74,0,0,0,114,84,0,0,0,218,4,116,121,112, - 101,218,8,95,95,99,111,100,101,95,95,114,173,0,0,0, - 114,35,0,0,0,114,159,0,0,0,114,34,0,0,0,114, - 40,0,0,0,114,251,0,0,0,114,104,0,0,0,114,100, - 0,0,0,114,113,0,0,0,114,197,0,0,0,114,100,1, - 0,0,114,219,0,0,0,114,101,0,0,0,90,23,68,69, - 66,85,71,95,66,89,84,69,67,79,68,69,95,83,85,70, - 70,73,88,69,83,90,27,79,80,84,73,77,73,90,69,68, - 95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, - 69,83,114,109,0,0,0,114,114,0,0,0,114,120,0,0, - 0,114,124,0,0,0,114,126,0,0,0,114,147,0,0,0, - 114,154,0,0,0,114,163,0,0,0,114,167,0,0,0,114, - 169,0,0,0,114,176,0,0,0,114,181,0,0,0,114,182, - 0,0,0,114,187,0,0,0,218,6,111,98,106,101,99,116, - 114,196,0,0,0,114,201,0,0,0,114,202,0,0,0,114, - 222,0,0,0,114,236,0,0,0,114,254,0,0,0,114,21, - 1,0,0,114,27,1,0,0,114,17,1,0,0,114,33,1, - 0,0,114,59,1,0,0,114,63,1,0,0,114,80,1,0, - 0,114,99,1,0,0,114,195,0,0,0,114,102,1,0,0, - 114,104,1,0,0,114,7,0,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,218,8,60,109,111,100,117, - 108,101,62,1,0,0,0,115,172,0,0,0,4,0,4,22, - 8,3,8,1,8,1,8,1,8,1,10,3,4,1,8,1, - 10,1,8,2,4,3,10,1,6,2,22,2,8,1,10,1, - 14,1,4,4,4,1,2,1,2,1,4,255,8,4,6,16, - 8,3,8,5,8,5,8,6,8,6,8,12,8,10,8,9, - 8,5,8,7,10,9,10,22,0,127,16,25,12,1,4,2, - 4,1,6,2,6,1,10,1,8,2,6,2,8,2,16,2, - 8,71,8,40,8,19,8,12,8,12,8,31,8,17,8,33, - 8,28,10,24,10,13,10,10,8,11,6,14,4,3,2,1, - 12,255,14,68,14,64,16,30,0,127,14,17,18,50,18,45, - 18,25,14,53,14,63,14,49,0,127,14,23,0,127,10,22, - 8,23,8,11,12,5,255,128, + 0,114,54,1,0,0,29,6,0,0,114,47,1,0,0,122, + 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, + 112,114,95,95,41,1,78,41,15,114,137,0,0,0,114,136, + 0,0,0,114,138,0,0,0,114,139,0,0,0,114,223,0, + 0,0,114,64,1,0,0,114,154,0,0,0,114,217,0,0, + 0,114,148,0,0,0,114,77,1,0,0,114,214,0,0,0, + 114,88,1,0,0,114,221,0,0,0,114,94,1,0,0,114, + 54,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,80,1,0,0,142,5,0, + 0,115,26,0,0,0,8,0,4,2,8,7,8,14,4,4, + 8,2,8,12,10,5,8,48,2,31,10,1,12,17,255,128, + 114,80,1,0,0,99,4,0,0,0,0,0,0,0,0,0, + 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,144, + 0,0,0,124,0,160,0,100,1,161,1,125,4,124,0,160, + 0,100,2,161,1,125,5,124,4,115,33,124,5,114,18,124, + 5,106,1,125,4,110,15,124,2,124,3,107,2,114,28,116, + 2,124,1,124,2,131,2,125,4,110,5,116,3,124,1,124, + 2,131,2,125,4,124,5,115,42,116,4,124,1,124,2,124, + 4,100,3,141,3,125,5,122,19,124,5,124,0,100,2,60, + 0,124,4,124,0,100,1,60,0,124,2,124,0,100,4,60, + 0,124,3,124,0,100,5,60,0,87,0,100,0,83,0,4, + 0,116,5,121,71,1,0,1,0,1,0,89,0,100,0,83, + 0,119,0,41,6,78,218,10,95,95,108,111,97,100,101,114, + 95,95,218,8,95,95,115,112,101,99,95,95,114,81,1,0, + 0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,99, + 97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,151, + 0,0,0,114,27,1,0,0,114,21,1,0,0,114,201,0, + 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, + 2,110,115,114,128,0,0,0,90,8,112,97,116,104,110,97, + 109,101,90,9,99,112,97,116,104,110,97,109,101,114,151,0, + 0,0,114,198,0,0,0,114,7,0,0,0,114,7,0,0, + 0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95, + 109,111,100,117,108,101,35,6,0,0,115,38,0,0,0,10, + 2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4, + 1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6, + 2,2,254,255,128,114,99,1,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,116,0,116,1,160,2,161,0, + 102,2,125,0,116,3,116,4,102,2,125,1,116,5,116,6, + 102,2,125,2,124,0,124,1,124,2,103,3,83,0,41,2, + 122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,116, + 32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,109, + 111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,10, + 32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,115, + 32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,114, + 44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,32, + 32,78,41,7,114,17,1,0,0,114,174,0,0,0,218,18, + 101,120,116,101,110,115,105,111,110,95,115,117,102,102,105,120, + 101,115,114,21,1,0,0,114,113,0,0,0,114,27,1,0, + 0,114,101,0,0,0,41,3,90,10,101,120,116,101,110,115, + 105,111,110,115,90,6,115,111,117,114,99,101,90,8,98,121, + 116,101,99,111,100,101,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,195,0,0,0,58,6,0,0,115,10, + 0,0,0,12,5,8,1,8,1,10,1,255,128,114,195,0, + 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, + 0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,0, + 124,0,97,0,100,0,83,0,114,121,0,0,0,41,1,114, + 146,0,0,0,41,1,218,17,95,98,111,111,116,115,116,114, + 97,112,95,109,111,100,117,108,101,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,218,21,95,115,101,116,95,98, + 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,69, + 6,0,0,115,4,0,0,0,8,2,255,128,114,102,1,0, + 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116, + 0,124,0,131,1,1,0,116,1,131,0,125,1,116,2,106, + 3,160,4,116,5,106,6,124,1,142,0,103,1,161,1,1, + 0,116,2,106,7,160,8,116,9,161,1,1,0,100,1,83, + 0,41,2,122,41,73,110,115,116,97,108,108,32,116,104,101, + 32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,111, + 114,116,32,99,111,109,112,111,110,101,110,116,115,46,78,41, + 10,114,102,1,0,0,114,195,0,0,0,114,16,0,0,0, + 114,69,1,0,0,114,178,0,0,0,114,80,1,0,0,114, + 94,1,0,0,218,9,109,101,116,97,95,112,97,116,104,114, + 197,0,0,0,114,63,1,0,0,41,2,114,101,1,0,0, + 90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100, + 101,114,115,114,7,0,0,0,114,7,0,0,0,114,8,0, + 0,0,218,8,95,105,110,115,116,97,108,108,74,6,0,0, + 115,10,0,0,0,8,2,6,1,20,1,16,1,255,128,114, + 104,1,0,0,41,1,114,75,0,0,0,41,1,78,41,3, + 78,78,78,41,2,114,0,0,0,0,114,0,0,0,0,41, + 1,84,41,1,78,41,1,78,41,83,114,139,0,0,0,114, + 146,0,0,0,114,174,0,0,0,114,79,0,0,0,114,16, + 0,0,0,114,88,0,0,0,114,171,0,0,0,114,26,0, + 0,0,114,218,0,0,0,90,2,110,116,114,19,0,0,0, + 114,203,0,0,0,90,5,112,111,115,105,120,114,48,0,0, + 0,218,3,97,108,108,114,51,0,0,0,114,52,0,0,0, + 114,73,0,0,0,114,29,0,0,0,90,37,95,67,65,83, + 69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,76, + 65,84,70,79,82,77,83,95,66,89,84,69,83,95,75,69, + 89,114,28,0,0,0,114,30,0,0,0,114,22,0,0,0, + 114,37,0,0,0,114,43,0,0,0,114,46,0,0,0,114, + 54,0,0,0,114,61,0,0,0,114,63,0,0,0,114,67, + 0,0,0,114,68,0,0,0,114,71,0,0,0,114,74,0, + 0,0,114,84,0,0,0,218,4,116,121,112,101,218,8,95, + 95,99,111,100,101,95,95,114,173,0,0,0,114,35,0,0, + 0,114,159,0,0,0,114,34,0,0,0,114,40,0,0,0, + 114,251,0,0,0,114,104,0,0,0,114,100,0,0,0,114, + 113,0,0,0,114,197,0,0,0,114,100,1,0,0,114,219, + 0,0,0,114,101,0,0,0,90,23,68,69,66,85,71,95, + 66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,69, + 83,90,27,79,80,84,73,77,73,90,69,68,95,66,89,84, + 69,67,79,68,69,95,83,85,70,70,73,88,69,83,114,109, + 0,0,0,114,114,0,0,0,114,120,0,0,0,114,124,0, + 0,0,114,126,0,0,0,114,147,0,0,0,114,154,0,0, + 0,114,163,0,0,0,114,167,0,0,0,114,169,0,0,0, + 114,176,0,0,0,114,181,0,0,0,114,182,0,0,0,114, + 187,0,0,0,218,6,111,98,106,101,99,116,114,196,0,0, + 0,114,201,0,0,0,114,202,0,0,0,114,222,0,0,0, + 114,236,0,0,0,114,254,0,0,0,114,21,1,0,0,114, + 27,1,0,0,114,17,1,0,0,114,33,1,0,0,114,59, + 1,0,0,114,63,1,0,0,114,80,1,0,0,114,99,1, + 0,0,114,195,0,0,0,114,102,1,0,0,114,104,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,218,8,60,109,111,100,117,108,101,62,1, + 0,0,0,115,172,0,0,0,4,0,4,22,8,3,8,1, + 8,1,8,1,8,1,10,3,4,1,8,1,10,1,8,2, + 4,3,10,1,6,2,22,2,8,1,10,1,14,1,4,4, + 4,1,2,1,2,1,4,255,8,4,6,16,8,3,8,5, + 8,5,8,6,8,6,8,12,8,10,8,9,8,5,8,7, + 10,9,10,22,0,127,16,26,12,1,4,2,4,1,6,2, + 4,1,10,1,8,2,6,2,8,2,16,2,8,71,8,40, + 8,19,8,12,8,12,8,31,8,17,8,33,8,28,10,24, + 10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,68, + 14,64,16,30,0,127,14,17,18,50,18,45,18,25,14,53, + 14,63,14,49,0,127,14,23,0,127,10,22,8,23,8,11, + 12,5,255,128, }; diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h index 9af8d7b10489d..7997df0cc7af5 100644 --- a/Python/importlib_zipimport.h +++ b/Python/importlib_zipimport.h @@ -118,116 +118,67 @@ const unsigned char _Py_M__zipimport[] = { 97,109,101,32,111,102,32,116,104,101,10,32,32,32,32,122, 105,112,102,105,108,101,32,116,97,114,103,101,116,101,100,46, 10,32,32,32,32,99,2,0,0,0,0,0,0,0,0,0, - 0,0,8,0,0,0,9,0,0,0,67,0,0,0,115,40, - 1,0,0,116,0,124,1,116,1,131,2,115,28,100,1,100, + 0,0,8,0,0,0,9,0,0,0,67,0,0,0,115,34, + 1,0,0,116,0,124,1,116,1,131,2,115,14,100,1,100, 0,108,2,125,2,124,2,160,3,124,1,161,1,125,1,124, - 1,115,44,116,4,100,2,124,1,100,3,141,2,130,1,116, - 5,114,60,124,1,160,6,116,5,116,7,161,2,125,1,103, - 0,125,3,9,0,122,14,116,8,160,9,124,1,161,1,125, - 4,87,0,110,70,4,0,116,10,116,11,102,2,144,1,121, - 38,1,0,1,0,1,0,116,8,160,12,124,1,161,1,92, - 2,125,5,125,6,124,5,124,1,107,2,114,134,116,4,100, - 5,124,1,100,3,141,2,130,1,124,5,125,1,124,3,160, - 13,124,6,161,1,1,0,89,0,110,28,124,4,106,14,100, - 6,64,0,100,7,107,3,114,178,116,4,100,5,124,1,100, - 3,141,2,130,1,113,182,113,66,122,12,116,15,124,1,25, - 0,125,7,87,0,110,32,4,0,116,16,144,1,121,36,1, - 0,1,0,1,0,116,17,124,1,131,1,125,7,124,7,116, - 15,124,1,60,0,89,0,124,7,124,0,95,18,124,1,124, - 0,95,19,116,8,106,20,124,3,100,0,100,0,100,8,133, - 3,25,0,142,0,124,0,95,21,124,0,106,21,144,1,114, - 32,124,0,4,0,106,21,116,7,55,0,2,0,95,21,100, - 0,83,0,100,0,83,0,119,0,119,0,41,9,78,114,0, - 0,0,0,122,21,97,114,99,104,105,118,101,32,112,97,116, - 104,32,105,115,32,101,109,112,116,121,169,1,218,4,112,97, - 116,104,84,122,14,110,111,116,32,97,32,90,105,112,32,102, - 105,108,101,105,0,240,0,0,105,0,128,0,0,233,255,255, - 255,255,41,22,218,10,105,115,105,110,115,116,97,110,99,101, - 218,3,115,116,114,218,2,111,115,90,8,102,115,100,101,99, - 111,100,101,114,3,0,0,0,218,12,97,108,116,95,112,97, - 116,104,95,115,101,112,218,7,114,101,112,108,97,99,101,218, - 8,112,97,116,104,95,115,101,112,218,19,95,98,111,111,116, - 115,116,114,97,112,95,101,120,116,101,114,110,97,108,90,10, - 95,112,97,116,104,95,115,116,97,116,218,7,79,83,69,114, - 114,111,114,218,10,86,97,108,117,101,69,114,114,111,114,90, - 11,95,112,97,116,104,95,115,112,108,105,116,218,6,97,112, - 112,101,110,100,90,7,115,116,95,109,111,100,101,218,20,95, - 122,105,112,95,100,105,114,101,99,116,111,114,121,95,99,97, - 99,104,101,218,8,75,101,121,69,114,114,111,114,218,15,95, - 114,101,97,100,95,100,105,114,101,99,116,111,114,121,218,6, - 95,102,105,108,101,115,218,7,97,114,99,104,105,118,101,218, - 10,95,112,97,116,104,95,106,111,105,110,218,6,112,114,101, - 102,105,120,41,8,218,4,115,101,108,102,114,13,0,0,0, - 114,17,0,0,0,114,31,0,0,0,90,2,115,116,90,7, - 100,105,114,110,97,109,101,90,8,98,97,115,101,110,97,109, - 101,218,5,102,105,108,101,115,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,8,95,95,105,110,105,116,95, - 95,64,0,0,0,115,70,0,0,0,10,1,8,1,10,1, - 4,1,12,1,4,1,12,1,4,2,2,1,2,1,14,1, - 18,1,14,3,8,1,12,1,4,1,14,1,14,3,12,2, - 2,1,2,240,2,18,12,1,14,1,8,1,10,1,6,1, - 6,1,22,2,8,1,18,1,4,255,2,249,2,239,255,128, - 122,20,122,105,112,105,109,112,111,114,116,101,114,46,95,95, - 105,110,105,116,95,95,78,99,3,0,0,0,0,0,0,0, - 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, - 115,78,0,0,0,116,0,124,0,124,1,131,2,125,3,124, - 3,100,1,117,1,114,26,124,0,103,0,102,2,83,0,116, - 1,124,0,124,1,131,2,125,4,116,2,124,0,124,4,131, - 2,114,70,100,1,124,0,106,3,155,0,116,4,155,0,124, - 4,155,0,157,3,103,1,102,2,83,0,100,1,103,0,102, - 2,83,0,41,2,97,47,2,0,0,102,105,110,100,95,108, - 111,97,100,101,114,40,102,117,108,108,110,97,109,101,44,32, - 112,97,116,104,61,78,111,110,101,41,32,45,62,32,115,101, - 108,102,44,32,115,116,114,32,111,114,32,78,111,110,101,46, - 10,10,32,32,32,32,32,32,32,32,83,101,97,114,99,104, - 32,102,111,114,32,97,32,109,111,100,117,108,101,32,115,112, - 101,99,105,102,105,101,100,32,98,121,32,39,102,117,108,108, - 110,97,109,101,39,46,32,39,102,117,108,108,110,97,109,101, - 39,32,109,117,115,116,32,98,101,32,116,104,101,10,32,32, - 32,32,32,32,32,32,102,117,108,108,121,32,113,117,97,108, - 105,102,105,101,100,32,40,100,111,116,116,101,100,41,32,109, - 111,100,117,108,101,32,110,97,109,101,46,32,73,116,32,114, - 101,116,117,114,110,115,32,116,104,101,32,122,105,112,105,109, - 112,111,114,116,101,114,10,32,32,32,32,32,32,32,32,105, - 110,115,116,97,110,99,101,32,105,116,115,101,108,102,32,105, - 102,32,116,104,101,32,109,111,100,117,108,101,32,119,97,115, - 32,102,111,117,110,100,44,32,97,32,115,116,114,105,110,103, - 32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,10, - 32,32,32,32,32,32,32,32,102,117,108,108,32,112,97,116, - 104,32,110,97,109,101,32,105,102,32,105,116,39,115,32,112, - 111,115,115,105,98,108,121,32,97,32,112,111,114,116,105,111, - 110,32,111,102,32,97,32,110,97,109,101,115,112,97,99,101, - 32,112,97,99,107,97,103,101,44,10,32,32,32,32,32,32, - 32,32,111,114,32,78,111,110,101,32,111,116,104,101,114,119, - 105,115,101,46,32,84,104,101,32,111,112,116,105,111,110,97, - 108,32,39,112,97,116,104,39,32,97,114,103,117,109,101,110, - 116,32,105,115,32,105,103,110,111,114,101,100,32,45,45,32, - 105,116,39,115,10,32,32,32,32,32,32,32,32,116,104,101, - 114,101,32,102,111,114,32,99,111,109,112,97,116,105,98,105, - 108,105,116,121,32,119,105,116,104,32,116,104,101,32,105,109, - 112,111,114,116,101,114,32,112,114,111,116,111,99,111,108,46, - 10,10,32,32,32,32,32,32,32,32,68,101,112,114,101,99, - 97,116,101,100,32,115,105,110,99,101,32,80,121,116,104,111, - 110,32,51,46,49,48,46,32,85,115,101,32,102,105,110,100, - 95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,46, - 10,32,32,32,32,32,32,32,32,78,41,5,218,16,95,103, - 101,116,95,109,111,100,117,108,101,95,105,110,102,111,218,16, - 95,103,101,116,95,109,111,100,117,108,101,95,112,97,116,104, - 218,7,95,105,115,95,100,105,114,114,29,0,0,0,114,20, - 0,0,0,41,5,114,32,0,0,0,218,8,102,117,108,108, - 110,97,109,101,114,13,0,0,0,218,2,109,105,218,7,109, - 111,100,112,97,116,104,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,11,102,105,110,100,95,108,111,97,100, - 101,114,110,0,0,0,115,16,0,0,0,10,12,8,1,8, - 2,10,7,10,1,24,4,8,2,255,128,122,23,122,105,112, - 105,109,112,111,114,116,101,114,46,102,105,110,100,95,108,111, - 97,100,101,114,99,3,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,4,0,0,0,67,0,0,0,115,16,0, - 0,0,124,0,160,0,124,1,124,2,161,2,100,1,25,0, - 83,0,41,3,97,203,1,0,0,102,105,110,100,95,109,111, - 100,117,108,101,40,102,117,108,108,110,97,109,101,44,32,112, - 97,116,104,61,78,111,110,101,41,32,45,62,32,115,101,108, - 102,32,111,114,32,78,111,110,101,46,10,10,32,32,32,32, + 1,115,22,116,4,100,2,124,1,100,3,141,2,130,1,116, + 5,114,30,124,1,160,6,116,5,116,7,161,2,125,1,103, + 0,125,3,9,0,122,7,116,8,160,9,124,1,161,1,125, + 4,87,0,110,34,4,0,116,10,116,11,102,2,121,144,1, + 0,1,0,1,0,116,8,160,12,124,1,161,1,92,2,125, + 5,125,6,124,5,124,1,107,2,114,66,116,4,100,5,124, + 1,100,3,141,2,130,1,124,5,125,1,124,3,160,13,124, + 6,161,1,1,0,89,0,110,14,124,4,106,14,100,6,64, + 0,100,7,107,3,114,88,116,4,100,5,124,1,100,3,141, + 2,130,1,113,90,113,33,122,6,116,15,124,1,25,0,125, + 7,87,0,110,15,4,0,116,16,121,143,1,0,1,0,1, + 0,116,17,124,1,131,1,125,7,124,7,116,15,124,1,60, + 0,89,0,124,7,124,0,95,18,124,1,124,0,95,19,116, + 8,106,20,124,3,100,0,100,0,100,8,133,3,25,0,142, + 0,124,0,95,21,124,0,106,21,114,141,124,0,4,0,106, + 21,116,7,55,0,2,0,95,21,100,0,83,0,100,0,83, + 0,119,0,119,0,41,9,78,114,0,0,0,0,122,21,97, + 114,99,104,105,118,101,32,112,97,116,104,32,105,115,32,101, + 109,112,116,121,169,1,218,4,112,97,116,104,84,122,14,110, + 111,116,32,97,32,90,105,112,32,102,105,108,101,105,0,240, + 0,0,105,0,128,0,0,233,255,255,255,255,41,22,218,10, + 105,115,105,110,115,116,97,110,99,101,218,3,115,116,114,218, + 2,111,115,90,8,102,115,100,101,99,111,100,101,114,3,0, + 0,0,218,12,97,108,116,95,112,97,116,104,95,115,101,112, + 218,7,114,101,112,108,97,99,101,218,8,112,97,116,104,95, + 115,101,112,218,19,95,98,111,111,116,115,116,114,97,112,95, + 101,120,116,101,114,110,97,108,90,10,95,112,97,116,104,95, + 115,116,97,116,218,7,79,83,69,114,114,111,114,218,10,86, + 97,108,117,101,69,114,114,111,114,90,11,95,112,97,116,104, + 95,115,112,108,105,116,218,6,97,112,112,101,110,100,90,7, + 115,116,95,109,111,100,101,218,20,95,122,105,112,95,100,105, + 114,101,99,116,111,114,121,95,99,97,99,104,101,218,8,75, + 101,121,69,114,114,111,114,218,15,95,114,101,97,100,95,100, + 105,114,101,99,116,111,114,121,218,6,95,102,105,108,101,115, + 218,7,97,114,99,104,105,118,101,218,10,95,112,97,116,104, + 95,106,111,105,110,218,6,112,114,101,102,105,120,41,8,218, + 4,115,101,108,102,114,13,0,0,0,114,17,0,0,0,114, + 31,0,0,0,90,2,115,116,90,7,100,105,114,110,97,109, + 101,90,8,98,97,115,101,110,97,109,101,218,5,102,105,108, + 101,115,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,8,95,95,105,110,105,116,95,95,64,0,0,0,115, + 70,0,0,0,10,1,8,1,10,1,4,1,12,1,4,1, + 12,1,4,2,2,1,2,1,14,1,16,1,14,3,8,1, + 12,1,4,1,14,1,14,3,12,2,2,1,2,240,2,18, + 12,1,12,1,8,1,10,1,6,1,6,1,22,2,6,1, + 18,1,4,255,2,249,2,239,255,128,122,20,122,105,112,105, + 109,112,111,114,116,101,114,46,95,95,105,110,105,116,95,95, + 78,99,3,0,0,0,0,0,0,0,0,0,0,0,5,0, + 0,0,4,0,0,0,67,0,0,0,115,78,0,0,0,116, + 0,124,0,124,1,131,2,125,3,124,3,100,1,117,1,114, + 13,124,0,103,0,102,2,83,0,116,1,124,0,124,1,131, + 2,125,4,116,2,124,0,124,4,131,2,114,35,100,1,124, + 0,106,3,155,0,116,4,155,0,124,4,155,0,157,3,103, + 1,102,2,83,0,100,1,103,0,102,2,83,0,41,2,97, + 47,2,0,0,102,105,110,100,95,108,111,97,100,101,114,40, + 102,117,108,108,110,97,109,101,44,32,112,97,116,104,61,78, + 111,110,101,41,32,45,62,32,115,101,108,102,44,32,115,116, + 114,32,111,114,32,78,111,110,101,46,10,10,32,32,32,32, 32,32,32,32,83,101,97,114,99,104,32,102,111,114,32,97, 32,109,111,100,117,108,101,32,115,112,101,99,105,102,105,101, 100,32,98,121,32,39,102,117,108,108,110,97,109,101,39,46, @@ -240,408 +191,456 @@ const unsigned char _Py_M__zipimport[] = { 10,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99, 101,32,105,116,115,101,108,102,32,105,102,32,116,104,101,32, 109,111,100,117,108,101,32,119,97,115,32,102,111,117,110,100, - 44,32,111,114,32,78,111,110,101,32,105,102,32,105,116,32, - 119,97,115,110,39,116,46,10,32,32,32,32,32,32,32,32, - 84,104,101,32,111,112,116,105,111,110,97,108,32,39,112,97, - 116,104,39,32,97,114,103,117,109,101,110,116,32,105,115,32, - 105,103,110,111,114,101,100,32,45,45,32,105,116,39,115,32, - 116,104,101,114,101,32,102,111,114,32,99,111,109,112,97,116, - 105,98,105,108,105,116,121,10,32,32,32,32,32,32,32,32, - 119,105,116,104,32,116,104,101,32,105,109,112,111,114,116,101, - 114,32,112,114,111,116,111,99,111,108,46,10,10,32,32,32, + 44,32,97,32,115,116,114,105,110,103,32,99,111,110,116,97, + 105,110,105,110,103,32,116,104,101,10,32,32,32,32,32,32, + 32,32,102,117,108,108,32,112,97,116,104,32,110,97,109,101, + 32,105,102,32,105,116,39,115,32,112,111,115,115,105,98,108, + 121,32,97,32,112,111,114,116,105,111,110,32,111,102,32,97, + 32,110,97,109,101,115,112,97,99,101,32,112,97,99,107,97, + 103,101,44,10,32,32,32,32,32,32,32,32,111,114,32,78, + 111,110,101,32,111,116,104,101,114,119,105,115,101,46,32,84, + 104,101,32,111,112,116,105,111,110,97,108,32,39,112,97,116, + 104,39,32,97,114,103,117,109,101,110,116,32,105,115,32,105, + 103,110,111,114,101,100,32,45,45,32,105,116,39,115,10,32, + 32,32,32,32,32,32,32,116,104,101,114,101,32,102,111,114, + 32,99,111,109,112,97,116,105,98,105,108,105,116,121,32,119, + 105,116,104,32,116,104,101,32,105,109,112,111,114,116,101,114, + 32,112,114,111,116,111,99,111,108,46,10,10,32,32,32,32, + 32,32,32,32,68,101,112,114,101,99,97,116,101,100,32,115, + 105,110,99,101,32,80,121,116,104,111,110,32,51,46,49,48, + 46,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,46,10,32,32,32,32,32, + 32,32,32,78,41,5,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,105,110,102,111,218,16,95,103,101,116,95,109, + 111,100,117,108,101,95,112,97,116,104,218,7,95,105,115,95, + 100,105,114,114,29,0,0,0,114,20,0,0,0,41,5,114, + 32,0,0,0,218,8,102,117,108,108,110,97,109,101,114,13, + 0,0,0,218,2,109,105,218,7,109,111,100,112,97,116,104, + 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, + 11,102,105,110,100,95,108,111,97,100,101,114,110,0,0,0, + 115,16,0,0,0,10,12,8,1,8,2,10,7,10,1,24, + 4,8,2,255,128,122,23,122,105,112,105,109,112,111,114,116, + 101,114,46,102,105,110,100,95,108,111,97,100,101,114,99,3, + 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, + 0,0,0,67,0,0,0,115,16,0,0,0,124,0,160,0, + 124,1,124,2,161,2,100,1,25,0,83,0,41,3,97,203, + 1,0,0,102,105,110,100,95,109,111,100,117,108,101,40,102, + 117,108,108,110,97,109,101,44,32,112,97,116,104,61,78,111, + 110,101,41,32,45,62,32,115,101,108,102,32,111,114,32,78, + 111,110,101,46,10,10,32,32,32,32,32,32,32,32,83,101, + 97,114,99,104,32,102,111,114,32,97,32,109,111,100,117,108, + 101,32,115,112,101,99,105,102,105,101,100,32,98,121,32,39, + 102,117,108,108,110,97,109,101,39,46,32,39,102,117,108,108, + 110,97,109,101,39,32,109,117,115,116,32,98,101,32,116,104, + 101,10,32,32,32,32,32,32,32,32,102,117,108,108,121,32, + 113,117,97,108,105,102,105,101,100,32,40,100,111,116,116,101, + 100,41,32,109,111,100,117,108,101,32,110,97,109,101,46,32, + 73,116,32,114,101,116,117,114,110,115,32,116,104,101,32,122, + 105,112,105,109,112,111,114,116,101,114,10,32,32,32,32,32, + 32,32,32,105,110,115,116,97,110,99,101,32,105,116,115,101, + 108,102,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,119,97,115,32,102,111,117,110,100,44,32,111,114,32,78, + 111,110,101,32,105,102,32,105,116,32,119,97,115,110,39,116, + 46,10,32,32,32,32,32,32,32,32,84,104,101,32,111,112, + 116,105,111,110,97,108,32,39,112,97,116,104,39,32,97,114, + 103,117,109,101,110,116,32,105,115,32,105,103,110,111,114,101, + 100,32,45,45,32,105,116,39,115,32,116,104,101,114,101,32, + 102,111,114,32,99,111,109,112,97,116,105,98,105,108,105,116, + 121,10,32,32,32,32,32,32,32,32,119,105,116,104,32,116, + 104,101,32,105,109,112,111,114,116,101,114,32,112,114,111,116, + 111,99,111,108,46,10,10,32,32,32,32,32,32,32,32,68, + 101,112,114,101,99,97,116,101,100,32,115,105,110,99,101,32, + 80,121,116,104,111,110,32,51,46,49,48,46,32,85,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,46,10,32,32,32,32,32,32,32,32,114,0, + 0,0,0,78,41,1,114,41,0,0,0,41,3,114,32,0, + 0,0,114,38,0,0,0,114,13,0,0,0,114,9,0,0, + 0,114,9,0,0,0,114,10,0,0,0,218,11,102,105,110, + 100,95,109,111,100,117,108,101,144,0,0,0,115,4,0,0, + 0,16,11,255,128,122,23,122,105,112,105,109,112,111,114,116, + 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,3, + 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,5, + 0,0,0,67,0,0,0,115,108,0,0,0,116,0,124,0, + 124,1,131,2,125,3,124,3,100,1,117,1,114,17,116,1, + 106,2,124,1,124,0,124,3,100,2,141,3,83,0,116,3, + 124,0,124,1,131,2,125,4,116,4,124,0,124,4,131,2, + 114,52,124,0,106,5,155,0,116,6,155,0,124,4,155,0, + 157,3,125,5,116,1,106,7,124,1,100,1,100,3,100,4, + 141,3,125,6,124,6,106,8,160,9,124,5,161,1,1,0, + 124,6,83,0,100,1,83,0,41,5,122,107,67,114,101,97, + 116,101,32,97,32,77,111,100,117,108,101,83,112,101,99,32, + 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,46,10,10,32,32,32,32,32, + 32,32,32,82,101,116,117,114,110,115,32,78,111,110,101,32, + 105,102,32,116,104,101,32,109,111,100,117,108,101,32,99,97, + 110,110,111,116,32,98,101,32,102,111,117,110,100,46,10,32, + 32,32,32,32,32,32,32,78,41,1,218,10,105,115,95,112, + 97,99,107,97,103,101,84,41,3,218,4,110,97,109,101,90, + 6,108,111,97,100,101,114,114,43,0,0,0,41,10,114,35, + 0,0,0,218,10,95,98,111,111,116,115,116,114,97,112,90, + 16,115,112,101,99,95,102,114,111,109,95,108,111,97,100,101, + 114,114,36,0,0,0,114,37,0,0,0,114,29,0,0,0, + 114,20,0,0,0,90,10,77,111,100,117,108,101,83,112,101, + 99,90,26,115,117,98,109,111,100,117,108,101,95,115,101,97, + 114,99,104,95,108,111,99,97,116,105,111,110,115,114,24,0, + 0,0,41,7,114,32,0,0,0,114,38,0,0,0,90,6, + 116,97,114,103,101,116,90,11,109,111,100,117,108,101,95,105, + 110,102,111,114,40,0,0,0,114,13,0,0,0,90,4,115, + 112,101,99,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,9,102,105,110,100,95,115,112,101,99,157,0,0, + 0,115,26,0,0,0,10,5,8,1,16,1,10,7,10,1, + 18,4,8,1,2,1,6,255,12,2,4,1,4,2,255,128, + 122,21,122,105,112,105,109,112,111,114,116,101,114,46,102,105, + 110,100,95,115,112,101,99,99,2,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,3,0,0,0,67,0,0,0, + 115,20,0,0,0,116,0,124,0,124,1,131,2,92,3,125, + 2,125,3,125,4,124,2,83,0,41,2,122,166,103,101,116, + 95,99,111,100,101,40,102,117,108,108,110,97,109,101,41,32, + 45,62,32,99,111,100,101,32,111,98,106,101,99,116,46,10, + 10,32,32,32,32,32,32,32,32,82,101,116,117,114,110,32, + 116,104,101,32,99,111,100,101,32,111,98,106,101,99,116,32, + 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, + 100,32,109,111,100,117,108,101,46,32,82,97,105,115,101,32, + 90,105,112,73,109,112,111,114,116,69,114,114,111,114,10,32, + 32,32,32,32,32,32,32,105,102,32,116,104,101,32,109,111, + 100,117,108,101,32,99,111,117,108,100,110,39,116,32,98,101, + 32,105,109,112,111,114,116,101,100,46,10,32,32,32,32,32, + 32,32,32,78,169,1,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,99,111,100,101,169,5,114,32,0,0,0,114, + 38,0,0,0,218,4,99,111,100,101,218,9,105,115,112,97, + 99,107,97,103,101,114,40,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,103,101,116,95,99, + 111,100,101,184,0,0,0,115,6,0,0,0,16,6,4,1, + 255,128,122,20,122,105,112,105,109,112,111,114,116,101,114,46, + 103,101,116,95,99,111,100,101,99,2,0,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,8,0,0,0,67,0,0, + 0,115,112,0,0,0,116,0,114,8,124,1,160,1,116,0, + 116,2,161,2,125,1,124,1,125,2,124,1,160,3,124,0, + 106,4,116,2,23,0,161,1,114,29,124,1,116,5,124,0, + 106,4,116,2,23,0,131,1,100,1,133,2,25,0,125,2, + 122,7,124,0,106,6,124,2,25,0,125,3,87,0,110,12, + 4,0,116,7,121,55,1,0,1,0,1,0,116,8,100,2, + 100,3,124,2,131,3,130,1,116,9,124,0,106,4,124,3, + 131,2,83,0,119,0,41,4,122,154,103,101,116,95,100,97, + 116,97,40,112,97,116,104,110,97,109,101,41,32,45,62,32, + 115,116,114,105,110,103,32,119,105,116,104,32,102,105,108,101, + 32,100,97,116,97,46,10,10,32,32,32,32,32,32,32,32, + 82,101,116,117,114,110,32,116,104,101,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 39,112,97,116,104,110,97,109,101,39,46,32,82,97,105,115, + 101,32,79,83,69,114,114,111,114,32,105,102,10,32,32,32, + 32,32,32,32,32,116,104,101,32,102,105,108,101,32,119,97, + 115,110,39,116,32,102,111,117,110,100,46,10,32,32,32,32, + 32,32,32,32,78,114,0,0,0,0,218,0,41,10,114,18, + 0,0,0,114,19,0,0,0,114,20,0,0,0,218,10,115, + 116,97,114,116,115,119,105,116,104,114,29,0,0,0,218,3, + 108,101,110,114,28,0,0,0,114,26,0,0,0,114,22,0, + 0,0,218,9,95,103,101,116,95,100,97,116,97,41,4,114, + 32,0,0,0,218,8,112,97,116,104,110,97,109,101,90,3, + 107,101,121,218,9,116,111,99,95,101,110,116,114,121,114,9, + 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,103, + 101,116,95,100,97,116,97,194,0,0,0,115,24,0,0,0, + 4,6,12,1,4,2,16,1,22,1,2,2,14,1,12,1, + 12,1,12,1,2,254,255,128,122,20,122,105,112,105,109,112, + 111,114,116,101,114,46,103,101,116,95,100,97,116,97,99,2, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,3, + 0,0,0,67,0,0,0,115,20,0,0,0,116,0,124,0, + 124,1,131,2,92,3,125,2,125,3,125,4,124,4,83,0, + 41,2,122,165,103,101,116,95,102,105,108,101,110,97,109,101, + 40,102,117,108,108,110,97,109,101,41,32,45,62,32,102,105, + 108,101,110,97,109,101,32,115,116,114,105,110,103,46,10,10, + 32,32,32,32,32,32,32,32,82,101,116,117,114,110,32,116, + 104,101,32,102,105,108,101,110,97,109,101,32,102,111,114,32, + 116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111, + 100,117,108,101,32,111,114,32,114,97,105,115,101,32,90,105, + 112,73,109,112,111,114,116,69,114,114,111,114,10,32,32,32, + 32,32,32,32,32,105,102,32,105,116,32,99,111,117,108,100, + 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, + 10,32,32,32,32,32,32,32,32,78,114,47,0,0,0,114, + 49,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10, + 0,0,0,218,12,103,101,116,95,102,105,108,101,110,97,109, + 101,215,0,0,0,115,6,0,0,0,16,8,4,1,255,128, + 122,24,122,105,112,105,109,112,111,114,116,101,114,46,103,101, + 116,95,102,105,108,101,110,97,109,101,99,2,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,8,0,0,0,67, + 0,0,0,115,126,0,0,0,116,0,124,0,124,1,131,2, + 125,2,124,2,100,1,117,0,114,18,116,1,100,2,124,1, + 155,2,157,2,124,1,100,3,141,2,130,1,116,2,124,0, + 124,1,131,2,125,3,124,2,114,32,116,3,160,4,124,3, + 100,4,161,2,125,4,110,5,124,3,155,0,100,5,157,2, + 125,4,122,7,124,0,106,5,124,4,25,0,125,5,87,0, + 110,9,4,0,116,6,121,62,1,0,1,0,1,0,89,0, + 100,1,83,0,116,7,124,0,106,8,124,5,131,2,160,9, + 161,0,83,0,119,0,41,6,122,253,103,101,116,95,115,111, + 117,114,99,101,40,102,117,108,108,110,97,109,101,41,32,45, + 62,32,115,111,117,114,99,101,32,115,116,114,105,110,103,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 32,116,104,101,32,115,111,117,114,99,101,32,99,111,100,101, + 32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105, + 101,100,32,109,111,100,117,108,101,46,32,82,97,105,115,101, + 32,90,105,112,73,109,112,111,114,116,69,114,114,111,114,10, + 32,32,32,32,32,32,32,32,105,102,32,116,104,101,32,109, + 111,100,117,108,101,32,99,111,117,108,100,110,39,116,32,98, + 101,32,102,111,117,110,100,44,32,114,101,116,117,114,110,32, + 78,111,110,101,32,105,102,32,116,104,101,32,97,114,99,104, + 105,118,101,32,100,111,101,115,10,32,32,32,32,32,32,32, + 32,99,111,110,116,97,105,110,32,116,104,101,32,109,111,100, + 117,108,101,44,32,98,117,116,32,104,97,115,32,110,111,32, + 115,111,117,114,99,101,32,102,111,114,32,105,116,46,10,32, + 32,32,32,32,32,32,32,78,250,18,99,97,110,39,116,32, + 102,105,110,100,32,109,111,100,117,108,101,32,169,1,114,44, + 0,0,0,250,11,95,95,105,110,105,116,95,95,46,112,121, + 250,3,46,112,121,41,10,114,35,0,0,0,114,3,0,0, + 0,114,36,0,0,0,114,21,0,0,0,114,30,0,0,0, + 114,28,0,0,0,114,26,0,0,0,114,56,0,0,0,114, + 29,0,0,0,218,6,100,101,99,111,100,101,41,6,114,32, + 0,0,0,114,38,0,0,0,114,39,0,0,0,114,13,0, + 0,0,218,8,102,117,108,108,112,97,116,104,114,58,0,0, + 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,10,103,101,116,95,115,111,117,114,99,101,227,0,0,0, + 115,28,0,0,0,10,7,8,1,18,1,10,2,4,1,14, + 1,10,2,2,2,14,1,12,1,6,2,16,1,2,253,255, + 128,122,22,122,105,112,105,109,112,111,114,116,101,114,46,103, + 101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,0, + 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0, + 0,0,115,40,0,0,0,116,0,124,0,124,1,131,2,125, + 2,124,2,100,1,117,0,114,18,116,1,100,2,124,1,155, + 2,157,2,124,1,100,3,141,2,130,1,124,2,83,0,41, + 4,122,171,105,115,95,112,97,99,107,97,103,101,40,102,117, + 108,108,110,97,109,101,41,32,45,62,32,98,111,111,108,46, + 10,10,32,32,32,32,32,32,32,32,82,101,116,117,114,110, + 32,84,114,117,101,32,105,102,32,116,104,101,32,109,111,100, + 117,108,101,32,115,112,101,99,105,102,105,101,100,32,98,121, + 32,102,117,108,108,110,97,109,101,32,105,115,32,97,32,112, + 97,99,107,97,103,101,46,10,32,32,32,32,32,32,32,32, + 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, + 114,114,111,114,32,105,102,32,116,104,101,32,109,111,100,117, + 108,101,32,99,111,117,108,100,110,39,116,32,98,101,32,102, + 111,117,110,100,46,10,32,32,32,32,32,32,32,32,78,114, + 61,0,0,0,114,62,0,0,0,41,2,114,35,0,0,0, + 114,3,0,0,0,41,3,114,32,0,0,0,114,38,0,0, + 0,114,39,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,114,43,0,0,0,253,0,0,0,115,10, + 0,0,0,10,6,8,1,18,1,4,1,255,128,122,22,122, + 105,112,105,109,112,111,114,116,101,114,46,105,115,95,112,97, + 99,107,97,103,101,99,2,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,8,0,0,0,67,0,0,0,115,252, + 0,0,0,100,1,125,2,116,0,160,1,124,2,116,2,161, + 2,1,0,116,3,124,0,124,1,131,2,92,3,125,3,125, + 4,125,5,116,4,106,5,160,6,124,1,161,1,125,6,124, + 6,100,2,117,0,115,31,116,7,124,6,116,8,131,2,115, + 40,116,8,124,1,131,1,125,6,124,6,116,4,106,5,124, + 1,60,0,124,0,124,6,95,9,122,42,124,4,114,62,116, + 10,124,0,124,1,131,2,125,7,116,11,160,12,124,0,106, + 13,124,7,161,2,125,8,124,8,103,1,124,6,95,14,116, + 15,124,6,100,3,131,2,115,70,116,16,124,6,95,16,116, + 11,160,17,124,6,106,18,124,1,124,5,161,3,1,0,116, + 19,124,3,124,6,106,18,131,2,1,0,87,0,110,8,1, + 0,1,0,1,0,116,4,106,5,124,1,61,0,130,0,122, + 7,116,4,106,5,124,1,25,0,125,6,87,0,110,14,4, + 0,116,20,121,125,1,0,1,0,1,0,116,21,100,4,124, + 1,155,2,100,5,157,3,131,1,130,1,116,22,160,23,100, + 6,124,1,124,5,161,3,1,0,124,6,83,0,119,0,41, + 7,97,64,1,0,0,108,111,97,100,95,109,111,100,117,108, + 101,40,102,117,108,108,110,97,109,101,41,32,45,62,32,109, + 111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,32, + 76,111,97,100,32,116,104,101,32,109,111,100,117,108,101,32, + 115,112,101,99,105,102,105,101,100,32,98,121,32,39,102,117, + 108,108,110,97,109,101,39,46,32,39,102,117,108,108,110,97, + 109,101,39,32,109,117,115,116,32,98,101,32,116,104,101,10, + 32,32,32,32,32,32,32,32,102,117,108,108,121,32,113,117, + 97,108,105,102,105,101,100,32,40,100,111,116,116,101,100,41, + 32,109,111,100,117,108,101,32,110,97,109,101,46,32,73,116, + 32,114,101,116,117,114,110,115,32,116,104,101,32,105,109,112, + 111,114,116,101,100,10,32,32,32,32,32,32,32,32,109,111, + 100,117,108,101,44,32,111,114,32,114,97,105,115,101,115,32, + 90,105,112,73,109,112,111,114,116,69,114,114,111,114,32,105, + 102,32,105,116,32,99,111,117,108,100,32,110,111,116,32,98, + 101,32,105,109,112,111,114,116,101,100,46,10,10,32,32,32, 32,32,32,32,32,68,101,112,114,101,99,97,116,101,100,32, 115,105,110,99,101,32,80,121,116,104,111,110,32,51,46,49, - 48,46,32,85,115,101,32,102,105,110,100,95,115,112,101,99, - 40,41,32,105,110,115,116,101,97,100,46,10,32,32,32,32, - 32,32,32,32,114,0,0,0,0,78,41,1,114,41,0,0, - 0,41,3,114,32,0,0,0,114,38,0,0,0,114,13,0, - 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, - 0,218,11,102,105,110,100,95,109,111,100,117,108,101,144,0, - 0,0,115,4,0,0,0,16,11,255,128,122,23,122,105,112, - 105,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, - 100,117,108,101,99,3,0,0,0,0,0,0,0,0,0,0, - 0,7,0,0,0,5,0,0,0,67,0,0,0,115,108,0, - 0,0,116,0,124,0,124,1,131,2,125,3,124,3,100,1, - 117,1,114,34,116,1,106,2,124,1,124,0,124,3,100,2, - 141,3,83,0,116,3,124,0,124,1,131,2,125,4,116,4, - 124,0,124,4,131,2,114,104,124,0,106,5,155,0,116,6, - 155,0,124,4,155,0,157,3,125,5,116,1,106,7,124,1, - 100,1,100,3,100,4,141,3,125,6,124,6,106,8,160,9, - 124,5,161,1,1,0,124,6,83,0,100,1,83,0,41,5, - 122,107,67,114,101,97,116,101,32,97,32,77,111,100,117,108, - 101,83,112,101,99,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,10, - 10,32,32,32,32,32,32,32,32,82,101,116,117,114,110,115, - 32,78,111,110,101,32,105,102,32,116,104,101,32,109,111,100, - 117,108,101,32,99,97,110,110,111,116,32,98,101,32,102,111, - 117,110,100,46,10,32,32,32,32,32,32,32,32,78,41,1, - 218,10,105,115,95,112,97,99,107,97,103,101,84,41,3,218, - 4,110,97,109,101,90,6,108,111,97,100,101,114,114,43,0, - 0,0,41,10,114,35,0,0,0,218,10,95,98,111,111,116, - 115,116,114,97,112,90,16,115,112,101,99,95,102,114,111,109, - 95,108,111,97,100,101,114,114,36,0,0,0,114,37,0,0, - 0,114,29,0,0,0,114,20,0,0,0,90,10,77,111,100, - 117,108,101,83,112,101,99,90,26,115,117,98,109,111,100,117, - 108,101,95,115,101,97,114,99,104,95,108,111,99,97,116,105, - 111,110,115,114,24,0,0,0,41,7,114,32,0,0,0,114, - 38,0,0,0,90,6,116,97,114,103,101,116,90,11,109,111, - 100,117,108,101,95,105,110,102,111,114,40,0,0,0,114,13, - 0,0,0,90,4,115,112,101,99,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,9,102,105,110,100,95,115, - 112,101,99,157,0,0,0,115,26,0,0,0,10,5,8,1, - 16,1,10,7,10,1,18,4,8,1,2,1,6,255,12,2, - 4,1,4,2,255,128,122,21,122,105,112,105,109,112,111,114, - 116,101,114,46,102,105,110,100,95,115,112,101,99,99,2,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,3,0, - 0,0,67,0,0,0,115,20,0,0,0,116,0,124,0,124, - 1,131,2,92,3,125,2,125,3,125,4,124,2,83,0,41, - 2,122,166,103,101,116,95,99,111,100,101,40,102,117,108,108, - 110,97,109,101,41,32,45,62,32,99,111,100,101,32,111,98, - 106,101,99,116,46,10,10,32,32,32,32,32,32,32,32,82, - 101,116,117,114,110,32,116,104,101,32,99,111,100,101,32,111, - 98,106,101,99,116,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,46,32, - 82,97,105,115,101,32,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,10,32,32,32,32,32,32,32,32,105,102,32, - 116,104,101,32,109,111,100,117,108,101,32,99,111,117,108,100, - 110,39,116,32,98,101,32,105,109,112,111,114,116,101,100,46, - 10,32,32,32,32,32,32,32,32,78,169,1,218,16,95,103, - 101,116,95,109,111,100,117,108,101,95,99,111,100,101,169,5, - 114,32,0,0,0,114,38,0,0,0,218,4,99,111,100,101, - 218,9,105,115,112,97,99,107,97,103,101,114,40,0,0,0, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 8,103,101,116,95,99,111,100,101,184,0,0,0,115,6,0, - 0,0,16,6,4,1,255,128,122,20,122,105,112,105,109,112, - 111,114,116,101,114,46,103,101,116,95,99,111,100,101,99,2, - 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,8, - 0,0,0,67,0,0,0,115,112,0,0,0,116,0,114,16, - 124,1,160,1,116,0,116,2,161,2,125,1,124,1,125,2, - 124,1,160,3,124,0,106,4,116,2,23,0,161,1,114,58, - 124,1,116,5,124,0,106,4,116,2,23,0,131,1,100,1, - 133,2,25,0,125,2,122,14,124,0,106,6,124,2,25,0, - 125,3,87,0,110,24,4,0,116,7,121,110,1,0,1,0, - 1,0,116,8,100,2,100,3,124,2,131,3,130,1,116,9, - 124,0,106,4,124,3,131,2,83,0,119,0,41,4,122,154, - 103,101,116,95,100,97,116,97,40,112,97,116,104,110,97,109, - 101,41,32,45,62,32,115,116,114,105,110,103,32,119,105,116, - 104,32,102,105,108,101,32,100,97,116,97,46,10,10,32,32, - 32,32,32,32,32,32,82,101,116,117,114,110,32,116,104,101, - 32,100,97,116,97,32,97,115,115,111,99,105,97,116,101,100, - 32,119,105,116,104,32,39,112,97,116,104,110,97,109,101,39, - 46,32,82,97,105,115,101,32,79,83,69,114,114,111,114,32, - 105,102,10,32,32,32,32,32,32,32,32,116,104,101,32,102, - 105,108,101,32,119,97,115,110,39,116,32,102,111,117,110,100, + 48,46,32,85,115,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,105,110,115,116,101,97,100,46,10,32,32, + 32,32,32,32,32,32,122,114,122,105,112,105,109,112,111,114, + 116,46,122,105,112,105,109,112,111,114,116,101,114,46,108,111, + 97,100,95,109,111,100,117,108,101,40,41,32,105,115,32,100, + 101,112,114,101,99,97,116,101,100,32,97,110,100,32,115,108, + 97,116,101,100,32,102,111,114,32,114,101,109,111,118,97,108, + 32,105,110,32,80,121,116,104,111,110,32,51,46,49,50,59, + 32,117,115,101,32,101,120,101,99,95,109,111,100,117,108,101, + 40,41,32,105,110,115,116,101,97,100,78,218,12,95,95,98, + 117,105,108,116,105,110,115,95,95,122,14,76,111,97,100,101, + 100,32,109,111,100,117,108,101,32,122,25,32,110,111,116,32, + 102,111,117,110,100,32,105,110,32,115,121,115,46,109,111,100, + 117,108,101,115,122,30,105,109,112,111,114,116,32,123,125,32, + 35,32,108,111,97,100,101,100,32,102,114,111,109,32,90,105, + 112,32,123,125,41,24,218,9,95,119,97,114,110,105,110,103, + 115,90,4,119,97,114,110,218,18,68,101,112,114,101,99,97, + 116,105,111,110,87,97,114,110,105,110,103,114,48,0,0,0, + 218,3,115,121,115,218,7,109,111,100,117,108,101,115,218,3, + 103,101,116,114,15,0,0,0,218,12,95,109,111,100,117,108, + 101,95,116,121,112,101,218,10,95,95,108,111,97,100,101,114, + 95,95,114,36,0,0,0,114,21,0,0,0,114,30,0,0, + 0,114,29,0,0,0,90,8,95,95,112,97,116,104,95,95, + 218,7,104,97,115,97,116,116,114,114,68,0,0,0,90,14, + 95,102,105,120,95,117,112,95,109,111,100,117,108,101,218,8, + 95,95,100,105,99,116,95,95,218,4,101,120,101,99,114,26, + 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, + 114,45,0,0,0,218,16,95,118,101,114,98,111,115,101,95, + 109,101,115,115,97,103,101,41,9,114,32,0,0,0,114,38, + 0,0,0,218,3,109,115,103,114,50,0,0,0,114,51,0, + 0,0,114,40,0,0,0,90,3,109,111,100,114,13,0,0, + 0,114,66,0,0,0,114,9,0,0,0,114,9,0,0,0, + 114,10,0,0,0,218,11,108,111,97,100,95,109,111,100,117, + 108,101,10,1,0,0,115,56,0,0,0,4,9,12,2,16, + 1,12,1,18,1,8,1,10,1,6,1,2,2,4,1,10, + 3,14,1,8,1,10,2,6,1,16,1,16,1,6,1,8, + 1,2,1,2,2,14,1,12,1,16,1,14,1,4,1,2, + 253,255,128,122,23,122,105,112,105,109,112,111,114,116,101,114, + 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0, + 0,67,0,0,0,115,64,0,0,0,122,10,124,0,160,0, + 124,1,161,1,115,9,87,0,100,1,83,0,87,0,110,9, + 4,0,116,1,121,31,1,0,1,0,1,0,89,0,100,1, + 83,0,100,2,100,3,108,2,109,3,125,2,1,0,124,2, + 124,0,124,1,131,2,83,0,119,0,41,4,122,204,82,101, + 116,117,114,110,32,116,104,101,32,82,101,115,111,117,114,99, + 101,82,101,97,100,101,114,32,102,111,114,32,97,32,112,97, + 99,107,97,103,101,32,105,110,32,97,32,122,105,112,32,102, + 105,108,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,39,102,117,108,108,110,97,109,101,39,32,105,115,32,97, + 32,112,97,99,107,97,103,101,32,119,105,116,104,105,110,32, + 116,104,101,32,122,105,112,32,102,105,108,101,44,32,114,101, + 116,117,114,110,32,116,104,101,10,32,32,32,32,32,32,32, + 32,39,82,101,115,111,117,114,99,101,82,101,97,100,101,114, + 39,32,111,98,106,101,99,116,32,102,111,114,32,116,104,101, + 32,112,97,99,107,97,103,101,46,32,32,79,116,104,101,114, + 119,105,115,101,32,114,101,116,117,114,110,32,78,111,110,101, 46,10,32,32,32,32,32,32,32,32,78,114,0,0,0,0, - 218,0,41,10,114,18,0,0,0,114,19,0,0,0,114,20, - 0,0,0,218,10,115,116,97,114,116,115,119,105,116,104,114, - 29,0,0,0,218,3,108,101,110,114,28,0,0,0,114,26, - 0,0,0,114,22,0,0,0,218,9,95,103,101,116,95,100, - 97,116,97,41,4,114,32,0,0,0,218,8,112,97,116,104, - 110,97,109,101,90,3,107,101,121,218,9,116,111,99,95,101, - 110,116,114,121,114,9,0,0,0,114,9,0,0,0,114,10, - 0,0,0,218,8,103,101,116,95,100,97,116,97,194,0,0, - 0,115,24,0,0,0,4,6,12,1,4,2,16,1,22,1, - 2,2,14,1,12,1,12,1,12,1,2,254,255,128,122,20, - 122,105,112,105,109,112,111,114,116,101,114,46,103,101,116,95, - 100,97,116,97,99,2,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,3,0,0,0,67,0,0,0,115,20,0, - 0,0,116,0,124,0,124,1,131,2,92,3,125,2,125,3, - 125,4,124,4,83,0,41,2,122,165,103,101,116,95,102,105, - 108,101,110,97,109,101,40,102,117,108,108,110,97,109,101,41, - 32,45,62,32,102,105,108,101,110,97,109,101,32,115,116,114, - 105,110,103,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,32,116,104,101,32,102,105,108,101,110,97,109, - 101,32,102,111,114,32,116,104,101,32,115,112,101,99,105,102, - 105,101,100,32,109,111,100,117,108,101,32,111,114,32,114,97, - 105,115,101,32,90,105,112,73,109,112,111,114,116,69,114,114, - 111,114,10,32,32,32,32,32,32,32,32,105,102,32,105,116, - 32,99,111,117,108,100,110,39,116,32,98,101,32,105,109,112, - 111,114,116,101,100,46,10,32,32,32,32,32,32,32,32,78, - 114,47,0,0,0,114,49,0,0,0,114,9,0,0,0,114, - 9,0,0,0,114,10,0,0,0,218,12,103,101,116,95,102, - 105,108,101,110,97,109,101,215,0,0,0,115,6,0,0,0, - 16,8,4,1,255,128,122,24,122,105,112,105,109,112,111,114, - 116,101,114,46,103,101,116,95,102,105,108,101,110,97,109,101, - 99,2,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,8,0,0,0,67,0,0,0,115,126,0,0,0,116,0, - 124,0,124,1,131,2,125,2,124,2,100,1,117,0,114,36, - 116,1,100,2,124,1,155,2,157,2,124,1,100,3,141,2, - 130,1,116,2,124,0,124,1,131,2,125,3,124,2,114,64, - 116,3,160,4,124,3,100,4,161,2,125,4,110,10,124,3, - 155,0,100,5,157,2,125,4,122,14,124,0,106,5,124,4, - 25,0,125,5,87,0,110,18,4,0,116,6,121,124,1,0, - 1,0,1,0,89,0,100,1,83,0,116,7,124,0,106,8, - 124,5,131,2,160,9,161,0,83,0,119,0,41,6,122,253, - 103,101,116,95,115,111,117,114,99,101,40,102,117,108,108,110, - 97,109,101,41,32,45,62,32,115,111,117,114,99,101,32,115, - 116,114,105,110,103,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,116,104,101,32,115,111,117,114,99, - 101,32,99,111,100,101,32,102,111,114,32,116,104,101,32,115, - 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,46, - 32,82,97,105,115,101,32,90,105,112,73,109,112,111,114,116, - 69,114,114,111,114,10,32,32,32,32,32,32,32,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,99,111,117,108, - 100,110,39,116,32,98,101,32,102,111,117,110,100,44,32,114, - 101,116,117,114,110,32,78,111,110,101,32,105,102,32,116,104, - 101,32,97,114,99,104,105,118,101,32,100,111,101,115,10,32, - 32,32,32,32,32,32,32,99,111,110,116,97,105,110,32,116, - 104,101,32,109,111,100,117,108,101,44,32,98,117,116,32,104, - 97,115,32,110,111,32,115,111,117,114,99,101,32,102,111,114, - 32,105,116,46,10,32,32,32,32,32,32,32,32,78,250,18, - 99,97,110,39,116,32,102,105,110,100,32,109,111,100,117,108, - 101,32,169,1,114,44,0,0,0,250,11,95,95,105,110,105, - 116,95,95,46,112,121,250,3,46,112,121,41,10,114,35,0, - 0,0,114,3,0,0,0,114,36,0,0,0,114,21,0,0, - 0,114,30,0,0,0,114,28,0,0,0,114,26,0,0,0, - 114,56,0,0,0,114,29,0,0,0,218,6,100,101,99,111, - 100,101,41,6,114,32,0,0,0,114,38,0,0,0,114,39, - 0,0,0,114,13,0,0,0,218,8,102,117,108,108,112,97, - 116,104,114,58,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,10,103,101,116,95,115,111,117,114, - 99,101,227,0,0,0,115,28,0,0,0,10,7,8,1,18, - 1,10,2,4,1,14,1,10,2,2,2,14,1,12,1,6, - 2,16,1,2,253,255,128,122,22,122,105,112,105,109,112,111, - 114,116,101,114,46,103,101,116,95,115,111,117,114,99,101,99, + 41,1,218,9,90,105,112,82,101,97,100,101,114,41,4,114, + 43,0,0,0,114,3,0,0,0,90,17,105,109,112,111,114, + 116,108,105,98,46,114,101,97,100,101,114,115,114,83,0,0, + 0,41,3,114,32,0,0,0,114,38,0,0,0,114,83,0, + 0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,19,103,101,116,95,114,101,115,111,117,114,99,101,95, + 114,101,97,100,101,114,53,1,0,0,115,20,0,0,0,2, + 6,10,1,6,1,4,255,12,2,6,1,12,1,10,1,2, + 253,255,128,122,31,122,105,112,105,109,112,111,114,116,101,114, + 46,103,101,116,95,114,101,115,111,117,114,99,101,95,114,101, + 97,100,101,114,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,8,0,0,0,67,0,0,0,115,72,0, + 0,0,122,15,116,0,124,0,106,1,131,1,124,0,95,2, + 124,0,106,2,116,3,124,0,106,1,60,0,87,0,100,1, + 83,0,4,0,116,4,121,35,1,0,1,0,1,0,116,3, + 160,5,124,0,106,1,100,1,161,2,1,0,100,1,124,0, + 95,2,89,0,100,1,83,0,119,0,41,2,122,41,82,101, + 108,111,97,100,32,116,104,101,32,102,105,108,101,32,100,97, + 116,97,32,111,102,32,116,104,101,32,97,114,99,104,105,118, + 101,32,112,97,116,104,46,78,41,6,114,27,0,0,0,114, + 29,0,0,0,114,28,0,0,0,114,25,0,0,0,114,3, + 0,0,0,218,3,112,111,112,169,1,114,32,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,17, + 105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101, + 115,68,1,0,0,115,16,0,0,0,2,2,12,1,18,1, + 12,1,14,1,12,1,2,254,255,128,122,29,122,105,112,105, + 109,112,111,114,116,101,114,46,105,110,118,97,108,105,100,97, + 116,101,95,99,97,99,104,101,115,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,5,0,0,0,67,0, + 0,0,115,24,0,0,0,100,1,124,0,106,0,155,0,116, + 1,155,0,124,0,106,2,155,0,100,2,157,5,83,0,41, + 3,78,122,21,60,122,105,112,105,109,112,111,114,116,101,114, + 32,111,98,106,101,99,116,32,34,122,2,34,62,41,3,114, + 29,0,0,0,114,20,0,0,0,114,31,0,0,0,114,86, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,218,8,95,95,114,101,112,114,95,95,78,1,0,0, + 115,4,0,0,0,24,1,255,128,122,20,122,105,112,105,109, + 112,111,114,116,101,114,46,95,95,114,101,112,114,95,95,41, + 1,78,41,1,78,41,1,78,41,17,114,6,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,7,95,95,100,111,99, + 95,95,114,34,0,0,0,114,41,0,0,0,114,42,0,0, + 0,114,46,0,0,0,114,52,0,0,0,114,59,0,0,0, + 114,60,0,0,0,114,67,0,0,0,114,43,0,0,0,114, + 82,0,0,0,114,84,0,0,0,114,87,0,0,0,114,88, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,114,4,0,0,0,46,0,0,0, + 115,32,0,0,0,8,0,4,1,8,17,10,46,10,34,10, + 13,8,27,8,10,8,21,8,12,8,26,8,13,8,43,8, + 15,12,10,255,128,122,12,95,95,105,110,105,116,95,95,46, + 112,121,99,84,114,63,0,0,0,70,41,3,122,4,46,112, + 121,99,84,70,41,3,114,64,0,0,0,70,70,99,2,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,20,0,0,0,124,0,106,0,124, + 1,160,1,100,1,161,1,100,2,25,0,23,0,83,0,41, + 3,78,218,1,46,233,2,0,0,0,41,2,114,31,0,0, + 0,218,10,114,112,97,114,116,105,116,105,111,110,41,2,114, + 32,0,0,0,114,38,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,114,36,0,0,0,96,1,0, + 0,115,4,0,0,0,20,1,255,128,114,36,0,0,0,99, 2,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,67,0,0,0,115,40,0,0,0,116,0,124, - 0,124,1,131,2,125,2,124,2,100,1,117,0,114,36,116, - 1,100,2,124,1,155,2,157,2,124,1,100,3,141,2,130, - 1,124,2,83,0,41,4,122,171,105,115,95,112,97,99,107, - 97,103,101,40,102,117,108,108,110,97,109,101,41,32,45,62, - 32,98,111,111,108,46,10,10,32,32,32,32,32,32,32,32, - 82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,116, - 104,101,32,109,111,100,117,108,101,32,115,112,101,99,105,102, - 105,101,100,32,98,121,32,102,117,108,108,110,97,109,101,32, - 105,115,32,97,32,112,97,99,107,97,103,101,46,10,32,32, - 32,32,32,32,32,32,82,97,105,115,101,32,90,105,112,73, - 109,112,111,114,116,69,114,114,111,114,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,99,111,117,108,100,110,39, - 116,32,98,101,32,102,111,117,110,100,46,10,32,32,32,32, - 32,32,32,32,78,114,61,0,0,0,114,62,0,0,0,41, - 2,114,35,0,0,0,114,3,0,0,0,41,3,114,32,0, - 0,0,114,38,0,0,0,114,39,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,43,0,0,0, - 253,0,0,0,115,10,0,0,0,10,6,8,1,18,1,4, - 1,255,128,122,22,122,105,112,105,109,112,111,114,116,101,114, - 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, - 0,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0, - 67,0,0,0,115,252,0,0,0,100,1,125,2,116,0,160, - 1,124,2,116,2,161,2,1,0,116,3,124,0,124,1,131, - 2,92,3,125,3,125,4,125,5,116,4,106,5,160,6,124, - 1,161,1,125,6,124,6,100,2,117,0,115,62,116,7,124, - 6,116,8,131,2,115,80,116,8,124,1,131,1,125,6,124, - 6,116,4,106,5,124,1,60,0,124,0,124,6,95,9,122, - 84,124,4,114,124,116,10,124,0,124,1,131,2,125,7,116, - 11,160,12,124,0,106,13,124,7,161,2,125,8,124,8,103, - 1,124,6,95,14,116,15,124,6,100,3,131,2,115,140,116, - 16,124,6,95,16,116,11,160,17,124,6,106,18,124,1,124, - 5,161,3,1,0,116,19,124,3,124,6,106,18,131,2,1, - 0,87,0,110,16,1,0,1,0,1,0,116,4,106,5,124, - 1,61,0,130,0,122,14,116,4,106,5,124,1,25,0,125, - 6,87,0,110,28,4,0,116,20,121,250,1,0,1,0,1, - 0,116,21,100,4,124,1,155,2,100,5,157,3,131,1,130, - 1,116,22,160,23,100,6,124,1,124,5,161,3,1,0,124, - 6,83,0,119,0,41,7,97,64,1,0,0,108,111,97,100, - 95,109,111,100,117,108,101,40,102,117,108,108,110,97,109,101, - 41,32,45,62,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,76,111,97,100,32,116,104,101,32,109, - 111,100,117,108,101,32,115,112,101,99,105,102,105,101,100,32, - 98,121,32,39,102,117,108,108,110,97,109,101,39,46,32,39, - 102,117,108,108,110,97,109,101,39,32,109,117,115,116,32,98, - 101,32,116,104,101,10,32,32,32,32,32,32,32,32,102,117, - 108,108,121,32,113,117,97,108,105,102,105,101,100,32,40,100, - 111,116,116,101,100,41,32,109,111,100,117,108,101,32,110,97, - 109,101,46,32,73,116,32,114,101,116,117,114,110,115,32,116, - 104,101,32,105,109,112,111,114,116,101,100,10,32,32,32,32, - 32,32,32,32,109,111,100,117,108,101,44,32,111,114,32,114, - 97,105,115,101,115,32,90,105,112,73,109,112,111,114,116,69, - 114,114,111,114,32,105,102,32,105,116,32,99,111,117,108,100, - 32,110,111,116,32,98,101,32,105,109,112,111,114,116,101,100, - 46,10,10,32,32,32,32,32,32,32,32,68,101,112,114,101, - 99,97,116,101,100,32,115,105,110,99,101,32,80,121,116,104, - 111,110,32,51,46,49,48,46,32,85,115,101,32,101,120,101, - 99,95,109,111,100,117,108,101,40,41,32,105,110,115,116,101, - 97,100,46,10,32,32,32,32,32,32,32,32,122,114,122,105, - 112,105,109,112,111,114,116,46,122,105,112,105,109,112,111,114, - 116,101,114,46,108,111,97,100,95,109,111,100,117,108,101,40, - 41,32,105,115,32,100,101,112,114,101,99,97,116,101,100,32, - 97,110,100,32,115,108,97,116,101,100,32,102,111,114,32,114, - 101,109,111,118,97,108,32,105,110,32,80,121,116,104,111,110, - 32,51,46,49,50,59,32,117,115,101,32,101,120,101,99,95, - 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, - 78,218,12,95,95,98,117,105,108,116,105,110,115,95,95,122, - 14,76,111,97,100,101,100,32,109,111,100,117,108,101,32,122, - 25,32,110,111,116,32,102,111,117,110,100,32,105,110,32,115, - 121,115,46,109,111,100,117,108,101,115,122,30,105,109,112,111, - 114,116,32,123,125,32,35,32,108,111,97,100,101,100,32,102, - 114,111,109,32,90,105,112,32,123,125,41,24,218,9,95,119, - 97,114,110,105,110,103,115,90,4,119,97,114,110,218,18,68, - 101,112,114,101,99,97,116,105,111,110,87,97,114,110,105,110, - 103,114,48,0,0,0,218,3,115,121,115,218,7,109,111,100, - 117,108,101,115,218,3,103,101,116,114,15,0,0,0,218,12, - 95,109,111,100,117,108,101,95,116,121,112,101,218,10,95,95, - 108,111,97,100,101,114,95,95,114,36,0,0,0,114,21,0, - 0,0,114,30,0,0,0,114,29,0,0,0,90,8,95,95, - 112,97,116,104,95,95,218,7,104,97,115,97,116,116,114,114, - 68,0,0,0,90,14,95,102,105,120,95,117,112,95,109,111, - 100,117,108,101,218,8,95,95,100,105,99,116,95,95,218,4, - 101,120,101,99,114,26,0,0,0,218,11,73,109,112,111,114, - 116,69,114,114,111,114,114,45,0,0,0,218,16,95,118,101, - 114,98,111,115,101,95,109,101,115,115,97,103,101,41,9,114, - 32,0,0,0,114,38,0,0,0,218,3,109,115,103,114,50, - 0,0,0,114,51,0,0,0,114,40,0,0,0,90,3,109, - 111,100,114,13,0,0,0,114,66,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,11,108,111,97, - 100,95,109,111,100,117,108,101,10,1,0,0,115,56,0,0, - 0,4,9,12,2,16,1,12,1,18,1,8,1,10,1,6, - 1,2,2,4,1,10,3,14,1,8,1,10,2,6,1,16, - 1,16,1,6,1,8,1,2,1,2,2,14,1,12,1,16, - 1,14,1,4,1,2,253,255,128,122,23,122,105,112,105,109, - 112,111,114,116,101,114,46,108,111,97,100,95,109,111,100,117, - 108,101,99,2,0,0,0,0,0,0,0,0,0,0,0,3, - 0,0,0,8,0,0,0,67,0,0,0,115,64,0,0,0, - 122,20,124,0,160,0,124,1,161,1,115,18,87,0,100,1, - 83,0,87,0,110,18,4,0,116,1,121,62,1,0,1,0, - 1,0,89,0,100,1,83,0,100,2,100,3,108,2,109,3, - 125,2,1,0,124,2,124,0,124,1,131,2,83,0,119,0, - 41,4,122,204,82,101,116,117,114,110,32,116,104,101,32,82, - 101,115,111,117,114,99,101,82,101,97,100,101,114,32,102,111, - 114,32,97,32,112,97,99,107,97,103,101,32,105,110,32,97, - 32,122,105,112,32,102,105,108,101,46,10,10,32,32,32,32, - 32,32,32,32,73,102,32,39,102,117,108,108,110,97,109,101, - 39,32,105,115,32,97,32,112,97,99,107,97,103,101,32,119, - 105,116,104,105,110,32,116,104,101,32,122,105,112,32,102,105, - 108,101,44,32,114,101,116,117,114,110,32,116,104,101,10,32, - 32,32,32,32,32,32,32,39,82,101,115,111,117,114,99,101, - 82,101,97,100,101,114,39,32,111,98,106,101,99,116,32,102, - 111,114,32,116,104,101,32,112,97,99,107,97,103,101,46,32, - 32,79,116,104,101,114,119,105,115,101,32,114,101,116,117,114, - 110,32,78,111,110,101,46,10,32,32,32,32,32,32,32,32, - 78,114,0,0,0,0,41,1,218,9,90,105,112,82,101,97, - 100,101,114,41,4,114,43,0,0,0,114,3,0,0,0,90, - 17,105,109,112,111,114,116,108,105,98,46,114,101,97,100,101, - 114,115,114,83,0,0,0,41,3,114,32,0,0,0,114,38, - 0,0,0,114,83,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,19,103,101,116,95,114,101,115, - 111,117,114,99,101,95,114,101,97,100,101,114,53,1,0,0, - 115,20,0,0,0,2,6,10,1,6,1,4,255,12,2,6, - 1,12,1,10,1,2,253,255,128,122,31,122,105,112,105,109, - 112,111,114,116,101,114,46,103,101,116,95,114,101,115,111,117, - 114,99,101,95,114,101,97,100,101,114,99,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,67, - 0,0,0,115,72,0,0,0,122,30,116,0,124,0,106,1, - 131,1,124,0,95,2,124,0,106,2,116,3,124,0,106,1, - 60,0,87,0,100,1,83,0,4,0,116,4,121,70,1,0, - 1,0,1,0,116,3,160,5,124,0,106,1,100,1,161,2, - 1,0,100,1,124,0,95,2,89,0,100,1,83,0,119,0, - 41,2,122,41,82,101,108,111,97,100,32,116,104,101,32,102, - 105,108,101,32,100,97,116,97,32,111,102,32,116,104,101,32, - 97,114,99,104,105,118,101,32,112,97,116,104,46,78,41,6, - 114,27,0,0,0,114,29,0,0,0,114,28,0,0,0,114, - 25,0,0,0,114,3,0,0,0,218,3,112,111,112,169,1, - 114,32,0,0,0,114,9,0,0,0,114,9,0,0,0,114, - 10,0,0,0,218,17,105,110,118,97,108,105,100,97,116,101, - 95,99,97,99,104,101,115,68,1,0,0,115,16,0,0,0, - 2,2,12,1,18,1,12,1,14,1,12,1,2,254,255,128, - 122,29,122,105,112,105,109,112,111,114,116,101,114,46,105,110, - 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,99, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, - 5,0,0,0,67,0,0,0,115,24,0,0,0,100,1,124, - 0,106,0,155,0,116,1,155,0,124,0,106,2,155,0,100, - 2,157,5,83,0,41,3,78,122,21,60,122,105,112,105,109, - 112,111,114,116,101,114,32,111,98,106,101,99,116,32,34,122, - 2,34,62,41,3,114,29,0,0,0,114,20,0,0,0,114, - 31,0,0,0,114,86,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,218,8,95,95,114,101,112,114, - 95,95,78,1,0,0,115,4,0,0,0,24,1,255,128,122, - 20,122,105,112,105,109,112,111,114,116,101,114,46,95,95,114, - 101,112,114,95,95,41,1,78,41,1,78,41,1,78,41,17, - 114,6,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 7,95,95,100,111,99,95,95,114,34,0,0,0,114,41,0, - 0,0,114,42,0,0,0,114,46,0,0,0,114,52,0,0, - 0,114,59,0,0,0,114,60,0,0,0,114,67,0,0,0, - 114,43,0,0,0,114,82,0,0,0,114,84,0,0,0,114, - 87,0,0,0,114,88,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,9,0,0,0,114,10,0,0,0,114,4,0, - 0,0,46,0,0,0,115,32,0,0,0,8,0,4,1,8, - 17,10,46,10,34,10,13,8,27,8,10,8,21,8,12,8, - 26,8,13,8,43,8,15,12,10,255,128,122,12,95,95,105, - 110,105,116,95,95,46,112,121,99,84,114,63,0,0,0,70, - 41,3,122,4,46,112,121,99,84,70,41,3,114,64,0,0, - 0,70,70,99,2,0,0,0,0,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,67,0,0,0,115,20,0,0, - 0,124,0,106,0,124,1,160,1,100,1,161,1,100,2,25, - 0,23,0,83,0,41,3,78,218,1,46,233,2,0,0,0, - 41,2,114,31,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,41,2,114,32,0,0,0,114,38,0,0,0,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,36, - 0,0,0,96,1,0,0,115,4,0,0,0,20,1,255,128, - 114,36,0,0,0,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,18, - 0,0,0,124,1,116,0,23,0,125,2,124,2,124,0,106, - 1,118,0,83,0,169,1,78,41,2,114,20,0,0,0,114, - 28,0,0,0,41,3,114,32,0,0,0,114,13,0,0,0, - 90,7,100,105,114,112,97,116,104,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,37,0,0,0,100,1,0, - 0,115,6,0,0,0,8,4,10,2,255,128,114,37,0,0, - 0,99,2,0,0,0,0,0,0,0,0,0,0,0,7,0, - 0,0,4,0,0,0,67,0,0,0,115,56,0,0,0,116, - 0,124,0,124,1,131,2,125,2,116,1,68,0,93,36,92, - 3,125,3,125,4,125,5,124,2,124,3,23,0,125,6,124, - 6,124,0,106,2,118,0,114,50,124,5,2,0,1,0,83, - 0,113,14,100,0,83,0,114,93,0,0,0,41,3,114,36, - 0,0,0,218,16,95,122,105,112,95,115,101,97,114,99,104, - 111,114,100,101,114,114,28,0,0,0,41,7,114,32,0,0, - 0,114,38,0,0,0,114,13,0,0,0,218,6,115,117,102, - 102,105,120,218,10,105,115,98,121,116,101,99,111,100,101,114, - 51,0,0,0,114,66,0,0,0,114,9,0,0,0,114,9, - 0,0,0,114,10,0,0,0,114,35,0,0,0,109,1,0, - 0,115,16,0,0,0,10,1,14,1,8,1,10,1,8,1, - 2,255,4,2,255,128,114,35,0,0,0,99,1,0,0,0, - 0,0,0,0,0,0,0,0,26,0,0,0,9,0,0,0, - 67,0,0,0,115,236,4,0,0,122,14,116,0,160,1,124, - 0,161,1,125,1,87,0,110,32,4,0,116,2,144,4,121, - 234,1,0,1,0,1,0,116,3,100,1,124,0,155,2,157, - 2,124,0,100,2,141,2,130,1,124,1,144,4,143,130,1, - 0,122,36,124,1,160,4,116,5,11,0,100,3,161,2,1, - 0,124,1,160,6,161,0,125,2,124,1,160,7,116,5,161, - 1,125,3,87,0,110,32,4,0,116,2,144,4,121,232,1, - 0,1,0,1,0,116,3,100,4,124,0,155,2,157,2,124, - 0,100,2,141,2,130,1,116,8,124,3,131,1,116,5,107, - 3,114,156,116,3,100,4,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,124,3,100,0,100,5,133,2,25,0,116, - 9,107,3,144,1,114,152,122,24,124,1,160,4,100,6,100, - 3,161,2,1,0,124,1,160,6,161,0,125,4,87,0,110, - 32,4,0,116,2,144,4,121,230,1,0,1,0,1,0,116, + 2,0,0,0,67,0,0,0,115,18,0,0,0,124,1,116, + 0,23,0,125,2,124,2,124,0,106,1,118,0,83,0,169, + 1,78,41,2,114,20,0,0,0,114,28,0,0,0,41,3, + 114,32,0,0,0,114,13,0,0,0,90,7,100,105,114,112, + 97,116,104,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,37,0,0,0,100,1,0,0,115,6,0,0,0, + 8,4,10,2,255,128,114,37,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,7,0,0,0,4,0,0,0, + 67,0,0,0,115,56,0,0,0,116,0,124,0,124,1,131, + 2,125,2,116,1,68,0,93,18,92,3,125,3,125,4,125, + 5,124,2,124,3,23,0,125,6,124,6,124,0,106,2,118, + 0,114,25,124,5,2,0,1,0,83,0,113,7,100,0,83, + 0,114,93,0,0,0,41,3,114,36,0,0,0,218,16,95, + 122,105,112,95,115,101,97,114,99,104,111,114,100,101,114,114, + 28,0,0,0,41,7,114,32,0,0,0,114,38,0,0,0, + 114,13,0,0,0,218,6,115,117,102,102,105,120,218,10,105, + 115,98,121,116,101,99,111,100,101,114,51,0,0,0,114,66, + 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0, + 0,0,114,35,0,0,0,109,1,0,0,115,16,0,0,0, + 10,1,14,1,8,1,10,1,8,1,2,255,4,2,255,128, + 114,35,0,0,0,99,1,0,0,0,0,0,0,0,0,0, + 0,0,26,0,0,0,9,0,0,0,67,0,0,0,115,226, + 4,0,0,122,7,116,0,160,1,124,0,161,1,125,1,87, + 0,110,16,4,0,116,2,144,2,121,112,1,0,1,0,1, + 0,116,3,100,1,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,1,144,2,143,60,1,0,122,18,124,1,160, + 4,116,5,11,0,100,3,161,2,1,0,124,1,160,6,161, + 0,125,2,124,1,160,7,116,5,161,1,125,3,87,0,110, + 16,4,0,116,2,144,2,121,111,1,0,1,0,1,0,116, 3,100,4,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,116,10,124,4,116,11,24,0,116,5,24,0,100,6,131, - 2,125,5,122,22,124,1,160,4,124,5,161,1,1,0,124, - 1,160,7,161,0,125,6,87,0,110,32,4,0,116,2,144, - 4,121,228,1,0,1,0,1,0,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,124,6,160,12,116, - 9,161,1,125,7,124,7,100,6,107,0,144,1,114,88,116, - 3,100,7,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,6,124,7,124,7,116,5,23,0,133,2,25,0,125, - 3,116,8,124,3,131,1,116,5,107,3,144,1,114,136,116, - 3,100,8,124,0,155,2,157,2,124,0,100,2,141,2,130, - 1,124,4,116,8,124,6,131,1,24,0,124,7,23,0,125, - 2,116,13,124,3,100,9,100,10,133,2,25,0,131,1,125, - 8,116,13,124,3,100,10,100,11,133,2,25,0,131,1,125, - 9,124,2,124,8,107,0,144,1,114,212,116,3,100,12,124, - 0,155,2,157,2,124,0,100,2,141,2,130,1,124,2,124, - 9,107,0,144,1,114,240,116,3,100,13,124,0,155,2,157, + 1,116,8,124,3,131,1,116,5,107,3,114,78,116,3,100, + 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 3,100,0,100,5,133,2,25,0,116,9,107,3,114,201,122, + 12,124,1,160,4,100,6,100,3,161,2,1,0,124,1,160, + 6,161,0,125,4,87,0,110,16,4,0,116,2,144,2,121, + 110,1,0,1,0,1,0,116,3,100,4,124,0,155,2,157, + 2,124,0,100,2,141,2,130,1,116,10,124,4,116,11,24, + 0,116,5,24,0,100,6,131,2,125,5,122,11,124,1,160, + 4,124,5,161,1,1,0,124,1,160,7,161,0,125,6,87, + 0,110,16,4,0,116,2,144,2,121,109,1,0,1,0,1, + 0,116,3,100,4,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,6,160,12,116,9,161,1,125,7,124,7,100, + 6,107,0,114,170,116,3,100,7,124,0,155,2,157,2,124, + 0,100,2,141,2,130,1,124,6,124,7,124,7,116,5,23, + 0,133,2,25,0,125,3,116,8,124,3,131,1,116,5,107, + 3,114,193,116,3,100,8,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,124,4,116,8,124,6,131,1,24,0,124, + 7,23,0,125,2,116,13,124,3,100,9,100,10,133,2,25, + 0,131,1,125,8,116,13,124,3,100,10,100,11,133,2,25, + 0,131,1,125,9,124,2,124,8,107,0,114,230,116,3,100, + 12,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, + 2,124,9,107,0,114,243,116,3,100,13,124,0,155,2,157, 2,124,0,100,2,141,2,130,1,124,2,124,8,56,0,125, 2,124,2,124,9,24,0,125,10,124,10,100,6,107,0,144, - 2,114,28,116,3,100,14,124,0,155,2,157,2,124,0,100, - 2,141,2,130,1,105,0,125,11,100,6,125,12,122,14,124, - 1,160,4,124,2,161,1,1,0,87,0,110,32,4,0,116, - 2,144,4,121,226,1,0,1,0,1,0,116,3,100,4,124, + 1,114,9,116,3,100,14,124,0,155,2,157,2,124,0,100, + 2,141,2,130,1,105,0,125,11,100,6,125,12,122,7,124, + 1,160,4,124,2,161,1,1,0,87,0,110,16,4,0,116, + 2,144,2,121,108,1,0,1,0,1,0,116,3,100,4,124, 0,155,2,157,2,124,0,100,2,141,2,130,1,9,0,124, 1,160,7,100,16,161,1,125,3,116,8,124,3,131,1,100, - 5,107,0,144,2,114,118,116,14,100,17,131,1,130,1,124, - 3,100,0,100,5,133,2,25,0,100,18,107,3,144,2,114, - 140,144,4,113,170,116,8,124,3,131,1,100,16,107,3,144, - 2,114,162,116,14,100,17,131,1,130,1,116,15,124,3,100, + 5,107,0,144,1,114,54,116,14,100,17,131,1,130,1,124, + 3,100,0,100,5,133,2,25,0,100,18,107,3,144,1,114, + 65,144,2,113,80,116,8,124,3,131,1,100,16,107,3,144, + 1,114,76,116,14,100,17,131,1,130,1,116,15,124,3,100, 19,100,20,133,2,25,0,131,1,125,13,116,15,124,3,100, 20,100,9,133,2,25,0,131,1,125,14,116,15,124,3,100, 9,100,21,133,2,25,0,131,1,125,15,116,15,124,3,100, @@ -653,29 +652,29 @@ const unsigned char _Py_M__zipimport[] = { 24,100,25,133,2,25,0,131,1,125,20,116,15,124,3,100, 25,100,26,133,2,25,0,131,1,125,21,116,13,124,3,100, 27,100,16,133,2,25,0,131,1,125,22,124,19,124,20,23, - 0,124,21,23,0,125,8,124,22,124,9,107,4,144,3,114, - 122,116,3,100,28,124,0,155,2,157,2,124,0,100,2,141, - 2,130,1,124,22,124,10,55,0,125,22,122,14,124,1,160, - 7,124,19,161,1,125,23,87,0,110,32,4,0,116,2,144, - 4,121,224,1,0,1,0,1,0,116,3,100,4,124,0,155, + 0,124,21,23,0,125,8,124,22,124,9,107,4,144,1,114, + 184,116,3,100,28,124,0,155,2,157,2,124,0,100,2,141, + 2,130,1,124,22,124,10,55,0,125,22,122,7,124,1,160, + 7,124,19,161,1,125,23,87,0,110,16,4,0,116,2,144, + 2,121,107,1,0,1,0,1,0,116,3,100,4,124,0,155, 2,157,2,124,0,100,2,141,2,130,1,116,8,124,23,131, - 1,124,19,107,3,144,3,114,210,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,122,50,116,8,124, + 1,124,19,107,3,144,1,114,228,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,122,25,116,8,124, 1,160,7,124,8,124,19,24,0,161,1,131,1,124,8,124, - 19,24,0,107,3,144,4,114,2,116,3,100,4,124,0,155, - 2,157,2,124,0,100,2,141,2,130,1,87,0,110,32,4, - 0,116,2,144,4,121,222,1,0,1,0,1,0,116,3,100, + 19,24,0,107,3,144,1,114,252,116,3,100,4,124,0,155, + 2,157,2,124,0,100,2,141,2,130,1,87,0,110,16,4, + 0,116,2,144,2,121,106,1,0,1,0,1,0,116,3,100, 4,124,0,155,2,157,2,124,0,100,2,141,2,130,1,124, - 13,100,29,64,0,144,4,114,58,124,23,160,16,161,0,125, - 23,110,48,122,14,124,23,160,16,100,30,161,1,125,23,87, - 0,110,32,4,0,116,17,144,4,121,220,1,0,1,0,1, + 13,100,29,64,0,144,2,114,24,124,23,160,16,161,0,125, + 23,110,24,122,7,124,23,160,16,100,30,161,1,125,23,87, + 0,110,16,4,0,116,17,144,2,121,105,1,0,1,0,1, 0,124,23,160,16,100,31,161,1,160,18,116,19,161,1,125, 23,89,0,124,23,160,20,100,32,116,21,161,2,125,23,116, 22,160,23,124,0,124,23,161,2,125,24,124,24,124,14,124, 18,124,4,124,22,124,15,124,16,124,17,102,8,125,25,124, 25,124,11,124,23,60,0,124,12,100,33,55,0,125,12,144, - 2,113,86,87,0,100,0,4,0,4,0,131,3,1,0,110, - 18,49,0,144,4,115,192,119,1,1,0,1,0,1,0,89, + 1,113,38,87,0,100,0,4,0,4,0,131,3,1,0,110, + 9,49,0,144,2,115,91,119,1,1,0,1,0,1,0,89, 0,1,0,116,24,160,25,100,34,124,12,124,0,161,3,1, 0,124,11,83,0,119,0,119,0,119,0,119,0,119,0,119, 0,119,0,119,0,41,35,78,122,21,99,97,110,39,116,32, @@ -735,11 +734,11 @@ const unsigned char _Py_M__zipimport[] = { 1,116,114,9,0,0,0,114,9,0,0,0,114,10,0,0, 0,114,27,0,0,0,140,1,0,0,115,240,0,0,0,2, 1,14,1,14,1,18,1,8,2,2,1,14,1,8,1,14, - 1,14,1,18,1,12,1,18,1,18,1,2,3,12,1,12, + 1,14,1,18,1,12,1,18,1,16,1,2,3,12,1,12, 1,14,1,10,1,2,1,6,255,8,2,2,1,2,255,2, 1,4,255,2,2,10,1,12,1,14,1,10,1,2,1,6, - 255,10,2,10,1,10,1,2,1,6,255,16,2,14,1,10, - 1,2,1,6,255,16,2,16,2,16,1,10,1,18,1,10, + 255,10,2,8,1,10,1,2,1,6,255,16,2,12,1,10, + 1,2,1,6,255,16,2,16,2,16,1,8,1,18,1,8, 1,18,1,8,1,8,1,10,1,18,1,4,2,4,2,2, 1,14,1,14,1,18,1,2,1,10,1,14,1,8,1,18, 2,4,1,14,1,8,1,16,1,16,1,16,1,16,1,16, @@ -779,12 +778,12 @@ const unsigned char _Py_M__zipimport[] = { 226,137,136,194,176,226,136,153,194,183,226,136,154,226,129,191, 194,178,226,150,160,194,160,99,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,0,8,0,0,0,67,0,0,0, - 115,106,0,0,0,116,0,114,22,116,1,160,2,100,1,161, + 115,106,0,0,0,116,0,114,11,116,1,160,2,100,1,161, 1,1,0,116,3,100,2,131,1,130,1,100,3,97,0,122, - 56,122,16,100,4,100,5,108,4,109,5,125,0,1,0,87, - 0,110,30,4,0,116,6,121,104,1,0,1,0,1,0,116, + 28,122,8,100,4,100,5,108,4,109,5,125,0,1,0,87, + 0,110,15,4,0,116,6,121,52,1,0,1,0,1,0,116, 1,160,2,100,1,161,1,1,0,116,3,100,2,131,1,130, - 1,87,0,100,6,97,0,110,6,100,6,97,0,119,0,116, + 1,87,0,100,6,97,0,110,3,100,6,97,0,119,0,116, 1,160,2,100,7,161,1,1,0,124,0,83,0,119,0,41, 8,78,122,27,122,105,112,105,109,112,111,114,116,58,32,122, 108,105,98,32,85,78,65,86,65,73,76,65,66,76,69,250, @@ -804,249 +803,248 @@ const unsigned char _Py_M__zipimport[] = { 1,12,1,10,1,8,1,2,253,12,5,10,2,4,1,2, 249,255,128,114,149,0,0,0,99,2,0,0,0,0,0,0, 0,0,0,0,0,17,0,0,0,9,0,0,0,67,0,0, - 0,115,134,1,0,0,124,1,92,8,125,2,125,3,125,4, + 0,115,120,1,0,0,124,1,92,8,125,2,125,3,125,4, 125,5,125,6,125,7,125,8,125,9,124,4,100,1,107,0, - 114,36,116,0,100,2,131,1,130,1,116,1,160,2,124,0, - 161,1,144,1,143,4,125,10,122,14,124,10,160,3,124,6, - 161,1,1,0,87,0,110,32,4,0,116,4,144,1,121,132, - 1,0,1,0,1,0,116,0,100,3,124,0,155,2,157,2, - 124,0,100,4,141,2,130,1,124,10,160,5,100,5,161,1, - 125,11,116,6,124,11,131,1,100,5,107,3,114,128,116,7, - 100,6,131,1,130,1,124,11,100,0,100,7,133,2,25,0, - 100,8,107,3,114,162,116,0,100,9,124,0,155,2,157,2, - 124,0,100,4,141,2,130,1,116,8,124,11,100,10,100,11, - 133,2,25,0,131,1,125,12,116,8,124,11,100,11,100,5, - 133,2,25,0,131,1,125,13,100,5,124,12,23,0,124,13, - 23,0,125,14,124,6,124,14,55,0,125,6,122,14,124,10, - 160,3,124,6,161,1,1,0,87,0,110,32,4,0,116,4, - 144,1,121,130,1,0,1,0,1,0,116,0,100,3,124,0, - 155,2,157,2,124,0,100,4,141,2,130,1,124,10,160,5, - 124,4,161,1,125,15,116,6,124,15,131,1,124,4,107,3, - 144,1,114,38,116,4,100,12,131,1,130,1,87,0,100,0, - 4,0,4,0,131,3,1,0,110,18,49,0,144,1,115,60, - 119,1,1,0,1,0,1,0,89,0,1,0,124,3,100,1, - 107,2,144,1,114,84,124,15,83,0,122,10,116,9,131,0, - 125,16,87,0,110,22,4,0,116,10,144,1,121,128,1,0, - 1,0,1,0,116,0,100,13,131,1,130,1,124,16,124,15, - 100,14,131,2,83,0,119,0,119,0,119,0,41,15,78,114, - 0,0,0,0,122,18,110,101,103,97,116,105,118,101,32,100, - 97,116,97,32,115,105,122,101,114,97,0,0,0,114,12,0, - 0,0,114,109,0,0,0,114,103,0,0,0,114,98,0,0, - 0,115,4,0,0,0,80,75,3,4,122,23,98,97,100,32, - 108,111,99,97,108,32,102,105,108,101,32,104,101,97,100,101, - 114,58,32,233,26,0,0,0,114,108,0,0,0,122,26,122, - 105,112,105,109,112,111,114,116,58,32,99,97,110,39,116,32, - 114,101,97,100,32,100,97,116,97,114,144,0,0,0,105,241, - 255,255,255,41,11,114,3,0,0,0,114,115,0,0,0,114, - 116,0,0,0,114,117,0,0,0,114,22,0,0,0,114,119, - 0,0,0,114,55,0,0,0,114,124,0,0,0,114,1,0, - 0,0,114,149,0,0,0,114,148,0,0,0,41,17,114,29, - 0,0,0,114,58,0,0,0,90,8,100,97,116,97,112,97, - 116,104,114,135,0,0,0,114,139,0,0,0,114,130,0,0, - 0,114,142,0,0,0,114,136,0,0,0,114,137,0,0,0, - 114,138,0,0,0,114,128,0,0,0,114,129,0,0,0,114, - 140,0,0,0,114,141,0,0,0,114,132,0,0,0,90,8, - 114,97,119,95,100,97,116,97,114,146,0,0,0,114,9,0, - 0,0,114,9,0,0,0,114,10,0,0,0,114,56,0,0, - 0,63,2,0,0,115,74,0,0,0,20,1,8,1,8,1, - 14,2,2,2,14,1,14,1,18,1,10,1,12,1,8,1, - 16,2,18,2,16,2,16,1,12,1,8,1,2,1,14,1, - 14,1,18,1,10,1,14,1,8,1,14,255,18,128,10,3, - 4,2,2,3,10,1,14,1,8,1,10,1,2,254,2,243, - 2,240,255,128,114,56,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, - 0,0,115,16,0,0,0,116,0,124,0,124,1,24,0,131, - 1,100,1,107,1,83,0,41,2,78,114,5,0,0,0,41, - 1,218,3,97,98,115,41,2,90,2,116,49,90,2,116,50, - 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218, - 9,95,101,113,95,109,116,105,109,101,109,2,0,0,115,4, - 0,0,0,16,2,255,128,114,152,0,0,0,99,5,0,0, - 0,0,0,0,0,0,0,0,0,14,0,0,0,6,0,0, - 0,67,0,0,0,115,254,0,0,0,124,3,124,2,100,1, - 156,2,125,5,116,0,160,1,124,4,124,3,124,5,161,3, - 125,6,124,6,100,2,64,0,100,3,107,3,125,7,124,7, - 114,126,124,6,100,4,64,0,100,3,107,3,125,8,116,2, - 106,3,100,5,107,3,114,124,124,8,115,76,116,2,106,3, - 100,6,107,2,114,124,116,4,124,0,124,2,131,2,125,9, - 124,9,100,0,117,1,114,124,116,2,160,5,116,0,106,6, - 124,9,161,2,125,10,116,0,160,7,124,4,124,10,124,3, - 124,5,161,4,1,0,110,80,116,8,124,0,124,2,131,2, - 92,2,125,11,125,12,124,11,114,206,116,9,116,10,124,4, - 100,7,100,8,133,2,25,0,131,1,124,11,131,2,114,186, - 116,10,124,4,100,8,100,9,133,2,25,0,131,1,124,12, - 107,3,114,206,116,11,160,12,100,10,124,3,155,2,157,2, - 161,1,1,0,100,0,83,0,116,13,160,14,124,4,100,9, - 100,0,133,2,25,0,161,1,125,13,116,15,124,13,116,16, - 131,2,115,250,116,17,100,11,124,1,155,2,100,12,157,3, - 131,1,130,1,124,13,83,0,41,13,78,41,2,114,44,0, - 0,0,114,13,0,0,0,114,5,0,0,0,114,0,0,0, - 0,114,91,0,0,0,90,5,110,101,118,101,114,90,6,97, - 108,119,97,121,115,114,104,0,0,0,114,99,0,0,0,114, - 100,0,0,0,122,22,98,121,116,101,99,111,100,101,32,105, - 115,32,115,116,97,108,101,32,102,111,114,32,122,16,99,111, - 109,112,105,108,101,100,32,109,111,100,117,108,101,32,122,21, - 32,105,115,32,110,111,116,32,97,32,99,111,100,101,32,111, - 98,106,101,99,116,41,18,114,21,0,0,0,90,13,95,99, - 108,97,115,115,105,102,121,95,112,121,99,218,4,95,105,109, - 112,90,21,99,104,101,99,107,95,104,97,115,104,95,98,97, - 115,101,100,95,112,121,99,115,218,15,95,103,101,116,95,112, - 121,99,95,115,111,117,114,99,101,218,11,115,111,117,114,99, - 101,95,104,97,115,104,90,17,95,82,65,87,95,77,65,71, - 73,67,95,78,85,77,66,69,82,90,18,95,118,97,108,105, - 100,97,116,101,95,104,97,115,104,95,112,121,99,218,29,95, - 103,101,116,95,109,116,105,109,101,95,97,110,100,95,115,105, - 122,101,95,111,102,95,115,111,117,114,99,101,114,152,0,0, - 0,114,2,0,0,0,114,45,0,0,0,114,80,0,0,0, - 218,7,109,97,114,115,104,97,108,90,5,108,111,97,100,115, - 114,15,0,0,0,218,10,95,99,111,100,101,95,116,121,112, - 101,218,9,84,121,112,101,69,114,114,111,114,41,14,114,32, - 0,0,0,114,57,0,0,0,114,66,0,0,0,114,38,0, - 0,0,114,131,0,0,0,90,11,101,120,99,95,100,101,116, - 97,105,108,115,114,134,0,0,0,90,10,104,97,115,104,95, - 98,97,115,101,100,90,12,99,104,101,99,107,95,115,111,117, - 114,99,101,90,12,115,111,117,114,99,101,95,98,121,116,101, - 115,114,155,0,0,0,90,12,115,111,117,114,99,101,95,109, - 116,105,109,101,90,11,115,111,117,114,99,101,95,115,105,122, - 101,114,50,0,0,0,114,9,0,0,0,114,9,0,0,0, - 114,10,0,0,0,218,15,95,117,110,109,97,114,115,104,97, - 108,95,99,111,100,101,117,2,0,0,115,74,0,0,0,2, - 2,2,1,6,254,14,5,12,2,4,1,12,1,10,1,2, - 1,2,255,8,1,2,255,10,2,8,1,4,1,4,1,2, - 1,4,254,4,5,8,1,4,255,2,128,8,4,6,255,4, - 3,22,3,18,1,2,255,4,2,8,1,4,255,4,2,18, - 2,10,1,16,1,4,1,255,128,114,160,0,0,0,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, - 0,0,0,67,0,0,0,115,28,0,0,0,124,0,160,0, - 100,1,100,2,161,2,125,0,124,0,160,0,100,3,100,2, - 161,2,125,0,124,0,83,0,41,4,78,115,2,0,0,0, - 13,10,243,1,0,0,0,10,243,1,0,0,0,13,41,1, - 114,19,0,0,0,41,1,218,6,115,111,117,114,99,101,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,23, - 95,110,111,114,109,97,108,105,122,101,95,108,105,110,101,95, - 101,110,100,105,110,103,115,162,2,0,0,115,8,0,0,0, - 12,1,12,1,4,1,255,128,114,164,0,0,0,99,2,0, - 0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0, - 0,0,67,0,0,0,115,24,0,0,0,116,0,124,1,131, - 1,125,1,116,1,124,1,124,0,100,1,100,2,100,3,141, - 4,83,0,41,4,78,114,78,0,0,0,84,41,1,90,12, - 100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,164, - 0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,57, - 0,0,0,114,163,0,0,0,114,9,0,0,0,114,9,0, - 0,0,114,10,0,0,0,218,15,95,99,111,109,112,105,108, - 101,95,115,111,117,114,99,101,169,2,0,0,115,6,0,0, - 0,8,1,16,1,255,128,114,166,0,0,0,99,2,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0, - 0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,0, - 100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, - 64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, - 100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, - 20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,10, - 78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,0, - 233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,233, - 63,0,0,0,114,91,0,0,0,114,14,0,0,0,41,2, - 114,136,0,0,0,90,6,109,107,116,105,109,101,41,2,218, - 1,100,114,143,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,10,0,0,0,218,14,95,112,97,114,115,101,95,100, - 111,115,116,105,109,101,175,2,0,0,115,20,0,0,0,4, - 1,10,1,10,1,6,1,6,1,10,1,10,1,6,1,6, - 249,255,128,114,174,0,0,0,99,2,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,10,0,0,0,67,0,0, - 0,115,110,0,0,0,122,82,124,1,100,1,100,0,133,2, - 25,0,100,2,118,0,115,22,74,0,130,1,124,1,100,0, - 100,1,133,2,25,0,125,1,124,0,106,0,124,1,25,0, - 125,2,124,2,100,3,25,0,125,3,124,2,100,4,25,0, - 125,4,124,2,100,5,25,0,125,5,116,1,124,4,124,3, - 131,2,124,5,102,2,87,0,83,0,4,0,116,2,116,3, - 116,4,102,3,121,108,1,0,1,0,1,0,89,0,100,6, - 83,0,119,0,41,7,78,114,14,0,0,0,169,2,218,1, - 99,218,1,111,114,168,0,0,0,233,6,0,0,0,233,3, - 0,0,0,41,2,114,0,0,0,0,114,0,0,0,0,41, - 5,114,28,0,0,0,114,174,0,0,0,114,26,0,0,0, - 218,10,73,110,100,101,120,69,114,114,111,114,114,159,0,0, - 0,41,6,114,32,0,0,0,114,13,0,0,0,114,58,0, - 0,0,114,136,0,0,0,114,137,0,0,0,90,17,117,110, - 99,111,109,112,114,101,115,115,101,100,95,115,105,122,101,114, - 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,156, - 0,0,0,188,2,0,0,115,24,0,0,0,2,1,20,2, - 12,1,10,1,8,3,8,1,8,1,16,1,18,1,6,1, - 2,255,255,128,114,156,0,0,0,99,2,0,0,0,0,0, - 0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, - 0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25, - 0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100, - 1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25, - 0,125,2,87,0,110,18,4,0,116,1,121,78,1,0,1, - 0,1,0,89,0,100,0,83,0,116,2,124,0,106,3,124, - 2,131,2,83,0,119,0,41,3,78,114,14,0,0,0,114, - 175,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0, - 114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0, - 0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0, - 114,9,0,0,0,114,10,0,0,0,114,154,0,0,0,207, - 2,0,0,115,18,0,0,0,20,2,12,1,2,2,14,1, - 12,1,6,1,12,2,2,253,255,128,114,154,0,0,0,99, - 2,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, - 11,0,0,0,67,0,0,0,115,18,1,0,0,116,0,124, - 0,124,1,131,2,125,2,100,0,125,3,116,1,68,0,93, - 204,92,3,125,4,125,5,125,6,124,2,124,4,23,0,125, - 7,116,2,106,3,100,1,124,0,106,4,116,5,124,7,100, - 2,100,3,141,5,1,0,122,14,124,0,106,6,124,7,25, - 0,125,8,87,0,110,18,4,0,116,7,144,1,121,16,1, - 0,1,0,1,0,89,0,113,18,124,8,100,4,25,0,125, + 114,18,116,0,100,2,131,1,130,1,116,1,160,2,124,0, + 161,1,143,127,125,10,122,7,124,10,160,3,124,6,161,1, + 1,0,87,0,110,15,4,0,116,4,121,187,1,0,1,0, + 1,0,116,0,100,3,124,0,155,2,157,2,124,0,100,4, + 141,2,130,1,124,10,160,5,100,5,161,1,125,11,116,6, + 124,11,131,1,100,5,107,3,114,62,116,7,100,6,131,1, + 130,1,124,11,100,0,100,7,133,2,25,0,100,8,107,3, + 114,79,116,0,100,9,124,0,155,2,157,2,124,0,100,4, + 141,2,130,1,116,8,124,11,100,10,100,11,133,2,25,0, + 131,1,125,12,116,8,124,11,100,11,100,5,133,2,25,0, + 131,1,125,13,100,5,124,12,23,0,124,13,23,0,125,14, + 124,6,124,14,55,0,125,6,122,7,124,10,160,3,124,6, + 161,1,1,0,87,0,110,15,4,0,116,4,121,186,1,0, + 1,0,1,0,116,0,100,3,124,0,155,2,157,2,124,0, + 100,4,141,2,130,1,124,10,160,5,124,4,161,1,125,15, + 116,6,124,15,131,1,124,4,107,3,114,143,116,4,100,12, + 131,1,130,1,87,0,100,0,4,0,4,0,131,3,1,0, + 110,8,49,0,115,153,119,1,1,0,1,0,1,0,89,0, + 1,0,124,3,100,1,107,2,114,164,124,15,83,0,122,5, + 116,9,131,0,125,16,87,0,110,10,4,0,116,10,121,185, + 1,0,1,0,1,0,116,0,100,13,131,1,130,1,124,16, + 124,15,100,14,131,2,83,0,119,0,119,0,119,0,41,15, + 78,114,0,0,0,0,122,18,110,101,103,97,116,105,118,101, + 32,100,97,116,97,32,115,105,122,101,114,97,0,0,0,114, + 12,0,0,0,114,109,0,0,0,114,103,0,0,0,114,98, + 0,0,0,115,4,0,0,0,80,75,3,4,122,23,98,97, + 100,32,108,111,99,97,108,32,102,105,108,101,32,104,101,97, + 100,101,114,58,32,233,26,0,0,0,114,108,0,0,0,122, + 26,122,105,112,105,109,112,111,114,116,58,32,99,97,110,39, + 116,32,114,101,97,100,32,100,97,116,97,114,144,0,0,0, + 105,241,255,255,255,41,11,114,3,0,0,0,114,115,0,0, + 0,114,116,0,0,0,114,117,0,0,0,114,22,0,0,0, + 114,119,0,0,0,114,55,0,0,0,114,124,0,0,0,114, + 1,0,0,0,114,149,0,0,0,114,148,0,0,0,41,17, + 114,29,0,0,0,114,58,0,0,0,90,8,100,97,116,97, + 112,97,116,104,114,135,0,0,0,114,139,0,0,0,114,130, + 0,0,0,114,142,0,0,0,114,136,0,0,0,114,137,0, + 0,0,114,138,0,0,0,114,128,0,0,0,114,129,0,0, + 0,114,140,0,0,0,114,141,0,0,0,114,132,0,0,0, + 90,8,114,97,119,95,100,97,116,97,114,146,0,0,0,114, + 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,56, + 0,0,0,63,2,0,0,115,74,0,0,0,20,1,8,1, + 8,1,12,2,2,2,14,1,12,1,18,1,10,1,12,1, + 8,1,16,2,18,2,16,2,16,1,12,1,8,1,2,1, + 14,1,12,1,18,1,10,1,12,1,8,1,14,255,16,128, + 8,3,4,2,2,3,10,1,12,1,8,1,10,1,2,254, + 2,243,2,240,255,128,114,56,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, + 67,0,0,0,115,16,0,0,0,116,0,124,0,124,1,24, + 0,131,1,100,1,107,1,83,0,41,2,78,114,5,0,0, + 0,41,1,218,3,97,98,115,41,2,90,2,116,49,90,2, + 116,50,114,9,0,0,0,114,9,0,0,0,114,10,0,0, + 0,218,9,95,101,113,95,109,116,105,109,101,109,2,0,0, + 115,4,0,0,0,16,2,255,128,114,152,0,0,0,99,5, + 0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,6, + 0,0,0,67,0,0,0,115,254,0,0,0,124,3,124,2, + 100,1,156,2,125,5,116,0,160,1,124,4,124,3,124,5, + 161,3,125,6,124,6,100,2,64,0,100,3,107,3,125,7, + 124,7,114,63,124,6,100,4,64,0,100,3,107,3,125,8, + 116,2,106,3,100,5,107,3,114,62,124,8,115,38,116,2, + 106,3,100,6,107,2,114,62,116,4,124,0,124,2,131,2, + 125,9,124,9,100,0,117,1,114,62,116,2,160,5,116,0, + 106,6,124,9,161,2,125,10,116,0,160,7,124,4,124,10, + 124,3,124,5,161,4,1,0,110,40,116,8,124,0,124,2, + 131,2,92,2,125,11,125,12,124,11,114,103,116,9,116,10, + 124,4,100,7,100,8,133,2,25,0,131,1,124,11,131,2, + 114,93,116,10,124,4,100,8,100,9,133,2,25,0,131,1, + 124,12,107,3,114,103,116,11,160,12,100,10,124,3,155,2, + 157,2,161,1,1,0,100,0,83,0,116,13,160,14,124,4, + 100,9,100,0,133,2,25,0,161,1,125,13,116,15,124,13, + 116,16,131,2,115,125,116,17,100,11,124,1,155,2,100,12, + 157,3,131,1,130,1,124,13,83,0,41,13,78,41,2,114, + 44,0,0,0,114,13,0,0,0,114,5,0,0,0,114,0, + 0,0,0,114,91,0,0,0,90,5,110,101,118,101,114,90, + 6,97,108,119,97,121,115,114,104,0,0,0,114,99,0,0, + 0,114,100,0,0,0,122,22,98,121,116,101,99,111,100,101, + 32,105,115,32,115,116,97,108,101,32,102,111,114,32,122,16, + 99,111,109,112,105,108,101,100,32,109,111,100,117,108,101,32, + 122,21,32,105,115,32,110,111,116,32,97,32,99,111,100,101, + 32,111,98,106,101,99,116,41,18,114,21,0,0,0,90,13, + 95,99,108,97,115,115,105,102,121,95,112,121,99,218,4,95, + 105,109,112,90,21,99,104,101,99,107,95,104,97,115,104,95, + 98,97,115,101,100,95,112,121,99,115,218,15,95,103,101,116, + 95,112,121,99,95,115,111,117,114,99,101,218,11,115,111,117, + 114,99,101,95,104,97,115,104,90,17,95,82,65,87,95,77, + 65,71,73,67,95,78,85,77,66,69,82,90,18,95,118,97, + 108,105,100,97,116,101,95,104,97,115,104,95,112,121,99,218, + 29,95,103,101,116,95,109,116,105,109,101,95,97,110,100,95, + 115,105,122,101,95,111,102,95,115,111,117,114,99,101,114,152, + 0,0,0,114,2,0,0,0,114,45,0,0,0,114,80,0, + 0,0,218,7,109,97,114,115,104,97,108,90,5,108,111,97, + 100,115,114,15,0,0,0,218,10,95,99,111,100,101,95,116, + 121,112,101,218,9,84,121,112,101,69,114,114,111,114,41,14, + 114,32,0,0,0,114,57,0,0,0,114,66,0,0,0,114, + 38,0,0,0,114,131,0,0,0,90,11,101,120,99,95,100, + 101,116,97,105,108,115,114,134,0,0,0,90,10,104,97,115, + 104,95,98,97,115,101,100,90,12,99,104,101,99,107,95,115, + 111,117,114,99,101,90,12,115,111,117,114,99,101,95,98,121, + 116,101,115,114,155,0,0,0,90,12,115,111,117,114,99,101, + 95,109,116,105,109,101,90,11,115,111,117,114,99,101,95,115, + 105,122,101,114,50,0,0,0,114,9,0,0,0,114,9,0, + 0,0,114,10,0,0,0,218,15,95,117,110,109,97,114,115, + 104,97,108,95,99,111,100,101,117,2,0,0,115,74,0,0, + 0,2,2,2,1,6,254,14,5,12,2,4,1,12,1,10, + 1,2,1,2,255,8,1,2,255,10,2,8,1,4,1,4, + 1,2,1,4,254,4,5,8,1,4,255,2,128,8,4,6, + 255,4,3,22,3,18,1,2,255,4,2,8,1,4,255,4, + 2,18,2,10,1,16,1,4,1,255,128,114,160,0,0,0, + 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,28,0,0,0,124,0, + 160,0,100,1,100,2,161,2,125,0,124,0,160,0,100,3, + 100,2,161,2,125,0,124,0,83,0,41,4,78,115,2,0, + 0,0,13,10,243,1,0,0,0,10,243,1,0,0,0,13, + 41,1,114,19,0,0,0,41,1,218,6,115,111,117,114,99, + 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 218,23,95,110,111,114,109,97,108,105,122,101,95,108,105,110, + 101,95,101,110,100,105,110,103,115,162,2,0,0,115,8,0, + 0,0,12,1,12,1,4,1,255,128,114,164,0,0,0,99, + 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 6,0,0,0,67,0,0,0,115,24,0,0,0,116,0,124, + 1,131,1,125,1,116,1,124,1,124,0,100,1,100,2,100, + 3,141,4,83,0,41,4,78,114,78,0,0,0,84,41,1, + 90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,2, + 114,164,0,0,0,218,7,99,111,109,112,105,108,101,41,2, + 114,57,0,0,0,114,163,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,112, + 105,108,101,95,115,111,117,114,99,101,169,2,0,0,115,6, + 0,0,0,8,1,16,1,255,128,114,166,0,0,0,99,2, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11, + 0,0,0,67,0,0,0,115,68,0,0,0,116,0,160,1, + 124,0,100,1,63,0,100,2,23,0,124,0,100,3,63,0, + 100,4,64,0,124,0,100,5,64,0,124,1,100,6,63,0, + 124,1,100,3,63,0,100,7,64,0,124,1,100,5,64,0, + 100,8,20,0,100,9,100,9,100,9,102,9,161,1,83,0, + 41,10,78,233,9,0,0,0,105,188,7,0,0,233,5,0, + 0,0,233,15,0,0,0,233,31,0,0,0,233,11,0,0, + 0,233,63,0,0,0,114,91,0,0,0,114,14,0,0,0, + 41,2,114,136,0,0,0,90,6,109,107,116,105,109,101,41, + 2,218,1,100,114,143,0,0,0,114,9,0,0,0,114,9, + 0,0,0,114,10,0,0,0,218,14,95,112,97,114,115,101, + 95,100,111,115,116,105,109,101,175,2,0,0,115,20,0,0, + 0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,6, + 1,6,249,255,128,114,174,0,0,0,99,2,0,0,0,0, + 0,0,0,0,0,0,0,6,0,0,0,10,0,0,0,67, + 0,0,0,115,110,0,0,0,122,41,124,1,100,1,100,0, + 133,2,25,0,100,2,118,0,115,11,74,0,130,1,124,1, + 100,0,100,1,133,2,25,0,125,1,124,0,106,0,124,1, + 25,0,125,2,124,2,100,3,25,0,125,3,124,2,100,4, + 25,0,125,4,124,2,100,5,25,0,125,5,116,1,124,4, + 124,3,131,2,124,5,102,2,87,0,83,0,4,0,116,2, + 116,3,116,4,102,3,121,54,1,0,1,0,1,0,89,0, + 100,6,83,0,119,0,41,7,78,114,14,0,0,0,169,2, + 218,1,99,218,1,111,114,168,0,0,0,233,6,0,0,0, + 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0, + 0,41,5,114,28,0,0,0,114,174,0,0,0,114,26,0, + 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,159, + 0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,114, + 58,0,0,0,114,136,0,0,0,114,137,0,0,0,90,17, + 117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122, + 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0, + 114,156,0,0,0,188,2,0,0,115,24,0,0,0,2,1, + 20,2,12,1,10,1,8,3,8,1,8,1,16,1,18,1, + 6,1,2,255,255,128,114,156,0,0,0,99,2,0,0,0, + 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0, + 67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133, + 2,25,0,100,2,118,0,115,10,74,0,130,1,124,1,100, + 0,100,1,133,2,25,0,125,1,122,7,124,0,106,0,124, + 1,25,0,125,2,87,0,110,9,4,0,116,1,121,39,1, + 0,1,0,1,0,89,0,100,0,83,0,116,2,124,0,106, + 3,124,2,131,2,83,0,119,0,41,3,78,114,14,0,0, + 0,114,175,0,0,0,41,4,114,28,0,0,0,114,26,0, + 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32, + 0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0, + 0,0,114,9,0,0,0,114,10,0,0,0,114,154,0,0, + 0,207,2,0,0,115,18,0,0,0,20,2,12,1,2,2, + 14,1,12,1,6,1,12,2,2,253,255,128,114,154,0,0, + 0,99,2,0,0,0,0,0,0,0,0,0,0,0,14,0, + 0,0,11,0,0,0,67,0,0,0,115,14,1,0,0,116, + 0,124,0,124,1,131,2,125,2,100,0,125,3,116,1,68, + 0,93,100,92,3,125,4,125,5,125,6,124,2,124,4,23, + 0,125,7,116,2,106,3,100,1,124,0,106,4,116,5,124, + 7,100,2,100,3,141,5,1,0,122,7,124,0,106,6,124, + 7,25,0,125,8,87,0,110,8,4,0,116,7,121,134,1, + 0,1,0,1,0,89,0,113,9,124,8,100,4,25,0,125, 9,116,8,124,0,106,4,124,8,131,2,125,10,100,0,125, - 11,124,5,114,182,122,20,116,9,124,0,124,9,124,7,124, - 1,124,10,131,5,125,11,87,0,110,50,4,0,116,10,144, - 1,121,14,1,0,125,12,1,0,122,16,124,12,125,3,87, - 0,89,0,100,0,125,12,126,12,110,18,100,0,125,12,126, - 12,119,1,116,11,124,9,124,10,131,2,125,11,124,11,100, - 0,117,0,114,202,113,18,124,8,100,4,25,0,125,9,124, - 11,124,6,124,9,102,3,2,0,1,0,83,0,124,3,114, - 252,100,5,124,3,155,0,157,2,125,13,116,12,124,13,124, - 1,100,6,141,2,124,3,130,2,116,12,100,7,124,1,155, - 2,157,2,124,1,100,6,141,2,130,1,119,0,119,0,41, - 8,78,122,13,116,114,121,105,110,103,32,123,125,123,125,123, - 125,114,91,0,0,0,41,1,90,9,118,101,114,98,111,115, - 105,116,121,114,0,0,0,0,122,20,109,111,100,117,108,101, - 32,108,111,97,100,32,102,97,105,108,101,100,58,32,114,62, - 0,0,0,114,61,0,0,0,41,13,114,36,0,0,0,114, - 94,0,0,0,114,45,0,0,0,114,80,0,0,0,114,29, - 0,0,0,114,20,0,0,0,114,28,0,0,0,114,26,0, - 0,0,114,56,0,0,0,114,160,0,0,0,114,79,0,0, - 0,114,166,0,0,0,114,3,0,0,0,41,14,114,32,0, - 0,0,114,38,0,0,0,114,13,0,0,0,90,12,105,109, - 112,111,114,116,95,101,114,114,111,114,114,95,0,0,0,114, - 96,0,0,0,114,51,0,0,0,114,66,0,0,0,114,58, - 0,0,0,114,40,0,0,0,114,131,0,0,0,114,50,0, - 0,0,90,3,101,120,99,114,81,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,114,48,0,0,0, - 222,2,0,0,115,60,0,0,0,10,1,4,1,14,1,8, - 1,22,1,2,1,14,1,14,1,4,1,8,2,12,1,4, - 1,4,1,2,1,20,1,16,1,16,1,8,128,10,2,8, - 1,2,3,8,1,14,1,4,2,10,1,14,1,18,2,2, - 241,2,247,255,128,114,48,0,0,0,41,46,114,89,0,0, - 0,90,26,95,102,114,111,122,101,110,95,105,109,112,111,114, - 116,108,105,98,95,101,120,116,101,114,110,97,108,114,21,0, - 0,0,114,1,0,0,0,114,2,0,0,0,90,17,95,102, - 114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,114, - 45,0,0,0,114,153,0,0,0,114,115,0,0,0,114,157, - 0,0,0,114,71,0,0,0,114,136,0,0,0,114,69,0, - 0,0,90,7,95,95,97,108,108,95,95,114,20,0,0,0, - 90,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114, - 115,114,18,0,0,0,114,79,0,0,0,114,3,0,0,0, - 114,25,0,0,0,218,4,116,121,112,101,114,74,0,0,0, - 114,118,0,0,0,114,120,0,0,0,114,122,0,0,0,90, - 13,95,76,111,97,100,101,114,66,97,115,105,99,115,114,4, - 0,0,0,114,94,0,0,0,114,36,0,0,0,114,37,0, - 0,0,114,35,0,0,0,114,27,0,0,0,114,127,0,0, - 0,114,147,0,0,0,114,149,0,0,0,114,56,0,0,0, - 114,152,0,0,0,114,160,0,0,0,218,8,95,95,99,111, - 100,101,95,95,114,158,0,0,0,114,164,0,0,0,114,166, - 0,0,0,114,174,0,0,0,114,156,0,0,0,114,154,0, - 0,0,114,48,0,0,0,114,9,0,0,0,114,9,0,0, - 0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111, - 100,117,108,101,62,1,0,0,0,115,92,0,0,0,4,0, - 8,16,16,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, - 4,1,4,1,18,2,0,127,0,127,12,44,12,1,2,1, - 2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, - 4,29,8,5,8,21,8,46,8,8,10,40,8,5,8,7, - 8,6,8,13,8,19,12,15,255,128, + 11,124,5,114,89,122,10,116,9,124,0,124,9,124,7,124, + 1,124,10,131,5,125,11,87,0,110,24,4,0,116,10,121, + 133,1,0,125,12,1,0,122,8,124,12,125,3,87,0,89, + 0,100,0,125,12,126,12,110,9,100,0,125,12,126,12,119, + 1,116,11,124,9,124,10,131,2,125,11,124,11,100,0,117, + 0,114,99,113,9,124,8,100,4,25,0,125,9,124,11,124, + 6,124,9,102,3,2,0,1,0,83,0,124,3,114,124,100, + 5,124,3,155,0,157,2,125,13,116,12,124,13,124,1,100, + 6,141,2,124,3,130,2,116,12,100,7,124,1,155,2,157, + 2,124,1,100,6,141,2,130,1,119,0,119,0,41,8,78, + 122,13,116,114,121,105,110,103,32,123,125,123,125,123,125,114, + 91,0,0,0,41,1,90,9,118,101,114,98,111,115,105,116, + 121,114,0,0,0,0,122,20,109,111,100,117,108,101,32,108, + 111,97,100,32,102,97,105,108,101,100,58,32,114,62,0,0, + 0,114,61,0,0,0,41,13,114,36,0,0,0,114,94,0, + 0,0,114,45,0,0,0,114,80,0,0,0,114,29,0,0, + 0,114,20,0,0,0,114,28,0,0,0,114,26,0,0,0, + 114,56,0,0,0,114,160,0,0,0,114,79,0,0,0,114, + 166,0,0,0,114,3,0,0,0,41,14,114,32,0,0,0, + 114,38,0,0,0,114,13,0,0,0,90,12,105,109,112,111, + 114,116,95,101,114,114,111,114,114,95,0,0,0,114,96,0, + 0,0,114,51,0,0,0,114,66,0,0,0,114,58,0,0, + 0,114,40,0,0,0,114,131,0,0,0,114,50,0,0,0, + 90,3,101,120,99,114,81,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,114,48,0,0,0,222,2, + 0,0,115,60,0,0,0,10,1,4,1,14,1,8,1,22, + 1,2,1,14,1,12,1,4,1,8,2,12,1,4,1,4, + 1,2,1,20,1,14,1,16,1,8,128,10,2,8,1,2, + 3,8,1,14,1,4,2,10,1,14,1,18,2,2,241,2, + 247,255,128,114,48,0,0,0,41,46,114,89,0,0,0,90, + 26,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108, + 105,98,95,101,120,116,101,114,110,97,108,114,21,0,0,0, + 114,1,0,0,0,114,2,0,0,0,90,17,95,102,114,111, + 122,101,110,95,105,109,112,111,114,116,108,105,98,114,45,0, + 0,0,114,153,0,0,0,114,115,0,0,0,114,157,0,0, + 0,114,71,0,0,0,114,136,0,0,0,114,69,0,0,0, + 90,7,95,95,97,108,108,95,95,114,20,0,0,0,90,15, + 112,97,116,104,95,115,101,112,97,114,97,116,111,114,115,114, + 18,0,0,0,114,79,0,0,0,114,3,0,0,0,114,25, + 0,0,0,218,4,116,121,112,101,114,74,0,0,0,114,118, + 0,0,0,114,120,0,0,0,114,122,0,0,0,90,13,95, + 76,111,97,100,101,114,66,97,115,105,99,115,114,4,0,0, + 0,114,94,0,0,0,114,36,0,0,0,114,37,0,0,0, + 114,35,0,0,0,114,27,0,0,0,114,127,0,0,0,114, + 147,0,0,0,114,149,0,0,0,114,56,0,0,0,114,152, + 0,0,0,114,160,0,0,0,218,8,95,95,99,111,100,101, + 95,95,114,158,0,0,0,114,164,0,0,0,114,166,0,0, + 0,114,174,0,0,0,114,156,0,0,0,114,154,0,0,0, + 114,48,0,0,0,114,9,0,0,0,114,9,0,0,0,114, + 9,0,0,0,114,10,0,0,0,218,8,60,109,111,100,117, + 108,101,62,1,0,0,0,115,92,0,0,0,4,0,8,16, + 16,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,2,6,3,14,1,16,3,4,4,8,2,4,2,4,1, + 4,1,18,2,0,127,0,127,12,44,12,1,2,1,2,1, + 4,252,8,9,8,4,8,9,8,31,2,126,2,254,4,29, + 8,5,8,21,8,46,8,8,10,40,8,5,8,7,8,6, + 8,13,8,19,12,15,255,128, }; diff --git a/Python/traceback.c b/Python/traceback.c index 9363d4eb1b5b7..6c0cdfa7e7a2c 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -233,7 +233,7 @@ _PyTraceBack_FromFrame(PyObject *tb_next, PyFrameObject *frame) assert(tb_next == NULL || PyTraceBack_Check(tb_next)); assert(frame != NULL); - return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_lasti, + return tb_create_raw((PyTracebackObject *)tb_next, frame, frame->f_lasti*2, PyFrame_GetLineNumber(frame)); } @@ -763,8 +763,7 @@ dump_frame(int fd, PyFrameObject *frame) PUTS(fd, "???"); } - /* PyFrame_GetLineNumber() was introduced in Python 2.7.0 and 3.2.0 */ - int lineno = PyCode_Addr2Line(code, frame->f_lasti); + int lineno = PyFrame_GetLineNumber(frame); PUTS(fd, ", line "); if (lineno >= 0) { _Py_DumpDecimal(fd, (size_t)lineno); diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index e18ab0d873cce..270aeb426eb5b 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -947,7 +947,7 @@ def current_line_num(self): return self.f_lineno try: - return self.co.addr2line(self.f_lasti) + return self.co.addr2line(self.f_lasti*2) except Exception: # bpo-34989: addr2line() is a complex function, it can fail in many # ways. For example, it fails with a TypeError on "FakeRepr" if From webhook-mailer at python.org Thu Apr 1 11:26:12 2021 From: webhook-mailer at python.org (gvanrossum) Date: Thu, 01 Apr 2021 15:26:12 -0000 Subject: [Python-checkins] bpo-26053: Fix args echoed by pdb run command (#22033) Message-ID: https://github.com/python/cpython/commit/652bfdee9495dca241d48278742fe035b7a82bdb commit: 652bfdee9495dca241d48278742fe035b7a82bdb branch: master author: Irit Katriel committer: gvanrossum date: 2021-04-01T08:25:59-07:00 summary: bpo-26053: Fix args echoed by pdb run command (#22033) files: A Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 7a5192cbadc3a..98dc975eafafd 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1708,7 +1708,7 @@ def main(): print("The program finished and will be restarted") except Restart: print("Restarting", mainpyfile, "with arguments:") - print("\t" + " ".join(args)) + print("\t" + " ".join(sys.argv[1:])) except SystemExit: # In most cases SystemExit does not warrant a post-mortem session. print("The program exited via sys.exit(). Exit status:", end=' ') diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 51cd378648378..9f0db02996f5b 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1443,6 +1443,19 @@ def test_issue16180(self): 'Fail to handle a syntax error in the debuggee.' .format(expected, stdout)) + def test_issue26053(self): + # run command of pdb prompt echoes the correct args + script = "print('hello')" + commands = """ + continue + run a b c + run d e f + quit + """ + stdout, stderr = self.run_pdb_script(script, commands) + output = '\n'.join([x.strip() for x in stdout.splitlines()]) + self.assertIn("Restarting main.py with arguments:\na b c", output) + self.assertIn("Restarting main.py with arguments:\nd e f", output) def test_readrc_kwarg(self): script = textwrap.dedent(""" diff --git a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst new file mode 100644 index 0000000000000..e8720ac82ffb1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst @@ -0,0 +1 @@ +Fixed bug where the :mod:`pdb` interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. From webhook-mailer at python.org Thu Apr 1 13:03:44 2021 From: webhook-mailer at python.org (rhettinger) Date: Thu, 01 Apr 2021 17:03:44 -0000 Subject: [Python-checkins] bpo-43677: Fix a minor error in Doc/howto/descriptor.rst (#25123) Message-ID: https://github.com/python/cpython/commit/e689cdca3c14aab8d2d454b79ddd661b238fd301 commit: e689cdca3c14aab8d2d454b79ddd661b238fd301 branch: master author: Zackery Spytz committer: rhettinger date: 2021-04-01T10:03:33-07:00 summary: bpo-43677: Fix a minor error in Doc/howto/descriptor.rst (#25123) It should be PyMethod_Type, not Py_MethodType. files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index 94aadd6f73a83..420d9b94306ea 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -1064,7 +1064,7 @@ roughly equivalent to: .. testcode:: class MethodType: - "Emulate Py_MethodType in Objects/classobject.c" + "Emulate PyMethod_Type in Objects/classobject.c" def __init__(self, func, obj): self.__func__ = func From webhook-mailer at python.org Thu Apr 1 15:06:11 2021 From: webhook-mailer at python.org (vstinner) Date: Thu, 01 Apr 2021 19:06:11 -0000 Subject: [Python-checkins] bpo-26053: Fix test_pdb.test_issue26053() (GH-25139) Message-ID: https://github.com/python/cpython/commit/bd4ab8e73906a4f12d5353f567228b7c7497baf7 commit: bd4ab8e73906a4f12d5353f567228b7c7497baf7 branch: master author: Irit Katriel committer: vstinner date: 2021-04-01T21:05:51+02:00 summary: bpo-26053: Fix test_pdb.test_issue26053() (GH-25139) files: M Lib/test/test_pdb.py diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 9f0db02996f5b..d5abc3f95daca 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1453,9 +1453,9 @@ def test_issue26053(self): quit """ stdout, stderr = self.run_pdb_script(script, commands) - output = '\n'.join([x.strip() for x in stdout.splitlines()]) - self.assertIn("Restarting main.py with arguments:\na b c", output) - self.assertIn("Restarting main.py with arguments:\nd e f", output) + res = '\n'.join([x.strip() for x in stdout.splitlines()]) + self.assertRegex(res, "Restarting .* with arguments:\na b c") + self.assertRegex(res, "Restarting .* with arguments:\nd e f") def test_readrc_kwarg(self): script = textwrap.dedent(""" From webhook-mailer at python.org Thu Apr 1 19:57:13 2021 From: webhook-mailer at python.org (methane) Date: Thu, 01 Apr 2021 23:57:13 -0000 Subject: [Python-checkins] bpo-43651: Fix EncodingWarning in test_warnings (GH-25126) Message-ID: https://github.com/python/cpython/commit/036fc7de24cc961d65b60fba266104009feb2797 commit: 036fc7de24cc961d65b60fba266104009feb2797 branch: master author: Inada Naoki committer: methane date: 2021-04-02T08:57:05+09:00 summary: bpo-43651: Fix EncodingWarning in test_warnings (GH-25126) files: M Lib/test/test_warnings/__init__.py diff --git a/Lib/test/test_warnings/__init__.py b/Lib/test/test_warnings/__init__.py index 04f7560ecc09c..4b1b4e193cb16 100644 --- a/Lib/test/test_warnings/__init__.py +++ b/Lib/test/test_warnings/__init__.py @@ -935,10 +935,10 @@ class PyWarningsDisplayTests(WarningsDisplayTests, unittest.TestCase): def test_tracemalloc(self): self.addCleanup(os_helper.unlink, os_helper.TESTFN) - with open(os_helper.TESTFN, 'w') as fp: + with open(os_helper.TESTFN, 'w', encoding="utf-8") as fp: fp.write(textwrap.dedent(""" def func(): - f = open(__file__) + f = open(__file__, "rb") # Emit ResourceWarning f = None @@ -973,7 +973,7 @@ def run(*args): File "{filename}", lineno 7 func() File "{filename}", lineno 3 - f = open(__file__) + f = open(__file__, "rb") ''').strip() self.assertEqual(stderr, expected) From webhook-mailer at python.org Thu Apr 1 19:59:22 2021 From: webhook-mailer at python.org (methane) Date: Thu, 01 Apr 2021 23:59:22 -0000 Subject: [Python-checkins] bpo-43651: Fix EncodingWarning in lib2to3/pgen2/pgen.py (GH-25127) Message-ID: https://github.com/python/cpython/commit/c0ec4486dc7dd70fea39d1473ac9a9ac568378fe commit: c0ec4486dc7dd70fea39d1473ac9a9ac568378fe branch: master author: Inada Naoki committer: methane date: 2021-04-02T08:59:15+09:00 summary: bpo-43651: Fix EncodingWarning in lib2to3/pgen2/pgen.py (GH-25127) files: M Lib/lib2to3/pgen2/pgen.py diff --git a/Lib/lib2to3/pgen2/pgen.py b/Lib/lib2to3/pgen2/pgen.py index b0cbd16c4dad4..7abd5cef1c36b 100644 --- a/Lib/lib2to3/pgen2/pgen.py +++ b/Lib/lib2to3/pgen2/pgen.py @@ -12,7 +12,7 @@ class ParserGenerator(object): def __init__(self, filename, stream=None): close_stream = None if stream is None: - stream = open(filename) + stream = open(filename, encoding="utf-8") close_stream = stream.close self.filename = filename self.stream = stream From webhook-mailer at python.org Thu Apr 1 20:02:05 2021 From: webhook-mailer at python.org (methane) Date: Fri, 02 Apr 2021 00:02:05 -0000 Subject: [Python-checkins] bpo-43651: Fix test_compileall with PEP 597 (GH-25128) Message-ID: https://github.com/python/cpython/commit/80017752ba938852d53f9d83a404b4ecd9ff2baa commit: 80017752ba938852d53f9d83a404b4ecd9ff2baa branch: master author: Inada Naoki committer: methane date: 2021-04-02T09:01:57+09:00 summary: bpo-43651: Fix test_compileall with PEP 597 (GH-25128) files: M Lib/compileall.py M Lib/multiprocessing/util.py M Lib/test/test_compileall.py diff --git a/Lib/compileall.py b/Lib/compileall.py index 672cb43971869..61b4c5c0af1ad 100644 --- a/Lib/compileall.py +++ b/Lib/compileall.py @@ -407,7 +407,8 @@ def main(): # if flist is provided then load it if args.flist: try: - with (sys.stdin if args.flist=='-' else open(args.flist)) as f: + with (sys.stdin if args.flist=='-' else + open(args.flist, encoding="utf-8")) as f: for line in f: compile_dests.append(line.strip()) except OSError: diff --git a/Lib/multiprocessing/util.py b/Lib/multiprocessing/util.py index 21f2a7ebe2500..a4683339820f5 100644 --- a/Lib/multiprocessing/util.py +++ b/Lib/multiprocessing/util.py @@ -419,7 +419,7 @@ def _close_stdin(): try: fd = os.open(os.devnull, os.O_RDONLY) try: - sys.stdin = open(fd, closefd=False) + sys.stdin = open(fd, encoding="utf-8", closefd=False) except: os.close(fd) raise diff --git a/Lib/test/test_compileall.py b/Lib/test/test_compileall.py index fa24b3c5a11dd..96a0f8f729aa4 100644 --- a/Lib/test/test_compileall.py +++ b/Lib/test/test_compileall.py @@ -58,7 +58,7 @@ def setUp(self): self.directory = tempfile.mkdtemp() self.source_path = os.path.join(self.directory, '_test.py') self.bc_path = importlib.util.cache_from_source(self.source_path) - with open(self.source_path, 'w') as file: + with open(self.source_path, 'w', encoding="utf-8") as file: file.write('x = 123\n') self.source_path2 = os.path.join(self.directory, '_test2.py') self.bc_path2 = importlib.util.cache_from_source(self.source_path2) @@ -73,7 +73,7 @@ def tearDown(self): def add_bad_source_file(self): self.bad_source_path = os.path.join(self.directory, '_test_bad.py') - with open(self.bad_source_path, 'w') as file: + with open(self.bad_source_path, 'w', encoding="utf-8") as file: file.write('x (\n') def timestamp_metadata(self): @@ -164,7 +164,7 @@ def test_no_pycache_in_non_package(self): data_file = os.path.join(data_dir, 'file') os.mkdir(data_dir) # touch data/file - with open(data_file, 'w'): + with open(data_file, 'wb'): pass compileall.compile_file(data_file) self.assertFalse(os.path.exists(os.path.join(data_dir, '__pycache__'))) @@ -440,8 +440,7 @@ def setUpClass(cls): if not directory.is_dir(): directory.mkdir() directory_created = True - with path.open('w') as file: - file.write('# for test_compileall') + path.write_text('# for test_compileall', encoding="utf-8") except OSError: sys_path_writable = False break @@ -704,7 +703,7 @@ def test_include_file_with_arg(self): f2 = script_helper.make_script(self.pkgdir, 'f2', '') f3 = script_helper.make_script(self.pkgdir, 'f3', '') f4 = script_helper.make_script(self.pkgdir, 'f4', '') - with open(os.path.join(self.directory, 'l1'), 'w') as l1: + with open(os.path.join(self.directory, 'l1'), 'w', encoding="utf-8") as l1: l1.write(os.path.join(self.pkgdir, 'f1.py')+os.linesep) l1.write(os.path.join(self.pkgdir, 'f2.py')+os.linesep) self.assertRunOK('-i', os.path.join(self.directory, 'l1'), f4) @@ -718,7 +717,7 @@ def test_include_file_no_arg(self): f2 = script_helper.make_script(self.pkgdir, 'f2', '') f3 = script_helper.make_script(self.pkgdir, 'f3', '') f4 = script_helper.make_script(self.pkgdir, 'f4', '') - with open(os.path.join(self.directory, 'l1'), 'w') as l1: + with open(os.path.join(self.directory, 'l1'), 'w', encoding="utf-8") as l1: l1.write(os.path.join(self.pkgdir, 'f2.py')+os.linesep) self.assertRunOK('-i', os.path.join(self.directory, 'l1')) self.assertNotCompiled(f1) From webhook-mailer at python.org Thu Apr 1 20:06:37 2021 From: webhook-mailer at python.org (rhettinger) Date: Fri, 02 Apr 2021 00:06:37 -0000 Subject: [Python-checkins] bpo-43677: Fix a minor error in Doc/howto/descriptor.rst (GH-25123) (#25140) Message-ID: https://github.com/python/cpython/commit/d104a786fff5980360056d908a2d952b42306171 commit: d104a786fff5980360056d908a2d952b42306171 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-04-01T17:06:30-07:00 summary: bpo-43677: Fix a minor error in Doc/howto/descriptor.rst (GH-25123) (#25140) files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index 032d08009f442..c7035bad4b6fa 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -1054,7 +1054,7 @@ roughly equivalent to: .. testcode:: class MethodType: - "Emulate Py_MethodType in Objects/classobject.c" + "Emulate PyMethod_Type in Objects/classobject.c" def __init__(self, func, obj): self.__func__ = func From webhook-mailer at python.org Thu Apr 1 23:30:53 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 03:30:53 -0000 Subject: [Python-checkins] bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Message-ID: https://github.com/python/cpython/commit/bef7b26f7229f8b7cde843118a7bc7e2b00f0372 commit: bef7b26f7229f8b7cde843118a7bc7e2b00f0372 branch: master author: Erlend Egeberg Aasland committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-01T20:30:40-07:00 summary: bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Automerge-Triggered-By: GH:zware files: M README.rst diff --git a/README.rst b/README.rst index 9c32e4eafeff2..42b42df7e50f8 100644 --- a/README.rst +++ b/README.rst @@ -17,9 +17,9 @@ This is Python version 3.10.0 alpha 6 :alt: CPython code coverage on Codecov :target: https://codecov.io/gh/python/cpython -.. image:: https://img.shields.io/badge/zulip-join_chat-brightgreen.svg - :alt: Python Zulip chat - :target: https://python.zulipchat.com +.. image:: https://img.shields.io/badge/discourse-join_chat-brightgreen.svg + :alt: Python Discourse chat + :target: https://discuss.python.org/ Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. From webhook-mailer at python.org Thu Apr 1 23:54:06 2021 From: webhook-mailer at python.org (methane) Date: Fri, 02 Apr 2021 03:54:06 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25142) Message-ID: https://github.com/python/cpython/commit/8bbfeb3330c10d52274bb85fce59ae614f0500bf commit: 8bbfeb3330c10d52274bb85fce59ae614f0500bf branch: master author: Inada Naoki committer: methane date: 2021-04-02T12:53:46+09:00 summary: bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25142) * test__xxsubinterpreters * test_builtin * test_doctest * test_exceptions * test_opcodes * test_support * test_argparse * test_baseexception * test_bdb * test_bool * test_asdl_parser files: M Lib/test/test__xxsubinterpreters.py M Lib/test/test_argparse.py M Lib/test/test_baseexception.py M Lib/test/test_bdb.py M Lib/test/test_bool.py M Lib/test/test_builtin.py M Lib/test/test_doctest.py M Lib/test/test_exceptions.py M Lib/test/test_opcodes.py M Lib/test/test_support.py M Parser/asdl.py diff --git a/Lib/test/test__xxsubinterpreters.py b/Lib/test/test__xxsubinterpreters.py index cf34fc3d0e7af..7baea69a4e5fa 100644 --- a/Lib/test/test__xxsubinterpreters.py +++ b/Lib/test/test__xxsubinterpreters.py @@ -25,11 +25,11 @@ def _captured_script(script): indented = script.replace('\n', '\n ') wrapped = dedent(f""" import contextlib - with open({w}, 'w') as spipe: + with open({w}, 'w', encoding="utf-8") as spipe: with contextlib.redirect_stdout(spipe): {indented} """) - return wrapped, open(r) + return wrapped, open(r, encoding="utf-8") def _run_output(interp, request, shared=None): @@ -45,7 +45,7 @@ def _running(interp): def run(): interpreters.run_string(interp, dedent(f""" # wait for "signal" - with open({r}) as rpipe: + with open({r}, encoding="utf-8") as rpipe: rpipe.read() """)) @@ -54,7 +54,7 @@ def run(): yield - with open(w, 'w') as spipe: + with open(w, 'w', encoding="utf-8") as spipe: spipe.write('done') t.join() @@ -806,7 +806,7 @@ def f(): @unittest.skipUnless(hasattr(os, 'fork'), "test needs os.fork()") def test_fork(self): import tempfile - with tempfile.NamedTemporaryFile('w+') as file: + with tempfile.NamedTemporaryFile('w+', encoding="utf-8") as file: file.write('') file.flush() @@ -816,7 +816,7 @@ def test_fork(self): try: os.fork() except RuntimeError: - with open('{file.name}', 'w') as out: + with open('{file.name}', 'w', encoding='utf-8') as out: out.write('{expected}') """) interpreters.run_string(self.id, script) diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index ec9711e4f6a47..4d0316f73edcd 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -45,7 +45,7 @@ def tearDown(self): def create_readonly_file(self, filename): file_path = os.path.join(self.temp_dir, filename) - with open(file_path, 'w') as file: + with open(file_path, 'w', encoding="utf-8") as file: file.write(filename) os.chmod(file_path, stat.S_IREAD) @@ -1468,7 +1468,7 @@ def setUp(self): ('invalid', '@no-such-path\n'), ] for path, text in file_texts: - with open(path, 'w') as file: + with open(path, 'w', encoding="utf-8") as file: file.write(text) parser_signature = Sig(fromfile_prefix_chars='@') @@ -1498,7 +1498,7 @@ def setUp(self): ('hello', 'hello world!\n'), ] for path, text in file_texts: - with open(path, 'w') as file: + with open(path, 'w', encoding="utf-8") as file: file.write(text) class FromFileConverterArgumentParser(ErrorRaisingArgumentParser): @@ -1580,7 +1580,8 @@ class TestFileTypeR(TempDirMixin, ParserTestCase): def setUp(self): super(TestFileTypeR, self).setUp() for file_name in ['foo', 'bar']: - with open(os.path.join(self.temp_dir, file_name), 'w') as file: + with open(os.path.join(self.temp_dir, file_name), + 'w', encoding="utf-8") as file: file.write(file_name) self.create_readonly_file('readonly') @@ -1601,7 +1602,7 @@ class TestFileTypeDefaults(TempDirMixin, ParserTestCase): """Test that a file is not created unless the default is needed""" def setUp(self): super(TestFileTypeDefaults, self).setUp() - file = open(os.path.join(self.temp_dir, 'good'), 'w') + file = open(os.path.join(self.temp_dir, 'good'), 'w', encoding="utf-8") file.write('good') file.close() @@ -1620,7 +1621,8 @@ class TestFileTypeRB(TempDirMixin, ParserTestCase): def setUp(self): super(TestFileTypeRB, self).setUp() for file_name in ['foo', 'bar']: - with open(os.path.join(self.temp_dir, file_name), 'w') as file: + with open(os.path.join(self.temp_dir, file_name), + 'w', encoding="utf-8") as file: file.write(file_name) argument_signatures = [ diff --git a/Lib/test/test_baseexception.py b/Lib/test/test_baseexception.py index c32468269a731..8db497a172850 100644 --- a/Lib/test/test_baseexception.py +++ b/Lib/test/test_baseexception.py @@ -28,8 +28,9 @@ def test_inheritance(self): except TypeError: pass - inheritance_tree = open(os.path.join(os.path.split(__file__)[0], - 'exception_hierarchy.txt')) + inheritance_tree = open( + os.path.join(os.path.split(__file__)[0], 'exception_hierarchy.txt'), + encoding="utf-8") try: superclass_name = inheritance_tree.readline().rstrip() try: diff --git a/Lib/test/test_bdb.py b/Lib/test/test_bdb.py index 9bce780e0d041..71be069d2412c 100644 --- a/Lib/test/test_bdb.py +++ b/Lib/test/test_bdb.py @@ -539,7 +539,7 @@ def create_modules(modules): try: for m in modules: fname = m + '.py' - with open(fname, 'w') as f: + with open(fname, 'w', encoding="utf-8") as f: f.write(textwrap.dedent(modules[m])) linecache.checkcache(fname) importlib.invalidate_caches() diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py index bec44d0b9c591..a3214c90ed61e 100644 --- a/Lib/test/test_bool.py +++ b/Lib/test/test_bool.py @@ -235,7 +235,7 @@ def test_boolean(self): def test_fileclosed(self): try: - with open(os_helper.TESTFN, "w") as f: + with open(os_helper.TESTFN, "w", encoding="utf-8") as f: self.assertIs(f.closed, False) self.assertIs(f.closed, True) finally: diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index 295f0713bfd59..bd8353d038b6f 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1159,7 +1159,7 @@ def test_oct(self): def write_testfile(self): # NB the first 4 lines are also used to test input, below - fp = open(TESTFN, 'w') + fp = open(TESTFN, 'w', encoding="utf-8") self.addCleanup(unlink, TESTFN) with fp: fp.write('1+1\n') @@ -1171,7 +1171,7 @@ def write_testfile(self): def test_open(self): self.write_testfile() - fp = open(TESTFN, 'r') + fp = open(TESTFN, encoding="utf-8") with fp: self.assertEqual(fp.readline(4), '1+1\n') self.assertEqual(fp.readline(), 'The quick brown fox jumps over the lazy dog.\n') @@ -1197,7 +1197,9 @@ def test_open_default_encoding(self): self.write_testfile() current_locale_encoding = locale.getpreferredencoding(False) - fp = open(TESTFN, 'w') + with warnings.catch_warnings(): + warnings.simplefilter("ignore", EncodingWarning) + fp = open(TESTFN, 'w') with fp: self.assertEqual(fp.encoding, current_locale_encoding) finally: @@ -1205,7 +1207,7 @@ def test_open_default_encoding(self): os.environ.update(old_environ) def test_open_non_inheritable(self): - fileobj = open(__file__) + fileobj = open(__file__, encoding="utf-8") with fileobj: self.assertFalse(os.get_inheritable(fileobj.fileno())) @@ -1300,7 +1302,7 @@ def test_pow(self): def test_input(self): self.write_testfile() - fp = open(TESTFN, 'r') + fp = open(TESTFN, encoding="utf-8") savestdin = sys.stdin savestdout = sys.stdout # Eats the echo try: @@ -2022,7 +2024,7 @@ def _run_child(self, child, terminal_input): os.write(fd, terminal_input) # Get results from the pipe - with open(r, "r") as rpipe: + with open(r, encoding="utf-8") as rpipe: lines = [] while True: line = rpipe.readline().strip() diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 6a5013f5b8afc..6f51b1bc4f0d1 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -2846,7 +2846,7 @@ def test_CLI(): r""" >>> from test.support.os_helper import temp_dir >>> with temp_dir() as tmpdir: ... fn = os.path.join(tmpdir, 'myfile.doc') - ... with open(fn, 'w') as f: + ... with open(fn, 'w', encoding='utf-8') as f: ... _ = f.write('This is a very simple test file.\n') ... _ = f.write(' >>> 1 + 1\n') ... _ = f.write(' 2\n') @@ -2898,7 +2898,7 @@ def test_CLI(): r""" >>> from test.support.os_helper import temp_dir >>> with temp_dir() as tmpdir: ... fn = os.path.join(tmpdir, 'myfile.doc') - ... with open(fn, 'w') as f: + ... with open(fn, 'w', encoding="utf-8") as f: ... _ = f.write('This is another simple test file.\n') ... _ = f.write(' >>> 1 + 1\n') ... _ = f.write(' 2\n') @@ -2909,7 +2909,7 @@ def test_CLI(): r""" ... _ = f.write('\n') ... _ = f.write('And that is it.\n') ... fn2 = os.path.join(tmpdir, 'myfile2.py') - ... with open(fn2, 'w') as f: + ... with open(fn2, 'w', encoding='utf-8') as f: ... _ = f.write('def test_func():\n') ... _ = f.write(' \"\"\"\n') ... _ = f.write(' This is simple python test function.\n') diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 21878c39f4fec..1e6f525cbb509 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -54,9 +54,9 @@ def testRaising(self): self.assertRaises(AttributeError, getattr, sys, "undefined_attribute") self.raise_catch(EOFError, "EOFError") - fp = open(TESTFN, 'w') + fp = open(TESTFN, 'w', encoding="utf-8") fp.close() - fp = open(TESTFN, 'r') + fp = open(TESTFN, 'r', encoding="utf-8") savestdin = sys.stdin try: try: diff --git a/Lib/test/test_opcodes.py b/Lib/test/test_opcodes.py index e5103647219f7..4be78a4e62b6d 100644 --- a/Lib/test/test_opcodes.py +++ b/Lib/test/test_opcodes.py @@ -24,7 +24,7 @@ def test_try_inside_for_loop(self): def test_setup_annotations_line(self): # check that SETUP_ANNOTATIONS does not create spurious line numbers try: - with open(ann_module.__file__) as f: + with open(ann_module.__file__, encoding="utf-8") as f: txt = f.read() co = compile(txt, ann_module.__file__, 'exec') self.assertEqual(co.co_firstlineno, 1) diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 71a66c27aa21d..55d78b733353d 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -47,7 +47,7 @@ def test_unload(self): self.assertNotIn("sched", sys.modules) def test_unlink(self): - with open(TESTFN, "w") as f: + with open(TESTFN, "w", encoding="utf-8") as f: pass os_helper.unlink(TESTFN) self.assertFalse(os.path.exists(TESTFN)) @@ -79,7 +79,7 @@ def test_rmtree(self): def test_forget(self): mod_filename = TESTFN + '.py' - with open(mod_filename, 'w') as f: + with open(mod_filename, 'w', encoding="utf-8") as f: print('foo = 1', file=f) sys.path.insert(0, os.curdir) importlib.invalidate_caches() diff --git a/Parser/asdl.py b/Parser/asdl.py index 7f509488b96ed..e3e6c34d2a98e 100644 --- a/Parser/asdl.py +++ b/Parser/asdl.py @@ -204,7 +204,7 @@ def check(mod): def parse(filename): """Parse ASDL from the given file and return a Module node describing it.""" - with open(filename) as f: + with open(filename, encoding="utf-8") as f: parser = ASDLParser() return parser.parse(f.read()) From webhook-mailer at python.org Thu Apr 1 23:58:15 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 03:58:15 -0000 Subject: [Python-checkins] bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Message-ID: https://github.com/python/cpython/commit/a217e0ab98e883a550da001e95cb3452c1a6b9da commit: a217e0ab98e883a550da001e95cb3452c1a6b9da branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-01T20:58:07-07:00 summary: bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Automerge-Triggered-By: GH:zware (cherry picked from commit bef7b26f7229f8b7cde843118a7bc7e2b00f0372) Co-authored-by: Erlend Egeberg Aasland files: M README.rst diff --git a/README.rst b/README.rst index 0a36bc16a958b..cf73e70038c4f 100644 --- a/README.rst +++ b/README.rst @@ -17,9 +17,9 @@ This is Python version 3.9.2 :alt: CPython code coverage on Codecov :target: https://codecov.io/gh/python/cpython -.. image:: https://img.shields.io/badge/zulip-join_chat-brightgreen.svg - :alt: Python Zulip chat - :target: https://python.zulipchat.com +.. image:: https://img.shields.io/badge/discourse-join_chat-brightgreen.svg + :alt: Python Discourse chat + :target: https://discuss.python.org/ Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. From webhook-mailer at python.org Thu Apr 1 23:58:32 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 03:58:32 -0000 Subject: [Python-checkins] bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Message-ID: https://github.com/python/cpython/commit/154f86f056c0f68cadd310e68fd2855f9fc9a5a8 commit: 154f86f056c0f68cadd310e68fd2855f9fc9a5a8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-01T20:58:28-07:00 summary: bpo-43700: Replace Zulip badge with Discourse badge (GH-25141) Automerge-Triggered-By: GH:zware (cherry picked from commit bef7b26f7229f8b7cde843118a7bc7e2b00f0372) Co-authored-by: Erlend Egeberg Aasland files: M README.rst diff --git a/README.rst b/README.rst index 18223f9f4e972..229b4cf58e9e2 100644 --- a/README.rst +++ b/README.rst @@ -13,9 +13,9 @@ This is Python version 3.8.8 :alt: CPython code coverage on Codecov :target: https://codecov.io/gh/python/cpython/branch/3.8 -.. image:: https://img.shields.io/badge/zulip-join_chat-brightgreen.svg - :alt: Python Zulip chat - :target: https://python.zulipchat.com +.. image:: https://img.shields.io/badge/discourse-join_chat-brightgreen.svg + :alt: Python Discourse chat + :target: https://discuss.python.org/ Copyright (c) 2001-2021 Python Software Foundation. All rights reserved. From webhook-mailer at python.org Fri Apr 2 04:39:19 2021 From: webhook-mailer at python.org (methane) Date: Fri, 02 Apr 2021 08:39:19 -0000 Subject: [Python-checkins] bpo-43510: Fix emitting EncodingWarning from _io module. (GH-25146) Message-ID: https://github.com/python/cpython/commit/bec8c787ec72d73b39011bde3f3a93e9bb1174b7 commit: bec8c787ec72d73b39011bde3f3a93e9bb1174b7 branch: master author: Inada Naoki committer: methane date: 2021-04-02T17:38:59+09:00 summary: bpo-43510: Fix emitting EncodingWarning from _io module. (GH-25146) I forget to check PyErr_WarnEx() return value. But it will fail when -Werror is used. files: M Modules/_io/_iomodule.c M Modules/_io/textio.c diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index 652c2ce5b0d61..170dea41e8abd 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -532,8 +532,10 @@ _io_text_encoding_impl(PyObject *module, PyObject *encoding, int stacklevel) if (encoding == NULL || encoding == Py_None) { PyInterpreterState *interp = _PyInterpreterState_GET(); if (_PyInterpreterState_GetConfig(interp)->warn_default_encoding) { - PyErr_WarnEx(PyExc_EncodingWarning, - "'encoding' argument not specified", stacklevel); + if (PyErr_WarnEx(PyExc_EncodingWarning, + "'encoding' argument not specified", stacklevel)) { + return NULL; + } } Py_INCREF(_PyIO_str_locale); return _PyIO_str_locale; diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index 6f89a879c9c2b..eb05ae1a16eb0 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -1085,6 +1085,19 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer, self->ok = 0; self->detached = 0; + if (encoding == NULL) { + PyInterpreterState *interp = _PyInterpreterState_GET(); + if (_PyInterpreterState_GetConfig(interp)->warn_default_encoding) { + if (PyErr_WarnEx(PyExc_EncodingWarning, + "'encoding' argument not specified", 1)) { + return -1; + } + } + } + else if (strcmp(encoding, "locale") == 0) { + encoding = NULL; + } + if (errors == Py_None) { errors = _PyUnicode_FromId(&PyId_strict); /* borrowed */ if (errors == NULL) { @@ -1123,17 +1136,6 @@ _io_TextIOWrapper___init___impl(textio *self, PyObject *buffer, self->encodefunc = NULL; self->b2cratio = 0.0; - if (encoding == NULL) { - PyInterpreterState *interp = _PyInterpreterState_GET(); - if (_PyInterpreterState_GetConfig(interp)->warn_default_encoding) { - PyErr_WarnEx(PyExc_EncodingWarning, - "'encoding' argument not specified", 1); - } - } - else if (strcmp(encoding, "locale") == 0) { - encoding = NULL; - } - if (encoding == NULL) { /* Try os.device_encoding(fileno) */ PyObject *fileno; From webhook-mailer at python.org Fri Apr 2 07:17:00 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 02 Apr 2021 11:17:00 -0000 Subject: [Python-checkins] [3.9] bpo-26053: Fix args echoed by pdb run command (GH-25149) Message-ID: https://github.com/python/cpython/commit/7ad56e254519047aeb9c669b9ea2f2bf0acfd401 commit: 7ad56e254519047aeb9c669b9ea2f2bf0acfd401 branch: 3.9 author: Irit Katriel committer: vstinner date: 2021-04-02T13:16:55+02:00 summary: [3.9] bpo-26053: Fix args echoed by pdb run command (GH-25149) * bpo-26053: Fix args echoed by pdb run command (GH-22033) (cherry picked from commit 652bfdee9495dca241d48278742fe035b7a82bdb) * bpo-26053: Fix test_pdb.test_issue26053() (GH-25139) (cherry picked from commit bd4ab8e73906a4f12d5353f567228b7c7497baf7) files: A Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 7a5192cbadc3a..98dc975eafafd 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1708,7 +1708,7 @@ def main(): print("The program finished and will be restarted") except Restart: print("Restarting", mainpyfile, "with arguments:") - print("\t" + " ".join(args)) + print("\t" + " ".join(sys.argv[1:])) except SystemExit: # In most cases SystemExit does not warrant a post-mortem session. print("The program exited via sys.exit(). Exit status:", end=' ') diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 6c4eaf318e448..0da449e33e98b 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1443,6 +1443,19 @@ def test_issue16180(self): 'Fail to handle a syntax error in the debuggee.' .format(expected, stdout)) + def test_issue26053(self): + # run command of pdb prompt echoes the correct args + script = "print('hello')" + commands = """ + continue + run a b c + run d e f + quit + """ + stdout, stderr = self.run_pdb_script(script, commands) + res = '\n'.join([x.strip() for x in stdout.splitlines()]) + self.assertRegex(res, "Restarting .* with arguments:\na b c") + self.assertRegex(res, "Restarting .* with arguments:\nd e f") def test_readrc_kwarg(self): script = textwrap.dedent(""" diff --git a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst new file mode 100644 index 0000000000000..e8720ac82ffb1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst @@ -0,0 +1 @@ +Fixed bug where the :mod:`pdb` interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. From webhook-mailer at python.org Fri Apr 2 07:33:38 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 11:33:38 -0000 Subject: [Python-checkins] [3.9] bpo-26053: Fix args echoed by pdb run command (GH-25149) Message-ID: https://github.com/python/cpython/commit/2049bb2517c08b0d9eaaa4dd624afa5d60e8b5a8 commit: 2049bb2517c08b0d9eaaa4dd624afa5d60e8b5a8 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-02T04:33:31-07:00 summary: [3.9] bpo-26053: Fix args echoed by pdb run command (GH-25149) * bpo-26053: Fix args echoed by pdb run command (GH-22033) (cherry picked from commit 652bfdee9495dca241d48278742fe035b7a82bdb) * bpo-26053: Fix test_pdb.test_issue26053() (GH-25139) (cherry picked from commit bd4ab8e73906a4f12d5353f567228b7c7497baf7) (cherry picked from commit 7ad56e254519047aeb9c669b9ea2f2bf0acfd401) Co-authored-by: Irit Katriel files: A Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst M Lib/pdb.py M Lib/test/test_pdb.py diff --git a/Lib/pdb.py b/Lib/pdb.py index 7a5192cbadc3a..98dc975eafafd 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1708,7 +1708,7 @@ def main(): print("The program finished and will be restarted") except Restart: print("Restarting", mainpyfile, "with arguments:") - print("\t" + " ".join(args)) + print("\t" + " ".join(sys.argv[1:])) except SystemExit: # In most cases SystemExit does not warrant a post-mortem session. print("The program exited via sys.exit(). Exit status:", end=' ') diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index f77c355077411..ac731fefdd24b 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1440,6 +1440,19 @@ def test_issue16180(self): 'Fail to handle a syntax error in the debuggee.' .format(expected, stdout)) + def test_issue26053(self): + # run command of pdb prompt echoes the correct args + script = "print('hello')" + commands = """ + continue + run a b c + run d e f + quit + """ + stdout, stderr = self.run_pdb_script(script, commands) + res = '\n'.join([x.strip() for x in stdout.splitlines()]) + self.assertRegex(res, "Restarting .* with arguments:\na b c") + self.assertRegex(res, "Restarting .* with arguments:\nd e f") def test_readrc_kwarg(self): script = textwrap.dedent(""" diff --git a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst new file mode 100644 index 0000000000000..e8720ac82ffb1 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst @@ -0,0 +1 @@ +Fixed bug where the :mod:`pdb` interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. From webhook-mailer at python.org Fri Apr 2 08:25:05 2021 From: webhook-mailer at python.org (markshannon) Date: Fri, 02 Apr 2021 12:25:05 -0000 Subject: [Python-checkins] Document PyCode_Addr2Line function. (GH-25111) Message-ID: https://github.com/python/cpython/commit/58384c6ab01bbc35cc14cdeb716f6c45a3df426b commit: 58384c6ab01bbc35cc14cdeb716f6c45a3df426b branch: master author: Mark Shannon committer: markshannon date: 2021-04-02T13:24:57+01:00 summary: Document PyCode_Addr2Line function. (GH-25111) * Document PyCode_Addr2Line function. * Clarify when to use PEP 626 line iterators. files: M Doc/c-api/code.rst diff --git a/Doc/c-api/code.rst b/Doc/c-api/code.rst index b3a17f1898e8e..6e18a4225e8f4 100644 --- a/Doc/c-api/code.rst +++ b/Doc/c-api/code.rst @@ -51,3 +51,11 @@ bound into a function. Return a new empty code object with the specified filename, function name, and first line number. It is illegal to :func:`exec` or :func:`eval` the resulting code object. + +.. c:function:: int PyCode_Addr2Line(PyCodeObject *co, int byte_offset) + + Return the line number of the instruction that occurs on or before ``byte_offset`` and ends after it. + If you just need the line number of a frame, use :c:func:`PyFrame_GetLineNumber` instead. + + For efficiently iterating over the line numbers in a code object, use `the API described in PEP 626 + `_. From webhook-mailer at python.org Fri Apr 2 09:28:20 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 02 Apr 2021 13:28:20 -0000 Subject: [Python-checkins] bpo-43687: Py_Initialize() creates singletons earlier (GH-25147) Message-ID: https://github.com/python/cpython/commit/442ad74fc2928b095760eb89aba93c28eab17f9b commit: 442ad74fc2928b095760eb89aba93c28eab17f9b branch: master author: Victor Stinner committer: vstinner date: 2021-04-02T15:28:13+02:00 summary: bpo-43687: Py_Initialize() creates singletons earlier (GH-25147) Reorganize pycore_interp_init() to initialize singletons before the the first PyType_Ready() call. Fix an issue when Python is configured using --without-doc-strings. files: M Include/internal/pycore_long.h M Include/internal/pycore_pylifecycle.h M Objects/floatobject.c M Objects/longobject.c M Objects/structseq.c M Objects/unicodeobject.c M Python/errors.c M Python/pylifecycle.c diff --git a/Include/internal/pycore_long.h b/Include/internal/pycore_long.h index a785b23a92b8c..2bea3a55ec873 100644 --- a/Include/internal/pycore_long.h +++ b/Include/internal/pycore_long.h @@ -18,8 +18,8 @@ static inline PyObject* __PyLong_GetSmallInt_internal(int value) assert(-_PY_NSMALLNEGINTS <= value && value < _PY_NSMALLPOSINTS); size_t index = _PY_NSMALLNEGINTS + value; PyObject *obj = (PyObject*)interp->small_ints[index]; - // _PyLong_GetZero() and _PyLong_GetOne() must not be called - // before _PyLong_Init() nor after _PyLong_Fini() + // _PyLong_GetZero(), _PyLong_GetOne() and get_small_int() must not be + // called before _PyLong_Init() nor after _PyLong_Fini(). assert(obj != NULL); return obj; } diff --git a/Include/internal/pycore_pylifecycle.h b/Include/internal/pycore_pylifecycle.h index 7ae107d73dae3..524be9d4cbb94 100644 --- a/Include/internal/pycore_pylifecycle.h +++ b/Include/internal/pycore_pylifecycle.h @@ -50,9 +50,11 @@ PyAPI_FUNC(int) _Py_IsLocaleCoercionTarget(const char *ctype_loc); /* Various one-time initializers */ extern PyStatus _PyUnicode_Init(PyInterpreterState *interp); +extern PyStatus _PyUnicode_InitTypes(void); extern PyStatus _PyBytes_Init(PyInterpreterState *interp); extern int _PyStructSequence_Init(void); extern int _PyLong_Init(PyInterpreterState *interp); +extern int _PyLong_InitTypes(void); extern PyStatus _PyTuple_Init(PyInterpreterState *interp); extern PyStatus _PyFaulthandler_Init(int enable); extern int _PyTraceMalloc_Init(int enable); @@ -64,9 +66,10 @@ extern PyStatus _PySys_ReadPreinitWarnOptions(PyWideStringList *options); extern PyStatus _PySys_ReadPreinitXOptions(PyConfig *config); extern int _PySys_UpdateConfig(PyThreadState *tstate); extern PyStatus _PyExc_Init(PyInterpreterState *interp); -extern PyStatus _PyErr_Init(void); +extern PyStatus _PyErr_InitTypes(void); extern PyStatus _PyBuiltins_AddExceptions(PyObject * bltinmod); -extern int _PyFloat_Init(void); +extern void _PyFloat_Init(void); +extern int _PyFloat_InitTypes(void); extern PyStatus _Py_HashRandomization_Init(const PyConfig *); extern PyStatus _PyTypes_Init(void); diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 178f7b2f8d2fa..b3c41b1ca051d 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -1968,7 +1968,7 @@ PyTypeObject PyFloat_Type = { .tp_vectorcall = (vectorcallfunc)float_vectorcall, }; -int +void _PyFloat_Init(void) { /* We attempt to determine if this machine is using IEEE @@ -2016,14 +2016,18 @@ _PyFloat_Init(void) double_format = detected_double_format; float_format = detected_float_format; +} +int +_PyFloat_InitTypes(void) +{ /* Init float info */ if (FloatInfoType.tp_name == NULL) { if (PyStructSequence_InitType2(&FloatInfoType, &floatinfo_desc) < 0) { - return 0; + return -1; } } - return 1; + return 0; } void diff --git a/Objects/longobject.c b/Objects/longobject.c index d5037a79b9d52..e1c1191e648da 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -5719,17 +5719,20 @@ _PyLong_Init(PyInterpreterState *interp) interp->small_ints[i] = v; } + return 0; +} - if (_Py_IsMainInterpreter(interp)) { - /* initialize int_info */ - if (Int_InfoType.tp_name == NULL) { - if (PyStructSequence_InitType2(&Int_InfoType, &int_info_desc) < 0) { - return 0; - } + +int +_PyLong_InitTypes(void) +{ + /* initialize int_info */ + if (Int_InfoType.tp_name == NULL) { + if (PyStructSequence_InitType2(&Int_InfoType, &int_info_desc) < 0) { + return -1; } } - - return 1; + return 0; } void diff --git a/Objects/structseq.c b/Objects/structseq.c index 8a92bdbec08d1..88e63b658a420 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -579,7 +579,8 @@ int _PyStructSequence_Init(void) if (_PyUnicode_FromId(&PyId_n_sequence_fields) == NULL || _PyUnicode_FromId(&PyId_n_fields) == NULL || _PyUnicode_FromId(&PyId_n_unnamed_fields) == NULL) + { return -1; - + } return 0; } diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index f6bf505b7fc74..74c5888d13b22 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -15676,18 +15676,6 @@ PyTypeObject PyUnicode_Type = { PyStatus _PyUnicode_Init(PyInterpreterState *interp) { - /* XXX - move this array to unicodectype.c ? */ - const Py_UCS2 linebreak[] = { - 0x000A, /* LINE FEED */ - 0x000D, /* CARRIAGE RETURN */ - 0x001C, /* FILE SEPARATOR */ - 0x001D, /* GROUP SEPARATOR */ - 0x001E, /* RECORD SEPARATOR */ - 0x0085, /* NEXT LINE */ - 0x2028, /* LINE SEPARATOR */ - 0x2029, /* PARAGRAPH SEPARATOR */ - }; - struct _Py_unicode_state *state = &interp->unicode; if (unicode_create_empty_string_singleton(state) < 0) { return _PyStatus_NO_MEMORY(); @@ -15695,23 +15683,39 @@ _PyUnicode_Init(PyInterpreterState *interp) if (_Py_IsMainInterpreter(interp)) { /* initialize the linebreak bloom filter */ + const Py_UCS2 linebreak[] = { + 0x000A, /* LINE FEED */ + 0x000D, /* CARRIAGE RETURN */ + 0x001C, /* FILE SEPARATOR */ + 0x001D, /* GROUP SEPARATOR */ + 0x001E, /* RECORD SEPARATOR */ + 0x0085, /* NEXT LINE */ + 0x2028, /* LINE SEPARATOR */ + 0x2029, /* PARAGRAPH SEPARATOR */ + }; bloom_linebreak = make_bloom_mask( PyUnicode_2BYTE_KIND, linebreak, Py_ARRAY_LENGTH(linebreak)); + } - if (PyType_Ready(&PyUnicode_Type) < 0) { - return _PyStatus_ERR("Can't initialize unicode type"); - } + return _PyStatus_OK(); +} - if (PyType_Ready(&EncodingMapType) < 0) { - return _PyStatus_ERR("Can't initialize encoding map type"); - } - if (PyType_Ready(&PyFieldNameIter_Type) < 0) { - return _PyStatus_ERR("Can't initialize field name iterator type"); - } - if (PyType_Ready(&PyFormatterIter_Type) < 0) { - return _PyStatus_ERR("Can't initialize formatter iter type"); - } + +PyStatus +_PyUnicode_InitTypes(void) +{ + if (PyType_Ready(&PyUnicode_Type) < 0) { + return _PyStatus_ERR("Can't initialize unicode type"); + } + if (PyType_Ready(&EncodingMapType) < 0) { + return _PyStatus_ERR("Can't initialize encoding map type"); + } + if (PyType_Ready(&PyFieldNameIter_Type) < 0) { + return _PyStatus_ERR("Can't initialize field name iterator type"); + } + if (PyType_Ready(&PyFormatterIter_Type) < 0) { + return _PyStatus_ERR("Can't initialize formatter iter type"); } return _PyStatus_OK(); } diff --git a/Python/errors.c b/Python/errors.c index 9bac7ba70f5d5..d73ba93b02ece 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -1192,7 +1192,7 @@ static PyStructSequence_Desc UnraisableHookArgs_desc = { PyStatus -_PyErr_Init(void) +_PyErr_InitTypes(void) { if (UnraisableHookArgsType.tp_name == NULL) { if (PyStructSequence_InitType2(&UnraisableHookArgsType, diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 8309477806f7a..64723ce82d76c 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -628,43 +628,67 @@ pycore_create_interpreter(_PyRuntimeState *runtime, static PyStatus -pycore_init_types(PyInterpreterState *interp) +pycore_init_singletons(PyInterpreterState *interp) { PyStatus status; - int is_main_interp = _Py_IsMainInterpreter(interp); - status = _PyGC_Init(interp); + if (_PyLong_Init(interp) < 0) { + return _PyStatus_ERR("can't init longs"); + } + + if (_Py_IsMainInterpreter(interp)) { + _PyFloat_Init(); + } + + status = _PyBytes_Init(interp); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + + status = _PyUnicode_Init(interp); if (_PyStatus_EXCEPTION(status)) { return status; } - // Create the empty tuple singleton. It must be created before the first - // PyType_Ready() call since PyType_Ready() creates tuples, for tp_bases - // for example. status = _PyTuple_Init(interp); if (_PyStatus_EXCEPTION(status)) { return status; } + return _PyStatus_OK(); +} + + +static PyStatus +pycore_init_types(PyInterpreterState *interp) +{ + PyStatus status; + int is_main_interp = _Py_IsMainInterpreter(interp); + if (is_main_interp) { + if (_PyStructSequence_Init() < 0) { + return _PyStatus_ERR("can't initialize structseq"); + } + status = _PyTypes_Init(); if (_PyStatus_EXCEPTION(status)) { return status; } - } - if (!_PyLong_Init(interp)) { - return _PyStatus_ERR("can't init longs"); - } + if (_PyLong_InitTypes() < 0) { + return _PyStatus_ERR("can't init int type"); + } - status = _PyUnicode_Init(interp); - if (_PyStatus_EXCEPTION(status)) { - return status; + status = _PyUnicode_InitTypes(); + if (_PyStatus_EXCEPTION(status)) { + return status; + } } - status = _PyBytes_Init(interp); - if (_PyStatus_EXCEPTION(status)) { - return status; + if (is_main_interp) { + if (_PyFloat_InitTypes() < 0) { + return _PyStatus_ERR("can't init float"); + } } status = _PyExc_Init(interp); @@ -672,17 +696,7 @@ pycore_init_types(PyInterpreterState *interp) return status; } - if (is_main_interp) { - if (!_PyFloat_Init()) { - return _PyStatus_ERR("can't init float"); - } - - if (_PyStructSequence_Init() < 0) { - return _PyStatus_ERR("can't initialize structseq"); - } - } - - status = _PyErr_Init(); + status = _PyErr_InitTypes(); if (_PyStatus_EXCEPTION(status)) { return status; } @@ -693,22 +707,15 @@ pycore_init_types(PyInterpreterState *interp) } } - if (_PyWarnings_InitState(interp) < 0) { - return _PyStatus_ERR("can't initialize warnings"); - } - - status = _PyAtExit_Init(interp); - if (_PyStatus_EXCEPTION(status)) { - return status; - } - return _PyStatus_OK(); } static PyStatus -pycore_init_builtins(PyInterpreterState *interp) +pycore_init_builtins(PyThreadState *tstate) { + PyInterpreterState *interp = tstate->interp; + PyObject *bimod = _PyBuiltin_Init(interp); if (bimod == NULL) { goto error; @@ -744,6 +751,7 @@ pycore_init_builtins(PyInterpreterState *interp) } interp->import_func = Py_NewRef(import_func); + assert(!_PyErr_Occurred(tstate)); return _PyStatus_OK(); error: @@ -755,29 +763,49 @@ pycore_init_builtins(PyInterpreterState *interp) static PyStatus pycore_interp_init(PyThreadState *tstate) { + PyInterpreterState *interp = tstate->interp; PyStatus status; PyObject *sysmod = NULL; - status = pycore_init_types(tstate->interp); + // Create singletons before the first PyType_Ready() call, since + // PyType_Ready() uses singletons like the Unicode empty string (tp_doc) + // and the empty tuple singletons (tp_bases). + status = pycore_init_singletons(interp); if (_PyStatus_EXCEPTION(status)) { - goto done; + return status; } - status = _PySys_Create(tstate, &sysmod); + // The GC must be initialized before the first GC collection. + status = _PyGC_Init(interp); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + + status = pycore_init_types(interp); if (_PyStatus_EXCEPTION(status)) { goto done; } - assert(!_PyErr_Occurred(tstate)); + if (_PyWarnings_InitState(interp) < 0) { + return _PyStatus_ERR("can't initialize warnings"); + } + + status = _PyAtExit_Init(interp); + if (_PyStatus_EXCEPTION(status)) { + return status; + } - status = pycore_init_builtins(tstate->interp); + status = _PySys_Create(tstate, &sysmod); if (_PyStatus_EXCEPTION(status)) { goto done; } - assert(!_PyErr_Occurred(tstate)); + status = pycore_init_builtins(tstate); + if (_PyStatus_EXCEPTION(status)) { + goto done; + } - const PyConfig *config = _PyInterpreterState_GetConfig(tstate->interp); + const PyConfig *config = _PyInterpreterState_GetConfig(interp); if (config->_install_importlib) { /* This call sets up builtin and frozen import support */ if (init_importlib(tstate, sysmod) < 0) { From webhook-mailer at python.org Fri Apr 2 09:45:45 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 02 Apr 2021 13:45:45 -0000 Subject: [Python-checkins] bpo-43688: Support the limited C API in debug mode (GH-25131) Message-ID: https://github.com/python/cpython/commit/3359cab038968935b40344fad7c30d211f9692e4 commit: 3359cab038968935b40344fad7c30d211f9692e4 branch: master author: Victor Stinner committer: vstinner date: 2021-04-02T15:45:37+02:00 summary: bpo-43688: Support the limited C API in debug mode (GH-25131) The limited C API is now supported if Python is built in debug mode (if the Py_DEBUG macro is defined). In the limited C API, the Py_INCREF() and Py_DECREF() functions are now implemented as opaque function calls, rather than accessing directly the PyObject.ob_refcnt member, if Python is built in debug mode and the Py_LIMITED_API macro targets Python 3.10 or newer. It became possible to support the limited C API in debug mode because the PyObject structure is the same in release and debug mode since Python 3.8 (see bpo-36465). The limited C API is still not supported in the --with-trace-refs special build (Py_TRACE_REFS macro). files: A Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst M Doc/whatsnew/3.10.rst M Include/object.h M Objects/object.c M PC/python3dll.c M setup.py diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index a8ff56745c758..b84bcf93edb1e 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1315,6 +1315,18 @@ New Features to simulate. (Contributed by Antoine Pitrou in :issue:`43356`.) +* The limited C API is now supported if Python is built in debug mode (if the + ``Py_DEBUG`` macro is defined). In the limited C API, the :c:func:`Py_INCREF` + and :c:func:`Py_DECREF` functions are now implemented as opaque function + calls, rather than accessing directly the :c:member:`PyObject.ob_refcnt` + member, if Python is built in debug mode and the ``Py_LIMITED_API`` macro + targets Python 3.10 or newer. It became possible to support the limited C API + in debug mode because the :c:type:`PyObject` structure is the same in release + and debug mode since Python 3.8 (see :issue:`36465`). + + The limited C API is still not supported in the ``--with-trace-refs`` special + build (``Py_TRACE_REFS`` macro). + (Contributed by Victor Stinner in :issue:`43688`.) Porting to Python 3.10 ---------------------- diff --git a/Include/object.h b/Include/object.h index 14545839341f4..3138db0a0a3e4 100644 --- a/Include/object.h +++ b/Include/object.h @@ -54,11 +54,11 @@ whose size is determined when the object is allocated. /* Py_DEBUG implies Py_REF_DEBUG. */ #if defined(Py_DEBUG) && !defined(Py_REF_DEBUG) -#define Py_REF_DEBUG +# define Py_REF_DEBUG #endif -#if defined(Py_LIMITED_API) && defined(Py_REF_DEBUG) -#error Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, and Py_REF_DEBUG +#if defined(Py_LIMITED_API) && defined(Py_TRACE_REFS) +# error Py_LIMITED_API is incompatible with Py_TRACE_REFS #endif /* PyTypeObject structure is defined in cpython/object.h. @@ -74,8 +74,8 @@ typedef struct _typeobject PyTypeObject; #define _PyObject_EXTRA_INIT 0, 0, #else -#define _PyObject_HEAD_EXTRA -#define _PyObject_EXTRA_INIT +# define _PyObject_HEAD_EXTRA +# define _PyObject_EXTRA_INIT #endif /* PyObject_HEAD defines the initial segment of every PyObject. */ @@ -427,21 +427,46 @@ PyAPI_FUNC(void) _Py_NegativeRefcount(const char *filename, int lineno, PyAPI_FUNC(void) _Py_Dealloc(PyObject *); +/* +These are provided as conveniences to Python runtime embedders, so that +they can have object code that is not dependent on Python compilation flags. +*/ +PyAPI_FUNC(void) Py_IncRef(PyObject *); +PyAPI_FUNC(void) Py_DecRef(PyObject *); + +// Similar to Py_IncRef() and Py_DecRef() but the argument must be non-NULL. +// Private functions used by Py_INCREF() and Py_DECREF(). +PyAPI_FUNC(void) _Py_IncRef(PyObject *); +PyAPI_FUNC(void) _Py_DecRef(PyObject *); + static inline void _Py_INCREF(PyObject *op) { +#if defined(Py_REF_DEBUG) && defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000 + // Stable ABI for Python 3.10 built in debug mode. + _Py_IncRef(op); +#else + // Non-limited C API and limited C API for Python 3.9 and older access + // directly PyObject.ob_refcnt. #ifdef Py_REF_DEBUG _Py_RefTotal++; #endif op->ob_refcnt++; +#endif } #define Py_INCREF(op) _Py_INCREF(_PyObject_CAST(op)) static inline void _Py_DECREF( -#ifdef Py_REF_DEBUG +#if defined(Py_REF_DEBUG) && !(defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000) const char *filename, int lineno, #endif PyObject *op) { +#if defined(Py_REF_DEBUG) && defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000 + // Stable ABI for Python 3.10 built in debug mode. + _Py_DecRef(op); +#else + // Non-limited C API and limited C API for Python 3.9 and older access + // directly PyObject.ob_refcnt. #ifdef Py_REF_DEBUG _Py_RefTotal--; #endif @@ -455,8 +480,9 @@ static inline void _Py_DECREF( else { _Py_Dealloc(op); } +#endif } -#ifdef Py_REF_DEBUG +#if defined(Py_REF_DEBUG) && !(defined(Py_LIMITED_API) && Py_LIMITED_API+0 >= 0x030A0000) # define Py_DECREF(op) _Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op)) #else # define Py_DECREF(op) _Py_DECREF(_PyObject_CAST(op)) @@ -525,13 +551,6 @@ static inline void _Py_XDECREF(PyObject *op) #define Py_XDECREF(op) _Py_XDECREF(_PyObject_CAST(op)) -/* -These are provided as conveniences to Python runtime embedders, so that -they can have object code that is not dependent on Python compilation flags. -*/ -PyAPI_FUNC(void) Py_IncRef(PyObject *); -PyAPI_FUNC(void) Py_DecRef(PyObject *); - // Create a new strong reference to an object: // increment the reference count of the object and return the object. PyAPI_FUNC(PyObject*) Py_NewRef(PyObject *obj); diff --git a/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst b/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst new file mode 100644 index 0000000000000..6b1d44ee17686 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst @@ -0,0 +1,13 @@ +The limited C API is now supported if Python is built in debug mode (if the +``Py_DEBUG`` macro is defined). In the limited C API, the :c:func:`Py_INCREF` +and :c:func:`Py_DECREF` functions are now implemented as opaque function calls, +rather than accessing directly the :c:member:`PyObject.ob_refcnt` member, if +Python is built in debug mode and the ``Py_LIMITED_API`` macro targets Python +3.10 or newer. It became possible to support the limited C API in debug mode +because the :c:type:`PyObject` structure is the same in release and debug mode +since Python 3.8 (see :issue:`36465`). + +The limited C API is still not supported in the ``--with-trace-refs`` special +build (``Py_TRACE_REFS`` macro). + +Patch by Victor Stinner. diff --git a/Objects/object.c b/Objects/object.c index 0a8621b3503b3..0845966c5fe9d 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -13,6 +13,11 @@ #include "frameobject.h" #include "interpreteridobject.h" +#ifdef Py_LIMITED_API + // Prevent recursive call _Py_IncRef() <=> Py_INCREF() +# error "Py_LIMITED_API macro must not be defined" +#endif + #ifdef __cplusplus extern "C" { #endif @@ -136,6 +141,18 @@ Py_DecRef(PyObject *o) Py_XDECREF(o); } +void +_Py_IncRef(PyObject *o) +{ + Py_INCREF(o); +} + +void +_Py_DecRef(PyObject *o) +{ + Py_DECREF(o); +} + PyObject * PyObject_Init(PyObject *op, PyTypeObject *tp) { diff --git a/PC/python3dll.c b/PC/python3dll.c index 1567ac159168a..b5735e81e81ae 100644 --- a/PC/python3dll.c +++ b/PC/python3dll.c @@ -36,6 +36,8 @@ EXPORT_FUNC(_PyTrash_deposit_object) EXPORT_FUNC(_PyTrash_destroy_chain) EXPORT_FUNC(_PyTrash_thread_deposit_object) EXPORT_FUNC(_PyTrash_thread_destroy_chain) +EXPORT_FUNC(_Py_IncRef) +EXPORT_FUNC(_Py_DecRef) EXPORT_FUNC(Py_AddPendingCall) EXPORT_FUNC(Py_AtExit) EXPORT_FUNC(Py_BuildValue) diff --git a/setup.py b/setup.py index 75bd16375063a..3b4e7ae70a4ec 100644 --- a/setup.py +++ b/setup.py @@ -1864,17 +1864,11 @@ def detect_modules(self): ## # Uncomment these lines if you want to play with xxmodule.c ## self.add(Extension('xx', ['xxmodule.c'])) - if 'd' not in sysconfig.get_config_var('ABIFLAGS'): - # Non-debug mode: Build xxlimited with limited API - self.add(Extension('xxlimited', ['xxlimited.c'], - define_macros=[('Py_LIMITED_API', '0x030a0000')])) - self.add(Extension('xxlimited_35', ['xxlimited_35.c'], - define_macros=[('Py_LIMITED_API', '0x03050000')])) - else: - # Debug mode: Build xxlimited with the full API - # (which is compatible with the limited one) - self.add(Extension('xxlimited', ['xxlimited.c'])) - self.add(Extension('xxlimited_35', ['xxlimited_35.c'])) + # Limited C API + self.add(Extension('xxlimited', ['xxlimited.c'], + define_macros=[('Py_LIMITED_API', '0x030a0000')])) + self.add(Extension('xxlimited_35', ['xxlimited_35.c'], + define_macros=[('Py_LIMITED_API', '0x03050000')])) def detect_tkinter_fromenv(self): # Build _tkinter using the Tcl/Tk locations specified by From webhook-mailer at python.org Fri Apr 2 10:46:17 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 02 Apr 2021 14:46:17 -0000 Subject: [Python-checkins] bpo-43688: Support "make regen-limited-abi" in debug mode (GH-25133) Message-ID: https://github.com/python/cpython/commit/9bb5658bd122d40fff9f34a912be3297b303d18b commit: 9bb5658bd122d40fff9f34a912be3297b303d18b branch: master author: Victor Stinner committer: vstinner date: 2021-04-02T16:46:08+02:00 summary: bpo-43688: Support "make regen-limited-abi" in debug mode (GH-25133) files: M Tools/scripts/stable_abi.py diff --git a/Tools/scripts/stable_abi.py b/Tools/scripts/stable_abi.py index 14fcf2f56a207..1690cfce1727d 100755 --- a/Tools/scripts/stable_abi.py +++ b/Tools/scripts/stable_abi.py @@ -91,11 +91,6 @@ def check_library(stable_abi_file, library, abi_funcs, dynamic=False): def generate_limited_api_symbols(args): - if hasattr(sys, "gettotalrefcount"): - print( - "Stable ABI symbols cannot be generated from a debug build", file=sys.stderr - ) - sys.exit(1) library = sysconfig.get_config_var("LIBRARY") ldlibrary = sysconfig.get_config_var("LDLIBRARY") if ldlibrary != library: From webhook-mailer at python.org Fri Apr 2 10:48:20 2021 From: webhook-mailer at python.org (vstinner) Date: Fri, 02 Apr 2021 14:48:20 -0000 Subject: [Python-checkins] bpo-41111: xxlimited.c defines Py_LIMITED_API (GH-25151) Message-ID: https://github.com/python/cpython/commit/240bcf82a11fe7433a61da70605e924c53b88096 commit: 240bcf82a11fe7433a61da70605e924c53b88096 branch: master author: Victor Stinner committer: vstinner date: 2021-04-02T16:48:11+02:00 summary: bpo-41111: xxlimited.c defines Py_LIMITED_API (GH-25151) xxlimited.c and xxlimited_35.c now define the Py_LIMITED_API macro, rather than having to do it in the build recipe. Co-authored-by: Hai Shi files: M Modules/xxlimited.c M Modules/xxlimited_35.c M PCbuild/xxlimited.vcxproj M PCbuild/xxlimited_35.vcxproj M setup.py diff --git a/Modules/xxlimited.c b/Modules/xxlimited.c index 883c8a9b5e183..c3d98d34eb591 100644 --- a/Modules/xxlimited.c +++ b/Modules/xxlimited.c @@ -55,6 +55,8 @@ pass */ +#define Py_LIMITED_API 0x030a0000 + #include "Python.h" // Module state diff --git a/Modules/xxlimited_35.c b/Modules/xxlimited_35.c index ce96e8c90efd4..5e93854f68571 100644 --- a/Modules/xxlimited_35.c +++ b/Modules/xxlimited_35.c @@ -5,10 +5,12 @@ * See the xxlimited module for an extension module template. */ -/* Xxo objects */ +#define Py_LIMITED_API 0x03050000 #include "Python.h" +/* Xxo objects */ + static PyObject *ErrorObject; typedef struct { diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj index 61e4e5784e7ab..1c776fb0da3e7 100644 --- a/PCbuild/xxlimited.vcxproj +++ b/PCbuild/xxlimited.vcxproj @@ -93,9 +93,6 @@ <_ProjectFileVersion>10.0.30319.1 - - %(PreprocessorDefinitions);Py_LIMITED_API=0x030A0000 - wsock32.lib;%(AdditionalDependencies) diff --git a/PCbuild/xxlimited_35.vcxproj b/PCbuild/xxlimited_35.vcxproj index 7e49eadf9037d..dd830b3b6aaa9 100644 --- a/PCbuild/xxlimited_35.vcxproj +++ b/PCbuild/xxlimited_35.vcxproj @@ -93,9 +93,6 @@ <_ProjectFileVersion>10.0.30319.1 - - %(PreprocessorDefinitions);Py_LIMITED_API=0x03060000 - wsock32.lib;%(AdditionalDependencies) diff --git a/setup.py b/setup.py index 3b4e7ae70a4ec..edf3cb4f230b5 100644 --- a/setup.py +++ b/setup.py @@ -1865,10 +1865,8 @@ def detect_modules(self): ## self.add(Extension('xx', ['xxmodule.c'])) # Limited C API - self.add(Extension('xxlimited', ['xxlimited.c'], - define_macros=[('Py_LIMITED_API', '0x030a0000')])) - self.add(Extension('xxlimited_35', ['xxlimited_35.c'], - define_macros=[('Py_LIMITED_API', '0x03050000')])) + self.add(Extension('xxlimited', ['xxlimited.c'])) + self.add(Extension('xxlimited_35', ['xxlimited_35.c'])) def detect_tkinter_fromenv(self): # Build _tkinter using the Tcl/Tk locations specified by From webhook-mailer at python.org Fri Apr 2 11:28:50 2021 From: webhook-mailer at python.org (corona10) Date: Fri, 02 Apr 2021 15:28:50 -0000 Subject: [Python-checkins] bpo-31956: Add start and stop parameters to array.index() (GH-25059) Message-ID: https://github.com/python/cpython/commit/afd12650580725ac598b2845384771c14c4f952e commit: afd12650580725ac598b2845384771c14c4f952e branch: master author: Zackery Spytz committer: corona10 date: 2021-04-03T00:28:35+09:00 summary: bpo-31956: Add start and stop parameters to array.index() (GH-25059) Co-Authored-By: Anders Lorentsen files: A Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst M Doc/library/array.rst M Doc/whatsnew/3.10.rst M Lib/test/test_array.py M Modules/arraymodule.c M Modules/clinic/arraymodule.c.h diff --git a/Doc/library/array.rst b/Doc/library/array.rst index ff3ec6b1fd723..18a768d7de26c 100644 --- a/Doc/library/array.rst +++ b/Doc/library/array.rst @@ -178,11 +178,15 @@ The following data items and methods are also supported: array of some other type. -.. method:: array.index(x) +.. method:: array.index(x[, start[, stop]]) Return the smallest *i* such that *i* is the index of the first occurrence of - *x* in the array. + *x* in the array. The optional arguments *start* and *stop* can be + specified to search for *x* within a subsection of the array. Raise + :exc:`ValueError` if *x* is not found. + .. versionchanged:: 3.10 + Added optional *start* and *stop* parameters. .. method:: array.insert(i, x) diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index b84bcf93edb1e..eb42480756241 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -633,6 +633,13 @@ argparse Misleading phrase "optional arguments" was replaced with "options" in argparse help. Some tests might require adaptation if they rely on exact output match. (Contributed by Raymond Hettinger in :issue:`9694`.) +array +----- + +The :meth:`~array.array.index` method of :class:`array.array` now has +optional *start* and *stop* parameters. +(Contributed by Anders Lorentsen and Zackery Spytz in :issue:`31956`.) + base64 ------ diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 77a0c64a88e6c..bdcd1254b304f 100644 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -918,6 +918,17 @@ def test_index(self): self.assertRaises(ValueError, a.index, None) self.assertRaises(ValueError, a.index, self.outside) + a = array.array('i', [-2, -1, 0, 0, 1, 2]) + self.assertEqual(a.index(0), 2) + self.assertEqual(a.index(0, 2), 2) + self.assertEqual(a.index(0, -4), 2) + self.assertEqual(a.index(-2, -10), 0) + self.assertEqual(a.index(0, 3), 3) + self.assertEqual(a.index(0, -3), 3) + self.assertEqual(a.index(0, 3, 4), 3) + self.assertEqual(a.index(0, -3, -2), 3) + self.assertRaises(ValueError, a.index, 2, 0, -10) + def test_count(self): example = 2*self.example a = array.array(self.typecode, example) diff --git a/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst b/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst new file mode 100644 index 0000000000000..5285fd38ebb8a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst @@ -0,0 +1,2 @@ +The :meth:`~array.array.index` method of :class:`array.array` now has +optional *start* and *stop* parameters. diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index e7d5ab77a6d5c..fb9ebbe9f4870 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1136,18 +1136,32 @@ array_array_count(arrayobject *self, PyObject *v) array.array.index v: object + start: slice_index(accept={int}) = 0 + stop: slice_index(accept={int}, c_default="PY_SSIZE_T_MAX") = sys.maxsize / Return index of first occurrence of v in the array. + +Raise ValueError if the value is not present. [clinic start generated code]*/ static PyObject * -array_array_index(arrayobject *self, PyObject *v) -/*[clinic end generated code: output=d48498d325602167 input=cf619898c6649d08]*/ -{ - Py_ssize_t i; - - for (i = 0; i < Py_SIZE(self); i++) { +array_array_index_impl(arrayobject *self, PyObject *v, Py_ssize_t start, + Py_ssize_t stop) +/*[clinic end generated code: output=c45e777880c99f52 input=089dff7baa7e5a7e]*/ +{ + if (start < 0) { + start += Py_SIZE(self); + if (start < 0) { + start = 0; + } + } + if (stop < 0) { + stop += Py_SIZE(self); + } + // Use Py_SIZE() for every iteration in case the array is mutated + // during PyObject_RichCompareBool() + for (Py_ssize_t i = start; i < stop && i < Py_SIZE(self); i++) { PyObject *selfi; int cmp; diff --git a/Modules/clinic/arraymodule.c.h b/Modules/clinic/arraymodule.c.h index d0b70c46ff570..d2513eb4f48cf 100644 --- a/Modules/clinic/arraymodule.c.h +++ b/Modules/clinic/arraymodule.c.h @@ -39,13 +39,50 @@ PyDoc_STRVAR(array_array_count__doc__, {"count", (PyCFunction)array_array_count, METH_O, array_array_count__doc__}, PyDoc_STRVAR(array_array_index__doc__, -"index($self, v, /)\n" +"index($self, v, start=0, stop=sys.maxsize, /)\n" "--\n" "\n" -"Return index of first occurrence of v in the array."); +"Return index of first occurrence of v in the array.\n" +"\n" +"Raise ValueError if the value is not present."); #define ARRAY_ARRAY_INDEX_METHODDEF \ - {"index", (PyCFunction)array_array_index, METH_O, array_array_index__doc__}, + {"index", (PyCFunction)(void(*)(void))array_array_index, METH_FASTCALL, array_array_index__doc__}, + +static PyObject * +array_array_index_impl(arrayobject *self, PyObject *v, Py_ssize_t start, + Py_ssize_t stop); + +static PyObject * +array_array_index(arrayobject *self, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *v; + Py_ssize_t start = 0; + Py_ssize_t stop = PY_SSIZE_T_MAX; + + if (!_PyArg_CheckPositional("index", nargs, 1, 3)) { + goto exit; + } + v = args[0]; + if (nargs < 2) { + goto skip_optional; + } + if (!_PyEval_SliceIndexNotNone(args[1], &start)) { + goto exit; + } + if (nargs < 3) { + goto skip_optional; + } + if (!_PyEval_SliceIndexNotNone(args[2], &stop)) { + goto exit; + } +skip_optional: + return_value = array_array_index_impl(self, v, start, stop); + +exit: + return return_value; +} PyDoc_STRVAR(array_array_remove__doc__, "remove($self, v, /)\n" @@ -535,4 +572,4 @@ PyDoc_STRVAR(array_arrayiterator___setstate____doc__, #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \ {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__}, -/*[clinic end generated code: output=a7f71a18b994c88f input=a9049054013a1b77]*/ +/*[clinic end generated code: output=376001addedc67ee input=a9049054013a1b77]*/ From webhook-mailer at python.org Fri Apr 2 12:15:37 2021 From: webhook-mailer at python.org (gvanrossum) Date: Fri, 02 Apr 2021 16:15:37 -0000 Subject: [Python-checkins] bpo-24160: Fix breakpoints persistence across multiple pdb sessions (GH-21989) Message-ID: https://github.com/python/cpython/commit/ad442a674ca443feec43a88a2d3671784712e550 commit: ad442a674ca443feec43a88a2d3671784712e550 branch: master author: Irit Katriel committer: gvanrossum date: 2021-04-02T09:15:21-07:00 summary: bpo-24160: Fix breakpoints persistence across multiple pdb sessions (GH-21989) files: A Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst M Lib/bdb.py M Lib/test/test_bdb.py M Lib/test/test_pdb.py diff --git a/Lib/bdb.py b/Lib/bdb.py index b18a0612d8c78..abb50c092e69b 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -34,6 +34,8 @@ def __init__(self, skip=None): self.fncache = {} self.frame_returning = None + self._load_breaks() + def canonic(self, filename): """Return canonical form of filename. @@ -365,6 +367,12 @@ def set_quit(self): # Call self.get_*break*() to see the breakpoints or better # for bp in Breakpoint.bpbynumber: if bp: bp.bpprint(). + def _add_to_breaks(self, filename, lineno): + """Add breakpoint to breaks, if not already there.""" + bp_linenos = self.breaks.setdefault(filename, []) + if lineno not in bp_linenos: + bp_linenos.append(lineno) + def set_break(self, filename, lineno, temporary=False, cond=None, funcname=None): """Set a new breakpoint for filename:lineno. @@ -377,12 +385,21 @@ def set_break(self, filename, lineno, temporary=False, cond=None, line = linecache.getline(filename, lineno) if not line: return 'Line %s:%d does not exist' % (filename, lineno) - list = self.breaks.setdefault(filename, []) - if lineno not in list: - list.append(lineno) + self._add_to_breaks(filename, lineno) bp = Breakpoint(filename, lineno, temporary, cond, funcname) return None + def _load_breaks(self): + """Apply all breakpoints (set in other instances) to this one. + + Populates this instance's breaks list from the Breakpoint class's + list, which can have breakpoints set by another Bdb instance. This + is necessary for interactive sessions to keep the breakpoints + active across multiple calls to run(). + """ + for (filename, lineno) in Breakpoint.bplist.keys(): + self._add_to_breaks(filename, lineno) + def _prune_breaks(self, filename, lineno): """Prune breakpoints for filename:lineno. @@ -681,6 +698,12 @@ def __init__(self, file, line, temporary=False, cond=None, funcname=None): else: self.bplist[file, line] = [self] + @staticmethod + def clearBreakpoints(): + Breakpoint.next = 1 + Breakpoint.bplist = {} + Breakpoint.bpbynumber = [None] + def deleteMe(self): """Delete the breakpoint from the list associated to a file:line. diff --git a/Lib/test/test_bdb.py b/Lib/test/test_bdb.py index 71be069d2412c..398698c79c16d 100644 --- a/Lib/test/test_bdb.py +++ b/Lib/test/test_bdb.py @@ -74,9 +74,7 @@ class BdbNotExpectedError(BdbException): """Unexpected result.""" dry_run = 0 def reset_Breakpoint(): - _bdb.Breakpoint.next = 1 - _bdb.Breakpoint.bplist = {} - _bdb.Breakpoint.bpbynumber = [None] + _bdb.Breakpoint.clearBreakpoints() def info_breakpoints(): bp_list = [bp for bp in _bdb.Breakpoint.bpbynumber if bp] @@ -951,6 +949,49 @@ def test_clear_at_no_bp(self): with TracerRun(self) as tracer: self.assertRaises(BdbError, tracer.runcall, tfunc_import) + def test_load_bps_from_previous_Bdb_instance(self): + reset_Breakpoint() + db1 = Bdb() + fname = db1.canonic(__file__) + db1.set_break(__file__, 1) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + + db2 = Bdb() + db2.set_break(__file__, 2) + db2.set_break(__file__, 3) + db2.set_break(__file__, 4) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [1, 2, 3, 4]}) + db2.clear_break(__file__, 1) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [2, 3, 4]}) + + db3 = Bdb() + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [2, 3, 4]}) + self.assertEqual(db3.get_all_breaks(), {fname: [2, 3, 4]}) + db2.clear_break(__file__, 2) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [3, 4]}) + self.assertEqual(db3.get_all_breaks(), {fname: [2, 3, 4]}) + + db4 = Bdb() + db4.set_break(__file__, 5) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [3, 4]}) + self.assertEqual(db3.get_all_breaks(), {fname: [2, 3, 4]}) + self.assertEqual(db4.get_all_breaks(), {fname: [3, 4, 5]}) + reset_Breakpoint() + + db5 = Bdb() + db5.set_break(__file__, 6) + self.assertEqual(db1.get_all_breaks(), {fname: [1]}) + self.assertEqual(db2.get_all_breaks(), {fname: [3, 4]}) + self.assertEqual(db3.get_all_breaks(), {fname: [2, 3, 4]}) + self.assertEqual(db4.get_all_breaks(), {fname: [3, 4, 5]}) + self.assertEqual(db5.get_all_breaks(), {fname: [6]}) + + class RunTestCase(BaseTestCase): """Test run, runeval and set_trace.""" diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index d5abc3f95daca..98e2b937d1339 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -213,6 +213,9 @@ def test_pdb_basic_commands(): BAZ """ +def reset_Breakpoint(): + import bdb + bdb.Breakpoint.clearBreakpoints() def test_pdb_breakpoint_commands(): """Test basic commands related to breakpoints. @@ -227,10 +230,7 @@ def test_pdb_breakpoint_commands(): First, need to clear bdb state that might be left over from previous tests. Otherwise, the new breakpoints might get assigned different numbers. - >>> from bdb import Breakpoint - >>> Breakpoint.next = 1 - >>> Breakpoint.bplist = {} - >>> Breakpoint.bpbynumber = [None] + >>> reset_Breakpoint() Now test the breakpoint commands. NORMALIZE_WHITESPACE is needed because the breakpoint list outputs a tab for the "stop only" and "ignore next" @@ -323,6 +323,72 @@ def test_pdb_breakpoint_commands(): 4 """ +def test_pdb_breakpoints_preserved_across_interactive_sessions(): + """Breakpoints are remembered between interactive sessions + + >>> reset_Breakpoint() + >>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE + ... 'import test.test_pdb', + ... 'break test.test_pdb.do_something', + ... 'break test.test_pdb.do_nothing', + ... 'break', + ... 'continue', + ... ]): + ... pdb.run('print()') + > (1)() + (Pdb) import test.test_pdb + (Pdb) break test.test_pdb.do_something + Breakpoint 1 at ...test_pdb.py:... + (Pdb) break test.test_pdb.do_nothing + Breakpoint 2 at ...test_pdb.py:... + (Pdb) break + Num Type Disp Enb Where + 1 breakpoint keep yes at ...test_pdb.py:... + 2 breakpoint keep yes at ...test_pdb.py:... + (Pdb) continue + + >>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE + ... 'break', + ... 'break pdb.find_function', + ... 'break', + ... 'clear 1', + ... 'continue', + ... ]): + ... pdb.run('print()') + > (1)() + (Pdb) break + Num Type Disp Enb Where + 1 breakpoint keep yes at ...test_pdb.py:... + 2 breakpoint keep yes at ...test_pdb.py:... + (Pdb) break pdb.find_function + Breakpoint 3 at ...pdb.py:94 + (Pdb) break + Num Type Disp Enb Where + 1 breakpoint keep yes at ...test_pdb.py:... + 2 breakpoint keep yes at ...test_pdb.py:... + 3 breakpoint keep yes at ...pdb.py:... + (Pdb) clear 1 + Deleted breakpoint 1 at ...test_pdb.py:... + (Pdb) continue + + >>> with PdbTestInput([ # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE + ... 'break', + ... 'clear 2', + ... 'clear 3', + ... 'continue', + ... ]): + ... pdb.run('print()') + > (1)() + (Pdb) break + Num Type Disp Enb Where + 2 breakpoint keep yes at ...test_pdb.py:... + 3 breakpoint keep yes at ...pdb.py:... + (Pdb) clear 2 + Deleted breakpoint 2 at ...test_pdb.py:... + (Pdb) clear 3 + Deleted breakpoint 3 at ...pdb.py:... + (Pdb) continue + """ def do_nothing(): pass @@ -699,8 +765,7 @@ def test_next_until_return_at_return_event(): ... test_function_2() ... end = 1 - >>> from bdb import Breakpoint - >>> Breakpoint.next = 1 + >>> reset_Breakpoint() >>> with PdbTestInput(['break test_function_2', ... 'continue', ... 'return', @@ -1137,7 +1202,7 @@ def test_pdb_next_command_in_generator_for_loop(): > (3)test_function() -> for i in test_gen(): (Pdb) break test_gen - Breakpoint 6 at :1 + Breakpoint 1 at :1 (Pdb) continue > (2)test_gen() -> yield 0 @@ -1213,6 +1278,7 @@ def test_pdb_issue_20766(): ... print('pdb %d: %s' % (i, sess._previous_sigint_handler)) ... i += 1 + >>> reset_Breakpoint() >>> with PdbTestInput(['continue', ... 'continue']): ... test_function() diff --git a/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst b/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst new file mode 100644 index 0000000000000..c0cfd87b878af --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst @@ -0,0 +1 @@ +Fixed bug where breakpoints did not persist across multiple debugger sessions in :mod:`pdb`'s interactive mode. From webhook-mailer at python.org Fri Apr 2 13:37:25 2021 From: webhook-mailer at python.org (ambv) Date: Fri, 02 Apr 2021 17:37:25 -0000 Subject: [Python-checkins] Python 3.8.9 Message-ID: https://github.com/python/cpython/commit/a743f8192b3b322b2c23b13926f1c7f288cb2206 commit: a743f8192b3b322b2c23b13926f1c7f288cb2206 branch: 3.8 author: ?ukasz Langa committer: ambv date: 2021-04-02T12:32:10+02:00 summary: Python 3.8.9 files: A Misc/NEWS.d/3.8.9.rst D Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst D Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst D Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst D Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst D Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst D Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst D Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst D Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst D Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst D Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst D Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst D Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst D Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst D Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst D Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst D Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst D Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst D Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst D Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst D Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst D Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst D Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst D Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index e96ee8266fbce..38ffec2854ac4 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 8 -#define PY_MICRO_VERSION 8 +#define PY_MICRO_VERSION 9 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.8.8+" +#define PY_VERSION "3.8.9" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index 475c256be57a2..2a16970b87129 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Fri Feb 19 11:26:48 2021 +# Autogenerated by Sphinx on Fri Apr 2 12:30:35 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5003,9 +5003,11 @@ '"Formatter",\n' 'subclasses can define their own format string syntax). The ' 'syntax is\n' - 'related to that of formatted string literals, but there ' - 'are\n' - 'differences.\n' + 'related to that of formatted string literals, but it is ' + 'less\n' + 'sophisticated and, in particular, does not support ' + 'arbitrary\n' + 'expressions.\n' '\n' 'Format strings contain ?replacement fields? surrounded by ' 'curly braces\n' diff --git a/Misc/NEWS.d/3.8.9.rst b/Misc/NEWS.d/3.8.9.rst new file mode 100644 index 0000000000000..10d498cb41d4b --- /dev/null +++ b/Misc/NEWS.d/3.8.9.rst @@ -0,0 +1,276 @@ +.. bpo: 42988 +.. date: 2021-03-24-14-16-56 +.. nonce: P2aNco +.. release date: 2021-04-02 +.. section: Security + +CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module +which could be abused to read arbitrary files on the disk (directory +traversal vulnerability). Moreover, even source code of Python modules can +contain sensitive data like passwords. Vulnerability reported by David +Schw?rer. + +.. + +.. bpo: 43285 +.. date: 2021-03-13-03-48-14 +.. nonce: g-Hah3 +.. section: Security + +:mod:`ftplib` no longer trusts the IP address value returned from the server +in response to the PASV command by default. This prevents a malicious FTP +server from using the response to probe IPv4 address and port combinations +on the client network. + +Code that requires the former vulnerable behavior may set a +``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` +instances to ``True`` to re-enable it. + +.. + +.. bpo: 43439 +.. date: 2021-03-08-23-06-07 +.. nonce: 5U3lXm +.. section: Security + +Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and +:func:`gc.get_referents`. Patch by Pablo Galindo. + +.. + +.. bpo: 43660 +.. date: 2021-03-29-19-50-34 +.. nonce: scTgag +.. section: Core and Builtins + +Fix crash that happens when replacing ``sys.stderr`` with a callable that +can remove the object while an exception is being printed. Patch by Pablo +Galindo. + +.. + +.. bpo: 35883 +.. date: 2021-03-13-13-57-21 +.. nonce: UyGpdG +.. section: Core and Builtins + +Python no longer fails at startup with a fatal error if a command line +argument contains an invalid Unicode character. The +:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be +decoded as Unicode characters outside the [U+0000; U+10ffff] range. + +.. + +.. bpo: 43406 +.. date: 2021-03-04-22-53-10 +.. nonce: Na_VpA +.. section: Core and Builtins + +Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute +a non-Python signal handler. + +.. + +.. bpo: 35930 +.. date: 2021-03-23-17-18-56 +.. nonce: RZ51pM +.. section: Library + +Raising an exception raised in a "future" instance will create reference +cycles. + +.. + +.. bpo: 43577 +.. date: 2021-03-21-10-13-17 +.. nonce: m7JnAV +.. section: Library + +Fix deadlock when using :class:`ssl.SSLContext` debug callback with +:meth:`ssl.SSLContext.sni_callback`. + +.. + +.. bpo: 43423 +.. date: 2021-03-11-15-44-18 +.. nonce: rRomRD +.. section: Library + +:func:`subprocess.communicate` no longer raises an IndexError when there is +an empty stdout or stderr IO buffer during a timeout on Windows. + +.. + +.. bpo: 27820 +.. date: 2021-03-10-14-07-44 +.. nonce: Wwdy-r +.. section: Library + +Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with +initial_response_ok=False will fail. + +The cause is that SMTP.auth_login _always_ returns a password if provided +with a challenge string, thus non-compliant with the standard for AUTH +LOGIN. + +Also fixes bug with the test for smtpd. + +.. + +.. bpo: 43399 +.. date: 2021-03-04-17-53-46 +.. nonce: Wn95u- +.. section: Library + +Fix ``ElementTree.extend`` not working on iterators when using the Python +implementation + +.. + +.. bpo: 43316 +.. date: 2021-02-25-09-44-36 +.. nonce: k9Gyqn +.. section: Library + +The ``python -m gzip`` command line application now properly fails when +detecting an unsupported extension. It exits with a non-zero exit code and +prints an error message to stderr. + +.. + +.. bpo: 43260 +.. date: 2021-02-20-12-15-29 +.. nonce: 6znAas +.. section: Library + +Fix TextIOWrapper can not flush internal buffer forever after very large +text is written. + +.. + +.. bpo: 42782 +.. date: 2020-12-29-13-46-57 +.. nonce: 3r0HFY +.. section: Library + +Fail fast in :func:`shutil.move()` to avoid creating destination directories +on failure. + +.. + +.. bpo: 37193 +.. date: 2020-06-12-21-23-20 +.. nonce: wJximU +.. section: Library + +Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced in Python +3.7. + +.. + +.. bpo: 43199 +.. date: 2021-03-13-18-43-54 +.. nonce: ZWA6KX +.. section: Documentation + +Answer "Why is there no goto?" in the Design and History FAQ. + +.. + +.. bpo: 43407 +.. date: 2021-03-04-22-53-03 +.. nonce: x570l5 +.. section: Documentation + +Clarified that a result from :func:`time.monotonic`, +:func:`time.perf_counter`, :func:`time.process_time`, or +:func:`time.thread_time` can be compared with the result from any following +call to the same function - not just the next immediate call. + +.. + +.. bpo: 27646 +.. date: 2021-02-20-00-09-13 +.. nonce: HRsmo- +.. section: Documentation + +Clarify that 'yield from ' works with any iterable, not just +iterators. + +.. + +.. bpo: 36346 +.. date: 2020-06-15-10-45-45 +.. nonce: H0sS_i +.. section: Documentation + +Update some deprecated unicode APIs which are documented as "will be removed +in 4.0" to "3.12". See :pep:`623` for detail. + +.. + +.. bpo: 37945 +.. date: 2021-03-31-11-38-42 +.. nonce: HTUYhv +.. section: Tests + +Fix test_getsetlocale_issue1813() of test_locale: skip the test if +``setlocale()`` fails. Patch by Victor Stinner. + +.. + +.. bpo: 41561 +.. date: 2021-03-18-10-34-42 +.. nonce: pDg4w- +.. section: Tests + +Add workaround for Ubuntu's custom OpenSSL security level policy. + +.. + +.. bpo: 43631 +.. date: 2021-03-26-09-16-34 +.. nonce: msJyPi +.. section: Build + +Update macOS, Windows, and CI to OpenSSL 1.1.1k. + +.. + +.. bpo: 43617 +.. date: 2021-03-24-16-55-55 +.. nonce: d69KAv +.. section: Build + +Improve configure.ac: Check for presence of autoconf-archive package and +remove our copies of M4 macros. + +.. + +.. bpo: 41837 +.. date: 2021-02-28-22-49-46 +.. nonce: 9fqyXC +.. section: macOS + +Update macOS installer build to use OpenSSL 1.1.1j. + +.. + +.. bpo: 42225 +.. date: 2021-03-29-16-22-27 +.. nonce: iIeiLg +.. section: IDLE + +Document that IDLE can fail on Unix either from misconfigured IP masquerage +rules or failure displaying complex colored (non-ascii) characters. + +.. + +.. bpo: 43283 +.. date: 2021-02-21-16-30-10 +.. nonce: DLBwYn +.. section: IDLE + +Document why printing to IDLE's Shell is often slower than printing to a +system terminal and that it can be made faster by pre-formatting a single +string before printing. diff --git a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst b/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst deleted file mode 100644 index 26783963c8679..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve configure.ac: Check for presence of autoconf-archive package and -remove our copies of M4 macros. diff --git a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst b/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst deleted file mode 100644 index 4de4905a6bb08..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS, Windows, and CI to OpenSSL 1.1.1k. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst deleted file mode 100644 index c18a55ef32306..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute a -non-Python signal handler. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst deleted file mode 100644 index 46742429db64b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst +++ /dev/null @@ -1,4 +0,0 @@ -Python no longer fails at startup with a fatal error if a command line -argument contains an invalid Unicode character. The -:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be -decoded as Unicode characters outside the [U+0000; U+10ffff] range. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst deleted file mode 100644 index 98419501d9e7b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix crash that happens when replacing ``sys.stderr`` with a callable that -can remove the object while an exception is being printed. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst b/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst deleted file mode 100644 index b737e125f8371..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update some deprecated unicode APIs which are documented as "will be removed -in 4.0" to "3.12". See :pep:`623` for detail. diff --git a/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst b/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst deleted file mode 100644 index 8ba398adf6182..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify that 'yield from ' works with any iterable, not just -iterators. diff --git a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst b/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst deleted file mode 100644 index 615e3d016307c..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst +++ /dev/null @@ -1,4 +0,0 @@ -Clarified that a result from :func:`time.monotonic`, -:func:`time.perf_counter`, :func:`time.process_time`, or -:func:`time.thread_time` can be compared with the result from any following -call to the same function - not just the next immediate call. diff --git a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst b/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst deleted file mode 100644 index d1b454fabd7f8..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst +++ /dev/null @@ -1 +0,0 @@ -Answer "Why is there no goto?" in the Design and History FAQ. diff --git a/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst b/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst deleted file mode 100644 index 7a627af412a8e..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst +++ /dev/null @@ -1,3 +0,0 @@ -Document why printing to IDLE's Shell is often slower than printing to a -system terminal and that it can be made faster by pre-formatting a single -string before printing. diff --git a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst b/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst deleted file mode 100644 index 59fb08bdf9ebe..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that IDLE can fail on Unix either from misconfigured IP masquerage -rules or failure displaying complex colored (non-ascii) characters. diff --git a/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst b/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst deleted file mode 100644 index fbf56d3194cd2..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced in Python -3.7. diff --git a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst b/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst deleted file mode 100644 index 065df9bf0cf42..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fail fast in :func:`shutil.move()` to avoid creating destination directories on -failure. diff --git a/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst b/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst deleted file mode 100644 index f3c21d1c63f72..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix TextIOWrapper can not flush internal buffer forever after very large -text is written. diff --git a/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst b/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst deleted file mode 100644 index 1f0d3c499c16f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst +++ /dev/null @@ -1,3 +0,0 @@ -The ``python -m gzip`` command line application now properly fails when -detecting an unsupported extension. It exits with a non-zero exit code and -prints an error message to stderr. diff --git a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst b/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst deleted file mode 100644 index 0b8dffb2312e4..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix ``ElementTree.extend`` not working on iterators when using the -Python implementation diff --git a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst b/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst deleted file mode 100644 index 7f1014d723b6a..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst +++ /dev/null @@ -1,8 +0,0 @@ -Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with -initial_response_ok=False will fail. - -The cause is that SMTP.auth_login _always_ returns a password if provided -with a challenge string, thus non-compliant with the standard for AUTH -LOGIN. - -Also fixes bug with the test for smtpd. diff --git a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst b/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst deleted file mode 100644 index 290d7fbd91800..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst +++ /dev/null @@ -1,2 +0,0 @@ -:func:`subprocess.communicate` no longer raises an IndexError when there is an -empty stdout or stderr IO buffer during a timeout on Windows. diff --git a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst b/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst deleted file mode 100644 index a7db48bc626fc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst +++ /dev/null @@ -1 +0,0 @@ -Fix deadlock when using :class:`ssl.SSLContext` debug callback with :meth:`ssl.SSLContext.sni_callback`. diff --git a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst b/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst deleted file mode 100644 index 71c6012f52b8f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst +++ /dev/null @@ -1,2 +0,0 @@ -Raising an exception raised in a "future" instance will create reference -cycles. diff --git a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst b/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst deleted file mode 100644 index 518650303683d..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and -:func:`gc.get_referents`. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst b/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst deleted file mode 100644 index 8312b7e885441..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst +++ /dev/null @@ -1,8 +0,0 @@ -:mod:`ftplib` no longer trusts the IP address value returned from the server -in response to the PASV command by default. This prevents a malicious FTP -server from using the response to probe IPv4 address and port combinations -on the client network. - -Code that requires the former vulnerable behavior may set a -``trust_server_pasv_ipv4_address`` attribute on their -:class:`ftplib.FTP` instances to ``True`` to re-enable it. diff --git a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst b/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst deleted file mode 100644 index 4b42dd05305a8..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst +++ /dev/null @@ -1,4 +0,0 @@ -CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module which -could be abused to read arbitrary files on the disk (directory traversal -vulnerability). Moreover, even source code of Python modules can contain -sensitive data like passwords. Vulnerability reported by David Schw?rer. diff --git a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst b/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst deleted file mode 100644 index 214350729bff6..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst +++ /dev/null @@ -1 +0,0 @@ -Add workaround for Ubuntu's custom OpenSSL security level policy. diff --git a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst b/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst deleted file mode 100644 index e1c95f63bf7c7..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_getsetlocale_issue1813() of test_locale: skip the test if -``setlocale()`` fails. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst b/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst deleted file mode 100644 index 5d32d87a5a97d..0000000000000 --- a/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS installer build to use OpenSSL 1.1.1j. diff --git a/README.rst b/README.rst index 229b4cf58e9e2..f836af12f2cf6 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.8.8 +This is Python version 3.8.9 ============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.8 From webhook-mailer at python.org Fri Apr 2 13:37:58 2021 From: webhook-mailer at python.org (ambv) Date: Fri, 02 Apr 2021 17:37:58 -0000 Subject: [Python-checkins] Post 3.8.9 Message-ID: https://github.com/python/cpython/commit/a44771f9212381b90c539882448258c4300b2fe5 commit: a44771f9212381b90c539882448258c4300b2fe5 branch: 3.8 author: ?ukasz Langa committer: ambv date: 2021-04-02T19:37:42+02:00 summary: Post 3.8.9 files: M Include/patchlevel.h diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 38ffec2854ac4..e074b01dca771 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -23,7 +23,7 @@ #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.8.9" +#define PY_VERSION "3.8.9+" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. From webhook-mailer at python.org Fri Apr 2 13:40:01 2021 From: webhook-mailer at python.org (ambv) Date: Fri, 02 Apr 2021 17:40:01 -0000 Subject: [Python-checkins] Python 3.9.3 Message-ID: https://github.com/python/cpython/commit/e723086bc33c19c6c52046d515eb3c2aab1b8f97 commit: e723086bc33c19c6c52046d515eb3c2aab1b8f97 branch: 3.9 author: ?ukasz Langa committer: ambv date: 2021-04-02T11:51:53+02:00 summary: Python 3.9.3 files: A Misc/NEWS.d/3.9.3.rst D Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst D Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst D Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst D Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst D Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst D Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst D Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst D Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst D Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst D Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst D Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst D Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst D Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst D Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst D Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst D Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst D Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst D Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst D Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst D Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst D Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst D Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst D Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst D Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst D Misc/NEWS.d/next/Tests/2021-02-21-11-11-53.bpo-43288.LfTvL-.rst D Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst D Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst D Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 92d004e3858ef..093ea5daa8802 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 9 -#define PY_MICRO_VERSION 2 +#define PY_MICRO_VERSION 3 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.9.2+" +#define PY_VERSION "3.9.3" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index ae896c2e5afd6..eb5b8936c06ad 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Fri Feb 19 13:29:38 2021 +# Autogenerated by Sphinx on Fri Apr 2 11:48:03 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5019,9 +5019,11 @@ '"Formatter",\n' 'subclasses can define their own format string syntax). The ' 'syntax is\n' - 'related to that of formatted string literals, but there ' - 'are\n' - 'differences.\n' + 'related to that of formatted string literals, but it is ' + 'less\n' + 'sophisticated and, in particular, does not support ' + 'arbitrary\n' + 'expressions.\n' '\n' 'Format strings contain ?replacement fields? surrounded by ' 'curly braces\n' diff --git a/Misc/NEWS.d/3.9.3.rst b/Misc/NEWS.d/3.9.3.rst new file mode 100644 index 0000000000000..f76685c8202d9 --- /dev/null +++ b/Misc/NEWS.d/3.9.3.rst @@ -0,0 +1,346 @@ +.. bpo: 42988 +.. date: 2021-03-24-14-16-56 +.. nonce: P2aNco +.. release date: 2021-04-02 +.. section: Security + +CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module +which could be abused to read arbitrary files on the disk (directory +traversal vulnerability). Moreover, even source code of Python modules can +contain sensitive data like passwords. Vulnerability reported by David +Schw?rer. + +.. + +.. bpo: 43285 +.. date: 2021-03-13-03-48-14 +.. nonce: g-Hah3 +.. section: Security + +:mod:`ftplib` no longer trusts the IP address value returned from the server +in response to the PASV command by default. This prevents a malicious FTP +server from using the response to probe IPv4 address and port combinations +on the client network. + +Code that requires the former vulnerable behavior may set a +``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` +instances to ``True`` to re-enable it. + +.. + +.. bpo: 43439 +.. date: 2021-03-08-23-06-07 +.. nonce: 5U3lXm +.. section: Security + +Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and +:func:`gc.get_referents`. Patch by Pablo Galindo. + +.. + +.. bpo: 43660 +.. date: 2021-03-29-19-50-34 +.. nonce: scTgag +.. section: Core and Builtins + +Fix crash that happens when replacing ``sys.stderr`` with a callable that +can remove the object while an exception is being printed. Patch by Pablo +Galindo. + +.. + +.. bpo: 43555 +.. date: 2021-03-19-22-49-40 +.. nonce: ZmhYSA +.. section: Core and Builtins + +Report the column offset for :exc:`SyntaxError` for invalid line +continuation characters. Patch by Pablo Galindo. + +.. + +.. bpo: 43517 +.. date: 2021-03-16-17-12-54 +.. nonce: zAo6Ws +.. section: Core and Builtins + +Fix misdetection of circular imports when using ``from pkg.mod import +attr``, which caused false positives in non-trivial multi-threaded code. + +.. + +.. bpo: 35883 +.. date: 2021-03-13-13-57-21 +.. nonce: UyGpdG +.. section: Core and Builtins + +Python no longer fails at startup with a fatal error if a command line +argument contains an invalid Unicode character. The +:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be +decoded as Unicode characters outside the [U+0000; U+10ffff] range. + +.. + +.. bpo: 43406 +.. date: 2021-03-04-22-53-10 +.. nonce: Na_VpA +.. section: Core and Builtins + +Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute +a non-Python signal handler. + +.. + +.. bpo: 42500 +.. date: 2020-11-30-14-27-29 +.. nonce: excVKU +.. section: Core and Builtins + +Improve handling of exceptions near recursion limit. Converts a number of +Fatal Errors in RecursionErrors. + +.. + +.. bpo: 43433 +.. date: 2021-03-28-23-50-20 +.. nonce: so9j5G +.. section: Library + +:class:`xmlrpc.client.ServerProxy` no longer ignores query and fragment in +the URL of the server. + +.. + +.. bpo: 35930 +.. date: 2021-03-23-17-18-56 +.. nonce: RZ51pM +.. section: Library + +Raising an exception raised in a "future" instance will create reference +cycles. + +.. + +.. bpo: 43577 +.. date: 2021-03-21-10-13-17 +.. nonce: m7JnAV +.. section: Library + +Fix deadlock when using :class:`ssl.SSLContext` debug callback with +:meth:`ssl.SSLContext.sni_callback`. + +.. + +.. bpo: 43521 +.. date: 2021-03-16-16-05-02 +.. nonce: mRT6fh +.. section: Library + +``ast.unparse`` can now render NaNs and empty sets. + +.. + +.. bpo: 43423 +.. date: 2021-03-11-15-44-18 +.. nonce: rRomRD +.. section: Library + +:func:`subprocess.communicate` no longer raises an IndexError when there is +an empty stdout or stderr IO buffer during a timeout on Windows. + +.. + +.. bpo: 27820 +.. date: 2021-03-10-14-07-44 +.. nonce: Wwdy-r +.. section: Library + +Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with +initial_response_ok=False will fail. + +The cause is that SMTP.auth_login _always_ returns a password if provided +with a challenge string, thus non-compliant with the standard for AUTH +LOGIN. + +Also fixes bug with the test for smtpd. + +.. + +.. bpo: 43332 +.. date: 2021-03-07-11-23-20 +.. nonce: weatsh +.. section: Library + +Improves the networking efficiency of :mod:`http.client` when using a proxy +via :meth:`~HTTPConnection.set_tunnel`. Fewer small send calls are made +during connection setup. + +.. + +.. bpo: 43399 +.. date: 2021-03-04-17-53-46 +.. nonce: Wn95u- +.. section: Library + +Fix ``ElementTree.extend`` not working on iterators when using the Python +implementation + +.. + +.. bpo: 43316 +.. date: 2021-02-25-09-44-36 +.. nonce: k9Gyqn +.. section: Library + +The ``python -m gzip`` command line application now properly fails when +detecting an unsupported extension. It exits with a non-zero exit code and +prints an error message to stderr. + +.. + +.. bpo: 43260 +.. date: 2021-02-20-12-15-29 +.. nonce: 6znAas +.. section: Library + +Fix TextIOWrapper can not flush internal buffer forever after very large +text is written. + +.. + +.. bpo: 42782 +.. date: 2020-12-29-13-46-57 +.. nonce: 3r0HFY +.. section: Library + +Fail fast in :func:`shutil.move()` to avoid creating destination directories +on failure. + +.. + +.. bpo: 37193 +.. date: 2020-06-12-21-23-20 +.. nonce: wJximU +.. section: Library + +Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced in Python +3.7. + +.. + +.. bpo: 43199 +.. date: 2021-03-13-18-43-54 +.. nonce: ZWA6KX +.. section: Documentation + +Answer "Why is there no goto?" in the Design and History FAQ. + +.. + +.. bpo: 43407 +.. date: 2021-03-04-22-53-03 +.. nonce: x570l5 +.. section: Documentation + +Clarified that a result from :func:`time.monotonic`, +:func:`time.perf_counter`, :func:`time.process_time`, or +:func:`time.thread_time` can be compared with the result from any following +call to the same function - not just the next immediate call. + +.. + +.. bpo: 27646 +.. date: 2021-02-20-00-09-13 +.. nonce: HRsmo- +.. section: Documentation + +Clarify that 'yield from ' works with any iterable, not just +iterators. + +.. + +.. bpo: 36346 +.. date: 2020-06-15-10-45-45 +.. nonce: H0sS_i +.. section: Documentation + +Update some deprecated unicode APIs which are documented as "will be removed +in 4.0" to "3.12". See :pep:`623` for detail. + +.. + +.. bpo: 37945 +.. date: 2021-03-31-11-38-42 +.. nonce: HTUYhv +.. section: Tests + +Fix test_getsetlocale_issue1813() of test_locale: skip the test if +``setlocale()`` fails. Patch by Victor Stinner. + +.. + +.. bpo: 41561 +.. date: 2021-03-18-10-34-42 +.. nonce: pDg4w- +.. section: Tests + +Add workaround for Ubuntu's custom OpenSSL security level policy. + +.. + +.. bpo: 43288 +.. date: 2021-02-21-11-11-53 +.. nonce: LfTvL- +.. section: Tests + +Fix test_importlib to correctly skip Unicode file tests if the fileystem +does not support them. + +.. + +.. bpo: 43631 +.. date: 2021-03-26-09-16-34 +.. nonce: msJyPi +.. section: Build + +Update macOS, Windows, and CI to OpenSSL 1.1.1k. + +.. + +.. bpo: 43617 +.. date: 2021-03-24-16-55-55 +.. nonce: d69KAv +.. section: Build + +Improve configure.ac: Check for presence of autoconf-archive package and +remove our copies of M4 macros. + +.. + +.. bpo: 41837 +.. date: 2021-02-28-22-49-46 +.. nonce: 9fqyXC +.. section: macOS + +Update macOS installer build to use OpenSSL 1.1.1j. + +.. + +.. bpo: 42225 +.. date: 2021-03-29-16-22-27 +.. nonce: iIeiLg +.. section: IDLE + +Document that IDLE can fail on Unix either from misconfigured IP masquerage +rules or failure displaying complex colored (non-ascii) characters. + +.. + +.. bpo: 43283 +.. date: 2021-02-21-16-30-10 +.. nonce: DLBwYn +.. section: IDLE + +Document why printing to IDLE's Shell is often slower than printing to a +system terminal and that it can be made faster by pre-formatting a single +string before printing. diff --git a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst b/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst deleted file mode 100644 index 26783963c8679..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve configure.ac: Check for presence of autoconf-archive package and -remove our copies of M4 macros. diff --git a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst b/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst deleted file mode 100644 index 4de4905a6bb08..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS, Windows, and CI to OpenSSL 1.1.1k. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst b/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst deleted file mode 100644 index 2462a8e1fabef..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-11-30-14-27-29.bpo-42500.excVKU.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve handling of exceptions near recursion limit. Converts a number of -Fatal Errors in RecursionErrors. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst deleted file mode 100644 index c18a55ef32306..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute a -non-Python signal handler. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst deleted file mode 100644 index 46742429db64b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst +++ /dev/null @@ -1,4 +0,0 @@ -Python no longer fails at startup with a fatal error if a command line -argument contains an invalid Unicode character. The -:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be -decoded as Unicode characters outside the [U+0000; U+10ffff] range. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst deleted file mode 100644 index 0f9926b93f654..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix misdetection of circular imports when using ``from pkg.mod import -attr``, which caused false positives in non-trivial multi-threaded code. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst deleted file mode 100644 index 55a2fe22aa8ab..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Report the column offset for :exc:`SyntaxError` for invalid line -continuation characters. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst deleted file mode 100644 index 98419501d9e7b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix crash that happens when replacing ``sys.stderr`` with a callable that -can remove the object while an exception is being printed. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst b/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst deleted file mode 100644 index b737e125f8371..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-06-15-10-45-45.bpo-36346.H0sS_i.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update some deprecated unicode APIs which are documented as "will be removed -in 4.0" to "3.12". See :pep:`623` for detail. diff --git a/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst b/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst deleted file mode 100644 index 8ba398adf6182..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-02-20-00-09-13.bpo-27646.HRsmo-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify that 'yield from ' works with any iterable, not just -iterators. diff --git a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst b/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst deleted file mode 100644 index 615e3d016307c..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst +++ /dev/null @@ -1,4 +0,0 @@ -Clarified that a result from :func:`time.monotonic`, -:func:`time.perf_counter`, :func:`time.process_time`, or -:func:`time.thread_time` can be compared with the result from any following -call to the same function - not just the next immediate call. diff --git a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst b/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst deleted file mode 100644 index d1b454fabd7f8..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst +++ /dev/null @@ -1 +0,0 @@ -Answer "Why is there no goto?" in the Design and History FAQ. diff --git a/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst b/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst deleted file mode 100644 index 7a627af412a8e..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-02-21-16-30-10.bpo-43283.DLBwYn.rst +++ /dev/null @@ -1,3 +0,0 @@ -Document why printing to IDLE's Shell is often slower than printing to a -system terminal and that it can be made faster by pre-formatting a single -string before printing. diff --git a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst b/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst deleted file mode 100644 index 59fb08bdf9ebe..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that IDLE can fail on Unix either from misconfigured IP masquerage -rules or failure displaying complex colored (non-ascii) characters. diff --git a/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst b/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst deleted file mode 100644 index fbf56d3194cd2..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-06-12-21-23-20.bpo-37193.wJximU.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced in Python -3.7. diff --git a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst b/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst deleted file mode 100644 index 065df9bf0cf42..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fail fast in :func:`shutil.move()` to avoid creating destination directories on -failure. diff --git a/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst b/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst deleted file mode 100644 index f3c21d1c63f72..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-20-12-15-29.bpo-43260.6znAas.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix TextIOWrapper can not flush internal buffer forever after very large -text is written. diff --git a/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst b/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst deleted file mode 100644 index 1f0d3c499c16f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-25-09-44-36.bpo-43316.k9Gyqn.rst +++ /dev/null @@ -1,3 +0,0 @@ -The ``python -m gzip`` command line application now properly fails when -detecting an unsupported extension. It exits with a non-zero exit code and -prints an error message to stderr. diff --git a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst b/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst deleted file mode 100644 index 0b8dffb2312e4..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix ``ElementTree.extend`` not working on iterators when using the -Python implementation diff --git a/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst b/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst deleted file mode 100644 index c40be95c194db..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst +++ /dev/null @@ -1,3 +0,0 @@ -Improves the networking efficiency of :mod:`http.client` when using a proxy -via :meth:`~HTTPConnection.set_tunnel`. Fewer small send calls are made -during connection setup. diff --git a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst b/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst deleted file mode 100644 index 7f1014d723b6a..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst +++ /dev/null @@ -1,8 +0,0 @@ -Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with -initial_response_ok=False will fail. - -The cause is that SMTP.auth_login _always_ returns a password if provided -with a challenge string, thus non-compliant with the standard for AUTH -LOGIN. - -Also fixes bug with the test for smtpd. diff --git a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst b/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst deleted file mode 100644 index 290d7fbd91800..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst +++ /dev/null @@ -1,2 +0,0 @@ -:func:`subprocess.communicate` no longer raises an IndexError when there is an -empty stdout or stderr IO buffer during a timeout on Windows. diff --git a/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst b/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst deleted file mode 100644 index e6895674437a5..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst +++ /dev/null @@ -1 +0,0 @@ -``ast.unparse`` can now render NaNs and empty sets. diff --git a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst b/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst deleted file mode 100644 index a7db48bc626fc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst +++ /dev/null @@ -1 +0,0 @@ -Fix deadlock when using :class:`ssl.SSLContext` debug callback with :meth:`ssl.SSLContext.sni_callback`. diff --git a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst b/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst deleted file mode 100644 index 71c6012f52b8f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst +++ /dev/null @@ -1,2 +0,0 @@ -Raising an exception raised in a "future" instance will create reference -cycles. diff --git a/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst b/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst deleted file mode 100644 index 2f67e316a5efc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst +++ /dev/null @@ -1,2 +0,0 @@ -:class:`xmlrpc.client.ServerProxy` no longer ignores query and fragment in -the URL of the server. diff --git a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst b/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst deleted file mode 100644 index 518650303683d..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and -:func:`gc.get_referents`. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst b/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst deleted file mode 100644 index 8312b7e885441..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst +++ /dev/null @@ -1,8 +0,0 @@ -:mod:`ftplib` no longer trusts the IP address value returned from the server -in response to the PASV command by default. This prevents a malicious FTP -server from using the response to probe IPv4 address and port combinations -on the client network. - -Code that requires the former vulnerable behavior may set a -``trust_server_pasv_ipv4_address`` attribute on their -:class:`ftplib.FTP` instances to ``True`` to re-enable it. diff --git a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst b/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst deleted file mode 100644 index 4b42dd05305a8..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst +++ /dev/null @@ -1,4 +0,0 @@ -CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module which -could be abused to read arbitrary files on the disk (directory traversal -vulnerability). Moreover, even source code of Python modules can contain -sensitive data like passwords. Vulnerability reported by David Schw?rer. diff --git a/Misc/NEWS.d/next/Tests/2021-02-21-11-11-53.bpo-43288.LfTvL-.rst b/Misc/NEWS.d/next/Tests/2021-02-21-11-11-53.bpo-43288.LfTvL-.rst deleted file mode 100644 index 8463540ae8a14..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-02-21-11-11-53.bpo-43288.LfTvL-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_importlib to correctly skip Unicode file tests if the fileystem -does not support them. diff --git a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst b/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst deleted file mode 100644 index 214350729bff6..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst +++ /dev/null @@ -1 +0,0 @@ -Add workaround for Ubuntu's custom OpenSSL security level policy. diff --git a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst b/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst deleted file mode 100644 index e1c95f63bf7c7..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_getsetlocale_issue1813() of test_locale: skip the test if -``setlocale()`` fails. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst b/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst deleted file mode 100644 index 5d32d87a5a97d..0000000000000 --- a/Misc/NEWS.d/next/macOS/2021-02-28-22-49-46.bpo-41837.9fqyXC.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS installer build to use OpenSSL 1.1.1j. diff --git a/README.rst b/README.rst index cf73e70038c4f..ae7f264ef4f5f 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.9.2 +This is Python version 3.9.3 ============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.9 From webhook-mailer at python.org Fri Apr 2 15:35:43 2021 From: webhook-mailer at python.org (brettcannon) Date: Fri, 02 Apr 2021 19:35:43 -0000 Subject: [Python-checkins] bpo-43672: raise ImportWarning when calling find_loader() (GH-25119) Message-ID: https://github.com/python/cpython/commit/f97dc800689ba98783dac8dc51f87f7c6f413ac6 commit: f97dc800689ba98783dac8dc51f87f7c6f413ac6 branch: master author: Brett Cannon committer: brettcannon date: 2021-04-02T12:35:32-07:00 summary: bpo-43672: raise ImportWarning when calling find_loader() (GH-25119) files: A Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst M Doc/reference/import.rst M Doc/whatsnew/3.10.rst M Lib/importlib/_bootstrap_external.py M Lib/test/test_importlib/extension/test_loader.py M Lib/test/test_importlib/import_/test_path.py M Lib/test/test_importlib/test_abc.py M Lib/test/test_importlib/test_main.py M Lib/test/test_importlib/test_metadata_api.py M Lib/test/test_importlib/test_path.py M Lib/test/test_importlib/test_reader.py M Lib/test/test_importlib/test_util.py M Python/importlib_external.h diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index 5d2169b4cba60..2ef5b901b930b 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -904,7 +904,8 @@ a list containing the portion. ``find_loader()`` in preference to ``find_module()``. .. versionchanged:: 3.10 - Calls to :meth:`~importlib.abc.PathEntryFinder.find_module` by the import + Calls to :meth:`~importlib.abc.PathEntryFinder.find_module` and + :meth:`~importlib.abc.PathEntryFinder.find_loader` by the import system will raise :exc:`ImportWarning`. diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index eb42480756241..d20fdac71b302 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -1050,7 +1050,13 @@ Deprecated :meth:`importlib.abc.PathEntryFinder.find_spec` are preferred, respectively. You can use :func:`importlib.util.spec_from_loader` to help in porting. - (Contributed by Brett Cannon in :issue:`42134`.) + (Contributed by Brett Cannon in :issue:`42134`.) + +* The use of :meth:`importlib.abc.PathEntryFinder.find_loader` by the import + system now triggers an :exc:`ImportWarning` as + :meth:`importlib.abc.PathEntryFinder.find_spec` is preferred. You can use + :func:`importlib.util.spec_from_loader` to help in porting. + (Contributed by Brett Cannon in :issue:`43672`.) * The import system now uses the ``__spec__`` attribute on modules before falling back on :meth:`~importlib.abc.Loader.module_repr` for a module's diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 6c3e0317b7d9f..358c650916b0b 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -1323,10 +1323,13 @@ def _legacy_get_spec(cls, fullname, finder): # This would be a good place for a DeprecationWarning if # we ended up going that route. if hasattr(finder, 'find_loader'): + msg = (f"{_bootstrap._object_name(finder)}.find_spec() not found; " + "falling back to find_loader()") + _warnings.warn(msg, ImportWarning) loader, portions = finder.find_loader(fullname) else: msg = (f"{_bootstrap._object_name(finder)}.find_spec() not found; " - "falling back to find_module()") + "falling back to find_module()") _warnings.warn(msg, ImportWarning) loader = finder.find_module(fullname) portions = [] diff --git a/Lib/test/test_importlib/extension/test_loader.py b/Lib/test/test_importlib/extension/test_loader.py index 22cf2dac5f868..8fd556dbed57a 100644 --- a/Lib/test/test_importlib/extension/test_loader.py +++ b/Lib/test/test_importlib/extension/test_loader.py @@ -89,8 +89,7 @@ def test_is_package(self): ) = util.test_both(LoaderTests, machinery=machinery) class MultiPhaseExtensionModuleTests(abc.LoaderTests): - """Test loading extension modules with multi-phase initialization (PEP 489) - """ + # Test loading extension modules with multi-phase initialization (PEP 489). def setUp(self): self.name = '_testmultiphase' @@ -101,13 +100,13 @@ def setUp(self): self.name, self.spec.origin) def load_module(self): - '''Load the module from the test extension''' + # Load the module from the test extension. with warnings.catch_warnings(): warnings.simplefilter("ignore", DeprecationWarning) return self.loader.load_module(self.name) def load_module_by_name(self, fullname): - '''Load a module from the test extension by name''' + # Load a module from the test extension by name. origin = self.spec.origin loader = self.machinery.ExtensionFileLoader(fullname, origin) spec = importlib.util.spec_from_loader(fullname, loader) @@ -125,7 +124,7 @@ def load_module_by_name(self, fullname): test_state_after_failure = None def test_module(self): - '''Test loading an extension module''' + # Test loading an extension module. with util.uncache(self.name): module = self.load_module() for attr, value in [('__name__', self.name), @@ -139,7 +138,7 @@ def test_module(self): self.machinery.ExtensionFileLoader) def test_functionality(self): - '''Test basic functionality of stuff defined in an extension module''' + # Test basic functionality of stuff defined in an extension module. with util.uncache(self.name): module = self.load_module() self.assertIsInstance(module, types.ModuleType) @@ -159,7 +158,7 @@ def test_functionality(self): self.assertEqual(module.str_const, 'something different') def test_reload(self): - '''Test that reload didn't re-set the module's attributes''' + # Test that reload didn't re-set the module's attributes. with util.uncache(self.name): module = self.load_module() ex_class = module.Example @@ -167,7 +166,7 @@ def test_reload(self): self.assertIs(ex_class, module.Example) def test_try_registration(self): - '''Assert that the PyState_{Find,Add,Remove}Module C API doesn't work''' + # Assert that the PyState_{Find,Add,Remove}Module C API doesn't work. module = self.load_module() with self.subTest('PyState_FindModule'): self.assertEqual(module.call_state_registration_func(0), None) @@ -179,14 +178,14 @@ def test_try_registration(self): module.call_state_registration_func(2) def test_load_submodule(self): - '''Test loading a simulated submodule''' + # Test loading a simulated submodule. module = self.load_module_by_name('pkg.' + self.name) self.assertIsInstance(module, types.ModuleType) self.assertEqual(module.__name__, 'pkg.' + self.name) self.assertEqual(module.str_const, 'something different') def test_load_short_name(self): - '''Test loading module with a one-character name''' + # Test loading module with a one-character name. module = self.load_module_by_name('x') self.assertIsInstance(module, types.ModuleType) self.assertEqual(module.__name__, 'x') @@ -194,27 +193,27 @@ def test_load_short_name(self): self.assertNotIn('x', sys.modules) def test_load_twice(self): - '''Test that 2 loads result in 2 module objects''' + # Test that 2 loads result in 2 module objects. module1 = self.load_module_by_name(self.name) module2 = self.load_module_by_name(self.name) self.assertIsNot(module1, module2) def test_unloadable(self): - '''Test nonexistent module''' + # Test nonexistent module. name = 'asdfjkl;' with self.assertRaises(ImportError) as cm: self.load_module_by_name(name) self.assertEqual(cm.exception.name, name) def test_unloadable_nonascii(self): - '''Test behavior with nonexistent module with non-ASCII name''' + # Test behavior with nonexistent module with non-ASCII name. name = 'fo\xf3' with self.assertRaises(ImportError) as cm: self.load_module_by_name(name) self.assertEqual(cm.exception.name, name) def test_nonmodule(self): - '''Test returning a non-module object from create works''' + # Test returning a non-module object from create works. name = self.name + '_nonmodule' mod = self.load_module_by_name(name) self.assertNotEqual(type(mod), type(unittest)) @@ -222,7 +221,7 @@ def test_nonmodule(self): # issue 27782 def test_nonmodule_with_methods(self): - '''Test creating a non-module object with methods defined''' + # Test creating a non-module object with methods defined. name = self.name + '_nonmodule_with_methods' mod = self.load_module_by_name(name) self.assertNotEqual(type(mod), type(unittest)) @@ -230,14 +229,14 @@ def test_nonmodule_with_methods(self): self.assertEqual(mod.bar(10, 1), 9) def test_null_slots(self): - '''Test that NULL slots aren't a problem''' + # Test that NULL slots aren't a problem. name = self.name + '_null_slots' module = self.load_module_by_name(name) self.assertIsInstance(module, types.ModuleType) self.assertEqual(module.__name__, name) def test_bad_modules(self): - '''Test SystemError is raised for misbehaving extensions''' + # Test SystemError is raised for misbehaving extensions. for name_base in [ 'bad_slot_large', 'bad_slot_negative', @@ -261,9 +260,9 @@ def test_bad_modules(self): self.load_module_by_name(name) def test_nonascii(self): - '''Test that modules with non-ASCII names can be loaded''' + # Test that modules with non-ASCII names can be loaded. # punycode behaves slightly differently in some-ASCII and no-ASCII - # cases, so test both + # cases, so test both. cases = [ (self.name + '_zkou\u0161ka_na\u010dten\xed', 'Czech'), ('\uff3f\u30a4\u30f3\u30dd\u30fc\u30c8\u30c6\u30b9\u30c8', diff --git a/Lib/test/test_importlib/import_/test_path.py b/Lib/test/test_importlib/import_/test_path.py index c51aee22bb8dc..2ba7030d14d8c 100644 --- a/Lib/test/test_importlib/import_/test_path.py +++ b/Lib/test/test_importlib/import_/test_path.py @@ -143,12 +143,16 @@ def find_loader(self, fullname): return self.loader, self.portions path = 'testing path' with util.import_state(path_importer_cache={path: TestFinder()}): - self.assertIsNone( + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + self.assertIsNone( self.machinery.PathFinder.find_spec('whatever', [path])) success_finder = TestFinder() success_finder.loader = __loader__ with util.import_state(path_importer_cache={path: success_finder}): - spec = self.machinery.PathFinder.find_spec('whatever', [path]) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", ImportWarning) + spec = self.machinery.PathFinder.find_spec('whatever', [path]) self.assertEqual(spec.loader, __loader__) def test_finder_with_find_spec(self): diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py index 6333ce8c48b0b..98f5835eafca5 100644 --- a/Lib/test/test_importlib/test_abc.py +++ b/Lib/test/test_importlib/test_abc.py @@ -221,13 +221,13 @@ def test_load_module(self): def test_module_repr(self): mod = types.ModuleType('blah') with warnings.catch_warnings(): - warnings.simplefilter("ignore") + warnings.simplefilter("ignore", DeprecationWarning) with self.assertRaises(NotImplementedError): self.ins.module_repr(mod) - original_repr = repr(mod) - mod.__loader__ = self.ins - # Should still return a proper repr. - self.assertTrue(repr(mod)) + original_repr = repr(mod) + mod.__loader__ = self.ins + # Should still return a proper repr. + self.assertTrue(repr(mod)) (Frozen_LDefaultTests, diff --git a/Lib/test/test_importlib/test_main.py b/Lib/test/test_importlib/test_main.py index 02e8a573437a5..db97e53922cf8 100644 --- a/Lib/test/test_importlib/test_main.py +++ b/Lib/test/test_importlib/test_main.py @@ -36,12 +36,10 @@ def test_for_name_does_not_exist(self): Distribution.from_name('does-not-exist') def test_package_not_found_mentions_metadata(self): - """ - When a package is not found, that could indicate that the - packgae is not installed or that it is installed without - metadata. Ensure the exception mentions metadata to help - guide users toward the cause. See #124. - """ + # When a package is not found, that could indicate that the + # packgae is not installed or that it is installed without + # metadata. Ensure the exception mentions metadata to help + # guide users toward the cause. See #124. with self.assertRaises(PackageNotFoundError) as ctx: Distribution.from_name('does-not-exist') @@ -90,10 +88,8 @@ def pkg_with_dashes(site_dir): return 'my-pkg' def test_dashes_in_dist_name_found_as_underscores(self): - """ - For a package with a dash in the name, the dist-info metadata - uses underscores in the name. Ensure the metadata loads. - """ + # For a package with a dash in the name, the dist-info metadata + # uses underscores in the name. Ensure the metadata loads. pkg_name = self.pkg_with_dashes(self.site_dir) assert version(pkg_name) == '1.0' @@ -111,9 +107,7 @@ def pkg_with_mixed_case(site_dir): return 'CherryPy' def test_dist_name_found_as_any_case(self): - """ - Ensure the metadata loads when queried with any case. - """ + # Ensure the metadata loads when queried with any case. pkg_name = self.pkg_with_mixed_case(self.site_dir) assert version(pkg_name) == '1.0' assert version(pkg_name.lower()) == '1.0' @@ -241,13 +235,11 @@ def test_repr(self): assert "'name'" in repr(self.ep) def test_hashable(self): - """EntryPoints should be hashable""" + # EntryPoints should be hashable. hash(self.ep) def test_json_dump(self): - """ - json should not expect to be able to dump an EntryPoint - """ + # json should not expect to be able to dump an EntryPoint. with self.assertRaises(Exception): with warnings.catch_warnings(record=True): json.dumps(self.ep) @@ -259,9 +251,7 @@ def test_attr(self): assert self.ep.attr is None def test_sortable(self): - """ - EntryPoint objects are sortable, but result is undefined. - """ + # EntryPoint objects are sortable, but result is undefined. sorted( [ EntryPoint('b', 'val', 'group'), @@ -274,10 +264,8 @@ class FileSystem( fixtures.OnSysPath, fixtures.SiteDir, fixtures.FileBuilder, unittest.TestCase ): def test_unicode_dir_on_sys_path(self): - """ - Ensure a Unicode subdirectory of a directory on sys.path - does not crash. - """ + # Ensure a Unicode subdirectory of a directory on sys.path + # does not crash. fixtures.build_files( {self.unicode_filename(): {}}, prefix=self.site_dir, diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py index a0f9d511f8433..b54c3bd098d43 100644 --- a/Lib/test/test_importlib/test_metadata_api.py +++ b/Lib/test/test_importlib/test_metadata_api.py @@ -81,10 +81,8 @@ def test_entry_points_distribution(self): self.assertEqual(ep.dist.version, "1.0.0") def test_entry_points_unique_packages(self): - """ - Entry points should only be exposed for the first package - on sys.path with a given name. - """ + # Entry points should only be exposed for the first package + # on sys.path with a given name. alt_site_dir = self.fixtures.enter_context(fixtures.tempdir()) self.fixtures.enter_context(self.add_sys_path(alt_site_dir)) alt_pkg = { @@ -116,11 +114,9 @@ def test_entry_points_missing_group(self): assert entry_points(group='missing') == () def test_entry_points_dict_construction(self): - """ - Prior versions of entry_points() returned simple lists and - allowed casting those lists into maps by name using ``dict()``. - Capture this now deprecated use-case. - """ + # Prior versions of entry_points() returned simple lists and + # allowed casting those lists into maps by name using ``dict()``. + # Capture this now deprecated use-case. with warnings.catch_warnings(record=True) as caught: warnings.filterwarnings("default", category=DeprecationWarning) eps = dict(entry_points(group='entries')) @@ -134,11 +130,9 @@ def test_entry_points_dict_construction(self): assert "Construction of dict of EntryPoints is deprecated" in str(expected) def test_entry_points_groups_getitem(self): - """ - Prior versions of entry_points() returned a dict. Ensure - that callers using '.__getitem__()' are supported but warned to - migrate. - """ + # Prior versions of entry_points() returned a dict. Ensure + # that callers using '.__getitem__()' are supported but warned to + # migrate. with warnings.catch_warnings(record=True): entry_points()['entries'] == entry_points(group='entries') @@ -146,11 +140,9 @@ def test_entry_points_groups_getitem(self): entry_points()['missing'] def test_entry_points_groups_get(self): - """ - Prior versions of entry_points() returned a dict. Ensure - that callers using '.get()' are supported but warned to - migrate. - """ + # Prior versions of entry_points() returned a dict. Ensure + # that callers using '.get()' are supported but warned to + # migrate. with warnings.catch_warnings(record=True): entry_points().get('missing', 'default') == 'default' entry_points().get('entries', 'default') == entry_points()['entries'] @@ -259,7 +251,7 @@ def test_find_distributions_specified_path(self): assert any(dist.metadata['Name'] == 'distinfo-pkg' for dist in dists) def test_distribution_at_pathlib(self): - """Demonstrate how to load metadata direct from a directory.""" + # Demonstrate how to load metadata direct from a directory. dist_info_path = self.site_dir / 'distinfo_pkg-1.0.0.dist-info' dist = Distribution.at(dist_info_path) assert dist.version == '1.0.0' diff --git a/Lib/test/test_importlib/test_path.py b/Lib/test/test_importlib/test_path.py index 2110770e2ac09..d6ed09a9e0d0f 100644 --- a/Lib/test/test_importlib/test_path.py +++ b/Lib/test/test_importlib/test_path.py @@ -29,11 +29,9 @@ class PathDiskTests(PathTests, unittest.TestCase): data = data01 def test_natural_path(self): - """ - Guarantee the internal implementation detail that - file-system-backed resources do not get the tempdir - treatment. - """ + # Guarantee the internal implementation detail that + # file-system-backed resources do not get the tempdir + # treatment. with resources.path(self.data, 'utf-8.file') as path: assert 'data' in str(path) diff --git a/Lib/test/test_importlib/test_reader.py b/Lib/test/test_importlib/test_reader.py index 905d4fcdece74..b0bf49b8ba7f2 100644 --- a/Lib/test/test_importlib/test_reader.py +++ b/Lib/test/test_importlib/test_reader.py @@ -60,7 +60,6 @@ def test_open_file(self): path.open() def test_join_path(self): - print('test_join_path') prefix = os.path.abspath(os.path.join(__file__, '..')) data01 = os.path.join(prefix, 'data01') path = MultiplexedPath(self.folder, data01) diff --git a/Lib/test/test_importlib/test_util.py b/Lib/test/test_importlib/test_util.py index 17de46666acba..104452267c067 100644 --- a/Lib/test/test_importlib/test_util.py +++ b/Lib/test/test_importlib/test_util.py @@ -845,22 +845,20 @@ class MagicNumberTests(unittest.TestCase): 'only applies to candidate or final python release levels' ) def test_magic_number(self): - """ - Each python minor release should generally have a MAGIC_NUMBER - that does not change once the release reaches candidate status. - - Once a release reaches candidate status, the value of the constant - EXPECTED_MAGIC_NUMBER in this test should be changed. - This test will then check that the actual MAGIC_NUMBER matches - the expected value for the release. - - In exceptional cases, it may be required to change the MAGIC_NUMBER - for a maintenance release. In this case the change should be - discussed in python-dev. If a change is required, community - stakeholders such as OS package maintainers must be notified - in advance. Such exceptional releases will then require an - adjustment to this test case. - """ + # Each python minor release should generally have a MAGIC_NUMBER + # that does not change once the release reaches candidate status. + + # Once a release reaches candidate status, the value of the constant + # EXPECTED_MAGIC_NUMBER in this test should be changed. + # This test will then check that the actual MAGIC_NUMBER matches + # the expected value for the release. + + # In exceptional cases, it may be required to change the MAGIC_NUMBER + # for a maintenance release. In this case the change should be + # discussed in python-dev. If a change is required, community + # stakeholders such as OS package maintainers must be notified + # in advance. Such exceptional releases will then require an + # adjustment to this test case. EXPECTED_MAGIC_NUMBER = 3413 actual = int.from_bytes(importlib.util.MAGIC_NUMBER[:2], 'little') diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst new file mode 100644 index 0000000000000..3bb1a66d0f7fd --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst @@ -0,0 +1 @@ +Raise ImportWarning when calling find_loader(). diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 0fac913f4cfea..465ec0cd6dd0e 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -2156,529 +2156,534 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, 105,109,112,111,114,116,101,114,95,99,97,99,104,101,99,3, 0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,4, - 0,0,0,67,0,0,0,115,110,0,0,0,116,0,124,2, - 100,1,131,2,114,13,124,2,160,1,124,1,161,1,92,2, - 125,3,125,4,110,21,116,2,160,3,124,2,161,1,155,0, - 100,2,157,2,125,5,116,4,160,5,124,5,116,6,161,2, - 1,0,124,2,160,7,124,1,161,1,125,3,103,0,125,4, - 124,3,100,0,117,1,114,44,116,2,160,8,124,1,124,3, - 161,2,83,0,116,2,160,9,124,1,100,0,161,2,125,6, - 124,4,124,6,95,10,124,6,83,0,41,3,78,114,148,0, - 0,0,122,53,46,102,105,110,100,95,115,112,101,99,40,41, - 32,110,111,116,32,102,111,117,110,100,59,32,102,97,108,108, - 105,110,103,32,98,97,99,107,32,116,111,32,102,105,110,100, - 95,109,111,100,117,108,101,40,41,41,11,114,140,0,0,0, - 114,148,0,0,0,114,146,0,0,0,90,12,95,111,98,106, - 101,99,116,95,110,97,109,101,114,88,0,0,0,114,89,0, - 0,0,114,149,0,0,0,114,217,0,0,0,114,212,0,0, - 0,114,194,0,0,0,114,189,0,0,0,41,7,114,209,0, - 0,0,114,150,0,0,0,114,68,1,0,0,114,151,0,0, - 0,114,152,0,0,0,114,153,0,0,0,114,198,0,0,0, - 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, - 16,95,108,101,103,97,99,121,95,103,101,116,95,115,112,101, - 99,41,5,0,0,115,24,0,0,0,10,4,16,1,16,2, - 12,2,10,1,4,1,8,1,12,1,12,1,6,1,4,1, - 255,128,122,27,80,97,116,104,70,105,110,100,101,114,46,95, - 108,101,103,97,99,121,95,103,101,116,95,115,112,101,99,78, - 99,4,0,0,0,0,0,0,0,0,0,0,0,9,0,0, - 0,5,0,0,0,67,0,0,0,115,166,0,0,0,103,0, - 125,4,124,2,68,0,93,67,125,5,116,0,124,5,116,1, - 116,2,102,2,131,2,115,14,113,4,124,0,160,3,124,5, - 161,1,125,6,124,6,100,1,117,1,114,71,116,4,124,6, - 100,2,131,2,114,35,124,6,160,5,124,1,124,3,161,2, - 125,7,110,6,124,0,160,6,124,1,124,6,161,2,125,7, - 124,7,100,1,117,0,114,46,113,4,124,7,106,7,100,1, - 117,1,114,55,124,7,2,0,1,0,83,0,124,7,106,8, - 125,8,124,8,100,1,117,0,114,66,116,9,100,3,131,1, - 130,1,124,4,160,10,124,8,161,1,1,0,113,4,116,11, - 160,12,124,1,100,1,161,2,125,7,124,4,124,7,95,8, - 124,7,83,0,41,4,122,63,70,105,110,100,32,116,104,101, - 32,108,111,97,100,101,114,32,111,114,32,110,97,109,101,115, - 112,97,99,101,95,112,97,116,104,32,102,111,114,32,116,104, - 105,115,32,109,111,100,117,108,101,47,112,97,99,107,97,103, - 101,32,110,97,109,101,46,78,114,214,0,0,0,122,19,115, - 112,101,99,32,109,105,115,115,105,110,103,32,108,111,97,100, - 101,114,41,13,114,172,0,0,0,114,97,0,0,0,218,5, - 98,121,116,101,115,114,73,1,0,0,114,140,0,0,0,114, - 214,0,0,0,114,74,1,0,0,114,151,0,0,0,114,189, - 0,0,0,114,129,0,0,0,114,178,0,0,0,114,146,0, - 0,0,114,194,0,0,0,41,9,114,209,0,0,0,114,150, - 0,0,0,114,58,0,0,0,114,213,0,0,0,218,14,110, - 97,109,101,115,112,97,99,101,95,112,97,116,104,90,5,101, - 110,116,114,121,114,68,1,0,0,114,198,0,0,0,114,152, + 0,0,0,67,0,0,0,115,138,0,0,0,116,0,124,2, + 100,1,131,2,114,27,116,1,160,2,124,2,161,1,155,0, + 100,2,157,2,125,3,116,3,160,4,124,3,116,5,161,2, + 1,0,124,2,160,6,124,1,161,1,92,2,125,4,125,5, + 110,21,116,1,160,2,124,2,161,1,155,0,100,3,157,2, + 125,3,116,3,160,4,124,3,116,5,161,2,1,0,124,2, + 160,7,124,1,161,1,125,4,103,0,125,5,124,4,100,0, + 117,1,114,58,116,1,160,8,124,1,124,4,161,2,83,0, + 116,1,160,9,124,1,100,0,161,2,125,6,124,5,124,6, + 95,10,124,6,83,0,41,4,78,114,148,0,0,0,122,53, + 46,102,105,110,100,95,115,112,101,99,40,41,32,110,111,116, + 32,102,111,117,110,100,59,32,102,97,108,108,105,110,103,32, + 98,97,99,107,32,116,111,32,102,105,110,100,95,108,111,97, + 100,101,114,40,41,122,53,46,102,105,110,100,95,115,112,101, + 99,40,41,32,110,111,116,32,102,111,117,110,100,59,32,102, + 97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,102, + 105,110,100,95,109,111,100,117,108,101,40,41,41,11,114,140, + 0,0,0,114,146,0,0,0,90,12,95,111,98,106,101,99, + 116,95,110,97,109,101,114,88,0,0,0,114,89,0,0,0, + 114,149,0,0,0,114,148,0,0,0,114,217,0,0,0,114, + 212,0,0,0,114,194,0,0,0,114,189,0,0,0,41,7, + 114,209,0,0,0,114,150,0,0,0,114,68,1,0,0,114, + 153,0,0,0,114,151,0,0,0,114,152,0,0,0,114,198, 0,0,0,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,9,95,103,101,116,95,115,112,101,99,59,5,0, - 0,115,44,0,0,0,4,5,8,1,14,1,2,1,10,1, - 8,1,10,1,14,1,12,2,8,1,2,1,10,1,8,1, - 6,1,8,1,8,1,10,5,2,128,12,2,6,1,4,1, - 255,128,122,20,80,97,116,104,70,105,110,100,101,114,46,95, - 103,101,116,95,115,112,101,99,99,4,0,0,0,0,0,0, - 0,0,0,0,0,6,0,0,0,5,0,0,0,67,0,0, - 0,115,94,0,0,0,124,2,100,1,117,0,114,7,116,0, - 106,1,125,2,124,0,160,2,124,1,124,2,124,3,161,3, - 125,4,124,4,100,1,117,0,114,20,100,1,83,0,124,4, - 106,3,100,1,117,0,114,45,124,4,106,4,125,5,124,5, - 114,43,100,1,124,4,95,5,116,6,124,1,124,5,124,0, - 106,2,131,3,124,4,95,4,124,4,83,0,100,1,83,0, - 124,4,83,0,41,2,122,141,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,39, - 102,117,108,108,110,97,109,101,39,32,111,110,32,115,121,115, - 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,46, - 10,10,32,32,32,32,32,32,32,32,84,104,101,32,115,101, - 97,114,99,104,32,105,115,32,98,97,115,101,100,32,111,110, - 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, - 97,110,100,32,115,121,115,46,112,97,116,104,95,105,109,112, - 111,114,116,101,114,95,99,97,99,104,101,46,10,32,32,32, - 32,32,32,32,32,78,41,7,114,16,0,0,0,114,58,0, - 0,0,114,77,1,0,0,114,151,0,0,0,114,189,0,0, - 0,114,192,0,0,0,114,33,1,0,0,41,6,114,209,0, - 0,0,114,150,0,0,0,114,58,0,0,0,114,213,0,0, - 0,114,198,0,0,0,114,76,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,214,0,0,0,91, - 5,0,0,115,28,0,0,0,8,6,6,1,14,1,8,1, - 4,1,10,1,6,1,4,1,6,3,16,1,4,1,4,2, - 4,2,255,128,122,20,80,97,116,104,70,105,110,100,101,114, - 46,102,105,110,100,95,115,112,101,99,99,3,0,0,0,0, - 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, - 0,0,0,115,30,0,0,0,124,0,160,0,124,1,124,2, - 161,2,125,3,124,3,100,1,117,0,114,12,100,1,83,0, - 124,3,106,1,83,0,41,2,122,170,102,105,110,100,32,116, - 104,101,32,109,111,100,117,108,101,32,111,110,32,115,121,115, - 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,32, - 98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116, - 104,95,104,111,111,107,115,32,97,110,100,10,32,32,32,32, - 32,32,32,32,115,121,115,46,112,97,116,104,95,105,109,112, - 111,114,116,101,114,95,99,97,99,104,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, - 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, - 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, - 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, - 32,32,32,32,78,114,215,0,0,0,114,216,0,0,0,114, - 7,0,0,0,114,7,0,0,0,114,8,0,0,0,114,217, - 0,0,0,115,5,0,0,115,10,0,0,0,12,8,8,1, - 4,1,6,1,255,128,122,22,80,97,116,104,70,105,110,100, - 101,114,46,102,105,110,100,95,109,111,100,117,108,101,99,0, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4, - 0,0,0,79,0,0,0,115,28,0,0,0,100,1,100,2, - 108,0,109,1,125,2,1,0,124,2,106,2,124,0,105,0, - 124,1,164,1,142,1,83,0,41,4,97,32,1,0,0,10, - 32,32,32,32,32,32,32,32,70,105,110,100,32,100,105,115, - 116,114,105,98,117,116,105,111,110,115,46,10,10,32,32,32, - 32,32,32,32,32,82,101,116,117,114,110,32,97,110,32,105, - 116,101,114,97,98,108,101,32,111,102,32,97,108,108,32,68, - 105,115,116,114,105,98,117,116,105,111,110,32,105,110,115,116, - 97,110,99,101,115,32,99,97,112,97,98,108,101,32,111,102, - 10,32,32,32,32,32,32,32,32,108,111,97,100,105,110,103, - 32,116,104,101,32,109,101,116,97,100,97,116,97,32,102,111, - 114,32,112,97,99,107,97,103,101,115,32,109,97,116,99,104, - 105,110,103,32,96,96,99,111,110,116,101,120,116,46,110,97, - 109,101,96,96,10,32,32,32,32,32,32,32,32,40,111,114, - 32,97,108,108,32,110,97,109,101,115,32,105,102,32,96,96, - 78,111,110,101,96,96,32,105,110,100,105,99,97,116,101,100, - 41,32,97,108,111,110,103,32,116,104,101,32,112,97,116,104, - 115,32,105,110,32,116,104,101,32,108,105,115,116,10,32,32, - 32,32,32,32,32,32,111,102,32,100,105,114,101,99,116,111, - 114,105,101,115,32,96,96,99,111,110,116,101,120,116,46,112, - 97,116,104,96,96,46,10,32,32,32,32,32,32,32,32,114, - 0,0,0,0,41,1,218,18,77,101,116,97,100,97,116,97, - 80,97,116,104,70,105,110,100,101,114,78,41,3,90,18,105, - 109,112,111,114,116,108,105,98,46,109,101,116,97,100,97,116, - 97,114,78,1,0,0,218,18,102,105,110,100,95,100,105,115, - 116,114,105,98,117,116,105,111,110,115,41,3,114,131,0,0, - 0,114,132,0,0,0,114,78,1,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,79,1,0,0,128, - 5,0,0,115,6,0,0,0,12,10,16,1,255,128,122,29, - 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, - 100,105,115,116,114,105,98,117,116,105,111,110,115,41,1,78, - 41,2,78,78,41,1,78,41,14,114,137,0,0,0,114,136, - 0,0,0,114,138,0,0,0,114,139,0,0,0,114,220,0, - 0,0,114,64,1,0,0,114,70,1,0,0,114,221,0,0, - 0,114,73,1,0,0,114,74,1,0,0,114,77,1,0,0, - 114,214,0,0,0,114,217,0,0,0,114,79,1,0,0,114, - 7,0,0,0,114,7,0,0,0,114,7,0,0,0,114,8, - 0,0,0,114,63,1,0,0,248,4,0,0,115,38,0,0, - 0,8,0,4,2,2,2,10,1,2,9,10,1,2,12,10, - 1,2,21,10,1,2,17,12,1,2,31,12,1,2,23,12, - 1,2,12,14,1,255,128,114,63,1,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,64,0,0,0,115,90,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, - 100,5,132,0,90,5,101,6,90,7,100,6,100,7,132,0, - 90,8,100,8,100,9,132,0,90,9,100,19,100,11,100,12, - 132,1,90,10,100,13,100,14,132,0,90,11,101,12,100,15, - 100,16,132,0,131,1,90,13,100,17,100,18,132,0,90,14, - 100,10,83,0,41,20,218,10,70,105,108,101,70,105,110,100, - 101,114,122,172,70,105,108,101,45,98,97,115,101,100,32,102, - 105,110,100,101,114,46,10,10,32,32,32,32,73,110,116,101, - 114,97,99,116,105,111,110,115,32,119,105,116,104,32,116,104, - 101,32,102,105,108,101,32,115,121,115,116,101,109,32,97,114, - 101,32,99,97,99,104,101,100,32,102,111,114,32,112,101,114, - 102,111,114,109,97,110,99,101,44,32,98,101,105,110,103,10, - 32,32,32,32,114,101,102,114,101,115,104,101,100,32,119,104, - 101,110,32,116,104,101,32,100,105,114,101,99,116,111,114,121, - 32,116,104,101,32,102,105,110,100,101,114,32,105,115,32,104, - 97,110,100,108,105,110,103,32,104,97,115,32,98,101,101,110, - 32,109,111,100,105,102,105,101,100,46,10,10,32,32,32,32, - 99,2,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,6,0,0,0,7,0,0,0,115,84,0,0,0,103,0, - 125,3,124,2,68,0,93,16,92,2,137,0,125,4,124,3, - 160,0,135,0,102,1,100,1,100,2,132,8,124,4,68,0, - 131,1,161,1,1,0,113,4,124,3,124,0,95,1,124,1, - 112,27,100,3,124,0,95,2,100,4,124,0,95,3,116,4, - 131,0,124,0,95,5,116,4,131,0,124,0,95,6,100,5, - 83,0,41,6,122,154,73,110,105,116,105,97,108,105,122,101, - 32,119,105,116,104,32,116,104,101,32,112,97,116,104,32,116, - 111,32,115,101,97,114,99,104,32,111,110,32,97,110,100,32, - 97,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101, - 114,32,111,102,10,32,32,32,32,32,32,32,32,50,45,116, - 117,112,108,101,115,32,99,111,110,116,97,105,110,105,110,103, - 32,116,104,101,32,108,111,97,100,101,114,32,97,110,100,32, - 116,104,101,32,102,105,108,101,32,115,117,102,102,105,120,101, - 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, - 32,32,32,32,32,114,101,99,111,103,110,105,122,101,115,46, - 99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,51,0,0,0,115,22,0,0,0,124,0, - 93,7,125,1,124,1,136,0,102,2,86,0,1,0,113,1, - 100,0,83,0,114,121,0,0,0,114,7,0,0,0,114,29, - 1,0,0,169,1,114,151,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,9,0,0,0,157,5,0,0,114,14,0, - 0,0,122,38,70,105,108,101,70,105,110,100,101,114,46,95, - 95,105,110,105,116,95,95,46,60,108,111,99,97,108,115,62, - 46,60,103,101,110,101,120,112,114,62,114,86,0,0,0,114, - 116,0,0,0,78,41,7,114,178,0,0,0,218,8,95,108, - 111,97,100,101,114,115,114,58,0,0,0,218,11,95,112,97, - 116,104,95,109,116,105,109,101,218,3,115,101,116,218,11,95, - 112,97,116,104,95,99,97,99,104,101,218,19,95,114,101,108, - 97,120,101,100,95,112,97,116,104,95,99,97,99,104,101,41, - 5,114,130,0,0,0,114,58,0,0,0,218,14,108,111,97, - 100,101,114,95,100,101,116,97,105,108,115,90,7,108,111,97, - 100,101,114,115,114,200,0,0,0,114,7,0,0,0,114,81, - 1,0,0,114,8,0,0,0,114,223,0,0,0,151,5,0, - 0,115,18,0,0,0,4,4,12,1,26,1,6,1,10,2, - 6,1,8,1,12,1,255,128,122,19,70,105,108,101,70,105, - 110,100,101,114,46,95,95,105,110,105,116,95,95,99,1,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0, - 0,0,67,0,0,0,115,10,0,0,0,100,1,124,0,95, - 0,100,2,83,0,41,3,122,31,73,110,118,97,108,105,100, - 97,116,101,32,116,104,101,32,100,105,114,101,99,116,111,114, - 121,32,109,116,105,109,101,46,114,116,0,0,0,78,41,1, - 114,83,1,0,0,114,8,1,0,0,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,64,1,0,0,165,5, - 0,0,114,69,0,0,0,122,28,70,105,108,101,70,105,110, - 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, - 97,99,104,101,115,99,2,0,0,0,0,0,0,0,0,0, - 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,42, - 0,0,0,124,0,160,0,124,1,161,1,125,2,124,2,100, - 1,117,0,114,13,100,1,103,0,102,2,83,0,124,2,106, - 1,124,2,106,2,112,19,103,0,102,2,83,0,41,2,122, - 197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, - 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32, - 111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101, - 10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101, - 32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114, - 110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116, - 45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, - 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, - 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, - 32,32,32,32,32,32,78,41,3,114,214,0,0,0,114,151, - 0,0,0,114,189,0,0,0,41,3,114,130,0,0,0,114, - 150,0,0,0,114,198,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,148,0,0,0,171,5,0, - 0,115,10,0,0,0,10,7,8,1,8,1,16,1,255,128, - 122,22,70,105,108,101,70,105,110,100,101,114,46,102,105,110, - 100,95,108,111,97,100,101,114,99,6,0,0,0,0,0,0, - 0,0,0,0,0,7,0,0,0,6,0,0,0,67,0,0, - 0,115,26,0,0,0,124,1,124,2,124,3,131,2,125,6, - 116,0,124,2,124,3,124,6,124,4,100,1,141,4,83,0, - 41,2,78,114,188,0,0,0,41,1,114,201,0,0,0,41, - 7,114,130,0,0,0,114,199,0,0,0,114,150,0,0,0, - 114,58,0,0,0,90,4,115,109,115,108,114,213,0,0,0, - 114,151,0,0,0,114,7,0,0,0,114,7,0,0,0,114, - 8,0,0,0,114,77,1,0,0,183,5,0,0,115,10,0, - 0,0,10,1,8,1,2,1,6,255,255,128,122,20,70,105, - 108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,112, - 101,99,78,99,3,0,0,0,0,0,0,0,0,0,0,0, - 14,0,0,0,8,0,0,0,67,0,0,0,115,92,1,0, - 0,100,1,125,3,124,1,160,0,100,2,161,1,100,3,25, - 0,125,4,122,12,116,1,124,0,106,2,112,17,116,3,160, - 4,161,0,131,1,106,5,125,5,87,0,110,9,4,0,116, - 6,121,173,1,0,1,0,1,0,100,4,125,5,89,0,124, - 5,124,0,106,7,107,3,114,43,124,0,160,8,161,0,1, - 0,124,5,124,0,95,7,116,9,131,0,114,54,124,0,106, - 10,125,6,124,4,160,11,161,0,125,7,110,5,124,0,106, - 12,125,6,124,4,125,7,124,7,124,6,118,0,114,106,116, - 13,124,0,106,2,124,4,131,2,125,8,124,0,106,14,68, - 0,93,29,92,2,125,9,125,10,100,5,124,9,23,0,125, - 11,116,13,124,8,124,11,131,2,125,12,116,15,124,12,131, - 1,114,101,124,0,160,16,124,10,124,1,124,12,124,8,103, - 1,124,2,161,5,2,0,1,0,83,0,113,72,116,17,124, - 8,131,1,125,3,124,0,106,14,68,0,93,41,92,2,125, - 9,125,10,116,13,124,0,106,2,124,4,124,9,23,0,131, - 2,125,12,116,18,106,19,100,6,124,12,100,3,100,7,141, - 3,1,0,124,7,124,9,23,0,124,6,118,0,114,150,116, - 15,124,12,131,1,114,150,124,0,160,16,124,10,124,1,124, - 12,100,8,124,2,161,5,2,0,1,0,83,0,113,109,124, - 3,114,171,116,18,160,19,100,9,124,8,161,2,1,0,116, - 18,160,20,124,1,100,8,161,2,125,13,124,8,103,1,124, - 13,95,21,124,13,83,0,100,8,83,0,119,0,41,10,122, - 111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,115, - 112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,99, - 105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,116, - 104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,99, - 44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,116, - 32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,32, - 70,114,86,0,0,0,114,45,0,0,0,114,116,0,0,0, - 114,223,0,0,0,122,9,116,114,121,105,110,103,32,123,125, - 41,1,90,9,118,101,114,98,111,115,105,116,121,78,122,25, - 112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,97, - 99,101,32,102,111,114,32,123,125,41,22,114,55,0,0,0, - 114,63,0,0,0,114,58,0,0,0,114,19,0,0,0,114, - 70,0,0,0,114,22,1,0,0,114,64,0,0,0,114,83, - 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, - 114,22,0,0,0,114,86,1,0,0,114,117,0,0,0,114, - 85,1,0,0,114,54,0,0,0,114,82,1,0,0,114,68, - 0,0,0,114,77,1,0,0,114,71,0,0,0,114,146,0, - 0,0,114,160,0,0,0,114,194,0,0,0,114,189,0,0, - 0,41,14,114,130,0,0,0,114,150,0,0,0,114,213,0, - 0,0,90,12,105,115,95,110,97,109,101,115,112,97,99,101, - 90,11,116,97,105,108,95,109,111,100,117,108,101,114,180,0, - 0,0,90,5,99,97,99,104,101,90,12,99,97,99,104,101, - 95,109,111,100,117,108,101,90,9,98,97,115,101,95,112,97, - 116,104,114,30,1,0,0,114,199,0,0,0,90,13,105,110, - 105,116,95,102,105,108,101,110,97,109,101,90,9,102,117,108, - 108,95,112,97,116,104,114,198,0,0,0,114,7,0,0,0, - 114,7,0,0,0,114,8,0,0,0,114,214,0,0,0,188, - 5,0,0,115,80,0,0,0,4,5,14,1,2,1,24,1, - 12,1,6,1,10,1,8,1,6,1,6,2,6,1,10,1, - 6,2,4,1,8,2,12,1,14,1,8,1,10,1,8,1, - 24,1,2,255,8,5,14,2,16,1,16,1,12,1,8,1, - 10,1,4,1,8,255,2,128,4,2,12,1,12,1,8,1, - 4,1,4,1,2,219,255,128,122,20,70,105,108,101,70,105, - 110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,1, - 0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,10, - 0,0,0,67,0,0,0,115,190,0,0,0,124,0,106,0, - 125,1,122,11,116,1,160,2,124,1,112,11,116,1,160,3, - 161,0,161,1,125,2,87,0,110,12,4,0,116,4,116,5, - 116,6,102,3,121,94,1,0,1,0,1,0,103,0,125,2, - 89,0,116,7,106,8,160,9,100,1,161,1,115,39,116,10, - 124,2,131,1,124,0,95,11,110,37,116,10,131,0,125,3, - 124,2,68,0,93,28,125,4,124,4,160,12,100,2,161,1, - 92,3,125,5,125,6,125,7,124,6,114,65,100,3,160,13, - 124,5,124,7,160,14,161,0,161,2,125,8,110,2,124,5, - 125,8,124,3,160,15,124,8,161,1,1,0,113,44,124,3, - 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,92, - 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, - 100,6,83,0,100,6,83,0,119,0,41,7,122,68,70,105, - 108,108,32,116,104,101,32,99,97,99,104,101,32,111,102,32, - 112,111,116,101,110,116,105,97,108,32,109,111,100,117,108,101, - 115,32,97,110,100,32,112,97,99,107,97,103,101,115,32,102, - 111,114,32,116,104,105,115,32,100,105,114,101,99,116,111,114, - 121,46,114,15,0,0,0,114,86,0,0,0,114,76,0,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,83,0,0,0,115,20,0,0,0,104, - 0,124,0,93,6,125,1,124,1,160,0,161,0,146,2,113, - 2,83,0,114,7,0,0,0,41,1,114,117,0,0,0,41, - 2,114,5,0,0,0,90,2,102,110,114,7,0,0,0,114, - 7,0,0,0,114,8,0,0,0,114,13,0,0,0,9,6, - 0,0,115,4,0,0,0,20,0,255,128,122,41,70,105,108, - 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, - 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, - 116,99,111,109,112,62,78,41,18,114,58,0,0,0,114,19, - 0,0,0,90,7,108,105,115,116,100,105,114,114,70,0,0, - 0,114,71,1,0,0,218,15,80,101,114,109,105,115,115,105, - 111,110,69,114,114,111,114,218,18,78,111,116,65,68,105,114, - 101,99,116,111,114,121,69,114,114,111,114,114,16,0,0,0, - 114,26,0,0,0,114,27,0,0,0,114,84,1,0,0,114, - 85,1,0,0,114,112,0,0,0,114,77,0,0,0,114,117, - 0,0,0,218,3,97,100,100,114,28,0,0,0,114,86,1, - 0,0,41,9,114,130,0,0,0,114,58,0,0,0,90,8, - 99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,95, - 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,114, - 56,1,0,0,114,128,0,0,0,114,40,1,0,0,114,30, - 1,0,0,90,8,110,101,119,95,110,97,109,101,114,7,0, - 0,0,114,7,0,0,0,114,8,0,0,0,114,88,1,0, - 0,236,5,0,0,115,40,0,0,0,6,2,2,1,22,1, - 18,1,6,3,12,3,12,1,6,7,8,1,16,1,4,1, - 18,1,4,2,12,1,6,1,12,1,20,1,4,255,2,233, - 255,128,122,22,70,105,108,101,70,105,110,100,101,114,46,95, - 102,105,108,108,95,99,97,99,104,101,99,1,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,7, - 0,0,0,115,18,0,0,0,135,0,135,1,102,2,100,1, - 100,2,132,8,125,2,124,2,83,0,41,4,97,20,1,0, - 0,65,32,99,108,97,115,115,32,109,101,116,104,111,100,32, - 119,104,105,99,104,32,114,101,116,117,114,110,115,32,97,32, - 99,108,111,115,117,114,101,32,116,111,32,117,115,101,32,111, - 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,10, - 32,32,32,32,32,32,32,32,119,104,105,99,104,32,119,105, - 108,108,32,114,101,116,117,114,110,32,97,110,32,105,110,115, - 116,97,110,99,101,32,117,115,105,110,103,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,108,111,97,100,101,114, - 115,32,97,110,100,32,116,104,101,32,112,97,116,104,10,32, - 32,32,32,32,32,32,32,99,97,108,108,101,100,32,111,110, - 32,116,104,101,32,99,108,111,115,117,114,101,46,10,10,32, - 32,32,32,32,32,32,32,73,102,32,116,104,101,32,112,97, - 116,104,32,99,97,108,108,101,100,32,111,110,32,116,104,101, - 32,99,108,111,115,117,114,101,32,105,115,32,110,111,116,32, - 97,32,100,105,114,101,99,116,111,114,121,44,32,73,109,112, - 111,114,116,69,114,114,111,114,32,105,115,10,32,32,32,32, - 32,32,32,32,114,97,105,115,101,100,46,10,10,32,32,32, - 32,32,32,32,32,99,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,36, - 0,0,0,116,0,124,0,131,1,115,10,116,1,100,1,124, - 0,100,2,141,2,130,1,136,0,124,0,103,1,136,1,162, - 1,82,0,142,0,83,0,41,4,122,45,80,97,116,104,32, - 104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,108, - 105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,108, - 101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,100, - 105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,115, - 117,112,112,111,114,116,101,100,114,62,0,0,0,78,41,2, - 114,71,0,0,0,114,129,0,0,0,114,62,0,0,0,169, - 2,114,209,0,0,0,114,87,1,0,0,114,7,0,0,0, - 114,8,0,0,0,218,24,112,97,116,104,95,104,111,111,107, - 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,21, - 6,0,0,115,8,0,0,0,8,2,12,1,16,1,255,128, - 122,54,70,105,108,101,70,105,110,100,101,114,46,112,97,116, - 104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,46, - 112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105, - 108,101,70,105,110,100,101,114,78,114,7,0,0,0,41,3, - 114,209,0,0,0,114,87,1,0,0,114,93,1,0,0,114, - 7,0,0,0,114,92,1,0,0,114,8,0,0,0,218,9, - 112,97,116,104,95,104,111,111,107,11,6,0,0,115,6,0, - 0,0,14,10,4,6,255,128,122,20,70,105,108,101,70,105, - 110,100,101,114,46,112,97,116,104,95,104,111,111,107,99,1, - 0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3, - 0,0,0,67,0,0,0,114,53,1,0,0,41,2,78,122, - 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125, - 41,41,2,114,77,0,0,0,114,58,0,0,0,114,8,1, + 0,0,218,16,95,108,101,103,97,99,121,95,103,101,116,95, + 115,112,101,99,41,5,0,0,115,28,0,0,0,10,4,16, + 1,12,2,16,1,16,2,12,2,10,1,4,1,8,1,12, + 1,12,1,6,1,4,1,255,128,122,27,80,97,116,104,70, + 105,110,100,101,114,46,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,78,99,4,0,0,0,0,0,0,0, + 0,0,0,0,9,0,0,0,5,0,0,0,67,0,0,0, + 115,166,0,0,0,103,0,125,4,124,2,68,0,93,67,125, + 5,116,0,124,5,116,1,116,2,102,2,131,2,115,14,113, + 4,124,0,160,3,124,5,161,1,125,6,124,6,100,1,117, + 1,114,71,116,4,124,6,100,2,131,2,114,35,124,6,160, + 5,124,1,124,3,161,2,125,7,110,6,124,0,160,6,124, + 1,124,6,161,2,125,7,124,7,100,1,117,0,114,46,113, + 4,124,7,106,7,100,1,117,1,114,55,124,7,2,0,1, + 0,83,0,124,7,106,8,125,8,124,8,100,1,117,0,114, + 66,116,9,100,3,131,1,130,1,124,4,160,10,124,8,161, + 1,1,0,113,4,116,11,160,12,124,1,100,1,161,2,125, + 7,124,4,124,7,95,8,124,7,83,0,41,4,122,63,70, + 105,110,100,32,116,104,101,32,108,111,97,100,101,114,32,111, + 114,32,110,97,109,101,115,112,97,99,101,95,112,97,116,104, + 32,102,111,114,32,116,104,105,115,32,109,111,100,117,108,101, + 47,112,97,99,107,97,103,101,32,110,97,109,101,46,78,114, + 214,0,0,0,122,19,115,112,101,99,32,109,105,115,115,105, + 110,103,32,108,111,97,100,101,114,41,13,114,172,0,0,0, + 114,97,0,0,0,218,5,98,121,116,101,115,114,73,1,0, + 0,114,140,0,0,0,114,214,0,0,0,114,74,1,0,0, + 114,151,0,0,0,114,189,0,0,0,114,129,0,0,0,114, + 178,0,0,0,114,146,0,0,0,114,194,0,0,0,41,9, + 114,209,0,0,0,114,150,0,0,0,114,58,0,0,0,114, + 213,0,0,0,218,14,110,97,109,101,115,112,97,99,101,95, + 112,97,116,104,90,5,101,110,116,114,121,114,68,1,0,0, + 114,198,0,0,0,114,152,0,0,0,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,9,95,103,101,116,95, + 115,112,101,99,62,5,0,0,115,44,0,0,0,4,5,8, + 1,14,1,2,1,10,1,8,1,10,1,14,1,12,2,8, + 1,2,1,10,1,8,1,6,1,8,1,8,1,10,5,2, + 128,12,2,6,1,4,1,255,128,122,20,80,97,116,104,70, + 105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,99, + 4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0, + 5,0,0,0,67,0,0,0,115,94,0,0,0,124,2,100, + 1,117,0,114,7,116,0,106,1,125,2,124,0,160,2,124, + 1,124,2,124,3,161,3,125,4,124,4,100,1,117,0,114, + 20,100,1,83,0,124,4,106,3,100,1,117,0,114,45,124, + 4,106,4,125,5,124,5,114,43,100,1,124,4,95,5,116, + 6,124,1,124,5,124,0,106,2,131,3,124,4,95,4,124, + 4,83,0,100,1,83,0,124,4,83,0,41,2,122,141,84, + 114,121,32,116,111,32,102,105,110,100,32,97,32,115,112,101, + 99,32,102,111,114,32,39,102,117,108,108,110,97,109,101,39, + 32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,32, + 39,112,97,116,104,39,46,10,10,32,32,32,32,32,32,32, + 32,84,104,101,32,115,101,97,114,99,104,32,105,115,32,98, + 97,115,101,100,32,111,110,32,115,121,115,46,112,97,116,104, + 95,104,111,111,107,115,32,97,110,100,32,115,121,115,46,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,46,10,32,32,32,32,32,32,32,32,78,41,7,114, + 16,0,0,0,114,58,0,0,0,114,77,1,0,0,114,151, + 0,0,0,114,189,0,0,0,114,192,0,0,0,114,33,1, + 0,0,41,6,114,209,0,0,0,114,150,0,0,0,114,58, + 0,0,0,114,213,0,0,0,114,198,0,0,0,114,76,1, 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, - 0,114,54,1,0,0,29,6,0,0,114,47,1,0,0,122, - 19,70,105,108,101,70,105,110,100,101,114,46,95,95,114,101, - 112,114,95,95,41,1,78,41,15,114,137,0,0,0,114,136, - 0,0,0,114,138,0,0,0,114,139,0,0,0,114,223,0, - 0,0,114,64,1,0,0,114,154,0,0,0,114,217,0,0, - 0,114,148,0,0,0,114,77,1,0,0,114,214,0,0,0, - 114,88,1,0,0,114,221,0,0,0,114,94,1,0,0,114, - 54,1,0,0,114,7,0,0,0,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,114,80,1,0,0,142,5,0, - 0,115,26,0,0,0,8,0,4,2,8,7,8,14,4,4, - 8,2,8,12,10,5,8,48,2,31,10,1,12,17,255,128, - 114,80,1,0,0,99,4,0,0,0,0,0,0,0,0,0, - 0,0,6,0,0,0,8,0,0,0,67,0,0,0,115,144, - 0,0,0,124,0,160,0,100,1,161,1,125,4,124,0,160, - 0,100,2,161,1,125,5,124,4,115,33,124,5,114,18,124, - 5,106,1,125,4,110,15,124,2,124,3,107,2,114,28,116, - 2,124,1,124,2,131,2,125,4,110,5,116,3,124,1,124, - 2,131,2,125,4,124,5,115,42,116,4,124,1,124,2,124, - 4,100,3,141,3,125,5,122,19,124,5,124,0,100,2,60, - 0,124,4,124,0,100,1,60,0,124,2,124,0,100,4,60, - 0,124,3,124,0,100,5,60,0,87,0,100,0,83,0,4, - 0,116,5,121,71,1,0,1,0,1,0,89,0,100,0,83, - 0,119,0,41,6,78,218,10,95,95,108,111,97,100,101,114, - 95,95,218,8,95,95,115,112,101,99,95,95,114,81,1,0, - 0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,99, - 97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,151, - 0,0,0,114,27,1,0,0,114,21,1,0,0,114,201,0, - 0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,90, - 2,110,115,114,128,0,0,0,90,8,112,97,116,104,110,97, - 109,101,90,9,99,112,97,116,104,110,97,109,101,114,151,0, - 0,0,114,198,0,0,0,114,7,0,0,0,114,7,0,0, - 0,114,8,0,0,0,218,14,95,102,105,120,95,117,112,95, - 109,111,100,117,108,101,35,6,0,0,115,38,0,0,0,10, - 2,10,1,4,1,4,1,8,1,8,1,12,1,10,2,4, - 1,14,1,2,1,8,1,8,1,8,1,14,1,12,1,6, - 2,2,254,255,128,114,99,1,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,38,0,0,0,116,0,116,1,160,2,161,0, - 102,2,125,0,116,3,116,4,102,2,125,1,116,5,116,6, - 102,2,125,2,124,0,124,1,124,2,103,3,83,0,41,2, - 122,95,82,101,116,117,114,110,115,32,97,32,108,105,115,116, - 32,111,102,32,102,105,108,101,45,98,97,115,101,100,32,109, - 111,100,117,108,101,32,108,111,97,100,101,114,115,46,10,10, - 32,32,32,32,69,97,99,104,32,105,116,101,109,32,105,115, - 32,97,32,116,117,112,108,101,32,40,108,111,97,100,101,114, - 44,32,115,117,102,102,105,120,101,115,41,46,10,32,32,32, - 32,78,41,7,114,17,1,0,0,114,174,0,0,0,218,18, - 101,120,116,101,110,115,105,111,110,95,115,117,102,102,105,120, - 101,115,114,21,1,0,0,114,113,0,0,0,114,27,1,0, - 0,114,101,0,0,0,41,3,90,10,101,120,116,101,110,115, - 105,111,110,115,90,6,115,111,117,114,99,101,90,8,98,121, - 116,101,99,111,100,101,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,114,195,0,0,0,58,6,0,0,115,10, - 0,0,0,12,5,8,1,8,1,10,1,255,128,114,195,0, - 0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,1, - 0,0,0,1,0,0,0,67,0,0,0,115,8,0,0,0, - 124,0,97,0,100,0,83,0,114,121,0,0,0,41,1,114, - 146,0,0,0,41,1,218,17,95,98,111,111,116,115,116,114, - 97,112,95,109,111,100,117,108,101,114,7,0,0,0,114,7, - 0,0,0,114,8,0,0,0,218,21,95,115,101,116,95,98, - 111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,69, - 6,0,0,115,4,0,0,0,8,2,255,128,114,102,1,0, - 0,99,1,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116, - 0,124,0,131,1,1,0,116,1,131,0,125,1,116,2,106, - 3,160,4,116,5,106,6,124,1,142,0,103,1,161,1,1, - 0,116,2,106,7,160,8,116,9,161,1,1,0,100,1,83, - 0,41,2,122,41,73,110,115,116,97,108,108,32,116,104,101, - 32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,111, - 114,116,32,99,111,109,112,111,110,101,110,116,115,46,78,41, - 10,114,102,1,0,0,114,195,0,0,0,114,16,0,0,0, - 114,69,1,0,0,114,178,0,0,0,114,80,1,0,0,114, - 94,1,0,0,218,9,109,101,116,97,95,112,97,116,104,114, - 197,0,0,0,114,63,1,0,0,41,2,114,101,1,0,0, - 90,17,115,117,112,112,111,114,116,101,100,95,108,111,97,100, - 101,114,115,114,7,0,0,0,114,7,0,0,0,114,8,0, - 0,0,218,8,95,105,110,115,116,97,108,108,74,6,0,0, - 115,10,0,0,0,8,2,6,1,20,1,16,1,255,128,114, - 104,1,0,0,41,1,114,75,0,0,0,41,1,78,41,3, - 78,78,78,41,2,114,0,0,0,0,114,0,0,0,0,41, - 1,84,41,1,78,41,1,78,41,83,114,139,0,0,0,114, - 146,0,0,0,114,174,0,0,0,114,79,0,0,0,114,16, - 0,0,0,114,88,0,0,0,114,171,0,0,0,114,26,0, - 0,0,114,218,0,0,0,90,2,110,116,114,19,0,0,0, - 114,203,0,0,0,90,5,112,111,115,105,120,114,48,0,0, - 0,218,3,97,108,108,114,51,0,0,0,114,52,0,0,0, - 114,73,0,0,0,114,29,0,0,0,90,37,95,67,65,83, - 69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,76, - 65,84,70,79,82,77,83,95,66,89,84,69,83,95,75,69, - 89,114,28,0,0,0,114,30,0,0,0,114,22,0,0,0, - 114,37,0,0,0,114,43,0,0,0,114,46,0,0,0,114, - 54,0,0,0,114,61,0,0,0,114,63,0,0,0,114,67, - 0,0,0,114,68,0,0,0,114,71,0,0,0,114,74,0, - 0,0,114,84,0,0,0,218,4,116,121,112,101,218,8,95, - 95,99,111,100,101,95,95,114,173,0,0,0,114,35,0,0, - 0,114,159,0,0,0,114,34,0,0,0,114,40,0,0,0, - 114,251,0,0,0,114,104,0,0,0,114,100,0,0,0,114, - 113,0,0,0,114,197,0,0,0,114,100,1,0,0,114,219, - 0,0,0,114,101,0,0,0,90,23,68,69,66,85,71,95, - 66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,69, - 83,90,27,79,80,84,73,77,73,90,69,68,95,66,89,84, - 69,67,79,68,69,95,83,85,70,70,73,88,69,83,114,109, - 0,0,0,114,114,0,0,0,114,120,0,0,0,114,124,0, - 0,0,114,126,0,0,0,114,147,0,0,0,114,154,0,0, - 0,114,163,0,0,0,114,167,0,0,0,114,169,0,0,0, - 114,176,0,0,0,114,181,0,0,0,114,182,0,0,0,114, - 187,0,0,0,218,6,111,98,106,101,99,116,114,196,0,0, - 0,114,201,0,0,0,114,202,0,0,0,114,222,0,0,0, - 114,236,0,0,0,114,254,0,0,0,114,21,1,0,0,114, - 27,1,0,0,114,17,1,0,0,114,33,1,0,0,114,59, - 1,0,0,114,63,1,0,0,114,80,1,0,0,114,99,1, - 0,0,114,195,0,0,0,114,102,1,0,0,114,104,1,0, - 0,114,7,0,0,0,114,7,0,0,0,114,7,0,0,0, - 114,8,0,0,0,218,8,60,109,111,100,117,108,101,62,1, - 0,0,0,115,172,0,0,0,4,0,4,22,8,3,8,1, - 8,1,8,1,8,1,10,3,4,1,8,1,10,1,8,2, - 4,3,10,1,6,2,22,2,8,1,10,1,14,1,4,4, - 4,1,2,1,2,1,4,255,8,4,6,16,8,3,8,5, - 8,5,8,6,8,6,8,12,8,10,8,9,8,5,8,7, - 10,9,10,22,0,127,16,26,12,1,4,2,4,1,6,2, - 4,1,10,1,8,2,6,2,8,2,16,2,8,71,8,40, - 8,19,8,12,8,12,8,31,8,17,8,33,8,28,10,24, - 10,13,10,10,8,11,6,14,4,3,2,1,12,255,14,68, - 14,64,16,30,0,127,14,17,18,50,18,45,18,25,14,53, - 14,63,14,49,0,127,14,23,0,127,10,22,8,23,8,11, - 12,5,255,128, + 0,114,214,0,0,0,94,5,0,0,115,28,0,0,0,8, + 6,6,1,14,1,8,1,4,1,10,1,6,1,4,1,6, + 3,16,1,4,1,4,2,4,2,255,128,122,20,80,97,116, + 104,70,105,110,100,101,114,46,102,105,110,100,95,115,112,101, + 99,99,3,0,0,0,0,0,0,0,0,0,0,0,4,0, + 0,0,4,0,0,0,67,0,0,0,115,30,0,0,0,124, + 0,160,0,124,1,124,2,161,2,125,3,124,3,100,1,117, + 0,114,12,100,1,83,0,124,3,106,1,83,0,41,2,122, + 170,102,105,110,100,32,116,104,101,32,109,111,100,117,108,101, + 32,111,110,32,115,121,115,46,112,97,116,104,32,111,114,32, + 39,112,97,116,104,39,32,98,97,115,101,100,32,111,110,32, + 115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,97, + 110,100,10,32,32,32,32,32,32,32,32,115,121,115,46,112, + 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, + 104,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,32,32,32,32,78,114,215,0,0, + 0,114,216,0,0,0,114,7,0,0,0,114,7,0,0,0, + 114,8,0,0,0,114,217,0,0,0,118,5,0,0,115,10, + 0,0,0,12,8,8,1,4,1,6,1,255,128,122,22,80, + 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,99,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,4,0,0,0,79,0,0,0,115,28, + 0,0,0,100,1,100,2,108,0,109,1,125,2,1,0,124, + 2,106,2,124,0,105,0,124,1,164,1,142,1,83,0,41, + 4,97,32,1,0,0,10,32,32,32,32,32,32,32,32,70, + 105,110,100,32,100,105,115,116,114,105,98,117,116,105,111,110, + 115,46,10,10,32,32,32,32,32,32,32,32,82,101,116,117, + 114,110,32,97,110,32,105,116,101,114,97,98,108,101,32,111, + 102,32,97,108,108,32,68,105,115,116,114,105,98,117,116,105, + 111,110,32,105,110,115,116,97,110,99,101,115,32,99,97,112, + 97,98,108,101,32,111,102,10,32,32,32,32,32,32,32,32, + 108,111,97,100,105,110,103,32,116,104,101,32,109,101,116,97, + 100,97,116,97,32,102,111,114,32,112,97,99,107,97,103,101, + 115,32,109,97,116,99,104,105,110,103,32,96,96,99,111,110, + 116,101,120,116,46,110,97,109,101,96,96,10,32,32,32,32, + 32,32,32,32,40,111,114,32,97,108,108,32,110,97,109,101, + 115,32,105,102,32,96,96,78,111,110,101,96,96,32,105,110, + 100,105,99,97,116,101,100,41,32,97,108,111,110,103,32,116, + 104,101,32,112,97,116,104,115,32,105,110,32,116,104,101,32, + 108,105,115,116,10,32,32,32,32,32,32,32,32,111,102,32, + 100,105,114,101,99,116,111,114,105,101,115,32,96,96,99,111, + 110,116,101,120,116,46,112,97,116,104,96,96,46,10,32,32, + 32,32,32,32,32,32,114,0,0,0,0,41,1,218,18,77, + 101,116,97,100,97,116,97,80,97,116,104,70,105,110,100,101, + 114,78,41,3,90,18,105,109,112,111,114,116,108,105,98,46, + 109,101,116,97,100,97,116,97,114,78,1,0,0,218,18,102, + 105,110,100,95,100,105,115,116,114,105,98,117,116,105,111,110, + 115,41,3,114,131,0,0,0,114,132,0,0,0,114,78,1, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,79,1,0,0,131,5,0,0,115,6,0,0,0,12, + 10,16,1,255,128,122,29,80,97,116,104,70,105,110,100,101, + 114,46,102,105,110,100,95,100,105,115,116,114,105,98,117,116, + 105,111,110,115,41,1,78,41,2,78,78,41,1,78,41,14, + 114,137,0,0,0,114,136,0,0,0,114,138,0,0,0,114, + 139,0,0,0,114,220,0,0,0,114,64,1,0,0,114,70, + 1,0,0,114,221,0,0,0,114,73,1,0,0,114,74,1, + 0,0,114,77,1,0,0,114,214,0,0,0,114,217,0,0, + 0,114,79,1,0,0,114,7,0,0,0,114,7,0,0,0, + 114,7,0,0,0,114,8,0,0,0,114,63,1,0,0,248, + 4,0,0,115,38,0,0,0,8,0,4,2,2,2,10,1, + 2,9,10,1,2,12,10,1,2,21,10,1,2,20,12,1, + 2,31,12,1,2,23,12,1,2,12,14,1,255,128,114,63, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,64,0,0,0,115,90,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, + 3,132,0,90,4,100,4,100,5,132,0,90,5,101,6,90, + 7,100,6,100,7,132,0,90,8,100,8,100,9,132,0,90, + 9,100,19,100,11,100,12,132,1,90,10,100,13,100,14,132, + 0,90,11,101,12,100,15,100,16,132,0,131,1,90,13,100, + 17,100,18,132,0,90,14,100,10,83,0,41,20,218,10,70, + 105,108,101,70,105,110,100,101,114,122,172,70,105,108,101,45, + 98,97,115,101,100,32,102,105,110,100,101,114,46,10,10,32, + 32,32,32,73,110,116,101,114,97,99,116,105,111,110,115,32, + 119,105,116,104,32,116,104,101,32,102,105,108,101,32,115,121, + 115,116,101,109,32,97,114,101,32,99,97,99,104,101,100,32, + 102,111,114,32,112,101,114,102,111,114,109,97,110,99,101,44, + 32,98,101,105,110,103,10,32,32,32,32,114,101,102,114,101, + 115,104,101,100,32,119,104,101,110,32,116,104,101,32,100,105, + 114,101,99,116,111,114,121,32,116,104,101,32,102,105,110,100, + 101,114,32,105,115,32,104,97,110,100,108,105,110,103,32,104, + 97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,100, + 46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,0, + 0,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0, + 115,84,0,0,0,103,0,125,3,124,2,68,0,93,16,92, + 2,137,0,125,4,124,3,160,0,135,0,102,1,100,1,100, + 2,132,8,124,4,68,0,131,1,161,1,1,0,113,4,124, + 3,124,0,95,1,124,1,112,27,100,3,124,0,95,2,100, + 4,124,0,95,3,116,4,131,0,124,0,95,5,116,4,131, + 0,124,0,95,6,100,5,83,0,41,6,122,154,73,110,105, + 116,105,97,108,105,122,101,32,119,105,116,104,32,116,104,101, + 32,112,97,116,104,32,116,111,32,115,101,97,114,99,104,32, + 111,110,32,97,110,100,32,97,32,118,97,114,105,97,98,108, + 101,32,110,117,109,98,101,114,32,111,102,10,32,32,32,32, + 32,32,32,32,50,45,116,117,112,108,101,115,32,99,111,110, + 116,97,105,110,105,110,103,32,116,104,101,32,108,111,97,100, + 101,114,32,97,110,100,32,116,104,101,32,102,105,108,101,32, + 115,117,102,102,105,120,101,115,32,116,104,101,32,108,111,97, + 100,101,114,10,32,32,32,32,32,32,32,32,114,101,99,111, + 103,110,105,122,101,115,46,99,1,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,51,0,0,0, + 115,22,0,0,0,124,0,93,7,125,1,124,1,136,0,102, + 2,86,0,1,0,113,1,100,0,83,0,114,121,0,0,0, + 114,7,0,0,0,114,29,1,0,0,169,1,114,151,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,9,0,0,0, + 160,5,0,0,114,14,0,0,0,122,38,70,105,108,101,70, + 105,110,100,101,114,46,95,95,105,110,105,116,95,95,46,60, + 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114, + 62,114,86,0,0,0,114,116,0,0,0,78,41,7,114,178, + 0,0,0,218,8,95,108,111,97,100,101,114,115,114,58,0, + 0,0,218,11,95,112,97,116,104,95,109,116,105,109,101,218, + 3,115,101,116,218,11,95,112,97,116,104,95,99,97,99,104, + 101,218,19,95,114,101,108,97,120,101,100,95,112,97,116,104, + 95,99,97,99,104,101,41,5,114,130,0,0,0,114,58,0, + 0,0,218,14,108,111,97,100,101,114,95,100,101,116,97,105, + 108,115,90,7,108,111,97,100,101,114,115,114,200,0,0,0, + 114,7,0,0,0,114,81,1,0,0,114,8,0,0,0,114, + 223,0,0,0,154,5,0,0,115,18,0,0,0,4,4,12, + 1,26,1,6,1,10,2,6,1,8,1,12,1,255,128,122, + 19,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110, + 105,116,95,95,99,1,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,67,0,0,0,115,10,0, + 0,0,100,1,124,0,95,0,100,2,83,0,41,3,122,31, + 73,110,118,97,108,105,100,97,116,101,32,116,104,101,32,100, + 105,114,101,99,116,111,114,121,32,109,116,105,109,101,46,114, + 116,0,0,0,78,41,1,114,83,1,0,0,114,8,1,0, + 0,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,64,1,0,0,168,5,0,0,114,69,0,0,0,122,28, + 70,105,108,101,70,105,110,100,101,114,46,105,110,118,97,108, + 105,100,97,116,101,95,99,97,99,104,101,115,99,2,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,67,0,0,0,115,42,0,0,0,124,0,160,0,124,1, + 161,1,125,2,124,2,100,1,117,0,114,13,100,1,103,0, + 102,2,83,0,124,2,106,1,124,2,106,2,112,19,103,0, + 102,2,83,0,41,2,122,197,84,114,121,32,116,111,32,102, + 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,97, + 109,101,115,112,97,99,101,10,32,32,32,32,32,32,32,32, + 112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,115, + 46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,101, + 114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,105, + 111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102, + 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101, + 97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,3, + 114,214,0,0,0,114,151,0,0,0,114,189,0,0,0,41, + 3,114,130,0,0,0,114,150,0,0,0,114,198,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 148,0,0,0,174,5,0,0,115,10,0,0,0,10,7,8, + 1,8,1,16,1,255,128,122,22,70,105,108,101,70,105,110, + 100,101,114,46,102,105,110,100,95,108,111,97,100,101,114,99, + 6,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0, + 6,0,0,0,67,0,0,0,115,26,0,0,0,124,1,124, + 2,124,3,131,2,125,6,116,0,124,2,124,3,124,6,124, + 4,100,1,141,4,83,0,41,2,78,114,188,0,0,0,41, + 1,114,201,0,0,0,41,7,114,130,0,0,0,114,199,0, + 0,0,114,150,0,0,0,114,58,0,0,0,90,4,115,109, + 115,108,114,213,0,0,0,114,151,0,0,0,114,7,0,0, + 0,114,7,0,0,0,114,8,0,0,0,114,77,1,0,0, + 186,5,0,0,115,10,0,0,0,10,1,8,1,2,1,6, + 255,255,128,122,20,70,105,108,101,70,105,110,100,101,114,46, + 95,103,101,116,95,115,112,101,99,78,99,3,0,0,0,0, + 0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67, + 0,0,0,115,92,1,0,0,100,1,125,3,124,1,160,0, + 100,2,161,1,100,3,25,0,125,4,122,12,116,1,124,0, + 106,2,112,17,116,3,160,4,161,0,131,1,106,5,125,5, + 87,0,110,9,4,0,116,6,121,173,1,0,1,0,1,0, + 100,4,125,5,89,0,124,5,124,0,106,7,107,3,114,43, + 124,0,160,8,161,0,1,0,124,5,124,0,95,7,116,9, + 131,0,114,54,124,0,106,10,125,6,124,4,160,11,161,0, + 125,7,110,5,124,0,106,12,125,6,124,4,125,7,124,7, + 124,6,118,0,114,106,116,13,124,0,106,2,124,4,131,2, + 125,8,124,0,106,14,68,0,93,29,92,2,125,9,125,10, + 100,5,124,9,23,0,125,11,116,13,124,8,124,11,131,2, + 125,12,116,15,124,12,131,1,114,101,124,0,160,16,124,10, + 124,1,124,12,124,8,103,1,124,2,161,5,2,0,1,0, + 83,0,113,72,116,17,124,8,131,1,125,3,124,0,106,14, + 68,0,93,41,92,2,125,9,125,10,116,13,124,0,106,2, + 124,4,124,9,23,0,131,2,125,12,116,18,106,19,100,6, + 124,12,100,3,100,7,141,3,1,0,124,7,124,9,23,0, + 124,6,118,0,114,150,116,15,124,12,131,1,114,150,124,0, + 160,16,124,10,124,1,124,12,100,8,124,2,161,5,2,0, + 1,0,83,0,113,109,124,3,114,171,116,18,160,19,100,9, + 124,8,161,2,1,0,116,18,160,20,124,1,100,8,161,2, + 125,13,124,8,103,1,124,13,95,21,124,13,83,0,100,8, + 83,0,119,0,41,10,122,111,84,114,121,32,116,111,32,102, + 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, + 116,117,114,110,115,32,116,104,101,32,109,97,116,99,104,105, + 110,103,32,115,112,101,99,44,32,111,114,32,78,111,110,101, + 32,105,102,32,110,111,116,32,102,111,117,110,100,46,10,32, + 32,32,32,32,32,32,32,70,114,86,0,0,0,114,45,0, + 0,0,114,116,0,0,0,114,223,0,0,0,122,9,116,114, + 121,105,110,103,32,123,125,41,1,90,9,118,101,114,98,111, + 115,105,116,121,78,122,25,112,111,115,115,105,98,108,101,32, + 110,97,109,101,115,112,97,99,101,32,102,111,114,32,123,125, + 41,22,114,55,0,0,0,114,63,0,0,0,114,58,0,0, + 0,114,19,0,0,0,114,70,0,0,0,114,22,1,0,0, + 114,64,0,0,0,114,83,1,0,0,218,11,95,102,105,108, + 108,95,99,97,99,104,101,114,22,0,0,0,114,86,1,0, + 0,114,117,0,0,0,114,85,1,0,0,114,54,0,0,0, + 114,82,1,0,0,114,68,0,0,0,114,77,1,0,0,114, + 71,0,0,0,114,146,0,0,0,114,160,0,0,0,114,194, + 0,0,0,114,189,0,0,0,41,14,114,130,0,0,0,114, + 150,0,0,0,114,213,0,0,0,90,12,105,115,95,110,97, + 109,101,115,112,97,99,101,90,11,116,97,105,108,95,109,111, + 100,117,108,101,114,180,0,0,0,90,5,99,97,99,104,101, + 90,12,99,97,99,104,101,95,109,111,100,117,108,101,90,9, + 98,97,115,101,95,112,97,116,104,114,30,1,0,0,114,199, + 0,0,0,90,13,105,110,105,116,95,102,105,108,101,110,97, + 109,101,90,9,102,117,108,108,95,112,97,116,104,114,198,0, + 0,0,114,7,0,0,0,114,7,0,0,0,114,8,0,0, + 0,114,214,0,0,0,191,5,0,0,115,80,0,0,0,4, + 5,14,1,2,1,24,1,12,1,6,1,10,1,8,1,6, + 1,6,2,6,1,10,1,6,2,4,1,8,2,12,1,14, + 1,8,1,10,1,8,1,24,1,2,255,8,5,14,2,16, + 1,16,1,12,1,8,1,10,1,4,1,8,255,2,128,4, + 2,12,1,12,1,8,1,4,1,4,1,2,219,255,128,122, + 20,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100, + 95,115,112,101,99,99,1,0,0,0,0,0,0,0,0,0, + 0,0,9,0,0,0,10,0,0,0,67,0,0,0,115,190, + 0,0,0,124,0,106,0,125,1,122,11,116,1,160,2,124, + 1,112,11,116,1,160,3,161,0,161,1,125,2,87,0,110, + 12,4,0,116,4,116,5,116,6,102,3,121,94,1,0,1, + 0,1,0,103,0,125,2,89,0,116,7,106,8,160,9,100, + 1,161,1,115,39,116,10,124,2,131,1,124,0,95,11,110, + 37,116,10,131,0,125,3,124,2,68,0,93,28,125,4,124, + 4,160,12,100,2,161,1,92,3,125,5,125,6,125,7,124, + 6,114,65,100,3,160,13,124,5,124,7,160,14,161,0,161, + 2,125,8,110,2,124,5,125,8,124,3,160,15,124,8,161, + 1,1,0,113,44,124,3,124,0,95,11,116,7,106,8,160, + 9,116,16,161,1,114,92,100,4,100,5,132,0,124,2,68, + 0,131,1,124,0,95,17,100,6,83,0,100,6,83,0,119, + 0,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97, + 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108, + 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99, + 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100, + 105,114,101,99,116,111,114,121,46,114,15,0,0,0,114,86, + 0,0,0,114,76,0,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0, + 0,115,20,0,0,0,104,0,124,0,93,6,125,1,124,1, + 160,0,161,0,146,2,113,2,83,0,114,7,0,0,0,41, + 1,114,117,0,0,0,41,2,114,5,0,0,0,90,2,102, + 110,114,7,0,0,0,114,7,0,0,0,114,8,0,0,0, + 114,13,0,0,0,12,6,0,0,115,4,0,0,0,20,0, + 255,128,122,41,70,105,108,101,70,105,110,100,101,114,46,95, + 102,105,108,108,95,99,97,99,104,101,46,60,108,111,99,97, + 108,115,62,46,60,115,101,116,99,111,109,112,62,78,41,18, + 114,58,0,0,0,114,19,0,0,0,90,7,108,105,115,116, + 100,105,114,114,70,0,0,0,114,71,1,0,0,218,15,80, + 101,114,109,105,115,115,105,111,110,69,114,114,111,114,218,18, + 78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,114, + 111,114,114,16,0,0,0,114,26,0,0,0,114,27,0,0, + 0,114,84,1,0,0,114,85,1,0,0,114,112,0,0,0, + 114,77,0,0,0,114,117,0,0,0,218,3,97,100,100,114, + 28,0,0,0,114,86,1,0,0,41,9,114,130,0,0,0, + 114,58,0,0,0,90,8,99,111,110,116,101,110,116,115,90, + 21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,111, + 110,116,101,110,116,115,114,56,1,0,0,114,128,0,0,0, + 114,40,1,0,0,114,30,1,0,0,90,8,110,101,119,95, + 110,97,109,101,114,7,0,0,0,114,7,0,0,0,114,8, + 0,0,0,114,88,1,0,0,239,5,0,0,115,40,0,0, + 0,6,2,2,1,22,1,18,1,6,3,12,3,12,1,6, + 7,8,1,16,1,4,1,18,1,4,2,12,1,6,1,12, + 1,20,1,4,255,2,233,255,128,122,22,70,105,108,101,70, + 105,110,100,101,114,46,95,102,105,108,108,95,99,97,99,104, + 101,99,1,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,7,0,0,0,115,18,0,0,0,135, + 0,135,1,102,2,100,1,100,2,132,8,125,2,124,2,83, + 0,41,4,97,20,1,0,0,65,32,99,108,97,115,115,32, + 109,101,116,104,111,100,32,119,104,105,99,104,32,114,101,116, + 117,114,110,115,32,97,32,99,108,111,115,117,114,101,32,116, + 111,32,117,115,101,32,111,110,32,115,121,115,46,112,97,116, + 104,95,104,111,111,107,10,32,32,32,32,32,32,32,32,119, + 104,105,99,104,32,119,105,108,108,32,114,101,116,117,114,110, + 32,97,110,32,105,110,115,116,97,110,99,101,32,117,115,105, + 110,103,32,116,104,101,32,115,112,101,99,105,102,105,101,100, + 32,108,111,97,100,101,114,115,32,97,110,100,32,116,104,101, + 32,112,97,116,104,10,32,32,32,32,32,32,32,32,99,97, + 108,108,101,100,32,111,110,32,116,104,101,32,99,108,111,115, + 117,114,101,46,10,10,32,32,32,32,32,32,32,32,73,102, + 32,116,104,101,32,112,97,116,104,32,99,97,108,108,101,100, + 32,111,110,32,116,104,101,32,99,108,111,115,117,114,101,32, + 105,115,32,110,111,116,32,97,32,100,105,114,101,99,116,111, + 114,121,44,32,73,109,112,111,114,116,69,114,114,111,114,32, + 105,115,10,32,32,32,32,32,32,32,32,114,97,105,115,101, + 100,46,10,10,32,32,32,32,32,32,32,32,99,1,0,0, + 0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0, + 0,19,0,0,0,115,36,0,0,0,116,0,124,0,131,1, + 115,10,116,1,100,1,124,0,100,2,141,2,130,1,136,0, + 124,0,103,1,136,1,162,1,82,0,142,0,83,0,41,4, + 122,45,80,97,116,104,32,104,111,111,107,32,102,111,114,32, + 105,109,112,111,114,116,108,105,98,46,109,97,99,104,105,110, + 101,114,121,46,70,105,108,101,70,105,110,100,101,114,46,122, + 30,111,110,108,121,32,100,105,114,101,99,116,111,114,105,101, + 115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,114, + 62,0,0,0,78,41,2,114,71,0,0,0,114,129,0,0, + 0,114,62,0,0,0,169,2,114,209,0,0,0,114,87,1, + 0,0,114,7,0,0,0,114,8,0,0,0,218,24,112,97, + 116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101, + 70,105,110,100,101,114,24,6,0,0,115,8,0,0,0,8, + 2,12,1,16,1,255,128,122,54,70,105,108,101,70,105,110, + 100,101,114,46,112,97,116,104,95,104,111,111,107,46,60,108, + 111,99,97,108,115,62,46,112,97,116,104,95,104,111,111,107, + 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,78, + 114,7,0,0,0,41,3,114,209,0,0,0,114,87,1,0, + 0,114,93,1,0,0,114,7,0,0,0,114,92,1,0,0, + 114,8,0,0,0,218,9,112,97,116,104,95,104,111,111,107, + 14,6,0,0,115,6,0,0,0,14,10,4,6,255,128,122, + 20,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, + 95,104,111,111,107,99,1,0,0,0,0,0,0,0,0,0, + 0,0,1,0,0,0,3,0,0,0,67,0,0,0,114,53, + 1,0,0,41,2,78,122,16,70,105,108,101,70,105,110,100, + 101,114,40,123,33,114,125,41,41,2,114,77,0,0,0,114, + 58,0,0,0,114,8,1,0,0,114,7,0,0,0,114,7, + 0,0,0,114,8,0,0,0,114,54,1,0,0,32,6,0, + 0,114,47,1,0,0,122,19,70,105,108,101,70,105,110,100, + 101,114,46,95,95,114,101,112,114,95,95,41,1,78,41,15, + 114,137,0,0,0,114,136,0,0,0,114,138,0,0,0,114, + 139,0,0,0,114,223,0,0,0,114,64,1,0,0,114,154, + 0,0,0,114,217,0,0,0,114,148,0,0,0,114,77,1, + 0,0,114,214,0,0,0,114,88,1,0,0,114,221,0,0, + 0,114,94,1,0,0,114,54,1,0,0,114,7,0,0,0, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,114, + 80,1,0,0,145,5,0,0,115,26,0,0,0,8,0,4, + 2,8,7,8,14,4,4,8,2,8,12,10,5,8,48,2, + 31,10,1,12,17,255,128,114,80,1,0,0,99,4,0,0, + 0,0,0,0,0,0,0,0,0,6,0,0,0,8,0,0, + 0,67,0,0,0,115,144,0,0,0,124,0,160,0,100,1, + 161,1,125,4,124,0,160,0,100,2,161,1,125,5,124,4, + 115,33,124,5,114,18,124,5,106,1,125,4,110,15,124,2, + 124,3,107,2,114,28,116,2,124,1,124,2,131,2,125,4, + 110,5,116,3,124,1,124,2,131,2,125,4,124,5,115,42, + 116,4,124,1,124,2,124,4,100,3,141,3,125,5,122,19, + 124,5,124,0,100,2,60,0,124,4,124,0,100,1,60,0, + 124,2,124,0,100,4,60,0,124,3,124,0,100,5,60,0, + 87,0,100,0,83,0,4,0,116,5,121,71,1,0,1,0, + 1,0,89,0,100,0,83,0,119,0,41,6,78,218,10,95, + 95,108,111,97,100,101,114,95,95,218,8,95,95,115,112,101, + 99,95,95,114,81,1,0,0,90,8,95,95,102,105,108,101, + 95,95,90,10,95,95,99,97,99,104,101,100,95,95,41,6, + 218,3,103,101,116,114,151,0,0,0,114,27,1,0,0,114, + 21,1,0,0,114,201,0,0,0,218,9,69,120,99,101,112, + 116,105,111,110,41,6,90,2,110,115,114,128,0,0,0,90, + 8,112,97,116,104,110,97,109,101,90,9,99,112,97,116,104, + 110,97,109,101,114,151,0,0,0,114,198,0,0,0,114,7, + 0,0,0,114,7,0,0,0,114,8,0,0,0,218,14,95, + 102,105,120,95,117,112,95,109,111,100,117,108,101,38,6,0, + 0,115,38,0,0,0,10,2,10,1,4,1,4,1,8,1, + 8,1,12,1,10,2,4,1,14,1,2,1,8,1,8,1, + 8,1,14,1,12,1,6,2,2,254,255,128,114,99,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,116, + 0,116,1,160,2,161,0,102,2,125,0,116,3,116,4,102, + 2,125,1,116,5,116,6,102,2,125,2,124,0,124,1,124, + 2,103,3,83,0,41,2,122,95,82,101,116,117,114,110,115, + 32,97,32,108,105,115,116,32,111,102,32,102,105,108,101,45, + 98,97,115,101,100,32,109,111,100,117,108,101,32,108,111,97, + 100,101,114,115,46,10,10,32,32,32,32,69,97,99,104,32, + 105,116,101,109,32,105,115,32,97,32,116,117,112,108,101,32, + 40,108,111,97,100,101,114,44,32,115,117,102,102,105,120,101, + 115,41,46,10,32,32,32,32,78,41,7,114,17,1,0,0, + 114,174,0,0,0,218,18,101,120,116,101,110,115,105,111,110, + 95,115,117,102,102,105,120,101,115,114,21,1,0,0,114,113, + 0,0,0,114,27,1,0,0,114,101,0,0,0,41,3,90, + 10,101,120,116,101,110,115,105,111,110,115,90,6,115,111,117, + 114,99,101,90,8,98,121,116,101,99,111,100,101,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,114,195,0,0, + 0,61,6,0,0,115,10,0,0,0,12,5,8,1,8,1, + 10,1,255,128,114,195,0,0,0,99,1,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,1,0,0,0,67,0, + 0,0,115,8,0,0,0,124,0,97,0,100,0,83,0,114, + 121,0,0,0,41,1,114,146,0,0,0,41,1,218,17,95, + 98,111,111,116,115,116,114,97,112,95,109,111,100,117,108,101, + 114,7,0,0,0,114,7,0,0,0,114,8,0,0,0,218, + 21,95,115,101,116,95,98,111,111,116,115,116,114,97,112,95, + 109,111,100,117,108,101,72,6,0,0,115,4,0,0,0,8, + 2,255,128,114,102,1,0,0,99,1,0,0,0,0,0,0, + 0,0,0,0,0,2,0,0,0,4,0,0,0,67,0,0, + 0,115,50,0,0,0,116,0,124,0,131,1,1,0,116,1, + 131,0,125,1,116,2,106,3,160,4,116,5,106,6,124,1, + 142,0,103,1,161,1,1,0,116,2,106,7,160,8,116,9, + 161,1,1,0,100,1,83,0,41,2,122,41,73,110,115,116, + 97,108,108,32,116,104,101,32,112,97,116,104,45,98,97,115, + 101,100,32,105,109,112,111,114,116,32,99,111,109,112,111,110, + 101,110,116,115,46,78,41,10,114,102,1,0,0,114,195,0, + 0,0,114,16,0,0,0,114,69,1,0,0,114,178,0,0, + 0,114,80,1,0,0,114,94,1,0,0,218,9,109,101,116, + 97,95,112,97,116,104,114,197,0,0,0,114,63,1,0,0, + 41,2,114,101,1,0,0,90,17,115,117,112,112,111,114,116, + 101,100,95,108,111,97,100,101,114,115,114,7,0,0,0,114, + 7,0,0,0,114,8,0,0,0,218,8,95,105,110,115,116, + 97,108,108,77,6,0,0,115,10,0,0,0,8,2,6,1, + 20,1,16,1,255,128,114,104,1,0,0,41,1,114,75,0, + 0,0,41,1,78,41,3,78,78,78,41,2,114,0,0,0, + 0,114,0,0,0,0,41,1,84,41,1,78,41,1,78,41, + 83,114,139,0,0,0,114,146,0,0,0,114,174,0,0,0, + 114,79,0,0,0,114,16,0,0,0,114,88,0,0,0,114, + 171,0,0,0,114,26,0,0,0,114,218,0,0,0,90,2, + 110,116,114,19,0,0,0,114,203,0,0,0,90,5,112,111, + 115,105,120,114,48,0,0,0,218,3,97,108,108,114,51,0, + 0,0,114,52,0,0,0,114,73,0,0,0,114,29,0,0, + 0,90,37,95,67,65,83,69,95,73,78,83,69,78,83,73, + 84,73,86,69,95,80,76,65,84,70,79,82,77,83,95,66, + 89,84,69,83,95,75,69,89,114,28,0,0,0,114,30,0, + 0,0,114,22,0,0,0,114,37,0,0,0,114,43,0,0, + 0,114,46,0,0,0,114,54,0,0,0,114,61,0,0,0, + 114,63,0,0,0,114,67,0,0,0,114,68,0,0,0,114, + 71,0,0,0,114,74,0,0,0,114,84,0,0,0,218,4, + 116,121,112,101,218,8,95,95,99,111,100,101,95,95,114,173, + 0,0,0,114,35,0,0,0,114,159,0,0,0,114,34,0, + 0,0,114,40,0,0,0,114,251,0,0,0,114,104,0,0, + 0,114,100,0,0,0,114,113,0,0,0,114,197,0,0,0, + 114,100,1,0,0,114,219,0,0,0,114,101,0,0,0,90, + 23,68,69,66,85,71,95,66,89,84,69,67,79,68,69,95, + 83,85,70,70,73,88,69,83,90,27,79,80,84,73,77,73, + 90,69,68,95,66,89,84,69,67,79,68,69,95,83,85,70, + 70,73,88,69,83,114,109,0,0,0,114,114,0,0,0,114, + 120,0,0,0,114,124,0,0,0,114,126,0,0,0,114,147, + 0,0,0,114,154,0,0,0,114,163,0,0,0,114,167,0, + 0,0,114,169,0,0,0,114,176,0,0,0,114,181,0,0, + 0,114,182,0,0,0,114,187,0,0,0,218,6,111,98,106, + 101,99,116,114,196,0,0,0,114,201,0,0,0,114,202,0, + 0,0,114,222,0,0,0,114,236,0,0,0,114,254,0,0, + 0,114,21,1,0,0,114,27,1,0,0,114,17,1,0,0, + 114,33,1,0,0,114,59,1,0,0,114,63,1,0,0,114, + 80,1,0,0,114,99,1,0,0,114,195,0,0,0,114,102, + 1,0,0,114,104,1,0,0,114,7,0,0,0,114,7,0, + 0,0,114,7,0,0,0,114,8,0,0,0,218,8,60,109, + 111,100,117,108,101,62,1,0,0,0,115,172,0,0,0,4, + 0,4,22,8,3,8,1,8,1,8,1,8,1,10,3,4, + 1,8,1,10,1,8,2,4,3,10,1,6,2,22,2,8, + 1,10,1,14,1,4,4,4,1,2,1,2,1,4,255,8, + 4,6,16,8,3,8,5,8,5,8,6,8,6,8,12,8, + 10,8,9,8,5,8,7,10,9,10,22,0,127,16,26,12, + 1,4,2,4,1,6,2,4,1,10,1,8,2,6,2,8, + 2,16,2,8,71,8,40,8,19,8,12,8,12,8,31,8, + 17,8,33,8,28,10,24,10,13,10,10,8,11,6,14,4, + 3,2,1,12,255,14,68,14,64,16,30,0,127,14,17,18, + 50,18,45,18,25,14,53,14,63,14,49,0,127,14,26,0, + 127,10,22,8,23,8,11,12,5,255,128, }; From webhook-mailer at python.org Fri Apr 2 17:25:39 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 21:25:39 -0000 Subject: [Python-checkins] bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Message-ID: https://github.com/python/cpython/commit/b2a91e0c9ee18b50cc86b21211c2258520a9f5d0 commit: b2a91e0c9ee18b50cc86b21211c2258520a9f5d0 branch: master author: Ammar Askar committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-02T14:25:31-07:00 summary: bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Changed the inline mentions of the attributes into a proper attribute list like `SystemExit` has. Automerge-Triggered-By: GH:gvanrossum files: M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 40ccde72d07cc..4dea6701a6bfd 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -402,9 +402,25 @@ The following exceptions are the exceptions that are usually raised. or :func:`eval`, or when reading the initial script or standard input (also interactively). - Instances of this class have attributes :attr:`filename`, :attr:`lineno`, - :attr:`offset` and :attr:`text` for easier access to the details. :func:`str` - of the exception instance returns only the message. + The :func:`str` of the exception instance returns only the error message. + + .. attribute:: filename + + The name of the file the syntax error occurred in. + + .. attribute:: lineno + + Which line number in the file the error occurred in. This is + 1-indexed: the first line in the file has a ``lineno`` of 1. + + .. attribute:: offset + + The column in the line where the error occurred. This is + 1-indexed: the first character in the line has an ``offset`` of 1. + + .. attribute:: text + + The source code text involved in the error. .. exception:: IndentationError From webhook-mailer at python.org Fri Apr 2 18:26:26 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 22:26:26 -0000 Subject: [Python-checkins] bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Message-ID: https://github.com/python/cpython/commit/06653f8d15a8a84ee0f43f739704a9a63c27de54 commit: 06653f8d15a8a84ee0f43f739704a9a63c27de54 branch: 3.8 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-02T15:26:17-07:00 summary: bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Changed the inline mentions of the attributes into a proper attribute list like `SystemExit` has. Automerge-Triggered-By: GH:gvanrossum (cherry picked from commit b2a91e0c9ee18b50cc86b21211c2258520a9f5d0) Co-authored-by: Ammar Askar files: M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index 52a505e0a0ff8..519862cc09d70 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -397,9 +397,25 @@ The following exceptions are the exceptions that are usually raised. or :func:`eval`, or when reading the initial script or standard input (also interactively). - Instances of this class have attributes :attr:`filename`, :attr:`lineno`, - :attr:`offset` and :attr:`text` for easier access to the details. :func:`str` - of the exception instance returns only the message. + The :func:`str` of the exception instance returns only the error message. + + .. attribute:: filename + + The name of the file the syntax error occurred in. + + .. attribute:: lineno + + Which line number in the file the error occurred in. This is + 1-indexed: the first line in the file has a ``lineno`` of 1. + + .. attribute:: offset + + The column in the line where the error occurred. This is + 1-indexed: the first character in the line has an ``offset`` of 1. + + .. attribute:: text + + The source code text involved in the error. .. exception:: IndentationError From webhook-mailer at python.org Fri Apr 2 18:26:38 2021 From: webhook-mailer at python.org (miss-islington) Date: Fri, 02 Apr 2021 22:26:38 -0000 Subject: [Python-checkins] bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Message-ID: https://github.com/python/cpython/commit/63c69440c7adb0de1d191a8d3d100b335d5c2f81 commit: 63c69440c7adb0de1d191a8d3d100b335d5c2f81 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-02T15:26:32-07:00 summary: bpo-43705: Document that SyntaxError's offsets are 1-indexed (GH-25153) Changed the inline mentions of the attributes into a proper attribute list like `SystemExit` has. Automerge-Triggered-By: GH:gvanrossum (cherry picked from commit b2a91e0c9ee18b50cc86b21211c2258520a9f5d0) Co-authored-by: Ammar Askar files: M Doc/library/exceptions.rst diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst index df2cda9d67ad1..28d1ab150c870 100644 --- a/Doc/library/exceptions.rst +++ b/Doc/library/exceptions.rst @@ -397,9 +397,25 @@ The following exceptions are the exceptions that are usually raised. or :func:`eval`, or when reading the initial script or standard input (also interactively). - Instances of this class have attributes :attr:`filename`, :attr:`lineno`, - :attr:`offset` and :attr:`text` for easier access to the details. :func:`str` - of the exception instance returns only the message. + The :func:`str` of the exception instance returns only the error message. + + .. attribute:: filename + + The name of the file the syntax error occurred in. + + .. attribute:: lineno + + Which line number in the file the error occurred in. This is + 1-indexed: the first line in the file has a ``lineno`` of 1. + + .. attribute:: offset + + The column in the line where the error occurred. This is + 1-indexed: the first character in the line has an ``offset`` of 1. + + .. attribute:: text + + The source code text involved in the error. .. exception:: IndentationError From webhook-mailer at python.org Sat Apr 3 16:08:16 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 03 Apr 2021 20:08:16 -0000 Subject: [Python-checkins] Add more tests for the descriptor tutorial (GH-25164) Message-ID: https://github.com/python/cpython/commit/e4c8895ee5457b11f52841b79b51f3c3d6373fef commit: e4c8895ee5457b11f52841b79b51f3c3d6373fef branch: master author: Raymond Hettinger committer: rhettinger date: 2021-04-03T13:07:52-07:00 summary: Add more tests for the descriptor tutorial (GH-25164) files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index 420d9b94306ea..819401ea1385c 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -281,7 +281,9 @@ The new class now logs access to both *name* and *age*: INFO:root:Updating 'name' to 'Catherine C' INFO:root:Updating 'age' to 20 -The two *Person* instances contain only the private names:: +The two *Person* instances contain only the private names: + +.. doctest:: >>> vars(pete) {'_name': 'Peter P', '_age': 10} @@ -710,6 +712,38 @@ perform attribute lookup by way of a helper function: raise return type(obj).__getattr__(obj, name) # __getattr__ +.. doctest:: + :hide: + + + >>> class ClassWithGetAttr: + ... x = 123 + ... def __getattr__(self, attr): + ... return attr.upper() + ... + >>> cw = ClassWithGetAttr() + >>> cw.y = 456 + >>> getattr_hook(cw, 'x') + 123 + >>> getattr_hook(cw, 'y') + 456 + >>> getattr_hook(cw, 'z') + 'Z' + + >>> class ClassWithoutGetAttr: + ... x = 123 + ... + >>> cwo = ClassWithoutGetAttr() + >>> cwo.y = 456 + >>> getattr_hook(cwo, 'x') + 123 + >>> getattr_hook(cwo, 'y') + 456 + >>> getattr_hook(cwo, 'z') + Traceback (most recent call last): + ... + AttributeError: 'ClassWithoutGetAttr' object has no attribute 'z' + So if :meth:`__getattr__` exists, it is called whenever :meth:`__getattribute__` raises :exc:`AttributeError` (either directly or in one of the descriptor calls). @@ -1139,8 +1173,8 @@ If you have ever wondered where *self* comes from in regular methods or where *cls* comes from in class methods, this is it! -Other kinds of methods ----------------------- +Kinds of methods +---------------- Non-data descriptors provide a simple mechanism for variations on the usual patterns of binding functions into methods. @@ -1193,19 +1227,19 @@ example calls are unexciting: class E: @staticmethod def f(x): - print(x) + return x * 10 .. doctest:: >>> E.f(3) - 3 + 30 >>> E().f(3) - 3 + 30 Using the non-data descriptor protocol, a pure Python version of :func:`staticmethod` would look like this: -.. doctest:: +.. testcode:: class StaticMethod: "Emulate PyStaticMethod_Type() in Objects/funcobject.c" @@ -1216,6 +1250,22 @@ Using the non-data descriptor protocol, a pure Python version of def __get__(self, obj, objtype=None): return self.f +.. testcode:: + :hide: + + class E_sim: + @StaticMethod + def f(x): + return x * 10 + +.. doctest:: + :hide: + + >>> E_sim.f(3) + 30 + >>> E_sim().f(3) + 30 + Class methods ------------- From webhook-mailer at python.org Sat Apr 3 16:09:09 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 03 Apr 2021 20:09:09 -0000 Subject: [Python-checkins] Replace broken example code with correct simpler code. (GH-25162) Message-ID: https://github.com/python/cpython/commit/c5354c045c1067549554c35485a12afdcf88a202 commit: c5354c045c1067549554c35485a12afdcf88a202 branch: master author: Raymond Hettinger committer: rhettinger date: 2021-04-03T13:09:01-07:00 summary: Replace broken example code with correct simpler code. (GH-25162) The open() was missing 'w' to indicate it was in a write-mode. Even then, the open().close() operation was distracting because it is an unusual way to "touch" as file. Using os.remove() instead is simpler and less distracting. files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index 819401ea1385c..bf026f4b7e61b 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -115,9 +115,9 @@ different, updated answers each time:: 20 >>> g.size # The games directory has three files 3 - >>> open('games/newfile').close() # Add a fourth file to the directory + >>> os.remove('games/chess') # Delete a game >>> g.size # File count is automatically updated - 4 + 2 Besides showing how descriptors can run computations, this example also reveals the purpose of the parameters to :meth:`__get__`. The *self* From webhook-mailer at python.org Sat Apr 3 16:42:31 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 03 Apr 2021 20:42:31 -0000 Subject: [Python-checkins] Add more tests for the descriptor tutorial (GH-25164) (#25165) Message-ID: https://github.com/python/cpython/commit/f12ae0b31a776c8906c428940f0c1bba48a75a45 commit: f12ae0b31a776c8906c428940f0c1bba48a75a45 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-04-03T13:42:28-07:00 summary: Add more tests for the descriptor tutorial (GH-25164) (#25165) (cherry picked from commit e4c8895ee5457b11f52841b79b51f3c3d6373fef) Co-authored-by: Raymond Hettinger Co-authored-by: Raymond Hettinger files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index c7035bad4b6fa..0ddf1239ed298 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -281,7 +281,9 @@ The new class now logs access to both *name* and *age*: INFO:root:Updating 'name' to 'Catherine C' INFO:root:Updating 'age' to 20 -The two *Person* instances contain only the private names:: +The two *Person* instances contain only the private names: + +.. doctest:: >>> vars(pete) {'_name': 'Peter P', '_age': 10} @@ -710,6 +712,38 @@ perform attribute lookup by way of a helper function: raise return type(obj).__getattr__(obj, name) # __getattr__ +.. doctest:: + :hide: + + + >>> class ClassWithGetAttr: + ... x = 123 + ... def __getattr__(self, attr): + ... return attr.upper() + ... + >>> cw = ClassWithGetAttr() + >>> cw.y = 456 + >>> getattr_hook(cw, 'x') + 123 + >>> getattr_hook(cw, 'y') + 456 + >>> getattr_hook(cw, 'z') + 'Z' + + >>> class ClassWithoutGetAttr: + ... x = 123 + ... + >>> cwo = ClassWithoutGetAttr() + >>> cwo.y = 456 + >>> getattr_hook(cwo, 'x') + 123 + >>> getattr_hook(cwo, 'y') + 456 + >>> getattr_hook(cwo, 'z') + Traceback (most recent call last): + ... + AttributeError: 'ClassWithoutGetAttr' object has no attribute 'z' + So if :meth:`__getattr__` exists, it is called whenever :meth:`__getattribute__` raises :exc:`AttributeError` (either directly or in one of the descriptor calls). @@ -1129,8 +1163,8 @@ If you have ever wondered where *self* comes from in regular methods or where *cls* comes from in class methods, this is it! -Other kinds of methods ----------------------- +Kinds of methods +---------------- Non-data descriptors provide a simple mechanism for variations on the usual patterns of binding functions into methods. @@ -1183,19 +1217,19 @@ example calls are unexciting: class E: @staticmethod def f(x): - print(x) + return x * 10 .. doctest:: >>> E.f(3) - 3 + 30 >>> E().f(3) - 3 + 30 Using the non-data descriptor protocol, a pure Python version of :func:`staticmethod` would look like this: -.. doctest:: +.. testcode:: class StaticMethod: "Emulate PyStaticMethod_Type() in Objects/funcobject.c" @@ -1206,6 +1240,22 @@ Using the non-data descriptor protocol, a pure Python version of def __get__(self, obj, objtype=None): return self.f +.. testcode:: + :hide: + + class E_sim: + @StaticMethod + def f(x): + return x * 10 + +.. doctest:: + :hide: + + >>> E_sim.f(3) + 30 + >>> E_sim().f(3) + 30 + Class methods ------------- From webhook-mailer at python.org Sat Apr 3 16:42:47 2021 From: webhook-mailer at python.org (rhettinger) Date: Sat, 03 Apr 2021 20:42:47 -0000 Subject: [Python-checkins] Replace broken example code with correct simpler code. (GH-25162) (GH-25166) Message-ID: https://github.com/python/cpython/commit/cbfa09b70b745c9d7393c03955600f6d1cf019e3 commit: cbfa09b70b745c9d7393c03955600f6d1cf019e3 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-04-03T13:42:43-07:00 summary: Replace broken example code with correct simpler code. (GH-25162) (GH-25166) files: M Doc/howto/descriptor.rst diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index 0ddf1239ed298..93dd35441f41c 100644 --- a/Doc/howto/descriptor.rst +++ b/Doc/howto/descriptor.rst @@ -115,9 +115,9 @@ different, updated answers each time:: 20 >>> g.size # The games directory has three files 3 - >>> open('games/newfile').close() # Add a fourth file to the directory + >>> os.remove('games/chess') # Delete a game >>> g.size # File count is automatically updated - 4 + 2 Besides showing how descriptors can run computations, this example also reveals the purpose of the parameters to :meth:`__get__`. The *self* From webhook-mailer at python.org Sat Apr 3 18:31:22 2021 From: webhook-mailer at python.org (brettcannon) Date: Sat, 03 Apr 2021 22:31:22 -0000 Subject: [Python-checkins] bpo-43720: Update import-related stdlib deprecation messages to say they will be removed in Python 3.12 (GH-25167) Message-ID: https://github.com/python/cpython/commit/dc6d3e1e4c0c1e4b2210edab8fb4762569dc2936 commit: dc6d3e1e4c0c1e4b2210edab8fb4762569dc2936 branch: master author: Brett Cannon committer: brettcannon date: 2021-04-03T15:31:15-07:00 summary: bpo-43720: Update import-related stdlib deprecation messages to say they will be removed in Python 3.12 (GH-25167) files: A Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst M Lib/imp.py M Lib/importlib/util.py M Lib/pkgutil.py M Lib/test/test_pkgutil.py diff --git a/Lib/imp.py b/Lib/imp.py index 31f8c766381ad..e02aaef344c61 100644 --- a/Lib/imp.py +++ b/Lib/imp.py @@ -28,7 +28,8 @@ import types import warnings -warnings.warn("the imp module is deprecated in favour of importlib; " +warnings.warn("the imp module is deprecated in favour of importlib and slated " + "for removal in Python 3.12; " "see the module's documentation for alternative uses", DeprecationWarning, stacklevel=2) diff --git a/Lib/importlib/util.py b/Lib/importlib/util.py index 98a0fa54dfd87..8623c89840c6a 100644 --- a/Lib/importlib/util.py +++ b/Lib/importlib/util.py @@ -149,7 +149,8 @@ def set_package(fxn): """ @functools.wraps(fxn) def set_package_wrapper(*args, **kwargs): - warnings.warn('The import system now takes care of this automatically.', + warnings.warn('The import system now takes care of this automatically; ' + 'this decorator is slated for removal in Python 3.12', DeprecationWarning, stacklevel=2) module = fxn(*args, **kwargs) if getattr(module, '__package__', None) is None: @@ -168,7 +169,8 @@ def set_loader(fxn): """ @functools.wraps(fxn) def set_loader_wrapper(self, *args, **kwargs): - warnings.warn('The import system now takes care of this automatically.', + warnings.warn('The import system now takes care of this automatically; ' + 'this decorator is slated for removal in Python 3.12', DeprecationWarning, stacklevel=2) module = fxn(self, *args, **kwargs) if getattr(module, '__loader__', None) is None: @@ -195,7 +197,8 @@ def module_for_loader(fxn): the second argument. """ - warnings.warn('The import system now takes care of this automatically.', + warnings.warn('The import system now takes care of this automatically; ' + 'this decorator is slated for removal in Python 3.12', DeprecationWarning, stacklevel=2) @functools.wraps(fxn) def module_for_loader_wrapper(self, fullname, *args, **kwargs): diff --git a/Lib/pkgutil.py b/Lib/pkgutil.py index 3d7f19f39981d..2c3429856be46 100644 --- a/Lib/pkgutil.py +++ b/Lib/pkgutil.py @@ -204,7 +204,8 @@ class ImpImporter: def __init__(self, path=None): global imp - warnings.warn("This emulation is deprecated, use 'importlib' instead", + warnings.warn("This emulation is deprecated and slated for removal " + "in Python 3.12; use 'importlib' instead", DeprecationWarning) _import_imp() self.path = path @@ -271,7 +272,8 @@ class ImpLoader: code = source = None def __init__(self, fullname, file, filename, etc): - warnings.warn("This emulation is deprecated, use 'importlib' instead", + warnings.warn("This emulation is deprecated and slated for removal in " + "Python 3.12; use 'importlib' instead", DeprecationWarning) _import_imp() self.file = file diff --git a/Lib/test/test_pkgutil.py b/Lib/test/test_pkgutil.py index bf9722a229611..6e3618f6b0f98 100644 --- a/Lib/test/test_pkgutil.py +++ b/Lib/test/test_pkgutil.py @@ -498,7 +498,8 @@ class ImportlibMigrationTests(unittest.TestCase): def check_deprecated(self): return check_warnings( - ("This emulation is deprecated, use 'importlib' instead", + ("This emulation is deprecated and slated for removal in " + "Python 3.12; use 'importlib' instead", DeprecationWarning)) def test_importer_deprecated(self): diff --git a/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst b/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst new file mode 100644 index 0000000000000..d71460f010dcc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst @@ -0,0 +1,2 @@ +Document various stdlib deprecations in imp, pkgutil, and importlib.util for removal in Python +3.12. From webhook-mailer at python.org Sat Apr 3 20:01:34 2021 From: webhook-mailer at python.org (methane) Date: Sun, 04 Apr 2021 00:01:34 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25145) Message-ID: https://github.com/python/cpython/commit/35715d1e72b7e15e337087863c75af447199e0fb commit: 35715d1e72b7e15e337087863c75af447199e0fb branch: master author: Inada Naoki committer: methane date: 2021-04-04T09:01:23+09:00 summary: bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25145) * test_asyncio * test_bz2 * test_math * test_cmath * test_cmd_line * test_cmd_line_script * test_compile * test_contextlib * test_profile * ctypes/test/test_find * test_multiprocessing * test_configparser * test_csv * test_dbm_dumb * test_decimal * test_difflib * os.fdopen() calls io.text_encoding() to emit EncodingWarning for right place. files: M Lib/ctypes/test/test_find.py M Lib/os.py M Lib/test/_test_multiprocessing.py M Lib/test/multibytecodec_support.py M Lib/test/test_asyncio/test_base_events.py M Lib/test/test_asyncio/test_events.py M Lib/test/test_bz2.py M Lib/test/test_cmath.py M Lib/test/test_cmd_line.py M Lib/test/test_cmd_line_script.py M Lib/test/test_compile.py M Lib/test/test_configparser.py M Lib/test/test_contextlib.py M Lib/test/test_csv.py M Lib/test/test_dbm_dumb.py M Lib/test/test_decimal.py M Lib/test/test_difflib.py M Lib/test/test_math.py M Lib/test/test_profile.py diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py index 4a8a3820f3fe1..1ff9d019b138a 100644 --- a/Lib/ctypes/test/test_find.py +++ b/Lib/ctypes/test/test_find.py @@ -90,7 +90,7 @@ def test_find_on_libpath(self): srcname = os.path.join(d, 'dummy.c') libname = 'py_ctypes_test_dummy' dstname = os.path.join(d, 'lib%s.so' % libname) - with open(srcname, 'w') as f: + with open(srcname, 'wb') as f: pass self.assertTrue(os.path.exists(srcname)) # compile the file to a shared library diff --git a/Lib/os.py b/Lib/os.py index 05e9c32c5a711..ea09e8c7e1048 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -1020,11 +1020,13 @@ def __iter__(self): __all__.append("popen") # Supply os.fdopen() -def fdopen(fd, *args, **kwargs): +def fdopen(fd, mode="r", buffering=-1, encoding=None, *args, **kwargs): if not isinstance(fd, int): raise TypeError("invalid fd type (%s, expected integer)" % type(fd)) import io - return io.open(fd, *args, **kwargs) + if "b" not in mode: + encoding = io.text_encoding(encoding) + return io.open(fd, mode, buffering, encoding, *args, **kwargs) # For testing purposes, make sure the function is available when the C diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index fd3b4303f034c..ead92cfa2abfe 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -826,7 +826,7 @@ def test_stderr_flush(self): proc = self.Process(target=self._test_stderr_flush, args=(testfn,)) proc.start() proc.join() - with open(testfn, 'r') as f: + with open(testfn, encoding="utf-8") as f: err = f.read() # The whole traceback was printed self.assertIn("ZeroDivisionError", err) @@ -836,14 +836,14 @@ def test_stderr_flush(self): @classmethod def _test_stderr_flush(cls, testfn): fd = os.open(testfn, os.O_WRONLY | os.O_CREAT | os.O_EXCL) - sys.stderr = open(fd, 'w', closefd=False) + sys.stderr = open(fd, 'w', encoding="utf-8", closefd=False) 1/0 # MARKER @classmethod def _test_sys_exit(cls, reason, testfn): fd = os.open(testfn, os.O_WRONLY | os.O_CREAT | os.O_EXCL) - sys.stderr = open(fd, 'w', closefd=False) + sys.stderr = open(fd, 'w', encoding="utf-8", closefd=False) sys.exit(reason) def test_sys_exit(self): @@ -864,7 +864,7 @@ def test_sys_exit(self): join_process(p) self.assertEqual(p.exitcode, 1) - with open(testfn, 'r') as f: + with open(testfn, encoding="utf-8") as f: content = f.read() self.assertEqual(content.rstrip(), str(reason)) @@ -1118,7 +1118,7 @@ def test_task_done(self): def test_no_import_lock_contention(self): with os_helper.temp_cwd(): module_name = 'imported_by_an_imported_module' - with open(module_name + '.py', 'w') as f: + with open(module_name + '.py', 'w', encoding="utf-8") as f: f.write("""if 1: import multiprocessing diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py index f76c0153f5ecf..dbf0cc428e3ff 100644 --- a/Lib/test/multibytecodec_support.py +++ b/Lib/test/multibytecodec_support.py @@ -296,7 +296,7 @@ def setUp(self): self.skipTest("Could not retrieve "+self.mapfileurl) def open_mapping_file(self): - return support.open_urlresource(self.mapfileurl) + return support.open_urlresource(self.mapfileurl, encoding="utf-8") def test_mapping_file(self): if self.mapfileurl.endswith('.xml'): diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index e40e7999b64d1..5691d4250aca9 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -2096,7 +2096,7 @@ def test_blocking_socket(self): def test_nonbinary_file(self): sock = self.make_socket() - with open(os_helper.TESTFN, 'r') as f: + with open(os_helper.TESTFN, encoding="utf-8") as f: with self.assertRaisesRegex(ValueError, "binary mode"): self.run_loop(self.loop.sock_sendfile(sock, f)) diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index 6523a79b4a634..5511407ba5395 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -1349,7 +1349,7 @@ def test_unclosed_pipe_transport(self): rpipe, wpipe = os.pipe() rpipeobj = io.open(rpipe, 'rb', 1024) - wpipeobj = io.open(wpipe, 'w', 1024) + wpipeobj = io.open(wpipe, 'w', 1024, encoding="utf-8") async def connect(): read_transport, _ = await loop.connect_read_pipe( diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index ccc5e4df83a7a..efed3a859ba21 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -922,14 +922,14 @@ def test_text_modes(self): for mode in ("wt", "xt"): if mode == "xt": unlink(self.filename) - with self.open(self.filename, mode) as f: + with self.open(self.filename, mode, encoding="ascii") as f: f.write(text) with open(self.filename, "rb") as f: file_data = ext_decompress(f.read()).decode("ascii") self.assertEqual(file_data, text_native_eol) - with self.open(self.filename, "rt") as f: + with self.open(self.filename, "rt", encoding="ascii") as f: self.assertEqual(f.read(), text) - with self.open(self.filename, "at") as f: + with self.open(self.filename, "at", encoding="ascii") as f: f.write(text) with open(self.filename, "rb") as f: file_data = ext_decompress(f.read()).decode("ascii") @@ -938,7 +938,8 @@ def test_text_modes(self): def test_x_mode(self): for mode in ("x", "xb", "xt"): unlink(self.filename) - with self.open(self.filename, mode) as f: + encoding = "utf-8" if "t" in mode else None + with self.open(self.filename, mode, encoding=encoding) as f: pass with self.assertRaises(FileExistsError): with self.open(self.filename, mode) as f: @@ -950,7 +951,7 @@ def test_fileobj(self): with self.open(BytesIO(self.DATA), "rb") as f: self.assertEqual(f.read(), self.TEXT) text = self.TEXT.decode("ascii") - with self.open(BytesIO(self.DATA), "rt") as f: + with self.open(BytesIO(self.DATA), "rt", encoding="utf-8") as f: self.assertEqual(f.read(), text) def test_bad_params(self): @@ -989,9 +990,9 @@ def test_encoding_error_handler(self): def test_newline(self): # Test with explicit newline (universal newline mode disabled). text = self.TEXT.decode("ascii") - with self.open(self.filename, "wt", newline="\n") as f: + with self.open(self.filename, "wt", encoding="utf-8", newline="\n") as f: f.write(text) - with self.open(self.filename, "rt", newline="\r") as f: + with self.open(self.filename, "rt", encoding="utf-8", newline="\r") as f: self.assertEqual(f.readlines(), [text]) diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py index 668f27c8a0827..9bb939356144e 100644 --- a/Lib/test/test_cmath.py +++ b/Lib/test/test_cmath.py @@ -60,7 +60,7 @@ class CMathTests(unittest.TestCase): test_functions.append(lambda x : cmath.log(14.-27j, x)) def setUp(self): - self.test_values = open(test_file) + self.test_values = open(test_file, encoding="utf-8") def tearDown(self): self.test_values.close() diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 25d3eec40c13d..375876768b29f 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -512,7 +512,7 @@ def test_del___main__(self): # the dict whereas the module was destroyed filename = os_helper.TESTFN self.addCleanup(os_helper.unlink, filename) - with open(filename, "w") as script: + with open(filename, "w", encoding="utf-8") as script: print("import sys", file=script) print("del sys.modules['__main__']", file=script) assert_python_ok(filename) @@ -549,9 +549,9 @@ def test_isolatedmode(self): with os_helper.temp_cwd() as tmpdir: fake = os.path.join(tmpdir, "uuid.py") main = os.path.join(tmpdir, "main.py") - with open(fake, "w") as f: + with open(fake, "w", encoding="utf-8") as f: f.write("raise RuntimeError('isolated mode test')\n") - with open(main, "w") as f: + with open(main, "w", encoding="utf-8") as f: f.write("import uuid\n") f.write("print('ok')\n") self.assertRaises(subprocess.CalledProcessError, diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py index f10ab40017a33..8f12b1e19bcfc 100644 --- a/Lib/test/test_cmd_line_script.py +++ b/Lib/test/test_cmd_line_script.py @@ -400,7 +400,7 @@ def test_issue8202_dash_c_file_ignored(self): # does not alter the value of sys.path[0] with os_helper.temp_dir() as script_dir: with os_helper.change_cwd(path=script_dir): - with open("-c", "w") as f: + with open("-c", "w", encoding="utf-8") as f: f.write("data") rc, out, err = assert_python_ok('-c', 'import sys; print("sys.path[0]==%r" % sys.path[0])', @@ -416,7 +416,7 @@ def test_issue8202_dash_m_file_ignored(self): with os_helper.temp_dir() as script_dir: script_name = _make_test_script(script_dir, 'other') with os_helper.change_cwd(path=script_dir): - with open("-m", "w") as f: + with open("-m", "w", encoding="utf-8") as f: f.write("data") rc, out, err = assert_python_ok('-m', 'other', *example_args, __isolated=False) @@ -429,7 +429,7 @@ def test_issue20884(self): # will be failed. with os_helper.temp_dir() as script_dir: script_name = os.path.join(script_dir, "issue20884.py") - with open(script_name, "w", newline='\n') as f: + with open(script_name, "w", encoding="latin1", newline='\n') as f: f.write("#coding: iso-8859-1\n") f.write('"""\n') for _ in range(30): diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 591d5bb00b264..c0de3bef5b6c9 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -427,7 +427,7 @@ def test_compile_ast(self): fname = __file__ if fname.lower().endswith('pyc'): fname = fname[:-1] - with open(fname, 'r') as f: + with open(fname, encoding='utf-8') as f: fcontents = f.read() sample_code = [ ['', 'x = 5'], diff --git a/Lib/test/test_configparser.py b/Lib/test/test_configparser.py index 80a9f179ee2bb..9373a62072ef4 100644 --- a/Lib/test/test_configparser.py +++ b/Lib/test/test_configparser.py @@ -714,31 +714,31 @@ def test_read_returns_file_list(self): file1 = support.findfile("cfgparser.1") # check when we pass a mix of readable and non-readable files: cf = self.newconfig() - parsed_files = cf.read([file1, "nonexistent-file"]) + parsed_files = cf.read([file1, "nonexistent-file"], encoding="utf-8") self.assertEqual(parsed_files, [file1]) self.assertEqual(cf.get("Foo Bar", "foo"), "newbar") # check when we pass only a filename: cf = self.newconfig() - parsed_files = cf.read(file1) + parsed_files = cf.read(file1, encoding="utf-8") self.assertEqual(parsed_files, [file1]) self.assertEqual(cf.get("Foo Bar", "foo"), "newbar") # check when we pass only a Path object: cf = self.newconfig() - parsed_files = cf.read(pathlib.Path(file1)) + parsed_files = cf.read(pathlib.Path(file1), encoding="utf-8") self.assertEqual(parsed_files, [file1]) self.assertEqual(cf.get("Foo Bar", "foo"), "newbar") # check when we passed both a filename and a Path object: cf = self.newconfig() - parsed_files = cf.read([pathlib.Path(file1), file1]) + parsed_files = cf.read([pathlib.Path(file1), file1], encoding="utf-8") self.assertEqual(parsed_files, [file1, file1]) self.assertEqual(cf.get("Foo Bar", "foo"), "newbar") # check when we pass only missing files: cf = self.newconfig() - parsed_files = cf.read(["nonexistent-file"]) + parsed_files = cf.read(["nonexistent-file"], encoding="utf-8") self.assertEqual(parsed_files, []) # check when we pass no files: cf = self.newconfig() - parsed_files = cf.read([]) + parsed_files = cf.read([], encoding="utf-8") self.assertEqual(parsed_files, []) def test_read_returns_file_list_with_bytestring_path(self): @@ -747,15 +747,15 @@ def test_read_returns_file_list_with_bytestring_path(self): file1_bytestring = support.findfile("cfgparser.1").encode() # check when passing an existing bytestring path cf = self.newconfig() - parsed_files = cf.read(file1_bytestring) + parsed_files = cf.read(file1_bytestring, encoding="utf-8") self.assertEqual(parsed_files, [file1_bytestring]) # check when passing an non-existing bytestring path cf = self.newconfig() - parsed_files = cf.read(b'nonexistent-file') + parsed_files = cf.read(b'nonexistent-file', encoding="utf-8") self.assertEqual(parsed_files, []) # check when passing both an existing and non-existing bytestring path cf = self.newconfig() - parsed_files = cf.read([file1_bytestring, b'nonexistent-file']) + parsed_files = cf.read([file1_bytestring, b'nonexistent-file'], encoding="utf-8") self.assertEqual(parsed_files, [file1_bytestring]) # shared by subclasses @@ -1064,7 +1064,7 @@ def setUp(self): cf.add_section(s) for j in range(10): cf.set(s, 'lovely_spam{}'.format(j), self.wonderful_spam) - with open(os_helper.TESTFN, 'w') as f: + with open(os_helper.TESTFN, 'w', encoding="utf-8") as f: cf.write(f) def tearDown(self): @@ -1074,7 +1074,7 @@ def test_dominating_multiline_values(self): # We're reading from file because this is where the code changed # during performance updates in Python 3.2 cf_from_file = self.newconfig() - with open(os_helper.TESTFN) as f: + with open(os_helper.TESTFN, encoding="utf-8") as f: cf_from_file.read_file(f) self.assertEqual(cf_from_file.get('section8', 'lovely_spam4'), self.wonderful_spam.replace('\t\n', '\n')) @@ -1473,7 +1473,7 @@ def fromstring(self, string, defaults=None): class FakeFile: def __init__(self): file_path = support.findfile("cfgparser.1") - with open(file_path) as f: + with open(file_path, encoding="utf-8") as f: self.lines = f.readlines() self.lines.reverse() @@ -1500,7 +1500,7 @@ def test_file(self): pass # unfortunately we can't test bytes on this path for file_path in file_paths: parser = configparser.ConfigParser() - with open(file_path) as f: + with open(file_path, encoding="utf-8") as f: parser.read_file(f) self.assertIn("Foo Bar", parser) self.assertIn("foo", parser["Foo Bar"]) diff --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py index 50943c1a17e9c..453ef6c9f0832 100644 --- a/Lib/test/test_contextlib.py +++ b/Lib/test/test_contextlib.py @@ -316,13 +316,13 @@ def testWithOpen(self): tfn = tempfile.mktemp() try: f = None - with open(tfn, "w") as f: + with open(tfn, "w", encoding="utf-8") as f: self.assertFalse(f.closed) f.write("Booh\n") self.assertTrue(f.closed) f = None with self.assertRaises(ZeroDivisionError): - with open(tfn, "r") as f: + with open(tfn, "r", encoding="utf-8") as f: self.assertFalse(f.closed) self.assertEqual(f.read(), "Booh\n") 1 / 0 diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index a98707ce3caed..2411a91110dd4 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -133,7 +133,7 @@ def test_writer_dialect_attrs(self): def _write_test(self, fields, expect, **kwargs): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, **kwargs) writer.writerow(fields) fileobj.seek(0) @@ -141,7 +141,7 @@ def _write_test(self, fields, expect, **kwargs): expect + writer.dialect.lineterminator) def _write_error_test(self, exc, fields, **kwargs): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, **kwargs) with self.assertRaises(exc): writer.writerow(fields) @@ -232,7 +232,7 @@ def write(self, buf): writer = csv.writer(BrokenFile()) self.assertRaises(OSError, writer.writerows, [['a']]) - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) self.assertRaises(TypeError, writer.writerows, None) writer.writerows([['a', 'b'], ['c', 'd']]) @@ -240,26 +240,26 @@ def write(self, buf): self.assertEqual(fileobj.read(), "a,b\r\nc,d\r\n") def test_writerows_with_none(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) writer.writerows([['a', None], [None, 'd']]) fileobj.seek(0) self.assertEqual(fileobj.read(), "a,\r\n,d\r\n") - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) writer.writerows([[None], ['a']]) fileobj.seek(0) self.assertEqual(fileobj.read(), '""\r\na\r\n') - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) writer.writerows([['a'], [None]]) fileobj.seek(0) self.assertEqual(fileobj.read(), 'a\r\n""\r\n') def test_writerows_errors(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) self.assertRaises(TypeError, writer.writerows, None) self.assertRaises(OSError, writer.writerows, BadIterable()) @@ -270,7 +270,7 @@ def test_writerows_errors(self): def test_writerows_legacy_strings(self): import _testcapi c = _testcapi.unicode_legacy_string('a') - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) writer.writerows([[c]]) fileobj.seek(0) @@ -367,7 +367,7 @@ def test_read_linenum(self): self.assertEqual(r.line_num, 3) def test_roundtrip_quoteed_newlines(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj) rows = [['a\nb','b'],['c','x\r\nd']] writer.writerows(rows) @@ -376,7 +376,7 @@ def test_roundtrip_quoteed_newlines(self): self.assertEqual(row, rows[i]) def test_roundtrip_escaped_unquoted_newlines(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj,quoting=csv.QUOTE_NONE,escapechar="\\") rows = [['a\nb','b'],['c','x\r\nd']] writer.writerows(rows) @@ -432,7 +432,7 @@ class space(csv.excel): quoting = csv.QUOTE_NONE escapechar = "\\" - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("abc def\nc1ccccc1 benzene\n") fileobj.seek(0) reader = csv.reader(fileobj, dialect=space()) @@ -493,7 +493,7 @@ def test_pickle(self): class TestCsvBase(unittest.TestCase): def readerAssertEqual(self, input, expected_result): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: fileobj.write(input) fileobj.seek(0) reader = csv.reader(fileobj, dialect = self.dialect) @@ -501,7 +501,7 @@ def readerAssertEqual(self, input, expected_result): self.assertEqual(fields, expected_result) def writerAssertEqual(self, input, expected_result): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, dialect = self.dialect) writer.writerows(input) fileobj.seek(0) @@ -643,13 +643,13 @@ class TestDictFields(unittest.TestCase): ### "long" means the row is longer than the number of fieldnames ### "short" means there are fewer elements in the row than fieldnames def test_writeheader_return_value(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"]) writeheader_return_value = writer.writeheader() self.assertEqual(writeheader_return_value, 10) def test_write_simple_dict(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"]) writer.writeheader() fileobj.seek(0) @@ -674,7 +674,7 @@ def test_write_no_fields(self): self.assertRaises(TypeError, csv.DictWriter, fileobj) def test_write_fields_not_in_fieldnames(self): - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.DictWriter(fileobj, fieldnames = ["f1", "f2", "f3"]) # Of special note is the non-string key (issue 19449) with self.assertRaises(ValueError) as cx: @@ -704,7 +704,7 @@ def test_write_field_not_in_field_names_ignore(self): self.assertEqual(fileobj.getvalue(), "1,2\r\n") def test_read_dict_fields(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("1,2,abc\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, @@ -712,7 +712,7 @@ def test_read_dict_fields(self): self.assertEqual(next(reader), {"f1": '1', "f2": '2', "f3": 'abc'}) def test_read_dict_no_fieldnames(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("f1,f2,f3\r\n1,2,abc\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj) @@ -722,7 +722,7 @@ def test_read_dict_no_fieldnames(self): # Two test cases to make sure existing ways of implicitly setting # fieldnames continue to work. Both arise from discussion in issue3436. def test_read_dict_fieldnames_from_file(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("f1,f2,f3\r\n1,2,abc\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, @@ -732,7 +732,7 @@ def test_read_dict_fieldnames_from_file(self): def test_read_dict_fieldnames_chain(self): import itertools - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("f1,f2,f3\r\n1,2,abc\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj) @@ -742,7 +742,7 @@ def test_read_dict_fieldnames_chain(self): self.assertEqual(row, {"f1": '1', "f2": '2', "f3": 'abc'}) def test_read_long(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("1,2,abc,4,5,6\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, @@ -751,7 +751,7 @@ def test_read_long(self): None: ["abc", "4", "5", "6"]}) def test_read_long_with_rest(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("1,2,abc,4,5,6\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, @@ -760,7 +760,7 @@ def test_read_long_with_rest(self): "_rest": ["abc", "4", "5", "6"]}) def test_read_long_with_rest_no_fieldnames(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("f1,f2\r\n1,2,abc,4,5,6\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, restkey="_rest") @@ -769,7 +769,7 @@ def test_read_long_with_rest_no_fieldnames(self): "_rest": ["abc", "4", "5", "6"]}) def test_read_short(self): - with TemporaryFile("w+") as fileobj: + with TemporaryFile("w+", encoding="utf-8") as fileobj: fileobj.write("1,2,abc,4,5,6\r\n1,2,abc\r\n") fileobj.seek(0) reader = csv.DictReader(fileobj, @@ -818,7 +818,7 @@ def test_int_write(self): contents = [(20-i) for i in range(20)] a = array.array('i', contents) - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, dialect="excel") writer.writerow(a) expected = ",".join([str(i) for i in a])+"\r\n" @@ -829,7 +829,7 @@ def test_double_write(self): import array contents = [(20-i)*0.1 for i in range(20)] a = array.array('d', contents) - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, dialect="excel") writer.writerow(a) expected = ",".join([str(i) for i in a])+"\r\n" @@ -840,7 +840,7 @@ def test_float_write(self): import array contents = [(20-i)*0.1 for i in range(20)] a = array.array('f', contents) - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, dialect="excel") writer.writerow(a) expected = ",".join([str(i) for i in a])+"\r\n" @@ -851,7 +851,7 @@ def test_char_write(self): import array, string a = array.array('u', string.ascii_letters) - with TemporaryFile("w+", newline='') as fileobj: + with TemporaryFile("w+", encoding="utf-8", newline='') as fileobj: writer = csv.writer(fileobj, dialect="excel") writer.writerow(a) expected = ",".join(a)+"\r\n" diff --git a/Lib/test/test_dbm_dumb.py b/Lib/test/test_dbm_dumb.py index 071cb845013b5..ddaffb4757bc4 100644 --- a/Lib/test/test_dbm_dumb.py +++ b/Lib/test/test_dbm_dumb.py @@ -232,7 +232,7 @@ def test_create_new(self): self.assertEqual(f.keys(), []) def test_eval(self): - with open(_fname + '.dir', 'w') as stream: + with open(_fname + '.dir', 'w', encoding="utf-8") as stream: stream.write("str(print('Hacked!')), 0\n") with support.captured_stdout() as stdout: with self.assertRaises(ValueError): diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 6aa4a9b31a5f2..179a9ea7042fb 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -289,7 +289,7 @@ def eval_file(self, file): global skip_expected if skip_expected: raise unittest.SkipTest - with open(file) as f: + with open(file, encoding="utf-8") as f: for line in f: line = line.replace('\r\n', '').replace('\n', '') #print line diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py index 42ac1fdcd81cd..9a24e00f64b4a 100644 --- a/Lib/test/test_difflib.py +++ b/Lib/test/test_difflib.py @@ -241,7 +241,7 @@ def test_html_diff(self): #with open('test_difflib_expect.html','w') as fp: # fp.write(actual) - with open(findfile('test_difflib_expect.html')) as fp: + with open(findfile('test_difflib_expect.html'), encoding="utf-8") as fp: self.assertEqual(actual, fp.read()) def test_recursion_limit(self): diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index a6f6483f55d89..3d128749bec40 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -130,7 +130,7 @@ def parse_mtestfile(fname): id fn arg -> expected [flag]* """ - with open(fname) as fp: + with open(fname, encoding="utf-8") as fp: for line in fp: # strip comments, and skip blank lines if '--' in line: @@ -153,7 +153,7 @@ def parse_testfile(fname): Empty lines or lines starting with -- are ignored yields id, fn, arg_real, arg_imag, exp_real, exp_imag """ - with open(fname) as fp: + with open(fname, encoding="utf-8") as fp: for line in fp: # skip comment lines and blank lines if line.startswith('--') or not line.strip(): diff --git a/Lib/test/test_profile.py b/Lib/test/test_profile.py index 1bdf30acbb54b..7de7d52ff8365 100644 --- a/Lib/test/test_profile.py +++ b/Lib/test/test_profile.py @@ -115,7 +115,7 @@ def test_run_profile_as_module(self): def test_output_file_when_changing_directory(self): with temp_dir() as tmpdir, change_cwd(tmpdir): os.mkdir('dest') - with open('demo.py', 'w') as f: + with open('demo.py', 'w', encoding="utf-8") as f: f.write('import os; os.chdir("dest")') assert_python_ok( From webhook-mailer at python.org Sat Apr 3 22:54:55 2021 From: webhook-mailer at python.org (rhettinger) Date: Sun, 04 Apr 2021 02:54:55 -0000 Subject: [Python-checkins] bpo-43325: Add FAQ entry for identity tests (GH-25168) Message-ID: https://github.com/python/cpython/commit/f8775e4f72240faba3947eea8efdd83ee56ae1fd commit: f8775e4f72240faba3947eea8efdd83ee56ae1fd branch: master author: Raymond Hettinger committer: rhettinger date: 2021-04-03T19:54:49-07:00 summary: bpo-43325: Add FAQ entry for identity tests (GH-25168) files: M Doc/faq/programming.rst M Doc/tutorial/datastructures.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index b75c60a17a269..93ffd36d0e1b4 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1701,6 +1701,93 @@ to the object: 13891296 +When can I rely on identity tests with the *is* operator? +--------------------------------------------------------- + +The ``is`` operator tests for object identity. The test ``a is b`` is +equivalent to ``id(a) == id(b)``. + +The most important property of an identity test is that an object is always +identical to itself, ``a is a`` always returns ``True``. Identity tests are +usually faster than equality tests. And unlike equality tests, identity tests +are guaranteed to return a boolean ``True`` or ``False``. + +However, identity tests can *only* be substituted for equality tests when +object identity is assured. Generally, there are three circumstances where +identity is guaranteed: + +1) Assignments create new names but do not change object identity. After the +assignment ``new = old``, it is guaranteed that ``new is old``. + +2) Putting an object in a container that stores object references does not +change object identity. After the list assignment ``s[0] = x``, it is +guaranteed that ``s[0] is x``. + +3) If an object is a singleton, it means that only one instance of that object +can exist. After the assignments ``a = None`` and ``b = None``, it is +guaranteed that ``a is b`` because ``None`` is a singleton. + +In most other circumstances, identity tests are inadvisable and equality tests +are preferred. In particular, identity tests should not be used to check +constants such as :class:`int` and :class:`str` which aren't guaranteed to be +singletons:: + + >>> a = 1000 + >>> b = 500 + >>> c = b + 500 + >>> a is c + False + + >>> a = 'Python' + >>> b = 'Py' + >>> c = b + 'thon' + >>> a is c + False + +Likewise, new instances of mutable containers are never identical:: + + >>> a = [] + >>> b = [] + >>> a is b + False + +In the standard library code, you will see several common patterns for +correctly using identity tests: + +1) As recommended by :pep:`8`, an identity test is the preferred way to check +for ``None``. This reads like plain English in code and avoids confusion with +other objects that may have boolean values that evaluate to false. + +2) Detecting optional arguments can be tricky when ``None`` is a valid input +value. In those situations, you can create an singleton sentinel object +guaranteed to be distinct from other objects. For example, here is how +to implement a method that behaves like :meth:`dict.pop`:: + + _sentinel = object() + + def pop(self, key, default=_sentinel): + if key in self: + value = self[key] + del self[key] + return value + if default is _sentinel: + raise KeyError(key) + return default + +3) Container implementations sometimes need to augment equality tests with +identity tests. This prevents the code from being confused by objects such as +``float('NaN')`` that are not equal to themselves. + +For example, here is the implementation of +:meth:`collections.abc.Sequence.__contains__`:: + + def __contains__(self, value): + for v in self: + if v is value or v == value: + return True + return False + + Modules ======= diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index 5c6b65f05e1e5..e42b380db3d23 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -661,9 +661,8 @@ operators, not just comparisons. The comparison operators ``in`` and ``not in`` check whether a value occurs (does not occur) in a sequence. The operators ``is`` and ``is not`` compare -whether two objects are really the same object; this only matters for mutable -objects like lists. All comparison operators have the same priority, which is -lower than that of all numerical operators. +whether two objects are really the same object. All comparison operators have +the same priority, which is lower than that of all numerical operators. Comparisons can be chained. For example, ``a < b == c`` tests whether ``a`` is less than ``b`` and moreover ``b`` equals ``c``. From webhook-mailer at python.org Sat Apr 3 23:06:00 2021 From: webhook-mailer at python.org (rhettinger) Date: Sun, 04 Apr 2021 03:06:00 -0000 Subject: [Python-checkins] bpo-43325: Add FAQ entry for identity tests (GH-25168) (GH-25178) Message-ID: https://github.com/python/cpython/commit/de0b2b133011953b02536cc78f2499d5d55224f8 commit: de0b2b133011953b02536cc78f2499d5d55224f8 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: rhettinger date: 2021-04-03T20:05:50-07:00 summary: bpo-43325: Add FAQ entry for identity tests (GH-25168) (GH-25178) files: M Doc/faq/programming.rst M Doc/tutorial/datastructures.rst diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index 8df62c5604597..fd59f68034776 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1702,6 +1702,93 @@ to the object: 13891296 +When can I rely on identity tests with the *is* operator? +--------------------------------------------------------- + +The ``is`` operator tests for object identity. The test ``a is b`` is +equivalent to ``id(a) == id(b)``. + +The most important property of an identity test is that an object is always +identical to itself, ``a is a`` always returns ``True``. Identity tests are +usually faster than equality tests. And unlike equality tests, identity tests +are guaranteed to return a boolean ``True`` or ``False``. + +However, identity tests can *only* be substituted for equality tests when +object identity is assured. Generally, there are three circumstances where +identity is guaranteed: + +1) Assignments create new names but do not change object identity. After the +assignment ``new = old``, it is guaranteed that ``new is old``. + +2) Putting an object in a container that stores object references does not +change object identity. After the list assignment ``s[0] = x``, it is +guaranteed that ``s[0] is x``. + +3) If an object is a singleton, it means that only one instance of that object +can exist. After the assignments ``a = None`` and ``b = None``, it is +guaranteed that ``a is b`` because ``None`` is a singleton. + +In most other circumstances, identity tests are inadvisable and equality tests +are preferred. In particular, identity tests should not be used to check +constants such as :class:`int` and :class:`str` which aren't guaranteed to be +singletons:: + + >>> a = 1000 + >>> b = 500 + >>> c = b + 500 + >>> a is c + False + + >>> a = 'Python' + >>> b = 'Py' + >>> c = b + 'thon' + >>> a is c + False + +Likewise, new instances of mutable containers are never identical:: + + >>> a = [] + >>> b = [] + >>> a is b + False + +In the standard library code, you will see several common patterns for +correctly using identity tests: + +1) As recommended by :pep:`8`, an identity test is the preferred way to check +for ``None``. This reads like plain English in code and avoids confusion with +other objects that may have boolean values that evaluate to false. + +2) Detecting optional arguments can be tricky when ``None`` is a valid input +value. In those situations, you can create an singleton sentinel object +guaranteed to be distinct from other objects. For example, here is how +to implement a method that behaves like :meth:`dict.pop`:: + + _sentinel = object() + + def pop(self, key, default=_sentinel): + if key in self: + value = self[key] + del self[key] + return value + if default is _sentinel: + raise KeyError(key) + return default + +3) Container implementations sometimes need to augment equality tests with +identity tests. This prevents the code from being confused by objects such as +``float('NaN')`` that are not equal to themselves. + +For example, here is the implementation of +:meth:`collections.abc.Sequence.__contains__`:: + + def __contains__(self, value): + for v in self: + if v is value or v == value: + return True + return False + + Modules ======= diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index 5c6b65f05e1e5..e42b380db3d23 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -661,9 +661,8 @@ operators, not just comparisons. The comparison operators ``in`` and ``not in`` check whether a value occurs (does not occur) in a sequence. The operators ``is`` and ``is not`` compare -whether two objects are really the same object; this only matters for mutable -objects like lists. All comparison operators have the same priority, which is -lower than that of all numerical operators. +whether two objects are really the same object. All comparison operators have +the same priority, which is lower than that of all numerical operators. Comparisons can be chained. For example, ``a < b == c`` tests whether ``a`` is less than ``b`` and moreover ``b`` equals ``c``. From webhook-mailer at python.org Sun Apr 4 04:01:35 2021 From: webhook-mailer at python.org (methane) Date: Sun, 04 Apr 2021 08:01:35 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25171) Message-ID: https://github.com/python/cpython/commit/3caea9adda7f79ab5d4c5a1905ca62b44e0b3b7b commit: 3caea9adda7f79ab5d4c5a1905ca62b44e0b3b7b branch: master author: Inada Naoki committer: methane date: 2021-04-04T17:01:10+09:00 summary: bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25171) * Fix test_float * Fix _osx_support * Fix test_fstring * Fix test_gc * Fix test_gzip * Fix test_hashlib * Fix unrelated whitespace issue Co-authored-by: Ned Deily files: M Lib/_osx_support.py M Lib/test/test_float.py M Lib/test/test_fstring.py M Lib/test/test_gc.py M Lib/test/test_gzip.py M Lib/test/test_hashlib.py diff --git a/Lib/_osx_support.py b/Lib/_osx_support.py index 37975fe8a3eef..72f4819c29092 100644 --- a/Lib/_osx_support.py +++ b/Lib/_osx_support.py @@ -96,7 +96,7 @@ def _get_system_version(): if _SYSTEM_VERSION is None: _SYSTEM_VERSION = '' try: - f = open('/System/Library/CoreServices/SystemVersion.plist') + f = open('/System/Library/CoreServices/SystemVersion.plist', encoding="utf-8") except OSError: # We're on a plain darwin box, fall back to the default # behaviour. @@ -156,9 +156,9 @@ def _default_sysroot(cc): if _cache_default_sysroot is not None: return _cache_default_sysroot - + contents = _read_output('%s -c -E -v - "): in_incdirs = True diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py index 99c81f0b72a5a..ff4f3876be5cd 100644 --- a/Lib/test/test_float.py +++ b/Lib/test/test_float.py @@ -729,7 +729,7 @@ def test_format(self): @support.requires_IEEE_754 def test_format_testfile(self): - with open(format_testfile) as testfile: + with open(format_testfile, encoding="utf-8") as testfile: for line in testfile: if line.startswith('--'): continue @@ -769,7 +769,7 @@ def test_issue35560(self): class ReprTestCase(unittest.TestCase): def test_repr(self): with open(os.path.join(os.path.split(__file__)[0], - 'floating_points.txt')) as floats_file: + 'floating_points.txt'), encoding="utf-8") as floats_file: for line in floats_file: line = line.strip() if not line or line.startswith('#'): diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py index 79e123f4b8cec..296cb05285c48 100644 --- a/Lib/test/test_fstring.py +++ b/Lib/test/test_fstring.py @@ -1110,7 +1110,7 @@ def test_filename_in_syntaxerror(self): # see issue 38964 with temp_cwd() as cwd: file_path = os.path.join(cwd, 't.py') - with open(file_path, 'w') as f: + with open(file_path, 'w', encoding="utf-8") as f: f.write('f"{a b}"') # This generates a SyntaxError _, _, stderr = assert_python_failure(file_path, PYTHONIOENCODING='ascii') diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index ba66737015906..ee4fe49a57f2a 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -750,7 +750,7 @@ def __del__(self): a.link = a raise SystemExit(0)""" self.addCleanup(unlink, TESTFN) - with open(TESTFN, 'w') as script: + with open(TESTFN, 'w', encoding="utf-8") as script: script.write(code) rc, out, err = assert_python_ok(TESTFN) self.assertEqual(out.strip(), b'__del__ called') diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py index 1dcfa2b628a1c..446b61ab439ff 100644 --- a/Lib/test/test_gzip.py +++ b/Lib/test/test_gzip.py @@ -660,14 +660,14 @@ def test_implicit_binary_modes(self): def test_text_modes(self): uncompressed = data1.decode("ascii") * 50 uncompressed_raw = uncompressed.replace("\n", os.linesep) - with gzip.open(self.filename, "wt") as f: + with gzip.open(self.filename, "wt", encoding="ascii") as f: f.write(uncompressed) with open(self.filename, "rb") as f: file_data = gzip.decompress(f.read()).decode("ascii") self.assertEqual(file_data, uncompressed_raw) - with gzip.open(self.filename, "rt") as f: + with gzip.open(self.filename, "rt", encoding="ascii") as f: self.assertEqual(f.read(), uncompressed) - with gzip.open(self.filename, "at") as f: + with gzip.open(self.filename, "at", encoding="ascii") as f: f.write(uncompressed) with open(self.filename, "rb") as f: file_data = gzip.decompress(f.read()).decode("ascii") @@ -681,7 +681,7 @@ def test_fileobj(self): self.assertEqual(f.read(), uncompressed_bytes) with gzip.open(io.BytesIO(compressed), "rb") as f: self.assertEqual(f.read(), uncompressed_bytes) - with gzip.open(io.BytesIO(compressed), "rt") as f: + with gzip.open(io.BytesIO(compressed), "rt", encoding="ascii") as f: self.assertEqual(f.read(), uncompressed_str) def test_bad_params(self): @@ -722,9 +722,9 @@ def test_encoding_error_handler(self): def test_newline(self): # Test with explicit newline (universal newline mode disabled). uncompressed = data1.decode("ascii") * 50 - with gzip.open(self.filename, "wt", newline="\n") as f: + with gzip.open(self.filename, "wt", encoding="ascii", newline="\n") as f: f.write(uncompressed) - with gzip.open(self.filename, "rt", newline="\r") as f: + with gzip.open(self.filename, "rt", encoding="ascii", newline="\r") as f: self.assertEqual(f.readlines(), [uncompressed]) diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index f50a4559269d7..0e06fdc9885dc 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -82,7 +82,7 @@ def hexstr(s): def read_vectors(hash_name): url = URL.format(hash_name) try: - testdata = support.open_urlresource(url) + testdata = support.open_urlresource(url, encoding="utf-8") except (OSError, HTTPException): raise unittest.SkipTest("Could not retrieve {}".format(url)) with testdata: From webhook-mailer at python.org Sun Apr 4 04:33:32 2021 From: webhook-mailer at python.org (markshannon) Date: Sun, 04 Apr 2021 08:33:32 -0000 Subject: [Python-checkins] bpo-27129: Update magic numbers and bootstrapping for GH-25069 (GH-25172) Message-ID: https://github.com/python/cpython/commit/c368ce74d2c9bcbf1ec320466819c2d4768252f7 commit: c368ce74d2c9bcbf1ec320466819c2d4768252f7 branch: master author: Dennis Sweeney <36520290+sweeneyde at users.noreply.github.com> committer: markshannon date: 2021-04-04T09:33:22+01:00 summary: bpo-27129: Update magic numbers and bootstrapping for GH-25069 (GH-25172) * Update magic numbers and bootstrapping for GH-25069 * add blurb Co-authored-by: Terry Jan Reedy files: A Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst M Lib/importlib/_bootstrap_external.py M Python/importlib_external.h diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 358c650916b0b..77bd0e092bd2a 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -324,7 +324,7 @@ def _write_atomic(path, data, mode=0o666): # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array # in PC/launcher.c must also be updated. -MAGIC_NUMBER = (3434).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3435).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst new file mode 100644 index 0000000000000..dc47bd08039cf --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst @@ -0,0 +1 @@ +Update CPython bytecode magic number. diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 465ec0cd6dd0e..89f4d6fc254a6 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -315,7 +315,7 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = { 0,115,38,0,0,0,16,5,6,1,22,1,4,255,2,2, 14,3,24,1,16,128,18,1,12,1,2,1,12,1,2,3, 12,254,2,1,2,1,2,254,2,253,255,128,114,84,0,0, - 0,105,106,13,0,0,114,45,0,0,0,114,33,0,0,0, + 0,105,107,13,0,0,114,45,0,0,0,114,33,0,0,0, 115,2,0,0,0,13,10,90,11,95,95,112,121,99,97,99, 104,101,95,95,122,4,111,112,116,45,122,3,46,112,121,122, 4,46,112,121,119,122,4,46,112,121,99,41,1,218,12,111, From webhook-mailer at python.org Sun Apr 4 07:02:51 2021 From: webhook-mailer at python.org (ambv) Date: Sun, 04 Apr 2021 11:02:51 -0000 Subject: [Python-checkins] [3.9] bpo-43710: Rollback the 3.9 bpo-42500 fix, it broke the ABI in 3.9.3 (#25179) Message-ID: https://github.com/python/cpython/commit/c7b0feca25fc68ec3e0884b82e5f45a4da011e8e commit: c7b0feca25fc68ec3e0884b82e5f45a4da011e8e branch: 3.9 author: Gregory P. Smith committer: ambv date: 2021-04-04T13:02:29+02:00 summary: [3.9] bpo-43710: Rollback the 3.9 bpo-42500 fix, it broke the ABI in 3.9.3 (#25179) This reverts commit 8b795ab5541d8a4e69be4137dfdc207714270b77. It changed the PyThreadState structure size, breaking the ABI in 3.9.3. files: A Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst M Include/cpython/pystate.h M Include/internal/pycore_ceval.h M Lib/test/test_exceptions.py M Lib/test/test_sys.py M Python/ceval.c M Python/errors.c M Python/pystate.c M Python/sysmodule.c diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index 29f6bf5a662dc..f292da1d3c6c5 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -58,7 +58,8 @@ struct _ts { /* Borrowed reference to the current frame (it can be NULL) */ PyFrameObject *frame; int recursion_depth; - int recursion_headroom; /* Allow 50 more calls to handle any errors. */ + char overflowed; /* The stack has overflowed. Allow 50 more calls + to handle the runtime error. */ char recursion_critical; /* The current calls must not cause a stack overflow. */ int stackcheck_counter; diff --git a/Include/internal/pycore_ceval.h b/Include/internal/pycore_ceval.h index e7ace9bd01c2a..18c8f027af16e 100644 --- a/Include/internal/pycore_ceval.h +++ b/Include/internal/pycore_ceval.h @@ -90,8 +90,24 @@ static inline int _Py_EnterRecursiveCall_inline(const char *where) { #define Py_EnterRecursiveCall(where) _Py_EnterRecursiveCall_inline(where) +/* Compute the "lower-water mark" for a recursion limit. When + * Py_LeaveRecursiveCall() is called with a recursion depth below this mark, + * the overflowed flag is reset to 0. */ +static inline int _Py_RecursionLimitLowerWaterMark(int limit) { + if (limit > 200) { + return (limit - 50); + } + else { + return (3 * (limit >> 2)); + } +} + static inline void _Py_LeaveRecursiveCall(PyThreadState *tstate) { tstate->recursion_depth--; + int limit = tstate->interp->ceval.recursion_limit; + if (tstate->recursion_depth < _Py_RecursionLimitLowerWaterMark(limit)) { + tstate->overflowed = 0; + } } static inline void _Py_LeaveRecursiveCall_inline(void) { diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 9c09bdc317dac..8d125b57ad6d5 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -1043,7 +1043,7 @@ def gen(): # tstate->recursion_depth is equal to (recursion_limit - 1) # and is equal to recursion_limit when _gen_throw() calls # PyErr_NormalizeException(). - recurse(setrecursionlimit(depth + 2) - depth) + recurse(setrecursionlimit(depth + 2) - depth - 1) finally: sys.setrecursionlimit(recursionlimit) print('Done.') @@ -1073,54 +1073,6 @@ def test_recursion_normalizing_infinite_exception(self): b'while normalizing an exception', err) self.assertIn(b'Done.', out) - - def test_recursion_in_except_handler(self): - - def set_relative_recursion_limit(n): - depth = 1 - while True: - try: - sys.setrecursionlimit(depth) - except RecursionError: - depth += 1 - else: - break - sys.setrecursionlimit(depth+n) - - def recurse_in_except(): - try: - 1/0 - except: - recurse_in_except() - - def recurse_after_except(): - try: - 1/0 - except: - pass - recurse_after_except() - - def recurse_in_body_and_except(): - try: - recurse_in_body_and_except() - except: - recurse_in_body_and_except() - - recursionlimit = sys.getrecursionlimit() - try: - set_relative_recursion_limit(10) - for func in (recurse_in_except, recurse_after_except, recurse_in_body_and_except): - with self.subTest(func=func): - try: - func() - except RecursionError: - pass - else: - self.fail("Should have raised a RecursionError") - finally: - sys.setrecursionlimit(recursionlimit) - - @cpython_only def test_recursion_normalizing_with_no_memory(self): # Issue #30697. Test that in the abort that occurs when there is no @@ -1157,7 +1109,7 @@ def raiseMemError(): except MemoryError as e: tb = e.__traceback__ else: - self.fail("Should have raised a MemoryError") + self.fail("Should have raises a MemoryError") return traceback.format_tb(tb) tb1 = raiseMemError() diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index fce6b98299f78..ed9b1770ab55f 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -219,7 +219,7 @@ def test_recursionlimit_recovery(self): def f(): f() try: - for depth in (50, 75, 100, 250, 1000): + for depth in (10, 25, 50, 75, 100, 250, 1000): try: sys.setrecursionlimit(depth) except RecursionError: @@ -229,17 +229,17 @@ def f(): # Issue #5392: test stack overflow after hitting recursion # limit twice - with self.assertRaises(RecursionError): - f() - with self.assertRaises(RecursionError): - f() + self.assertRaises(RecursionError, f) + self.assertRaises(RecursionError, f) finally: sys.setrecursionlimit(oldlimit) @test.support.cpython_only def test_setrecursionlimit_recursion_depth(self): # Issue #25274: Setting a low recursion limit must be blocked if the - # current recursion depth is already higher than limit. + # current recursion depth is already higher than the "lower-water + # mark". Otherwise, it may not be possible anymore to + # reset the overflowed flag to 0. from _testinternalcapi import get_recursion_depth @@ -260,10 +260,42 @@ def set_recursion_limit_at_depth(depth, limit): sys.setrecursionlimit(1000) for limit in (10, 25, 50, 75, 100, 150, 200): - set_recursion_limit_at_depth(limit, limit) + # formula extracted from _Py_RecursionLimitLowerWaterMark() + if limit > 200: + depth = limit - 50 + else: + depth = limit * 3 // 4 + set_recursion_limit_at_depth(depth, limit) finally: sys.setrecursionlimit(oldlimit) + # The error message is specific to CPython + @test.support.cpython_only + def test_recursionlimit_fatalerror(self): + # A fatal error occurs if a second recursion limit is hit when recovering + # from a first one. + code = textwrap.dedent(""" + import sys + + def f(): + try: + f() + except RecursionError: + f() + + sys.setrecursionlimit(%d) + f()""") + with test.support.SuppressCrashReport(): + for i in (50, 1000): + sub = subprocess.Popen([sys.executable, '-c', code % i], + stderr=subprocess.PIPE) + err = sub.communicate()[1] + self.assertTrue(sub.returncode, sub.returncode) + self.assertIn( + b"Fatal Python error: _Py_CheckRecursiveCall: " + b"Cannot recover from stack overflow", + err) + def test_getwindowsversion(self): # Raise SkipTest if sys doesn't have getwindowsversion attribute test.support.get_attribute(sys, "getwindowsversion") diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst new file mode 100644 index 0000000000000..cc32efc543924 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst @@ -0,0 +1,4 @@ +Reverted the fix for https://bugs.python.org/issue42500 as it changed the +PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release +(visible on 32-bit platforms using binaries compiled using an earlier +version of Python 3.9.x headers). diff --git a/Python/ceval.c b/Python/ceval.c index b7176dc0f6b8a..91e879e804204 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -793,22 +793,23 @@ _Py_CheckRecursiveCall(PyThreadState *tstate, const char *where) _Py_CheckRecursionLimit = recursion_limit; } #endif - if (tstate->recursion_headroom) { + if (tstate->recursion_critical) + /* Somebody asked that we don't check for recursion. */ + return 0; + if (tstate->overflowed) { if (tstate->recursion_depth > recursion_limit + 50) { /* Overflowing while handling an overflow. Give up. */ Py_FatalError("Cannot recover from stack overflow."); } + return 0; } - else { - if (tstate->recursion_depth > recursion_limit) { - tstate->recursion_headroom++; - _PyErr_Format(tstate, PyExc_RecursionError, - "maximum recursion depth exceeded%s", - where); - tstate->recursion_headroom--; - --tstate->recursion_depth; - return -1; - } + if (tstate->recursion_depth > recursion_limit) { + --tstate->recursion_depth; + tstate->overflowed = 1; + _PyErr_Format(tstate, PyExc_RecursionError, + "maximum recursion depth exceeded%s", + where); + return -1; } return 0; } diff --git a/Python/errors.c b/Python/errors.c index d8c2d8b9236ed..87af39d527a51 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -290,14 +290,12 @@ _PyErr_NormalizeException(PyThreadState *tstate, PyObject **exc, PyObject **val, PyObject **tb) { int recursion_depth = 0; - tstate->recursion_headroom++; PyObject *type, *value, *initial_tb; restart: type = *exc; if (type == NULL) { /* There was no exception, so nothing to do. */ - tstate->recursion_headroom--; return; } @@ -349,7 +347,6 @@ _PyErr_NormalizeException(PyThreadState *tstate, PyObject **exc, } *exc = type; *val = value; - tstate->recursion_headroom--; return; error: diff --git a/Python/pystate.c b/Python/pystate.c index 71aac6f695d6e..9beefa8e20c44 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -576,7 +576,7 @@ new_threadstate(PyInterpreterState *interp, int init) tstate->frame = NULL; tstate->recursion_depth = 0; - tstate->recursion_headroom = 0; + tstate->overflowed = 0; tstate->recursion_critical = 0; tstate->stackcheck_counter = 0; tstate->tracing = 0; diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 4c7f7b67fa837..3e4115fe8e1f9 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1160,6 +1160,7 @@ static PyObject * sys_setrecursionlimit_impl(PyObject *module, int new_limit) /*[clinic end generated code: output=35e1c64754800ace input=b0f7a23393924af3]*/ { + int mark; PyThreadState *tstate = _PyThreadState_GET(); if (new_limit < 1) { @@ -1177,7 +1178,8 @@ sys_setrecursionlimit_impl(PyObject *module, int new_limit) Reject too low new limit if the current recursion depth is higher than the new low-water mark. Otherwise it may not be possible anymore to reset the overflowed flag to 0. */ - if (tstate->recursion_depth >= new_limit) { + mark = _Py_RecursionLimitLowerWaterMark(new_limit); + if (tstate->recursion_depth >= mark) { _PyErr_Format(tstate, PyExc_RecursionError, "cannot set the recursion limit to %i at " "the recursion depth %i: the limit is too low", From webhook-mailer at python.org Sun Apr 4 11:05:00 2021 From: webhook-mailer at python.org (pablogsal) Date: Sun, 04 Apr 2021 15:05:00 -0000 Subject: [Python-checkins] bpo-24160: Fix test_pdb refleaks failure (GH-25182) Message-ID: https://github.com/python/cpython/commit/aadd4e10fda87b64ea527667238503da326a06e7 commit: aadd4e10fda87b64ea527667238503da326a06e7 branch: master author: Irit Katriel committer: pablogsal date: 2021-04-04T16:04:53+01:00 summary: bpo-24160: Fix test_pdb refleaks failure (GH-25182) files: M Lib/test/test_pdb.py diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 98e2b937d1339..fb3941780b721 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -335,7 +335,7 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): ... 'continue', ... ]): ... pdb.run('print()') - > (1)() + > (1)()... (Pdb) import test.test_pdb (Pdb) break test.test_pdb.do_something Breakpoint 1 at ...test_pdb.py:... @@ -355,7 +355,7 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): ... 'continue', ... ]): ... pdb.run('print()') - > (1)() + > (1)()... (Pdb) break Num Type Disp Enb Where 1 breakpoint keep yes at ...test_pdb.py:... @@ -378,7 +378,7 @@ def test_pdb_breakpoints_preserved_across_interactive_sessions(): ... 'continue', ... ]): ... pdb.run('print()') - > (1)() + > (1)()... (Pdb) break Num Type Disp Enb Where 2 breakpoint keep yes at ...test_pdb.py:... From webhook-mailer at python.org Sun Apr 4 11:14:56 2021 From: webhook-mailer at python.org (gvanrossum) Date: Sun, 04 Apr 2021 15:14:56 -0000 Subject: [Python-checkins] bpo-41370: Add note about ForwardRefs and PEP585 generic types in docs (#25183) Message-ID: https://github.com/python/cpython/commit/2b5913b4ee5852a28ca1509478f5582beb3aff7b commit: 2b5913b4ee5852a28ca1509478f5582beb3aff7b branch: master author: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> committer: gvanrossum date: 2021-04-04T08:14:44-07:00 summary: bpo-41370: Add note about ForwardRefs and PEP585 generic types in docs (#25183) files: M Doc/library/typing.rst diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 9696fd4ef99e6..f6d1ccb1c5b3d 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1948,10 +1948,15 @@ Introspection helpers .. class:: ForwardRef A class used for internal typing representation of string forward references. - For example, ``list["SomeClass"]`` is implicitly transformed into - ``list[ForwardRef("SomeClass")]``. This class should not be instantiated by + For example, ``List["SomeClass"]`` is implicitly transformed into + ``List[ForwardRef("SomeClass")]``. This class should not be instantiated by a user, but may be used by introspection tools. + .. note:: + :pep:`585` generic types such as ``list["SomeClass"]`` will not be + implicitly transformed into ``list[ForwardRef("SomeClass")]`` and thus + will not automatically resolve to ``list[SomeClass]``. + .. versionadded:: 3.7.4 Constant From webhook-mailer at python.org Sun Apr 4 11:36:33 2021 From: webhook-mailer at python.org (miss-islington) Date: Sun, 04 Apr 2021 15:36:33 -0000 Subject: [Python-checkins] [3.9] bpo-41370: Add note about ForwardRefs and PEP585 generic types in docs (GH-25183) (GH-25184) Message-ID: https://github.com/python/cpython/commit/d56bcf915b8d5a6afe4555cb6813c8210824e751 commit: d56bcf915b8d5a6afe4555cb6813c8210824e751 branch: 3.9 author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com> committer: miss-islington <31488909+miss-islington at users.noreply.github.com> date: 2021-04-04T08:36:21-07:00 summary: [3.9] bpo-41370: Add note about ForwardRefs and PEP585 generic types in docs (GH-25183) (GH-25184) (cherry picked from commit 2b5913b4ee5852a28ca1509478f5582beb3aff7b) Co-authored-by: Ken Jin <28750310+Fidget-Spinner at users.noreply.github.com> Automerge-Triggered-By: GH:gvanrossum files: M Doc/library/typing.rst diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 688564f1d24f5..b136da00a070a 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -1710,10 +1710,15 @@ Introspection helpers .. class:: ForwardRef A class used for internal typing representation of string forward references. - For example, ``list["SomeClass"]`` is implicitly transformed into - ``list[ForwardRef("SomeClass")]``. This class should not be instantiated by + For example, ``List["SomeClass"]`` is implicitly transformed into + ``List[ForwardRef("SomeClass")]``. This class should not be instantiated by a user, but may be used by introspection tools. + .. note:: + :pep:`585` generic types such as ``list["SomeClass"]`` will not be + implicitly transformed into ``list[ForwardRef("SomeClass")]`` and thus + will not automatically resolve to ``list[SomeClass]``. + .. versionadded:: 3.7.4 Constant From webhook-mailer at python.org Sun Apr 4 14:39:57 2021 From: webhook-mailer at python.org (ambv) Date: Sun, 04 Apr 2021 18:39:57 -0000 Subject: [Python-checkins] Python 3.9.4 Message-ID: https://github.com/python/cpython/commit/1f2e3088f3c097b5bde69bbd63dfcd0852d31984 commit: 1f2e3088f3c097b5bde69bbd63dfcd0852d31984 branch: 3.9 author: ?ukasz Langa committer: ambv date: 2021-04-04T14:56:53+02:00 summary: Python 3.9.4 files: A Misc/NEWS.d/3.9.4.rst D Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst D Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index e4dc226cbcd79..cf76d87430765 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 9 -#define PY_MICRO_VERSION 3 +#define PY_MICRO_VERSION 4 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL #define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.9.3+" +#define PY_VERSION "3.9.4" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index eb5b8936c06ad..e3b6f14e4f2af 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Fri Apr 2 11:48:03 2021 +# Autogenerated by Sphinx on Sun Apr 4 14:53:49 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' diff --git a/Misc/NEWS.d/3.9.4.rst b/Misc/NEWS.d/3.9.4.rst new file mode 100644 index 0000000000000..15c2829187543 --- /dev/null +++ b/Misc/NEWS.d/3.9.4.rst @@ -0,0 +1,21 @@ +.. bpo: 43710 +.. date: 2021-04-03-21-12-15 +.. nonce: _Mj01v +.. release date: 2021-04-04 +.. section: Core and Builtins + +Reverted the fix for https://bugs.python.org/issue42500 as it changed the +PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release +(visible on 32-bit platforms using binaries compiled using an earlier +version of Python 3.9.x headers). + +.. + +.. bpo: 26053 +.. date: 2020-09-01-10-12-13 +.. nonce: hXikw_ +.. section: Library + +Fixed bug where the :mod:`pdb` interactive run command echoed the args from +the shell command line, even if those have been overridden at the pdb +prompt. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst deleted file mode 100644 index cc32efc543924..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-21-12-15.bpo-43710._Mj01v.rst +++ /dev/null @@ -1,4 +0,0 @@ -Reverted the fix for https://bugs.python.org/issue42500 as it changed the -PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release -(visible on 32-bit platforms using binaries compiled using an earlier -version of Python 3.9.x headers). diff --git a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst deleted file mode 100644 index e8720ac82ffb1..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed bug where the :mod:`pdb` interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. diff --git a/README.rst b/README.rst index ae7f264ef4f5f..f62e3b3664fad 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.9.3 +This is Python version 3.9.4 ============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.9 From webhook-mailer at python.org Sun Apr 4 23:30:21 2021 From: webhook-mailer at python.org (methane) Date: Mon, 05 Apr 2021 03:30:21 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix test_email (GH-25158) Message-ID: https://github.com/python/cpython/commit/de522a89e42a35da9275169b113460c3581e32d7 commit: de522a89e42a35da9275169b113460c3581e32d7 branch: master author: Inada Naoki committer: methane date: 2021-04-05T12:30:12+09:00 summary: bpo-43651: PEP 597: Fix test_email (GH-25158) files: M Lib/test/test_email/__init__.py M Lib/test/test_email/test_email.py diff --git a/Lib/test/test_email/__init__.py b/Lib/test/test_email/__init__.py index 888751e9e617f..5d708e6e97efe 100644 --- a/Lib/test/test_email/__init__.py +++ b/Lib/test/test_email/__init__.py @@ -38,7 +38,7 @@ def __init__(self, *args, **kw): ndiffAssertEqual = unittest.TestCase.assertEqual def _msgobj(self, filename): - with openfile(filename) as fp: + with openfile(filename, encoding="utf-8") as fp: return email.message_from_file(fp, policy=self.policy) def _str_msg(self, string, message=None, policy=None): diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py index 720a63b4e48ff..eed60142b19e3 100644 --- a/Lib/test/test_email/test_email.py +++ b/Lib/test/test_email/test_email.py @@ -214,7 +214,7 @@ def test_make_boundary(self): def test_message_rfc822_only(self): # Issue 7970: message/rfc822 not in multipart parsed by # HeaderParser caused an exception when flattened. - with openfile('msg_46.txt') as fp: + with openfile('msg_46.txt', encoding="utf-8") as fp: msgdata = fp.read() parser = HeaderParser() msg = parser.parsestr(msgdata) @@ -225,7 +225,7 @@ def test_message_rfc822_only(self): def test_byte_message_rfc822_only(self): # Make sure new bytes header parser also passes this. - with openfile('msg_46.txt') as fp: + with openfile('msg_46.txt', encoding="utf-8") as fp: msgdata = fp.read().encode('ascii') parser = email.parser.BytesHeaderParser() msg = parser.parsebytes(msgdata) @@ -274,7 +274,7 @@ def test_get_payload_n_raises_on_non_multipart(self): def test_decoded_generator(self): eq = self.assertEqual msg = self._msgobj('msg_07.txt') - with openfile('msg_17.txt') as fp: + with openfile('msg_17.txt', encoding="utf-8") as fp: text = fp.read() s = StringIO() g = DecodedGenerator(s) @@ -295,7 +295,7 @@ def test__contains__(self): def test_as_string(self): msg = self._msgobj('msg_01.txt') - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: text = fp.read() self.assertEqual(text, str(msg)) fullrepr = msg.as_string(unixfrom=True) @@ -349,7 +349,7 @@ def test_nonascii_as_string_without_content_type_and_cte(self): def test_as_bytes(self): msg = self._msgobj('msg_01.txt') - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: data = fp.read().encode('ascii') self.assertEqual(data, bytes(msg)) fullrepr = msg.as_bytes(unixfrom=True) @@ -2436,7 +2436,7 @@ def test_multiline_header(self): # Test the MIMEMessage class class TestMIMEMessage(TestEmailBase): def setUp(self): - with openfile('msg_11.txt') as fp: + with openfile('msg_11.txt', encoding="utf-8") as fp: self._text = fp.read() def test_type_error(self): @@ -2555,7 +2555,7 @@ def test_dsn(self): def test_epilogue(self): eq = self.ndiffAssertEqual - with openfile('msg_21.txt') as fp: + with openfile('msg_21.txt', encoding="utf-8") as fp: text = fp.read() msg = Message() msg['From'] = 'aperson at dom.ain' @@ -2610,7 +2610,7 @@ def test_no_nl_preamble(self): def test_default_type(self): eq = self.assertEqual - with openfile('msg_30.txt') as fp: + with openfile('msg_30.txt', encoding="utf-8") as fp: msg = email.message_from_file(fp) container1 = msg.get_payload(0) eq(container1.get_default_type(), 'message/rfc822') @@ -2627,7 +2627,7 @@ def test_default_type(self): def test_default_type_with_explicit_container_type(self): eq = self.assertEqual - with openfile('msg_28.txt') as fp: + with openfile('msg_28.txt', encoding="utf-8") as fp: msg = email.message_from_file(fp) container1 = msg.get_payload(0) eq(container1.get_default_type(), 'message/rfc822') @@ -2753,7 +2753,7 @@ class TestIdempotent(TestEmailBase): linesep = '\n' def _msgobj(self, filename): - with openfile(filename) as fp: + with openfile(filename, encoding="utf-8") as fp: data = fp.read() msg = email.message_from_string(data) return msg, data @@ -2909,7 +2909,7 @@ def test_parser(self): # Test various other bits of the package's functionality class TestMiscellaneous(TestEmailBase): def test_message_from_string(self): - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: text = fp.read() msg = email.message_from_string(text) s = StringIO() @@ -2920,7 +2920,7 @@ def test_message_from_string(self): self.assertEqual(text, s.getvalue()) def test_message_from_file(self): - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: text = fp.read() fp.seek(0) msg = email.message_from_file(fp) @@ -2932,7 +2932,7 @@ def test_message_from_file(self): self.assertEqual(text, s.getvalue()) def test_message_from_string_with_class(self): - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: text = fp.read() # Create a subclass @@ -2942,7 +2942,7 @@ class MyMessage(Message): msg = email.message_from_string(text, MyMessage) self.assertIsInstance(msg, MyMessage) # Try something more complicated - with openfile('msg_02.txt') as fp: + with openfile('msg_02.txt', encoding="utf-8") as fp: text = fp.read() msg = email.message_from_string(text, MyMessage) for subpart in msg.walk(): @@ -2953,11 +2953,11 @@ def test_message_from_file_with_class(self): class MyMessage(Message): pass - with openfile('msg_01.txt') as fp: + with openfile('msg_01.txt', encoding="utf-8") as fp: msg = email.message_from_file(fp, MyMessage) self.assertIsInstance(msg, MyMessage) # Try something more complicated - with openfile('msg_02.txt') as fp: + with openfile('msg_02.txt', encoding="utf-8") as fp: msg = email.message_from_file(fp, MyMessage) for subpart in msg.walk(): self.assertIsInstance(subpart, MyMessage) @@ -3386,7 +3386,7 @@ def test_make_msgid_default_domain(self): def test_Generator_linend(self): # Issue 14645. - with openfile('msg_26.txt', newline='\n') as f: + with openfile('msg_26.txt', encoding="utf-8", newline='\n') as f: msgtxt = f.read() msgtxt_nl = msgtxt.replace('\r\n', '\n') msg = email.message_from_string(msgtxt) @@ -3397,7 +3397,7 @@ def test_Generator_linend(self): def test_BytesGenerator_linend(self): # Issue 14645. - with openfile('msg_26.txt', newline='\n') as f: + with openfile('msg_26.txt', encoding="utf-8", newline='\n') as f: msgtxt = f.read() msgtxt_nl = msgtxt.replace('\r\n', '\n') msg = email.message_from_string(msgtxt_nl) @@ -3456,7 +3456,7 @@ def test_body_line_iterator(self): it = iterators.body_line_iterator(msg) lines = list(it) eq(len(lines), 43) - with openfile('msg_19.txt') as fp: + with openfile('msg_19.txt', encoding="utf-8") as fp: neq(EMPTYSTRING.join(lines), fp.read()) def test_typed_subpart_iterator(self): @@ -3597,7 +3597,7 @@ class TestParsers(TestEmailBase): def test_header_parser(self): eq = self.assertEqual # Parse only the headers of a complex multipart MIME document - with openfile('msg_02.txt') as fp: + with openfile('msg_02.txt', encoding="utf-8") as fp: msg = HeaderParser().parse(fp) eq(msg['from'], 'ppp-request at zzz.org') eq(msg['to'], 'ppp at zzz.org') @@ -3631,12 +3631,12 @@ def test_bytes_parser_on_exception_does_not_close_file(self): self.assertFalse(fp.closed) def test_parser_does_not_close_file(self): - with openfile('msg_02.txt', 'r') as fp: + with openfile('msg_02.txt', encoding="utf-8") as fp: email.parser.Parser().parse(fp) self.assertFalse(fp.closed) def test_parser_on_exception_does_not_close_file(self): - with openfile('msg_15.txt', 'r') as fp: + with openfile('msg_15.txt', encoding="utf-8") as fp: parser = email.parser.Parser self.assertRaises(email.errors.StartBoundaryNotFoundDefect, parser(policy=email.policy.strict).parse, fp) @@ -3680,7 +3680,7 @@ def test_whitespace_continuation_last_header(self): def test_crlf_separation(self): eq = self.assertEqual - with openfile('msg_26.txt', newline='\n') as fp: + with openfile('msg_26.txt', encoding="utf-8", newline='\n') as fp: msg = Parser().parse(fp) eq(len(msg.get_payload()), 2) part1 = msg.get_payload(0) @@ -3691,7 +3691,7 @@ def test_crlf_separation(self): def test_crlf_flatten(self): # Using newline='\n' preserves the crlfs in this input file. - with openfile('msg_26.txt', newline='\n') as fp: + with openfile('msg_26.txt', encoding="utf-8", newline='\n') as fp: text = fp.read() msg = email.message_from_string(text) s = StringIO() @@ -3704,7 +3704,7 @@ def test_crlf_flatten(self): def test_multipart_digest_with_extra_mime_headers(self): eq = self.assertEqual neq = self.ndiffAssertEqual - with openfile('msg_28.txt') as fp: + with openfile('msg_28.txt', encoding="utf-8") as fp: msg = email.message_from_file(fp) # Structure is: # multipart/digest @@ -5447,7 +5447,7 @@ def test_should_not_hang_on_invalid_ew_messages(self): class TestSigned(TestEmailBase): def _msg_and_obj(self, filename): - with openfile(filename) as fp: + with openfile(filename, encoding="utf-8") as fp: original = fp.read() msg = email.message_from_string(original) return original, msg From webhook-mailer at python.org Sun Apr 4 23:32:42 2021 From: webhook-mailer at python.org (methane) Date: Mon, 05 Apr 2021 03:32:42 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix EncodingWarning in test_filecmp (GH-25159) Message-ID: https://github.com/python/cpython/commit/ee952b5c7355cb64179ca9bb77b13e7738132d3d commit: ee952b5c7355cb64179ca9bb77b13e7738132d3d branch: master author: Inada Naoki committer: methane date: 2021-04-05T12:32:35+09:00 summary: bpo-43651: PEP 597: Fix EncodingWarning in test_filecmp (GH-25159) files: M Lib/test/test_filecmp.py diff --git a/Lib/test/test_filecmp.py b/Lib/test/test_filecmp.py index fa4f67b6eb5f9..64ba5a0e18169 100644 --- a/Lib/test/test_filecmp.py +++ b/Lib/test/test_filecmp.py @@ -15,10 +15,10 @@ def setUp(self): self.name_diff = os_helper.TESTFN + '-diff' data = 'Contents of file go here.\n' for name in [self.name, self.name_same, self.name_diff]: - with open(name, 'w') as output: + with open(name, 'w', encoding="utf-8") as output: output.write(data) - with open(self.name_diff, 'a+') as output: + with open(self.name_diff, 'a+', encoding="utf-8") as output: output.write('An extra line.\n') self.dir = tempfile.gettempdir() @@ -72,10 +72,10 @@ def setUp(self): fn = 'FiLe' # Verify case-insensitive comparison else: fn = 'file' - with open(os.path.join(dir, fn), 'w') as output: + with open(os.path.join(dir, fn), 'w', encoding="utf-8") as output: output.write(data) - with open(os.path.join(self.dir_diff, 'file2'), 'w') as output: + with open(os.path.join(self.dir_diff, 'file2'), 'w', encoding="utf-8") as output: output.write('An extra file.\n') def tearDown(self): @@ -103,7 +103,7 @@ def test_cmpfiles(self): "Comparing directory to same fails") # Add different file2 - with open(os.path.join(self.dir, 'file2'), 'w') as output: + with open(os.path.join(self.dir, 'file2'), 'w', encoding="utf-8") as output: output.write('Different contents.\n') self.assertFalse(filecmp.cmpfiles(self.dir, self.dir_same, @@ -188,7 +188,7 @@ def test_dircmp(self): self._assert_report(d.report, expected_report) # Add different file2 - with open(os.path.join(self.dir_diff, 'file2'), 'w') as output: + with open(os.path.join(self.dir_diff, 'file2'), 'w', encoding="utf-8") as output: output.write('Different contents.\n') d = filecmp.dircmp(self.dir, self.dir_diff) self.assertEqual(d.same_files, ['file']) From webhook-mailer at python.org Mon Apr 5 00:11:38 2021 From: webhook-mailer at python.org (methane) Date: Mon, 05 Apr 2021 04:11:38 -0000 Subject: [Python-checkins] bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25181) Message-ID: https://github.com/python/cpython/commit/c8e5eb904e12010d2302364e1037c24a30f5e241 commit: c8e5eb904e12010d2302364e1037c24a30f5e241 branch: master author: Inada Naoki committer: methane date: 2021-04-05T13:11:23+09:00 summary: bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25181) * Fix test_shutil * Fix test_imp * Fix test_import * Fix test_importlib files: M Lib/test/test_imp.py M Lib/test/test_import/__init__.py M Lib/test/test_importlib/fixtures.py M Lib/test/test_importlib/source/test_file_loader.py M Lib/test/test_importlib/source/test_finder.py M Lib/test/test_importlib/test_api.py M Lib/test/test_importlib/test_files.py M Lib/test/test_importlib/test_main.py M Lib/test/test_importlib/test_pkg_import.py M Lib/test/test_importlib/util.py M Lib/test/test_shutil.py diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py index 4781d89a29574..5abe28ef62c84 100644 --- a/Lib/test/test_imp.py +++ b/Lib/test/test_imp.py @@ -102,7 +102,7 @@ def test_issue3594(self): temp_mod_name = 'test_imp_helper' sys.path.insert(0, '.') try: - with open(temp_mod_name + '.py', 'w') as file: + with open(temp_mod_name + '.py', 'w', encoding="latin-1") as file: file.write("# coding: cp1252\nu = 'test.test_imp'\n") file, filename, info = imp.find_module(temp_mod_name) file.close() @@ -157,7 +157,7 @@ def test_issue5604(self): # if the curdir is not in sys.path the test fails when run with # ./python ./Lib/test/regrtest.py test_imp sys.path.insert(0, os.curdir) - with open(temp_mod_name + '.py', 'w') as file: + with open(temp_mod_name + '.py', 'w', encoding="utf-8") as file: file.write('a = 1\n') file, filename, info = imp.find_module(temp_mod_name) with file: @@ -185,7 +185,7 @@ def test_issue5604(self): if not os.path.exists(test_package_name): os.mkdir(test_package_name) - with open(init_file_name, 'w') as file: + with open(init_file_name, 'w', encoding="utf-8") as file: file.write('b = 2\n') with warnings.catch_warnings(): warnings.simplefilter('ignore') @@ -310,7 +310,7 @@ def test_bug7732(self): def test_multiple_calls_to_get_data(self): # Issue #18755: make sure multiple calls to get_data() can succeed. loader = imp._LoadSourceCompatibility('imp', imp.__file__, - open(imp.__file__)) + open(imp.__file__, encoding="utf-8")) loader.get_data(imp.__file__) # File should be closed loader.get_data(imp.__file__) # Will need to create a newly opened file diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 6fd3983a20f68..dd832a1f6a763 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -117,7 +117,7 @@ def test_from_import_missing_attr_path_is_canonical(self): def test_from_import_star_invalid_type(self): import re with _ready_to_import() as (name, path): - with open(path, 'w') as f: + with open(path, 'w', encoding='utf-8') as f: f.write("__all__ = [b'invalid_type']") globals = {} with self.assertRaisesRegex( @@ -126,7 +126,7 @@ def test_from_import_star_invalid_type(self): exec(f"from {name} import *", globals) self.assertNotIn(b"invalid_type", globals) with _ready_to_import() as (name, path): - with open(path, 'w') as f: + with open(path, 'w', encoding='utf-8') as f: f.write("globals()[b'invalid_type'] = object()") globals = {} with self.assertRaisesRegex( @@ -155,7 +155,7 @@ def test_with_extension(ext): else: pyc = TESTFN + ".pyc" - with open(source, "w") as f: + with open(source, "w", encoding='utf-8') as f: print("# This tests Python's ability to import a", ext, "file.", file=f) a = random.randrange(1000) @@ -195,7 +195,7 @@ def test_module_with_large_stack(self, module='longlist'): filename = module + '.py' # Create a file with a list of 65000 elements. - with open(filename, 'w') as f: + with open(filename, 'w', encoding='utf-8') as f: f.write('d = [\n') for i in range(65000): f.write('"",\n') @@ -232,7 +232,7 @@ def test_module_with_large_stack(self, module='longlist'): def test_failing_import_sticks(self): source = TESTFN + ".py" - with open(source, "w") as f: + with open(source, "w", encoding='utf-8') as f: print("a = 1/0", file=f) # New in 2.4, we shouldn't be able to import that no matter how often @@ -281,7 +281,7 @@ def test_issue31286(self): def test_failing_reload(self): # A failing reload should leave the module object in sys.modules. source = TESTFN + os.extsep + "py" - with open(source, "w") as f: + with open(source, "w", encoding='utf-8') as f: f.write("a = 1\nb=2\n") sys.path.insert(0, os.curdir) @@ -298,7 +298,7 @@ def test_failing_reload(self): remove_files(TESTFN) # Now damage the module. - with open(source, "w") as f: + with open(source, "w", encoding='utf-8') as f: f.write("a = 10\nb=20//0\n") self.assertRaises(ZeroDivisionError, importlib.reload, mod) @@ -320,7 +320,7 @@ def test_failing_reload(self): def test_file_to_source(self): # check if __file__ points to the source file where available source = TESTFN + ".py" - with open(source, "w") as f: + with open(source, "w", encoding='utf-8') as f: f.write("test = None\n") sys.path.insert(0, os.curdir) @@ -369,7 +369,7 @@ def test_timestamp_overflow(self): try: source = TESTFN + ".py" compiled = importlib.util.cache_from_source(source) - with open(source, 'w') as f: + with open(source, 'w', encoding='utf-8') as f: pass try: os.utime(source, (2 ** 33 - 5, 2 ** 33 - 5)) @@ -574,7 +574,7 @@ def test_pyc_always_writable(self): # with later updates, see issue #6074 for details with _ready_to_import() as (name, path): # Write a Python file, make it read-only and import it - with open(path, 'w') as f: + with open(path, 'w', encoding='utf-8') as f: f.write("x = 'original'\n") # Tweak the mtime of the source to ensure pyc gets updated later s = os.stat(path) @@ -584,7 +584,7 @@ def test_pyc_always_writable(self): self.assertEqual(m.x, 'original') # Change the file and then reimport it os.chmod(path, 0o600) - with open(path, 'w') as f: + with open(path, 'w', encoding='utf-8') as f: f.write("x = 'rewritten'\n") unload(name) importlib.invalidate_caches() @@ -623,7 +623,7 @@ def setUp(self): self.sys_path = sys.path[:] self.orig_module = sys.modules.pop(self.module_name, None) os.mkdir(self.dir_name) - with open(self.file_name, "w") as f: + with open(self.file_name, "w", encoding='utf-8') as f: f.write(self.module_source) sys.path.insert(0, self.dir_name) importlib.invalidate_caches() @@ -704,7 +704,8 @@ def tearDown(self): # Regression test for http://bugs.python.org/issue1293. def test_trailing_slash(self): - with open(os.path.join(self.path, 'test_trailing_slash.py'), 'w') as f: + with open(os.path.join(self.path, 'test_trailing_slash.py'), + 'w', encoding='utf-8') as f: f.write("testdata = 'test_trailing_slash'") sys.path.append(self.path+'/') mod = __import__("test_trailing_slash") @@ -842,7 +843,7 @@ def _clean(self): def setUp(self): self.source = TESTFN + '.py' self._clean() - with open(self.source, 'w') as fp: + with open(self.source, 'w', encoding='utf-8') as fp: print('# This is a test file written by test_import.py', file=fp) sys.path.insert(0, os.curdir) importlib.invalidate_caches() @@ -941,9 +942,9 @@ def cleanup(): os.mkdir('pep3147') self.addCleanup(cleanup) # Touch the __init__.py - with open(os.path.join('pep3147', '__init__.py'), 'w'): + with open(os.path.join('pep3147', '__init__.py'), 'wb'): pass - with open(os.path.join('pep3147', 'foo.py'), 'w'): + with open(os.path.join('pep3147', 'foo.py'), 'wb'): pass importlib.invalidate_caches() m = __import__('pep3147.foo') @@ -964,9 +965,9 @@ def cleanup(): os.mkdir('pep3147') self.addCleanup(cleanup) # Touch the __init__.py - with open(os.path.join('pep3147', '__init__.py'), 'w'): + with open(os.path.join('pep3147', '__init__.py'), 'wb'): pass - with open(os.path.join('pep3147', 'foo.py'), 'w'): + with open(os.path.join('pep3147', 'foo.py'), 'wb'): pass importlib.invalidate_caches() m = __import__('pep3147.foo') @@ -986,7 +987,7 @@ def test_recompute_pyc_same_second(self): # source size is enough to trigger recomputation of the pyc file. __import__(TESTFN) unload(TESTFN) - with open(self.source, 'a') as fp: + with open(self.source, 'a', encoding='utf-8') as fp: print("x = 5", file=fp) m = __import__(TESTFN) self.assertEqual(m.x, 5) @@ -1118,7 +1119,7 @@ def tearDown(self): def create_module(self, mod, contents, ext=".py"): fname = os.path.join(TESTFN, mod + ext) - with open(fname, "w") as f: + with open(fname, "w", encoding='utf-8') as f: f.write(contents) self.addCleanup(unload, mod) importlib.invalidate_caches() @@ -1195,10 +1196,10 @@ def _setup_broken_package(self, parent, child): os.mkdir(pkg_path) # Touch the __init__.py init_path = os.path.join(pkg_path, '__init__.py') - with open(init_path, 'w') as f: + with open(init_path, 'w', encoding='utf-8') as f: f.write(parent) bar_path = os.path.join(pkg_path, 'bar.py') - with open(bar_path, 'w') as f: + with open(bar_path, 'w', encoding='utf-8') as f: f.write(child) importlib.invalidate_caches() return init_path, bar_path diff --git a/Lib/test/test_importlib/fixtures.py b/Lib/test/test_importlib/fixtures.py index 429313e9efb98..b50afda0f8f8f 100644 --- a/Lib/test/test_importlib/fixtures.py +++ b/Lib/test/test_importlib/fixtures.py @@ -250,7 +250,7 @@ def build_files(file_defs, prefix=pathlib.Path()): with full_name.open('wb') as f: f.write(contents) else: - with full_name.open('w') as f: + with full_name.open('w', encoding='utf-8') as f: f.write(DALS(contents)) diff --git a/Lib/test/test_importlib/source/test_file_loader.py b/Lib/test/test_importlib/source/test_file_loader.py index cbd1533b67664..1065ac55fce3f 100644 --- a/Lib/test/test_importlib/source/test_file_loader.py +++ b/Lib/test/test_importlib/source/test_file_loader.py @@ -124,7 +124,7 @@ def test_module_reuse(self): module = loader.load_module('_temp') module_id = id(module) module_dict_id = id(module.__dict__) - with open(mapping['_temp'], 'w') as file: + with open(mapping['_temp'], 'w', encoding='utf-8') as file: file.write("testing_var = 42\n") with warnings.catch_warnings(): warnings.simplefilter('ignore', DeprecationWarning) @@ -145,7 +145,7 @@ def test_state_after_failure(self): orig_module = types.ModuleType(name) for attr in attributes: setattr(orig_module, attr, value) - with open(mapping[name], 'w') as file: + with open(mapping[name], 'w', encoding='utf-8') as file: file.write('+++ bad syntax +++') loader = self.machinery.SourceFileLoader('_temp', mapping['_temp']) with self.assertRaises(SyntaxError): @@ -162,7 +162,7 @@ def test_state_after_failure(self): # [syntax error] def test_bad_syntax(self): with util.create_modules('_temp') as mapping: - with open(mapping['_temp'], 'w') as file: + with open(mapping['_temp'], 'w', encoding='utf-8') as file: file.write('=') loader = self.machinery.SourceFileLoader('_temp', mapping['_temp']) with self.assertRaises(SyntaxError): @@ -175,7 +175,7 @@ def test_file_from_empty_string_dir(self): # Loading a module found from an empty string entry on sys.path should # not only work, but keep all attributes relative. file_path = '_temp.py' - with open(file_path, 'w') as file: + with open(file_path, 'w', encoding='utf-8') as file: file.write("# test file for importlib") try: with util.uncache('_temp'): @@ -199,7 +199,7 @@ def test_timestamp_overflow(self): with util.create_modules('_temp') as mapping: source = mapping['_temp'] compiled = self.util.cache_from_source(source) - with open(source, 'w') as f: + with open(source, 'w', encoding='utf-8') as f: f.write("x = 5") try: os.utime(source, (2 ** 33 - 5, 2 ** 33 - 5)) diff --git a/Lib/test/test_importlib/source/test_finder.py b/Lib/test/test_importlib/source/test_finder.py index e9207deedc75c..80e930cc6a1f2 100644 --- a/Lib/test/test_importlib/source/test_finder.py +++ b/Lib/test/test_importlib/source/test_finder.py @@ -127,7 +127,7 @@ def test_empty_string_for_dir(self): # The empty string from sys.path means to search in the cwd. finder = self.machinery.FileFinder('', (self.machinery.SourceFileLoader, self.machinery.SOURCE_SUFFIXES)) - with open('mod.py', 'w') as file: + with open('mod.py', 'w', encoding='utf-8') as file: file.write("# test file for importlib") try: loader = self._find(finder, 'mod', loader_only=True) diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py index 384ae9ca7a57a..8344fb0e66065 100644 --- a/Lib/test/test_importlib/test_api.py +++ b/Lib/test/test_importlib/test_api.py @@ -312,7 +312,7 @@ def test_reload_namespace_changed(self): '__file__': None, } os.mkdir(name) - with open(bad_path, 'w') as init_file: + with open(bad_path, 'w', encoding='utf-8') as init_file: init_file.write('eggs = None') module = self.init.import_module(name) ns = vars(module).copy() diff --git a/Lib/test/test_importlib/test_files.py b/Lib/test/test_importlib/test_files.py index 1e7a1f3cbcc54..481829b742285 100644 --- a/Lib/test/test_importlib/test_files.py +++ b/Lib/test/test_importlib/test_files.py @@ -15,7 +15,7 @@ def test_read_bytes(self): def test_read_text(self): files = resources.files(self.data) - actual = files.joinpath('utf-8.file').read_text() + actual = files.joinpath('utf-8.file').read_text(encoding='utf-8') assert actual == 'Hello, UTF-8 world!\n' @unittest.skipUnless( diff --git a/Lib/test/test_importlib/test_main.py b/Lib/test/test_importlib/test_main.py index db97e53922cf8..08069c9a5de77 100644 --- a/Lib/test/test_importlib/test_main.py +++ b/Lib/test/test_importlib/test_main.py @@ -83,7 +83,7 @@ def pkg_with_dashes(site_dir): metadata_dir = site_dir / 'my_pkg.dist-info' metadata_dir.mkdir() metadata = metadata_dir / 'METADATA' - with metadata.open('w') as strm: + with metadata.open('w', encoding='utf-8') as strm: strm.write('Version: 1.0\n') return 'my-pkg' @@ -102,7 +102,7 @@ def pkg_with_mixed_case(site_dir): metadata_dir = site_dir / 'CherryPy.dist-info' metadata_dir.mkdir() metadata = metadata_dir / 'METADATA' - with metadata.open('w') as strm: + with metadata.open('w', encoding='utf-8') as strm: strm.write('Version: 1.0\n') return 'CherryPy' diff --git a/Lib/test/test_importlib/test_pkg_import.py b/Lib/test/test_importlib/test_pkg_import.py index 36e78afa10bfc..66f5f8bc253a8 100644 --- a/Lib/test/test_importlib/test_pkg_import.py +++ b/Lib/test/test_importlib/test_pkg_import.py @@ -42,7 +42,7 @@ def rewrite_file(self, contents): compiled_path = cache_from_source(self.module_path) if os.path.exists(compiled_path): os.remove(compiled_path) - with open(self.module_path, 'w') as f: + with open(self.module_path, 'w', encoding='utf-8') as f: f.write(contents) def test_package_import__semantics(self): diff --git a/Lib/test/test_importlib/util.py b/Lib/test/test_importlib/util.py index 5c0375e04a6ff..ca0d8c9b6eb35 100644 --- a/Lib/test/test_importlib/util.py +++ b/Lib/test/test_importlib/util.py @@ -116,7 +116,7 @@ def case_insensitive_tests(test): def submodule(parent, name, pkg_dir, content=''): path = os.path.join(pkg_dir, name + '.py') - with open(path, 'w') as subfile: + with open(path, 'w', encoding='utf-8') as subfile: subfile.write(content) return '{}.{}'.format(parent, name), path @@ -176,7 +176,7 @@ def temp_module(name, content='', *, pkg=False): content = '' if content is not None: # not a namespace package - with open(modpath, 'w') as modfile: + with open(modpath, 'w', encoding='utf-8') as modfile: modfile.write(content) yield location @@ -384,7 +384,7 @@ def create_modules(*names): os.mkdir(file_path) created_paths.append(file_path) file_path = os.path.join(file_path, name_parts[-1] + '.py') - with open(file_path, 'w') as file: + with open(file_path, 'w', encoding='utf-8') as file: file.write(source.format(name)) created_paths.append(file_path) mapping[name] = file_path diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index 4bcad51509d9c..493c7e5f9f137 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -74,7 +74,9 @@ def write_file(path, content, binary=False): """ if isinstance(path, tuple): path = os.path.join(*path) - with open(path, 'wb' if binary else 'w') as fp: + mode = 'wb' if binary else 'w' + encoding = None if binary else "utf-8" + with open(path, mode, encoding=encoding) as fp: fp.write(content) def write_test_file(path, size): @@ -104,7 +106,9 @@ def read_file(path, binary=False): """ if isinstance(path, tuple): path = os.path.join(*path) - with open(path, 'rb' if binary else 'r') as fp: + mode = 'rb' if binary else 'r' + encoding = None if binary else "utf-8" + with open(path, mode, encoding=encoding) as fp: return fp.read() def rlistdir(path): @@ -674,7 +678,7 @@ def custom_cpfun(a, b): flag = [] src = self.mkdtemp() dst = tempfile.mktemp(dir=self.mkdtemp()) - with open(os.path.join(src, 'foo'), 'w') as f: + with open(os.path.join(src, 'foo'), 'w', encoding='utf-8') as f: f.close() shutil.copytree(src, dst, copy_function=custom_cpfun) self.assertEqual(len(flag), 1) @@ -746,7 +750,7 @@ def test_copytree_symlink_dir(self): src_dir = self.mkdtemp() dst_dir = os.path.join(self.mkdtemp(), 'destination') os.mkdir(os.path.join(src_dir, 'real_dir')) - with open(os.path.join(src_dir, 'real_dir', 'test.txt'), 'w'): + with open(os.path.join(src_dir, 'real_dir', 'test.txt'), 'wb'): pass os.symlink(os.path.join(src_dir, 'real_dir'), os.path.join(src_dir, 'link_to_dir'), @@ -1172,14 +1176,14 @@ def test_dont_copy_file_onto_link_to_itself(self): src = os.path.join(TESTFN, 'cheese') dst = os.path.join(TESTFN, 'shop') try: - with open(src, 'w') as f: + with open(src, 'w', encoding='utf-8') as f: f.write('cheddar') try: os.link(src, dst) except PermissionError as e: self.skipTest('os.link(): %s' % e) self.assertRaises(shutil.SameFileError, shutil.copyfile, src, dst) - with open(src, 'r') as f: + with open(src, 'r', encoding='utf-8') as f: self.assertEqual(f.read(), 'cheddar') os.remove(dst) finally: @@ -1192,14 +1196,14 @@ def test_dont_copy_file_onto_symlink_to_itself(self): src = os.path.join(TESTFN, 'cheese') dst = os.path.join(TESTFN, 'shop') try: - with open(src, 'w') as f: + with open(src, 'w', encoding='utf-8') as f: f.write('cheddar') # Using `src` here would mean we end up with a symlink pointing # to TESTFN/TESTFN/cheese, while it should point at # TESTFN/cheese. os.symlink('cheese', dst) self.assertRaises(shutil.SameFileError, shutil.copyfile, src, dst) - with open(src, 'r') as f: + with open(src, 'r', encoding='utf-8') as f: self.assertEqual(f.read(), 'cheddar') os.remove(dst) finally: @@ -2586,7 +2590,7 @@ def test_fallback(self): # sys.__stdout__ is not a terminal on Unix # or fileno() not in (0, 1, 2) on Windows - with open(os.devnull, 'w') as f, \ + with open(os.devnull, 'w', encoding='utf-8') as f, \ support.swap_attr(sys, '__stdout__', f): size = shutil.get_terminal_size(fallback=(30, 40)) self.assertEqual(size.columns, 30) From webhook-mailer at python.org Mon Apr 5 09:50:32 2021 From: webhook-mailer at python.org (serhiy-storchaka) Date: Mon, 05 Apr 2021 13:50:32 -0000 Subject: [Python-checkins] bpo-43084: Return bool instead of int from curses.window.enclose() (GH-24398) Message-ID: https://github.com/python/cpython/commit/b1dc1aacf8b0f319024a1a3ce91d395956537c11 commit: b1dc1aacf8b0f319024a1a3ce91d395956537c11 branch: master author: Serhiy Storchaka committer: serhiy-storchaka date: 2021-04-05T16:50:24+03:00 summary: bpo-43084: Return bool instead of int from curses.window.enclose() (GH-24398) files: A Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst M Doc/library/curses.rst M Lib/test/test_curses.py M Modules/_cursesmodule.c M Modules/clinic/_cursesmodule.c.h diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst index f55bb034b559b..efbece437af2d 100644 --- a/Doc/library/curses.rst +++ b/Doc/library/curses.rst @@ -915,6 +915,9 @@ the following methods and attributes: determining what subset of the screen windows enclose the location of a mouse event. + .. versionchanged:: 3.10 + Previously it returned ``1`` or ``0`` instead of ``True`` or ``False``. + .. attribute:: window.encoding diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 7ce0461ab54f2..280a9dc0eedfc 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -566,13 +566,12 @@ def test_resize(self): @requires_curses_window_meth('enclose') def test_enclose(self): win = curses.newwin(5, 15, 2, 5) - # TODO: Return bool instead of 1/0 - self.assertTrue(win.enclose(2, 5)) - self.assertFalse(win.enclose(1, 5)) - self.assertFalse(win.enclose(2, 4)) - self.assertTrue(win.enclose(6, 19)) - self.assertFalse(win.enclose(7, 19)) - self.assertFalse(win.enclose(6, 20)) + self.assertIs(win.enclose(2, 5), True) + self.assertIs(win.enclose(1, 5), False) + self.assertIs(win.enclose(2, 4), False) + self.assertIs(win.enclose(6, 19), True) + self.assertIs(win.enclose(7, 19), False) + self.assertIs(win.enclose(6, 20), False) def test_putwin(self): win = curses.newwin(5, 12, 1, 2) diff --git a/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst b/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst new file mode 100644 index 0000000000000..bdab5d9c34b24 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst @@ -0,0 +1,2 @@ +:func:`curses.window.enclose` returns now ``True`` or ``False`` (as was +documented) instead of ``1`` or ``0``. diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 3df9f506052d3..d221cf1a92520 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -1343,7 +1343,7 @@ _curses_window_echochar_impl(PyCursesWindowObject *self, PyObject *ch, #ifdef NCURSES_MOUSE_VERSION /*[clinic input] -_curses.window.enclose -> long +_curses.window.enclose y: int Y-coordinate. @@ -1354,11 +1354,11 @@ _curses.window.enclose -> long Return True if the screen-relative coordinates are enclosed by the window. [clinic start generated code]*/ -static long +static PyObject * _curses_window_enclose_impl(PyCursesWindowObject *self, int y, int x) -/*[clinic end generated code: output=5251c961cbe3df63 input=dfe1d9d4d05d8642]*/ +/*[clinic end generated code: output=8679beef50502648 input=4fd3355d723f7bc9]*/ { - return wenclose(self->win, y, x); + return PyBool_FromLong(wenclose(self->win, y, x)); } #endif diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h index e46a8e3d0b23e..9c9611685b78e 100644 --- a/Modules/clinic/_cursesmodule.c.h +++ b/Modules/clinic/_cursesmodule.c.h @@ -689,7 +689,7 @@ PyDoc_STRVAR(_curses_window_enclose__doc__, #define _CURSES_WINDOW_ENCLOSE_METHODDEF \ {"enclose", (PyCFunction)(void(*)(void))_curses_window_enclose, METH_FASTCALL, _curses_window_enclose__doc__}, -static long +static PyObject * _curses_window_enclose_impl(PyCursesWindowObject *self, int y, int x); static PyObject * @@ -698,7 +698,6 @@ _curses_window_enclose(PyCursesWindowObject *self, PyObject *const *args, Py_ssi PyObject *return_value = NULL; int y; int x; - long _return_value; if (!_PyArg_CheckPositional("enclose", nargs, 2, 2)) { goto exit; @@ -711,11 +710,7 @@ _curses_window_enclose(PyCursesWindowObject *self, PyObject *const *args, Py_ssi if (x == -1 && PyErr_Occurred()) { goto exit; } - _return_value = _curses_window_enclose_impl(self, y, x); - if ((_return_value == -1) && PyErr_Occurred()) { - goto exit; - } - return_value = PyLong_FromLong(_return_value); + return_value = _curses_window_enclose_impl(self, y, x); exit: return return_value; @@ -4289,4 +4284,4 @@ _curses_has_extended_color_support(PyObject *module, PyObject *Py_UNUSED(ignored #ifndef _CURSES_USE_DEFAULT_COLORS_METHODDEF #define _CURSES_USE_DEFAULT_COLORS_METHODDEF #endif /* !defined(_CURSES_USE_DEFAULT_COLORS_METHODDEF) */ -/*[clinic end generated code: output=ae6559aa61200289 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=9efc9943a3ac3741 input=a9049054013a1b77]*/ From webhook-mailer at python.org Mon Apr 5 12:38:19 2021 From: webhook-mailer at python.org (pablogsal) Date: Mon, 05 Apr 2021 16:38:19 -0000 Subject: [Python-checkins] Fix the "make suspicious" check on the pprint docs (GH-25193) Message-ID: https://github.com/python/cpython/commit/57f21db3f629649dbd7c4531078b6a2104896411 commit: 57f21db3f629649dbd7c4531078b6a2104896411 branch: master author: Pablo Galindo committer: pablogsal date: 2021-04-05T17:38:10+01:00 summary: Fix the "make suspicious" check on the pprint docs (GH-25193) files: M Doc/library/pprint.rst diff --git a/Doc/library/pprint.rst b/Doc/library/pprint.rst index b3b6ed56a5e17..756c33a7a8668 100644 --- a/Doc/library/pprint.rst +++ b/Doc/library/pprint.rst @@ -56,8 +56,8 @@ The :mod:`pprint` module defines one class: as will fit within the *width* will be formatted on each output line. If *sort_dicts* is true (the default), dictionaries will be formatted with their keys sorted, otherwise they will display in insertion order. If - *underscore_numbers* is true, integers will be formatted with - ```_``` character for a thousands separator, otherwise underscores are not + *underscore_numbers* is true, integers will be formatted with the + ``_`` character for a thousands separator, otherwise underscores are not displayed (the default). .. versionchanged:: 3.4 From webhook-mailer at python.org Mon Apr 5 13:06:13 2021 From: webhook-mailer at python.org (pablogsal) Date: Mon, 05 Apr 2021 17:06:13 -0000 Subject: [Python-checkins] Python 3.10.0a7 Message-ID: https://github.com/python/cpython/commit/53e55290cf1972919ce2e83982346ff562ca31e3 commit: 53e55290cf1972919ce2e83982346ff562ca31e3 branch: master author: Pablo Galindo committer: pablogsal date: 2021-04-05T17:39:49+01:00 summary: Python 3.10.0a7 files: A Misc/NEWS.d/3.10.0a7.rst D Misc/NEWS.d/next/Build/2021-03-04-17-13-57.bpo-43372.FfqDVL.rst D Misc/NEWS.d/next/Build/2021-03-11-00-14-47.bpo-43466.N861Z5.rst D Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst D Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst D Misc/NEWS.d/next/Build/2021-03-31-12-20-23.bpo-43179.Qbe1OD.rst D Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst D Misc/NEWS.d/next/C API/2021-03-17-23-53-14.bpo-43244.kfPqA_.rst D Misc/NEWS.d/next/C API/2021-03-18-12-44-33.bpo-43541.ICigzd.rst D Misc/NEWS.d/next/C API/2021-03-19-12-56-11.bpo-43244.VuIyOD.rst D Misc/NEWS.d/next/C API/2021-03-23-20-53-41.bpo-43244.VK3sLH.rst D Misc/NEWS.d/next/C API/2021-03-24-01-22-14.bpo-43244.31-97x.rst D Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst D Misc/NEWS.d/next/Core and Builtins/2020-02-03-13-23-10.bpo-29988.8_UB5w.rst D Misc/NEWS.d/next/Core and Builtins/2021-02-21-14-19-35.bpo-37448.btl7vO.rst D Misc/NEWS.d/next/Core and Builtins/2021-02-22-03-01-02.bpo-43287.aTs6fO.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-03-17-58-49.bpo-43390.epPpwV.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-03-19-04-23.bpo-42128.VouZjn.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-05-17-23-36.bpo-43410.lCzIg0.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-14-16-44-50.bpo-39316.Ns3a_F.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-15-07-50-30.bpo-43497.Uc5ZCJ.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-20-01-21-37.bpo-43452.tDVJkc.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-21-12-26-32.bpo-43575.pl-nSg.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-24-00-32-20.bpo-41064._H0K_g.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-26-17-30-19.bpo-42134.G4Sjxg.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst D Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst D Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst D Misc/NEWS.d/next/Documentation/2020-10-05-20-04-43.bpo-41933.Pff94-.rst D Misc/NEWS.d/next/Documentation/2021-03-02-12-55-34.bpo-43354.ezZYkx.rst D Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst D Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst D Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst D Misc/NEWS.d/next/Library/2018-08-24-01-08-09.bpo-31861.-q9RKJ.rst D Misc/NEWS.d/next/Library/2020-01-15-11-15-35.bpo-39342.S8PuJO.rst D Misc/NEWS.d/next/Library/2020-05-27-05-42-39.bpo-40701.PBIgW1.rst D Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst D Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst D Misc/NEWS.d/next/Library/2020-09-23-21-58-34.bpo-40066.f1dr_5.rst D Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst D Misc/NEWS.d/next/Library/2021-01-07-21-25-49.bpo-14678.1zniCH.rst D Misc/NEWS.d/next/Library/2021-01-21-16-58-34.bpo-42994.El0Ksp.rst D Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst D Misc/NEWS.d/next/Library/2021-02-07-19-13-30.bpo-43125.AqNoMa.rst D Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst D Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst D Misc/NEWS.d/next/Library/2021-03-02-09-54-22.bpo-41282.xL4h94.rst D Misc/NEWS.d/next/Library/2021-03-02-13-45-05.bpo-43368.t9XEkQ.rst D Misc/NEWS.d/next/Library/2021-03-02-15-25-28.bpo-43369.F4knlQ.rst D Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst D Misc/NEWS.d/next/Library/2021-03-04-21-51-20.bpo-43356.X7IGBM.rst D Misc/NEWS.d/next/Library/2021-03-07-08-03-31.bpo-43420.cee_X5.rst D Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst D Misc/NEWS.d/next/Library/2021-03-07-18-54-39.bpo-43428.br0XmX.rst D Misc/NEWS.d/next/Library/2021-03-07-23-23-03.bpo-29982.Q9iszT.rst D Misc/NEWS.d/next/Library/2021-03-08-22-14-37.bpo-43245.nXL-MC.rst D Misc/NEWS.d/next/Library/2021-03-09-11-36-19.bpo-43445.jnj-UB.rst D Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst D Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst D Misc/NEWS.d/next/Library/2021-03-13-08-18-01.bpo-41361.lXDIlr.rst D Misc/NEWS.d/next/Library/2021-03-14-21-47-28.bpo-42914.9U1o33.rst D Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst D Misc/NEWS.d/next/Library/2021-03-16-17-20-33.bpo-43510.-BeQH_.rst D Misc/NEWS.d/next/Library/2021-03-19-10-22-17.bpo-40645.5pXhb-.rst D Misc/NEWS.d/next/Library/2021-03-20-15-43-25.bpo-43542.6bt2F6.rst D Misc/NEWS.d/next/Library/2021-03-20-17-40-35.bpo-43571.acAL0W.rst D Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst D Misc/NEWS.d/next/Library/2021-03-21-17-02-52.bpo-43422.POk6cU.rst D Misc/NEWS.d/next/Library/2021-03-21-17-50-42.bpo-41369.-fpmYZ.rst D Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst D Misc/NEWS.d/next/Library/2021-03-25-08-44-26.bpo-42136.rRY9e1.rst D Misc/NEWS.d/next/Library/2021-03-25-21-26-30.bpo-40066.7EBQ3_.rst D Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst D Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst D Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst D Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst D Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst D Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst D Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst D Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst D Misc/NEWS.d/next/Windows/2021-03-09-11-15-41.bpo-43440.igy2Mn.rst M Include/patchlevel.h M Lib/pydoc_data/topics.py M README.rst M configure diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 31da16a7be587..dc61d98c57ff0 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -20,10 +20,10 @@ #define PY_MINOR_VERSION 10 #define PY_MICRO_VERSION 0 #define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_ALPHA -#define PY_RELEASE_SERIAL 6 +#define PY_RELEASE_SERIAL 7 /* Version as a string */ -#define PY_VERSION "3.10.0a6+" +#define PY_VERSION "3.10.0a7" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index a86d42247c3d0..83e1a975ec78b 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Mon Mar 1 16:48:51 2021 +# Autogenerated by Sphinx on Mon Apr 5 17:39:41 2021 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -5782,9 +5782,11 @@ '"Formatter",\n' 'subclasses can define their own format string syntax). The ' 'syntax is\n' - 'related to that of formatted string literals, but there ' - 'are\n' - 'differences.\n' + 'related to that of formatted string literals, but it is ' + 'less\n' + 'sophisticated and, in particular, does not support ' + 'arbitrary\n' + 'expressions.\n' '\n' 'Format strings contain ?replacement fields? surrounded by ' 'curly braces\n' @@ -5978,7 +5980,7 @@ 'character that can be any character and defaults to a space ' 'if\n' 'omitted. It is not possible to use a literal curly brace ' - '(?"{"? or\n' + '(?"{"? or\n' '?"}"?) as the *fill* character in a formatted string ' 'literal or when\n' 'using the "str.format()" method. However, it is possible ' @@ -7676,7 +7678,7 @@ '\n' 'Note that numeric literals do not include a sign; a phrase like ' '"-1"\n' - 'is actually an expression composed of the unary operator ?"-"? ' + 'is actually an expression composed of the unary operator ?"-"? ' 'and the\n' 'literal "1".\n', 'numeric-types': 'Emulating numeric types\n' @@ -13956,9 +13958,9 @@ '| "s + t" | the concatenation of *s* and *t* ' '| (6)(7) |\n' '+----------------------------+----------------------------------+------------+\n' - '| "s * n" or "n * s" | equivalent to *n* copies of the ' + '| "s * n" or "n * s" | equivalent to adding *s* to ' '| (2)(7) |\n' - '| | *s* sequence ' + '| | itself *n* times ' '| |\n' '+----------------------------+----------------------------------+------------+\n' '| "s[i]" | *i*th item of *s*, origin 0 ' diff --git a/Misc/NEWS.d/3.10.0a7.rst b/Misc/NEWS.d/3.10.0a7.rst new file mode 100644 index 0000000000000..e53f6ba84e43d --- /dev/null +++ b/Misc/NEWS.d/3.10.0a7.rst @@ -0,0 +1,983 @@ +.. bpo: 42988 +.. date: 2021-03-24-14-16-56 +.. nonce: P2aNco +.. release date: 2021-04-05 +.. section: Security + +CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module +which could be abused to read arbitrary files on the disk (directory +traversal vulnerability). Moreover, even source code of Python modules can +contain sensitive data like passwords. Vulnerability reported by David +Schw?rer. + +.. + +.. bpo: 43285 +.. date: 2021-03-13-03-48-14 +.. nonce: g-Hah3 +.. section: Security + +:mod:`ftplib` no longer trusts the IP address value returned from the server +in response to the PASV command by default. This prevents a malicious FTP +server from using the response to probe IPv4 address and port combinations +on the client network. + +Code that requires the former vulnerable behavior may set a +``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP` +instances to ``True`` to re-enable it. + +.. + +.. bpo: 43439 +.. date: 2021-03-08-23-06-07 +.. nonce: 5U3lXm +.. section: Security + +Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and +:func:`gc.get_referents`. Patch by Pablo Galindo. + +.. + +.. bpo: 27129 +.. date: 2021-04-03-22-04-46 +.. nonce: u_ehHb +.. section: Core and Builtins + +Update CPython bytecode magic number. + +.. + +.. bpo: 43672 +.. date: 2021-03-31-09-12-54 +.. nonce: jTT5uG +.. section: Core and Builtins + +Raise ImportWarning when calling find_loader(). + +.. + +.. bpo: 43660 +.. date: 2021-03-29-19-50-34 +.. nonce: scTgag +.. section: Core and Builtins + +Fix crash that happens when replacing ``sys.stderr`` with a callable that +can remove the object while an exception is being printed. Patch by Pablo +Galindo. + +.. + +.. bpo: 27129 +.. date: 2021-03-29-16-20-29 +.. nonce: BF03A5 +.. section: Core and Builtins + +The bytecode interpreter uses instruction, rather byte, offsets internally. +This reduces the number of EXTENDED_ARG instructions needed and streamlines +instruction dispatch a bit. + +.. + +.. bpo: 40645 +.. date: 2021-03-29-11-55-06 +.. nonce: PhaT-B +.. section: Core and Builtins + +Fix reference leak in the :mod:`_hashopenssl` extension. Patch by Pablo +Galindo. + +.. + +.. bpo: 42134 +.. date: 2021-03-26-17-30-19 +.. nonce: G4Sjxg +.. section: Core and Builtins + +Calls to find_module() by the import system now raise ImportWarning. + +.. + +.. bpo: 41064 +.. date: 2021-03-24-00-32-20 +.. nonce: _H0K_g +.. section: Core and Builtins + +Improve the syntax error for invalid usage of double starred elements ('**') +in f-strings. Patch by Pablo Galindo. + +.. + +.. bpo: 43575 +.. date: 2021-03-21-12-26-32 +.. nonce: pl-nSg +.. section: Core and Builtins + +Speed up calls to ``map()`` by using the :pep:`590` ``vectorcall`` calling +convention. Patch by Dong-hee Na. + +.. + +.. bpo: 42137 +.. date: 2021-03-20-19-54-47 +.. nonce: A8aQvj +.. section: Core and Builtins + +The import system now prefers using ``__spec__`` for ``ModuleType.__repr__`` +over ``module_repr()``. + +.. + +.. bpo: 43452 +.. date: 2021-03-20-01-21-37 +.. nonce: tDVJkc +.. section: Core and Builtins + +Added micro-optimizations to ``_PyType_Lookup()`` to improve cache lookup +performance in the common case of cache hits. + +.. + +.. bpo: 43555 +.. date: 2021-03-19-22-49-40 +.. nonce: ZmhYSA +.. section: Core and Builtins + +Report the column offset for :exc:`SyntaxError` for invalid line +continuation characters. Patch by Pablo Galindo. + +.. + +.. bpo: 43517 +.. date: 2021-03-16-17-12-54 +.. nonce: zAo6Ws +.. section: Core and Builtins + +Fix misdetection of circular imports when using ``from pkg.mod import +attr``, which caused false positives in non-trivial multi-threaded code. + +.. + +.. bpo: 43497 +.. date: 2021-03-15-07-50-30 +.. nonce: Uc5ZCJ +.. section: Core and Builtins + +Emit SyntaxWarnings for assertions with tuple constants, this is a +regression introduced in python3.7 + +.. + +.. bpo: 39316 +.. date: 2021-03-14-16-44-50 +.. nonce: Ns3a_F +.. section: Core and Builtins + +Tracing now has correct line numbers for attribute accesses when the the +attribute is on a different line from the object. Improves debugging and +profiling for multi-line method chains. + +.. + +.. bpo: 35883 +.. date: 2021-03-13-13-57-21 +.. nonce: UyGpdG +.. section: Core and Builtins + +Python no longer fails at startup with a fatal error if a command line +argument contains an invalid Unicode character. The +:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be +decoded as Unicode characters outside the [U+0000; U+10ffff] range. + +.. + +.. bpo: 43410 +.. date: 2021-03-05-17-23-36 +.. nonce: lCzIg0 +.. section: Core and Builtins + +Fix a bug that was causing the parser to crash when emiting syntax errors +when reading input from stdin. Patch by Pablo Galindo + +.. + +.. bpo: 43406 +.. date: 2021-03-04-22-53-10 +.. nonce: Na_VpA +.. section: Core and Builtins + +Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute +a non-Python signal handler. + +.. + +.. bpo: 42128 +.. date: 2021-03-03-19-04-23 +.. nonce: VouZjn +.. section: Core and Builtins + +Add ``__match_args__`` to :c:type:`structsequence` based classes. Patch by +Pablo Galindo. + +.. + +.. bpo: 43390 +.. date: 2021-03-03-17-58-49 +.. nonce: epPpwV +.. section: Core and Builtins + +CPython now sets the ``SA_ONSTACK`` flag in ``PyOS_setsig`` for the VM's +default signal handlers. This is friendlier to other in-process code that +an extension module or embedding use could pull in (such as Golang's cgo) +where tiny thread stacks are the norm and ``sigaltstack()`` has been used to +provide for signal handlers. This is a no-op change for the vast majority +of processes that don't use sigaltstack. + +.. + +.. bpo: 43287 +.. date: 2021-02-22-03-01-02 +.. nonce: aTs6fO +.. section: Core and Builtins + +Speed up calls to ``filter()`` by using the :pep:`590` ``vectorcall`` +calling convention. Patch by Dong-hee Na. + +.. + +.. bpo: 37448 +.. date: 2021-02-21-14-19-35 +.. nonce: btl7vO +.. section: Core and Builtins + +Add a radix tree based memory map to track in-use obmalloc arenas. Use to +replace the old implementation of address_in_range(). The radix tree +approach makes it easy to increase pool sizes beyond the OS page size. +Boosting the pool and arena size allows obmalloc to handle a significantly +higher percentage of requests from its ultra-fast paths. + +It also has the advantage of eliminating the memory unsanitary behavior of +the previous address_in_range(). The old address_in_range() was marked with +the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and +_Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed. + +To disable the radix tree map, set a preprocessor flag as follows: +`-DWITH_PYMALLOC_RADIX_TREE=0`. + +Co-authored-by: Tim Peters + +.. + +.. bpo: 29988 +.. date: 2020-02-03-13-23-10 +.. nonce: 8_UB5w +.. section: Core and Builtins + +Only handle asynchronous exceptions and requests to drop the GIL when +returning from a call or on the back edges of loops. Makes sure that +:meth:`__exit__` is always called in with statements, even for interrupts. + +.. + +.. bpo: 43720 +.. date: 2021-04-03-13-45-51 +.. nonce: FDZ5cZ +.. section: Library + +Document various stdlib deprecations in imp, pkgutil, and importlib.util for +removal in Python 3.12. + +.. + +.. bpo: 43433 +.. date: 2021-03-28-23-50-20 +.. nonce: so9j5G +.. section: Library + +:class:`xmlrpc.client.ServerProxy` no longer ignores query and fragment in +the URL of the server. + +.. + +.. bpo: 31956 +.. date: 2021-03-28-16-53-25 +.. nonce: Lt_67U +.. section: Library + +The :meth:`~array.array.index` method of :class:`array.array` now has +optional *start* and *stop* parameters. + +.. + +.. bpo: 40066 +.. date: 2021-03-25-21-26-30 +.. nonce: 7EBQ3_ +.. section: Library + +Enum: adjust ``repr()`` to show only enum and member name (not value, nor +angle brackets) and ``str()`` to show only member name. Update and improve +documentation to match. + +.. + +.. bpo: 42136 +.. date: 2021-03-25-08-44-26 +.. nonce: rRY9e1 +.. section: Library + +Deprecate all module_repr() methods found in importlib as their use is being +phased out by Python 3.12. + +.. + +.. bpo: 35930 +.. date: 2021-03-23-17-18-56 +.. nonce: RZ51pM +.. section: Library + +Raising an exception raised in a "future" instance will create reference +cycles. + +.. + +.. bpo: 41369 +.. date: 2021-03-21-17-50-42 +.. nonce: -fpmYZ +.. section: Library + +Finish updating the vendored libmpdec to version 2.5.1. Patch by Stefan +Krah. + +.. + +.. bpo: 43422 +.. date: 2021-03-21-17-02-52 +.. nonce: POk6cU +.. section: Library + +Revert the _decimal C API which was added in bpo-41324. + +.. + +.. bpo: 43577 +.. date: 2021-03-21-10-13-17 +.. nonce: m7JnAV +.. section: Library + +Fix deadlock when using :class:`ssl.SSLContext` debug callback with +:meth:`ssl.SSLContext.sni_callback`. + +.. + +.. bpo: 43571 +.. date: 2021-03-20-17-40-35 +.. nonce: acAL0W +.. section: Library + +It's now possible to create MPTCP sockets with IPPROTO_MPTCP + +.. + +.. bpo: 43542 +.. date: 2021-03-20-15-43-25 +.. nonce: 6bt2F6 +.. section: Library + +``image/heic`` and ``image/heif`` were added to :mod:`mimetypes`. + +.. + +.. bpo: 40645 +.. date: 2021-03-19-10-22-17 +.. nonce: 5pXhb- +.. section: Library + +The :mod:`hmac` module now uses OpenSSL's HMAC implementation when digestmod +argument is a hash name or builtin hash function. + +.. + +.. bpo: 43510 +.. date: 2021-03-16-17-20-33 +.. nonce: -BeQH_ +.. section: Library + +Implement :pep:`597`: Add ``EncodingWarning`` warning, ``-X +warn_default_encoding`` option, :envvar:`PYTHONWARNDEFAULTENCODING` +environment variable and ``encoding="locale"`` argument value. + +.. + +.. bpo: 43521 +.. date: 2021-03-16-16-05-02 +.. nonce: mRT6fh +.. section: Library + +``ast.unparse`` can now render NaNs and empty sets. + +.. + +.. bpo: 42914 +.. date: 2021-03-14-21-47-28 +.. nonce: 9U1o33 +.. section: Library + +:func:`pprint.pprint` gains a new boolean ``underscore_numbers`` optional +argument to emit integers with thousands separated by an underscore +character for improved readability (for example ``1_000_000`` instead of +``1000000``). + +.. + +.. bpo: 41361 +.. date: 2021-03-13-08-18-01 +.. nonce: lXDIlr +.. section: Library + +:meth:`~collections.deque.rotate` calls are now slightly faster due to +faster argument parsing. + +.. + +.. bpo: 43423 +.. date: 2021-03-11-15-44-18 +.. nonce: rRomRD +.. section: Library + +:func:`subprocess.communicate` no longer raises an IndexError when there is +an empty stdout or stderr IO buffer during a timeout on Windows. + +.. + +.. bpo: 27820 +.. date: 2021-03-10-14-07-44 +.. nonce: Wwdy-r +.. section: Library + +Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with +initial_response_ok=False will fail. + +The cause is that SMTP.auth_login _always_ returns a password if provided +with a challenge string, thus non-compliant with the standard for AUTH +LOGIN. + +Also fixes bug with the test for smtpd. + +.. + +.. bpo: 43445 +.. date: 2021-03-09-11-36-19 +.. nonce: jnj-UB +.. section: Library + +Add frozen modules to :data:`sys.stdlib_module_names`. For example, add +``"_frozen_importlib"`` and ``"_frozen_importlib_external"`` names. + +.. + +.. bpo: 43245 +.. date: 2021-03-08-22-14-37 +.. nonce: nXL-MC +.. section: Library + +Add keyword arguments support to ``ChainMap.new_child()``. + +.. + +.. bpo: 29982 +.. date: 2021-03-07-23-23-03 +.. nonce: Q9iszT +.. section: Library + +Add optional parameter *ignore_cleanup_errors* to +:func:`tempfile.TemporaryDirectory` and allow multiple :func:`cleanup` +attempts. Contributed by C.A.M. Gerlach. + +.. + +.. bpo: 43428 +.. date: 2021-03-07-18-54-39 +.. nonce: br0XmX +.. section: Library + +Include changes from `importlib_metadata 3.7 +`_: + +Performance enhancements to distribution discovery. + +``entry_points`` only returns unique distributions. + +Introduces new ``EntryPoints`` object for containing a set of entry points +with convenience methods for selecting entry points by group or name. +``entry_points`` now returns this object if selection parameters are +supplied but continues to return a dict object for compatibility. Users are +encouraged to rely on the selection interface. The dict object result is +likely to be deprecated in the future. + +Added packages_distributions function to return a mapping of packages to the +distributions that provide them. + +.. + +.. bpo: 43332 +.. date: 2021-03-07-11-23-20 +.. nonce: weatsh +.. section: Library + +Improves the networking efficiency of :mod:`http.client` when using a proxy +via :meth:`~HTTPConnection.set_tunnel`. Fewer small send calls are made +during connection setup. + +.. + +.. bpo: 43420 +.. date: 2021-03-07-08-03-31 +.. nonce: cee_X5 +.. section: Library + +Improve performance of class:`fractions.Fraction` arithmetics for large +components. Contributed by Sergey B. Kirpichev. + +.. + +.. bpo: 43356 +.. date: 2021-03-04-21-51-20 +.. nonce: X7IGBM +.. section: Library + +Allow passing a signal number to ``_thread.interrupt_main()``. + +.. + +.. bpo: 43399 +.. date: 2021-03-04-17-53-46 +.. nonce: Wn95u- +.. section: Library + +Fix ``ElementTree.extend`` not working on iterators when using the Python +implementation + +.. + +.. bpo: 43369 +.. date: 2021-03-02-15-25-28 +.. nonce: F4knlQ +.. section: Library + +Improve :mod:`sqlite3` error handling: If ``sqlite3_column_text()`` and +``sqlite3_column_blob()`` set ``SQLITE_NOMEM``, :exc:`MemoryError` is now +raised. Patch by Erlend E. Aasland. + +.. + +.. bpo: 43368 +.. date: 2021-03-02-13-45-05 +.. nonce: t9XEkQ +.. section: Library + +Fix a regression introduced in GH-24562, where an empty bytestring was +fetched as ``None`` instead of ``b''`` in :mod:`sqlite3`. Patch by Mariusz +Felisiak. + +.. + +.. bpo: 41282 +.. date: 2021-03-02-09-54-22 +.. nonce: xL4h94 +.. section: Library + +Fixed stacklevel of ``DeprecationWarning`` emitted from ``import +distutils``. + +.. + +.. bpo: 42129 +.. date: 2021-02-28-04-21-35 +.. nonce: V0KifQ +.. section: Library + +``importlib.resources`` now honors namespace packages, merging resources +from each location in the namespace as introduced in ``importlib_resources`` +3.2 and including incidental changes through 5.0.3. + +.. + +.. bpo: 43295 +.. date: 2021-02-22-22-54-40 +.. nonce: h_ffu7 +.. section: Library + +:meth:`datetime.datetime.strptime` now raises ``ValueError`` instead of +``IndexError`` when matching ``'z'`` with the ``%z`` format specifier. + +.. + +.. bpo: 43125 +.. date: 2021-02-07-19-13-30 +.. nonce: AqNoMa +.. section: Library + +Return empty string if base64mime.body_encode receive empty bytes + +.. + +.. bpo: 43084 +.. date: 2021-01-31-17-31-13 +.. nonce: i8nLpK +.. section: Library + +:func:`curses.window.enclose` returns now ``True`` or ``False`` (as was +documented) instead of ``1`` or ``0``. + +.. + +.. bpo: 42994 +.. date: 2021-01-21-16-58-34 +.. nonce: El0Ksp +.. section: Library + +Add MIME types for opus, AAC, 3gpp and 3gpp2 + +.. + +.. bpo: 14678 +.. date: 2021-01-07-21-25-49 +.. nonce: 1zniCH +.. section: Library + +Add an invalidate_caches() method to the zipimport.zipimporter class to +support importlib.invalidate_caches(). Patch by Desmond Cheong. + +.. + +.. bpo: 42782 +.. date: 2020-12-29-13-46-57 +.. nonce: 3r0HFY +.. section: Library + +Fail fast in :func:`shutil.move()` to avoid creating destination directories +on failure. + +.. + +.. bpo: 40066 +.. date: 2020-09-23-21-58-34 +.. nonce: f1dr_5 +.. section: Library + +Enum's `repr()` and `str()` have changed: `repr()` is now +*EnumClass.MemberName* and `str()` is *MemberName*. Additionally, stdlib +Enum's whose contents are available as module attributes, such as +`RegexFlag.IGNORECASE`, have their `repr()` as *module.name*, e.g. +`re.IGNORECASE`. + +.. + +.. bpo: 26053 +.. date: 2020-09-01-10-12-13 +.. nonce: hXikw_ +.. section: Library + +Fixed bug where the :mod:`pdb` interactive run command echoed the args from +the shell command line, even if those have been overridden at the pdb +prompt. + +.. + +.. bpo: 24160 +.. date: 2020-08-28-23-07-53 +.. nonce: MSGnKr +.. section: Library + +Fixed bug where breakpoints did not persist across multiple debugger +sessions in :mod:`pdb`'s interactive mode. + +.. + +.. bpo: 40701 +.. date: 2020-05-27-05-42-39 +.. nonce: PBIgW1 +.. section: Library + +When the :data:`tempfile.tempdir` global variable is set to a value of type +bytes, it is now handled consistently. Previously exceptions could be +raised from some tempfile APIs when the directory did not already exist in +this situation. Also ensures that the :func:`tempfile.gettempdir()` and +:func:`tempfile.gettempdirb()` functions *always* return ``str`` and +``bytes`` respectively. + +.. + +.. bpo: 39342 +.. date: 2020-01-15-11-15-35 +.. nonce: S8PuJO +.. section: Library + +Expose ``X509_V_FLAG_ALLOW_PROXY_CERTS`` as +:data:`~ssl.VERIFY_ALLOW_PROXY_CERTS` to allow proxy certificate validation +as explained in +https://www.openssl.org/docs/man1.1.1/man7/proxy-certificates.html. + +.. + +.. bpo: 31861 +.. date: 2018-08-24-01-08-09 +.. nonce: -q9RKJ +.. section: Library + +Add builtins.aiter and builtins.anext. Patch by Joshua Bronson (@jab), +Daniel Pope (@lordmauve), and Justin Wang (@justin39). + +.. + +.. bpo: 43199 +.. date: 2021-03-13-18-43-54 +.. nonce: ZWA6KX +.. section: Documentation + +Answer "Why is there no goto?" in the Design and History FAQ. + +.. + +.. bpo: 43407 +.. date: 2021-03-04-22-53-03 +.. nonce: x570l5 +.. section: Documentation + +Clarified that a result from :func:`time.monotonic`, +:func:`time.perf_counter`, :func:`time.process_time`, or +:func:`time.thread_time` can be compared with the result from any following +call to the same function - not just the next immediate call. + +.. + +.. bpo: 43354 +.. date: 2021-03-02-12-55-34 +.. nonce: ezZYkx +.. section: Documentation + +Fix type documentation for ``Fault.faultCode``; the type has to be ``int`` +instead of ``str``. + +.. + +.. bpo: 41933 +.. date: 2020-10-05-20-04-43 +.. nonce: Pff94- +.. section: Documentation + +Clarified wording of s * n in the Common Sequence Operations + +.. + +.. bpo: 37945 +.. date: 2021-03-31-11-38-42 +.. nonce: HTUYhv +.. section: Tests + +Fix test_getsetlocale_issue1813() of test_locale: skip the test if +``setlocale()`` fails. Patch by Victor Stinner. + +.. + +.. bpo: 41561 +.. date: 2021-03-18-10-34-42 +.. nonce: pDg4w- +.. section: Tests + +Add workaround for Ubuntu's custom OpenSSL security level policy. + +.. + +.. bpo: 43179 +.. date: 2021-03-31-12-20-23 +.. nonce: Qbe1OD +.. section: Build + +Introduce and correctly use ALIGNOF_X in place of SIZEOF_X for +alignment-related code in optimized string routines. Patch by Jessica +Clarke. + +.. + +.. bpo: 43631 +.. date: 2021-03-26-09-16-34 +.. nonce: msJyPi +.. section: Build + +Update macOS, Windows, and CI to OpenSSL 1.1.1k. + +.. + +.. bpo: 43617 +.. date: 2021-03-24-16-55-55 +.. nonce: d69KAv +.. section: Build + +Improve configure.ac: Check for presence of autoconf-archive package and +remove our copies of M4 macros. + +.. + +.. bpo: 43466 +.. date: 2021-03-11-00-14-47 +.. nonce: N861Z5 +.. section: Build + +The ``configure`` script now supports ``--with-openssl-rpath`` option. + +.. + +.. bpo: 43372 +.. date: 2021-03-04-17-13-57 +.. nonce: FfqDVL +.. section: Build + +Use ``_freeze_importlib`` to generate code for the ``__hello__`` module. +This approach ensures the code matches the interpreter version. Previously, +PYTHON_FOR_REGEN was used to generate the code, which might be wrong. The +marshal format for code objects has changed with bpo-42246, commit 877df851. +Update the code and the expected code sizes in ctypes test_frozentable. + +.. + +.. bpo: 43440 +.. date: 2021-03-09-11-15-41 +.. nonce: igy2Mn +.. section: Windows + +Build :mod:`sqlite3` with the ``R*Tree`` module enabled. Patch by Erlend E. +Aasland. + +.. + +.. bpo: 42225 +.. date: 2021-03-29-16-22-27 +.. nonce: iIeiLg +.. section: IDLE + +Document that IDLE can fail on Unix either from misconfigured IP masquerage +rules or failure displaying complex colored (non-ascii) characters. + +.. + +.. bpo: 43688 +.. date: 2021-04-01-09-10-42 +.. nonce: G4gs6k +.. section: C API + +The limited C API is now supported if Python is built in debug mode (if the +``Py_DEBUG`` macro is defined). In the limited C API, the +:c:func:`Py_INCREF` and :c:func:`Py_DECREF` functions are now implemented as +opaque function calls, rather than accessing directly the +:c:member:`PyObject.ob_refcnt` member, if Python is built in debug mode and +the ``Py_LIMITED_API`` macro targets Python 3.10 or newer. It became +possible to support the limited C API in debug mode because the +:c:type:`PyObject` structure is the same in release and debug mode since +Python 3.8 (see :issue:`36465`). + +The limited C API is still not supported in the ``--with-trace-refs`` +special build (``Py_TRACE_REFS`` macro). + +Patch by Victor Stinner. + +.. + +.. bpo: 43244 +.. date: 2021-03-24-01-22-14 +.. nonce: 31-97x +.. section: C API + +Remove the ``pyarena.h`` header file with functions: + +* ``PyArena_New()`` +* ``PyArena_Free()`` +* ``PyArena_Malloc()`` +* ``PyArena_AddPyObject()`` + +These functions were undocumented, excluded from the limited C API, and were +only used internally by the compiler. Patch by Victor Stinner. + +.. + +.. bpo: 43244 +.. date: 2021-03-23-20-53-41 +.. nonce: VK3sLH +.. section: C API + +Remove the compiler and parser functions using ``struct _mod`` type, because +the public AST C API was removed: + +* ``PyAST_Compile()`` +* ``PyAST_CompileEx()`` +* ``PyAST_CompileObject()`` +* ``PyFuture_FromAST()`` +* ``PyFuture_FromASTObject()`` +* ``PyParser_ASTFromFile()`` +* ``PyParser_ASTFromFileObject()`` +* ``PyParser_ASTFromFilename()`` +* ``PyParser_ASTFromString()`` +* ``PyParser_ASTFromStringObject()`` + +These functions were undocumented and excluded from the limited C API. Patch +by Victor Stinner. + +.. + +.. bpo: 43244 +.. date: 2021-03-19-12-56-11 +.. nonce: VuIyOD +.. section: C API + +Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files. These +functions were undocumented and excluded from the limited C API. Most names +defined by these header files were not prefixed by ``Py`` and so could +create names conflicts. For example, ``Python-ast.h`` defined a ``Yield`` +macro which was conflict with the ``Yield`` name used by the Windows +```` header. Use the Python :mod:`ast` module instead. Patch by +Victor Stinner. + +.. + +.. bpo: 43541 +.. date: 2021-03-18-12-44-33 +.. nonce: ICigzd +.. section: C API + +Fix a ``PyEval_EvalCodeEx()`` regression: fix reference counting on +builtins. Patch by Victor Stinner. + +.. + +.. bpo: 43244 +.. date: 2021-03-17-23-53-14 +.. nonce: kfPqA_ +.. section: C API + +Remove the ``symtable.h`` header file and the undocumented functions: + +* ``PyST_GetScope()`` +* ``PySymtable_Build()`` +* ``PySymtable_BuildObject()`` +* ``PySymtable_Free()`` +* ``Py_SymtableString()`` +* ``Py_SymtableStringObject()`` + +The ``Py_SymtableString()`` function was part the stable ABI by mistake but +it could not be used, because the ``symtable.h`` header file was excluded +from the limited C API. + +The Python :mod:`symtable` module remains available and is unchanged. + +Patch by Victor Stinner. + +.. + +.. bpo: 43244 +.. date: 2021-03-17-23-20-07 +.. nonce: diyn2C +.. section: C API + +Remove the ``PyAST_Validate()`` function. It is no longer possible to build +a AST object (``mod_ty`` type) with the public C API. The function was +already excluded from the limited C API (:pep:`384`). Patch by Victor +Stinner. diff --git a/Misc/NEWS.d/next/Build/2021-03-04-17-13-57.bpo-43372.FfqDVL.rst b/Misc/NEWS.d/next/Build/2021-03-04-17-13-57.bpo-43372.FfqDVL.rst deleted file mode 100644 index e9c6f2a916492..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-04-17-13-57.bpo-43372.FfqDVL.rst +++ /dev/null @@ -1,5 +0,0 @@ -Use ``_freeze_importlib`` to generate code for the ``__hello__`` module. -This approach ensures the code matches the interpreter version. Previously, -PYTHON_FOR_REGEN was used to generate the code, which might be wrong. The -marshal format for code objects has changed with bpo-42246, commit 877df851. -Update the code and the expected code sizes in ctypes test_frozentable. diff --git a/Misc/NEWS.d/next/Build/2021-03-11-00-14-47.bpo-43466.N861Z5.rst b/Misc/NEWS.d/next/Build/2021-03-11-00-14-47.bpo-43466.N861Z5.rst deleted file mode 100644 index 801404b1c80a7..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-11-00-14-47.bpo-43466.N861Z5.rst +++ /dev/null @@ -1 +0,0 @@ -The ``configure`` script now supports ``--with-openssl-rpath`` option. diff --git a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst b/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst deleted file mode 100644 index 26783963c8679..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-24-16-55-55.bpo-43617.d69KAv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve configure.ac: Check for presence of autoconf-archive package and -remove our copies of M4 macros. diff --git a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst b/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst deleted file mode 100644 index 4de4905a6bb08..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-26-09-16-34.bpo-43631.msJyPi.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS, Windows, and CI to OpenSSL 1.1.1k. diff --git a/Misc/NEWS.d/next/Build/2021-03-31-12-20-23.bpo-43179.Qbe1OD.rst b/Misc/NEWS.d/next/Build/2021-03-31-12-20-23.bpo-43179.Qbe1OD.rst deleted file mode 100644 index 2d22d47208215..0000000000000 --- a/Misc/NEWS.d/next/Build/2021-03-31-12-20-23.bpo-43179.Qbe1OD.rst +++ /dev/null @@ -1,3 +0,0 @@ -Introduce and correctly use ALIGNOF_X in place of SIZEOF_X for -alignment-related code in optimized string routines. Patch by Jessica -Clarke. \ No newline at end of file diff --git a/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst b/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst deleted file mode 100644 index 6632ace472289..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-17-23-20-07.bpo-43244.diyn2C.rst +++ /dev/null @@ -1,3 +0,0 @@ -Remove the ``PyAST_Validate()`` function. It is no longer possible to build a -AST object (``mod_ty`` type) with the public C API. The function was already -excluded from the limited C API (:pep:`384`). Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-03-17-23-53-14.bpo-43244.kfPqA_.rst b/Misc/NEWS.d/next/C API/2021-03-17-23-53-14.bpo-43244.kfPqA_.rst deleted file mode 100644 index a05fdf9e1ae94..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-17-23-53-14.bpo-43244.kfPqA_.rst +++ /dev/null @@ -1,16 +0,0 @@ -Remove the ``symtable.h`` header file and the undocumented functions: - -* ``PyST_GetScope()`` -* ``PySymtable_Build()`` -* ``PySymtable_BuildObject()`` -* ``PySymtable_Free()`` -* ``Py_SymtableString()`` -* ``Py_SymtableStringObject()`` - -The ``Py_SymtableString()`` function was part the stable ABI by mistake but it -could not be used, because the ``symtable.h`` header file was excluded from the -limited C API. - -The Python :mod:`symtable` module remains available and is unchanged. - -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-03-18-12-44-33.bpo-43541.ICigzd.rst b/Misc/NEWS.d/next/C API/2021-03-18-12-44-33.bpo-43541.ICigzd.rst deleted file mode 100644 index 0f5d9384942be..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-18-12-44-33.bpo-43541.ICigzd.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a ``PyEval_EvalCodeEx()`` regression: fix reference counting on -builtins. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-03-19-12-56-11.bpo-43244.VuIyOD.rst b/Misc/NEWS.d/next/C API/2021-03-19-12-56-11.bpo-43244.VuIyOD.rst deleted file mode 100644 index 1afe11e192161..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-19-12-56-11.bpo-43244.VuIyOD.rst +++ /dev/null @@ -1,8 +0,0 @@ -Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files. -These functions were undocumented and excluded from the limited C API. -Most names defined by these header files were not prefixed by ``Py`` and so -could create names conflicts. For example, ``Python-ast.h`` defined a ``Yield`` -macro which was conflict with the ``Yield`` name used by the Windows -```` header. -Use the Python :mod:`ast` module instead. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-03-23-20-53-41.bpo-43244.VK3sLH.rst b/Misc/NEWS.d/next/C API/2021-03-23-20-53-41.bpo-43244.VK3sLH.rst deleted file mode 100644 index fcc8076dea63e..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-23-20-53-41.bpo-43244.VK3sLH.rst +++ /dev/null @@ -1,16 +0,0 @@ -Remove the compiler and parser functions using ``struct _mod`` type, because -the public AST C API was removed: - -* ``PyAST_Compile()`` -* ``PyAST_CompileEx()`` -* ``PyAST_CompileObject()`` -* ``PyFuture_FromAST()`` -* ``PyFuture_FromASTObject()`` -* ``PyParser_ASTFromFile()`` -* ``PyParser_ASTFromFileObject()`` -* ``PyParser_ASTFromFilename()`` -* ``PyParser_ASTFromString()`` -* ``PyParser_ASTFromStringObject()`` - -These functions were undocumented and excluded from the limited C API. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-03-24-01-22-14.bpo-43244.31-97x.rst b/Misc/NEWS.d/next/C API/2021-03-24-01-22-14.bpo-43244.31-97x.rst deleted file mode 100644 index 389ee3e133948..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-03-24-01-22-14.bpo-43244.31-97x.rst +++ /dev/null @@ -1,10 +0,0 @@ -Remove the ``pyarena.h`` header file with functions: - -* ``PyArena_New()`` -* ``PyArena_Free()`` -* ``PyArena_Malloc()`` -* ``PyArena_AddPyObject()`` - -These functions were undocumented, excluded from the limited C API, and were -only used internally by the compiler. -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst b/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst deleted file mode 100644 index 6b1d44ee17686..0000000000000 --- a/Misc/NEWS.d/next/C API/2021-04-01-09-10-42.bpo-43688.G4gs6k.rst +++ /dev/null @@ -1,13 +0,0 @@ -The limited C API is now supported if Python is built in debug mode (if the -``Py_DEBUG`` macro is defined). In the limited C API, the :c:func:`Py_INCREF` -and :c:func:`Py_DECREF` functions are now implemented as opaque function calls, -rather than accessing directly the :c:member:`PyObject.ob_refcnt` member, if -Python is built in debug mode and the ``Py_LIMITED_API`` macro targets Python -3.10 or newer. It became possible to support the limited C API in debug mode -because the :c:type:`PyObject` structure is the same in release and debug mode -since Python 3.8 (see :issue:`36465`). - -The limited C API is still not supported in the ``--with-trace-refs`` special -build (``Py_TRACE_REFS`` macro). - -Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-02-03-13-23-10.bpo-29988.8_UB5w.rst b/Misc/NEWS.d/next/Core and Builtins/2020-02-03-13-23-10.bpo-29988.8_UB5w.rst deleted file mode 100644 index 9a19c615a88f6..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2020-02-03-13-23-10.bpo-29988.8_UB5w.rst +++ /dev/null @@ -1,3 +0,0 @@ -Only handle asynchronous exceptions and requests to drop the GIL when -returning from a call or on the back edges of loops. Makes sure that -:meth:`__exit__` is always called in with statements, even for interrupts. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-02-21-14-19-35.bpo-37448.btl7vO.rst b/Misc/NEWS.d/next/Core and Builtins/2021-02-21-14-19-35.bpo-37448.btl7vO.rst deleted file mode 100644 index fe771a50122f6..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-02-21-14-19-35.bpo-37448.btl7vO.rst +++ /dev/null @@ -1,15 +0,0 @@ -Add a radix tree based memory map to track in-use obmalloc arenas. Use to -replace the old implementation of address_in_range(). The radix tree -approach makes it easy to increase pool sizes beyond the OS page size. -Boosting the pool and arena size allows obmalloc to handle a significantly -higher percentage of requests from its ultra-fast paths. - -It also has the advantage of eliminating the memory unsanitary behavior of -the previous address_in_range(). The old address_in_range() was marked with -the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and -_Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed. - -To disable the radix tree map, set a preprocessor flag as follows: -`-DWITH_PYMALLOC_RADIX_TREE=0`. - -Co-authored-by: Tim Peters diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-02-22-03-01-02.bpo-43287.aTs6fO.rst b/Misc/NEWS.d/next/Core and Builtins/2021-02-22-03-01-02.bpo-43287.aTs6fO.rst deleted file mode 100644 index d8d5b2f2a9ceb..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-02-22-03-01-02.bpo-43287.aTs6fO.rst +++ /dev/null @@ -1,2 +0,0 @@ -Speed up calls to ``filter()`` by using the :pep:`590` ``vectorcall`` -calling convention. Patch by Dong-hee Na. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-03-17-58-49.bpo-43390.epPpwV.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-03-17-58-49.bpo-43390.epPpwV.rst deleted file mode 100644 index ae115db84ece7..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-03-17-58-49.bpo-43390.epPpwV.rst +++ /dev/null @@ -1,6 +0,0 @@ -CPython now sets the ``SA_ONSTACK`` flag in ``PyOS_setsig`` for the VM's -default signal handlers. This is friendlier to other in-process code that -an extension module or embedding use could pull in (such as Golang's cgo) -where tiny thread stacks are the norm and ``sigaltstack()`` has been used to -provide for signal handlers. This is a no-op change for the vast majority -of processes that don't use sigaltstack. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-03-19-04-23.bpo-42128.VouZjn.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-03-19-04-23.bpo-42128.VouZjn.rst deleted file mode 100644 index 7c4733a9b0d70..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-03-19-04-23.bpo-42128.VouZjn.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add ``__match_args__`` to :c:type:`structsequence` based classes. Patch by -Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst deleted file mode 100644 index c18a55ef32306..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-04-22-53-10.bpo-43406.Na_VpA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a possible race condition where ``PyErr_CheckSignals`` tries to execute a -non-Python signal handler. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-05-17-23-36.bpo-43410.lCzIg0.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-05-17-23-36.bpo-43410.lCzIg0.rst deleted file mode 100644 index 245bda5ff72dd..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-05-17-23-36.bpo-43410.lCzIg0.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a bug that was causing the parser to crash when emiting syntax errors -when reading input from stdin. Patch by Pablo Galindo diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst deleted file mode 100644 index 46742429db64b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-13-13-57-21.bpo-35883.UyGpdG.rst +++ /dev/null @@ -1,4 +0,0 @@ -Python no longer fails at startup with a fatal error if a command line -argument contains an invalid Unicode character. The -:c:func:`Py_DecodeLocale` function now escapes byte sequences which would be -decoded as Unicode characters outside the [U+0000; U+10ffff] range. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-14-16-44-50.bpo-39316.Ns3a_F.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-14-16-44-50.bpo-39316.Ns3a_F.rst deleted file mode 100644 index bebd9e83db435..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-14-16-44-50.bpo-39316.Ns3a_F.rst +++ /dev/null @@ -1,3 +0,0 @@ -Tracing now has correct line numbers for attribute accesses when the -the attribute is on a different line from the object. -Improves debugging and profiling for multi-line method chains. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-15-07-50-30.bpo-43497.Uc5ZCJ.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-15-07-50-30.bpo-43497.Uc5ZCJ.rst deleted file mode 100644 index d30677fc5bc15..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-15-07-50-30.bpo-43497.Uc5ZCJ.rst +++ /dev/null @@ -1 +0,0 @@ -Emit SyntaxWarnings for assertions with tuple constants, this is a regression introduced in python3.7 \ No newline at end of file diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst deleted file mode 100644 index 0f9926b93f654..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-16-17-12-54.bpo-43517.zAo6Ws.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix misdetection of circular imports when using ``from pkg.mod import -attr``, which caused false positives in non-trivial multi-threaded code. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst deleted file mode 100644 index 55a2fe22aa8ab..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-19-22-49-40.bpo-43555.ZmhYSA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Report the column offset for :exc:`SyntaxError` for invalid line -continuation characters. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-20-01-21-37.bpo-43452.tDVJkc.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-20-01-21-37.bpo-43452.tDVJkc.rst deleted file mode 100644 index c2fe10afdee8c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-20-01-21-37.bpo-43452.tDVJkc.rst +++ /dev/null @@ -1 +0,0 @@ -Added micro-optimizations to ``_PyType_Lookup()`` to improve cache lookup performance in the common case of cache hits. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst deleted file mode 100644 index e13ce49b954b1..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-20-19-54-47.bpo-42137.A8aQvj.rst +++ /dev/null @@ -1,2 +0,0 @@ -The import system now prefers using ``__spec__`` for ``ModuleType.__repr__`` -over ``module_repr()``. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-21-12-26-32.bpo-43575.pl-nSg.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-21-12-26-32.bpo-43575.pl-nSg.rst deleted file mode 100644 index 102325830347a..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-21-12-26-32.bpo-43575.pl-nSg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Speed up calls to ``map()`` by using the :pep:`590` ``vectorcall`` calling -convention. Patch by Dong-hee Na. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-24-00-32-20.bpo-41064._H0K_g.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-24-00-32-20.bpo-41064._H0K_g.rst deleted file mode 100644 index f6ea4d0bda6a0..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-24-00-32-20.bpo-41064._H0K_g.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve the syntax error for invalid usage of double starred elements ('**') -in f-strings. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-26-17-30-19.bpo-42134.G4Sjxg.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-26-17-30-19.bpo-42134.G4Sjxg.rst deleted file mode 100644 index 72d13e37c937b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-26-17-30-19.bpo-42134.G4Sjxg.rst +++ /dev/null @@ -1 +0,0 @@ -Calls to find_module() by the import system now raise ImportWarning. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst deleted file mode 100644 index 9ca9843947547..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix reference leak in the :mod:`_hashopenssl` extension. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst deleted file mode 100644 index b1d6c822ce32c..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-16-20-29.bpo-27129.BF03A5.rst +++ /dev/null @@ -1,3 +0,0 @@ -The bytecode interpreter uses instruction, rather byte, offsets internally. -This reduces the number of EXTENDED_ARG instructions needed and streamlines -instruction dispatch a bit. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst deleted file mode 100644 index 98419501d9e7b..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-19-50-34.bpo-43660.scTgag.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix crash that happens when replacing ``sys.stderr`` with a callable that -can remove the object while an exception is being printed. Patch by Pablo -Galindo. diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst deleted file mode 100644 index 3bb1a66d0f7fd..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-03-31-09-12-54.bpo-43672.jTT5uG.rst +++ /dev/null @@ -1 +0,0 @@ -Raise ImportWarning when calling find_loader(). diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst b/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst deleted file mode 100644 index dc47bd08039cf..0000000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2021-04-03-22-04-46.bpo-27129.u_ehHb.rst +++ /dev/null @@ -1 +0,0 @@ -Update CPython bytecode magic number. diff --git a/Misc/NEWS.d/next/Documentation/2020-10-05-20-04-43.bpo-41933.Pff94-.rst b/Misc/NEWS.d/next/Documentation/2020-10-05-20-04-43.bpo-41933.Pff94-.rst deleted file mode 100644 index f6316df5d8b15..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2020-10-05-20-04-43.bpo-41933.Pff94-.rst +++ /dev/null @@ -1 +0,0 @@ -Clarified wording of s * n in the Common Sequence Operations \ No newline at end of file diff --git a/Misc/NEWS.d/next/Documentation/2021-03-02-12-55-34.bpo-43354.ezZYkx.rst b/Misc/NEWS.d/next/Documentation/2021-03-02-12-55-34.bpo-43354.ezZYkx.rst deleted file mode 100644 index 1a8743cbde615..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-02-12-55-34.bpo-43354.ezZYkx.rst +++ /dev/null @@ -1 +0,0 @@ -Fix type documentation for ``Fault.faultCode``; the type has to be ``int`` instead of ``str``. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst b/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst deleted file mode 100644 index 615e3d016307c..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-04-22-53-03.bpo-43407.x570l5.rst +++ /dev/null @@ -1,4 +0,0 @@ -Clarified that a result from :func:`time.monotonic`, -:func:`time.perf_counter`, :func:`time.process_time`, or -:func:`time.thread_time` can be compared with the result from any following -call to the same function - not just the next immediate call. diff --git a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst b/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst deleted file mode 100644 index d1b454fabd7f8..0000000000000 --- a/Misc/NEWS.d/next/Documentation/2021-03-13-18-43-54.bpo-43199.ZWA6KX.rst +++ /dev/null @@ -1 +0,0 @@ -Answer "Why is there no goto?" in the Design and History FAQ. diff --git a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst b/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst deleted file mode 100644 index 59fb08bdf9ebe..0000000000000 --- a/Misc/NEWS.d/next/IDLE/2021-03-29-16-22-27.bpo-42225.iIeiLg.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that IDLE can fail on Unix either from misconfigured IP masquerage -rules or failure displaying complex colored (non-ascii) characters. diff --git a/Misc/NEWS.d/next/Library/2018-08-24-01-08-09.bpo-31861.-q9RKJ.rst b/Misc/NEWS.d/next/Library/2018-08-24-01-08-09.bpo-31861.-q9RKJ.rst deleted file mode 100644 index 1526deb995c3d..0000000000000 --- a/Misc/NEWS.d/next/Library/2018-08-24-01-08-09.bpo-31861.-q9RKJ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add builtins.aiter and builtins.anext. -Patch by Joshua Bronson (@jab), Daniel Pope (@lordmauve), and Justin Wang (@justin39). diff --git a/Misc/NEWS.d/next/Library/2020-01-15-11-15-35.bpo-39342.S8PuJO.rst b/Misc/NEWS.d/next/Library/2020-01-15-11-15-35.bpo-39342.S8PuJO.rst deleted file mode 100644 index 6eb83a95b5e2c..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-01-15-11-15-35.bpo-39342.S8PuJO.rst +++ /dev/null @@ -1,4 +0,0 @@ -Expose ``X509_V_FLAG_ALLOW_PROXY_CERTS`` as -:data:`~ssl.VERIFY_ALLOW_PROXY_CERTS` to allow proxy certificate validation -as explained in -https://www.openssl.org/docs/man1.1.1/man7/proxy-certificates.html. diff --git a/Misc/NEWS.d/next/Library/2020-05-27-05-42-39.bpo-40701.PBIgW1.rst b/Misc/NEWS.d/next/Library/2020-05-27-05-42-39.bpo-40701.PBIgW1.rst deleted file mode 100644 index a7a4a1ce999af..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-05-27-05-42-39.bpo-40701.PBIgW1.rst +++ /dev/null @@ -1,6 +0,0 @@ -When the :data:`tempfile.tempdir` global variable is set to a value of -type bytes, it is now handled consistently. Previously exceptions -could be raised from some tempfile APIs when the directory did not -already exist in this situation. Also ensures that the -:func:`tempfile.gettempdir()` and :func:`tempfile.gettempdirb()` -functions *always* return ``str`` and ``bytes`` respectively. diff --git a/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst b/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst deleted file mode 100644 index c0cfd87b878af..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-08-28-23-07-53.bpo-24160.MSGnKr.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed bug where breakpoints did not persist across multiple debugger sessions in :mod:`pdb`'s interactive mode. diff --git a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst b/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst deleted file mode 100644 index e8720ac82ffb1..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-01-10-12-13.bpo-26053.hXikw_.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed bug where the :mod:`pdb` interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. diff --git a/Misc/NEWS.d/next/Library/2020-09-23-21-58-34.bpo-40066.f1dr_5.rst b/Misc/NEWS.d/next/Library/2020-09-23-21-58-34.bpo-40066.f1dr_5.rst deleted file mode 100644 index 6d2c68e2353dd..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-09-23-21-58-34.bpo-40066.f1dr_5.rst +++ /dev/null @@ -1,4 +0,0 @@ -Enum's `repr()` and `str()` have changed: `repr()` is now *EnumClass.MemberName* -and `str()` is *MemberName*. Additionally, stdlib Enum's whose contents are -available as module attributes, such as `RegexFlag.IGNORECASE`, have their -`repr()` as *module.name*, e.g. `re.IGNORECASE`. diff --git a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst b/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst deleted file mode 100644 index 065df9bf0cf42..0000000000000 --- a/Misc/NEWS.d/next/Library/2020-12-29-13-46-57.bpo-42782.3r0HFY.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fail fast in :func:`shutil.move()` to avoid creating destination directories on -failure. diff --git a/Misc/NEWS.d/next/Library/2021-01-07-21-25-49.bpo-14678.1zniCH.rst b/Misc/NEWS.d/next/Library/2021-01-07-21-25-49.bpo-14678.1zniCH.rst deleted file mode 100644 index 127650c4f8063..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-01-07-21-25-49.bpo-14678.1zniCH.rst +++ /dev/null @@ -1,3 +0,0 @@ -Add an invalidate_caches() method to the zipimport.zipimporter class to -support importlib.invalidate_caches(). -Patch by Desmond Cheong. diff --git a/Misc/NEWS.d/next/Library/2021-01-21-16-58-34.bpo-42994.El0Ksp.rst b/Misc/NEWS.d/next/Library/2021-01-21-16-58-34.bpo-42994.El0Ksp.rst deleted file mode 100644 index 40f854794215f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-01-21-16-58-34.bpo-42994.El0Ksp.rst +++ /dev/null @@ -1 +0,0 @@ -Add MIME types for opus, AAC, 3gpp and 3gpp2 diff --git a/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst b/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst deleted file mode 100644 index bdab5d9c34b24..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-01-31-17-31-13.bpo-43084.i8nLpK.rst +++ /dev/null @@ -1,2 +0,0 @@ -:func:`curses.window.enclose` returns now ``True`` or ``False`` (as was -documented) instead of ``1`` or ``0``. diff --git a/Misc/NEWS.d/next/Library/2021-02-07-19-13-30.bpo-43125.AqNoMa.rst b/Misc/NEWS.d/next/Library/2021-02-07-19-13-30.bpo-43125.AqNoMa.rst deleted file mode 100644 index 4c4a5836d2595..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-07-19-13-30.bpo-43125.AqNoMa.rst +++ /dev/null @@ -1 +0,0 @@ -Return empty string if base64mime.body_encode receive empty bytes diff --git a/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst b/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst deleted file mode 100644 index ac9a5c96c9ced..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-22-22-54-40.bpo-43295.h_ffu7.rst +++ /dev/null @@ -1,2 +0,0 @@ -:meth:`datetime.datetime.strptime` now raises ``ValueError`` instead of -``IndexError`` when matching ``'z'`` with the ``%z`` format specifier. diff --git a/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst b/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst deleted file mode 100644 index 4b8f5029fefec..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-02-28-04-21-35.bpo-42129.V0KifQ.rst +++ /dev/null @@ -1,3 +0,0 @@ -``importlib.resources`` now honors namespace packages, merging resources -from each location in the namespace as introduced in -``importlib_resources`` 3.2 and including incidental changes through 5.0.3. diff --git a/Misc/NEWS.d/next/Library/2021-03-02-09-54-22.bpo-41282.xL4h94.rst b/Misc/NEWS.d/next/Library/2021-03-02-09-54-22.bpo-41282.xL4h94.rst deleted file mode 100644 index 6655ac69c44af..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-02-09-54-22.bpo-41282.xL4h94.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed stacklevel of ``DeprecationWarning`` emitted from ``import -distutils``. diff --git a/Misc/NEWS.d/next/Library/2021-03-02-13-45-05.bpo-43368.t9XEkQ.rst b/Misc/NEWS.d/next/Library/2021-03-02-13-45-05.bpo-43368.t9XEkQ.rst deleted file mode 100644 index f9a4aa2935e3f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-02-13-45-05.bpo-43368.t9XEkQ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a regression introduced in GH-24562, where an empty bytestring was fetched -as ``None`` instead of ``b''`` in :mod:`sqlite3`. Patch by Mariusz Felisiak. diff --git a/Misc/NEWS.d/next/Library/2021-03-02-15-25-28.bpo-43369.F4knlQ.rst b/Misc/NEWS.d/next/Library/2021-03-02-15-25-28.bpo-43369.F4knlQ.rst deleted file mode 100644 index f88a7070dbcee..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-02-15-25-28.bpo-43369.F4knlQ.rst +++ /dev/null @@ -1,3 +0,0 @@ -Improve :mod:`sqlite3` error handling: If ``sqlite3_column_text()`` and -``sqlite3_column_blob()`` set ``SQLITE_NOMEM``, :exc:`MemoryError` is now -raised. Patch by Erlend E. Aasland. diff --git a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst b/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst deleted file mode 100644 index 0b8dffb2312e4..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-04-17-53-46.bpo-43399.Wn95u-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix ``ElementTree.extend`` not working on iterators when using the -Python implementation diff --git a/Misc/NEWS.d/next/Library/2021-03-04-21-51-20.bpo-43356.X7IGBM.rst b/Misc/NEWS.d/next/Library/2021-03-04-21-51-20.bpo-43356.X7IGBM.rst deleted file mode 100644 index 8b106f830f59b..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-04-21-51-20.bpo-43356.X7IGBM.rst +++ /dev/null @@ -1 +0,0 @@ -Allow passing a signal number to ``_thread.interrupt_main()``. diff --git a/Misc/NEWS.d/next/Library/2021-03-07-08-03-31.bpo-43420.cee_X5.rst b/Misc/NEWS.d/next/Library/2021-03-07-08-03-31.bpo-43420.cee_X5.rst deleted file mode 100644 index f9b3228772c12..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-07-08-03-31.bpo-43420.cee_X5.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improve performance of class:`fractions.Fraction` arithmetics for large -components. Contributed by Sergey B. Kirpichev. diff --git a/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst b/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst deleted file mode 100644 index c40be95c194db..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-07-11-23-20.bpo-43332.weatsh.rst +++ /dev/null @@ -1,3 +0,0 @@ -Improves the networking efficiency of :mod:`http.client` when using a proxy -via :meth:`~HTTPConnection.set_tunnel`. Fewer small send calls are made -during connection setup. diff --git a/Misc/NEWS.d/next/Library/2021-03-07-18-54-39.bpo-43428.br0XmX.rst b/Misc/NEWS.d/next/Library/2021-03-07-18-54-39.bpo-43428.br0XmX.rst deleted file mode 100644 index 38361070b39f7..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-07-18-54-39.bpo-43428.br0XmX.rst +++ /dev/null @@ -1,17 +0,0 @@ -Include changes from `importlib_metadata 3.7 -`_: - -Performance enhancements to distribution discovery. - -``entry_points`` only returns unique distributions. - -Introduces new ``EntryPoints`` object -for containing a set of entry points with convenience methods for selecting -entry points by group or name. ``entry_points`` now returns this object if -selection parameters are supplied but continues to return a dict object for -compatibility. Users are encouraged to rely on the selection interface. The -dict object result is likely to be deprecated in the future. - -Added -packages_distributions function to return a mapping of packages to the -distributions that provide them. diff --git a/Misc/NEWS.d/next/Library/2021-03-07-23-23-03.bpo-29982.Q9iszT.rst b/Misc/NEWS.d/next/Library/2021-03-07-23-23-03.bpo-29982.Q9iszT.rst deleted file mode 100644 index fd71bc6e4e0df..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-07-23-23-03.bpo-29982.Q9iszT.rst +++ /dev/null @@ -1,3 +0,0 @@ -Add optional parameter *ignore_cleanup_errors* to -:func:`tempfile.TemporaryDirectory` and allow multiple :func:`cleanup` attempts. -Contributed by C.A.M. Gerlach. diff --git a/Misc/NEWS.d/next/Library/2021-03-08-22-14-37.bpo-43245.nXL-MC.rst b/Misc/NEWS.d/next/Library/2021-03-08-22-14-37.bpo-43245.nXL-MC.rst deleted file mode 100644 index 394318fb1e867..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-08-22-14-37.bpo-43245.nXL-MC.rst +++ /dev/null @@ -1 +0,0 @@ -Add keyword arguments support to ``ChainMap.new_child()``. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-03-09-11-36-19.bpo-43445.jnj-UB.rst b/Misc/NEWS.d/next/Library/2021-03-09-11-36-19.bpo-43445.jnj-UB.rst deleted file mode 100644 index 703cd027f0b76..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-09-11-36-19.bpo-43445.jnj-UB.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add frozen modules to :data:`sys.stdlib_module_names`. For example, add -``"_frozen_importlib"`` and ``"_frozen_importlib_external"`` names. diff --git a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst b/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst deleted file mode 100644 index 7f1014d723b6a..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-10-14-07-44.bpo-27820.Wwdy-r.rst +++ /dev/null @@ -1,8 +0,0 @@ -Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with -initial_response_ok=False will fail. - -The cause is that SMTP.auth_login _always_ returns a password if provided -with a challenge string, thus non-compliant with the standard for AUTH -LOGIN. - -Also fixes bug with the test for smtpd. diff --git a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst b/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst deleted file mode 100644 index 290d7fbd91800..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-11-15-44-18.bpo-43423.rRomRD.rst +++ /dev/null @@ -1,2 +0,0 @@ -:func:`subprocess.communicate` no longer raises an IndexError when there is an -empty stdout or stderr IO buffer during a timeout on Windows. diff --git a/Misc/NEWS.d/next/Library/2021-03-13-08-18-01.bpo-41361.lXDIlr.rst b/Misc/NEWS.d/next/Library/2021-03-13-08-18-01.bpo-41361.lXDIlr.rst deleted file mode 100644 index 19e08f810bb7c..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-13-08-18-01.bpo-41361.lXDIlr.rst +++ /dev/null @@ -1 +0,0 @@ -:meth:`~collections.deque.rotate` calls are now slightly faster due to faster argument parsing. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-03-14-21-47-28.bpo-42914.9U1o33.rst b/Misc/NEWS.d/next/Library/2021-03-14-21-47-28.bpo-42914.9U1o33.rst deleted file mode 100644 index ae6ef2f0bfa42..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-14-21-47-28.bpo-42914.9U1o33.rst +++ /dev/null @@ -1,3 +0,0 @@ -:func:`pprint.pprint` gains a new boolean ``underscore_numbers`` optional -argument to emit integers with thousands separated by an underscore character -for improved readability (for example ``1_000_000`` instead of ``1000000``). diff --git a/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst b/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst deleted file mode 100644 index e6895674437a5..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-16-16-05-02.bpo-43521.mRT6fh.rst +++ /dev/null @@ -1 +0,0 @@ -``ast.unparse`` can now render NaNs and empty sets. diff --git a/Misc/NEWS.d/next/Library/2021-03-16-17-20-33.bpo-43510.-BeQH_.rst b/Misc/NEWS.d/next/Library/2021-03-16-17-20-33.bpo-43510.-BeQH_.rst deleted file mode 100644 index b79a49c881bcc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-16-17-20-33.bpo-43510.-BeQH_.rst +++ /dev/null @@ -1,3 +0,0 @@ -Implement :pep:`597`: Add ``EncodingWarning`` warning, ``-X -warn_default_encoding`` option, :envvar:`PYTHONWARNDEFAULTENCODING` -environment variable and ``encoding="locale"`` argument value. diff --git a/Misc/NEWS.d/next/Library/2021-03-19-10-22-17.bpo-40645.5pXhb-.rst b/Misc/NEWS.d/next/Library/2021-03-19-10-22-17.bpo-40645.5pXhb-.rst deleted file mode 100644 index a9ab1c09150bb..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-19-10-22-17.bpo-40645.5pXhb-.rst +++ /dev/null @@ -1,2 +0,0 @@ -The :mod:`hmac` module now uses OpenSSL's HMAC implementation when digestmod -argument is a hash name or builtin hash function. diff --git a/Misc/NEWS.d/next/Library/2021-03-20-15-43-25.bpo-43542.6bt2F6.rst b/Misc/NEWS.d/next/Library/2021-03-20-15-43-25.bpo-43542.6bt2F6.rst deleted file mode 100644 index 370e520ca3e06..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-20-15-43-25.bpo-43542.6bt2F6.rst +++ /dev/null @@ -1 +0,0 @@ -``image/heic`` and ``image/heif`` were added to :mod:`mimetypes`. diff --git a/Misc/NEWS.d/next/Library/2021-03-20-17-40-35.bpo-43571.acAL0W.rst b/Misc/NEWS.d/next/Library/2021-03-20-17-40-35.bpo-43571.acAL0W.rst deleted file mode 100644 index 56714dc86bd56..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-20-17-40-35.bpo-43571.acAL0W.rst +++ /dev/null @@ -1 +0,0 @@ -It's now possible to create MPTCP sockets with IPPROTO_MPTCP \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst b/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst deleted file mode 100644 index a7db48bc626fc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-21-10-13-17.bpo-43577.m7JnAV.rst +++ /dev/null @@ -1 +0,0 @@ -Fix deadlock when using :class:`ssl.SSLContext` debug callback with :meth:`ssl.SSLContext.sni_callback`. diff --git a/Misc/NEWS.d/next/Library/2021-03-21-17-02-52.bpo-43422.POk6cU.rst b/Misc/NEWS.d/next/Library/2021-03-21-17-02-52.bpo-43422.POk6cU.rst deleted file mode 100644 index 4de3060d26e8f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-21-17-02-52.bpo-43422.POk6cU.rst +++ /dev/null @@ -1 +0,0 @@ -Revert the _decimal C API which was added in bpo-41324. diff --git a/Misc/NEWS.d/next/Library/2021-03-21-17-50-42.bpo-41369.-fpmYZ.rst b/Misc/NEWS.d/next/Library/2021-03-21-17-50-42.bpo-41369.-fpmYZ.rst deleted file mode 100644 index 6a85e8259cef4..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-21-17-50-42.bpo-41369.-fpmYZ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Finish updating the vendored libmpdec to version 2.5.1. Patch by Stefan -Krah. diff --git a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst b/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst deleted file mode 100644 index 71c6012f52b8f..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-23-17-18-56.bpo-35930.RZ51pM.rst +++ /dev/null @@ -1,2 +0,0 @@ -Raising an exception raised in a "future" instance will create reference -cycles. diff --git a/Misc/NEWS.d/next/Library/2021-03-25-08-44-26.bpo-42136.rRY9e1.rst b/Misc/NEWS.d/next/Library/2021-03-25-08-44-26.bpo-42136.rRY9e1.rst deleted file mode 100644 index f66e34b18e27a..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-25-08-44-26.bpo-42136.rRY9e1.rst +++ /dev/null @@ -1,2 +0,0 @@ -Deprecate all module_repr() methods found in importlib as their use is being -phased out by Python 3.12. diff --git a/Misc/NEWS.d/next/Library/2021-03-25-21-26-30.bpo-40066.7EBQ3_.rst b/Misc/NEWS.d/next/Library/2021-03-25-21-26-30.bpo-40066.7EBQ3_.rst deleted file mode 100644 index 11903f8b9e93d..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-25-21-26-30.bpo-40066.7EBQ3_.rst +++ /dev/null @@ -1,3 +0,0 @@ -Enum: adjust ``repr()`` to show only enum and member name (not value, nor -angle brackets) and ``str()`` to show only member name. Update and improve -documentation to match. diff --git a/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst b/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst deleted file mode 100644 index 5285fd38ebb8a..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-28-16-53-25.bpo-31956.Lt_67U.rst +++ /dev/null @@ -1,2 +0,0 @@ -The :meth:`~array.array.index` method of :class:`array.array` now has -optional *start* and *stop* parameters. diff --git a/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst b/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst deleted file mode 100644 index 2f67e316a5efc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-03-28-23-50-20.bpo-43433.so9j5G.rst +++ /dev/null @@ -1,2 +0,0 @@ -:class:`xmlrpc.client.ServerProxy` no longer ignores query and fragment in -the URL of the server. diff --git a/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst b/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst deleted file mode 100644 index d71460f010dcc..0000000000000 --- a/Misc/NEWS.d/next/Library/2021-04-03-13-45-51.bpo-43720.FDZ5cZ.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document various stdlib deprecations in imp, pkgutil, and importlib.util for removal in Python -3.12. diff --git a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst b/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst deleted file mode 100644 index 518650303683d..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-08-23-06-07.bpo-43439.5U3lXm.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add audit hooks for :func:`gc.get_objects`, :func:`gc.get_referrers` and -:func:`gc.get_referents`. Patch by Pablo Galindo. diff --git a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst b/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst deleted file mode 100644 index 8312b7e885441..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-13-03-48-14.bpo-43285.g-Hah3.rst +++ /dev/null @@ -1,8 +0,0 @@ -:mod:`ftplib` no longer trusts the IP address value returned from the server -in response to the PASV command by default. This prevents a malicious FTP -server from using the response to probe IPv4 address and port combinations -on the client network. - -Code that requires the former vulnerable behavior may set a -``trust_server_pasv_ipv4_address`` attribute on their -:class:`ftplib.FTP` instances to ``True`` to re-enable it. diff --git a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst b/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst deleted file mode 100644 index 4b42dd05305a8..0000000000000 --- a/Misc/NEWS.d/next/Security/2021-03-24-14-16-56.bpo-42988.P2aNco.rst +++ /dev/null @@ -1,4 +0,0 @@ -CVE-2021-3426: Remove the ``getfile`` feature of the :mod:`pydoc` module which -could be abused to read arbitrary files on the disk (directory traversal -vulnerability). Moreover, even source code of Python modules can contain -sensitive data like passwords. Vulnerability reported by David Schw?rer. diff --git a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst b/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst deleted file mode 100644 index 214350729bff6..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-18-10-34-42.bpo-41561.pDg4w-.rst +++ /dev/null @@ -1 +0,0 @@ -Add workaround for Ubuntu's custom OpenSSL security level policy. diff --git a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst b/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst deleted file mode 100644 index e1c95f63bf7c7..0000000000000 --- a/Misc/NEWS.d/next/Tests/2021-03-31-11-38-42.bpo-37945.HTUYhv.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix test_getsetlocale_issue1813() of test_locale: skip the test if -``setlocale()`` fails. Patch by Victor Stinner. diff --git a/Misc/NEWS.d/next/Windows/2021-03-09-11-15-41.bpo-43440.igy2Mn.rst b/Misc/NEWS.d/next/Windows/2021-03-09-11-15-41.bpo-43440.igy2Mn.rst deleted file mode 100644 index 2116ef3a8718a..0000000000000 --- a/Misc/NEWS.d/next/Windows/2021-03-09-11-15-41.bpo-43440.igy2Mn.rst +++ /dev/null @@ -1,2 +0,0 @@ -Build :mod:`sqlite3` with the ``R*Tree`` module enabled. Patch by Erlend E. -Aasland. diff --git a/README.rst b/README.rst index 42b42df7e50f8..02a34d28aa489 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -This is Python version 3.10.0 alpha 6 +This is Python version 3.10.0 alpha 7 ===================================== .. image:: https://travis-ci.com/python/cpython.svg?branch=master diff --git a/configure b/configure index 34a19a11a89c6..e03b9ac5b3ddb 100755 --- a/configure +++ b/configure @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for python 3.10. +# Generated by GNU Autoconf 2.71 for python 3.10. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,42 +169,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -230,14 +223,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -255,18 +255,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf at gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf at gnu.org and $0: https://bugs.python.org/ about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script @@ -294,6 +295,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -311,6 +313,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -325,7 +335,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -334,7 +344,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -373,12 +383,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -390,18 +401,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -413,9 +433,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -442,7 +462,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -486,7 +506,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -500,6 +520,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -513,6 +537,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -588,40 +619,36 @@ PACKAGE_URL='' ac_unique_file="Include/object.h" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= ac_subst_vars='LTLIBOBJS TEST_MODULES LIBRARY_DEPS @@ -675,6 +702,7 @@ LDSHARED SHLIB_SUFFIX LIBTOOL_CRUFT OTHER_LIBTOOL_OPT +EGREP UNIVERSAL_ARCH_FLAGS LDFLAGS_NODIST CFLAGS_NODIST @@ -718,7 +746,6 @@ DLLLIBRARY LDLIBRARY LIBRARY BUILDEXEEXT -EGREP NO_AS_NEEDED MULTIARCH_CPPFLAGS PLATFORM_TRIPLET @@ -792,6 +819,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -915,6 +943,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -944,8 +973,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -986,9 +1013,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1012,9 +1039,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1167,6 +1194,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1216,9 +1252,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1232,9 +1268,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1278,9 +1314,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1296,7 +1332,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1304,7 +1340,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1360,7 +1396,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1457,6 +1493,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1653,9 +1690,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1683,7 +1720,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1691,7 +1729,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1701,9 +1739,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF python configure 3.10 -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1720,14 +1758,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1735,14 +1773,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1764,7 +1803,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1772,14 +1811,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1795,14 +1835,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1810,17 +1850,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1835,101 +1876,43 @@ fi } # ac_fn_c_try_link -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## --------------------------------------- ## -## Report this to https://bugs.python.org/ ## -## --------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_header_mongrel +} # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack @@ -1939,25 +1922,26 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status @@ -1968,37 +1952,6 @@ fi } # ac_fn_c_try_run -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2006,17 +1959,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -2024,12 +1978,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2037,18 +1992,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -2067,7 +2023,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -2077,14 +2033,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2094,9 +2051,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -2104,14 +2062,14 @@ else fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -2121,14 +2079,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -2138,9 +2097,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -2148,14 +2108,14 @@ else fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -2163,7 +2123,7 @@ while test "x$ac_lo" != "x$ac_hi"; do /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2173,12 +2133,13 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2188,12 +2149,12 @@ esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2221,9 +2182,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -2254,16 +2217,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -2281,47 +2237,51 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -2335,19 +2295,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- @@ -2356,16 +2319,17 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -2374,14 +2338,15 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -2390,29 +2355,50 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by python $as_me 3.10, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2445,8 +2431,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2481,7 +2471,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2516,11 +2506,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2531,8 +2523,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO