]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Apply changes from importlib_metadata
authorJason R. Coombs <jaraco@jaraco.com>
Sat, 18 May 2019 15:43:08 +0000 (11:43 -0400)
committerJason R. Coombs <jaraco@jaraco.com>
Sat, 18 May 2019 17:22:45 +0000 (13:22 -0400)
Lib/importlib/_bootstrap_external.py
Lib/importlib/metadata/__init__.py
Lib/importlib/metadata/_hooks.py [deleted file]
Lib/importlib/metadata/abc.py [deleted file]
Lib/importlib/metadata/api.py [deleted file]
Lib/test/test_importlib/test_main.py
Lib/test/test_importlib/test_metadata_api.py
Lib/test/test_importlib/test_zip.py
Python/importlib_external.h

index 45fd087c5fe4ddc0cd749e413158ca307a494306..dc5842374d3d737699605666cbe5fb14215656c1 100644 (file)
@@ -1369,7 +1369,7 @@ class PathFinder:
         of directories ``path`` (defaults to sys.path).
         """
         import re
-        from importlib.metadata._hooks import PathDistribution
+        from importlib.metadata import PathDistribution
         if path is None:
             path = sys.path
         pattern = '.*' if name is None else re.escape(name)
index 8d4b0a344cd054e951f8c804d2d006f4d958ceca..9a4ba6171cc8791acfcc62a93d523ee3ae5aac1b 100644 (file)
@@ -1,9 +1,20 @@
-from .api import (
-    Distribution, PackageNotFoundError, distribution, distributions,
-    entry_points, files, metadata, requires, version)
+import io
+import re
+import abc
+import csv
+import sys
+import email
+import pathlib
+import operator
+import functools
+import itertools
+import collections
 
-# Import for installation side-effects.
-from . import _hooks  # noqa: F401
+from configparser import ConfigParser
+from contextlib import suppress
+from importlib import import_module
+from importlib.abc import MetaPathFinder
+from itertools import starmap
 
 
 __all__ = [
@@ -17,3 +28,377 @@ __all__ = [
     'requires',
     'version',
     ]
+
+
+class PackageNotFoundError(ModuleNotFoundError):
+    """The package was not found."""
+
+
+class EntryPoint(collections.namedtuple('EntryPointBase', 'name value group')):
+    """An entry point as defined by Python packaging conventions."""
+
+    pattern = re.compile(
+        r'(?P<module>[\w.]+)\s*'
+        r'(:\s*(?P<attr>[\w.]+))?\s*'
+        r'(?P<extras>\[.*\])?\s*$'
+        )
+    """
+    A regular expression describing the syntax for an entry point,
+    which might look like:
+
+        - module
+        - package.module
+        - package.module:attribute
+        - package.module:object.attribute
+        - package.module:attr [extra1, extra2]
+
+    Other combinations are possible as well.
+
+    The expression is lenient about whitespace around the ':',
+    following the attr, and following any extras.
+    """
+
+    def load(self):
+        """Load the entry point from its definition. If only a module
+        is indicated by the value, return that module. Otherwise,
+        return the named object.
+        """
+        match = self.pattern.match(self.value)
+        module = import_module(match.group('module'))
+        attrs = filter(None, (match.group('attr') or '').split('.'))
+        return functools.reduce(getattr, attrs, module)
+
+    @property
+    def extras(self):
+        match = self.pattern.match(self.value)
+        return list(re.finditer(r'\w+', match.group('extras') or ''))
+
+    @classmethod
+    def _from_config(cls, config):
+        return [
+            cls(name, value, group)
+            for group in config.sections()
+            for name, value in config.items(group)
+            ]
+
+    @classmethod
+    def _from_text(cls, text):
+        config = ConfigParser()
+        try:
+            config.read_string(text)
+        except AttributeError:  # pragma: nocover
+            # Python 2 has no read_string
+            config.readfp(io.StringIO(text))
+        return EntryPoint._from_config(config)
+
+    def __iter__(self):
+        """
+        Supply iter so one may construct dicts of EntryPoints easily.
+        """
+        return iter((self.name, self))
+
+
+class PackagePath(pathlib.PurePosixPath):
+    """A reference to a path in a package"""
+
+    def read_text(self, encoding='utf-8'):
+        with self.locate().open(encoding=encoding) as stream:
+            return stream.read()
+
+    def read_binary(self):
+        with self.locate().open('rb') as stream:
+            return stream.read()
+
+    def locate(self):
+        """Return a path-like object for this path"""
+        return self.dist.locate_file(self)
+
+
+class FileHash:
+    def __init__(self, spec):
+        self.mode, _, self.value = spec.partition('=')
+
+    def __repr__(self):
+        return '<FileHash mode: {} value: {}>'.format(self.mode, self.value)
+
+
+class Distribution:
+    """A Python distribution package."""
+
+    @abc.abstractmethod
+    def read_text(self, filename):
+        """Attempt to load metadata file given by the name.
+
+        :param filename: The name of the file in the distribution info.
+        :return: The text if found, otherwise None.
+        """
+
+    @abc.abstractmethod
+    def locate_file(self, path):
+        """
+        Given a path to a file in this distribution, return a path
+        to it.
+        """
+
+    @classmethod
+    def from_name(cls, name):
+        """Return the Distribution for the given package name.
+
+        :param name: The name of the distribution package to search for.
+        :return: The Distribution instance (or subclass thereof) for the named
+            package, if found.
+        :raises PackageNotFoundError: When the named package's distribution
+            metadata cannot be found.
+        """
+        for resolver in cls._discover_resolvers():
+            dists = resolver(name)
+            dist = next(dists, None)
+            if dist is not None:
+                return dist
+        else:
+            raise PackageNotFoundError(name)
+
+    @classmethod
+    def discover(cls):
+        """Return an iterable of Distribution objects for all packages.
+
+        :return: Iterable of Distribution objects for all packages.
+        """
+        return itertools.chain.from_iterable(
+            resolver()
+            for resolver in cls._discover_resolvers()
+            )
+
+    @staticmethod
+    def _discover_resolvers():
+        """Search the meta_path for resolvers."""
+        declared = (
+            getattr(finder, 'find_distributions', None)
+            for finder in sys.meta_path
+            )
+        return filter(None, declared)
+
+    @classmethod
+    def find_local(cls):
+        dists = itertools.chain.from_iterable(
+            resolver(path=['.'])
+            for resolver in cls._discover_resolvers()
+            )
+        dist, = dists
+        return dist
+
+    @property
+    def metadata(self):
+        """Return the parsed metadata for this Distribution.
+
+        The returned object will have keys that name the various bits of
+        metadata.  See PEP 566 for details.
+        """
+        text = (
+            self.read_text('METADATA')
+            or self.read_text('PKG-INFO')
+            # This last clause is here to support old egg-info files.  Its
+            # effect is to just end up using the PathDistribution's self._path
+            # (which points to the egg-info file) attribute unchanged.
+            or self.read_text('')
+            )
+        return email.message_from_string(text)
+
+    @property
+    def version(self):
+        """Return the 'Version' metadata for the distribution package."""
+        return self.metadata['Version']
+
+    @property
+    def entry_points(self):
+        return EntryPoint._from_text(self.read_text('entry_points.txt'))
+
+    @property
+    def files(self):
+        file_lines = self._read_files_distinfo() or self._read_files_egginfo()
+
+        def make_file(name, hash=None, size_str=None):
+            result = PackagePath(name)
+            result.hash = FileHash(hash) if hash else None
+            result.size = int(size_str) if size_str else None
+            result.dist = self
+            return result
+
+        return file_lines and starmap(make_file, csv.reader(file_lines))
+
+    def _read_files_distinfo(self):
+        """
+        Read the lines of RECORD
+        """
+        text = self.read_text('RECORD')
+        return text and text.splitlines()
+
+    def _read_files_egginfo(self):
+        """
+        SOURCES.txt might contain literal commas, so wrap each line
+        in quotes.
+        """
+        text = self.read_text('SOURCES.txt')
+        return text and map('"{}"'.format, text.splitlines())
+
+    @property
+    def requires(self):
+        """Generated requirements specified for this Distribution"""
+        return self._read_dist_info_reqs() or self._read_egg_info_reqs()
+
+    def _read_dist_info_reqs(self):
+        spec = self.metadata['Requires-Dist']
+        return spec and filter(None, spec.splitlines())
+
+    def _read_egg_info_reqs(self):
+        source = self.read_text('requires.txt')
+        return source and self._deps_from_requires_text(source)
+
+    @classmethod
+    def _deps_from_requires_text(cls, source):
+        section_pairs = cls._read_sections(source.splitlines())
+        sections = {
+            section: list(map(operator.itemgetter('line'), results))
+            for section, results in
+            itertools.groupby(section_pairs, operator.itemgetter('section'))
+            }
+        return cls._convert_egg_info_reqs_to_simple_reqs(sections)
+
+    @staticmethod
+    def _read_sections(lines):
+        section = None
+        for line in filter(None, lines):
+            section_match = re.match(r'\[(.*)\]$', line)
+            if section_match:
+                section = section_match.group(1)
+                continue
+            yield locals()
+
+    @staticmethod
+    def _convert_egg_info_reqs_to_simple_reqs(sections):
+        """
+        Historically, setuptools would solicit and store 'extra'
+        requirements, including those with environment markers,
+        in separate sections. More modern tools expect each
+        dependency to be defined separately, with any relevant
+        extras and environment markers attached directly to that
+        requirement. This method converts the former to the
+        latter. See _test_deps_from_requires_text for an example.
+        """
+        def make_condition(name):
+            return name and 'extra == "{name}"'.format(name=name)
+
+        def parse_condition(section):
+            section = section or ''
+            extra, sep, markers = section.partition(':')
+            if extra and markers:
+                markers = '({markers})'.format(markers=markers)
+            conditions = list(filter(None, [markers, make_condition(extra)]))
+            return '; ' + ' and '.join(conditions) if conditions else ''
+
+        for section, deps in sections.items():
+            for dep in deps:
+                yield dep + parse_condition(section)
+
+
+class DistributionFinder(MetaPathFinder):
+    """
+    A MetaPathFinder capable of discovering installed distributions.
+    """
+
+    @abc.abstractmethod
+    def find_distributions(self, name=None, path=None):
+        """
+        Return an iterable of all Distribution instances capable of
+        loading the metadata for packages matching the name
+        (or all names if not supplied) along the paths in the list
+        of directories ``path`` (defaults to sys.path).
+        """
+
+
+class PathDistribution(Distribution):
+    def __init__(self, path):
+        """Construct a distribution from a path to the metadata directory."""
+        self._path = path
+
+    def read_text(self, filename):
+        with suppress(FileNotFoundError, NotADirectoryError, KeyError):
+            return self._path.joinpath(filename).read_text(encoding='utf-8')
+    read_text.__doc__ = Distribution.read_text.__doc__
+
+    def locate_file(self, path):
+        return self._path.parent / path
+
+
+def distribution(package):
+    """Get the ``Distribution`` instance for the given package.
+
+    :param package: The name of the package as a string.
+    :return: A ``Distribution`` instance (or subclass thereof).
+    """
+    return Distribution.from_name(package)
+
+
+def distributions():
+    """Get all ``Distribution`` instances in the current environment.
+
+    :return: An iterable of ``Distribution`` instances.
+    """
+    return Distribution.discover()
+
+
+def local_distribution():
+    """Get the ``Distribution`` instance for the package in CWD.
+
+    :return: A ``Distribution`` instance (or subclass thereof).
+    """
+    return Distribution.find_local()
+
+
+def metadata(package):
+    """Get the metadata for the package.
+
+    :param package: The name of the distribution package to query.
+    :return: An email.Message containing the parsed metadata.
+    """
+    return Distribution.from_name(package).metadata
+
+
+def version(package):
+    """Get the version string for the named package.
+
+    :param package: The name of the distribution package to query.
+    :return: The version string for the package as defined in the package's
+        "Version" metadata key.
+    """
+    return distribution(package).version
+
+
+def entry_points():
+    """Return EntryPoint objects for all installed packages.
+
+    :return: EntryPoint objects for all installed packages.
+    """
+    eps = itertools.chain.from_iterable(
+        dist.entry_points for dist in distributions())
+    by_group = operator.attrgetter('group')
+    ordered = sorted(eps, key=by_group)
+    grouped = itertools.groupby(ordered, by_group)
+    return {
+        group: tuple(eps)
+        for group, eps in grouped
+        }
+
+
+def files(package):
+    return distribution(package).files
+
+
+def requires(package):
+    """
+    Return a list of requirements for the indicated distribution.
+
+    :return: An iterator of requirements, suitable for
+    packaging.requirement.Requirement.
+    """
+    return distribution(package).requires
diff --git a/Lib/importlib/metadata/_hooks.py b/Lib/importlib/metadata/_hooks.py
deleted file mode 100644 (file)
index 4c57f4d..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-from .api import Distribution
-from contextlib import suppress
-
-
-class PathDistribution(Distribution):
-    def __init__(self, path):
-        """Construct a distribution from a path to the metadata directory."""
-        self._path = path
-
-    def read_text(self, filename):
-        with suppress(FileNotFoundError, NotADirectoryError, KeyError):
-            return self._path.joinpath(filename).read_text(encoding='utf-8')
-    read_text.__doc__ = Distribution.read_text.__doc__
-
-    def locate_file(self, path):
-        return self._path.parent / path
diff --git a/Lib/importlib/metadata/abc.py b/Lib/importlib/metadata/abc.py
deleted file mode 100644 (file)
index 845e41a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-import abc
-
-from importlib.abc import MetaPathFinder
-
-
-class DistributionFinder(MetaPathFinder):
-    """
-    A MetaPathFinder capable of discovering installed distributions.
-    """
-
-    @abc.abstractmethod
-    def find_distributions(self, name=None, path=None):
-        """
-        Return an iterable of all Distribution instances capable of
-        loading the metadata for packages matching the name
-        (or all names if not supplied) along the paths in the list
-        of directories ``path`` (defaults to sys.path).
-        """
diff --git a/Lib/importlib/metadata/api.py b/Lib/importlib/metadata/api.py
deleted file mode 100644 (file)
index ba5c171..0000000
+++ /dev/null
@@ -1,358 +0,0 @@
-import re
-import abc
-import csv
-import sys
-import email
-import operator
-import functools
-import itertools
-import collections
-
-from importlib import import_module
-from itertools import starmap
-
-import pathlib
-from configparser import ConfigParser
-
-__metaclass__ = type
-
-
-class PackageNotFoundError(ModuleNotFoundError):
-    """The package was not found."""
-
-
-class EntryPoint(collections.namedtuple('EntryPointBase', 'name value group')):
-    """An entry point as defined by Python packaging conventions."""
-
-    pattern = re.compile(
-        r'(?P<module>[\w.]+)\s*'
-        r'(:\s*(?P<attr>[\w.]+))?\s*'
-        r'(?P<extras>\[.*\])?\s*$'
-        )
-    """
-    A regular expression describing the syntax for an entry point,
-    which might look like:
-
-        - module
-        - package.module
-        - package.module:attribute
-        - package.module:object.attribute
-        - package.module:attr [extra1, extra2]
-
-    Other combinations are possible as well.
-
-    The expression is lenient about whitespace around the ':',
-    following the attr, and following any extras.
-    """
-
-    def load(self):
-        """Load the entry point from its definition. If only a module
-        is indicated by the value, return that module. Otherwise,
-        return the named object.
-        """
-        match = self.pattern.match(self.value)
-        module = import_module(match.group('module'))
-        attrs = filter(None, (match.group('attr') or '').split('.'))
-        return functools.reduce(getattr, attrs, module)
-
-    @property
-    def extras(self):
-        match = self.pattern.match(self.value)
-        return list(re.finditer(r'\w+', match.group('extras') or ''))
-
-    @classmethod
-    def _from_config(cls, config):
-        return [
-            cls(name, value, group)
-            for group in config.sections()
-            for name, value in config.items(group)
-            ]
-
-    @classmethod
-    def _from_text(cls, text):
-        config = ConfigParser()
-        config.read_string(text)
-        return EntryPoint._from_config(config)
-
-    def __iter__(self):
-        """
-        Supply iter so one may construct dicts of EntryPoints easily.
-        """
-        return iter((self.name, self))
-
-
-class PackagePath(pathlib.PurePosixPath):
-    """A reference to a path in a package"""
-
-    def read_text(self, encoding='utf-8'):
-        with self.locate().open(encoding=encoding) as stream:
-            return stream.read()
-
-    def read_binary(self):
-        with self.locate().open('rb') as stream:
-            return stream.read()
-
-    def locate(self):
-        """Return a path-like object for this path"""
-        return self.dist.locate_file(self)
-
-
-class FileHash:
-    def __init__(self, spec):
-        self.mode, _, self.value = spec.partition('=')
-
-    def __repr__(self):
-        return '<FileHash mode: {} value: {}>'.format(self.mode, self.value)
-
-
-class Distribution:
-    """A Python distribution package."""
-
-    @abc.abstractmethod
-    def read_text(self, filename):
-        """Attempt to load metadata file given by the name.
-
-        :param filename: The name of the file in the distribution info.
-        :return: The text if found, otherwise None.
-        """
-
-    @abc.abstractmethod
-    def locate_file(self, path):
-        """
-        Given a path to a file in this distribution, return a path
-        to it.
-        """
-
-    @classmethod
-    def from_name(cls, name):
-        """Return the Distribution for the given package name.
-
-        :param name: The name of the distribution package to search for.
-        :return: The Distribution instance (or subclass thereof) for the named
-            package, if found.
-        :raises PackageNotFoundError: When the named package's distribution
-            metadata cannot be found.
-        """
-        for resolver in cls._discover_resolvers():
-            dists = resolver(name)
-            dist = next(dists, None)
-            if dist is not None:
-                return dist
-        else:
-            raise PackageNotFoundError(name)
-
-    @classmethod
-    def discover(cls):
-        """Return an iterable of Distribution objects for all packages.
-
-        :return: Iterable of Distribution objects for all packages.
-        """
-        return itertools.chain.from_iterable(
-            resolver()
-            for resolver in cls._discover_resolvers()
-            )
-
-    @staticmethod
-    def _discover_resolvers():
-        """Search the meta_path for resolvers."""
-        declared = (
-            getattr(finder, 'find_distributions', None)
-            for finder in sys.meta_path
-            )
-        return filter(None, declared)
-
-    @classmethod
-    def find_local(cls):
-        dists = itertools.chain.from_iterable(
-            resolver(path=['.'])
-            for resolver in cls._discover_resolvers()
-            )
-        dist, = dists
-        return dist
-
-    @property
-    def metadata(self):
-        """Return the parsed metadata for this Distribution.
-
-        The returned object will have keys that name the various bits of
-        metadata.  See PEP 566 for details.
-        """
-        text = (
-            self.read_text('METADATA')
-            or self.read_text('PKG-INFO')
-            # This last clause is here to support old egg-info files.  Its
-            # effect is to just end up using the PathDistribution's self._path
-            # (which points to the egg-info file) attribute unchanged.
-            or self.read_text('')
-            )
-        return email.message_from_string(text)
-
-    @property
-    def version(self):
-        """Return the 'Version' metadata for the distribution package."""
-        return self.metadata['Version']
-
-    @property
-    def entry_points(self):
-        return EntryPoint._from_text(self.read_text('entry_points.txt'))
-
-    @property
-    def files(self):
-        file_lines = self._read_files_distinfo() or self._read_files_egginfo()
-
-        def make_file(name, hash=None, size_str=None):
-            result = PackagePath(name)
-            result.hash = FileHash(hash) if hash else None
-            result.size = int(size_str) if size_str else None
-            result.dist = self
-            return result
-
-        return file_lines and starmap(make_file, csv.reader(file_lines))
-
-    def _read_files_distinfo(self):
-        """
-        Read the lines of RECORD
-        """
-        text = self.read_text('RECORD')
-        return text and text.splitlines()
-
-    def _read_files_egginfo(self):
-        """
-        SOURCES.txt might contain literal commas, so wrap each line
-        in quotes.
-        """
-        text = self.read_text('SOURCES.txt')
-        return text and map('"{}"'.format, text.splitlines())
-
-    @property
-    def requires(self):
-        """Generated requirements specified for this Distribution"""
-        return self._read_dist_info_reqs() or self._read_egg_info_reqs()
-
-    def _read_dist_info_reqs(self):
-        spec = self.metadata['Requires-Dist']
-        return spec and filter(None, spec.splitlines())
-
-    def _read_egg_info_reqs(self):
-        source = self.read_text('requires.txt')
-        return source and self._deps_from_requires_text(source)
-
-    @classmethod
-    def _deps_from_requires_text(cls, source):
-        section_pairs = cls._read_sections(source.splitlines())
-        sections = {
-            section: list(map(operator.itemgetter('line'), results))
-            for section, results in
-            itertools.groupby(section_pairs, operator.itemgetter('section'))
-            }
-        return cls._convert_egg_info_reqs_to_simple_reqs(sections)
-
-    @staticmethod
-    def _read_sections(lines):
-        section = None
-        for line in filter(None, lines):
-            section_match = re.match(r'\[(.*)\]$', line)
-            if section_match:
-                section = section_match.group(1)
-                continue
-            yield locals()
-
-    @staticmethod
-    def _convert_egg_info_reqs_to_simple_reqs(sections):
-        """
-        Historically, setuptools would solicit and store 'extra'
-        requirements, including those with environment markers,
-        in separate sections. More modern tools expect each
-        dependency to be defined separately, with any relevant
-        extras and environment markers attached directly to that
-        requirement. This method converts the former to the
-        latter. See _test_deps_from_requires_text for an example.
-        """
-        def make_condition(name):
-            return name and 'extra == "{name}"'.format(name=name)
-
-        def parse_condition(section):
-            section = section or ''
-            extra, sep, markers = section.partition(':')
-            if extra and markers:
-                markers = '({markers})'.format(markers=markers)
-            conditions = list(filter(None, [markers, make_condition(extra)]))
-            return '; ' + ' and '.join(conditions) if conditions else ''
-
-        for section, deps in sections.items():
-            for dep in deps:
-                yield dep + parse_condition(section)
-
-
-def distribution(package):
-    """Get the ``Distribution`` instance for the given package.
-
-    :param package: The name of the package as a string.
-    :return: A ``Distribution`` instance (or subclass thereof).
-    """
-    return Distribution.from_name(package)
-
-
-def distributions():
-    """Get all ``Distribution`` instances in the current environment.
-
-    :return: An iterable of ``Distribution`` instances.
-    """
-    return Distribution.discover()
-
-
-def local_distribution():
-    """Get the ``Distribution`` instance for the package in CWD.
-
-    :return: A ``Distribution`` instance (or subclass thereof).
-    """
-    return Distribution.find_local()
-
-
-def metadata(package):
-    """Get the metadata for the package.
-
-    :param package: The name of the distribution package to query.
-    :return: An email.Message containing the parsed metadata.
-    """
-    return Distribution.from_name(package).metadata
-
-
-def version(package):
-    """Get the version string for the named package.
-
-    :param package: The name of the distribution package to query.
-    :return: The version string for the package as defined in the package's
-        "Version" metadata key.
-    """
-    return distribution(package).version
-
-
-def entry_points():
-    """Return EntryPoint objects for all installed packages.
-
-    :return: EntryPoint objects for all installed packages.
-    """
-    eps = itertools.chain.from_iterable(
-        dist.entry_points for dist in distributions())
-    by_group = operator.attrgetter('group')
-    ordered = sorted(eps, key=by_group)
-    grouped = itertools.groupby(ordered, by_group)
-    return {
-        group: tuple(eps)
-        for group, eps in grouped
-        }
-
-
-def files(package):
-    return distribution(package).files
-
-
-def requires(package):
-    """
-    Return a list of requirements for the indicated distribution.
-
-    :return: An iterator of requirements, suitable for
-    packaging.requirement.Requirement.
-    """
-    return distribution(package).requires
index 22529b1cc88e2a0410da9875a600ffdbdaf4897a..bb5c6760f555748ae99810eaebb50f71306d28db 100644 (file)
@@ -3,12 +3,14 @@
 import re
 import textwrap
 import unittest
-import importlib
+import importlib.metadata
 
 from . import fixtures
 from importlib.metadata import (
-    Distribution, PackageNotFoundError, api, distributions,
-    entry_points, metadata, version)
+    Distribution, EntryPoint,
+    PackageNotFoundError, distributions,
+    entry_points, metadata, version,
+    )
 
 
 class BasicTests(fixtures.DistInfoPkg, unittest.TestCase):
@@ -40,12 +42,12 @@ class ImportTests(fixtures.DistInfoPkg, unittest.TestCase):
         self.assertEqual(ep.load().__name__, "main")
 
     def test_resolve_without_attr(self):
-        ep = api.EntryPoint(
+        ep = EntryPoint(
             name='ep',
-            value='importlib.metadata.api',
+            value='importlib.metadata',
             group='grp',
             )
-        assert ep.load() is api
+        assert ep.load() is importlib.metadata
 
 
 class NameNormalizationTests(fixtures.SiteDir, unittest.TestCase):
@@ -144,7 +146,7 @@ class DiscoveryTests(fixtures.EggInfoPkg,
         assert all(
             isinstance(dist, Distribution)
             for dist in dists
-            )
+            ), dists
         assert any(
             dist.metadata['Name'] == 'egginfo-pkg'
             for dist in dists
index f837a6343eb8420e9bcead96be536e2470091876..36c812da752dd09a57f2894fa6a687a97fa8537f 100644 (file)
@@ -7,9 +7,8 @@ from collections.abc import Iterator
 from . import fixtures
 from importlib.metadata import (
     Distribution, PackageNotFoundError, distribution,
-    entry_points, files, metadata, requires, version,
+    entry_points, files, local_distribution, metadata, requires, version,
     )
-from importlib.metadata.api import local_distribution
 
 
 class APITests(
index db39e190ea7ac9d51033e8809f2ab147cfaa650f..22da01630810c8020d53e3f22ea7f508d30bad6c 100644 (file)
@@ -48,6 +48,7 @@ class TestEgg(TestZip):
         egg = self.resources.enter_context(
             path(self.root, 'example-21.12-py3.6.egg'))
         sys.path.insert(0, str(egg))
+        print('***', sys.path)
         self.resources.callback(sys.path.pop, 0)
 
     def test_files(self):
index e0bbb8588fb261e355fda2d22209e45dff997169..19c96a3cbc0fc32c18a3ae956f86a71f01b7c7d9 100644 (file)
@@ -2260,570 +2260,570 @@ const unsigned char _Py_M__importlib_bootstrap_external[] = {
     115,46,112,97,116,104,41,46,10,32,32,32,32,32,32,32,
     32,114,73,0,0,0,78,41,1,218,16,80,97,116,104,68,
     105,115,116,114,105,98,117,116,105,111,110,122,2,46,42,41,
-    8,218,2,114,101,90,25,105,109,112,111,114,116,108,105,98,
-    46,109,101,116,97,100,97,116,97,46,95,104,111,111,107,115,
-    114,59,1,0,0,114,8,0,0,0,114,44,0,0,0,90,
-    6,101,115,99,97,112,101,218,13,95,115,101,97,114,99,104,
-    95,112,97,116,104,115,218,3,109,97,112,41,7,114,193,0,
-    0,0,114,117,0,0,0,114,44,0,0,0,114,60,1,0,
-    0,114,59,1,0,0,218,7,112,97,116,116,101,114,110,90,
-    5,102,111,117,110,100,114,3,0,0,0,114,3,0,0,0,
-    114,6,0,0,0,218,18,102,105,110,100,95,100,105,115,116,
-    114,105,98,117,116,105,111,110,115,84,5,0,0,115,14,0,
-    0,0,0,7,8,1,12,1,8,1,6,1,22,1,12,1,
-    122,29,80,97,116,104,70,105,110,100,101,114,46,102,105,110,
-    100,95,100,105,115,116,114,105,98,117,116,105,111,110,115,99,
-    3,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,
-    6,0,0,0,3,0,0,0,115,44,0,0,0,100,1,100,
-    2,108,0,125,3,124,3,106,1,160,2,135,0,135,1,102,
-    2,100,3,100,4,132,8,116,3,136,0,106,4,124,2,131,
-    2,68,0,131,1,161,1,83,0,41,5,122,67,10,32,32,
-    32,32,32,32,32,32,70,105,110,100,32,109,101,116,97,100,
-    97,116,97,32,100,105,114,101,99,116,111,114,105,101,115,32,
-    105,110,32,112,97,116,104,115,32,104,101,117,114,105,115,116,
-    105,99,97,108,108,121,46,10,32,32,32,32,32,32,32,32,
-    114,73,0,0,0,78,99,1,0,0,0,0,0,0,0,0,
-    0,0,0,2,0,0,0,5,0,0,0,51,0,0,0,115,
-    26,0,0,0,124,0,93,18,125,1,136,0,160,0,124,1,
-    136,1,161,2,86,0,1,0,113,2,100,0,83,0,114,110,
-    0,0,0,41,1,218,12,95,115,101,97,114,99,104,95,112,
-    97,116,104,41,2,114,32,0,0,0,114,44,0,0,0,169,
-    2,114,193,0,0,0,114,63,1,0,0,114,3,0,0,0,
-    114,6,0,0,0,114,19,1,0,0,105,5,0,0,115,4,
-    0,0,0,4,2,2,255,122,43,80,97,116,104,70,105,110,
-    100,101,114,46,95,115,101,97,114,99,104,95,112,97,116,104,
-    115,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,
-    120,112,114,62,41,5,218,9,105,116,101,114,116,111,111,108,
-    115,90,5,99,104,97,105,110,90,13,102,114,111,109,95,105,
-    116,101,114,97,98,108,101,114,62,1,0,0,218,12,95,115,
-    119,105,116,99,104,95,112,97,116,104,41,4,114,193,0,0,
-    0,114,63,1,0,0,90,5,112,97,116,104,115,114,67,1,
-    0,0,114,3,0,0,0,114,66,1,0,0,114,6,0,0,
-    0,114,61,1,0,0,99,5,0,0,115,8,0,0,0,0,
-    5,8,1,18,2,10,254,122,24,80,97,116,104,70,105,110,
+    8,218,2,114,101,90,18,105,109,112,111,114,116,108,105,98,
+    46,109,101,116,97,100,97,116,97,114,59,1,0,0,114,8,
+    0,0,0,114,44,0,0,0,90,6,101,115,99,97,112,101,
+    218,13,95,115,101,97,114,99,104,95,112,97,116,104,115,218,
+    3,109,97,112,41,7,114,193,0,0,0,114,117,0,0,0,
+    114,44,0,0,0,114,60,1,0,0,114,59,1,0,0,218,
+    7,112,97,116,116,101,114,110,90,5,102,111,117,110,100,114,
+    3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,18,
+    102,105,110,100,95,100,105,115,116,114,105,98,117,116,105,111,
+    110,115,84,5,0,0,115,14,0,0,0,0,7,8,1,12,
+    1,8,1,6,1,22,1,12,1,122,29,80,97,116,104,70,
+    105,110,100,101,114,46,102,105,110,100,95,100,105,115,116,114,
+    105,98,117,116,105,111,110,115,99,3,0,0,0,0,0,0,
+    0,0,0,0,0,4,0,0,0,6,0,0,0,3,0,0,
+    0,115,44,0,0,0,100,1,100,2,108,0,125,3,124,3,
+    106,1,160,2,135,0,135,1,102,2,100,3,100,4,132,8,
+    116,3,136,0,106,4,124,2,131,2,68,0,131,1,161,1,
+    83,0,41,5,122,67,10,32,32,32,32,32,32,32,32,70,
+    105,110,100,32,109,101,116,97,100,97,116,97,32,100,105,114,
+    101,99,116,111,114,105,101,115,32,105,110,32,112,97,116,104,
+    115,32,104,101,117,114,105,115,116,105,99,97,108,108,121,46,
+    10,32,32,32,32,32,32,32,32,114,73,0,0,0,78,99,
+    1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+    5,0,0,0,51,0,0,0,115,26,0,0,0,124,0,93,
+    18,125,1,136,0,160,0,124,1,136,1,161,2,86,0,1,
+    0,113,2,100,0,83,0,114,110,0,0,0,41,1,218,12,
+    95,115,101,97,114,99,104,95,112,97,116,104,41,2,114,32,
+    0,0,0,114,44,0,0,0,169,2,114,193,0,0,0,114,
+    63,1,0,0,114,3,0,0,0,114,6,0,0,0,114,19,
+    1,0,0,105,5,0,0,115,4,0,0,0,4,2,2,255,
+    122,43,80,97,116,104,70,105,110,100,101,114,46,95,115,101,
+    97,114,99,104,95,112,97,116,104,115,46,60,108,111,99,97,
+    108,115,62,46,60,103,101,110,101,120,112,114,62,41,5,218,
+    9,105,116,101,114,116,111,111,108,115,90,5,99,104,97,105,
+    110,90,13,102,114,111,109,95,105,116,101,114,97,98,108,101,
+    114,62,1,0,0,218,12,95,115,119,105,116,99,104,95,112,
+    97,116,104,41,4,114,193,0,0,0,114,63,1,0,0,90,
+    5,112,97,116,104,115,114,67,1,0,0,114,3,0,0,0,
+    114,66,1,0,0,114,6,0,0,0,114,61,1,0,0,99,
+    5,0,0,115,8,0,0,0,0,5,8,1,18,2,10,254,
+    122,24,80,97,116,104,70,105,110,100,101,114,46,95,115,101,
+    97,114,99,104,95,112,97,116,104,115,99,1,0,0,0,0,
+    0,0,0,0,0,0,0,4,0,0,0,10,0,0,0,67,
+    0,0,0,115,78,0,0,0,100,1,100,2,108,0,109,1,
+    125,1,1,0,100,1,100,0,108,2,125,2,100,1,100,3,
+    108,3,109,4,125,3,1,0,124,1,116,5,131,1,143,24,
+    1,0,124,2,160,4,124,0,161,1,87,0,2,0,53,0,
+    81,0,82,0,163,0,83,0,81,0,82,0,88,0,124,3,
+    124,0,131,1,83,0,41,4,78,114,73,0,0,0,41,1,
+    218,8,115,117,112,112,114,101,115,115,41,1,218,4,80,97,
+    116,104,41,6,90,10,99,111,110,116,101,120,116,108,105,98,
+    114,69,1,0,0,218,7,122,105,112,102,105,108,101,90,7,
+    112,97,116,104,108,105,98,114,70,1,0,0,218,9,69,120,
+    99,101,112,116,105,111,110,41,4,114,44,0,0,0,114,69,
+    1,0,0,114,71,1,0,0,114,70,1,0,0,114,3,0,
+    0,0,114,3,0,0,0,114,6,0,0,0,114,68,1,0,
+    0,110,5,0,0,115,12,0,0,0,0,2,12,1,8,1,
+    12,1,10,1,28,1,122,23,80,97,116,104,70,105,110,100,
+    101,114,46,95,115,119,105,116,99,104,95,112,97,116,104,99,
+    4,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
+    5,0,0,0,67,0,0,0,115,32,0,0,0,100,1,100,
+    0,108,0,125,4,124,4,106,1,124,1,116,2,124,3,106,
+    3,131,1,124,4,106,4,100,2,141,3,83,0,41,3,78,
+    114,73,0,0,0,41,1,114,83,0,0,0,41,5,114,60,
+    1,0,0,90,5,109,97,116,99,104,114,85,0,0,0,114,
+    117,0,0,0,90,10,73,71,78,79,82,69,67,65,83,69,
+    41,5,114,193,0,0,0,114,63,1,0,0,218,4,114,111,
+    111,116,114,41,1,0,0,114,60,1,0,0,114,3,0,0,
+    0,114,3,0,0,0,114,6,0,0,0,218,10,95,112,114,
+    101,100,105,99,97,116,101,119,5,0,0,115,4,0,0,0,
+    0,2,8,1,122,21,80,97,116,104,70,105,110,100,101,114,
+    46,95,112,114,101,100,105,99,97,116,101,99,3,0,0,0,
+    0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,
+    3,0,0,0,115,64,0,0,0,136,2,160,0,161,0,115,
+    12,100,1,83,0,124,2,160,1,100,2,100,3,161,2,125,
+    3,136,0,106,2,106,3,124,3,100,4,141,1,137,1,135,
+    0,135,1,135,2,102,3,100,5,100,6,132,8,136,2,160,
+    4,161,0,68,0,131,1,83,0,41,7,78,114,3,0,0,
+    0,250,1,45,114,45,0,0,0,41,1,114,63,1,0,0,
+    99,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+    0,6,0,0,0,51,0,0,0,115,32,0,0,0,124,0,
+    93,24,125,1,136,0,160,0,136,1,136,2,124,1,161,3,
+    114,26,124,1,86,0,1,0,113,2,100,0,83,0,114,110,
+    0,0,0,41,1,114,74,1,0,0,41,2,114,32,0,0,
+    0,114,41,1,0,0,169,3,114,193,0,0,0,90,7,109,
+    97,116,99,104,101,114,114,73,1,0,0,114,3,0,0,0,
+    114,6,0,0,0,114,19,1,0,0,130,5,0,0,115,6,
+    0,0,0,4,0,2,1,14,255,122,42,80,97,116,104,70,
+    105,110,100,101,114,46,95,115,101,97,114,99,104,95,112,97,
+    116,104,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
+    101,120,112,114,62,41,5,90,6,105,115,95,100,105,114,114,
+    67,0,0,0,218,15,115,101,97,114,99,104,95,116,101,109,
+    112,108,97,116,101,114,62,0,0,0,90,7,105,116,101,114,
+    100,105,114,41,4,114,193,0,0,0,114,73,1,0,0,114,
+    63,1,0,0,90,10,110,111,114,109,97,108,105,122,101,100,
+    114,3,0,0,0,114,76,1,0,0,114,6,0,0,0,114,
+    65,1,0,0,124,5,0,0,115,10,0,0,0,0,2,8,
+    1,4,1,12,1,14,1,122,23,80,97,116,104,70,105,110,
     100,101,114,46,95,115,101,97,114,99,104,95,112,97,116,104,
-    115,99,1,0,0,0,0,0,0,0,0,0,0,0,4,0,
-    0,0,10,0,0,0,67,0,0,0,115,78,0,0,0,100,
-    1,100,2,108,0,109,1,125,1,1,0,100,1,100,0,108,
-    2,125,2,100,1,100,3,108,3,109,4,125,3,1,0,124,
-    1,116,5,131,1,143,24,1,0,124,2,160,4,124,0,161,
-    1,87,0,2,0,53,0,81,0,82,0,163,0,83,0,81,
-    0,82,0,88,0,124,3,124,0,131,1,83,0,41,4,78,
-    114,73,0,0,0,41,1,218,8,115,117,112,112,114,101,115,
-    115,41,1,218,4,80,97,116,104,41,6,90,10,99,111,110,
-    116,101,120,116,108,105,98,114,69,1,0,0,218,7,122,105,
-    112,102,105,108,101,90,7,112,97,116,104,108,105,98,114,70,
-    1,0,0,218,9,69,120,99,101,112,116,105,111,110,41,4,
-    114,44,0,0,0,114,69,1,0,0,114,71,1,0,0,114,
-    70,1,0,0,114,3,0,0,0,114,3,0,0,0,114,6,
-    0,0,0,114,68,1,0,0,110,5,0,0,115,12,0,0,
-    0,0,2,12,1,8,1,12,1,10,1,28,1,122,23,80,
-    97,116,104,70,105,110,100,101,114,46,95,115,119,105,116,99,
-    104,95,112,97,116,104,99,4,0,0,0,0,0,0,0,0,
-    0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,
-    32,0,0,0,100,1,100,0,108,0,125,4,124,4,106,1,
-    124,1,116,2,124,3,106,3,131,1,124,4,106,4,100,2,
-    141,3,83,0,41,3,78,114,73,0,0,0,41,1,114,83,
-    0,0,0,41,5,114,60,1,0,0,90,5,109,97,116,99,
-    104,114,85,0,0,0,114,117,0,0,0,90,10,73,71,78,
-    79,82,69,67,65,83,69,41,5,114,193,0,0,0,114,63,
-    1,0,0,218,4,114,111,111,116,114,41,1,0,0,114,60,
-    1,0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,
-    0,0,218,10,95,112,114,101,100,105,99,97,116,101,119,5,
-    0,0,115,4,0,0,0,0,2,8,1,122,21,80,97,116,
-    104,70,105,110,100,101,114,46,95,112,114,101,100,105,99,97,
-    116,101,99,3,0,0,0,0,0,0,0,0,0,0,0,4,
-    0,0,0,4,0,0,0,3,0,0,0,115,64,0,0,0,
-    136,2,160,0,161,0,115,12,100,1,83,0,124,2,160,1,
-    100,2,100,3,161,2,125,3,136,0,106,2,106,3,124,3,
-    100,4,141,1,137,1,135,0,135,1,135,2,102,3,100,5,
-    100,6,132,8,136,2,160,4,161,0,68,0,131,1,83,0,
-    41,7,78,114,3,0,0,0,250,1,45,114,45,0,0,0,
-    41,1,114,63,1,0,0,99,1,0,0,0,0,0,0,0,
-    0,0,0,0,2,0,0,0,6,0,0,0,51,0,0,0,
-    115,32,0,0,0,124,0,93,24,125,1,136,0,160,0,136,
-    1,136,2,124,1,161,3,114,26,124,1,86,0,1,0,113,
-    2,100,0,83,0,114,110,0,0,0,41,1,114,74,1,0,
-    0,41,2,114,32,0,0,0,114,41,1,0,0,169,3,114,
-    193,0,0,0,90,7,109,97,116,99,104,101,114,114,73,1,
-    0,0,114,3,0,0,0,114,6,0,0,0,114,19,1,0,
-    0,130,5,0,0,115,6,0,0,0,4,0,2,1,14,255,
-    122,42,80,97,116,104,70,105,110,100,101,114,46,95,115,101,
-    97,114,99,104,95,112,97,116,104,46,60,108,111,99,97,108,
-    115,62,46,60,103,101,110,101,120,112,114,62,41,5,90,6,
-    105,115,95,100,105,114,114,67,0,0,0,218,15,115,101,97,
-    114,99,104,95,116,101,109,112,108,97,116,101,114,62,0,0,
-    0,90,7,105,116,101,114,100,105,114,41,4,114,193,0,0,
-    0,114,73,1,0,0,114,63,1,0,0,90,10,110,111,114,
-    109,97,108,105,122,101,100,114,3,0,0,0,114,76,1,0,
-    0,114,6,0,0,0,114,65,1,0,0,124,5,0,0,115,
-    10,0,0,0,0,2,8,1,4,1,12,1,14,1,122,23,
-    80,97,116,104,70,105,110,100,101,114,46,95,115,101,97,114,
-    99,104,95,112,97,116,104,41,1,78,41,2,78,78,41,1,
-    78,41,2,78,78,41,19,114,125,0,0,0,114,124,0,0,
-    0,114,126,0,0,0,114,127,0,0,0,114,207,0,0,0,
-    114,46,1,0,0,114,52,1,0,0,114,54,1,0,0,114,
-    55,1,0,0,114,58,1,0,0,114,203,0,0,0,114,206,
-    0,0,0,114,77,1,0,0,114,64,1,0,0,114,61,1,
-    0,0,218,12,115,116,97,116,105,99,109,101,116,104,111,100,
-    114,68,1,0,0,114,74,1,0,0,114,65,1,0,0,114,
-    3,0,0,0,114,3,0,0,0,114,3,0,0,0,114,6,
-    0,0,0,114,45,1,0,0,205,4,0,0,115,52,0,0,
-    0,8,2,4,2,2,1,10,9,2,1,10,12,2,1,10,
-    21,2,1,10,14,2,1,12,31,2,1,12,23,2,1,12,
-    12,4,2,2,1,12,14,2,1,10,10,2,1,10,8,2,
-    1,10,4,2,1,114,45,1,0,0,99,0,0,0,0,0,
-    0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,
-    0,0,0,115,90,0,0,0,101,0,90,1,100,0,90,2,
-    100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,
-    132,0,90,5,101,6,90,7,100,6,100,7,132,0,90,8,
-    100,8,100,9,132,0,90,9,100,19,100,11,100,12,132,1,
-    90,10,100,13,100,14,132,0,90,11,101,12,100,15,100,16,
-    132,0,131,1,90,13,100,17,100,18,132,0,90,14,100,10,
-    83,0,41,20,218,10,70,105,108,101,70,105,110,100,101,114,
-    122,172,70,105,108,101,45,98,97,115,101,100,32,102,105,110,
-    100,101,114,46,10,10,32,32,32,32,73,110,116,101,114,97,
-    99,116,105,111,110,115,32,119,105,116,104,32,116,104,101,32,
-    102,105,108,101,32,115,121,115,116,101,109,32,97,114,101,32,
-    99,97,99,104,101,100,32,102,111,114,32,112,101,114,102,111,
-    114,109,97,110,99,101,44,32,98,101,105,110,103,10,32,32,
-    32,32,114,101,102,114,101,115,104,101,100,32,119,104,101,110,
-    32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,116,
-    104,101,32,102,105,110,100,101,114,32,105,115,32,104,97,110,
-    100,108,105,110,103,32,104,97,115,32,98,101,101,110,32,109,
-    111,100,105,102,105,101,100,46,10,10,32,32,32,32,99,2,
-    0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,6,
-    0,0,0,7,0,0,0,115,84,0,0,0,103,0,125,3,
-    124,2,68,0,93,32,92,2,137,0,125,4,124,3,160,0,
-    135,0,102,1,100,1,100,2,132,8,124,4,68,0,131,1,
-    161,1,1,0,113,8,124,3,124,0,95,1,124,1,112,54,
-    100,3,124,0,95,2,100,4,124,0,95,3,116,4,131,0,
-    124,0,95,5,116,4,131,0,124,0,95,6,100,5,83,0,
-    41,6,122,154,73,110,105,116,105,97,108,105,122,101,32,119,
-    105,116,104,32,116,104,101,32,112,97,116,104,32,116,111,32,
-    115,101,97,114,99,104,32,111,110,32,97,110,100,32,97,32,
-    118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,
-    111,102,10,32,32,32,32,32,32,32,32,50,45,116,117,112,
-    108,101,115,32,99,111,110,116,97,105,110,105,110,103,32,116,
-    104,101,32,108,111,97,100,101,114,32,97,110,100,32,116,104,
-    101,32,102,105,108,101,32,115,117,102,102,105,120,101,115,32,
-    116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,32,
-    32,32,32,114,101,99,111,103,110,105,122,101,115,46,99,1,
-    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,
-    0,0,0,51,0,0,0,115,22,0,0,0,124,0,93,14,
-    125,1,124,1,136,0,102,2,86,0,1,0,113,2,100,0,
-    83,0,114,110,0,0,0,114,3,0,0,0,114,16,1,0,
-    0,169,1,114,140,0,0,0,114,3,0,0,0,114,6,0,
-    0,0,114,19,1,0,0,149,5,0,0,115,4,0,0,0,
-    4,0,2,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,71,0,0,
-    0,114,105,0,0,0,78,41,7,114,167,0,0,0,218,8,
-    95,108,111,97,100,101,114,115,114,44,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,119,0,0,0,114,44,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,189,0,0,0,114,3,0,0,0,
-    114,80,1,0,0,114,6,0,0,0,114,209,0,0,0,143,
-    5,0,0,115,16,0,0,0,0,4,4,1,12,1,26,1,
-    6,2,10,1,6,1,8,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,0,0,0,0,1,0,0,0,2,0,
-    0,0,67,0,0,0,115,10,0,0,0,100,1,124,0,95,
-    0,100,2,83,0,41,3,122,31,73,110,118,97,108,105,100,
-    97,116,101,32,116,104,101,32,100,105,114,101,99,116,111,114,
-    121,32,109,116,105,109,101,46,114,105,0,0,0,78,41,1,
-    114,82,1,0,0,114,246,0,0,0,114,3,0,0,0,114,
-    3,0,0,0,114,6,0,0,0,114,46,1,0,0,157,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,
-    0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,
-    115,42,0,0,0,124,0,160,0,124,1,161,1,125,2,124,
-    2,100,1,107,8,114,26,100,1,103,0,102,2,83,0,124,
-    2,106,1,124,2,106,2,112,38,103,0,102,2,83,0,41,
-    2,122,197,84,114,121,32,116,111,32,102,105,110,100,32,97,
-    32,108,111,97,100,101,114,32,102,111,114,32,116,104,101,32,
-    115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,
-    44,32,111,114,32,116,104,101,32,110,97,109,101,115,112,97,
-    99,101,10,32,32,32,32,32,32,32,32,112,97,99,107,97,
-    103,101,32,112,111,114,116,105,111,110,115,46,32,82,101,116,
-    117,114,110,115,32,40,108,111,97,100,101,114,44,32,108,105,
-    115,116,45,111,102,45,112,111,114,116,105,111,110,115,41,46,
-    10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,
-    101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,
-    116,101,100,46,32,32,85,115,101,32,102,105,110,100,95,115,
-    112,101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,
-    32,32,32,32,32,32,32,32,78,41,3,114,203,0,0,0,
-    114,140,0,0,0,114,178,0,0,0,41,3,114,119,0,0,
-    0,114,139,0,0,0,114,187,0,0,0,114,3,0,0,0,
-    114,3,0,0,0,114,6,0,0,0,114,137,0,0,0,163,
-    5,0,0,115,8,0,0,0,0,7,10,1,8,1,8,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,0,0,0,0,7,0,0,0,6,0,0,0,67,0,0,
-    0,115,26,0,0,0,124,1,124,2,124,3,131,2,125,6,
-    116,0,124,2,124,3,124,6,124,4,100,1,141,4,83,0,
-    41,2,78,114,177,0,0,0,41,1,114,190,0,0,0,41,
-    7,114,119,0,0,0,114,188,0,0,0,114,139,0,0,0,
-    114,44,0,0,0,90,4,115,109,115,108,114,202,0,0,0,
-    114,140,0,0,0,114,3,0,0,0,114,3,0,0,0,114,
-    6,0,0,0,114,58,1,0,0,175,5,0,0,115,8,0,
-    0,0,0,1,10,1,8,1,2,255,122,20,70,105,108,101,
-    70,105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,
-    78,99,3,0,0,0,0,0,0,0,0,0,0,0,14,0,
-    0,0,8,0,0,0,67,0,0,0,115,102,1,0,0,100,
-    1,125,3,124,1,160,0,100,2,161,1,100,3,25,0,125,
-    4,122,24,116,1,124,0,106,2,112,34,116,3,160,4,161,
-    0,131,1,106,5,125,5,87,0,110,24,4,0,116,6,107,
-    10,114,66,1,0,1,0,1,0,100,4,125,5,89,0,110,
-    2,88,0,124,5,124,0,106,7,107,3,114,92,124,0,160,
-    8,161,0,1,0,124,5,124,0,95,7,116,9,131,0,114,
-    114,124,0,106,10,125,6,124,4,160,11,161,0,125,7,110,
-    10,124,0,106,12,125,6,124,4,125,7,124,7,124,6,107,
-    6,114,218,116,13,124,0,106,2,124,4,131,2,125,8,124,
-    0,106,14,68,0,93,58,92,2,125,9,125,10,100,5,124,
-    9,23,0,125,11,116,13,124,8,124,11,131,2,125,12,116,
-    15,124,12,131,1,114,208,124,0,160,16,124,10,124,1,124,
-    12,124,8,103,1,124,2,161,5,2,0,1,0,83,0,113,
-    150,116,17,124,8,131,1,125,3,124,0,106,14,68,0,93,
-    86,92,2,125,9,125,10,116,13,124,0,106,2,124,4,124,
-    9,23,0,131,2,125,12,116,18,106,19,100,6,124,12,100,
-    3,100,7,141,3,1,0,124,7,124,9,23,0,124,6,107,
-    6,144,1,114,54,116,15,124,12,131,1,144,1,114,54,124,
-    0,160,16,124,10,124,1,124,12,100,8,124,2,161,5,2,
-    0,1,0,83,0,113,224,124,3,144,1,114,98,116,18,160,
-    19,100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,
-    8,161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,
-    0,100,8,83,0,41,10,122,111,84,114,121,32,116,111,32,
-    102,105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,
-    116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,
-    100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,
-    101,116,117,114,110,115,32,116,104,101,32,109,97,116,99,104,
-    105,110,103,32,115,112,101,99,44,32,111,114,32,78,111,110,
-    101,32,105,102,32,110,111,116,32,102,111,117,110,100,46,10,
-    32,32,32,32,32,32,32,32,70,114,71,0,0,0,114,28,
-    0,0,0,114,105,0,0,0,114,209,0,0,0,122,9,116,
-    114,121,105,110,103,32,123,125,41,1,90,9,118,101,114,98,
-    111,115,105,116,121,78,122,25,112,111,115,115,105,98,108,101,
-    32,110,97,109,101,115,112,97,99,101,32,102,111,114,32,123,
-    125,41,22,114,41,0,0,0,114,49,0,0,0,114,44,0,
-    0,0,114,2,0,0,0,114,55,0,0,0,114,9,1,0,
-    0,114,50,0,0,0,114,82,1,0,0,218,11,95,102,105,
-    108,108,95,99,97,99,104,101,114,7,0,0,0,114,85,1,
-    0,0,114,106,0,0,0,114,84,1,0,0,114,38,0,0,
-    0,114,81,1,0,0,114,54,0,0,0,114,58,1,0,0,
-    114,56,0,0,0,114,134,0,0,0,114,149,0,0,0,114,
-    183,0,0,0,114,178,0,0,0,41,14,114,119,0,0,0,
-    114,139,0,0,0,114,202,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,169,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,17,1,0,0,114,
-    188,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,187,
+    41,1,78,41,2,78,78,41,1,78,41,2,78,78,41,19,
+    114,125,0,0,0,114,124,0,0,0,114,126,0,0,0,114,
+    127,0,0,0,114,207,0,0,0,114,46,1,0,0,114,52,
+    1,0,0,114,54,1,0,0,114,55,1,0,0,114,58,1,
+    0,0,114,203,0,0,0,114,206,0,0,0,114,77,1,0,
+    0,114,64,1,0,0,114,61,1,0,0,218,12,115,116,97,
+    116,105,99,109,101,116,104,111,100,114,68,1,0,0,114,74,
+    1,0,0,114,65,1,0,0,114,3,0,0,0,114,3,0,
+    0,0,114,3,0,0,0,114,6,0,0,0,114,45,1,0,
+    0,205,4,0,0,115,52,0,0,0,8,2,4,2,2,1,
+    10,9,2,1,10,12,2,1,10,21,2,1,10,14,2,1,
+    12,31,2,1,12,23,2,1,12,12,4,2,2,1,12,14,
+    2,1,10,10,2,1,10,8,2,1,10,4,2,1,114,45,
+    1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,3,0,0,0,64,0,0,0,115,90,0,0,
+    0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,
+    3,132,0,90,4,100,4,100,5,132,0,90,5,101,6,90,
+    7,100,6,100,7,132,0,90,8,100,8,100,9,132,0,90,
+    9,100,19,100,11,100,12,132,1,90,10,100,13,100,14,132,
+    0,90,11,101,12,100,15,100,16,132,0,131,1,90,13,100,
+    17,100,18,132,0,90,14,100,10,83,0,41,20,218,10,70,
+    105,108,101,70,105,110,100,101,114,122,172,70,105,108,101,45,
+    98,97,115,101,100,32,102,105,110,100,101,114,46,10,10,32,
+    32,32,32,73,110,116,101,114,97,99,116,105,111,110,115,32,
+    119,105,116,104,32,116,104,101,32,102,105,108,101,32,115,121,
+    115,116,101,109,32,97,114,101,32,99,97,99,104,101,100,32,
+    102,111,114,32,112,101,114,102,111,114,109,97,110,99,101,44,
+    32,98,101,105,110,103,10,32,32,32,32,114,101,102,114,101,
+    115,104,101,100,32,119,104,101,110,32,116,104,101,32,100,105,
+    114,101,99,116,111,114,121,32,116,104,101,32,102,105,110,100,
+    101,114,32,105,115,32,104,97,110,100,108,105,110,103,32,104,
+    97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,100,
+    46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,0,
+    0,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,
+    115,84,0,0,0,103,0,125,3,124,2,68,0,93,32,92,
+    2,137,0,125,4,124,3,160,0,135,0,102,1,100,1,100,
+    2,132,8,124,4,68,0,131,1,161,1,1,0,113,8,124,
+    3,124,0,95,1,124,1,112,54,100,3,124,0,95,2,100,
+    4,124,0,95,3,116,4,131,0,124,0,95,5,116,4,131,
+    0,124,0,95,6,100,5,83,0,41,6,122,154,73,110,105,
+    116,105,97,108,105,122,101,32,119,105,116,104,32,116,104,101,
+    32,112,97,116,104,32,116,111,32,115,101,97,114,99,104,32,
+    111,110,32,97,110,100,32,97,32,118,97,114,105,97,98,108,
+    101,32,110,117,109,98,101,114,32,111,102,10,32,32,32,32,
+    32,32,32,32,50,45,116,117,112,108,101,115,32,99,111,110,
+    116,97,105,110,105,110,103,32,116,104,101,32,108,111,97,100,
+    101,114,32,97,110,100,32,116,104,101,32,102,105,108,101,32,
+    115,117,102,102,105,120,101,115,32,116,104,101,32,108,111,97,
+    100,101,114,10,32,32,32,32,32,32,32,32,114,101,99,111,
+    103,110,105,122,101,115,46,99,1,0,0,0,0,0,0,0,
+    0,0,0,0,2,0,0,0,3,0,0,0,51,0,0,0,
+    115,22,0,0,0,124,0,93,14,125,1,124,1,136,0,102,
+    2,86,0,1,0,113,2,100,0,83,0,114,110,0,0,0,
+    114,3,0,0,0,114,16,1,0,0,169,1,114,140,0,0,
+    0,114,3,0,0,0,114,6,0,0,0,114,19,1,0,0,
+    149,5,0,0,115,4,0,0,0,4,0,2,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,71,0,0,0,114,105,0,0,0,78,
+    41,7,114,167,0,0,0,218,8,95,108,111,97,100,101,114,
+    115,114,44,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,119,0,0,
+    0,114,44,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,
+    189,0,0,0,114,3,0,0,0,114,80,1,0,0,114,6,
+    0,0,0,114,209,0,0,0,143,5,0,0,115,16,0,0,
+    0,0,4,4,1,12,1,26,1,6,2,10,1,6,1,8,
+    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,0,
+    0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,
+    10,0,0,0,100,1,124,0,95,0,100,2,83,0,41,3,
+    122,31,73,110,118,97,108,105,100,97,116,101,32,116,104,101,
+    32,100,105,114,101,99,116,111,114,121,32,109,116,105,109,101,
+    46,114,105,0,0,0,78,41,1,114,82,1,0,0,114,246,
     0,0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,
-    0,0,114,203,0,0,0,180,5,0,0,115,74,0,0,0,
-    0,5,4,1,14,1,2,1,24,1,14,1,10,1,10,1,
-    8,1,6,2,6,1,6,1,10,2,6,1,4,2,8,1,
-    12,1,14,1,8,1,10,1,8,1,26,4,8,2,14,1,
-    16,1,16,1,14,1,10,1,10,1,2,0,2,255,10,2,
-    6,1,12,1,12,1,8,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,0,0,0,0,9,0,0,
-    0,10,0,0,0,67,0,0,0,115,190,0,0,0,124,0,
-    106,0,125,1,122,22,116,1,160,2,124,1,112,22,116,1,
-    160,3,161,0,161,1,125,2,87,0,110,30,4,0,116,4,
-    116,5,116,6,102,3,107,10,114,58,1,0,1,0,1,0,
-    103,0,125,2,89,0,110,2,88,0,116,7,106,8,160,9,
-    100,1,161,1,115,84,116,10,124,2,131,1,124,0,95,11,
-    110,74,116,10,131,0,125,3,124,2,68,0,93,56,125,4,
-    124,4,160,12,100,2,161,1,92,3,125,5,125,6,125,7,
-    124,6,114,136,100,3,160,13,124,5,124,7,160,14,161,0,
-    161,2,125,8,110,4,124,5,125,8,124,3,160,15,124,8,
-    161,1,1,0,113,94,124,3,124,0,95,11,116,7,106,8,
-    160,9,116,16,161,1,114,186,100,4,100,5,132,0,124,2,
-    68,0,131,1,124,0,95,17,100,6,83,0,41,7,122,68,
-    70,105,108,108,32,116,104,101,32,99,97,99,104,101,32,111,
-    102,32,112,111,116,101,110,116,105,97,108,32,109,111,100,117,
-    108,101,115,32,97,110,100,32,112,97,99,107,97,103,101,115,
-    32,102,111,114,32,116,104,105,115,32,100,105,114,101,99,116,
-    111,114,121,46,114,0,0,0,0,114,71,0,0,0,114,61,
-    0,0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,
-    2,0,0,0,4,0,0,0,83,0,0,0,115,20,0,0,
-    0,104,0,124,0,93,12,125,1,124,1,160,0,161,0,146,
-    2,113,4,83,0,114,3,0,0,0,41,1,114,106,0,0,
-    0,41,2,114,32,0,0,0,90,2,102,110,114,3,0,0,
-    0,114,3,0,0,0,114,6,0,0,0,218,9,60,115,101,
-    116,99,111,109,112,62,1,6,0,0,115,4,0,0,0,6,
-    0,2,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,44,0,0,0,114,2,0,0,0,114,6,1,0,0,
-    114,55,0,0,0,114,2,1,0,0,218,15,80,101,114,109,
-    105,115,115,105,111,110,69,114,114,111,114,218,18,78,111,116,
-    65,68,105,114,101,99,116,111,114,121,69,114,114,111,114,114,
-    8,0,0,0,114,9,0,0,0,114,10,0,0,0,114,83,
-    1,0,0,114,84,1,0,0,114,101,0,0,0,114,62,0,
-    0,0,114,106,0,0,0,218,3,97,100,100,114,11,0,0,
-    0,114,85,1,0,0,41,9,114,119,0,0,0,114,44,0,
-    0,0,114,7,1,0,0,90,21,108,111,119,101,114,95,115,
-    117,102,102,105,120,95,99,111,110,116,101,110,116,115,114,41,
-    1,0,0,114,117,0,0,0,114,29,1,0,0,114,17,1,
-    0,0,90,8,110,101,119,95,110,97,109,101,114,3,0,0,
-    0,114,3,0,0,0,114,6,0,0,0,114,87,1,0,0,
-    228,5,0,0,115,34,0,0,0,0,2,6,1,2,1,22,
-    1,20,3,10,3,12,1,12,7,6,1,8,1,16,1,4,
-    1,18,2,4,1,12,1,6,1,12,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,0,0,0,0,
-    3,0,0,0,3,0,0,0,7,0,0,0,115,18,0,0,
-    0,135,0,135,1,102,2,100,1,100,2,132,8,125,2,124,
-    2,83,0,41,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,0,0,0,0,1,0,0,0,4,
-    0,0,0,19,0,0,0,115,34,0,0,0,116,0,124,0,
-    131,1,115,20,116,1,100,1,124,0,100,2,141,2,130,1,
-    136,0,124,0,102,1,136,1,158,2,142,0,83,0,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,
-    48,0,0,0,41,2,114,56,0,0,0,114,118,0,0,0,
-    114,48,0,0,0,169,2,114,193,0,0,0,114,86,1,0,
-    0,114,3,0,0,0,114,6,0,0,0,218,24,112,97,116,
+    0,0,114,46,1,0,0,157,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,0,0,0,0,3,0,0,
+    0,3,0,0,0,67,0,0,0,115,42,0,0,0,124,0,
+    160,0,124,1,161,1,125,2,124,2,100,1,107,8,114,26,
+    100,1,103,0,102,2,83,0,124,2,106,1,124,2,106,2,
+    112,38,103,0,102,2,83,0,41,2,122,197,84,114,121,32,
+    116,111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,
+    32,102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,
+    101,100,32,109,111,100,117,108,101,44,32,111,114,32,116,104,
+    101,32,110,97,109,101,115,112,97,99,101,10,32,32,32,32,
+    32,32,32,32,112,97,99,107,97,103,101,32,112,111,114,116,
+    105,111,110,115,46,32,82,101,116,117,114,110,115,32,40,108,
+    111,97,100,101,114,44,32,108,105,115,116,45,111,102,45,112,
+    111,114,116,105,111,110,115,41,46,10,10,32,32,32,32,32,
+    32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,
+    115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85,
+    115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105,
+    110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,
+    32,78,41,3,114,203,0,0,0,114,140,0,0,0,114,178,
+    0,0,0,41,3,114,119,0,0,0,114,139,0,0,0,114,
+    187,0,0,0,114,3,0,0,0,114,3,0,0,0,114,6,
+    0,0,0,114,137,0,0,0,163,5,0,0,115,8,0,0,
+    0,0,7,10,1,8,1,8,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,0,0,0,0,7,0,
+    0,0,6,0,0,0,67,0,0,0,115,26,0,0,0,124,
+    1,124,2,124,3,131,2,125,6,116,0,124,2,124,3,124,
+    6,124,4,100,1,141,4,83,0,41,2,78,114,177,0,0,
+    0,41,1,114,190,0,0,0,41,7,114,119,0,0,0,114,
+    188,0,0,0,114,139,0,0,0,114,44,0,0,0,90,4,
+    115,109,115,108,114,202,0,0,0,114,140,0,0,0,114,3,
+    0,0,0,114,3,0,0,0,114,6,0,0,0,114,58,1,
+    0,0,175,5,0,0,115,8,0,0,0,0,1,10,1,8,
+    1,2,255,122,20,70,105,108,101,70,105,110,100,101,114,46,
+    95,103,101,116,95,115,112,101,99,78,99,3,0,0,0,0,
+    0,0,0,0,0,0,0,14,0,0,0,8,0,0,0,67,
+    0,0,0,115,102,1,0,0,100,1,125,3,124,1,160,0,
+    100,2,161,1,100,3,25,0,125,4,122,24,116,1,124,0,
+    106,2,112,34,116,3,160,4,161,0,131,1,106,5,125,5,
+    87,0,110,24,4,0,116,6,107,10,114,66,1,0,1,0,
+    1,0,100,4,125,5,89,0,110,2,88,0,124,5,124,0,
+    106,7,107,3,114,92,124,0,160,8,161,0,1,0,124,5,
+    124,0,95,7,116,9,131,0,114,114,124,0,106,10,125,6,
+    124,4,160,11,161,0,125,7,110,10,124,0,106,12,125,6,
+    124,4,125,7,124,7,124,6,107,6,114,218,116,13,124,0,
+    106,2,124,4,131,2,125,8,124,0,106,14,68,0,93,58,
+    92,2,125,9,125,10,100,5,124,9,23,0,125,11,116,13,
+    124,8,124,11,131,2,125,12,116,15,124,12,131,1,114,208,
+    124,0,160,16,124,10,124,1,124,12,124,8,103,1,124,2,
+    161,5,2,0,1,0,83,0,113,150,116,17,124,8,131,1,
+    125,3,124,0,106,14,68,0,93,86,92,2,125,9,125,10,
+    116,13,124,0,106,2,124,4,124,9,23,0,131,2,125,12,
+    116,18,106,19,100,6,124,12,100,3,100,7,141,3,1,0,
+    124,7,124,9,23,0,124,6,107,6,144,1,114,54,116,15,
+    124,12,131,1,144,1,114,54,124,0,160,16,124,10,124,1,
+    124,12,100,8,124,2,161,5,2,0,1,0,83,0,113,224,
+    124,3,144,1,114,98,116,18,160,19,100,9,124,8,161,2,
+    1,0,116,18,160,20,124,1,100,8,161,2,125,13,124,8,
+    103,1,124,13,95,21,124,13,83,0,100,8,83,0,41,10,
+    122,111,84,114,121,32,116,111,32,102,105,110,100,32,97,32,
+    115,112,101,99,32,102,111,114,32,116,104,101,32,115,112,101,
+    99,105,102,105,101,100,32,109,111,100,117,108,101,46,10,10,
+    32,32,32,32,32,32,32,32,82,101,116,117,114,110,115,32,
+    116,104,101,32,109,97,116,99,104,105,110,103,32,115,112,101,
+    99,44,32,111,114,32,78,111,110,101,32,105,102,32,110,111,
+    116,32,102,111,117,110,100,46,10,32,32,32,32,32,32,32,
+    32,70,114,71,0,0,0,114,28,0,0,0,114,105,0,0,
+    0,114,209,0,0,0,122,9,116,114,121,105,110,103,32,123,
+    125,41,1,90,9,118,101,114,98,111,115,105,116,121,78,122,
+    25,112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,
+    97,99,101,32,102,111,114,32,123,125,41,22,114,41,0,0,
+    0,114,49,0,0,0,114,44,0,0,0,114,2,0,0,0,
+    114,55,0,0,0,114,9,1,0,0,114,50,0,0,0,114,
+    82,1,0,0,218,11,95,102,105,108,108,95,99,97,99,104,
+    101,114,7,0,0,0,114,85,1,0,0,114,106,0,0,0,
+    114,84,1,0,0,114,38,0,0,0,114,81,1,0,0,114,
+    54,0,0,0,114,58,1,0,0,114,56,0,0,0,114,134,
+    0,0,0,114,149,0,0,0,114,183,0,0,0,114,178,0,
+    0,0,41,14,114,119,0,0,0,114,139,0,0,0,114,202,
+    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,169,
+    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,17,1,0,0,114,188,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,187,0,0,0,114,3,0,0,
+    0,114,3,0,0,0,114,6,0,0,0,114,203,0,0,0,
+    180,5,0,0,115,74,0,0,0,0,5,4,1,14,1,2,
+    1,24,1,14,1,10,1,10,1,8,1,6,2,6,1,6,
+    1,10,2,6,1,4,2,8,1,12,1,14,1,8,1,10,
+    1,8,1,26,4,8,2,14,1,16,1,16,1,14,1,10,
+    1,10,1,2,0,2,255,10,2,6,1,12,1,12,1,8,
+    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,0,0,0,0,9,0,0,0,10,0,0,0,67,0,
+    0,0,115,190,0,0,0,124,0,106,0,125,1,122,22,116,
+    1,160,2,124,1,112,22,116,1,160,3,161,0,161,1,125,
+    2,87,0,110,30,4,0,116,4,116,5,116,6,102,3,107,
+    10,114,58,1,0,1,0,1,0,103,0,125,2,89,0,110,
+    2,88,0,116,7,106,8,160,9,100,1,161,1,115,84,116,
+    10,124,2,131,1,124,0,95,11,110,74,116,10,131,0,125,
+    3,124,2,68,0,93,56,125,4,124,4,160,12,100,2,161,
+    1,92,3,125,5,125,6,125,7,124,6,114,136,100,3,160,
+    13,124,5,124,7,160,14,161,0,161,2,125,8,110,4,124,
+    5,125,8,124,3,160,15,124,8,161,1,1,0,113,94,124,
+    3,124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,
+    186,100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,
+    17,100,6,83,0,41,7,122,68,70,105,108,108,32,116,104,
+    101,32,99,97,99,104,101,32,111,102,32,112,111,116,101,110,
+    116,105,97,108,32,109,111,100,117,108,101,115,32,97,110,100,
+    32,112,97,99,107,97,103,101,115,32,102,111,114,32,116,104,
+    105,115,32,100,105,114,101,99,116,111,114,121,46,114,0,0,
+    0,0,114,71,0,0,0,114,61,0,0,0,99,1,0,0,
+    0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
+    0,83,0,0,0,115,20,0,0,0,104,0,124,0,93,12,
+    125,1,124,1,160,0,161,0,146,2,113,4,83,0,114,3,
+    0,0,0,41,1,114,106,0,0,0,41,2,114,32,0,0,
+    0,90,2,102,110,114,3,0,0,0,114,3,0,0,0,114,
+    6,0,0,0,218,9,60,115,101,116,99,111,109,112,62,1,
+    6,0,0,115,4,0,0,0,6,0,2,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,44,0,0,0,114,
+    2,0,0,0,114,6,1,0,0,114,55,0,0,0,114,2,
+    1,0,0,218,15,80,101,114,109,105,115,115,105,111,110,69,
+    114,114,111,114,218,18,78,111,116,65,68,105,114,101,99,116,
+    111,114,121,69,114,114,111,114,114,8,0,0,0,114,9,0,
+    0,0,114,10,0,0,0,114,83,1,0,0,114,84,1,0,
+    0,114,101,0,0,0,114,62,0,0,0,114,106,0,0,0,
+    218,3,97,100,100,114,11,0,0,0,114,85,1,0,0,41,
+    9,114,119,0,0,0,114,44,0,0,0,114,7,1,0,0,
+    90,21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,
+    111,110,116,101,110,116,115,114,41,1,0,0,114,117,0,0,
+    0,114,29,1,0,0,114,17,1,0,0,90,8,110,101,119,
+    95,110,97,109,101,114,3,0,0,0,114,3,0,0,0,114,
+    6,0,0,0,114,87,1,0,0,228,5,0,0,115,34,0,
+    0,0,0,2,6,1,2,1,22,1,20,3,10,3,12,1,
+    12,7,6,1,8,1,16,1,4,1,18,2,4,1,12,1,
+    6,1,12,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,0,0,0,0,3,0,0,0,3,0,0,
+    0,7,0,0,0,115,18,0,0,0,135,0,135,1,102,2,
+    100,1,100,2,132,8,125,2,124,2,83,0,41,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,
+    0,0,0,0,1,0,0,0,4,0,0,0,19,0,0,0,
+    115,34,0,0,0,116,0,124,0,131,1,115,20,116,1,100,
+    1,124,0,100,2,141,2,130,1,136,0,124,0,102,1,136,
+    1,158,2,142,0,83,0,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,48,0,0,0,41,2,114,
+    56,0,0,0,114,118,0,0,0,114,48,0,0,0,169,2,
+    114,193,0,0,0,114,86,1,0,0,114,3,0,0,0,114,
+    6,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,13,6,
+    0,0,115,6,0,0,0,0,2,8,1,12,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,13,6,0,0,115,6,0,0,0,0,2,
-    8,1,12,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,3,0,0,
-    0,41,3,114,193,0,0,0,114,86,1,0,0,114,93,1,
-    0,0,114,3,0,0,0,114,92,1,0,0,114,6,0,0,
-    0,218,9,112,97,116,104,95,104,111,111,107,3,6,0,0,
-    115,4,0,0,0,0,10,14,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,0,0,0,0,1,0,0,0,
-    3,0,0,0,67,0,0,0,115,12,0,0,0,100,1,160,
-    0,124,0,106,1,161,1,83,0,41,2,78,122,16,70,105,
-    108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2,
-    114,62,0,0,0,114,44,0,0,0,114,246,0,0,0,114,
-    3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,39,
-    1,0,0,21,6,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,1,78,41,15,114,125,0,0,0,114,124,0,
-    0,0,114,126,0,0,0,114,127,0,0,0,114,209,0,0,
-    0,114,46,1,0,0,114,143,0,0,0,114,206,0,0,0,
-    114,137,0,0,0,114,58,1,0,0,114,203,0,0,0,114,
-    87,1,0,0,114,207,0,0,0,114,94,1,0,0,114,39,
+    105,110,100,101,114,114,3,0,0,0,41,3,114,193,0,0,
+    0,114,86,1,0,0,114,93,1,0,0,114,3,0,0,0,
+    114,92,1,0,0,114,6,0,0,0,218,9,112,97,116,104,
+    95,104,111,111,107,3,6,0,0,115,4,0,0,0,0,10,
+    14,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,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
+    0,115,12,0,0,0,100,1,160,0,124,0,106,1,161,1,
+    83,0,41,2,78,122,16,70,105,108,101,70,105,110,100,101,
+    114,40,123,33,114,125,41,41,2,114,62,0,0,0,114,44,
+    0,0,0,114,246,0,0,0,114,3,0,0,0,114,3,0,
+    0,0,114,6,0,0,0,114,39,1,0,0,21,6,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,1,78,41,
+    15,114,125,0,0,0,114,124,0,0,0,114,126,0,0,0,
+    114,127,0,0,0,114,209,0,0,0,114,46,1,0,0,114,
+    143,0,0,0,114,206,0,0,0,114,137,0,0,0,114,58,
+    1,0,0,114,203,0,0,0,114,87,1,0,0,114,207,0,
+    0,0,114,94,1,0,0,114,39,1,0,0,114,3,0,0,
+    0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,
+    114,79,1,0,0,134,5,0,0,115,22,0,0,0,8,2,
+    4,7,8,14,8,4,4,2,8,12,8,5,10,48,8,31,
+    2,1,10,17,114,79,1,0,0,99,4,0,0,0,0,0,
+    0,0,0,0,0,0,6,0,0,0,8,0,0,0,67,0,
+    0,0,115,146,0,0,0,124,0,160,0,100,1,161,1,125,
+    4,124,0,160,0,100,2,161,1,125,5,124,4,115,66,124,
+    5,114,36,124,5,106,1,125,4,110,30,124,2,124,3,107,
+    2,114,56,116,2,124,1,124,2,131,2,125,4,110,10,116,
+    3,124,1,124,2,131,2,125,4,124,5,115,84,116,4,124,
+    1,124,2,124,4,100,3,141,3,125,5,122,36,124,5,124,
+    0,100,2,60,0,124,4,124,0,100,1,60,0,124,2,124,
+    0,100,4,60,0,124,3,124,0,100,5,60,0,87,0,110,
+    20,4,0,116,5,107,10,114,140,1,0,1,0,1,0,89,
+    0,110,2,88,0,100,0,83,0,41,6,78,218,10,95,95,
+    108,111,97,100,101,114,95,95,218,8,95,95,115,112,101,99,
+    95,95,114,80,1,0,0,90,8,95,95,102,105,108,101,95,
+    95,90,10,95,95,99,97,99,104,101,100,95,95,41,6,218,
+    3,103,101,116,114,140,0,0,0,114,14,1,0,0,114,8,
+    1,0,0,114,190,0,0,0,114,72,1,0,0,41,6,90,
+    2,110,115,114,117,0,0,0,90,8,112,97,116,104,110,97,
+    109,101,90,9,99,112,97,116,104,110,97,109,101,114,140,0,
+    0,0,114,187,0,0,0,114,3,0,0,0,114,3,0,0,
+    0,114,6,0,0,0,218,14,95,102,105,120,95,117,112,95,
+    109,111,100,117,108,101,27,6,0,0,115,34,0,0,0,0,
+    2,10,1,10,1,4,1,4,1,8,1,8,1,12,2,10,
+    1,4,1,14,1,2,1,8,1,8,1,8,1,12,1,14,
+    2,114,98,1,0,0,99,0,0,0,0,0,0,0,0,0,
+    0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,
+    38,0,0,0,116,0,116,1,160,2,161,0,102,2,125,0,
+    116,3,116,4,102,2,125,1,116,5,116,6,102,2,125,2,
+    124,0,124,1,124,2,103,3,83,0,41,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,
+    15,1,0,0,114,163,0,0,0,218,18,101,120,116,101,110,
+    115,105,111,110,95,115,117,102,102,105,120,101,115,114,8,1,
+    0,0,114,102,0,0,0,114,14,1,0,0,114,89,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,3,0,0,0,114,3,0,0,0,114,6,0,0,0,
+    114,184,0,0,0,50,6,0,0,115,8,0,0,0,0,5,
+    12,1,8,1,8,1,114,184,0,0,0,99,1,0,0,0,
+    0,0,0,0,0,0,0,0,12,0,0,0,9,0,0,0,
+    67,0,0,0,115,178,1,0,0,124,0,97,0,116,0,106,
+    1,97,1,116,0,106,2,97,2,116,1,106,3,116,4,25,
+    0,125,1,100,1,68,0,93,48,125,2,124,2,116,1,106,
+    3,107,7,114,56,116,0,160,5,124,2,161,1,125,3,110,
+    10,116,1,106,3,124,2,25,0,125,3,116,6,124,1,124,
+    2,124,3,131,3,1,0,113,30,100,2,100,3,103,1,102,
+    2,100,4,100,5,100,3,103,2,102,2,102,2,125,4,124,
+    4,68,0,93,110,92,2,125,5,125,6,116,7,100,6,100,
+    7,132,0,124,6,68,0,131,1,131,1,115,136,116,8,130,
+    1,124,6,100,8,25,0,125,7,124,5,116,1,106,3,107,
+    6,114,170,116,1,106,3,124,5,25,0,125,8,1,0,113,
+    226,113,106,122,20,116,0,160,5,124,5,161,1,125,8,87,
+    0,1,0,113,226,87,0,113,106,4,0,116,9,107,10,114,
+    214,1,0,1,0,1,0,89,0,113,106,89,0,113,106,88,
+    0,113,106,116,9,100,9,131,1,130,1,116,6,124,1,100,
+    10,124,8,131,3,1,0,116,6,124,1,100,11,124,7,131,
+    3,1,0,116,6,124,1,100,12,100,13,160,10,124,6,161,
+    1,131,3,1,0,116,6,124,1,100,14,100,15,100,16,132,
+    0,124,6,68,0,131,1,131,3,1,0,116,0,160,5,100,
+    17,161,1,125,9,116,6,124,1,100,17,124,9,131,3,1,
+    0,116,0,160,5,100,18,161,1,125,10,116,6,124,1,100,
+    18,124,10,131,3,1,0,124,5,100,4,107,2,144,1,114,
+    110,116,0,160,5,100,19,161,1,125,11,116,6,124,1,100,
+    20,124,11,131,3,1,0,116,6,124,1,100,21,116,11,131,
+    0,131,3,1,0,116,12,160,13,116,2,160,14,161,0,161,
+    1,1,0,124,5,100,4,107,2,144,1,114,174,116,15,160,
+    16,100,22,161,1,1,0,100,23,116,12,107,6,144,1,114,
+    174,100,24,116,17,95,18,100,25,83,0,41,26,122,205,83,
+    101,116,117,112,32,116,104,101,32,112,97,116,104,45,98,97,
+    115,101,100,32,105,109,112,111,114,116,101,114,115,32,102,111,
+    114,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,10,
+    32,32,32,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,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,79,116,104,101,114,32,99,111,
+    109,112,111,110,101,110,116,115,32,97,114,101,32,101,120,116,
+    114,97,99,116,101,100,32,102,114,111,109,32,116,104,101,32,
+    99,111,114,101,32,98,111,111,116,115,116,114,97,112,32,109,
+    111,100,117,108,101,46,10,10,32,32,32,32,41,4,114,64,
+    0,0,0,114,75,0,0,0,218,8,98,117,105,108,116,105,
+    110,115,114,160,0,0,0,90,5,112,111,115,105,120,250,1,
+    47,90,2,110,116,250,1,92,99,1,0,0,0,0,0,0,
+    0,0,0,0,0,2,0,0,0,3,0,0,0,115,0,0,
+    0,115,26,0,0,0,124,0,93,18,125,1,116,0,124,1,
+    131,1,100,0,107,2,86,0,1,0,113,2,100,1,83,0,
+    41,2,114,39,0,0,0,78,41,1,114,22,0,0,0,41,
+    2,114,32,0,0,0,114,95,0,0,0,114,3,0,0,0,
+    114,3,0,0,0,114,6,0,0,0,114,19,1,0,0,86,
+    6,0,0,115,4,0,0,0,4,0,2,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,73,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,2,0,0,
+    0,114,35,0,0,0,114,31,0,0,0,114,40,0,0,0,
+    114,58,0,0,0,99,1,0,0,0,0,0,0,0,0,0,
+    0,0,2,0,0,0,4,0,0,0,83,0,0,0,115,22,
+    0,0,0,104,0,124,0,93,14,125,1,100,0,124,1,155,
+    0,157,2,146,2,113,4,83,0,41,1,114,74,0,0,0,
+    114,3,0,0,0,41,2,114,32,0,0,0,218,1,115,114,
+    3,0,0,0,114,3,0,0,0,114,6,0,0,0,114,88,
+    1,0,0,102,6,0,0,115,4,0,0,0,6,0,2,0,
+    122,25,95,115,101,116,117,112,46,60,108,111,99,97,108,115,
+    62,46,60,115,101,116,99,111,109,112,62,90,7,95,116,104,
+    114,101,97,100,90,8,95,119,101,97,107,114,101,102,90,6,
+    119,105,110,114,101,103,114,192,0,0,0,114,7,0,0,0,
+    122,4,46,112,121,119,122,6,95,100,46,112,121,100,84,78,
+    41,19,114,134,0,0,0,114,8,0,0,0,114,163,0,0,
+    0,114,31,1,0,0,114,125,0,0,0,90,18,95,98,117,
+    105,108,116,105,110,95,102,114,111,109,95,110,97,109,101,114,
+    129,0,0,0,218,3,97,108,108,114,23,0,0,0,114,118,
+    0,0,0,114,36,0,0,0,114,13,0,0,0,114,21,1,
+    0,0,114,167,0,0,0,114,99,1,0,0,114,102,0,0,
+    0,114,186,0,0,0,114,191,0,0,0,114,195,0,0,0,
+    41,12,218,17,95,98,111,111,116,115,116,114,97,112,95,109,
+    111,100,117,108,101,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,31,0,0,0,114,35,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,3,0,0,0,
+    114,3,0,0,0,114,6,0,0,0,218,6,95,115,101,116,
+    117,112,61,6,0,0,115,78,0,0,0,0,8,4,1,6,
+    1,6,3,10,1,8,1,10,1,12,2,10,1,14,3,22,
+    1,12,2,22,1,8,1,10,1,10,1,6,2,2,1,10,
+    1,10,1,14,1,12,2,8,1,12,1,12,1,18,1,22,
+    3,10,1,12,3,10,1,12,3,10,1,10,1,12,3,14,
+    1,14,1,10,1,10,1,10,1,114,106,1,0,0,99,1,
+    0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,
+    0,0,0,67,0,0,0,115,50,0,0,0,116,0,124,0,
+    131,1,1,0,116,1,131,0,125,1,116,2,106,3,160,4,
+    116,5,106,6,124,1,142,0,103,1,161,1,1,0,116,2,
+    106,7,160,8,116,9,161,1,1,0,100,1,83,0,41,2,
+    122,41,73,110,115,116,97,108,108,32,116,104,101,32,112,97,
+    116,104,45,98,97,115,101,100,32,105,109,112,111,114,116,32,
+    99,111,109,112,111,110,101,110,116,115,46,78,41,10,114,106,
+    1,0,0,114,184,0,0,0,114,8,0,0,0,114,51,1,
+    0,0,114,167,0,0,0,114,79,1,0,0,114,94,1,0,
+    0,218,9,109,101,116,97,95,112,97,116,104,114,186,0,0,
+    0,114,45,1,0,0,41,2,114,105,1,0,0,90,17,115,
+    117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,115,
+    114,3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,
+    8,95,105,110,115,116,97,108,108,126,6,0,0,115,8,0,
+    0,0,0,2,8,1,6,1,20,1,114,108,1,0,0,41,
+    63,114,127,0,0,0,114,12,0,0,0,90,37,95,67,65,
+    83,69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,
+    76,65,84,70,79,82,77,83,95,66,89,84,69,83,95,75,
+    69,89,114,11,0,0,0,114,13,0,0,0,114,20,0,0,
+    0,114,27,0,0,0,114,29,0,0,0,114,38,0,0,0,
+    114,47,0,0,0,114,49,0,0,0,114,53,0,0,0,114,
+    54,0,0,0,114,56,0,0,0,114,59,0,0,0,114,69,
+    0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,
+    101,95,95,114,162,0,0,0,114,18,0,0,0,114,148,0,
+    0,0,114,17,0,0,0,114,24,0,0,0,114,236,0,0,
+    0,114,92,0,0,0,114,88,0,0,0,114,102,0,0,0,
+    114,89,0,0,0,90,23,68,69,66,85,71,95,66,89,84,
+    69,67,79,68,69,95,83,85,70,70,73,88,69,83,90,27,
+    79,80,84,73,77,73,90,69,68,95,66,89,84,69,67,79,
+    68,69,95,83,85,70,70,73,88,69,83,114,98,0,0,0,
+    114,103,0,0,0,114,109,0,0,0,114,113,0,0,0,114,
+    115,0,0,0,114,136,0,0,0,114,143,0,0,0,114,152,
+    0,0,0,114,156,0,0,0,114,158,0,0,0,114,165,0,
+    0,0,114,170,0,0,0,114,171,0,0,0,114,176,0,0,
+    0,218,6,111,98,106,101,99,116,114,185,0,0,0,114,190,
+    0,0,0,114,191,0,0,0,114,208,0,0,0,114,221,0,
+    0,0,114,239,0,0,0,114,8,1,0,0,114,14,1,0,
+    0,114,21,1,0,0,114,15,1,0,0,114,22,1,0,0,
+    114,43,1,0,0,114,45,1,0,0,114,79,1,0,0,114,
+    98,1,0,0,114,184,0,0,0,114,106,1,0,0,114,108,
     1,0,0,114,3,0,0,0,114,3,0,0,0,114,3,0,
-    0,0,114,6,0,0,0,114,79,1,0,0,134,5,0,0,
-    115,22,0,0,0,8,2,4,7,8,14,8,4,4,2,8,
-    12,8,5,10,48,8,31,2,1,10,17,114,79,1,0,0,
-    99,4,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
-    0,8,0,0,0,67,0,0,0,115,146,0,0,0,124,0,
-    160,0,100,1,161,1,125,4,124,0,160,0,100,2,161,1,
-    125,5,124,4,115,66,124,5,114,36,124,5,106,1,125,4,
-    110,30,124,2,124,3,107,2,114,56,116,2,124,1,124,2,
-    131,2,125,4,110,10,116,3,124,1,124,2,131,2,125,4,
-    124,5,115,84,116,4,124,1,124,2,124,4,100,3,141,3,
-    125,5,122,36,124,5,124,0,100,2,60,0,124,4,124,0,
-    100,1,60,0,124,2,124,0,100,4,60,0,124,3,124,0,
-    100,5,60,0,87,0,110,20,4,0,116,5,107,10,114,140,
-    1,0,1,0,1,0,89,0,110,2,88,0,100,0,83,0,
-    41,6,78,218,10,95,95,108,111,97,100,101,114,95,95,218,
-    8,95,95,115,112,101,99,95,95,114,80,1,0,0,90,8,
-    95,95,102,105,108,101,95,95,90,10,95,95,99,97,99,104,
-    101,100,95,95,41,6,218,3,103,101,116,114,140,0,0,0,
-    114,14,1,0,0,114,8,1,0,0,114,190,0,0,0,114,
-    72,1,0,0,41,6,90,2,110,115,114,117,0,0,0,90,
-    8,112,97,116,104,110,97,109,101,90,9,99,112,97,116,104,
-    110,97,109,101,114,140,0,0,0,114,187,0,0,0,114,3,
-    0,0,0,114,3,0,0,0,114,6,0,0,0,218,14,95,
-    102,105,120,95,117,112,95,109,111,100,117,108,101,27,6,0,
-    0,115,34,0,0,0,0,2,10,1,10,1,4,1,4,1,
-    8,1,8,1,12,2,10,1,4,1,14,1,2,1,8,1,
-    8,1,8,1,12,1,14,2,114,98,1,0,0,99,0,0,
-    0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,
-    0,0,67,0,0,0,115,38,0,0,0,116,0,116,1,160,
-    2,161,0,102,2,125,0,116,3,116,4,102,2,125,1,116,
-    5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83,
-    0,41,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,15,1,0,0,114,163,0,0,0,
-    218,18,101,120,116,101,110,115,105,111,110,95,115,117,102,102,
-    105,120,101,115,114,8,1,0,0,114,102,0,0,0,114,14,
-    1,0,0,114,89,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,3,0,0,0,114,3,0,
-    0,0,114,6,0,0,0,114,184,0,0,0,50,6,0,0,
-    115,8,0,0,0,0,5,12,1,8,1,8,1,114,184,0,
-    0,0,99,1,0,0,0,0,0,0,0,0,0,0,0,12,
-    0,0,0,9,0,0,0,67,0,0,0,115,178,1,0,0,
-    124,0,97,0,116,0,106,1,97,1,116,0,106,2,97,2,
-    116,1,106,3,116,4,25,0,125,1,100,1,68,0,93,48,
-    125,2,124,2,116,1,106,3,107,7,114,56,116,0,160,5,
-    124,2,161,1,125,3,110,10,116,1,106,3,124,2,25,0,
-    125,3,116,6,124,1,124,2,124,3,131,3,1,0,113,30,
-    100,2,100,3,103,1,102,2,100,4,100,5,100,3,103,2,
-    102,2,102,2,125,4,124,4,68,0,93,110,92,2,125,5,
-    125,6,116,7,100,6,100,7,132,0,124,6,68,0,131,1,
-    131,1,115,136,116,8,130,1,124,6,100,8,25,0,125,7,
-    124,5,116,1,106,3,107,6,114,170,116,1,106,3,124,5,
-    25,0,125,8,1,0,113,226,113,106,122,20,116,0,160,5,
-    124,5,161,1,125,8,87,0,1,0,113,226,87,0,113,106,
-    4,0,116,9,107,10,114,214,1,0,1,0,1,0,89,0,
-    113,106,89,0,113,106,88,0,113,106,116,9,100,9,131,1,
-    130,1,116,6,124,1,100,10,124,8,131,3,1,0,116,6,
-    124,1,100,11,124,7,131,3,1,0,116,6,124,1,100,12,
-    100,13,160,10,124,6,161,1,131,3,1,0,116,6,124,1,
-    100,14,100,15,100,16,132,0,124,6,68,0,131,1,131,3,
-    1,0,116,0,160,5,100,17,161,1,125,9,116,6,124,1,
-    100,17,124,9,131,3,1,0,116,0,160,5,100,18,161,1,
-    125,10,116,6,124,1,100,18,124,10,131,3,1,0,124,5,
-    100,4,107,2,144,1,114,110,116,0,160,5,100,19,161,1,
-    125,11,116,6,124,1,100,20,124,11,131,3,1,0,116,6,
-    124,1,100,21,116,11,131,0,131,3,1,0,116,12,160,13,
-    116,2,160,14,161,0,161,1,1,0,124,5,100,4,107,2,
-    144,1,114,174,116,15,160,16,100,22,161,1,1,0,100,23,
-    116,12,107,6,144,1,114,174,100,24,116,17,95,18,100,25,
-    83,0,41,26,122,205,83,101,116,117,112,32,116,104,101,32,
-    112,97,116,104,45,98,97,115,101,100,32,105,109,112,111,114,
-    116,101,114,115,32,102,111,114,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,10,32,32,32,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,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,79,
-    116,104,101,114,32,99,111,109,112,111,110,101,110,116,115,32,
-    97,114,101,32,101,120,116,114,97,99,116,101,100,32,102,114,
-    111,109,32,116,104,101,32,99,111,114,101,32,98,111,111,116,
-    115,116,114,97,112,32,109,111,100,117,108,101,46,10,10,32,
-    32,32,32,41,4,114,64,0,0,0,114,75,0,0,0,218,
-    8,98,117,105,108,116,105,110,115,114,160,0,0,0,90,5,
-    112,111,115,105,120,250,1,47,90,2,110,116,250,1,92,99,
-    1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
-    3,0,0,0,115,0,0,0,115,26,0,0,0,124,0,93,
-    18,125,1,116,0,124,1,131,1,100,0,107,2,86,0,1,
-    0,113,2,100,1,83,0,41,2,114,39,0,0,0,78,41,
-    1,114,22,0,0,0,41,2,114,32,0,0,0,114,95,0,
-    0,0,114,3,0,0,0,114,3,0,0,0,114,6,0,0,
-    0,114,19,1,0,0,86,6,0,0,115,4,0,0,0,4,
-    0,2,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,73,
-    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,2,0,0,0,114,35,0,0,0,114,31,0,
-    0,0,114,40,0,0,0,114,58,0,0,0,99,1,0,0,
-    0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
-    0,83,0,0,0,115,22,0,0,0,104,0,124,0,93,14,
-    125,1,100,0,124,1,155,0,157,2,146,2,113,4,83,0,
-    41,1,114,74,0,0,0,114,3,0,0,0,41,2,114,32,
-    0,0,0,218,1,115,114,3,0,0,0,114,3,0,0,0,
-    114,6,0,0,0,114,88,1,0,0,102,6,0,0,115,4,
-    0,0,0,6,0,2,0,122,25,95,115,101,116,117,112,46,
-    60,108,111,99,97,108,115,62,46,60,115,101,116,99,111,109,
-    112,62,90,7,95,116,104,114,101,97,100,90,8,95,119,101,
-    97,107,114,101,102,90,6,119,105,110,114,101,103,114,192,0,
-    0,0,114,7,0,0,0,122,4,46,112,121,119,122,6,95,
-    100,46,112,121,100,84,78,41,19,114,134,0,0,0,114,8,
-    0,0,0,114,163,0,0,0,114,31,1,0,0,114,125,0,
-    0,0,90,18,95,98,117,105,108,116,105,110,95,102,114,111,
-    109,95,110,97,109,101,114,129,0,0,0,218,3,97,108,108,
-    114,23,0,0,0,114,118,0,0,0,114,36,0,0,0,114,
-    13,0,0,0,114,21,1,0,0,114,167,0,0,0,114,99,
-    1,0,0,114,102,0,0,0,114,186,0,0,0,114,191,0,
-    0,0,114,195,0,0,0,41,12,218,17,95,98,111,111,116,
-    115,116,114,97,112,95,109,111,100,117,108,101,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,
-    31,0,0,0,114,35,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,3,0,0,0,114,3,0,0,0,114,6,0,0,
-    0,218,6,95,115,101,116,117,112,61,6,0,0,115,78,0,
-    0,0,0,8,4,1,6,1,6,3,10,1,8,1,10,1,
-    12,2,10,1,14,3,22,1,12,2,22,1,8,1,10,1,
-    10,1,6,2,2,1,10,1,10,1,14,1,12,2,8,1,
-    12,1,12,1,18,1,22,3,10,1,12,3,10,1,12,3,
-    10,1,10,1,12,3,14,1,14,1,10,1,10,1,10,1,
-    114,106,1,0,0,99,1,0,0,0,0,0,0,0,0,0,
-    0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,50,
-    0,0,0,116,0,124,0,131,1,1,0,116,1,131,0,125,
-    1,116,2,106,3,160,4,116,5,106,6,124,1,142,0,103,
-    1,161,1,1,0,116,2,106,7,160,8,116,9,161,1,1,
-    0,100,1,83,0,41,2,122,41,73,110,115,116,97,108,108,
-    32,116,104,101,32,112,97,116,104,45,98,97,115,101,100,32,
-    105,109,112,111,114,116,32,99,111,109,112,111,110,101,110,116,
-    115,46,78,41,10,114,106,1,0,0,114,184,0,0,0,114,
-    8,0,0,0,114,51,1,0,0,114,167,0,0,0,114,79,
-    1,0,0,114,94,1,0,0,218,9,109,101,116,97,95,112,
-    97,116,104,114,186,0,0,0,114,45,1,0,0,41,2,114,
-    105,1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,
-    108,111,97,100,101,114,115,114,3,0,0,0,114,3,0,0,
-    0,114,6,0,0,0,218,8,95,105,110,115,116,97,108,108,
-    126,6,0,0,115,8,0,0,0,0,2,8,1,6,1,20,
-    1,114,108,1,0,0,41,63,114,127,0,0,0,114,12,0,
-    0,0,90,37,95,67,65,83,69,95,73,78,83,69,78,83,
-    73,84,73,86,69,95,80,76,65,84,70,79,82,77,83,95,
-    66,89,84,69,83,95,75,69,89,114,11,0,0,0,114,13,
-    0,0,0,114,20,0,0,0,114,27,0,0,0,114,29,0,
-    0,0,114,38,0,0,0,114,47,0,0,0,114,49,0,0,
-    0,114,53,0,0,0,114,54,0,0,0,114,56,0,0,0,
-    114,59,0,0,0,114,69,0,0,0,218,4,116,121,112,101,
-    218,8,95,95,99,111,100,101,95,95,114,162,0,0,0,114,
-    18,0,0,0,114,148,0,0,0,114,17,0,0,0,114,24,
-    0,0,0,114,236,0,0,0,114,92,0,0,0,114,88,0,
-    0,0,114,102,0,0,0,114,89,0,0,0,90,23,68,69,
-    66,85,71,95,66,89,84,69,67,79,68,69,95,83,85,70,
-    70,73,88,69,83,90,27,79,80,84,73,77,73,90,69,68,
-    95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,
-    69,83,114,98,0,0,0,114,103,0,0,0,114,109,0,0,
-    0,114,113,0,0,0,114,115,0,0,0,114,136,0,0,0,
-    114,143,0,0,0,114,152,0,0,0,114,156,0,0,0,114,
-    158,0,0,0,114,165,0,0,0,114,170,0,0,0,114,171,
-    0,0,0,114,176,0,0,0,218,6,111,98,106,101,99,116,
-    114,185,0,0,0,114,190,0,0,0,114,191,0,0,0,114,
-    208,0,0,0,114,221,0,0,0,114,239,0,0,0,114,8,
-    1,0,0,114,14,1,0,0,114,21,1,0,0,114,15,1,
-    0,0,114,22,1,0,0,114,43,1,0,0,114,45,1,0,
-    0,114,79,1,0,0,114,98,1,0,0,114,184,0,0,0,
-    114,106,1,0,0,114,108,1,0,0,114,3,0,0,0,114,
-    3,0,0,0,114,3,0,0,0,114,6,0,0,0,218,8,
-    60,109,111,100,117,108,101,62,1,0,0,0,115,126,0,0,
-    0,4,22,4,1,4,1,2,1,2,255,4,4,8,17,8,
-    5,8,5,8,6,8,6,8,12,8,10,8,9,8,5,8,
-    7,8,9,12,22,10,127,0,8,16,1,12,2,4,1,4,
-    2,6,2,6,2,8,2,18,71,8,40,8,19,8,12,8,
-    12,8,28,8,17,8,33,8,28,8,24,16,13,14,10,12,
-    11,8,14,6,3,6,1,2,255,12,68,14,64,14,29,16,
-    127,0,17,14,68,18,45,18,26,4,3,18,53,14,63,14,
-    42,14,127,0,58,14,127,0,22,12,23,8,11,8,65,
+    0,0,114,6,0,0,0,218,8,60,109,111,100,117,108,101,
+    62,1,0,0,0,115,126,0,0,0,4,22,4,1,4,1,
+    2,1,2,255,4,4,8,17,8,5,8,5,8,6,8,6,
+    8,12,8,10,8,9,8,5,8,7,8,9,12,22,10,127,
+    0,8,16,1,12,2,4,1,4,2,6,2,6,2,8,2,
+    18,71,8,40,8,19,8,12,8,12,8,28,8,17,8,33,
+    8,28,8,24,16,13,14,10,12,11,8,14,6,3,6,1,
+    2,255,12,68,14,64,14,29,16,127,0,17,14,68,18,45,
+    18,26,4,3,18,53,14,63,14,42,14,127,0,58,14,127,
+    0,22,12,23,8,11,8,65,
 };