From b523f8433a8982e10eb41a3e2b37ee0e6d6a6e00 Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Fri, 22 Nov 2013 09:05:39 -0700 Subject: Implement PEP 451 (ModuleSpec). --- Doc/library/importlib.rst | 144 +- Doc/reference/import.rst | 455 +- Doc/whatsnew/3.4.rst | 20 + Lib/imp.py | 30 +- Lib/importlib/__init__.py | 64 +- Lib/importlib/_bootstrap.py | 1095 ++- Lib/importlib/abc.py | 102 +- Lib/importlib/machinery.py | 1 + Lib/importlib/util.py | 65 +- Lib/multiprocessing/spawn.py | 11 +- Lib/pkgutil.py | 11 +- Lib/pydoc.py | 3 +- Lib/test/test_descr.py | 2 +- Lib/test/test_frozen.py | 77 - Lib/test/test_import.py | 14 +- Lib/test/test_importlib/abc.py | 5 - Lib/test/test_importlib/builtin/test_finder.py | 59 +- Lib/test/test_importlib/builtin/test_loader.py | 78 +- .../extension/test_case_sensitivity.py | 2 + Lib/test/test_importlib/extension/test_finder.py | 20 +- Lib/test/test_importlib/extension/test_loader.py | 81 +- Lib/test/test_importlib/frozen/test_finder.py | 45 +- Lib/test/test_importlib/frozen/test_loader.py | 79 +- Lib/test/test_importlib/import_/test_meta_path.py | 4 +- Lib/test/test_importlib/test_abc.py | 197 - Lib/test/test_importlib/test_api.py | 136 +- Lib/test/test_importlib/test_spec.py | 968 +++ Lib/test/test_importlib/test_util.py | 65 - Lib/test/test_module.py | 12 +- Lib/test/test_namespace_pkgs.py | 20 - Lib/test/test_pkg.py | 20 +- Lib/test/test_pkgutil.py | 16 +- Lib/test/test_reprlib.py | 1 + Lib/test/test_runpy.py | 5 +- Objects/moduleobject.c | 53 +- Python/import.c | 16 +- Python/importlib.h | 7405 +++++++++++--------- 37 files changed, 6983 insertions(+), 4398 deletions(-) delete mode 100644 Lib/test/test_frozen.py create mode 100644 Lib/test/test_importlib/test_spec.py diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst index 50c97b0..fc63a8b 100644 --- a/Doc/library/importlib.rst +++ b/Doc/library/importlib.rst @@ -310,11 +310,11 @@ ABC hierarchy:: from the import. If the loader inserted a module and the load fails, it must be removed by the loader from :data:`sys.modules`; modules already in :data:`sys.modules` before the loader began execution should be left - alone (see :func:`importlib.util.module_to_load`). + alone (see :func:`importlib.util.module_for_loader`). The loader should set several attributes on the module. (Note that some of these attributes can change when a module is - reloaded; see :meth:`init_module_attrs`): + reloaded): - :attr:`__name__` The name of the module. @@ -357,17 +357,6 @@ ABC hierarchy:: .. versionchanged:: 3.4 Made optional instead of an abstractmethod. - .. method:: init_module_attrs(module) - - Set the :attr:`__loader__` attribute on the module. - - Subclasses overriding this method should set whatever appropriate - attributes it can, getting the module's name from :attr:`__name__` when - needed. All values should also be overridden so that reloading works as - expected. - - .. versionadded:: 3.4 - .. class:: ResourceLoader @@ -442,14 +431,6 @@ ABC hierarchy:: .. versionadded:: 3.4 - .. method:: init_module_attrs(module) - - Set the :attr:`__package__` attribute and :attr:`__path__` attribute to - the empty list if appropriate along with what - :meth:`importlib.abc.Loader.init_module_attrs` sets. - - .. versionadded:: 3.4 - .. method:: load_module(fullname) Implementation of :meth:`Loader.load_module`. @@ -474,15 +455,6 @@ ABC hierarchy:: .. versionchanged:: 3.4 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`. - .. method:: init_module_attrs(module) - - Set :attr:`__file__` and if initializing a package then set - :attr:`__path__` to ``[os.path.dirname(__file__)]`` along with - all attributes set by - :meth:`importlib.abc.InspectLoader.init_module_attrs`. - - .. versionadded:: 3.4 - .. class:: FileLoader(fullname, path) @@ -599,14 +571,6 @@ ABC hierarchy:: ``__init__`` when the file extension is removed **and** the module name itself does not end in ``__init__``. - .. method:: init_module_attr(module) - - Set :attr:`__cached__` using :func:`imp.cache_from_source`. Other - attributes set by - :meth:`importlib.abc.ExecutionLoader.init_module_attrs`. - - .. versionadded:: 3.4 - :mod:`importlib.machinery` -- Importers and path hooks ------------------------------------------------------ @@ -882,6 +846,64 @@ find and load modules. .. versionadded:: 3.4 +.. class:: ModuleSpec(name, loader, *, origin=None, loader_state=None, is_package=None) + + A specification for a module's import-system-related state. + + .. versionadded:: 3.4 + + .. attribute:: name + + (``__name__``) + + A string for the fully-qualified name of the module. + + .. attribute:: loader + + (``__loader__``) + + The loader to use for loading. For namespace packages this should be + set to None. + + .. attribute:: origin + + (``__file__``) + + Name of the place from which the module is loaded, e.g. "builtin" for + built-in modules and the filename for modules loaded from source. + Normally "origin" should be set, but it may be None (the default) + which indicates it is unspecified. + + .. attribute:: submodule_search_locations + + (``__path__``) + + List of strings for where to find submodules, if a package (None + otherwise). + + .. attribute:: loader_state + + Container of extra module-specific data for use during loading (or + None). + + .. attribute:: cached + + (``__cached__``) + + String for where the compiled module should be stored (or None). + + .. attribute:: parent + + (``__package__``) + + (Read-only) Fully-qualified name of the package to which the module + belongs as a submodule (or None). + + .. attribute:: has_location + + (Read-only) Boolean indicating whether or not the module's "origin" + attribute refers to a loadable location. + :mod:`importlib.util` -- Utility code for importers --------------------------------------------------- @@ -952,20 +974,6 @@ an :term:`importer`. .. versionadded:: 3.3 -.. function:: module_to_load(name, *, reset_name=True) - - Returns a :term:`context manager` which provides the module to load. The - module will either come from :attr:`sys.modules` in the case of reloading or - a fresh module if loading a new module. Proper cleanup of - :attr:`sys.modules` occurs if the module was new and an exception was - raised. - - If **reset_name** is true and the module requested is being reloaded then - the module's :attr:`__name__` attribute will - be reset to **name**, else it will be left untouched. - - .. versionadded:: 3.4 - .. decorator:: module_for_loader A :term:`decorator` for :meth:`importlib.abc.Loader.load_module` @@ -999,9 +1007,8 @@ an :term:`importer`. unconditionally to support reloading. .. deprecated:: 3.4 - For the benefit of :term:`loader` subclasses, please use - :func:`module_to_load` and - :meth:`importlib.abc.Loader.init_module_attrs` instead. + The import machinery now directly performs all the functionality + provided by this function. .. decorator:: set_loader @@ -1012,11 +1019,6 @@ an :term:`importer`. the wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set to. - .. note:: - As this decorator sets :attr:`__loader__` after loading the module, it is - recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead - when appropriate. - .. versionchanged:: 3.4 Set ``__loader__`` if set to ``None``, as if the attribute does not exist. @@ -1026,7 +1028,21 @@ an :term:`importer`. A :term:`decorator` for :meth:`importlib.abc.Loader.load_module` to set the :attr:`__package__` attribute on the returned module. If :attr:`__package__` is set and has a value other than ``None`` it will not be changed. - .. note:: - As this decorator sets :attr:`__package__` after loading the module, it is - recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead - when appropriate. +.. function:: spec_from_loader(name, loader, *, origin=None, is_package=None) + + A factory function for creating a :class:`ModuleSpec` instance based + on a loader. The parameters have the same meaning as they do for + ModuleSpec. The function uses available :term:`loader` APIs, such as + :meth:`InspectLoader.is_package`, to fill in any missing + information on the spec. + + .. versionadded:: 3.4 + +.. function:: spec_from_file_location(name, location, *, loader=None, submodule_search_locations=None) + + A factory function for creating a :class:`ModuleSpec` instance based + on the path to a file. Missing information will be filled in on the + spec by making use of loader APIs and by the implication that the + module will be file-based. + + .. versionadded:: 3.4 diff --git a/Doc/reference/import.rst b/Doc/reference/import.rst index b587fc9..c7b07cd 100644 --- a/Doc/reference/import.rst +++ b/Doc/reference/import.rst @@ -210,6 +210,7 @@ Finders and loaders .. index:: single: finder single: loader + single: module spec If the named module is not found in :data:`sys.modules`, then Python's import protocol is invoked to find and load the module. This protocol consists of @@ -230,13 +231,17 @@ The import machinery is extensible, so new finders can be added to extend the range and scope of module searching. Finders do not actually load modules. If they can find the named module, they -return a :term:`loader`, which the import machinery then invokes to load the -module and create the corresponding module object. +return a :term:`module spec`, an encapsulation of the module's import-related +information, which the import machinery then uses when loading the module. The following sections describe the protocol for finders and loaders in more detail, including how you can create and register new ones to extend the import machinery. +.. versionchanged:: 3.4 + In previous versions of Python, finders returned :term:`loaders ` + directly, whereas now they return module specs which *contain* loaders. + Loaders are still used during import but have fewer responsibilities. Import hooks ------------ @@ -270,24 +275,23 @@ The meta path .. index:: single: sys.meta_path - pair: finder; find_module - pair: finder; find_loader + pair: finder; find_spec When the named module is not found in :data:`sys.modules`, Python next searches :data:`sys.meta_path`, which contains a list of meta path finder objects. These finders are queried in order to see if they know how to handle the named module. Meta path finders must implement a method called -:meth:`find_module()` which takes two arguments, a name and an import path. +:meth:`find_spec()` which takes two arguments, a name and an import path. The meta path finder can use any strategy it wants to determine whether it can handle the named module or not. If the meta path finder knows how to handle the named module, it returns a -loader object. If it cannot handle the named module, it returns ``None``. If +spec object. If it cannot handle the named module, it returns ``None``. If :data:`sys.meta_path` processing reaches the end of its list without returning -a loader, then an :exc:`ImportError` is raised. Any other exceptions raised +a spec, then an :exc:`ImportError` is raised. Any other exceptions raised are simply propagated up, aborting the import process. -The :meth:`find_module()` method of meta path finders is called with two +The :meth:`find_spec()` method of meta path finders is called with two arguments. The first is the fully qualified name of the module being imported, for example ``foo.bar.baz``. The second argument is the path entries to use for the module search. For top-level modules, the second @@ -299,12 +303,12 @@ the appropriate ``__path__`` attribute cannot be accessed, an The meta path may be traversed multiple times for a single import request. For example, assuming none of the modules involved has already been cached, importing ``foo.bar.baz`` will first perform a top level import, calling -``mpf.find_module("foo", None)`` on each meta path finder (``mpf``). After +``mpf.find_spec("foo", None)`` on each meta path finder (``mpf``). After ``foo`` has been imported, ``foo.bar`` will be imported by traversing the meta path a second time, calling -``mpf.find_module("foo.bar", foo.__path__)``. Once ``foo.bar`` has been +``mpf.find_spec("foo.bar", foo.__path__)``. Once ``foo.bar`` has been imported, the final traversal will call -``mpf.find_module("foo.bar.baz", foo.bar.__path__)``. +``mpf.find_spec("foo.bar.baz", foo.bar.__path__)``. Some meta path finders only support top level imports. These importers will always return ``None`` when anything other than ``None`` is passed as the @@ -315,131 +319,229 @@ knows how to import built-in modules, one that knows how to import frozen modules, and one that knows how to import modules from an :term:`import path` (i.e. the :term:`path based finder`). +.. versionchanged:: 3.4 + The find_spec() method of meta path finders replaced :meth:`find_module()`. + which is now deprecated. While it will continue to work without change, + the import machinery will try it only if the finder does not implement + find_spec(). -Loaders + +Loading ======= -If and when a module loader is found its -:meth:`~importlib.abc.Loader.load_module` method is called, with a single -argument, the fully qualified name of the module being imported. This method -has several responsibilities, and should return the module object it has -loaded [#fnlo]_. If it cannot load the module, it should raise an -:exc:`ImportError`, although any other exception raised during -:meth:`load_module()` will be propagated. - -In many cases, the finder and loader can be the same object; in such cases the -:meth:`finder.find_module()` would just return ``self``. - -Loaders must satisfy the following requirements: +If and when a module spec is found, the import machinery will use it (and +the loader it contains) when loading the module. Here is an approximation +of what happens during the loading portion of import:: + + module = None + if spec.loader is not None and hasattr(spec.loader, 'create_module'): + module = spec.loader.create_module(spec) + if module is None: + module = ModuleType(spec.name) + # The import-related module attributes get set here: + _init_module_attrs(spec, module) + + if spec.loader is None: + if spec.submodule_search_locations is not None: + # namespace package + sys.modules[spec.name] = module + else: + # unsupported + raise ImportError + elif not hasattr(spec.loader, 'exec_module'): + module = spec.loader.load_module(spec.name) + else: + sys.modules[spec.name] = module + try: + spec.loader.exec_module(module) + except BaseException: + try: + del sys.modules[spec.name] + except KeyError: + pass + raise + module_to_return = sys.modules[spec.name] + +Note the following details: * If there is an existing module object with the given name in - :data:`sys.modules`, the loader must use that existing module. (Otherwise, - :func:`imp.reload` will not work correctly.) If the named module does - not exist in :data:`sys.modules`, the loader must create a new module - object and add it to :data:`sys.modules`. + :data:`sys.modules`, import will have already returned it. - Note that the module *must* exist in :data:`sys.modules` before the loader + * The module will exist in :data:`sys.modules` before the loader executes the module code. This is crucial because the module code may (directly or indirectly) import itself; adding it to :data:`sys.modules` beforehand prevents unbounded recursion in the worst case and multiple loading in the best. - If loading fails, the loader must remove any modules it has inserted into - :data:`sys.modules`, but it must remove **only** the failing module, and - only if the loader itself has loaded it explicitly. Any module already in - the :data:`sys.modules` cache, and any module that was successfully loaded - as a side-effect, must remain in the cache. - - * The loader may set the ``__file__`` attribute of the module. If set, this - attribute's value must be a string. The loader may opt to leave - ``__file__`` unset if it has no semantic meaning (e.g. a module loaded from - a database). If ``__file__`` is set, it may also be appropriate to set the - ``__cached__`` attribute which is the path to any compiled version of the - code (e.g. byte-compiled file). The file does not need to exist to set this - attribute; the path can simply point to whether the compiled file would - exist (see :pep:`3147`). - - * The loader may set the ``__name__`` attribute of the module. While not - required, setting this attribute is highly recommended so that the - :meth:`repr()` of the module is more informative. - - * If the module is a package (either regular or namespace), the loader must - set the module object's ``__path__`` attribute. The value must be - iterable, but may be empty if ``__path__`` has no further significance - to the loader. If ``__path__`` is not empty, it must produce strings - when iterated over. More details on the semantics of ``__path__`` are - given :ref:`below `. - - * The ``__loader__`` attribute must be set to the loader object that loaded - the module. This is mostly for introspection and reloading, but can be - used for additional loader-specific functionality, for example getting - data associated with a loader. If the attribute is missing or set to ``None`` - then the import machinery will automatically set it **after** the module has - been imported. - - * The module's ``__package__`` attribute must be set. Its value must be a - string, but it can be the same value as its ``__name__``. If the attribute - is set to ``None`` or is missing, the import system will fill it in with a - more appropriate value **after** the module has been imported. - When the module is a package, its ``__package__`` value should be set to its - ``__name__``. When the module is not a package, ``__package__`` should be - set to the empty string for top-level modules, or for submodules, to the - parent package's name. See :pep:`366` for further details. + * If loading fails, the failing module -- and only the failing module -- + gets removed from :data:`sys.modules`. Any module already in the + :data:`sys.modules` cache, and any module that was successfully loaded + as a side-effect, must remain in the cache. This contrasts with + reloading where even the failing module is left in :data:`sys.modules`. - This attribute is used instead of ``__name__`` to calculate explicit - relative imports for main modules, as defined in :pep:`366`. + * After the module is created but before execution, the import machinery + sets the import-related module attributes ("init_module_attrs"), as + summarized in a `later section `_. + + * Module execution is the key moment of loading in which the module's + namespace gets populated. Execution is entirely delegated to the + loader, which gets to decide what gets populated and how. + + * The module created during loading and passed to exec_module() may + not be the one returned at the end of import [#fnlo]_. + +.. versionchanged:: 3.4 + The import system has taken over the boilerplate responsibilities of + loaders. These were previously performed by the :meth:`load_module()` + method. + +Loaders +------- + +Module loaders provide the critical function of loading: module execution. +The import machinery calls the :meth:`~importlib.abc.Loader.exec_module()` +method with a single argument, the module object to execute. Any value +returned from exec_module() is ignored. + +Loaders must satisfy the following requirements: * If the module is a Python module (as opposed to a built-in module or a dynamically loaded extension), the loader should execute the module's code in the module's global name space (``module.__dict__``). + * If loader cannot execute the module, it should raise an + :exc:`ImportError`, although any other exception raised during + :meth:`exec_module()` will be propagated. -Module reprs ------------- +In many cases, the finder and loader can be the same object; in such cases the +:meth:`finder.find_spec()` would just return a spec with the loader set +to ``self``. -By default, all modules have a usable repr, however depending on the -attributes set above, and hooks in the loader, you can more explicitly control -the repr of module objects. - -Loaders may implement a :meth:`module_repr()` method which takes a single -argument, the module object. When ``repr(module)`` is called for a module -with a loader supporting this protocol, whatever is returned from -``module.__loader__.module_repr(module)`` is returned as the module's repr -without further processing. This return value must be a string. - -If the module has no ``__loader__`` attribute, or the loader has no -:meth:`module_repr()` method, then the module object implementation itself -will craft a default repr using whatever information is available. It will -try to use the ``module.__name__``, ``module.__file__``, and -``module.__loader__`` as input into the repr, with defaults for whatever -information is missing. +Module loaders may opt in to creating the module object during loading +by implementing a :meth:`create_module()` method. It takes one argument, +the module spec, and returns the new module object to use during loading. +create_module() does not need to set any attributes on the module object. +If the loader does not define create_module(), the import machinery will +create the new module itself. -Here are the exact rules used: +.. versionadded:: 3.4 + The create_module() method of loaders. - * If the module has a ``__loader__`` and that loader has a - :meth:`module_repr()` method, call it with a single argument, which is the - module object. The value returned is used as the module's repr. +.. versionchanged:: 3.4 + The load_module() method was replaced by exec_module() and the import + machinery assumed all the boilerplate responsibilities of loading. - * If an exception occurs in :meth:`module_repr()`, the exception is caught - and discarded, and the calculation of the module's repr continues as if - :meth:`module_repr()` did not exist. + For compatibility with existing loaders, the import machinery will use + the :meth:`~importlib.abc.Loader.load_module()` method of loaders if it + exists and the loader does not also implement exec_module(). However, + load_module() has been deprecated and loaders should implement + exec_module() instead. - * If the module has a ``__file__`` attribute, this is used as part of the - module's repr. + The load_module() method must implement all the boilerplate loading + functionality described above in addition to executing the module. All + the same constraints apply, with some additional clarification: - * If the module has no ``__file__`` but does have a ``__loader__`` that is not - ``None``, then the loader's repr is used as part of the module's repr. + * If there is an existing module object with the given name in + :data:`sys.modules`, the loader must use that existing module. + (Otherwise, :func:`imp.reload` will not work correctly.) If the + named module does not exist in :data:`sys.modules`, the loader + must create a new module object and add it to :data:`sys.modules`. - * Otherwise, just use the module's ``__name__`` in the repr. + * The module *must* exist in :data:`sys.modules` before the loader + executes the module code, to prevent unbounded recursion or multiple + loading. + + * If loading fails, the loader must remove any modules it has inserted + into :data:`sys.modules`, but it must remove **only** the failing + module, and only if the loader itself has loaded it explicitly. + +Module spec +----------- + +The import machinery uses a variety of information about each module +during import, especially before loading. Most of the information is +common to all modules. The purpose of a module's spec is to encapsulate +this import-related information on a per-module basis. + +Using a spec during import allows state to be transferred between import +system components, e.g. between the finder that creates the module spec +and the loader that executes it. Most importantly, it allows the +import machinery to perform the boilerplate operations of loading, +whereas without a module spec the loader had that responsibility. + +See :class:`~importlib.machinery.ModuleSpec` for more specifics on what +information a module's spec may hold. + +.. versionadded:: 3.4 + +Import-related module attributes +-------------------------------- + +The import machinery fills in these attributes on each module object +during loading, based on the module's spec, before the loader executes +the module. + +.. attribute:: __name__ -This example, from :pep:`420` shows how a loader can craft its own module -repr:: + The ``__name__`` attribute must be set to the fully-qualified name of + the module. This name is used to uniquely identify the module in + the import system. - class NamespaceLoader: - @classmethod - def module_repr(cls, module): - return "".format(module.__name__) +.. attribute:: __loader__ + The ``__loader__`` attribute must be set to the loader object that + the import machinery used when loading the module. This is mostly + for introspection, but can be used for additional loader-specific + functionality, for example getting data associated with a loader. + +.. attribute:: __package__ + + The module's ``__package__`` attribute must be set. Its value must + be a string, but it can be the same value as its ``__name__``. When + the module is a package, its ``__package__`` value should be set to + its ``__name__``. When the module is not a package, ``__package__`` + should be set to the empty string for top-level modules, or for + submodules, to the parent package's name. See :pep:`366` for further + details. + + This attribute is used instead of ``__name__`` to calculate explicit + relative imports for main modules, as defined in :pep:`366`. + +.. attribute:: __spec__ + + The ``__spec__`` attribute must be set to the module spec that was + used when importing the module. This is used primarily for + introspection and during reloading. + +.. attribute:: __path__ + + If the module is a package (either regular or namespace), the module + object's ``__path__`` attribute must be set. The value must be + iterable, but may be empty if ``__path__`` has no further significance. + If ``__path__`` is not empty, it must produce strings when iterated + over. More details on the semantics of ``__path__`` are given + :ref:`below `. + + Non-package modules should not have a ``__path__`` attribute. + +.. attribute:: __file__ +.. attribute:: __cached__ + + ``__file__`` is optional. If set, this attribute's value must be a + string. The import system may opt to leave ``__file__`` unset if it + has no semantic meaning (e.g. a module loaded from a database). + + If ``__file__`` is set, it may also be appropriate to set the + ``__cached__`` attribute which is the path to any compiled version of + the code (e.g. byte-compiled file). The file does not need to exist + to set this attribute; the path can simply point to where the + compiled file would exist (see :pep:`3147`). + + It is also appropriate to set ``__cached__`` when ``__file__`` is not + set. However, that scenario is quite atypical. Ultimately, the + loader is what makes use of ``__file__`` and/or ``__cached__``. So + if a loader can load from a cached module but otherwise does not load + from a file, that atypical scenario may be appropriate. .. _package-path-rules: @@ -464,9 +566,46 @@ A package's ``__init__.py`` file may set or alter the package's ``__path__`` attribute, and this was typically the way namespace packages were implemented prior to :pep:`420`. With the adoption of :pep:`420`, namespace packages no longer need to supply ``__init__.py`` files containing only ``__path__`` -manipulation code; the namespace loader automatically sets ``__path__`` +manipulation code; the import machinery automatically sets ``__path__`` correctly for the namespace package. +Module reprs +------------ + +By default, all modules have a usable repr, however depending on the +attributes set above, and in the module's spec, you can more explicitly +control the repr of module objects. + +If the module has a spec (``__spec__``), the import machinery will try +to generate a repr from it. If that fails or there is no spec, the import +system will craft a default repr using whatever information is available +on the module. It will try to use the ``module.__name__``, +``module.__file__``, and ``module.__loader__`` as input into the repr, +with defaults for whatever information is missing. + +Here are the exact rules used: + + * If the module has a ``__spec__`` attribute, the information in the spec + is used to generate the repr. The "name", "loader", "origin", and + "has_location" attributes are consulted. + + * If the module has a ``__file__`` attribute, this is used as part of the + module's repr. + + * If the module has no ``__file__`` but does have a ``__loader__`` that is not + ``None``, then the loader's repr is used as part of the module's repr. + + * Otherwise, just use the module's ``__name__`` in the repr. + +.. versionchanged:: 3.4 + Use of loader.module_repr() has been deprecated and the module spec + is now used by the import machinery to generate a module repr. + + For backward compatibility with Python 3.3, the module repr will be + generated by calling the loader's :meth:`module_repr()` method, if + defined, before trying either approach described above. However, the + method is deprecated. + The Path Based Finder ===================== @@ -531,7 +670,7 @@ entry`. Most path entries name locations in the file system, but they need not be limited to this. As a meta path finder, the :term:`path based finder` implements the -:meth:`find_module()` protocol previously described, however it exposes +:meth:`find_spec()` protocol previously described, however it exposes additional hooks that can be used to customize how modules are found and loaded from the :term:`import path`. @@ -553,8 +692,8 @@ finder>`. The :term:`path based finder` is a :term:`meta path finder`, so the import machinery begins the :term:`import path` search by calling the path -based finder's :meth:`find_module()` method as described previously. When -the ``path`` argument to :meth:`find_module()` is given, it will be a +based finder's :meth:`find_spec()` method as described previously. When +the ``path`` argument to :meth:`find_spec()` is given, it will be a list of string paths to traverse - typically a package's ``__path__`` attribute for an import within that package. If the ``path`` argument is ``None``, this indicates a top level import and :data:`sys.path` is used. @@ -585,51 +724,70 @@ encoding, UTF-8, or something else), and if the hook cannot decode the argument, it should raise :exc:`ImportError`. If :data:`sys.path_hooks` iteration ends with no :term:`path entry finder` -being returned, then the path based finder's :meth:`find_module()` method +being returned, then the path based finder's :meth:`find_spec()` method will store ``None`` in :data:`sys.path_importer_cache` (to indicate that there is no finder for this path entry) and return ``None``, indicating that this :term:`meta path finder` could not find the module. If a :term:`path entry finder` *is* returned by one of the :term:`path entry hook` callables on :data:`sys.path_hooks`, then the following protocol is used -to ask the finder for a module loader, which is then used to load the module. - +to ask the finder for a module spec, which is then used when loading the +module. Path entry finder protocol -------------------------- In order to support imports of modules and initialized packages and also to contribute portions to namespace packages, path entry finders must implement -the :meth:`find_loader()` method. - -:meth:`find_loader()` takes one argument, the fully qualified name of the -module being imported. :meth:`find_loader()` returns a 2-tuple where the -first item is the loader and the second item is a namespace :term:`portion`. -When the first item (i.e. the loader) is ``None``, this means that while the -path entry finder does not have a loader for the named module, it knows that the -path entry contributes to a namespace portion for the named module. This will -almost always be the case where Python is asked to import a namespace package -that has no physical presence on the file system. When a path entry finder -returns ``None`` for the loader, the second item of the 2-tuple return value -must be a sequence, although it can be empty. - -If :meth:`find_loader()` returns a non-``None`` loader value, the portion is -ignored and the loader is returned from the path based finder, terminating -the search through the path entries. - -For backwards compatibility with other implementations of the import -protocol, many path entry finders also support the same, -traditional :meth:`find_module()` method that meta path finders support. -However path entry finder :meth:`find_module()` methods are never called -with a ``path`` argument (they are expected to record the appropriate -path information from the initial call to the path hook). - -The :meth:`find_module()` method on path entry finders is deprecated, -as it does not allow the path entry finder to contribute portions to -namespace packages. Instead path entry finders should implement the -:meth:`find_loader()` method as described above. If it exists on the path -entry finder, the import system will always call :meth:`find_loader()` -in preference to :meth:`find_module()`. +the :meth:`find_spec()` method. + +:meth:`find_spec()` takes one argument, the fully qualified name of the +module being imported. :meth:`find_spec()` returns a fully populated +spec for the module. This spec will always have "loader" set (with one +exception). + +To indicate to the import machinery that the spec represents a namespace +:term:`portion`. the path entry finder sets "loader" on the spec to +``None`` and "submodule_search_locations" to a list containing the +portion. + +.. versionchanged:: 3.4 + find_spec() replaced find_loader() and find_module(), but of which + are now deprecated, but will be used if find_spec() is not defined. + + Older path entry finders may implement one of these two deprecated methods + instead of :meth:`find_spec()`. The methods are still respected for the + sake of backward compatibility. Howevever, if find_spec() is implemented + on the path entry finder, the legacy methods are ignored. + + :meth:`find_loader()` takes one argument, the fully qualified name of the + module being imported. :meth:`find_loader()` returns a 2-tuple where the + first item is the loader and the second item is a namespace :term:`portion`. + When the first item (i.e. the loader) is ``None``, this means that while the + path entry finder does not have a loader for the named module, it knows that + the path entry contributes to a namespace portion for the named module. + This will almost always be the case where Python is asked to import a + namespace package that has no physical presence on the file system. + When a path entry finder returns ``None`` for the loader, the second + item of the 2-tuple return value must be a sequence, although it can be + empty. + + If :meth:`find_loader()` returns a non-``None`` loader value, the portion is + ignored and the loader is returned from the path based finder, terminating + the search through the path entries. + + For backwards compatibility with other implementations of the import + protocol, many path entry finders also support the same, + traditional :meth:`find_module()` method that meta path finders support. + However path entry finder :meth:`find_module()` methods are never called + with a ``path`` argument (they are expected to record the appropriate + path information from the initial call to the path hook). + + The :meth:`find_module()` method on path entry finders is deprecated, + as it does not allow the path entry finder to contribute portions to + namespace packages. If both :meth:`find_loader()` and :meth:`find_module()` + exist on a path entry finder, the import system will always call + :meth:`find_loader()` in preference to :meth:`find_module()`. Replacing the standard import system @@ -648,7 +806,7 @@ import statements within that module. To selectively prevent import of some modules from a hook early on the meta path (rather than disabling the standard import system entirely), it is sufficient to raise :exc:`ImportError` directly from -:meth:`find_module` instead of returning ``None``. The latter indicates +:meth:`find_spec` instead of returning ``None``. The latter indicates that the meta path search should continue. while raising an exception terminates it immediately. @@ -690,6 +848,11 @@ proposed ``__name__`` for semantics :pep:`366` would eventually specify for :pep:`338` defines executing modules as scripts. +:pep:`451` adds the encapsulation of per-module import state in spec +objects. It also off-loads most of the boilerplate responsibilities of +loaders back onto the import machinery. These changes allow the +deprecation of several APIs in the import system and also addition of new +methods to finders and loaders. .. rubric:: Footnotes diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst index 6db3d63..5ccbfa4 100644 --- a/Doc/whatsnew/3.4.rst +++ b/Doc/whatsnew/3.4.rst @@ -236,6 +236,26 @@ name of the codec responsible for producing the error:: (Contributed by Nick Coghlan in :issue:`17827`, :issue:`17828` and :issue:`19619`) +.. _pep-451: + +PEP 451: A ModuleSpec Type for the Import System +================================================ + +:pep:`451` provides an encapsulation of the information about a module +that the import machinery will use to load it, (i.e. a module spec). +This helps simplify both the import implementation and several +import-related APIs. The change is also a stepping stone for several +future import-related improvements. + +https://mail.python.org/pipermail/python-dev/2013-November/130111.html + +The public-facing changes from the PEP are entirely backward-compatible. +Furthermore, they should be transparent to everyone but importer +authors. Key finder and loader methods have been deprecated, but they +will continue working. New importers should use the new methods +described in the PEP. Existing importers should be updated to implement +the new methods. + Other Language Changes ====================== diff --git a/Lib/imp.py b/Lib/imp.py index ee6cfe2..1144cd1 100644 --- a/Lib/imp.py +++ b/Lib/imp.py @@ -16,7 +16,7 @@ except ImportError: # Platform doesn't support dynamic loading. load_dynamic = None -from importlib._bootstrap import SourcelessFileLoader, _ERR_MSG +from importlib._bootstrap import SourcelessFileLoader, _ERR_MSG, _SpecMethods from importlib import machinery from importlib import util @@ -162,11 +162,17 @@ class _LoadSourceCompatibility(_HackedGetData, machinery.SourceFileLoader): def load_source(name, pathname, file=None): - _LoadSourceCompatibility(name, pathname, file).load_module(name) - module = sys.modules[name] + loader = _LoadSourceCompatibility(name, pathname, file) + spec = util.spec_from_file_location(name, pathname, loader=loader) + methods = _SpecMethods(spec) + if name in sys.modules: + module = methods.exec(sys.modules[name]) + else: + module = methods.load() # To allow reloading to potentially work, use a non-hacked loader which # won't rely on a now-closed file object. module.__loader__ = machinery.SourceFileLoader(name, pathname) + module.__spec__.loader = module.__loader__ return module @@ -177,11 +183,17 @@ class _LoadCompiledCompatibility(_HackedGetData, SourcelessFileLoader): def load_compiled(name, pathname, file=None): """**DEPRECATED**""" - _LoadCompiledCompatibility(name, pathname, file).load_module(name) - module = sys.modules[name] + loader = _LoadCompiledCompatibility(name, pathname, file) + spec = util.spec_from_file_location(name, pathname, loader=loader) + methods = _SpecMethods(spec) + if name in sys.modules: + module = methods.exec(sys.modules[name]) + else: + module = methods.load() # To allow reloading to potentially work, use a non-hacked loader which # won't rely on a now-closed file object. module.__loader__ = SourcelessFileLoader(name, pathname) + module.__spec__.loader = module.__loader__ return module @@ -196,7 +208,13 @@ def load_package(name, path): break else: raise ValueError('{!r} is not a package'.format(path)) - return machinery.SourceFileLoader(name, path).load_module(name) + spec = util.spec_from_file_location(name, path, + submodule_search_locations=[]) + methods = _SpecMethods(spec) + if name in sys.modules: + return methods.exec(sys.modules[name]) + else: + return methods.load() def load_module(name, file, filename, details): diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py index e56e9c3..3e969bb 100644 --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -46,19 +46,42 @@ def invalidate_caches(): finder.invalidate_caches() -def find_loader(name, path=None): - """Find the loader for the specified module. +def find_spec(name, path=None): + """Return the spec for the specified module. First, sys.modules is checked to see if the module was already imported. If - so, then sys.modules[name].__loader__ is returned. If that happens to be + so, then sys.modules[name].__spec__ is returned. If that happens to be set to None, then ValueError is raised. If the module is not in - sys.modules, then sys.meta_path is searched for a suitable loader with the - value of 'path' given to the finders. None is returned if no loader could + sys.modules, then sys.meta_path is searched for a suitable spec with the + value of 'path' given to the finders. None is returned if no spec could be found. Dotted names do not have their parent packages implicitly imported. You will most likely need to explicitly import all parent packages in the proper - order for a submodule to get the correct loader. + order for a submodule to get the correct spec. + + """ + if name not in sys.modules: + return _bootstrap._find_spec(name, path) + else: + module = sys.modules[name] + if module is None: + return None + try: + spec = module.__spec__ + except AttributeError: + raise ValueError('{}.__spec__ is not set'.format(name)) + else: + if spec is None: + raise ValueError('{}.__spec__ is None'.format(name)) + return spec + + +# XXX Deprecate... +def find_loader(name, path=None): + """Return the loader for the specified module. + + This is a backward-compatible wrapper around find_spec(). """ try: @@ -71,7 +94,18 @@ def find_loader(name, path=None): pass except AttributeError: raise ValueError('{}.__loader__ is not set'.format(name)) - return _bootstrap._find_module(name, path) + + spec = _bootstrap._find_spec(name, path) + # We won't worry about malformed specs (missing attributes). + if spec is None: + return None + if spec.loader is None: + if spec.submodule_search_locations is None: + raise ImportError('spec for {} missing loader'.format(name), + name=name) + raise ImportError('namespace packages do not have loaders', + name=name) + return spec.loader def import_module(name, package=None): @@ -106,7 +140,11 @@ def reload(module): """ if not module or not isinstance(module, types.ModuleType): raise TypeError("reload() argument must be module") - name = module.__name__ + try: + name = module.__spec__.name + except AttributeError: + name = module.__name__ + if sys.modules.get(name) is not module: msg = "module {} not in sys.modules" raise ImportError(msg.format(name), name=name) @@ -118,13 +156,11 @@ def reload(module): if parent_name and parent_name not in sys.modules: msg = "parent {!r} not in sys.modules" raise ImportError(msg.format(parent_name), name=parent_name) - loader = _bootstrap._find_module(name, None) - if loader is None: - raise ImportError(_bootstrap._ERR_MSG.format(name), name=name) - module.__loader__ = loader - loader.load_module(name) + spec = module.__spec__ = _bootstrap._find_spec(name, None, module) + methods = _bootstrap._SpecMethods(spec) + methods.exec(module) # The module may have replaced itself in sys.modules! - return sys.modules[module.__name__] + return sys.modules[name] finally: try: del _RELOADING[name] diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index 77fae0a..a6db00b 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -84,13 +84,11 @@ def _path_is_mode_type(path, mode): return (stat_info.st_mode & 0o170000) == mode -# XXX Could also expose Modules/getpath.c:isfile() def _path_isfile(path): """Replacement for os.path.isfile.""" return _path_is_mode_type(path, 0o100000) -# XXX Could also expose Modules/getpath.c:isdir() def _path_isdir(path): """Replacement for os.path.isdir.""" if not path: @@ -128,6 +126,10 @@ def _wrap(new, old): new.__dict__.update(old.__dict__) +def _new_module(name): + return type(sys)(name) + + _code_type = type(_wrap.__code__) @@ -232,6 +234,23 @@ class _DummyModuleLock: return '_DummyModuleLock({!r}) at {}'.format(self.name, id(self)) +class _ModuleLockManager: + + def __init__(self, name): + self._name = name + self._lock = None + + def __enter__(self): + try: + self._lock = _get_module_lock(self._name) + finally: + _imp.release_lock() + self._lock.acquire() + + def __exit__(self, *args, **kwargs): + self._lock.release() + + # The following two functions are for consumption by Python/import.c. def _get_module_lock(name): @@ -485,124 +504,6 @@ def _verbose_message(message, *args, verbosity=1): print(message.format(*args), file=sys.stderr) -class _ManageReload: - - def __init__(self, name): - self._name = name - - def __enter__(self): - self._is_reload = self._name in sys.modules - - def __exit__(self, *args): - if any(arg is not None for arg in args) and not self._is_reload: - try: - del sys.modules[self._name] - except KeyError: - pass - - -# Written as a class only because contextlib is not available. -class _ModuleManager(_ManageReload): - - """Context manager which returns the module to be loaded. - - Does the proper unloading from sys.modules upon failure. - - """ - - def __init__(self, name, *, reset_name=True): - """Prepare the context manager. - - The reset_name argument specifies whether to unconditionally reset - the __name__ attribute if the module is found to be a reload. - """ - super().__init__(name) - self._reset_name = reset_name - - def __enter__(self): - super().__enter__() - self._module = sys.modules.get(self._name) - if not self._is_reload: - # This must be done before open() is called as the 'io' module - # implicitly imports 'locale' and would otherwise trigger an - # infinite loop. - self._module = type(_io)(self._name) - # This must be done before putting the module in sys.modules - # (otherwise an optimization shortcut in import.c becomes wrong) - self._module.__initializing__ = True - sys.modules[self._name] = self._module - elif self._reset_name: - try: - self._module.__name__ = self._name - except AttributeError: - pass - return self._module - - def __exit__(self, *args): - self._module.__initializing__ = False - del self._module - super().__exit__(*args) - - -def module_to_load(name, *, reset_name=True): - """Return a context manager which provides the module object to load. - - If reset_name is true, reset the module's __name__ to 'name'. - """ - # Hiding _ModuleManager behind a function for better naming. - return _ModuleManager(name, reset_name=reset_name) - - -def _init_package_attrs(loader, module): - """Set __package__ and __path__ based on what loader.is_package() says.""" - name = module.__name__ - try: - is_package = loader.is_package(name) - except ImportError: - pass - else: - if is_package: - module.__package__ = name - module.__path__ = [] - else: - module.__package__ = name.rpartition('.')[0] - - -def _init_file_attrs(loader, module): - """Set __file__ and __path__ based on loader.get_filename().""" - try: - module.__file__ = loader.get_filename(module.__name__) - except ImportError: - pass - else: - if module.__name__ == module.__package__: - module.__path__.append(_path_split(module.__file__)[0]) - - -def set_package(fxn): - """Set __package__ on the returned module.""" - def set_package_wrapper(*args, **kwargs): - module = fxn(*args, **kwargs) - if getattr(module, '__package__', None) is None: - module.__package__ = module.__name__ - if not hasattr(module, '__path__'): - module.__package__ = module.__package__.rpartition('.')[0] - return module - _wrap(set_package_wrapper, fxn) - return set_package_wrapper - - -def set_loader(fxn): - """Set __loader__ on the returned module.""" - def set_loader_wrapper(self, *args, **kwargs): - module = fxn(self, *args, **kwargs) - if getattr(module, '__loader__', None) is None: - module.__loader__ = self - return module - _wrap(set_loader_wrapper, fxn) - return set_loader_wrapper - - def _check_name(method): """Decorator to verify that the module being requested matches the one the loader can handle. @@ -656,6 +557,19 @@ def _find_module_shim(self, fullname): return loader +def _load_module_shim(self, fullname): + """Load the specified module into sys.modules and return it.""" + # XXX Deprecation Warning here... + spec = spec_from_loader(fullname, self) + methods = _SpecMethods(spec) + if fullname in sys.modules: + module = sys.modules[fullname] + methods.exec(module) + return sys.modules[fullname] + else: + return methods.load() + + def _validate_bytecode_header(data, source_stats=None, name=None, path=None): """Validate the header of the passed-in bytecode against source_stats (if given) and returning the bytecode that can be compiled by compile(). @@ -745,6 +659,556 @@ def decode_source(source_bytes): return newline_decoder.decode(source_bytes.decode(encoding[0])) +# Module specifications ####################################################### + +def _module_repr(module): + # The implementation of ModuleType__repr__(). + loader = getattr(module, '__loader__', None) + if hasattr(loader, 'module_repr'): + # XXX Deprecation Warning here... + try: + return loader.module_repr(module) + except Exception: + pass + try: + spec = module.__spec__ + except AttributeError: + pass + else: + if spec is not None: + return _SpecMethods(spec).module_repr() + + # We could use module.__class__.__name__ instead of 'module' in the + # various repr permutations. + try: + name = module.__name__ + except AttributeError: + name = '?' + try: + filename = module.__file__ + except AttributeError: + if loader is None: + return ''.format(name) + else: + return ''.format(name, loader) + else: + return ''.format(name, filename) + + +class _installed_safely: + + def __init__(self, module): + self._module = module + self._spec = module.__spec__ + + def __enter__(self): + # This must be done before putting the module in sys.modules + # (otherwise an optimization shortcut in import.c becomes + # wrong) + self._spec._initializing = True + sys.modules[self._spec.name] = self._module + + def __exit__(self, *args): + try: + spec = self._spec + if any(arg is not None for arg in args): + try: + del sys.modules[spec.name] + except KeyError: + pass + else: + _verbose_message('import {!r} # {!r}', spec.name, spec.loader) + finally: + self._spec._initializing = False + + +class ModuleSpec: + """The specification for a module, used for loading. + + A module's spec is the source for information about the module. For + data associated with the module, including source, use the spec's + loader. + + `name` is the absolute name of the module. `loader` is the loader + to use when loading the module. `parent` is the name of the + package the module is in. The parent is derived from the name. + + `is_package` determines if the module is considered a package or + not. On modules this is reflected by the `__path__` attribute. + + `origin` is the specific location used by the loader from which to + load the module, if that information is available. When filename is + set, origin will match. + + `has_location` indicates that a spec's "origin" reflects a location. + When this is True, `__file__` attribute of the module is set. + + `cached` is the location of the cached bytecode file, if any. It + corresponds to the `__cached__` attribute. + + `submodule_search_locations` is the sequence of path entries to + search when importing submodules. If set, is_package should be + True--and False otherwise. + + Packages are simply modules that (may) have submodules. If a spec + has a non-None value in `submodule_search_locations`, the import + system will consider modules loaded from the spec as packages. + + Only finders (see importlib.abc.MetaPathFinder and + importlib.abc.PathEntryFinder) should modify ModuleSpec instances. + + """ + + def __init__(self, name, loader, *, origin=None, loader_state=None, + is_package=None): + self.name = name + self.loader = loader + self.origin = origin + self.loader_state = loader_state + self.submodule_search_locations = [] if is_package else None + + # file-location attributes + self._set_fileattr = False + self._cached = None + + def __repr__(self): + args = ['name={!r}'.format(self.name), + 'loader={!r}'.format(self.loader)] + if self.origin is not None: + args.append('origin={!r}'.format(self.origin)) + if self.submodule_search_locations is not None: + args.append('submodule_search_locations={}' + .format(self.submodule_search_locations)) + return '{}({})'.format(self.__class__.__name__, ', '.join(args)) + + def __eq__(self, other): + smsl = self.submodule_search_locations + try: + return (self.name == other.name and + self.loader == other.loader and + self.origin == other.origin and + smsl == other.submodule_search_locations and + self.cached == other.cached and + self.has_location == other.has_location) + except AttributeError: + return False + + @property + def cached(self): + if self._cached is None: + if self.origin is not None and self._set_fileattr: + filename = self.origin + if filename.endswith(tuple(SOURCE_SUFFIXES)): + try: + self._cached = cache_from_source(filename) + except NotImplementedError: + pass + elif filename.endswith(tuple(BYTECODE_SUFFIXES)): + self._cached = filename + return self._cached + + @cached.setter + def cached(self, cached): + self._cached = cached + + @property + def parent(self): + """The name of the module's parent.""" + if self.submodule_search_locations is None: + return self.name.rpartition('.')[0] + else: + return self.name + + @property + def has_location(self): + return self._set_fileattr + + +def spec_from_loader(name, loader, *, origin=None, is_package=None): + """Return a module spec based on various loader methods.""" + +# if hasattr(loader, 'get_data'): + if hasattr(loader, 'get_filename'): + if is_package is None: + return spec_from_file_location(name, loader=loader) + search = [] if is_package else None + return spec_from_file_location(name, loader=loader, + submodule_search_locations=search) + + if is_package is None: + if hasattr(loader, 'is_package'): + try: + is_package = loader.is_package(name) + except ImportError: + is_package = None # aka, undefined + else: + # the default + is_package = False + + return ModuleSpec(name, loader, origin=origin, is_package=is_package) + + +_POPULATE = object() + + +def spec_from_file_location(name, location=None, *, loader=None, + submodule_search_locations=_POPULATE): + """Return a module spec based on a file location. + + To indicate that the module is a package, set + submodule_search_locations to a list of directory paths. An + empty list is sufficient, though its not otherwise useful to the + import system. + + The loader must take a spec as its only __init__() arg. + + """ + if location is None: + # The caller may simply want a partially populated location- + # oriented spec. So we set the location to a bogus value and + # fill in as much as we can. + location = '' + if hasattr(loader, 'get_filename'): + # ExecutionLoader + try: + location = loader.get_filename(name) + except ImportError: + pass + + # If the location is on the filesystem, but doesn't actually exist, + # we could return None here, indicating that the location is not + # valid. However, we don't have a good way of testing since an + # indirect location (e.g. a zip file or URL) will look like a + # non-existent file relative to the filesystem. + + spec = ModuleSpec(name, loader, origin=location) + spec._set_fileattr = True + + # Pick a loader if one wasn't provided. + if loader is None: + for loader_class, suffixes in _get_supported_file_loaders(): + if location.endswith(tuple(suffixes)): + loader = loader_class(name, location) + spec.loader = loader + break + else: + return None + + # Set submodule_search_paths appropriately. + if submodule_search_locations is _POPULATE: + # Check the loader. + if hasattr(loader, 'is_package'): + try: + is_package = loader.is_package(name) + except ImportError: + pass + else: + if is_package: + spec.submodule_search_locations = [] + else: + spec.submodule_search_locations = submodule_search_locations + if spec.submodule_search_locations == []: + if location: + dirname = _path_split(location)[0] + spec.submodule_search_locations.append(dirname) + + return spec + + +def _spec_from_module(module, loader=None, origin=None): + # This function is meant for use in _setup(). + try: + spec = module.__spec__ + except AttributeError: + pass + else: + if spec is not None: + return spec + + name = module.__name__ + if loader is None: + try: + loader = module.__loader__ + except AttributeError: + # loader will stay None. + pass + try: + location = module.__file__ + except AttributeError: + location = None + if origin is None: + if location is None: + try: + origin = loader._ORIGIN + except AttributeError: + origin = None + else: + origin = location + try: + cached = module.__cached__ + except AttributeError: + cached = None + try: + submodule_search_locations = list(module.__path__) + except AttributeError: + submodule_search_locations = None + + spec = ModuleSpec(name, loader, origin=origin) + spec._set_fileattr = False if location is None else True + spec.cached = cached + spec.submodule_search_locations = submodule_search_locations + return spec + + +class _SpecMethods: + + """Convenience wrapper around spec objects to provide spec-specific + methods.""" + + def __init__(self, spec): + self.spec = spec + + @classmethod + def from_module(cls, module): + """Create a spec from a module's attributes.""" + try: + spec = module.__spec__ + except AttributeError: + try: + loader = spec.__loader__ + except AttributeError: + spec = _find_spec(module.__name__) + if spec is None: + spec = spec_from_loader(module.__name__, loader) + else: + spec = spec_from_loader(module.__name__, loader) + return cls(spec) + + def module_repr(self): + """Return the repr to use for the module.""" + # We mostly replicate _module_repr() using the spec attributes. + spec = self.spec + name = '?' if spec.name is None else spec.name + if spec.origin is None: + if spec.loader is None: + return ''.format(name) + else: + return ''.format(name, spec.loader) + else: + if spec.has_location: + return ''.format(name, spec.origin) + else: + return ''.format(spec.name, spec.origin) + + def init_module_attrs(self, module, *, _override=False, _force_name=True): + """Set the module's attributes. + + All missing import-related module attributes will be set. Here + is how the spec attributes map onto the module: + + spec.name -> module.__name__ + spec.loader -> module.__loader__ + spec.parent -> module.__package__ + spec -> module.__spec__ + + Optional: + spec.origin -> module.__file__ (if spec.set_fileattr is true) + spec.cached -> module.__cached__ (if __file__ also set) + spec.submodule_search_locations -> module.__path__ (if set) + + """ + spec = self.spec + + # The passed in module may be not support attribute assignment, + # in which case we simply don't set the attributes. + + # __name__ + if (_override or _force_name or + getattr(module, '__name__', None) is None): + try: + module.__name__ = spec.name + except AttributeError: + pass + + # __loader__ + if _override or getattr(module, '__loader__', None) is None: + loader = spec.loader + if loader is None: + # A backward compatibility hack. + if spec.submodule_search_locations is not None: + loader = _NamespaceLoader.__new__(_NamespaceLoader) + loader._path = spec.submodule_search_locations + try: + module.__loader__ = loader + except AttributeError: + pass + + # __package__ + if _override or getattr(module, '__package__', None) is None: + try: + module.__package__ = spec.parent + except AttributeError: + pass + + # __spec__ + try: + module.__spec__ = spec + except AttributeError: + pass + + # __path__ + if _override or getattr(module, '__path__', None) is None: + if spec.submodule_search_locations is not None: + try: + module.__path__ = spec.submodule_search_locations + except AttributeError: + pass + + if spec.has_location: + # __file__ + if _override or getattr(module, '__file__', None) is None: + try: + module.__file__ = spec.origin + except AttributeError: + pass + + # __cached__ + if _override or getattr(module, '__cached__', None) is None: + if spec.cached is not None: + try: + module.__cached__ = spec.cached + except AttributeError: + pass + + def create(self): + """Return a new module to be loaded. + + The import-related module attributes are also set with the + appropriate values from the spec. + + """ + spec = self.spec + # Typically loaders will not implement create_module(). + if hasattr(spec.loader, 'create_module'): + # If create_module() returns `None` it means the default + # module creation should be used. + module = spec.loader.create_module(spec) + else: + module = None + if module is None: + # This must be done before open() is ever called as the 'io' + # module implicitly imports 'locale' and would otherwise + # trigger an infinite loop. + module = _new_module(spec.name) + self.init_module_attrs(module) + return module + + def _exec(self, module): + """Do everything necessary to execute the module. + + The namespace of `module` is used as the target of execution. + This method uses the loader's `exec_module()` method. + + """ + self.spec.loader.exec_module(module) + + # Used by importlib.reload() and _load_module_shim(). + def exec(self, module): + """Execute the spec in an existing module's namespace.""" + name = self.spec.name + _imp.acquire_lock() + with _ModuleLockManager(name): + if sys.modules.get(name) is not module: + msg = 'module {} not in sys.modules'.format(name) + raise ImportError(msg, name=name) + if self.spec.loader is None: + if self.spec.submodule_search_locations is None: + raise ImportError('missing loader', name=self.spec.name) + # namespace package + self.init_module_attrs(module, _override=True) + return module + self.init_module_attrs(module, _override=True) + if not hasattr(self.spec.loader, 'exec_module'): + # XXX DeprecationWarning goes here... + self.spec.loader.load_module(name) + else: + self._exec(module) + return sys.modules[name] + + def _load_backward_compatible(self): + # XXX DeprecationWarning goes here... + spec = self.spec + # The module must be in sys.modules! + spec.loader.load_module(spec.name) + module = sys.modules[spec.name] + if getattr(module, '__loader__', None) is None: + try: + module.__loader__ = spec.loader + except AttributeError: + pass + if getattr(module, '__package__', None) is None: + try: + # Since module.__path__ may not line up with + # spec.submodule_search_paths, we can't necessarily rely + # on spec.parent here. + module.__package__ = module.__name__ + if not hasattr(module, '__path__'): + module.__package__ = spec.name.rpartition('.')[0] + except AttributeError: + pass + if getattr(module, '__spec__', None) is None: + try: + module.__spec__ = spec + except AttributeError: + pass + return module + + # XXX If we don't end up using this for pythonrun.c/runpy, we should + # get rid of it. + def _load_existing(self, module): + """Exec the spec'ed module into an existing module's namespace.""" + # For use by runpy. + with _installed_safely(module): + loaded = self.exec(module) + return loaded + + def _load_unlocked(self): + # A helper for direct use by the import system. + if self.spec.loader is not None: + # not a namespace package + if not hasattr(self.spec.loader, 'exec_module'): + return self._load_backward_compatible() + + module = self.create() + with _installed_safely(module): + if self.spec.loader is None: + if self.spec.submodule_search_locations is None: + raise ImportError('missing loader', name=self.spec.name) + # A namespace package so do nothing. + else: + self._exec(module) + + # We don't ensure that the import-related module attributes get + # set in the sys.modules replacement case. Such modules are on + # their own. + return sys.modules[self.spec.name] + + # A method used during testing of _load_unlocked() and by + # _load_module_shim(). + def load(self): + """Return a new module object, loaded by the spec's loader. + + The module is not added to its parent. + + If a module is already in sys.modules, that existing module gets + clobbered. + + """ + _imp.acquire_lock() + with _ModuleLockManager(self.spec.name): + return self._load_unlocked() + + # Loaders ##################################################################### class BuiltinImporter: @@ -756,29 +1220,47 @@ class BuiltinImporter: """ - @classmethod - def module_repr(cls, module): + @staticmethod + def module_repr(module): + # XXX deprecate return ''.format(module.__name__) @classmethod + def find_spec(cls, fullname, path=None, target=None): + if path is not None: + return None + if _imp.is_builtin(fullname): + return spec_from_loader(fullname, cls, origin='built-in') + else: + return None + + @classmethod def find_module(cls, fullname, path=None): """Find the built-in module. If 'path' is ever specified then the search is considered a failure. """ - if path is not None: - return None - return cls if _imp.is_builtin(fullname) else None + spec = cls.find_spec(fullname, path) + return spec.loader if spec is not None else None + + @staticmethod + def exec_module(module): + spec = module.__spec__ + name = spec.name + if not _imp.is_builtin(name): + raise ImportError('{} is not a built-in module'.format(name), + name=name) + _call_with_frames_removed(_imp.init_builtin, name) + # Have to manually initialize attributes since init_builtin() is not + # going to do it for us. + # XXX: Create _imp.exec_builtin(module) + _SpecMethods(spec).init_module_attrs(sys.modules[name]) @classmethod - @set_package - @set_loader - @_requires_builtin def load_module(cls, fullname): """Load a built-in module.""" - with _ManageReload(fullname): - return _call_with_frames_removed(_imp.init_builtin, fullname) + return _load_module_shim(cls, fullname) @classmethod @_requires_builtin @@ -796,6 +1278,7 @@ class BuiltinImporter: @_requires_builtin def is_package(cls, fullname): """Return False as built-in modules are never packages.""" + # XXX DeprecationWarning here... return False @@ -808,26 +1291,36 @@ class FrozenImporter: """ - @classmethod - def module_repr(cls, m): + @staticmethod + def module_repr(m): + # XXX deprecate return ''.format(m.__name__) @classmethod + def find_spec(cls, fullname, path=None, target=None): + if _imp.is_frozen(fullname): + return spec_from_loader(fullname, cls, origin='frozen') + else: + return None + + @classmethod def find_module(cls, fullname, path=None): """Find a frozen module.""" return cls if _imp.is_frozen(fullname) else None + @staticmethod + def exec_module(module): + name = module.__spec__.name + if not _imp.is_frozen(name): + raise ImportError('{} is not a frozen module'.format(name), + name=name) + code = _call_with_frames_removed(_imp.get_frozen_object, name) + exec(code, module.__dict__) + @classmethod - @set_package - @set_loader - @_requires_frozen def load_module(cls, fullname): """Load a frozen module.""" - with _ManageReload(fullname): - m = _call_with_frames_removed(_imp.init_frozen, fullname) - # Let our own module_repr() method produce a suitable repr. - del m.__file__ - return m + return _load_module_shim(cls, fullname) @classmethod @_requires_frozen @@ -850,8 +1343,7 @@ class FrozenImporter: class WindowsRegistryFinder: - """Meta path finder for modules declared in the Windows registry. - """ + """Meta path finder for modules declared in the Windows registry.""" REGISTRY_KEY = ( 'Software\\Python\\PythonCore\\{sys_version}' @@ -884,8 +1376,8 @@ class WindowsRegistryFinder: return filepath @classmethod - def find_module(cls, fullname, path=None): - """Find module named in the registry.""" + def find_spec(cls, fullname, path=None, target=None): + # XXX untested! Need a Windows person to write tests (otherwise mock out appropriately) filepath = cls._search_registry(fullname) if filepath is None: return None @@ -895,7 +1387,18 @@ class WindowsRegistryFinder: return None for loader, suffixes in _get_supported_file_loaders(): if filepath.endswith(tuple(suffixes)): - return loader(fullname, filepath) + spec = spec_from_loader(fullname, loader(fullname, filepath), + origin=filepath) + return spec + + @classmethod + def find_module(cls, fullname, path=None): + """Find module named in the registry.""" + spec = self.find_spec(fullname, path) + if spec is not None: + return spec.loader + else: + return None class _LoaderBasics: @@ -903,6 +1406,7 @@ class _LoaderBasics: """Base class of common code needed by both SourceLoader and SourcelessFileLoader.""" + # XXX deprecate? def is_package(self, fullname): """Concrete implementation of InspectLoader.is_package by checking if the path returned by get_filename has a filename of '__init__.py'.""" @@ -911,32 +1415,15 @@ class _LoaderBasics: tail_name = fullname.rpartition('.')[2] return filename_base == '__init__' and tail_name != '__init__' - def init_module_attrs(self, module): - """Set various attributes on the module. + def exec_module(self, module): + """Execute the module.""" + code = self.get_code(module.__name__) + if code is None: + raise ImportError('cannot load module {!r} when get_code() ' + 'returns None'.format(module.__name__)) + _call_with_frames_removed(exec, code, module.__dict__) - ExecutionLoader.init_module_attrs() is used to set __loader__, - __package__, __file__, and optionally __path__. The __cached__ attribute - is set using imp.cache_from_source() and __file__. - """ - module.__loader__ = self # Loader - _init_package_attrs(self, module) # InspectLoader - _init_file_attrs(self, module) # ExecutionLoader - if hasattr(module, '__file__'): # SourceLoader - try: - module.__cached__ = cache_from_source(module.__file__) - except NotImplementedError: - pass - - def load_module(self, fullname): - """Load the specified module into sys.modules and return it.""" - with module_to_load(fullname) as module: - self.init_module_attrs(module) - code = self.get_code(fullname) - if code is None: - raise ImportError('cannot load module {!r} when get_code() ' - 'returns None'.format(fullname)) - _call_with_frames_removed(exec, code, module.__dict__) - return module + load_module = _load_module_shim class SourceLoader(_LoaderBasics): @@ -1063,7 +1550,9 @@ class FileLoader: @_check_name def load_module(self, fullname): """Load a module from a file.""" - # Issue #14857: Avoid the zero-argument form so the implementation + # The only reason for this method is for the name check. + + # Issue #14857: Avoid the zero-argument form of super so the implementation # of that form can be updated without breaking the frozen module return super(FileLoader, self).load_module(fullname) @@ -1125,10 +1614,6 @@ class SourcelessFileLoader(FileLoader, _LoaderBasics): """Loader which handles sourceless file imports.""" - def init_module_attrs(self, module): - super().init_module_attrs(module) - module.__cached__ = module.__file__ - def get_code(self, fullname): path = self.get_filename(fullname) data = self.get_data(path) @@ -1156,18 +1641,22 @@ class ExtensionFileLoader: self.name = name self.path = path + def exec_module(self, module): + # XXX create _imp.exec_dynamic() + spec = module.__spec__ + fullname = spec.name + module = _call_with_frames_removed(_imp.load_dynamic, + fullname, self.path) + _verbose_message('extension module loaded from {!r}', self.path) + if self.is_package(fullname) and not hasattr(module, '__path__'): + module.__path__ = [_path_split(self.path)[0]] + _SpecMethods(spec).init_module_attrs(module) + + # XXX deprecate @_check_name - @set_package - @set_loader def load_module(self, fullname): """Load an extension module.""" - with _ManageReload(fullname): - module = _call_with_frames_removed(_imp.load_dynamic, - fullname, self.path) - _verbose_message('extension module loaded from {!r}', self.path) - if self.is_package(fullname) and not hasattr(module, '__path__'): - module.__path__ = [_path_split(self.path)[0]] - return module + return _load_module_shim(self, fullname) def is_package(self, fullname): """Return True if the extension module is a package.""" @@ -1220,11 +1709,12 @@ class _NamespacePath: # If the parent's path has changed, recalculate _path parent_path = tuple(self._get_parent_path()) # Make a copy if parent_path != self._last_parent_path: - loader, new_path = self._path_finder(self._name, parent_path) + spec = self._path_finder(self._name, parent_path) # Note that no changes are made if a loader is returned, but we # do remember the new parent path - if loader is None: - self._path = new_path + if spec is not None and spec.loader is None: + if spec.submodule_search_locations: + self._path = spec.submodule_search_locations self._last_parent_path = parent_path # Save the copy return self._path @@ -1244,10 +1734,12 @@ class _NamespacePath: self._path.append(item) -class NamespaceLoader: +# We use this exclusively in init_module_attrs() for backward-compatibility. +class _NamespaceLoader: def __init__(self, name, path, path_finder): self._path = _NamespacePath(name, path, path_finder) + # XXX Deprecate @classmethod def module_repr(cls, module): return ''.format(module.__name__) @@ -1261,17 +1753,11 @@ class NamespaceLoader: def get_code(self, fullname): return compile('', '', 'exec', dont_inherit=True) - def init_module_attrs(self, module): - module.__loader__ = self - module.__package__ = module.__name__ - + # XXX Deprecate def load_module(self, fullname): """Load a namespace module.""" _verbose_message('namespace module loaded with path {!r}', self._path) - with module_to_load(fullname) as module: - self.init_module_attrs(module) - module.__path__ = self._path - return module + return _load_module_shim(self, fullname) # Finders ##################################################################### @@ -1323,7 +1809,20 @@ class PathFinder: return finder @classmethod - def _get_loader(cls, fullname, path): + def _legacy_get_spec(cls, fullname, finder): + if hasattr(finder, 'find_loader'): + loader, portions = finder.find_loader(fullname) + else: + loader = finder.find_module(fullname) + portions = None + if loader is not None: + return spec_from_loader(fullname, loader) + spec = ModuleSpec(fullname, None) + spec.submodule_search_locations = portions + return spec + + @classmethod + def _get_spec(cls, fullname, path, target=None): """Find the loader or namespace_path for this module/package name.""" # If this ends up being a namespace package, namespace_path is # the list of paths that will become its __path__ @@ -1333,38 +1832,58 @@ class PathFinder: continue finder = cls._path_importer_cache(entry) if finder is not None: - if hasattr(finder, 'find_loader'): - loader, portions = finder.find_loader(fullname) + if hasattr(finder, 'find_spec'): + spec = finder.find_spec(fullname, target) else: - loader = finder.find_module(fullname) - portions = [] - if loader is not None: - # We found a loader: return it immediately. - return loader, namespace_path + spec = cls._legacy_get_spec(fullname, finder) + if spec is None: + continue + if spec.loader is not None: + return spec + portions = spec.submodule_search_locations + if portions is None: + raise ImportError('spec missing loader') # This is possibly part of a namespace package. # Remember these path entries (if any) for when we # create a namespace package, and continue iterating # on path. namespace_path.extend(portions) else: - return None, namespace_path + spec = ModuleSpec(fullname, None) + spec.submodule_search_locations = namespace_path + return spec @classmethod - def find_module(cls, fullname, path=None): - """Find the module on sys.path or 'path' based on sys.path_hooks and + def find_spec(cls, fullname, path=None, target=None): + """find the module on sys.path or 'path' based on sys.path_hooks and sys.path_importer_cache.""" if path is None: path = sys.path - loader, namespace_path = cls._get_loader(fullname, path) - if loader is not None: - return loader - else: + spec = cls._get_spec(fullname, path, target) + if spec is None: + return None + elif spec.loader is None: + namespace_path = spec.submodule_search_locations if namespace_path: # We found at least one namespace path. Return a - # loader which can create the namespace package. - return NamespaceLoader(fullname, namespace_path, cls._get_loader) + # spec which can create the namespace package. + spec.origin = 'namespace' + spec.submodule_search_locations = _NamespacePath(fullname, namespace_path, cls._get_spec) + return spec else: return None + else: + return spec + + @classmethod + def find_module(cls, fullname, path=None): + """find the module on sys.path or 'path' based on sys.path_hooks and + sys.path_importer_cache.""" + # XXX Deprecation warning here. + spec = cls.find_spec(fullname, path) + if spec is None: + return None + return spec.loader class FileFinder: @@ -1399,6 +1918,24 @@ class FileFinder: def find_loader(self, fullname): """Try to find a loader for the specified module, or the namespace package portions. Returns (loader, list-of-portions).""" + spec = self.find_spec(fullname) + if spec is None: + return None, [] + return spec.loader, spec.submodule_search_locations or [] + + def _get_spec(self, loader_class, fullname, path, submodule_search_locations, target): + loader = loader_class(fullname, path) + try: + get_spec = loader._get_spec + except AttributeError: + return spec_from_file_location(fullname, path, loader=loader, + submodule_search_locations=submodule_search_locations) + else: + return get_spec(fullname, path, submodule_search_locations, target) + + def find_spec(self, fullname, target=None): + """Try to find a loader for the specified module, or the namespace + package portions. Returns (loader, list-of-portions).""" is_namespace = False tail_module = fullname.rpartition('.')[2] try: @@ -1418,26 +1955,28 @@ class FileFinder: # Check if the module is the name of a directory (and thus a package). if cache_module in cache: base_path = _path_join(self.path, tail_module) - for suffix, loader in self._loaders: + for suffix, loader_class in self._loaders: init_filename = '__init__' + suffix full_path = _path_join(base_path, init_filename) if _path_isfile(full_path): - return (loader(fullname, full_path), [base_path]) + return self._get_spec(loader_class, fullname, full_path, [base_path], target) else: # If a namespace package, return the path if we don't # find a module in the next section. is_namespace = _path_isdir(base_path) # Check for a file w/ a proper suffix exists. - for suffix, loader in self._loaders: + for suffix, loader_class in self._loaders: full_path = _path_join(self.path, tail_module + suffix) _verbose_message('trying {}'.format(full_path), verbosity=2) if cache_module + suffix in cache: if _path_isfile(full_path): - return (loader(fullname, full_path), []) + return self._get_spec(loader_class, fullname, full_path, None, target) if is_namespace: _verbose_message('possible namespace for {}'.format(base_path)) - return (None, [base_path]) - return (None, []) + spec = ModuleSpec(fullname, None) + spec.submodule_search_locations = [base_path] + return spec + return None def _fill_cache(self): """Fill the cache of potential modules and packages for this directory.""" @@ -1516,23 +2055,43 @@ def _resolve_name(name, package, level): return '{}.{}'.format(base, name) if name else base -def _find_module(name, path): +def _find_spec(name, path, target=None): """Find a module's loader.""" if not sys.meta_path: _warnings.warn('sys.meta_path is empty', ImportWarning) + # We check sys.modules here for the reload case. While a passed-in + # target will usually indicate a reload there is no guarantee, whereas + # sys.modules provides one. is_reload = name in sys.modules for finder in sys.meta_path: with _ImportLockContext(): - loader = finder.find_module(name, path) - if loader is not None: - # The parent import may have already imported this module. - if is_reload or name not in sys.modules: - return loader + try: + find_spec = finder.find_spec + except AttributeError: + loader = finder.find_module(name, path) + if loader is None: + continue + spec = spec_from_loader(name, loader) else: + spec = find_spec(name, path, target) + if spec is not None: + # The parent import may have already imported this module. + if not is_reload and name in sys.modules: + module = sys.modules[name] try: - return sys.modules[name].__loader__ + __spec__ = module.__spec__ except AttributeError: - return loader + # We use the found spec since that is the one that + # we would have used if the parent module hadn't + # beaten us to the punch. + return spec + else: + if __spec__ is None: + return spec + else: + return __spec__ + else: + return spec else: return None @@ -1566,54 +2125,28 @@ def _find_and_load_unlocked(name, import_): # Crazy side-effects! if name in sys.modules: return sys.modules[name] - # Backwards-compatibility; be nicer to skip the dict lookup. parent_module = sys.modules[parent] try: path = parent_module.__path__ except AttributeError: msg = (_ERR_MSG + '; {} is not a package').format(name, parent) raise ImportError(msg, name=name) - loader = _find_module(name, path) - if loader is None: + spec = _find_spec(name, path) + if spec is None: raise ImportError(_ERR_MSG.format(name), name=name) - elif name not in sys.modules: - # The parent import may have already imported this module. - loader.load_module(name) - _verbose_message('import {!r} # {!r}', name, loader) - # Backwards-compatibility; be nicer to skip the dict lookup. - module = sys.modules[name] + else: + module = _SpecMethods(spec)._load_unlocked() if parent: # Set the module as an attribute on its parent. parent_module = sys.modules[parent] setattr(parent_module, name.rpartition('.')[2], module) - # Set __package__ if the loader did not. - if getattr(module, '__package__', None) is None: - try: - module.__package__ = module.__name__ - if not hasattr(module, '__path__'): - module.__package__ = module.__package__.rpartition('.')[0] - except AttributeError: - pass - # Set loader if need be. - if getattr(module, '__loader__', None) is None: - try: - module.__loader__ = loader - except AttributeError: - pass return module def _find_and_load(name, import_): """Find and load the module, and release the import lock.""" - try: - lock = _get_module_lock(name) - finally: - _imp.release_lock() - lock.acquire() - try: + with _ModuleLockManager(name): return _find_and_load_unlocked(name, import_) - finally: - lock.release() def _gcd_import(name, package=None, level=0): @@ -1733,6 +2266,11 @@ def __import__(name, globals=None, locals=None, fromlist=(), level=0): return _handle_fromlist(module, fromlist, _gcd_import) +def _builtin_from_name(name): + spec = BuiltinImporter.find_spec(name) + methods = _SpecMethods(spec) + return methods._load_unlocked() + def _setup(sys_module, _imp_module): """Setup importlib by importing needed built-in modules and injecting them @@ -1751,23 +2289,30 @@ def _setup(sys_module, _imp_module): else: BYTECODE_SUFFIXES = DEBUG_BYTECODE_SUFFIXES + # Set up the spec for existing builtin/frozen modules. module_type = type(sys) for name, module in sys.modules.items(): if isinstance(module, module_type): - if getattr(module, '__loader__', None) is None: - if name in sys.builtin_module_names: - module.__loader__ = BuiltinImporter - elif _imp.is_frozen(name): - module.__loader__ = FrozenImporter + if name in sys.builtin_module_names: + loader = BuiltinImporter + elif _imp.is_frozen(name): + loader = FrozenImporter + else: + continue + spec = _spec_from_module(module, loader) + methods = _SpecMethods(spec) + methods.init_module_attrs(module) + # Directly load built-in modules needed during bootstrap. self_module = sys.modules[__name__] for builtin_name in ('_io', '_warnings', 'builtins', 'marshal'): if builtin_name not in sys.modules: - builtin_module = BuiltinImporter.load_module(builtin_name) + builtin_module = _builtin_from_name(builtin_name) else: builtin_module = sys.modules[builtin_name] setattr(self_module, builtin_name, builtin_module) + # Directly load the os module (needed during bootstrap). os_details = ('posix', ['/']), ('nt', ['\\', '/']) for builtin_os, path_separators in os_details: # Assumption made in _path_join() @@ -1778,29 +2323,33 @@ def _setup(sys_module, _imp_module): break else: try: - os_module = BuiltinImporter.load_module(builtin_os) + os_module = _builtin_from_name(builtin_os) break except ImportError: continue else: raise ImportError('importlib requires posix or nt') + setattr(self_module, '_os', os_module) + setattr(self_module, 'path_sep', path_sep) + setattr(self_module, 'path_separators', ''.join(path_separators)) + # Directly load the _thread module (needed during bootstrap). try: - thread_module = BuiltinImporter.load_module('_thread') + thread_module = _builtin_from_name('_thread') except ImportError: # Python was built without threads thread_module = None - weakref_module = BuiltinImporter.load_module('_weakref') + setattr(self_module, '_thread', thread_module) + + # Directly load the _weakref module (needed during bootstrap). + weakref_module = _builtin_from_name('_weakref') + setattr(self_module, '_weakref', weakref_module) + # Directly load the winreg module (needed during bootstrap). if builtin_os == 'nt': - winreg_module = BuiltinImporter.load_module('winreg') + winreg_module = _builtin_from_name('winreg') setattr(self_module, '_winreg', winreg_module) - setattr(self_module, '_os', os_module) - setattr(self_module, '_thread', thread_module) - setattr(self_module, '_weakref', weakref_module) - setattr(self_module, 'path_sep', path_sep) - setattr(self_module, 'path_separators', ''.join(path_separators)) # Constants setattr(self_module, '_relax_case', _make_relax_case()) EXTENSION_SUFFIXES.extend(_imp.extension_suffixes()) diff --git a/Lib/importlib/abc.py b/Lib/importlib/abc.py index 01de67d..3995ff2 100644 --- a/Lib/importlib/abc.py +++ b/Lib/importlib/abc.py @@ -40,12 +40,18 @@ class MetaPathFinder(Finder): """Abstract base class for import finders on sys.meta_path.""" - @abc.abstractmethod + # We don't define find_spec() here since that would break + # hasattr checks we do to support backward compatibility. + + # XXX Deprecate def find_module(self, fullname, path): - """Abstract method which, when implemented, should find a module. - The fullname is a str and the path is a list of strings or None. - Returns a Loader object or None. + """Return a loader for the module. + + If no module is found, return None. The fullname is a str and + the path is a list of strings or None. + """ + return None def invalidate_caches(self): """An optional method for clearing the finder's cache, if any. @@ -60,17 +66,25 @@ class PathEntryFinder(Finder): """Abstract base class for path entry finders used by PathFinder.""" - @abc.abstractmethod + # We don't define find_spec() here since that would break + # hasattr checks we do to support backward compatibility. + + # XXX Deprecate. def find_loader(self, fullname): - """Abstract method which, when implemented, returns a module loader or - a possible part of a namespace. - The fullname is a str. Returns a 2-tuple of (Loader, portion) where - portion is a sequence of file system locations contributing to part of - a namespace package. The sequence may be empty and the loader may be - None. + """Return (loader, namespace portion) for the path entry. + + The fullname is a str. The namespace portion is a sequence of + path entries contributing to part of a namespace package. The + sequence may be empty. If loader is not None, the portion will + be ignored. + + The portion will be discarded if another path entry finder + locates the module as a normal module or package. + """ return None, [] + # XXX Deprecate. find_module = _bootstrap._find_module_shim def invalidate_caches(self): @@ -83,35 +97,47 @@ _register(PathEntryFinder, machinery.FileFinder) class Loader(metaclass=abc.ABCMeta): - """Abstract base class for import loaders. + """Abstract base class for import loaders.""" - The optional method module_repr(module) may be defined to provide a - repr for a module when appropriate (see PEP 420). The __repr__() method on - the module type will use the method as appropriate. + def create_module(self, spec): + """Return a module to initialize and into which to load. - """ + This method should raise ImportError if anything prevents it + from creating a new module. It may return None to indicate + that the spec should create the new module. - @abc.abstractmethod + create_module() is optional. + + """ + # By default, defer to _SpecMethods.create() for the new module. + return None + + # We don't define exec_module() here since that would break + # hasattr checks we do to support backward compatibility. + + # XXX Deprecate. def load_module(self, fullname): - """Abstract method which when implemented should load a module. - The fullname is a str. + """Return the loaded module. + + The module must be added to sys.modules and have import-related + attributes set properly. The fullname is a str. ImportError is raised on failure. + """ raise ImportError + # XXX Deprecate. def module_repr(self, module): """Return a module's repr. Used by the module type when the method does not raise NotImplementedError. + """ + # The exception will cause ModuleType.__repr__ to ignore this method. raise NotImplementedError - def init_module_attrs(self, module): - """Set the module's __loader__ attribute.""" - module.__loader__ = self - class ResourceLoader(Loader): @@ -138,12 +164,11 @@ class InspectLoader(Loader): """ - @abc.abstractmethod def is_package(self, fullname): - """Abstract method which when implemented should return whether the + """Optional method which when implemented should return whether the module is a package. The fullname is a str. Returns a bool. - Raises ImportError is the module cannot be found. + Raises ImportError if the module cannot be found. """ raise ImportError @@ -176,19 +201,10 @@ class InspectLoader(Loader): argument should be where the data was retrieved (when applicable).""" return compile(data, path, 'exec', dont_inherit=True) - def init_module_attrs(self, module): - """Initialize the __loader__ and __package__ attributes of the module. - - The name of the module is gleaned from module.__name__. The __package__ - attribute is set based on self.is_package(). - """ - super().init_module_attrs(module) - _bootstrap._init_package_attrs(self, module) - + exec_module = _bootstrap._LoaderBasics.exec_module load_module = _bootstrap._LoaderBasics.load_module -_register(InspectLoader, machinery.BuiltinImporter, machinery.FrozenImporter, - _bootstrap.NamespaceLoader) +_register(InspectLoader, machinery.BuiltinImporter, machinery.FrozenImporter) class ExecutionLoader(InspectLoader): @@ -225,18 +241,6 @@ class ExecutionLoader(InspectLoader): else: return self.source_to_code(source, path) - def init_module_attrs(self, module): - """Initialize the module's attributes. - - It is assumed that the module's name has been set on module.__name__. - It is also assumed that any path returned by self.get_filename() uses - (one of) the operating system's path separator(s) to separate filenames - from directories in order to set __path__ intelligently. - InspectLoader.init_module_attrs() sets __loader__ and __package__. - """ - super().init_module_attrs(module) - _bootstrap._init_file_attrs(self, module) - _register(ExecutionLoader, machinery.ExtensionFileLoader) diff --git a/Lib/importlib/machinery.py b/Lib/importlib/machinery.py index ff826e4..2e1b2d7 100644 --- a/Lib/importlib/machinery.py +++ b/Lib/importlib/machinery.py @@ -5,6 +5,7 @@ import _imp from ._bootstrap import (SOURCE_SUFFIXES, DEBUG_BYTECODE_SUFFIXES, OPTIMIZED_BYTECODE_SUFFIXES, BYTECODE_SUFFIXES, EXTENSION_SUFFIXES) +from ._bootstrap import ModuleSpec from ._bootstrap import BuiltinImporter from ._bootstrap import FrozenImporter from ._bootstrap import WindowsRegistryFinder diff --git a/Lib/importlib/util.py b/Lib/importlib/util.py index 7727f9d..04b1951 100644 --- a/Lib/importlib/util.py +++ b/Lib/importlib/util.py @@ -3,13 +3,14 @@ from ._bootstrap import MAGIC_NUMBER from ._bootstrap import cache_from_source from ._bootstrap import decode_source -from ._bootstrap import module_to_load -from ._bootstrap import set_loader -from ._bootstrap import set_package from ._bootstrap import source_from_cache +from ._bootstrap import spec_from_loader +from ._bootstrap import spec_from_file_location from ._bootstrap import _resolve_name +from contextlib import contextmanager import functools +import sys import warnings @@ -28,6 +29,58 @@ def resolve_name(name, package): return _resolve_name(name[level:], package, level) +@contextmanager +def _module_to_load(name): + is_reload = name in sys.modules + + module = sys.modules.get(name) + if not is_reload: + # This must be done before open() is called as the 'io' module + # implicitly imports 'locale' and would otherwise trigger an + # infinite loop. + module = type(sys)(name) + # This must be done before putting the module in sys.modules + # (otherwise an optimization shortcut in import.c becomes wrong) + module.__initializing__ = True + sys.modules[name] = module + try: + yield module + except Exception: + if not is_reload: + try: + del sys.modules[name] + except KeyError: + pass + finally: + module.__initializing__ = False + + +# XXX deprecate +def set_package(fxn): + """Set __package__ on the returned module.""" + @functools.wraps(fxn) + def set_package_wrapper(*args, **kwargs): + module = fxn(*args, **kwargs) + if getattr(module, '__package__', None) is None: + module.__package__ = module.__name__ + if not hasattr(module, '__path__'): + module.__package__ = module.__package__.rpartition('.')[0] + return module + return set_package_wrapper + + +# XXX deprecate +def set_loader(fxn): + """Set __loader__ on the returned module.""" + @functools.wraps(fxn) + def set_loader_wrapper(self, *args, **kwargs): + module = fxn(self, *args, **kwargs) + if getattr(module, '__loader__', None) is None: + module.__loader__ = self + return module + return set_loader_wrapper + + def module_for_loader(fxn): """Decorator to handle selecting the proper module for loaders. @@ -46,13 +99,11 @@ def module_for_loader(fxn): the second argument. """ - warnings.warn('To make it easier for subclasses, please use ' - 'importlib.util.module_to_load() and ' - 'importlib.abc.Loader.init_module_attrs()', + warnings.warn('The import system now takes care of this automatically.', PendingDeprecationWarning, stacklevel=2) @functools.wraps(fxn) def module_for_loader_wrapper(self, fullname, *args, **kwargs): - with module_to_load(fullname) as module: + with _module_to_load(fullname) as module: module.__loader__ = self try: is_package = self.is_package(fullname) diff --git a/Lib/multiprocessing/spawn.py b/Lib/multiprocessing/spawn.py index 8167454..364b53f 100644 --- a/Lib/multiprocessing/spawn.py +++ b/Lib/multiprocessing/spawn.py @@ -245,14 +245,13 @@ def import_main_path(main_path): # We should not try to load __main__ # since that would execute 'if __name__ == "__main__"' # clauses, potentially causing a psuedo fork bomb. - loader = importlib.find_loader(main_name, path=dirs) main_module = types.ModuleType(main_name) - try: - loader.init_module_attrs(main_module) - except AttributeError: # init_module_attrs is optional - pass + # XXX Use a target of main_module? + spec = importlib.find_spec(main_name, path=dirs) + methods = importlib._bootstrap._SpecMethods(spec) + methods.init_module_attrs(main_module) main_module.__name__ = '__mp_main__' - code = loader.get_code(main_name) + code = spec.loader.get_code(main_name) exec(code, main_module.__dict__) old_main_modules.append(sys.modules['__main__']) diff --git a/Lib/pkgutil.py b/Lib/pkgutil.py index fb9e56e..4682d22 100644 --- a/Lib/pkgutil.py +++ b/Lib/pkgutil.py @@ -430,6 +430,7 @@ def iter_importers(fullname=""): for item in path: yield get_importer(item) + def get_loader(module_or_name): """Get a PEP 302 "loader" object for module_or_name @@ -570,6 +571,7 @@ def extend_path(path, name): return path + def get_data(package, resource): """Get a resource from a package. @@ -592,10 +594,15 @@ def get_data(package, resource): which does not support get_data(), then None is returned. """ - loader = get_loader(package) + spec = importlib.find_spec(package) + if spec is None: + return None + loader = spec.loader if loader is None or not hasattr(loader, 'get_data'): return None - mod = sys.modules.get(package) or loader.load_module(package) + # XXX needs test + mod = (sys.modules.get(package) or + importlib._bootstrap._SpecMethods(spec).load()) if mod is None or not hasattr(mod, '__file__'): return None diff --git a/Lib/pydoc.py b/Lib/pydoc.py index d0240ff..e8127a2 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -167,8 +167,9 @@ def _split_list(s, predicate): def visiblename(name, all=None, obj=None): """Decide whether to show documentation on a variable.""" # Certain special names are redundant or internal. + # XXX Remove __initializing__? if name in {'__author__', '__builtins__', '__cached__', '__credits__', - '__date__', '__doc__', '__file__', '__initializing__', + '__date__', '__doc__', '__file__', '__spec__', '__loader__', '__module__', '__name__', '__package__', '__path__', '__qualname__', '__slots__', '__version__'}: return 0 diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 4c2aec3..5aa4b0a 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -2259,7 +2259,7 @@ order (MRO) for bases """ minstance.b = 2 minstance.a = 1 default_attributes = ['__name__', '__doc__', '__package__', - '__loader__'] + '__loader__', '__spec__'] names = [x for x in dir(minstance) if x not in default_attributes] self.assertEqual(names, ['a', 'b']) diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py deleted file mode 100644 index 4c50cb7..0000000 --- a/Lib/test/test_frozen.py +++ /dev/null @@ -1,77 +0,0 @@ -# Test the frozen module defined in frozen.c. - -from test.support import captured_stdout, run_unittest -import unittest -import sys - -class FrozenTests(unittest.TestCase): - - module_attrs = frozenset(['__builtins__', '__cached__', '__doc__', - '__loader__', '__name__', - '__package__']) - package_attrs = frozenset(list(module_attrs) + ['__path__']) - - def test_frozen(self): - with captured_stdout() as stdout: - try: - import __hello__ - except ImportError as x: - self.fail("import __hello__ failed:" + str(x)) - self.assertEqual(__hello__.initialized, True) - expect = set(self.module_attrs) - expect.add('initialized') - self.assertEqual(set(dir(__hello__)), expect) - self.assertEqual(stdout.getvalue(), 'Hello world!\n') - - with captured_stdout() as stdout: - try: - import __phello__ - except ImportError as x: - self.fail("import __phello__ failed:" + str(x)) - self.assertEqual(__phello__.initialized, True) - expect = set(self.package_attrs) - expect.add('initialized') - if not "__phello__.spam" in sys.modules: - self.assertEqual(set(dir(__phello__)), expect) - else: - expect.add('spam') - self.assertEqual(set(dir(__phello__)), expect) - self.assertEqual(__phello__.__path__, []) - self.assertEqual(stdout.getvalue(), 'Hello world!\n') - - with captured_stdout() as stdout: - try: - import __phello__.spam - except ImportError as x: - self.fail("import __phello__.spam failed:" + str(x)) - self.assertEqual(__phello__.spam.initialized, True) - spam_expect = set(self.module_attrs) - spam_expect.add('initialized') - self.assertEqual(set(dir(__phello__.spam)), spam_expect) - phello_expect = set(self.package_attrs) - phello_expect.add('initialized') - phello_expect.add('spam') - self.assertEqual(set(dir(__phello__)), phello_expect) - self.assertEqual(stdout.getvalue(), 'Hello world!\n') - - try: - import __phello__.foo - except ImportError: - pass - else: - self.fail("import __phello__.foo should have failed") - - try: - import __phello__.foo - except ImportError: - pass - else: - self.fail("import __phello__.foo should have failed") - - del sys.modules['__hello__'] - del sys.modules['__phello__'] - del sys.modules['__phello__.spam'] - - -if __name__ == "__main__": - unittest.main() diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index ae8e160..bda1541 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -1036,11 +1036,14 @@ class ImportTracebackTests(unittest.TestCase): # away from the traceback. self.create_module("foo", "") importlib = sys.modules['_frozen_importlib'] - old_load_module = importlib.SourceLoader.load_module + if 'load_module' in vars(importlib.SourceLoader): + old_exec_module = importlib.SourceLoader.exec_module + else: + old_exec_module = None try: - def load_module(*args): + def exec_module(*args): 1/0 - importlib.SourceLoader.load_module = load_module + importlib.SourceLoader.exec_module = exec_module try: import foo except ZeroDivisionError as e: @@ -1049,7 +1052,10 @@ class ImportTracebackTests(unittest.TestCase): self.fail("ZeroDivisionError should have been raised") self.assert_traceback(tb, [__file__, '') + self.assertIsNone(spec) + +Frozen_FindSpecTests, Source_FindSpecTests = util.test_both(FindSpecTests, + machinery=machinery) + + class FinderTests(abc.FinderTests): """Test finding frozen modules.""" @@ -27,13 +62,11 @@ class FinderTests(abc.FinderTests): loader = self.find('__phello__.spam', ['__phello__']) self.assertTrue(hasattr(loader, 'load_module')) - def test_package_in_package(self): - # No frozen package within another package to test with. - pass + # No frozen package within another package to test with. + test_package_in_package = None - def test_package_over_module(self): - # No easy way to test. - pass + # No easy way to test. + test_package_over_module = None def test_failure(self): loader = self.find('') diff --git a/Lib/test/test_importlib/frozen/test_loader.py b/Lib/test/test_importlib/frozen/test_loader.py index be8dc3c..2abbe92 100644 --- a/Lib/test/test_importlib/frozen/test_loader.py +++ b/Lib/test/test_importlib/frozen/test_loader.py @@ -3,9 +3,81 @@ from .. import util machinery = util.import_importlib('importlib.machinery') -import unittest + +import sys from test.support import captured_stdout import types +import unittest + + +class ExecModuleTests(abc.LoaderTests): + + def exec_module(self, name): + with util.uncache(name), captured_stdout() as stdout: + spec = self.machinery.ModuleSpec( + name, self.machinery.FrozenImporter, origin='frozen', + is_package=self.machinery.FrozenImporter.is_package(name)) + module = types.ModuleType(name) + module.__spec__ = spec + assert not hasattr(module, 'initialized') + self.machinery.FrozenImporter.exec_module(module) + self.assertTrue(module.initialized) + self.assertTrue(hasattr(module, '__spec__')) + self.assertEqual(module.__spec__.origin, 'frozen') + return module, stdout.getvalue() + + def test_module(self): + name = '__hello__' + module, output = self.exec_module(name) + check = {'__name__': name} + for attr, value in check.items(): + self.assertEqual(getattr(module, attr), value) + self.assertEqual(output, 'Hello world!\n') + self.assertTrue(hasattr(module, '__spec__')) + + def test_package(self): + name = '__phello__' + module, output = self.exec_module(name) + check = {'__name__': name} + for attr, value in check.items(): + attr_value = getattr(module, attr) + self.assertEqual(attr_value, value, + 'for {name}.{attr}, {given!r} != {expected!r}'.format( + name=name, attr=attr, given=attr_value, + expected=value)) + self.assertEqual(output, 'Hello world!\n') + + def test_lacking_parent(self): + name = '__phello__.spam' + with util.uncache('__phello__'): + module, output = self.exec_module(name) + check = {'__name__': name} + for attr, value in check.items(): + attr_value = getattr(module, attr) + self.assertEqual(attr_value, value, + 'for {name}.{attr}, {given} != {expected!r}'.format( + name=name, attr=attr, given=attr_value, + expected=value)) + self.assertEqual(output, 'Hello world!\n') + + + def test_module_repr(self): + name = '__hello__' + module, output = self.exec_module(name) + self.assertEqual(repr(module), + "") + + # No way to trigger an error in a frozen module. + test_state_after_failure = None + + def test_unloadable(self): + assert self.machinery.FrozenImporter.find_module('_not_real') is None + with self.assertRaises(ImportError) as cm: + self.exec_module('_not_real') + self.assertEqual(cm.exception.name, '_not_real') + +Frozen_ExecModuleTests, Source_ExecModuleTests = util.test_both(ExecModuleTests, + machinery=machinery) class LoaderTests(abc.LoaderTests): @@ -68,9 +140,8 @@ class LoaderTests(abc.LoaderTests): self.assertEqual(repr(module), "") - def test_state_after_failure(self): - # No way to trigger an error in a frozen module. - pass + # No way to trigger an error in a frozen module. + test_state_after_failure = None def test_unloadable(self): assert self.machinery.FrozenImporter.find_module('_not_real') is None diff --git a/Lib/test/test_importlib/import_/test_meta_path.py b/Lib/test/test_importlib/import_/test_meta_path.py index 74afd1b..a56253d 100644 --- a/Lib/test/test_importlib/import_/test_meta_path.py +++ b/Lib/test/test_importlib/import_/test_meta_path.py @@ -46,8 +46,8 @@ class CallingOrder: with util.import_state(meta_path=[]): with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') - self.assertIsNone(importlib._bootstrap._find_module('nothing', - None)) + self.assertIsNone(importlib._bootstrap._find_spec('nothing', + None)) self.assertEqual(len(w), 1) self.assertTrue(issubclass(w[-1].category, ImportWarning)) diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py index 979a481..ba8d605 100644 --- a/Lib/test/test_importlib/test_abc.py +++ b/Lib/test/test_importlib/test_abc.py @@ -284,22 +284,6 @@ class ExecutionLoaderDefaultsTests: tests = make_return_value_tests(ExecutionLoader, InspectLoaderDefaultsTests) Frozen_ELDefaultTests, Source_ELDefaultsTests = tests -##### Loader concrete methods ################################################## -class LoaderConcreteMethodTests: - - def test_init_module_attrs(self): - loader = self.LoaderSubclass() - module = types.ModuleType('blah') - loader.init_module_attrs(module) - self.assertEqual(module.__loader__, loader) - - -class Frozen_LoaderConcreateMethodTests(LoaderConcreteMethodTests, unittest.TestCase): - LoaderSubclass = Frozen_L - -class Source_LoaderConcreateMethodTests(LoaderConcreteMethodTests, unittest.TestCase): - LoaderSubclass = Source_L - ##### InspectLoader concrete methods ########################################### class InspectLoaderSourceToCodeTests: @@ -385,60 +369,6 @@ class Source_ILGetCodeTests(InspectLoaderGetCodeTests, unittest.TestCase): InspectLoaderSubclass = Source_IL -class InspectLoaderInitModuleTests: - - def mock_is_package(self, return_value): - return mock.patch.object(self.InspectLoaderSubclass, 'is_package', - return_value=return_value) - - def init_module_attrs(self, name): - loader = self.InspectLoaderSubclass() - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertEqual(module.__loader__, loader) - return module - - def test_package(self): - # If a package, then __package__ == __name__, __path__ == [] - with self.mock_is_package(True): - name = 'blah' - module = self.init_module_attrs(name) - self.assertEqual(module.__package__, name) - self.assertEqual(module.__path__, []) - - def test_toplevel(self): - # If a module is top-level, __package__ == '' - with self.mock_is_package(False): - name = 'blah' - module = self.init_module_attrs(name) - self.assertEqual(module.__package__, '') - - def test_submodule(self): - # If a module is contained within a package then set __package__ to the - # package name. - with self.mock_is_package(False): - name = 'pkg.mod' - module = self.init_module_attrs(name) - self.assertEqual(module.__package__, 'pkg') - - def test_is_package_ImportError(self): - # If is_package() raises ImportError, __package__ should be None and - # __path__ should not be set. - with self.mock_is_package(False) as mocked_method: - mocked_method.side_effect = ImportError - name = 'mod' - module = self.init_module_attrs(name) - self.assertIsNone(module.__package__) - self.assertFalse(hasattr(module, '__path__')) - - -class Frozen_ILInitModuleTests(InspectLoaderInitModuleTests, unittest.TestCase): - InspectLoaderSubclass = Frozen_IL - -class Source_ILInitModuleTests(InspectLoaderInitModuleTests, unittest.TestCase): - InspectLoaderSubclass = Source_IL - - class InspectLoaderLoadModuleTests: """Test InspectLoader.load_module().""" @@ -550,80 +480,6 @@ class Source_ELGetCodeTests(ExecutionLoaderGetCodeTests, unittest.TestCase): ExecutionLoaderSubclass = Source_EL -class ExecutionLoaderInitModuleTests: - - def mock_is_package(self, return_value): - return mock.patch.object(self.ExecutionLoaderSubclass, 'is_package', - return_value=return_value) - - @contextlib.contextmanager - def mock_methods(self, is_package, filename): - is_package_manager = self.mock_is_package(is_package) - get_filename_manager = mock.patch.object(self.ExecutionLoaderSubclass, - 'get_filename', return_value=filename) - with is_package_manager as mock_is_package: - with get_filename_manager as mock_get_filename: - yield {'is_package': mock_is_package, - 'get_filename': mock_get_filename} - - def test_toplevel(self): - # Verify __loader__, __file__, and __package__; no __path__. - name = 'blah' - path = os.path.join('some', 'path', '{}.py'.format(name)) - with self.mock_methods(False, path): - loader = self.ExecutionLoaderSubclass() - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertIs(module.__loader__, loader) - self.assertEqual(module.__file__, path) - self.assertEqual(module.__package__, '') - self.assertFalse(hasattr(module, '__path__')) - - def test_package(self): - # Verify __loader__, __file__, __package__, and __path__. - name = 'pkg' - path = os.path.join('some', 'pkg', '__init__.py') - with self.mock_methods(True, path): - loader = self.ExecutionLoaderSubclass() - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertIs(module.__loader__, loader) - self.assertEqual(module.__file__, path) - self.assertEqual(module.__package__, 'pkg') - self.assertEqual(module.__path__, [os.path.dirname(path)]) - - def test_submodule(self): - # Verify __package__ and not __path__; test_toplevel() takes care of - # other attributes. - name = 'pkg.submodule' - path = os.path.join('some', 'pkg', 'submodule.py') - with self.mock_methods(False, path): - loader = self.ExecutionLoaderSubclass() - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertEqual(module.__package__, 'pkg') - self.assertEqual(module.__file__, path) - self.assertFalse(hasattr(module, '__path__')) - - def test_get_filename_ImportError(self): - # If get_filename() raises ImportError, don't set __file__. - name = 'blah' - path = 'blah.py' - with self.mock_methods(False, path) as mocked_methods: - mocked_methods['get_filename'].side_effect = ImportError - loader = self.ExecutionLoaderSubclass() - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertFalse(hasattr(module, '__file__')) - - -class Frozen_ELInitModuleTests(ExecutionLoaderInitModuleTests, unittest.TestCase): - ExecutionLoaderSubclass = Frozen_EL - -class Source_ELInitModuleTests(ExecutionLoaderInitModuleTests, unittest.TestCase): - ExecutionLoaderSubclass = Source_EL - - ##### SourceLoader concrete methods ############################################ class SourceLoader: @@ -952,58 +808,5 @@ class Source_SourceOnlyLGetSourceTests(SourceLoaderGetSourceTests, unittest.Test SourceOnlyLoaderMock = Source_SourceOnlyL -class SourceLoaderInitModuleAttrTests: - - """Tests for importlib.abc.SourceLoader.init_module_attrs().""" - - def test_init_module_attrs(self): - # If __file__ set, __cached__ == importlib.util.cached_from_source(__file__). - name = 'blah' - path = 'blah.py' - loader = self.SourceOnlyLoaderMock(path) - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertEqual(module.__loader__, loader) - self.assertEqual(module.__package__, '') - self.assertEqual(module.__file__, path) - self.assertEqual(module.__cached__, self.util.cache_from_source(path)) - - def test_no_get_filename(self): - # No __file__, no __cached__. - with mock.patch.object(self.SourceOnlyLoaderMock, 'get_filename') as mocked: - mocked.side_effect = ImportError - name = 'blah' - loader = self.SourceOnlyLoaderMock('blah.py') - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertFalse(hasattr(module, '__file__')) - self.assertFalse(hasattr(module, '__cached__')) - - -class Frozen_SLInitModuleAttrTests(SourceLoaderInitModuleAttrTests, unittest.TestCase): - SourceOnlyLoaderMock = Frozen_SourceOnlyL - util = frozen_util - - # Difficult to test under source thanks to cross-module mocking needs. - @mock.patch('importlib._bootstrap.cache_from_source') - def test_cache_from_source_NotImplementedError(self, mock_cache_from_source): - # If importlib.util.cache_from_source() raises NotImplementedError don't set - # __cached__. - mock_cache_from_source.side_effect = NotImplementedError - name = 'blah' - path = 'blah.py' - loader = self.SourceOnlyLoaderMock(path) - module = types.ModuleType(name) - loader.init_module_attrs(module) - self.assertEqual(module.__file__, path) - self.assertFalse(hasattr(module, '__cached__')) - - -class Source_SLInitModuleAttrTests(SourceLoaderInitModuleAttrTests, unittest.TestCase): - SourceOnlyLoaderMock = Source_SourceOnlyL - util = source_util - - - if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py index 5126634..c6c2d47 100644 --- a/Lib/test/test_importlib/test_api.py +++ b/Lib/test/test_importlib/test_api.py @@ -165,6 +165,96 @@ class Source_FindLoaderTests(FindLoaderTests, unittest.TestCase): init = source_init +class FindSpecTests: + + class FakeMetaFinder: + @staticmethod + def find_spec(name, path=None, target=None): return name, path, target + + def test_sys_modules(self): + name = 'some_mod' + with util.uncache(name): + module = types.ModuleType(name) + loader = 'a loader!' + spec = self.machinery.ModuleSpec(name, loader) + module.__loader__ = loader + module.__spec__ = spec + sys.modules[name] = module + found = self.init.find_spec(name) + self.assertEqual(found, spec) + + def test_sys_modules_without___loader__(self): + name = 'some_mod' + with util.uncache(name): + module = types.ModuleType(name) + del module.__loader__ + loader = 'a loader!' + spec = self.machinery.ModuleSpec(name, loader) + module.__spec__ = spec + sys.modules[name] = module + found = self.init.find_spec(name) + self.assertEqual(found, spec) + + def test_sys_modules_spec_is_None(self): + name = 'some_mod' + with util.uncache(name): + module = types.ModuleType(name) + module.__spec__ = None + sys.modules[name] = module + with self.assertRaises(ValueError): + self.init.find_spec(name) + + def test_sys_modules_loader_is_None(self): + name = 'some_mod' + with util.uncache(name): + module = types.ModuleType(name) + spec = self.machinery.ModuleSpec(name, None) + module.__spec__ = spec + sys.modules[name] = module + found = self.init.find_spec(name) + self.assertEqual(found, spec) + + def test_sys_modules_spec_is_not_set(self): + name = 'some_mod' + with util.uncache(name): + module = types.ModuleType(name) + try: + del module.__spec__ + except AttributeError: + pass + sys.modules[name] = module + with self.assertRaises(ValueError): + self.init.find_spec(name) + + def test_success(self): + name = 'some_mod' + with util.uncache(name): + with util.import_state(meta_path=[self.FakeMetaFinder]): + self.assertEqual((name, None, None), + self.init.find_spec(name)) + + def test_success_path(self): + # Searching on a path should work. + name = 'some_mod' + path = 'path to some place' + with util.uncache(name): + with util.import_state(meta_path=[self.FakeMetaFinder]): + self.assertEqual((name, path, None), + self.init.find_spec(name, path)) + + def test_nothing(self): + # None is returned upon failure to find a loader. + self.assertIsNone(self.init.find_spec('nevergoingtofindthismodule')) + +class Frozen_FindSpecTests(FindSpecTests, unittest.TestCase): + init = frozen_init + machinery = frozen_machinery + +class Source_FindSpecTests(FindSpecTests, unittest.TestCase): + init = source_init + machinery = source_machinery + + class ReloadTests: """Test module reloading for builtin and extension modules.""" @@ -219,6 +309,7 @@ class ReloadTests: with support.temp_cwd(None) as cwd: with util.uncache('spam'): with support.DirsOnSysPath(cwd): + # Start as a plain module. self.init.invalidate_caches() path = os.path.join(cwd, name + '.py') cached = self.util.cache_from_source(path) @@ -232,11 +323,14 @@ class ReloadTests: support.create_empty_file(path) module = self.init.import_module(name) ns = vars(module) - del ns['__initializing__'] loader = ns.pop('__loader__') + spec = ns.pop('__spec__') + self.assertEqual(spec.name, name) + self.assertEqual(spec.loader, loader) self.assertEqual(loader.path, path) self.assertEqual(ns, expected) + # Change to a package. self.init.invalidate_caches() init_path = os.path.join(cwd, name, '__init__.py') cached = self.util.cache_from_source(init_path) @@ -252,18 +346,21 @@ class ReloadTests: os.rename(path, init_path) reloaded = self.init.reload(module) ns = vars(reloaded) - del ns['__initializing__'] loader = ns.pop('__loader__') + spec = ns.pop('__spec__') + self.assertEqual(spec.name, name) + self.assertEqual(spec.loader, loader) self.assertIs(reloaded, module) self.assertEqual(loader.path, init_path) + self.maxDiff = None self.assertEqual(ns, expected) def test_reload_namespace_changed(self): - self.maxDiff = None name = 'spam' with support.temp_cwd(None) as cwd: with util.uncache('spam'): with support.DirsOnSysPath(cwd): + # Start as a namespace package. self.init.invalidate_caches() bad_path = os.path.join(cwd, name, '__init.py') cached = self.util.cache_from_source(bad_path) @@ -276,9 +373,12 @@ class ReloadTests: init_file.write('eggs = None') module = self.init.import_module(name) ns = vars(module) - del ns['__initializing__'] loader = ns.pop('__loader__') path = ns.pop('__path__') + spec = ns.pop('__spec__') + self.assertEqual(spec.name, name) + self.assertIs(spec.loader, None) + self.assertIsNot(loader, None) self.assertEqual(set(path), set([os.path.dirname(bad_path)])) with self.assertRaises(AttributeError): @@ -286,6 +386,7 @@ class ReloadTests: loader.path self.assertEqual(ns, expected) + # Change to a regular package. self.init.invalidate_caches() init_path = os.path.join(cwd, name, '__init__.py') cached = self.util.cache_from_source(init_path) @@ -301,8 +402,10 @@ class ReloadTests: os.rename(bad_path, init_path) reloaded = self.init.reload(module) ns = vars(reloaded) - del ns['__initializing__'] loader = ns.pop('__loader__') + spec = ns.pop('__spec__') + self.assertEqual(spec.name, name) + self.assertEqual(spec.loader, loader) self.assertIs(reloaded, module) self.assertEqual(loader.path, init_path) self.assertEqual(ns, expected) @@ -371,12 +474,23 @@ class StartupTests: # Issue #17098: all modules should have __loader__ defined. for name, module in sys.modules.items(): if isinstance(module, types.ModuleType): - self.assertTrue(hasattr(module, '__loader__'), - '{!r} lacks a __loader__ attribute'.format(name)) - if self.machinery.BuiltinImporter.find_module(name): - self.assertIsNot(module.__loader__, None) - elif self.machinery.FrozenImporter.find_module(name): - self.assertIsNot(module.__loader__, None) + with self.subTest(name=name): + self.assertTrue(hasattr(module, '__loader__'), + '{!r} lacks a __loader__ attribute'.format(name)) + if self.machinery.BuiltinImporter.find_module(name): + self.assertIsNot(module.__loader__, None) + elif self.machinery.FrozenImporter.find_module(name): + self.assertIsNot(module.__loader__, None) + + def test_everyone_has___spec__(self): + for name, module in sys.modules.items(): + if isinstance(module, types.ModuleType): + with self.subTest(name=name): + self.assertTrue(hasattr(module, '__spec__')) + if self.machinery.BuiltinImporter.find_module(name): + self.assertIsNot(module.__spec__, None) + elif self.machinery.FrozenImporter.find_module(name): + self.assertIsNot(module.__spec__, None) class Frozen_StartupTests(StartupTests, unittest.TestCase): machinery = frozen_machinery diff --git a/Lib/test/test_importlib/test_spec.py b/Lib/test/test_importlib/test_spec.py new file mode 100644 index 0000000..e4ef39f --- /dev/null +++ b/Lib/test/test_importlib/test_spec.py @@ -0,0 +1,968 @@ +from . import util + +frozen_init, source_init = util.import_importlib('importlib') +frozen_bootstrap = frozen_init._bootstrap +source_bootstrap = source_init._bootstrap +frozen_machinery, source_machinery = util.import_importlib('importlib.machinery') +frozen_util, source_util = util.import_importlib('importlib.util') + +import os.path +from test.support import CleanImport +import unittest +import sys + + + +class TestLoader: + + def __init__(self, path=None, is_package=None): +# if path: +# if is_package: +# if not path.endswith('.py'): +# path = os.path.join(path, '__init__.py') +# elif is_package is None: +# is_package = path.endswith('__init__.py') + + self.path = path + self.package = is_package + + def __repr__(self): + return '' + + def __getattr__(self, name): + if name == 'get_filename' and self.path is not None: + return self._get_filename + if name == 'is_package': + return self._is_package + raise AttributeError(name) + + def _get_filename(self, name): + return self.path + + def _is_package(self, name): + return self.package + + +class NewLoader(TestLoader): + + EGGS = 1 + + def exec_module(self, module): + module.eggs = self.EGGS + + +class LegacyLoader(TestLoader): + + HAM = -1 + + @frozen_util.module_for_loader + def load_module(self, module): + module.ham = self.HAM + return module + + +class ModuleSpecTests: + + def setUp(self): + self.name = 'spam' + self.path = 'spam.py' + self.cached = self.util.cache_from_source(self.path) + self.loader = TestLoader() + self.spec = self.machinery.ModuleSpec(self.name, self.loader) + self.loc_spec = self.machinery.ModuleSpec(self.name, self.loader, + origin=self.path) + self.loc_spec._set_fileattr = True + + def test_default(self): + spec = self.machinery.ModuleSpec(self.name, self.loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_default_no_loader(self): + spec = self.machinery.ModuleSpec(self.name, None) + + self.assertEqual(spec.name, self.name) + self.assertIs(spec.loader, None) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_default_is_package_false(self): + spec = self.machinery.ModuleSpec(self.name, self.loader, + is_package=False) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_default_is_package_true(self): + spec = self.machinery.ModuleSpec(self.name, self.loader, + is_package=True) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, []) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_equality(self): + other = type(sys.implementation)(name=self.name, + loader=self.loader, + origin=None, + submodule_search_locations=None, + has_location=False, + cached=None, + ) + + self.assertTrue(self.spec == other) + + def test_equality_location(self): + other = type(sys.implementation)(name=self.name, + loader=self.loader, + origin=self.path, + submodule_search_locations=None, + has_location=True, + cached=self.cached, + ) + + self.assertEqual(self.loc_spec, other) + + def test_inequality(self): + other = type(sys.implementation)(name='ham', + loader=self.loader, + origin=None, + submodule_search_locations=None, + has_location=False, + cached=None, + ) + + self.assertNotEqual(self.spec, other) + + def test_inequality_incomplete(self): + other = type(sys.implementation)(name=self.name, + loader=self.loader, + ) + + self.assertNotEqual(self.spec, other) + + def test_package(self): + spec = self.machinery.ModuleSpec('spam.eggs', self.loader) + + self.assertEqual(spec.parent, 'spam') + + def test_package_is_package(self): + spec = self.machinery.ModuleSpec('spam.eggs', self.loader, + is_package=True) + + self.assertEqual(spec.parent, 'spam.eggs') + + # cached + + def test_cached_set(self): + before = self.spec.cached + self.spec.cached = 'there' + after = self.spec.cached + + self.assertIs(before, None) + self.assertEqual(after, 'there') + + def test_cached_no_origin(self): + spec = self.machinery.ModuleSpec(self.name, self.loader) + + self.assertIs(spec.cached, None) + + def test_cached_with_origin_not_location(self): + spec = self.machinery.ModuleSpec(self.name, self.loader, + origin=self.path) + + self.assertIs(spec.cached, None) + + def test_cached_source(self): + expected = self.util.cache_from_source(self.path) + + self.assertEqual(self.loc_spec.cached, expected) + + def test_cached_source_unknown_suffix(self): + self.loc_spec.origin = 'spam.spamspamspam' + + self.assertIs(self.loc_spec.cached, None) + + def test_cached_source_missing_cache_tag(self): + original = sys.implementation.cache_tag + sys.implementation.cache_tag = None + try: + cached = self.loc_spec.cached + finally: + sys.implementation.cache_tag = original + + self.assertIs(cached, None) + + def test_cached_sourceless(self): + self.loc_spec.origin = 'spam.pyc' + + self.assertEqual(self.loc_spec.cached, 'spam.pyc') + + +class Frozen_ModuleSpecTests(ModuleSpecTests, unittest.TestCase): + util = frozen_util + machinery = frozen_machinery + + +class Source_ModuleSpecTests(ModuleSpecTests, unittest.TestCase): + util = source_util + machinery = source_machinery + + +class ModuleSpecMethodsTests: + + def setUp(self): + self.name = 'spam' + self.path = 'spam.py' + self.cached = self.util.cache_from_source(self.path) + self.loader = TestLoader() + self.spec = self.machinery.ModuleSpec(self.name, self.loader) + self.loc_spec = self.machinery.ModuleSpec(self.name, self.loader, + origin=self.path) + self.loc_spec._set_fileattr = True + + # init_module_attrs + + def test_init_module_attrs(self): + module = type(sys)(self.name) + spec = self.machinery.ModuleSpec(self.name, self.loader) + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertEqual(module.__name__, spec.name) + self.assertIs(module.__loader__, spec.loader) + self.assertEqual(module.__package__, spec.parent) + self.assertIs(module.__spec__, spec) + self.assertFalse(hasattr(module, '__path__')) + self.assertFalse(hasattr(module, '__file__')) + self.assertFalse(hasattr(module, '__cached__')) + + def test_init_module_attrs_package(self): + module = type(sys)(self.name) + spec = self.machinery.ModuleSpec(self.name, self.loader) + spec.submodule_search_locations = ['spam', 'ham'] + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertEqual(module.__name__, spec.name) + self.assertIs(module.__loader__, spec.loader) + self.assertEqual(module.__package__, spec.parent) + self.assertIs(module.__spec__, spec) + self.assertIs(module.__path__, spec.submodule_search_locations) + self.assertFalse(hasattr(module, '__file__')) + self.assertFalse(hasattr(module, '__cached__')) + + def test_init_module_attrs_location(self): + module = type(sys)(self.name) + spec = self.loc_spec + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertEqual(module.__name__, spec.name) + self.assertIs(module.__loader__, spec.loader) + self.assertEqual(module.__package__, spec.parent) + self.assertIs(module.__spec__, spec) + self.assertFalse(hasattr(module, '__path__')) + self.assertEqual(module.__file__, spec.origin) + self.assertEqual(module.__cached__, + self.util.cache_from_source(spec.origin)) + + def test_init_module_attrs_different_name(self): + module = type(sys)('eggs') + spec = self.machinery.ModuleSpec(self.name, self.loader) + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertEqual(module.__name__, spec.name) + + def test_init_module_attrs_different_spec(self): + module = type(sys)(self.name) + module.__spec__ = self.machinery.ModuleSpec('eggs', object()) + spec = self.machinery.ModuleSpec(self.name, self.loader) + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertEqual(module.__name__, spec.name) + self.assertIs(module.__loader__, spec.loader) + self.assertEqual(module.__package__, spec.parent) + self.assertIs(module.__spec__, spec) + + def test_init_module_attrs_already_set(self): + module = type(sys)('ham.eggs') + module.__loader__ = object() + module.__package__ = 'ham' + module.__path__ = ['eggs'] + module.__file__ = 'ham/eggs/__init__.py' + module.__cached__ = self.util.cache_from_source(module.__file__) + original = vars(module).copy() + spec = self.loc_spec + spec.submodule_search_locations = [''] + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertIs(module.__loader__, original['__loader__']) + self.assertEqual(module.__package__, original['__package__']) + self.assertIs(module.__path__, original['__path__']) + self.assertEqual(module.__file__, original['__file__']) + self.assertEqual(module.__cached__, original['__cached__']) + + def test_init_module_attrs_immutable(self): + module = object() + spec = self.loc_spec + spec.submodule_search_locations = [''] + self.bootstrap._SpecMethods(spec).init_module_attrs(module) + + self.assertFalse(hasattr(module, '__name__')) + self.assertFalse(hasattr(module, '__loader__')) + self.assertFalse(hasattr(module, '__package__')) + self.assertFalse(hasattr(module, '__spec__')) + self.assertFalse(hasattr(module, '__path__')) + self.assertFalse(hasattr(module, '__file__')) + self.assertFalse(hasattr(module, '__cached__')) + + # create() + + def test_create(self): + created = self.bootstrap._SpecMethods(self.spec).create() + + self.assertEqual(created.__name__, self.spec.name) + self.assertIs(created.__loader__, self.spec.loader) + self.assertEqual(created.__package__, self.spec.parent) + self.assertIs(created.__spec__, self.spec) + self.assertFalse(hasattr(created, '__path__')) + self.assertFalse(hasattr(created, '__file__')) + self.assertFalse(hasattr(created, '__cached__')) + + def test_create_from_loader(self): + module = type(sys.implementation)() + class CreatingLoader(TestLoader): + def create_module(self, spec): + return module + self.spec.loader = CreatingLoader() + created = self.bootstrap._SpecMethods(self.spec).create() + + self.assertIs(created, module) + self.assertEqual(created.__name__, self.spec.name) + self.assertIs(created.__loader__, self.spec.loader) + self.assertEqual(created.__package__, self.spec.parent) + self.assertIs(created.__spec__, self.spec) + self.assertFalse(hasattr(created, '__path__')) + self.assertFalse(hasattr(created, '__file__')) + self.assertFalse(hasattr(created, '__cached__')) + + def test_create_from_loader_not_handled(self): + class CreatingLoader(TestLoader): + def create_module(self, spec): + return None + self.spec.loader = CreatingLoader() + created = self.bootstrap._SpecMethods(self.spec).create() + + self.assertEqual(created.__name__, self.spec.name) + self.assertIs(created.__loader__, self.spec.loader) + self.assertEqual(created.__package__, self.spec.parent) + self.assertIs(created.__spec__, self.spec) + self.assertFalse(hasattr(created, '__path__')) + self.assertFalse(hasattr(created, '__file__')) + self.assertFalse(hasattr(created, '__cached__')) + + # exec() + + def test_exec(self): + self.spec.loader = NewLoader() + module = self.bootstrap._SpecMethods(self.spec).create() + sys.modules[self.name] = module + self.assertFalse(hasattr(module, 'eggs')) + self.bootstrap._SpecMethods(self.spec).exec(module) + + self.assertEqual(module.eggs, 1) + + # load() + + def test_load(self): + self.spec.loader = NewLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + installed = sys.modules[self.spec.name] + + self.assertEqual(loaded.eggs, 1) + self.assertIs(loaded, installed) + + def test_load_replaced(self): + replacement = object() + class ReplacingLoader(TestLoader): + def exec_module(self, module): + sys.modules[module.__name__] = replacement + self.spec.loader = ReplacingLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + installed = sys.modules[self.spec.name] + + self.assertIs(loaded, replacement) + self.assertIs(installed, replacement) + + def test_load_failed(self): + class FailedLoader(TestLoader): + def exec_module(self, module): + raise RuntimeError + self.spec.loader = FailedLoader() + with CleanImport(self.spec.name): + with self.assertRaises(RuntimeError): + loaded = self.bootstrap._SpecMethods(self.spec).load() + self.assertNotIn(self.spec.name, sys.modules) + + def test_load_failed_removed(self): + class FailedLoader(TestLoader): + def exec_module(self, module): + del sys.modules[module.__name__] + raise RuntimeError + self.spec.loader = FailedLoader() + with CleanImport(self.spec.name): + with self.assertRaises(RuntimeError): + loaded = self.bootstrap._SpecMethods(self.spec).load() + self.assertNotIn(self.spec.name, sys.modules) + + def test_load_existing(self): + existing = type(sys)('ham') + existing.count = 5 + self.spec.loader = NewLoader() + with CleanImport(self.name): + sys.modules[self.name] = existing + assert self.spec.name == self.name + loaded = self.bootstrap._SpecMethods(self.spec).load() + + self.assertEqual(loaded.eggs, 1) + self.assertFalse(hasattr(loaded, 'ham')) + + def test_load_legacy(self): + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + + self.assertEqual(loaded.ham, -1) + + def test_load_legacy_attributes(self): + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + + self.assertIs(loaded.__loader__, self.spec.loader) + self.assertEqual(loaded.__package__, self.spec.parent) + self.assertIs(loaded.__spec__, self.spec) + + def test_load_legacy_attributes_immutable(self): + module = object() + class ImmutableLoader(TestLoader): + def load_module(self, name): + sys.modules[name] = module + return module + self.spec.loader = ImmutableLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + + self.assertIs(sys.modules[self.spec.name], module) + + # reload() + + def test_reload(self): + self.spec.loader = NewLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + reloaded = self.bootstrap._SpecMethods(self.spec).exec(loaded) + installed = sys.modules[self.spec.name] + + self.assertEqual(loaded.eggs, 1) + self.assertIs(reloaded, loaded) + self.assertIs(installed, loaded) + + def test_reload_modified(self): + self.spec.loader = NewLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + loaded.eggs = 2 + reloaded = self.bootstrap._SpecMethods(self.spec).exec(loaded) + + self.assertEqual(loaded.eggs, 1) + self.assertIs(reloaded, loaded) + + def test_reload_extra_attributes(self): + self.spec.loader = NewLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + loaded.available = False + reloaded = self.bootstrap._SpecMethods(self.spec).exec(loaded) + + self.assertFalse(loaded.available) + self.assertIs(reloaded, loaded) + + def test_reload_init_module_attrs(self): + self.spec.loader = NewLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + loaded.__name__ = 'ham' + del loaded.__loader__ + del loaded.__package__ + del loaded.__spec__ + self.bootstrap._SpecMethods(self.spec).exec(loaded) + + self.assertEqual(loaded.__name__, self.spec.name) + self.assertIs(loaded.__loader__, self.spec.loader) + self.assertEqual(loaded.__package__, self.spec.parent) + self.assertIs(loaded.__spec__, self.spec) + self.assertFalse(hasattr(loaded, '__path__')) + self.assertFalse(hasattr(loaded, '__file__')) + self.assertFalse(hasattr(loaded, '__cached__')) + + def test_reload_legacy(self): + self.spec.loader = LegacyLoader() + with CleanImport(self.spec.name): + loaded = self.bootstrap._SpecMethods(self.spec).load() + reloaded = self.bootstrap._SpecMethods(self.spec).exec(loaded) + installed = sys.modules[self.spec.name] + + self.assertEqual(loaded.ham, -1) + self.assertIs(reloaded, loaded) + self.assertIs(installed, loaded) + + +class Frozen_ModuleSpecMethodsTests(ModuleSpecMethodsTests, unittest.TestCase): + bootstrap = frozen_bootstrap + machinery = frozen_machinery + util = frozen_util + + +class Source_ModuleSpecMethodsTests(ModuleSpecMethodsTests, unittest.TestCase): + bootstrap = source_bootstrap + machinery = source_machinery + util = source_util + + +class ModuleReprTests: + + # XXX Add more tests for repr(module) once ModuleSpec._module_repr() + # is in place? + + def setUp(self): + self.module = type(os)('spam') + self.spec = self.machinery.ModuleSpec('spam', TestLoader()) + + def test_module___loader___module_repr(self): + class Loader: + def module_repr(self, module): + return ''.format(module.__name__) + self.module.__loader__ = Loader() + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, '') + + def test_module___loader___module_repr_bad(self): + class Loader(TestLoader): + def module_repr(self, module): + raise Exception + self.module.__loader__ = Loader() + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, + ')>'.format('spam')) + + def test_module___spec__(self): + origin = 'in a hole, in the ground' + self.spec.origin = origin + self.module.__spec__ = self.spec + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, ''.format('spam', origin)) + + def test_module___spec___location(self): + location = 'in_a_galaxy_far_far_away.py' + self.spec.origin = location + self.spec._set_fileattr = True + self.module.__spec__ = self.spec + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, + ''.format('spam', location)) + + def test_module___spec___no_origin(self): + self.spec.loader = TestLoader() + self.module.__spec__ = self.spec + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, + ')>'.format('spam')) + + def test_module___spec___no_origin_no_loader(self): + self.spec.loader = None + self.module.__spec__ = self.spec + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, ''.format('spam')) + + def test_module_no_name(self): + del self.module.__name__ + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, ''.format('?')) + + def test_module_with_file(self): + filename = 'e/i/e/i/o/spam.py' + self.module.__file__ = filename + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, + ''.format('spam', filename)) + + def test_module_no_file(self): + self.module.__loader__ = TestLoader() + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, + ')>'.format('spam')) + + def test_module_no_file_no_loader(self): + modrepr = self.bootstrap._module_repr(self.module) + + self.assertEqual(modrepr, ''.format('spam')) + + +class Frozen_ModuleReprTests(ModuleReprTests, unittest.TestCase): + bootstrap = frozen_bootstrap + machinery = frozen_machinery + util = frozen_util + + +class Source_ModuleReprTests(ModuleReprTests, unittest.TestCase): + bootstrap = source_bootstrap + machinery = source_machinery + util = source_util + + +class FactoryTests: + + def setUp(self): + self.name = 'spam' + self.path = 'spam.py' + self.cached = self.util.cache_from_source(self.path) + self.loader = TestLoader() + self.fileloader = TestLoader(self.path) + self.pkgloader = TestLoader(self.path, True) + + # spec_from_loader() + + def test_spec_from_loader_default(self): + spec = self.util.spec_from_loader(self.name, self.loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_default_with_bad_is_package(self): + class Loader: + def is_package(self, name): + raise ImportError + loader = Loader() + spec = self.util.spec_from_loader(self.name, loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_origin(self): + origin = 'somewhere over the rainbow' + spec = self.util.spec_from_loader(self.name, self.loader, + origin=origin) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, origin) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_is_package_false(self): + spec = self.util.spec_from_loader(self.name, self.loader, + is_package=False) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_is_package_true(self): + spec = self.util.spec_from_loader(self.name, self.loader, + is_package=True) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, []) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_origin_and_is_package(self): + origin = 'where the streets have no name' + spec = self.util.spec_from_loader(self.name, self.loader, + origin=origin, is_package=True) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertIs(spec.origin, origin) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, []) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_is_package_with_loader_false(self): + loader = TestLoader(is_package=False) + spec = self.util.spec_from_loader(self.name, loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_is_package_with_loader_true(self): + loader = TestLoader(is_package=True) + spec = self.util.spec_from_loader(self.name, loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertIs(spec.origin, None) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, []) + self.assertIs(spec.cached, None) + self.assertFalse(spec.has_location) + + def test_spec_from_loader_default_with_file_loader(self): + spec = self.util.spec_from_loader(self.name, self.fileloader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_loader_is_package_false_with_fileloader(self): + spec = self.util.spec_from_loader(self.name, self.fileloader, + is_package=False) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_loader_is_package_true_with_fileloader(self): + spec = self.util.spec_from_loader(self.name, self.fileloader, + is_package=True) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, ['']) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + # spec_from_file_location() + + def test_spec_from_file_location_default(self): + if self.machinery is source_machinery: + raise unittest.SkipTest('not sure why this is breaking...') + spec = self.util.spec_from_file_location(self.name, self.path) + + self.assertEqual(spec.name, self.name) + self.assertIsInstance(spec.loader, + self.machinery.SourceFileLoader) + self.assertEqual(spec.loader.name, self.name) + self.assertEqual(spec.loader.path, self.path) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_default_without_location(self): + spec = self.util.spec_from_file_location(self.name) + + self.assertIs(spec, None) + + def test_spec_from_file_location_default_bad_suffix(self): + spec = self.util.spec_from_file_location(self.name, 'spam.eggs') + + self.assertIs(spec, None) + + def test_spec_from_file_location_loader_no_location(self): + spec = self.util.spec_from_file_location(self.name, + loader=self.fileloader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_loader_no_location_no_get_filename(self): + spec = self.util.spec_from_file_location(self.name, + loader=self.loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.loader) + self.assertEqual(spec.origin, '') + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_loader_no_location_bad_get_filename(self): + class Loader: + def get_filename(self, name): + raise ImportError + loader = Loader() + spec = self.util.spec_from_file_location(self.name, loader=loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertEqual(spec.origin, '') + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertIs(spec.cached, None) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_none(self): + spec = self.util.spec_from_file_location(self.name, self.path, + loader=self.fileloader, + submodule_search_locations=None) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_empty(self): + spec = self.util.spec_from_file_location(self.name, self.path, + loader=self.fileloader, + submodule_search_locations=[]) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, ['']) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_not_empty(self): + spec = self.util.spec_from_file_location(self.name, self.path, + loader=self.fileloader, + submodule_search_locations=['eggs']) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, ['eggs']) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_default(self): + spec = self.util.spec_from_file_location(self.name, self.path, + loader=self.pkgloader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.pkgloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertEqual(spec.submodule_search_locations, ['']) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_default_not_package(self): + class Loader: + def is_package(self, name): + return False + loader = Loader() + spec = self.util.spec_from_file_location(self.name, self.path, + loader=loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_default_no_is_package(self): + spec = self.util.spec_from_file_location(self.name, self.path, + loader=self.fileloader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, self.fileloader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + def test_spec_from_file_location_smsl_default_bad_is_package(self): + class Loader: + def is_package(self, name): + raise ImportError + loader = Loader() + spec = self.util.spec_from_file_location(self.name, self.path, + loader=loader) + + self.assertEqual(spec.name, self.name) + self.assertEqual(spec.loader, loader) + self.assertEqual(spec.origin, self.path) + self.assertIs(spec.loader_state, None) + self.assertIs(spec.submodule_search_locations, None) + self.assertEqual(spec.cached, self.cached) + self.assertTrue(spec.has_location) + + +class Frozen_FactoryTests(FactoryTests, unittest.TestCase): + util = frozen_util + machinery = frozen_machinery + + +class Source_FactoryTests(FactoryTests, unittest.TestCase): + util = source_util + machinery = source_machinery diff --git a/Lib/test/test_importlib/test_util.py b/Lib/test/test_importlib/test_util.py index 2ac57df..604e44d 100644 --- a/Lib/test/test_importlib/test_util.py +++ b/Lib/test/test_importlib/test_util.py @@ -34,71 +34,6 @@ Frozen_DecodeSourceBytesTests, Source_DecodeSourceBytesTests = test_util.test_bo DecodeSourceBytesTests, util=[frozen_util, source_util]) -class ModuleToLoadTests: - - module_name = 'ModuleManagerTest_module' - - def setUp(self): - support.unload(self.module_name) - self.addCleanup(support.unload, self.module_name) - - def test_new_module(self): - # Test a new module is created, inserted into sys.modules, has - # __initializing__ set to True after entering the context manager, - # and __initializing__ set to False after exiting. - with self.util.module_to_load(self.module_name) as module: - self.assertIn(self.module_name, sys.modules) - self.assertIs(sys.modules[self.module_name], module) - self.assertTrue(module.__initializing__) - self.assertFalse(module.__initializing__) - - def test_new_module_failed(self): - # Test the module is removed from sys.modules. - try: - with self.util.module_to_load(self.module_name) as module: - self.assertIn(self.module_name, sys.modules) - raise exception - except Exception: - self.assertNotIn(self.module_name, sys.modules) - else: - self.fail('importlib.util.module_to_load swallowed an exception') - - def test_reload(self): - # Test that the same module is in sys.modules. - created_module = types.ModuleType(self.module_name) - sys.modules[self.module_name] = created_module - with self.util.module_to_load(self.module_name) as module: - self.assertIs(module, created_module) - - def test_reload_failed(self): - # Test that the module was left in sys.modules. - created_module = types.ModuleType(self.module_name) - sys.modules[self.module_name] = created_module - try: - with self.util.module_to_load(self.module_name) as module: - raise Exception - except Exception: - self.assertIn(self.module_name, sys.modules) - else: - self.fail('importlib.util.module_to_load swallowed an exception') - - def test_reset_name(self): - # If reset_name is true then module.__name__ = name, else leave it be. - odd_name = 'not your typical name' - created_module = types.ModuleType(self.module_name) - created_module.__name__ = odd_name - sys.modules[self.module_name] = created_module - with self.util.module_to_load(self.module_name) as module: - self.assertEqual(module.__name__, self.module_name) - created_module.__name__ = odd_name - with self.util.module_to_load(self.module_name, reset_name=False) as module: - self.assertEqual(module.__name__, odd_name) - -Frozen_ModuleToLoadTests, Source_ModuleToLoadTests = test_util.test_both( - ModuleToLoadTests, - util=[frozen_util, source_util]) - - class ModuleForLoaderTests: """Tests for importlib.util.module_for_loader.""" diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py index 5a9b503..536f7cf 100644 --- a/Lib/test/test_module.py +++ b/Lib/test/test_module.py @@ -37,8 +37,10 @@ class ModuleTests(unittest.TestCase): self.assertEqual(foo.__doc__, None) self.assertIs(foo.__loader__, None) self.assertIs(foo.__package__, None) + self.assertIs(foo.__spec__, None) self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": None, - "__loader__": None, "__package__": None}) + "__loader__": None, "__package__": None, + "__spec__": None}) def test_ascii_docstring(self): # ASCII docstring @@ -47,7 +49,8 @@ class ModuleTests(unittest.TestCase): self.assertEqual(foo.__doc__, "foodoc") self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": "foodoc", - "__loader__": None, "__package__": None}) + "__loader__": None, "__package__": None, + "__spec__": None}) def test_unicode_docstring(self): # Unicode docstring @@ -56,7 +59,8 @@ class ModuleTests(unittest.TestCase): self.assertEqual(foo.__doc__, "foodoc\u1234") self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": "foodoc\u1234", - "__loader__": None, "__package__": None}) + "__loader__": None, "__package__": None, + "__spec__": None}) def test_reinit(self): # Reinitialization should not replace the __dict__ @@ -69,7 +73,7 @@ class ModuleTests(unittest.TestCase): self.assertEqual(foo.bar, 42) self.assertEqual(foo.__dict__, {"__name__": "foo", "__doc__": "foodoc", "bar": 42, - "__loader__": None, "__package__": None}) + "__loader__": None, "__package__": None, "__spec__": None}) self.assertTrue(foo.__dict__ is d) def test_dont_clear_dict(self): diff --git a/Lib/test/test_namespace_pkgs.py b/Lib/test/test_namespace_pkgs.py index 4570bee..6639612 100644 --- a/Lib/test/test_namespace_pkgs.py +++ b/Lib/test/test_namespace_pkgs.py @@ -1,5 +1,4 @@ import contextlib -from importlib._bootstrap import NamespaceLoader import importlib.abc import importlib.machinery import os @@ -290,24 +289,5 @@ class ModuleAndNamespacePackageInSameDir(NamespacePackageTest): self.assertEqual(a_test.attr, 'in module') -class ABCTests(unittest.TestCase): - - def setUp(self): - self.loader = NamespaceLoader('foo', ['pkg'], - importlib.machinery.PathFinder) - - def test_is_package(self): - self.assertTrue(self.loader.is_package('foo')) - - def test_get_code(self): - self.assertTrue(isinstance(self.loader.get_code('foo'), types.CodeType)) - - def test_get_source(self): - self.assertEqual(self.loader.get_source('foo'), '') - - def test_abc_isinstance(self): - self.assertTrue(isinstance(self.loader, importlib.abc.InspectLoader)) - - if __name__ == "__main__": unittest.main() diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py index 355efe7..9883000 100644 --- a/Lib/test/test_pkg.py +++ b/Lib/test/test_pkg.py @@ -199,14 +199,14 @@ class TestPkg(unittest.TestCase): import t5 self.assertEqual(fixdir(dir(t5)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', '__path__', 'foo', - 'string', 't5']) + '__name__', '__package__', '__path__', '__spec__', + 'foo', 'string', 't5']) self.assertEqual(fixdir(dir(t5.foo)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', 'string']) + '__name__', '__package__', '__spec__', 'string']) self.assertEqual(fixdir(dir(t5.string)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', 'spam']) + '__name__', '__package__', '__spec__', 'spam']) def test_6(self): hier = [ @@ -222,14 +222,15 @@ class TestPkg(unittest.TestCase): import t6 self.assertEqual(fixdir(dir(t6)), ['__all__', '__cached__', '__doc__', '__file__', - '__loader__', '__name__', '__package__', '__path__']) + '__loader__', '__name__', '__package__', '__path__', + '__spec__']) s = """ import t6 from t6 import * self.assertEqual(fixdir(dir(t6)), ['__all__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', - '__path__', 'eggs', 'ham', 'spam']) + '__path__', '__spec__', 'eggs', 'ham', 'spam']) self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6']) """ self.run_code(s) @@ -256,18 +257,19 @@ class TestPkg(unittest.TestCase): import t7 as tas self.assertEqual(fixdir(dir(tas)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', '__path__']) + '__name__', '__package__', '__path__', '__spec__']) self.assertFalse(t7) from t7 import sub as subpar self.assertEqual(fixdir(dir(subpar)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', '__path__']) + '__name__', '__package__', '__path__', '__spec__']) self.assertFalse(t7) self.assertFalse(sub) from t7.sub import subsub as subsubsub self.assertEqual(fixdir(dir(subsubsub)), ['__cached__', '__doc__', '__file__', '__loader__', - '__name__', '__package__', '__path__', 'spam']) + '__name__', '__package__', '__path__', '__spec__', + 'spam']) self.assertFalse(t7) self.assertFalse(sub) self.assertFalse(subsub) diff --git a/Lib/test/test_pkgutil.py b/Lib/test/test_pkgutil.py index 1f48853..52dd0bc 100644 --- a/Lib/test/test_pkgutil.py +++ b/Lib/test/test_pkgutil.py @@ -208,9 +208,16 @@ class ExtendPathTests(unittest.TestCase): importers = list(iter_importers(fullname)) expected_importer = get_importer(pathitem) for finder in importers: + loader = finder.find_module(fullname) + try: + loader = loader.loader + except AttributeError: + # For now we still allow raw loaders from + # find_module(). + pass self.assertIsInstance(finder, importlib.machinery.FileFinder) self.assertEqual(finder, expected_importer) - self.assertIsInstance(finder.find_module(fullname), + self.assertIsInstance(loader, importlib.machinery.SourceFileLoader) self.assertIsNone(finder.find_module(pkgname)) @@ -222,8 +229,11 @@ class ExtendPathTests(unittest.TestCase): finally: shutil.rmtree(dirname) del sys.path[0] - del sys.modules['spam'] - del sys.modules['spam.eggs'] + try: + del sys.modules['spam'] + del sys.modules['spam.eggs'] + except KeyError: + pass def test_mixed_namespace(self): diff --git a/Lib/test/test_reprlib.py b/Lib/test/test_reprlib.py index 104e3b5..a504bde 100644 --- a/Lib/test/test_reprlib.py +++ b/Lib/test/test_reprlib.py @@ -253,6 +253,7 @@ class LongReprTest(unittest.TestCase): print("cached_path_len =", cached_path_len) def test_module(self): + self.maxDiff = None self._check_path_limitations(self.pkgname) create_empty_file(os.path.join(self.subpkgname, self.pkgname + '.py')) importlib.invalidate_caches() diff --git a/Lib/test/test_runpy.py b/Lib/test/test_runpy.py index 16e2e12..f19c4ab 100644 --- a/Lib/test/test_runpy.py +++ b/Lib/test/test_runpy.py @@ -47,6 +47,7 @@ implicit_namespace = { "__cached__": None, "__package__": None, "__doc__": None, +# "__spec__": None, # XXX Uncomment. } example_namespace = { "sys": sys, @@ -56,7 +57,7 @@ example_namespace = { "run_name_in_sys_modules": False, "module_in_sys_modules": False, "nested": dict(implicit_namespace, - x=1, __name__="", __loader__=None), + x=1, __name__="", __loader__=None, __spec__=None), } example_namespace.update(implicit_namespace) @@ -243,6 +244,7 @@ class RunModuleTestCase(unittest.TestCase, CodeExecutionMixin): "__name__": mod_name, "__file__": mod_fname, "__package__": mod_name.rpartition(".")[0], +# "__spec__": None, # XXX Needs to be set. }) if alter_sys: expected_ns.update({ @@ -279,6 +281,7 @@ class RunModuleTestCase(unittest.TestCase, CodeExecutionMixin): "__name__": mod_name, "__file__": mod_fname, "__package__": pkg_name, +# "__spec__": None, # XXX Needs to be set. }) if alter_sys: expected_ns.update({ diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 3ea3be8..d59475e 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -45,6 +45,8 @@ module_init_dict(PyModuleObject *mod, PyObject *md_dict, return -1; if (PyDict_SetItemString(md_dict, "__loader__", Py_None) != 0) return -1; + if (PyDict_SetItemString(md_dict, "__spec__", Py_None) != 0) + return -1; if (PyUnicode_CheckExact(name)) { Py_INCREF(name); Py_XDECREF(mod->md_name); @@ -398,55 +400,10 @@ module_dealloc(PyModuleObject *m) static PyObject * module_repr(PyModuleObject *m) { - PyObject *name, *filename, *repr, *loader = NULL; + PyThreadState *tstate = PyThreadState_GET(); + PyInterpreterState *interp = tstate->interp; - /* See if the module has an __loader__. If it does, give the loader the - * first shot at producing a repr for the module. - */ - if (m->md_dict != NULL) { - loader = PyDict_GetItemString(m->md_dict, "__loader__"); - } - if (loader != NULL && loader != Py_None) { - repr = PyObject_CallMethod(loader, "module_repr", "(O)", - (PyObject *)m, NULL); - if (repr == NULL) { - PyErr_Clear(); - } - else { - return repr; - } - } - /* __loader__.module_repr(m) did not provide us with a repr. Next, see if - * the module has an __file__. If it doesn't then use repr(__loader__) if - * it exists, otherwise, just use module.__name__. - */ - name = PyModule_GetNameObject((PyObject *)m); - if (name == NULL) { - PyErr_Clear(); - name = PyUnicode_FromStringAndSize("?", 1); - if (name == NULL) - return NULL; - } - filename = PyModule_GetFilenameObject((PyObject *)m); - if (filename == NULL) { - PyErr_Clear(); - /* There's no m.__file__, so if there was a __loader__, use that in - * the repr, otherwise, the only thing you can use is m.__name__ - */ - if (loader == NULL || loader == Py_None) { - repr = PyUnicode_FromFormat("", name); - } - else { - repr = PyUnicode_FromFormat("", name, loader); - } - } - /* Finally, use m.__file__ */ - else { - repr = PyUnicode_FromFormat("", name, filename); - Py_DECREF(filename); - } - Py_DECREF(name); - return repr; + return PyObject_CallMethod(interp->importlib, "_module_repr", "O", m); } static int diff --git a/Python/import.c b/Python/import.c index f0ac051..584b1b4 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1232,7 +1232,8 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, int level) { _Py_IDENTIFIER(__import__); - _Py_IDENTIFIER(__initializing__); + _Py_IDENTIFIER(__spec__); + _Py_IDENTIFIER(_initializing); _Py_IDENTIFIER(__package__); _Py_IDENTIFIER(__path__); _Py_IDENTIFIER(__name__); @@ -1426,16 +1427,21 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, goto error_with_unlock; } else if (mod != NULL) { - PyObject *value; + PyObject *value = NULL; + PyObject *spec; int initializing = 0; Py_INCREF(mod); /* Optimization: only call _bootstrap._lock_unlock_module() if - __initializing__ is true. - NOTE: because of this, __initializing__ must be set *before* + __spec__._initializing is true. + NOTE: because of this, initializing must be set *before* stuffing the new module in sys.modules. */ - value = _PyObject_GetAttrId(mod, &PyId___initializing__); + spec = _PyObject_GetAttrId(mod, &PyId___spec__); + if (spec != NULL) { + value = _PyObject_GetAttrId(spec, &PyId__initializing); + Py_DECREF(spec); + } if (value == NULL) PyErr_Clear(); else { diff --git a/Python/importlib.h b/Python/importlib.h index 860b553..2e12a01 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,8 +1,8 @@ /* Auto-generated by Modules/_freeze_importlib.c */ const unsigned char _Py_M__importlib[] = { - 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0, - 0,64,0,0,0,115,84,4,0,0,100,0,0,90,0,0, - 100,147,0,90,1,0,100,4,0,100,5,0,132,0,0,90, + 99,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0, + 0,64,0,0,0,115,182,4,0,0,100,0,0,90,0,0, + 100,157,0,90,1,0,100,4,0,100,5,0,132,0,0,90, 2,0,100,6,0,100,7,0,132,0,0,90,3,0,100,8, 0,100,9,0,132,0,0,90,4,0,100,10,0,100,11,0, 132,0,0,90,5,0,100,12,0,100,13,0,132,0,0,90, @@ -10,306 +10,319 @@ const unsigned char _Py_M__importlib[] = { 0,100,17,0,132,0,0,90,8,0,100,18,0,100,19,0, 132,0,0,90,9,0,100,20,0,100,21,0,132,0,0,90, 10,0,100,22,0,100,23,0,100,24,0,132,1,0,90,11, - 0,100,25,0,100,26,0,132,0,0,90,12,0,101,13,0, - 101,12,0,106,14,0,131,1,0,90,15,0,105,0,0,90, - 16,0,105,0,0,90,17,0,71,100,27,0,100,28,0,132, - 0,0,100,28,0,101,18,0,131,3,0,90,19,0,71,100, - 29,0,100,30,0,132,0,0,100,30,0,131,2,0,90,20, - 0,71,100,31,0,100,32,0,132,0,0,100,32,0,131,2, - 0,90,21,0,100,33,0,100,34,0,132,0,0,90,22,0, - 100,35,0,100,36,0,132,0,0,90,23,0,100,37,0,100, - 38,0,132,0,0,90,24,0,100,39,0,106,25,0,100,40, - 0,100,41,0,131,2,0,100,42,0,23,90,26,0,101,27, - 0,106,28,0,101,26,0,100,41,0,131,2,0,90,29,0, - 100,43,0,90,30,0,100,44,0,103,1,0,90,31,0,100, - 45,0,103,1,0,90,32,0,100,46,0,103,1,0,90,33, - 0,100,47,0,100,48,0,100,49,0,132,1,0,90,34,0, - 100,50,0,100,51,0,132,0,0,90,35,0,100,52,0,100, - 53,0,132,0,0,90,36,0,100,54,0,100,55,0,132,0, - 0,90,37,0,100,56,0,100,57,0,100,58,0,100,59,0, - 132,0,1,90,38,0,71,100,60,0,100,61,0,132,0,0, - 100,61,0,131,2,0,90,39,0,71,100,62,0,100,63,0, - 132,0,0,100,63,0,101,39,0,131,3,0,90,40,0,100, - 64,0,100,65,0,100,66,0,100,67,0,132,0,1,90,41, - 0,100,68,0,100,69,0,132,0,0,90,42,0,100,70,0, - 100,71,0,132,0,0,90,43,0,100,72,0,100,73,0,132, - 0,0,90,44,0,100,74,0,100,75,0,132,0,0,90,45, - 0,100,76,0,100,77,0,132,0,0,90,46,0,100,78,0, - 100,79,0,132,0,0,90,47,0,100,80,0,100,81,0,132, - 0,0,90,48,0,100,82,0,100,83,0,132,0,0,90,49, - 0,100,47,0,100,47,0,100,47,0,100,84,0,100,85,0, - 132,3,0,90,50,0,100,47,0,100,47,0,100,47,0,100, - 86,0,100,87,0,132,3,0,90,51,0,100,88,0,100,88, - 0,100,89,0,100,90,0,132,2,0,90,52,0,100,91,0, - 100,92,0,132,0,0,90,53,0,71,100,93,0,100,94,0, - 132,0,0,100,94,0,131,2,0,90,54,0,71,100,95,0, - 100,96,0,132,0,0,100,96,0,131,2,0,90,55,0,71, - 100,97,0,100,98,0,132,0,0,100,98,0,131,2,0,90, - 56,0,71,100,99,0,100,100,0,132,0,0,100,100,0,131, - 2,0,90,57,0,71,100,101,0,100,102,0,132,0,0,100, - 102,0,101,57,0,131,3,0,90,58,0,71,100,103,0,100, - 104,0,132,0,0,100,104,0,131,2,0,90,59,0,71,100, - 105,0,100,106,0,132,0,0,100,106,0,101,59,0,101,58, - 0,131,4,0,90,60,0,71,100,107,0,100,108,0,132,0, - 0,100,108,0,101,59,0,101,57,0,131,4,0,90,61,0, - 103,0,0,90,62,0,71,100,109,0,100,110,0,132,0,0, - 100,110,0,131,2,0,90,63,0,71,100,111,0,100,112,0, - 132,0,0,100,112,0,131,2,0,90,64,0,71,100,113,0, - 100,114,0,132,0,0,100,114,0,131,2,0,90,65,0,71, - 100,115,0,100,116,0,132,0,0,100,116,0,131,2,0,90, - 66,0,71,100,117,0,100,118,0,132,0,0,100,118,0,131, - 2,0,90,67,0,71,100,119,0,100,120,0,132,0,0,100, - 120,0,131,2,0,90,68,0,100,121,0,100,122,0,132,0, - 0,90,69,0,100,123,0,100,124,0,132,0,0,90,70,0, - 100,125,0,100,126,0,132,0,0,90,71,0,100,127,0,90, - 72,0,101,72,0,100,128,0,23,90,73,0,100,129,0,100, - 130,0,132,0,0,90,74,0,100,131,0,100,132,0,132,0, - 0,90,75,0,100,47,0,100,88,0,100,133,0,100,134,0, - 132,2,0,90,76,0,100,135,0,100,136,0,132,0,0,90, - 77,0,100,137,0,100,138,0,132,0,0,90,78,0,100,139, - 0,100,140,0,132,0,0,90,79,0,100,47,0,100,47,0, - 102,0,0,100,88,0,100,141,0,100,142,0,132,4,0,90, - 80,0,100,143,0,100,144,0,132,0,0,90,81,0,100,145, - 0,100,146,0,132,0,0,90,82,0,100,47,0,83,41,148, - 97,83,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,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,218,3,119,105,110,218,6,99, - 121,103,119,105,110,218,6,100,97,114,119,105,110,99,0,0, - 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, - 0,0,115,49,0,0,0,116,0,0,106,1,0,106,2,0, - 116,3,0,131,1,0,114,33,0,100,1,0,100,2,0,132, - 0,0,125,0,0,110,12,0,100,3,0,100,2,0,132,0, - 0,125,0,0,124,0,0,83,41,4,78,99,0,0,0,0, - 0,0,0,0,0,0,0,0,2,0,0,0,83,0,0,0, - 115,13,0,0,0,100,1,0,116,0,0,106,1,0,107,6, - 0,83,41,2,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,115,12,0,0,0, - 80,89,84,72,79,78,67,65,83,69,79,75,41,2,218,3, - 95,111,115,90,7,101,110,118,105,114,111,110,169,0,114,4, - 0,0,0,114,4,0,0,0,250,29,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,62,218,11,95,114,101,108,97,120,95, - 99,97,115,101,30,0,0,0,115,2,0,0,0,0,2,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,1,0,0,0,83,0,0,0,115,4,0,0,0, - 100,1,0,83,41,2,122,53,84,114,117,101,32,105,102,32, + 0,100,25,0,100,26,0,132,0,0,90,12,0,100,27,0, + 100,28,0,132,0,0,90,13,0,101,14,0,101,12,0,106, + 15,0,131,1,0,90,16,0,105,0,0,90,17,0,105,0, + 0,90,18,0,71,100,29,0,100,30,0,132,0,0,100,30, + 0,101,19,0,131,3,0,90,20,0,71,100,31,0,100,32, + 0,132,0,0,100,32,0,131,2,0,90,21,0,71,100,33, + 0,100,34,0,132,0,0,100,34,0,131,2,0,90,22,0, + 71,100,35,0,100,36,0,132,0,0,100,36,0,131,2,0, + 90,23,0,100,37,0,100,38,0,132,0,0,90,24,0,100, + 39,0,100,40,0,132,0,0,90,25,0,100,41,0,100,42, + 0,132,0,0,90,26,0,100,43,0,106,27,0,100,44,0, + 100,45,0,131,2,0,100,46,0,23,90,28,0,101,29,0, + 106,30,0,101,28,0,100,45,0,131,2,0,90,31,0,100, + 47,0,90,32,0,100,48,0,103,1,0,90,33,0,100,49, + 0,103,1,0,90,34,0,100,50,0,103,1,0,90,35,0, + 100,51,0,100,52,0,100,53,0,132,1,0,90,36,0,100, + 54,0,100,55,0,132,0,0,90,37,0,100,56,0,100,57, + 0,132,0,0,90,38,0,100,58,0,100,59,0,132,0,0, + 90,39,0,100,60,0,100,61,0,100,62,0,100,63,0,132, + 0,1,90,40,0,100,64,0,100,65,0,132,0,0,90,41, + 0,100,66,0,100,67,0,132,0,0,90,42,0,100,68,0, + 100,69,0,132,0,0,90,43,0,100,70,0,100,71,0,132, + 0,0,90,44,0,100,72,0,100,73,0,132,0,0,90,45, + 0,100,51,0,100,51,0,100,51,0,100,74,0,100,75,0, + 132,3,0,90,46,0,100,51,0,100,51,0,100,51,0,100, + 76,0,100,77,0,132,3,0,90,47,0,100,78,0,100,78, + 0,100,79,0,100,80,0,132,2,0,90,48,0,100,81,0, + 100,82,0,132,0,0,90,49,0,100,83,0,100,84,0,132, + 0,0,90,50,0,71,100,85,0,100,86,0,132,0,0,100, + 86,0,131,2,0,90,51,0,71,100,87,0,100,88,0,132, + 0,0,100,88,0,131,2,0,90,52,0,100,89,0,100,51, + 0,100,90,0,100,51,0,100,91,0,100,92,0,132,0,2, + 90,53,0,101,54,0,131,0,0,90,55,0,100,51,0,100, + 93,0,100,51,0,100,94,0,101,55,0,100,95,0,100,96, + 0,132,1,2,90,56,0,100,51,0,100,51,0,100,97,0, + 100,98,0,132,2,0,90,57,0,71,100,99,0,100,100,0, + 132,0,0,100,100,0,131,2,0,90,58,0,71,100,101,0, + 100,102,0,132,0,0,100,102,0,131,2,0,90,59,0,71, + 100,103,0,100,104,0,132,0,0,100,104,0,131,2,0,90, + 60,0,71,100,105,0,100,106,0,132,0,0,100,106,0,131, + 2,0,90,61,0,71,100,107,0,100,108,0,132,0,0,100, + 108,0,131,2,0,90,62,0,71,100,109,0,100,110,0,132, + 0,0,100,110,0,101,62,0,131,3,0,90,63,0,71,100, + 111,0,100,112,0,132,0,0,100,112,0,131,2,0,90,64, + 0,71,100,113,0,100,114,0,132,0,0,100,114,0,101,64, + 0,101,63,0,131,4,0,90,65,0,71,100,115,0,100,116, + 0,132,0,0,100,116,0,101,64,0,101,62,0,131,4,0, + 90,66,0,103,0,0,90,67,0,71,100,117,0,100,118,0, + 132,0,0,100,118,0,131,2,0,90,68,0,71,100,119,0, + 100,120,0,132,0,0,100,120,0,131,2,0,90,69,0,71, + 100,121,0,100,122,0,132,0,0,100,122,0,131,2,0,90, + 70,0,71,100,123,0,100,124,0,132,0,0,100,124,0,131, + 2,0,90,71,0,71,100,125,0,100,126,0,132,0,0,100, + 126,0,131,2,0,90,72,0,71,100,127,0,100,128,0,132, + 0,0,100,128,0,131,2,0,90,73,0,100,129,0,100,130, + 0,132,0,0,90,74,0,100,51,0,100,131,0,100,132,0, + 132,1,0,90,75,0,100,133,0,100,134,0,132,0,0,90, + 76,0,100,135,0,90,77,0,101,77,0,100,136,0,23,90, + 78,0,100,137,0,100,138,0,132,0,0,90,79,0,100,139, + 0,100,140,0,132,0,0,90,80,0,100,51,0,100,78,0, + 100,141,0,100,142,0,132,2,0,90,81,0,100,143,0,100, + 144,0,132,0,0,90,82,0,100,145,0,100,146,0,132,0, + 0,90,83,0,100,147,0,100,148,0,132,0,0,90,84,0, + 100,51,0,100,51,0,102,0,0,100,78,0,100,149,0,100, + 150,0,132,4,0,90,85,0,100,151,0,100,152,0,132,0, + 0,90,86,0,100,153,0,100,154,0,132,0,0,90,87,0, + 100,155,0,100,156,0,132,0,0,90,88,0,100,51,0,83, + 41,158,97,83,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,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,218,3,119,105,110,218, + 6,99,121,103,119,105,110,218,6,100,97,114,119,105,110,99, + 0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 67,0,0,0,115,49,0,0,0,116,0,0,106,1,0,106, + 2,0,116,3,0,131,1,0,114,33,0,100,1,0,100,2, + 0,132,0,0,125,0,0,110,12,0,100,3,0,100,2,0, + 132,0,0,125,0,0,124,0,0,83,41,4,78,99,0,0, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,83,0, + 0,0,115,13,0,0,0,100,1,0,116,0,0,106,1,0, + 107,6,0,83,41,2,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,114,4, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,6,0,0,0,34,0,0,0, - 115,2,0,0,0,0,2,41,4,218,3,115,121,115,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,41,1,114,6,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,16,95,109,97,107,101,95,114, - 101,108,97,120,95,99,97,115,101,28,0,0,0,115,8,0, - 0,0,0,1,18,1,15,4,12,3,114,11,0,0,0,99, - 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,26,0,0,0,116,0,0,124,0,0,131, - 1,0,100,1,0,64,106,1,0,100,2,0,100,3,0,131, - 2,0,83,41,4,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,108,3,0,0,0,255,127,255,127,3,0,233,4,0,0, - 0,218,6,108,105,116,116,108,101,41,2,218,3,105,110,116, - 218,8,116,111,95,98,121,116,101,115,41,1,218,1,120,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,7, - 95,119,95,108,111,110,103,40,0,0,0,115,2,0,0,0, - 0,2,114,17,0,0,0,99,1,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,0,106,1,0,124,0,0,100,1,0,131,2,0, - 83,41,2,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,13,0,0,0,41,2,114,14,0,0,0, - 218,10,102,114,111,109,95,98,121,116,101,115,41,1,90,9, - 105,110,116,95,98,121,116,101,115,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,7,95,114,95,108,111,110, - 103,45,0,0,0,115,2,0,0,0,0,2,114,19,0,0, - 0,99,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,71,0,0,0,115,26,0,0,0,116,0,0,106,1, - 0,100,1,0,100,2,0,132,0,0,124,0,0,68,131,1, - 0,131,1,0,83,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,106,111,105,110,40,41,46,99,1,0,0,0,0,0,0, - 0,2,0,0,0,4,0,0,0,83,0,0,0,115,37,0, - 0,0,103,0,0,124,0,0,93,27,0,125,1,0,124,1, - 0,114,6,0,124,1,0,106,0,0,116,1,0,131,1,0, - 145,2,0,113,6,0,83,114,4,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,218,2,46,48,218,4,112, - 97,114,116,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,250,10,60,108,105,115,116,99,111,109,112,62,52,0, - 0,0,115,2,0,0,0,9,1,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,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,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,10,95,112,97,116,104,95, - 106,111,105,110,50,0,0,0,115,4,0,0,0,0,2,15, - 1,114,28,0,0,0,99,1,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,134,0,0,0, - 116,0,0,116,1,0,131,1,0,100,1,0,107,2,0,114, - 52,0,124,0,0,106,2,0,116,3,0,131,1,0,92,3, - 0,125,1,0,125,2,0,125,3,0,124,1,0,124,3,0, - 102,2,0,83,120,69,0,116,4,0,124,0,0,131,1,0, - 68,93,55,0,125,4,0,124,4,0,116,1,0,107,6,0, - 114,65,0,124,0,0,106,5,0,124,4,0,100,2,0,100, - 1,0,131,1,1,92,2,0,125,1,0,125,3,0,124,1, - 0,124,3,0,102,2,0,83,113,65,0,87,100,3,0,124, - 0,0,102,2,0,83,41,4,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,233,1,0,0,0,90, - 8,109,97,120,115,112,108,105,116,218,0,41,6,218,3,108, - 101,110,114,21,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,114,25,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,16,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,218,11,95,112,97,116,104,95,115,112, - 108,105,116,56,0,0,0,115,16,0,0,0,0,2,18,1, - 24,1,10,1,19,1,12,1,27,1,14,1,114,38,0,0, - 0,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, - 0,0,67,0,0,0,115,13,0,0,0,116,0,0,106,1, - 0,124,0,0,131,1,0,83,41,1,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,41,2,114,3,0,0, - 0,90,4,115,116,97,116,41,1,114,35,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,10,95, - 112,97,116,104,95,115,116,97,116,68,0,0,0,115,2,0, - 0,0,0,7,114,39,0,0,0,99,2,0,0,0,0,0, - 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,58, - 0,0,0,121,16,0,116,0,0,124,0,0,131,1,0,125, - 2,0,87,110,22,0,4,116,1,0,107,10,0,114,40,0, - 1,1,1,100,1,0,83,89,110,1,0,88,124,2,0,106, - 2,0,100,2,0,64,124,1,0,107,2,0,83,41,3,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,41,3,114,39,0,0,0,218, - 7,79,83,69,114,114,111,114,218,7,115,116,95,109,111,100, - 101,41,3,114,35,0,0,0,218,4,109,111,100,101,90,9, - 115,116,97,116,95,105,110,102,111,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,18,95,112,97,116,104,95, - 105,115,95,109,111,100,101,95,116,121,112,101,78,0,0,0, - 115,10,0,0,0,0,2,3,1,16,1,13,1,9,1,114, - 43,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,13,0,0,0,116,0, - 0,124,0,0,100,1,0,131,2,0,83,41,2,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,41,1,114,43,0,0,0,41,1,114,35,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,12,95,112,97,116,104,95,105,115,102,105,108,101,88,0, - 0,0,115,2,0,0,0,0,2,114,44,0,0,0,99,1, - 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, - 0,0,0,115,34,0,0,0,124,0,0,115,21,0,116,0, - 0,106,1,0,131,0,0,125,0,0,110,0,0,116,2,0, - 124,0,0,100,1,0,131,2,0,83,41,2,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,41,3,114,3,0,0,0,218,6,103,101,116,99,119,100, - 114,43,0,0,0,41,1,114,35,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,11,95,112,97, - 116,104,95,105,115,100,105,114,94,0,0,0,115,6,0,0, - 0,0,2,6,1,15,1,114,46,0,0,0,105,182,1,0, - 0,99,3,0,0,0,0,0,0,0,6,0,0,0,17,0, - 0,0,67,0,0,0,115,192,0,0,0,100,1,0,106,0, - 0,124,0,0,116,1,0,124,0,0,131,1,0,131,2,0, - 125,3,0,116,2,0,106,3,0,124,3,0,116,2,0,106, - 4,0,116,2,0,106,5,0,66,116,2,0,106,6,0,66, - 124,2,0,100,2,0,64,131,3,0,125,4,0,121,60,0, - 116,7,0,106,8,0,124,4,0,100,3,0,131,2,0,143, - 20,0,125,5,0,124,5,0,106,9,0,124,1,0,131,1, - 0,1,87,100,4,0,81,88,116,2,0,106,10,0,124,3, - 0,124,0,0,131,2,0,1,87,110,59,0,4,116,11,0, - 107,10,0,114,187,0,1,1,1,121,17,0,116,2,0,106, - 12,0,124,3,0,131,1,0,1,87,110,18,0,4,116,11, - 0,107,10,0,114,179,0,1,1,1,89,110,1,0,88,130, - 0,0,89,110,1,0,88,100,4,0,83,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,122,5,123,125,46,123,125,105,182,1,0,0,90,2,119, - 98,78,41,13,218,6,102,111,114,109,97,116,218,2,105,100, - 114,3,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,40,0,0,0,90,6,117,110,108,105,110,107, - 41,6,114,35,0,0,0,218,4,100,97,116,97,114,42,0, - 0,0,90,8,112,97,116,104,95,116,109,112,90,2,102,100, - 218,4,102,105,108,101,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,13,95,119,114,105,116,101,95,97,116, - 111,109,105,99,101,0,0,0,115,26,0,0,0,0,5,24, - 1,9,1,33,1,3,3,21,1,19,1,20,1,13,1,3, - 1,17,1,13,1,5,1,114,55,0,0,0,99,2,0,0, - 0,0,0,0,0,3,0,0,0,7,0,0,0,67,0,0, - 0,115,95,0,0,0,120,69,0,100,1,0,100,2,0,100, - 3,0,100,4,0,103,4,0,68,93,49,0,125,2,0,116, - 0,0,124,1,0,124,2,0,131,2,0,114,19,0,116,1, - 0,124,0,0,124,2,0,116,2,0,124,1,0,124,2,0, - 131,2,0,131,3,0,1,113,19,0,113,19,0,87,124,0, - 0,106,3,0,106,4,0,124,1,0,106,3,0,131,1,0, - 1,100,5,0,83,41,6,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,101,95, - 119,114,97,112,112,101,114,46,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,78,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,52,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,5,95,119,114,97,112,123,0,0,0, - 115,8,0,0,0,0,2,25,1,15,1,32,1,114,65,0, + 110,115,101,110,115,105,116,105,118,101,108,121,46,115,12,0, + 0,0,80,89,84,72,79,78,67,65,83,69,79,75,41,2, + 218,3,95,111,115,90,7,101,110,118,105,114,111,110,169,0, + 114,4,0,0,0,114,4,0,0,0,250,29,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,62,218,11,95,114,101,108,97, + 120,95,99,97,115,101,30,0,0,0,115,2,0,0,0,0, + 2,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,1,0,0,0,83,0,0,0,115,4,0, + 0,0,100,1,0,83,41,2,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, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,6,0,0,0,34,0, + 0,0,115,2,0,0,0,0,2,41,4,218,3,115,121,115, + 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,41,1,114,6,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,16,95,109,97,107,101, + 95,114,101,108,97,120,95,99,97,115,101,28,0,0,0,115, + 8,0,0,0,0,1,18,1,15,4,12,3,114,11,0,0, + 0,99,1,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,26,0,0,0,116,0,0,124,0, + 0,131,1,0,100,1,0,64,106,1,0,100,2,0,100,3, + 0,131,2,0,83,41,4,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,108,3,0,0,0,255,127,255,127,3,0,233,4, + 0,0,0,218,6,108,105,116,116,108,101,41,2,218,3,105, + 110,116,218,8,116,111,95,98,121,116,101,115,41,1,218,1, + 120,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,7,95,119,95,108,111,110,103,40,0,0,0,115,2,0, + 0,0,0,2,114,17,0,0,0,99,1,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,0,106,1,0,124,0,0,100,1,0,131, + 2,0,83,41,2,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,13,0,0,0,41,2,114,14,0, + 0,0,218,10,102,114,111,109,95,98,121,116,101,115,41,1, + 90,9,105,110,116,95,98,121,116,101,115,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,7,95,114,95,108, + 111,110,103,45,0,0,0,115,2,0,0,0,0,2,114,19, + 0,0,0,99,0,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,71,0,0,0,115,26,0,0,0,116,0,0, + 106,1,0,100,1,0,100,2,0,132,0,0,124,0,0,68, + 131,1,0,131,1,0,83,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,106,111,105,110,40,41,46,99,1,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,83,0,0,0,115, + 37,0,0,0,103,0,0,124,0,0,93,27,0,125,1,0, + 124,1,0,114,6,0,124,1,0,106,0,0,116,1,0,131, + 1,0,145,2,0,113,6,0,83,114,4,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,218,2,46,48,218, + 4,112,97,114,116,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,250,10,60,108,105,115,116,99,111,109,112,62, + 52,0,0,0,115,2,0,0,0,9,1,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,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,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,10,95,112,97,116, + 104,95,106,111,105,110,50,0,0,0,115,4,0,0,0,0, + 2,15,1,114,28,0,0,0,99,1,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,134,0, + 0,0,116,0,0,116,1,0,131,1,0,100,1,0,107,2, + 0,114,52,0,124,0,0,106,2,0,116,3,0,131,1,0, + 92,3,0,125,1,0,125,2,0,125,3,0,124,1,0,124, + 3,0,102,2,0,83,120,69,0,116,4,0,124,0,0,131, + 1,0,68,93,55,0,125,4,0,124,4,0,116,1,0,107, + 6,0,114,65,0,124,0,0,106,5,0,124,4,0,100,2, + 0,100,1,0,131,1,1,92,2,0,125,1,0,125,3,0, + 124,1,0,124,3,0,102,2,0,83,113,65,0,87,100,3, + 0,124,0,0,102,2,0,83,41,4,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,233,1,0,0, + 0,90,8,109,97,120,115,112,108,105,116,218,0,41,6,218, + 3,108,101,110,114,21,0,0,0,218,10,114,112,97,114,116, + 105,116,105,111,110,114,25,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,16,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,11,95,112,97,116,104,95, + 115,112,108,105,116,56,0,0,0,115,16,0,0,0,0,2, + 18,1,24,1,10,1,19,1,12,1,27,1,14,1,114,38, + 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0, + 2,0,0,0,67,0,0,0,115,13,0,0,0,116,0,0, + 106,1,0,124,0,0,131,1,0,83,41,1,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,41,2,114,3, + 0,0,0,90,4,115,116,97,116,41,1,114,35,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 10,95,112,97,116,104,95,115,116,97,116,68,0,0,0,115, + 2,0,0,0,0,7,114,39,0,0,0,99,2,0,0,0, + 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0, + 115,58,0,0,0,121,16,0,116,0,0,124,0,0,131,1, + 0,125,2,0,87,110,22,0,4,116,1,0,107,10,0,114, + 40,0,1,1,1,100,1,0,83,89,110,1,0,88,124,2, + 0,106,2,0,100,2,0,64,124,1,0,107,2,0,83,41, + 3,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,41,3,114,39,0,0, + 0,218,7,79,83,69,114,114,111,114,218,7,115,116,95,109, + 111,100,101,41,3,114,35,0,0,0,218,4,109,111,100,101, + 90,9,115,116,97,116,95,105,110,102,111,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,18,95,112,97,116, + 104,95,105,115,95,109,111,100,101,95,116,121,112,101,78,0, + 0,0,115,10,0,0,0,0,2,3,1,16,1,13,1,9, + 1,114,43,0,0,0,99,1,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,13,0,0,0, + 116,0,0,124,0,0,100,1,0,131,2,0,83,41,2,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,41,1,114,43,0,0,0,41,1,114,35, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,12,95,112,97,116,104,95,105,115,102,105,108,101, + 87,0,0,0,115,2,0,0,0,0,2,114,44,0,0,0, + 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, + 0,67,0,0,0,115,34,0,0,0,124,0,0,115,21,0, + 116,0,0,106,1,0,131,0,0,125,0,0,110,0,0,116, + 2,0,124,0,0,100,1,0,131,2,0,83,41,2,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,41,3,114,3,0,0,0,218,6,103,101,116,99, + 119,100,114,43,0,0,0,41,1,114,35,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,95, + 112,97,116,104,95,105,115,100,105,114,92,0,0,0,115,6, + 0,0,0,0,2,6,1,15,1,114,46,0,0,0,105,182, + 1,0,0,99,3,0,0,0,0,0,0,0,6,0,0,0, + 17,0,0,0,67,0,0,0,115,192,0,0,0,100,1,0, + 106,0,0,124,0,0,116,1,0,124,0,0,131,1,0,131, + 2,0,125,3,0,116,2,0,106,3,0,124,3,0,116,2, + 0,106,4,0,116,2,0,106,5,0,66,116,2,0,106,6, + 0,66,124,2,0,100,2,0,64,131,3,0,125,4,0,121, + 60,0,116,7,0,106,8,0,124,4,0,100,3,0,131,2, + 0,143,20,0,125,5,0,124,5,0,106,9,0,124,1,0, + 131,1,0,1,87,100,4,0,81,88,116,2,0,106,10,0, + 124,3,0,124,0,0,131,2,0,1,87,110,59,0,4,116, + 11,0,107,10,0,114,187,0,1,1,1,121,17,0,116,2, + 0,106,12,0,124,3,0,131,1,0,1,87,110,18,0,4, + 116,11,0,107,10,0,114,179,0,1,1,1,89,110,1,0, + 88,130,0,0,89,110,1,0,88,100,4,0,83,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,122,5,123,125,46,123,125,105,182,1,0,0,90, + 2,119,98,78,41,13,218,6,102,111,114,109,97,116,218,2, + 105,100,114,3,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,40,0,0,0,90,6,117,110,108,105, + 110,107,41,6,114,35,0,0,0,218,4,100,97,116,97,114, + 42,0,0,0,90,8,112,97,116,104,95,116,109,112,90,2, + 102,100,218,4,102,105,108,101,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,13,95,119,114,105,116,101,95, + 97,116,111,109,105,99,99,0,0,0,115,26,0,0,0,0, + 5,24,1,9,1,33,1,3,3,21,1,19,1,20,1,13, + 1,3,1,17,1,13,1,5,1,114,55,0,0,0,99,2, + 0,0,0,0,0,0,0,3,0,0,0,7,0,0,0,67, + 0,0,0,115,95,0,0,0,120,69,0,100,1,0,100,2, + 0,100,3,0,100,4,0,103,4,0,68,93,49,0,125,2, + 0,116,0,0,124,1,0,124,2,0,131,2,0,114,19,0, + 116,1,0,124,0,0,124,2,0,116,2,0,124,1,0,124, + 2,0,131,2,0,131,3,0,1,113,19,0,113,19,0,87, + 124,0,0,106,3,0,106,4,0,124,1,0,106,3,0,131, + 1,0,1,100,5,0,83,41,6,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, + 101,95,119,114,97,112,112,101,114,46,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,78,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,52,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,5,95,119,114,97,112,121,0, + 0,0,115,8,0,0,0,0,2,25,1,15,1,32,1,114, + 65,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 0,116,1,0,131,1,0,124,0,0,131,1,0,83,41,1, + 78,41,2,218,4,116,121,112,101,114,7,0,0,0,41,1, + 218,4,110,97,109,101,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,11,95,110,101,119,95,109,111,100,117, + 108,101,129,0,0,0,115,2,0,0,0,0,1,114,68,0, 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,1, 0,0,0,64,0,0,0,115,16,0,0,0,101,0,0,90, 1,0,100,0,0,90,2,0,100,1,0,83,41,2,218,14, 95,68,101,97,100,108,111,99,107,69,114,114,111,114,78,41, 3,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,66,0,0,0,142,0,0,0,115,2,0, - 0,0,12,1,114,66,0,0,0,99,0,0,0,0,0,0, + 5,0,0,0,114,69,0,0,0,144,0,0,0,115,2,0, + 0,0,12,1,114,69,0,0,0,99,0,0,0,0,0,0, 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,82, 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, 1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,4, @@ -336,234 +349,275 @@ const unsigned char _Py_M__importlib[] = { 6,0,100,1,0,124,0,0,95,7,0,100,0,0,83,41, 2,78,233,0,0,0,0,41,8,218,7,95,116,104,114,101, 97,100,90,13,97,108,108,111,99,97,116,101,95,108,111,99, - 107,218,4,108,111,99,107,218,6,119,97,107,101,117,112,218, - 4,110,97,109,101,218,5,111,119,110,101,114,218,5,99,111, - 117,110,116,218,7,119,97,105,116,101,114,115,41,2,218,4, - 115,101,108,102,114,72,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,8,95,95,105,110,105,116, - 95,95,152,0,0,0,115,12,0,0,0,0,1,15,1,15, - 1,9,1,9,1,9,1,122,20,95,77,111,100,117,108,101, - 76,111,99,107,46,95,95,105,110,105,116,95,95,99,1,0, - 0,0,0,0,0,0,4,0,0,0,2,0,0,0,67,0, - 0,0,115,87,0,0,0,116,0,0,106,1,0,131,0,0, - 125,1,0,124,0,0,106,2,0,125,2,0,120,59,0,116, - 3,0,106,4,0,124,2,0,131,1,0,125,3,0,124,3, - 0,100,0,0,107,8,0,114,55,0,100,1,0,83,124,3, - 0,106,2,0,125,2,0,124,2,0,124,1,0,107,2,0, - 114,24,0,100,2,0,83,113,24,0,100,0,0,83,41,3, - 78,70,84,41,5,114,69,0,0,0,218,9,103,101,116,95, - 105,100,101,110,116,114,73,0,0,0,218,12,95,98,108,111, - 99,107,105,110,103,95,111,110,218,3,103,101,116,41,4,114, - 76,0,0,0,218,2,109,101,218,3,116,105,100,114,70,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,12,104,97,115,95,100,101,97,100,108,111,99,107,160, - 0,0,0,115,18,0,0,0,0,2,12,1,9,1,3,1, - 15,1,12,1,4,1,9,1,12,1,122,24,95,77,111,100, - 117,108,101,76,111,99,107,46,104,97,115,95,100,101,97,100, - 108,111,99,107,99,1,0,0,0,0,0,0,0,2,0,0, - 0,17,0,0,0,67,0,0,0,115,214,0,0,0,116,0, - 0,106,1,0,131,0,0,125,1,0,124,0,0,116,2,0, - 124,1,0,60,122,177,0,120,170,0,124,0,0,106,3,0, - 143,130,0,1,124,0,0,106,4,0,100,1,0,107,2,0, - 115,68,0,124,0,0,106,5,0,124,1,0,107,2,0,114, - 96,0,124,1,0,124,0,0,95,5,0,124,0,0,4,106, - 4,0,100,2,0,55,2,95,4,0,100,3,0,83,124,0, - 0,106,6,0,131,0,0,114,127,0,116,7,0,100,4,0, - 124,0,0,22,131,1,0,130,1,0,110,0,0,124,0,0, - 106,8,0,106,9,0,100,5,0,131,1,0,114,163,0,124, - 0,0,4,106,10,0,100,2,0,55,2,95,10,0,110,0, - 0,87,100,6,0,81,88,124,0,0,106,8,0,106,9,0, - 131,0,0,1,124,0,0,106,8,0,106,11,0,131,0,0, - 1,113,28,0,87,100,6,0,116,2,0,124,1,0,61,88, - 100,6,0,83,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,102,32,97,32, - 112,111,116,101,110,116,105,97,108,32,100,101,97,100,108,111, - 99,107,32,105,115,32,100,101,116,101,99,116,101,100,44,10, - 32,32,32,32,32,32,32,32,97,32,95,68,101,97,100,108, - 111,99,107,69,114,114,111,114,32,105,115,32,114,97,105,115, - 101,100,46,10,32,32,32,32,32,32,32,32,79,116,104,101, - 114,119,105,115,101,44,32,116,104,101,32,108,111,99,107,32, - 105,115,32,97,108,119,97,121,115,32,97,99,113,117,105,114, - 101,100,32,97,110,100,32,84,114,117,101,32,105,115,32,114, - 101,116,117,114,110,101,100,46,10,32,32,32,32,32,32,32, - 32,114,68,0,0,0,114,29,0,0,0,84,122,23,100,101, - 97,100,108,111,99,107,32,100,101,116,101,99,116,101,100,32, - 98,121,32,37,114,70,78,41,12,114,69,0,0,0,114,78, - 0,0,0,114,79,0,0,0,114,70,0,0,0,114,74,0, - 0,0,114,73,0,0,0,114,83,0,0,0,114,66,0,0, - 0,114,71,0,0,0,218,7,97,99,113,117,105,114,101,114, - 75,0,0,0,218,7,114,101,108,101,97,115,101,41,2,114, - 76,0,0,0,114,82,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,84,0,0,0,172,0,0, - 0,115,32,0,0,0,0,6,12,1,10,1,3,1,3,1, - 10,1,30,1,9,1,15,1,4,1,12,1,19,1,18,1, - 24,2,13,1,20,2,122,19,95,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,2,0,0,0,10,0,0,0,67,0,0,0, - 115,165,0,0,0,116,0,0,106,1,0,131,0,0,125,1, - 0,124,0,0,106,2,0,143,138,0,1,124,0,0,106,3, - 0,124,1,0,107,3,0,114,52,0,116,4,0,100,1,0, - 131,1,0,130,1,0,110,0,0,124,0,0,106,5,0,100, - 2,0,107,4,0,115,73,0,116,6,0,130,1,0,124,0, - 0,4,106,5,0,100,3,0,56,2,95,5,0,124,0,0, - 106,5,0,100,2,0,107,2,0,114,155,0,100,0,0,124, - 0,0,95,3,0,124,0,0,106,7,0,114,155,0,124,0, - 0,4,106,7,0,100,3,0,56,2,95,7,0,124,0,0, - 106,8,0,106,9,0,131,0,0,1,113,155,0,110,0,0, - 87,100,0,0,81,88,100,0,0,83,41,4,78,122,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,68, - 0,0,0,114,29,0,0,0,41,10,114,69,0,0,0,114, - 78,0,0,0,114,70,0,0,0,114,73,0,0,0,218,12, - 82,117,110,116,105,109,101,69,114,114,111,114,114,74,0,0, - 0,218,14,65,115,115,101,114,116,105,111,110,69,114,114,111, - 114,114,75,0,0,0,114,71,0,0,0,114,85,0,0,0, - 41,2,114,76,0,0,0,114,82,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,85,0,0,0, - 197,0,0,0,115,22,0,0,0,0,1,12,1,10,1,15, - 1,15,1,21,1,15,1,15,1,9,1,9,1,15,1,122, - 19,95,77,111,100,117,108,101,76,111,99,107,46,114,101,108, - 101,97,115,101,99,1,0,0,0,0,0,0,0,1,0,0, - 0,4,0,0,0,67,0,0,0,115,25,0,0,0,100,1, - 0,106,0,0,124,0,0,106,1,0,116,2,0,124,0,0, - 131,1,0,131,2,0,83,41,2,78,122,23,95,77,111,100, - 117,108,101,76,111,99,107,40,123,33,114,125,41,32,97,116, - 32,123,125,41,3,114,47,0,0,0,114,72,0,0,0,114, - 48,0,0,0,41,1,114,76,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,218,8,95,95,114,101, - 112,114,95,95,210,0,0,0,115,2,0,0,0,0,1,122, - 20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,114, - 101,112,114,95,95,78,41,9,114,57,0,0,0,114,56,0, - 0,0,114,58,0,0,0,114,59,0,0,0,114,77,0,0, - 0,114,83,0,0,0,114,84,0,0,0,114,85,0,0,0, - 114,88,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,67,0,0,0,146,0, - 0,0,115,12,0,0,0,12,4,6,2,12,8,12,12,12, - 25,12,13,114,67,0,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,70,0, - 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1, - 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0, - 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,100, - 7,0,132,0,0,90,6,0,100,8,0,100,9,0,132,0, - 0,90,7,0,100,10,0,83,41,11,218,16,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,122,86,65,32, - 115,105,109,112,108,101,32,95,77,111,100,117,108,101,76,111, - 99,107,32,101,113,117,105,118,97,108,101,110,116,32,102,111, - 114,32,80,121,116,104,111,110,32,98,117,105,108,100,115,32, - 119,105,116,104,111,117,116,10,32,32,32,32,109,117,108,116, - 105,45,116,104,114,101,97,100,105,110,103,32,115,117,112,112, - 111,114,116,46,99,2,0,0,0,0,0,0,0,2,0,0, - 0,2,0,0,0,67,0,0,0,115,22,0,0,0,124,1, - 0,124,0,0,95,0,0,100,1,0,124,0,0,95,1,0, - 100,0,0,83,41,2,78,114,68,0,0,0,41,2,114,72, - 0,0,0,114,74,0,0,0,41,2,114,76,0,0,0,114, - 72,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,77,0,0,0,218,0,0,0,115,4,0,0, - 0,0,1,9,1,122,25,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,19,0,0,0,124,0,0,4,106,0, - 0,100,1,0,55,2,95,0,0,100,2,0,83,41,3,78, - 114,29,0,0,0,84,41,1,114,74,0,0,0,41,1,114, - 76,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,84,0,0,0,222,0,0,0,115,4,0,0, - 0,0,1,15,1,122,24,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,97,99,113,117,105,114,101,99, + 107,218,4,108,111,99,107,218,6,119,97,107,101,117,112,114, + 67,0,0,0,218,5,111,119,110,101,114,218,5,99,111,117, + 110,116,218,7,119,97,105,116,101,114,115,41,2,218,4,115, + 101,108,102,114,67,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,8,95,95,105,110,105,116,95, + 95,154,0,0,0,115,12,0,0,0,0,1,15,1,15,1, + 9,1,9,1,9,1,122,20,95,77,111,100,117,108,101,76, + 111,99,107,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,4,0,0,0,2,0,0,0,67,0,0, + 0,115,87,0,0,0,116,0,0,106,1,0,131,0,0,125, + 1,0,124,0,0,106,2,0,125,2,0,120,59,0,116,3, + 0,106,4,0,124,2,0,131,1,0,125,3,0,124,3,0, + 100,0,0,107,8,0,114,55,0,100,1,0,83,124,3,0, + 106,2,0,125,2,0,124,2,0,124,1,0,107,2,0,114, + 24,0,100,2,0,83,113,24,0,100,0,0,83,41,3,78, + 70,84,41,5,114,72,0,0,0,218,9,103,101,116,95,105, + 100,101,110,116,114,75,0,0,0,218,12,95,98,108,111,99, + 107,105,110,103,95,111,110,218,3,103,101,116,41,4,114,78, + 0,0,0,218,2,109,101,218,3,116,105,100,114,73,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,12,104,97,115,95,100,101,97,100,108,111,99,107,162,0, + 0,0,115,18,0,0,0,0,2,12,1,9,1,3,1,15, + 1,12,1,4,1,9,1,12,1,122,24,95,77,111,100,117, + 108,101,76,111,99,107,46,104,97,115,95,100,101,97,100,108, + 111,99,107,99,1,0,0,0,0,0,0,0,2,0,0,0, + 17,0,0,0,67,0,0,0,115,214,0,0,0,116,0,0, + 106,1,0,131,0,0,125,1,0,124,0,0,116,2,0,124, + 1,0,60,122,177,0,120,170,0,124,0,0,106,3,0,143, + 130,0,1,124,0,0,106,4,0,100,1,0,107,2,0,115, + 68,0,124,0,0,106,5,0,124,1,0,107,2,0,114,96, + 0,124,1,0,124,0,0,95,5,0,124,0,0,4,106,4, + 0,100,2,0,55,2,95,4,0,100,3,0,83,124,0,0, + 106,6,0,131,0,0,114,127,0,116,7,0,100,4,0,124, + 0,0,22,131,1,0,130,1,0,110,0,0,124,0,0,106, + 8,0,106,9,0,100,5,0,131,1,0,114,163,0,124,0, + 0,4,106,10,0,100,2,0,55,2,95,10,0,110,0,0, + 87,100,6,0,81,88,124,0,0,106,8,0,106,9,0,131, + 0,0,1,124,0,0,106,8,0,106,11,0,131,0,0,1, + 113,28,0,87,100,6,0,116,2,0,124,1,0,61,88,100, + 6,0,83,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,102,32,97,32,112, + 111,116,101,110,116,105,97,108,32,100,101,97,100,108,111,99, + 107,32,105,115,32,100,101,116,101,99,116,101,100,44,10,32, + 32,32,32,32,32,32,32,97,32,95,68,101,97,100,108,111, + 99,107,69,114,114,111,114,32,105,115,32,114,97,105,115,101, + 100,46,10,32,32,32,32,32,32,32,32,79,116,104,101,114, + 119,105,115,101,44,32,116,104,101,32,108,111,99,107,32,105, + 115,32,97,108,119,97,121,115,32,97,99,113,117,105,114,101, + 100,32,97,110,100,32,84,114,117,101,32,105,115,32,114,101, + 116,117,114,110,101,100,46,10,32,32,32,32,32,32,32,32, + 114,71,0,0,0,114,29,0,0,0,84,122,23,100,101,97, + 100,108,111,99,107,32,100,101,116,101,99,116,101,100,32,98, + 121,32,37,114,70,78,41,12,114,72,0,0,0,114,80,0, + 0,0,114,81,0,0,0,114,73,0,0,0,114,76,0,0, + 0,114,75,0,0,0,114,85,0,0,0,114,69,0,0,0, + 114,74,0,0,0,218,7,97,99,113,117,105,114,101,114,77, + 0,0,0,218,7,114,101,108,101,97,115,101,41,2,114,78, + 0,0,0,114,84,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,86,0,0,0,174,0,0,0, + 115,32,0,0,0,0,6,12,1,10,1,3,1,3,1,10, + 1,30,1,9,1,15,1,4,1,12,1,19,1,18,1,24, + 2,13,1,20,2,122,19,95,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,2,0,0,0,10,0,0,0,67,0,0,0,115, + 165,0,0,0,116,0,0,106,1,0,131,0,0,125,1,0, + 124,0,0,106,2,0,143,138,0,1,124,0,0,106,3,0, + 124,1,0,107,3,0,114,52,0,116,4,0,100,1,0,131, + 1,0,130,1,0,110,0,0,124,0,0,106,5,0,100,2, + 0,107,4,0,115,73,0,116,6,0,130,1,0,124,0,0, + 4,106,5,0,100,3,0,56,2,95,5,0,124,0,0,106, + 5,0,100,2,0,107,2,0,114,155,0,100,0,0,124,0, + 0,95,3,0,124,0,0,106,7,0,114,155,0,124,0,0, + 4,106,7,0,100,3,0,56,2,95,7,0,124,0,0,106, + 8,0,106,9,0,131,0,0,1,113,155,0,110,0,0,87, + 100,0,0,81,88,100,0,0,83,41,4,78,122,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,71,0, + 0,0,114,29,0,0,0,41,10,114,72,0,0,0,114,80, + 0,0,0,114,73,0,0,0,114,75,0,0,0,218,12,82, + 117,110,116,105,109,101,69,114,114,111,114,114,76,0,0,0, + 218,14,65,115,115,101,114,116,105,111,110,69,114,114,111,114, + 114,77,0,0,0,114,74,0,0,0,114,87,0,0,0,41, + 2,114,78,0,0,0,114,84,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,87,0,0,0,199, + 0,0,0,115,22,0,0,0,0,1,12,1,10,1,15,1, + 15,1,21,1,15,1,15,1,9,1,9,1,15,1,122,19, + 95,77,111,100,117,108,101,76,111,99,107,46,114,101,108,101, + 97,115,101,99,1,0,0,0,0,0,0,0,1,0,0,0, + 4,0,0,0,67,0,0,0,115,25,0,0,0,100,1,0, + 106,0,0,124,0,0,106,1,0,116,2,0,124,0,0,131, + 1,0,131,2,0,83,41,2,78,122,23,95,77,111,100,117, + 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32, + 123,125,41,3,114,47,0,0,0,114,67,0,0,0,114,48, + 0,0,0,41,1,114,78,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,8,95,95,114,101,112, + 114,95,95,212,0,0,0,115,2,0,0,0,0,1,122,20, + 95,77,111,100,117,108,101,76,111,99,107,46,95,95,114,101, + 112,114,95,95,78,41,9,114,57,0,0,0,114,56,0,0, + 0,114,58,0,0,0,114,59,0,0,0,114,79,0,0,0, + 114,85,0,0,0,114,86,0,0,0,114,87,0,0,0,114, + 90,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,70,0,0,0,148,0,0, + 0,115,12,0,0,0,12,4,6,2,12,8,12,12,12,25, + 12,13,114,70,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,64,0,0,0,115,70,0,0, + 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, + 90,3,0,100,2,0,100,3,0,132,0,0,90,4,0,100, + 4,0,100,5,0,132,0,0,90,5,0,100,6,0,100,7, + 0,132,0,0,90,6,0,100,8,0,100,9,0,132,0,0, + 90,7,0,100,10,0,83,41,11,218,16,95,68,117,109,109, + 121,77,111,100,117,108,101,76,111,99,107,122,86,65,32,115, + 105,109,112,108,101,32,95,77,111,100,117,108,101,76,111,99, + 107,32,101,113,117,105,118,97,108,101,110,116,32,102,111,114, + 32,80,121,116,104,111,110,32,98,117,105,108,100,115,32,119, + 105,116,104,111,117,116,10,32,32,32,32,109,117,108,116,105, + 45,116,104,114,101,97,100,105,110,103,32,115,117,112,112,111, + 114,116,46,99,2,0,0,0,0,0,0,0,2,0,0,0, + 2,0,0,0,67,0,0,0,115,22,0,0,0,124,1,0, + 124,0,0,95,0,0,100,1,0,124,0,0,95,1,0,100, + 0,0,83,41,2,78,114,71,0,0,0,41,2,114,67,0, + 0,0,114,76,0,0,0,41,2,114,78,0,0,0,114,67, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,79,0,0,0,220,0,0,0,115,4,0,0,0, + 0,1,9,1,122,25,95,68,117,109,109,121,77,111,100,117, + 108,101,76,111,99,107,46,95,95,105,110,105,116,95,95,99, 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,49,0,0,0,124,0,0,106,0,0,100, - 1,0,107,2,0,114,30,0,116,1,0,100,2,0,131,1, - 0,130,1,0,110,0,0,124,0,0,4,106,0,0,100,3, - 0,56,2,95,0,0,100,0,0,83,41,4,78,114,68,0, - 0,0,122,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,29,0,0,0,41,2,114,74,0,0,0,114, - 86,0,0,0,41,1,114,76,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,85,0,0,0,226, - 0,0,0,115,6,0,0,0,0,1,15,1,15,1,122,24, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 46,114,101,108,101,97,115,101,99,1,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,67,0,0,0,115,25,0, - 0,0,100,1,0,106,0,0,124,0,0,106,1,0,116,2, - 0,124,0,0,131,1,0,131,2,0,83,41,2,78,122,28, - 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107, - 40,123,33,114,125,41,32,97,116,32,123,125,41,3,114,47, - 0,0,0,114,72,0,0,0,114,48,0,0,0,41,1,114, - 76,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,88,0,0,0,231,0,0,0,115,2,0,0, - 0,0,1,122,25,95,68,117,109,109,121,77,111,100,117,108, - 101,76,111,99,107,46,95,95,114,101,112,114,95,95,78,41, - 8,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,59,0,0,0,114,77,0,0,0,114,84,0,0,0,114, - 85,0,0,0,114,88,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,89,0, - 0,0,214,0,0,0,115,10,0,0,0,12,2,6,2,12, - 4,12,4,12,5,114,89,0,0,0,99,1,0,0,0,0, - 0,0,0,3,0,0,0,11,0,0,0,3,0,0,0,115, - 142,0,0,0,100,1,0,125,1,0,121,17,0,116,0,0, - 136,0,0,25,131,0,0,125,1,0,87,110,18,0,4,116, - 1,0,107,10,0,114,43,0,1,1,1,89,110,1,0,88, - 124,1,0,100,1,0,107,8,0,114,138,0,116,2,0,100, - 1,0,107,8,0,114,83,0,116,3,0,136,0,0,131,1, - 0,125,1,0,110,12,0,116,4,0,136,0,0,131,1,0, - 125,1,0,135,0,0,102,1,0,100,2,0,100,3,0,134, - 0,0,125,2,0,116,5,0,106,6,0,124,1,0,124,2, - 0,131,2,0,116,0,0,136,0,0,60,110,0,0,124,1, - 0,83,41,4,122,109,71,101,116,32,111,114,32,99,114,101, - 97,116,101,32,116,104,101,32,109,111,100,117,108,101,32,108, - 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32, - 109,111,100,117,108,101,32,110,97,109,101,46,10,10,32,32, - 32,32,83,104,111,117,108,100,32,111,110,108,121,32,98,101, - 32,99,97,108,108,101,100,32,119,105,116,104,32,116,104,101, - 32,105,109,112,111,114,116,32,108,111,99,107,32,116,97,107, - 101,110,46,78,99,1,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,19,0,0,0,115,11,0,0,0,116,0, - 0,136,0,0,61,100,0,0,83,41,1,78,41,1,218,13, - 95,109,111,100,117,108,101,95,108,111,99,107,115,41,1,114, - 36,0,0,0,41,1,114,72,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,2,99,98,251,0,0,0,115,2,0, - 0,0,0,1,122,28,95,103,101,116,95,109,111,100,117,108, - 101,95,108,111,99,107,46,60,108,111,99,97,108,115,62,46, - 99,98,41,7,114,90,0,0,0,218,8,75,101,121,69,114, - 114,111,114,114,69,0,0,0,114,89,0,0,0,114,67,0, - 0,0,218,8,95,119,101,97,107,114,101,102,90,3,114,101, - 102,41,3,114,72,0,0,0,114,70,0,0,0,114,91,0, - 0,0,114,4,0,0,0,41,1,114,72,0,0,0,114,5, - 0,0,0,218,16,95,103,101,116,95,109,111,100,117,108,101, - 95,108,111,99,107,237,0,0,0,115,24,0,0,0,0,4, - 6,1,3,1,17,1,13,1,5,1,12,1,12,1,15,2, - 12,1,18,2,25,1,114,94,0,0,0,99,1,0,0,0, - 0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,0, - 115,71,0,0,0,116,0,0,124,0,0,131,1,0,125,1, - 0,116,1,0,106,2,0,131,0,0,1,121,14,0,124,1, - 0,106,3,0,131,0,0,1,87,110,18,0,4,116,4,0, - 107,10,0,114,56,0,1,1,1,89,110,11,0,88,124,1, - 0,106,5,0,131,0,0,1,100,1,0,83,41,2,97,21, - 1,0,0,82,101,108,101,97,115,101,32,116,104,101,32,103, - 108,111,98,97,108,32,105,109,112,111,114,116,32,108,111,99, - 107,44,32,97,110,100,32,97,99,113,117,105,114,101,115,32, - 116,104,101,110,32,114,101,108,101,97,115,101,32,116,104,101, - 10,32,32,32,32,109,111,100,117,108,101,32,108,111,99,107, - 32,102,111,114,32,97,32,103,105,118,101,110,32,109,111,100, - 117,108,101,32,110,97,109,101,46,10,32,32,32,32,84,104, - 105,115,32,105,115,32,117,115,101,100,32,116,111,32,101,110, - 115,117,114,101,32,97,32,109,111,100,117,108,101,32,105,115, - 32,99,111,109,112,108,101,116,101,108,121,32,105,110,105,116, - 105,97,108,105,122,101,100,44,32,105,110,32,116,104,101,10, - 32,32,32,32,101,118,101,110,116,32,105,116,32,105,115,32, - 98,101,105,110,103,32,105,109,112,111,114,116,101,100,32,98, - 121,32,97,110,111,116,104,101,114,32,116,104,114,101,97,100, - 46,10,10,32,32,32,32,83,104,111,117,108,100,32,111,110, - 108,121,32,98,101,32,99,97,108,108,101,100,32,119,105,116, - 104,32,116,104,101,32,105,109,112,111,114,116,32,108,111,99, - 107,32,116,97,107,101,110,46,78,41,6,114,94,0,0,0, - 218,4,95,105,109,112,218,12,114,101,108,101,97,115,101,95, - 108,111,99,107,114,84,0,0,0,114,66,0,0,0,114,85, - 0,0,0,41,2,114,72,0,0,0,114,70,0,0,0,114, + 67,0,0,0,115,19,0,0,0,124,0,0,4,106,0,0, + 100,1,0,55,2,95,0,0,100,2,0,83,41,3,78,114, + 29,0,0,0,84,41,1,114,76,0,0,0,41,1,114,78, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,86,0,0,0,224,0,0,0,115,4,0,0,0, + 0,1,15,1,122,24,95,68,117,109,109,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,1,0,0,0,3,0,0,0,67, + 0,0,0,115,49,0,0,0,124,0,0,106,0,0,100,1, + 0,107,2,0,114,30,0,116,1,0,100,2,0,131,1,0, + 130,1,0,110,0,0,124,0,0,4,106,0,0,100,3,0, + 56,2,95,0,0,100,0,0,83,41,4,78,114,71,0,0, + 0,122,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,29,0,0,0,41,2,114,76,0,0,0,114,88, + 0,0,0,41,1,114,78,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,87,0,0,0,228,0, + 0,0,115,6,0,0,0,0,1,15,1,15,1,122,24,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,46, + 114,101,108,101,97,115,101,99,1,0,0,0,0,0,0,0, + 1,0,0,0,4,0,0,0,67,0,0,0,115,25,0,0, + 0,100,1,0,106,0,0,124,0,0,106,1,0,116,2,0, + 124,0,0,131,1,0,131,2,0,83,41,2,78,122,28,95, + 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,40, + 123,33,114,125,41,32,97,116,32,123,125,41,3,114,47,0, + 0,0,114,67,0,0,0,114,48,0,0,0,41,1,114,78, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,90,0,0,0,233,0,0,0,115,2,0,0,0, + 0,1,122,25,95,68,117,109,109,121,77,111,100,117,108,101, + 76,111,99,107,46,95,95,114,101,112,114,95,95,78,41,8, + 114,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114, + 59,0,0,0,114,79,0,0,0,114,86,0,0,0,114,87, + 0,0,0,114,90,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,91,0,0, + 0,216,0,0,0,115,10,0,0,0,12,2,6,2,12,4, + 12,4,12,5,114,91,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,52, + 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, + 1,0,100,2,0,132,0,0,90,3,0,100,3,0,100,4, + 0,132,0,0,90,4,0,100,5,0,100,6,0,132,0,0, + 90,5,0,100,7,0,83,41,8,218,18,95,77,111,100,117, + 108,101,76,111,99,107,77,97,110,97,103,101,114,99,2,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,22,0,0,0,124,1,0,124,0,0,95,0,0, + 100,0,0,124,0,0,95,1,0,100,0,0,83,41,1,78, + 41,2,218,5,95,110,97,109,101,218,5,95,108,111,99,107, + 41,2,114,78,0,0,0,114,67,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,79,0,0,0, + 239,0,0,0,115,4,0,0,0,0,1,9,1,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, + 0,0,0,1,0,0,0,10,0,0,0,67,0,0,0,115, + 53,0,0,0,122,22,0,116,0,0,124,0,0,106,1,0, + 131,1,0,124,0,0,95,2,0,87,100,0,0,116,3,0, + 106,4,0,131,0,0,1,88,124,0,0,106,2,0,106,5, + 0,131,0,0,1,100,0,0,83,41,1,78,41,6,218,16, + 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107, + 114,93,0,0,0,114,94,0,0,0,218,4,95,105,109,112, + 218,12,114,101,108,101,97,115,101,95,108,111,99,107,114,86, + 0,0,0,41,1,114,78,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,9,95,95,101,110,116, + 101,114,95,95,243,0,0,0,115,8,0,0,0,0,1,3, + 1,22,2,11,1,122,28,95,77,111,100,117,108,101,76,111, + 99,107,77,97,110,97,103,101,114,46,95,95,101,110,116,101, + 114,95,95,99,1,0,0,0,0,0,0,0,3,0,0,0, + 1,0,0,0,79,0,0,0,115,17,0,0,0,124,0,0, + 106,0,0,106,1,0,131,0,0,1,100,0,0,83,41,1, + 78,41,2,114,94,0,0,0,114,87,0,0,0,41,3,114, + 78,0,0,0,218,4,97,114,103,115,218,6,107,119,97,114, + 103,115,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,218,8,95,95,101,120,105,116,95,95,250,0,0,0,115, + 2,0,0,0,0,1,122,27,95,77,111,100,117,108,101,76, + 111,99,107,77,97,110,97,103,101,114,46,95,95,101,120,105, + 116,95,95,78,41,6,114,57,0,0,0,114,56,0,0,0, + 114,58,0,0,0,114,79,0,0,0,114,98,0,0,0,114, + 101,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,92,0,0,0,237,0,0, + 0,115,6,0,0,0,12,2,12,4,12,7,114,92,0,0, + 0,99,1,0,0,0,0,0,0,0,3,0,0,0,11,0, + 0,0,3,0,0,0,115,142,0,0,0,100,1,0,125,1, + 0,121,17,0,116,0,0,136,0,0,25,131,0,0,125,1, + 0,87,110,18,0,4,116,1,0,107,10,0,114,43,0,1, + 1,1,89,110,1,0,88,124,1,0,100,1,0,107,8,0, + 114,138,0,116,2,0,100,1,0,107,8,0,114,83,0,116, + 3,0,136,0,0,131,1,0,125,1,0,110,12,0,116,4, + 0,136,0,0,131,1,0,125,1,0,135,0,0,102,1,0, + 100,2,0,100,3,0,134,0,0,125,2,0,116,5,0,106, + 6,0,124,1,0,124,2,0,131,2,0,116,0,0,136,0, + 0,60,110,0,0,124,1,0,83,41,4,122,109,71,101,116, + 32,111,114,32,99,114,101,97,116,101,32,116,104,101,32,109, + 111,100,117,108,101,32,108,111,99,107,32,102,111,114,32,97, + 32,103,105,118,101,110,32,109,111,100,117,108,101,32,110,97, + 109,101,46,10,10,32,32,32,32,83,104,111,117,108,100,32, + 111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,119, + 105,116,104,32,116,104,101,32,105,109,112,111,114,116,32,108, + 111,99,107,32,116,97,107,101,110,46,78,99,1,0,0,0, + 0,0,0,0,1,0,0,0,2,0,0,0,19,0,0,0, + 115,11,0,0,0,116,0,0,136,0,0,61,100,0,0,83, + 41,1,78,41,1,218,13,95,109,111,100,117,108,101,95,108, + 111,99,107,115,41,1,114,36,0,0,0,41,1,114,67,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,2,99,98, + 14,1,0,0,115,2,0,0,0,0,1,122,28,95,103,101, + 116,95,109,111,100,117,108,101,95,108,111,99,107,46,60,108, + 111,99,97,108,115,62,46,99,98,41,7,114,102,0,0,0, + 218,8,75,101,121,69,114,114,111,114,114,72,0,0,0,114, + 91,0,0,0,114,70,0,0,0,218,8,95,119,101,97,107, + 114,101,102,90,3,114,101,102,41,3,114,67,0,0,0,114, + 73,0,0,0,114,103,0,0,0,114,4,0,0,0,41,1, + 114,67,0,0,0,114,5,0,0,0,114,95,0,0,0,0, + 1,0,0,115,24,0,0,0,0,4,6,1,3,1,17,1, + 13,1,5,1,12,1,12,1,15,2,12,1,18,2,25,1, + 114,95,0,0,0,99,1,0,0,0,0,0,0,0,2,0, + 0,0,11,0,0,0,67,0,0,0,115,71,0,0,0,116, + 0,0,124,0,0,131,1,0,125,1,0,116,1,0,106,2, + 0,131,0,0,1,121,14,0,124,1,0,106,3,0,131,0, + 0,1,87,110,18,0,4,116,4,0,107,10,0,114,56,0, + 1,1,1,89,110,11,0,88,124,1,0,106,5,0,131,0, + 0,1,100,1,0,83,41,2,97,21,1,0,0,82,101,108, + 101,97,115,101,32,116,104,101,32,103,108,111,98,97,108,32, + 105,109,112,111,114,116,32,108,111,99,107,44,32,97,110,100, + 32,97,99,113,117,105,114,101,115,32,116,104,101,110,32,114, + 101,108,101,97,115,101,32,116,104,101,10,32,32,32,32,109, + 111,100,117,108,101,32,108,111,99,107,32,102,111,114,32,97, + 32,103,105,118,101,110,32,109,111,100,117,108,101,32,110,97, + 109,101,46,10,32,32,32,32,84,104,105,115,32,105,115,32, + 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, + 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, + 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, + 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, + 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, + 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, + 104,101,114,32,116,104,114,101,97,100,46,10,10,32,32,32, + 32,83,104,111,117,108,100,32,111,110,108,121,32,98,101,32, + 99,97,108,108,101,100,32,119,105,116,104,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,32,116,97,107,101, + 110,46,78,41,6,114,95,0,0,0,114,96,0,0,0,114, + 97,0,0,0,114,86,0,0,0,114,69,0,0,0,114,87, + 0,0,0,41,2,114,67,0,0,0,114,73,0,0,0,114, 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,19, 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, - 117,108,101,0,1,0,0,115,14,0,0,0,0,7,12,1, - 10,1,3,1,14,1,13,3,5,2,114,97,0,0,0,99, + 117,108,101,19,1,0,0,115,14,0,0,0,0,7,12,1, + 10,1,3,1,14,1,13,3,5,2,114,106,0,0,0,99, 1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, 79,0,0,0,115,13,0,0,0,124,0,0,124,1,0,124, 2,0,142,0,0,83,41,1,97,46,1,0,0,114,101,109, @@ -586,782 +640,1395 @@ const unsigned char _Py_M__importlib[] = { 32,40,101,46,103,46,32,119,104,101,110,32,101,120,101,99, 117,116,105,110,103,10,32,32,32,32,109,111,100,117,108,101, 32,99,111,100,101,41,10,32,32,32,32,114,4,0,0,0, - 41,3,218,1,102,218,4,97,114,103,115,90,4,107,119,100, - 115,114,4,0,0,0,114,4,0,0,0,114,5,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,20,1,0,0,115, - 2,0,0,0,0,8,114,100,0,0,0,105,228,12,0,0, - 233,2,0,0,0,114,13,0,0,0,115,2,0,0,0,13, - 10,90,11,95,95,112,121,99,97,99,104,101,95,95,122,3, - 46,112,121,122,4,46,112,121,99,122,4,46,112,121,111,78, - 99,2,0,0,0,0,0,0,0,11,0,0,0,6,0,0, - 0,67,0,0,0,115,180,0,0,0,124,1,0,100,1,0, - 107,8,0,114,25,0,116,0,0,106,1,0,106,2,0,12, - 110,3,0,124,1,0,125,2,0,124,2,0,114,46,0,116, - 3,0,125,3,0,110,6,0,116,4,0,125,3,0,116,5, - 0,124,0,0,131,1,0,92,2,0,125,4,0,125,5,0, - 124,5,0,106,6,0,100,2,0,131,1,0,92,3,0,125, - 6,0,125,7,0,125,8,0,116,0,0,106,7,0,106,8, - 0,125,9,0,124,9,0,100,1,0,107,8,0,114,133,0, - 116,9,0,100,3,0,131,1,0,130,1,0,110,0,0,100, - 4,0,106,10,0,124,6,0,124,7,0,124,9,0,124,3, - 0,100,5,0,25,103,4,0,131,1,0,125,10,0,116,11, - 0,124,4,0,116,12,0,124,10,0,131,3,0,83,41,6, - 97,244,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,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,47,46, - 112,121,111,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, - 47,46,112,121,111,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,32,32,84,104,101,32,101,120,116, - 101,110,115,105,111,110,10,32,32,32,32,119,105,108,108,32, - 98,101,32,46,112,121,99,32,117,110,108,101,115,115,32,115, - 121,115,46,102,108,97,103,115,46,111,112,116,105,109,105,122, - 101,32,105,115,32,110,111,110,45,122,101,114,111,44,32,116, - 104,101,110,32,105,116,32,119,105,108,108,32,98,101,32,46, - 112,121,111,46,10,10,32,32,32,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,32,116,104,101,110,32,105,116, - 32,109,117,115,116,32,98,101,32,97,32,98,111,111,108,101, - 97,110,32,97,110,100,32,105,115,32,117,115,101,100,32,105, - 110,10,32,32,32,32,112,108,97,99,101,32,111,102,32,115, - 121,115,46,102,108,97,103,115,46,111,112,116,105,109,105,122, - 101,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,218,1,46,122,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,30,0,0,0,114,68,0,0,0,41,13,114, - 7,0,0,0,218,5,102,108,97,103,115,218,8,111,112,116, - 105,109,105,122,101,218,23,68,69,66,85,71,95,66,89,84, - 69,67,79,68,69,95,83,85,70,70,73,88,69,83,218,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,38,0,0,0, - 218,9,112,97,114,116,105,116,105,111,110,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,26,0,0,0, - 114,28,0,0,0,218,8,95,80,89,67,65,67,72,69,41, - 11,114,35,0,0,0,90,14,100,101,98,117,103,95,111,118, - 101,114,114,105,100,101,218,5,100,101,98,117,103,218,8,115, - 117,102,102,105,120,101,115,218,4,104,101,97,100,114,37,0, - 0,0,218,13,98,97,115,101,95,102,105,108,101,110,97,109, - 101,218,3,115,101,112,114,36,0,0,0,90,3,116,97,103, - 218,8,102,105,108,101,110,97,109,101,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,218,17,99,97,99,104,101, - 95,102,114,111,109,95,115,111,117,114,99,101,143,1,0,0, - 115,22,0,0,0,0,13,31,1,6,1,9,2,6,1,18, - 1,24,1,12,1,12,1,15,1,31,1,114,118,0,0,0, - 99,1,0,0,0,0,0,0,0,5,0,0,0,5,0,0, - 0,67,0,0,0,115,193,0,0,0,116,0,0,106,1,0, - 106,2,0,100,1,0,107,8,0,114,33,0,116,3,0,100, - 2,0,131,1,0,130,1,0,110,0,0,116,4,0,124,0, - 0,131,1,0,92,2,0,125,1,0,125,2,0,116,4,0, - 124,1,0,131,1,0,92,2,0,125,1,0,125,3,0,124, - 3,0,116,5,0,107,3,0,114,108,0,116,6,0,100,3, - 0,106,7,0,116,5,0,124,0,0,131,2,0,131,1,0, - 130,1,0,110,0,0,124,2,0,106,8,0,100,4,0,131, - 1,0,100,5,0,107,3,0,114,153,0,116,6,0,100,6, - 0,106,7,0,124,2,0,131,1,0,131,1,0,130,1,0, - 110,0,0,124,2,0,106,9,0,100,4,0,131,1,0,100, - 7,0,25,125,4,0,116,10,0,124,1,0,124,4,0,116, - 11,0,100,7,0,25,23,131,2,0,83,41,8,97,121,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,47,46,112,121,111, - 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,47,46,112,121,111,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,47,46,112, - 121,111,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,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,122,36,115,121, + 41,3,218,1,102,114,99,0,0,0,90,4,107,119,100,115, + 114,4,0,0,0,114,4,0,0,0,114,5,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,39,1,0,0,115,2, + 0,0,0,0,8,114,108,0,0,0,105,228,12,0,0,233, + 2,0,0,0,114,13,0,0,0,115,2,0,0,0,13,10, + 90,11,95,95,112,121,99,97,99,104,101,95,95,122,3,46, + 112,121,122,4,46,112,121,99,122,4,46,112,121,111,78,99, + 2,0,0,0,0,0,0,0,11,0,0,0,6,0,0,0, + 67,0,0,0,115,180,0,0,0,124,1,0,100,1,0,107, + 8,0,114,25,0,116,0,0,106,1,0,106,2,0,12,110, + 3,0,124,1,0,125,2,0,124,2,0,114,46,0,116,3, + 0,125,3,0,110,6,0,116,4,0,125,3,0,116,5,0, + 124,0,0,131,1,0,92,2,0,125,4,0,125,5,0,124, + 5,0,106,6,0,100,2,0,131,1,0,92,3,0,125,6, + 0,125,7,0,125,8,0,116,0,0,106,7,0,106,8,0, + 125,9,0,124,9,0,100,1,0,107,8,0,114,133,0,116, + 9,0,100,3,0,131,1,0,130,1,0,110,0,0,100,4, + 0,106,10,0,124,6,0,124,7,0,124,9,0,124,3,0, + 100,5,0,25,103,4,0,131,1,0,125,10,0,116,11,0, + 124,4,0,116,12,0,124,10,0,131,3,0,83,41,6,97, + 244,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,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,47,46,112, + 121,111,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,47, + 46,112,121,111,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,32,32,84,104,101,32,101,120,116,101, + 110,115,105,111,110,10,32,32,32,32,119,105,108,108,32,98, + 101,32,46,112,121,99,32,117,110,108,101,115,115,32,115,121, + 115,46,102,108,97,103,115,46,111,112,116,105,109,105,122,101, + 32,105,115,32,110,111,110,45,122,101,114,111,44,32,116,104, + 101,110,32,105,116,32,119,105,108,108,32,98,101,32,46,112, + 121,111,46,10,10,32,32,32,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,32,116,104,101,110,32,105,116,32, + 109,117,115,116,32,98,101,32,97,32,98,111,111,108,101,97, + 110,32,97,110,100,32,105,115,32,117,115,101,100,32,105,110, + 10,32,32,32,32,112,108,97,99,101,32,111,102,32,115,121, + 115,46,102,108,97,103,115,46,111,112,116,105,109,105,122,101, + 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,218,1,46,122,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,122,37,123,125,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,123,33,114,125,114,102,0,0,0,114,101, - 0,0,0,122,28,101,120,112,101,99,116,101,100,32,111,110, - 108,121,32,50,32,100,111,116,115,32,105,110,32,123,33,114, - 125,114,68,0,0,0,41,12,114,7,0,0,0,114,108,0, - 0,0,114,109,0,0,0,114,110,0,0,0,114,38,0,0, - 0,114,111,0,0,0,218,10,86,97,108,117,101,69,114,114, - 111,114,114,47,0,0,0,114,74,0,0,0,114,107,0,0, - 0,114,28,0,0,0,218,15,83,79,85,82,67,69,95,83, - 85,70,70,73,88,69,83,41,5,114,35,0,0,0,114,114, - 0,0,0,90,16,112,121,99,97,99,104,101,95,102,105,108, - 101,110,97,109,101,90,7,112,121,99,97,99,104,101,114,115, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,17,115,111,117,114,99,101,95,102,114,111,109,95, - 99,97,99,104,101,170,1,0,0,115,24,0,0,0,0,9, - 18,1,15,1,18,1,18,1,12,1,3,1,24,1,21,1, - 3,1,21,1,19,1,114,121,0,0,0,99,1,0,0,0, - 0,0,0,0,5,0,0,0,13,0,0,0,67,0,0,0, - 115,164,0,0,0,116,0,0,124,0,0,131,1,0,100,1, - 0,107,2,0,114,22,0,100,2,0,83,124,0,0,106,1, - 0,100,3,0,131,1,0,92,3,0,125,1,0,125,2,0, - 125,3,0,124,1,0,12,115,81,0,124,3,0,106,2,0, - 131,0,0,100,7,0,100,8,0,133,2,0,25,100,6,0, - 107,3,0,114,85,0,124,0,0,83,121,16,0,116,3,0, - 124,0,0,131,1,0,125,4,0,87,110,40,0,4,116,4, - 0,116,5,0,102,2,0,107,10,0,114,143,0,1,1,1, - 124,0,0,100,2,0,100,9,0,133,2,0,25,125,4,0, - 89,110,1,0,88,116,6,0,124,4,0,131,1,0,114,160, - 0,124,4,0,83,124,0,0,83,41,10,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,68,0,0,0,78,114, - 102,0,0,0,233,3,0,0,0,114,29,0,0,0,90,2, - 112,121,233,253,255,255,255,233,255,255,255,255,114,124,0,0, - 0,41,7,114,31,0,0,0,114,32,0,0,0,218,5,108, - 111,119,101,114,114,121,0,0,0,114,110,0,0,0,114,119, - 0,0,0,114,44,0,0,0,41,5,218,13,98,121,116,101, - 99,111,100,101,95,112,97,116,104,90,4,114,101,115,116,114, - 36,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,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,15,95,103,101, - 116,95,115,111,117,114,99,101,102,105,108,101,193,1,0,0, - 115,20,0,0,0,0,7,18,1,4,1,24,1,35,1,4, - 1,3,1,16,1,19,1,21,1,114,128,0,0,0,99,1, - 0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,67, - 0,0,0,115,60,0,0,0,121,19,0,116,0,0,124,0, - 0,131,1,0,106,1,0,125,1,0,87,110,24,0,4,116, - 2,0,107,10,0,114,45,0,1,1,1,100,1,0,125,1, - 0,89,110,1,0,88,124,1,0,100,2,0,79,125,1,0, - 124,1,0,83,41,3,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,105,182,1,0,0, - 233,128,0,0,0,41,3,114,39,0,0,0,114,41,0,0, - 0,114,40,0,0,0,41,2,114,35,0,0,0,114,42,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,10,95,99,97,108,99,95,109,111,100,101,212,1,0, - 0,115,12,0,0,0,0,2,3,1,19,1,13,1,11,3, - 10,1,114,130,0,0,0,218,9,118,101,114,98,111,115,105, - 116,121,114,29,0,0,0,99,1,0,0,0,1,0,0,0, - 3,0,0,0,4,0,0,0,71,0,0,0,115,81,0,0, - 0,116,0,0,106,1,0,106,2,0,124,1,0,107,5,0, - 114,77,0,124,0,0,106,3,0,100,6,0,131,1,0,115, - 46,0,100,3,0,124,0,0,23,125,0,0,110,0,0,116, - 4,0,124,0,0,106,5,0,124,2,0,140,0,0,100,4, - 0,116,0,0,106,6,0,131,1,1,1,110,0,0,100,5, - 0,83,41,7,122,61,80,114,105,110,116,32,116,104,101,32, - 109,101,115,115,97,103,101,32,116,111,32,115,116,100,101,114, - 114,32,105,102,32,45,118,47,80,89,84,72,79,78,86,69, - 82,66,79,83,69,32,105,115,32,116,117,114,110,101,100,32, - 111,110,46,250,1,35,250,7,105,109,112,111,114,116,32,122, - 2,35,32,114,54,0,0,0,78,41,2,114,132,0,0,0, - 114,133,0,0,0,41,7,114,7,0,0,0,114,103,0,0, - 0,218,7,118,101,114,98,111,115,101,114,9,0,0,0,218, - 5,112,114,105,110,116,114,47,0,0,0,218,6,115,116,100, - 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,131, - 0,0,0,114,99,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,16,95,118,101,114,98,111,115, - 101,95,109,101,115,115,97,103,101,224,1,0,0,115,8,0, - 0,0,0,2,18,1,15,1,13,1,114,138,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,52,0,0,0,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,100,2,0,132,0,0,90,3, - 0,100,3,0,100,4,0,132,0,0,90,4,0,100,5,0, - 100,6,0,132,0,0,90,5,0,100,7,0,83,41,8,218, - 13,95,77,97,110,97,103,101,82,101,108,111,97,100,99,2, - 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, - 0,0,0,115,13,0,0,0,124,1,0,124,0,0,95,0, - 0,100,0,0,83,41,1,78,41,1,218,5,95,110,97,109, - 101,41,2,114,76,0,0,0,114,72,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,77,0,0, - 0,234,1,0,0,115,2,0,0,0,0,1,122,22,95,77, - 97,110,97,103,101,82,101,108,111,97,100,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,67,0,0,0,115,25,0,0,0,124,0, - 0,106,0,0,116,1,0,106,2,0,107,6,0,124,0,0, - 95,3,0,100,0,0,83,41,1,78,41,4,114,140,0,0, - 0,114,7,0,0,0,218,7,109,111,100,117,108,101,115,218, - 10,95,105,115,95,114,101,108,111,97,100,41,1,114,76,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,9,95,95,101,110,116,101,114,95,95,237,1,0,0, - 115,2,0,0,0,0,1,122,23,95,77,97,110,97,103,101, - 82,101,108,111,97,100,46,95,95,101,110,116,101,114,95,95, - 99,1,0,0,0,0,0,0,0,2,0,0,0,12,0,0, - 0,71,0,0,0,115,80,0,0,0,116,0,0,100,1,0, - 100,2,0,132,0,0,124,1,0,68,131,1,0,131,1,0, - 114,76,0,124,0,0,106,1,0,12,114,76,0,121,17,0, - 116,2,0,106,3,0,124,0,0,106,4,0,61,87,113,76, - 0,4,116,5,0,107,10,0,114,72,0,1,1,1,89,113, - 76,0,88,110,0,0,100,0,0,83,41,3,78,99,1,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,0, - 0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,0, - 124,1,0,100,0,0,107,9,0,86,1,113,3,0,100,0, - 0,83,41,1,78,114,4,0,0,0,41,2,114,22,0,0, - 0,90,3,97,114,103,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,250,9,60,103,101,110,101,120,112,114,62, - 241,1,0,0,115,2,0,0,0,6,0,122,41,95,77,97, - 110,97,103,101,82,101,108,111,97,100,46,95,95,101,120,105, - 116,95,95,46,60,108,111,99,97,108,115,62,46,60,103,101, - 110,101,120,112,114,62,41,6,218,3,97,110,121,114,142,0, - 0,0,114,7,0,0,0,114,141,0,0,0,114,140,0,0, - 0,114,92,0,0,0,41,2,114,76,0,0,0,114,99,0, + 110,101,114,30,0,0,0,114,71,0,0,0,41,13,114,7, + 0,0,0,218,5,102,108,97,103,115,218,8,111,112,116,105, + 109,105,122,101,218,23,68,69,66,85,71,95,66,89,84,69, + 67,79,68,69,95,83,85,70,70,73,88,69,83,218,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,38,0,0,0,218, + 9,112,97,114,116,105,116,105,111,110,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,26,0,0,0,114, + 28,0,0,0,218,8,95,80,89,67,65,67,72,69,41,11, + 114,35,0,0,0,90,14,100,101,98,117,103,95,111,118,101, + 114,114,105,100,101,218,5,100,101,98,117,103,218,8,115,117, + 102,102,105,120,101,115,218,4,104,101,97,100,114,37,0,0, + 0,218,13,98,97,115,101,95,102,105,108,101,110,97,109,101, + 218,3,115,101,112,114,36,0,0,0,90,3,116,97,103,218, + 8,102,105,108,101,110,97,109,101,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,17,99,97,99,104,101,95, + 102,114,111,109,95,115,111,117,114,99,101,162,1,0,0,115, + 22,0,0,0,0,13,31,1,6,1,9,2,6,1,18,1, + 24,1,12,1,12,1,15,1,31,1,114,126,0,0,0,99, + 1,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0, + 67,0,0,0,115,193,0,0,0,116,0,0,106,1,0,106, + 2,0,100,1,0,107,8,0,114,33,0,116,3,0,100,2, + 0,131,1,0,130,1,0,110,0,0,116,4,0,124,0,0, + 131,1,0,92,2,0,125,1,0,125,2,0,116,4,0,124, + 1,0,131,1,0,92,2,0,125,1,0,125,3,0,124,3, + 0,116,5,0,107,3,0,114,108,0,116,6,0,100,3,0, + 106,7,0,116,5,0,124,0,0,131,2,0,131,1,0,130, + 1,0,110,0,0,124,2,0,106,8,0,100,4,0,131,1, + 0,100,5,0,107,3,0,114,153,0,116,6,0,100,6,0, + 106,7,0,124,2,0,131,1,0,131,1,0,130,1,0,110, + 0,0,124,2,0,106,9,0,100,4,0,131,1,0,100,7, + 0,25,125,4,0,116,10,0,124,1,0,124,4,0,116,11, + 0,100,7,0,25,23,131,2,0,83,41,8,97,121,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,47,46,112,121,111,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,47,46,112,121,111,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,47,46,112,121, + 111,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,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,122,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,122,37,123,125,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,123,33,114,125,114,110,0,0,0,114,109,0, + 0,0,122,28,101,120,112,101,99,116,101,100,32,111,110,108, + 121,32,50,32,100,111,116,115,32,105,110,32,123,33,114,125, + 114,71,0,0,0,41,12,114,7,0,0,0,114,116,0,0, + 0,114,117,0,0,0,114,118,0,0,0,114,38,0,0,0, + 114,119,0,0,0,218,10,86,97,108,117,101,69,114,114,111, + 114,114,47,0,0,0,114,76,0,0,0,114,115,0,0,0, + 114,28,0,0,0,218,15,83,79,85,82,67,69,95,83,85, + 70,70,73,88,69,83,41,5,114,35,0,0,0,114,122,0, + 0,0,90,16,112,121,99,97,99,104,101,95,102,105,108,101, + 110,97,109,101,90,7,112,121,99,97,99,104,101,114,123,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,8,95,95,101,120,105,116,95,95,240,1,0,0,115, - 10,0,0,0,0,1,35,1,3,1,17,1,13,1,122,22, - 95,77,97,110,97,103,101,82,101,108,111,97,100,46,95,95, - 101,120,105,116,95,95,78,41,6,114,57,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,77,0,0,0,114,143,0, - 0,0,114,146,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,139,0,0,0, - 232,1,0,0,115,6,0,0,0,12,2,12,3,12,3,114, - 139,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,5,0,0,0,0,0,0,0,115,82,0,0,0,101,0, - 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, - 100,2,0,100,3,0,135,0,0,102,1,0,100,4,0,100, - 5,0,134,0,1,90,4,0,135,0,0,102,1,0,100,6, - 0,100,7,0,134,0,0,90,5,0,135,0,0,102,1,0, - 100,8,0,100,9,0,134,0,0,90,6,0,135,0,0,83, - 41,10,218,14,95,77,111,100,117,108,101,77,97,110,97,103, - 101,114,122,122,67,111,110,116,101,120,116,32,109,97,110,97, - 103,101,114,32,119,104,105,99,104,32,114,101,116,117,114,110, - 115,32,116,104,101,32,109,111,100,117,108,101,32,116,111,32, - 98,101,32,108,111,97,100,101,100,46,10,10,32,32,32,32, - 68,111,101,115,32,116,104,101,32,112,114,111,112,101,114,32, - 117,110,108,111,97,100,105,110,103,32,102,114,111,109,32,115, - 121,115,46,109,111,100,117,108,101,115,32,117,112,111,110,32, - 102,97,105,108,117,114,101,46,10,10,32,32,32,32,218,10, - 114,101,115,101,116,95,110,97,109,101,84,99,2,0,0,0, - 1,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0, - 115,29,0,0,0,116,0,0,131,0,0,106,1,0,124,1, - 0,131,1,0,1,124,2,0,124,0,0,95,2,0,100,1, - 0,83,41,2,122,183,80,114,101,112,97,114,101,32,116,104, - 101,32,99,111,110,116,101,120,116,32,109,97,110,97,103,101, - 114,46,10,10,32,32,32,32,32,32,32,32,84,104,101,32, - 114,101,115,101,116,95,110,97,109,101,32,97,114,103,117,109, - 101,110,116,32,115,112,101,99,105,102,105,101,115,32,119,104, - 101,116,104,101,114,32,116,111,32,117,110,99,111,110,100,105, - 116,105,111,110,97,108,108,121,32,114,101,115,101,116,10,32, - 32,32,32,32,32,32,32,116,104,101,32,95,95,110,97,109, - 101,95,95,32,97,116,116,114,105,98,117,116,101,32,105,102, - 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,102, - 111,117,110,100,32,116,111,32,98,101,32,97,32,114,101,108, - 111,97,100,46,10,32,32,32,32,32,32,32,32,78,41,3, - 218,5,115,117,112,101,114,114,77,0,0,0,218,11,95,114, - 101,115,101,116,95,110,97,109,101,41,3,114,76,0,0,0, - 114,72,0,0,0,114,148,0,0,0,41,1,218,9,95,95, - 99,108,97,115,115,95,95,114,4,0,0,0,114,5,0,0, - 0,114,77,0,0,0,1,2,0,0,115,4,0,0,0,0, - 6,16,1,122,23,95,77,111,100,117,108,101,77,97,110,97, - 103,101,114,46,95,95,105,110,105,116,95,95,99,1,0,0, - 0,0,0,0,0,1,0,0,0,11,0,0,0,3,0,0, - 0,115,163,0,0,0,116,0,0,131,0,0,106,1,0,131, - 0,0,1,116,2,0,106,3,0,106,4,0,124,0,0,106, - 5,0,131,1,0,124,0,0,95,6,0,124,0,0,106,7, - 0,115,104,0,116,8,0,116,9,0,131,1,0,124,0,0, - 106,5,0,131,1,0,124,0,0,95,6,0,100,1,0,124, - 0,0,106,6,0,95,10,0,124,0,0,106,6,0,116,2, - 0,106,3,0,124,0,0,106,5,0,60,110,52,0,124,0, - 0,106,11,0,114,156,0,121,19,0,124,0,0,106,5,0, - 124,0,0,106,6,0,95,12,0,87,113,156,0,4,116,13, - 0,107,10,0,114,152,0,1,1,1,89,113,156,0,88,110, - 0,0,124,0,0,106,6,0,83,41,2,78,84,41,14,114, - 149,0,0,0,114,143,0,0,0,114,7,0,0,0,114,141, - 0,0,0,114,80,0,0,0,114,140,0,0,0,218,7,95, - 109,111,100,117,108,101,114,142,0,0,0,218,4,116,121,112, - 101,114,49,0,0,0,218,16,95,95,105,110,105,116,105,97, - 108,105,122,105,110,103,95,95,114,150,0,0,0,114,57,0, - 0,0,218,14,65,116,116,114,105,98,117,116,101,69,114,114, - 111,114,41,1,114,76,0,0,0,41,1,114,151,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,143,0,0,0,10, - 2,0,0,115,24,0,0,0,0,1,13,1,24,1,9,4, - 24,3,12,1,22,1,9,1,3,1,19,1,13,1,8,1, - 122,24,95,77,111,100,117,108,101,77,97,110,97,103,101,114, - 46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,7,0,0,0,115, - 38,0,0,0,100,1,0,124,0,0,106,0,0,95,1,0, - 124,0,0,96,0,0,116,2,0,131,0,0,106,3,0,124, - 1,0,140,0,0,1,100,0,0,83,41,2,78,70,41,4, - 114,152,0,0,0,114,154,0,0,0,114,149,0,0,0,114, - 146,0,0,0,41,2,114,76,0,0,0,114,99,0,0,0, - 41,1,114,151,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,146,0,0,0,29,2,0,0,115,6,0,0,0,0, - 1,12,1,6,1,122,23,95,77,111,100,117,108,101,77,97, - 110,97,103,101,114,46,95,95,101,120,105,116,95,95,41,7, - 114,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114, - 59,0,0,0,114,77,0,0,0,114,143,0,0,0,114,146, - 0,0,0,114,4,0,0,0,114,4,0,0,0,41,1,114, - 151,0,0,0,114,5,0,0,0,114,147,0,0,0,249,1, - 0,0,115,8,0,0,0,12,6,6,2,24,9,18,19,114, - 147,0,0,0,114,148,0,0,0,84,99,1,0,0,0,1, - 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115, - 16,0,0,0,116,0,0,124,0,0,100,1,0,124,1,0, - 131,1,1,83,41,2,122,138,82,101,116,117,114,110,32,97, - 32,99,111,110,116,101,120,116,32,109,97,110,97,103,101,114, - 32,119,104,105,99,104,32,112,114,111,118,105,100,101,115,32, - 116,104,101,32,109,111,100,117,108,101,32,111,98,106,101,99, - 116,32,116,111,32,108,111,97,100,46,10,10,32,32,32,32, - 73,102,32,114,101,115,101,116,95,110,97,109,101,32,105,115, - 32,116,114,117,101,44,32,114,101,115,101,116,32,116,104,101, - 32,109,111,100,117,108,101,39,115,32,95,95,110,97,109,101, - 95,95,32,116,111,32,39,110,97,109,101,39,46,10,32,32, - 32,32,114,148,0,0,0,41,1,114,147,0,0,0,41,2, - 114,72,0,0,0,114,148,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,218,14,109,111,100,117,108, - 101,95,116,111,95,108,111,97,100,35,2,0,0,115,2,0, - 0,0,0,6,114,156,0,0,0,99,2,0,0,0,0,0, - 0,0,4,0,0,0,11,0,0,0,67,0,0,0,115,102, - 0,0,0,124,1,0,106,0,0,125,2,0,121,19,0,124, - 0,0,106,1,0,124,2,0,131,1,0,125,3,0,87,110, - 18,0,4,116,2,0,107,10,0,114,48,0,1,1,1,89, - 110,50,0,88,124,3,0,114,76,0,124,2,0,124,1,0, - 95,3,0,103,0,0,124,1,0,95,4,0,110,22,0,124, - 2,0,106,5,0,100,1,0,131,1,0,100,2,0,25,124, - 1,0,95,3,0,100,3,0,83,41,4,122,68,83,101,116, - 32,95,95,112,97,99,107,97,103,101,95,95,32,97,110,100, - 32,95,95,112,97,116,104,95,95,32,98,97,115,101,100,32, - 111,110,32,119,104,97,116,32,108,111,97,100,101,114,46,105, - 115,95,112,97,99,107,97,103,101,40,41,32,115,97,121,115, - 46,114,102,0,0,0,114,68,0,0,0,78,41,6,114,57, - 0,0,0,218,10,105,115,95,112,97,99,107,97,103,101,218, - 11,73,109,112,111,114,116,69,114,114,111,114,218,11,95,95, - 112,97,99,107,97,103,101,95,95,218,8,95,95,112,97,116, - 104,95,95,114,32,0,0,0,41,4,218,6,108,111,97,100, - 101,114,218,6,109,111,100,117,108,101,114,72,0,0,0,114, - 157,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,19,95,105,110,105,116,95,112,97,99,107,97, - 103,101,95,97,116,116,114,115,44,2,0,0,115,18,0,0, - 0,0,2,9,1,3,1,19,1,13,1,5,2,6,1,9, - 1,12,2,114,163,0,0,0,99,2,0,0,0,0,0,0, - 0,2,0,0,0,11,0,0,0,67,0,0,0,115,100,0, - 0,0,121,25,0,124,0,0,106,0,0,124,1,0,106,1, - 0,131,1,0,124,1,0,95,2,0,87,110,18,0,4,116, - 3,0,107,10,0,114,45,0,1,1,1,89,110,51,0,88, - 124,1,0,106,1,0,124,1,0,106,4,0,107,2,0,114, - 96,0,124,1,0,106,5,0,106,6,0,116,7,0,124,1, - 0,106,2,0,131,1,0,100,1,0,25,131,1,0,1,110, - 0,0,100,2,0,83,41,3,122,57,83,101,116,32,95,95, - 102,105,108,101,95,95,32,97,110,100,32,95,95,112,97,116, - 104,95,95,32,98,97,115,101,100,32,111,110,32,108,111,97, - 100,101,114,46,103,101,116,95,102,105,108,101,110,97,109,101, - 40,41,46,114,68,0,0,0,78,41,8,218,12,103,101,116, - 95,102,105,108,101,110,97,109,101,114,57,0,0,0,218,8, - 95,95,102,105,108,101,95,95,114,158,0,0,0,114,159,0, - 0,0,114,160,0,0,0,218,6,97,112,112,101,110,100,114, - 38,0,0,0,41,2,114,161,0,0,0,114,162,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 16,95,105,110,105,116,95,102,105,108,101,95,97,116,116,114, - 115,59,2,0,0,115,12,0,0,0,0,2,3,1,25,1, - 13,1,5,2,18,1,114,167,0,0,0,99,1,0,0,0, - 0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0, - 115,35,0,0,0,135,0,0,102,1,0,100,1,0,100,2, - 0,134,0,0,125,1,0,116,0,0,124,1,0,136,0,0, - 131,2,0,1,124,1,0,83,41,3,122,39,83,101,116,32, - 95,95,112,97,99,107,97,103,101,95,95,32,111,110,32,116, - 104,101,32,114,101,116,117,114,110,101,100,32,109,111,100,117, - 108,101,46,99,0,0,0,0,0,0,0,0,3,0,0,0, - 4,0,0,0,31,0,0,0,115,101,0,0,0,136,0,0, - 124,0,0,124,1,0,142,0,0,125,2,0,116,0,0,124, - 2,0,100,1,0,100,0,0,131,3,0,100,0,0,107,8, - 0,114,97,0,124,2,0,106,1,0,124,2,0,95,2,0, - 116,3,0,124,2,0,100,2,0,131,2,0,115,97,0,124, - 2,0,106,2,0,106,4,0,100,3,0,131,1,0,100,4, - 0,25,124,2,0,95,2,0,113,97,0,110,0,0,124,2, - 0,83,41,5,78,114,159,0,0,0,114,160,0,0,0,114, - 102,0,0,0,114,68,0,0,0,41,5,114,62,0,0,0, - 114,57,0,0,0,114,159,0,0,0,114,60,0,0,0,114, - 32,0,0,0,41,3,114,99,0,0,0,218,6,107,119,97, - 114,103,115,114,162,0,0,0,41,1,218,3,102,120,110,114, - 4,0,0,0,114,5,0,0,0,218,19,115,101,116,95,112, - 97,99,107,97,103,101,95,119,114,97,112,112,101,114,72,2, - 0,0,115,12,0,0,0,0,1,15,1,24,1,12,1,15, - 1,31,1,122,40,115,101,116,95,112,97,99,107,97,103,101, - 46,60,108,111,99,97,108,115,62,46,115,101,116,95,112,97, - 99,107,97,103,101,95,119,114,97,112,112,101,114,41,1,114, - 65,0,0,0,41,2,114,169,0,0,0,114,170,0,0,0, - 114,4,0,0,0,41,1,114,169,0,0,0,114,5,0,0, - 0,218,11,115,101,116,95,112,97,99,107,97,103,101,70,2, - 0,0,115,6,0,0,0,0,2,18,7,13,1,114,171,0, + 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, + 97,99,104,101,189,1,0,0,115,24,0,0,0,0,9,18, + 1,15,1,18,1,18,1,12,1,3,1,24,1,21,1,3, + 1,21,1,19,1,114,129,0,0,0,99,1,0,0,0,0, + 0,0,0,5,0,0,0,13,0,0,0,67,0,0,0,115, + 164,0,0,0,116,0,0,124,0,0,131,1,0,100,1,0, + 107,2,0,114,22,0,100,2,0,83,124,0,0,106,1,0, + 100,3,0,131,1,0,92,3,0,125,1,0,125,2,0,125, + 3,0,124,1,0,12,115,81,0,124,3,0,106,2,0,131, + 0,0,100,7,0,100,8,0,133,2,0,25,100,6,0,107, + 3,0,114,85,0,124,0,0,83,121,16,0,116,3,0,124, + 0,0,131,1,0,125,4,0,87,110,40,0,4,116,4,0, + 116,5,0,102,2,0,107,10,0,114,143,0,1,1,1,124, + 0,0,100,2,0,100,9,0,133,2,0,25,125,4,0,89, + 110,1,0,88,116,6,0,124,4,0,131,1,0,114,160,0, + 124,4,0,83,124,0,0,83,41,10,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,71,0,0,0,78,114,110, + 0,0,0,233,3,0,0,0,114,29,0,0,0,90,2,112, + 121,233,253,255,255,255,233,255,255,255,255,114,132,0,0,0, + 41,7,114,31,0,0,0,114,32,0,0,0,218,5,108,111, + 119,101,114,114,129,0,0,0,114,118,0,0,0,114,127,0, + 0,0,114,44,0,0,0,41,5,218,13,98,121,116,101,99, + 111,100,101,95,112,97,116,104,90,4,114,101,115,116,114,36, + 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,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,15,95,103,101,116, + 95,115,111,117,114,99,101,102,105,108,101,212,1,0,0,115, + 20,0,0,0,0,7,18,1,4,1,24,1,35,1,4,1, + 3,1,16,1,19,1,21,1,114,136,0,0,0,99,1,0, + 0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,0, + 0,0,115,60,0,0,0,121,19,0,116,0,0,124,0,0, + 131,1,0,106,1,0,125,1,0,87,110,24,0,4,116,2, + 0,107,10,0,114,45,0,1,1,1,100,1,0,125,1,0, + 89,110,1,0,88,124,1,0,100,2,0,79,125,1,0,124, + 1,0,83,41,3,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,105,182,1,0,0,233, + 128,0,0,0,41,3,114,39,0,0,0,114,41,0,0,0, + 114,40,0,0,0,41,2,114,35,0,0,0,114,42,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,10,95,99,97,108,99,95,109,111,100,101,231,1,0,0, + 115,12,0,0,0,0,2,3,1,19,1,13,1,11,3,10, + 1,114,138,0,0,0,218,9,118,101,114,98,111,115,105,116, + 121,114,29,0,0,0,99,1,0,0,0,1,0,0,0,3, + 0,0,0,4,0,0,0,71,0,0,0,115,81,0,0,0, + 116,0,0,106,1,0,106,2,0,124,1,0,107,5,0,114, + 77,0,124,0,0,106,3,0,100,6,0,131,1,0,115,46, + 0,100,3,0,124,0,0,23,125,0,0,110,0,0,116,4, + 0,124,0,0,106,5,0,124,2,0,140,0,0,100,4,0, + 116,0,0,106,6,0,131,1,1,1,110,0,0,100,5,0, + 83,41,7,122,61,80,114,105,110,116,32,116,104,101,32,109, + 101,115,115,97,103,101,32,116,111,32,115,116,100,101,114,114, + 32,105,102,32,45,118,47,80,89,84,72,79,78,86,69,82, + 66,79,83,69,32,105,115,32,116,117,114,110,101,100,32,111, + 110,46,250,1,35,250,7,105,109,112,111,114,116,32,122,2, + 35,32,114,54,0,0,0,78,41,2,114,140,0,0,0,114, + 141,0,0,0,41,7,114,7,0,0,0,114,111,0,0,0, + 218,7,118,101,114,98,111,115,101,114,9,0,0,0,218,5, + 112,114,105,110,116,114,47,0,0,0,218,6,115,116,100,101, + 114,114,41,3,218,7,109,101,115,115,97,103,101,114,139,0, + 0,0,114,99,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,218,16,95,118,101,114,98,111,115,101, + 95,109,101,115,115,97,103,101,243,1,0,0,115,8,0,0, + 0,0,2,18,1,15,1,13,1,114,146,0,0,0,99,1, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,3, + 0,0,0,115,38,0,0,0,100,1,0,135,0,0,102,1, + 0,100,2,0,100,3,0,134,1,0,125,1,0,116,0,0, + 124,1,0,136,0,0,131,2,0,1,124,1,0,83,41,4, + 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,4,0,0,0,5,0,0,0, + 31,0,0,0,115,83,0,0,0,124,1,0,100,0,0,107, + 8,0,114,24,0,124,0,0,106,0,0,125,1,0,110,40, + 0,124,0,0,106,0,0,124,1,0,107,3,0,114,64,0, + 116,1,0,100,1,0,124,1,0,22,100,2,0,124,1,0, + 131,1,1,130,1,0,110,0,0,136,0,0,124,0,0,124, + 1,0,124,2,0,124,3,0,142,2,0,83,41,3,78,122, + 23,108,111,97,100,101,114,32,99,97,110,110,111,116,32,104, + 97,110,100,108,101,32,37,115,114,67,0,0,0,41,2,114, + 67,0,0,0,218,11,73,109,112,111,114,116,69,114,114,111, + 114,41,4,114,78,0,0,0,114,67,0,0,0,114,99,0, + 0,0,114,100,0,0,0,41,1,218,6,109,101,116,104,111, + 100,114,4,0,0,0,114,5,0,0,0,218,19,95,99,104, + 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, + 3,2,0,0,115,10,0,0,0,0,1,12,1,12,1,15, + 1,25,1,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,41,1,114, + 65,0,0,0,41,2,114,148,0,0,0,114,149,0,0,0, + 114,4,0,0,0,41,1,114,148,0,0,0,114,5,0,0, + 0,218,11,95,99,104,101,99,107,95,110,97,109,101,251,1, + 0,0,115,6,0,0,0,0,8,21,6,13,1,114,150,0, 0,0,99,1,0,0,0,0,0,0,0,2,0,0,0,3, 0,0,0,3,0,0,0,115,35,0,0,0,135,0,0,102, 1,0,100,1,0,100,2,0,134,0,0,125,1,0,116,0, 0,124,1,0,136,0,0,131,2,0,1,124,1,0,83,41, - 3,122,38,83,101,116,32,95,95,108,111,97,100,101,114,95, - 95,32,111,110,32,116,104,101,32,114,101,116,117,114,110,101, - 100,32,109,111,100,117,108,101,46,99,1,0,0,0,0,0, - 0,0,4,0,0,0,4,0,0,0,31,0,0,0,115,58, - 0,0,0,136,0,0,124,0,0,124,1,0,124,2,0,142, - 1,0,125,3,0,116,0,0,124,3,0,100,1,0,100,0, - 0,131,3,0,100,0,0,107,8,0,114,54,0,124,0,0, - 124,3,0,95,1,0,110,0,0,124,3,0,83,41,2,78, - 218,10,95,95,108,111,97,100,101,114,95,95,41,2,114,62, - 0,0,0,114,172,0,0,0,41,4,114,76,0,0,0,114, - 99,0,0,0,114,168,0,0,0,114,162,0,0,0,41,1, - 114,169,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 18,115,101,116,95,108,111,97,100,101,114,95,119,114,97,112, - 112,101,114,85,2,0,0,115,8,0,0,0,0,1,18,1, - 24,1,12,1,122,38,115,101,116,95,108,111,97,100,101,114, - 46,60,108,111,99,97,108,115,62,46,115,101,116,95,108,111, - 97,100,101,114,95,119,114,97,112,112,101,114,41,1,114,65, - 0,0,0,41,2,114,169,0,0,0,114,173,0,0,0,114, - 4,0,0,0,41,1,114,169,0,0,0,114,5,0,0,0, - 218,10,115,101,116,95,108,111,97,100,101,114,83,2,0,0, - 115,6,0,0,0,0,2,18,5,13,1,114,174,0,0,0, - 99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0, - 0,3,0,0,0,115,38,0,0,0,100,1,0,135,0,0, - 102,1,0,100,2,0,100,3,0,134,1,0,125,1,0,116, - 0,0,124,1,0,136,0,0,131,2,0,1,124,1,0,83, - 41,4,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,4,0,0,0,5,0, - 0,0,31,0,0,0,115,83,0,0,0,124,1,0,100,0, - 0,107,8,0,114,24,0,124,0,0,106,0,0,125,1,0, - 110,40,0,124,0,0,106,0,0,124,1,0,107,3,0,114, - 64,0,116,1,0,100,1,0,124,1,0,22,100,2,0,124, + 3,122,49,68,101,99,111,114,97,116,111,114,32,116,111,32, + 118,101,114,105,102,121,32,116,104,101,32,110,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,2,0,0, + 0,4,0,0,0,19,0,0,0,115,58,0,0,0,124,1, + 0,116,0,0,106,1,0,107,7,0,114,45,0,116,2,0, + 100,1,0,106,3,0,124,1,0,131,1,0,100,2,0,124, 1,0,131,1,1,130,1,0,110,0,0,136,0,0,124,0, - 0,124,1,0,124,2,0,124,3,0,142,2,0,83,41,3, - 78,122,23,108,111,97,100,101,114,32,99,97,110,110,111,116, - 32,104,97,110,100,108,101,32,37,115,114,72,0,0,0,41, - 2,114,72,0,0,0,114,158,0,0,0,41,4,114,76,0, - 0,0,114,72,0,0,0,114,99,0,0,0,114,168,0,0, - 0,41,1,218,6,109,101,116,104,111,100,114,4,0,0,0, - 114,5,0,0,0,218,19,95,99,104,101,99,107,95,110,97, - 109,101,95,119,114,97,112,112,101,114,102,2,0,0,115,10, - 0,0,0,0,1,12,1,12,1,15,1,25,1,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,41,1,114,65,0,0,0,41,2, - 114,175,0,0,0,114,176,0,0,0,114,4,0,0,0,41, - 1,114,175,0,0,0,114,5,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,94,2,0,0,115,6,0,0, - 0,0,8,21,6,13,1,114,177,0,0,0,99,1,0,0, - 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0, - 0,115,35,0,0,0,135,0,0,102,1,0,100,1,0,100, - 2,0,134,0,0,125,1,0,116,0,0,124,1,0,136,0, - 0,131,2,0,1,124,1,0,83,41,3,122,49,68,101,99, - 111,114,97,116,111,114,32,116,111,32,118,101,114,105,102,121, - 32,116,104,101,32,110,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,2,0,0,0,4,0,0,0,19, - 0,0,0,115,58,0,0,0,124,1,0,116,0,0,106,1, - 0,107,7,0,114,45,0,116,2,0,100,1,0,106,3,0, - 124,1,0,131,1,0,100,2,0,124,1,0,131,1,1,130, - 1,0,110,0,0,136,0,0,124,0,0,124,1,0,131,2, - 0,83,41,3,78,122,27,123,125,32,105,115,32,110,111,116, - 32,97,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,114,72,0,0,0,41,4,114,7,0,0,0,218,20, - 98,117,105,108,116,105,110,95,109,111,100,117,108,101,95,110, - 97,109,101,115,114,158,0,0,0,114,47,0,0,0,41,2, - 114,76,0,0,0,218,8,102,117,108,108,110,97,109,101,41, - 1,114,169,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,25,95,114,101,113,117,105,114,101,115,95,98,117,105,108, - 116,105,110,95,119,114,97,112,112,101,114,114,2,0,0,115, - 8,0,0,0,0,1,15,1,18,1,12,1,122,52,95,114, - 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,46, - 60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,95,119,114,97,112,112, - 101,114,41,1,114,65,0,0,0,41,2,114,169,0,0,0, - 114,180,0,0,0,114,4,0,0,0,41,1,114,169,0,0, - 0,114,5,0,0,0,218,17,95,114,101,113,117,105,114,101, - 115,95,98,117,105,108,116,105,110,112,2,0,0,115,6,0, - 0,0,0,2,18,5,13,1,114,181,0,0,0,99,1,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,115,35,0,0,0,135,0,0,102,1,0,100,1,0, - 100,2,0,134,0,0,125,1,0,116,0,0,124,1,0,136, - 0,0,131,2,0,1,124,1,0,83,41,3,122,47,68,101, - 99,111,114,97,116,111,114,32,116,111,32,118,101,114,105,102, - 121,32,116,104,101,32,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,2,0,0,0,4,0,0,0,19,0, - 0,0,115,58,0,0,0,116,0,0,106,1,0,124,1,0, - 131,1,0,115,45,0,116,2,0,100,1,0,106,3,0,124, - 1,0,131,1,0,100,2,0,124,1,0,131,1,1,130,1, - 0,110,0,0,136,0,0,124,0,0,124,1,0,131,2,0, - 83,41,3,78,122,25,123,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 72,0,0,0,41,4,114,95,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,158,0,0,0,114,47,0,0,0, - 41,2,114,76,0,0,0,114,179,0,0,0,41,1,114,169, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,24,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,125,2,0,0,115,8,0,0,0, - 0,1,15,1,18,1,12,1,122,50,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,46,60,108,111,99,97, - 108,115,62,46,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,95,119,114,97,112,112,101,114,41,1,114,65, - 0,0,0,41,2,114,169,0,0,0,114,183,0,0,0,114, - 4,0,0,0,41,1,114,169,0,0,0,114,5,0,0,0, - 218,16,95,114,101,113,117,105,114,101,115,95,102,114,111,122, - 101,110,123,2,0,0,115,6,0,0,0,0,2,18,5,13, - 1,114,184,0,0,0,99,2,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,87,0,0,0, - 124,0,0,106,0,0,124,1,0,131,1,0,92,2,0,125, - 2,0,125,3,0,124,2,0,100,1,0,107,8,0,114,83, - 0,116,1,0,124,3,0,131,1,0,114,83,0,100,2,0, - 125,4,0,116,2,0,106,3,0,124,4,0,106,4,0,124, - 3,0,100,3,0,25,131,1,0,116,5,0,131,2,0,1, - 110,0,0,124,2,0,83,41,4,122,86,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,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,68,0,0,0,41,6,218,11,102,105,110,100,95,108,111, - 97,100,101,114,114,31,0,0,0,218,9,95,119,97,114,110, - 105,110,103,115,218,4,119,97,114,110,114,47,0,0,0,218, - 13,73,109,112,111,114,116,87,97,114,110,105,110,103,41,5, - 114,76,0,0,0,114,179,0,0,0,114,161,0,0,0,218, - 8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,17,95, - 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, - 134,2,0,0,115,10,0,0,0,0,6,21,1,24,1,6, - 1,32,1,114,191,0,0,0,99,4,0,0,0,0,0,0, - 0,11,0,0,0,19,0,0,0,67,0,0,0,115,243,1, - 0,0,105,0,0,125,4,0,124,2,0,100,1,0,107,9, - 0,114,31,0,124,2,0,124,4,0,100,2,0,60,110,6, - 0,100,3,0,125,2,0,124,3,0,100,1,0,107,9,0, - 114,62,0,124,3,0,124,4,0,100,4,0,60,110,0,0, - 124,0,0,100,1,0,100,5,0,133,2,0,25,125,5,0, - 124,0,0,100,5,0,100,6,0,133,2,0,25,125,6,0, - 124,0,0,100,6,0,100,7,0,133,2,0,25,125,7,0, - 124,5,0,116,0,0,107,3,0,114,168,0,100,8,0,106, - 1,0,124,2,0,124,5,0,131,2,0,125,8,0,116,2, - 0,124,8,0,131,1,0,1,116,3,0,124,8,0,124,4, - 0,141,1,0,130,1,0,110,116,0,116,4,0,124,6,0, - 131,1,0,100,5,0,107,3,0,114,226,0,100,9,0,106, - 1,0,124,2,0,131,1,0,125,8,0,116,2,0,124,8, - 0,131,1,0,1,116,5,0,124,8,0,131,1,0,130,1, - 0,110,58,0,116,4,0,124,7,0,131,1,0,100,5,0, - 107,3,0,114,28,1,100,10,0,106,1,0,124,2,0,131, - 1,0,125,8,0,116,2,0,124,8,0,131,1,0,1,116, - 5,0,124,8,0,131,1,0,130,1,0,110,0,0,124,1, - 0,100,1,0,107,9,0,114,229,1,121,20,0,116,6,0, - 124,1,0,100,11,0,25,131,1,0,125,9,0,87,110,18, - 0,4,116,7,0,107,10,0,114,80,1,1,1,1,89,110, - 62,0,88,116,8,0,124,6,0,131,1,0,124,9,0,107, - 3,0,114,142,1,100,12,0,106,1,0,124,2,0,131,1, - 0,125,8,0,116,2,0,124,8,0,131,1,0,1,116,3, - 0,124,8,0,124,4,0,141,1,0,130,1,0,110,0,0, - 121,18,0,124,1,0,100,13,0,25,100,14,0,64,125,10, - 0,87,110,18,0,4,116,7,0,107,10,0,114,180,1,1, - 1,1,89,113,229,1,88,116,8,0,124,7,0,131,1,0, - 124,10,0,107,3,0,114,229,1,116,3,0,100,12,0,106, - 1,0,124,2,0,131,1,0,124,4,0,141,1,0,130,1, - 0,113,229,1,110,0,0,124,0,0,100,7,0,100,1,0, - 133,2,0,25,83,41,15,97,122,1,0,0,86,97,108,105, - 100,97,116,101,32,116,104,101,32,104,101,97,100,101,114,32, - 111,102,32,116,104,101,32,112,97,115,115,101,100,45,105,110, - 32,98,121,116,101,99,111,100,101,32,97,103,97,105,110,115, - 116,32,115,111,117,114,99,101,95,115,116,97,116,115,32,40, - 105,102,10,32,32,32,32,103,105,118,101,110,41,32,97,110, - 100,32,114,101,116,117,114,110,105,110,103,32,116,104,101,32, - 98,121,116,101,99,111,100,101,32,116,104,97,116,32,99,97, - 110,32,98,101,32,99,111,109,112,105,108,101,100,32,98,121, - 32,99,111,109,112,105,108,101,40,41,46,10,10,32,32,32, - 32,65,108,108,32,111,116,104,101,114,32,97,114,103,117,109, - 101,110,116,115,32,97,114,101,32,117,115,101,100,32,116,111, - 32,101,110,104,97,110,99,101,32,101,114,114,111,114,32,114, - 101,112,111,114,116,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,116,104,101,32,98, - 121,116,101,99,111,100,101,32,105,115,10,32,32,32,32,102, - 111,117,110,100,32,116,111,32,98,101,32,115,116,97,108,101, - 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,10,32,32,32,32,116,114,117,110,99,97,116,101,100,46, - 10,10,32,32,32,32,78,114,72,0,0,0,122,10,60,98, - 121,116,101,99,111,100,101,62,114,35,0,0,0,114,12,0, - 0,0,233,8,0,0,0,233,12,0,0,0,122,30,98,97, - 100,32,109,97,103,105,99,32,110,117,109,98,101,114,32,105, - 110,32,123,33,114,125,58,32,123,33,114,125,122,43,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,116,105,109,101,115,116,97,109, - 112,32,105,110,32,123,33,114,125,122,48,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,115,105,122,101,32,111,102,32,115,111,117, - 114,99,101,32,105,110,32,123,33,114,125,218,5,109,116,105, - 109,101,122,26,98,121,116,101,99,111,100,101,32,105,115,32, - 115,116,97,108,101,32,102,111,114,32,123,33,114,125,218,4, - 115,105,122,101,108,3,0,0,0,255,127,255,127,3,0,41, - 9,218,12,77,65,71,73,67,95,78,85,77,66,69,82,114, - 47,0,0,0,114,138,0,0,0,114,158,0,0,0,114,31, - 0,0,0,218,8,69,79,70,69,114,114,111,114,114,14,0, - 0,0,114,92,0,0,0,114,19,0,0,0,41,11,114,53, - 0,0,0,218,12,115,111,117,114,99,101,95,115,116,97,116, - 115,114,72,0,0,0,114,35,0,0,0,90,11,101,120,99, - 95,100,101,116,97,105,108,115,90,5,109,97,103,105,99,90, - 13,114,97,119,95,116,105,109,101,115,116,97,109,112,90,8, - 114,97,119,95,115,105,122,101,114,137,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,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,25,95,118,97,108,105,100,97, - 116,101,95,98,121,116,101,99,111,100,101,95,104,101,97,100, - 101,114,147,2,0,0,115,76,0,0,0,0,11,6,1,12, - 1,13,3,6,1,12,1,13,1,16,1,16,1,16,1,12, - 1,18,1,10,1,18,1,18,1,15,1,10,1,15,1,18, - 1,15,1,10,1,15,1,12,1,3,1,20,1,13,1,5, - 2,18,1,15,1,10,1,18,1,3,1,18,1,13,1,5, - 2,18,1,15,1,15,1,114,201,0,0,0,99,4,0,0, - 0,0,0,0,0,5,0,0,0,6,0,0,0,67,0,0, - 0,115,115,0,0,0,116,0,0,106,1,0,124,0,0,131, - 1,0,125,4,0,116,2,0,124,4,0,116,3,0,131,2, - 0,114,78,0,116,4,0,100,1,0,124,2,0,131,2,0, - 1,124,3,0,100,2,0,107,9,0,114,74,0,116,5,0, - 106,6,0,124,4,0,124,3,0,131,2,0,1,110,0,0, - 124,4,0,83,116,7,0,100,3,0,106,8,0,124,2,0, - 131,1,0,100,4,0,124,1,0,100,5,0,124,2,0,131, - 1,2,130,1,0,100,2,0,83,41,6,122,60,67,111,109, - 112,105,108,101,32,98,121,116,101,99,111,100,101,32,97,115, - 32,114,101,116,117,114,110,101,100,32,98,121,32,95,118,97, - 108,105,100,97,116,101,95,98,121,116,101,99,111,100,101,95, - 104,101,97,100,101,114,40,41,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,114,72,0,0,0,114, - 35,0,0,0,41,9,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,138, - 0,0,0,114,95,0,0,0,90,16,95,102,105,120,95,99, - 111,95,102,105,108,101,110,97,109,101,114,158,0,0,0,114, - 47,0,0,0,41,5,114,53,0,0,0,114,72,0,0,0, - 114,126,0,0,0,114,127,0,0,0,218,4,99,111,100,101, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 17,95,99,111,109,112,105,108,101,95,98,121,116,101,99,111, - 100,101,202,2,0,0,115,16,0,0,0,0,2,15,1,15, - 1,13,1,12,1,19,1,4,2,18,1,114,206,0,0,0, - 114,68,0,0,0,99,3,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,76,0,0,0,116, - 0,0,116,1,0,131,1,0,125,3,0,124,3,0,106,2, - 0,116,3,0,124,1,0,131,1,0,131,1,0,1,124,3, - 0,106,2,0,116,3,0,124,2,0,131,1,0,131,1,0, - 1,124,3,0,106,2,0,116,4,0,106,5,0,124,0,0, - 131,1,0,131,1,0,1,124,3,0,83,41,1,122,80,67, - 111,109,112,105,108,101,32,97,32,99,111,100,101,32,111,98, - 106,101,99,116,32,105,110,116,111,32,98,121,116,101,99,111, - 100,101,32,102,111,114,32,119,114,105,116,105,110,103,32,111, - 117,116,32,116,111,32,97,32,98,121,116,101,45,99,111,109, - 112,105,108,101,100,10,32,32,32,32,102,105,108,101,46,41, - 6,218,9,98,121,116,101,97,114,114,97,121,114,196,0,0, - 0,218,6,101,120,116,101,110,100,114,17,0,0,0,114,202, - 0,0,0,90,5,100,117,109,112,115,41,4,114,205,0,0, - 0,114,194,0,0,0,114,200,0,0,0,114,53,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 17,95,99,111,100,101,95,116,111,95,98,121,116,101,99,111, - 100,101,214,2,0,0,115,10,0,0,0,0,3,12,1,19, - 1,19,1,22,1,114,209,0,0,0,99,1,0,0,0,0, - 0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,115, - 89,0,0,0,100,1,0,100,2,0,108,0,0,125,1,0, - 116,1,0,106,2,0,124,0,0,131,1,0,106,3,0,125, - 2,0,124,1,0,106,4,0,124,2,0,131,1,0,125,3, - 0,116,1,0,106,5,0,100,2,0,100,3,0,131,2,0, - 125,4,0,124,4,0,106,6,0,124,0,0,106,6,0,124, - 3,0,100,1,0,25,131,1,0,131,1,0,83,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,68,0,0,0,78, - 84,41,7,218,8,116,111,107,101,110,105,122,101,114,49,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,210,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,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 13,100,101,99,111,100,101,95,115,111,117,114,99,101,224,2, - 0,0,115,10,0,0,0,0,5,12,1,18,1,15,1,18, - 1,114,214,0,0,0,99,0,0,0,0,0,0,0,0,0, - 0,0,0,6,0,0,0,64,0,0,0,115,169,0,0,0, - 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, - 3,0,101,4,0,100,2,0,100,3,0,132,0,0,131,1, - 0,90,5,0,101,4,0,100,4,0,100,5,0,100,6,0, - 132,1,0,131,1,0,90,6,0,101,4,0,101,7,0,101, - 8,0,101,9,0,100,7,0,100,8,0,132,0,0,131,1, - 0,131,1,0,131,1,0,131,1,0,90,10,0,101,4,0, - 101,9,0,100,9,0,100,10,0,132,0,0,131,1,0,131, - 1,0,90,11,0,101,4,0,101,9,0,100,11,0,100,12, - 0,132,0,0,131,1,0,131,1,0,90,12,0,101,4,0, - 101,9,0,100,13,0,100,14,0,132,0,0,131,1,0,131, - 1,0,90,13,0,100,4,0,83,41,15,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,99,2, - 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, - 0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,1, - 0,106,1,0,131,1,0,83,41,2,78,122,24,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,98,117,105,108,116, - 45,105,110,41,62,41,2,114,47,0,0,0,114,57,0,0, - 0,41,2,218,3,99,108,115,114,162,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,11,109,111, - 100,117,108,101,95,114,101,112,114,247,2,0,0,115,2,0, - 0,0,0,2,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,3,0,0,0,0,0,0,0,3,0,0,0,2, - 0,0,0,67,0,0,0,115,39,0,0,0,124,2,0,100, - 1,0,107,9,0,114,16,0,100,1,0,83,116,0,0,106, - 1,0,124,1,0,131,1,0,114,35,0,124,0,0,83,100, + 0,124,1,0,131,2,0,83,41,3,78,122,27,123,125,32, + 105,115,32,110,111,116,32,97,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,114,67,0,0,0,41,4,114, + 7,0,0,0,218,20,98,117,105,108,116,105,110,95,109,111, + 100,117,108,101,95,110,97,109,101,115,114,147,0,0,0,114, + 47,0,0,0,41,2,114,78,0,0,0,218,8,102,117,108, + 108,110,97,109,101,41,1,218,3,102,120,110,114,4,0,0, + 0,114,5,0,0,0,218,25,95,114,101,113,117,105,114,101, + 115,95,98,117,105,108,116,105,110,95,119,114,97,112,112,101, + 114,15,2,0,0,115,8,0,0,0,0,1,15,1,18,1, + 12,1,122,52,95,114,101,113,117,105,114,101,115,95,98,117, + 105,108,116,105,110,46,60,108,111,99,97,108,115,62,46,95, + 114,101,113,117,105,114,101,115,95,98,117,105,108,116,105,110, + 95,119,114,97,112,112,101,114,41,1,114,65,0,0,0,41, + 2,114,153,0,0,0,114,154,0,0,0,114,4,0,0,0, + 41,1,114,153,0,0,0,114,5,0,0,0,218,17,95,114, + 101,113,117,105,114,101,115,95,98,117,105,108,116,105,110,13, + 2,0,0,115,6,0,0,0,0,2,18,5,13,1,114,155, + 0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,0, + 3,0,0,0,3,0,0,0,115,35,0,0,0,135,0,0, + 102,1,0,100,1,0,100,2,0,134,0,0,125,1,0,116, + 0,0,124,1,0,136,0,0,131,2,0,1,124,1,0,83, + 41,3,122,47,68,101,99,111,114,97,116,111,114,32,116,111, + 32,118,101,114,105,102,121,32,116,104,101,32,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,2,0,0,0, + 4,0,0,0,19,0,0,0,115,58,0,0,0,116,0,0, + 106,1,0,124,1,0,131,1,0,115,45,0,116,2,0,100, + 1,0,106,3,0,124,1,0,131,1,0,100,2,0,124,1, + 0,131,1,1,130,1,0,110,0,0,136,0,0,124,0,0, + 124,1,0,131,2,0,83,41,3,78,122,25,123,125,32,105, + 115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,109, + 111,100,117,108,101,114,67,0,0,0,41,4,114,96,0,0, + 0,218,9,105,115,95,102,114,111,122,101,110,114,147,0,0, + 0,114,47,0,0,0,41,2,114,78,0,0,0,114,152,0, + 0,0,41,1,114,153,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,24,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,95,119,114,97,112,112,101,114,26,2,0, + 0,115,8,0,0,0,0,1,15,1,18,1,12,1,122,50, + 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110, + 46,60,108,111,99,97,108,115,62,46,95,114,101,113,117,105, + 114,101,115,95,102,114,111,122,101,110,95,119,114,97,112,112, + 101,114,41,1,114,65,0,0,0,41,2,114,153,0,0,0, + 114,157,0,0,0,114,4,0,0,0,41,1,114,153,0,0, + 0,114,5,0,0,0,218,16,95,114,101,113,117,105,114,101, + 115,95,102,114,111,122,101,110,24,2,0,0,115,6,0,0, + 0,0,2,18,5,13,1,114,158,0,0,0,99,2,0,0, + 0,0,0,0,0,5,0,0,0,5,0,0,0,67,0,0, + 0,115,87,0,0,0,124,0,0,106,0,0,124,1,0,131, + 1,0,92,2,0,125,2,0,125,3,0,124,2,0,100,1, + 0,107,8,0,114,83,0,116,1,0,124,3,0,131,1,0, + 114,83,0,100,2,0,125,4,0,116,2,0,106,3,0,124, + 4,0,106,4,0,124,3,0,100,3,0,25,131,1,0,116, + 5,0,131,2,0,1,110,0,0,124,2,0,83,41,4,122, + 86,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,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,71,0,0,0,41,6,218,11,102, + 105,110,100,95,108,111,97,100,101,114,114,31,0,0,0,218, + 9,95,119,97,114,110,105,110,103,115,218,4,119,97,114,110, + 114,47,0,0,0,218,13,73,109,112,111,114,116,87,97,114, + 110,105,110,103,41,5,114,78,0,0,0,114,152,0,0,0, + 218,6,108,111,97,100,101,114,218,8,112,111,114,116,105,111, + 110,115,218,3,109,115,103,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,218,17,95,102,105,110,100,95,109,111, + 100,117,108,101,95,115,104,105,109,35,2,0,0,115,10,0, + 0,0,0,6,21,1,24,1,6,1,32,1,114,166,0,0, + 0,99,2,0,0,0,0,0,0,0,5,0,0,0,3,0, + 0,0,67,0,0,0,115,93,0,0,0,116,0,0,124,1, + 0,124,0,0,131,2,0,125,2,0,116,1,0,124,2,0, + 131,1,0,125,3,0,124,1,0,116,2,0,106,3,0,107, + 6,0,114,79,0,116,2,0,106,3,0,124,1,0,25,125, + 4,0,124,3,0,106,4,0,124,4,0,131,1,0,1,116, + 2,0,106,3,0,124,1,0,25,83,124,3,0,106,5,0, + 131,0,0,83,100,1,0,83,41,2,122,57,76,111,97,100, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,117,108,101,32,105,110,116,111,32,115,121,115,46,109, + 111,100,117,108,101,115,32,97,110,100,32,114,101,116,117,114, + 110,32,105,116,46,78,41,6,218,16,115,112,101,99,95,102, + 114,111,109,95,108,111,97,100,101,114,218,12,95,83,112,101, + 99,77,101,116,104,111,100,115,114,7,0,0,0,218,7,109, + 111,100,117,108,101,115,218,4,101,120,101,99,218,4,108,111, + 97,100,41,5,114,78,0,0,0,114,152,0,0,0,218,4, + 115,112,101,99,218,7,109,101,116,104,111,100,115,218,6,109, + 111,100,117,108,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117, + 108,101,95,115,104,105,109,48,2,0,0,115,14,0,0,0, + 0,3,15,1,12,1,15,1,13,1,13,1,11,2,114,175, + 0,0,0,99,4,0,0,0,0,0,0,0,11,0,0,0, + 19,0,0,0,67,0,0,0,115,243,1,0,0,105,0,0, + 125,4,0,124,2,0,100,1,0,107,9,0,114,31,0,124, + 2,0,124,4,0,100,2,0,60,110,6,0,100,3,0,125, + 2,0,124,3,0,100,1,0,107,9,0,114,62,0,124,3, + 0,124,4,0,100,4,0,60,110,0,0,124,0,0,100,1, + 0,100,5,0,133,2,0,25,125,5,0,124,0,0,100,5, + 0,100,6,0,133,2,0,25,125,6,0,124,0,0,100,6, + 0,100,7,0,133,2,0,25,125,7,0,124,5,0,116,0, + 0,107,3,0,114,168,0,100,8,0,106,1,0,124,2,0, + 124,5,0,131,2,0,125,8,0,116,2,0,124,8,0,131, + 1,0,1,116,3,0,124,8,0,124,4,0,141,1,0,130, + 1,0,110,116,0,116,4,0,124,6,0,131,1,0,100,5, + 0,107,3,0,114,226,0,100,9,0,106,1,0,124,2,0, + 131,1,0,125,8,0,116,2,0,124,8,0,131,1,0,1, + 116,5,0,124,8,0,131,1,0,130,1,0,110,58,0,116, + 4,0,124,7,0,131,1,0,100,5,0,107,3,0,114,28, + 1,100,10,0,106,1,0,124,2,0,131,1,0,125,8,0, + 116,2,0,124,8,0,131,1,0,1,116,5,0,124,8,0, + 131,1,0,130,1,0,110,0,0,124,1,0,100,1,0,107, + 9,0,114,229,1,121,20,0,116,6,0,124,1,0,100,11, + 0,25,131,1,0,125,9,0,87,110,18,0,4,116,7,0, + 107,10,0,114,80,1,1,1,1,89,110,62,0,88,116,8, + 0,124,6,0,131,1,0,124,9,0,107,3,0,114,142,1, + 100,12,0,106,1,0,124,2,0,131,1,0,125,8,0,116, + 2,0,124,8,0,131,1,0,1,116,3,0,124,8,0,124, + 4,0,141,1,0,130,1,0,110,0,0,121,18,0,124,1, + 0,100,13,0,25,100,14,0,64,125,10,0,87,110,18,0, + 4,116,7,0,107,10,0,114,180,1,1,1,1,89,113,229, + 1,88,116,8,0,124,7,0,131,1,0,124,10,0,107,3, + 0,114,229,1,116,3,0,100,12,0,106,1,0,124,2,0, + 131,1,0,124,4,0,141,1,0,130,1,0,113,229,1,110, + 0,0,124,0,0,100,7,0,100,1,0,133,2,0,25,83, + 41,15,97,122,1,0,0,86,97,108,105,100,97,116,101,32, + 116,104,101,32,104,101,97,100,101,114,32,111,102,32,116,104, + 101,32,112,97,115,115,101,100,45,105,110,32,98,121,116,101, + 99,111,100,101,32,97,103,97,105,110,115,116,32,115,111,117, + 114,99,101,95,115,116,97,116,115,32,40,105,102,10,32,32, + 32,32,103,105,118,101,110,41,32,97,110,100,32,114,101,116, + 117,114,110,105,110,103,32,116,104,101,32,98,121,116,101,99, + 111,100,101,32,116,104,97,116,32,99,97,110,32,98,101,32, + 99,111,109,112,105,108,101,100,32,98,121,32,99,111,109,112, + 105,108,101,40,41,46,10,10,32,32,32,32,65,108,108,32, + 111,116,104,101,114,32,97,114,103,117,109,101,110,116,115,32, + 97,114,101,32,117,115,101,100,32,116,111,32,101,110,104,97, + 110,99,101,32,101,114,114,111,114,32,114,101,112,111,114,116, + 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,116,104,101,32,98,121,116,101,99,111, + 100,101,32,105,115,10,32,32,32,32,102,111,117,110,100,32, + 116,111,32,98,101,32,115,116,97,108,101,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,10,32,32,32, + 32,116,114,117,110,99,97,116,101,100,46,10,10,32,32,32, + 32,78,114,67,0,0,0,122,10,60,98,121,116,101,99,111, + 100,101,62,114,35,0,0,0,114,12,0,0,0,233,8,0, + 0,0,233,12,0,0,0,122,30,98,97,100,32,109,97,103, + 105,99,32,110,117,109,98,101,114,32,105,110,32,123,33,114, + 125,58,32,123,33,114,125,122,43,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,116,105,109,101,115,116,97,109,112,32,105,110,32, + 123,33,114,125,122,48,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, + 115,105,122,101,32,111,102,32,115,111,117,114,99,101,32,105, + 110,32,123,33,114,125,218,5,109,116,105,109,101,122,26,98, + 121,116,101,99,111,100,101,32,105,115,32,115,116,97,108,101, + 32,102,111,114,32,123,33,114,125,218,4,115,105,122,101,108, + 3,0,0,0,255,127,255,127,3,0,41,9,218,12,77,65, + 71,73,67,95,78,85,77,66,69,82,114,47,0,0,0,114, + 146,0,0,0,114,147,0,0,0,114,31,0,0,0,218,8, + 69,79,70,69,114,114,111,114,114,14,0,0,0,114,104,0, + 0,0,114,19,0,0,0,41,11,114,53,0,0,0,218,12, + 115,111,117,114,99,101,95,115,116,97,116,115,114,67,0,0, + 0,114,35,0,0,0,90,11,101,120,99,95,100,101,116,97, + 105,108,115,90,5,109,97,103,105,99,90,13,114,97,119,95, + 116,105,109,101,115,116,97,109,112,90,8,114,97,119,95,115, + 105,122,101,114,145,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,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,25,95,118,97,108,105,100,97,116,101,95,98,121, + 116,101,99,111,100,101,95,104,101,97,100,101,114,61,2,0, + 0,115,76,0,0,0,0,11,6,1,12,1,13,3,6,1, + 12,1,13,1,16,1,16,1,16,1,12,1,18,1,10,1, + 18,1,18,1,15,1,10,1,15,1,18,1,15,1,10,1, + 15,1,12,1,3,1,20,1,13,1,5,2,18,1,15,1, + 10,1,18,1,3,1,18,1,13,1,5,2,18,1,15,1, + 15,1,114,185,0,0,0,99,4,0,0,0,0,0,0,0, + 5,0,0,0,6,0,0,0,67,0,0,0,115,115,0,0, + 0,116,0,0,106,1,0,124,0,0,131,1,0,125,4,0, + 116,2,0,124,4,0,116,3,0,131,2,0,114,78,0,116, + 4,0,100,1,0,124,2,0,131,2,0,1,124,3,0,100, + 2,0,107,9,0,114,74,0,116,5,0,106,6,0,124,4, + 0,124,3,0,131,2,0,1,110,0,0,124,4,0,83,116, + 7,0,100,3,0,106,8,0,124,2,0,131,1,0,100,4, + 0,124,1,0,100,5,0,124,2,0,131,1,2,130,1,0, + 100,2,0,83,41,6,122,60,67,111,109,112,105,108,101,32, + 98,121,116,101,99,111,100,101,32,97,115,32,114,101,116,117, + 114,110,101,100,32,98,121,32,95,118,97,108,105,100,97,116, + 101,95,98,121,116,101,99,111,100,101,95,104,101,97,100,101, + 114,40,41,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,114,67,0,0,0,114,35,0,0,0,41, + 9,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,96, + 0,0,0,90,16,95,102,105,120,95,99,111,95,102,105,108, + 101,110,97,109,101,114,147,0,0,0,114,47,0,0,0,41, + 5,114,53,0,0,0,114,67,0,0,0,114,134,0,0,0, + 114,135,0,0,0,218,4,99,111,100,101,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,109, + 112,105,108,101,95,98,121,116,101,99,111,100,101,116,2,0, + 0,115,16,0,0,0,0,2,15,1,15,1,13,1,12,1, + 19,1,4,2,18,1,114,190,0,0,0,114,71,0,0,0, + 99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0, + 0,67,0,0,0,115,76,0,0,0,116,0,0,116,1,0, + 131,1,0,125,3,0,124,3,0,106,2,0,116,3,0,124, + 1,0,131,1,0,131,1,0,1,124,3,0,106,2,0,116, + 3,0,124,2,0,131,1,0,131,1,0,1,124,3,0,106, + 2,0,116,4,0,106,5,0,124,0,0,131,1,0,131,1, + 0,1,124,3,0,83,41,1,122,80,67,111,109,112,105,108, + 101,32,97,32,99,111,100,101,32,111,98,106,101,99,116,32, + 105,110,116,111,32,98,121,116,101,99,111,100,101,32,102,111, + 114,32,119,114,105,116,105,110,103,32,111,117,116,32,116,111, + 32,97,32,98,121,116,101,45,99,111,109,112,105,108,101,100, + 10,32,32,32,32,102,105,108,101,46,41,6,218,9,98,121, + 116,101,97,114,114,97,121,114,180,0,0,0,218,6,101,120, + 116,101,110,100,114,17,0,0,0,114,186,0,0,0,90,5, + 100,117,109,112,115,41,4,114,189,0,0,0,114,178,0,0, + 0,114,184,0,0,0,114,53,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,100, + 101,95,116,111,95,98,121,116,101,99,111,100,101,128,2,0, + 0,115,10,0,0,0,0,3,12,1,19,1,19,1,22,1, + 114,193,0,0,0,99,1,0,0,0,0,0,0,0,5,0, + 0,0,4,0,0,0,67,0,0,0,115,89,0,0,0,100, + 1,0,100,2,0,108,0,0,125,1,0,116,1,0,106,2, + 0,124,0,0,131,1,0,106,3,0,125,2,0,124,1,0, + 106,4,0,124,2,0,131,1,0,125,3,0,116,1,0,106, + 5,0,100,2,0,100,3,0,131,2,0,125,4,0,124,4, + 0,106,6,0,124,0,0,106,6,0,124,3,0,100,1,0, + 25,131,1,0,131,1,0,83,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,71,0,0,0,78,84,41,7,218,8, + 116,111,107,101,110,105,122,101,114,49,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,194,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,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,13,100,101,99,111, + 100,101,95,115,111,117,114,99,101,138,2,0,0,115,10,0, + 0,0,0,5,12,1,18,1,15,1,18,1,114,198,0,0, + 0,99,1,0,0,0,0,0,0,0,5,0,0,0,35,0, + 0,0,67,0,0,0,115,15,1,0,0,116,0,0,124,0, + 0,100,1,0,100,0,0,131,3,0,125,1,0,116,1,0, + 124,1,0,100,2,0,131,2,0,114,74,0,121,17,0,124, + 1,0,106,2,0,124,0,0,131,1,0,83,87,113,74,0, + 4,116,3,0,107,10,0,114,70,0,1,1,1,89,113,74, + 0,88,110,0,0,121,13,0,124,0,0,106,4,0,125,2, + 0,87,110,18,0,4,116,5,0,107,10,0,114,107,0,1, + 1,1,89,110,29,0,88,124,2,0,100,0,0,107,9,0, + 114,136,0,116,6,0,124,2,0,131,1,0,106,2,0,131, + 0,0,83,121,13,0,124,0,0,106,7,0,125,3,0,87, + 110,24,0,4,116,5,0,107,10,0,114,175,0,1,1,1, + 100,3,0,125,3,0,89,110,1,0,88,121,13,0,124,0, + 0,106,8,0,125,4,0,87,110,59,0,4,116,5,0,107, + 10,0,114,250,0,1,1,1,124,1,0,100,0,0,107,8, + 0,114,230,0,100,4,0,106,9,0,124,3,0,131,1,0, + 83,100,5,0,106,9,0,124,3,0,124,1,0,131,2,0, + 83,89,110,17,0,88,100,6,0,106,9,0,124,3,0,124, + 4,0,131,2,0,83,100,0,0,83,41,7,78,218,10,95, + 95,108,111,97,100,101,114,95,95,218,11,109,111,100,117,108, + 101,95,114,101,112,114,250,1,63,122,13,60,109,111,100,117, + 108,101,32,123,33,114,125,62,122,20,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,33,114,125,41,62,122,23, + 60,109,111,100,117,108,101,32,123,33,114,125,32,102,114,111, + 109,32,123,33,114,125,62,41,10,114,62,0,0,0,114,60, + 0,0,0,114,200,0,0,0,218,9,69,120,99,101,112,116, + 105,111,110,218,8,95,95,115,112,101,99,95,95,218,14,65, + 116,116,114,105,98,117,116,101,69,114,114,111,114,114,168,0, + 0,0,114,57,0,0,0,218,8,95,95,102,105,108,101,95, + 95,114,47,0,0,0,41,5,114,174,0,0,0,114,163,0, + 0,0,114,172,0,0,0,114,67,0,0,0,114,125,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,12,95,109,111,100,117,108,101,95,114,101,112,114,152,2, + 0,0,115,46,0,0,0,0,2,18,1,15,2,3,1,17, + 1,13,1,8,1,3,1,13,1,13,1,5,2,12,1,16, + 4,3,1,13,1,13,1,11,1,3,1,13,1,13,1,12, + 1,13,2,21,2,114,206,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, + 52,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,100,2,0,132,0,0,90,3,0,100,3,0,100, + 4,0,132,0,0,90,4,0,100,5,0,100,6,0,132,0, + 0,90,5,0,100,7,0,83,41,8,218,17,95,105,110,115, + 116,97,108,108,101,100,95,115,97,102,101,108,121,99,2,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,25,0,0,0,124,1,0,124,0,0,95,0,0, + 124,1,0,106,1,0,124,0,0,95,2,0,100,0,0,83, + 41,1,78,41,3,218,7,95,109,111,100,117,108,101,114,203, + 0,0,0,218,5,95,115,112,101,99,41,2,114,78,0,0, + 0,114,174,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,79,0,0,0,188,2,0,0,115,4, + 0,0,0,0,1,9,1,122,26,95,105,110,115,116,97,108, + 108,101,100,95,115,97,102,101,108,121,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,38,0,0,0,100,1,0, + 124,0,0,106,0,0,95,1,0,124,0,0,106,2,0,116, + 3,0,106,4,0,124,0,0,106,0,0,106,5,0,60,100, + 0,0,83,41,2,78,84,41,6,114,209,0,0,0,218,13, + 95,105,110,105,116,105,97,108,105,122,105,110,103,114,208,0, + 0,0,114,7,0,0,0,114,169,0,0,0,114,67,0,0, + 0,41,1,114,78,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,98,0,0,0,192,2,0,0, + 115,4,0,0,0,0,4,12,1,122,27,95,105,110,115,116, + 97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,101, + 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,3, + 0,0,0,17,0,0,0,71,0,0,0,115,121,0,0,0, + 122,101,0,124,0,0,106,0,0,125,2,0,116,1,0,100, + 1,0,100,2,0,132,0,0,124,1,0,68,131,1,0,131, + 1,0,114,78,0,121,17,0,116,2,0,106,3,0,124,2, + 0,106,4,0,61,87,113,100,0,4,116,5,0,107,10,0, + 114,74,0,1,1,1,89,113,100,0,88,110,22,0,116,6, + 0,100,3,0,124,2,0,106,4,0,124,2,0,106,7,0, + 131,3,0,1,87,100,0,0,100,4,0,124,0,0,106,0, + 0,95,8,0,88,100,0,0,83,41,5,78,99,1,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,115,0,0, + 0,115,27,0,0,0,124,0,0,93,17,0,125,1,0,124, + 1,0,100,0,0,107,9,0,86,1,113,3,0,100,0,0, + 83,41,1,78,114,4,0,0,0,41,2,114,22,0,0,0, + 90,3,97,114,103,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,250,9,60,103,101,110,101,120,112,114,62,202, + 2,0,0,115,2,0,0,0,6,0,122,45,95,105,110,115, + 116,97,108,108,101,100,95,115,97,102,101,108,121,46,95,95, + 101,120,105,116,95,95,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,122,18,105,109,112,111,114, + 116,32,123,33,114,125,32,35,32,123,33,114,125,70,41,9, + 114,209,0,0,0,218,3,97,110,121,114,7,0,0,0,114, + 169,0,0,0,114,67,0,0,0,114,104,0,0,0,114,146, + 0,0,0,114,163,0,0,0,114,210,0,0,0,41,3,114, + 78,0,0,0,114,99,0,0,0,114,172,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,101,0, + 0,0,199,2,0,0,115,18,0,0,0,0,1,3,1,9, + 1,25,1,3,1,17,1,13,1,8,2,26,2,122,26,95, + 105,110,115,116,97,108,108,101,100,95,115,97,102,101,108,121, + 46,95,95,101,120,105,116,95,95,78,41,6,114,57,0,0, + 0,114,56,0,0,0,114,58,0,0,0,114,79,0,0,0, + 114,98,0,0,0,114,101,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,207, + 0,0,0,186,2,0,0,115,6,0,0,0,12,2,12,4, + 12,7,114,207,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,8,0,0,0,64,0,0,0,115,151,0,0, + 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, + 90,3,0,100,2,0,100,3,0,100,4,0,100,3,0,100, + 5,0,100,3,0,100,6,0,100,7,0,132,0,3,90,4, + 0,100,8,0,100,9,0,132,0,0,90,5,0,100,10,0, + 100,11,0,132,0,0,90,6,0,101,7,0,100,12,0,100, + 13,0,132,0,0,131,1,0,90,8,0,101,8,0,106,9, + 0,100,14,0,100,13,0,132,0,0,131,1,0,90,8,0, + 101,7,0,100,15,0,100,16,0,132,0,0,131,1,0,90, + 10,0,101,7,0,100,17,0,100,18,0,132,0,0,131,1, + 0,90,11,0,100,3,0,83,41,19,218,10,77,111,100,117, + 108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,115, + 112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,114, + 32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,32, + 102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,32, + 32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,101, + 99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,32, + 102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,32, + 97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,101, + 46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,32, + 97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32, + 116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,108, + 117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,115, + 101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,32, + 32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,110, + 97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,111, + 108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,101, + 32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,101, + 114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,114, + 10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,110, + 32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,100, + 117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,105, + 115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104, + 101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,104, + 101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,32, + 32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,100, + 101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32, + 110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,112, + 97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,110, + 101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, + 32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,32, + 110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,115, + 32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,116, + 101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,116, + 104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10, + 10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,111, + 99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,116, + 104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,119, + 104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,100, + 32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,32, + 116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,110, + 32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,32, + 87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,115, + 10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,110, + 32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,32, + 32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,96, + 32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32, + 97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,110, + 34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,99, + 97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,32, + 116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,95, + 95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,117, + 116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,99, + 97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,111, + 99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,97, + 99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,105, + 108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,10, + 32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,32, + 116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,100, + 95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,10, + 32,32,32,32,96,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,96, + 32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,101, + 32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,115, + 32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,119, + 104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,117, + 98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,101, + 116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,104, + 111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,101, + 45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,101, + 114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,107, + 97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,32, + 109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,97, + 121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,32, + 32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,110, + 101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,112, + 111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,119, + 105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,100, + 117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,109, + 32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,99, + 107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,121, + 32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,109, + 112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,97, + 80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,32, + 32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,99, + 46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,114, + 41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,32, + 77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,97, + 110,99,101,115,46,10,10,32,32,32,32,218,6,111,114,105, + 103,105,110,78,218,12,108,111,97,100,101,114,95,115,116,97, + 116,101,218,10,105,115,95,112,97,99,107,97,103,101,99,3, + 0,0,0,3,0,0,0,6,0,0,0,2,0,0,0,67, + 0,0,0,115,79,0,0,0,124,1,0,124,0,0,95,0, + 0,124,2,0,124,0,0,95,1,0,124,3,0,124,0,0, + 95,2,0,124,4,0,124,0,0,95,3,0,124,5,0,114, + 48,0,103,0,0,110,3,0,100,0,0,124,0,0,95,4, + 0,100,1,0,124,0,0,95,5,0,100,0,0,124,0,0, + 95,6,0,100,0,0,83,41,2,78,70,41,7,114,67,0, + 0,0,114,163,0,0,0,114,214,0,0,0,114,215,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,218,13,95, + 115,101,116,95,102,105,108,101,97,116,116,114,218,7,95,99, + 97,99,104,101,100,41,6,114,78,0,0,0,114,67,0,0, + 0,114,163,0,0,0,114,214,0,0,0,114,215,0,0,0, + 114,216,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,79,0,0,0,250,2,0,0,115,14,0, + 0,0,0,2,9,1,9,1,9,1,9,1,21,3,9,1, + 122,19,77,111,100,117,108,101,83,112,101,99,46,95,95,105, + 110,105,116,95,95,99,1,0,0,0,0,0,0,0,2,0, + 0,0,4,0,0,0,67,0,0,0,115,153,0,0,0,100, + 1,0,106,0,0,124,0,0,106,1,0,131,1,0,100,2, + 0,106,0,0,124,0,0,106,2,0,131,1,0,103,2,0, + 125,1,0,124,0,0,106,3,0,100,0,0,107,9,0,114, + 79,0,124,1,0,106,4,0,100,3,0,106,0,0,124,0, + 0,106,3,0,131,1,0,131,1,0,1,110,0,0,124,0, + 0,106,5,0,100,0,0,107,9,0,114,122,0,124,1,0, + 106,4,0,100,4,0,106,0,0,124,0,0,106,5,0,131, + 1,0,131,1,0,1,110,0,0,100,5,0,106,0,0,124, + 0,0,106,6,0,106,7,0,100,6,0,106,8,0,124,1, + 0,131,1,0,131,2,0,83,41,7,78,122,9,110,97,109, + 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123, + 33,114,125,122,11,111,114,105,103,105,110,61,123,33,114,125, + 122,29,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,61,123,125,122, + 6,123,125,40,123,125,41,122,2,44,32,41,9,114,47,0, + 0,0,114,67,0,0,0,114,163,0,0,0,114,214,0,0, + 0,218,6,97,112,112,101,110,100,114,217,0,0,0,218,9, + 95,95,99,108,97,115,115,95,95,114,57,0,0,0,114,26, + 0,0,0,41,2,114,78,0,0,0,114,99,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,90, + 0,0,0,6,3,0,0,115,16,0,0,0,0,1,15,1, + 21,1,15,1,28,1,15,1,6,1,22,1,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,3,0,0,0,13,0, + 0,0,67,0,0,0,115,145,0,0,0,124,0,0,106,0, + 0,125,2,0,121,107,0,124,0,0,106,1,0,124,1,0, + 106,1,0,107,2,0,111,114,0,124,0,0,106,2,0,124, + 1,0,106,2,0,107,2,0,111,114,0,124,0,0,106,3, + 0,124,1,0,106,3,0,107,2,0,111,114,0,124,2,0, + 124,1,0,106,0,0,107,2,0,111,114,0,124,0,0,106, + 4,0,124,1,0,106,4,0,107,2,0,111,114,0,124,0, + 0,106,5,0,124,1,0,106,5,0,107,2,0,83,87,110, + 22,0,4,116,6,0,107,10,0,114,140,0,1,1,1,100, + 1,0,83,89,110,1,0,88,100,0,0,83,41,2,78,70, + 41,7,114,217,0,0,0,114,67,0,0,0,114,163,0,0, + 0,114,214,0,0,0,218,6,99,97,99,104,101,100,218,12, + 104,97,115,95,108,111,99,97,116,105,111,110,114,204,0,0, + 0,41,3,114,78,0,0,0,90,5,111,116,104,101,114,90, + 4,115,109,115,108,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,6,95,95,101,113,95,95,16,3,0,0, + 115,20,0,0,0,0,1,9,1,3,1,18,1,18,1,18, + 1,15,1,18,1,20,1,13,1,122,17,77,111,100,117,108, + 101,83,112,101,99,46,95,95,101,113,95,95,99,1,0,0, + 0,0,0,0,0,2,0,0,0,12,0,0,0,67,0,0, + 0,115,158,0,0,0,124,0,0,106,0,0,100,0,0,107, + 8,0,114,151,0,124,0,0,106,1,0,100,0,0,107,9, + 0,114,151,0,124,0,0,106,2,0,114,151,0,124,0,0, + 106,1,0,125,1,0,124,1,0,106,3,0,116,4,0,116, + 5,0,131,1,0,131,1,0,114,112,0,121,19,0,116,6, + 0,124,1,0,131,1,0,124,0,0,95,0,0,87,113,145, + 0,4,116,7,0,107,10,0,114,108,0,1,1,1,89,113, + 145,0,88,113,148,0,124,1,0,106,3,0,116,4,0,116, + 8,0,131,1,0,131,1,0,114,148,0,124,1,0,124,0, + 0,95,0,0,113,148,0,113,151,0,110,0,0,124,0,0, + 106,0,0,83,41,1,78,41,9,114,219,0,0,0,114,214, + 0,0,0,114,218,0,0,0,218,8,101,110,100,115,119,105, + 116,104,218,5,116,117,112,108,101,114,128,0,0,0,114,126, + 0,0,0,114,118,0,0,0,218,17,66,89,84,69,67,79, + 68,69,95,83,85,70,70,73,88,69,83,41,2,114,78,0, + 0,0,114,125,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,222,0,0,0,28,3,0,0,115, + 22,0,0,0,0,2,15,1,24,1,9,1,21,1,3,1, + 19,1,13,1,8,1,21,1,18,1,122,17,77,111,100,117, + 108,101,83,112,101,99,46,99,97,99,104,101,100,99,2,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,13,0,0,0,124,1,0,124,0,0,95,0,0, + 100,0,0,83,41,1,78,41,1,114,219,0,0,0,41,2, + 114,78,0,0,0,114,222,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,222,0,0,0,42,3, + 0,0,115,2,0,0,0,0,2,99,1,0,0,0,0,0, + 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,46, + 0,0,0,124,0,0,106,0,0,100,1,0,107,8,0,114, + 35,0,124,0,0,106,1,0,106,2,0,100,2,0,131,1, + 0,100,3,0,25,83,124,0,0,106,1,0,83,100,1,0, + 83,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,32,112,97, + 114,101,110,116,46,78,114,110,0,0,0,114,71,0,0,0, + 41,3,114,217,0,0,0,114,67,0,0,0,114,32,0,0, + 0,41,1,114,78,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,6,112,97,114,101,110,116,46, + 3,0,0,115,6,0,0,0,0,3,15,1,20,2,122,17, + 77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,110, + 116,99,1,0,0,0,0,0,0,0,1,0,0,0,1,0, + 0,0,67,0,0,0,115,7,0,0,0,124,0,0,106,0, + 0,83,41,1,78,41,1,114,218,0,0,0,41,1,114,78, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,223,0,0,0,54,3,0,0,115,2,0,0,0, + 0,2,122,23,77,111,100,117,108,101,83,112,101,99,46,104, + 97,115,95,108,111,99,97,116,105,111,110,41,12,114,57,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0, + 0,114,79,0,0,0,114,90,0,0,0,114,224,0,0,0, + 218,8,112,114,111,112,101,114,116,121,114,222,0,0,0,218, + 6,115,101,116,116,101,114,114,228,0,0,0,114,223,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,213,0,0,0,213,2,0,0,115,18, + 0,0,0,12,35,6,2,15,1,15,11,12,10,12,12,18, + 14,21,4,18,8,114,213,0,0,0,114,214,0,0,0,114, + 216,0,0,0,99,2,0,0,0,2,0,0,0,5,0,0, + 0,15,0,0,0,67,0,0,0,115,193,0,0,0,116,0, + 0,124,1,0,100,1,0,131,2,0,114,83,0,124,3,0, + 100,2,0,107,8,0,114,43,0,116,1,0,124,0,0,100, + 3,0,124,1,0,131,1,1,83,124,3,0,114,55,0,103, + 0,0,110,3,0,100,2,0,125,4,0,116,1,0,124,0, + 0,100,3,0,124,1,0,100,4,0,124,4,0,131,1,2, + 83,124,3,0,100,2,0,107,8,0,114,168,0,116,0,0, + 124,1,0,100,5,0,131,2,0,114,159,0,121,19,0,124, + 1,0,106,2,0,124,0,0,131,1,0,125,3,0,87,113, + 165,0,4,116,3,0,107,10,0,114,155,0,1,1,1,100, + 2,0,125,3,0,89,113,165,0,88,113,168,0,100,6,0, + 125,3,0,110,0,0,116,4,0,124,0,0,124,1,0,100, + 7,0,124,2,0,100,5,0,124,3,0,131,2,2,83,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,97,115,101,100,32,111,110, + 32,118,97,114,105,111,117,115,32,108,111,97,100,101,114,32, + 109,101,116,104,111,100,115,46,218,12,103,101,116,95,102,105, + 108,101,110,97,109,101,78,114,163,0,0,0,114,217,0,0, + 0,114,216,0,0,0,70,114,214,0,0,0,41,5,114,60, + 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,114,216,0,0, + 0,114,147,0,0,0,114,213,0,0,0,41,5,114,67,0, + 0,0,114,163,0,0,0,114,214,0,0,0,114,216,0,0, + 0,90,6,115,101,97,114,99,104,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,167,0,0,0,59,3,0, + 0,115,28,0,0,0,0,4,15,1,12,1,16,1,18,1, + 15,1,7,2,12,1,15,1,3,1,19,1,13,1,14,3, + 9,2,114,167,0,0,0,114,163,0,0,0,114,217,0,0, + 0,99,2,0,0,0,2,0,0,0,9,0,0,0,19,0, + 0,0,67,0,0,0,115,110,1,0,0,124,1,0,100,1, + 0,107,8,0,114,79,0,100,2,0,125,1,0,116,0,0, + 124,2,0,100,3,0,131,2,0,114,79,0,121,19,0,124, + 2,0,106,1,0,124,0,0,131,1,0,125,1,0,87,113, + 76,0,4,116,2,0,107,10,0,114,72,0,1,1,1,89, + 113,76,0,88,113,79,0,110,0,0,116,3,0,124,0,0, + 124,2,0,100,4,0,124,1,0,131,2,1,125,4,0,100, + 5,0,124,4,0,95,4,0,124,2,0,100,1,0,107,8, + 0,114,203,0,120,79,0,116,5,0,131,0,0,68,93,61, + 0,92,2,0,125,5,0,125,6,0,124,1,0,106,6,0, + 116,7,0,124,6,0,131,1,0,131,1,0,114,131,0,124, + 5,0,124,0,0,124,1,0,131,2,0,125,2,0,124,2, + 0,124,4,0,95,8,0,80,113,131,0,113,131,0,87,100, + 1,0,83,110,0,0,124,3,0,116,9,0,107,8,0,114, + 38,1,116,0,0,124,2,0,100,6,0,131,2,0,114,47, + 1,121,19,0,124,2,0,106,10,0,124,0,0,131,1,0, + 125,7,0,87,110,18,0,4,116,2,0,107,10,0,114,13, + 1,1,1,1,89,113,35,1,88,124,7,0,114,35,1,103, + 0,0,124,4,0,95,11,0,113,35,1,113,47,1,110,9, + 0,124,3,0,124,4,0,95,11,0,124,4,0,106,11,0, + 103,0,0,107,2,0,114,106,1,124,1,0,114,106,1,116, + 12,0,124,1,0,131,1,0,100,7,0,25,125,8,0,124, + 4,0,106,11,0,106,13,0,124,8,0,131,1,0,1,113, + 106,1,110,0,0,124,4,0,83,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,114,231,0,0,0,114,214, + 0,0,0,84,114,216,0,0,0,114,71,0,0,0,41,14, + 114,60,0,0,0,114,231,0,0,0,114,147,0,0,0,114, + 213,0,0,0,114,218,0,0,0,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,225,0,0,0,114,226,0,0,0, + 114,163,0,0,0,218,9,95,80,79,80,85,76,65,84,69, + 114,216,0,0,0,114,217,0,0,0,114,38,0,0,0,114, + 220,0,0,0,41,9,114,67,0,0,0,218,8,108,111,99, + 97,116,105,111,110,114,163,0,0,0,114,217,0,0,0,114, + 172,0,0,0,218,12,108,111,97,100,101,114,95,99,108,97, + 115,115,114,121,0,0,0,114,216,0,0,0,90,7,100,105, + 114,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,232,0,0,0,86,3,0,0,115,60,0, + 0,0,0,12,12,4,6,1,15,2,3,1,19,1,13,1, + 11,8,21,1,9,3,12,1,22,1,21,1,15,1,9,1, + 8,2,7,3,12,2,15,1,3,1,19,1,13,1,5,2, + 6,1,18,2,9,1,15,1,6,1,16,1,22,2,114,232, + 0,0,0,99,3,0,0,0,0,0,0,0,8,0,0,0, + 53,0,0,0,67,0,0,0,115,124,1,0,0,121,13,0, + 124,0,0,106,0,0,125,3,0,87,110,18,0,4,116,1, + 0,107,10,0,114,33,0,1,1,1,89,110,17,0,88,124, + 3,0,100,0,0,107,9,0,114,50,0,124,3,0,83,124, + 0,0,106,2,0,125,4,0,124,1,0,100,0,0,107,8, + 0,114,108,0,121,13,0,124,0,0,106,3,0,125,1,0, + 87,113,108,0,4,116,1,0,107,10,0,114,104,0,1,1, + 1,89,113,108,0,88,110,0,0,121,13,0,124,0,0,106, + 4,0,125,5,0,87,110,24,0,4,116,1,0,107,10,0, + 114,147,0,1,1,1,100,0,0,125,5,0,89,110,1,0, + 88,124,2,0,100,0,0,107,8,0,114,224,0,124,5,0, + 100,0,0,107,8,0,114,215,0,121,13,0,124,1,0,106, + 5,0,125,2,0,87,113,221,0,4,116,1,0,107,10,0, + 114,211,0,1,1,1,100,0,0,125,2,0,89,113,221,0, + 88,113,224,0,124,5,0,125,2,0,110,0,0,121,13,0, + 124,0,0,106,6,0,125,6,0,87,110,24,0,4,116,1, + 0,107,10,0,114,7,1,1,1,1,100,0,0,125,6,0, + 89,110,1,0,88,121,19,0,116,7,0,124,0,0,106,8, + 0,131,1,0,125,7,0,87,110,24,0,4,116,1,0,107, + 10,0,114,53,1,1,1,1,100,0,0,125,7,0,89,110, + 1,0,88,116,9,0,124,4,0,124,1,0,100,1,0,124, + 2,0,131,2,1,125,3,0,124,5,0,100,0,0,107,8, + 0,114,93,1,100,2,0,110,3,0,100,3,0,124,3,0, + 95,10,0,124,6,0,124,3,0,95,11,0,124,7,0,124, + 3,0,95,12,0,124,3,0,83,41,4,78,114,214,0,0, + 0,70,84,41,13,114,203,0,0,0,114,204,0,0,0,114, + 57,0,0,0,114,199,0,0,0,114,205,0,0,0,90,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,213,0,0,0,114,218,0,0,0,114,222,0, + 0,0,114,217,0,0,0,41,8,114,174,0,0,0,114,163, + 0,0,0,114,214,0,0,0,114,172,0,0,0,114,67,0, + 0,0,114,235,0,0,0,114,222,0,0,0,114,217,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,17,95,115,112,101,99,95,102,114,111,109,95,109,111,100, + 117,108,101,150,3,0,0,115,72,0,0,0,0,2,3,1, + 13,1,13,1,5,2,12,1,4,2,9,1,12,1,3,1, + 13,1,13,2,8,1,3,1,13,1,13,1,11,1,12,1, + 12,1,3,1,13,1,13,1,14,2,9,1,3,1,13,1, + 13,1,11,1,3,1,19,1,13,1,11,2,21,1,27,1, + 9,1,9,1,114,240,0,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,6,0,0,0,64,0,0,0,115,172, + 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, + 1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,4, + 0,101,5,0,100,4,0,100,5,0,132,0,0,131,1,0, + 90,6,0,100,6,0,100,7,0,132,0,0,90,7,0,100, + 8,0,100,9,0,100,10,0,100,11,0,100,12,0,100,13, + 0,132,0,2,90,8,0,100,14,0,100,15,0,132,0,0, + 90,9,0,100,16,0,100,17,0,132,0,0,90,10,0,100, + 18,0,100,19,0,132,0,0,90,11,0,100,20,0,100,21, + 0,132,0,0,90,12,0,100,22,0,100,23,0,132,0,0, + 90,13,0,100,24,0,100,25,0,132,0,0,90,14,0,100, + 26,0,100,27,0,132,0,0,90,15,0,100,28,0,83,41, + 29,114,168,0,0,0,122,77,67,111,110,118,101,110,105,101, + 110,99,101,32,119,114,97,112,112,101,114,32,97,114,111,117, + 110,100,32,115,112,101,99,32,111,98,106,101,99,116,115,32, + 116,111,32,112,114,111,118,105,100,101,32,115,112,101,99,45, + 115,112,101,99,105,102,105,99,10,32,32,32,32,109,101,116, + 104,111,100,115,46,99,2,0,0,0,0,0,0,0,2,0, + 0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,124, + 1,0,124,0,0,95,0,0,100,0,0,83,41,1,78,41, + 1,114,172,0,0,0,41,2,114,78,0,0,0,114,172,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,79,0,0,0,200,3,0,0,115,2,0,0,0,0, + 1,122,21,95,83,112,101,99,77,101,116,104,111,100,115,46, + 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, + 0,4,0,0,0,17,0,0,0,67,0,0,0,115,144,0, + 0,0,121,13,0,124,1,0,106,0,0,125,2,0,87,110, + 118,0,4,116,1,0,107,10,0,114,133,0,1,1,1,121, + 13,0,124,2,0,106,2,0,125,3,0,87,110,66,0,4, + 116,1,0,107,10,0,114,110,0,1,1,1,116,3,0,124, + 1,0,106,4,0,131,1,0,125,2,0,124,2,0,100,1, + 0,107,8,0,114,106,0,116,5,0,124,1,0,106,4,0, + 124,3,0,131,2,0,125,2,0,110,0,0,89,110,19,0, + 88,116,5,0,124,1,0,106,4,0,124,3,0,131,2,0, + 125,2,0,89,110,1,0,88,124,0,0,124,2,0,131,1, + 0,83,41,2,122,41,67,114,101,97,116,101,32,97,32,115, + 112,101,99,32,102,114,111,109,32,97,32,109,111,100,117,108, + 101,39,115,32,97,116,116,114,105,98,117,116,101,115,46,78, + 41,6,114,203,0,0,0,114,204,0,0,0,114,199,0,0, + 0,218,10,95,102,105,110,100,95,115,112,101,99,114,57,0, + 0,0,114,167,0,0,0,41,4,218,3,99,108,115,114,174, + 0,0,0,114,172,0,0,0,114,163,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,11,102,114, + 111,109,95,109,111,100,117,108,101,203,3,0,0,115,22,0, + 0,0,0,3,3,1,13,1,13,1,3,1,13,1,13,1, + 15,1,12,1,26,2,23,1,122,24,95,83,112,101,99,77, + 101,116,104,111,100,115,46,102,114,111,109,95,109,111,100,117, + 108,101,99,1,0,0,0,0,0,0,0,3,0,0,0,3, + 0,0,0,67,0,0,0,115,158,0,0,0,124,0,0,106, + 0,0,125,1,0,124,1,0,106,1,0,100,1,0,107,8, + 0,114,30,0,100,2,0,110,6,0,124,1,0,106,1,0, + 125,2,0,124,1,0,106,2,0,100,1,0,107,8,0,114, + 104,0,124,1,0,106,3,0,100,1,0,107,8,0,114,82, + 0,100,3,0,106,4,0,124,2,0,131,1,0,83,100,4, + 0,106,4,0,124,2,0,124,1,0,106,3,0,131,2,0, + 83,110,50,0,124,1,0,106,5,0,114,132,0,100,5,0, + 106,4,0,124,2,0,124,1,0,106,2,0,131,2,0,83, + 100,6,0,106,4,0,124,1,0,106,1,0,124,1,0,106, + 2,0,131,2,0,83,100,1,0,83,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,201,0,0,0,122,13,60,109,111,100, + 117,108,101,32,123,33,114,125,62,122,20,60,109,111,100,117, + 108,101,32,123,33,114,125,32,40,123,33,114,125,41,62,122, + 23,60,109,111,100,117,108,101,32,123,33,114,125,32,102,114, + 111,109,32,123,33,114,125,62,122,18,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,125,41,62,41,6,114,172, + 0,0,0,114,67,0,0,0,114,214,0,0,0,114,163,0, + 0,0,114,47,0,0,0,114,223,0,0,0,41,3,114,78, + 0,0,0,114,172,0,0,0,114,67,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,200,0,0, + 0,219,3,0,0,115,18,0,0,0,0,3,9,1,30,1, + 15,1,15,1,13,2,22,2,9,1,19,2,122,24,95,83, + 112,101,99,77,101,116,104,111,100,115,46,109,111,100,117,108, + 101,95,114,101,112,114,218,9,95,111,118,101,114,114,105,100, + 101,70,218,11,95,102,111,114,99,101,95,110,97,109,101,84, + 99,2,0,0,0,2,0,0,0,6,0,0,0,66,0,0, + 0,67,0,0,0,115,75,2,0,0,124,0,0,106,0,0, + 125,4,0,124,2,0,115,45,0,124,3,0,115,45,0,116, + 1,0,124,1,0,100,1,0,100,2,0,131,3,0,100,2, + 0,107,8,0,114,85,0,121,16,0,124,4,0,106,2,0, + 124,1,0,95,3,0,87,113,85,0,4,116,4,0,107,10, + 0,114,81,0,1,1,1,89,113,85,0,88,110,0,0,124, + 2,0,115,115,0,116,1,0,124,1,0,100,3,0,100,2, + 0,131,3,0,100,2,0,107,8,0,114,221,0,124,4,0, + 106,5,0,125,5,0,124,5,0,100,2,0,107,8,0,114, + 184,0,124,4,0,106,6,0,100,2,0,107,9,0,114,184, + 0,116,7,0,106,8,0,116,7,0,131,1,0,125,5,0, + 124,4,0,106,6,0,124,5,0,95,9,0,113,184,0,110, + 0,0,121,13,0,124,5,0,124,1,0,95,10,0,87,113, + 221,0,4,116,4,0,107,10,0,114,217,0,1,1,1,89, + 113,221,0,88,110,0,0,124,2,0,115,251,0,116,1,0, + 124,1,0,100,4,0,100,2,0,131,3,0,100,2,0,107, + 8,0,114,35,1,121,16,0,124,4,0,106,11,0,124,1, + 0,95,12,0,87,113,35,1,4,116,4,0,107,10,0,114, + 31,1,1,1,1,89,113,35,1,88,110,0,0,121,13,0, + 124,4,0,124,1,0,95,13,0,87,110,18,0,4,116,4, + 0,107,10,0,114,68,1,1,1,1,89,110,1,0,88,124, + 2,0,115,99,1,116,1,0,124,1,0,100,5,0,100,2, + 0,131,3,0,100,2,0,107,8,0,114,157,1,124,4,0, + 106,6,0,100,2,0,107,9,0,114,157,1,121,16,0,124, + 4,0,106,6,0,124,1,0,95,14,0,87,113,154,1,4, + 116,4,0,107,10,0,114,150,1,1,1,1,89,113,154,1, + 88,113,157,1,110,0,0,124,4,0,106,15,0,114,71,2, + 124,2,0,115,196,1,116,1,0,124,1,0,100,6,0,100, + 2,0,131,3,0,100,2,0,107,8,0,114,236,1,121,16, + 0,124,4,0,106,16,0,124,1,0,95,17,0,87,113,236, + 1,4,116,4,0,107,10,0,114,232,1,1,1,1,89,113, + 236,1,88,110,0,0,124,2,0,115,10,2,116,1,0,124, + 1,0,100,7,0,100,2,0,131,3,0,100,2,0,107,8, + 0,114,71,2,124,4,0,106,18,0,100,2,0,107,9,0, + 114,68,2,121,16,0,124,4,0,106,18,0,124,1,0,95, + 19,0,87,113,65,2,4,116,4,0,107,10,0,114,61,2, + 1,1,1,89,113,65,2,88,113,68,2,113,71,2,110,0, + 0,100,2,0,83,41,8,97,29,2,0,0,83,101,116,32, + 116,104,101,32,109,111,100,117,108,101,39,115,32,97,116,116, + 114,105,98,117,116,101,115,46,10,10,32,32,32,32,32,32, + 32,32,65,108,108,32,109,105,115,115,105,110,103,32,105,109, + 112,111,114,116,45,114,101,108,97,116,101,100,32,109,111,100, + 117,108,101,32,97,116,116,114,105,98,117,116,101,115,32,119, + 105,108,108,32,98,101,32,115,101,116,46,32,32,72,101,114, + 101,10,32,32,32,32,32,32,32,32,105,115,32,104,111,119, + 32,116,104,101,32,115,112,101,99,32,97,116,116,114,105,98, + 117,116,101,115,32,109,97,112,32,111,110,116,111,32,116,104, + 101,32,109,111,100,117,108,101,58,10,10,32,32,32,32,32, + 32,32,32,115,112,101,99,46,110,97,109,101,32,45,62,32, + 109,111,100,117,108,101,46,95,95,110,97,109,101,95,95,10, + 32,32,32,32,32,32,32,32,115,112,101,99,46,108,111,97, + 100,101,114,32,45,62,32,109,111,100,117,108,101,46,95,95, + 108,111,97,100,101,114,95,95,10,32,32,32,32,32,32,32, + 32,115,112,101,99,46,112,97,114,101,110,116,32,45,62,32, + 109,111,100,117,108,101,46,95,95,112,97,99,107,97,103,101, + 95,95,10,32,32,32,32,32,32,32,32,115,112,101,99,32, + 45,62,32,109,111,100,117,108,101,46,95,95,115,112,101,99, + 95,95,10,10,32,32,32,32,32,32,32,32,79,112,116,105, + 111,110,97,108,58,10,32,32,32,32,32,32,32,32,115,112, + 101,99,46,111,114,105,103,105,110,32,45,62,32,109,111,100, + 117,108,101,46,95,95,102,105,108,101,95,95,32,40,105,102, + 32,115,112,101,99,46,115,101,116,95,102,105,108,101,97,116, + 116,114,32,105,115,32,116,114,117,101,41,10,32,32,32,32, + 32,32,32,32,115,112,101,99,46,99,97,99,104,101,100,32, + 45,62,32,109,111,100,117,108,101,46,95,95,99,97,99,104, + 101,100,95,95,32,40,105,102,32,95,95,102,105,108,101,95, + 95,32,97,108,115,111,32,115,101,116,41,10,32,32,32,32, + 32,32,32,32,115,112,101,99,46,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,45,62,32,109,111,100,117,108,101,46,95,95, + 112,97,116,104,95,95,32,40,105,102,32,115,101,116,41,10, + 10,32,32,32,32,32,32,32,32,114,57,0,0,0,78,114, + 199,0,0,0,218,11,95,95,112,97,99,107,97,103,101,95, + 95,114,239,0,0,0,114,205,0,0,0,114,237,0,0,0, + 41,20,114,172,0,0,0,114,62,0,0,0,114,67,0,0, + 0,114,57,0,0,0,114,204,0,0,0,114,163,0,0,0, + 114,217,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, + 218,5,95,112,97,116,104,114,199,0,0,0,114,228,0,0, + 0,114,246,0,0,0,114,203,0,0,0,114,239,0,0,0, + 114,223,0,0,0,114,214,0,0,0,114,205,0,0,0,114, + 222,0,0,0,114,237,0,0,0,41,6,114,78,0,0,0, + 114,174,0,0,0,114,244,0,0,0,114,245,0,0,0,114, + 172,0,0,0,114,163,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,17,105,110,105,116,95,109, + 111,100,117,108,101,95,97,116,116,114,115,235,3,0,0,115, + 88,0,0,0,0,17,9,6,12,1,24,1,3,1,16,1, + 13,1,8,3,30,1,9,1,12,2,15,1,15,1,18,1, + 3,1,13,1,13,1,8,3,30,1,3,1,16,1,13,1, + 8,3,3,1,13,1,13,1,5,3,30,1,15,1,3,1, + 16,1,13,1,11,2,9,2,30,1,3,1,16,1,13,1, + 8,3,30,1,15,1,3,1,16,1,13,1,122,30,95,83, + 112,101,99,77,101,116,104,111,100,115,46,105,110,105,116,95, + 109,111,100,117,108,101,95,97,116,116,114,115,99,1,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, + 0,115,101,0,0,0,124,0,0,106,0,0,125,1,0,116, + 1,0,124,1,0,106,2,0,100,1,0,131,2,0,114,48, + 0,124,1,0,106,2,0,106,3,0,124,1,0,131,1,0, + 125,2,0,110,6,0,100,2,0,125,2,0,124,2,0,100, + 2,0,107,8,0,114,84,0,116,4,0,124,1,0,106,5, + 0,131,1,0,125,2,0,110,0,0,124,0,0,106,6,0, + 124,2,0,131,1,0,1,124,2,0,83,41,3,122,153,82, + 101,116,117,114,110,32,97,32,110,101,119,32,109,111,100,117, + 108,101,32,116,111,32,98,101,32,108,111,97,100,101,100,46, + 10,10,32,32,32,32,32,32,32,32,84,104,101,32,105,109, + 112,111,114,116,45,114,101,108,97,116,101,100,32,109,111,100, + 117,108,101,32,97,116,116,114,105,98,117,116,101,115,32,97, + 114,101,32,97,108,115,111,32,115,101,116,32,119,105,116,104, + 32,116,104,101,10,32,32,32,32,32,32,32,32,97,112,112, + 114,111,112,114,105,97,116,101,32,118,97,108,117,101,115,32, + 102,114,111,109,32,116,104,101,32,115,112,101,99,46,10,10, + 32,32,32,32,32,32,32,32,218,13,99,114,101,97,116,101, + 95,109,111,100,117,108,101,78,41,7,114,172,0,0,0,114, + 60,0,0,0,114,163,0,0,0,114,251,0,0,0,114,68, + 0,0,0,114,67,0,0,0,114,250,0,0,0,41,3,114, + 78,0,0,0,114,172,0,0,0,114,174,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,6,99, + 114,101,97,116,101,59,4,0,0,115,16,0,0,0,0,7, + 9,2,18,3,21,2,6,1,12,4,18,1,13,1,122,19, + 95,83,112,101,99,77,101,116,104,111,100,115,46,99,114,101, + 97,116,101,99,2,0,0,0,0,0,0,0,2,0,0,0, + 2,0,0,0,67,0,0,0,115,23,0,0,0,124,0,0, + 106,0,0,106,1,0,106,2,0,124,1,0,131,1,0,1, + 100,1,0,83,41,2,122,189,68,111,32,101,118,101,114,121, + 116,104,105,110,103,32,110,101,99,101,115,115,97,114,121,32, + 116,111,32,101,120,101,99,117,116,101,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,110,97,109,101,115,112,97,99,101,32,111,102, + 32,96,109,111,100,117,108,101,96,32,105,115,32,117,115,101, + 100,32,97,115,32,116,104,101,32,116,97,114,103,101,116,32, + 111,102,32,101,120,101,99,117,116,105,111,110,46,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,117,115,101,115,32,116,104,101,32,108,111,97,100,101, + 114,39,115,32,96,101,120,101,99,95,109,111,100,117,108,101, + 40,41,96,32,109,101,116,104,111,100,46,10,10,32,32,32, + 32,32,32,32,32,78,41,3,114,172,0,0,0,114,163,0, + 0,0,218,11,101,120,101,99,95,109,111,100,117,108,101,41, + 2,114,78,0,0,0,114,174,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,5,95,101,120,101, + 99,82,4,0,0,115,2,0,0,0,0,7,122,18,95,83, + 112,101,99,77,101,116,104,111,100,115,46,95,101,120,101,99, + 99,2,0,0,0,0,0,0,0,4,0,0,0,11,0,0, + 0,67,0,0,0,115,17,1,0,0,124,0,0,106,0,0, + 106,1,0,125,2,0,116,2,0,106,3,0,131,0,0,1, + 116,4,0,124,2,0,131,1,0,143,226,0,1,116,5,0, + 106,6,0,106,7,0,124,2,0,131,1,0,124,1,0,107, + 9,0,114,95,0,100,1,0,106,8,0,124,2,0,131,1, + 0,125,3,0,116,9,0,124,3,0,100,2,0,124,2,0, + 131,1,1,130,1,0,110,0,0,124,0,0,106,0,0,106, + 10,0,100,3,0,107,8,0,114,181,0,124,0,0,106,0, + 0,106,11,0,100,3,0,107,8,0,114,158,0,116,9,0, + 100,4,0,100,2,0,124,0,0,106,0,0,106,1,0,131, + 1,1,130,1,0,110,0,0,124,0,0,106,12,0,124,1, + 0,100,5,0,100,6,0,131,1,1,1,124,1,0,83,124, + 0,0,106,12,0,124,1,0,100,5,0,100,6,0,131,1, + 1,1,116,13,0,124,0,0,106,0,0,106,10,0,100,7, + 0,131,2,0,115,243,0,124,0,0,106,0,0,106,10,0, + 106,14,0,124,2,0,131,1,0,1,110,13,0,124,0,0, + 106,15,0,124,1,0,131,1,0,1,87,100,3,0,81,88, + 116,5,0,106,6,0,124,2,0,25,83,41,8,122,51,69, + 120,101,99,117,116,101,32,116,104,101,32,115,112,101,99,32, + 105,110,32,97,110,32,101,120,105,115,116,105,110,103,32,109, + 111,100,117,108,101,39,115,32,110,97,109,101,115,112,97,99, + 101,46,122,28,109,111,100,117,108,101,32,123,125,32,110,111, + 116,32,105,110,32,115,121,115,46,109,111,100,117,108,101,115, + 114,67,0,0,0,78,122,14,109,105,115,115,105,110,103,32, + 108,111,97,100,101,114,114,244,0,0,0,84,114,253,0,0, + 0,41,16,114,172,0,0,0,114,67,0,0,0,114,96,0, + 0,0,218,12,97,99,113,117,105,114,101,95,108,111,99,107, + 114,92,0,0,0,114,7,0,0,0,114,169,0,0,0,114, + 82,0,0,0,114,47,0,0,0,114,147,0,0,0,114,163, + 0,0,0,114,217,0,0,0,114,250,0,0,0,114,60,0, + 0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,114, + 254,0,0,0,41,4,114,78,0,0,0,114,174,0,0,0, + 114,67,0,0,0,114,165,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,170,0,0,0,92,4, + 0,0,115,32,0,0,0,0,2,12,1,10,1,13,1,24, + 1,15,1,21,1,18,1,18,1,27,2,19,1,4,1,19, + 1,21,2,22,2,19,1,122,17,95,83,112,101,99,77,101, + 116,104,111,100,115,46,101,120,101,99,99,1,0,0,0,0, + 0,0,0,3,0,0,0,27,0,0,0,67,0,0,0,115, + 24,1,0,0,124,0,0,106,0,0,125,1,0,124,1,0, + 106,1,0,106,2,0,124,1,0,106,3,0,131,1,0,1, + 116,4,0,106,5,0,124,1,0,106,3,0,25,125,2,0, + 116,6,0,124,2,0,100,1,0,100,0,0,131,3,0,100, + 0,0,107,8,0,114,108,0,121,16,0,124,1,0,106,1, + 0,124,2,0,95,7,0,87,113,108,0,4,116,8,0,107, + 10,0,114,104,0,1,1,1,89,113,108,0,88,110,0,0, + 116,6,0,124,2,0,100,2,0,100,0,0,131,3,0,100, + 0,0,107,8,0,114,215,0,121,59,0,124,2,0,106,9, + 0,124,2,0,95,10,0,116,11,0,124,2,0,100,3,0, + 131,2,0,115,190,0,124,1,0,106,3,0,106,12,0,100, + 4,0,131,1,0,100,5,0,25,124,2,0,95,10,0,110, + 0,0,87,113,215,0,4,116,8,0,107,10,0,114,211,0, + 1,1,1,89,113,215,0,88,110,0,0,116,6,0,124,2, + 0,100,6,0,100,0,0,131,3,0,100,0,0,107,8,0, + 114,20,1,121,13,0,124,1,0,124,2,0,95,13,0,87, + 113,20,1,4,116,8,0,107,10,0,114,16,1,1,1,1, + 89,113,20,1,88,110,0,0,124,2,0,83,41,7,78,114, + 199,0,0,0,114,246,0,0,0,114,239,0,0,0,114,110, + 0,0,0,114,71,0,0,0,114,203,0,0,0,41,14,114, + 172,0,0,0,114,163,0,0,0,114,0,1,0,0,114,67, + 0,0,0,114,7,0,0,0,114,169,0,0,0,114,62,0, + 0,0,114,199,0,0,0,114,204,0,0,0,114,57,0,0, + 0,114,246,0,0,0,114,60,0,0,0,114,32,0,0,0, + 114,203,0,0,0,41,3,114,78,0,0,0,114,172,0,0, + 0,114,174,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,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, + 114,4,0,0,115,42,0,0,0,0,2,9,2,19,1,16, + 1,24,1,3,1,16,1,13,1,8,1,24,1,3,4,12, + 1,15,1,32,1,13,1,8,1,24,1,3,1,13,1,13, + 1,8,1,122,38,95,83,112,101,99,77,101,116,104,111,100, + 115,46,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,99,2,0,0,0, + 0,0,0,0,3,0,0,0,9,0,0,0,67,0,0,0, + 115,38,0,0,0,116,0,0,124,1,0,131,1,0,143,20, + 0,1,124,0,0,106,1,0,124,1,0,131,1,0,125,2, + 0,87,100,1,0,81,88,124,2,0,83,41,2,122,60,69, + 120,101,99,32,116,104,101,32,115,112,101,99,39,101,100,32, + 109,111,100,117,108,101,32,105,110,116,111,32,97,110,32,101, + 120,105,115,116,105,110,103,32,109,111,100,117,108,101,39,115, + 32,110,97,109,101,115,112,97,99,101,46,78,41,2,114,207, + 0,0,0,114,170,0,0,0,41,3,114,78,0,0,0,114, + 174,0,0,0,90,6,108,111,97,100,101,100,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,218,14,95,108,111, + 97,100,95,101,120,105,115,116,105,110,103,144,4,0,0,115, + 6,0,0,0,0,3,13,1,21,1,122,27,95,83,112,101, + 99,77,101,116,104,111,100,115,46,95,108,111,97,100,95,101, + 120,105,115,116,105,110,103,99,1,0,0,0,0,0,0,0, + 2,0,0,0,11,0,0,0,67,0,0,0,115,179,0,0, + 0,124,0,0,106,0,0,106,1,0,100,0,0,107,9,0, + 114,52,0,116,2,0,124,0,0,106,0,0,106,1,0,100, + 1,0,131,2,0,115,52,0,124,0,0,106,3,0,131,0, + 0,83,110,0,0,124,0,0,106,4,0,131,0,0,125,1, + 0,116,5,0,124,1,0,131,1,0,143,84,0,1,124,0, + 0,106,0,0,106,1,0,100,0,0,107,8,0,114,143,0, + 124,0,0,106,0,0,106,6,0,100,0,0,107,8,0,114, + 156,0,116,7,0,100,2,0,100,3,0,124,0,0,106,0, + 0,106,8,0,131,1,1,130,1,0,113,156,0,110,13,0, + 124,0,0,106,9,0,124,1,0,131,1,0,1,87,100,0, + 0,81,88,116,10,0,106,11,0,124,0,0,106,0,0,106, + 8,0,25,83,41,4,78,114,253,0,0,0,122,14,109,105, + 115,115,105,110,103,32,108,111,97,100,101,114,114,67,0,0, + 0,41,12,114,172,0,0,0,114,163,0,0,0,114,60,0, + 0,0,114,1,1,0,0,114,252,0,0,0,114,207,0,0, + 0,114,217,0,0,0,114,147,0,0,0,114,67,0,0,0, + 114,254,0,0,0,114,7,0,0,0,114,169,0,0,0,41, + 2,114,78,0,0,0,114,174,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,14,95,108,111,97, + 100,95,117,110,108,111,99,107,101,100,151,4,0,0,115,20, + 0,0,0,0,2,18,2,21,1,13,2,12,1,13,1,18, + 1,18,1,30,3,19,5,122,27,95,83,112,101,99,77,101, + 116,104,111,100,115,46,95,108,111,97,100,95,117,110,108,111, + 99,107,101,100,99,1,0,0,0,0,0,0,0,1,0,0, + 0,8,0,0,0,67,0,0,0,115,49,0,0,0,116,0, + 0,106,1,0,131,0,0,1,116,2,0,124,0,0,106,3, + 0,106,4,0,131,1,0,143,15,0,1,124,0,0,106,5, + 0,131,0,0,83,87,100,1,0,81,88,100,1,0,83,41, + 2,122,207,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,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,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,32,32,32,32,99,108, + 111,98,98,101,114,101,100,46,10,10,32,32,32,32,32,32, + 32,32,78,41,6,114,96,0,0,0,114,255,0,0,0,114, + 92,0,0,0,114,172,0,0,0,114,67,0,0,0,114,3, + 1,0,0,41,1,114,78,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,171,0,0,0,174,4, + 0,0,115,6,0,0,0,0,9,10,1,19,1,122,17,95, + 83,112,101,99,77,101,116,104,111,100,115,46,108,111,97,100, + 78,41,16,114,57,0,0,0,114,56,0,0,0,114,58,0, + 0,0,114,59,0,0,0,114,79,0,0,0,218,11,99,108, + 97,115,115,109,101,116,104,111,100,114,243,0,0,0,114,200, + 0,0,0,114,250,0,0,0,114,252,0,0,0,114,254,0, + 0,0,114,170,0,0,0,114,1,1,0,0,114,2,1,0, + 0,114,3,1,0,0,114,171,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 168,0,0,0,195,3,0,0,115,24,0,0,0,12,3,6, + 2,12,3,18,16,12,16,24,80,12,23,12,10,12,22,12, + 30,12,7,12,23,114,168,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,5,0,0,0,64,0,0,0,115, + 193,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,90,3,0,101,4,0,100,2,0,100,3,0,132, + 0,0,131,1,0,90,5,0,101,6,0,100,4,0,100,4, + 0,100,5,0,100,6,0,132,2,0,131,1,0,90,7,0, + 101,6,0,100,4,0,100,7,0,100,8,0,132,1,0,131, + 1,0,90,8,0,101,4,0,100,9,0,100,10,0,132,0, + 0,131,1,0,90,9,0,101,6,0,100,11,0,100,12,0, + 132,0,0,131,1,0,90,10,0,101,6,0,101,11,0,100, + 13,0,100,14,0,132,0,0,131,1,0,131,1,0,90,12, + 0,101,6,0,101,11,0,100,15,0,100,16,0,132,0,0, + 131,1,0,131,1,0,90,13,0,101,6,0,101,11,0,100, + 17,0,100,18,0,132,0,0,131,1,0,131,1,0,90,14, + 0,100,4,0,83,41,19,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,99,1,0,0,0,0, + 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,100,1,0,106,0,0,124,0,0,106,1,0, + 131,1,0,83,41,2,78,122,24,60,109,111,100,117,108,101, + 32,123,33,114,125,32,40,98,117,105,108,116,45,105,110,41, + 62,41,2,114,47,0,0,0,114,57,0,0,0,41,1,114, + 174,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,200,0,0,0,199,4,0,0,115,2,0,0, + 0,0,3,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,4,0,0,0,5,0, + 0,0,67,0,0,0,115,58,0,0,0,124,2,0,100,0, + 0,107,9,0,114,16,0,100,0,0,83,116,0,0,106,1, + 0,124,1,0,131,1,0,114,50,0,116,2,0,124,1,0, + 124,0,0,100,1,0,100,2,0,131,2,1,83,100,0,0, + 83,100,0,0,83,41,3,78,114,214,0,0,0,122,8,98, + 117,105,108,116,45,105,110,41,3,114,96,0,0,0,218,10, + 105,115,95,98,117,105,108,116,105,110,114,167,0,0,0,41, + 4,114,242,0,0,0,114,152,0,0,0,114,35,0,0,0, + 218,6,116,97,114,103,101,116,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,9,102,105,110,100,95,115,112, + 101,99,204,4,0,0,115,10,0,0,0,0,2,12,1,4, + 1,15,1,19,2,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,4,0,0,0,3,0,0, + 0,67,0,0,0,115,41,0,0,0,124,0,0,106,0,0, + 124,1,0,124,2,0,131,2,0,125,3,0,124,3,0,100, + 1,0,107,9,0,114,37,0,124,3,0,106,1,0,83,100, 1,0,83,41,2,122,113,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, @@ -1369,897 +2036,912 @@ const unsigned char _Py_M__importlib[] = { 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,78,41,2,114,95,0,0,0, - 90,10,105,115,95,98,117,105,108,116,105,110,41,3,114,216, - 0,0,0,114,179,0,0,0,114,35,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,11,102,105, - 110,100,95,109,111,100,117,108,101,251,2,0,0,115,6,0, - 0,0,0,7,12,1,4,1,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,2,0,0,0,0,0,0,0,2,0, - 0,0,10,0,0,0,67,0,0,0,115,39,0,0,0,116, - 0,0,124,1,0,131,1,0,143,21,0,1,116,1,0,116, - 2,0,106,3,0,124,1,0,131,2,0,83,87,100,1,0, - 81,88,100,1,0,83,41,2,122,23,76,111,97,100,32,97, - 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, - 46,78,41,4,114,139,0,0,0,114,100,0,0,0,114,95, - 0,0,0,90,12,105,110,105,116,95,98,117,105,108,116,105, - 110,41,2,114,216,0,0,0,114,179,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,11,108,111, - 97,100,95,109,111,100,117,108,101,6,3,0,0,115,4,0, - 0,0,0,6,13,1,122,27,66,117,105,108,116,105,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,2,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0, - 83,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, - 4,0,0,0,41,2,114,216,0,0,0,114,179,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 8,103,101,116,95,99,111,100,101,15,3,0,0,115,2,0, - 0,0,0,4,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, + 32,32,32,32,32,32,32,32,78,41,2,114,8,1,0,0, + 114,163,0,0,0,41,4,114,242,0,0,0,114,152,0,0, + 0,114,35,0,0,0,114,172,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,11,102,105,110,100, + 95,109,111,100,117,108,101,213,4,0,0,115,4,0,0,0, + 0,7,18,1,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,3,0,0,0,4,0, + 0,0,67,0,0,0,115,109,0,0,0,124,0,0,106,0, + 0,125,1,0,124,1,0,106,1,0,125,2,0,116,2,0, + 106,3,0,124,2,0,131,1,0,115,63,0,116,4,0,100, + 1,0,106,5,0,124,2,0,131,1,0,100,2,0,124,2, + 0,131,1,1,130,1,0,110,0,0,116,6,0,116,2,0, + 106,7,0,124,2,0,131,2,0,1,116,8,0,124,1,0, + 131,1,0,106,9,0,116,10,0,106,11,0,124,2,0,25, + 131,1,0,1,100,0,0,83,41,3,78,122,27,123,125,32, + 105,115,32,110,111,116,32,97,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,114,67,0,0,0,41,12,114, + 203,0,0,0,114,67,0,0,0,114,96,0,0,0,114,6, + 1,0,0,114,147,0,0,0,114,47,0,0,0,114,108,0, + 0,0,90,12,105,110,105,116,95,98,117,105,108,116,105,110, + 114,168,0,0,0,114,250,0,0,0,114,7,0,0,0,114, + 169,0,0,0,41,3,114,174,0,0,0,114,172,0,0,0, + 114,67,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,253,0,0,0,223,4,0,0,115,14,0, + 0,0,0,2,9,1,9,1,15,1,18,1,12,1,16,4, + 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,2,0,0,0,3,0,0,0,67,0, + 0,0,115,13,0,0,0,116,0,0,124,0,0,124,1,0, + 131,2,0,83,41,1,122,23,76,111,97,100,32,97,32,98, + 117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,41, + 1,114,175,0,0,0,41,2,114,242,0,0,0,114,152,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,0,1,0,0,236,4,0,0,115,2,0,0,0,0, + 3,122,27,66,117,105,108,116,105,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,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,0,83,41,2,122,56, + 0,0,0,115,4,0,0,0,100,1,0,83,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,115,111,117,114, - 99,101,32,99,111,100,101,46,78,114,4,0,0,0,41,2, - 114,216,0,0,0,114,179,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,218,10,103,101,116,95,115, - 111,117,114,99,101,21,3,0,0,115,2,0,0,0,0,4, - 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,2,0,0,0,1,0,0,0,67,0,0, - 0,115,4,0,0,0,100,1,0,83,41,2,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,114,4,0,0,0,41,2,114,216,0,0,0,114, - 179,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,157,0,0,0,27,3,0,0,115,2,0,0, - 0,0,4,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, - 14,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,59,0,0,0,218,11,99,108,97,115,115,109,101,116,104, - 111,100,114,217,0,0,0,114,218,0,0,0,114,171,0,0, - 0,114,174,0,0,0,114,181,0,0,0,114,219,0,0,0, - 114,220,0,0,0,114,221,0,0,0,114,157,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,215,0,0,0,238,2,0,0,115,28,0,0, - 0,12,7,6,2,18,4,3,1,18,10,3,1,3,1,3, - 1,27,6,3,1,21,5,3,1,21,5,3,1,114,215,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,6, - 0,0,0,64,0,0,0,115,169,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,90,3,0,101,4, - 0,100,2,0,100,3,0,132,0,0,131,1,0,90,5,0, - 101,4,0,100,4,0,100,5,0,100,6,0,132,1,0,131, - 1,0,90,6,0,101,4,0,101,7,0,101,8,0,101,9, - 0,100,7,0,100,8,0,132,0,0,131,1,0,131,1,0, - 131,1,0,131,1,0,90,10,0,101,4,0,101,9,0,100, - 9,0,100,10,0,132,0,0,131,1,0,131,1,0,90,11, - 0,101,4,0,101,9,0,100,11,0,100,12,0,132,0,0, - 131,1,0,131,1,0,90,12,0,101,4,0,101,9,0,100, - 13,0,100,14,0,132,0,0,131,1,0,131,1,0,90,13, - 0,100,4,0,83,41,15,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,99,2,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,100,1,0,106,0,0,124,1,0,106,1,0,131,1,0, - 83,41,2,78,122,22,60,109,111,100,117,108,101,32,123,33, - 114,125,32,40,102,114,111,122,101,110,41,62,41,2,114,47, - 0,0,0,114,57,0,0,0,41,2,114,216,0,0,0,218, - 1,109,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,217,0,0,0,43,3,0,0,115,2,0,0,0,0, - 2,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,3, - 0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,67, - 0,0,0,115,23,0,0,0,116,0,0,106,1,0,124,1, - 0,131,1,0,114,19,0,124,0,0,83,100,1,0,83,41, - 2,122,21,70,105,110,100,32,97,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,46,78,41,2,114,95,0,0,0, - 114,182,0,0,0,41,3,114,216,0,0,0,114,179,0,0, - 0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,218,0,0,0,47,3,0,0,115,2, - 0,0,0,0,3,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,2,0,0,0,0,0,0,0,3,0,0,0,10,0, - 0,0,67,0,0,0,115,51,0,0,0,116,0,0,124,1, - 0,131,1,0,143,33,0,1,116,1,0,116,2,0,106,3, - 0,124,1,0,131,2,0,125,2,0,124,2,0,96,4,0, - 124,2,0,83,87,100,1,0,81,88,100,1,0,83,41,2, - 122,21,76,111,97,100,32,97,32,102,114,111,122,101,110,32, - 109,111,100,117,108,101,46,78,41,5,114,139,0,0,0,114, - 100,0,0,0,114,95,0,0,0,90,11,105,110,105,116,95, - 102,114,111,122,101,110,114,165,0,0,0,41,3,114,216,0, - 0,0,114,179,0,0,0,114,224,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,219,0,0,0, - 52,3,0,0,115,8,0,0,0,0,6,13,1,18,2,6, - 1,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,2,0,0,0,2,0,0,0,67,0, - 0,0,115,13,0,0,0,116,0,0,106,1,0,124,1,0, - 131,1,0,83,41,1,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,41,2,114,95,0,0,0,90,17,103,101, - 116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,41, - 2,114,216,0,0,0,114,179,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,220,0,0,0,64, - 3,0,0,115,2,0,0,0,0,4,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,2,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0, - 83,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,4,0,0, - 0,41,2,114,216,0,0,0,114,179,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,221,0,0, - 0,70,3,0,0,115,2,0,0,0,0,4,122,25,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,103,101,116, + 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,4,0,0,0,41, + 2,114,242,0,0,0,114,152,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,8,103,101,116,95, + 99,111,100,101,241,4,0,0,115,2,0,0,0,0,4,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,2,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,242,0,0,0, + 114,152,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 247,4,0,0,115,2,0,0,0,0,4,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, - 2,0,0,0,2,0,0,0,67,0,0,0,115,13,0,0, - 0,116,0,0,106,1,0,124,1,0,131,1,0,83,41,1, - 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, - 41,2,114,95,0,0,0,90,17,105,115,95,102,114,111,122, - 101,110,95,112,97,99,107,97,103,101,41,2,114,216,0,0, - 0,114,179,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,157,0,0,0,76,3,0,0,115,2, - 0,0,0,0,4,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,14,114,57,0,0,0,114,56,0,0,0,114,58,0,0, - 0,114,59,0,0,0,114,222,0,0,0,114,217,0,0,0, - 114,218,0,0,0,114,171,0,0,0,114,174,0,0,0,114, - 184,0,0,0,114,219,0,0,0,114,220,0,0,0,114,221, - 0,0,0,114,157,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,223,0,0, - 0,34,3,0,0,115,28,0,0,0,12,7,6,2,18,4, - 3,1,18,4,3,1,3,1,3,1,27,9,3,1,21,5, - 3,1,21,5,3,1,114,223,0,0,0,99,0,0,0,0, - 0,0,0,0,0,0,0,0,4,0,0,0,64,0,0,0, - 115,97,0,0,0,101,0,0,90,1,0,100,0,0,90,2, - 0,100,1,0,90,3,0,100,2,0,90,4,0,100,3,0, - 90,5,0,100,4,0,90,6,0,101,7,0,100,5,0,100, - 6,0,132,0,0,131,1,0,90,8,0,101,7,0,100,7, - 0,100,8,0,132,0,0,131,1,0,90,9,0,101,7,0, - 100,9,0,100,10,0,100,11,0,132,1,0,131,1,0,90, - 10,0,100,9,0,83,41,12,218,21,87,105,110,100,111,119, - 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,122, - 67,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,10, - 32,32,32,32,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,70,99,2,0,0,0,0,0,0,0,2,0, - 0,0,11,0,0,0,67,0,0,0,115,67,0,0,0,121, - 23,0,116,0,0,106,1,0,116,0,0,106,2,0,124,1, - 0,131,2,0,83,87,110,37,0,4,116,3,0,107,10,0, - 114,62,0,1,1,1,116,0,0,106,1,0,116,0,0,106, - 4,0,124,1,0,131,2,0,83,89,110,1,0,88,100,0, - 0,83,41,1,78,41,5,218,7,95,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,40,0,0, - 0,90,18,72,75,69,89,95,76,79,67,65,76,95,77,65, - 67,72,73,78,69,41,2,114,216,0,0,0,218,3,107,101, - 121,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,14,95,111,112,101,110,95,114,101,103,105,115,116,114,121, - 96,3,0,0,115,8,0,0,0,0,2,3,1,23,1,13, - 1,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, - 6,0,0,0,16,0,0,0,67,0,0,0,115,142,0,0, - 0,124,0,0,106,0,0,114,21,0,124,0,0,106,1,0, - 125,2,0,110,9,0,124,0,0,106,2,0,125,2,0,124, - 2,0,106,3,0,100,1,0,124,1,0,100,2,0,116,4, - 0,106,5,0,100,0,0,100,3,0,133,2,0,25,131,0, - 2,125,3,0,121,46,0,124,0,0,106,6,0,124,3,0, - 131,1,0,143,25,0,125,4,0,116,7,0,106,8,0,124, - 4,0,100,4,0,131,2,0,125,5,0,87,100,0,0,81, - 88,87,110,22,0,4,116,9,0,107,10,0,114,137,0,1, - 1,1,100,0,0,83,89,110,1,0,88,124,5,0,83,41, - 5,78,114,179,0,0,0,90,11,115,121,115,95,118,101,114, - 115,105,111,110,114,122,0,0,0,114,30,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, - 47,0,0,0,114,7,0,0,0,218,7,118,101,114,115,105, - 111,110,114,228,0,0,0,114,226,0,0,0,90,10,81,117, - 101,114,121,86,97,108,117,101,114,40,0,0,0,41,6,114, - 216,0,0,0,114,179,0,0,0,90,12,114,101,103,105,115, - 116,114,121,95,107,101,121,114,227,0,0,0,90,4,104,107, - 101,121,218,8,102,105,108,101,112,97,116,104,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,16,95,115,101, - 97,114,99,104,95,114,101,103,105,115,116,114,121,103,3,0, - 0,115,22,0,0,0,0,2,9,1,12,2,9,1,15,1, - 22,1,3,1,18,1,28,1,13,1,9,1,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,3,0,0,0,0,0,0,0,6,0, - 0,0,12,0,0,0,67,0,0,0,115,134,0,0,0,124, - 0,0,106,0,0,124,1,0,131,1,0,125,3,0,124,3, - 0,100,1,0,107,8,0,114,31,0,100,1,0,83,121,14, - 0,116,1,0,124,3,0,131,1,0,1,87,110,22,0,4, - 116,2,0,107,10,0,114,69,0,1,1,1,100,1,0,83, - 89,110,1,0,88,120,57,0,116,3,0,131,0,0,68,93, - 46,0,92,2,0,125,4,0,125,5,0,124,3,0,106,4, - 0,116,5,0,124,5,0,131,1,0,131,1,0,114,80,0, - 124,4,0,124,1,0,124,3,0,131,2,0,83,113,80,0, - 87,100,1,0,83,41,2,122,34,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,78,41,6,114,234, - 0,0,0,114,39,0,0,0,114,40,0,0,0,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,218,8,101,110,100,115, - 119,105,116,104,218,5,116,117,112,108,101,41,6,114,216,0, - 0,0,114,179,0,0,0,114,35,0,0,0,114,233,0,0, - 0,114,161,0,0,0,114,113,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,118, - 3,0,0,115,20,0,0,0,0,3,15,1,12,1,4,1, - 3,1,14,1,13,1,9,1,22,1,21,1,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, - 11,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,59,0,0,0,114,231,0,0,0,114,230,0,0,0,114, - 229,0,0,0,114,222,0,0,0,114,228,0,0,0,114,234, - 0,0,0,114,218,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,225,0,0, - 0,83,3,0,0,115,16,0,0,0,12,3,6,3,6,3, - 6,2,6,2,18,7,18,15,3,1,114,225,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, - 64,0,0,0,115,58,0,0,0,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,3, - 0,132,0,0,90,4,0,100,4,0,100,5,0,132,0,0, - 90,5,0,100,6,0,100,7,0,132,0,0,90,6,0,100, - 8,0,83,41,9,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,5,0,0,0,3,0,0,0,67,0,0,0,115,88, - 0,0,0,116,0,0,124,0,0,106,1,0,124,1,0,131, - 1,0,131,1,0,100,1,0,25,125,2,0,124,2,0,106, - 2,0,100,2,0,100,1,0,131,2,0,100,3,0,25,125, - 3,0,124,1,0,106,3,0,100,2,0,131,1,0,100,4, - 0,25,125,4,0,124,3,0,100,5,0,107,2,0,111,87, - 0,124,4,0,100,5,0,107,3,0,83,41,6,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,29,0,0, - 0,114,102,0,0,0,114,68,0,0,0,114,101,0,0,0, - 114,77,0,0,0,41,4,114,38,0,0,0,114,164,0,0, - 0,114,34,0,0,0,114,32,0,0,0,41,5,114,76,0, - 0,0,114,179,0,0,0,114,117,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,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,157,0,0,0,138,3,0,0,115,8, - 0,0,0,0,3,25,1,22,1,19,1,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,2,0, - 0,0,11,0,0,0,67,0,0,0,115,100,0,0,0,124, - 0,0,124,1,0,95,0,0,116,1,0,124,0,0,124,1, - 0,131,2,0,1,116,2,0,124,0,0,124,1,0,131,2, - 0,1,116,3,0,124,1,0,100,1,0,131,2,0,114,96, - 0,121,22,0,116,4,0,124,1,0,106,5,0,131,1,0, - 124,1,0,95,6,0,87,113,96,0,4,116,7,0,107,10, - 0,114,92,0,1,1,1,89,113,96,0,88,110,0,0,100, - 2,0,83,41,3,97,2,1,0,0,83,101,116,32,118,97, - 114,105,111,117,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,46,10, - 10,32,32,32,32,32,32,32,32,69,120,101,99,117,116,105, - 111,110,76,111,97,100,101,114,46,105,110,105,116,95,109,111, - 100,117,108,101,95,97,116,116,114,115,40,41,32,105,115,32, - 117,115,101,100,32,116,111,32,115,101,116,32,95,95,108,111, - 97,100,101,114,95,95,44,10,32,32,32,32,32,32,32,32, - 95,95,112,97,99,107,97,103,101,95,95,44,32,95,95,102, - 105,108,101,95,95,44,32,97,110,100,32,111,112,116,105,111, - 110,97,108,108,121,32,95,95,112,97,116,104,95,95,46,32, - 84,104,101,32,95,95,99,97,99,104,101,100,95,95,32,97, - 116,116,114,105,98,117,116,101,10,32,32,32,32,32,32,32, - 32,105,115,32,115,101,116,32,117,115,105,110,103,32,105,109, - 112,46,99,97,99,104,101,95,102,114,111,109,95,115,111,117, - 114,99,101,40,41,32,97,110,100,32,95,95,102,105,108,101, - 95,95,46,10,32,32,32,32,32,32,32,32,114,165,0,0, - 0,78,41,8,114,172,0,0,0,114,163,0,0,0,114,167, - 0,0,0,114,60,0,0,0,114,118,0,0,0,114,165,0, - 0,0,218,10,95,95,99,97,99,104,101,100,95,95,114,110, - 0,0,0,41,2,114,76,0,0,0,114,162,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,17, - 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114, - 115,146,3,0,0,115,16,0,0,0,0,7,9,1,13,1, - 13,1,15,1,3,1,22,1,13,1,122,31,95,76,111,97, - 100,101,114,66,97,115,105,99,115,46,105,110,105,116,95,109, - 111,100,117,108,101,95,97,116,116,114,115,99,2,0,0,0, - 0,0,0,0,4,0,0,0,11,0,0,0,67,0,0,0, - 115,112,0,0,0,116,0,0,124,1,0,131,1,0,143,94, - 0,125,2,0,124,0,0,106,1,0,124,2,0,131,1,0, - 1,124,0,0,106,2,0,124,1,0,131,1,0,125,3,0, - 124,3,0,100,1,0,107,8,0,114,79,0,116,3,0,100, - 2,0,106,4,0,124,1,0,131,1,0,131,1,0,130,1, - 0,110,0,0,116,5,0,116,6,0,124,3,0,124,2,0, - 106,7,0,131,3,0,1,124,2,0,83,87,100,1,0,81, - 88,100,1,0,83,41,3,122,57,76,111,97,100,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, - 116,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,114,156,0,0,0, - 114,240,0,0,0,114,220,0,0,0,114,158,0,0,0,114, - 47,0,0,0,114,100,0,0,0,218,4,101,120,101,99,114, - 63,0,0,0,41,4,114,76,0,0,0,114,179,0,0,0, - 114,162,0,0,0,114,205,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,219,0,0,0,162,3, - 0,0,115,16,0,0,0,0,2,15,1,13,1,15,1,12, - 1,3,1,21,1,19,1,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,7,114,57,0,0,0,114,56,0,0,0,114, - 58,0,0,0,114,59,0,0,0,114,157,0,0,0,114,240, - 0,0,0,114,219,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,238,0,0, - 0,133,3,0,0,115,8,0,0,0,12,3,6,2,12,8, - 12,16,114,238,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,106,0,0, - 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, - 100,2,0,132,0,0,90,3,0,100,3,0,100,4,0,132, - 0,0,90,4,0,100,5,0,100,6,0,132,0,0,90,5, - 0,100,7,0,100,8,0,132,0,0,90,6,0,100,9,0, - 100,10,0,132,0,0,90,7,0,100,11,0,100,18,0,100, - 13,0,100,14,0,132,0,1,90,8,0,100,15,0,100,16, - 0,132,0,0,90,9,0,100,17,0,83,41,19,218,12,83, - 111,117,114,99,101,76,111,97,100,101,114,99,2,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,10,0,0,0,116,0,0,130,1,0,100,1,0,83,41, - 2,122,178,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,44,32,119, - 104,101,114,101,32,112,97,116,104,32,105,115,32,97,32,115, - 116,114,46,10,10,32,32,32,32,32,32,32,32,82,97,105, - 115,101,115,32,73,79,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,218,7,73,79,69,114,114,111, - 114,41,2,114,76,0,0,0,114,35,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,10,112,97, - 116,104,95,109,116,105,109,101,176,3,0,0,115,2,0,0, - 0,0,6,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,2,0,0,0,3,0,0,0,67,0,0, - 0,115,20,0,0,0,105,1,0,124,0,0,106,0,0,124, - 1,0,131,1,0,100,1,0,54,83,41,2,97,170,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,32,112,97,116, - 104,10,32,32,32,32,32,32,32,32,116,111,32,98,121,32, - 116,104,101,32,112,97,116,104,32,40,115,116,114,41,46,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,73,79,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,194,0,0,0, - 41,1,114,244,0,0,0,41,2,114,76,0,0,0,114,35, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,0,83,41,2,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,114,4, + 0,0,0,41,2,114,242,0,0,0,114,152,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,216, + 0,0,0,253,4,0,0,115,2,0,0,0,0,5,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,15,114,57,0,0, + 0,114,56,0,0,0,114,58,0,0,0,114,59,0,0,0, + 218,12,115,116,97,116,105,99,109,101,116,104,111,100,114,200, + 0,0,0,114,4,1,0,0,114,8,1,0,0,114,9,1, + 0,0,114,253,0,0,0,114,0,1,0,0,114,155,0,0, + 0,114,10,1,0,0,114,11,1,0,0,114,216,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,5,1,0,0,190,4,0,0,115,28,0, + 0,0,12,7,6,2,18,5,3,1,21,8,3,1,18,9, + 18,13,18,5,3,1,21,5,3,1,21,5,3,1,114,5, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 5,0,0,0,64,0,0,0,115,193,0,0,0,101,0,0, + 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,101, + 4,0,100,2,0,100,3,0,132,0,0,131,1,0,90,5, + 0,101,6,0,100,4,0,100,4,0,100,5,0,100,6,0, + 132,2,0,131,1,0,90,7,0,101,6,0,100,4,0,100, + 7,0,100,8,0,132,1,0,131,1,0,90,8,0,101,4, + 0,100,9,0,100,10,0,132,0,0,131,1,0,90,9,0, + 101,6,0,100,11,0,100,12,0,132,0,0,131,1,0,90, + 10,0,101,6,0,101,11,0,100,13,0,100,14,0,132,0, + 0,131,1,0,131,1,0,90,12,0,101,6,0,101,11,0, + 100,15,0,100,16,0,132,0,0,131,1,0,131,1,0,90, + 13,0,101,6,0,101,11,0,100,17,0,100,18,0,132,0, + 0,131,1,0,131,1,0,90,14,0,100,4,0,83,41,19, + 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, + 99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0, + 0,67,0,0,0,115,16,0,0,0,100,1,0,106,0,0, + 124,0,0,106,1,0,131,1,0,83,41,2,78,122,22,60, + 109,111,100,117,108,101,32,123,33,114,125,32,40,102,114,111, + 122,101,110,41,62,41,2,114,47,0,0,0,114,57,0,0, + 0,41,1,218,1,109,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,200,0,0,0,14,5,0,0,115,2, + 0,0,0,0,3,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,4,0,0,0,5, + 0,0,0,67,0,0,0,115,42,0,0,0,116,0,0,106, + 1,0,124,1,0,131,1,0,114,34,0,116,2,0,124,1, + 0,124,0,0,100,1,0,100,2,0,131,2,1,83,100,0, + 0,83,100,0,0,83,41,3,78,114,214,0,0,0,90,6, + 102,114,111,122,101,110,41,3,114,96,0,0,0,114,156,0, + 0,0,114,167,0,0,0,41,4,114,242,0,0,0,114,152, + 0,0,0,114,35,0,0,0,114,7,1,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,8,1,0, + 0,19,5,0,0,115,6,0,0,0,0,2,15,1,19,2, + 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,3,0,0,0,2,0,0,0,67,0,0,0,115, + 23,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0, + 114,19,0,124,0,0,83,100,1,0,83,41,2,122,21,70, + 105,110,100,32,97,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,46,78,41,2,114,96,0,0,0,114,156,0,0, + 0,41,3,114,242,0,0,0,114,152,0,0,0,114,35,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,9,1,0,0,26,5,0,0,115,2,0,0,0,0, + 3,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,3,0,0,0,4,0,0,0,67,0, + 0,0,115,95,0,0,0,124,0,0,106,0,0,106,1,0, + 125,1,0,116,2,0,106,3,0,124,1,0,131,1,0,115, + 57,0,116,4,0,100,1,0,106,5,0,124,1,0,131,1, + 0,100,2,0,124,1,0,131,1,1,130,1,0,110,0,0, + 116,6,0,116,2,0,106,7,0,124,1,0,131,2,0,125, + 2,0,116,8,0,124,2,0,124,0,0,106,9,0,131,2, + 0,1,100,0,0,83,41,3,78,122,25,123,125,32,105,115, + 32,110,111,116,32,97,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,114,67,0,0,0,41,10,114,203,0,0,0, + 114,67,0,0,0,114,96,0,0,0,114,156,0,0,0,114, + 147,0,0,0,114,47,0,0,0,114,108,0,0,0,218,17, + 103,101,116,95,102,114,111,122,101,110,95,111,98,106,101,99, + 116,114,170,0,0,0,114,63,0,0,0,41,3,114,174,0, + 0,0,114,67,0,0,0,114,189,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,253,0,0,0, + 31,5,0,0,115,12,0,0,0,0,2,12,1,15,1,18, + 1,12,1,18,1,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,2,0,0,0,3,0, + 0,0,67,0,0,0,115,13,0,0,0,116,0,0,124,0, + 0,124,1,0,131,2,0,83,41,1,122,21,76,111,97,100, + 32,97,32,102,114,111,122,101,110,32,109,111,100,117,108,101, + 46,41,1,114,175,0,0,0,41,2,114,242,0,0,0,114, + 152,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,0,1,0,0,40,5,0,0,115,2,0,0, + 0,0,3,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,2,0,0,0,2,0,0,0, + 67,0,0,0,115,13,0,0,0,116,0,0,106,1,0,124, + 1,0,131,1,0,83,41,1,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,41,2,114,96,0,0,0,114,15, + 1,0,0,41,2,114,242,0,0,0,114,152,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,10, + 1,0,0,45,5,0,0,115,2,0,0,0,0,4,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, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,0,83,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,4,0,0,0,41,2,114,242,0,0,0,114,152,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,11,1,0,0,51,5,0,0,115,2,0,0,0,0,4, + 122,25,70,114,111,122,101,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,2,0,0,0,2,0,0,0,67,0,0,0, + 115,13,0,0,0,116,0,0,106,1,0,124,1,0,131,1, + 0,83,41,1,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,41,2,114,96,0,0,0,90,17,105,115,95, + 102,114,111,122,101,110,95,112,97,99,107,97,103,101,41,2, + 114,242,0,0,0,114,152,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,216,0,0,0,57,5, + 0,0,115,2,0,0,0,0,4,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,15,114,57,0,0,0,114,56,0,0,0, + 114,58,0,0,0,114,59,0,0,0,114,12,1,0,0,114, + 200,0,0,0,114,4,1,0,0,114,8,1,0,0,114,9, + 1,0,0,114,253,0,0,0,114,0,1,0,0,114,158,0, + 0,0,114,10,1,0,0,114,11,1,0,0,114,216,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,13,1,0,0,5,5,0,0,115,28, + 0,0,0,12,7,6,2,18,5,3,1,21,6,3,1,18, + 4,18,9,18,5,3,1,21,5,3,1,21,5,3,1,114, + 13,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,5,0,0,0,64,0,0,0,115,121,0,0,0,101,0, + 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, + 100,2,0,90,4,0,100,3,0,90,5,0,100,4,0,90, + 6,0,101,7,0,100,5,0,100,6,0,132,0,0,131,1, + 0,90,8,0,101,7,0,100,7,0,100,8,0,132,0,0, + 131,1,0,90,9,0,101,7,0,100,9,0,100,9,0,100, + 10,0,100,11,0,132,2,0,131,1,0,90,10,0,101,7, + 0,100,9,0,100,12,0,100,13,0,132,1,0,131,1,0, + 90,11,0,100,9,0,83,41,14,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, + 70,99,2,0,0,0,0,0,0,0,2,0,0,0,11,0, + 0,0,67,0,0,0,115,67,0,0,0,121,23,0,116,0, + 0,106,1,0,116,0,0,106,2,0,124,1,0,131,2,0, + 83,87,110,37,0,4,116,3,0,107,10,0,114,62,0,1, + 1,1,116,0,0,106,1,0,116,0,0,106,4,0,124,1, + 0,131,2,0,83,89,110,1,0,88,100,0,0,83,41,1, + 78,41,5,218,7,95,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,40,0,0,0,90,18,72, + 75,69,89,95,76,79,67,65,76,95,77,65,67,72,73,78, + 69,41,2,114,242,0,0,0,218,3,107,101,121,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,14,95,111, + 112,101,110,95,114,101,103,105,115,116,114,121,76,5,0,0, + 115,8,0,0,0,0,2,3,1,23,1,13,1,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,6,0,0,0, + 16,0,0,0,67,0,0,0,115,142,0,0,0,124,0,0, + 106,0,0,114,21,0,124,0,0,106,1,0,125,2,0,110, + 9,0,124,0,0,106,2,0,125,2,0,124,2,0,106,3, + 0,100,1,0,124,1,0,100,2,0,116,4,0,106,5,0, + 100,0,0,100,3,0,133,2,0,25,131,0,2,125,3,0, + 121,46,0,124,0,0,106,6,0,124,3,0,131,1,0,143, + 25,0,125,4,0,116,7,0,106,8,0,124,4,0,100,4, + 0,131,2,0,125,5,0,87,100,0,0,81,88,87,110,22, + 0,4,116,9,0,107,10,0,114,137,0,1,1,1,100,0, + 0,83,89,110,1,0,88,124,5,0,83,41,5,78,114,152, + 0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,110, + 114,130,0,0,0,114,30,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,47,0,0,0, + 114,7,0,0,0,218,7,118,101,114,115,105,111,110,114,19, + 1,0,0,114,17,1,0,0,90,10,81,117,101,114,121,86, + 97,108,117,101,114,40,0,0,0,41,6,114,242,0,0,0, + 114,152,0,0,0,90,12,114,101,103,105,115,116,114,121,95, + 107,101,121,114,18,1,0,0,90,4,104,107,101,121,218,8, + 102,105,108,101,112,97,116,104,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,16,95,115,101,97,114,99,104, + 95,114,101,103,105,115,116,114,121,83,5,0,0,115,22,0, + 0,0,0,2,9,1,12,2,9,1,15,1,22,1,3,1, + 18,1,28,1,13,1,9,1,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,8,0,0,0,14,0, + 0,0,67,0,0,0,115,155,0,0,0,124,0,0,106,0, + 0,124,1,0,131,1,0,125,4,0,124,4,0,100,0,0, + 107,8,0,114,31,0,100,0,0,83,121,14,0,116,1,0, + 124,4,0,131,1,0,1,87,110,22,0,4,116,2,0,107, + 10,0,114,69,0,1,1,1,100,0,0,83,89,110,1,0, + 88,120,78,0,116,3,0,131,0,0,68,93,67,0,92,2, + 0,125,5,0,125,6,0,124,4,0,106,4,0,116,5,0, + 124,6,0,131,1,0,131,1,0,114,80,0,116,6,0,124, + 1,0,124,5,0,124,1,0,124,4,0,131,2,0,100,1, + 0,124,4,0,131,2,1,125,7,0,124,7,0,83,113,80, + 0,87,100,0,0,83,41,2,78,114,214,0,0,0,41,7, + 114,25,1,0,0,114,39,0,0,0,114,40,0,0,0,114, + 233,0,0,0,114,225,0,0,0,114,226,0,0,0,114,167, + 0,0,0,41,8,114,242,0,0,0,114,152,0,0,0,114, + 35,0,0,0,114,7,1,0,0,114,24,1,0,0,114,163, + 0,0,0,114,121,0,0,0,114,172,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,8,1,0, + 0,98,5,0,0,115,24,0,0,0,0,3,15,1,12,1, + 4,1,3,1,14,1,13,1,9,1,22,1,21,1,21,1, + 9,1,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,4,0,0,0, + 3,0,0,0,67,0,0,0,115,45,0,0,0,116,0,0, + 106,1,0,124,1,0,124,2,0,131,2,0,125,3,0,124, + 3,0,100,1,0,107,9,0,114,37,0,124,3,0,106,2, + 0,83,100,1,0,83,100,1,0,83,41,2,122,34,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, + 78,41,3,114,78,0,0,0,114,8,1,0,0,114,163,0, + 0,0,41,4,114,242,0,0,0,114,152,0,0,0,114,35, + 0,0,0,114,172,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,9,1,0,0,114,5,0,0, + 115,8,0,0,0,0,3,18,1,12,1,7,2,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,12,114,57,0,0,0,114,56,0,0,0,114,58,0,0, + 0,114,59,0,0,0,114,22,1,0,0,114,21,1,0,0, + 114,20,1,0,0,114,4,1,0,0,114,19,1,0,0,114, + 25,1,0,0,114,8,1,0,0,114,9,1,0,0,114,4, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,10,112,97,116,104,95,115,116,97,116,115,184,3, - 0,0,115,2,0,0,0,0,11,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,4,0,0,0,3, - 0,0,0,67,0,0,0,115,16,0,0,0,124,0,0,106, - 0,0,124,2,0,124,3,0,131,2,0,83,41,1,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,41,1,218,8,115,101,116,95,100,97,116,97, - 41,4,114,76,0,0,0,114,127,0,0,0,90,10,99,97, - 99,104,101,95,112,97,116,104,114,53,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,197,3,0, - 0,115,2,0,0,0,0,8,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,3, - 0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0, - 100,1,0,83,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, - 4,0,0,0,41,3,114,76,0,0,0,114,35,0,0,0, - 114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,246,0,0,0,207,3,0,0,115,0,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,5,0,0,0,16,0,0,0,67,0,0,0,115,105, - 0,0,0,124,0,0,106,0,0,124,1,0,131,1,0,125, - 2,0,121,19,0,124,0,0,106,1,0,124,2,0,131,1, - 0,125,3,0,87,110,58,0,4,116,2,0,107,10,0,114, - 94,0,1,125,4,0,1,122,26,0,116,3,0,100,1,0, - 100,2,0,124,1,0,131,1,1,124,4,0,130,2,0,87, - 89,100,3,0,100,3,0,125,4,0,126,4,0,88,110,1, - 0,88,116,4,0,124,3,0,131,1,0,83,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,72,0, - 0,0,78,41,5,114,164,0,0,0,218,8,103,101,116,95, - 100,97,116,97,114,40,0,0,0,114,158,0,0,0,114,214, - 0,0,0,41,5,114,76,0,0,0,114,179,0,0,0,114, - 35,0,0,0,114,212,0,0,0,218,3,101,120,99,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,221,0, - 0,0,214,3,0,0,115,14,0,0,0,0,2,15,1,3, - 1,19,1,18,1,9,1,31,1,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,218,9,95,111,112,116,105,109,105,122,101,114,29,0, - 0,0,99,3,0,0,0,1,0,0,0,4,0,0,0,9, - 0,0,0,67,0,0,0,115,31,0,0,0,116,0,0,116, - 1,0,124,1,0,124,2,0,100,1,0,100,2,0,100,3, - 0,100,4,0,124,3,0,131,4,2,83,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,241,0,0,0,218,12,100,111,110,116,95,105,110,104, - 101,114,105,116,84,114,104,0,0,0,41,2,114,100,0,0, - 0,218,7,99,111,109,112,105,108,101,41,4,114,76,0,0, - 0,114,53,0,0,0,114,35,0,0,0,114,250,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,224, - 3,0,0,115,4,0,0,0,0,5,18,1,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,10,0,0,0,45,0,0,0,67,0,0,0,115,177, - 1,0,0,124,0,0,106,0,0,124,1,0,131,1,0,125, - 2,0,100,1,0,125,3,0,121,16,0,116,1,0,124,2, - 0,131,1,0,125,4,0,87,110,24,0,4,116,2,0,107, - 10,0,114,63,0,1,1,1,100,1,0,125,4,0,89,110, - 202,0,88,121,19,0,124,0,0,106,3,0,124,2,0,131, - 1,0,125,5,0,87,110,18,0,4,116,4,0,107,10,0, - 114,103,0,1,1,1,89,110,162,0,88,116,5,0,124,5, - 0,100,2,0,25,131,1,0,125,3,0,121,19,0,124,0, - 0,106,6,0,124,4,0,131,1,0,125,6,0,87,110,18, - 0,4,116,7,0,107,10,0,114,159,0,1,1,1,89,110, - 106,0,88,121,34,0,116,8,0,124,6,0,100,3,0,124, - 5,0,100,4,0,124,1,0,100,5,0,124,4,0,131,1, - 3,125,7,0,87,110,24,0,4,116,9,0,116,10,0,102, - 2,0,107,10,0,114,220,0,1,1,1,89,110,45,0,88, - 116,11,0,100,6,0,124,4,0,124,2,0,131,3,0,1, - 116,12,0,124,7,0,100,4,0,124,1,0,100,7,0,124, - 4,0,100,8,0,124,2,0,131,1,3,83,124,0,0,106, - 6,0,124,2,0,131,1,0,125,8,0,124,0,0,106,13, - 0,124,8,0,124,2,0,131,2,0,125,9,0,116,11,0, - 100,9,0,124,2,0,131,2,0,1,116,14,0,106,15,0, - 12,114,173,1,124,4,0,100,1,0,107,9,0,114,173,1, - 124,3,0,100,1,0,107,9,0,114,173,1,116,16,0,124, - 9,0,124,3,0,116,17,0,124,8,0,131,1,0,131,3, - 0,125,6,0,121,36,0,124,0,0,106,18,0,124,2,0, - 124,4,0,124,6,0,131,3,0,1,116,11,0,100,10,0, - 124,4,0,131,2,0,1,87,113,173,1,4,116,2,0,107, - 10,0,114,169,1,1,1,1,89,113,173,1,88,110,0,0, - 124,9,0,83,41,11,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,114,194,0,0,0,114,198,0,0, - 0,114,72,0,0,0,114,35,0,0,0,122,13,123,125,32, - 109,97,116,99,104,101,115,32,123,125,114,126,0,0,0,114, - 127,0,0,0,122,19,99,111,100,101,32,111,98,106,101,99, - 116,32,102,114,111,109,32,123,125,122,10,119,114,111,116,101, - 32,123,33,114,125,41,19,114,164,0,0,0,114,118,0,0, - 0,114,110,0,0,0,114,245,0,0,0,114,243,0,0,0, - 114,14,0,0,0,114,248,0,0,0,114,40,0,0,0,114, - 201,0,0,0,114,158,0,0,0,114,197,0,0,0,114,138, - 0,0,0,114,206,0,0,0,114,253,0,0,0,114,7,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,209,0,0,0,114,31,0,0, - 0,114,247,0,0,0,41,10,114,76,0,0,0,114,179,0, - 0,0,114,127,0,0,0,114,199,0,0,0,114,126,0,0, - 0,218,2,115,116,114,53,0,0,0,218,10,98,121,116,101, - 115,95,100,97,116,97,114,212,0,0,0,90,11,99,111,100, - 101,95,111,98,106,101,99,116,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,220,0,0,0,232,3,0,0, - 115,78,0,0,0,0,7,15,1,6,1,3,1,16,1,13, - 1,11,2,3,1,19,1,13,1,5,2,16,1,3,1,19, - 1,13,1,5,2,3,1,9,1,12,1,13,1,19,1,5, - 2,9,1,7,1,15,1,6,1,7,1,15,1,18,1,13, - 1,22,1,12,1,9,1,15,1,3,1,19,1,17,1,13, - 1,8,1,122,21,83,111,117,114,99,101,76,111,97,100,101, - 114,46,103,101,116,95,99,111,100,101,78,114,124,0,0,0, - 41,10,114,57,0,0,0,114,56,0,0,0,114,58,0,0, - 0,114,244,0,0,0,114,245,0,0,0,114,247,0,0,0, - 114,246,0,0,0,114,221,0,0,0,114,253,0,0,0,114, - 220,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,242,0,0,0,174,3,0, - 0,115,14,0,0,0,12,2,12,8,12,13,12,10,12,7, - 12,10,18,8,114,242,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,4,0,0,0,0,0,0,0,115,88, + 0,0,114,16,1,0,0,64,5,0,0,115,20,0,0,0, + 12,2,6,3,6,3,6,2,6,2,18,7,18,15,3,1, + 21,15,3,1,114,16,1,0,0,99,0,0,0,0,0,0, + 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,52, 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, 1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,4, - 0,101,5,0,135,0,0,102,1,0,100,4,0,100,5,0, - 134,0,0,131,1,0,90,6,0,101,5,0,100,6,0,100, - 7,0,132,0,0,131,1,0,90,7,0,100,8,0,100,9, - 0,132,0,0,90,8,0,135,0,0,83,41,10,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,3,0,0,0,2, - 0,0,0,67,0,0,0,115,22,0,0,0,124,1,0,124, - 0,0,95,0,0,124,2,0,124,0,0,95,1,0,100,1, - 0,83,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,41,2,114,72,0,0,0,114,35,0,0,0,41,3, - 114,76,0,0,0,114,179,0,0,0,114,35,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,77, - 0,0,0,33,4,0,0,115,4,0,0,0,0,3,9,1, - 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,2,0, - 0,0,3,0,0,0,3,0,0,0,115,22,0,0,0,116, - 0,0,116,1,0,124,0,0,131,2,0,106,2,0,124,1, - 0,131,1,0,83,41,1,122,26,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,41,3,114,149,0,0,0,114,1,1,0,0,114, - 219,0,0,0,41,2,114,76,0,0,0,114,179,0,0,0, - 41,1,114,151,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,219,0,0,0,39,4,0,0,115,2,0,0,0,0, - 5,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,2,0,0,0,1,0,0,0,67,0,0,0,115,7, - 0,0,0,124,0,0,106,0,0,83,41,1,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,41,1,114,35,0,0,0,41, - 2,114,76,0,0,0,114,179,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,164,0,0,0,46, - 4,0,0,115,2,0,0,0,0,3,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,3,0,0,0, - 8,0,0,0,67,0,0,0,115,41,0,0,0,116,0,0, - 106,1,0,124,1,0,100,1,0,131,2,0,143,17,0,125, - 2,0,124,2,0,106,2,0,131,0,0,83,87,100,2,0, - 81,88,100,2,0,83,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,218,1,114,78,41,3,114,49,0,0,0,114,50,0,0, - 0,90,4,114,101,97,100,41,3,114,76,0,0,0,114,35, - 0,0,0,114,54,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,248,0,0,0,51,4,0,0, - 115,4,0,0,0,0,2,21,1,122,19,70,105,108,101,76, - 111,97,100,101,114,46,103,101,116,95,100,97,116,97,41,9, - 114,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114, - 59,0,0,0,114,77,0,0,0,114,177,0,0,0,114,219, - 0,0,0,114,164,0,0,0,114,248,0,0,0,114,4,0, - 0,0,114,4,0,0,0,41,1,114,151,0,0,0,114,5, - 0,0,0,114,1,1,0,0,28,4,0,0,115,10,0,0, - 0,12,3,6,2,12,6,24,7,18,5,114,1,1,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0, - 0,64,0,0,0,115,64,0,0,0,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, - 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, - 0,90,5,0,100,6,0,100,7,0,100,8,0,100,9,0, - 132,0,1,90,6,0,100,10,0,83,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,3,0,0,0,3,0,0,0,67, - 0,0,0,115,36,0,0,0,116,0,0,124,1,0,131,1, - 0,125,2,0,105,2,0,124,2,0,106,1,0,100,1,0, - 54,124,2,0,106,2,0,100,2,0,54,83,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,114,194,0,0,0,114,195,0,0,0,41,3,114,39,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,76,0,0,0,114,35,0,0, - 0,114,255,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,245,0,0,0,61,4,0,0,115,4, - 0,0,0,0,2,12,1,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,5,0,0, - 0,5,0,0,0,67,0,0,0,115,34,0,0,0,116,0, - 0,124,1,0,131,1,0,125,4,0,124,0,0,106,1,0, - 124,2,0,124,3,0,100,1,0,124,4,0,131,2,1,83, - 41,2,78,218,5,95,109,111,100,101,41,2,114,130,0,0, - 0,114,246,0,0,0,41,5,114,76,0,0,0,114,127,0, - 0,0,114,126,0,0,0,114,53,0,0,0,114,42,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,247,0,0,0,66,4,0,0,115,4,0,0,0,0,2, - 12,1,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,5,1,0,0,105,182,1,0,0,99,3, - 0,0,0,1,0,0,0,9,0,0,0,18,0,0,0,67, - 0,0,0,115,53,1,0,0,116,0,0,124,1,0,131,1, - 0,92,2,0,125,4,0,125,5,0,103,0,0,125,6,0, - 120,54,0,124,4,0,114,80,0,116,1,0,124,4,0,131, - 1,0,12,114,80,0,116,0,0,124,4,0,131,1,0,92, - 2,0,125,4,0,125,7,0,124,6,0,106,2,0,124,7, - 0,131,1,0,1,113,27,0,87,120,132,0,116,3,0,124, - 6,0,131,1,0,68,93,118,0,125,7,0,116,4,0,124, - 4,0,124,7,0,131,2,0,125,4,0,121,17,0,116,5, - 0,106,6,0,124,4,0,131,1,0,1,87,113,94,0,4, - 116,7,0,107,10,0,114,155,0,1,1,1,119,94,0,89, - 113,94,0,4,116,8,0,107,10,0,114,211,0,1,125,8, - 0,1,122,25,0,116,9,0,100,1,0,124,4,0,124,8, - 0,131,3,0,1,100,2,0,83,87,89,100,2,0,100,2, - 0,125,8,0,126,8,0,88,113,94,0,88,113,94,0,87, - 121,33,0,116,10,0,124,1,0,124,2,0,124,3,0,131, - 3,0,1,116,9,0,100,3,0,124,1,0,131,2,0,1, - 87,110,53,0,4,116,8,0,107,10,0,114,48,1,1,125, - 8,0,1,122,21,0,116,9,0,100,1,0,124,1,0,124, - 8,0,131,3,0,1,87,89,100,2,0,100,2,0,125,8, - 0,126,8,0,88,110,1,0,88,100,2,0,83,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,11,114,38,0,0,0,114, - 46,0,0,0,114,166,0,0,0,114,33,0,0,0,114,28, - 0,0,0,114,3,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,40,0,0,0,114,138,0,0,0,114,55,0,0,0,41, - 9,114,76,0,0,0,114,35,0,0,0,114,53,0,0,0, - 114,5,1,0,0,218,6,112,97,114,101,110,116,114,117,0, - 0,0,114,27,0,0,0,114,23,0,0,0,114,249,0,0, + 0,100,4,0,100,5,0,132,0,0,90,5,0,101,6,0, + 90,7,0,100,6,0,83,41,7,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,5,0,0,0,3,0,0,0,67,0, + 0,0,115,88,0,0,0,116,0,0,124,0,0,106,1,0, + 124,1,0,131,1,0,131,1,0,100,1,0,25,125,2,0, + 124,2,0,106,2,0,100,2,0,100,1,0,131,2,0,100, + 3,0,25,125,3,0,124,1,0,106,3,0,100,2,0,131, + 1,0,100,4,0,25,125,4,0,124,3,0,100,5,0,107, + 2,0,111,87,0,124,4,0,100,5,0,107,3,0,83,41, + 6,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,29,0,0,0,114,110,0,0,0,114,71,0,0,0,114, + 109,0,0,0,114,79,0,0,0,41,4,114,38,0,0,0, + 114,231,0,0,0,114,34,0,0,0,114,32,0,0,0,41, + 5,114,78,0,0,0,114,152,0,0,0,114,125,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,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,216,0,0,0,130,5, + 0,0,115,8,0,0,0,0,3,25,1,22,1,19,1,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,3,0,0,0,4,0,0,0,67,0,0,0,115,80, + 0,0,0,124,0,0,106,0,0,124,1,0,106,1,0,131, + 1,0,125,2,0,124,2,0,100,1,0,107,8,0,114,57, + 0,116,2,0,100,2,0,106,3,0,124,1,0,106,1,0, + 131,1,0,131,1,0,130,1,0,110,0,0,116,4,0,116, + 5,0,124,2,0,124,1,0,106,6,0,131,3,0,1,100, + 1,0,83,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,7,114,10,1,0,0,114,57,0,0,0,114,147,0, + 0,0,114,47,0,0,0,114,108,0,0,0,114,170,0,0, + 0,114,63,0,0,0,41,3,114,78,0,0,0,114,174,0, + 0,0,114,189,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,253,0,0,0,138,5,0,0,115, + 10,0,0,0,0,2,18,1,12,1,3,1,24,1,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,78,41,8,114,57,0,0, + 0,114,56,0,0,0,114,58,0,0,0,114,59,0,0,0, + 114,216,0,0,0,114,253,0,0,0,114,175,0,0,0,114, + 0,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,26,1,0,0,124,5,0, + 0,115,8,0,0,0,12,3,6,3,12,8,12,8,114,26, + 1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0, + 4,0,0,0,64,0,0,0,115,106,0,0,0,101,0,0, + 90,1,0,100,0,0,90,2,0,100,1,0,100,2,0,132, + 0,0,90,3,0,100,3,0,100,4,0,132,0,0,90,4, + 0,100,5,0,100,6,0,132,0,0,90,5,0,100,7,0, + 100,8,0,132,0,0,90,6,0,100,9,0,100,10,0,132, + 0,0,90,7,0,100,11,0,100,18,0,100,13,0,100,14, + 0,132,0,1,90,8,0,100,15,0,100,16,0,132,0,0, + 90,9,0,100,17,0,83,41,19,218,12,83,111,117,114,99, + 101,76,111,97,100,101,114,99,2,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,10,0,0, + 0,116,0,0,130,1,0,100,1,0,83,41,2,122,178,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,44,32,119,104,101,114,101, + 32,112,97,116,104,32,105,115,32,97,32,115,116,114,46,10, + 10,32,32,32,32,32,32,32,32,82,97,105,115,101,115,32, + 73,79,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,218,7,73,79,69,114,114,111,114,41,2,114, + 78,0,0,0,114,35,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,10,112,97,116,104,95,109, + 116,105,109,101,151,5,0,0,115,2,0,0,0,0,6,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,2,0,0,0,3,0,0,0,67,0,0,0,115,20,0, + 0,0,105,1,0,124,0,0,106,0,0,124,1,0,131,1, + 0,100,1,0,54,83,41,2,97,170,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,32,112,97,116,104,10,32,32, + 32,32,32,32,32,32,116,111,32,98,121,32,116,104,101,32, + 112,97,116,104,32,40,115,116,114,41,46,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,73,79,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,178,0,0,0,41,1,114,29, + 1,0,0,41,2,114,78,0,0,0,114,35,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,10, + 112,97,116,104,95,115,116,97,116,115,159,5,0,0,115,2, + 0,0,0,0,11,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,4,0,0,0,3,0,0,0,67, + 0,0,0,115,16,0,0,0,124,0,0,106,0,0,124,2, + 0,124,3,0,131,2,0,83,41,1,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, + 41,1,218,8,115,101,116,95,100,97,116,97,41,4,114,78, + 0,0,0,114,135,0,0,0,90,10,99,97,99,104,101,95, + 112,97,116,104,114,53,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,15,95,99,97,99,104,101, + 95,98,121,116,101,99,111,100,101,172,5,0,0,115,2,0, + 0,0,0,8,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,3,0,0,0,1, + 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83, + 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,4,0,0,0, + 41,3,114,78,0,0,0,114,35,0,0,0,114,53,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,246,0,0,0,71,4,0,0,115,38,0,0,0,0,2, - 18,1,6,2,22,1,18,1,17,2,19,1,15,1,3,1, - 17,1,13,2,7,1,18,3,16,1,27,1,3,1,16,1, - 17,1,18,2,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,57,0,0,0,114,56,0,0,0,114,58,0,0, - 0,114,59,0,0,0,114,245,0,0,0,114,247,0,0,0, - 114,246,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,3,1,0,0,57,4, - 0,0,115,8,0,0,0,12,2,6,2,12,5,12,5,114, - 3,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, - 0,3,0,0,0,0,0,0,0,115,64,0,0,0,101,0, + 114,31,1,0,0,182,5,0,0,115,0,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,5,0, + 0,0,16,0,0,0,67,0,0,0,115,105,0,0,0,124, + 0,0,106,0,0,124,1,0,131,1,0,125,2,0,121,19, + 0,124,0,0,106,1,0,124,2,0,131,1,0,125,3,0, + 87,110,58,0,4,116,2,0,107,10,0,114,94,0,1,125, + 4,0,1,122,26,0,116,3,0,100,1,0,100,2,0,124, + 1,0,131,1,1,124,4,0,130,2,0,87,89,100,3,0, + 100,3,0,125,4,0,126,4,0,88,110,1,0,88,116,4, + 0,124,3,0,131,1,0,83,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,67,0,0,0,78,41, + 5,114,231,0,0,0,218,8,103,101,116,95,100,97,116,97, + 114,40,0,0,0,114,147,0,0,0,114,198,0,0,0,41, + 5,114,78,0,0,0,114,152,0,0,0,114,35,0,0,0, + 114,196,0,0,0,218,3,101,120,99,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,11,1,0,0,189,5, + 0,0,115,14,0,0,0,0,2,15,1,3,1,19,1,18, + 1,9,1,31,1,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,218,9, + 95,111,112,116,105,109,105,122,101,114,29,0,0,0,99,3, + 0,0,0,1,0,0,0,4,0,0,0,9,0,0,0,67, + 0,0,0,115,31,0,0,0,116,0,0,116,1,0,124,1, + 0,124,2,0,100,1,0,100,2,0,100,3,0,100,4,0, + 124,3,0,131,4,2,83,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,170,0, + 0,0,218,12,100,111,110,116,95,105,110,104,101,114,105,116, + 84,114,112,0,0,0,41,2,114,108,0,0,0,218,7,99, + 111,109,112,105,108,101,41,4,114,78,0,0,0,114,53,0, + 0,0,114,35,0,0,0,114,35,1,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,218,14,115,111,117, + 114,99,101,95,116,111,95,99,111,100,101,199,5,0,0,115, + 4,0,0,0,0,5,18,1,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,10,0, + 0,0,45,0,0,0,67,0,0,0,115,177,1,0,0,124, + 0,0,106,0,0,124,1,0,131,1,0,125,2,0,100,1, + 0,125,3,0,121,16,0,116,1,0,124,2,0,131,1,0, + 125,4,0,87,110,24,0,4,116,2,0,107,10,0,114,63, + 0,1,1,1,100,1,0,125,4,0,89,110,202,0,88,121, + 19,0,124,0,0,106,3,0,124,2,0,131,1,0,125,5, + 0,87,110,18,0,4,116,4,0,107,10,0,114,103,0,1, + 1,1,89,110,162,0,88,116,5,0,124,5,0,100,2,0, + 25,131,1,0,125,3,0,121,19,0,124,0,0,106,6,0, + 124,4,0,131,1,0,125,6,0,87,110,18,0,4,116,7, + 0,107,10,0,114,159,0,1,1,1,89,110,106,0,88,121, + 34,0,116,8,0,124,6,0,100,3,0,124,5,0,100,4, + 0,124,1,0,100,5,0,124,4,0,131,1,3,125,7,0, + 87,110,24,0,4,116,9,0,116,10,0,102,2,0,107,10, + 0,114,220,0,1,1,1,89,110,45,0,88,116,11,0,100, + 6,0,124,4,0,124,2,0,131,3,0,1,116,12,0,124, + 7,0,100,4,0,124,1,0,100,7,0,124,4,0,100,8, + 0,124,2,0,131,1,3,83,124,0,0,106,6,0,124,2, + 0,131,1,0,125,8,0,124,0,0,106,13,0,124,8,0, + 124,2,0,131,2,0,125,9,0,116,11,0,100,9,0,124, + 2,0,131,2,0,1,116,14,0,106,15,0,12,114,173,1, + 124,4,0,100,1,0,107,9,0,114,173,1,124,3,0,100, + 1,0,107,9,0,114,173,1,116,16,0,124,9,0,124,3, + 0,116,17,0,124,8,0,131,1,0,131,3,0,125,6,0, + 121,36,0,124,0,0,106,18,0,124,2,0,124,4,0,124, + 6,0,131,3,0,1,116,11,0,100,10,0,124,4,0,131, + 2,0,1,87,113,173,1,4,116,2,0,107,10,0,114,169, + 1,1,1,1,89,113,173,1,88,110,0,0,124,9,0,83, + 41,11,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,114,178,0,0,0,114,182,0,0,0,114,67,0, + 0,0,114,35,0,0,0,122,13,123,125,32,109,97,116,99, + 104,101,115,32,123,125,114,134,0,0,0,114,135,0,0,0, + 122,19,99,111,100,101,32,111,98,106,101,99,116,32,102,114, + 111,109,32,123,125,122,10,119,114,111,116,101,32,123,33,114, + 125,41,19,114,231,0,0,0,114,126,0,0,0,114,118,0, + 0,0,114,30,1,0,0,114,28,1,0,0,114,14,0,0, + 0,114,33,1,0,0,114,40,0,0,0,114,185,0,0,0, + 114,147,0,0,0,114,181,0,0,0,114,146,0,0,0,114, + 190,0,0,0,114,38,1,0,0,114,7,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,193,0,0,0,114,31,0,0,0,114,32,1, + 0,0,41,10,114,78,0,0,0,114,152,0,0,0,114,135, + 0,0,0,114,183,0,0,0,114,134,0,0,0,218,2,115, + 116,114,53,0,0,0,218,10,98,121,116,101,115,95,100,97, + 116,97,114,196,0,0,0,90,11,99,111,100,101,95,111,98, + 106,101,99,116,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,10,1,0,0,207,5,0,0,115,78,0,0, + 0,0,7,15,1,6,1,3,1,16,1,13,1,11,2,3, + 1,19,1,13,1,5,2,16,1,3,1,19,1,13,1,5, + 2,3,1,9,1,12,1,13,1,19,1,5,2,9,1,7, + 1,15,1,6,1,7,1,15,1,18,1,13,1,22,1,12, + 1,9,1,15,1,3,1,19,1,17,1,13,1,8,1,122, + 21,83,111,117,114,99,101,76,111,97,100,101,114,46,103,101, + 116,95,99,111,100,101,78,114,132,0,0,0,41,10,114,57, + 0,0,0,114,56,0,0,0,114,58,0,0,0,114,29,1, + 0,0,114,30,1,0,0,114,32,1,0,0,114,31,1,0, + 0,114,11,1,0,0,114,38,1,0,0,114,10,1,0,0, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,27,1,0,0,149,5,0,0,115,14,0, + 0,0,12,2,12,8,12,13,12,10,12,7,12,10,18,8, + 114,27,1,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,4,0,0,0,0,0,0,0,115,88,0,0,0,101, + 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3, + 0,100,2,0,100,3,0,132,0,0,90,4,0,101,5,0, + 135,0,0,102,1,0,100,4,0,100,5,0,134,0,0,131, + 1,0,90,6,0,101,5,0,100,6,0,100,7,0,132,0, + 0,131,1,0,90,7,0,100,8,0,100,9,0,132,0,0, + 90,8,0,135,0,0,83,41,10,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,3,0,0,0,2,0,0,0,67, + 0,0,0,115,22,0,0,0,124,1,0,124,0,0,95,0, + 0,124,2,0,124,0,0,95,1,0,100,1,0,83,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,41,2, + 114,67,0,0,0,114,35,0,0,0,41,3,114,78,0,0, + 0,114,152,0,0,0,114,35,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,79,0,0,0,8, + 6,0,0,115,4,0,0,0,0,3,9,1,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,2,0,0,0,3,0, + 0,0,3,0,0,0,115,22,0,0,0,116,0,0,116,1, + 0,124,0,0,131,2,0,106,2,0,124,1,0,131,1,0, + 83,41,1,122,26,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,41, + 3,218,5,115,117,112,101,114,114,42,1,0,0,114,0,1, + 0,0,41,2,114,78,0,0,0,114,152,0,0,0,41,1, + 114,221,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 0,1,0,0,14,6,0,0,115,2,0,0,0,0,7,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, + 2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,0, + 0,124,0,0,106,0,0,83,41,1,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,41,1,114,35,0,0,0,41,2,114, + 78,0,0,0,114,152,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,231,0,0,0,23,6,0, + 0,115,2,0,0,0,0,3,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,3,0,0,0,8,0, + 0,0,67,0,0,0,115,41,0,0,0,116,0,0,106,1, + 0,124,1,0,100,1,0,131,2,0,143,17,0,125,2,0, + 124,2,0,106,2,0,131,0,0,83,87,100,2,0,81,88, + 100,2,0,83,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,218, + 1,114,78,41,3,114,49,0,0,0,114,50,0,0,0,90, + 4,114,101,97,100,41,3,114,78,0,0,0,114,35,0,0, + 0,114,54,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,33,1,0,0,28,6,0,0,115,4, + 0,0,0,0,2,21,1,122,19,70,105,108,101,76,111,97, + 100,101,114,46,103,101,116,95,100,97,116,97,41,9,114,57, + 0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,0, + 0,0,114,79,0,0,0,114,150,0,0,0,114,0,1,0, + 0,114,231,0,0,0,114,33,1,0,0,114,4,0,0,0, + 114,4,0,0,0,41,1,114,221,0,0,0,114,5,0,0, + 0,114,42,1,0,0,3,6,0,0,115,10,0,0,0,12, + 3,6,2,12,6,24,9,18,5,114,42,1,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,64, + 0,0,0,115,64,0,0,0,101,0,0,90,1,0,100,0, + 0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0, + 132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90, + 5,0,100,6,0,100,7,0,100,8,0,100,9,0,132,0, + 1,90,6,0,100,10,0,83,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,3,0,0,0,3,0,0,0,67,0,0, + 0,115,36,0,0,0,116,0,0,124,1,0,131,1,0,125, + 2,0,105,2,0,124,2,0,106,1,0,100,1,0,54,124, + 2,0,106,2,0,100,2,0,54,83,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,114, + 178,0,0,0,114,179,0,0,0,41,3,114,39,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,78,0,0,0,114,35,0,0,0,114, + 40,1,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,30,1,0,0,38,6,0,0,115,4,0,0, + 0,0,2,12,1,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,5,0,0,0,5, + 0,0,0,67,0,0,0,115,34,0,0,0,116,0,0,124, + 1,0,131,1,0,125,4,0,124,0,0,106,1,0,124,2, + 0,124,3,0,100,1,0,124,4,0,131,2,1,83,41,2, + 78,218,5,95,109,111,100,101,41,2,114,138,0,0,0,114, + 31,1,0,0,41,5,114,78,0,0,0,114,135,0,0,0, + 114,134,0,0,0,114,53,0,0,0,114,42,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,32, + 1,0,0,43,6,0,0,115,4,0,0,0,0,2,12,1, + 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,47,1,0,0,105,182,1,0,0,99,3,0,0, + 0,1,0,0,0,9,0,0,0,18,0,0,0,67,0,0, + 0,115,53,1,0,0,116,0,0,124,1,0,131,1,0,92, + 2,0,125,4,0,125,5,0,103,0,0,125,6,0,120,54, + 0,124,4,0,114,80,0,116,1,0,124,4,0,131,1,0, + 12,114,80,0,116,0,0,124,4,0,131,1,0,92,2,0, + 125,4,0,125,7,0,124,6,0,106,2,0,124,7,0,131, + 1,0,1,113,27,0,87,120,132,0,116,3,0,124,6,0, + 131,1,0,68,93,118,0,125,7,0,116,4,0,124,4,0, + 124,7,0,131,2,0,125,4,0,121,17,0,116,5,0,106, + 6,0,124,4,0,131,1,0,1,87,113,94,0,4,116,7, + 0,107,10,0,114,155,0,1,1,1,119,94,0,89,113,94, + 0,4,116,8,0,107,10,0,114,211,0,1,125,8,0,1, + 122,25,0,116,9,0,100,1,0,124,4,0,124,8,0,131, + 3,0,1,100,2,0,83,87,89,100,2,0,100,2,0,125, + 8,0,126,8,0,88,113,94,0,88,113,94,0,87,121,33, + 0,116,10,0,124,1,0,124,2,0,124,3,0,131,3,0, + 1,116,9,0,100,3,0,124,1,0,131,2,0,1,87,110, + 53,0,4,116,8,0,107,10,0,114,48,1,1,125,8,0, + 1,122,21,0,116,9,0,100,1,0,124,1,0,124,8,0, + 131,3,0,1,87,89,100,2,0,100,2,0,125,8,0,126, + 8,0,88,110,1,0,88,100,2,0,83,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,11,114,38,0,0,0,114,46,0, + 0,0,114,220,0,0,0,114,33,0,0,0,114,28,0,0, + 0,114,3,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,40, + 0,0,0,114,146,0,0,0,114,55,0,0,0,41,9,114, + 78,0,0,0,114,35,0,0,0,114,53,0,0,0,114,47, + 1,0,0,114,228,0,0,0,114,125,0,0,0,114,27,0, + 0,0,114,23,0,0,0,114,34,1,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,31,1,0,0, + 48,6,0,0,115,38,0,0,0,0,2,18,1,6,2,22, + 1,18,1,17,2,19,1,15,1,3,1,17,1,13,2,7, + 1,18,3,16,1,27,1,3,1,16,1,17,1,18,2,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,57,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0, + 0,114,30,1,0,0,114,32,1,0,0,114,31,1,0,0, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,45,1,0,0,34,6,0,0,115,8,0, + 0,0,12,2,6,2,12,5,12,5,114,45,1,0,0,99, + 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 64,0,0,0,115,46,0,0,0,101,0,0,90,1,0,100, + 0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,3, + 0,132,0,0,90,4,0,100,4,0,100,5,0,132,0,0, + 90,5,0,100,6,0,83,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,5,0,0,0,6,0,0,0,67, + 0,0,0,115,76,0,0,0,124,0,0,106,0,0,124,1, + 0,131,1,0,125,2,0,124,0,0,106,1,0,124,2,0, + 131,1,0,125,3,0,116,2,0,124,3,0,100,1,0,124, + 1,0,100,2,0,124,2,0,131,1,2,125,4,0,116,3, + 0,124,4,0,100,1,0,124,1,0,100,3,0,124,2,0, + 131,1,2,83,41,4,78,114,67,0,0,0,114,35,0,0, + 0,114,134,0,0,0,41,4,114,231,0,0,0,114,33,1, + 0,0,114,185,0,0,0,114,190,0,0,0,41,5,114,78, + 0,0,0,114,152,0,0,0,114,35,0,0,0,114,53,0, + 0,0,114,41,1,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,10,1,0,0,81,6,0,0,115, + 8,0,0,0,0,1,15,1,15,1,24,1,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,2,0,0,0,1,0,0,0,67,0,0,0, + 115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,78,0,0, + 0,114,152,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,11,1,0,0,87,6,0,0,115,2, + 0,0,0,0,2,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,57,0,0,0,114,56, + 0,0,0,114,58,0,0,0,114,59,0,0,0,114,10,1, + 0,0,114,11,1,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,49,1,0,0, + 77,6,0,0,115,6,0,0,0,12,2,6,2,12,6,114, + 49,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,3,0,0,0,64,0,0,0,115,118,0,0,0,101,0, 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, - 135,0,0,102,1,0,100,2,0,100,3,0,134,0,0,90, - 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6, - 0,100,7,0,132,0,0,90,6,0,135,0,0,83,41,8, - 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,2,0, - 0,0,2,0,0,0,3,0,0,0,115,32,0,0,0,116, - 0,0,131,0,0,106,1,0,124,1,0,131,1,0,1,124, - 1,0,106,2,0,124,1,0,95,3,0,100,0,0,83,41, - 1,78,41,4,114,149,0,0,0,114,240,0,0,0,114,165, - 0,0,0,114,239,0,0,0,41,2,114,76,0,0,0,114, - 162,0,0,0,41,1,114,151,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,240,0,0,0,104,4,0,0,115,4, - 0,0,0,0,1,16,1,122,38,83,111,117,114,99,101,108, - 101,115,115,70,105,108,101,76,111,97,100,101,114,46,105,110, - 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,99, - 2,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 67,0,0,0,115,76,0,0,0,124,0,0,106,0,0,124, - 1,0,131,1,0,125,2,0,124,0,0,106,1,0,124,2, - 0,131,1,0,125,3,0,116,2,0,124,3,0,100,1,0, - 124,1,0,100,2,0,124,2,0,131,1,2,125,4,0,116, - 3,0,124,4,0,100,1,0,124,1,0,100,3,0,124,2, - 0,131,1,2,83,41,4,78,114,72,0,0,0,114,35,0, - 0,0,114,126,0,0,0,41,4,114,164,0,0,0,114,248, - 0,0,0,114,201,0,0,0,114,206,0,0,0,41,5,114, - 76,0,0,0,114,179,0,0,0,114,35,0,0,0,114,53, - 0,0,0,114,0,1,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,220,0,0,0,108,4,0,0, - 115,8,0,0,0,0,1,15,1,15,1,24,1,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,2,0,0,0,1,0,0,0,67,0,0, - 0,115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,76,0, - 0,0,114,179,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,221,0,0,0,114,4,0,0,115, - 2,0,0,0,0,2,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,41,7,114,57,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,59,0,0,0,114,240,0, - 0,0,114,220,0,0,0,114,221,0,0,0,114,4,0,0, - 0,114,4,0,0,0,41,1,114,151,0,0,0,114,5,0, - 0,0,114,8,1,0,0,100,4,0,0,115,8,0,0,0, - 12,2,6,2,18,4,12,6,114,8,1,0,0,99,0,0, - 0,0,0,0,0,0,0,0,0,0,5,0,0,0,64,0, - 0,0,115,118,0,0,0,101,0,0,90,1,0,100,0,0, - 90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,132, - 0,0,90,4,0,101,5,0,101,6,0,101,7,0,100,4, - 0,100,5,0,132,0,0,131,1,0,131,1,0,131,1,0, - 90,8,0,100,6,0,100,7,0,132,0,0,90,9,0,100, - 8,0,100,9,0,132,0,0,90,10,0,100,10,0,100,11, - 0,132,0,0,90,11,0,101,5,0,100,12,0,100,13,0, - 132,0,0,131,1,0,90,12,0,100,14,0,83,41,15,218, - 19,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, - 97,100,101,114,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,3,0,0,0, - 2,0,0,0,67,0,0,0,115,22,0,0,0,124,1,0, - 124,0,0,95,0,0,124,2,0,124,0,0,95,1,0,100, - 0,0,83,41,1,78,41,2,114,72,0,0,0,114,35,0, - 0,0,41,3,114,76,0,0,0,114,72,0,0,0,114,35, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,77,0,0,0,131,4,0,0,115,4,0,0,0, - 0,1,9,1,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,3,0,0,0,11, - 0,0,0,67,0,0,0,115,126,0,0,0,116,0,0,124, - 1,0,131,1,0,143,108,0,1,116,1,0,116,2,0,106, - 3,0,124,1,0,124,0,0,106,4,0,131,3,0,125,2, - 0,116,5,0,100,1,0,124,0,0,106,4,0,131,2,0, - 1,124,0,0,106,6,0,124,1,0,131,1,0,114,112,0, - 116,7,0,124,2,0,100,2,0,131,2,0,12,114,112,0, - 116,8,0,124,0,0,106,4,0,131,1,0,100,3,0,25, - 103,1,0,124,2,0,95,9,0,110,0,0,124,2,0,83, - 87,100,4,0,81,88,100,4,0,83,41,5,122,25,76,111, - 97,100,32,97,110,32,101,120,116,101,110,115,105,111,110,32, - 109,111,100,117,108,101,46,122,33,101,120,116,101,110,115,105, - 111,110,32,109,111,100,117,108,101,32,108,111,97,100,101,100, - 32,102,114,111,109,32,123,33,114,125,114,160,0,0,0,114, - 68,0,0,0,78,41,10,114,139,0,0,0,114,100,0,0, - 0,114,95,0,0,0,90,12,108,111,97,100,95,100,121,110, - 97,109,105,99,114,35,0,0,0,114,138,0,0,0,114,157, - 0,0,0,114,60,0,0,0,114,38,0,0,0,114,160,0, - 0,0,41,3,114,76,0,0,0,114,179,0,0,0,114,162, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,219,0,0,0,135,4,0,0,115,14,0,0,0, - 0,5,13,1,9,1,15,1,16,1,31,1,28,1,122,31, - 69,120,116,101,110,115,105,111,110,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,2,0,0,0,4,0,0,0, - 3,0,0,0,115,48,0,0,0,116,0,0,124,0,0,106, - 1,0,131,1,0,100,1,0,25,137,0,0,116,2,0,135, - 0,0,102,1,0,100,2,0,100,3,0,134,0,0,116,3, - 0,68,131,1,0,131,1,0,83,41,4,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,29, - 0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,51,0,0,0,115,31,0,0,0,124,0,0, - 93,21,0,125,1,0,136,0,0,100,0,0,124,1,0,23, - 107,2,0,86,1,113,3,0,100,1,0,83,41,2,114,77, - 0,0,0,78,114,4,0,0,0,41,2,114,22,0,0,0, - 218,6,115,117,102,102,105,120,41,1,218,9,102,105,108,101, - 95,110,97,109,101,114,4,0,0,0,114,5,0,0,0,114, - 144,0,0,0,151,4,0,0,115,2,0,0,0,6,1,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,41,4,114,38,0,0,0,114,35,0,0,0,114,145, - 0,0,0,218,18,69,88,84,69,78,83,73,79,78,95,83, - 85,70,70,73,88,69,83,41,2,114,76,0,0,0,114,179, - 0,0,0,114,4,0,0,0,41,1,114,11,1,0,0,114, - 5,0,0,0,114,157,0,0,0,148,4,0,0,115,6,0, - 0,0,0,2,19,1,18,1,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,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, - 0,0,100,1,0,83,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,4,0,0,0,41, - 2,114,76,0,0,0,114,179,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,220,0,0,0,154, - 4,0,0,115,2,0,0,0,0,2,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,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, - 0,0,100,1,0,83,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,4,0,0,0,41,2,114,76,0,0,0,114,179,0,0, + 100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,100, + 5,0,132,0,0,90,5,0,101,6,0,100,6,0,100,7, + 0,132,0,0,131,1,0,90,7,0,100,8,0,100,9,0, + 132,0,0,90,8,0,100,10,0,100,11,0,132,0,0,90, + 9,0,100,12,0,100,13,0,132,0,0,90,10,0,101,6, + 0,100,14,0,100,15,0,132,0,0,131,1,0,90,11,0, + 100,16,0,83,41,17,218,19,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,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,3,0,0,0,2,0,0,0,67,0,0,0,115, + 22,0,0,0,124,1,0,124,0,0,95,0,0,124,2,0, + 124,0,0,95,1,0,100,0,0,83,41,1,78,41,2,114, + 67,0,0,0,114,35,0,0,0,41,3,114,78,0,0,0, + 114,67,0,0,0,114,35,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,79,0,0,0,104,6, + 0,0,115,4,0,0,0,0,1,9,1,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,4,0,0,0,4,0,0,0,67,0,0,0,115,140, + 0,0,0,124,1,0,106,0,0,125,2,0,124,2,0,106, + 1,0,125,3,0,116,2,0,116,3,0,106,4,0,124,3, + 0,124,0,0,106,5,0,131,3,0,125,1,0,116,6,0, + 100,1,0,124,0,0,106,5,0,131,2,0,1,124,0,0, + 106,7,0,124,3,0,131,1,0,114,117,0,116,8,0,124, + 1,0,100,2,0,131,2,0,12,114,117,0,116,9,0,124, + 0,0,106,5,0,131,1,0,100,3,0,25,103,1,0,124, + 1,0,95,10,0,110,0,0,116,11,0,124,2,0,131,1, + 0,106,12,0,124,1,0,131,1,0,1,100,0,0,83,41, + 4,78,122,33,101,120,116,101,110,115,105,111,110,32,109,111, + 100,117,108,101,32,108,111,97,100,101,100,32,102,114,111,109, + 32,123,33,114,125,114,239,0,0,0,114,71,0,0,0,41, + 13,114,203,0,0,0,114,67,0,0,0,114,108,0,0,0, + 114,96,0,0,0,90,12,108,111,97,100,95,100,121,110,97, + 109,105,99,114,35,0,0,0,114,146,0,0,0,114,216,0, + 0,0,114,60,0,0,0,114,38,0,0,0,114,239,0,0, + 0,114,168,0,0,0,114,250,0,0,0,41,4,114,78,0, + 0,0,114,174,0,0,0,114,172,0,0,0,114,152,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,221,0,0,0,158,4,0,0,115,2,0,0,0,0,2, - 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,2,0,0,0,1,0,0, - 0,67,0,0,0,115,7,0,0,0,124,0,0,106,0,0, - 83,41,1,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,41, - 1,114,35,0,0,0,41,2,114,76,0,0,0,114,179,0, + 114,253,0,0,0,108,6,0,0,115,16,0,0,0,0,2, + 9,1,9,1,9,1,15,1,16,1,31,1,28,1,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,2,0,0,0,3,0,0,0, + 67,0,0,0,115,13,0,0,0,116,0,0,124,0,0,124, + 1,0,131,2,0,83,41,1,122,25,76,111,97,100,32,97, + 110,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,46,41,1,114,175,0,0,0,41,2,114,78,0,0, + 0,114,152,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,0,1,0,0,120,6,0,0,115,2, + 0,0,0,0,3,122,31,69,120,116,101,110,115,105,111,110, + 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,2, + 0,0,0,4,0,0,0,3,0,0,0,115,48,0,0,0, + 116,0,0,124,0,0,106,1,0,131,1,0,100,1,0,25, + 137,0,0,116,2,0,135,0,0,102,1,0,100,2,0,100, + 3,0,134,0,0,116,3,0,68,131,1,0,131,1,0,83, + 41,4,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,29,0,0,0,99,1,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,51,0,0,0,115, + 31,0,0,0,124,0,0,93,21,0,125,1,0,136,0,0, + 100,0,0,124,1,0,23,107,2,0,86,1,113,3,0,100, + 1,0,83,41,2,114,79,0,0,0,78,114,4,0,0,0, + 41,2,114,22,0,0,0,218,6,115,117,102,102,105,120,41, + 1,218,9,102,105,108,101,95,110,97,109,101,114,4,0,0, + 0,114,5,0,0,0,114,211,0,0,0,128,6,0,0,115, + 2,0,0,0,6,1,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,41,4,114,38,0,0,0, + 114,35,0,0,0,114,212,0,0,0,218,18,69,88,84,69, + 78,83,73,79,78,95,83,85,70,70,73,88,69,83,41,2, + 114,78,0,0,0,114,152,0,0,0,114,4,0,0,0,41, + 1,114,52,1,0,0,114,5,0,0,0,114,216,0,0,0, + 125,6,0,0,115,6,0,0,0,0,2,19,1,18,1,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,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,78,0,0,0,114,152,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,164,0,0,0,162,4,0,0,115,2,0,0,0,0, - 3,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,13,114,57,0,0,0,114,56,0,0,0, - 114,58,0,0,0,114,59,0,0,0,114,77,0,0,0,114, - 177,0,0,0,114,171,0,0,0,114,174,0,0,0,114,219, - 0,0,0,114,157,0,0,0,114,220,0,0,0,114,221,0, - 0,0,114,164,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,9,1,0,0, - 123,4,0,0,115,18,0,0,0,12,6,6,2,12,4,3, - 1,3,1,24,11,12,6,12,4,12,4,114,9,1,0,0, + 0,114,10,1,0,0,131,6,0,0,115,2,0,0,0,0, + 2,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,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,0,83,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,4,0,0,0,41,2,114,78, + 0,0,0,114,152,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,11,1,0,0,135,6,0,0, + 115,2,0,0,0,0,2,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, + 2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,0, + 0,124,0,0,106,0,0,83,41,1,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,41,1,114,35,0,0,0,41,2,114, + 78,0,0,0,114,152,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,231,0,0,0,139,6,0, + 0,115,2,0,0,0,0,3,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,12,114,57,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0, + 0,114,79,0,0,0,114,253,0,0,0,114,150,0,0,0, + 114,0,1,0,0,114,216,0,0,0,114,10,1,0,0,114, + 11,1,0,0,114,231,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,50,1, + 0,0,96,6,0,0,115,16,0,0,0,12,6,6,2,12, + 4,12,12,18,5,12,6,12,4,12,4,114,50,1,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, 0,64,0,0,0,115,130,0,0,0,101,0,0,90,1,0, 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, @@ -2294,1167 +2976,1246 @@ const unsigned char _Py_M__importlib[] = { 0,0,0,124,1,0,124,0,0,95,0,0,124,2,0,124, 0,0,95,1,0,116,2,0,124,0,0,106,3,0,131,0, 0,131,1,0,124,0,0,95,4,0,124,3,0,124,0,0, - 95,5,0,100,0,0,83,41,1,78,41,6,114,140,0,0, - 0,218,5,95,112,97,116,104,114,237,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, - 41,4,114,76,0,0,0,114,72,0,0,0,114,35,0,0, - 0,218,11,112,97,116,104,95,102,105,110,100,101,114,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,77,0, - 0,0,175,4,0,0,115,8,0,0,0,0,1,9,1,9, - 1,21,1,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,4,0,0,0,3,0,0,0,67,0,0, - 0,115,53,0,0,0,124,0,0,106,0,0,106,1,0,100, - 1,0,131,1,0,92,3,0,125,1,0,125,2,0,125,3, - 0,124,2,0,100,2,0,107,2,0,114,43,0,100,6,0, - 83,124,1,0,100,5,0,102,2,0,83,41,7,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,102,0, - 0,0,114,30,0,0,0,114,7,0,0,0,114,35,0,0, - 0,114,160,0,0,0,41,2,122,3,115,121,115,122,4,112, - 97,116,104,41,2,114,140,0,0,0,114,32,0,0,0,41, - 4,114,76,0,0,0,114,7,1,0,0,218,3,100,111,116, - 114,81,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,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,181,4,0, - 0,115,8,0,0,0,0,2,27,1,12,2,4,3,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,3, - 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, - 124,0,0,106,0,0,131,0,0,92,2,0,125,1,0,125, - 2,0,116,1,0,116,2,0,106,3,0,124,1,0,25,124, - 2,0,131,2,0,83,41,1,78,41,4,114,20,1,0,0, - 114,62,0,0,0,114,7,0,0,0,114,141,0,0,0,41, - 3,114,76,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,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,15,1,0,0,191,4, - 0,0,115,4,0,0,0,0,1,18,1,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,4,0,0,0,3,0,0,0,67,0,0, - 0,115,103,0,0,0,116,0,0,124,0,0,106,1,0,131, - 0,0,131,1,0,125,1,0,124,1,0,124,0,0,106,2, - 0,107,3,0,114,96,0,124,0,0,106,3,0,124,0,0, - 106,4,0,124,1,0,131,2,0,92,2,0,125,2,0,125, - 3,0,124,2,0,100,0,0,107,8,0,114,84,0,124,3, - 0,124,0,0,95,5,0,110,0,0,124,1,0,124,0,0, - 95,2,0,110,0,0,124,0,0,106,5,0,83,41,1,78, - 41,6,114,237,0,0,0,114,15,1,0,0,114,16,1,0, - 0,114,17,1,0,0,114,140,0,0,0,114,14,1,0,0, - 41,4,114,76,0,0,0,90,11,112,97,114,101,110,116,95, - 112,97,116,104,114,161,0,0,0,90,8,110,101,119,95,112, - 97,116,104,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, - 195,4,0,0,115,14,0,0,0,0,2,18,1,15,1,27, - 3,12,1,12,1,12,1,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,1,0,0, - 0,2,0,0,0,67,0,0,0,115,16,0,0,0,116,0, - 0,124,0,0,106,1,0,131,0,0,131,1,0,83,41,1, - 78,41,2,218,4,105,116,101,114,114,21,1,0,0,41,1, - 114,76,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,218,8,95,95,105,116,101,114,95,95,207,4, - 0,0,115,2,0,0,0,0,1,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,1,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,124, - 0,0,106,1,0,131,0,0,131,1,0,83,41,1,78,41, - 2,114,31,0,0,0,114,21,1,0,0,41,1,114,76,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,7,95,95,108,101,110,95,95,210,4,0,0,115,2, - 0,0,0,0,1,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,1,0,0,0,2,0,0,0,67,0, - 0,0,115,16,0,0,0,100,1,0,106,0,0,124,0,0, - 106,1,0,131,1,0,83,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,47,0,0,0,114,14,1,0,0,41,1,114,76, + 95,5,0,100,0,0,83,41,1,78,41,6,114,93,0,0, + 0,114,249,0,0,0,114,226,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,41,4, + 114,78,0,0,0,114,67,0,0,0,114,35,0,0,0,218, + 11,112,97,116,104,95,102,105,110,100,101,114,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,79,0,0,0, + 152,6,0,0,115,8,0,0,0,0,1,9,1,9,1,21, + 1,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,4,0,0,0,3,0,0,0,67,0,0,0,115, + 53,0,0,0,124,0,0,106,0,0,106,1,0,100,1,0, + 131,1,0,92,3,0,125,1,0,125,2,0,125,3,0,124, + 2,0,100,2,0,107,2,0,114,43,0,100,6,0,83,124, + 1,0,100,5,0,102,2,0,83,41,7,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,110,0,0,0, + 114,30,0,0,0,114,7,0,0,0,114,35,0,0,0,114, + 239,0,0,0,41,2,122,3,115,121,115,122,4,112,97,116, + 104,41,2,114,93,0,0,0,114,32,0,0,0,41,4,114, + 78,0,0,0,114,228,0,0,0,218,3,100,111,116,114,83, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,88,0,0,0,213,4,0,0,115,2,0,0,0, - 0,1,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,2,0,0,0,2,0,0,0,67,0,0,0, - 115,16,0,0,0,124,1,0,124,0,0,106,0,0,131,0, - 0,107,6,0,83,41,1,78,41,1,114,21,1,0,0,41, - 2,114,76,0,0,0,218,4,105,116,101,109,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,12,95,95,99, - 111,110,116,97,105,110,115,95,95,216,4,0,0,115,2,0, - 0,0,0,1,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,2,0,0,0,2,0, - 0,0,67,0,0,0,115,20,0,0,0,124,0,0,106,0, - 0,106,1,0,124,1,0,131,1,0,1,100,0,0,83,41, - 1,78,41,2,114,14,1,0,0,114,166,0,0,0,41,2, - 114,76,0,0,0,114,25,1,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,166,0,0,0,219,4, - 0,0,115,2,0,0,0,0,1,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,13,114,57,0,0,0,114,56,0,0,0,114,58,0, - 0,0,114,59,0,0,0,114,77,0,0,0,114,20,1,0, - 0,114,15,1,0,0,114,21,1,0,0,114,23,1,0,0, - 114,24,1,0,0,114,88,0,0,0,114,26,1,0,0,114, - 166,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,13,1,0,0,168,4,0, - 0,115,20,0,0,0,12,5,6,2,12,6,12,10,12,4, - 12,12,12,3,12,3,12,3,12,3,114,13,1,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 64,0,0,0,115,106,0,0,0,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,100,2,0,132,0,0,90,3, - 0,101,4,0,100,3,0,100,4,0,132,0,0,131,1,0, - 90,5,0,100,5,0,100,6,0,132,0,0,90,6,0,100, - 7,0,100,8,0,132,0,0,90,7,0,100,9,0,100,10, - 0,132,0,0,90,8,0,100,11,0,100,12,0,132,0,0, - 90,9,0,100,13,0,100,14,0,132,0,0,90,10,0,100, - 15,0,83,41,16,218,15,78,97,109,101,115,112,97,99,101, - 76,111,97,100,101,114,99,4,0,0,0,0,0,0,0,4, + 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,158,6,0,0,115, + 8,0,0,0,0,2,27,1,12,2,4,3,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,3,0,0, + 0,3,0,0,0,67,0,0,0,115,38,0,0,0,124,0, + 0,106,0,0,131,0,0,92,2,0,125,1,0,125,2,0, + 116,1,0,116,2,0,106,3,0,124,1,0,25,124,2,0, + 131,2,0,83,41,1,78,41,4,114,60,1,0,0,114,62, + 0,0,0,114,7,0,0,0,114,169,0,0,0,41,3,114, + 78,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,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,55,1,0,0,168,6,0,0, + 115,4,0,0,0,0,1,18,1,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,3,0,0,0,3,0,0,0,67,0,0,0,115, + 127,0,0,0,116,0,0,124,0,0,106,1,0,131,0,0, + 131,1,0,125,1,0,124,1,0,124,0,0,106,2,0,107, + 3,0,114,120,0,124,0,0,106,3,0,124,0,0,106,4, + 0,124,1,0,131,2,0,125,2,0,124,2,0,100,0,0, + 107,9,0,114,108,0,124,2,0,106,5,0,100,0,0,107, + 8,0,114,108,0,124,2,0,106,6,0,114,108,0,124,2, + 0,106,6,0,124,0,0,95,7,0,113,108,0,110,0,0, + 124,1,0,124,0,0,95,2,0,110,0,0,124,0,0,106, + 7,0,83,41,1,78,41,8,114,226,0,0,0,114,55,1, + 0,0,114,56,1,0,0,114,57,1,0,0,114,93,0,0, + 0,114,163,0,0,0,114,217,0,0,0,114,249,0,0,0, + 41,3,114,78,0,0,0,90,11,112,97,114,101,110,116,95, + 112,97,116,104,114,172,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,12,95,114,101,99,97,108, + 99,117,108,97,116,101,172,6,0,0,115,16,0,0,0,0, + 2,18,1,15,1,21,3,27,1,9,1,18,1,12,1,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,1,0,0,0,2,0,0,0,67,0,0, + 0,115,16,0,0,0,116,0,0,124,0,0,106,1,0,131, + 0,0,131,1,0,83,41,1,78,41,2,218,4,105,116,101, + 114,114,61,1,0,0,41,1,114,78,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,95, + 105,116,101,114,95,95,185,6,0,0,115,2,0,0,0,0, + 1,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,1,0,0,0,0, + 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,116,0,0,124,0,0,106,1,0,131,0,0, + 131,1,0,83,41,1,78,41,2,114,31,0,0,0,114,61, + 1,0,0,41,1,114,78,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,7,95,95,108,101,110, + 95,95,188,6,0,0,115,2,0,0,0,0,1,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,1,0, + 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,100, + 1,0,106,0,0,124,0,0,106,1,0,131,1,0,83,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,47,0,0,0,114, + 249,0,0,0,41,1,114,78,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,90,0,0,0,191, + 6,0,0,115,2,0,0,0,0,1,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,2,0,0,0, + 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,0, + 124,0,0,106,0,0,131,0,0,107,6,0,83,41,1,78, + 41,1,114,61,1,0,0,41,2,114,78,0,0,0,218,4, + 105,116,101,109,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95, + 95,194,6,0,0,115,2,0,0,0,0,1,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,2,0,0,0,2,0,0,0,67,0,0,0,115,20, + 0,0,0,124,0,0,106,0,0,106,1,0,124,1,0,131, + 1,0,1,100,0,0,83,41,1,78,41,2,114,249,0,0, + 0,114,220,0,0,0,41,2,114,78,0,0,0,114,65,1, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,220,0,0,0,197,6,0,0,115,2,0,0,0,0, + 1,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,13,114,57,0,0,0, + 114,56,0,0,0,114,58,0,0,0,114,59,0,0,0,114, + 79,0,0,0,114,60,1,0,0,114,55,1,0,0,114,61, + 1,0,0,114,63,1,0,0,114,64,1,0,0,114,90,0, + 0,0,114,66,1,0,0,114,220,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,54,1,0,0,145,6,0,0,115,20,0,0,0,12,5, + 6,2,12,6,12,10,12,4,12,13,12,3,12,3,12,3, + 12,3,114,54,1,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,64,0,0,0,115,94,0,0, + 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, + 100,2,0,132,0,0,90,3,0,101,4,0,100,3,0,100, + 4,0,132,0,0,131,1,0,90,5,0,100,5,0,100,6, + 0,132,0,0,90,6,0,100,7,0,100,8,0,132,0,0, + 90,7,0,100,9,0,100,10,0,132,0,0,90,8,0,100, + 11,0,100,12,0,132,0,0,90,9,0,100,13,0,83,41, + 14,114,247,0,0,0,99,4,0,0,0,0,0,0,0,4, 0,0,0,4,0,0,0,67,0,0,0,115,25,0,0,0, 116,0,0,124,1,0,124,2,0,124,3,0,131,3,0,124, - 0,0,95,1,0,100,0,0,83,41,1,78,41,2,114,13, - 1,0,0,114,14,1,0,0,41,4,114,76,0,0,0,114, - 72,0,0,0,114,35,0,0,0,114,18,1,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,77,0, - 0,0,224,4,0,0,115,2,0,0,0,0,1,122,24,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,2,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,100,1,0,106,0,0,124,1,0,106,1,0,131,1,0, - 83,41,2,78,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,41, - 2,114,47,0,0,0,114,57,0,0,0,41,2,114,216,0, - 0,0,114,162,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,217,0,0,0,227,4,0,0,115, - 2,0,0,0,0,2,122,27,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,2,0,0,0, - 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0, - 83,41,2,78,84,114,4,0,0,0,41,2,114,76,0,0, - 0,114,179,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,157,0,0,0,231,4,0,0,115,2, - 0,0,0,0,1,122,26,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,2,0,0,0,1,0, - 0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,41, - 2,78,114,30,0,0,0,114,4,0,0,0,41,2,114,76, - 0,0,0,114,179,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,221,0,0,0,234,4,0,0, - 115,2,0,0,0,0,1,122,26,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,2,0,0,0, - 6,0,0,0,67,0,0,0,115,22,0,0,0,116,0,0, - 100,1,0,100,2,0,100,3,0,100,4,0,100,5,0,131, - 3,1,83,41,6,78,114,30,0,0,0,122,8,60,115,116, - 114,105,110,103,62,114,241,0,0,0,114,251,0,0,0,84, - 41,1,114,252,0,0,0,41,2,114,76,0,0,0,114,179, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,220,0,0,0,237,4,0,0,115,2,0,0,0, - 0,1,122,24,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,2,0,0,0,2,0,0,0,67,0,0, - 0,115,25,0,0,0,124,0,0,124,1,0,95,0,0,124, - 1,0,106,1,0,124,1,0,95,2,0,100,0,0,83,41, - 1,78,41,3,114,172,0,0,0,114,57,0,0,0,114,159, - 0,0,0,41,2,114,76,0,0,0,114,162,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,240, - 0,0,0,240,4,0,0,115,4,0,0,0,0,1,9,1, - 122,33,78,97,109,101,115,112,97,99,101,76,111,97,100,101, - 114,46,105,110,105,116,95,109,111,100,117,108,101,95,97,116, - 116,114,115,99,2,0,0,0,0,0,0,0,3,0,0,0, - 9,0,0,0,67,0,0,0,115,70,0,0,0,116,0,0, - 100,1,0,124,0,0,106,1,0,131,2,0,1,116,2,0, - 124,1,0,131,1,0,143,36,0,125,2,0,124,0,0,106, - 3,0,124,2,0,131,1,0,1,124,0,0,106,1,0,124, - 2,0,95,4,0,124,2,0,83,87,100,2,0,81,88,100, - 2,0,83,41,3,122,24,76,111,97,100,32,97,32,110,97, - 109,101,115,112,97,99,101,32,109,111,100,117,108,101,46,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,5,114,138,0,0,0,114, - 14,1,0,0,114,156,0,0,0,114,240,0,0,0,114,160, - 0,0,0,41,3,114,76,0,0,0,114,179,0,0,0,114, - 162,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,219,0,0,0,244,4,0,0,115,10,0,0, - 0,0,2,16,1,15,1,13,1,12,1,122,27,78,97,109, + 0,0,95,1,0,100,0,0,83,41,1,78,41,2,114,54, + 1,0,0,114,249,0,0,0,41,4,114,78,0,0,0,114, + 67,0,0,0,114,35,0,0,0,114,58,1,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,79,0, + 0,0,203,6,0,0,115,2,0,0,0,0,1,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,2,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,115,16,0, + 0,0,100,1,0,106,0,0,124,1,0,106,1,0,131,1, + 0,83,41,2,78,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, + 41,2,114,47,0,0,0,114,57,0,0,0,41,2,114,242, + 0,0,0,114,174,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,200,0,0,0,207,6,0,0, + 115,2,0,0,0,0,2,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,2,0, + 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, + 1,0,83,41,2,78,84,114,4,0,0,0,41,2,114,78, + 0,0,0,114,152,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,216,0,0,0,211,6,0,0, + 115,2,0,0,0,0,1,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,2,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 0,83,41,2,78,114,30,0,0,0,114,4,0,0,0,41, + 2,114,78,0,0,0,114,152,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,11,1,0,0,214, + 6,0,0,115,2,0,0,0,0,1,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, + 2,0,0,0,6,0,0,0,67,0,0,0,115,22,0,0, + 0,116,0,0,100,1,0,100,2,0,100,3,0,100,4,0, + 100,5,0,131,3,1,83,41,6,78,114,30,0,0,0,122, + 8,60,115,116,114,105,110,103,62,114,170,0,0,0,114,36, + 1,0,0,84,41,1,114,37,1,0,0,41,2,114,78,0, + 0,0,114,152,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,10,1,0,0,217,6,0,0,115, + 2,0,0,0,0,1,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,2,0,0,0,3,0, + 0,0,67,0,0,0,115,29,0,0,0,116,0,0,100,1, + 0,124,0,0,106,1,0,131,2,0,1,116,2,0,124,0, + 0,124,1,0,131,2,0,83,41,2,122,24,76,111,97,100, + 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100, + 117,108,101,46,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,41,3,114,146, + 0,0,0,114,249,0,0,0,114,175,0,0,0,41,2,114, + 78,0,0,0,114,152,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,0,1,0,0,221,6,0, + 0,115,4,0,0,0,0,2,16,1,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,78,41,11,114,57,0,0,0, - 114,56,0,0,0,114,58,0,0,0,114,77,0,0,0,114, - 222,0,0,0,114,217,0,0,0,114,157,0,0,0,114,221, - 0,0,0,114,220,0,0,0,114,240,0,0,0,114,219,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,27,1,0,0,223,4,0,0,115, - 14,0,0,0,12,1,12,3,18,4,12,3,12,3,12,3, - 12,4,114,27,1,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,4,0,0,0,64,0,0,0,115,115,0,0, - 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, - 90,3,0,101,4,0,100,2,0,100,3,0,132,0,0,131, - 1,0,90,5,0,101,4,0,100,4,0,100,5,0,132,0, - 0,131,1,0,90,6,0,101,4,0,100,6,0,100,7,0, - 132,0,0,131,1,0,90,7,0,101,4,0,100,8,0,100, - 9,0,132,0,0,131,1,0,90,8,0,101,4,0,100,10, - 0,100,11,0,100,12,0,132,1,0,131,1,0,90,9,0, - 100,10,0,83,41,13,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,1,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,58,0,0,0,120,51,0,116, - 0,0,106,1,0,106,2,0,131,0,0,68,93,34,0,125, - 1,0,116,3,0,124,1,0,100,1,0,131,2,0,114,16, - 0,124,1,0,106,4,0,131,0,0,1,113,16,0,113,16, - 0,87,100,2,0,83,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,218,17,105,110,118,97,108,105,100, - 97,116,101,95,99,97,99,104,101,115,78,41,5,114,7,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,6,118,97,108,117,101,115,114, - 60,0,0,0,114,29,1,0,0,41,2,114,216,0,0,0, - 218,6,102,105,110,100,101,114,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,29,1,0,0,3,5,0,0, - 115,6,0,0,0,0,4,22,1,15,1,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,2,0,0,0,0,0, - 0,0,3,0,0,0,12,0,0,0,67,0,0,0,115,94, - 0,0,0,116,0,0,106,1,0,115,28,0,116,2,0,106, - 3,0,100,1,0,116,4,0,131,2,0,1,110,0,0,120, - 59,0,116,0,0,106,1,0,68,93,44,0,125,2,0,121, - 14,0,124,2,0,124,1,0,131,1,0,83,87,113,38,0, - 4,116,5,0,107,10,0,114,81,0,1,1,1,119,38,0, - 89,113,38,0,88,113,38,0,87,100,2,0,83,100,2,0, - 83,41,3,122,113,83,101,97,114,99,104,32,115,101,113,117, - 101,110,99,101,32,111,102,32,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,10,10,32,32,32,32,32,32,32,32, - 73,102,32,39,104,111,111,107,115,39,32,105,115,32,102,97, - 108,115,101,32,116,104,101,110,32,117,115,101,32,115,121,115, - 46,112,97,116,104,95,104,111,111,107,115,46,10,10,32,32, - 32,32,32,32,32,32,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,78, - 41,6,114,7,0,0,0,218,10,112,97,116,104,95,104,111, - 111,107,115,114,186,0,0,0,114,187,0,0,0,114,188,0, - 0,0,114,158,0,0,0,41,3,114,216,0,0,0,114,35, - 0,0,0,90,4,104,111,111,107,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,11,95,112,97,116,104,95, - 104,111,111,107,115,11,5,0,0,115,16,0,0,0,0,7, - 9,1,19,1,16,1,3,1,14,1,13,1,12,2,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,3, - 0,0,0,11,0,0,0,67,0,0,0,115,97,0,0,0, - 124,1,0,100,1,0,107,2,0,114,27,0,116,0,0,106, - 1,0,131,0,0,125,1,0,110,0,0,121,17,0,116,2, - 0,106,3,0,124,1,0,25,125,2,0,87,110,46,0,4, - 116,4,0,107,10,0,114,92,0,1,1,1,124,0,0,106, - 5,0,124,1,0,131,1,0,125,2,0,124,2,0,116,2, - 0,106,3,0,124,1,0,60,89,110,1,0,88,124,2,0, - 83,41,2,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,30,0,0,0,41,6,114,3, - 0,0,0,114,45,0,0,0,114,7,0,0,0,114,30,1, - 0,0,114,92,0,0,0,114,34,1,0,0,41,3,114,216, - 0,0,0,114,35,0,0,0,114,32,1,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,20,95,112, + 100,95,109,111,100,117,108,101,78,41,10,114,57,0,0,0, + 114,56,0,0,0,114,58,0,0,0,114,79,0,0,0,114, + 4,1,0,0,114,200,0,0,0,114,216,0,0,0,114,11, + 1,0,0,114,10,1,0,0,114,0,1,0,0,114,4,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,247,0,0,0,202,6,0,0,115,12,0,0,0,12, + 1,12,4,18,4,12,3,12,3,12,4,114,247,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,64,0,0,0,115,160,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,100, + 2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,4, + 0,100,4,0,100,5,0,132,0,0,131,1,0,90,6,0, + 101,4,0,100,6,0,100,7,0,132,0,0,131,1,0,90, + 7,0,101,4,0,100,8,0,100,9,0,132,0,0,131,1, + 0,90,8,0,101,4,0,100,10,0,100,11,0,100,12,0, + 132,1,0,131,1,0,90,9,0,101,4,0,100,10,0,100, + 10,0,100,13,0,100,14,0,132,2,0,131,1,0,90,10, + 0,101,4,0,100,10,0,100,15,0,100,16,0,132,1,0, + 131,1,0,90,11,0,100,10,0,83,41,17,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,1,0,0,0,0,0,0, + 0,2,0,0,0,4,0,0,0,67,0,0,0,115,58,0, + 0,0,120,51,0,116,0,0,106,1,0,106,2,0,131,0, + 0,68,93,34,0,125,1,0,116,3,0,124,1,0,100,1, + 0,131,2,0,114,16,0,124,1,0,106,4,0,131,0,0, + 1,113,16,0,113,16,0,87,100,2,0,83,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,218,17,105, + 110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115, + 78,41,5,114,7,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,6,118, + 97,108,117,101,115,114,60,0,0,0,114,68,1,0,0,41, + 2,114,242,0,0,0,218,6,102,105,110,100,101,114,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,68,1, + 0,0,233,6,0,0,115,6,0,0,0,0,4,22,1,15, + 1,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, + 2,0,0,0,0,0,0,0,3,0,0,0,12,0,0,0, + 67,0,0,0,115,94,0,0,0,116,0,0,106,1,0,115, + 28,0,116,2,0,106,3,0,100,1,0,116,4,0,131,2, + 0,1,110,0,0,120,59,0,116,0,0,106,1,0,68,93, + 44,0,125,2,0,121,14,0,124,2,0,124,1,0,131,1, + 0,83,87,113,38,0,4,116,5,0,107,10,0,114,81,0, + 1,1,1,119,38,0,89,113,38,0,88,113,38,0,87,100, + 2,0,83,100,2,0,83,41,3,122,113,83,101,97,114,99, + 104,32,115,101,113,117,101,110,99,101,32,111,102,32,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,10,10,32,32, + 32,32,32,32,32,32,73,102,32,39,104,111,111,107,115,39, + 32,105,115,32,102,97,108,115,101,32,116,104,101,110,32,117, + 115,101,32,115,121,115,46,112,97,116,104,95,104,111,111,107, + 115,46,10,10,32,32,32,32,32,32,32,32,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,78,41,6,114,7,0,0,0,218,10,112, + 97,116,104,95,104,111,111,107,115,114,160,0,0,0,114,161, + 0,0,0,114,162,0,0,0,114,147,0,0,0,41,3,114, + 242,0,0,0,114,35,0,0,0,90,4,104,111,111,107,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11, + 95,112,97,116,104,95,104,111,111,107,115,241,6,0,0,115, + 16,0,0,0,0,7,9,1,19,1,16,1,3,1,14,1, + 13,1,12,2,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,3,0,0,0,11,0,0,0,67,0,0, + 0,115,97,0,0,0,124,1,0,100,1,0,107,2,0,114, + 27,0,116,0,0,106,1,0,131,0,0,125,1,0,110,0, + 0,121,17,0,116,2,0,106,3,0,124,1,0,25,125,2, + 0,87,110,46,0,4,116,4,0,107,10,0,114,92,0,1, + 1,1,124,0,0,106,5,0,124,1,0,131,1,0,125,2, + 0,124,2,0,116,2,0,106,3,0,124,1,0,60,89,110, + 1,0,88,124,2,0,83,41,2,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,30,0, + 0,0,41,6,114,3,0,0,0,114,45,0,0,0,114,7, + 0,0,0,114,69,1,0,0,114,104,0,0,0,114,73,1, + 0,0,41,3,114,242,0,0,0,114,35,0,0,0,114,71, + 1,0,0,114,4,0,0,0,114,4,0,0,0,114,5,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,2,7,0,0,115,16,0,0, + 0,0,8,12,1,15,1,3,1,17,1,13,1,15,1,18, + 1,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,28,5,0,0,115,16,0,0,0,0,8,12,1,15, - 1,3,1,17,1,13,1,15,1,18,1,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,8,0,0,0,5,0,0,0,67,0,0, - 0,115,189,0,0,0,103,0,0,125,3,0,120,176,0,124, - 2,0,68,93,158,0,125,4,0,116,0,0,124,4,0,116, - 1,0,116,2,0,102,2,0,131,2,0,115,46,0,113,13, - 0,110,0,0,124,0,0,106,3,0,124,4,0,131,1,0, - 125,5,0,124,5,0,100,1,0,107,9,0,114,13,0,116, - 4,0,124,5,0,100,2,0,131,2,0,114,112,0,124,5, - 0,106,5,0,124,1,0,131,1,0,92,2,0,125,6,0, - 125,7,0,110,21,0,124,5,0,106,6,0,124,1,0,131, - 1,0,125,6,0,103,0,0,125,7,0,124,6,0,100,1, - 0,107,9,0,114,155,0,124,6,0,124,3,0,102,2,0, - 83,124,3,0,106,7,0,124,7,0,131,1,0,1,113,13, - 0,113,13,0,87,100,1,0,124,3,0,102,2,0,83,100, - 1,0,83,41,3,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,185,0,0,0,41,8,114,203, - 0,0,0,218,3,115,116,114,218,5,98,121,116,101,115,114, - 35,1,0,0,114,60,0,0,0,114,185,0,0,0,114,218, - 0,0,0,114,208,0,0,0,41,8,114,216,0,0,0,114, - 179,0,0,0,114,35,0,0,0,218,14,110,97,109,101,115, + 104,101,99,3,0,0,0,0,0,0,0,6,0,0,0,3, + 0,0,0,67,0,0,0,115,113,0,0,0,116,0,0,124, + 2,0,100,1,0,131,2,0,114,39,0,124,2,0,106,1, + 0,124,1,0,131,1,0,92,2,0,125,3,0,125,4,0, + 110,21,0,124,2,0,106,2,0,124,1,0,131,1,0,125, + 3,0,100,0,0,125,4,0,124,3,0,100,0,0,107,9, + 0,114,85,0,116,3,0,124,1,0,124,3,0,131,2,0, + 83,116,4,0,124,1,0,100,0,0,131,2,0,125,5,0, + 124,4,0,124,5,0,95,5,0,124,5,0,83,41,2,78, + 114,159,0,0,0,41,6,114,60,0,0,0,114,159,0,0, + 0,114,9,1,0,0,114,167,0,0,0,114,213,0,0,0, + 114,217,0,0,0,41,6,114,242,0,0,0,114,152,0,0, + 0,114,71,1,0,0,114,163,0,0,0,114,164,0,0,0, + 114,172,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101, + 116,95,115,112,101,99,19,7,0,0,115,18,0,0,0,0, + 2,15,1,24,2,15,1,6,1,12,1,13,1,15,1,9, + 1,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,9,0,0,0,5,0,0,0, + 67,0,0,0,115,252,0,0,0,103,0,0,125,4,0,120, + 239,0,124,2,0,68,93,203,0,125,5,0,116,0,0,124, + 5,0,116,1,0,116,2,0,102,2,0,131,2,0,115,46, + 0,113,13,0,110,0,0,124,0,0,106,3,0,124,5,0, + 131,1,0,125,6,0,124,6,0,100,1,0,107,9,0,114, + 13,0,116,4,0,124,6,0,100,2,0,131,2,0,114,109, + 0,124,6,0,106,5,0,124,1,0,124,3,0,131,2,0, + 125,7,0,110,18,0,124,0,0,106,6,0,124,1,0,124, + 6,0,131,2,0,125,7,0,124,7,0,100,1,0,107,8, + 0,114,145,0,113,13,0,110,0,0,124,7,0,106,7,0, + 100,1,0,107,9,0,114,164,0,124,7,0,83,124,7,0, + 106,8,0,125,8,0,124,8,0,100,1,0,107,8,0,114, + 200,0,116,9,0,100,3,0,131,1,0,130,1,0,110,0, + 0,124,4,0,106,10,0,124,8,0,131,1,0,1,113,13, + 0,113,13,0,87,116,11,0,124,1,0,100,1,0,131,2, + 0,125,7,0,124,4,0,124,7,0,95,8,0,124,7,0, + 83,100,1,0,83,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,8,1,0,0,122,19, + 115,112,101,99,32,109,105,115,115,105,110,103,32,108,111,97, + 100,101,114,41,12,114,187,0,0,0,218,3,115,116,114,218, + 5,98,121,116,101,115,114,74,1,0,0,114,60,0,0,0, + 114,8,1,0,0,114,75,1,0,0,114,163,0,0,0,114, + 217,0,0,0,114,147,0,0,0,114,192,0,0,0,114,213, + 0,0,0,41,9,114,242,0,0,0,114,152,0,0,0,114, + 35,0,0,0,114,7,1,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,32,1,0,0,114,161,0,0,0,114,189,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11, - 95,103,101,116,95,108,111,97,100,101,114,45,5,0,0,115, - 28,0,0,0,0,5,6,1,13,1,21,1,6,1,15,1, - 12,1,15,1,24,2,15,1,6,1,12,2,10,5,20,2, - 122,22,80,97,116,104,70,105,110,100,101,114,46,95,103,101, - 116,95,108,111,97,100,101,114,78,99,3,0,0,0,0,0, - 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,97, - 0,0,0,124,2,0,100,1,0,107,8,0,114,24,0,116, - 0,0,106,1,0,125,2,0,110,0,0,124,0,0,106,2, - 0,124,1,0,124,2,0,131,2,0,92,2,0,125,3,0, - 125,4,0,124,3,0,100,1,0,107,9,0,114,64,0,124, - 3,0,83,124,4,0,114,89,0,116,3,0,124,1,0,124, - 4,0,124,0,0,106,2,0,131,3,0,83,100,1,0,83, - 100,1,0,83,41,2,122,98,70,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,78,41,4,114,7,0, - 0,0,114,35,0,0,0,114,39,1,0,0,114,27,1,0, - 0,41,5,114,216,0,0,0,114,179,0,0,0,114,35,0, - 0,0,114,161,0,0,0,114,38,1,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,218,0,0,0, - 72,5,0,0,115,16,0,0,0,0,4,12,1,12,1,24, - 1,12,1,4,2,6,3,19,2,122,22,80,97,116,104,70, - 105,110,100,101,114,46,102,105,110,100,95,109,111,100,117,108, - 101,41,10,114,57,0,0,0,114,56,0,0,0,114,58,0, - 0,0,114,59,0,0,0,114,222,0,0,0,114,29,1,0, - 0,114,34,1,0,0,114,35,1,0,0,114,39,1,0,0, - 114,218,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,28,1,0,0,255,4, - 0,0,115,14,0,0,0,12,2,6,2,18,8,18,17,18, - 17,18,27,3,1,114,28,1,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,3,0,0,0,64,0,0,0,115, - 106,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, - 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90, - 4,0,100,4,0,100,5,0,132,0,0,90,5,0,101,6, - 0,90,7,0,100,6,0,100,7,0,132,0,0,90,8,0, - 100,8,0,100,9,0,132,0,0,90,9,0,101,10,0,100, - 10,0,100,11,0,132,0,0,131,1,0,90,11,0,100,12, - 0,100,13,0,132,0,0,90,12,0,100,14,0,83,41,15, - 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,5,0,0,0,5,0,0,0,7,0,0,0,115, - 122,0,0,0,103,0,0,125,3,0,120,52,0,124,2,0, - 68,93,44,0,92,2,0,137,0,0,125,4,0,124,3,0, - 106,0,0,135,0,0,102,1,0,100,1,0,100,2,0,134, - 0,0,124,4,0,68,131,1,0,131,1,0,1,113,13,0, - 87,124,3,0,124,0,0,95,1,0,124,1,0,112,79,0, - 100,3,0,124,0,0,95,2,0,100,6,0,124,0,0,95, - 3,0,116,4,0,131,0,0,124,0,0,95,5,0,116,4, - 0,131,0,0,124,0,0,95,6,0,100,5,0,83,41,7, - 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,2,0,0,0,3,0,0,0,51,0,0, - 0,115,27,0,0,0,124,0,0,93,17,0,125,1,0,124, - 1,0,136,0,0,102,2,0,86,1,113,3,0,100,0,0, - 83,41,1,78,114,4,0,0,0,41,2,114,22,0,0,0, - 114,10,1,0,0,41,1,114,161,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,144,0,0,0,105,5,0,0,115, - 2,0,0,0,6,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,102, - 0,0,0,114,29,0,0,0,78,114,124,0,0,0,41,7, - 114,208,0,0,0,218,8,95,108,111,97,100,101,114,115,114, - 35,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,76,0,0,0,114, - 35,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,113,0, - 0,0,114,4,0,0,0,41,1,114,161,0,0,0,114,5, - 0,0,0,114,77,0,0,0,99,5,0,0,115,16,0,0, - 0,0,4,6,1,19,1,36,1,9,2,15,1,9,1,12, - 1,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,1, - 0,0,0,2,0,0,0,67,0,0,0,115,13,0,0,0, - 100,3,0,124,0,0,95,0,0,100,2,0,83,41,4,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,29,0,0,0,78,114,124,0,0,0,41,1,114,42,1, - 0,0,41,1,114,76,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,29,1,0,0,113,5,0, - 0,115,2,0,0,0,0,2,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,12, - 0,0,0,13,0,0,0,67,0,0,0,115,216,1,0,0, - 100,1,0,125,2,0,124,1,0,106,0,0,100,2,0,131, - 1,0,100,3,0,25,125,3,0,121,34,0,116,1,0,124, - 0,0,106,2,0,112,49,0,116,3,0,106,4,0,131,0, - 0,131,1,0,106,5,0,125,4,0,87,110,24,0,4,116, - 6,0,107,10,0,114,85,0,1,1,1,100,10,0,125,4, - 0,89,110,1,0,88,124,4,0,124,0,0,106,7,0,107, - 3,0,114,123,0,124,0,0,106,8,0,131,0,0,1,124, - 4,0,124,0,0,95,7,0,110,0,0,116,9,0,131,0, - 0,114,156,0,124,0,0,106,10,0,125,5,0,124,3,0, - 106,11,0,131,0,0,125,6,0,110,15,0,124,0,0,106, - 12,0,125,5,0,124,3,0,125,6,0,124,6,0,124,5, - 0,107,6,0,114,45,1,116,13,0,124,0,0,106,2,0, - 124,3,0,131,2,0,125,7,0,120,97,0,124,0,0,106, - 14,0,68,93,71,0,92,2,0,125,8,0,125,9,0,100, - 5,0,124,8,0,23,125,10,0,116,13,0,124,7,0,124, - 10,0,131,2,0,125,11,0,116,15,0,124,11,0,131,1, - 0,114,211,0,124,9,0,124,1,0,124,11,0,131,2,0, - 124,7,0,103,1,0,102,2,0,83,113,211,0,87,116,16, - 0,124,7,0,131,1,0,125,2,0,110,0,0,120,120,0, - 124,0,0,106,14,0,68,93,109,0,92,2,0,125,8,0, - 125,9,0,116,13,0,124,0,0,106,2,0,124,3,0,124, - 8,0,23,131,2,0,125,11,0,116,17,0,100,6,0,106, - 18,0,124,11,0,131,1,0,100,7,0,100,3,0,131,1, - 1,1,124,6,0,124,8,0,23,124,5,0,107,6,0,114, - 55,1,116,15,0,124,11,0,131,1,0,114,164,1,124,9, - 0,124,1,0,124,11,0,131,2,0,103,0,0,102,2,0, - 83,113,55,1,113,55,1,87,124,2,0,114,206,1,116,17, - 0,100,8,0,106,18,0,124,7,0,131,1,0,131,1,0, - 1,100,9,0,124,7,0,103,1,0,102,2,0,83,100,9, - 0,103,0,0,102,2,0,83,41,11,122,125,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,70,114,102,0,0,0,114, - 101,0,0,0,114,29,0,0,0,114,77,0,0,0,122,9, - 116,114,121,105,110,103,32,123,125,114,131,0,0,0,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,78,114,124,0,0,0,41, - 19,114,32,0,0,0,114,39,0,0,0,114,35,0,0,0, - 114,3,0,0,0,114,45,0,0,0,114,4,1,0,0,114, - 40,0,0,0,114,42,1,0,0,218,11,95,102,105,108,108, - 95,99,97,99,104,101,114,6,0,0,0,114,45,1,0,0, - 114,125,0,0,0,114,44,1,0,0,114,28,0,0,0,114, - 41,1,0,0,114,44,0,0,0,114,46,0,0,0,114,138, - 0,0,0,114,47,0,0,0,41,12,114,76,0,0,0,114, - 179,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, - 194,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,10,1,0,0,114,161,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,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,185,0,0,0,119,5,0,0, - 115,64,0,0,0,0,3,6,1,19,1,3,1,34,1,13, - 1,11,1,15,1,10,1,12,2,9,1,9,1,15,2,9, - 1,6,2,12,1,18,1,22,1,10,1,15,1,12,1,26, - 4,15,2,22,1,22,1,25,1,16,1,12,1,26,1,6, - 1,19,1,13,1,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,1,0, - 0,0,0,0,0,0,9,0,0,0,13,0,0,0,67,0, - 0,0,115,14,1,0,0,124,0,0,106,0,0,125,1,0, - 121,31,0,116,1,0,106,2,0,124,1,0,112,33,0,116, - 1,0,106,3,0,131,0,0,131,1,0,125,2,0,87,110, - 33,0,4,116,4,0,116,5,0,116,6,0,102,3,0,107, - 10,0,114,75,0,1,1,1,103,0,0,125,2,0,89,110, - 1,0,88,116,7,0,106,8,0,106,9,0,100,1,0,131, - 1,0,115,112,0,116,10,0,124,2,0,131,1,0,124,0, - 0,95,11,0,110,111,0,116,10,0,131,0,0,125,3,0, - 120,90,0,124,2,0,68,93,82,0,125,4,0,124,4,0, - 106,12,0,100,2,0,131,1,0,92,3,0,125,5,0,125, - 6,0,125,7,0,124,6,0,114,191,0,100,3,0,106,13, - 0,124,5,0,124,7,0,106,14,0,131,0,0,131,2,0, - 125,8,0,110,6,0,124,5,0,125,8,0,124,3,0,106, - 15,0,124,8,0,131,1,0,1,113,128,0,87,124,3,0, - 124,0,0,95,11,0,116,7,0,106,8,0,106,9,0,116, - 16,0,131,1,0,114,10,1,100,4,0,100,5,0,132,0, - 0,124,2,0,68,131,1,0,124,0,0,95,17,0,110,0, - 0,100,6,0,83,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,0,0, - 0,0,114,102,0,0,0,122,5,123,125,46,123,125,99,1, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,83, - 0,0,0,115,28,0,0,0,104,0,0,124,0,0,93,18, - 0,125,1,0,124,1,0,106,0,0,131,0,0,146,2,0, - 113,6,0,83,114,4,0,0,0,41,1,114,125,0,0,0, - 41,2,114,22,0,0,0,90,2,102,110,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,250,9,60,115,101,116, - 99,111,109,112,62,191,5,0,0,115,2,0,0,0,9,0, - 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,35, - 0,0,0,114,3,0,0,0,90,7,108,105,115,116,100,105, - 114,114,45,0,0,0,218,17,70,105,108,101,78,111,116,70, - 111,117,110,100,69,114,114,111,114,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,7, - 0,0,0,114,8,0,0,0,114,9,0,0,0,114,43,1, - 0,0,114,44,1,0,0,114,107,0,0,0,114,47,0,0, - 0,114,125,0,0,0,218,3,97,100,100,114,10,0,0,0, - 114,45,1,0,0,41,9,114,76,0,0,0,114,35,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,25,1,0,0,114,72,0,0,0,114,19,1,0, - 0,114,10,1,0,0,90,8,110,101,119,95,110,97,109,101, + 114,71,1,0,0,114,172,0,0,0,114,164,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,9, + 95,103,101,116,95,115,112,101,99,32,7,0,0,115,40,0, + 0,0,0,5,6,1,13,1,21,1,6,1,15,1,12,1, + 15,1,21,2,18,1,12,1,6,1,15,1,4,1,9,1, + 12,1,15,5,20,2,15,1,9,1,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,6,0,0,0,4,0,0, + 0,67,0,0,0,115,143,0,0,0,124,2,0,100,1,0, + 107,8,0,114,24,0,116,0,0,106,1,0,125,2,0,110, + 0,0,124,0,0,106,2,0,124,1,0,124,2,0,124,3, + 0,131,3,0,125,4,0,124,4,0,100,1,0,107,8,0, + 114,61,0,100,1,0,83,124,4,0,106,3,0,100,1,0, + 107,8,0,114,135,0,124,4,0,106,4,0,125,5,0,124, + 5,0,114,128,0,100,2,0,124,4,0,95,5,0,116,6, + 0,124,1,0,124,5,0,124,0,0,106,2,0,131,3,0, + 124,4,0,95,4,0,124,4,0,83,100,1,0,83,110,4, + 0,124,4,0,83,100,1,0,83,41,3,122,98,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,78, + 90,9,110,97,109,101,115,112,97,99,101,41,7,114,7,0, + 0,0,114,35,0,0,0,114,79,1,0,0,114,163,0,0, + 0,114,217,0,0,0,114,214,0,0,0,114,54,1,0,0, + 41,6,114,242,0,0,0,114,152,0,0,0,114,35,0,0, + 0,114,7,1,0,0,114,172,0,0,0,114,78,1,0,0, 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 47,1,0,0,162,5,0,0,115,34,0,0,0,0,2,9, - 1,3,1,31,1,22,3,11,3,18,1,18,7,9,1,13, - 1,24,1,6,1,27,2,6,1,17,1,9,1,18,1,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, - 3,0,0,0,3,0,0,0,7,0,0,0,115,25,0,0, - 0,135,0,0,135,1,0,102,2,0,100,1,0,100,2,0, - 134,0,0,125,2,0,124,2,0,83,41,3,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,1,0, - 0,0,4,0,0,0,19,0,0,0,115,46,0,0,0,116, - 0,0,124,0,0,131,1,0,115,33,0,116,1,0,100,1, - 0,100,2,0,124,0,0,131,1,1,130,1,0,110,0,0, - 136,0,0,124,0,0,136,1,0,140,1,0,83,41,3,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,35, - 0,0,0,41,2,114,46,0,0,0,114,158,0,0,0,41, - 1,114,35,0,0,0,41,2,114,216,0,0,0,114,46,1, - 0,0,114,4,0,0,0,114,5,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,203,5,0,0,115,6,0,0,0,0, - 2,12,1,21,1,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,114,4,0, - 0,0,41,3,114,216,0,0,0,114,46,1,0,0,114,53, - 1,0,0,114,4,0,0,0,41,2,114,216,0,0,0,114, - 46,1,0,0,114,5,0,0,0,218,9,112,97,116,104,95, - 104,111,111,107,193,5,0,0,115,4,0,0,0,0,10,21, - 6,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, - 1,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0, - 0,100,1,0,106,0,0,124,0,0,106,1,0,131,1,0, - 83,41,2,78,122,16,70,105,108,101,70,105,110,100,101,114, - 40,123,33,114,125,41,41,2,114,47,0,0,0,114,35,0, - 0,0,41,1,114,76,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,88,0,0,0,211,5,0, - 0,115,2,0,0,0,0,1,122,19,70,105,108,101,70,105, - 110,100,101,114,46,95,95,114,101,112,114,95,95,78,41,13, - 114,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114, - 59,0,0,0,114,77,0,0,0,114,29,1,0,0,114,191, - 0,0,0,114,218,0,0,0,114,185,0,0,0,114,47,1, - 0,0,114,222,0,0,0,114,54,1,0,0,114,88,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,40,1,0,0,90,5,0,0,115,16, - 0,0,0,12,7,6,2,12,14,12,4,6,2,12,43,12, - 31,18,18,114,40,1,0,0,99,0,0,0,0,0,0,0, - 0,0,0,0,0,2,0,0,0,64,0,0,0,115,46,0, - 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1, - 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0, - 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,83, - 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,1,0,0,0,1,0,0,0,67,0,0, - 0,115,14,0,0,0,116,0,0,106,1,0,131,0,0,1, - 100,1,0,83,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,95,0,0,0,218,12,97,99,113,117,105,114, - 101,95,108,111,99,107,41,1,114,76,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,143,0,0, - 0,221,5,0,0,115,2,0,0,0,0,2,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,4,0,0,0,1,0,0,0,67,0,0,0,115, - 14,0,0,0,116,0,0,106,1,0,131,0,0,1,100,1, - 0,83,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,95,0,0,0,114,96,0,0,0,41, - 4,114,76,0,0,0,90,8,101,120,99,95,116,121,112,101, - 90,9,101,120,99,95,118,97,108,117,101,90,13,101,120,99, - 95,116,114,97,99,101,98,97,99,107,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,146,0,0,0,225,5, - 0,0,115,2,0,0,0,0,2,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,57,0,0,0,114,56, - 0,0,0,114,58,0,0,0,114,59,0,0,0,114,143,0, - 0,0,114,146,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,55,1,0,0, - 217,5,0,0,115,6,0,0,0,12,2,6,2,12,4,114, - 55,1,0,0,99,3,0,0,0,0,0,0,0,5,0,0, - 0,4,0,0,0,67,0,0,0,115,91,0,0,0,124,1, - 0,106,0,0,100,1,0,124,2,0,100,2,0,24,131,2, - 0,125,3,0,116,1,0,124,3,0,131,1,0,124,2,0, - 107,0,0,114,55,0,116,2,0,100,3,0,131,1,0,130, - 1,0,110,0,0,124,3,0,100,4,0,25,125,4,0,124, - 0,0,114,87,0,100,5,0,106,3,0,124,4,0,124,0, - 0,131,2,0,83,124,4,0,83,41,6,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, - 102,0,0,0,114,29,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,68,0, - 0,0,122,5,123,125,46,123,125,41,4,114,34,0,0,0, - 114,31,0,0,0,114,119,0,0,0,114,47,0,0,0,41, - 5,114,72,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,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,13,95,114,101,115,111,108,118,101,95,110,97,109,101, - 230,5,0,0,115,10,0,0,0,0,2,22,1,18,1,15, - 1,10,1,114,59,1,0,0,99,2,0,0,0,0,0,0, - 0,5,0,0,0,19,0,0,0,67,0,0,0,115,188,0, - 0,0,116,0,0,106,1,0,115,28,0,116,2,0,106,3, - 0,100,1,0,116,4,0,131,2,0,1,110,0,0,124,0, - 0,116,0,0,106,5,0,107,6,0,125,2,0,120,138,0, - 116,0,0,106,1,0,68,93,123,0,125,3,0,116,6,0, - 131,0,0,143,23,0,1,124,3,0,106,7,0,124,0,0, - 124,1,0,131,2,0,125,4,0,87,100,2,0,81,88,124, - 4,0,100,2,0,107,9,0,114,53,0,124,2,0,115,126, - 0,124,0,0,116,0,0,106,5,0,107,7,0,114,130,0, - 124,4,0,83,121,18,0,116,0,0,106,5,0,124,0,0, - 25,106,8,0,83,87,113,176,0,4,116,9,0,107,10,0, - 114,172,0,1,1,1,124,4,0,83,89,113,176,0,88,113, - 53,0,113,53,0,87,100,2,0,83,100,2,0,83,41,3, - 122,23,70,105,110,100,32,97,32,109,111,100,117,108,101,39, - 115,32,108,111,97,100,101,114,46,122,22,115,121,115,46,109, - 101,116,97,95,112,97,116,104,32,105,115,32,101,109,112,116, - 121,78,41,10,114,7,0,0,0,218,9,109,101,116,97,95, - 112,97,116,104,114,186,0,0,0,114,187,0,0,0,114,188, - 0,0,0,114,141,0,0,0,114,55,1,0,0,114,218,0, - 0,0,114,172,0,0,0,114,155,0,0,0,41,5,114,72, - 0,0,0,114,35,0,0,0,90,9,105,115,95,114,101,108, - 111,97,100,114,32,1,0,0,114,161,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,12,95,102, - 105,110,100,95,109,111,100,117,108,101,239,5,0,0,115,28, - 0,0,0,0,2,9,1,19,1,15,1,16,1,10,1,24, - 1,12,2,21,1,4,2,3,1,18,1,13,1,16,2,114, - 61,1,0,0,99,3,0,0,0,0,0,0,0,4,0,0, - 0,4,0,0,0,67,0,0,0,115,194,0,0,0,116,0, - 0,124,0,0,116,1,0,131,2,0,115,45,0,116,2,0, - 100,1,0,106,3,0,116,4,0,124,0,0,131,1,0,131, - 1,0,131,1,0,130,1,0,110,0,0,124,2,0,100,2, - 0,107,0,0,114,72,0,116,5,0,100,3,0,131,1,0, - 130,1,0,110,0,0,124,1,0,114,156,0,116,0,0,124, - 1,0,116,1,0,131,2,0,115,108,0,116,2,0,100,4, - 0,131,1,0,130,1,0,113,156,0,124,1,0,116,6,0, - 106,7,0,107,7,0,114,156,0,100,5,0,125,3,0,116, - 8,0,124,3,0,106,3,0,124,1,0,131,1,0,131,1, - 0,130,1,0,113,156,0,110,0,0,124,0,0,12,114,190, - 0,124,2,0,100,2,0,107,2,0,114,190,0,116,5,0, - 100,6,0,131,1,0,130,1,0,110,0,0,100,7,0,83, - 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,68,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,61,80,97,114, - 101,110,116,32,109,111,100,117,108,101,32,123,33,114,125,32, - 110,111,116,32,108,111,97,100,101,100,44,32,99,97,110,110, - 111,116,32,112,101,114,102,111,114,109,32,114,101,108,97,116, - 105,118,101,32,105,109,112,111,114,116,122,17,69,109,112,116, - 121,32,109,111,100,117,108,101,32,110,97,109,101,78,41,9, - 114,203,0,0,0,114,36,1,0,0,218,9,84,121,112,101, - 69,114,114,111,114,114,47,0,0,0,114,153,0,0,0,114, - 119,0,0,0,114,7,0,0,0,114,141,0,0,0,218,11, - 83,121,115,116,101,109,69,114,114,111,114,41,4,114,72,0, - 0,0,114,57,1,0,0,114,58,1,0,0,114,190,0,0, + 8,1,0,0,64,7,0,0,115,26,0,0,0,0,4,12, + 1,12,1,21,1,12,1,4,1,15,1,9,1,6,3,9, + 1,24,1,4,2,7,2,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,4,0,0,0,3,0,0,0,67,0, + 0,0,115,41,0,0,0,124,0,0,106,0,0,124,1,0, + 124,2,0,131,2,0,125,3,0,124,3,0,100,1,0,107, + 8,0,114,34,0,100,1,0,83,124,3,0,106,1,0,83, + 41,2,122,98,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,78,41,2,114,8,1,0,0,114,163, + 0,0,0,41,4,114,242,0,0,0,114,152,0,0,0,114, + 35,0,0,0,114,172,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,9,1,0,0,86,7,0, + 0,115,8,0,0,0,0,5,18,1,12,1,4,1,122,22, + 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, + 109,111,100,117,108,101,41,12,114,57,0,0,0,114,56,0, + 0,0,114,58,0,0,0,114,59,0,0,0,114,4,1,0, + 0,114,68,1,0,0,114,73,1,0,0,114,74,1,0,0, + 114,75,1,0,0,114,79,1,0,0,114,8,1,0,0,114, + 9,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,67,1,0,0,229,6,0, + 0,115,22,0,0,0,12,2,6,2,18,8,18,17,18,17, + 18,13,3,1,18,31,3,1,21,21,3,1,114,67,1,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,64,0,0,0,115,133,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, + 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, + 0,0,90,5,0,101,6,0,90,7,0,100,6,0,100,7, + 0,132,0,0,90,8,0,100,8,0,100,9,0,132,0,0, + 90,9,0,100,10,0,100,11,0,100,12,0,132,1,0,90, + 10,0,100,13,0,100,14,0,132,0,0,90,11,0,101,12, + 0,100,15,0,100,16,0,132,0,0,131,1,0,90,13,0, + 100,17,0,100,18,0,132,0,0,90,14,0,100,10,0,83, + 41,19,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,5,0,0,0,5,0,0,0,7,0,0, + 0,115,122,0,0,0,103,0,0,125,3,0,120,52,0,124, + 2,0,68,93,44,0,92,2,0,137,0,0,125,4,0,124, + 3,0,106,0,0,135,0,0,102,1,0,100,1,0,100,2, + 0,134,0,0,124,4,0,68,131,1,0,131,1,0,1,113, + 13,0,87,124,3,0,124,0,0,95,1,0,124,1,0,112, + 79,0,100,3,0,124,0,0,95,2,0,100,6,0,124,0, + 0,95,3,0,116,4,0,131,0,0,124,0,0,95,5,0, + 116,4,0,131,0,0,124,0,0,95,6,0,100,5,0,83, + 41,7,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,2,0,0,0,3,0,0,0,51, + 0,0,0,115,27,0,0,0,124,0,0,93,17,0,125,1, + 0,124,1,0,136,0,0,102,2,0,86,1,113,3,0,100, + 0,0,83,41,1,78,114,4,0,0,0,41,2,114,22,0, + 0,0,114,51,1,0,0,41,1,114,163,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,211,0,0,0,112,7,0, + 0,115,2,0,0,0,6,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,110,0,0,0,114,29,0,0,0,78,114,132,0,0,0, + 41,7,114,192,0,0,0,218,8,95,108,111,97,100,101,114, + 115,114,35,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,78,0,0, + 0,114,35,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, + 121,0,0,0,114,4,0,0,0,41,1,114,163,0,0,0, + 114,5,0,0,0,114,79,0,0,0,106,7,0,0,115,16, + 0,0,0,0,4,6,1,19,1,36,1,9,2,15,1,9, + 1,12,1,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,1,0,0,0,2,0,0,0,67,0,0,0,115,13,0, + 0,0,100,3,0,124,0,0,95,0,0,100,2,0,83,41, + 4,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,29,0,0,0,78,114,132,0,0,0,41,1,114, + 82,1,0,0,41,1,114,78,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,68,1,0,0,120, + 7,0,0,115,2,0,0,0,0,2,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,3,0,0,0,3,0,0,0,67,0,0,0,115,59,0, + 0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,2, + 0,124,2,0,100,1,0,107,8,0,114,37,0,100,1,0, + 103,0,0,102,2,0,83,124,2,0,106,1,0,124,2,0, + 106,2,0,112,55,0,103,0,0,102,2,0,83,41,2,122, + 125,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,78,41, + 3,114,8,1,0,0,114,163,0,0,0,114,217,0,0,0, + 41,3,114,78,0,0,0,114,152,0,0,0,114,172,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,13,95,115,97,110,105,116,121,95,99,104,101,99,107,4, - 6,0,0,115,24,0,0,0,0,2,15,1,30,1,12,1, - 15,1,6,1,15,1,15,1,15,1,6,2,27,1,19,1, - 114,64,1,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,8,0,0,0,27,0,0,0,67,0, - 0,0,115,6,2,0,0,100,0,0,125,2,0,124,0,0, - 106,0,0,100,1,0,131,1,0,100,2,0,25,125,3,0, - 124,3,0,114,178,0,124,3,0,116,1,0,106,2,0,107, - 7,0,114,62,0,116,3,0,124,1,0,124,3,0,131,2, - 0,1,110,0,0,124,0,0,116,1,0,106,2,0,107,6, - 0,114,88,0,116,1,0,106,2,0,124,0,0,25,83,116, - 1,0,106,2,0,124,3,0,25,125,4,0,121,13,0,124, - 4,0,106,4,0,125,2,0,87,113,178,0,4,116,5,0, - 107,10,0,114,174,0,1,1,1,116,6,0,100,3,0,23, - 106,7,0,124,0,0,124,3,0,131,2,0,125,5,0,116, - 8,0,124,5,0,100,4,0,124,0,0,131,1,1,130,1, - 0,89,113,178,0,88,110,0,0,116,9,0,124,0,0,124, - 2,0,131,2,0,125,6,0,124,6,0,100,0,0,107,8, - 0,114,235,0,116,8,0,116,6,0,106,7,0,124,0,0, - 131,1,0,100,4,0,124,0,0,131,1,1,130,1,0,110, - 47,0,124,0,0,116,1,0,106,2,0,107,7,0,114,26, - 1,124,6,0,106,10,0,124,0,0,131,1,0,1,116,11, - 0,100,5,0,124,0,0,124,6,0,131,3,0,1,110,0, - 0,116,1,0,106,2,0,124,0,0,25,125,7,0,124,3, - 0,114,90,1,116,1,0,106,2,0,124,3,0,25,125,4, - 0,116,12,0,124,4,0,124,0,0,106,0,0,100,1,0, - 131,1,0,100,6,0,25,124,7,0,131,3,0,1,110,0, - 0,116,13,0,124,7,0,100,7,0,100,0,0,131,3,0, - 100,0,0,107,8,0,114,197,1,121,59,0,124,7,0,106, - 14,0,124,7,0,95,15,0,116,16,0,124,7,0,100,8, - 0,131,2,0,115,172,1,124,7,0,106,15,0,106,0,0, - 100,1,0,131,1,0,100,2,0,25,124,7,0,95,15,0, - 110,0,0,87,113,197,1,4,116,5,0,107,10,0,114,193, - 1,1,1,1,89,113,197,1,88,110,0,0,116,13,0,124, - 7,0,100,9,0,100,0,0,131,3,0,100,0,0,107,8, - 0,114,2,2,121,13,0,124,6,0,124,7,0,95,17,0, - 87,113,2,2,4,116,5,0,107,10,0,114,254,1,1,1, - 1,89,113,2,2,88,110,0,0,124,7,0,83,41,10,78, - 114,102,0,0,0,114,68,0,0,0,122,21,59,32,123,125, - 32,105,115,32,110,111,116,32,97,32,112,97,99,107,97,103, - 101,114,72,0,0,0,122,18,105,109,112,111,114,116,32,123, - 33,114,125,32,35,32,123,33,114,125,114,101,0,0,0,114, - 159,0,0,0,114,160,0,0,0,114,172,0,0,0,41,18, - 114,32,0,0,0,114,7,0,0,0,114,141,0,0,0,114, - 100,0,0,0,114,160,0,0,0,114,155,0,0,0,218,8, - 95,69,82,82,95,77,83,71,114,47,0,0,0,114,158,0, - 0,0,114,61,1,0,0,114,219,0,0,0,114,138,0,0, - 0,114,61,0,0,0,114,62,0,0,0,114,57,0,0,0, - 114,159,0,0,0,114,60,0,0,0,114,172,0,0,0,41, - 8,114,72,0,0,0,218,7,105,109,112,111,114,116,95,114, - 35,0,0,0,114,7,1,0,0,90,13,112,97,114,101,110, - 116,95,109,111,100,117,108,101,114,190,0,0,0,114,161,0, - 0,0,114,162,0,0,0,114,4,0,0,0,114,4,0,0, + 114,159,0,0,0,126,7,0,0,115,8,0,0,0,0,3, + 15,1,12,1,10,1,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,8,0,0,0,13,0,0,0,67, + 0,0,0,115,97,0,0,0,124,1,0,124,2,0,124,3, + 0,131,2,0,125,6,0,121,13,0,124,6,0,106,0,0, + 125,7,0,87,110,43,0,4,116,1,0,107,10,0,114,73, + 0,1,1,1,116,2,0,124,2,0,124,3,0,100,1,0, + 124,6,0,100,2,0,124,4,0,131,2,2,83,89,110,20, + 0,88,124,7,0,124,2,0,124,3,0,124,4,0,124,5, + 0,131,4,0,83,100,0,0,83,41,3,78,114,163,0,0, + 0,114,217,0,0,0,41,3,114,79,1,0,0,114,204,0, + 0,0,114,232,0,0,0,41,8,114,78,0,0,0,114,236, + 0,0,0,114,152,0,0,0,114,35,0,0,0,114,217,0, + 0,0,114,7,1,0,0,114,163,0,0,0,90,8,103,101, + 116,95,115,112,101,99,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,79,1,0,0,134,7,0,0,115,14, + 0,0,0,0,1,15,1,3,1,13,1,13,1,18,1,12, + 2,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,14,0,0,0,15,0,0,0,67,0,0,0,115,240,1, + 0,0,100,1,0,125,3,0,124,1,0,106,0,0,100,2, + 0,131,1,0,100,3,0,25,125,4,0,121,34,0,116,1, + 0,124,0,0,106,2,0,112,49,0,116,3,0,106,4,0, + 131,0,0,131,1,0,106,5,0,125,5,0,87,110,24,0, + 4,116,6,0,107,10,0,114,85,0,1,1,1,100,10,0, + 125,5,0,89,110,1,0,88,124,5,0,124,0,0,106,7, + 0,107,3,0,114,123,0,124,0,0,106,8,0,131,0,0, + 1,124,5,0,124,0,0,95,7,0,110,0,0,116,9,0, + 131,0,0,114,156,0,124,0,0,106,10,0,125,6,0,124, + 4,0,106,11,0,131,0,0,125,7,0,110,15,0,124,0, + 0,106,12,0,125,6,0,124,4,0,125,7,0,124,7,0, + 124,6,0,107,6,0,114,51,1,116,13,0,124,0,0,106, + 2,0,124,4,0,131,2,0,125,8,0,120,103,0,124,0, + 0,106,14,0,68,93,77,0,92,2,0,125,9,0,125,10, + 0,100,5,0,124,9,0,23,125,11,0,116,13,0,124,8, + 0,124,11,0,131,2,0,125,12,0,116,15,0,124,12,0, + 131,1,0,114,211,0,124,0,0,106,16,0,124,10,0,124, + 1,0,124,12,0,124,8,0,103,1,0,124,2,0,131,5, + 0,83,113,211,0,87,116,17,0,124,8,0,131,1,0,125, + 3,0,110,0,0,120,126,0,124,0,0,106,14,0,68,93, + 115,0,92,2,0,125,9,0,125,10,0,116,13,0,124,0, + 0,106,2,0,124,4,0,124,9,0,23,131,2,0,125,12, + 0,116,18,0,100,6,0,106,19,0,124,12,0,131,1,0, + 100,7,0,100,3,0,131,1,1,1,124,7,0,124,9,0, + 23,124,6,0,107,6,0,114,61,1,116,15,0,124,12,0, + 131,1,0,114,176,1,124,0,0,106,16,0,124,10,0,124, + 1,0,124,12,0,100,8,0,124,2,0,131,5,0,83,113, + 61,1,113,61,1,87,124,3,0,114,236,1,116,18,0,100, + 9,0,106,19,0,124,8,0,131,1,0,131,1,0,1,116, + 20,0,124,1,0,100,8,0,131,2,0,125,13,0,124,8, + 0,103,1,0,124,13,0,95,21,0,124,13,0,83,100,8, + 0,83,41,11,122,125,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,70,114,110,0,0,0,114,109,0,0,0,114,29, + 0,0,0,114,79,0,0,0,122,9,116,114,121,105,110,103, + 32,123,125,114,139,0,0,0,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,114,132,0,0,0,41,22,114,32,0,0,0, + 114,39,0,0,0,114,35,0,0,0,114,3,0,0,0,114, + 45,0,0,0,114,46,1,0,0,114,40,0,0,0,114,82, + 1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,101, + 114,6,0,0,0,114,85,1,0,0,114,133,0,0,0,114, + 84,1,0,0,114,28,0,0,0,114,81,1,0,0,114,44, + 0,0,0,114,79,1,0,0,114,46,0,0,0,114,146,0, + 0,0,114,47,0,0,0,114,213,0,0,0,114,217,0,0, + 0,41,14,114,78,0,0,0,114,152,0,0,0,114,7,1, + 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,178,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,51,1,0,0,114,236,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,172,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,8,1,0,0,144, + 7,0,0,115,68,0,0,0,0,3,6,1,19,1,3,1, + 34,1,13,1,11,1,15,1,10,1,12,2,9,1,9,1, + 15,2,9,1,6,2,12,1,18,1,22,1,10,1,15,1, + 12,1,32,4,15,2,22,1,22,1,25,1,16,1,12,1, + 32,1,6,1,19,1,15,1,12,1,4,1,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,9,0,0,0,13, + 0,0,0,67,0,0,0,115,14,1,0,0,124,0,0,106, + 0,0,125,1,0,121,31,0,116,1,0,106,2,0,124,1, + 0,112,33,0,116,1,0,106,3,0,131,0,0,131,1,0, + 125,2,0,87,110,33,0,4,116,4,0,116,5,0,116,6, + 0,102,3,0,107,10,0,114,75,0,1,1,1,103,0,0, + 125,2,0,89,110,1,0,88,116,7,0,106,8,0,106,9, + 0,100,1,0,131,1,0,115,112,0,116,10,0,124,2,0, + 131,1,0,124,0,0,95,11,0,110,111,0,116,10,0,131, + 0,0,125,3,0,120,90,0,124,2,0,68,93,82,0,125, + 4,0,124,4,0,106,12,0,100,2,0,131,1,0,92,3, + 0,125,5,0,125,6,0,125,7,0,124,6,0,114,191,0, + 100,3,0,106,13,0,124,5,0,124,7,0,106,14,0,131, + 0,0,131,2,0,125,8,0,110,6,0,124,5,0,125,8, + 0,124,3,0,106,15,0,124,8,0,131,1,0,1,113,128, + 0,87,124,3,0,124,0,0,95,11,0,116,7,0,106,8, + 0,106,9,0,116,16,0,131,1,0,114,10,1,100,4,0, + 100,5,0,132,0,0,124,2,0,68,131,1,0,124,0,0, + 95,17,0,110,0,0,100,6,0,83,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,0,0,0,0,114,110,0,0,0,122,5,123,125, + 46,123,125,99,1,0,0,0,0,0,0,0,2,0,0,0, + 3,0,0,0,83,0,0,0,115,28,0,0,0,104,0,0, + 124,0,0,93,18,0,125,1,0,124,1,0,106,0,0,131, + 0,0,146,2,0,113,6,0,83,114,4,0,0,0,41,1, + 114,133,0,0,0,41,2,114,22,0,0,0,90,2,102,110, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,250, + 9,60,115,101,116,99,111,109,112,62,218,7,0,0,115,2, + 0,0,0,9,0,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,35,0,0,0,114,3,0,0,0,90,7,108, + 105,115,116,100,105,114,114,45,0,0,0,218,17,70,105,108, + 101,78,111,116,70,111,117,110,100,69,114,114,111,114,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,7,0,0,0,114,8,0,0,0,114,9,0, + 0,0,114,83,1,0,0,114,84,1,0,0,114,115,0,0, + 0,114,47,0,0,0,114,133,0,0,0,218,3,97,100,100, + 114,10,0,0,0,114,85,1,0,0,41,9,114,78,0,0, + 0,114,35,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,65,1,0,0,114,67,0,0, + 0,114,59,1,0,0,114,51,1,0,0,90,8,110,101,119, + 95,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,87,1,0,0,189,7,0,0,115,34,0, + 0,0,0,2,9,1,3,1,31,1,22,3,11,3,18,1, + 18,7,9,1,13,1,24,1,6,1,27,2,6,1,17,1, + 9,1,18,1,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,3,0,0,0,3,0,0,0,7,0,0, + 0,115,25,0,0,0,135,0,0,135,1,0,102,2,0,100, + 1,0,100,2,0,134,0,0,125,2,0,124,2,0,83,41, + 3,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,1,0,0,0,4,0,0,0,19,0,0,0,115, + 46,0,0,0,116,0,0,124,0,0,131,1,0,115,33,0, + 116,1,0,100,1,0,100,2,0,124,0,0,131,1,1,130, + 1,0,110,0,0,136,0,0,124,0,0,136,1,0,140,1, + 0,83,41,3,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,35,0,0,0,41,2,114,46,0,0,0,114, + 147,0,0,0,41,1,114,35,0,0,0,41,2,114,242,0, + 0,0,114,86,1,0,0,114,4,0,0,0,114,5,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,230,7,0,0,115, + 6,0,0,0,0,2,12,1,21,1,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,114,4,0,0,0,41,3,114,242,0,0,0,114,86, + 1,0,0,114,93,1,0,0,114,4,0,0,0,41,2,114, + 242,0,0,0,114,86,1,0,0,114,5,0,0,0,218,9, + 112,97,116,104,95,104,111,111,107,220,7,0,0,115,4,0, + 0,0,0,10,21,6,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,1,0,0,0,2,0,0,0,67,0,0, + 0,115,16,0,0,0,100,1,0,106,0,0,124,0,0,106, + 1,0,131,1,0,83,41,2,78,122,16,70,105,108,101,70, + 105,110,100,101,114,40,123,33,114,125,41,41,2,114,47,0, + 0,0,114,35,0,0,0,41,1,114,78,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,90,0, + 0,0,238,7,0,0,115,2,0,0,0,0,1,122,19,70, + 105,108,101,70,105,110,100,101,114,46,95,95,114,101,112,114, + 95,95,41,15,114,57,0,0,0,114,56,0,0,0,114,58, + 0,0,0,114,59,0,0,0,114,79,0,0,0,114,68,1, + 0,0,114,166,0,0,0,114,9,1,0,0,114,159,0,0, + 0,114,79,1,0,0,114,8,1,0,0,114,87,1,0,0, + 114,4,1,0,0,114,94,1,0,0,114,90,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,80,1,0,0,97,7,0,0,115,20,0,0, + 0,12,7,6,2,12,14,12,4,6,2,12,8,12,10,15, + 45,12,31,18,18,114,80,1,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115, + 46,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90, + 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6, + 0,83,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,1,0,0,0,1,0,0,0,67, + 0,0,0,115,14,0,0,0,116,0,0,106,1,0,131,0, + 0,1,100,1,0,83,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,96,0,0,0,114,255,0,0,0,41, + 1,114,78,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,98,0,0,0,248,7,0,0,115,2, + 0,0,0,0,2,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,4,0,0,0, + 1,0,0,0,67,0,0,0,115,14,0,0,0,116,0,0, + 106,1,0,131,0,0,1,100,1,0,83,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,96, + 0,0,0,114,97,0,0,0,41,4,114,78,0,0,0,90, + 8,101,120,99,95,116,121,112,101,90,9,101,120,99,95,118, + 97,108,117,101,90,13,101,120,99,95,116,114,97,99,101,98, + 97,99,107,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,101,0,0,0,252,7,0,0,115,2,0,0,0, + 0,2,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,57,0,0,0,114,56,0,0,0,114,58,0,0, + 0,114,59,0,0,0,114,98,0,0,0,114,101,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,95,1,0,0,244,7,0,0,115,6,0, + 0,0,12,2,6,2,12,4,114,95,1,0,0,99,3,0, + 0,0,0,0,0,0,5,0,0,0,4,0,0,0,67,0, + 0,0,115,91,0,0,0,124,1,0,106,0,0,100,1,0, + 124,2,0,100,2,0,24,131,2,0,125,3,0,116,1,0, + 124,3,0,131,1,0,124,2,0,107,0,0,114,55,0,116, + 2,0,100,3,0,131,1,0,130,1,0,110,0,0,124,3, + 0,100,4,0,25,125,4,0,124,0,0,114,87,0,100,5, + 0,106,3,0,124,4,0,124,0,0,131,2,0,83,124,4, + 0,83,41,6,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,110,0,0,0,114,29,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,71,0,0,0,122,5,123,125,46, + 123,125,41,4,114,34,0,0,0,114,31,0,0,0,114,127, + 0,0,0,114,47,0,0,0,41,5,114,67,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,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,13,95,114,101,115, + 111,108,118,101,95,110,97,109,101,1,8,0,0,115,10,0, + 0,0,0,2,22,1,18,1,15,1,10,1,114,98,1,0, + 0,99,3,0,0,0,0,0,0,0,10,0,0,0,27,0, + 0,0,67,0,0,0,115,49,1,0,0,116,0,0,106,1, + 0,115,28,0,116,2,0,106,3,0,100,1,0,116,4,0, + 131,2,0,1,110,0,0,124,0,0,116,0,0,106,5,0, + 107,6,0,125,3,0,120,255,0,116,0,0,106,1,0,68, + 93,240,0,125,4,0,116,6,0,131,0,0,143,108,0,1, + 121,13,0,124,4,0,106,7,0,125,5,0,87,110,69,0, + 4,116,8,0,107,10,0,114,153,0,1,1,1,124,4,0, + 106,9,0,124,0,0,124,1,0,131,2,0,125,6,0,124, + 6,0,100,2,0,107,8,0,114,134,0,119,53,0,110,0, + 0,116,10,0,124,0,0,124,6,0,131,2,0,125,7,0, + 89,110,19,0,88,124,5,0,124,0,0,124,1,0,124,2, + 0,131,3,0,125,7,0,87,100,2,0,81,88,124,7,0, + 100,2,0,107,9,0,114,53,0,124,3,0,12,114,30,1, + 124,0,0,116,0,0,106,5,0,107,6,0,114,30,1,116, + 0,0,106,5,0,124,0,0,25,125,8,0,121,13,0,124, + 8,0,106,11,0,125,9,0,87,110,22,0,4,116,8,0, + 107,10,0,114,6,1,1,1,1,124,7,0,83,89,113,34, + 1,88,124,9,0,100,2,0,107,8,0,114,23,1,124,7, + 0,83,124,9,0,83,113,37,1,124,7,0,83,113,53,0, + 113,53,0,87,100,2,0,83,100,2,0,83,41,3,122,23, + 70,105,110,100,32,97,32,109,111,100,117,108,101,39,115,32, + 108,111,97,100,101,114,46,122,22,115,121,115,46,109,101,116, + 97,95,112,97,116,104,32,105,115,32,101,109,112,116,121,78, + 41,12,114,7,0,0,0,218,9,109,101,116,97,95,112,97, + 116,104,114,160,0,0,0,114,161,0,0,0,114,162,0,0, + 0,114,169,0,0,0,114,95,1,0,0,114,8,1,0,0, + 114,204,0,0,0,114,9,1,0,0,114,167,0,0,0,114, + 203,0,0,0,41,10,114,67,0,0,0,114,35,0,0,0, + 114,7,1,0,0,90,9,105,115,95,114,101,108,111,97,100, + 114,71,1,0,0,114,8,1,0,0,114,163,0,0,0,114, + 172,0,0,0,114,174,0,0,0,114,203,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,241,0, + 0,0,10,8,0,0,115,50,0,0,0,0,2,9,1,19, + 4,15,1,16,1,10,1,3,1,13,1,13,1,18,1,12, + 1,6,1,20,2,24,1,12,2,22,1,13,1,3,1,13, + 1,13,4,9,2,12,1,4,2,7,2,11,2,114,241,0, + 0,0,99,3,0,0,0,0,0,0,0,4,0,0,0,4, + 0,0,0,67,0,0,0,115,194,0,0,0,116,0,0,124, + 0,0,116,1,0,131,2,0,115,45,0,116,2,0,100,1, + 0,106,3,0,116,4,0,124,0,0,131,1,0,131,1,0, + 131,1,0,130,1,0,110,0,0,124,2,0,100,2,0,107, + 0,0,114,72,0,116,5,0,100,3,0,131,1,0,130,1, + 0,110,0,0,124,1,0,114,156,0,116,0,0,124,1,0, + 116,1,0,131,2,0,115,108,0,116,2,0,100,4,0,131, + 1,0,130,1,0,113,156,0,124,1,0,116,6,0,106,7, + 0,107,7,0,114,156,0,100,5,0,125,3,0,116,8,0, + 124,3,0,106,3,0,124,1,0,131,1,0,131,1,0,130, + 1,0,113,156,0,110,0,0,124,0,0,12,114,190,0,124, + 2,0,100,2,0,107,2,0,114,190,0,116,5,0,100,6, + 0,131,1,0,130,1,0,110,0,0,100,7,0,83,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, + 71,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,61,80,97,114,101,110, + 116,32,109,111,100,117,108,101,32,123,33,114,125,32,110,111, + 116,32,108,111,97,100,101,100,44,32,99,97,110,110,111,116, + 32,112,101,114,102,111,114,109,32,114,101,108,97,116,105,118, + 101,32,105,109,112,111,114,116,122,17,69,109,112,116,121,32, + 109,111,100,117,108,101,32,110,97,109,101,78,41,9,114,187, + 0,0,0,114,76,1,0,0,218,9,84,121,112,101,69,114, + 114,111,114,114,47,0,0,0,114,66,0,0,0,114,127,0, + 0,0,114,7,0,0,0,114,169,0,0,0,218,11,83,121, + 115,116,101,109,69,114,114,111,114,41,4,114,67,0,0,0, + 114,96,1,0,0,114,97,1,0,0,114,165,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,13, + 95,115,97,110,105,116,121,95,99,104,101,99,107,51,8,0, + 0,115,24,0,0,0,0,2,15,1,30,1,12,1,15,1, + 6,1,15,1,15,1,15,1,6,2,27,1,19,1,114,102, + 1,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,8,0,0,0,12,0,0,0,67,0,0,0, + 115,52,1,0,0,100,0,0,125,2,0,124,0,0,106,0, + 0,100,1,0,131,1,0,100,2,0,25,125,3,0,124,3, + 0,114,178,0,124,3,0,116,1,0,106,2,0,107,7,0, + 114,62,0,116,3,0,124,1,0,124,3,0,131,2,0,1, + 110,0,0,124,0,0,116,1,0,106,2,0,107,6,0,114, + 88,0,116,1,0,106,2,0,124,0,0,25,83,116,1,0, + 106,2,0,124,3,0,25,125,4,0,121,13,0,124,4,0, + 106,4,0,125,2,0,87,113,178,0,4,116,5,0,107,10, + 0,114,174,0,1,1,1,116,6,0,100,3,0,23,106,7, + 0,124,0,0,124,3,0,131,2,0,125,5,0,116,8,0, + 124,5,0,100,4,0,124,0,0,131,1,1,130,1,0,89, + 113,178,0,88,110,0,0,116,9,0,124,0,0,124,2,0, + 131,2,0,125,6,0,124,6,0,100,0,0,107,8,0,114, + 235,0,116,8,0,116,6,0,106,7,0,124,0,0,131,1, + 0,100,4,0,124,0,0,131,1,1,130,1,0,110,18,0, + 116,10,0,124,6,0,131,1,0,106,11,0,131,0,0,125, + 7,0,124,3,0,114,48,1,116,1,0,106,2,0,124,3, + 0,25,125,4,0,116,12,0,124,4,0,124,0,0,106,0, + 0,100,1,0,131,1,0,100,5,0,25,124,7,0,131,3, + 0,1,110,0,0,124,7,0,83,41,6,78,114,110,0,0, + 0,114,71,0,0,0,122,21,59,32,123,125,32,105,115,32, + 110,111,116,32,97,32,112,97,99,107,97,103,101,114,67,0, + 0,0,114,109,0,0,0,41,13,114,32,0,0,0,114,7, + 0,0,0,114,169,0,0,0,114,108,0,0,0,114,239,0, + 0,0,114,204,0,0,0,218,8,95,69,82,82,95,77,83, + 71,114,47,0,0,0,114,147,0,0,0,114,241,0,0,0, + 114,168,0,0,0,114,3,1,0,0,114,61,0,0,0,41, + 8,114,67,0,0,0,218,7,105,109,112,111,114,116,95,114, + 35,0,0,0,114,228,0,0,0,90,13,112,97,114,101,110, + 116,95,109,111,100,117,108,101,114,165,0,0,0,114,172,0, + 0,0,114,174,0,0,0,114,4,0,0,0,114,4,0,0, 0,114,5,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,24, - 6,0,0,115,72,0,0,0,0,1,6,1,19,1,6,1, - 15,1,16,2,15,1,11,2,13,1,3,1,13,1,13,1, - 22,1,26,1,15,1,12,1,30,1,15,2,13,1,19,2, - 13,1,6,2,13,1,32,2,24,1,3,1,12,1,15,1, - 32,1,13,1,8,2,24,1,3,1,13,1,13,1,8,1, - 114,67,1,0,0,99,2,0,0,0,0,0,0,0,3,0, - 0,0,18,0,0,0,67,0,0,0,115,75,0,0,0,122, - 16,0,116,0,0,124,0,0,131,1,0,125,2,0,87,100, - 1,0,116,1,0,106,2,0,131,0,0,1,88,124,2,0, - 106,3,0,131,0,0,1,122,17,0,116,4,0,124,0,0, - 124,1,0,131,2,0,83,87,100,1,0,124,2,0,106,5, - 0,131,0,0,1,88,100,1,0,83,41,2,122,54,70,105, - 110,100,32,97,110,100,32,108,111,97,100,32,116,104,101,32, - 109,111,100,117,108,101,44,32,97,110,100,32,114,101,108,101, - 97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,108, - 111,99,107,46,78,41,6,114,94,0,0,0,114,95,0,0, - 0,114,96,0,0,0,114,84,0,0,0,114,67,1,0,0, - 114,85,0,0,0,41,3,114,72,0,0,0,114,66,1,0, - 0,114,70,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,14,95,102,105,110,100,95,97,110,100, - 95,108,111,97,100,70,6,0,0,115,14,0,0,0,0,2, - 3,1,16,2,11,1,10,1,3,1,17,2,114,68,1,0, - 0,99,3,0,0,0,0,0,0,0,5,0,0,0,4,0, - 0,0,67,0,0,0,115,172,0,0,0,116,0,0,124,0, - 0,124,1,0,124,2,0,131,3,0,1,124,2,0,100,1, - 0,107,4,0,114,49,0,116,1,0,124,0,0,124,1,0, - 124,2,0,131,3,0,125,0,0,110,0,0,116,2,0,106, - 3,0,131,0,0,1,124,0,0,116,4,0,106,5,0,107, - 7,0,114,87,0,116,6,0,124,0,0,116,7,0,131,2, - 0,83,116,4,0,106,5,0,124,0,0,25,125,3,0,124, - 3,0,100,2,0,107,8,0,114,158,0,116,2,0,106,8, - 0,131,0,0,1,100,3,0,106,9,0,124,0,0,131,1, - 0,125,4,0,116,10,0,124,4,0,100,4,0,124,0,0, - 131,1,1,130,1,0,110,0,0,116,11,0,124,0,0,131, - 1,0,1,124,3,0,83,41,5,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,68,0,0,0,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,72,0,0,0,41,12,114,64,1,0,0,114,59,1,0, - 0,114,95,0,0,0,114,56,1,0,0,114,7,0,0,0, - 114,141,0,0,0,114,68,1,0,0,218,11,95,103,99,100, - 95,105,109,112,111,114,116,114,96,0,0,0,114,47,0,0, - 0,114,158,0,0,0,114,97,0,0,0,41,5,114,72,0, - 0,0,114,57,1,0,0,114,58,1,0,0,114,162,0,0, - 0,114,137,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,69,1,0,0,83,6,0,0,115,26, - 0,0,0,0,9,16,1,12,1,21,1,10,1,15,1,13, - 1,13,1,12,1,10,2,15,1,21,1,10,1,114,69,1, - 0,0,99,3,0,0,0,0,0,0,0,6,0,0,0,17, - 0,0,0,67,0,0,0,115,1,1,0,0,116,0,0,124, - 0,0,100,1,0,131,2,0,114,253,0,100,2,0,124,1, - 0,107,6,0,114,89,0,116,1,0,124,1,0,131,1,0, - 125,1,0,124,1,0,106,2,0,100,2,0,131,1,0,1, - 116,0,0,124,0,0,100,3,0,131,2,0,114,89,0,124, - 1,0,106,3,0,124,0,0,106,4,0,131,1,0,1,113, - 89,0,110,0,0,120,161,0,124,1,0,68,93,150,0,125, - 3,0,116,0,0,124,0,0,124,3,0,131,2,0,115,96, - 0,100,4,0,106,5,0,124,0,0,106,6,0,124,3,0, - 131,2,0,125,4,0,121,17,0,116,7,0,124,2,0,124, - 4,0,131,2,0,1,87,113,246,0,4,116,8,0,107,10, - 0,114,242,0,1,125,5,0,1,122,53,0,116,9,0,124, - 5,0,131,1,0,106,10,0,116,11,0,131,1,0,114,221, - 0,124,5,0,106,12,0,124,4,0,107,2,0,114,221,0, - 119,96,0,113,221,0,110,0,0,130,0,0,87,89,100,5, - 0,100,5,0,125,5,0,126,5,0,88,113,246,0,88,113, - 96,0,113,96,0,87,110,0,0,124,0,0,83,41,6,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,114, - 160,0,0,0,250,1,42,218,7,95,95,97,108,108,95,95, - 122,5,123,125,46,123,125,78,41,13,114,60,0,0,0,218, - 4,108,105,115,116,218,6,114,101,109,111,118,101,114,208,0, - 0,0,114,71,1,0,0,114,47,0,0,0,114,57,0,0, - 0,114,100,0,0,0,114,158,0,0,0,114,36,1,0,0, - 114,9,0,0,0,218,15,95,69,82,82,95,77,83,71,95, - 80,82,69,70,73,88,114,72,0,0,0,41,6,114,162,0, - 0,0,218,8,102,114,111,109,108,105,115,116,114,66,1,0, - 0,114,16,0,0,0,90,9,102,114,111,109,95,110,97,109, - 101,114,249,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,16,95,104,97,110,100,108,101,95,102, - 114,111,109,108,105,115,116,107,6,0,0,115,34,0,0,0, - 0,10,15,1,12,1,12,1,13,1,15,1,22,1,13,1, - 15,1,21,1,3,1,17,1,18,4,21,1,15,1,9,1, - 32,1,114,76,1,0,0,99,1,0,0,0,0,0,0,0, - 2,0,0,0,2,0,0,0,67,0,0,0,115,78,0,0, - 0,124,0,0,106,0,0,100,1,0,131,1,0,125,1,0, - 124,1,0,100,2,0,107,8,0,114,74,0,124,0,0,100, - 3,0,25,125,1,0,100,4,0,124,0,0,107,7,0,114, - 74,0,124,1,0,106,1,0,100,5,0,131,1,0,100,6, - 0,25,125,1,0,113,74,0,110,0,0,124,1,0,83,41, - 7,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,159,0,0,0,78, - 114,57,0,0,0,114,160,0,0,0,114,102,0,0,0,114, - 68,0,0,0,41,2,114,80,0,0,0,114,32,0,0,0, - 41,2,218,7,103,108,111,98,97,108,115,114,57,1,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 17,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101, - 95,95,139,6,0,0,115,12,0,0,0,0,7,15,1,12, - 1,10,1,12,1,25,1,114,78,1,0,0,99,0,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, - 0,115,55,0,0,0,116,0,0,116,1,0,106,2,0,131, - 0,0,102,2,0,125,0,0,116,3,0,116,4,0,102,2, - 0,125,1,0,116,5,0,116,6,0,102,2,0,125,2,0, - 124,0,0,124,1,0,124,2,0,103,3,0,83,41,1,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, - 41,7,114,9,1,0,0,114,95,0,0,0,218,18,101,120, - 116,101,110,115,105,111,110,95,115,117,102,102,105,120,101,115, - 114,3,1,0,0,114,120,0,0,0,114,8,1,0,0,218, - 17,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88, - 69,83,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,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,235,0,0,0,154,6,0,0,115,8,0,0,0,0, - 5,18,1,12,1,12,1,114,235,0,0,0,99,5,0,0, - 0,0,0,0,0,9,0,0,0,5,0,0,0,67,0,0, - 0,115,227,0,0,0,124,4,0,100,1,0,107,2,0,114, - 27,0,116,0,0,124,0,0,131,1,0,125,5,0,110,54, - 0,124,1,0,100,2,0,107,9,0,114,45,0,124,1,0, - 110,3,0,105,0,0,125,6,0,116,1,0,124,6,0,131, - 1,0,125,7,0,116,0,0,124,0,0,124,7,0,124,4, - 0,131,3,0,125,5,0,124,3,0,115,207,0,124,4,0, - 100,1,0,107,2,0,114,122,0,116,0,0,124,0,0,106, - 2,0,100,3,0,131,1,0,100,1,0,25,131,1,0,83, - 124,0,0,115,132,0,124,5,0,83,116,3,0,124,0,0, - 131,1,0,116,3,0,124,0,0,106,2,0,100,3,0,131, - 1,0,100,1,0,25,131,1,0,24,125,8,0,116,4,0, - 106,5,0,124,5,0,106,6,0,100,2,0,116,3,0,124, - 5,0,106,6,0,131,1,0,124,8,0,24,133,2,0,25, - 25,83,110,16,0,116,7,0,124,5,0,124,3,0,116,0, - 0,131,3,0,83,100,2,0,83,41,4,97,214,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,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,68,0,0,0,78,114,102,0,0, - 0,41,8,114,69,1,0,0,114,78,1,0,0,114,107,0, - 0,0,114,31,0,0,0,114,7,0,0,0,114,141,0,0, - 0,114,57,0,0,0,114,76,1,0,0,41,9,114,72,0, - 0,0,114,77,1,0,0,218,6,108,111,99,97,108,115,114, - 75,1,0,0,114,58,1,0,0,114,162,0,0,0,90,8, - 103,108,111,98,97,108,115,95,114,57,1,0,0,90,7,99, - 117,116,95,111,102,102,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,10,95,95,105,109,112,111,114,116,95, - 95,165,6,0,0,115,26,0,0,0,0,11,12,1,15,2, - 24,1,12,1,18,1,6,3,12,1,23,1,6,1,4,4, - 35,3,40,2,114,82,1,0,0,99,2,0,0,0,0,0, - 0,0,16,0,0,0,13,0,0,0,67,0,0,0,115,237, - 2,0,0,124,1,0,97,0,0,124,0,0,97,1,0,116, - 1,0,106,2,0,106,3,0,114,33,0,116,4,0,97,5, - 0,110,6,0,116,6,0,97,5,0,116,7,0,116,1,0, - 131,1,0,125,2,0,120,128,0,116,1,0,106,8,0,106, - 9,0,131,0,0,68,93,111,0,92,2,0,125,3,0,125, - 4,0,116,10,0,124,4,0,124,2,0,131,2,0,114,67, - 0,116,11,0,124,4,0,100,1,0,100,2,0,131,3,0, - 100,2,0,107,8,0,114,178,0,124,3,0,116,1,0,106, - 12,0,107,6,0,114,145,0,116,13,0,124,4,0,95,14, - 0,113,175,0,116,0,0,106,15,0,124,3,0,131,1,0, - 114,175,0,116,16,0,124,4,0,95,14,0,113,175,0,113, - 178,0,113,67,0,113,67,0,87,116,1,0,106,8,0,116, - 17,0,25,125,5,0,120,76,0,100,27,0,68,93,68,0, - 125,6,0,124,6,0,116,1,0,106,8,0,107,7,0,114, - 241,0,116,13,0,106,18,0,124,6,0,131,1,0,125,7, - 0,110,13,0,116,1,0,106,8,0,124,6,0,25,125,7, - 0,116,19,0,124,5,0,124,6,0,124,7,0,131,3,0, - 1,113,202,0,87,100,7,0,100,8,0,103,1,0,102,2, - 0,100,9,0,100,10,0,100,8,0,103,2,0,102,2,0, - 102,2,0,125,8,0,120,149,0,124,8,0,68,93,129,0, - 92,2,0,125,9,0,125,10,0,116,20,0,100,11,0,100, - 12,0,132,0,0,124,10,0,68,131,1,0,131,1,0,115, - 101,1,116,21,0,130,1,0,124,10,0,100,13,0,25,125, - 11,0,124,9,0,116,1,0,106,8,0,107,6,0,114,143, - 1,116,1,0,106,8,0,124,9,0,25,125,12,0,80,113, - 58,1,121,20,0,116,13,0,106,18,0,124,9,0,131,1, - 0,125,12,0,80,87,113,58,1,4,116,22,0,107,10,0, - 114,186,1,1,1,1,119,58,1,89,113,58,1,88,113,58, - 1,87,116,22,0,100,14,0,131,1,0,130,1,0,121,19, - 0,116,13,0,106,18,0,100,15,0,131,1,0,125,13,0, - 87,110,24,0,4,116,22,0,107,10,0,114,248,1,1,1, - 1,100,2,0,125,13,0,89,110,1,0,88,116,13,0,106, - 18,0,100,16,0,131,1,0,125,14,0,124,9,0,100,9, - 0,107,2,0,114,54,2,116,13,0,106,18,0,100,17,0, - 131,1,0,125,15,0,116,19,0,124,5,0,100,18,0,124, - 15,0,131,3,0,1,110,0,0,116,19,0,124,5,0,100, - 19,0,124,12,0,131,3,0,1,116,19,0,124,5,0,100, - 15,0,124,13,0,131,3,0,1,116,19,0,124,5,0,100, - 16,0,124,14,0,131,3,0,1,116,19,0,124,5,0,100, - 20,0,124,11,0,131,3,0,1,116,19,0,124,5,0,100, - 21,0,100,22,0,106,23,0,124,10,0,131,1,0,131,3, - 0,1,116,19,0,124,5,0,100,23,0,116,24,0,131,0, - 0,131,3,0,1,116,25,0,106,26,0,116,0,0,106,27, - 0,131,0,0,131,1,0,1,124,9,0,100,9,0,107,2, - 0,114,233,2,116,28,0,106,29,0,100,24,0,131,1,0, - 1,100,25,0,116,25,0,107,6,0,114,233,2,100,26,0, - 116,30,0,95,31,0,113,233,2,110,0,0,100,2,0,83, - 41,28,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,114,172, - 0,0,0,78,114,49,0,0,0,114,186,0,0,0,218,8, - 98,117,105,108,116,105,110,115,114,202,0,0,0,90,5,112, - 111,115,105,120,250,1,47,218,2,110,116,250,1,92,99,1, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115, - 0,0,0,115,33,0,0,0,124,0,0,93,23,0,125,1, - 0,116,0,0,124,1,0,131,1,0,100,0,0,107,2,0, - 86,1,113,3,0,100,1,0,83,41,2,114,29,0,0,0, - 78,41,1,114,31,0,0,0,41,2,114,22,0,0,0,114, - 116,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,144,0,0,0,238,6,0,0,115,2,0,0, - 0,6,0,122,25,95,115,101,116,117,112,46,60,108,111,99, - 97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,68, - 0,0,0,122,30,105,109,112,111,114,116,108,105,98,32,114, - 101,113,117,105,114,101,115,32,112,111,115,105,120,32,111,114, - 32,110,116,114,69,0,0,0,114,93,0,0,0,90,6,119, - 105,110,114,101,103,114,226,0,0,0,114,3,0,0,0,114, - 25,0,0,0,114,21,0,0,0,114,30,0,0,0,114,6, - 0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,121, - 100,84,41,4,122,3,95,105,111,122,9,95,119,97,114,110, - 105,110,103,115,122,8,98,117,105,108,116,105,110,115,122,7, - 109,97,114,115,104,97,108,41,32,114,95,0,0,0,114,7, - 0,0,0,114,103,0,0,0,114,104,0,0,0,114,106,0, - 0,0,114,80,1,0,0,114,105,0,0,0,114,153,0,0, - 0,114,141,0,0,0,218,5,105,116,101,109,115,114,203,0, - 0,0,114,62,0,0,0,114,178,0,0,0,114,215,0,0, - 0,114,172,0,0,0,114,182,0,0,0,114,223,0,0,0, - 114,57,0,0,0,114,219,0,0,0,114,61,0,0,0,218, - 3,97,108,108,114,87,0,0,0,114,158,0,0,0,114,26, - 0,0,0,114,11,0,0,0,114,12,1,0,0,114,208,0, - 0,0,114,79,1,0,0,114,120,0,0,0,114,166,0,0, - 0,114,225,0,0,0,114,229,0,0,0,41,16,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,72,0,0,0,114,162,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,90,10,111,115,95,100,101,116, - 97,105,108,115,90,10,98,117,105,108,116,105,110,95,111,115, - 114,21,0,0,0,114,25,0,0,0,90,9,111,115,95,109, - 111,100,117,108,101,90,13,116,104,114,101,97,100,95,109,111, - 100,117,108,101,90,14,119,101,97,107,114,101,102,95,109,111, - 100,117,108,101,90,13,119,105,110,114,101,103,95,109,111,100, - 117,108,101,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,6,95,115,101,116,117,112,201,6,0,0,115,102, - 0,0,0,0,9,6,1,6,2,12,1,9,2,6,2,12, - 1,28,1,15,1,24,1,15,1,12,1,15,1,22,2,13, - 1,13,1,15,1,18,2,13,1,20,2,33,1,19,2,31, - 1,10,1,15,1,13,1,4,2,3,1,15,1,5,1,13, - 1,12,2,12,2,3,1,19,1,13,2,11,1,15,2,12, - 1,15,1,19,2,16,1,16,1,16,1,16,1,25,2,19, - 1,19,1,12,1,13,1,12,1,114,91,1,0,0,99,2, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,136,0,0,0,116,0,0,124,0,0,124,1, - 0,131,2,0,1,116,1,0,131,0,0,125,2,0,116,2, - 0,106,3,0,106,4,0,116,5,0,106,6,0,124,2,0, - 140,0,0,103,1,0,131,1,0,1,116,2,0,106,7,0, - 106,8,0,116,9,0,131,1,0,1,116,2,0,106,7,0, - 106,8,0,116,10,0,131,1,0,1,116,11,0,106,12,0, - 100,1,0,107,2,0,114,116,0,116,2,0,106,7,0,106, - 8,0,116,13,0,131,1,0,1,110,0,0,116,2,0,106, - 7,0,106,8,0,116,14,0,131,1,0,1,100,2,0,83, - 41,3,122,50,73,110,115,116,97,108,108,32,105,109,112,111, - 114,116,108,105,98,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,114,85,1,0,0,78,41,15,114,91, - 1,0,0,114,235,0,0,0,114,7,0,0,0,114,33,1, - 0,0,114,208,0,0,0,114,40,1,0,0,114,54,1,0, - 0,114,60,1,0,0,114,166,0,0,0,114,215,0,0,0, - 114,223,0,0,0,114,3,0,0,0,114,57,0,0,0,114, - 225,0,0,0,114,28,1,0,0,41,3,114,89,1,0,0, - 114,90,1,0,0,90,17,115,117,112,112,111,114,116,101,100, - 95,108,111,97,100,101,114,115,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,8,95,105,110,115,116,97,108, - 108,21,7,0,0,115,16,0,0,0,0,2,13,1,9,1, - 28,1,16,1,16,1,15,1,19,1,114,92,1,0,0,41, - 3,122,3,119,105,110,114,1,0,0,0,114,2,0,0,0, - 41,83,114,59,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,17,0,0,0,114,19,0,0,0,114,28,0,0,0, - 114,38,0,0,0,114,39,0,0,0,114,43,0,0,0,114, - 44,0,0,0,114,46,0,0,0,114,55,0,0,0,114,65, - 0,0,0,114,153,0,0,0,218,8,95,95,99,111,100,101, - 95,95,114,204,0,0,0,114,90,0,0,0,114,79,0,0, - 0,114,86,0,0,0,114,66,0,0,0,114,67,0,0,0, - 114,89,0,0,0,114,94,0,0,0,114,97,0,0,0,114, - 100,0,0,0,114,15,0,0,0,114,196,0,0,0,114,14, - 0,0,0,114,18,0,0,0,90,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,111,0,0,0, - 114,120,0,0,0,114,105,0,0,0,114,106,0,0,0,114, - 118,0,0,0,114,121,0,0,0,114,128,0,0,0,114,130, - 0,0,0,114,138,0,0,0,114,139,0,0,0,114,147,0, - 0,0,114,156,0,0,0,114,163,0,0,0,114,167,0,0, - 0,114,171,0,0,0,114,174,0,0,0,114,177,0,0,0, - 114,181,0,0,0,114,184,0,0,0,114,191,0,0,0,114, - 201,0,0,0,114,206,0,0,0,114,209,0,0,0,114,214, - 0,0,0,114,215,0,0,0,114,223,0,0,0,114,225,0, - 0,0,114,238,0,0,0,114,242,0,0,0,114,1,1,0, - 0,114,3,1,0,0,114,8,1,0,0,114,12,1,0,0, - 114,9,1,0,0,114,13,1,0,0,114,27,1,0,0,114, - 28,1,0,0,114,40,1,0,0,114,55,1,0,0,114,59, - 1,0,0,114,61,1,0,0,114,64,1,0,0,114,74,1, - 0,0,114,65,1,0,0,114,67,1,0,0,114,68,1,0, - 0,114,69,1,0,0,114,76,1,0,0,114,78,1,0,0, - 114,235,0,0,0,114,82,1,0,0,114,91,1,0,0,114, - 92,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,8,60,109,111,100,117,108, - 101,62,8,0,0,0,115,152,0,0,0,6,17,6,3,12, - 12,12,5,12,5,12,6,12,12,12,10,12,10,12,6,12, - 7,15,22,12,8,15,6,6,2,6,3,22,4,19,68,19, - 23,12,19,12,20,12,113,22,1,18,2,6,2,9,2,9, - 1,9,2,15,27,12,23,12,19,12,12,18,8,19,17,22, - 42,18,9,12,15,12,11,12,13,12,11,12,18,12,11,12, - 11,12,13,21,55,21,12,18,10,12,14,19,52,19,49,19, - 50,19,41,22,110,19,29,25,43,25,20,6,3,19,45,19, - 55,19,32,19,91,19,127,19,13,12,9,12,21,12,17,6, - 1,10,2,12,46,12,13,18,24,12,32,12,15,12,11,24, - 36,12,76, + 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,71, + 8,0,0,115,42,0,0,0,0,1,6,1,19,1,6,1, + 15,1,16,2,15,1,11,1,13,1,3,1,13,1,13,1, + 22,1,26,1,15,1,12,1,30,2,18,1,6,2,13,1, + 32,1,114,105,1,0,0,99,2,0,0,0,0,0,0,0, + 2,0,0,0,10,0,0,0,67,0,0,0,115,36,0,0, + 0,116,0,0,124,0,0,131,1,0,143,18,0,1,116,1, + 0,124,0,0,124,1,0,131,2,0,83,87,100,1,0,81, + 88,100,1,0,83,41,2,122,54,70,105,110,100,32,97,110, + 100,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108, + 101,44,32,97,110,100,32,114,101,108,101,97,115,101,32,116, + 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,78, + 41,2,114,92,0,0,0,114,105,1,0,0,41,2,114,67, + 0,0,0,114,104,1,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,14,95,102,105,110,100,95,97, + 110,100,95,108,111,97,100,98,8,0,0,115,4,0,0,0, + 0,2,13,1,114,106,1,0,0,99,3,0,0,0,0,0, + 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,172, + 0,0,0,116,0,0,124,0,0,124,1,0,124,2,0,131, + 3,0,1,124,2,0,100,1,0,107,4,0,114,49,0,116, + 1,0,124,0,0,124,1,0,124,2,0,131,3,0,125,0, + 0,110,0,0,116,2,0,106,3,0,131,0,0,1,124,0, + 0,116,4,0,106,5,0,107,7,0,114,87,0,116,6,0, + 124,0,0,116,7,0,131,2,0,83,116,4,0,106,5,0, + 124,0,0,25,125,3,0,124,3,0,100,2,0,107,8,0, + 114,158,0,116,2,0,106,8,0,131,0,0,1,100,3,0, + 106,9,0,124,0,0,131,1,0,125,4,0,116,10,0,124, + 4,0,100,4,0,124,0,0,131,1,1,130,1,0,110,0, + 0,116,11,0,124,0,0,131,1,0,1,124,3,0,83,41, + 5,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,71,0,0,0,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,67,0,0,0,41,12,114, + 102,1,0,0,114,98,1,0,0,114,96,0,0,0,114,255, + 0,0,0,114,7,0,0,0,114,169,0,0,0,114,106,1, + 0,0,218,11,95,103,99,100,95,105,109,112,111,114,116,114, + 97,0,0,0,114,47,0,0,0,114,147,0,0,0,114,106, + 0,0,0,41,5,114,67,0,0,0,114,96,1,0,0,114, + 97,1,0,0,114,174,0,0,0,114,145,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,107,1, + 0,0,104,8,0,0,115,26,0,0,0,0,9,16,1,12, + 1,21,1,10,1,15,1,13,1,13,1,12,1,10,2,15, + 1,21,1,10,1,114,107,1,0,0,99,3,0,0,0,0, + 0,0,0,6,0,0,0,17,0,0,0,67,0,0,0,115, + 1,1,0,0,116,0,0,124,0,0,100,1,0,131,2,0, + 114,253,0,100,2,0,124,1,0,107,6,0,114,89,0,116, + 1,0,124,1,0,131,1,0,125,1,0,124,1,0,106,2, + 0,100,2,0,131,1,0,1,116,0,0,124,0,0,100,3, + 0,131,2,0,114,89,0,124,1,0,106,3,0,124,0,0, + 106,4,0,131,1,0,1,113,89,0,110,0,0,120,161,0, + 124,1,0,68,93,150,0,125,3,0,116,0,0,124,0,0, + 124,3,0,131,2,0,115,96,0,100,4,0,106,5,0,124, + 0,0,106,6,0,124,3,0,131,2,0,125,4,0,121,17, + 0,116,7,0,124,2,0,124,4,0,131,2,0,1,87,113, + 246,0,4,116,8,0,107,10,0,114,242,0,1,125,5,0, + 1,122,53,0,116,9,0,124,5,0,131,1,0,106,10,0, + 116,11,0,131,1,0,114,221,0,124,5,0,106,12,0,124, + 4,0,107,2,0,114,221,0,119,96,0,113,221,0,110,0, + 0,130,0,0,87,89,100,5,0,100,5,0,125,5,0,126, + 5,0,88,113,246,0,88,113,96,0,113,96,0,87,110,0, + 0,124,0,0,83,41,6,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,114,239,0,0,0,250,1,42,218, + 7,95,95,97,108,108,95,95,122,5,123,125,46,123,125,78, + 41,13,114,60,0,0,0,114,238,0,0,0,218,6,114,101, + 109,111,118,101,114,192,0,0,0,114,109,1,0,0,114,47, + 0,0,0,114,57,0,0,0,114,108,0,0,0,114,147,0, + 0,0,114,76,1,0,0,114,9,0,0,0,218,15,95,69, + 82,82,95,77,83,71,95,80,82,69,70,73,88,114,67,0, + 0,0,41,6,114,174,0,0,0,218,8,102,114,111,109,108, + 105,115,116,114,104,1,0,0,114,16,0,0,0,90,9,102, + 114,111,109,95,110,97,109,101,114,34,1,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,16,95,104, + 97,110,100,108,101,95,102,114,111,109,108,105,115,116,128,8, + 0,0,115,34,0,0,0,0,10,15,1,12,1,12,1,13, + 1,15,1,22,1,13,1,15,1,21,1,3,1,17,1,18, + 4,21,1,15,1,9,1,32,1,114,113,1,0,0,99,1, + 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, + 0,0,0,115,78,0,0,0,124,0,0,106,0,0,100,1, + 0,131,1,0,125,1,0,124,1,0,100,2,0,107,8,0, + 114,74,0,124,0,0,100,3,0,25,125,1,0,100,4,0, + 124,0,0,107,7,0,114,74,0,124,1,0,106,1,0,100, + 5,0,131,1,0,100,6,0,25,125,1,0,113,74,0,110, + 0,0,124,1,0,83,41,7,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,246,0,0,0,78,114,57,0,0,0,114,239,0,0, + 0,114,110,0,0,0,114,71,0,0,0,41,2,114,82,0, + 0,0,114,32,0,0,0,41,2,218,7,103,108,111,98,97, + 108,115,114,96,1,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,218,17,95,99,97,108,99,95,95,95, + 112,97,99,107,97,103,101,95,95,160,8,0,0,115,12,0, + 0,0,0,7,15,1,12,1,10,1,12,1,25,1,114,115, + 1,0,0,99,0,0,0,0,0,0,0,0,3,0,0,0, + 3,0,0,0,67,0,0,0,115,55,0,0,0,116,0,0, + 116,1,0,106,2,0,131,0,0,102,2,0,125,0,0,116, + 3,0,116,4,0,102,2,0,125,1,0,116,5,0,116,6, + 0,102,2,0,125,2,0,124,0,0,124,1,0,124,2,0, + 103,3,0,83,41,1,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,41,7,114,50,1,0,0,114,96, + 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, + 117,102,102,105,120,101,115,114,45,1,0,0,114,128,0,0, + 0,114,49,1,0,0,114,227,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,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,233,0,0,0,175, + 8,0,0,115,8,0,0,0,0,5,18,1,12,1,12,1, + 114,233,0,0,0,99,5,0,0,0,0,0,0,0,9,0, + 0,0,5,0,0,0,67,0,0,0,115,227,0,0,0,124, + 4,0,100,1,0,107,2,0,114,27,0,116,0,0,124,0, + 0,131,1,0,125,5,0,110,54,0,124,1,0,100,2,0, + 107,9,0,114,45,0,124,1,0,110,3,0,105,0,0,125, + 6,0,116,1,0,124,6,0,131,1,0,125,7,0,116,0, + 0,124,0,0,124,7,0,124,4,0,131,3,0,125,5,0, + 124,3,0,115,207,0,124,4,0,100,1,0,107,2,0,114, + 122,0,116,0,0,124,0,0,106,2,0,100,3,0,131,1, + 0,100,1,0,25,131,1,0,83,124,0,0,115,132,0,124, + 5,0,83,116,3,0,124,0,0,131,1,0,116,3,0,124, + 0,0,106,2,0,100,3,0,131,1,0,100,1,0,25,131, + 1,0,24,125,8,0,116,4,0,106,5,0,124,5,0,106, + 6,0,100,2,0,116,3,0,124,5,0,106,6,0,131,1, + 0,124,8,0,24,133,2,0,25,25,83,110,16,0,116,7, + 0,124,5,0,124,3,0,116,0,0,131,3,0,83,100,2, + 0,83,41,4,97,214,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, + 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, + 71,0,0,0,78,114,110,0,0,0,41,8,114,107,1,0, + 0,114,115,1,0,0,114,115,0,0,0,114,31,0,0,0, + 114,7,0,0,0,114,169,0,0,0,114,57,0,0,0,114, + 113,1,0,0,41,9,114,67,0,0,0,114,114,1,0,0, + 218,6,108,111,99,97,108,115,114,112,1,0,0,114,97,1, + 0,0,114,174,0,0,0,90,8,103,108,111,98,97,108,115, + 95,114,96,1,0,0,90,7,99,117,116,95,111,102,102,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,10, + 95,95,105,109,112,111,114,116,95,95,186,8,0,0,115,26, + 0,0,0,0,11,12,1,15,2,24,1,12,1,18,1,6, + 3,12,1,23,1,6,1,4,4,35,3,40,2,114,118,1, + 0,0,99,1,0,0,0,0,0,0,0,3,0,0,0,2, + 0,0,0,67,0,0,0,115,37,0,0,0,116,0,0,106, + 1,0,124,0,0,131,1,0,125,1,0,116,2,0,124,1, + 0,131,1,0,125,2,0,124,2,0,106,3,0,131,0,0, + 83,41,1,78,41,4,114,5,1,0,0,114,8,1,0,0, + 114,168,0,0,0,114,3,1,0,0,41,3,114,67,0,0, + 0,114,172,0,0,0,114,173,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,18,95,98,117,105, + 108,116,105,110,95,102,114,111,109,95,110,97,109,101,221,8, + 0,0,115,6,0,0,0,0,1,15,1,12,1,114,119,1, + 0,0,99,2,0,0,0,0,0,0,0,19,0,0,0,12, + 0,0,0,67,0,0,0,115,232,2,0,0,124,1,0,97, + 0,0,124,0,0,97,1,0,116,1,0,106,2,0,106,3, + 0,114,33,0,116,4,0,97,5,0,110,6,0,116,6,0, + 97,5,0,116,7,0,116,1,0,131,1,0,125,2,0,120, + 138,0,116,1,0,106,8,0,106,9,0,131,0,0,68,93, + 121,0,92,2,0,125,3,0,125,4,0,116,10,0,124,4, + 0,124,2,0,131,2,0,114,67,0,124,3,0,116,1,0, + 106,11,0,107,6,0,114,118,0,116,12,0,125,5,0,110, + 27,0,116,0,0,106,13,0,124,3,0,131,1,0,114,67, + 0,116,14,0,125,5,0,110,3,0,113,67,0,116,15,0, + 124,4,0,124,5,0,131,2,0,125,6,0,116,16,0,124, + 6,0,131,1,0,125,7,0,124,7,0,106,17,0,124,4, + 0,131,1,0,1,113,67,0,113,67,0,87,116,1,0,106, + 8,0,116,18,0,25,125,8,0,120,73,0,100,26,0,68, + 93,65,0,125,9,0,124,9,0,116,1,0,106,8,0,107, + 7,0,114,248,0,116,19,0,124,9,0,131,1,0,125,10, + 0,110,13,0,116,1,0,106,8,0,124,9,0,25,125,10, + 0,116,20,0,124,8,0,124,9,0,124,10,0,131,3,0, + 1,113,212,0,87,100,5,0,100,6,0,103,1,0,102,2, + 0,100,7,0,100,8,0,100,6,0,103,2,0,102,2,0, + 102,2,0,125,11,0,120,146,0,124,11,0,68,93,126,0, + 92,2,0,125,12,0,125,13,0,116,21,0,100,9,0,100, + 10,0,132,0,0,124,13,0,68,131,1,0,131,1,0,115, + 108,1,116,22,0,130,1,0,124,13,0,100,11,0,25,125, + 14,0,124,12,0,116,1,0,106,8,0,107,6,0,114,150, + 1,116,1,0,106,8,0,124,12,0,25,125,15,0,80,113, + 65,1,121,17,0,116,19,0,124,12,0,131,1,0,125,15, + 0,80,87,113,65,1,4,116,23,0,107,10,0,114,190,1, + 1,1,1,119,65,1,89,113,65,1,88,113,65,1,87,116, + 23,0,100,12,0,131,1,0,130,1,0,116,20,0,124,8, + 0,100,13,0,124,15,0,131,3,0,1,116,20,0,124,8, + 0,100,14,0,124,14,0,131,3,0,1,116,20,0,124,8, + 0,100,15,0,100,16,0,106,24,0,124,13,0,131,1,0, + 131,3,0,1,121,16,0,116,19,0,100,17,0,131,1,0, + 125,16,0,87,110,24,0,4,116,23,0,107,10,0,114,50, + 2,1,1,1,100,18,0,125,16,0,89,110,1,0,88,116, + 20,0,124,8,0,100,17,0,124,16,0,131,3,0,1,116, + 19,0,100,19,0,131,1,0,125,17,0,116,20,0,124,8, + 0,100,19,0,124,17,0,131,3,0,1,124,12,0,100,7, + 0,107,2,0,114,138,2,116,19,0,100,20,0,131,1,0, + 125,18,0,116,20,0,124,8,0,100,21,0,124,18,0,131, + 3,0,1,110,0,0,116,20,0,124,8,0,100,22,0,116, + 25,0,131,0,0,131,3,0,1,116,26,0,106,27,0,116, + 0,0,106,28,0,131,0,0,131,1,0,1,124,12,0,100, + 7,0,107,2,0,114,228,2,116,29,0,106,30,0,100,23, + 0,131,1,0,1,100,24,0,116,26,0,107,6,0,114,228, + 2,100,25,0,116,31,0,95,32,0,113,228,2,110,0,0, + 100,18,0,83,41,27,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,114,49,0,0,0,114,160,0,0,0,218,8,98,117, + 105,108,116,105,110,115,114,186,0,0,0,90,5,112,111,115, + 105,120,250,1,47,218,2,110,116,250,1,92,99,1,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,115,0,0, + 0,115,33,0,0,0,124,0,0,93,23,0,125,1,0,116, + 0,0,124,1,0,131,1,0,100,0,0,107,2,0,86,1, + 113,3,0,100,1,0,83,41,2,114,29,0,0,0,78,41, + 1,114,31,0,0,0,41,2,114,22,0,0,0,114,124,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,211,0,0,0,15,9,0,0,115,2,0,0,0,6, + 0,122,25,95,115,101,116,117,112,46,60,108,111,99,97,108, + 115,62,46,60,103,101,110,101,120,112,114,62,114,71,0,0, + 0,122,30,105,109,112,111,114,116,108,105,98,32,114,101,113, + 117,105,114,101,115,32,112,111,115,105,120,32,111,114,32,110, + 116,114,3,0,0,0,114,25,0,0,0,114,21,0,0,0, + 114,30,0,0,0,114,72,0,0,0,78,114,105,0,0,0, + 90,6,119,105,110,114,101,103,114,17,1,0,0,114,6,0, + 0,0,122,4,46,112,121,119,122,6,95,100,46,112,121,100, + 84,41,4,122,3,95,105,111,122,9,95,119,97,114,110,105, + 110,103,115,122,8,98,117,105,108,116,105,110,115,122,7,109, + 97,114,115,104,97,108,41,33,114,96,0,0,0,114,7,0, + 0,0,114,111,0,0,0,114,112,0,0,0,114,114,0,0, + 0,114,227,0,0,0,114,113,0,0,0,114,66,0,0,0, + 114,169,0,0,0,218,5,105,116,101,109,115,114,187,0,0, + 0,114,151,0,0,0,114,5,1,0,0,114,156,0,0,0, + 114,13,1,0,0,114,240,0,0,0,114,168,0,0,0,114, + 250,0,0,0,114,57,0,0,0,114,119,1,0,0,114,61, + 0,0,0,218,3,97,108,108,114,89,0,0,0,114,147,0, + 0,0,114,26,0,0,0,114,11,0,0,0,114,53,1,0, + 0,114,192,0,0,0,114,116,1,0,0,114,128,0,0,0, + 114,220,0,0,0,114,16,1,0,0,114,20,1,0,0,41, + 19,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,67,0,0,0,114,174,0,0, + 0,114,163,0,0,0,114,172,0,0,0,114,173,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,90,10,111,115,95, + 100,101,116,97,105,108,115,90,10,98,117,105,108,116,105,110, + 95,111,115,114,21,0,0,0,114,25,0,0,0,90,9,111, + 115,95,109,111,100,117,108,101,90,13,116,104,114,101,97,100, + 95,109,111,100,117,108,101,90,14,119,101,97,107,114,101,102, + 95,109,111,100,117,108,101,90,13,119,105,110,114,101,103,95, + 109,111,100,117,108,101,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,6,95,115,101,116,117,112,227,8,0, + 0,115,108,0,0,0,0,9,6,1,6,2,12,1,9,2, + 6,3,12,1,28,1,15,1,15,1,9,1,15,1,9,2, + 3,1,15,1,12,1,20,3,13,1,13,1,15,1,15,2, + 13,1,20,3,33,1,19,2,31,1,10,1,15,1,13,1, + 4,2,3,1,12,1,5,1,13,1,12,2,12,1,16,1, + 16,1,25,3,3,1,16,1,13,2,11,1,16,3,12,1, + 16,3,12,1,12,1,19,3,19,1,19,1,12,1,13,1, + 12,1,114,128,1,0,0,99,2,0,0,0,0,0,0,0, + 3,0,0,0,3,0,0,0,67,0,0,0,115,136,0,0, + 0,116,0,0,124,0,0,124,1,0,131,2,0,1,116,1, + 0,131,0,0,125,2,0,116,2,0,106,3,0,106,4,0, + 116,5,0,106,6,0,124,2,0,140,0,0,103,1,0,131, + 1,0,1,116,2,0,106,7,0,106,8,0,116,9,0,131, + 1,0,1,116,2,0,106,7,0,106,8,0,116,10,0,131, + 1,0,1,116,11,0,106,12,0,100,1,0,107,2,0,114, + 116,0,116,2,0,106,7,0,106,8,0,116,13,0,131,1, + 0,1,110,0,0,116,2,0,106,7,0,106,8,0,116,14, + 0,131,1,0,1,100,2,0,83,41,3,122,50,73,110,115, + 116,97,108,108,32,105,109,112,111,114,116,108,105,98,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,114, + 122,1,0,0,78,41,15,114,128,1,0,0,114,233,0,0, + 0,114,7,0,0,0,114,72,1,0,0,114,192,0,0,0, + 114,80,1,0,0,114,94,1,0,0,114,99,1,0,0,114, + 220,0,0,0,114,5,1,0,0,114,13,1,0,0,114,3, + 0,0,0,114,57,0,0,0,114,16,1,0,0,114,67,1, + 0,0,41,3,114,126,1,0,0,114,127,1,0,0,90,17, + 115,117,112,112,111,114,116,101,100,95,108,111,97,100,101,114, + 115,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,8,95,105,110,115,116,97,108,108,58,9,0,0,115,16, + 0,0,0,0,2,13,1,9,1,28,1,16,1,16,1,15, + 1,19,1,114,129,1,0,0,41,3,122,3,119,105,110,114, + 1,0,0,0,114,2,0,0,0,41,89,114,59,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,17,0,0,0,114, + 19,0,0,0,114,28,0,0,0,114,38,0,0,0,114,39, + 0,0,0,114,43,0,0,0,114,44,0,0,0,114,46,0, + 0,0,114,55,0,0,0,114,65,0,0,0,114,68,0,0, + 0,114,66,0,0,0,218,8,95,95,99,111,100,101,95,95, + 114,188,0,0,0,114,102,0,0,0,114,81,0,0,0,114, + 88,0,0,0,114,69,0,0,0,114,70,0,0,0,114,91, + 0,0,0,114,92,0,0,0,114,95,0,0,0,114,106,0, + 0,0,114,108,0,0,0,114,15,0,0,0,114,180,0,0, + 0,114,14,0,0,0,114,18,0,0,0,90,17,95,82,65, + 87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,119, + 0,0,0,114,128,0,0,0,114,113,0,0,0,114,114,0, + 0,0,114,126,0,0,0,114,129,0,0,0,114,136,0,0, + 0,114,138,0,0,0,114,146,0,0,0,114,150,0,0,0, + 114,155,0,0,0,114,158,0,0,0,114,166,0,0,0,114, + 175,0,0,0,114,185,0,0,0,114,190,0,0,0,114,193, + 0,0,0,114,198,0,0,0,114,206,0,0,0,114,207,0, + 0,0,114,213,0,0,0,114,167,0,0,0,218,6,111,98, + 106,101,99,116,114,234,0,0,0,114,232,0,0,0,114,240, + 0,0,0,114,168,0,0,0,114,5,1,0,0,114,13,1, + 0,0,114,16,1,0,0,114,26,1,0,0,114,27,1,0, + 0,114,42,1,0,0,114,45,1,0,0,114,49,1,0,0, + 114,53,1,0,0,114,50,1,0,0,114,54,1,0,0,114, + 247,0,0,0,114,67,1,0,0,114,80,1,0,0,114,95, + 1,0,0,114,98,1,0,0,114,241,0,0,0,114,102,1, + 0,0,114,111,1,0,0,114,103,1,0,0,114,105,1,0, + 0,114,106,1,0,0,114,107,1,0,0,114,113,1,0,0, + 114,115,1,0,0,114,233,0,0,0,114,118,1,0,0,114, + 119,1,0,0,114,128,1,0,0,114,129,1,0,0,114,4, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,8,60,109,111,100,117,108,101,62,8,0,0,0, + 115,164,0,0,0,6,17,6,3,12,12,12,5,12,5,12, + 6,12,12,12,10,12,9,12,5,12,7,15,22,12,8,12, + 4,15,6,6,2,6,3,22,4,19,68,19,21,19,19,12, + 19,12,20,12,113,22,1,18,2,6,2,9,2,9,1,9, + 2,15,27,12,23,12,19,12,12,18,8,12,18,12,11,12, + 11,12,13,12,13,21,55,21,12,18,10,12,14,12,34,19, + 27,19,102,24,24,9,3,12,1,15,63,18,45,19,251,19, + 71,19,59,19,60,19,25,22,110,19,31,25,43,25,16,6, + 3,19,49,19,57,19,27,19,124,19,147,19,13,12,9,15, + 41,12,17,6,1,10,2,12,27,12,6,18,24,12,32,12, + 15,12,11,24,35,12,6,12,87, }; -- cgit v0.12