From ebf49bd601c2b12d8690d058909a00502b68fa54 Mon Sep 17 00:00:00 2001 From: alexrParreira Date: Wed, 23 Dec 2020 22:54:03 -0200 Subject: [PATCH] commit --- WebCrawler/.vscode/launch.json | 18 + WebCrawler/postscrape/itens.json | 102 + WebCrawler/postscrape/postscrape/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 158 bytes .../__pycache__/items.cpython-38.pyc | Bin 0 -> 403 bytes .../__pycache__/pipelines.cpython-38.pyc | Bin 0 -> 827 bytes .../__pycache__/settings.cpython-38.pyc | Bin 0 -> 348 bytes WebCrawler/postscrape/postscrape/items.py | 14 + .../postscrape/postscrape/middlewares.py | 103 + WebCrawler/postscrape/postscrape/pipelines.py | 20 + WebCrawler/postscrape/postscrape/settings.py | 88 + .../postscrape/postscrape/spiders/__init__.py | 4 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 166 bytes .../__pycache__/posts-spider.cpython-38.pyc | Bin 0 -> 1070 bytes .../__pycache__/queries.cpython-38.pyc | Bin 0 -> 165 bytes .../postscrape/spiders/posts-spider.py | 44 + .../postscrape/postscrape/spiders/queries.js | 27 + WebCrawler/postscrape/scrapy.cfg | 11 + .../Automat-20.2.0.dist-info/INSTALLER | 1 + .../Automat-20.2.0.dist-info/LICENSE | 21 + .../Automat-20.2.0.dist-info/METADATA | 487 + .../Automat-20.2.0.dist-info/RECORD | 32 + .../Automat-20.2.0.dist-info/WHEEL | 6 + .../Automat-20.2.0.dist-info/entry_points.txt | 3 + .../Automat-20.2.0.dist-info/top_level.txt | 1 + .../PyHamcrest-2.0.2.dist-info/INSTALLER | 1 + .../PyHamcrest-2.0.2.dist-info/LICENSE.txt | 27 + .../PyHamcrest-2.0.2.dist-info/METADATA | 387 + .../PyHamcrest-2.0.2.dist-info/RECORD | 121 + .../PyHamcrest-2.0.2.dist-info/WHEEL | 5 + .../PyHamcrest-2.0.2.dist-info/top_level.txt | 1 + .../__pycache__/easy_install.cpython-39.pyc | Bin 0 -> 305 bytes .../__pycache__/mccabe.cpython-39.pyc | Bin 0 -> 11358 bytes .../__pycache__/six.cpython-39.pyc | Bin 0 -> 26921 bytes .../_cffi_backend.cp39-win_amd64.pyd | Bin 0 -> 182784 bytes .../astroid-2.4.2.dist-info/COPYING | 339 + .../astroid-2.4.2.dist-info/COPYING.LESSER | 510 + .../astroid-2.4.2.dist-info/INSTALLER | 1 + .../astroid-2.4.2.dist-info/METADATA | 118 + .../astroid-2.4.2.dist-info/RECORD | 151 + .../astroid-2.4.2.dist-info/WHEEL | 5 + .../astroid-2.4.2.dist-info/top_level.txt | 1 + .../Lib/site-packages/astroid/__init__.py | 168 + .../Lib/site-packages/astroid/__pkginfo__.py | 56 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 4459 bytes .../__pycache__/__pkginfo__.cpython-39.pyc | Bin 0 -> 1355 bytes .../astroid/__pycache__/_ast.cpython-39.pyc | Bin 0 -> 3009 bytes .../__pycache__/arguments.cpython-39.pyc | Bin 0 -> 7615 bytes .../__pycache__/as_string.cpython-39.pyc | Bin 0 -> 25981 bytes .../astroid/__pycache__/bases.cpython-39.pyc | Bin 0 -> 15859 bytes .../__pycache__/builder.cpython-39.pyc | Bin 0 -> 12903 bytes .../__pycache__/context.cpython-39.pyc | Bin 0 -> 4321 bytes .../__pycache__/decorators.cpython-39.pyc | Bin 0 -> 3601 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 9215 bytes .../__pycache__/helpers.cpython-39.pyc | Bin 0 -> 7377 bytes .../__pycache__/inference.cpython-39.pyc | Bin 0 -> 22243 bytes .../__pycache__/manager.cpython-39.pyc | Bin 0 -> 9925 bytes .../astroid/__pycache__/mixins.cpython-39.pyc | Bin 0 -> 5859 bytes .../__pycache__/modutils.cpython-39.pyc | Bin 0 -> 17009 bytes .../__pycache__/node_classes.cpython-39.pyc | Bin 0 -> 115533 bytes .../astroid/__pycache__/nodes.cpython-39.pyc | Bin 0 -> 2077 bytes .../__pycache__/objects.cpython-39.pyc | Bin 0 -> 9669 bytes .../__pycache__/protocols.cpython-39.pyc | Bin 0 -> 16909 bytes .../__pycache__/raw_building.cpython-39.pyc | Bin 0 -> 11594 bytes .../__pycache__/rebuilder.cpython-39.pyc | Bin 0 -> 35317 bytes .../__pycache__/scoped_nodes.cpython-39.pyc | Bin 0 -> 69262 bytes .../__pycache__/test_utils.cpython-39.pyc | Bin 0 -> 2536 bytes .../__pycache__/transforms.cpython-39.pyc | Bin 0 -> 3424 bytes .../astroid/__pycache__/util.cpython-39.pyc | Bin 0 -> 5804 bytes .../venv/Lib/site-packages/astroid/_ast.py | 131 + .../Lib/site-packages/astroid/arguments.py | 300 + .../Lib/site-packages/astroid/as_string.py | 631 ++ .../venv/Lib/site-packages/astroid/bases.py | 548 ++ .../__pycache__/brain_argparse.cpython-39.pyc | Bin 0 -> 1079 bytes .../__pycache__/brain_attrs.cpython-39.pyc | Bin 0 -> 1576 bytes .../__pycache__/brain_boto3.cpython-39.pyc | Bin 0 -> 907 bytes .../brain_builtin_inference.cpython-39.pyc | Bin 0 -> 20562 bytes .../brain_collections.cpython-39.pyc | Bin 0 -> 2509 bytes .../__pycache__/brain_crypt.cpython-39.pyc | Bin 0 -> 851 bytes .../__pycache__/brain_curses.cpython-39.pyc | Bin 0 -> 3367 bytes .../brain_dataclasses.cpython-39.pyc | Bin 0 -> 1279 bytes .../__pycache__/brain_dateutil.cpython-39.pyc | Bin 0 -> 685 bytes .../__pycache__/brain_fstrings.cpython-39.pyc | Bin 0 -> 1547 bytes .../brain_functools.cpython-39.pyc | Bin 0 -> 4659 bytes .../brain/__pycache__/brain_gi.cpython-39.pyc | Bin 0 -> 4338 bytes .../__pycache__/brain_hashlib.cpython-39.pyc | Bin 0 -> 1931 bytes .../__pycache__/brain_http.cpython-39.pyc | Bin 0 -> 10502 bytes .../brain/__pycache__/brain_io.cpython-39.pyc | Bin 0 -> 1313 bytes .../brain_mechanize.cpython-39.pyc | Bin 0 -> 719 bytes .../brain_multiprocessing.cpython-39.pyc | Bin 0 -> 2527 bytes .../brain_namedtuple_enum.cpython-39.pyc | Bin 0 -> 11594 bytes .../__pycache__/brain_nose.cpython-39.pyc | Bin 0 -> 2062 bytes ...rain_numpy_core_fromnumeric.cpython-39.pyc | Bin 0 -> 626 bytes ...in_numpy_core_function_base.cpython-39.pyc | Bin 0 -> 1024 bytes ...brain_numpy_core_multiarray.cpython-39.pyc | Bin 0 -> 3232 bytes .../brain_numpy_core_numeric.cpython-39.pyc | Bin 0 -> 1262 bytes ...ain_numpy_core_numerictypes.cpython-39.pyc | Bin 0 -> 7728 bytes .../brain_numpy_core_umath.cpython-39.pyc | Bin 0 -> 4370 bytes .../brain_numpy_ndarray.cpython-39.pyc | Bin 0 -> 8369 bytes .../brain_numpy_random_mtrand.cpython-39.pyc | Bin 0 -> 3234 bytes .../brain_numpy_utils.cpython-39.pyc | Bin 0 -> 1857 bytes .../brain_pkg_resources.cpython-39.pyc | Bin 0 -> 2188 bytes .../__pycache__/brain_pytest.cpython-39.pyc | Bin 0 -> 2160 bytes .../brain/__pycache__/brain_qt.cpython-39.pyc | Bin 0 -> 2096 bytes .../__pycache__/brain_random.cpython-39.pyc | Bin 0 -> 2174 bytes .../brain/__pycache__/brain_re.cpython-39.pyc | Bin 0 -> 1067 bytes .../brain_responses.cpython-39.pyc | Bin 0 -> 1772 bytes .../brain_scipy_signal.cpython-39.pyc | Bin 0 -> 2185 bytes .../__pycache__/brain_six.cpython-39.pyc | Bin 0 -> 5559 bytes .../__pycache__/brain_ssl.cpython-39.pyc | Bin 0 -> 3599 bytes .../brain_subprocess.cpython-39.pyc | Bin 0 -> 4191 bytes .../brain_threading.cpython-39.pyc | Bin 0 -> 746 bytes .../__pycache__/brain_typing.cpython-39.pyc | Bin 0 -> 2354 bytes .../__pycache__/brain_uuid.cpython-39.pyc | Bin 0 -> 632 bytes .../astroid/brain/brain_argparse.py | 33 + .../astroid/brain/brain_attrs.py | 65 + .../astroid/brain/brain_boto3.py | 28 + .../astroid/brain/brain_builtin_inference.py | 873 ++ .../astroid/brain/brain_collections.py | 75 + .../astroid/brain/brain_crypt.py | 26 + .../astroid/brain/brain_curses.py | 179 + .../astroid/brain/brain_dataclasses.py | 50 + .../astroid/brain/brain_dateutil.py | 28 + .../astroid/brain/brain_fstrings.py | 51 + .../astroid/brain/brain_functools.py | 159 + .../site-packages/astroid/brain/brain_gi.py | 253 + .../astroid/brain/brain_hashlib.py | 69 + .../site-packages/astroid/brain/brain_http.py | 211 + .../site-packages/astroid/brain/brain_io.py | 45 + .../astroid/brain/brain_mechanize.py | 29 + .../astroid/brain/brain_multiprocessing.py | 107 + .../astroid/brain/brain_namedtuple_enum.py | 455 + .../site-packages/astroid/brain/brain_nose.py | 77 + .../brain/brain_numpy_core_fromnumeric.py | 23 + .../brain/brain_numpy_core_function_base.py | 29 + .../brain/brain_numpy_core_multiarray.py | 92 + .../astroid/brain/brain_numpy_core_numeric.py | 43 + .../brain/brain_numpy_core_numerictypes.py | 254 + .../astroid/brain/brain_numpy_core_umath.py | 147 + .../astroid/brain/brain_numpy_ndarray.py | 153 + .../brain/brain_numpy_random_mtrand.py | 70 + .../astroid/brain/brain_numpy_utils.py | 65 + .../astroid/brain/brain_pkg_resources.py | 75 + .../astroid/brain/brain_pytest.py | 88 + .../site-packages/astroid/brain/brain_qt.py | 83 + .../astroid/brain/brain_random.py | 75 + .../site-packages/astroid/brain/brain_re.py | 36 + .../astroid/brain/brain_responses.py | 73 + .../astroid/brain/brain_scipy_signal.py | 89 + .../site-packages/astroid/brain/brain_six.py | 201 + .../site-packages/astroid/brain/brain_ssl.py | 75 + .../astroid/brain/brain_subprocess.py | 146 + .../astroid/brain/brain_threading.py | 31 + .../astroid/brain/brain_typing.py | 96 + .../site-packages/astroid/brain/brain_uuid.py | 20 + .../venv/Lib/site-packages/astroid/builder.py | 455 + .../venv/Lib/site-packages/astroid/context.py | 179 + .../Lib/site-packages/astroid/decorators.py | 142 + .../Lib/site-packages/astroid/exceptions.py | 230 + .../venv/Lib/site-packages/astroid/helpers.py | 282 + .../Lib/site-packages/astroid/inference.py | 994 ++ .../astroid/interpreter/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 179 bytes .../__pycache__/dunder_lookup.cpython-39.pyc | Bin 0 -> 2130 bytes .../__pycache__/objectmodel.cpython-39.pyc | Bin 0 -> 26897 bytes .../astroid/interpreter/_import/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 187 bytes .../_import/__pycache__/spec.cpython-39.pyc | Bin 0 -> 9375 bytes .../_import/__pycache__/util.cpython-39.pyc | Bin 0 -> 405 bytes .../astroid/interpreter/_import/spec.py | 346 + .../astroid/interpreter/_import/util.py | 10 + .../astroid/interpreter/dunder_lookup.py | 66 + .../astroid/interpreter/objectmodel.py | 801 ++ .../venv/Lib/site-packages/astroid/manager.py | 350 + .../venv/Lib/site-packages/astroid/mixins.py | 160 + .../Lib/site-packages/astroid/modutils.py | 690 ++ .../Lib/site-packages/astroid/node_classes.py | 4862 ++++++++++ .../venv/Lib/site-packages/astroid/nodes.py | 176 + .../venv/Lib/site-packages/astroid/objects.py | 314 + .../Lib/site-packages/astroid/protocols.py | 780 ++ .../Lib/site-packages/astroid/raw_building.py | 483 + .../Lib/site-packages/astroid/rebuilder.py | 1010 ++ .../Lib/site-packages/astroid/scoped_nodes.py | 2927 ++++++ .../Lib/site-packages/astroid/test_utils.py | 73 + .../Lib/site-packages/astroid/transforms.py | 90 + .../venv/Lib/site-packages/astroid/util.py | 164 + .../venv/Lib/site-packages/attr/__init__.py | 76 + .../venv/Lib/site-packages/attr/__init__.pyi | 433 + .../attr/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1667 bytes .../attr/__pycache__/_compat.cpython-39.pyc | Bin 0 -> 5827 bytes .../attr/__pycache__/_config.cpython-39.pyc | Bin 0 -> 737 bytes .../attr/__pycache__/_funcs.cpython-39.pyc | Bin 0 -> 9735 bytes .../attr/__pycache__/_make.cpython-39.pyc | Bin 0 -> 66748 bytes .../attr/__pycache__/_next_gen.cpython-39.pyc | Bin 0 -> 3307 bytes .../__pycache__/_version_info.cpython-39.pyc | Bin 0 -> 2406 bytes .../__pycache__/converters.cpython-39.pyc | Bin 0 -> 2378 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 3236 bytes .../attr/__pycache__/filters.cpython-39.pyc | Bin 0 -> 1737 bytes .../attr/__pycache__/setters.cpython-39.pyc | Bin 0 -> 1609 bytes .../__pycache__/validators.cpython-39.pyc | Bin 0 -> 11381 bytes .../venv/Lib/site-packages/attr/_compat.py | 231 + .../venv/Lib/site-packages/attr/_config.py | 23 + .../venv/Lib/site-packages/attr/_funcs.py | 390 + .../venv/Lib/site-packages/attr/_make.py | 2765 ++++++ .../venv/Lib/site-packages/attr/_next_gen.py | 160 + .../Lib/site-packages/attr/_version_info.py | 85 + .../Lib/site-packages/attr/_version_info.pyi | 9 + .../venv/Lib/site-packages/attr/converters.py | 85 + .../Lib/site-packages/attr/converters.pyi | 11 + .../venv/Lib/site-packages/attr/exceptions.py | 92 + .../Lib/site-packages/attr/exceptions.pyi | 17 + .../venv/Lib/site-packages/attr/filters.py | 52 + .../venv/Lib/site-packages/attr/filters.pyi | 5 + .../venv/Lib/site-packages/attr/py.typed | 0 .../venv/Lib/site-packages/attr/setters.py | 77 + .../venv/Lib/site-packages/attr/setters.pyi | 18 + .../venv/Lib/site-packages/attr/validators.py | 379 + .../Lib/site-packages/attr/validators.pyi | 66 + .../attrs-20.3.0.dist-info/AUTHORS.rst | 11 + .../attrs-20.3.0.dist-info/INSTALLER | 1 + .../attrs-20.3.0.dist-info/LICENSE | 21 + .../attrs-20.3.0.dist-info/METADATA | 241 + .../attrs-20.3.0.dist-info/RECORD | 39 + .../attrs-20.3.0.dist-info/WHEEL | 6 + .../attrs-20.3.0.dist-info/top_level.txt | 1 + .../Lib/site-packages/automat/__init__.py | 8 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 295 bytes .../automat/__pycache__/_core.cpython-39.pyc | Bin 0 -> 5298 bytes .../__pycache__/_discover.cpython-39.pyc | Bin 0 -> 4310 bytes .../__pycache__/_introspection.cpython-39.pyc | Bin 0 -> 1713 bytes .../__pycache__/_methodical.cpython-39.pyc | Bin 0 -> 15249 bytes .../__pycache__/_visualize.cpython-39.pyc | Bin 0 -> 4962 bytes .../venv/Lib/site-packages/automat/_core.py | 165 + .../Lib/site-packages/automat/_discover.py | 144 + .../site-packages/automat/_introspection.py | 45 + .../Lib/site-packages/automat/_methodical.py | 474 + .../site-packages/automat/_test/__init__.py | 0 .../_test/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 173 bytes .../__pycache__/test_core.cpython-39.pyc | Bin 0 -> 3020 bytes .../__pycache__/test_discover.cpython-39.pyc | Bin 0 -> 21374 bytes .../test_methodical.cpython-39.pyc | Bin 0 -> 27006 bytes .../__pycache__/test_trace.cpython-39.pyc | Bin 0 -> 3042 bytes .../__pycache__/test_visualize.cpython-39.pyc | Bin 0 -> 15757 bytes .../site-packages/automat/_test/test_core.py | 86 + .../automat/_test/test_discover.py | 609 ++ .../automat/_test/test_methodical.py | 587 ++ .../site-packages/automat/_test/test_trace.py | 98 + .../automat/_test/test_visualize.py | 430 + .../Lib/site-packages/automat/_visualize.py | 182 + .../cffi-1.14.4.dist-info/INSTALLER | 1 + .../cffi-1.14.4.dist-info/LICENSE | 26 + .../cffi-1.14.4.dist-info/METADATA | 37 + .../cffi-1.14.4.dist-info/RECORD | 44 + .../site-packages/cffi-1.14.4.dist-info/WHEEL | 5 + .../cffi-1.14.4.dist-info/entry_points.txt | 3 + .../cffi-1.14.4.dist-info/top_level.txt | 2 + .../venv/Lib/site-packages/cffi/__init__.py | 14 + .../cffi/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 505 bytes .../cffi/__pycache__/api.cpython-39.pyc | Bin 0 -> 34348 bytes .../__pycache__/backend_ctypes.cpython-39.pyc | Bin 0 -> 39945 bytes .../__pycache__/cffi_opcode.cpython-39.pyc | Bin 0 -> 4741 bytes .../__pycache__/commontypes.cpython-39.pyc | Bin 0 -> 1886 bytes .../cffi/__pycache__/cparser.cpython-39.pyc | Bin 0 -> 23709 bytes .../cffi/__pycache__/error.cpython-39.pyc | Bin 0 -> 1506 bytes .../__pycache__/ffiplatform.cpython-39.pyc | Bin 0 -> 3563 bytes .../cffi/__pycache__/lock.cpython-39.pyc | Bin 0 -> 403 bytes .../cffi/__pycache__/model.cpython-39.pyc | Bin 0 -> 19745 bytes .../cffi/__pycache__/pkgconfig.cpython-39.pyc | Bin 0 -> 5141 bytes .../__pycache__/recompiler.cpython-39.pyc | Bin 0 -> 46940 bytes .../__pycache__/setuptools_ext.cpython-39.pyc | Bin 0 -> 7280 bytes .../__pycache__/vengine_cpy.cpython-39.pyc | Bin 0 -> 35466 bytes .../__pycache__/vengine_gen.cpython-39.pyc | Bin 0 -> 21003 bytes .../cffi/__pycache__/verifier.cpython-39.pyc | Bin 0 -> 9310 bytes .../Lib/site-packages/cffi/_cffi_errors.h | 147 + .../Lib/site-packages/cffi/_cffi_include.h | 385 + .../venv/Lib/site-packages/cffi/_embedding.h | 527 ++ WebCrawler/venv/Lib/site-packages/cffi/api.py | 965 ++ .../Lib/site-packages/cffi/backend_ctypes.py | 1121 +++ .../Lib/site-packages/cffi/cffi_opcode.py | 187 + .../Lib/site-packages/cffi/commontypes.py | 80 + .../venv/Lib/site-packages/cffi/cparser.py | 1006 ++ .../venv/Lib/site-packages/cffi/error.py | 31 + .../Lib/site-packages/cffi/ffiplatform.py | 127 + .../venv/Lib/site-packages/cffi/lock.py | 30 + .../venv/Lib/site-packages/cffi/model.py | 617 ++ .../Lib/site-packages/cffi/parse_c_type.h | 181 + .../venv/Lib/site-packages/cffi/pkgconfig.py | 121 + .../venv/Lib/site-packages/cffi/recompiler.py | 1581 ++++ .../Lib/site-packages/cffi/setuptools_ext.py | 219 + .../Lib/site-packages/cffi/vengine_cpy.py | 1076 +++ .../Lib/site-packages/cffi/vengine_gen.py | 675 ++ .../venv/Lib/site-packages/cffi/verifier.py | 306 + .../colorama-0.4.4.dist-info/INSTALLER | 1 + .../colorama-0.4.4.dist-info/LICENSE.txt | 27 + .../colorama-0.4.4.dist-info/METADATA | 415 + .../colorama-0.4.4.dist-info/RECORD | 18 + .../colorama-0.4.4.dist-info/WHEEL | 6 + .../colorama-0.4.4.dist-info/top_level.txt | 1 + .../Lib/site-packages/colorama/__init__.py | 6 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 419 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 419 bytes .../colorama/__pycache__/ansi.cpython-38.pyc | Bin 0 -> 3204 bytes .../colorama/__pycache__/ansi.cpython-39.pyc | Bin 0 -> 3204 bytes .../__pycache__/ansitowin32.cpython-38.pyc | Bin 0 -> 7748 bytes .../__pycache__/ansitowin32.cpython-39.pyc | Bin 0 -> 7670 bytes .../__pycache__/initialise.cpython-38.pyc | Bin 0 -> 1680 bytes .../__pycache__/initialise.cpython-39.pyc | Bin 0 -> 1686 bytes .../colorama/__pycache__/win32.cpython-38.pyc | Bin 0 -> 3956 bytes .../colorama/__pycache__/win32.cpython-39.pyc | Bin 0 -> 3918 bytes .../__pycache__/winterm.cpython-38.pyc | Bin 0 -> 4640 bytes .../__pycache__/winterm.cpython-39.pyc | Bin 0 -> 4640 bytes .../venv/Lib/site-packages/colorama/ansi.py | 102 + .../Lib/site-packages/colorama/ansitowin32.py | 258 + .../Lib/site-packages/colorama/initialise.py | 80 + .../venv/Lib/site-packages/colorama/win32.py | 152 + .../Lib/site-packages/colorama/winterm.py | 169 + .../DESCRIPTION.rst | 18 + .../constantly-15.1.0.dist-info/INSTALLER | 1 + .../constantly-15.1.0.dist-info/METADATA | 39 + .../constantly-15.1.0.dist-info/RECORD | 14 + .../constantly-15.1.0.dist-info/WHEEL | 6 + .../constantly-15.1.0.dist-info/metadata.json | 1 + .../constantly-15.1.0.dist-info/pbr.json | 1 + .../constantly-15.1.0.dist-info/top_level.txt | 1 + .../Lib/site-packages/constantly/__init__.py | 24 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 595 bytes .../__pycache__/_constants.cpython-39.pyc | Bin 0 -> 16446 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 473 bytes .../site-packages/constantly/_constants.py | 500 + .../Lib/site-packages/constantly/_version.py | 21 + .../cryptography-3.3.1.dist-info/AUTHORS.rst | 44 + .../cryptography-3.3.1.dist-info/INSTALLER | 1 + .../cryptography-3.3.1.dist-info/LICENSE | 6 + .../LICENSE.APACHE | 202 + .../cryptography-3.3.1.dist-info/LICENSE.BSD | 27 + .../cryptography-3.3.1.dist-info/LICENSE.PSF | 41 + .../cryptography-3.3.1.dist-info/METADATA | 131 + .../cryptography-3.3.1.dist-info/RECORD | 178 + .../cryptography-3.3.1.dist-info/WHEEL | 5 + .../top_level.txt | 3 + .../site-packages/cryptography/__about__.py | 31 + .../site-packages/cryptography/__init__.py | 41 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 767 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 870 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 2359 bytes .../__pycache__/fernet.cpython-39.pyc | Bin 0 -> 6043 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 5384 bytes .../site-packages/cryptography/exceptions.py | 58 + .../Lib/site-packages/cryptography/fernet.py | 190 + .../cryptography/hazmat/__init__.py | 11 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 521 bytes .../hazmat/__pycache__/_der.cpython-39.pyc | Bin 0 -> 4434 bytes .../hazmat/__pycache__/_oid.cpython-39.pyc | Bin 0 -> 2179 bytes .../site-packages/cryptography/hazmat/_der.py | 156 + .../site-packages/cryptography/hazmat/_oid.py | 77 + .../cryptography/hazmat/backends/__init__.py | 26 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 646 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 0 -> 16326 bytes .../hazmat/backends/interfaces.py | 396 + .../hazmat/backends/openssl/__init__.py | 10 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 388 bytes .../openssl/__pycache__/aead.cpython-39.pyc | Bin 0 -> 3818 bytes .../__pycache__/backend.cpython-39.pyc | Bin 0 -> 72265 bytes .../__pycache__/ciphers.cpython-39.pyc | Bin 0 -> 5552 bytes .../openssl/__pycache__/cmac.cpython-39.pyc | Bin 0 -> 2633 bytes .../__pycache__/decode_asn1.cpython-39.pyc | Bin 0 -> 21864 bytes .../openssl/__pycache__/dh.cpython-39.pyc | Bin 0 -> 7807 bytes .../openssl/__pycache__/dsa.cpython-39.pyc | Bin 0 -> 8512 bytes .../openssl/__pycache__/ec.cpython-39.pyc | Bin 0 -> 10295 bytes .../__pycache__/ed25519.cpython-39.pyc | Bin 0 -> 4339 bytes .../openssl/__pycache__/ed448.cpython-39.pyc | Bin 0 -> 4307 bytes .../__pycache__/encode_asn1.cpython-39.pyc | Bin 0 -> 17419 bytes .../openssl/__pycache__/hashes.cpython-39.pyc | Bin 0 -> 2685 bytes .../openssl/__pycache__/hmac.cpython-39.pyc | Bin 0 -> 2658 bytes .../openssl/__pycache__/ocsp.cpython-39.pyc | Bin 0 -> 11751 bytes .../__pycache__/poly1305.cpython-39.pyc | Bin 0 -> 2134 bytes .../openssl/__pycache__/rsa.cpython-39.pyc | Bin 0 -> 12883 bytes .../openssl/__pycache__/utils.cpython-39.pyc | Bin 0 -> 2196 bytes .../openssl/__pycache__/x25519.cpython-39.pyc | Bin 0 -> 3684 bytes .../openssl/__pycache__/x448.cpython-39.pyc | Bin 0 -> 3460 bytes .../openssl/__pycache__/x509.cpython-39.pyc | Bin 0 -> 20960 bytes .../hazmat/backends/openssl/aead.py | 166 + .../hazmat/backends/openssl/backend.py | 2776 ++++++ .../hazmat/backends/openssl/ciphers.py | 231 + .../hazmat/backends/openssl/cmac.py | 82 + .../hazmat/backends/openssl/decode_asn1.py | 878 ++ .../hazmat/backends/openssl/dh.py | 271 + .../hazmat/backends/openssl/dsa.py | 263 + .../hazmat/backends/openssl/ec.py | 337 + .../hazmat/backends/openssl/ed25519.py | 145 + .../hazmat/backends/openssl/ed448.py | 146 + .../hazmat/backends/openssl/encode_asn1.py | 670 ++ .../hazmat/backends/openssl/hashes.py | 82 + .../hazmat/backends/openssl/hmac.py | 76 + .../hazmat/backends/openssl/ocsp.py | 401 + .../hazmat/backends/openssl/poly1305.py | 65 + .../hazmat/backends/openssl/rsa.py | 516 + .../hazmat/backends/openssl/utils.py | 66 + .../hazmat/backends/openssl/x25519.py | 123 + .../hazmat/backends/openssl/x448.py | 107 + .../hazmat/backends/openssl/x509.py | 587 ++ .../cryptography/hazmat/bindings/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 282 bytes .../cryptography/hazmat/bindings/_openssl.pyd | Bin 0 -> 3107328 bytes .../cryptography/hazmat/bindings/_padding.pyd | Bin 0 -> 13824 bytes .../hazmat/bindings/openssl/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 290 bytes .../__pycache__/_conditional.cpython-39.pyc | Bin 0 -> 8152 bytes .../__pycache__/binding.cpython-39.pyc | Bin 0 -> 4971 bytes .../hazmat/bindings/openssl/_conditional.py | 322 + .../hazmat/bindings/openssl/binding.py | 172 + .../hazmat/primitives/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 284 bytes .../__pycache__/cmac.cpython-39.pyc | Bin 0 -> 2126 bytes .../__pycache__/constant_time.cpython-39.pyc | Bin 0 -> 523 bytes .../__pycache__/hashes.cpython-39.pyc | Bin 0 -> 7485 bytes .../__pycache__/hmac.cpython-39.pyc | Bin 0 -> 2266 bytes .../__pycache__/keywrap.cpython-39.pyc | Bin 0 -> 4580 bytes .../__pycache__/padding.cpython-39.pyc | Bin 0 -> 6562 bytes .../__pycache__/poly1305.cpython-39.pyc | Bin 0 -> 2026 bytes .../hazmat/primitives/asymmetric/__init__.py | 40 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1594 bytes .../asymmetric/__pycache__/dh.cpython-39.pyc | Bin 0 -> 7333 bytes .../asymmetric/__pycache__/dsa.cpython-39.pyc | Bin 0 -> 9065 bytes .../asymmetric/__pycache__/ec.cpython-39.pyc | Bin 0 -> 15314 bytes .../__pycache__/ed25519.cpython-39.pyc | Bin 0 -> 2828 bytes .../__pycache__/ed448.cpython-39.pyc | Bin 0 -> 2734 bytes .../__pycache__/padding.cpython-39.pyc | Bin 0 -> 2790 bytes .../asymmetric/__pycache__/rsa.cpython-39.pyc | Bin 0 -> 10576 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 1497 bytes .../__pycache__/x25519.cpython-39.pyc | Bin 0 -> 2571 bytes .../__pycache__/x448.cpython-39.pyc | Bin 0 -> 2541 bytes .../hazmat/primitives/asymmetric/dh.py | 224 + .../hazmat/primitives/asymmetric/dsa.py | 261 + .../hazmat/primitives/asymmetric/ec.py | 502 + .../hazmat/primitives/asymmetric/ed25519.py | 87 + .../hazmat/primitives/asymmetric/ed448.py | 82 + .../hazmat/primitives/asymmetric/padding.py | 80 + .../hazmat/primitives/asymmetric/rsa.py | 380 + .../hazmat/primitives/asymmetric/utils.py | 41 + .../hazmat/primitives/asymmetric/x25519.py | 76 + .../hazmat/primitives/asymmetric/x448.py | 76 + .../hazmat/primitives/ciphers/__init__.py | 26 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 595 bytes .../ciphers/__pycache__/aead.cpython-39.pyc | Bin 0 -> 5168 bytes .../__pycache__/algorithms.cpython-39.pyc | Bin 0 -> 5243 bytes .../ciphers/__pycache__/base.cpython-39.pyc | Bin 0 -> 8514 bytes .../ciphers/__pycache__/modes.cpython-39.pyc | Bin 0 -> 6980 bytes .../hazmat/primitives/ciphers/aead.py | 174 + .../hazmat/primitives/ciphers/algorithms.py | 170 + .../hazmat/primitives/ciphers/base.py | 241 + .../hazmat/primitives/ciphers/modes.py | 225 + .../cryptography/hazmat/primitives/cmac.py | 64 + .../hazmat/primitives/constant_time.py | 14 + .../cryptography/hazmat/primitives/hashes.py | 259 + .../cryptography/hazmat/primitives/hmac.py | 70 + .../hazmat/primitives/kdf/__init__.py | 26 + .../kdf/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1128 bytes .../kdf/__pycache__/concatkdf.cpython-39.pyc | Bin 0 -> 3956 bytes .../kdf/__pycache__/hkdf.cpython-39.pyc | Bin 0 -> 3363 bytes .../kdf/__pycache__/kbkdf.cpython-39.pyc | Bin 0 -> 4121 bytes .../kdf/__pycache__/pbkdf2.cpython-39.pyc | Bin 0 -> 2124 bytes .../kdf/__pycache__/scrypt.cpython-39.pyc | Bin 0 -> 2210 bytes .../kdf/__pycache__/x963kdf.cpython-39.pyc | Bin 0 -> 2360 bytes .../hazmat/primitives/kdf/concatkdf.py | 131 + .../hazmat/primitives/kdf/hkdf.py | 115 + .../hazmat/primitives/kdf/kbkdf.py | 162 + .../hazmat/primitives/kdf/pbkdf2.py | 62 + .../hazmat/primitives/kdf/scrypt.py | 68 + .../hazmat/primitives/kdf/x963kdf.py | 74 + .../cryptography/hazmat/primitives/keywrap.py | 161 + .../cryptography/hazmat/primitives/padding.py | 214 + .../hazmat/primitives/poly1305.py | 58 + .../primitives/serialization/__init__.py | 44 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 948 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 3148 bytes .../__pycache__/pkcs12.cpython-39.pyc | Bin 0 -> 1852 bytes .../__pycache__/pkcs7.cpython-39.pyc | Bin 0 -> 4025 bytes .../__pycache__/ssh.cpython-39.pyc | Bin 0 -> 18824 bytes .../hazmat/primitives/serialization/base.py | 91 + .../hazmat/primitives/serialization/pkcs12.py | 50 + .../hazmat/primitives/serialization/pkcs7.py | 132 + .../hazmat/primitives/serialization/ssh.py | 683 ++ .../hazmat/primitives/twofactor/__init__.py | 9 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 466 bytes .../twofactor/__pycache__/hotp.cpython-39.pyc | Bin 0 -> 2841 bytes .../twofactor/__pycache__/totp.cpython-39.pyc | Bin 0 -> 1975 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 904 bytes .../hazmat/primitives/twofactor/hotp.py | 69 + .../hazmat/primitives/twofactor/totp.py | 51 + .../hazmat/primitives/twofactor/utils.py | 33 + .../Lib/site-packages/cryptography/utils.py | 171 + .../cryptography/x509/__init__.py | 248 + .../x509/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 6096 bytes .../x509/__pycache__/base.cpython-39.pyc | Bin 0 -> 25261 bytes .../certificate_transparency.cpython-39.pyc | Bin 0 -> 1776 bytes .../__pycache__/extensions.cpython-39.pyc | Bin 0 -> 54548 bytes .../__pycache__/general_name.cpython-39.pyc | Bin 0 -> 9525 bytes .../x509/__pycache__/name.cpython-39.pyc | Bin 0 -> 9803 bytes .../x509/__pycache__/ocsp.cpython-39.pyc | Bin 0 -> 13632 bytes .../x509/__pycache__/oid.cpython-39.pyc | Bin 0 -> 9029 bytes .../site-packages/cryptography/x509/base.py | 892 ++ .../x509/certificate_transparency.py | 46 + .../cryptography/x509/extensions.py | 1702 ++++ .../cryptography/x509/general_name.py | 294 + .../site-packages/cryptography/x509/name.py | 261 + .../site-packages/cryptography/x509/ocsp.py | 467 + .../site-packages/cryptography/x509/oid.py | 265 + .../cssselect-1.1.0.dist-info/AUTHORS | 13 + .../cssselect-1.1.0.dist-info/INSTALLER | 1 + .../cssselect-1.1.0.dist-info/LICENSE | 32 + .../cssselect-1.1.0.dist-info/METADATA | 65 + .../cssselect-1.1.0.dist-info/RECORD | 13 + .../cssselect-1.1.0.dist-info/WHEEL | 6 + .../cssselect-1.1.0.dist-info/top_level.txt | 1 + .../Lib/site-packages/cssselect/__init__.py | 22 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 839 bytes .../__pycache__/parser.cpython-39.pyc | Bin 0 -> 22947 bytes .../__pycache__/xpath.cpython-39.pyc | Bin 0 -> 21068 bytes .../Lib/site-packages/cssselect/parser.py | 835 ++ .../venv/Lib/site-packages/cssselect/xpath.py | 783 ++ .../venv/Lib/site-packages/easy_install.py | 5 + .../Lib/site-packages/exampleproj/__init__.py | 13 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 418 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 293 bytes .../Lib/site-packages/exampleproj/_version.py | 7 + .../Lib/site-packages/hamcrest/__init__.py | 7 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 373 bytes .../site-packages/hamcrest/core/__init__.py | 6 + .../core/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 388 bytes .../__pycache__/assert_that.cpython-39.pyc | Bin 0 -> 2934 bytes .../base_description.cpython-39.pyc | Bin 0 -> 2446 bytes .../__pycache__/base_matcher.cpython-39.pyc | Bin 0 -> 2132 bytes .../core/__pycache__/compat.cpython-39.pyc | Bin 0 -> 798 bytes .../__pycache__/description.cpython-39.pyc | Bin 0 -> 2079 bytes .../core/__pycache__/matcher.cpython-39.pyc | Bin 0 -> 3170 bytes .../__pycache__/selfdescribing.cpython-39.pyc | Bin 0 -> 1063 bytes .../selfdescribingvalue.cpython-39.pyc | Bin 0 -> 1474 bytes .../string_description.cpython-39.pyc | Bin 0 -> 1598 bytes .../hamcrest/core/assert_that.py | 80 + .../hamcrest/core/base_description.py | 70 + .../hamcrest/core/base_matcher.py | 41 + .../Lib/site-packages/hamcrest/core/compat.py | 19 + .../hamcrest/core/core/__init__.py | 17 + .../core/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1077 bytes .../core/__pycache__/allof.cpython-39.pyc | Bin 0 -> 2620 bytes .../core/__pycache__/anyof.cpython-39.pyc | Bin 0 -> 2074 bytes .../__pycache__/described_as.cpython-39.pyc | Bin 0 -> 2422 bytes .../core/core/__pycache__/is_.cpython-39.pyc | Bin 0 -> 3952 bytes .../__pycache__/isanything.cpython-39.pyc | Bin 0 -> 1585 bytes .../core/__pycache__/isequal.cpython-39.pyc | Bin 0 -> 1613 bytes .../__pycache__/isinstanceof.cpython-39.pyc | Bin 0 -> 1876 bytes .../core/__pycache__/isnone.cpython-39.pyc | Bin 0 -> 1395 bytes .../core/__pycache__/isnot.cpython-39.pyc | Bin 0 -> 3210 bytes .../core/__pycache__/issame.cpython-39.pyc | Bin 0 -> 1967 bytes .../core/__pycache__/raises.cpython-39.pyc | Bin 0 -> 5369 bytes .../site-packages/hamcrest/core/core/allof.py | 58 + .../site-packages/hamcrest/core/core/anyof.py | 42 + .../hamcrest/core/core/described_as.py | 52 + .../site-packages/hamcrest/core/core/is_.py | 101 + .../hamcrest/core/core/isanything.py | 32 + .../hamcrest/core/core/isequal.py | 34 + .../hamcrest/core/core/isinstanceof.py | 39 + .../hamcrest/core/core/isnone.py | 29 + .../site-packages/hamcrest/core/core/isnot.py | 86 + .../hamcrest/core/core/issame.py | 42 + .../hamcrest/core/core/raises.py | 141 + .../hamcrest/core/description.py | 50 + .../hamcrest/core/helpers/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 343 bytes .../__pycache__/hasmethod.cpython-39.pyc | Bin 0 -> 580 bytes .../helpers/__pycache__/ismock.cpython-39.pyc | Bin 0 -> 582 bytes .../__pycache__/wrap_matcher.cpython-39.pyc | Bin 0 -> 1078 bytes .../hamcrest/core/helpers/hasmethod.py | 12 + .../hamcrest/core/helpers/ismock.py | 19 + .../hamcrest/core/helpers/wrap_matcher.py | 30 + .../site-packages/hamcrest/core/matcher.py | 74 + .../hamcrest/core/selfdescribing.py | 20 + .../hamcrest/core/selfdescribingvalue.py | 28 + .../hamcrest/core/string_description.py | 35 + .../hamcrest/library/__init__.py | 44 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1014 bytes .../hamcrest/library/collection/__init__.py | 15 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 940 bytes .../__pycache__/is_empty.cpython-39.pyc | Bin 0 -> 1503 bytes .../isdict_containing.cpython-39.pyc | Bin 0 -> 2823 bytes .../isdict_containingentries.cpython-39.pyc | Bin 0 -> 5363 bytes .../isdict_containingkey.cpython-39.pyc | Bin 0 -> 2488 bytes .../isdict_containingvalue.cpython-39.pyc | Bin 0 -> 2484 bytes .../__pycache__/isin.cpython-39.pyc | Bin 0 -> 1630 bytes .../issequence_containing.cpython-39.pyc | Bin 0 -> 4275 bytes ...quence_containinginanyorder.cpython-39.pyc | Bin 0 -> 4372 bytes ...ssequence_containinginorder.cpython-39.pyc | Bin 0 -> 4306 bytes .../issequence_onlycontaining.cpython-39.pyc | Bin 0 -> 2431 bytes .../hamcrest/library/collection/is_empty.py | 36 + .../library/collection/isdict_containing.py | 61 + .../collection/isdict_containingentries.py | 160 + .../collection/isdict_containingkey.py | 54 + .../collection/isdict_containingvalue.py | 54 + .../hamcrest/library/collection/isin.py | 34 + .../collection/issequence_containing.py | 93 + .../issequence_containinginanyorder.py | 103 + .../issequence_containinginorder.py | 103 + .../collection/issequence_onlycontaining.py | 60 + .../hamcrest/library/integration/__init__.py | 7 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 417 bytes .../__pycache__/match_equality.cpython-39.pyc | Bin 0 -> 2087 bytes .../library/integration/match_equality.py | 44 + .../hamcrest/library/number/__init__.py | 13 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 546 bytes .../__pycache__/iscloseto.cpython-39.pyc | Bin 0 -> 3249 bytes .../ordering_comparison.cpython-39.pyc | Bin 0 -> 2568 bytes .../hamcrest/library/number/iscloseto.py | 91 + .../library/number/ordering_comparison.py | 66 + .../hamcrest/library/object/__init__.py | 9 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 522 bytes .../__pycache__/haslength.cpython-39.pyc | Bin 0 -> 2590 bytes .../__pycache__/hasproperty.cpython-39.pyc | Bin 0 -> 6817 bytes .../__pycache__/hasstring.cpython-39.pyc | Bin 0 -> 2064 bytes .../hamcrest/library/object/haslength.py | 52 + .../hamcrest/library/object/hasproperty.py | 202 + .../hamcrest/library/object/hasstring.py | 40 + .../hamcrest/library/text/__init__.py | 13 + .../text/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 780 bytes .../isequal_ignoring_case.cpython-39.pyc | Bin 0 -> 1976 bytes ...isequal_ignoring_whitespace.cpython-39.pyc | Bin 0 -> 2306 bytes .../__pycache__/stringcontains.cpython-39.pyc | Bin 0 -> 1698 bytes .../stringcontainsinorder.cpython-39.pyc | Bin 0 -> 2237 bytes .../__pycache__/stringendswith.cpython-39.pyc | Bin 0 -> 1726 bytes .../__pycache__/stringmatches.cpython-39.pyc | Bin 0 -> 1873 bytes .../stringstartswith.cpython-39.pyc | Bin 0 -> 1746 bytes .../substringmatcher.cpython-39.pyc | Bin 0 -> 1351 bytes .../library/text/isequal_ignoring_case.py | 42 + .../text/isequal_ignoring_whitespace.py | 56 + .../hamcrest/library/text/stringcontains.py | 38 + .../library/text/stringcontainsinorder.py | 50 + .../hamcrest/library/text/stringendswith.py | 39 + .../hamcrest/library/text/stringmatches.py | 40 + .../hamcrest/library/text/stringstartswith.py | 39 + .../hamcrest/library/text/substringmatcher.py | 24 + .../venv/Lib/site-packages/hamcrest/py.typed | 0 .../hyperlink-20.0.1.dist-info/INSTALLER | 1 + .../hyperlink-20.0.1.dist-info/LICENSE | 29 + .../hyperlink-20.0.1.dist-info/METADATA | 37 + .../hyperlink-20.0.1.dist-info/RECORD | 33 + .../hyperlink-20.0.1.dist-info/WHEEL | 6 + .../hyperlink-20.0.1.dist-info/top_level.txt | 1 + .../Lib/site-packages/hyperlink/__init__.py | 17 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 324 bytes .../__pycache__/_socket.cpython-39.pyc | Bin 0 -> 1306 bytes .../hyperlink/__pycache__/_url.cpython-39.pyc | Bin 0 -> 70022 bytes .../__pycache__/hypothesis.cpython-39.pyc | Bin 0 -> 6461 bytes .../Lib/site-packages/hyperlink/_socket.py | 53 + .../venv/Lib/site-packages/hyperlink/_url.py | 2409 +++++ .../Lib/site-packages/hyperlink/hypothesis.py | 320 + .../venv/Lib/site-packages/hyperlink/py.typed | 1 + .../site-packages/hyperlink/test/__init__.py | 31 + .../test/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 662 bytes .../test/__pycache__/common.cpython-39.pyc | Bin 0 -> 2676 bytes .../__pycache__/test_common.cpython-39.pyc | Bin 0 -> 4447 bytes .../test_decoded_url.cpython-39.pyc | Bin 0 -> 5323 bytes .../test_hypothesis.cpython-39.pyc | Bin 0 -> 6846 bytes .../__pycache__/test_parse.cpython-39.pyc | Bin 0 -> 1247 bytes .../test_scheme_registration.cpython-39.pyc | Bin 0 -> 3088 bytes .../__pycache__/test_socket.cpython-39.pyc | Bin 0 -> 1764 bytes .../test/__pycache__/test_url.cpython-39.pyc | Bin 0 -> 40849 bytes .../site-packages/hyperlink/test/common.py | 68 + .../hyperlink/test/test_common.py | 120 + .../hyperlink/test/test_decoded_url.py | 212 + .../hyperlink/test/test_hypothesis.py | 214 + .../hyperlink/test/test_parse.py | 37 + .../test/test_scheme_registration.py | 72 + .../hyperlink/test/test_socket.py | 45 + .../site-packages/hyperlink/test/test_url.py | 1493 +++ .../idna-2.10.dist-info/INSTALLER | 1 + .../idna-2.10.dist-info/LICENSE.rst | 34 + .../idna-2.10.dist-info/METADATA | 243 + .../site-packages/idna-2.10.dist-info/RECORD | 22 + .../site-packages/idna-2.10.dist-info/WHEEL | 6 + .../idna-2.10.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 233 bytes .../idna/__pycache__/codec.cpython-39.pyc | Bin 0 -> 2887 bytes .../idna/__pycache__/compat.cpython-39.pyc | Bin 0 -> 605 bytes .../idna/__pycache__/core.cpython-39.pyc | Bin 0 -> 9153 bytes .../idna/__pycache__/idnadata.cpython-39.pyc | Bin 0 -> 22114 bytes .../idna/__pycache__/intranges.cpython-39.pyc | Bin 0 -> 1785 bytes .../__pycache__/package_data.cpython-39.pyc | Bin 0 -> 188 bytes .../idna/__pycache__/uts46data.cpython-39.pyc | Bin 0 -> 146122 bytes .../venv/Lib/site-packages/idna/codec.py | 118 + .../venv/Lib/site-packages/idna/compat.py | 12 + .../venv/Lib/site-packages/idna/core.py | 400 + .../venv/Lib/site-packages/idna/idnadata.py | 2050 ++++ .../venv/Lib/site-packages/idna/intranges.py | 53 + .../Lib/site-packages/idna/package_data.py | 2 + .../venv/Lib/site-packages/idna/uts46data.py | 8357 +++++++++++++++++ .../DESCRIPTION.rst | 110 + .../incremental-17.5.0.dist-info/INSTALLER | 1 + .../incremental-17.5.0.dist-info/METADATA | 133 + .../incremental-17.5.0.dist-info/RECORD | 24 + .../incremental-17.5.0.dist-info/WHEEL | 6 + .../entry_points.txt | 4 + .../metadata.json | 1 + .../top_level.txt | 1 + .../Lib/site-packages/incremental/__init__.py | 353 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 8166 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 348 bytes .../__pycache__/update.cpython-39.pyc | Bin 0 -> 4030 bytes .../Lib/site-packages/incremental/_version.py | 11 + .../incremental/tests/__init__.py | 0 .../tests/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 177 bytes .../__pycache__/test_update.cpython-39.pyc | Bin 0 -> 17714 bytes .../__pycache__/test_version.cpython-39.pyc | Bin 0 -> 15483 bytes .../incremental/tests/test_update.py | 715 ++ .../incremental/tests/test_version.py | 415 + .../Lib/site-packages/incremental/update.py | 209 + .../isort-5.6.4.dist-info/INSTALLER | 1 + .../isort-5.6.4.dist-info/LICENSE | 21 + .../isort-5.6.4.dist-info/METADATA | 712 ++ .../isort-5.6.4.dist-info/RECORD | 96 + .../site-packages/isort-5.6.4.dist-info/WHEEL | 4 + .../isort-5.6.4.dist-info/entry_points.txt | 9 + .../venv/Lib/site-packages/isort/__init__.py | 9 + .../venv/Lib/site-packages/isort/__main__.py | 3 + .../isort/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 618 bytes .../isort/__pycache__/__main__.cpython-39.pyc | Bin 0 -> 212 bytes .../isort/__pycache__/_version.cpython-39.pyc | Bin 0 -> 186 bytes .../isort/__pycache__/api.cpython-39.pyc | Bin 0 -> 11297 bytes .../isort/__pycache__/comments.cpython-39.pyc | Bin 0 -> 1051 bytes .../isort/__pycache__/core.cpython-39.pyc | Bin 0 -> 7570 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 8244 bytes .../isort/__pycache__/format.cpython-39.pyc | Bin 0 -> 5277 bytes .../isort/__pycache__/hooks.cpython-39.pyc | Bin 0 -> 3152 bytes .../isort/__pycache__/io.cpython-39.pyc | Bin 0 -> 2672 bytes .../isort/__pycache__/literal.cpython-39.pyc | Bin 0 -> 4095 bytes .../isort/__pycache__/logo.cpython-39.pyc | Bin 0 -> 561 bytes .../isort/__pycache__/main.cpython-39.pyc | Bin 0 -> 24663 bytes .../isort/__pycache__/output.cpython-39.pyc | Bin 0 -> 11911 bytes .../isort/__pycache__/parse.cpython-39.pyc | Bin 0 -> 10795 bytes .../isort/__pycache__/place.cpython-39.pyc | Bin 0 -> 4917 bytes .../isort/__pycache__/profiles.cpython-39.pyc | Bin 0 -> 1253 bytes .../__pycache__/pylama_isort.cpython-39.pyc | Bin 0 -> 1515 bytes .../isort/__pycache__/sections.cpython-39.pyc | Bin 0 -> 479 bytes .../isort/__pycache__/settings.cpython-39.pyc | Bin 0 -> 19685 bytes .../setuptools_commands.cpython-39.pyc | Bin 0 -> 2328 bytes .../isort/__pycache__/sorting.cpython-39.pyc | Bin 0 -> 2932 bytes .../isort/__pycache__/utils.cpython-39.pyc | Bin 0 -> 856 bytes .../isort/__pycache__/wrap.cpython-39.pyc | Bin 0 -> 3180 bytes .../__pycache__/wrap_modes.cpython-39.pyc | Bin 0 -> 7243 bytes .../site-packages/isort/_future/__init__.py | 12 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 389 bytes .../__pycache__/_dataclasses.cpython-39.pyc | Bin 0 -> 21743 bytes .../isort/_future/_dataclasses.py | 1209 +++ .../isort/_vendored/toml/LICENSE | 27 + .../isort/_vendored/toml/__init__.py | 23 + .../toml/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 696 bytes .../toml/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 22998 bytes .../toml/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 9344 bytes .../toml/__pycache__/ordered.cpython-39.pyc | Bin 0 -> 940 bytes .../toml/__pycache__/tz.cpython-39.pyc | Bin 0 -> 1113 bytes .../isort/_vendored/toml/decoder.py | 1053 +++ .../isort/_vendored/toml/encoder.py | 295 + .../isort/_vendored/toml/ordered.py | 13 + .../site-packages/isort/_vendored/toml/tz.py | 21 + .../venv/Lib/site-packages/isort/_version.py | 1 + .../venv/Lib/site-packages/isort/api.py | 389 + .../venv/Lib/site-packages/isort/comments.py | 32 + .../venv/Lib/site-packages/isort/core.py | 420 + .../isort/deprecated/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 176 bytes .../__pycache__/finders.cpython-39.pyc | Bin 0 -> 13585 bytes .../site-packages/isort/deprecated/finders.py | 415 + .../Lib/site-packages/isort/exceptions.py | 171 + .../venv/Lib/site-packages/isort/format.py | 149 + .../venv/Lib/site-packages/isort/hooks.py | 90 + WebCrawler/venv/Lib/site-packages/isort/io.py | 69 + .../venv/Lib/site-packages/isort/literal.py | 109 + .../venv/Lib/site-packages/isort/logo.py | 19 + .../venv/Lib/site-packages/isort/main.py | 1022 ++ .../venv/Lib/site-packages/isort/output.py | 584 ++ .../venv/Lib/site-packages/isort/parse.py | 548 ++ .../venv/Lib/site-packages/isort/place.py | 145 + .../venv/Lib/site-packages/isort/profiles.py | 68 + .../Lib/site-packages/isort/pylama_isort.py | 43 + .../venv/Lib/site-packages/isort/sections.py | 9 + .../venv/Lib/site-packages/isort/settings.py | 739 ++ .../isort/setuptools_commands.py | 61 + .../venv/Lib/site-packages/isort/sorting.py | 102 + .../site-packages/isort/stdlibs/__init__.py | 1 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 319 bytes .../stdlibs/__pycache__/all.cpython-39.pyc | Bin 0 -> 232 bytes .../stdlibs/__pycache__/py2.cpython-39.pyc | Bin 0 -> 213 bytes .../stdlibs/__pycache__/py27.cpython-39.pyc | Bin 0 -> 2929 bytes .../stdlibs/__pycache__/py3.cpython-39.pyc | Bin 0 -> 297 bytes .../stdlibs/__pycache__/py35.cpython-39.pyc | Bin 0 -> 2188 bytes .../stdlibs/__pycache__/py36.cpython-39.pyc | Bin 0 -> 2197 bytes .../stdlibs/__pycache__/py37.cpython-39.pyc | Bin 0 -> 2215 bytes .../stdlibs/__pycache__/py38.cpython-39.pyc | Bin 0 -> 2206 bytes .../stdlibs/__pycache__/py39.cpython-39.pyc | Bin 0 -> 2194 bytes .../Lib/site-packages/isort/stdlibs/all.py | 3 + .../Lib/site-packages/isort/stdlibs/py2.py | 3 + .../Lib/site-packages/isort/stdlibs/py27.py | 300 + .../Lib/site-packages/isort/stdlibs/py3.py | 3 + .../Lib/site-packages/isort/stdlibs/py35.py | 222 + .../Lib/site-packages/isort/stdlibs/py36.py | 223 + .../Lib/site-packages/isort/stdlibs/py37.py | 224 + .../Lib/site-packages/isort/stdlibs/py38.py | 223 + .../Lib/site-packages/isort/stdlibs/py39.py | 223 + .../venv/Lib/site-packages/isort/utils.py | 16 + .../venv/Lib/site-packages/isort/wrap.py | 131 + .../Lib/site-packages/isort/wrap_modes.py | 325 + .../itemadapter-0.2.0.dist-info/INSTALLER | 1 + .../itemadapter-0.2.0.dist-info/LICENSE | 26 + .../itemadapter-0.2.0.dist-info/METADATA | 424 + .../itemadapter-0.2.0.dist-info/RECORD | 12 + .../itemadapter-0.2.0.dist-info/WHEEL | 5 + .../itemadapter-0.2.0.dist-info/top_level.txt | 1 + .../Lib/site-packages/itemadapter/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 313 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 0 -> 11698 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 3718 bytes .../Lib/site-packages/itemadapter/adapter.py | 264 + .../Lib/site-packages/itemadapter/utils.py | 114 + .../jmespath-0.10.0.dist-info/DESCRIPTION.rst | 224 + .../jmespath-0.10.0.dist-info/INSTALLER | 1 + .../jmespath-0.10.0.dist-info/LICENSE.txt | 20 + .../jmespath-0.10.0.dist-info/METADATA | 251 + .../jmespath-0.10.0.dist-info/RECORD | 26 + .../jmespath-0.10.0.dist-info/WHEEL | 6 + .../jmespath-0.10.0.dist-info/metadata.json | 1 + .../jmespath-0.10.0.dist-info/top_level.txt | 1 + .../Lib/site-packages/jmespath/__init__.py | 23 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1045 bytes .../jmespath/__pycache__/ast.cpython-39.pyc | Bin 0 -> 3058 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 2272 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 4682 bytes .../__pycache__/functions.cpython-39.pyc | Bin 0 -> 9994 bytes .../jmespath/__pycache__/lexer.cpython-39.pyc | Bin 0 -> 4902 bytes .../__pycache__/parser.cpython-39.pyc | Bin 0 -> 16034 bytes .../__pycache__/visitor.cpython-39.pyc | Bin 0 -> 9883 bytes .../venv/Lib/site-packages/jmespath/ast.py | 90 + .../venv/Lib/site-packages/jmespath/compat.py | 65 + .../Lib/site-packages/jmespath/exceptions.py | 122 + .../Lib/site-packages/jmespath/functions.py | 362 + .../venv/Lib/site-packages/jmespath/lexer.py | 208 + .../venv/Lib/site-packages/jmespath/parser.py | 527 ++ .../Lib/site-packages/jmespath/visitor.py | 328 + .../AUTHORS.rst | 10 + .../INSTALLER | 1 + .../lazy_object_proxy-1.4.3.dist-info/LICENSE | 21 + .../METADATA | 166 + .../lazy_object_proxy-1.4.3.dist-info/RECORD | 19 + .../lazy_object_proxy-1.4.3.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../lazy_object_proxy/__init__.py | 23 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 543 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 232 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 430 bytes .../__pycache__/simple.cpython-39.pyc | Bin 0 -> 7803 bytes .../__pycache__/slots.cpython-39.pyc | Bin 0 -> 15245 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 789 bytes .../lazy_object_proxy/_version.py | 5 + .../site-packages/lazy_object_proxy/compat.py | 9 + .../site-packages/lazy_object_proxy/simple.py | 246 + .../site-packages/lazy_object_proxy/slots.py | 414 + .../site-packages/lazy_object_proxy/utils.py | 13 + .../lxml-4.6.2.dist-info/INSTALLER | 1 + .../lxml-4.6.2.dist-info/LICENSE.txt | 29 + .../lxml-4.6.2.dist-info/LICENSES.txt | 29 + .../lxml-4.6.2.dist-info/METADATA | 82 + .../site-packages/lxml-4.6.2.dist-info/RECORD | 168 + .../site-packages/lxml-4.6.2.dist-info/WHEEL | 5 + .../lxml-4.6.2.dist-info/top_level.txt | 1 + .../Lib/site-packages/lxml/ElementInclude.py | 244 + .../venv/Lib/site-packages/lxml/__init__.py | 23 + .../__pycache__/ElementInclude.cpython-39.pyc | Bin 0 -> 3833 bytes .../lxml/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 687 bytes .../__pycache__/_elementpath.cpython-39.pyc | Bin 0 -> 6405 bytes .../lxml/__pycache__/builder.cpython-39.pyc | Bin 0 -> 5845 bytes .../lxml/__pycache__/cssselect.cpython-39.pyc | Bin 0 -> 3628 bytes .../__pycache__/doctestcompare.cpython-39.pyc | Bin 0 -> 13937 bytes .../__pycache__/pyclasslookup.cpython-39.pyc | Bin 0 -> 228 bytes .../lxml/__pycache__/sax.cpython-39.pyc | Bin 0 -> 8138 bytes .../__pycache__/usedoctest.cpython-39.pyc | Bin 0 -> 418 bytes .../lxml/_elementpath.cp39-win_amd64.pyd | Bin 0 -> 144384 bytes .../Lib/site-packages/lxml/_elementpath.py | 345 + .../lxml/builder.cp39-win_amd64.pyd | Bin 0 -> 81920 bytes .../venv/Lib/site-packages/lxml/builder.py | 239 + .../venv/Lib/site-packages/lxml/cssselect.py | 102 + .../Lib/site-packages/lxml/doctestcompare.py | 507 + .../lxml/etree.cp39-win_amd64.pyd | Bin 0 -> 3859968 bytes .../venv/Lib/site-packages/lxml/etree.h | 224 + .../venv/Lib/site-packages/lxml/etree_api.h | 219 + .../site-packages/lxml/html/ElementSoup.py | 10 + .../Lib/site-packages/lxml/html/__init__.py | 1948 ++++ .../__pycache__/ElementSoup.cpython-39.pyc | Bin 0 -> 514 bytes .../html/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 56885 bytes .../__pycache__/_diffcommand.cpython-39.pyc | Bin 0 -> 2284 bytes .../__pycache__/_html5builder.cpython-39.pyc | Bin 0 -> 3596 bytes .../html/__pycache__/_setmixin.cpython-39.pyc | Bin 0 -> 2097 bytes .../html/__pycache__/builder.cpython-39.pyc | Bin 0 -> 2947 bytes .../html/__pycache__/clean.cpython-39.pyc | Bin 0 -> 17433 bytes .../lxml/html/__pycache__/defs.cpython-39.pyc | Bin 0 -> 2803 bytes .../lxml/html/__pycache__/diff.cpython-39.pyc | Bin 0 -> 24042 bytes .../html/__pycache__/formfill.cpython-39.pyc | Bin 0 -> 7391 bytes .../__pycache__/html5parser.cpython-39.pyc | Bin 0 -> 6472 bytes .../__pycache__/soupparser.cpython-39.pyc | Bin 0 -> 7997 bytes .../__pycache__/usedoctest.cpython-39.pyc | Bin 0 -> 440 bytes .../site-packages/lxml/html/_diffcommand.py | 88 + .../site-packages/lxml/html/_html5builder.py | 100 + .../Lib/site-packages/lxml/html/_setmixin.py | 56 + .../Lib/site-packages/lxml/html/builder.py | 133 + .../lxml/html/clean.cp39-win_amd64.pyd | Bin 0 -> 189952 bytes .../venv/Lib/site-packages/lxml/html/clean.py | 779 ++ .../venv/Lib/site-packages/lxml/html/defs.py | 133 + .../lxml/html/diff.cp39-win_amd64.pyd | Bin 0 -> 254464 bytes .../venv/Lib/site-packages/lxml/html/diff.py | 884 ++ .../Lib/site-packages/lxml/html/formfill.py | 299 + .../site-packages/lxml/html/html5parser.py | 260 + .../Lib/site-packages/lxml/html/soupparser.py | 314 + .../Lib/site-packages/lxml/html/usedoctest.py | 13 + .../site-packages/lxml/includes/__init__.pxd | 0 .../site-packages/lxml/includes/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 173 bytes .../Lib/site-packages/lxml/includes/c14n.pxd | 26 + .../site-packages/lxml/includes/config.pxd | 3 + .../site-packages/lxml/includes/dtdvalid.pxd | 18 + .../site-packages/lxml/includes/etree_defs.h | 418 + .../lxml/includes/etreepublic.pxd | 237 + .../lxml/includes/htmlparser.pxd | 56 + .../lxml/includes/libexslt/exslt.h | 102 + .../lxml/includes/libexslt/exsltconfig.h | 73 + .../lxml/includes/libexslt/exsltexports.h | 140 + .../lxml/includes/libexslt/libexslt.h | 29 + .../lxml/includes/libxml/DOCBparser.h | 96 + .../lxml/includes/libxml/HTMLparser.h | 306 + .../lxml/includes/libxml/HTMLtree.h | 147 + .../site-packages/lxml/includes/libxml/SAX.h | 173 + .../site-packages/lxml/includes/libxml/SAX2.h | 178 + .../site-packages/lxml/includes/libxml/c14n.h | 126 + .../lxml/includes/libxml/catalog.h | 182 + .../lxml/includes/libxml/chvalid.h | 230 + .../lxml/includes/libxml/debugXML.h | 217 + .../site-packages/lxml/includes/libxml/dict.h | 86 + .../lxml/includes/libxml/encoding.h | 240 + .../lxml/includes/libxml/entities.h | 151 + .../lxml/includes/libxml/globals.h | 509 + .../site-packages/lxml/includes/libxml/hash.h | 233 + .../site-packages/lxml/includes/libxml/list.h | 137 + .../lxml/includes/libxml/nanoftp.h | 163 + .../lxml/includes/libxml/nanohttp.h | 81 + .../lxml/includes/libxml/parser.h | 1241 +++ .../lxml/includes/libxml/parserInternals.h | 644 ++ .../lxml/includes/libxml/pattern.h | 100 + .../lxml/includes/libxml/relaxng.h | 217 + .../lxml/includes/libxml/schemasInternals.h | 958 ++ .../lxml/includes/libxml/schematron.h | 142 + .../lxml/includes/libxml/threads.h | 84 + .../site-packages/lxml/includes/libxml/tree.h | 1311 +++ .../site-packages/lxml/includes/libxml/uri.h | 94 + .../lxml/includes/libxml/valid.h | 458 + .../lxml/includes/libxml/xinclude.h | 129 + .../lxml/includes/libxml/xlink.h | 189 + .../lxml/includes/libxml/xmlIO.h | 366 + .../lxml/includes/libxml/xmlautomata.h | 146 + .../lxml/includes/libxml/xmlerror.h | 945 ++ .../lxml/includes/libxml/xmlexports.h | 162 + .../lxml/includes/libxml/xmlmemory.h | 224 + .../lxml/includes/libxml/xmlmodule.h | 57 + .../lxml/includes/libxml/xmlreader.h | 428 + .../lxml/includes/libxml/xmlregexp.h | 222 + .../lxml/includes/libxml/xmlsave.h | 88 + .../lxml/includes/libxml/xmlschemas.h | 246 + .../lxml/includes/libxml/xmlschemastypes.h | 151 + .../lxml/includes/libxml/xmlstring.h | 140 + .../lxml/includes/libxml/xmlunicode.h | 202 + .../lxml/includes/libxml/xmlversion.h | 489 + .../lxml/includes/libxml/xmlwriter.h | 488 + .../lxml/includes/libxml/xpath.h | 557 ++ .../lxml/includes/libxml/xpathInternals.h | 632 ++ .../lxml/includes/libxml/xpointer.h | 114 + .../lxml/includes/libxslt/attributes.h | 38 + .../lxml/includes/libxslt/documents.h | 93 + .../lxml/includes/libxslt/extensions.h | 262 + .../lxml/includes/libxslt/extra.h | 72 + .../lxml/includes/libxslt/functions.h | 78 + .../lxml/includes/libxslt/imports.h | 75 + .../lxml/includes/libxslt/keys.h | 53 + .../lxml/includes/libxslt/libxslt.h | 36 + .../lxml/includes/libxslt/namespaces.h | 68 + .../lxml/includes/libxslt/numbersInternals.h | 73 + .../lxml/includes/libxslt/preproc.h | 43 + .../lxml/includes/libxslt/security.h | 104 + .../lxml/includes/libxslt/templates.h | 77 + .../lxml/includes/libxslt/transform.h | 207 + .../lxml/includes/libxslt/trio.h | 216 + .../lxml/includes/libxslt/triodef.h | 220 + .../lxml/includes/libxslt/variables.h | 126 + .../lxml/includes/libxslt/win32config.h | 129 + .../lxml/includes/libxslt/xslt.h | 110 + .../lxml/includes/libxslt/xsltInternals.h | 1982 ++++ .../lxml/includes/libxslt/xsltconfig.h | 183 + .../lxml/includes/libxslt/xsltexports.h | 142 + .../lxml/includes/libxslt/xsltlocale.h | 67 + .../lxml/includes/libxslt/xsltutils.h | 313 + .../lxml/includes/lxml-version.h | 3 + .../site-packages/lxml/includes/relaxng.pxd | 64 + .../lxml/includes/schematron.pxd | 34 + .../Lib/site-packages/lxml/includes/tree.pxd | 480 + .../Lib/site-packages/lxml/includes/uri.pxd | 5 + .../site-packages/lxml/includes/xinclude.pxd | 22 + .../site-packages/lxml/includes/xmlerror.pxd | 851 ++ .../site-packages/lxml/includes/xmlparser.pxd | 249 + .../site-packages/lxml/includes/xmlschema.pxd | 35 + .../Lib/site-packages/lxml/includes/xpath.pxd | 135 + .../Lib/site-packages/lxml/includes/xslt.pxd | 191 + .../lxml/isoschematron/__init__.py | 334 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 9662 bytes .../resources/rng/iso-schematron.rng | 709 ++ .../resources/xsl/RNG2Schtrn.xsl | 75 + .../resources/xsl/XSD2Schtrn.xsl | 77 + .../iso_abstract_expand.xsl | 313 + .../iso-schematron-xslt1/iso_dsdl_include.xsl | 1160 +++ .../iso_schematron_message.xsl | 55 + .../iso_schematron_skeleton_for_xslt1.xsl | 1796 ++++ .../iso_svrl_for_xslt1.xsl | 588 ++ .../xsl/iso-schematron-xslt1/readme.txt | 84 + .../venv/Lib/site-packages/lxml/lxml.etree.h | 224 + .../Lib/site-packages/lxml/lxml.etree_api.h | 219 + .../lxml/objectify.cp39-win_amd64.pyd | Bin 0 -> 1676800 bytes .../Lib/site-packages/lxml/pyclasslookup.py | 3 + .../site-packages/lxml/sax.cp39-win_amd64.pyd | Bin 0 -> 125440 bytes WebCrawler/venv/Lib/site-packages/lxml/sax.py | 278 + .../venv/Lib/site-packages/lxml/usedoctest.py | 13 + .../mccabe-0.6.1.dist-info/DESCRIPTION.rst | 152 + .../mccabe-0.6.1.dist-info/INSTALLER | 1 + .../mccabe-0.6.1.dist-info/METADATA | 178 + .../mccabe-0.6.1.dist-info/RECORD | 10 + .../mccabe-0.6.1.dist-info/WHEEL | 6 + .../mccabe-0.6.1.dist-info/entry_points.txt | 3 + .../mccabe-0.6.1.dist-info/metadata.json | 1 + .../mccabe-0.6.1.dist-info/top_level.txt | 1 + WebCrawler/venv/Lib/site-packages/mccabe.py | 347 + .../parsel-1.6.0.dist-info/INSTALLER | 1 + .../parsel-1.6.0.dist-info/LICENSE | 27 + .../parsel-1.6.0.dist-info/METADATA | 287 + .../parsel-1.6.0.dist-info/RECORD | 16 + .../parsel-1.6.0.dist-info/WHEEL | 6 + .../parsel-1.6.0.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/parsel/__init__.py | 14 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 543 bytes .../__pycache__/csstranslator.cpython-39.pyc | Bin 0 -> 4390 bytes .../__pycache__/selector.cpython-39.pyc | Bin 0 -> 15602 bytes .../parsel/__pycache__/utils.cpython-39.pyc | Bin 0 -> 2989 bytes .../__pycache__/xpathfuncs.cpython-39.pyc | Bin 0 -> 1821 bytes .../Lib/site-packages/parsel/csstranslator.py | 115 + .../venv/Lib/site-packages/parsel/selector.py | 405 + .../venv/Lib/site-packages/parsel/utils.py | 94 + .../Lib/site-packages/parsel/xpathfuncs.py | 61 + .../pip-20.3.3.dist-info/INSTALLER | 1 + .../pip-20.3.3.dist-info/LICENSE.txt | 20 + .../pip-20.3.3.dist-info/METADATA | 94 + .../site-packages/pip-20.3.3.dist-info/RECORD | 760 ++ .../pip-20.3.3.dist-info/REQUESTED | 0 .../site-packages/pip-20.3.3.dist-info/WHEEL | 6 + .../pip-20.3.3.dist-info/entry_points.txt | 5 + .../pip-20.3.3.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/pip/__init__.py | 18 + .../venv/Lib/site-packages/pip/__main__.py | 26 + .../pip/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 653 bytes .../pip/__pycache__/__main__.cpython-39.pyc | Bin 0 -> 497 bytes .../site-packages/pip/_internal/__init__.py | 17 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 702 bytes .../__pycache__/build_env.cpython-39.pyc | Bin 0 -> 7537 bytes .../__pycache__/cache.cpython-39.pyc | Bin 0 -> 9094 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 0 -> 10837 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 14533 bytes .../__pycache__/locations.cpython-39.pyc | Bin 0 -> 4473 bytes .../_internal/__pycache__/main.cpython-39.pyc | Bin 0 -> 639 bytes .../__pycache__/pyproject.cpython-39.pyc | Bin 0 -> 3742 bytes .../self_outdated_check.cpython-39.pyc | Bin 0 -> 4573 bytes .../__pycache__/wheel_builder.cpython-39.pyc | Bin 0 -> 6835 bytes .../site-packages/pip/_internal/build_env.py | 242 + .../Lib/site-packages/pip/_internal/cache.py | 346 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 260 bytes .../__pycache__/autocompletion.cpython-39.pyc | Bin 0 -> 4939 bytes .../__pycache__/base_command.cpython-39.pyc | Bin 0 -> 6880 bytes .../cli/__pycache__/cmdoptions.cpython-39.pyc | Bin 0 -> 20776 bytes .../command_context.cpython-39.pyc | Bin 0 -> 1340 bytes .../cli/__pycache__/main.cpython-39.pyc | Bin 0 -> 1444 bytes .../__pycache__/main_parser.cpython-39.pyc | Bin 0 -> 2231 bytes .../cli/__pycache__/parser.cpython-39.pyc | Bin 0 -> 9333 bytes .../__pycache__/progress_bars.cpython-39.pyc | Bin 0 -> 7695 bytes .../__pycache__/req_command.cpython-39.pyc | Bin 0 -> 10546 bytes .../cli/__pycache__/spinners.cpython-39.pyc | Bin 0 -> 4789 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 0 -> 389 bytes .../pip/_internal/cli/autocompletion.py | 164 + .../pip/_internal/cli/base_command.py | 261 + .../pip/_internal/cli/cmdoptions.py | 971 ++ .../pip/_internal/cli/command_context.py | 36 + .../site-packages/pip/_internal/cli/main.py | 75 + .../pip/_internal/cli/main_parser.py | 96 + .../site-packages/pip/_internal/cli/parser.py | 285 + .../pip/_internal/cli/progress_bars.py | 280 + .../pip/_internal/cli/req_command.py | 436 + .../pip/_internal/cli/spinners.py | 173 + .../pip/_internal/cli/status_codes.py | 8 + .../pip/_internal/commands/__init__.py | 123 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2960 bytes .../commands/__pycache__/cache.cpython-39.pyc | Bin 0 -> 5859 bytes .../commands/__pycache__/check.cpython-39.pyc | Bin 0 -> 1576 bytes .../__pycache__/completion.cpython-39.pyc | Bin 0 -> 3182 bytes .../__pycache__/configuration.cpython-39.pyc | Bin 0 -> 8132 bytes .../commands/__pycache__/debug.cpython-39.pyc | Bin 0 -> 6497 bytes .../__pycache__/download.cpython-39.pyc | Bin 0 -> 3964 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 0 -> 3284 bytes .../commands/__pycache__/hash.cpython-39.pyc | Bin 0 -> 2143 bytes .../commands/__pycache__/help.cpython-39.pyc | Bin 0 -> 1369 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 16822 bytes .../commands/__pycache__/list.cpython-39.pyc | Bin 0 -> 8976 bytes .../__pycache__/search.cpython-39.pyc | Bin 0 -> 4887 bytes .../commands/__pycache__/show.cpython-39.pyc | Bin 0 -> 6418 bytes .../__pycache__/uninstall.cpython-39.pyc | Bin 0 -> 2954 bytes .../commands/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 5038 bytes .../pip/_internal/commands/cache.py | 234 + .../pip/_internal/commands/check.py | 51 + .../pip/_internal/commands/completion.py | 98 + .../pip/_internal/commands/configuration.py | 280 + .../pip/_internal/commands/debug.py | 230 + .../pip/_internal/commands/download.py | 143 + .../pip/_internal/commands/freeze.py | 116 + .../pip/_internal/commands/hash.py | 63 + .../pip/_internal/commands/help.py | 46 + .../pip/_internal/commands/install.py | 736 ++ .../pip/_internal/commands/list.py | 327 + .../pip/_internal/commands/search.py | 162 + .../pip/_internal/commands/show.py | 186 + .../pip/_internal/commands/uninstall.py | 95 + .../pip/_internal/commands/wheel.py | 189 + .../pip/_internal/configuration.py | 407 + .../pip/_internal/distributions/__init__.py | 24 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 836 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 1952 bytes .../__pycache__/installed.cpython-39.pyc | Bin 0 -> 1232 bytes .../__pycache__/sdist.cpython-39.pyc | Bin 0 -> 3511 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 0 -> 1576 bytes .../pip/_internal/distributions/base.py | 46 + .../pip/_internal/distributions/installed.py | 25 + .../pip/_internal/distributions/sdist.py | 105 + .../pip/_internal/distributions/wheel.py | 37 + .../site-packages/pip/_internal/exceptions.py | 381 + .../pip/_internal/index/__init__.py | 2 + .../index/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 214 bytes .../__pycache__/collector.cpython-39.pyc | Bin 0 -> 17739 bytes .../__pycache__/package_finder.cpython-39.pyc | Bin 0 -> 26067 bytes .../pip/_internal/index/collector.py | 667 ++ .../pip/_internal/index/package_finder.py | 1015 ++ .../site-packages/pip/_internal/locations.py | 193 + .../Lib/site-packages/pip/_internal/main.py | 16 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 248 bytes .../__pycache__/candidate.cpython-39.pyc | Bin 0 -> 1475 bytes .../__pycache__/direct_url.cpython-39.pyc | Bin 0 -> 6499 bytes .../__pycache__/format_control.cpython-39.pyc | Bin 0 -> 2733 bytes .../models/__pycache__/index.cpython-39.pyc | Bin 0 -> 1214 bytes .../models/__pycache__/link.cpython-39.pyc | Bin 0 -> 7144 bytes .../models/__pycache__/scheme.cpython-39.pyc | Bin 0 -> 936 bytes .../__pycache__/search_scope.cpython-39.pyc | Bin 0 -> 3429 bytes .../selection_prefs.cpython-39.pyc | Bin 0 -> 1646 bytes .../__pycache__/target_python.cpython-39.pyc | Bin 0 -> 3352 bytes .../models/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 3200 bytes .../pip/_internal/models/candidate.py | 39 + .../pip/_internal/models/direct_url.py | 243 + .../pip/_internal/models/format_control.py | 92 + .../pip/_internal/models/index.py | 34 + .../pip/_internal/models/link.py | 246 + .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 135 + .../pip/_internal/models/selection_prefs.py | 50 + .../pip/_internal/models/target_python.py | 117 + .../pip/_internal/models/wheel.py | 78 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 236 bytes .../network/__pycache__/auth.cpython-39.pyc | Bin 0 -> 7088 bytes .../network/__pycache__/cache.cpython-39.pyc | Bin 0 -> 2812 bytes .../__pycache__/download.cpython-39.pyc | Bin 0 -> 5263 bytes .../__pycache__/lazy_wheel.cpython-39.pyc | Bin 0 -> 8052 bytes .../__pycache__/session.cpython-39.pyc | Bin 0 -> 9497 bytes .../network/__pycache__/utils.cpython-39.pyc | Bin 0 -> 1389 bytes .../network/__pycache__/xmlrpc.cpython-39.pyc | Bin 0 -> 1851 bytes .../pip/_internal/network/auth.py | 310 + .../pip/_internal/network/cache.py | 79 + .../pip/_internal/network/download.py | 202 + .../pip/_internal/network/lazy_wheel.py | 231 + .../pip/_internal/network/session.py | 428 + .../pip/_internal/network/utils.py | 97 + .../pip/_internal/network/xmlrpc.py | 53 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 184 bytes .../__pycache__/check.cpython-39.pyc | Bin 0 -> 3606 bytes .../__pycache__/freeze.cpython-39.pyc | Bin 0 -> 5926 bytes .../__pycache__/prepare.cpython-39.pyc | Bin 0 -> 13652 bytes .../_internal/operations/build/__init__.py | 0 .../build/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 190 bytes .../build/__pycache__/metadata.cpython-39.pyc | Bin 0 -> 1211 bytes .../metadata_legacy.cpython-39.pyc | Bin 0 -> 1987 bytes .../build/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 1328 bytes .../__pycache__/wheel_legacy.cpython-39.pyc | Bin 0 -> 2610 bytes .../_internal/operations/build/metadata.py | 38 + .../operations/build/metadata_legacy.py | 77 + .../pip/_internal/operations/build/wheel.py | 47 + .../operations/build/wheel_legacy.py | 113 + .../pip/_internal/operations/check.py | 155 + .../pip/_internal/operations/freeze.py | 277 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 248 bytes .../editable_legacy.cpython-39.pyc | Bin 0 -> 1366 bytes .../install/__pycache__/legacy.cpython-39.pyc | Bin 0 -> 3256 bytes .../install/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 21240 bytes .../operations/install/editable_legacy.py | 52 + .../_internal/operations/install/legacy.py | 130 + .../pip/_internal/operations/install/wheel.py | 846 ++ .../pip/_internal/operations/prepare.py | 608 ++ .../site-packages/pip/_internal/pyproject.py | 196 + .../pip/_internal/req/__init__.py | 103 + .../req/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2485 bytes .../__pycache__/constructors.cpython-39.pyc | Bin 0 -> 11015 bytes .../req/__pycache__/req_file.cpython-39.pyc | Bin 0 -> 12701 bytes .../__pycache__/req_install.cpython-39.pyc | Bin 0 -> 21425 bytes .../req/__pycache__/req_set.cpython-39.pyc | Bin 0 -> 5804 bytes .../__pycache__/req_tracker.cpython-39.pyc | Bin 0 -> 4226 bytes .../__pycache__/req_uninstall.cpython-39.pyc | Bin 0 -> 17554 bytes .../pip/_internal/req/constructors.py | 476 + .../pip/_internal/req/req_file.py | 574 ++ .../pip/_internal/req/req_install.py | 907 ++ .../pip/_internal/req/req_set.py | 204 + .../pip/_internal/req/req_tracker.py | 151 + .../pip/_internal/req/req_uninstall.py | 657 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 184 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 1016 bytes .../pip/_internal/resolution/base.py | 21 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 191 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 0 -> 11571 bytes .../_internal/resolution/legacy/resolver.py | 473 + .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 195 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 5774 bytes .../__pycache__/candidates.cpython-39.pyc | Bin 0 -> 18204 bytes .../__pycache__/factory.cpython-39.pyc | Bin 0 -> 11023 bytes .../found_candidates.cpython-39.pyc | Bin 0 -> 3282 bytes .../__pycache__/provider.cpython-39.pyc | Bin 0 -> 6316 bytes .../__pycache__/reporter.cpython-39.pyc | Bin 0 -> 3202 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 5672 bytes .../__pycache__/resolver.cpython-39.pyc | Bin 0 -> 7822 bytes .../_internal/resolution/resolvelib/base.py | 156 + .../resolution/resolvelib/candidates.py | 615 ++ .../resolution/resolvelib/factory.py | 464 + .../resolution/resolvelib/found_candidates.py | 98 + .../resolution/resolvelib/provider.py | 174 + .../resolution/resolvelib/reporter.py | 84 + .../resolution/resolvelib/requirements.py | 160 + .../resolution/resolvelib/resolver.py | 296 + .../pip/_internal/self_outdated_check.py | 197 + .../pip/_internal/utils/__init__.py | 0 .../utils/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 179 bytes .../utils/__pycache__/appdirs.cpython-39.pyc | Bin 0 -> 1369 bytes .../utils/__pycache__/compat.cpython-39.pyc | Bin 0 -> 6694 bytes .../compatibility_tags.cpython-39.pyc | Bin 0 -> 3928 bytes .../utils/__pycache__/datetime.cpython-39.pyc | Bin 0 -> 500 bytes .../__pycache__/deprecation.cpython-39.pyc | Bin 0 -> 2826 bytes .../direct_url_helpers.cpython-39.pyc | Bin 0 -> 2647 bytes .../__pycache__/distutils_args.cpython-39.pyc | Bin 0 -> 1119 bytes .../utils/__pycache__/encoding.cpython-39.pyc | Bin 0 -> 1299 bytes .../__pycache__/entrypoints.cpython-39.pyc | Bin 0 -> 1323 bytes .../__pycache__/filesystem.cpython-39.pyc | Bin 0 -> 5660 bytes .../__pycache__/filetypes.cpython-39.pyc | Bin 0 -> 868 bytes .../utils/__pycache__/glibc.cpython-39.pyc | Bin 0 -> 1726 bytes .../utils/__pycache__/hashes.cpython-39.pyc | Bin 0 -> 5246 bytes .../inject_securetransport.cpython-39.pyc | Bin 0 -> 952 bytes .../utils/__pycache__/logging.cpython-39.pyc | Bin 0 -> 9219 bytes .../utils/__pycache__/misc.cpython-39.pyc | Bin 0 -> 25049 bytes .../utils/__pycache__/models.cpython-39.pyc | Bin 0 -> 1979 bytes .../__pycache__/packaging.cpython-39.pyc | Bin 0 -> 2632 bytes .../utils/__pycache__/parallel.cpython-39.pyc | Bin 0 -> 3197 bytes .../__pycache__/pkg_resources.cpython-39.pyc | Bin 0 -> 1848 bytes .../setuptools_build.cpython-39.pyc | Bin 0 -> 2925 bytes .../__pycache__/subprocess.cpython-39.pyc | Bin 0 -> 5688 bytes .../utils/__pycache__/temp_dir.cpython-39.pyc | Bin 0 -> 7207 bytes .../utils/__pycache__/typing.cpython-39.pyc | Bin 0 -> 1461 bytes .../__pycache__/unpacking.cpython-39.pyc | Bin 0 -> 6623 bytes .../utils/__pycache__/urls.cpython-39.pyc | Bin 0 -> 1523 bytes .../__pycache__/virtualenv.cpython-39.pyc | Bin 0 -> 3356 bytes .../utils/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 6335 bytes .../pip/_internal/utils/appdirs.py | 44 + .../pip/_internal/utils/compat.py | 293 + .../pip/_internal/utils/compatibility_tags.py | 178 + .../pip/_internal/utils/datetime.py | 14 + .../pip/_internal/utils/deprecation.py | 104 + .../pip/_internal/utils/direct_url_helpers.py | 126 + .../pip/_internal/utils/distutils_args.py | 48 + .../pip/_internal/utils/encoding.py | 41 + .../pip/_internal/utils/entrypoints.py | 31 + .../pip/_internal/utils/filesystem.py | 224 + .../pip/_internal/utils/filetypes.py | 26 + .../pip/_internal/utils/glibc.py | 98 + .../pip/_internal/utils/hashes.py | 169 + .../_internal/utils/inject_securetransport.py | 36 + .../pip/_internal/utils/logging.py | 399 + .../site-packages/pip/_internal/utils/misc.py | 962 ++ .../pip/_internal/utils/models.py | 44 + .../pip/_internal/utils/packaging.py | 95 + .../pip/_internal/utils/parallel.py | 107 + .../pip/_internal/utils/pkg_resources.py | 44 + .../pip/_internal/utils/setuptools_build.py | 181 + .../pip/_internal/utils/subprocess.py | 278 + .../pip/_internal/utils/temp_dir.py | 284 + .../pip/_internal/utils/typing.py | 38 + .../pip/_internal/utils/unpacking.py | 281 + .../site-packages/pip/_internal/utils/urls.py | 55 + .../pip/_internal/utils/virtualenv.py | 119 + .../pip/_internal/utils/wheel.py | 225 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 472 bytes .../vcs/__pycache__/bazaar.cpython-39.pyc | Bin 0 -> 3736 bytes .../vcs/__pycache__/git.cpython-39.pyc | Bin 0 -> 10372 bytes .../vcs/__pycache__/mercurial.cpython-39.pyc | Bin 0 -> 5044 bytes .../vcs/__pycache__/subversion.cpython-39.pyc | Bin 0 -> 8523 bytes .../__pycache__/versioncontrol.cpython-39.pyc | Bin 0 -> 21076 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 120 + .../site-packages/pip/_internal/vcs/git.py | 434 + .../pip/_internal/vcs/mercurial.py | 158 + .../pip/_internal/vcs/subversion.py | 337 + .../pip/_internal/vcs/versioncontrol.py | 819 ++ .../pip/_internal/wheel_builder.py | 306 + .../Lib/site-packages/pip/_vendor/__init__.py | 114 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2957 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 0 -> 21387 bytes .../__pycache__/contextlib2.cpython-39.pyc | Bin 0 -> 15563 bytes .../_vendor/__pycache__/distro.cpython-39.pyc | Bin 0 -> 36866 bytes .../__pycache__/ipaddress.cpython-39.pyc | Bin 0 -> 64667 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 240423 bytes .../__pycache__/retrying.cpython-39.pyc | Bin 0 -> 8034 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 0 -> 26933 bytes .../Lib/site-packages/pip/_vendor/appdirs.py | 633 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 537 bytes .../__pycache__/_cmd.cpython-39.pyc | Bin 0 -> 1558 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 0 -> 3063 bytes .../__pycache__/cache.cpython-39.pyc | Bin 0 -> 1810 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 734 bytes .../__pycache__/controller.cpython-39.pyc | Bin 0 -> 7751 bytes .../__pycache__/filewrapper.cpython-39.pyc | Bin 0 -> 2159 bytes .../__pycache__/heuristics.cpython-39.pyc | Bin 0 -> 4691 bytes .../__pycache__/serialize.cpython-39.pyc | Bin 0 -> 4210 bytes .../__pycache__/wrapper.cpython-39.pyc | Bin 0 -> 661 bytes .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 281 bytes .../__pycache__/file_cache.cpython-39.pyc | Bin 0 -> 3297 bytes .../__pycache__/redis_cache.cpython-39.pyc | Bin 0 -> 1553 bytes .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 376 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 188 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 263 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 0 -> 440 bytes .../certifi/__pycache__/core.cpython-39.pyc | Bin 0 -> 1170 bytes .../pip/_vendor/certifi/cacert.pem | 4606 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 60 + .../pip/_vendor/chardet/__init__.py | 39 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 837 bytes .../__pycache__/big5freq.cpython-39.pyc | Bin 0 -> 27166 bytes .../__pycache__/big5prober.cpython-39.pyc | Bin 0 -> 1121 bytes .../chardistribution.cpython-39.pyc | Bin 0 -> 6207 bytes .../charsetgroupprober.cpython-39.pyc | Bin 0 -> 2238 bytes .../__pycache__/charsetprober.cpython-39.pyc | Bin 0 -> 3470 bytes .../codingstatemachine.cpython-39.pyc | Bin 0 -> 2897 bytes .../chardet/__pycache__/compat.cpython-39.pyc | Bin 0 -> 342 bytes .../__pycache__/cp949prober.cpython-39.pyc | Bin 0 -> 1128 bytes .../chardet/__pycache__/enums.cpython-39.pyc | Bin 0 -> 2635 bytes .../__pycache__/escprober.cpython-39.pyc | Bin 0 -> 2620 bytes .../chardet/__pycache__/escsm.cpython-39.pyc | Bin 0 -> 7069 bytes .../__pycache__/eucjpprober.cpython-39.pyc | Bin 0 -> 2434 bytes .../__pycache__/euckrfreq.cpython-39.pyc | Bin 0 -> 12050 bytes .../__pycache__/euckrprober.cpython-39.pyc | Bin 0 -> 1129 bytes .../__pycache__/euctwfreq.cpython-39.pyc | Bin 0 -> 27170 bytes .../__pycache__/euctwprober.cpython-39.pyc | Bin 0 -> 1129 bytes .../__pycache__/gb2312freq.cpython-39.pyc | Bin 0 -> 19094 bytes .../__pycache__/gb2312prober.cpython-39.pyc | Bin 0 -> 1137 bytes .../__pycache__/hebrewprober.cpython-39.pyc | Bin 0 -> 3006 bytes .../__pycache__/jisfreq.cpython-39.pyc | Bin 0 -> 22122 bytes .../chardet/__pycache__/jpcntx.cpython-39.pyc | Bin 0 -> 37595 bytes .../langbulgarianmodel.cpython-39.pyc | Bin 0 -> 23619 bytes .../langcyrillicmodel.cpython-39.pyc | Bin 0 -> 29083 bytes .../__pycache__/langgreekmodel.cpython-39.pyc | Bin 0 -> 23577 bytes .../langhebrewmodel.cpython-39.pyc | Bin 0 -> 22204 bytes .../langhungarianmodel.cpython-39.pyc | Bin 0 -> 23608 bytes .../__pycache__/langthaimodel.cpython-39.pyc | Bin 0 -> 22183 bytes .../langturkishmodel.cpython-39.pyc | Bin 0 -> 22206 bytes .../__pycache__/latin1prober.cpython-39.pyc | Bin 0 -> 2942 bytes .../mbcharsetprober.cpython-39.pyc | Bin 0 -> 2249 bytes .../mbcsgroupprober.cpython-39.pyc | Bin 0 -> 1118 bytes .../chardet/__pycache__/mbcssm.cpython-39.pyc | Bin 0 -> 15705 bytes .../sbcharsetprober.cpython-39.pyc | Bin 0 -> 3004 bytes .../sbcsgroupprober.cpython-39.pyc | Bin 0 -> 1614 bytes .../__pycache__/sjisprober.cpython-39.pyc | Bin 0 -> 2470 bytes .../universaldetector.cpython-39.pyc | Bin 0 -> 5818 bytes .../__pycache__/utf8prober.cpython-39.pyc | Bin 0 -> 1979 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 426 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../cli/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 183 bytes .../cli/__pycache__/chardetect.cpython-39.pyc | Bin 0 -> 2682 bytes .../pip/_vendor/chardet/cli/chardetect.py | 85 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 34 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 228 + .../pip/_vendor/chardet/langcyrillicmodel.py | 333 + .../pip/_vendor/chardet/langgreekmodel.py | 225 + .../pip/_vendor/chardet/langhebrewmodel.py | 200 + .../pip/_vendor/chardet/langhungarianmodel.py | 225 + .../pip/_vendor/chardet/langthaimodel.py | 199 + .../pip/_vendor/chardet/langturkishmodel.py | 193 + .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/sbcharsetprober.py | 132 + .../pip/_vendor/chardet/sbcsgroupprober.py | 73 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 431 bytes .../colorama/__pycache__/ansi.cpython-39.pyc | Bin 0 -> 3216 bytes .../__pycache__/ansitowin32.cpython-39.pyc | Bin 0 -> 7682 bytes .../__pycache__/initialise.cpython-39.pyc | Bin 0 -> 1698 bytes .../colorama/__pycache__/win32.cpython-39.pyc | Bin 0 -> 3930 bytes .../__pycache__/winterm.cpython-39.pyc | Bin 0 -> 4652 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 258 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../site-packages/pip/_vendor/contextlib2.py | 518 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1044 bytes .../distlib/__pycache__/compat.cpython-39.pyc | Bin 0 -> 32146 bytes .../__pycache__/database.cpython-39.pyc | Bin 0 -> 42468 bytes .../distlib/__pycache__/index.cpython-39.pyc | Bin 0 -> 17489 bytes .../__pycache__/locators.cpython-39.pyc | Bin 0 -> 38477 bytes .../__pycache__/manifest.cpython-39.pyc | Bin 0 -> 10180 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 4471 bytes .../__pycache__/metadata.cpython-39.pyc | Bin 0 -> 26397 bytes .../__pycache__/resources.cpython-39.pyc | Bin 0 -> 11010 bytes .../__pycache__/scripts.cpython-39.pyc | Bin 0 -> 10918 bytes .../distlib/__pycache__/util.cpython-39.pyc | Bin 0 -> 48190 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 20295 bytes .../distlib/__pycache__/wheel.cpython-39.pyc | Bin 0 -> 26379 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 471 bytes .../_backport/__pycache__/misc.cpython-39.pyc | Bin 0 -> 1091 bytes .../__pycache__/shutil.cpython-39.pyc | Bin 0 -> 21665 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 0 -> 15955 bytes .../__pycache__/tarfile.cpython-39.pyc | Bin 0 -> 62719 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 764 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 +++++ .../pip/_vendor/distlib/compat.py | 1120 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 516 + .../pip/_vendor/distlib/locators.py | 1302 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/metadata.py | 1056 +++ .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/scripts.py | 419 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 96768 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 105984 bytes .../site-packages/pip/_vendor/distlib/util.py | 1761 ++++ .../pip/_vendor/distlib/version.py | 736 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 90112 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1018 ++ .../Lib/site-packages/pip/_vendor/distro.py | 1230 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1290 bytes .../__pycache__/_ihatexml.cpython-39.pyc | Bin 0 -> 13759 bytes .../__pycache__/_inputstream.cpython-39.pyc | Bin 0 -> 21618 bytes .../__pycache__/_tokenizer.cpython-39.pyc | Bin 0 -> 39713 bytes .../__pycache__/_utils.cpython-39.pyc | Bin 0 -> 4790 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 66328 bytes .../__pycache__/html5parser.cpython-39.pyc | Bin 0 -> 90999 bytes .../__pycache__/serializer.cpython-39.pyc | Bin 0 -> 10801 bytes .../pip/_vendor/html5lib/_ihatexml.py | 289 + .../pip/_vendor/html5lib/_inputstream.py | 918 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1735 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 5 + .../_trie/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 340 bytes .../_trie/__pycache__/_base.cpython-39.pyc | Bin 0 -> 1584 bytes .../_trie/__pycache__/py.cpython-39.pyc | Bin 0 -> 2245 bytes .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 159 + .../pip/_vendor/html5lib/constants.py | 2946 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 188 bytes .../alphabeticalattributes.cpython-39.pyc | Bin 0 -> 1310 bytes .../filters/__pycache__/base.cpython-39.pyc | Bin 0 -> 858 bytes .../inject_meta_charset.cpython-39.pyc | Bin 0 -> 1864 bytes .../filters/__pycache__/lint.cpython-39.pyc | Bin 0 -> 2606 bytes .../__pycache__/optionaltags.cpython-39.pyc | Bin 0 -> 2751 bytes .../__pycache__/sanitizer.cpython-39.pyc | Bin 0 -> 16874 bytes .../__pycache__/whitespace.cpython-39.pyc | Bin 0 -> 1356 bytes .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 916 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2795 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 925 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 0 -> 1533 bytes .../__pycache__/sax.cpython-39.pyc | Bin 0 -> 1452 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3320 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 11304 bytes .../__pycache__/dom.cpython-39.pyc | Bin 0 -> 9441 bytes .../__pycache__/etree.cpython-39.pyc | Bin 0 -> 11809 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 0 -> 12992 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 343 + .../html5lib/treebuilders/etree_lxml.py | 392 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3986 bytes .../__pycache__/base.cpython-39.pyc | Bin 0 -> 6985 bytes .../__pycache__/dom.cpython-39.pyc | Bin 0 -> 1720 bytes .../__pycache__/etree.cpython-39.pyc | Bin 0 -> 3482 bytes .../__pycache__/etree_lxml.cpython-39.pyc | Bin 0 -> 6619 bytes .../__pycache__/genshi.cpython-39.pyc | Bin 0 -> 1876 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 131 + .../html5lib/treewalkers/etree_lxml.py | 215 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 245 bytes .../idna/__pycache__/codec.cpython-39.pyc | Bin 0 -> 2899 bytes .../idna/__pycache__/compat.cpython-39.pyc | Bin 0 -> 617 bytes .../idna/__pycache__/core.cpython-39.pyc | Bin 0 -> 9165 bytes .../idna/__pycache__/idnadata.cpython-39.pyc | Bin 0 -> 22126 bytes .../idna/__pycache__/intranges.cpython-39.pyc | Bin 0 -> 1797 bytes .../__pycache__/package_data.cpython-39.pyc | Bin 0 -> 200 bytes .../idna/__pycache__/uts46data.cpython-39.pyc | Bin 0 -> 146134 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2050 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8357 +++++++++++++++++ .../site-packages/pip/_vendor/ipaddress.py | 2420 +++++ .../pip/_vendor/msgpack/__init__.py | 54 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1402 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 206 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 1840 bytes .../msgpack/__pycache__/ext.cpython-39.pyc | Bin 0 -> 6235 bytes .../__pycache__/fallback.cpython-39.pyc | Bin 0 -> 25900 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 191 + .../pip/_vendor/msgpack/fallback.py | 1063 +++ .../pip/_vendor/packaging/__about__.py | 27 + .../pip/_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 677 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 533 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 0 -> 1131 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 2885 bytes .../__pycache__/_typing.cpython-39.pyc | Bin 0 -> 1488 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 9283 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 4156 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 20914 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 18448 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 1660 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 12663 bytes .../pip/_vendor/packaging/_compat.py | 38 + .../pip/_vendor/packaging/_structures.py | 86 + .../pip/_vendor/packaging/_typing.py | 48 + .../pip/_vendor/packaging/markers.py | 328 + .../pip/_vendor/packaging/requirements.py | 151 + .../pip/_vendor/packaging/specifiers.py | 864 ++ .../pip/_vendor/packaging/tags.py | 852 ++ .../pip/_vendor/packaging/utils.py | 67 + .../pip/_vendor/packaging/version.py | 556 ++ .../pip/_vendor/pep517/__init__.py | 6 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 300 bytes .../__pycache__/_in_process.cpython-39.pyc | Bin 0 -> 8254 bytes .../pep517/__pycache__/build.cpython-39.pyc | Bin 0 -> 3441 bytes .../pep517/__pycache__/check.cpython-39.pyc | Bin 0 -> 4980 bytes .../__pycache__/colorlog.cpython-39.pyc | Bin 0 -> 2926 bytes .../pep517/__pycache__/compat.cpython-39.pyc | Bin 0 -> 1103 bytes .../__pycache__/dirtools.cpython-39.pyc | Bin 0 -> 1335 bytes .../__pycache__/envbuild.cpython-39.pyc | Bin 0 -> 4468 bytes .../pep517/__pycache__/meta.cpython-39.pyc | Bin 0 -> 2908 bytes .../__pycache__/wrappers.cpython-39.pyc | Bin 0 -> 10815 bytes .../pip/_vendor/pep517/_in_process.py | 280 + .../site-packages/pip/_vendor/pep517/build.py | 124 + .../site-packages/pip/_vendor/pep517/check.py | 203 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 34 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 167 + .../site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 327 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 100319 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 0 -> 638 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/progress/__init__.py | 177 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 5645 bytes .../progress/__pycache__/bar.cpython-39.pyc | Bin 0 -> 2627 bytes .../__pycache__/counter.cpython-39.pyc | Bin 0 -> 1461 bytes .../__pycache__/spinner.cpython-39.pyc | Bin 0 -> 1378 bytes .../site-packages/pip/_vendor/progress/bar.py | 91 + .../pip/_vendor/progress/counter.py | 41 + .../pip/_vendor/progress/spinner.py | 43 + .../site-packages/pip/_vendor/pyparsing.py | 7107 ++++++++++++++ .../pip/_vendor/requests/__init__.py | 144 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3631 bytes .../__pycache__/__version__.cpython-39.pyc | Bin 0 -> 543 bytes .../_internal_utils.cpython-39.pyc | Bin 0 -> 1290 bytes .../__pycache__/adapters.cpython-39.pyc | Bin 0 -> 16961 bytes .../requests/__pycache__/api.cpython-39.pyc | Bin 0 -> 6747 bytes .../requests/__pycache__/auth.cpython-39.pyc | Bin 0 -> 8319 bytes .../requests/__pycache__/certs.cpython-39.pyc | Bin 0 -> 621 bytes .../__pycache__/compat.cpython-39.pyc | Bin 0 -> 1600 bytes .../__pycache__/cookies.cpython-39.pyc | Bin 0 -> 18810 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 5233 bytes .../requests/__pycache__/help.cpython-39.pyc | Bin 0 -> 2704 bytes .../requests/__pycache__/hooks.cpython-39.pyc | Bin 0 -> 978 bytes .../__pycache__/models.cpython-39.pyc | Bin 0 -> 23927 bytes .../__pycache__/packages.cpython-39.pyc | Bin 0 -> 490 bytes .../__pycache__/sessions.cpython-39.pyc | Bin 0 -> 19830 bytes .../__pycache__/status_codes.cpython-39.pyc | Bin 0 -> 4227 bytes .../__pycache__/structures.cpython-39.pyc | Bin 0 -> 4448 bytes .../requests/__pycache__/utils.cpython-39.pyc | Bin 0 -> 22566 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 533 ++ .../site-packages/pip/_vendor/requests/api.py | 161 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 76 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 123 + .../pip/_vendor/requests/help.py | 119 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 956 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 781 ++ .../pip/_vendor/requests/status_codes.py | 123 + .../pip/_vendor/requests/structures.py | 105 + .../pip/_vendor/requests/utils.py | 988 ++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 594 bytes .../__pycache__/providers.cpython-39.pyc | Bin 0 -> 5977 bytes .../__pycache__/reporters.cpython-39.pyc | Bin 0 -> 2290 bytes .../__pycache__/resolvers.cpython-39.pyc | Bin 0 -> 15536 bytes .../__pycache__/structs.cpython-39.pyc | Bin 0 -> 6859 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 189 bytes .../collections_abc.cpython-39.pyc | Bin 0 -> 334 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 119 + .../pip/_vendor/resolvelib/reporters.py | 37 + .../pip/_vendor/resolvelib/resolvers.py | 446 + .../pip/_vendor/resolvelib/structs.py | 149 + .../Lib/site-packages/pip/_vendor/retrying.py | 267 + .../venv/Lib/site-packages/pip/_vendor/six.py | 982 ++ .../pip/_vendor/toml/__init__.py | 25 + .../toml/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 720 bytes .../toml/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 23212 bytes .../toml/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 9395 bytes .../toml/__pycache__/ordered.cpython-39.pyc | Bin 0 -> 959 bytes .../toml/__pycache__/tz.cpython-39.pyc | Bin 0 -> 1261 bytes .../site-packages/pip/_vendor/toml/decoder.py | 1057 +++ .../site-packages/pip/_vendor/toml/encoder.py | 304 + .../site-packages/pip/_vendor/toml/ordered.py | 15 + .../Lib/site-packages/pip/_vendor/toml/tz.py | 24 + .../pip/_vendor/urllib3/__init__.py | 85 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2177 bytes .../__pycache__/_collections.cpython-39.pyc | Bin 0 -> 10772 bytes .../__pycache__/_version.cpython-39.pyc | Bin 0 -> 201 bytes .../__pycache__/connection.cpython-39.pyc | Bin 0 -> 13160 bytes .../__pycache__/connectionpool.cpython-39.pyc | Bin 0 -> 24456 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 11481 bytes .../urllib3/__pycache__/fields.cpython-39.pyc | Bin 0 -> 8149 bytes .../__pycache__/filepost.cpython-39.pyc | Bin 0 -> 2750 bytes .../__pycache__/poolmanager.cpython-39.pyc | Bin 0 -> 15152 bytes .../__pycache__/request.cpython-39.pyc | Bin 0 -> 5613 bytes .../__pycache__/response.cpython-39.pyc | Bin 0 -> 20824 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 535 ++ .../pip/_vendor/urllib3/connectionpool.py | 1067 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 187 bytes .../_appengine_environ.cpython-39.pyc | Bin 0 -> 1407 bytes .../__pycache__/appengine.cpython-39.pyc | Bin 0 -> 8260 bytes .../__pycache__/ntlmpool.cpython-39.pyc | Bin 0 -> 3252 bytes .../__pycache__/pyopenssl.cpython-39.pyc | Bin 0 -> 15519 bytes .../securetransport.cpython-39.pyc | Bin 0 -> 21831 bytes .../contrib/__pycache__/socks.cpython-39.pyc | Bin 0 -> 5623 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 204 bytes .../__pycache__/bindings.cpython-39.pyc | Bin 0 -> 10711 bytes .../__pycache__/low_level.cpython-39.pyc | Bin 0 -> 9160 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 396 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 121 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 509 + .../urllib3/contrib/securetransport.py | 920 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 313 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 301 bytes .../packages/__pycache__/six.cpython-39.pyc | Bin 0 -> 26505 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 198 bytes .../__pycache__/makefile.cpython-39.pyc | Bin 0 -> 1296 bytes .../urllib3/packages/backports/makefile.py | 51 + .../pip/_vendor/urllib3/packages/six.py | 1021 ++ .../packages/ssl_match_hostname/__init__.py | 22 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 538 bytes .../_implementation.cpython-39.pyc | Bin 0 -> 3315 bytes .../ssl_match_hostname/_implementation.py | 160 + .../pip/_vendor/urllib3/poolmanager.py | 536 ++ .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 821 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1097 bytes .../__pycache__/connection.cpython-39.pyc | Bin 0 -> 3451 bytes .../util/__pycache__/proxy.cpython-39.pyc | Bin 0 -> 1333 bytes .../util/__pycache__/queue.cpython-39.pyc | Bin 0 -> 1052 bytes .../util/__pycache__/request.cpython-39.pyc | Bin 0 -> 3440 bytes .../util/__pycache__/response.cpython-39.pyc | Bin 0 -> 2337 bytes .../util/__pycache__/retry.cpython-39.pyc | Bin 0 -> 15929 bytes .../util/__pycache__/ssl_.cpython-39.pyc | Bin 0 -> 11015 bytes .../__pycache__/ssltransport.cpython-39.pyc | Bin 0 -> 7503 bytes .../util/__pycache__/timeout.cpython-39.pyc | Bin 0 -> 8935 bytes .../util/__pycache__/url.cpython-39.pyc | Bin 0 -> 10611 bytes .../util/__pycache__/wait.cpython-39.pyc | Bin 0 -> 3120 bytes .../pip/_vendor/urllib3/util/connection.py | 150 + .../pip/_vendor/urllib3/util/proxy.py | 56 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 143 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 601 ++ .../pip/_vendor/urllib3/util/ssl_.py | 474 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 268 + .../pip/_vendor/urllib3/util/url.py | 430 + .../pip/_vendor/urllib3/util/wait.py | 153 + .../Lib/site-packages/pip/_vendor/vendor.txt | 24 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 9711 bytes .../__pycache__/labels.cpython-39.pyc | Bin 0 -> 3825 bytes .../__pycache__/mklabels.cpython-39.pyc | Bin 0 -> 1895 bytes .../__pycache__/tests.cpython-39.pyc | Bin 0 -> 5059 bytes .../__pycache__/x_user_defined.cpython-39.pyc | Bin 0 -> 2655 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../site-packages/pkg_resources/__init__.py | 3302 +++++++ .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 100475 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 181 bytes .../__pycache__/appdirs.cpython-39.pyc | Bin 0 -> 20498 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 201334 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 0 -> 24464 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 27 + .../_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 705 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 543 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 0 -> 1005 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 2787 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 8929 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 4024 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 19739 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 10817 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 1452 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 12072 bytes .../_vendor/packaging/_compat.py | 31 + .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/markers.py | 296 + .../_vendor/packaging/requirements.py | 138 + .../_vendor/packaging/specifiers.py | 749 ++ .../pkg_resources/_vendor/packaging/tags.py | 404 + .../pkg_resources/_vendor/packaging/utils.py | 57 + .../_vendor/packaging/version.py | 420 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/extern/__init__.py | 66 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2380 bytes .../pyasn1-0.4.8.dist-info/INSTALLER | 1 + .../pyasn1-0.4.8.dist-info/LICENSE.rst | 24 + .../pyasn1-0.4.8.dist-info/METADATA | 38 + .../pyasn1-0.4.8.dist-info/RECORD | 79 + .../pyasn1-0.4.8.dist-info/WHEEL | 6 + .../pyasn1-0.4.8.dist-info/top_level.txt | 1 + .../pyasn1-0.4.8.dist-info/zip-safe | 1 + .../venv/Lib/site-packages/pyasn1/__init__.py | 7 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 319 bytes .../pyasn1/__pycache__/debug.cpython-39.pyc | Bin 0 -> 4499 bytes .../pyasn1/__pycache__/error.cpython-39.pyc | Bin 0 -> 2885 bytes .../site-packages/pyasn1/codec/__init__.py | 1 + .../codec/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 172 bytes .../pyasn1/codec/ber/__init__.py | 1 + .../ber/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 176 bytes .../ber/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 29870 bytes .../ber/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 15608 bytes .../codec/ber/__pycache__/eoo.cpython-39.pyc | Bin 0 -> 785 bytes .../site-packages/pyasn1/codec/ber/decoder.py | 1682 ++++ .../site-packages/pyasn1/codec/ber/encoder.py | 890 ++ .../Lib/site-packages/pyasn1/codec/ber/eoo.py | 28 + .../pyasn1/codec/cer/__init__.py | 1 + .../cer/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 176 bytes .../cer/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 1623 bytes .../cer/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 6304 bytes .../site-packages/pyasn1/codec/cer/decoder.py | 114 + .../site-packages/pyasn1/codec/cer/encoder.py | 313 + .../pyasn1/codec/der/__init__.py | 1 + .../der/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 176 bytes .../der/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 1094 bytes .../der/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 1625 bytes .../site-packages/pyasn1/codec/der/decoder.py | 94 + .../site-packages/pyasn1/codec/der/encoder.py | 107 + .../pyasn1/codec/native/__init__.py | 1 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 179 bytes .../native/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 4476 bytes .../native/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 6650 bytes .../pyasn1/codec/native/decoder.py | 213 + .../pyasn1/codec/native/encoder.py | 256 + .../site-packages/pyasn1/compat/__init__.py | 1 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 173 bytes .../compat/__pycache__/binary.cpython-39.pyc | Bin 0 -> 568 bytes .../compat/__pycache__/calling.cpython-39.pyc | Bin 0 -> 458 bytes .../__pycache__/dateandtime.cpython-39.pyc | Bin 0 -> 580 bytes .../compat/__pycache__/integer.cpython-39.pyc | Bin 0 -> 2312 bytes .../compat/__pycache__/octets.cpython-39.pyc | Bin 0 -> 1935 bytes .../compat/__pycache__/string.cpython-39.pyc | Bin 0 -> 573 bytes .../Lib/site-packages/pyasn1/compat/binary.py | 33 + .../site-packages/pyasn1/compat/calling.py | 20 + .../pyasn1/compat/dateandtime.py | 22 + .../site-packages/pyasn1/compat/integer.py | 110 + .../Lib/site-packages/pyasn1/compat/octets.py | 46 + .../Lib/site-packages/pyasn1/compat/string.py | 26 + .../venv/Lib/site-packages/pyasn1/debug.py | 157 + .../venv/Lib/site-packages/pyasn1/error.py | 75 + .../Lib/site-packages/pyasn1/type/__init__.py | 1 + .../type/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 171 bytes .../type/__pycache__/base.cpython-39.pyc | Bin 0 -> 22435 bytes .../type/__pycache__/char.cpython-39.pyc | Bin 0 -> 7881 bytes .../__pycache__/constraint.cpython-39.pyc | Bin 0 -> 24388 bytes .../type/__pycache__/error.cpython-39.pyc | Bin 0 -> 385 bytes .../type/__pycache__/namedtype.cpython-39.pyc | Bin 0 -> 19117 bytes .../type/__pycache__/namedval.cpython-39.pyc | Bin 0 -> 5555 bytes .../type/__pycache__/opentype.cpython-39.pyc | Bin 0 -> 3467 bytes .../type/__pycache__/tag.cpython-39.pyc | Bin 0 -> 10354 bytes .../type/__pycache__/tagmap.cpython-39.pyc | Bin 0 -> 3350 bytes .../type/__pycache__/univ.cpython-39.pyc | Bin 0 -> 95080 bytes .../type/__pycache__/useful.cpython-39.pyc | Bin 0 -> 4604 bytes .../Lib/site-packages/pyasn1/type/base.py | 707 ++ .../Lib/site-packages/pyasn1/type/char.py | 335 + .../site-packages/pyasn1/type/constraint.py | 756 ++ .../Lib/site-packages/pyasn1/type/error.py | 11 + .../site-packages/pyasn1/type/namedtype.py | 561 ++ .../Lib/site-packages/pyasn1/type/namedval.py | 192 + .../Lib/site-packages/pyasn1/type/opentype.py | 104 + .../venv/Lib/site-packages/pyasn1/type/tag.py | 335 + .../Lib/site-packages/pyasn1/type/tagmap.py | 96 + .../Lib/site-packages/pyasn1/type/univ.py | 3321 +++++++ .../Lib/site-packages/pyasn1/type/useful.py | 191 + .../pyasn1_modules-0.2.8.dist-info/INSTALLER | 1 + .../LICENSE.txt | 24 + .../pyasn1_modules-0.2.8.dist-info/METADATA | 42 + .../pyasn1_modules-0.2.8.dist-info/RECORD | 221 + .../pyasn1_modules-0.2.8.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../pyasn1_modules-0.2.8.dist-info/zip-safe | 1 + .../site-packages/pyasn1_modules/__init__.py | 2 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 195 bytes .../__pycache__/pem.cpython-39.pyc | Bin 0 -> 2125 bytes .../__pycache__/rfc1155.cpython-39.pyc | Bin 0 -> 2812 bytes .../__pycache__/rfc1157.cpython-39.pyc | Bin 0 -> 3986 bytes .../__pycache__/rfc1901.cpython-39.pyc | Bin 0 -> 665 bytes .../__pycache__/rfc1902.cpython-39.pyc | Bin 0 -> 3740 bytes .../__pycache__/rfc1905.cpython-39.pyc | Bin 0 -> 4517 bytes .../__pycache__/rfc2251.cpython-39.pyc | Bin 0 -> 17775 bytes .../__pycache__/rfc2314.cpython-39.pyc | Bin 0 -> 1624 bytes .../__pycache__/rfc2315.cpython-39.pyc | Bin 0 -> 9896 bytes .../__pycache__/rfc2437.cpython-39.pyc | Bin 0 -> 2211 bytes .../__pycache__/rfc2459.cpython-39.pyc | Bin 0 -> 42053 bytes .../__pycache__/rfc2511.cpython-39.pyc | Bin 0 -> 9022 bytes .../__pycache__/rfc2560.cpython-39.pyc | Bin 0 -> 7680 bytes .../__pycache__/rfc2631.cpython-39.pyc | Bin 0 -> 1105 bytes .../__pycache__/rfc2634.cpython-39.pyc | Bin 0 -> 7132 bytes .../__pycache__/rfc2985.cpython-39.pyc | Bin 0 -> 8151 bytes .../__pycache__/rfc2986.cpython-39.pyc | Bin 0 -> 1421 bytes .../__pycache__/rfc3114.cpython-39.pyc | Bin 0 -> 1738 bytes .../__pycache__/rfc3161.cpython-39.pyc | Bin 0 -> 3561 bytes .../__pycache__/rfc3274.cpython-39.pyc | Bin 0 -> 1120 bytes .../__pycache__/rfc3279.cpython-39.pyc | Bin 0 -> 6493 bytes .../__pycache__/rfc3280.cpython-39.pyc | Bin 0 -> 34324 bytes .../__pycache__/rfc3281.cpython-39.pyc | Bin 0 -> 7315 bytes .../__pycache__/rfc3412.cpython-39.pyc | Bin 0 -> 1746 bytes .../__pycache__/rfc3414.cpython-39.pyc | Bin 0 -> 930 bytes .../__pycache__/rfc3447.cpython-39.pyc | Bin 0 -> 1425 bytes .../__pycache__/rfc3560.cpython-39.pyc | Bin 0 -> 1092 bytes .../__pycache__/rfc3565.cpython-39.pyc | Bin 0 -> 1128 bytes .../__pycache__/rfc3709.cpython-39.pyc | Bin 0 -> 4514 bytes .../__pycache__/rfc3770.cpython-39.pyc | Bin 0 -> 1117 bytes .../__pycache__/rfc3779.cpython-39.pyc | Bin 0 -> 2887 bytes .../__pycache__/rfc3852.cpython-39.pyc | Bin 0 -> 16027 bytes .../__pycache__/rfc4043.cpython-39.pyc | Bin 0 -> 864 bytes .../__pycache__/rfc4055.cpython-39.pyc | Bin 0 -> 4997 bytes .../__pycache__/rfc4073.cpython-39.pyc | Bin 0 -> 1161 bytes .../__pycache__/rfc4108.cpython-39.pyc | Bin 0 -> 7772 bytes .../__pycache__/rfc4210.cpython-39.pyc | Bin 0 -> 23550 bytes .../__pycache__/rfc4211.cpython-39.pyc | Bin 0 -> 8850 bytes .../__pycache__/rfc4334.cpython-39.pyc | Bin 0 -> 1192 bytes .../__pycache__/rfc4985.cpython-39.pyc | Bin 0 -> 793 bytes .../__pycache__/rfc5035.cpython-39.pyc | Bin 0 -> 2606 bytes .../__pycache__/rfc5083.cpython-39.pyc | Bin 0 -> 1267 bytes .../__pycache__/rfc5084.cpython-39.pyc | Bin 0 -> 1935 bytes .../__pycache__/rfc5208.cpython-39.pyc | Bin 0 -> 1980 bytes .../__pycache__/rfc5280.cpython-39.pyc | Bin 0 -> 35764 bytes .../__pycache__/rfc5480.cpython-39.pyc | Bin 0 -> 2788 bytes .../__pycache__/rfc5649.cpython-39.pyc | Bin 0 -> 775 bytes .../__pycache__/rfc5652.cpython-39.pyc | Bin 0 -> 16528 bytes .../__pycache__/rfc5751.cpython-39.pyc | Bin 0 -> 2239 bytes .../__pycache__/rfc5755.cpython-39.pyc | Bin 0 -> 9539 bytes .../__pycache__/rfc5913.cpython-39.pyc | Bin 0 -> 859 bytes .../__pycache__/rfc5914.cpython-39.pyc | Bin 0 -> 2915 bytes .../__pycache__/rfc5915.cpython-39.pyc | Bin 0 -> 931 bytes .../__pycache__/rfc5916.cpython-39.pyc | Bin 0 -> 528 bytes .../__pycache__/rfc5917.cpython-39.pyc | Bin 0 -> 1026 bytes .../__pycache__/rfc5924.cpython-39.pyc | Bin 0 -> 301 bytes .../__pycache__/rfc5934.cpython-39.pyc | Bin 0 -> 15310 bytes .../__pycache__/rfc5940.cpython-39.pyc | Bin 0 -> 980 bytes .../__pycache__/rfc5958.cpython-39.pyc | Bin 0 -> 2827 bytes .../__pycache__/rfc5990.cpython-39.pyc | Bin 0 -> 4046 bytes .../__pycache__/rfc6010.cpython-39.pyc | Bin 0 -> 1901 bytes .../__pycache__/rfc6019.cpython-39.pyc | Bin 0 -> 835 bytes .../__pycache__/rfc6031.cpython-39.pyc | Bin 0 -> 10974 bytes .../__pycache__/rfc6032.cpython-39.pyc | Bin 0 -> 1389 bytes .../__pycache__/rfc6120.cpython-39.pyc | Bin 0 -> 633 bytes .../__pycache__/rfc6170.cpython-39.pyc | Bin 0 -> 282 bytes .../__pycache__/rfc6187.cpython-39.pyc | Bin 0 -> 375 bytes .../__pycache__/rfc6210.cpython-39.pyc | Bin 0 -> 805 bytes .../__pycache__/rfc6211.cpython-39.pyc | Bin 0 -> 1396 bytes .../__pycache__/rfc6402-1.cpython-39.pyc | Bin 0 -> 12355 bytes .../__pycache__/rfc6402.cpython-39.pyc | Bin 0 -> 12373 bytes .../__pycache__/rfc6482.cpython-39.pyc | Bin 0 -> 2017 bytes .../__pycache__/rfc6486.cpython-39.pyc | Bin 0 -> 1620 bytes .../__pycache__/rfc6487.cpython-39.pyc | Bin 0 -> 365 bytes .../__pycache__/rfc6664.cpython-39.pyc | Bin 0 -> 2791 bytes .../__pycache__/rfc6955.cpython-39.pyc | Bin 0 -> 1869 bytes .../__pycache__/rfc6960.cpython-39.pyc | Bin 0 -> 6014 bytes .../__pycache__/rfc7030.cpython-39.pyc | Bin 0 -> 1235 bytes .../__pycache__/rfc7191.cpython-39.pyc | Bin 0 -> 6326 bytes .../__pycache__/rfc7229.cpython-39.pyc | Bin 0 -> 621 bytes .../__pycache__/rfc7292.cpython-39.pyc | Bin 0 -> 5999 bytes .../__pycache__/rfc7296.cpython-39.pyc | Bin 0 -> 886 bytes .../__pycache__/rfc7508.cpython-39.pyc | Bin 0 -> 2382 bytes .../__pycache__/rfc7585.cpython-39.pyc | Bin 0 -> 847 bytes .../__pycache__/rfc7633.cpython-39.pyc | Bin 0 -> 651 bytes .../__pycache__/rfc7773.cpython-39.pyc | Bin 0 -> 1167 bytes .../__pycache__/rfc7894-1.cpython-39.pyc | Bin 0 -> 1679 bytes .../__pycache__/rfc7894.cpython-39.pyc | Bin 0 -> 1671 bytes .../__pycache__/rfc7906.cpython-39.pyc | Bin 0 -> 12651 bytes .../__pycache__/rfc7914.cpython-39.pyc | Bin 0 -> 1074 bytes .../__pycache__/rfc8017.cpython-39.pyc | Bin 0 -> 3403 bytes .../__pycache__/rfc8018.cpython-39.pyc | Bin 0 -> 4128 bytes .../__pycache__/rfc8103.cpython-39.pyc | Bin 0 -> 846 bytes .../__pycache__/rfc8209.cpython-39.pyc | Bin 0 -> 305 bytes .../__pycache__/rfc8226.cpython-39.pyc | Bin 0 -> 3469 bytes .../__pycache__/rfc8358.cpython-39.pyc | Bin 0 -> 719 bytes .../__pycache__/rfc8360.cpython-39.pyc | Bin 0 -> 569 bytes .../__pycache__/rfc8398.cpython-39.pyc | Bin 0 -> 816 bytes .../__pycache__/rfc8410.cpython-39.pyc | Bin 0 -> 1042 bytes .../__pycache__/rfc8418.cpython-39.pyc | Bin 0 -> 1087 bytes .../__pycache__/rfc8419.cpython-39.pyc | Bin 0 -> 993 bytes .../__pycache__/rfc8479.cpython-39.pyc | Bin 0 -> 840 bytes .../__pycache__/rfc8494.cpython-39.pyc | Bin 0 -> 1911 bytes .../__pycache__/rfc8520.cpython-39.pyc | Bin 0 -> 991 bytes .../__pycache__/rfc8619.cpython-39.pyc | Bin 0 -> 630 bytes .../__pycache__/rfc8649.cpython-39.pyc | Bin 0 -> 772 bytes .../Lib/site-packages/pyasn1_modules/pem.py | 65 + .../site-packages/pyasn1_modules/rfc1155.py | 96 + .../site-packages/pyasn1_modules/rfc1157.py | 126 + .../site-packages/pyasn1_modules/rfc1901.py | 22 + .../site-packages/pyasn1_modules/rfc1902.py | 129 + .../site-packages/pyasn1_modules/rfc1905.py | 135 + .../site-packages/pyasn1_modules/rfc2251.py | 563 ++ .../site-packages/pyasn1_modules/rfc2314.py | 48 + .../site-packages/pyasn1_modules/rfc2315.py | 294 + .../site-packages/pyasn1_modules/rfc2437.py | 69 + .../site-packages/pyasn1_modules/rfc2459.py | 1339 +++ .../site-packages/pyasn1_modules/rfc2511.py | 258 + .../site-packages/pyasn1_modules/rfc2560.py | 225 + .../site-packages/pyasn1_modules/rfc2631.py | 37 + .../site-packages/pyasn1_modules/rfc2634.py | 336 + .../site-packages/pyasn1_modules/rfc2985.py | 588 ++ .../site-packages/pyasn1_modules/rfc2986.py | 75 + .../site-packages/pyasn1_modules/rfc3114.py | 77 + .../site-packages/pyasn1_modules/rfc3161.py | 142 + .../site-packages/pyasn1_modules/rfc3274.py | 59 + .../site-packages/pyasn1_modules/rfc3279.py | 260 + .../site-packages/pyasn1_modules/rfc3280.py | 1543 +++ .../site-packages/pyasn1_modules/rfc3281.py | 331 + .../site-packages/pyasn1_modules/rfc3412.py | 53 + .../site-packages/pyasn1_modules/rfc3414.py | 28 + .../site-packages/pyasn1_modules/rfc3447.py | 45 + .../site-packages/pyasn1_modules/rfc3560.py | 74 + .../site-packages/pyasn1_modules/rfc3565.py | 57 + .../site-packages/pyasn1_modules/rfc3709.py | 207 + .../site-packages/pyasn1_modules/rfc3770.py | 75 + .../site-packages/pyasn1_modules/rfc3779.py | 137 + .../site-packages/pyasn1_modules/rfc3852.py | 706 ++ .../site-packages/pyasn1_modules/rfc4043.py | 43 + .../site-packages/pyasn1_modules/rfc4055.py | 258 + .../site-packages/pyasn1_modules/rfc4073.py | 59 + .../site-packages/pyasn1_modules/rfc4108.py | 350 + .../site-packages/pyasn1_modules/rfc4210.py | 803 ++ .../site-packages/pyasn1_modules/rfc4211.py | 396 + .../site-packages/pyasn1_modules/rfc4334.py | 75 + .../site-packages/pyasn1_modules/rfc4985.py | 49 + .../site-packages/pyasn1_modules/rfc5035.py | 199 + .../site-packages/pyasn1_modules/rfc5083.py | 52 + .../site-packages/pyasn1_modules/rfc5084.py | 97 + .../site-packages/pyasn1_modules/rfc5208.py | 56 + .../site-packages/pyasn1_modules/rfc5280.py | 1658 ++++ .../site-packages/pyasn1_modules/rfc5480.py | 190 + .../site-packages/pyasn1_modules/rfc5649.py | 33 + .../site-packages/pyasn1_modules/rfc5652.py | 761 ++ .../site-packages/pyasn1_modules/rfc5751.py | 124 + .../site-packages/pyasn1_modules/rfc5755.py | 398 + .../site-packages/pyasn1_modules/rfc5913.py | 44 + .../site-packages/pyasn1_modules/rfc5914.py | 119 + .../site-packages/pyasn1_modules/rfc5915.py | 32 + .../site-packages/pyasn1_modules/rfc5916.py | 35 + .../site-packages/pyasn1_modules/rfc5917.py | 55 + .../site-packages/pyasn1_modules/rfc5924.py | 19 + .../site-packages/pyasn1_modules/rfc5934.py | 786 ++ .../site-packages/pyasn1_modules/rfc5940.py | 59 + .../site-packages/pyasn1_modules/rfc5958.py | 98 + .../site-packages/pyasn1_modules/rfc5990.py | 237 + .../site-packages/pyasn1_modules/rfc6010.py | 88 + .../site-packages/pyasn1_modules/rfc6019.py | 45 + .../site-packages/pyasn1_modules/rfc6031.py | 469 + .../site-packages/pyasn1_modules/rfc6032.py | 68 + .../site-packages/pyasn1_modules/rfc6120.py | 43 + .../site-packages/pyasn1_modules/rfc6170.py | 17 + .../site-packages/pyasn1_modules/rfc6187.py | 22 + .../site-packages/pyasn1_modules/rfc6210.py | 42 + .../site-packages/pyasn1_modules/rfc6211.py | 72 + .../site-packages/pyasn1_modules/rfc6402-1.py | 627 ++ .../site-packages/pyasn1_modules/rfc6402.py | 628 ++ .../site-packages/pyasn1_modules/rfc6482.py | 74 + .../site-packages/pyasn1_modules/rfc6486.py | 68 + .../site-packages/pyasn1_modules/rfc6487.py | 22 + .../site-packages/pyasn1_modules/rfc6664.py | 147 + .../site-packages/pyasn1_modules/rfc6955.py | 108 + .../site-packages/pyasn1_modules/rfc6960.py | 223 + .../site-packages/pyasn1_modules/rfc7030.py | 66 + .../site-packages/pyasn1_modules/rfc7191.py | 261 + .../site-packages/pyasn1_modules/rfc7229.py | 29 + .../site-packages/pyasn1_modules/rfc7292.py | 357 + .../site-packages/pyasn1_modules/rfc7296.py | 32 + .../site-packages/pyasn1_modules/rfc7508.py | 90 + .../site-packages/pyasn1_modules/rfc7585.py | 50 + .../site-packages/pyasn1_modules/rfc7633.py | 38 + .../site-packages/pyasn1_modules/rfc7773.py | 52 + .../site-packages/pyasn1_modules/rfc7894-1.py | 92 + .../site-packages/pyasn1_modules/rfc7894.py | 92 + .../site-packages/pyasn1_modules/rfc7906.py | 736 ++ .../site-packages/pyasn1_modules/rfc7914.py | 49 + .../site-packages/pyasn1_modules/rfc8017.py | 153 + .../site-packages/pyasn1_modules/rfc8018.py | 260 + .../site-packages/pyasn1_modules/rfc8103.py | 36 + .../site-packages/pyasn1_modules/rfc8209.py | 20 + .../site-packages/pyasn1_modules/rfc8226.py | 149 + .../site-packages/pyasn1_modules/rfc8358.py | 50 + .../site-packages/pyasn1_modules/rfc8360.py | 44 + .../site-packages/pyasn1_modules/rfc8398.py | 52 + .../site-packages/pyasn1_modules/rfc8410.py | 43 + .../site-packages/pyasn1_modules/rfc8418.py | 36 + .../site-packages/pyasn1_modules/rfc8419.py | 68 + .../site-packages/pyasn1_modules/rfc8479.py | 45 + .../site-packages/pyasn1_modules/rfc8494.py | 80 + .../site-packages/pyasn1_modules/rfc8520.py | 63 + .../site-packages/pyasn1_modules/rfc8619.py | 45 + .../site-packages/pyasn1_modules/rfc8649.py | 40 + .../pycparser-2.20.dist-info/INSTALLER | 1 + .../pycparser-2.20.dist-info/LICENSE | 27 + .../pycparser-2.20.dist-info/METADATA | 27 + .../pycparser-2.20.dist-info/RECORD | 41 + .../pycparser-2.20.dist-info/WHEEL | 6 + .../pycparser-2.20.dist-info/top_level.txt | 1 + .../Lib/site-packages/pycparser/__init__.py | 90 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2512 bytes .../__pycache__/_ast_gen.cpython-39.pyc | Bin 0 -> 10211 bytes .../__pycache__/_build_tables.cpython-39.pyc | Bin 0 -> 525 bytes .../__pycache__/ast_transforms.cpython-39.pyc | Bin 0 -> 2525 bytes .../__pycache__/c_ast.cpython-39.pyc | Bin 0 -> 35177 bytes .../__pycache__/c_generator.cpython-39.pyc | Bin 0 -> 16717 bytes .../__pycache__/c_lexer.cpython-39.pyc | Bin 0 -> 11891 bytes .../__pycache__/c_parser.cpython-39.pyc | Bin 0 -> 60495 bytes .../__pycache__/lextab.cpython-39.pyc | Bin 0 -> 5407 bytes .../__pycache__/plyparser.cpython-39.pyc | Bin 0 -> 4672 bytes .../__pycache__/yacctab.cpython-39.pyc | Bin 0 -> 146780 bytes .../Lib/site-packages/pycparser/_ast_gen.py | 338 + .../site-packages/pycparser/_build_tables.py | 37 + .../Lib/site-packages/pycparser/_c_ast.cfg | 191 + .../site-packages/pycparser/ast_transforms.py | 106 + .../venv/Lib/site-packages/pycparser/c_ast.py | 1084 +++ .../site-packages/pycparser/c_generator.py | 444 + .../Lib/site-packages/pycparser/c_lexer.py | 514 + .../Lib/site-packages/pycparser/c_parser.py | 1863 ++++ .../Lib/site-packages/pycparser/lextab.py | 10 + .../site-packages/pycparser/ply/__init__.py | 5 + .../ply/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 222 bytes .../ply/__pycache__/cpp.cpython-39.pyc | Bin 0 -> 16039 bytes .../ply/__pycache__/ctokens.cpython-39.pyc | Bin 0 -> 2075 bytes .../ply/__pycache__/lex.cpython-39.pyc | Bin 0 -> 21416 bytes .../ply/__pycache__/yacc.cpython-39.pyc | Bin 0 -> 52971 bytes .../ply/__pycache__/ygen.cpython-39.pyc | Bin 0 -> 1785 bytes .../Lib/site-packages/pycparser/ply/cpp.py | 905 ++ .../site-packages/pycparser/ply/ctokens.py | 133 + .../Lib/site-packages/pycparser/ply/lex.py | 1099 +++ .../Lib/site-packages/pycparser/ply/yacc.py | 3494 +++++++ .../Lib/site-packages/pycparser/ply/ygen.py | 74 + .../Lib/site-packages/pycparser/plyparser.py | 133 + .../Lib/site-packages/pycparser/yacctab.py | 338 + .../pylint-2.6.0.dist-info/COPYING | 340 + .../pylint-2.6.0.dist-info/INSTALLER | 1 + .../pylint-2.6.0.dist-info/METADATA | 205 + .../pylint-2.6.0.dist-info/RECORD | 188 + .../pylint-2.6.0.dist-info/REQUESTED | 0 .../pylint-2.6.0.dist-info/WHEEL | 5 + .../pylint-2.6.0.dist-info/entry_points.txt | 6 + .../pylint-2.6.0.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/pylint/__init__.py | 44 + .../venv/Lib/site-packages/pylint/__main__.py | 18 + .../Lib/site-packages/pylint/__pkginfo__.py | 102 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1088 bytes .../__pycache__/__main__.cpython-39.pyc | Bin 0 -> 304 bytes .../__pycache__/__pkginfo__.cpython-39.pyc | Bin 0 -> 2715 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 1227 bytes .../pylint/__pycache__/epylint.cpython-39.pyc | Bin 0 -> 4985 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 1309 bytes .../pylint/__pycache__/graph.cpython-39.pyc | Bin 0 -> 5044 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 0 -> 3717 bytes .../__pycache__/testutils.cpython-39.pyc | Bin 0 -> 20820 bytes .../site-packages/pylint/checkers/__init__.py | 67 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1580 bytes .../checkers/__pycache__/async.cpython-39.pyc | Bin 0 -> 2699 bytes .../checkers/__pycache__/base.cpython-39.pyc | Bin 0 -> 63515 bytes .../__pycache__/base_checker.cpython-39.pyc | Bin 0 -> 6547 bytes .../__pycache__/classes.cpython-39.pyc | Bin 0 -> 50282 bytes .../design_analysis.cpython-39.pyc | Bin 0 -> 11290 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 16215 bytes .../__pycache__/format.cpython-39.pyc | Bin 0 -> 15799 bytes .../__pycache__/imports.cpython-39.pyc | Bin 0 -> 25240 bytes .../__pycache__/logging.cpython-39.pyc | Bin 0 -> 11599 bytes .../checkers/__pycache__/misc.cpython-39.pyc | Bin 0 -> 5102 bytes .../__pycache__/newstyle.cpython-39.pyc | Bin 0 -> 2428 bytes .../__pycache__/python3.cpython-39.pyc | Bin 0 -> 33549 bytes .../__pycache__/raw_metrics.cpython-39.pyc | Bin 0 -> 3269 bytes .../__pycache__/refactoring.cpython-39.pyc | Bin 0 -> 45557 bytes .../__pycache__/similar.cpython-39.pyc | Bin 0 -> 12277 bytes .../__pycache__/spelling.cpython-39.pyc | Bin 0 -> 9670 bytes .../__pycache__/stdlib.cpython-39.pyc | Bin 0 -> 12266 bytes .../__pycache__/strings.cpython-39.pyc | Bin 0 -> 21917 bytes .../__pycache__/typecheck.cpython-39.pyc | Bin 0 -> 41675 bytes .../checkers/__pycache__/utils.cpython-39.pyc | Bin 0 -> 33015 bytes .../__pycache__/variables.cpython-39.pyc | Bin 0 -> 44918 bytes .../site-packages/pylint/checkers/async.py | 90 + .../Lib/site-packages/pylint/checkers/base.py | 2507 +++++ .../pylint/checkers/base_checker.py | 190 + .../site-packages/pylint/checkers/classes.py | 2093 +++++ .../pylint/checkers/design_analysis.py | 500 + .../pylint/checkers/exceptions.py | 598 ++ .../site-packages/pylint/checkers/format.py | 772 ++ .../site-packages/pylint/checkers/imports.py | 987 ++ .../site-packages/pylint/checkers/logging.py | 415 + .../Lib/site-packages/pylint/checkers/misc.py | 199 + .../site-packages/pylint/checkers/newstyle.py | 133 + .../site-packages/pylint/checkers/python3.py | 1427 +++ .../pylint/checkers/raw_metrics.py | 123 + .../pylint/checkers/refactoring.py | 1574 ++++ .../site-packages/pylint/checkers/similar.py | 458 + .../site-packages/pylint/checkers/spelling.py | 415 + .../site-packages/pylint/checkers/stdlib.py | 459 + .../site-packages/pylint/checkers/strings.py | 953 ++ .../pylint/checkers/typecheck.py | 1868 ++++ .../site-packages/pylint/checkers/utils.py | 1319 +++ .../pylint/checkers/variables.py | 2092 +++++ .../site-packages/pylint/config/__init__.py | 117 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2639 bytes .../configuration_mixin.cpython-39.pyc | Bin 0 -> 1111 bytes .../find_default_config_files.cpython-39.pyc | Bin 0 -> 1798 bytes .../man_help_formatter.cpython-39.pyc | Bin 0 -> 4067 bytes .../config/__pycache__/option.cpython-39.pyc | Bin 0 -> 4611 bytes .../option_manager_mixin.cpython-39.pyc | Bin 0 -> 11129 bytes .../__pycache__/option_parser.cpython-39.pyc | Bin 0 -> 1810 bytes .../options_provider_mixin.cpython-39.pyc | Bin 0 -> 3741 bytes .../pylint/config/configuration_mixin.py | 26 + .../config/find_default_config_files.py | 63 + .../pylint/config/man_help_formatter.py | 139 + .../Lib/site-packages/pylint/config/option.py | 164 + .../pylint/config/option_manager_mixin.py | 367 + .../pylint/config/option_parser.py | 47 + .../pylint/config/options_provider_mixin.py | 111 + .../Lib/site-packages/pylint/constants.py | 53 + .../venv/Lib/site-packages/pylint/epylint.py | 201 + .../Lib/site-packages/pylint/exceptions.py | 31 + .../pylint/extensions/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 177 bytes .../_check_docs_utils.cpython-39.pyc | Bin 0 -> 19400 bytes .../__pycache__/bad_builtin.cpython-39.pyc | Bin 0 -> 1967 bytes .../broad_try_clause.cpython-39.pyc | Bin 0 -> 2246 bytes .../__pycache__/check_docs.cpython-39.pyc | Bin 0 -> 687 bytes .../__pycache__/check_elif.cpython-39.pyc | Bin 0 -> 2656 bytes .../__pycache__/comparetozero.cpython-39.pyc | Bin 0 -> 1941 bytes .../__pycache__/docparams.cpython-39.pyc | Bin 0 -> 14612 bytes .../__pycache__/docstyle.cpython-39.pyc | Bin 0 -> 2442 bytes .../__pycache__/emptystring.cpython-39.pyc | Bin 0 -> 2001 bytes .../__pycache__/mccabe.cpython-39.pyc | Bin 0 -> 5634 bytes .../overlapping_exceptions.cpython-39.pyc | Bin 0 -> 2571 bytes .../redefined_variable_type.cpython-39.pyc | Bin 0 -> 3230 bytes .../pylint/extensions/_check_docs_utils.py | 808 ++ .../pylint/extensions/bad_builtin.py | 71 + .../pylint/extensions/broad_try_clause.py | 74 + .../pylint/extensions/check_docs.py | 23 + .../pylint/extensions/check_elif.py | 79 + .../pylint/extensions/comparetozero.py | 75 + .../pylint/extensions/docparams.py | 540 ++ .../pylint/extensions/docstyle.py | 91 + .../pylint/extensions/emptystring.py | 75 + .../site-packages/pylint/extensions/mccabe.py | 199 + .../extensions/overlapping_exceptions.py | 86 + .../extensions/redefined_variable_type.py | 118 + .../venv/Lib/site-packages/pylint/graph.py | 195 + .../Lib/site-packages/pylint/interfaces.py | 103 + .../Lib/site-packages/pylint/lint/__init__.py | 91 + .../lint/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1001 bytes .../__pycache__/check_parallel.cpython-39.pyc | Bin 0 -> 2599 bytes .../lint/__pycache__/pylinter.cpython-39.pyc | Bin 0 -> 31810 bytes .../report_functions.cpython-39.pyc | Bin 0 -> 2400 bytes .../lint/__pycache__/run.cpython-39.pyc | Bin 0 -> 11410 bytes .../lint/__pycache__/utils.cpython-39.pyc | Bin 0 -> 2153 bytes .../pylint/lint/check_parallel.py | 124 + .../Lib/site-packages/pylint/lint/pylinter.py | 1166 +++ .../pylint/lint/report_functions.py | 76 + .../venv/Lib/site-packages/pylint/lint/run.py | 434 + .../Lib/site-packages/pylint/lint/utils.py | 76 + .../site-packages/pylint/message/__init__.py | 56 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 648 bytes .../__pycache__/message.cpython-39.pyc | Bin 0 -> 1206 bytes .../message_definition.cpython-39.pyc | Bin 0 -> 3004 bytes .../message_definition_store.cpython-39.pyc | Bin 0 -> 4113 bytes .../message_handler_mix_in.cpython-39.pyc | Bin 0 -> 11055 bytes .../message_id_store.cpython-39.pyc | Bin 0 -> 4975 bytes .../site-packages/pylint/message/message.py | 51 + .../pylint/message/message_definition.py | 82 + .../message/message_definition_store.py | 88 + .../pylint/message/message_handler_mix_in.py | 390 + .../pylint/message/message_id_store.py | 126 + .../pylint/pyreverse/__init__.py | 8 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 237 bytes .../__pycache__/diadefslib.cpython-39.pyc | Bin 0 -> 7639 bytes .../__pycache__/diagrams.cpython-39.pyc | Bin 0 -> 8707 bytes .../__pycache__/inspector.cpython-39.pyc | Bin 0 -> 10259 bytes .../pyreverse/__pycache__/main.cpython-39.pyc | Bin 0 -> 4601 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 5681 bytes .../__pycache__/vcgutils.cpython-39.pyc | Bin 0 -> 4778 bytes .../__pycache__/writer.cpython-39.pyc | Bin 0 -> 7131 bytes .../pylint/pyreverse/diadefslib.py | 240 + .../pylint/pyreverse/diagrams.py | 269 + .../pylint/pyreverse/inspector.py | 361 + .../site-packages/pylint/pyreverse/main.py | 217 + .../site-packages/pylint/pyreverse/utils.py | 223 + .../pylint/pyreverse/vcgutils.py | 232 + .../site-packages/pylint/pyreverse/writer.py | 217 + .../pylint/reporters/__init__.py | 36 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 821 bytes .../__pycache__/base_reporter.cpython-39.pyc | Bin 0 -> 2782 bytes .../collecting_reporter.cpython-39.pyc | Bin 0 -> 827 bytes .../__pycache__/json_reporter.cpython-39.pyc | Bin 0 -> 1974 bytes .../reports_handler_mix_in.cpython-39.pyc | Bin 0 -> 2978 bytes .../reporters/__pycache__/text.cpython-39.pyc | Bin 0 -> 7302 bytes .../pylint/reporters/base_reporter.py | 64 + .../pylint/reporters/collecting_reporter.py | 19 + .../pylint/reporters/json_reporter.py | 61 + .../reporters/reports_handler_mix_in.py | 77 + .../site-packages/pylint/reporters/text.py | 249 + .../pylint/reporters/ureports/__init__.py | 97 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3078 bytes .../ureports/__pycache__/nodes.cpython-39.pyc | Bin 0 -> 5972 bytes .../__pycache__/text_writer.cpython-39.pyc | Bin 0 -> 3651 bytes .../pylint/reporters/ureports/nodes.py | 189 + .../pylint/reporters/ureports/text_writer.py | 96 + .../Lib/site-packages/pylint/testutils.py | 627 ++ .../site-packages/pylint/utils/__init__.py | 69 + .../utils/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 909 bytes .../__pycache__/ast_walker.cpython-39.pyc | Bin 0 -> 2072 bytes .../__pycache__/file_state.cpython-39.pyc | Bin 0 -> 3822 bytes .../__pycache__/pragma_parser.cpython-39.pyc | Bin 0 -> 3668 bytes .../utils/__pycache__/utils.cpython-39.pyc | Bin 0 -> 11763 bytes .../site-packages/pylint/utils/ast_walker.py | 77 + .../site-packages/pylint/utils/file_state.py | 136 + .../pylint/utils/pragma_parser.py | 132 + .../Lib/site-packages/pylint/utils/utils.py | 435 + .../setuptools-49.2.1.dist-info/INSTALLER | 1 + .../setuptools-49.2.1.dist-info/LICENSE | 19 + .../setuptools-49.2.1.dist-info/METADATA | 109 + .../setuptools-49.2.1.dist-info/RECORD | 297 + .../setuptools-49.2.1.dist-info/REQUESTED | 0 .../setuptools-49.2.1.dist-info/WHEEL | 5 + .../dependency_links.txt | 2 + .../entry_points.txt | 68 + .../setuptools-49.2.1.dist-info/top_level.txt | 3 + .../setuptools-49.2.1.dist-info/zip-safe | 1 + .../Lib/site-packages/setuptools/__init__.py | 253 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 8828 bytes .../_deprecation_warning.cpython-39.pyc | Bin 0 -> 540 bytes .../__pycache__/_imp.cpython-39.pyc | Bin 0 -> 2075 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 0 -> 5247 bytes .../__pycache__/build_meta.cpython-39.pyc | Bin 0 -> 8599 bytes .../__pycache__/config.cpython-39.pyc | Bin 0 -> 19411 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 0 -> 847 bytes .../__pycache__/depends.cpython-39.pyc | Bin 0 -> 5261 bytes .../__pycache__/dist.cpython-39.pyc | Bin 0 -> 33062 bytes .../distutils_patch.cpython-39.pyc | Bin 0 -> 1915 bytes .../__pycache__/errors.cpython-39.pyc | Bin 0 -> 840 bytes .../__pycache__/extension.cpython-39.pyc | Bin 0 -> 1989 bytes .../__pycache__/glob.cpython-39.pyc | Bin 0 -> 3747 bytes .../__pycache__/installer.cpython-39.pyc | Bin 0 -> 4096 bytes .../__pycache__/launch.cpython-39.pyc | Bin 0 -> 891 bytes .../__pycache__/lib2to3_ex.cpython-39.pyc | Bin 0 -> 2742 bytes .../__pycache__/monkey.cpython-39.pyc | Bin 0 -> 4662 bytes .../__pycache__/msvc.cpython-39.pyc | Bin 0 -> 43226 bytes .../__pycache__/namespaces.cpython-39.pyc | Bin 0 -> 3660 bytes .../__pycache__/package_index.cpython-39.pyc | Bin 0 -> 33238 bytes .../__pycache__/py27compat.cpython-39.pyc | Bin 0 -> 1773 bytes .../__pycache__/py31compat.cpython-39.pyc | Bin 0 -> 1215 bytes .../__pycache__/py33compat.cpython-39.pyc | Bin 0 -> 1430 bytes .../__pycache__/py34compat.cpython-39.pyc | Bin 0 -> 470 bytes .../__pycache__/sandbox.cpython-39.pyc | Bin 0 -> 15862 bytes .../__pycache__/ssl_support.cpython-39.pyc | Bin 0 -> 6886 bytes .../__pycache__/unicode_utils.cpython-39.pyc | Bin 0 -> 1169 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 314 bytes .../__pycache__/wheel.cpython-39.pyc | Bin 0 -> 7363 bytes .../windows_support.cpython-39.pyc | Bin 0 -> 1013 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 15 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 448 bytes .../__pycache__/_msvccompiler.cpython-39.pyc | Bin 0 -> 12928 bytes .../__pycache__/archive_util.cpython-39.pyc | Bin 0 -> 6635 bytes .../__pycache__/bcppcompiler.cpython-39.pyc | Bin 0 -> 6546 bytes .../__pycache__/ccompiler.cpython-39.pyc | Bin 0 -> 33251 bytes .../_distutils/__pycache__/cmd.cpython-39.pyc | Bin 0 -> 13974 bytes .../__pycache__/config.cpython-39.pyc | Bin 0 -> 3577 bytes .../__pycache__/core.cpython-39.pyc | Bin 0 -> 6702 bytes .../cygwinccompiler.cpython-39.pyc | Bin 0 -> 8551 bytes .../__pycache__/debug.cpython-39.pyc | Bin 0 -> 244 bytes .../__pycache__/dep_util.cpython-39.pyc | Bin 0 -> 2764 bytes .../__pycache__/dir_util.cpython-39.pyc | Bin 0 -> 5865 bytes .../__pycache__/dist.cpython-39.pyc | Bin 0 -> 34435 bytes .../__pycache__/errors.cpython-39.pyc | Bin 0 -> 5300 bytes .../__pycache__/extension.cpython-39.pyc | Bin 0 -> 6965 bytes .../__pycache__/fancy_getopt.cpython-39.pyc | Bin 0 -> 10673 bytes .../__pycache__/file_util.cpython-39.pyc | Bin 0 -> 6031 bytes .../__pycache__/filelist.cpython-39.pyc | Bin 0 -> 9883 bytes .../_distutils/__pycache__/log.cpython-39.pyc | Bin 0 -> 2363 bytes .../__pycache__/msvc9compiler.cpython-39.pyc | Bin 0 -> 17560 bytes .../__pycache__/msvccompiler.cpython-39.pyc | Bin 0 -> 14755 bytes .../__pycache__/spawn.cpython-39.pyc | Bin 0 -> 3416 bytes .../__pycache__/sysconfig.cpython-39.pyc | Bin 0 -> 12397 bytes .../__pycache__/text_file.cpython-39.pyc | Bin 0 -> 8489 bytes .../__pycache__/unixccompiler.cpython-39.pyc | Bin 0 -> 6650 bytes .../__pycache__/util.cpython-39.pyc | Bin 0 -> 15638 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 7389 bytes .../versionpredicate.cpython-39.pyc | Bin 0 -> 5173 bytes .../setuptools/_distutils/_msvccompiler.py | 537 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1116 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 523 bytes .../command/__pycache__/bdist.cpython-39.pyc | Bin 0 -> 3653 bytes .../__pycache__/bdist_dumb.cpython-39.pyc | Bin 0 -> 3636 bytes .../__pycache__/bdist_msi.cpython-39.pyc | Bin 0 -> 19818 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 0 -> 12273 bytes .../__pycache__/bdist_wininst.cpython-39.pyc | Bin 0 -> 8593 bytes .../command/__pycache__/build.cpython-39.pyc | Bin 0 -> 3929 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 0 -> 4848 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 0 -> 16239 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 0 -> 10481 bytes .../__pycache__/build_scripts.cpython-39.pyc | Bin 0 -> 4378 bytes .../command/__pycache__/check.cpython-39.pyc | Bin 0 -> 4957 bytes .../command/__pycache__/clean.cpython-39.pyc | Bin 0 -> 2130 bytes .../command/__pycache__/config.cpython-39.pyc | Bin 0 -> 10260 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 13847 bytes .../__pycache__/install_data.cpython-39.pyc | Bin 0 -> 2333 bytes .../install_egg_info.cpython-39.pyc | Bin 0 -> 3068 bytes .../install_headers.cpython-39.pyc | Bin 0 -> 1758 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 0 -> 5130 bytes .../install_scripts.cpython-39.pyc | Bin 0 -> 2181 bytes .../__pycache__/register.cpython-39.pyc | Bin 0 -> 8501 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 0 -> 14528 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 0 -> 5251 bytes .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 754 ++ .../setuptools/_distutils/command/build_py.py | 416 + .../_distutils/command/build_scripts.py | 160 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 677 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 77 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 234 + .../setuptools/_distutils/cygwinccompiler.py | 403 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 327 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/spawn.py | 125 + .../setuptools/_distutils/sysconfig.py | 573 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 328 + .../setuptools/_distutils/util.py | 559 ++ .../setuptools/_distutils/version.py | 347 + .../setuptools/_distutils/versionpredicate.py | 166 + .../venv/Lib/site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 178 bytes .../__pycache__/ordered_set.cpython-39.pyc | Bin 0 -> 16372 bytes .../__pycache__/pyparsing.cpython-39.pyc | Bin 0 -> 201331 bytes .../_vendor/__pycache__/six.cpython-39.pyc | Bin 0 -> 24461 bytes .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 27 + .../setuptools/_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-39.pyc | Bin 0 -> 702 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 540 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 0 -> 1002 bytes .../__pycache__/_structures.cpython-39.pyc | Bin 0 -> 2784 bytes .../__pycache__/markers.cpython-39.pyc | Bin 0 -> 8923 bytes .../__pycache__/requirements.cpython-39.pyc | Bin 0 -> 4015 bytes .../__pycache__/specifiers.cpython-39.pyc | Bin 0 -> 19736 bytes .../packaging/__pycache__/tags.cpython-39.pyc | Bin 0 -> 10814 bytes .../__pycache__/utils.cpython-39.pyc | Bin 0 -> 1449 bytes .../__pycache__/version.cpython-39.pyc | Bin 0 -> 12069 bytes .../setuptools/_vendor/packaging/_compat.py | 31 + .../_vendor/packaging/_structures.py | 68 + .../setuptools/_vendor/packaging/markers.py | 296 + .../_vendor/packaging/requirements.py | 138 + .../_vendor/packaging/specifiers.py | 749 ++ .../setuptools/_vendor/packaging/tags.py | 404 + .../setuptools/_vendor/packaging/utils.py | 57 + .../setuptools/_vendor/packaging/version.py | 420 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/_vendor/six.py | 868 ++ .../site-packages/setuptools/archive_util.py | 175 + .../site-packages/setuptools/build_meta.py | 271 + .../Lib/site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../Lib/site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../venv/Lib/site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 17 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 658 bytes .../command/__pycache__/alias.cpython-39.pyc | Bin 0 -> 2416 bytes .../__pycache__/bdist_egg.cpython-39.pyc | Bin 0 -> 14445 bytes .../__pycache__/bdist_rpm.cpython-39.pyc | Bin 0 -> 1806 bytes .../__pycache__/bdist_wininst.cpython-39.pyc | Bin 0 -> 1213 bytes .../__pycache__/build_clib.cpython-39.pyc | Bin 0 -> 2458 bytes .../__pycache__/build_ext.cpython-39.pyc | Bin 0 -> 9957 bytes .../__pycache__/build_py.cpython-39.pyc | Bin 0 -> 8884 bytes .../__pycache__/develop.cpython-39.pyc | Bin 0 -> 6534 bytes .../__pycache__/dist_info.cpython-39.pyc | Bin 0 -> 1385 bytes .../__pycache__/easy_install.cpython-39.pyc | Bin 0 -> 65536 bytes .../__pycache__/egg_info.cpython-39.pyc | Bin 0 -> 21786 bytes .../__pycache__/install.cpython-39.pyc | Bin 0 -> 4026 bytes .../install_egg_info.cpython-39.pyc | Bin 0 -> 2417 bytes .../__pycache__/install_lib.cpython-39.pyc | Bin 0 -> 4124 bytes .../install_scripts.cpython-39.pyc | Bin 0 -> 2340 bytes .../__pycache__/py36compat.cpython-39.pyc | Bin 0 -> 4634 bytes .../__pycache__/register.cpython-39.pyc | Bin 0 -> 835 bytes .../command/__pycache__/rotate.cpython-39.pyc | Bin 0 -> 2555 bytes .../__pycache__/saveopts.cpython-39.pyc | Bin 0 -> 913 bytes .../command/__pycache__/sdist.cpython-39.pyc | Bin 0 -> 7923 bytes .../command/__pycache__/setopt.cpython-39.pyc | Bin 0 -> 4565 bytes .../command/__pycache__/test.cpython-39.pyc | Bin 0 -> 8667 bytes .../command/__pycache__/upload.cpython-39.pyc | Bin 0 -> 808 bytes .../__pycache__/upload_docs.cpython-39.pyc | Bin 0 -> 6199 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/bdist_egg.py | 510 + .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_wininst.py | 30 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 332 + .../setuptools/command/build_py.py | 276 + .../setuptools/command/develop.py | 220 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2339 +++++ .../setuptools/command/egg_info.py | 721 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 68 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 66 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 252 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 280 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 206 + .../Lib/site-packages/setuptools/config.py | 701 ++ .../Lib/site-packages/setuptools/dep_util.py | 25 + .../Lib/site-packages/setuptools/depends.py | 176 + .../venv/Lib/site-packages/setuptools/dist.py | 1035 ++ .../setuptools/distutils_patch.py | 61 + .../Lib/site-packages/setuptools/errors.py | 16 + .../Lib/site-packages/setuptools/extension.py | 57 + .../setuptools/extern/__init__.py | 66 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2403 bytes .../venv/Lib/site-packages/setuptools/glob.py | 174 + .../Lib/site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../Lib/site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../venv/Lib/site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../Lib/site-packages/setuptools/installer.py | 150 + .../Lib/site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/lib2to3_ex.py | 71 + .../Lib/site-packages/setuptools/monkey.py | 179 + .../venv/Lib/site-packages/setuptools/msvc.py | 1831 ++++ .../site-packages/setuptools/namespaces.py | 111 + .../site-packages/setuptools/package_index.py | 1140 +++ .../site-packages/setuptools/py27compat.py | 60 + .../site-packages/setuptools/py31compat.py | 32 + .../site-packages/setuptools/py33compat.py | 59 + .../site-packages/setuptools/py34compat.py | 13 + .../Lib/site-packages/setuptools/sandbox.py | 492 + .../setuptools/script (dev).tmpl | 6 + .../Lib/site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/ssl_support.py | 265 + .../site-packages/setuptools/unicode_utils.py | 44 + .../Lib/site-packages/setuptools/version.py | 6 + .../Lib/site-packages/setuptools/wheel.py | 217 + .../setuptools/windows_support.py | 29 + .../six-1.15.0.dist-info/INSTALLER | 1 + .../six-1.15.0.dist-info/LICENSE | 18 + .../six-1.15.0.dist-info/METADATA | 49 + .../site-packages/six-1.15.0.dist-info/RECORD | 8 + .../site-packages/six-1.15.0.dist-info/WHEEL | 6 + .../six-1.15.0.dist-info/top_level.txt | 1 + WebCrawler/venv/Lib/site-packages/six.py | 982 ++ .../toml-0.10.2.dist-info/INSTALLER | 1 + .../toml-0.10.2.dist-info/LICENSE | 27 + .../toml-0.10.2.dist-info/METADATA | 255 + .../toml-0.10.2.dist-info/RECORD | 16 + .../site-packages/toml-0.10.2.dist-info/WHEEL | 6 + .../toml-0.10.2.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/toml/__init__.py | 25 + .../toml/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 696 bytes .../toml/__pycache__/decoder.cpython-39.pyc | Bin 0 -> 23188 bytes .../toml/__pycache__/encoder.cpython-39.pyc | Bin 0 -> 9371 bytes .../toml/__pycache__/ordered.cpython-39.pyc | Bin 0 -> 935 bytes .../toml/__pycache__/tz.cpython-39.pyc | Bin 0 -> 1249 bytes .../venv/Lib/site-packages/toml/decoder.py | 1057 +++ .../venv/Lib/site-packages/toml/encoder.py | 304 + .../venv/Lib/site-packages/toml/ordered.py | 15 + WebCrawler/venv/Lib/site-packages/toml/tz.py | 24 + .../w3lib-1.22.0.dist-info/INSTALLER | 1 + .../w3lib-1.22.0.dist-info/LICENSE | 27 + .../w3lib-1.22.0.dist-info/METADATA | 28 + .../w3lib-1.22.0.dist-info/RECORD | 20 + .../w3lib-1.22.0.dist-info/WHEEL | 6 + .../w3lib-1.22.0.dist-info/top_level.txt | 1 + .../venv/Lib/site-packages/w3lib/__init__.py | 3 + .../w3lib/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 384 bytes .../w3lib/__pycache__/encoding.cpython-39.pyc | Bin 0 -> 8914 bytes .../w3lib/__pycache__/form.cpython-39.pyc | Bin 0 -> 2951 bytes .../w3lib/__pycache__/html.cpython-39.pyc | Bin 0 -> 11162 bytes .../w3lib/__pycache__/http.cpython-39.pyc | Bin 0 -> 2604 bytes .../w3lib/__pycache__/url.cpython-39.pyc | Bin 0 -> 15926 bytes .../w3lib/__pycache__/util.cpython-39.pyc | Bin 0 -> 1699 bytes .../venv/Lib/site-packages/w3lib/encoding.py | 274 + .../venv/Lib/site-packages/w3lib/form.py | 68 + .../venv/Lib/site-packages/w3lib/html.py | 336 + .../venv/Lib/site-packages/w3lib/http.py | 99 + .../venv/Lib/site-packages/w3lib/url.py | 623 ++ .../venv/Lib/site-packages/w3lib/util.py | 47 + .../wrapt-1.12.1-py3.9.egg-info/PKG-INFO | 167 + .../wrapt-1.12.1-py3.9.egg-info/SOURCES.txt | 10 + .../dependency_links.txt | 1 + .../installed-files.txt | 12 + .../wrapt-1.12.1-py3.9.egg-info/top_level.txt | 1 + .../venv/Lib/site-packages/wrapt/__init__.py | 16 + .../wrapt/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 977 bytes .../__pycache__/decorators.cpython-39.pyc | Bin 0 -> 9301 bytes .../wrapt/__pycache__/importer.cpython-39.pyc | Bin 0 -> 4281 bytes .../wrapt/__pycache__/wrappers.cpython-39.pyc | Bin 0 -> 24416 bytes .../Lib/site-packages/wrapt/decorators.py | 516 + .../venv/Lib/site-packages/wrapt/importer.py | 230 + .../venv/Lib/site-packages/wrapt/wrappers.py | 947 ++ .../zope.interface-5.2.0-py3.9-nspkg.pth | 1 + .../zope.interface-5.2.0.dist-info/INSTALLER | 1 + .../LICENSE.txt | 44 + .../zope.interface-5.2.0.dist-info/METADATA | 991 ++ .../zope.interface-5.2.0.dist-info/RECORD | 108 + .../zope.interface-5.2.0.dist-info/WHEEL | 5 + .../namespace_packages.txt | 1 + .../top_level.txt | 1 + .../site-packages/zope/interface/__init__.py | 96 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 2669 bytes .../__pycache__/_compat.cpython-39.pyc | Bin 0 -> 4577 bytes .../__pycache__/_flatten.cpython-39.pyc | Bin 0 -> 584 bytes .../__pycache__/adapter.cpython-39.pyc | Bin 0 -> 17100 bytes .../__pycache__/advice.cpython-39.pyc | Bin 0 -> 4964 bytes .../__pycache__/declarations.cpython-39.pyc | Bin 0 -> 28304 bytes .../__pycache__/document.cpython-39.pyc | Bin 0 -> 3181 bytes .../__pycache__/exceptions.cpython-39.pyc | Bin 0 -> 7258 bytes .../__pycache__/interface.cpython-39.pyc | Bin 0 -> 25088 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 0 -> 58519 bytes .../__pycache__/registry.cpython-39.pyc | Bin 0 -> 20603 bytes .../interface/__pycache__/ro.cpython-39.pyc | Bin 0 -> 18571 bytes .../__pycache__/verify.cpython-39.pyc | Bin 0 -> 4480 bytes .../site-packages/zope/interface/_compat.py | 170 + .../site-packages/zope/interface/_flatten.py | 35 + .../_zope_interface_coptimizations.c | 2120 +++++ ...nterface_coptimizations.cp39-win_amd64.pyd | Bin 0 -> 33792 bytes .../site-packages/zope/interface/adapter.py | 731 ++ .../site-packages/zope/interface/advice.py | 213 + .../zope/interface/common/__init__.py | 272 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 8717 bytes .../__pycache__/builtins.cpython-39.pyc | Bin 0 -> 3540 bytes .../__pycache__/collections.cpython-39.pyc | Bin 0 -> 8110 bytes .../__pycache__/idatetime.cpython-39.pyc | Bin 0 -> 24675 bytes .../__pycache__/interfaces.cpython-39.pyc | Bin 0 -> 7729 bytes .../common/__pycache__/io.cpython-39.pyc | Bin 0 -> 1375 bytes .../common/__pycache__/mapping.cpython-39.pyc | Bin 0 -> 7369 bytes .../common/__pycache__/numbers.cpython-39.pyc | Bin 0 -> 2176 bytes .../__pycache__/sequence.cpython-39.pyc | Bin 0 -> 8989 bytes .../zope/interface/common/builtins.py | 125 + .../zope/interface/common/collections.py | 284 + .../zope/interface/common/idatetime.py | 606 ++ .../zope/interface/common/interfaces.py | 212 + .../site-packages/zope/interface/common/io.py | 53 + .../zope/interface/common/mapping.py | 184 + .../zope/interface/common/numbers.py | 84 + .../zope/interface/common/sequence.py | 215 + .../zope/interface/common/tests/__init__.py | 133 + .../tests/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3675 bytes .../__pycache__/basemapping.cpython-39.pyc | Bin 0 -> 3661 bytes .../__pycache__/test_builtins.cpython-39.pyc | Bin 0 -> 1255 bytes .../test_collections.cpython-39.pyc | Bin 0 -> 5313 bytes .../__pycache__/test_idatetime.cpython-39.pyc | Bin 0 -> 1303 bytes .../test_import_interfaces.cpython-39.pyc | Bin 0 -> 659 bytes .../tests/__pycache__/test_io.cpython-39.pyc | Bin 0 -> 1869 bytes .../__pycache__/test_numbers.cpython-39.pyc | Bin 0 -> 1217 bytes .../interface/common/tests/basemapping.py | 107 + .../interface/common/tests/test_builtins.py | 45 + .../common/tests/test_collections.py | 160 + .../interface/common/tests/test_idatetime.py | 37 + .../common/tests/test_import_interfaces.py | 20 + .../zope/interface/common/tests/test_io.py | 52 + .../interface/common/tests/test_numbers.py | 41 + .../zope/interface/declarations.py | 1176 +++ .../site-packages/zope/interface/document.py | 124 + .../zope/interface/exceptions.py | 275 + .../site-packages/zope/interface/interface.py | 1142 +++ .../zope/interface/interfaces.py | 1545 +++ .../site-packages/zope/interface/registry.py | 660 ++ .../Lib/site-packages/zope/interface/ro.py | 643 ++ .../zope/interface/tests/__init__.py | 115 + .../tests/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 3733 bytes .../advisory_testing.cpython-39.pyc | Bin 0 -> 1152 bytes .../tests/__pycache__/dummy.cpython-39.pyc | Bin 0 -> 459 bytes .../tests/__pycache__/idummy.cpython-39.pyc | Bin 0 -> 657 bytes .../tests/__pycache__/m1.cpython-39.pyc | Bin 0 -> 580 bytes .../tests/__pycache__/odd.cpython-39.pyc | Bin 0 -> 3490 bytes .../__pycache__/test_adapter.cpython-39.pyc | Bin 0 -> 60856 bytes .../__pycache__/test_advice.cpython-39.pyc | Bin 0 -> 15850 bytes .../test_declarations.cpython-39.pyc | Bin 0 -> 97253 bytes .../__pycache__/test_document.cpython-39.pyc | Bin 0 -> 21227 bytes .../__pycache__/test_element.cpython-39.pyc | Bin 0 -> 850 bytes .../test_exceptions.cpython-39.pyc | Bin 0 -> 7221 bytes .../__pycache__/test_interface.cpython-39.pyc | Bin 0 -> 114962 bytes .../test_interfaces.cpython-39.pyc | Bin 0 -> 6600 bytes .../test_odd_declarations.cpython-39.pyc | Bin 0 -> 10322 bytes .../__pycache__/test_registry.cpython-39.pyc | Bin 0 -> 122181 bytes .../tests/__pycache__/test_ro.cpython-39.pyc | Bin 0 -> 19197 bytes .../__pycache__/test_sorting.cpython-39.pyc | Bin 0 -> 2477 bytes .../__pycache__/test_verify.cpython-39.pyc | Bin 0 -> 33990 bytes .../zope/interface/tests/advisory_testing.py | 42 + .../zope/interface/tests/dummy.py | 23 + .../zope/interface/tests/idummy.py | 23 + .../site-packages/zope/interface/tests/m1.py | 21 + .../site-packages/zope/interface/tests/odd.py | 128 + .../zope/interface/tests/test_adapter.py | 1499 +++ .../zope/interface/tests/test_advice.py | 355 + .../zope/interface/tests/test_declarations.py | 2250 +++++ .../zope/interface/tests/test_document.py | 505 + .../zope/interface/tests/test_element.py | 31 + .../zope/interface/tests/test_exceptions.py | 184 + .../zope/interface/tests/test_interface.py | 2660 ++++++ .../zope/interface/tests/test_interfaces.py | 128 + .../interface/tests/test_odd_declarations.py | 268 + .../zope/interface/tests/test_registry.py | 2940 ++++++ .../zope/interface/tests/test_ro.py | 426 + .../zope/interface/tests/test_sorting.py | 64 + .../zope/interface/tests/test_verify.py | 656 ++ .../site-packages/zope/interface/verify.py | 218 + WebCrawler/venv/Scripts/Activate.ps1 | 406 + .../Scripts/__pycache__/jp.cpython-39.pyc | Bin 0 -> 1618 bytes WebCrawler/venv/Scripts/activate | 66 + WebCrawler/venv/Scripts/activate.bat | 33 + WebCrawler/venv/Scripts/automat-visualize.exe | Bin 0 -> 106364 bytes WebCrawler/venv/Scripts/deactivate.bat | 21 + WebCrawler/venv/Scripts/easy_install-3.9.exe | Bin 0 -> 106377 bytes WebCrawler/venv/Scripts/easy_install.exe | Bin 0 -> 106377 bytes WebCrawler/venv/Scripts/epylint.exe | Bin 0 -> 106366 bytes WebCrawler/venv/Scripts/isort.exe | Bin 0 -> 106356 bytes WebCrawler/venv/Scripts/jp.py | 54 + WebCrawler/venv/Scripts/pip.exe | Bin 0 -> 106368 bytes WebCrawler/venv/Scripts/pip3.9.exe | Bin 0 -> 106368 bytes WebCrawler/venv/Scripts/pip3.exe | Bin 0 -> 106368 bytes WebCrawler/venv/Scripts/pylint.exe | Bin 0 -> 106364 bytes WebCrawler/venv/Scripts/pyreverse.exe | Bin 0 -> 106370 bytes WebCrawler/venv/Scripts/python.exe | Bin 0 -> 536120 bytes WebCrawler/venv/Scripts/pythonw.exe | Bin 0 -> 535608 bytes WebCrawler/venv/Scripts/symilar.exe | Bin 0 -> 106366 bytes WebCrawler/venv/pyvenv.cfg | 3 + 2814 files changed, 421363 insertions(+) create mode 100644 WebCrawler/.vscode/launch.json create mode 100644 WebCrawler/postscrape/itens.json create mode 100644 WebCrawler/postscrape/postscrape/__init__.py create mode 100644 WebCrawler/postscrape/postscrape/__pycache__/__init__.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/__pycache__/items.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/__pycache__/pipelines.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/__pycache__/settings.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/items.py create mode 100644 WebCrawler/postscrape/postscrape/middlewares.py create mode 100644 WebCrawler/postscrape/postscrape/pipelines.py create mode 100644 WebCrawler/postscrape/postscrape/settings.py create mode 100644 WebCrawler/postscrape/postscrape/spiders/__init__.py create mode 100644 WebCrawler/postscrape/postscrape/spiders/__pycache__/__init__.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/spiders/__pycache__/posts-spider.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/spiders/__pycache__/queries.cpython-38.pyc create mode 100644 WebCrawler/postscrape/postscrape/spiders/posts-spider.py create mode 100644 WebCrawler/postscrape/postscrape/spiders/queries.js create mode 100644 WebCrawler/postscrape/scrapy.cfg create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/__pycache__/easy_install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/__pycache__/mccabe.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/__pycache__/six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/_cffi_backend.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pkginfo__.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/__pkginfo__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/_ast.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/arguments.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/as_string.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/context.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/inference.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/manager.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/modutils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/node_classes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/nodes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/protocols.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/raw_building.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/scoped_nodes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/__pycache__/util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/_ast.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/arguments.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/as_string.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/bases.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_attrs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_boto3.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_collections.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_http.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_io.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_multiprocessing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_namedtuple_enum.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_umath.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_ndarray.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pytest.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_responses.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_ssl.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_uuid.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_argparse.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_attrs.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_boto3.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_collections.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_crypt.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_curses.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dateutil.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_fstrings.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_functools.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_gi.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_hashlib.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_http.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_io.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_mechanize.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_nose.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pytest.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_qt.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_random.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_re.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_responses.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_six.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_ssl.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_subprocess.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_threading.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_typing.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/brain/brain_uuid.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/builder.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/context.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/decorators.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/helpers.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/inference.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/dunder_lookup.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/objectmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/spec.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/spec.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/util.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/dunder_lookup.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/interpreter/objectmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/manager.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/mixins.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/modutils.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/node_classes.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/nodes.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/objects.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/protocols.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/raw_building.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/rebuilder.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/scoped_nodes.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/test_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/transforms.py create mode 100644 WebCrawler/venv/Lib/site-packages/astroid/util.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__init__.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_config.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_funcs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_make.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_next_gen.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/_version_info.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/converters.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/filters.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/setters.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/__pycache__/validators.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_config.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_funcs.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_make.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_next_gen.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_version_info.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/_version_info.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/converters.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/converters.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/exceptions.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/filters.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/filters.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/py.typed create mode 100644 WebCrawler/venv/Lib/site-packages/attr/setters.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/setters.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attr/validators.py create mode 100644 WebCrawler/venv/Lib/site-packages/attr/validators.pyi create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/AUTHORS.rst create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/_core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/_discover.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/_introspection.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/_methodical.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/__pycache__/_visualize.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_core.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_discover.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_introspection.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_methodical.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_discover.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_methodical.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_trace.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_visualize.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/test_core.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/test_discover.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/test_methodical.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/test_trace.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_test/test_visualize.py create mode 100644 WebCrawler/venv/Lib/site-packages/automat/_visualize.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/api.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/cffi_opcode.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/commontypes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/cparser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/error.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/ffiplatform.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/lock.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/model.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/pkgconfig.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/recompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/setuptools_ext.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/vengine_cpy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/vengine_gen.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/__pycache__/verifier.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/_cffi_errors.h create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/_cffi_include.h create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/_embedding.h create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/api.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/backend_ctypes.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/cffi_opcode.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/commontypes.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/cparser.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/error.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/ffiplatform.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/lock.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/model.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/parse_c_type.h create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/pkgconfig.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/recompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/setuptools_ext.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/vengine_cpy.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/vengine_gen.py create mode 100644 WebCrawler/venv/Lib/site-packages/cffi/verifier.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/colorama-0.4.4.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/__init__.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/ansi.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/ansi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/ansitowin32.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/ansitowin32.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/initialise.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/initialise.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/win32.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/win32.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/winterm.cpython-38.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/__pycache__/winterm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/ansi.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/ansitowin32.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/initialise.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/win32.py create mode 100644 WebCrawler/venv/Lib/site-packages/colorama/winterm.py create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/DESCRIPTION.rst create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/metadata.json create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/pbr.json create mode 100644 WebCrawler/venv/Lib/site-packages/constantly-15.1.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/__pycache__/_constants.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/_constants.py create mode 100644 WebCrawler/venv/Lib/site-packages/constantly/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/AUTHORS.rst create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/LICENSE.APACHE create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/LICENSE.BSD create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/LICENSE.PSF create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography-3.3.1.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__about__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__pycache__/__about__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__pycache__/fernet.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/fernet.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/__pycache__/_der.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/__pycache__/_oid.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/_der.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/_oid.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/__pycache__/interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/aead.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/ciphers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/cmac.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/decode_asn1.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/dh.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/dsa.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/ed25519.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/ed448.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/encode_asn1.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/hashes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/hmac.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/ocsp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/poly1305.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/rsa.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/x25519.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/x448.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/__pycache__/x509.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/aead.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/ciphers.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/cmac.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/decode_asn1.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/dh.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/dsa.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/ec.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/ed25519.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/ed448.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/encode_asn1.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/hashes.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/hmac.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/ocsp.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/poly1305.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/rsa.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/x25519.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/x448.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/backends/openssl/x509.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/_openssl.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/_padding.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/_conditional.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/__pycache__/binding.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/cmac.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/constant_time.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/hashes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/hmac.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/keywrap.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/__pycache__/poly1305.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dh.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ec.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed25519.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/padding.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/rsa.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x25519.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/x448.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/aead.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/algorithms.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__pycache__/modes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/cmac.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/hashes.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/hmac.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/concatkdf.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/hkdf.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/kbkdf.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/pbkdf2.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/x963kdf.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/padding.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs12.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/pkcs7.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/hotp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/totp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/hazmat/primitives/twofactor/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/extensions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/general_name.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/name.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/ocsp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/__pycache__/oid.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/certificate_transparency.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/extensions.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/general_name.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/name.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/ocsp.py create mode 100644 WebCrawler/venv/Lib/site-packages/cryptography/x509/oid.py create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/AUTHORS create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect-1.1.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/__pycache__/parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/__pycache__/xpath.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/cssselect/xpath.py create mode 100644 WebCrawler/venv/Lib/site-packages/easy_install.py create mode 100644 WebCrawler/venv/Lib/site-packages/exampleproj/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/exampleproj/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/exampleproj/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/exampleproj/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/assert_that.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/base_description.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/base_matcher.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/description.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/matcher.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/selfdescribing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/selfdescribingvalue.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/__pycache__/string_description.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/assert_that.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/base_description.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/base_matcher.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/allof.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/anyof.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/described_as.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/is_.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/isanything.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/isequal.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/isinstanceof.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/isnone.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/isnot.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/issame.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/__pycache__/raises.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/allof.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/anyof.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/described_as.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/is_.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/isanything.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/isequal.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/isinstanceof.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/isnone.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/isnot.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/issame.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/core/raises.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/description.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/__pycache__/hasmethod.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/__pycache__/ismock.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/__pycache__/wrap_matcher.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/hasmethod.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/ismock.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/helpers/wrap_matcher.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/matcher.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/selfdescribing.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/selfdescribingvalue.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/core/string_description.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/is_empty.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/isdict_containing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/isdict_containingentries.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/isdict_containingkey.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/isdict_containingvalue.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/isin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/issequence_containing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/issequence_containinginanyorder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/issequence_containinginorder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/__pycache__/issequence_onlycontaining.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/is_empty.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/isdict_containing.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/isdict_containingentries.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/isdict_containingkey.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/isdict_containingvalue.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/isin.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/issequence_containing.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/issequence_containinginanyorder.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/issequence_containinginorder.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/collection/issequence_onlycontaining.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/integration/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/integration/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/integration/__pycache__/match_equality.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/integration/match_equality.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/__pycache__/iscloseto.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/__pycache__/ordering_comparison.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/iscloseto.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/number/ordering_comparison.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/__pycache__/haslength.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/__pycache__/hasproperty.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/__pycache__/hasstring.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/haslength.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/hasproperty.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/object/hasstring.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/isequal_ignoring_case.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/isequal_ignoring_whitespace.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/stringcontains.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/stringcontainsinorder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/stringendswith.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/stringmatches.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/stringstartswith.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/__pycache__/substringmatcher.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/isequal_ignoring_case.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/isequal_ignoring_whitespace.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/stringcontains.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/stringcontainsinorder.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/stringendswith.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/stringmatches.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/stringstartswith.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/library/text/substringmatcher.py create mode 100644 WebCrawler/venv/Lib/site-packages/hamcrest/py.typed create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink-20.0.1.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/__pycache__/_socket.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/__pycache__/_url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/__pycache__/hypothesis.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/_socket.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/_url.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/hypothesis.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/py.typed create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/common.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_common.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_decoded_url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_hypothesis.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_parse.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_scheme_registration.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_socket.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/__pycache__/test_url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/common.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_common.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_decoded_url.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_hypothesis.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_parse.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_scheme_registration.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_socket.py create mode 100644 WebCrawler/venv/Lib/site-packages/hyperlink/test/test_url.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/LICENSE.rst create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/idna-2.10.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/codec.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/idnadata.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/intranges.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/package_data.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/__pycache__/uts46data.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/idna/codec.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/core.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/idnadata.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/intranges.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/package_data.py create mode 100644 WebCrawler/venv/Lib/site-packages/idna/uts46data.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/DESCRIPTION.rst create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/metadata.json create mode 100644 WebCrawler/venv/Lib/site-packages/incremental-17.5.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/__pycache__/update.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/__pycache__/test_update.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/__pycache__/test_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/test_update.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/tests/test_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/incremental/update.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/isort-5.6.4.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__main__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/__main__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/api.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/comments.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/format.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/hooks.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/io.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/literal.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/logo.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/main.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/output.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/parse.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/place.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/profiles.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/pylama_isort.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/sections.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/settings.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/setuptools_commands.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/sorting.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/wrap.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/__pycache__/wrap_modes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_future/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_future/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_future/__pycache__/_dataclasses.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_future/_dataclasses.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__pycache__/ordered.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/__pycache__/tz.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/ordered.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_vendored/toml/tz.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/api.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/comments.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/core.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/deprecated/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/deprecated/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/deprecated/__pycache__/finders.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/deprecated/finders.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/format.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/hooks.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/io.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/literal.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/logo.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/main.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/output.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/parse.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/place.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/profiles.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/pylama_isort.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/sections.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/settings.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/setuptools_commands.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/sorting.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/all.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py2.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py27.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py3.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py35.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py36.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py37.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py38.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/__pycache__/py39.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/all.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py2.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py27.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py3.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py35.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py36.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py37.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py38.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/stdlibs/py39.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/wrap.py create mode 100644 WebCrawler/venv/Lib/site-packages/isort/wrap_modes.py create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter-0.2.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/__pycache__/adapter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/adapter.py create mode 100644 WebCrawler/venv/Lib/site-packages/itemadapter/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/DESCRIPTION.rst create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/metadata.json create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath-0.10.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/ast.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/functions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/lexer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/__pycache__/visitor.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/ast.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/functions.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/lexer.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/jmespath/visitor.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/AUTHORS.rst create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy-1.4.3.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/simple.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/slots.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/simple.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/slots.py create mode 100644 WebCrawler/venv/Lib/site-packages/lazy_object_proxy/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/LICENSES.txt create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/lxml-4.6.2.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/ElementInclude.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/ElementInclude.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/_elementpath.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/builder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/cssselect.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/doctestcompare.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/pyclasslookup.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/sax.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/__pycache__/usedoctest.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/_elementpath.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/_elementpath.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/builder.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/builder.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/cssselect.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/doctestcompare.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/etree.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/etree.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/etree_api.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/ElementSoup.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/ElementSoup.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/_diffcommand.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/_html5builder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/_setmixin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/builder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/clean.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/defs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/diff.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/formfill.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/html5parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/soupparser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/__pycache__/usedoctest.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/_diffcommand.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/_html5builder.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/_setmixin.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/builder.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/clean.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/clean.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/defs.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/diff.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/diff.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/formfill.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/html5parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/soupparser.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/html/usedoctest.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/__init__.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/c14n.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/config.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/dtdvalid.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/etree_defs.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/etreepublic.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/htmlparser.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libexslt/exslt.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libexslt/exsltconfig.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libexslt/exsltexports.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libexslt/libexslt.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/DOCBparser.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/HTMLparser.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/HTMLtree.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/SAX.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/SAX2.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/c14n.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/catalog.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/chvalid.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/debugXML.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/dict.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/encoding.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/entities.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/globals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/hash.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/list.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/nanoftp.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/nanohttp.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/parser.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/parserInternals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/pattern.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/relaxng.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/schemasInternals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/schematron.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/threads.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/tree.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/uri.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/valid.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xinclude.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xlink.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlIO.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlautomata.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlerror.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlexports.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlmemory.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlmodule.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlreader.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlregexp.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlsave.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlschemas.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlschemastypes.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlstring.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlunicode.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlversion.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xmlwriter.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xpath.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xpathInternals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxml/xpointer.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/attributes.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/documents.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/extensions.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/extra.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/functions.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/imports.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/keys.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/libxslt.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/namespaces.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/numbersInternals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/preproc.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/security.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/templates.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/transform.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/trio.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/triodef.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/variables.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/win32config.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xslt.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xsltInternals.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xsltconfig.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xsltexports.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xsltlocale.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/libxslt/xsltutils.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/lxml-version.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/relaxng.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/schematron.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/tree.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/uri.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xinclude.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xmlerror.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xmlparser.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xmlschema.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xpath.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/includes/xslt.pxd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/lxml.etree.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/lxml.etree_api.h create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/objectify.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/pyclasslookup.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/sax.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/sax.py create mode 100644 WebCrawler/venv/Lib/site-packages/lxml/usedoctest.py create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/DESCRIPTION.rst create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/metadata.json create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe-0.6.1.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/mccabe.py create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/parsel-1.6.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__pycache__/csstranslator.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__pycache__/selector.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/__pycache__/xpathfuncs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/csstranslator.py create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/selector.py create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/parsel/xpathfuncs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/REQUESTED create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pip-20.3.3.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pip/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/__main__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/__pycache__/__main__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/locations.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/main.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/build_env.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/main.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/base_command.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/command_context.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/main.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/main_parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/req_command.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/spinners.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/cli/status_codes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/check.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/completion.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/configuration.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/debug.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/download.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/freeze.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/hash.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/help.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/install.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/list.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/search.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/show.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/uninstall.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/commands/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/configuration.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/installed.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/sdist.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/distributions/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/__pycache__/collector.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/collector.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/index/package_finder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/locations.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/main.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/scheme.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/candidate.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/direct_url.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/format_control.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/index.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/link.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/scheme.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/search_scope.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/target_python.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/models/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/auth.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/download.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/session.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/auth.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/download.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/session.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/check.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/freeze.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/legacy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/operations/prepare.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/pyproject.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/constructors.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/req_file.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/req_install.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/req_set.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/req_tracker.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/self_outdated_check.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/distutils_args.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/parallel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/pkg_resources.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/typing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/urls.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/appdirs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/datetime.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/deprecation.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/encoding.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/filesystem.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/filetypes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/glibc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/hashes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/logging.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/misc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/models.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/packaging.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/parallel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/subprocess.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/typing.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/unpacking.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/urls.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/utils/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/git.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/subversion.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_internal/wheel_builder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/appdirs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/contextlib2.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/distro.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/retrying.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/appdirs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/certifi/core.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/enums.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/chardet/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/win32.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/contextlib2.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/database.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/index.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/locators.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/markers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/resources.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/util.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/distro.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/codec.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/core.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/intranges.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/package_data.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/ipaddress.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_typing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/_typing.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/markers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/tags.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/packaging/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/_in_process.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/dirtools.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/meta.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/build.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/check.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/meta.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/bar.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/counter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/progress/spinner.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/pyparsing.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/__version__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/adapters.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/api.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/auth.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/certs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/cookies.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/help.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/hooks.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/models.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/packages.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/sessions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/structures.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/requests/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/retrying.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/six.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__pycache__/ordered.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/__pycache__/tz.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/ordered.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/toml/tz.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/request.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/response.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/vendor.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 WebCrawler/venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/_vendor/six.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/extern/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/LICENSE.rst create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1-0.4.8.dist-info/zip-safe create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/__pycache__/debug.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/__pycache__/error.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/__pycache__/eoo.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/ber/eoo.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/cer/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/der/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/codec/native/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/binary.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/calling.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/dateandtime.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/integer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/octets.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/__pycache__/string.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/binary.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/calling.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/dateandtime.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/integer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/octets.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/compat/string.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/debug.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/error.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/char.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/constraint.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/error.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/namedtype.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/namedval.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/opentype.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/tag.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/tagmap.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/univ.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/__pycache__/useful.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/char.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/constraint.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/error.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/namedtype.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/namedval.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/opentype.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/tag.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/tagmap.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/univ.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1/type/useful.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules-0.2.8.dist-info/zip-safe create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/pem.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc1155.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc1157.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc1901.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc1902.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc1905.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2251.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2314.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2315.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2437.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2459.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2511.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2560.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2631.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2634.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2985.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc2986.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3114.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3161.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3274.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3279.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3280.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3281.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3412.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3414.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3447.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3560.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3565.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3709.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3770.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3779.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc3852.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4043.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4055.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4073.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4108.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4210.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4211.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4334.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc4985.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5035.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5083.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5084.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5208.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5280.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5480.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5649.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5652.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5751.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5755.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5913.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5914.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5915.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5916.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5917.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5924.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5934.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5940.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5958.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc5990.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6010.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6019.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6031.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6032.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6120.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6170.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6187.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6210.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6211.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6402-1.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6402.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6482.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6486.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6487.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6664.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6955.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc6960.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7030.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7191.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7229.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7292.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7296.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7508.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7585.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7633.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7773.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7894-1.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7894.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7906.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc7914.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8017.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8018.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8103.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8209.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8226.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8358.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8360.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8398.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8410.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8418.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8419.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8479.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8494.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8520.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8619.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/__pycache__/rfc8649.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/pem.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc1155.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc1157.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc1901.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc1902.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc1905.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2251.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2314.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2315.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2437.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2459.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2511.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2560.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2631.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2634.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2985.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc2986.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3114.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3161.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3274.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3279.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3280.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3281.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3412.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3414.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3447.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3560.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3565.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3709.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3770.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3779.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc3852.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4043.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4055.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4073.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4108.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4210.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4211.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4334.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc4985.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5035.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5083.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5084.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5208.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5280.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5480.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5649.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5652.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5751.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5755.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5913.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5914.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5915.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5916.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5917.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5924.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5934.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5940.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5958.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc5990.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6010.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6019.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6031.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6032.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6120.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6170.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6187.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6210.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6211.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6402-1.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6402.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6482.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6486.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6487.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6664.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6955.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc6960.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7030.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7191.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7229.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7292.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7296.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7508.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7585.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7633.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7773.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7894-1.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7894.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7906.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc7914.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8017.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8018.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8103.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8209.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8226.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8358.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8360.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8398.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8410.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8418.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8419.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8479.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8494.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8520.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8619.py create mode 100644 WebCrawler/venv/Lib/site-packages/pyasn1_modules/rfc8649.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser-2.20.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/_ast_gen.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/ast_transforms.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/c_ast.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/c_generator.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/c_lexer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/c_parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/lextab.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/_ast_gen.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/_build_tables.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/_c_ast.cfg create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ast_transforms.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/c_ast.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/c_generator.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/c_lexer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/c_parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/lextab.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/ctokens.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/__pycache__/ygen.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/cpp.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/ctokens.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/lex.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/yacc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/ply/ygen.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/plyparser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pycparser/yacctab.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/COPYING create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/REQUESTED create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pylint-2.6.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__main__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pkginfo__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/__main__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/__pkginfo__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/constants.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/epylint.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/graph.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/__pycache__/testutils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/async.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/base.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/base_checker.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/classes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/design_analysis.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/format.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/imports.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/logging.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/misc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/newstyle.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/python3.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/raw_metrics.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/refactoring.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/similar.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/spelling.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/stdlib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/strings.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/typecheck.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/__pycache__/variables.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/async.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/base.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/base_checker.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/classes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/design_analysis.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/format.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/imports.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/logging.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/misc.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/newstyle.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/python3.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/raw_metrics.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/refactoring.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/similar.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/spelling.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/stdlib.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/strings.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/typecheck.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/checkers/variables.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/configuration_mixin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/find_default_config_files.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/man_help_formatter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/option.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/option_manager_mixin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/option_parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/__pycache__/options_provider_mixin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/configuration_mixin.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/find_default_config_files.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/man_help_formatter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/option.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/option_manager_mixin.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/option_parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/config/options_provider_mixin.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/constants.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/epylint.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/_check_docs_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/bad_builtin.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/broad_try_clause.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/check_docs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/check_elif.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/comparetozero.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/docparams.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/docstyle.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/emptystring.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/mccabe.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/overlapping_exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/__pycache__/redefined_variable_type.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/_check_docs_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/bad_builtin.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/broad_try_clause.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/check_docs.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/check_elif.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/comparetozero.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/docparams.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/docstyle.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/emptystring.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/mccabe.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/overlapping_exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/extensions/redefined_variable_type.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/graph.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/check_parallel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/pylinter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/report_functions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/run.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/check_parallel.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/pylinter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/report_functions.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/run.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/lint/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/message.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/message_definition.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/message_definition_store.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/message_handler_mix_in.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/__pycache__/message_id_store.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/message.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/message_definition.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/message_definition_store.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/message_handler_mix_in.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/message/message_id_store.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/diadefslib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/diagrams.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/inspector.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/main.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/vcgutils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/__pycache__/writer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/diadefslib.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/diagrams.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/inspector.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/main.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/vcgutils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/pyreverse/writer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/base_reporter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/collecting_reporter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/json_reporter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/reports_handler_mix_in.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/__pycache__/text.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/base_reporter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/collecting_reporter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/json_reporter.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/reports_handler_mix_in.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/text.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/__pycache__/nodes.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/__pycache__/text_writer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/nodes.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/reporters/ureports/text_writer.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/testutils.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__pycache__/ast_walker.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__pycache__/file_state.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__pycache__/pragma_parser.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/ast_walker.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/file_state.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/pragma_parser.py create mode 100644 WebCrawler/venv/Lib/site-packages/pylint/utils/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/REQUESTED create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/dependency_links.txt create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/entry_points.txt create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools-49.2.1.dist-info/zip-safe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/_imp.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/archive_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/build_meta.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/config.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/dep_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/depends.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/dist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/distutils_patch.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/errors.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/extension.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/glob.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/installer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/launch.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/monkey.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/msvc.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/namespaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/package_index.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/py27compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/py31compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/py33compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/py34compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/sandbox.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/ssl_support.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/unicode_utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/wheel.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/__pycache__/windows_support.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_deprecation_warning.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/config.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/core.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/debug.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/dist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/errors.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/extension.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/log.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/archive_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/cmd.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/build.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/check.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/clean.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/config.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/register.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/command/upload.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/config.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/core.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/debug.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/dep_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/dir_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/dist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/errors.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/extension.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/file_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/filelist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/log.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/spawn.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/text_file.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_imp.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/__pycache__/six.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/_vendor/six.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/archive_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/build_meta.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/cli-32.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/cli-64.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/cli.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/alias.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/build_clib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/build_ext.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/build_py.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/develop.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/dist_info.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/easy_install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/egg_info.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/install.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/install_lib.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/install_scripts.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/py36compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/register.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/rotate.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/saveopts.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/sdist.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/setopt.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/test.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/upload.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/__pycache__/upload_docs.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/alias.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/bdist_egg.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/bdist_rpm.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/bdist_wininst.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/build_clib.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/build_ext.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/build_py.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/develop.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/dist_info.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/easy_install.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/egg_info.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/install.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/install_egg_info.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/install_lib.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/install_scripts.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/launcher manifest.xml create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/py36compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/register.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/rotate.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/saveopts.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/sdist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/setopt.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/test.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/upload.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/command/upload_docs.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/config.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/dep_util.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/depends.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/dist.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/distutils_patch.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/errors.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/extension.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/extern/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/extern/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/glob.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/gui-32.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/gui-64.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/gui.exe create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/installer.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/launch.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/lib2to3_ex.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/monkey.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/msvc.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/namespaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/package_index.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/py27compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/py31compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/py33compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/py34compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/sandbox.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/script (dev).tmpl create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/script.tmpl create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/ssl_support.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/unicode_utils.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/version.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/wheel.py create mode 100644 WebCrawler/venv/Lib/site-packages/setuptools/windows_support.py create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/six-1.15.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/six.py create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/toml-0.10.2.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__pycache__/decoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__pycache__/encoder.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__pycache__/ordered.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/toml/__pycache__/tz.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/toml/decoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/toml/encoder.py create mode 100644 WebCrawler/venv/Lib/site-packages/toml/ordered.py create mode 100644 WebCrawler/venv/Lib/site-packages/toml/tz.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/LICENSE create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib-1.22.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/encoding.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/form.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/html.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/http.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/url.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/__pycache__/util.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/encoding.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/form.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/html.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/http.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/url.py create mode 100644 WebCrawler/venv/Lib/site-packages/w3lib/util.py create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt-1.12.1-py3.9.egg-info/PKG-INFO create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt-1.12.1-py3.9.egg-info/SOURCES.txt create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt-1.12.1-py3.9.egg-info/dependency_links.txt create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt-1.12.1-py3.9.egg-info/installed-files.txt create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt-1.12.1-py3.9.egg-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/__pycache__/decorators.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/__pycache__/importer.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/__pycache__/wrappers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/decorators.py create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/importer.py create mode 100644 WebCrawler/venv/Lib/site-packages/wrapt/wrappers.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0-py3.9-nspkg.pth create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/INSTALLER create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/LICENSE.txt create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/METADATA create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/RECORD create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/WHEEL create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/namespace_packages.txt create mode 100644 WebCrawler/venv/Lib/site-packages/zope.interface-5.2.0.dist-info/top_level.txt create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/_compat.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/_flatten.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/adapter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/advice.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/declarations.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/document.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/interface.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/registry.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/ro.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/__pycache__/verify.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/_compat.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/_flatten.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/_zope_interface_coptimizations.c create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/_zope_interface_coptimizations.cp39-win_amd64.pyd create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/adapter.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/advice.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/builtins.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/collections.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/idatetime.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/io.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/mapping.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/numbers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/__pycache__/sequence.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/builtins.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/collections.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/idatetime.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/io.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/mapping.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/numbers.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/sequence.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/basemapping.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_builtins.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_collections.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_idatetime.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_import_interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_io.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/__pycache__/test_numbers.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/basemapping.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_builtins.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_collections.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_idatetime.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_import_interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_io.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/common/tests/test_numbers.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/declarations.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/document.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/interface.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/registry.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/ro.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__init__.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/__init__.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/advisory_testing.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/dummy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/idummy.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/m1.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/odd.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_adapter.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_advice.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_declarations.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_document.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_element.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_exceptions.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interface.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_interfaces.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_odd_declarations.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_registry.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_ro.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_sorting.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/__pycache__/test_verify.cpython-39.pyc create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/advisory_testing.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/dummy.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/idummy.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/m1.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/odd.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_adapter.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_advice.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_declarations.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_document.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_element.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_exceptions.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_interface.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_interfaces.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_odd_declarations.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_registry.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_ro.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_sorting.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/tests/test_verify.py create mode 100644 WebCrawler/venv/Lib/site-packages/zope/interface/verify.py create mode 100644 WebCrawler/venv/Scripts/Activate.ps1 create mode 100644 WebCrawler/venv/Scripts/__pycache__/jp.cpython-39.pyc create mode 100644 WebCrawler/venv/Scripts/activate create mode 100644 WebCrawler/venv/Scripts/activate.bat create mode 100644 WebCrawler/venv/Scripts/automat-visualize.exe create mode 100644 WebCrawler/venv/Scripts/deactivate.bat create mode 100644 WebCrawler/venv/Scripts/easy_install-3.9.exe create mode 100644 WebCrawler/venv/Scripts/easy_install.exe create mode 100644 WebCrawler/venv/Scripts/epylint.exe create mode 100644 WebCrawler/venv/Scripts/isort.exe create mode 100644 WebCrawler/venv/Scripts/jp.py create mode 100644 WebCrawler/venv/Scripts/pip.exe create mode 100644 WebCrawler/venv/Scripts/pip3.9.exe create mode 100644 WebCrawler/venv/Scripts/pip3.exe create mode 100644 WebCrawler/venv/Scripts/pylint.exe create mode 100644 WebCrawler/venv/Scripts/pyreverse.exe create mode 100644 WebCrawler/venv/Scripts/python.exe create mode 100644 WebCrawler/venv/Scripts/pythonw.exe create mode 100644 WebCrawler/venv/Scripts/symilar.exe create mode 100644 WebCrawler/venv/pyvenv.cfg diff --git a/WebCrawler/.vscode/launch.json b/WebCrawler/.vscode/launch.json new file mode 100644 index 0000000..7eb6a83 --- /dev/null +++ b/WebCrawler/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "type": "pwa-node", + "request": "launch", + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${workspaceFolder}\\postscrape\\postscrape\\spiders\\queries.js" + } + ] +} \ No newline at end of file diff --git a/WebCrawler/postscrape/itens.json b/WebCrawler/postscrape/itens.json new file mode 100644 index 0000000..276c35a --- /dev/null +++ b/WebCrawler/postscrape/itens.json @@ -0,0 +1,102 @@ +[ +{"text": "\u201cThe world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["change", "deep-thoughts", "thinking", "world"]}, +{"text": "\u201cIt is our choices, Harry, that show what we truly are, far more than our abilities.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["abilities", "choices"]}, +{"text": "\u201cThere are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["inspirational", "life", "live", "miracle", "miracles"]}, +{"text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.\u201d", "author": {"name": "Jane Austen", "url": "http://quotes.toscrape.com/author/Jane-Austen"}, "tag": ["aliteracy", "books", "classic", "humor"]}, +{"text": "\u201cImperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["be-yourself", "inspirational"]}, +{"text": "\u201cTry not to become a man of success. Rather become a man of value.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["adulthood", "success", "value"]}, +{"text": "\u201cIt is better to be hated for what you are than to be loved for what you are not.\u201d", "author": {"name": "Andr\u00e9 Gide", "url": "http://quotes.toscrape.com/author/Andre-Gide"}, "tag": ["life", "love"]}, +{"text": "\u201cI have not failed. I've just found 10,000 ways that won't work.\u201d", "author": {"name": "Thomas A. Edison", "url": "http://quotes.toscrape.com/author/Thomas-A-Edison"}, "tag": ["edison", "failure", "inspirational", "paraphrased"]}, +{"text": "\u201cA woman is like a tea bag; you never know how strong it is until it's in hot water.\u201d", "author": {"name": "Eleanor Roosevelt", "url": "http://quotes.toscrape.com/author/Eleanor-Roosevelt"}, "tag": ["misattributed-eleanor-roosevelt"]}, +{"text": "\u201cA day without sunshine is like, you know, night.\u201d", "author": {"name": "Steve Martin", "url": "http://quotes.toscrape.com/author/Steve-Martin"}, "tag": ["humor", "obvious", "simile"]}, +{"text": "\u201cThis life is what you make it. No matter what, you're going to mess up sometimes, it's a universal truth. But the good part is you get to decide how you're going to mess it up. Girls will be your friends - they'll act like it anyway. But just remember, some come, some go. The ones that stay with you through everything - they're your true best friends. Don't let go of them. Also remember, sisters make the best friends in the world. As for lovers, well, they'll come and go too. And baby, I hate to say it, most of them - actually pretty much all of them are going to break your heart, but you can't give up because if you give up, you'll never find your soulmate. You'll never find that half who makes you whole and that goes for everything. Just because you fail once, doesn't mean you're gonna fail at everything. Keep trying, hold on, and always, always, always believe in yourself, because if you don't, then who will, sweetie? So keep your head high, keep your chin up, and most importantly, keep smiling, because life's a beautiful thing and there's so much to smile about.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["friends", "heartbreak", "inspirational", "life", "love", "sisters"]}, +{"text": "\u201cIt takes a great deal of bravery to stand up to our enemies, but just as much to stand up to our friends.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["courage", "friends"]}, +{"text": "\u201cIf you can't explain it to a six year old, you don't understand it yourself.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["simplicity", "understand"]}, +{"text": "\u201cYou may not be her first, her last, or her only. She loved before she may love again. But if she loves you now, what else matters? She's not perfect\u2014you aren't either, and the two of you may never be perfect together but if she can make you laugh, cause you to think twice, and admit to being human and making mistakes, hold onto her and give her the most you can. She may not be thinking about you every second of the day, but she will give you a part of her that she knows you can break\u2014her heart. So don't hurt her, don't change her, don't analyze and don't expect more than she can give. Smile when she makes you happy, let her know when she makes you mad, and miss her when she's not there.\u201d", "author": {"name": "Bob Marley", "url": "http://quotes.toscrape.com/author/Bob-Marley"}, "tag": ["love"]}, +{"text": "\u201cI like nonsense, it wakes up the brain cells. Fantasy is a necessary ingredient in living.\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["fantasy"]}, +{"text": "\u201cI may not have gone where I intended to go, but I think I have ended up where I needed to be.\u201d", "author": {"name": "Douglas Adams", "url": "http://quotes.toscrape.com/author/Douglas-Adams"}, "tag": ["life", "navigation"]}, +{"text": "\u201cThe opposite of love is not hate, it's indifference. The opposite of art is not ugliness, it's indifference. The opposite of faith is not heresy, it's indifference. And the opposite of life is not death, it's indifference.\u201d", "author": {"name": "Elie Wiesel", "url": "http://quotes.toscrape.com/author/Elie-Wiesel"}, "tag": ["activism", "apathy", "hate", "indifference", "inspirational", "love", "opposite", "philosophy"]}, +{"text": "\u201cIt is not a lack of love, but a lack of friendship that makes unhappy marriages.\u201d", "author": {"name": "Friedrich Nietzsche", "url": "http://quotes.toscrape.com/author/Friedrich-Nietzsche"}, "tag": ["friendship", "lack-of-friendship", "lack-of-love", "love", "marriage", "unhappy-marriage"]}, +{"text": "\u201cGood friends, good books, and a sleepy conscience: this is the ideal life.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["books", "contentment", "friends", "friendship", "life"]}, +{"text": "\u201cLife is what happens to us while we are making other plans.\u201d", "author": {"name": "Allen Saunders", "url": "http://quotes.toscrape.com/author/Allen-Saunders"}, "tag": ["fate", "life", "misattributed-john-lennon", "planning", "plans"]}, +{"text": "\u201cI love you without knowing how, or when, or from where. I love you simply, without problems or pride: I love you in this way because I do not know any other way of loving but this, in which there is no I or you, so intimate that your hand upon my chest is my hand, so intimate that when I fall asleep your eyes close.\u201d", "author": {"name": "Pablo Neruda", "url": "http://quotes.toscrape.com/author/Pablo-Neruda"}, "tag": ["love", "poetry"]}, +{"text": "\u201cFor every minute you are angry you lose sixty seconds of happiness.\u201d", "author": {"name": "Ralph Waldo Emerson", "url": "http://quotes.toscrape.com/author/Ralph-Waldo-Emerson"}, "tag": ["happiness"]}, +{"text": "\u201cIf you judge people, you have no time to love them.\u201d", "author": {"name": "Mother Teresa", "url": "http://quotes.toscrape.com/author/Mother-Teresa"}, "tag": ["attributed-no-source"]}, +{"text": "\u201cAnyone who thinks sitting in church can make you a Christian must also think that sitting in a garage can make you a car.\u201d", "author": {"name": "Garrison Keillor", "url": "http://quotes.toscrape.com/author/Garrison-Keillor"}, "tag": ["humor", "religion"]}, +{"text": "\u201cBeauty is in the eye of the beholder and it may be necessary from time to time to give a stupid or misinformed beholder a black eye.\u201d", "author": {"name": "Jim Henson", "url": "http://quotes.toscrape.com/author/Jim-Henson"}, "tag": ["humor"]}, +{"text": "\u201cToday you are You, that is truer than true. There is no one alive who is Youer than You.\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["comedy", "life", "yourself"]}, +{"text": "\u201cIf you want your children to be intelligent, read them fairy tales. If you want them to be more intelligent, read them more fairy tales.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["children", "fairy-tales"]}, +{"text": "\u201cIt is impossible to live without failing at something, unless you live so cautiously that you might as well not have lived at all - in which case, you fail by default.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": []}, +{"text": "\u201cLogic will get you from A to Z; imagination will get you everywhere.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["imagination"]}, +{"text": "\u201cOne good thing about music, when it hits you, you feel no pain.\u201d", "author": {"name": "Bob Marley", "url": "http://quotes.toscrape.com/author/Bob-Marley"}, "tag": ["music"]}, +{"text": "\u201cThe more that you read, the more things you will know. The more that you learn, the more places you'll go.\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["learning", "reading", "seuss"]}, +{"text": "\u201cOf course it is happening inside your head, Harry, but why on earth should that mean that it is not real?\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["dumbledore"]}, +{"text": "\u201cThe truth is, everyone is going to hurt you. You just got to find the ones worth suffering for.\u201d", "author": {"name": "Bob Marley", "url": "http://quotes.toscrape.com/author/Bob-Marley"}, "tag": ["friendship"]}, +{"text": "\u201cNot all of us can do great things. But we can do small things with great love.\u201d", "author": {"name": "Mother Teresa", "url": "http://quotes.toscrape.com/author/Mother-Teresa"}, "tag": ["misattributed-to-mother-teresa", "paraphrased"]}, +{"text": "\u201cTo the well-organized mind, death is but the next great adventure.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["death", "inspirational"]}, +{"text": "\u201cAll you need is love. But a little chocolate now and then doesn't hurt.\u201d", "author": {"name": "Charles M. Schulz", "url": "http://quotes.toscrape.com/author/Charles-M-Schulz"}, "tag": ["chocolate", "food", "humor"]}, +{"text": "\u201cWe read to know we're not alone.\u201d", "author": {"name": "William Nicholson", "url": "http://quotes.toscrape.com/author/William-Nicholson"}, "tag": ["misattributed-to-c-s-lewis", "reading"]}, +{"text": "\u201cAny fool can know. The point is to understand.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["knowledge", "learning", "understanding", "wisdom"]}, +{"text": "\u201cI have always imagined that Paradise will be a kind of library.\u201d", "author": {"name": "Jorge Luis Borges", "url": "http://quotes.toscrape.com/author/Jorge-Luis-Borges"}, "tag": ["books", "library"]}, +{"text": "\u201cIt is never too late to be what you might have been.\u201d", "author": {"name": "George Eliot", "url": "http://quotes.toscrape.com/author/George-Eliot"}, "tag": ["inspirational"]}, +{"text": "\u201cA reader lives a thousand lives before he dies, said Jojen. The man who never reads lives only one.\u201d", "author": {"name": "George R.R. Martin", "url": "http://quotes.toscrape.com/author/George-R-R-Martin"}, "tag": ["read", "readers", "reading", "reading-books"]}, +{"text": "\u201cYou can never get a cup of tea large enough or a book long enough to suit me.\u201d", "author": {"name": "C.S. Lewis", "url": "http://quotes.toscrape.com/author/C-S-Lewis"}, "tag": ["books", "inspirational", "reading", "tea"]}, +{"text": "\u201cYou believe lies so you eventually learn to trust no one but yourself.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": []}, +{"text": "\u201cIf you can make a woman laugh, you can make her do anything.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["girls", "love"]}, +{"text": "\u201cLife is like riding a bicycle. To keep your balance, you must keep moving.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["life", "simile"]}, +{"text": "\u201cThe real lover is the man who can thrill you by kissing your forehead or smiling into your eyes or just staring into space.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["love"]}, +{"text": "\u201cA wise girl kisses but doesn't love, listens but doesn't believe, and leaves before she is left.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["attributed-no-source"]}, +{"text": "\u201cOnly in the darkness can you see the stars.\u201d", "author": {"name": "Martin Luther King Jr.", "url": "http://quotes.toscrape.com/author/Martin-Luther-King-Jr"}, "tag": ["hope", "inspirational"]}, +{"text": "\u201cIt matters not what someone is born, but what they grow to be.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["dumbledore"]}, +{"text": "\u201cLove does not begin and end the way we seem to think it does. Love is a battle, love is a war; love is a growing up.\u201d", "author": {"name": "James Baldwin", "url": "http://quotes.toscrape.com/author/James-Baldwin"}, "tag": ["love"]}, +{"text": "\u201cThere is nothing I would not do for those who are really my friends. I have no notion of loving people by halves, it is not my nature.\u201d", "author": {"name": "Jane Austen", "url": "http://quotes.toscrape.com/author/Jane-Austen"}, "tag": ["friendship", "love"]}, +{"text": "\u201cDo one thing every day that scares you.\u201d", "author": {"name": "Eleanor Roosevelt", "url": "http://quotes.toscrape.com/author/Eleanor-Roosevelt"}, "tag": ["attributed", "fear", "inspiration"]}, +{"text": "\u201cI am good, but not an angel. I do sin, but I am not the devil. I am just a small girl in a big world trying to find someone to love.\u201d", "author": {"name": "Marilyn Monroe", "url": "http://quotes.toscrape.com/author/Marilyn-Monroe"}, "tag": ["attributed-no-source"]}, +{"text": "\u201cIf I were not a physicist, I would probably be a musician. I often think in music. I live my daydreams in music. I see my life in terms of music.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["music"]}, +{"text": "\u201cIf you only read the books that everyone else is reading, you can only think what everyone else is thinking.\u201d", "author": {"name": "Haruki Murakami", "url": "http://quotes.toscrape.com/author/Haruki-Murakami"}, "tag": ["books", "thought"]}, +{"text": "\u201cThe difference between genius and stupidity is: genius has its limits.\u201d", "author": {"name": "Alexandre Dumas fils", "url": "http://quotes.toscrape.com/author/Alexandre-Dumas-fils"}, "tag": ["misattributed-to-einstein"]}, +{"text": "\u201cHe's like a drug for you, Bella.\u201d", "author": {"name": "Stephenie Meyer", "url": "http://quotes.toscrape.com/author/Stephenie-Meyer"}, "tag": ["drug", "romance", "simile"]}, +{"text": "\u201cThere is no friend as loyal as a book.\u201d", "author": {"name": "Ernest Hemingway", "url": "http://quotes.toscrape.com/author/Ernest-Hemingway"}, "tag": ["books", "friends", "novelist-quotes"]}, +{"text": "\u201cWhen one door of happiness closes, another opens; but often we look so long at the closed door that we do not see the one which has been opened for us.\u201d", "author": {"name": "Helen Keller", "url": "http://quotes.toscrape.com/author/Helen-Keller"}, "tag": ["inspirational"]}, +{"text": "\u201cLife isn't about finding yourself. Life is about creating yourself.\u201d", "author": {"name": "George Bernard Shaw", "url": "http://quotes.toscrape.com/author/George-Bernard-Shaw"}, "tag": ["inspirational", "life", "yourself"]}, +{"text": "\u201cThat's the problem with drinking, I thought, as I poured myself a drink. If something bad happens you drink in an attempt to forget; if something good happens you drink in order to celebrate; and if nothing happens you drink to make something happen.\u201d", "author": {"name": "Charles Bukowski", "url": "http://quotes.toscrape.com/author/Charles-Bukowski"}, "tag": ["alcohol"]}, +{"text": "\u201cYou don\u2019t forget the face of the person who was your last hope.\u201d", "author": {"name": "Suzanne Collins", "url": "http://quotes.toscrape.com/author/Suzanne-Collins"}, "tag": ["the-hunger-games"]}, +{"text": "\u201cRemember, we're madly in love, so it's all right to kiss me anytime you feel like it.\u201d", "author": {"name": "Suzanne Collins", "url": "http://quotes.toscrape.com/author/Suzanne-Collins"}, "tag": ["humor"]}, +{"text": "\u201cTo love at all is to be vulnerable. Love anything and your heart will be wrung and possibly broken. If you want to make sure of keeping it intact you must give it to no one, not even an animal. Wrap it carefully round with hobbies and little luxuries; avoid all entanglements. Lock it up safe in the casket or coffin of your selfishness. But in that casket, safe, dark, motionless, airless, it will change. It will not be broken; it will become unbreakable, impenetrable, irredeemable. To love is to be vulnerable.\u201d", "author": {"name": "C.S. Lewis", "url": "http://quotes.toscrape.com/author/C-S-Lewis"}, "tag": ["love"]}, +{"text": "\u201cNot all those who wander are lost.\u201d", "author": {"name": "J.R.R. Tolkien", "url": "http://quotes.toscrape.com/author/J-R-R-Tolkien"}, "tag": ["bilbo", "journey", "lost", "quest", "travel", "wander"]}, +{"text": "\u201cDo not pity the dead, Harry. Pity the living, and, above all those who live without love.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["live-death-love"]}, +{"text": "\u201cThere is nothing to writing. All you do is sit down at a typewriter and bleed.\u201d", "author": {"name": "Ernest Hemingway", "url": "http://quotes.toscrape.com/author/Ernest-Hemingway"}, "tag": ["good", "writing"]}, +{"text": "\u201cFinish each day and be done with it. You have done what you could. Some blunders and absurdities no doubt crept in; forget them as soon as you can. Tomorrow is a new day. You shall begin it serenely and with too high a spirit to be encumbered with your old nonsense.\u201d", "author": {"name": "Ralph Waldo Emerson", "url": "http://quotes.toscrape.com/author/Ralph-Waldo-Emerson"}, "tag": ["life", "regrets"]}, +{"text": "\u201cI have never let my schooling interfere with my education.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["education"]}, +{"text": "\u201cI have heard there are troubles of more than one kind. Some come from ahead and some come from behind. But I've bought a big bat. I'm all ready you see. Now my troubles are going to have troubles with me!\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["troubles"]}, +{"text": "\u201cIf I had a flower for every time I thought of you...I could walk through my garden forever.\u201d", "author": {"name": "Alfred Tennyson", "url": "http://quotes.toscrape.com/author/Alfred-Tennyson"}, "tag": ["friendship", "love"]}, +{"text": "\u201cSome people never go crazy. What truly horrible lives they must lead.\u201d", "author": {"name": "Charles Bukowski", "url": "http://quotes.toscrape.com/author/Charles-Bukowski"}, "tag": ["humor"]}, +{"text": "\u201cThe trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.\u201d", "author": {"name": "Terry Pratchett", "url": "http://quotes.toscrape.com/author/Terry-Pratchett"}, "tag": ["humor", "open-mind", "thinking"]}, +{"text": "\u201cThink left and think right and think low and think high. Oh, the thinks you can think up if only you try!\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["humor", "philosophy"]}, +{"text": "\u201cWhat really knocks me out is a book that, when you're all done reading it, you wish the author that wrote it was a terrific friend of yours and you could call him up on the phone whenever you felt like it. That doesn't happen much, though.\u201d", "author": {"name": "J.D. Salinger", "url": "http://quotes.toscrape.com/author/J-D-Salinger"}, "tag": ["authors", "books", "literature", "reading", "writing"]}, +{"text": "\u201cThe reason I talk to myself is because I\u2019m the only one whose answers I accept.\u201d", "author": {"name": "George Carlin", "url": "http://quotes.toscrape.com/author/George-Carlin"}, "tag": ["humor", "insanity", "lies", "lying", "self-indulgence", "truth"]}, +{"text": "\u201cYou may say I'm a dreamer, but I'm not the only one. I hope someday you'll join us. And the world will live as one.\u201d", "author": {"name": "John Lennon", "url": "http://quotes.toscrape.com/author/John-Lennon"}, "tag": ["beatles", "connection", "dreamers", "dreaming", "dreams", "hope", "inspirational", "peace"]}, +{"text": "\u201cI am free of all prejudice. I hate everyone equally. \u201d", "author": {"name": "W.C. Fields", "url": "http://quotes.toscrape.com/author/W-C-Fields"}, "tag": ["humor", "sinister"]}, +{"text": "\u201cThe question isn't who is going to let me; it's who is going to stop me.\u201d", "author": {"name": "Ayn Rand", "url": "http://quotes.toscrape.com/author/Ayn-Rand"}, "tag": []}, +{"text": "\u201c\u2032Classic\u2032 - a book which people praise and don't read.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["books", "classic", "reading"]}, +{"text": "\u201cAnyone who has never made a mistake has never tried anything new.\u201d", "author": {"name": "Albert Einstein", "url": "http://quotes.toscrape.com/author/Albert-Einstein"}, "tag": ["mistakes"]}, +{"text": "\u201cA lady's imagination is very rapid; it jumps from admiration to love, from love to matrimony in a moment.\u201d", "author": {"name": "Jane Austen", "url": "http://quotes.toscrape.com/author/Jane-Austen"}, "tag": ["humor", "love", "romantic", "women"]}, +{"text": "\u201cRemember, if the time should come when you have to make a choice between what is right and what is easy, remember what happened to a boy who was good, and kind, and brave, because he strayed across the path of Lord Voldemort. Remember Cedric Diggory.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["integrity"]}, +{"text": "\u201cI declare after all there is no enjoyment like reading! How much sooner one tires of any thing than of a book! -- When I have a house of my own, I shall be miserable if I have not an excellent library.\u201d", "author": {"name": "Jane Austen", "url": "http://quotes.toscrape.com/author/Jane-Austen"}, "tag": ["books", "library", "reading"]}, +{"text": "\u201cThere are few people whom I really love, and still fewer of whom I think well. The more I see of the world, the more am I dissatisfied with it; and every day confirms my belief of the inconsistency of all human characters, and of the little dependence that can be placed on the appearance of merit or sense.\u201d", "author": {"name": "Jane Austen", "url": "http://quotes.toscrape.com/author/Jane-Austen"}, "tag": ["elizabeth-bennet", "jane-austen"]}, +{"text": "\u201cSome day you will be old enough to start reading fairy tales again.\u201d", "author": {"name": "C.S. Lewis", "url": "http://quotes.toscrape.com/author/C-S-Lewis"}, "tag": ["age", "fairytales", "growing-up"]}, +{"text": "\u201cWe are not necessarily doubting that God will do the best for us; we are wondering how painful the best will turn out to be.\u201d", "author": {"name": "C.S. Lewis", "url": "http://quotes.toscrape.com/author/C-S-Lewis"}, "tag": ["god"]}, +{"text": "\u201cThe fear of death follows from the fear of life. A man who lives fully is prepared to die at any time.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["death", "life"]}, +{"text": "\u201cA lie can travel half way around the world while the truth is putting on its shoes.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["misattributed-mark-twain", "truth"]}, +{"text": "\u201cI believe in Christianity as I believe that the sun has risen: not only because I see it, but because by it I see everything else.\u201d", "author": {"name": "C.S. Lewis", "url": "http://quotes.toscrape.com/author/C-S-Lewis"}, "tag": ["christianity", "faith", "religion", "sun"]}, +{"text": "\u201cThe truth.\" Dumbledore sighed. \"It is a beautiful and terrible thing, and should therefore be treated with great caution.\u201d", "author": {"name": "J.K. Rowling", "url": "http://quotes.toscrape.com/author/J-K-Rowling"}, "tag": ["truth"]}, +{"text": "\u201cI'm the one that's got to die when it's time for me to die, so let me live my life the way I want to.\u201d", "author": {"name": "Jimi Hendrix", "url": "http://quotes.toscrape.com/author/Jimi-Hendrix"}, "tag": ["death", "life"]}, +{"text": "\u201cTo die will be an awfully big adventure.\u201d", "author": {"name": "J.M. Barrie", "url": "http://quotes.toscrape.com/author/J-M-Barrie"}, "tag": ["adventure", "love"]}, +{"text": "\u201cIt takes courage to grow up and become who you really are.\u201d", "author": {"name": "E.E. Cummings", "url": "http://quotes.toscrape.com/author/E-E-Cummings"}, "tag": ["courage"]}, +{"text": "\u201cBut better to get hurt by the truth than comforted with a lie.\u201d", "author": {"name": "Khaled Hosseini", "url": "http://quotes.toscrape.com/author/Khaled-Hosseini"}, "tag": ["life"]}, +{"text": "\u201cYou never really understand a person until you consider things from his point of view... Until you climb inside of his skin and walk around in it.\u201d", "author": {"name": "Harper Lee", "url": "http://quotes.toscrape.com/author/Harper-Lee"}, "tag": ["better-life-empathy"]}, +{"text": "\u201cYou have to write the book that wants to be written. And if the book will be too difficult for grown-ups, then you write it for children.\u201d", "author": {"name": "Madeleine L'Engle", "url": "http://quotes.toscrape.com/author/Madeleine-LEngle"}, "tag": ["books", "children", "difficult", "grown-ups", "write", "writers", "writing"]}, +{"text": "\u201cNever tell the truth to people who are not worthy of it.\u201d", "author": {"name": "Mark Twain", "url": "http://quotes.toscrape.com/author/Mark-Twain"}, "tag": ["truth"]}, +{"text": "\u201cA person's a person, no matter how small.\u201d", "author": {"name": "Dr. Seuss", "url": "http://quotes.toscrape.com/author/Dr-Seuss"}, "tag": ["inspirational"]}, +{"text": "\u201c... a mind needs books as a sword needs a whetstone, if it is to keep its edge.\u201d", "author": {"name": "George R.R. Martin", "url": "http://quotes.toscrape.com/author/George-R-R-Martin"}, "tag": ["books", "mind"]} +] \ No newline at end of file diff --git a/WebCrawler/postscrape/postscrape/__init__.py b/WebCrawler/postscrape/postscrape/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WebCrawler/postscrape/postscrape/__pycache__/__init__.cpython-38.pyc b/WebCrawler/postscrape/postscrape/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49c675bd08cc4a89048d80b38c44df0bee58e47a GIT binary patch literal 158 zcmWIL<>g`kf`m7l<3aRe5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HsvsFxJacWU< zjH#)Sp=FFqYH@Z+enCulYLatNVtGz#QA|O8aY=DPO2Tq@XtWZ005$!CuaZv literal 0 HcmV?d00001 diff --git a/WebCrawler/postscrape/postscrape/__pycache__/items.cpython-38.pyc b/WebCrawler/postscrape/postscrape/__pycache__/items.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..703bb603c9001dd724afca5740206c5a7beddf38 GIT binary patch literal 403 zcmYjM%}T^D5S}#M8rNMP!IPI>1ce?Hk;01NWf5c%N+HC}psTH|Ns8`yeF{(O(O1e* zPriaDlWx%+m~X!M$>f{KaM%ZD%ePOS5P&bAtXt@k)VbbqAVHD>GB^hrNcswrBHWV& z%>qfTAP&FX42-89*DY{K>Rj(SK*)%MEI_&p-y!RDG3w$*yD6~Smz6epszi+!2Fr2G zEaUu9l*qa5b6!@mDLfx={?v$~>qPC7x$T|Ju#h%1_+o4%8go}EOO3ew0JY^*wD6OT zj`E2{rSl{?*gwoqQ9qcf&ad%iq{MT9DzE=!tkap3r1$E%@~3V3(;^3qGQvn(i>dMz Z8+!3=<^S6i8~8RmUfprxhqYhE=r217VFmyI literal 0 HcmV?d00001 diff --git a/WebCrawler/postscrape/postscrape/__pycache__/pipelines.cpython-38.pyc b/WebCrawler/postscrape/postscrape/__pycache__/pipelines.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..353e8d93f234a33595ae8f1c475f317aaa2895e4 GIT binary patch literal 827 zcmZuvL2DE-6n>e>PN&;lDMb%O!CPSu78H80hzKjxi%UU@Fbu@mNvbK?$uyazwydZ2 z;=iy*|AD_H*Lv|Uco5&4UF(28$ji&idtbhM$;UA!r zAen&-4nRgSz5*F5b{S`pWN%=^e_#bnO7dMp)V~M{GA4mKWOM~tEMv)W=CX$fN!U8H zzVW3iYIUe9#chEKPg%Q?uv;cwQ1bJ=4C$?acZv*CH35eXAgmq)f z!hAq{{aFKKcTVTFQNFRuVF=vTt~?Bf2v zV($LwC}XN#8O67%-o*v#h`Kh>f?cv}#$ZA3%O<1PCAb?BUE#e@2C2&ilWUaZx>2)` z_*$cctpZC&-zyAiXG`V1prU)2@pK;WO?L6{KP*C z%q-qb(9mXmRY3#y^+JjD{uaBSBo{TL>!X&aq!OiE32@`TtN2%w#~7h-*wwvplosLj zlxio51E0={Y2;@Un&`cd&i_f;nMGzhNpI338q-_t1Sy>saS+o<5Yprg)wX%!XMB3z zd7gpsl#fQICug}Y;GwBhJ{Nahy?8D~oo}tSA&91tt0lPVMfWZqEB;i9%T0!0;zJg( Lv9)8l1d*?AM&M(z literal 0 HcmV?d00001 diff --git a/WebCrawler/postscrape/postscrape/items.py b/WebCrawler/postscrape/postscrape/items.py new file mode 100644 index 0000000..822144b --- /dev/null +++ b/WebCrawler/postscrape/postscrape/items.py @@ -0,0 +1,14 @@ +# Define here the models for your scraped items +# +# See documentation in: +# https://docs.scrapy.org/en/latest/topics/items.html + +import scrapy + + +class PostscrapeItem(scrapy.Item): + + # define the fields for your item here like: + text = scrapy.Field() + author = scrapy.Field() + tag = scrapy.Field() diff --git a/WebCrawler/postscrape/postscrape/middlewares.py b/WebCrawler/postscrape/postscrape/middlewares.py new file mode 100644 index 0000000..c847ca6 --- /dev/null +++ b/WebCrawler/postscrape/postscrape/middlewares.py @@ -0,0 +1,103 @@ +# Define here the models for your spider middleware +# +# See documentation in: +# https://docs.scrapy.org/en/latest/topics/spider-middleware.html + +from scrapy import signals + +# useful for handling different item types with a single interface +from itemadapter import is_item, ItemAdapter + + +class PostscrapeSpiderMiddleware: + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the spider middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_spider_input(self, response, spider): + # Called for each response that goes through the spider + # middleware and into the spider. + + # Should return None or raise an exception. + return None + + def process_spider_output(self, response, result, spider): + # Called with the results returned from the Spider, after + # it has processed the response. + + # Must return an iterable of Request, or item objects. + for i in result: + yield i + + def process_spider_exception(self, response, exception, spider): + # Called when a spider or process_spider_input() method + # (from other spider middleware) raises an exception. + + # Should return either None or an iterable of Request or item objects. + pass + + def process_start_requests(self, start_requests, spider): + # Called with the start requests of the spider, and works + # similarly to the process_spider_output() method, except + # that it doesn’t have a response associated. + + # Must return only requests (not items). + for r in start_requests: + yield r + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) + + +class PostscrapeDownloaderMiddleware: + # Not all methods need to be defined. If a method is not defined, + # scrapy acts as if the downloader middleware does not modify the + # passed objects. + + @classmethod + def from_crawler(cls, crawler): + # This method is used by Scrapy to create your spiders. + s = cls() + crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) + return s + + def process_request(self, request, spider): + # Called for each request that goes through the downloader + # middleware. + + # Must either: + # - return None: continue processing this request + # - or return a Response object + # - or return a Request object + # - or raise IgnoreRequest: process_exception() methods of + # installed downloader middleware will be called + return None + + def process_response(self, request, response, spider): + # Called with the response returned from the downloader. + + # Must either; + # - return a Response object + # - return a Request object + # - or raise IgnoreRequest + return response + + def process_exception(self, request, exception, spider): + # Called when a download handler or a process_request() + # (from other downloader middleware) raises an exception. + + # Must either: + # - return None: continue processing this exception + # - return a Response object: stops process_exception() chain + # - return a Request object: stops process_exception() chain + pass + + def spider_opened(self, spider): + spider.logger.info('Spider opened: %s' % spider.name) diff --git a/WebCrawler/postscrape/postscrape/pipelines.py b/WebCrawler/postscrape/postscrape/pipelines.py new file mode 100644 index 0000000..db446d6 --- /dev/null +++ b/WebCrawler/postscrape/postscrape/pipelines.py @@ -0,0 +1,20 @@ +# Define your item pipelines here +# +# Don't forget to add your pipeline to the ITEM_PIPELINES setting +# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html +import pymongo + +class PostscrapePipeline(object): + + def __init__(self): + self.conn =pymongo.MongoClient( + 'localhost', + 27017 + ) + db = self.conn['quotestoscrape'] + self.collection = db['alexander_parreira'] + + def process_item(self, item, spider): + + self.collection.insert(dict(item)) + return item diff --git a/WebCrawler/postscrape/postscrape/settings.py b/WebCrawler/postscrape/postscrape/settings.py new file mode 100644 index 0000000..d15b604 --- /dev/null +++ b/WebCrawler/postscrape/postscrape/settings.py @@ -0,0 +1,88 @@ +# Scrapy settings for postscrape project +# +# For simplicity, this file contains only settings considered important or +# commonly used. You can find more settings consulting the documentation: +# +# https://docs.scrapy.org/en/latest/topics/settings.html +# https://docs.scrapy.org/en/latest/topics/downloader-middleware.html +# https://docs.scrapy.org/en/latest/topics/spider-middleware.html + +BOT_NAME = 'postscrape' + +SPIDER_MODULES = ['postscrape.spiders'] +NEWSPIDER_MODULE = 'postscrape.spiders' + + +# Crawl responsibly by identifying yourself (and your website) on the user-agent +#USER_AGENT = 'postscrape (+http://www.yourdomain.com)' + +# Obey robots.txt rules +ROBOTSTXT_OBEY = True + +# Configure maximum concurrent requests performed by Scrapy (default: 16) +#CONCURRENT_REQUESTS = 32 + +# Configure a delay for requests for the same website (default: 0) +# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay +# See also autothrottle settings and docs +#DOWNLOAD_DELAY = 3 +# The download delay setting will honor only one of: +#CONCURRENT_REQUESTS_PER_DOMAIN = 16 +#CONCURRENT_REQUESTS_PER_IP = 16 + +# Disable cookies (enabled by default) +#COOKIES_ENABLED = False + +# Disable Telnet Console (enabled by default) +#TELNETCONSOLE_ENABLED = False + +# Override the default request headers: +#DEFAULT_REQUEST_HEADERS = { +# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +# 'Accept-Language': 'en', +#} + +# Enable or disable spider middlewares +# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html +#SPIDER_MIDDLEWARES = { +# 'postscrape.middlewares.PostscrapeSpiderMiddleware': 543, +#} + +# Enable or disable downloader middlewares +# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html +#DOWNLOADER_MIDDLEWARES = { +# 'postscrape.middlewares.PostscrapeDownloaderMiddleware': 543, +#} + +# Enable or disable extensions +# See https://docs.scrapy.org/en/latest/topics/extensions.html +#EXTENSIONS = { +# 'scrapy.extensions.telnet.TelnetConsole': None, +#} + +# Configure item pipelines +# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html +ITEM_PIPELINES = { + 'postscrape.pipelines.PostscrapePipeline': 300, +} + +# Enable and configure the AutoThrottle extension (disabled by default) +# See https://docs.scrapy.org/en/latest/topics/autothrottle.html +#AUTOTHROTTLE_ENABLED = True +# The initial download delay +#AUTOTHROTTLE_START_DELAY = 5 +# The maximum download delay to be set in case of high latencies +#AUTOTHROTTLE_MAX_DELAY = 60 +# The average number of requests Scrapy should be sending in parallel to +# each remote server +#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 +# Enable showing throttling stats for every response received: +#AUTOTHROTTLE_DEBUG = False + +# Enable and configure HTTP caching (disabled by default) +# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings +#HTTPCACHE_ENABLED = True +#HTTPCACHE_EXPIRATION_SECS = 0 +#HTTPCACHE_DIR = 'httpcache' +#HTTPCACHE_IGNORE_HTTP_CODES = [] +#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' diff --git a/WebCrawler/postscrape/postscrape/spiders/__init__.py b/WebCrawler/postscrape/postscrape/spiders/__init__.py new file mode 100644 index 0000000..ebd689a --- /dev/null +++ b/WebCrawler/postscrape/postscrape/spiders/__init__.py @@ -0,0 +1,4 @@ +# This package will contain the spiders of your Scrapy project +# +# Please refer to the documentation for information on how to create and manage +# your spiders. diff --git a/WebCrawler/postscrape/postscrape/spiders/__pycache__/__init__.cpython-38.pyc b/WebCrawler/postscrape/postscrape/spiders/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25d01a6c95bb304cd7efc65203bad28f95995212 GIT binary patch literal 166 zcmWIL<>g`kf`m7l;}-(y#~=CE(>mKH%liYHfai$V`BMG7s5mnzgM3@byrNw?db*_kF;YnRzm zd-WSAv>pV%iJu`yd+Jy4QeQHwtOqmXCBI)Dzr6SIW^aBzMlgPS`I%l(gsv=@9>AeZ znCcN2jyTRxf;iz`hI5h-j9ws4xqpthFVK;9<|UNlUDOD!!5{5h6R-_z7G4)htBz!) zc&SC+v4_*cx^2Q#_rVC1V2%>PapG~(#USZ%dX5sG`&Qb_zUk>q?3O()WD;l#)ac%! z)@5sL?RZ#dp_;m=uWNRSe63^k{|uY3P0I$MzJbx`42?;JFEGcKc+R-gbtg4)4 z*@Rhg3~RNR*7D(@6bFsbvQ^Nmt5%s^YEMI*!rlK@ut5wRuv{2#C^HkVp*}36@jzj; zlJ%Mc2w?S}i{Q<}4urDLI{iiRD3SO*Ee0xyA?mb#XXCq7`k*L7D@(K9pf4lXCXo#!Em>E5M{*gMU$3@W?L8%= zYOk+9ee$fmEmU6@W&54j-;(Sk6S7_YZO!Sea^0nB>T!*l<*8f*Rog-80T@IA5|a=w z)F12!4sL*fZvlsRiH>eh^=i|lxdR;>rl~DwnwmIG^MVgEyPr$b;~~rH6B&TMiIrwj zr%-j}u69{XnH6x7wwvu#wjLp-gxpZ-*oJQc_aB@ZTgqJ3FA>!Lj&qq3vlWw8(S#dy OP|vZIwb~(`BfkN_G#>E) literal 0 HcmV?d00001 diff --git a/WebCrawler/postscrape/postscrape/spiders/__pycache__/queries.cpython-38.pyc b/WebCrawler/postscrape/postscrape/spiders/__pycache__/queries.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f0cd181f373cc67bfa6093432ff0666e053158a9 GIT binary patch literal 165 zcmWIL<>g`k0;Y<`@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6wu*(xTqIJKxa z#?;iv&@#p)wK%&ZzaS<&HOaXsu{=19.2.0) +Requires-Dist: six +Provides-Extra: visualize +Requires-Dist: graphviz (>0.5.1); extra == 'visualize' +Requires-Dist: Twisted (>=16.1.1); extra == 'visualize' + + +Automat +======= + + +.. image:: https://readthedocs.org/projects/automat/badge/?version=latest + :target: http://automat.readthedocs.io/en/latest/ + :alt: Documentation Status + + +.. image:: https://travis-ci.org/glyph/automat.svg?branch=master + :target: https://travis-ci.org/glyph/automat + :alt: Build Status + + +.. image:: https://coveralls.io/repos/glyph/automat/badge.png + :target: https://coveralls.io/r/glyph/automat + :alt: Coverage Status + + +Self-service finite-state machines for the programmer on the go. +---------------------------------------------------------------- + +Automat is a library for concise, idiomatic Python expression of finite-state +automata (particularly deterministic finite-state transducers). + +Read more here, or on `Read the Docs `_\ , or watch the following videos for an overview and presentation + +Overview and presentation by **Glyph Lefkowitz** at the first talk of the first Pyninsula meetup, on February 21st, 2017: + +.. image:: https://img.youtube.com/vi/0wOZBpD1VVk/0.jpg + :target: https://www.youtube.com/watch?v=0wOZBpD1VVk + :alt: Glyph Lefkowitz - Automat - Pyninsula #0 + + +Presentation by **Clinton Roy** at PyCon Australia, on August 6th 2017: + +.. image:: https://img.youtube.com/vi/TedUKXhu9kE/0.jpg + :target: https://www.youtube.com/watch?v=TedUKXhu9kE + :alt: Clinton Roy - State Machines - Pycon Australia 2017 + + +Why use state machines? +^^^^^^^^^^^^^^^^^^^^^^^ + +Sometimes you have to create an object whose behavior varies with its state, +but still wishes to present a consistent interface to its callers. + +For example, let's say you're writing the software for a coffee machine. It +has a lid that can be opened or closed, a chamber for water, a chamber for +coffee beans, and a button for "brew". + +There are a number of possible states for the coffee machine. It might or +might not have water. It might or might not have beans. The lid might be open +or closed. The "brew" button should only actually attempt to brew coffee in +one of these configurations, and the "open lid" button should only work if the +coffee is not, in fact, brewing. + +With diligence and attention to detail, you can implement this correctly using +a collection of attributes on an object; ``has_water``\ , ``has_beans``\ , +``is_lid_open`` and so on. However, you have to keep all these attributes +consistent. As the coffee maker becomes more complex - perhaps you add an +additional chamber for flavorings so you can make hazelnut coffee, for +example - you have to keep adding more and more checks and more and more +reasoning about which combinations of states are allowed. + +Rather than adding tedious 'if' checks to every single method to make sure that +each of these flags are exactly what you expect, you can use a state machine to +ensure that if your code runs at all, it will be run with all the required +values initialized, because they have to be called in the order you declare +them. + +You can read about state machines and their advantages for Python programmers +in considerably more detail +`in this excellent series of articles from ClusterHQ `_. + +What makes Automat different? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are +`dozens of libraries on PyPI implementing state machines `_. +So it behooves me to say why yet another one would be a good idea. + +Automat is designed around this principle: while organizing your code around +state machines is a good idea, your callers don't, and shouldn't have to, care +that you've done so. In Python, the "input" to a stateful system is a method +call; the "output" may be a method call, if you need to invoke a side effect, +or a return value, if you are just performing a computation in memory. Most +other state-machine libraries require you to explicitly create an input object, +provide that object to a generic "input" method, and then receive results, +sometimes in terms of that library's interfaces and sometimes in terms of +classes you define yourself. + +For example, a snippet of the coffee-machine example above might be implemented +as follows in naive Python: + +.. code-block:: python + + class CoffeeMachine(object): + def brew_button(self): + if self.has_water and self.has_beans and not self.is_lid_open: + self.heat_the_heating_element() + # ... + +With Automat, you'd create a class with a ``MethodicalMachine`` attribute: + +.. code-block:: python + + from automat import MethodicalMachine + + class CoffeeBrewer(object): + _machine = MethodicalMachine() + +and then you would break the above logic into two pieces - the ``brew_button`` +*input*\ , declared like so: + +.. code-block:: python + + @_machine.input() + def brew_button(self): + "The user pressed the 'brew' button." + +It wouldn't do any good to declare a method *body* on this, however, because +input methods don't actually execute their bodies when called; doing actual +work is the *output*\ 's job: + +.. code-block:: python + + @_machine.output() + def _heat_the_heating_element(self): + "Heat up the heating element, which should cause coffee to happen." + self._heating_element.turn_on() + +As well as a couple of *states* - and for simplicity's sake let's say that the +only two states are ``have_beans`` and ``dont_have_beans``\ : + +.. code-block:: python + + @_machine.state() + def have_beans(self): + "In this state, you have some beans." + @_machine.state(initial=True) + def dont_have_beans(self): + "In this state, you don't have any beans." + +``dont_have_beans`` is the ``initial`` state because ``CoffeeBrewer`` starts without beans +in it. + +(And another input to put some beans in:) + +.. code-block:: python + + @_machine.input() + def put_in_beans(self): + "The user put in some beans." + +Finally, you hook everything together with the ``upon`` method of the functions +decorated with ``_machine.state``\ : + +.. code-block:: python + + + # When we don't have beans, upon putting in beans, we will then have beans + # (and produce no output) + dont_have_beans.upon(put_in_beans, enter=have_beans, outputs=[]) + + # When we have beans, upon pressing the brew button, we will then not have + # beans any more (as they have been entered into the brewing chamber) and + # our output will be heating the heating element. + have_beans.upon(brew_button, enter=dont_have_beans, + outputs=[_heat_the_heating_element]) + +To *users* of this coffee machine class though, it still looks like a POPO +(Plain Old Python Object): + +.. code-block:: python + + >>> coffee_machine = CoffeeMachine() + >>> coffee_machine.put_in_beans() + >>> coffee_machine.brew_button() + +All of the *inputs* are provided by calling them like methods, all of the +*outputs* are automatically invoked when they are produced according to the +outputs specified to ``upon`` and all of the states are simply opaque tokens - +although the fact that they're defined as methods like inputs and outputs +allows you to put docstrings on them easily to document them. + +How do I get the current state of a state machine? +-------------------------------------------------- + +Don't do that. + +One major reason for having a state machine is that you want the callers of the +state machine to just provide the appropriate input to the machine at the +appropriate time, and *not have to check themselves* what state the machine is +in. So if you are tempted to write some code like this: + +.. code-block:: python + + if connection_state_machine.state == "CONNECTED": + connection_state_machine.send_message() + else: + print("not connected") + +Instead, just make your calling code do this: + +.. code-block:: python + + connection_state_machine.send_message() + +and then change your state machine to look like this: + +.. code-block:: python + + @_machine.state() + def connected(self): + "connected" + @_machine.state() + def not_connected(self): + "not connected" + @_machine.input() + def send_message(self): + "send a message" + @_machine.output() + def _actually_send_message(self): + self._transport.send(b"message") + @_machine.output() + def _report_sending_failure(self): + print("not connected") + connected.upon(send_message, enter=connected, [_actually_send_message]) + not_connected.upon(send_message, enter=not_connected, [_report_sending_failure]) + +so that the responsibility for knowing which state the state machine is in +remains within the state machine itself. + +Input for Inputs and Output for Outputs +--------------------------------------- + +Quite often you want to be able to pass parameters to your methods, as well as +inspecting their results. For example, when you brew the coffee, you might +expect a cup of coffee to result, and you would like to see what kind of coffee +it is. And if you were to put delicious hand-roasted small-batch artisanal +beans into the machine, you would expect a *better* cup of coffee than if you +were to use mass-produced beans. You would do this in plain old Python by +adding a parameter, so that's how you do it in Automat as well. + +.. code-block:: python + + @_machine.input() + def put_in_beans(self, beans): + "The user put in some beans." + +However, one important difference here is that *we can't add any +implementation code to the input method*. Inputs are purely a declaration of +the interface; the behavior must all come from outputs. Therefore, the change +in the state of the coffee machine must be represented as an output. We can +add an output method like this: + +.. code-block:: python + + @_machine.output() + def _save_beans(self, beans): + "The beans are now in the machine; save them." + self._beans = beans + +and then connect it to the ``put_in_beans`` by changing the transition from +``dont_have_beans`` to ``have_beans`` like so: + +.. code-block:: python + + dont_have_beans.upon(put_in_beans, enter=have_beans, + outputs=[_save_beans]) + +Now, when you call: + +.. code-block:: python + + coffee_machine.put_in_beans("real good beans") + +the machine will remember the beans for later. + +So how do we get the beans back out again? One of our outputs needs to have a +return value. It would make sense if our ``brew_button`` method returned the cup +of coffee that it made, so we should add an output. So, in addition to heating +the heating element, let's add a return value that describes the coffee. First +a new output: + +.. code-block:: python + + @_machine.output() + def _describe_coffee(self): + return "A cup of coffee made with {}.".format(self._beans) + +Note that we don't need to check first whether ``self._beans`` exists or not, +because we can only reach this output method if the state machine says we've +gone through a set of states that sets this attribute. + +Now, we need to hook up ``_describe_coffee`` to the process of brewing, so change +the brewing transition to: + +.. code-block:: python + + have_beans.upon(brew_button, enter=dont_have_beans, + outputs=[_heat_the_heating_element, + _describe_coffee]) + +Now, we can call it: + +.. code-block:: python + + >>> coffee_machine.brew_button() + [None, 'A cup of coffee made with real good beans.'] + +Except... wait a second, what's that ``None`` doing there? + +Since every input can produce multiple outputs, in automat, the default return +value from every input invocation is a ``list``. In this case, we have both +``_heat_the_heating_element`` and ``_describe_coffee`` outputs, so we're seeing +both of their return values. However, this can be customized, with the +``collector`` argument to ``upon``\ ; the ``collector`` is a callable which takes an +iterable of all the outputs' return values and "collects" a single return value +to return to the caller of the state machine. + +In this case, we only care about the last output, so we can adjust the call to +``upon`` like this: + +.. code-block:: python + + have_beans.upon(brew_button, enter=dont_have_beans, + outputs=[_heat_the_heating_element, + _describe_coffee], + collector=lambda iterable: list(iterable)[-1] + ) + +And now, we'll get just the return value we want: + +.. code-block:: python + + >>> coffee_machine.brew_button() + 'A cup of coffee made with real good beans.' + +If I can't get the state of the state machine, how can I save it to (a database, an API response, a file on disk...) +-------------------------------------------------------------------------------------------------------------------- + +There are APIs for serializing the state machine. + +First, you have to decide on a persistent representation of each state, via the +``serialized=`` argument to the ``MethodicalMachine.state()`` decorator. + +Let's take this very simple "light switch" state machine, which can be on or +off, and flipped to reverse its state: + +.. code-block:: python + + class LightSwitch(object): + _machine = MethodicalMachine() + @_machine.state(serialized="on") + def on_state(self): + "the switch is on" + @_machine.state(serialized="off", initial=True) + def off_state(self): + "the switch is off" + @_machine.input() + def flip(self): + "flip the switch" + on_state.upon(flip, enter=off_state, outputs=[]) + off_state.upon(flip, enter=on_state, outputs=[]) + +In this case, we've chosen a serialized representation for each state via the +``serialized`` argument. The on state is represented by the string ``"on"``\ , and +the off state is represented by the string ``"off"``. + +Now, let's just add an input that lets us tell if the switch is on or not. + +.. code-block:: python + + @_machine.input() + def query_power(self): + "return True if powered, False otherwise" + @_machine.output() + def _is_powered(self): + return True + @_machine.output() + def _not_powered(self): + return False + on_state.upon(query_power, enter=on_state, outputs=[_is_powered], + collector=next) + off_state.upon(query_power, enter=off_state, outputs=[_not_powered], + collector=next) + +To save the state, we have the ``MethodicalMachine.serializer()`` method. A +method decorated with ``@serializer()`` gets an extra argument injected at the +beginning of its argument list: the serialized identifier for the state. In +this case, either ``"on"`` or ``"off"``. Since state machine output methods can +also affect other state on the object, a serializer method is expected to +return *all* relevant state for serialization. + +For our simple light switch, such a method might look like this: + +.. code-block:: python + + @_machine.serializer() + def save(self, state): + return {"is-it-on": state} + +Serializers can be public methods, and they can return whatever you like. If +necessary, you can have different serializers - just multiple methods decorated +with ``@_machine.serializer()`` - for different formats; return one data-structure +for JSON, one for XML, one for a database row, and so on. + +When it comes time to unserialize, though, you generally want a private method, +because an unserializer has to take a not-fully-initialized instance and +populate it with state. It is expected to *return* the serialized machine +state token that was passed to the serializer, but it can take whatever +arguments you like. Of course, in order to return that, it probably has to +take it somewhere in its arguments, so it will generally take whatever a paired +serializer has returned as an argument. + +So our unserializer would look like this: + +.. code-block:: python + + @_machine.unserializer() + def _restore(self, blob): + return blob["is-it-on"] + +Generally you will want a classmethod deserialization constructor which you +write yourself to call this, so that you know how to create an instance of your +own object, like so: + +.. code-block:: python + + @classmethod + def from_blob(cls, blob): + self = cls() + self._restore(blob) + return self + +Saving and loading our ``LightSwitch`` along with its state-machine state can now +be accomplished as follows: + +.. code-block:: python + + >>> switch1 = LightSwitch() + >>> switch1.query_power() + False + >>> switch1.flip() + [] + >>> switch1.query_power() + True + >>> blob = switch1.save() + >>> switch2 = LightSwitch.from_blob(blob) + >>> switch2.query_power() + True + +More comprehensive (tested, working) examples are present in ``docs/examples``. + +Go forth and machine all the state! + + diff --git a/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/RECORD b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/RECORD new file mode 100644 index 0000000..9fbad8d --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/RECORD @@ -0,0 +1,32 @@ +../../Scripts/automat-visualize.exe,sha256=XoDTH-TEcSL4RPmf50yCIuDk1Pq8BYAHi8NTPZDgj54,106364 +Automat-20.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Automat-20.2.0.dist-info/LICENSE,sha256=siATAWeNCpN9k4VDgnyhNgcS6zTiPejuPzv_-9TA43Y,1053 +Automat-20.2.0.dist-info/METADATA,sha256=RlZub3EgNMk1YDCNYTDJ80ksrBRzPjgzVnYsLrS44nU,17919 +Automat-20.2.0.dist-info/RECORD,, +Automat-20.2.0.dist-info/WHEEL,sha256=CihQvCnsGZQBGAHLEUMf0IdA4fRduS_NBUTMgCTtvPM,110 +Automat-20.2.0.dist-info/entry_points.txt,sha256=i4tDM5qwy3v1KIN7ETS2XRVcHkThhkq7ZFTPuyP6BpA,63 +Automat-20.2.0.dist-info/top_level.txt,sha256=vg4zAOyhP_3YCmpKZLNgFw1uMF3lC_b6TKsdz7jBSpI,8 +automat/__init__.py,sha256=ec8PILBwt35xyzsstU9kx8p5ADi6KX9d1rBLZsocN_Y,169 +automat/__pycache__/__init__.cpython-39.pyc,, +automat/__pycache__/_core.cpython-39.pyc,, +automat/__pycache__/_discover.cpython-39.pyc,, +automat/__pycache__/_introspection.cpython-39.pyc,, +automat/__pycache__/_methodical.cpython-39.pyc,, +automat/__pycache__/_visualize.cpython-39.pyc,, +automat/_core.py,sha256=IEtZHq3wsBZPX_VfMHMFy_uNjx1kfE11Qq-nmIXZe28,4819 +automat/_discover.py,sha256=ye7NHLZkrwYsPmBpTIyJuJ-VRCmwkOUpA0is-A81z04,4367 +automat/_introspection.py,sha256=i5UEGdj8lp2BnHnGeAyIwEyoN2gU1nXYg-ZPNX7oBbM,1274 +automat/_methodical.py,sha256=tvIQLMzMM1d6h_jUCQOM9zPJoGYYQZg0J5IkRszgjB0,15930 +automat/_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +automat/_test/__pycache__/__init__.cpython-39.pyc,, +automat/_test/__pycache__/test_core.cpython-39.pyc,, +automat/_test/__pycache__/test_discover.cpython-39.pyc,, +automat/_test/__pycache__/test_methodical.cpython-39.pyc,, +automat/_test/__pycache__/test_trace.cpython-39.pyc,, +automat/_test/__pycache__/test_visualize.cpython-39.pyc,, +automat/_test/test_core.py,sha256=CDmGBQNi9Pr7ZktfBcOhBvwI7wjLLYRtWZ0P5baXONY,2833 +automat/_test/test_discover.py,sha256=O9ndAdRAC8uO0uDhioz3e45EsJCF19jQZESj0RBC7ZM,21846 +automat/_test/test_methodical.py,sha256=t1CAKtT1fs-FoKMQxXl4ky6_6pgpG7lGDbyQrb_vIeo,18856 +automat/_test/test_trace.py,sha256=Mx1B8QgaE7QFk6blTie2j-Vx95hTV-zySnlxLalt8ek,3279 +automat/_test/test_visualize.py,sha256=8ErNYxovTiDyZkYkoP1BcyEazU_s0YQ3NHdfH9OihAg,13744 +automat/_visualize.py,sha256=jY8HkzaGdMoXB7LavvaneW4GdtBN6PRShl7-4OXDvss,6335 diff --git a/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/WHEEL b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/WHEEL new file mode 100644 index 0000000..dea0e20 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.32.2) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/entry_points.txt b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/entry_points.txt new file mode 100644 index 0000000..d793199 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +automat-visualize = automat._visualize:tool + diff --git a/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/top_level.txt b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..b69387b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/Automat-20.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +automat diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/INSTALLER b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/LICENSE.txt b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..fe93ce1 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/LICENSE.txt @@ -0,0 +1,27 @@ +BSD License + +Copyright 2020 hamcrest.org +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of +conditions and the following disclaimer. Redistributions in binary form must reproduce +the above copyright notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the distribution. + +Neither the name of Hamcrest nor the names of its contributors may be used to endorse +or promote products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/METADATA b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/METADATA new file mode 100644 index 0000000..78c096b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/METADATA @@ -0,0 +1,387 @@ +Metadata-Version: 2.1 +Name: PyHamcrest +Version: 2.0.2 +Summary: Hamcrest framework for matcher objects +Home-page: https://github.com/hamcrest/PyHamcrest +Author: Chris Rose +Author-email: offline@offby1.net +License: New BSD +Download-URL: http://pypi.python.org/packages/source/P/PyHamcrest/PyHamcrest-2.0.2.tar.gz +Keywords: hamcrest matchers pyunit unit test testing unittest unittesting +Platform: All +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Natural Language :: English +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: Jython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Quality Assurance +Classifier: Topic :: Software Development :: Testing +Provides: hamcrest +Requires-Python: >=3.5 + +PyHamcrest +========== + +| |docs| |travis| |coveralls| |landscape| |scrutinizer| +| |version| |downloads| |wheel| |supported-versions| |supported-implementations| +| |GitHub forks| |GitHub stars| |GitHub watchers| |GitHub contributors| |Lines of Code| +| |GitHub issues| |GitHub issues-closed| |GitHub pull-requests| |GitHub pull-requests closed| + +.. |docs| image:: https://readthedocs.org/projects/pyhamcrest/badge/ + :target: https://pyhamcrest.readthedocs.org/ + :alt: Documentation Status + +.. |travis| image:: http://img.shields.io/travis/hamcrest/PyHamcrest/master.svg + :alt: Travis-CI Build Status + :target: https://travis-ci.org/hamcrest/PyHamcrest + +.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/hamcrest/PyHamcrest?branch=master&svg=true + :alt: AppVeyor Build Status + :target: https://ci.appveyor.com/project/hamcrest/PyHamcrest + +.. |coveralls| image:: http://img.shields.io/coveralls/hamcrest/PyHamcrest/master.svg?style=flat + :alt: Coverage Status + :target: https://coveralls.io/r/hamcrest/PyHamcrest + +.. |landscape| image:: https://landscape.io/github/hamcrest/PyHamcrest/master/landscape.svg?style=flat + :target: https://landscape.io/github/hamcrest/PyHamcrest/master + :alt: Code Quality Status + +.. |version| image:: http://img.shields.io/pypi/v/PyHamcrest.svg?style=flat + :alt: PyPI Package latest release + :target: https://pypi.python.org/pypi/PyHamcrest + +.. |downloads| image:: http://img.shields.io/pypi/dm/PyHamcrest.svg?style=flat + :alt: PyPI Package monthly downloads + :target: https://pypi.python.org/pypi/PyHamcrest + +.. |wheel| image:: https://pypip.in/wheel/PyHamcrest/badge.svg?style=flat + :alt: PyPI Wheel + :target: https://pypi.python.org/pypi/PyHamcrest + +.. |supported-versions| image:: https://pypip.in/py_versions/PyHamcrest/badge.svg?style=flat + :alt: Supported versions + :target: https://pypi.python.org/pypi/PyHamcrest + +.. |GitHub forks| image:: https://img.shields.io/github/forks/hamcrest/PyHamcrest.svg?label=Fork&logo=github + :alt: GitHub forks + :target: https://github.com/hamcrest/PyHamcrest/network/members + +.. |GitHub stars| image:: https://img.shields.io/github/stars/hamcrest/PyHamcrest.svg?label=Star&logo=github + :alt: GitHub stars + :target: https://github.com/hamcrest/PyHamcrest/stargazers/ + +.. |GitHub watchers| image:: https://img.shields.io/github/watchers/hamcrest/PyHamcrest.svg?label=Watch&logo=github + :alt: GitHub watchers + :target: https://github.com/hamcrest/PyHamcrest/watchers/ + +.. |GitHub contributors| image:: https://img.shields.io/github/contributors/hamcrest/PyHamcrest.svg?logo=github + :alt: GitHub contributors + :target: https://github.com/hamcrest/PyHamcrest/graphs/contributors/ + +.. |GitHub issues| image:: https://img.shields.io/github/issues/hamcrest/PyHamcrest.svg?logo=github + :alt: GitHub issues + :target: https://github.com/hamcrest/PyHamcrest/issues/ + +.. |GitHub issues-closed| image:: https://img.shields.io/github/issues-closed/hamcrest/PyHamcrest.svg?logo=github + :alt: GitHub issues-closed + :target: https://github.com/hamcrest/PyHamcrest/issues?q=is%3Aissue+is%3Aclosed + +.. |GitHub pull-requests| image:: https://img.shields.io/github/issues-pr/hamcrest/PyHamcrest.svg?logo=github + :alt: GitHub pull-requests + :target: https://github.com/hamcrest/PyHamcrest/pulls + +.. |GitHub pull-requests closed| image:: https://img.shields.io/github/issues-pr-closed/hamcrest/PyHamcrest.svg?logo=github + :alt: GitHub pull-requests closed + :target: https://github.com/hamcrest/PyHamcrest/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aclosed + +.. |Lines of Code| image:: https://tokei.rs/b1/github/hamcrest/PyHamcrest + :alt: Lines of Code + :target: https://github.com/hamcrest/PyHamcrest + +.. |supported-implementations| image:: https://pypip.in/implementation/PyHamcrest/badge.svg?style=flat + :alt: Supported implementations + :target: https://pypi.python.org/pypi/PyHamcrest + +.. |scrutinizer| image:: https://img.shields.io/scrutinizer/g/hamcrest/PyHamcrest/master.svg?style=flat + :alt: Scrtinizer Status + :target: https://scrutinizer-ci.com/g/hamcrest/PyHamcrest/ + + +Introduction +============ + +PyHamcrest is a framework for writing matcher objects, allowing you to +declaratively define "match" rules. There are a number of situations where +matchers are invaluable, such as UI validation, or data filtering, but it is in +the area of writing flexible tests that matchers are most commonly used. This +tutorial shows you how to use PyHamcrest for unit testing. + +When writing tests it is sometimes difficult to get the balance right between +overspecifying the test (and making it brittle to changes), and not specifying +enough (making the test less valuable since it continues to pass even when the +thing being tested is broken). Having a tool that allows you to pick out +precisely the aspect under test and describe the values it should have, to a +controlled level of precision, helps greatly in writing tests that are "just +right." Such tests fail when the behavior of the aspect under test deviates +from the expected behavior, yet continue to pass when minor, unrelated changes +to the behaviour are made. + +Installation +============ + +Hamcrest can be installed using the usual Python packaging tools. It depends on +distribute, but as long as you have a network connection when you install, the +installation process will take care of that for you. + +My first PyHamcrest test +======================== + +We'll start by writing a very simple PyUnit test, but instead of using PyUnit's +``assertEqual`` method, we'll use PyHamcrest's ``assert_that`` construct and +the standard set of matchers: + +.. code:: python + + from hamcrest import * + import unittest + + class BiscuitTest(unittest.TestCase): + def testEquals(self): + theBiscuit = Biscuit('Ginger') + myBiscuit = Biscuit('Ginger') + assert_that(theBiscuit, equal_to(myBiscuit)) + + if __name__ == '__main__': + unittest.main() + +The ``assert_that`` function is a stylized sentence for making a test +assertion. In this example, the subject of the assertion is the object +``theBiscuit``, which is the first method parameter. The second method +parameter is a matcher for ``Biscuit`` objects, here a matcher that checks one +object is equal to another using the Python ``==`` operator. The test passes +since the ``Biscuit`` class defines an ``__eq__`` method. + +If you have more than one assertion in your test you can include an identifier +for the tested value in the assertion: + +.. code:: python + + assert_that(theBiscuit.getChocolateChipCount(), equal_to(10), 'chocolate chips') + assert_that(theBiscuit.getHazelnutCount(), equal_to(3), 'hazelnuts') + +As a convenience, assert_that can also be used to verify a boolean condition: + +.. code:: python + + assert_that(theBiscuit.isCooked(), 'cooked') + +This is equivalent to the ``assert_`` method of unittest.TestCase, but because +it's a standalone function, it offers greater flexibility in test writing. + + +Predefined matchers +=================== + +PyHamcrest comes with a library of useful matchers: + +* Object + + * ``equal_to`` - match equal object + * ``has_length`` - match ``len()`` + * ``has_property`` - match value of property with given name + * ``has_properties`` - match an object that has all of the given properties. + * ``has_string`` - match ``str()`` + * ``instance_of`` - match object type + * ``none``, ``not_none`` - match ``None``, or not ``None`` + * ``same_instance`` - match same object + * ``calling, raises`` - wrap a method call and assert that it raises an exception + +* Number + + * ``close_to`` - match number close to a given value + * ``greater_than``, ``greater_than_or_equal_to``, ``less_than``, + ``less_than_or_equal_to`` - match numeric ordering + +* Text + + * ``contains_string`` - match part of a string + * ``ends_with`` - match the end of a string + * ``equal_to_ignoring_case`` - match the complete string but ignore case + * ``equal_to_ignoring_whitespace`` - match the complete string but ignore extra whitespace + * ``matches_regexp`` - match a regular expression in a string + * ``starts_with`` - match the beginning of a string + * ``string_contains_in_order`` - match parts of a string, in relative order + +* Logical + + * ``all_of`` - ``and`` together all matchers + * ``any_of`` - ``or`` together all matchers + * ``anything`` - match anything, useful in composite matchers when you don't care about a particular value + * ``is_not``, ``not_`` - negate the matcher + +* Sequence + + * ``contains`` - exactly match the entire sequence + * ``contains_inanyorder`` - match the entire sequence, but in any order + * ``has_item`` - match if given item appears in the sequence + * ``has_items`` - match if all given items appear in the sequence, in any order + * ``is_in`` - match if item appears in the given sequence + * ``only_contains`` - match if sequence's items appear in given list + * ``empty`` - match if the sequence is empty + +* Dictionary + + * ``has_entries`` - match dictionary with list of key-value pairs + * ``has_entry`` - match dictionary containing a key-value pair + * ``has_key`` - match dictionary with a key + * ``has_value`` - match dictionary with a value + +* Decorator + + * ``calling`` - wrap a callable in a deferred object, for subsequent matching on calling behaviour + * ``raises`` - Ensure that a deferred callable raises as expected + * ``described_as`` - give the matcher a custom failure description + * ``is_`` - decorator to improve readability - see `Syntactic sugar` below + +The arguments for many of these matchers accept not just a matching value, but +another matcher, so matchers can be composed for greater flexibility. For +example, ``only_contains(less_than(5))`` will match any sequence where every +item is less than 5. + + +Syntactic sugar +=============== + +PyHamcrest strives to make your tests as readable as possible. For example, the +``is_`` matcher is a wrapper that doesn't add any extra behavior to the +underlying matcher. The following assertions are all equivalent: + +.. code:: python + + assert_that(theBiscuit, equal_to(myBiscuit)) + assert_that(theBiscuit, is_(equal_to(myBiscuit))) + assert_that(theBiscuit, is_(myBiscuit)) + +The last form is allowed since ``is_(value)`` wraps most non-matcher arguments +with ``equal_to``. But if the argument is a type, it is wrapped with +``instance_of``, so the following are also equivalent: + +.. code:: python + + assert_that(theBiscuit, instance_of(Biscuit)) + assert_that(theBiscuit, is_(instance_of(Biscuit))) + assert_that(theBiscuit, is_(Biscuit)) + +*Note that PyHamcrest's ``is_`` matcher is unrelated to Python's ``is`` +operator. The matcher for object identity is ``same_instance``.* + + +Writing custom matchers +======================= + +PyHamcrest comes bundled with lots of useful matchers, but you'll probably find +that you need to create your own from time to time to fit your testing needs. +This commonly occurs when you find a fragment of code that tests the same set +of properties over and over again (and in different tests), and you want to +bundle the fragment into a single assertion. By writing your own matcher you'll +eliminate code duplication and make your tests more readable! + +Let's write our own matcher for testing if a calendar date falls on a Saturday. +This is the test we want to write: + +.. code:: python + + def testDateIsOnASaturday(self): + d = datetime.date(2008, 4, 26) + assert_that(d, is_(on_a_saturday())) + +And here's the implementation: + +.. code:: python + + from hamcrest.core.base_matcher import BaseMatcher + from hamcrest.core.helpers.hasmethod import hasmethod + + class IsGivenDayOfWeek(BaseMatcher): + + def __init__(self, day): + self.day = day # Monday is 0, Sunday is 6 + + def _matches(self, item): + if not hasmethod(item, 'weekday'): + return False + return item.weekday() == self.day + + def describe_to(self, description): + day_as_string = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', + 'Friday', 'Saturday', 'Sunday'] + description.append_text('calendar date falling on ') \ + .append_text(day_as_string[self.day]) + + def on_a_saturday(): + return IsGivenDayOfWeek(5) + +For our Matcher implementation we implement the ``_matches`` method - which +calls the ``weekday`` method after confirming that the argument (which may not +be a date) has such a method - and the ``describe_to`` method - which is used +to produce a failure message when a test fails. Here's an example of how the +failure message looks: + +.. code:: python + + assert_that(datetime.date(2008, 4, 6), is_(on_a_saturday())) + +fails with the message:: + + AssertionError: + Expected: is calendar date falling on Saturday + got: <2008-04-06> + +Let's say this matcher is saved in a module named ``isgivendayofweek``. We +could use it in our test by importing the factory function ``on_a_saturday``: + +.. code:: python + + from hamcrest import * + import unittest + from isgivendayofweek import on_a_saturday + + class DateTest(unittest.TestCase): + def testDateIsOnASaturday(self): + d = datetime.date(2008, 4, 26) + assert_that(d, is_(on_a_saturday())) + + if __name__ == '__main__': + unittest.main() + +Even though the ``on_a_saturday`` function creates a new matcher each time it +is called, you should not assume this is the only usage pattern for your +matcher. Therefore you should make sure your matcher is stateless, so a single +instance can be reused between matches. + + +More resources +============== + +* Documentation_ +* Package_ +* Sources_ +* Hamcrest_ + +.. _Documentation: https://pyhamcrest.readthedocs.io/ +.. _Package: http://pypi.python.org/pypi/PyHamcrest +.. _Sources: https://github.com/hamcrest/PyHamcrest +.. _Hamcrest: http://hamcrest.org + + diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/RECORD b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/RECORD new file mode 100644 index 0000000..87672b5 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/RECORD @@ -0,0 +1,121 @@ +PyHamcrest-2.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +PyHamcrest-2.0.2.dist-info/LICENSE.txt,sha256=cb6ubIFRNiz-OYy9NQGRocxS09KEmYOaeDCyX1tQp_4,1468 +PyHamcrest-2.0.2.dist-info/METADATA,sha256=k9y1PGwfQq3-ZJn474IeQlLuMRBb_hfIj0AFl-DGLuU,15119 +PyHamcrest-2.0.2.dist-info/RECORD,, +PyHamcrest-2.0.2.dist-info/WHEEL,sha256=p46_5Uhzqz6AzeSosiOnxK-zmFja1i22CrQCjmYe8ec,92 +PyHamcrest-2.0.2.dist-info/top_level.txt,sha256=mRc0yPsPQSqFgWBmZBY33u-05Xtm5M4GEve4NjYdloQ,9 +hamcrest/__init__.py,sha256=Lf-BH79Mv0XxQxRQvj7jRj_kJbPmsx3muGbKDYP9QjQ,191 +hamcrest/__pycache__/__init__.cpython-39.pyc,, +hamcrest/core/__init__.py,sha256=VORMnjgpr_f_DAU2DWjMWbN7-TwApOiJYNi2tV1Zpqs,191 +hamcrest/core/__pycache__/__init__.cpython-39.pyc,, +hamcrest/core/__pycache__/assert_that.cpython-39.pyc,, +hamcrest/core/__pycache__/base_description.cpython-39.pyc,, +hamcrest/core/__pycache__/base_matcher.cpython-39.pyc,, +hamcrest/core/__pycache__/compat.cpython-39.pyc,, +hamcrest/core/__pycache__/description.cpython-39.pyc,, +hamcrest/core/__pycache__/matcher.cpython-39.pyc,, +hamcrest/core/__pycache__/selfdescribing.cpython-39.pyc,, +hamcrest/core/__pycache__/selfdescribingvalue.cpython-39.pyc,, +hamcrest/core/__pycache__/string_description.cpython-39.pyc,, +hamcrest/core/assert_that.py,sha256=jiUoGNNssb94k1euhU3AxCoDxWRYcZegH1IZeKnS81o,2821 +hamcrest/core/base_description.py,sha256=5uJ4GiJWEqFR1SD32zHAk2vUd0UO_4StVnmZ48hmot4,2028 +hamcrest/core/base_matcher.py,sha256=N6P0Z8Qx3uo8NmrjtOLH2xaS9CEMvf_QQKjnHIyiSXU,1495 +hamcrest/core/compat.py,sha256=wUi1u_nIhgUA3kFGJDZLQ2D_cRw79E1SxPDMaI4mzG0,642 +hamcrest/core/core/__init__.py,sha256=xg5Q2ugy7LsKqgx89utyUbvWGRq0N2ouEggu5njJK10,731 +hamcrest/core/core/__pycache__/__init__.cpython-39.pyc,, +hamcrest/core/core/__pycache__/allof.cpython-39.pyc,, +hamcrest/core/core/__pycache__/anyof.cpython-39.pyc,, +hamcrest/core/core/__pycache__/described_as.cpython-39.pyc,, +hamcrest/core/core/__pycache__/is_.cpython-39.pyc,, +hamcrest/core/core/__pycache__/isanything.cpython-39.pyc,, +hamcrest/core/core/__pycache__/isequal.cpython-39.pyc,, +hamcrest/core/core/__pycache__/isinstanceof.cpython-39.pyc,, +hamcrest/core/core/__pycache__/isnone.cpython-39.pyc,, +hamcrest/core/core/__pycache__/isnot.cpython-39.pyc,, +hamcrest/core/core/__pycache__/issame.cpython-39.pyc,, +hamcrest/core/core/__pycache__/raises.cpython-39.pyc,, +hamcrest/core/core/allof.py,sha256=QlKOUPTeB5VLOQBVbi1RVgpyE4F_CLL1M4fQREzCT2Q,2319 +hamcrest/core/core/anyof.py,sha256=Ik2qXhLtbwddvT6pFf1HD_6xE1qQm1Aaut9z2B0Lh34,1332 +hamcrest/core/core/described_as.py,sha256=PT38Tp4rCRFWLWWOEzLPNPr_J9HOa4AOPdzb1Qi6Uf4,1939 +hamcrest/core/core/is_.py,sha256=j4UVPaLbwKuyjSmMyJTEtYsgxaet856OU6cxQ4_EskI,3040 +hamcrest/core/core/isanything.py,sha256=KvwblH_oAslffVTwzfb4g0pZpcLBwTwh2IqN23m7JoE,975 +hamcrest/core/core/isequal.py,sha256=L8hQ9vJyxhx9CU0xoezyrAOOZclPg4lp2qWkj5oZVaE,1039 +hamcrest/core/core/isinstanceof.py,sha256=rWdTHfMjxaQJrfAbWTQ4ZVxVoBc_gL_E6hTUX4GkfYg,1261 +hamcrest/core/core/isnone.py,sha256=ttgbU_fTH-oYQ-rketRE8X-EHSSBJOeG_FsV2WZAjiA,745 +hamcrest/core/core/isnot.py,sha256=hUub3YLsPHssX7a237jA6sEx5UJTNIcyjD_1PC4h8dw,2186 +hamcrest/core/core/issame.py,sha256=tyy8LPix9RBH3l2BHQMwmPdgqN3ROPP9UExA026Iycs,1344 +hamcrest/core/core/raises.py,sha256=S7519X5nMqYw3K3RWqDroAat7J2TgBNTFuGKCvO8w6A,5384 +hamcrest/core/description.py,sha256=w_t6piV7jdeNUi5BFNvtepFb4uOSeo8umQ_ltaRoUpo,1545 +hamcrest/core/helpers/__init__.py,sha256=mPsycYI18LoGawOo9BfETa7yKtnM-fDjFOr43BIevUg,146 +hamcrest/core/helpers/__pycache__/__init__.cpython-39.pyc,, +hamcrest/core/helpers/__pycache__/hasmethod.cpython-39.pyc,, +hamcrest/core/helpers/__pycache__/ismock.cpython-39.pyc,, +hamcrest/core/helpers/__pycache__/wrap_matcher.cpython-39.pyc,, +hamcrest/core/helpers/hasmethod.py,sha256=y2Te7m2edjLsZFH7Aadtnv81YKglTr5rYtr84O_sGgM,346 +hamcrest/core/helpers/ismock.py,sha256=nMpzjr4wnP6KBJgNG9K656z3x2bt8-TZHW2x08wpxLE,327 +hamcrest/core/helpers/wrap_matcher.py,sha256=--N9XNoByGw_L7cd66phQIukXUzRwLkVwqfw--PbY-w,748 +hamcrest/core/matcher.py,sha256=rzbXeizVYubPreI4t6LeFTzj8A1u7gVemC1iZ7wZb-M,2664 +hamcrest/core/selfdescribing.py,sha256=JEu7jzBRyZdNgUFW1nmSbu-AVTBV04DMN_lhgAQ2MWI,638 +hamcrest/core/selfdescribingvalue.py,sha256=z_HNxqgXjw3PJ-MiNQEd7Uf-UCp7_zkhY_tituiCeI0,928 +hamcrest/core/string_description.py,sha256=IWqdu3esHWVPv28P3oUs0Y8UQXCHZVpSF2rs_XOYo-s,940 +hamcrest/library/__init__.py,sha256=tf9nJwXFdyef20MSD81R1xWhjecbkeCvsttA5u7fpX0,999 +hamcrest/library/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/collection/__init__.py,sha256=eNJTFJ8O34E_PKJiQ9S9XhDwysfWK7f2AZCLACoFGwE,614 +hamcrest/library/collection/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/is_empty.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/isdict_containing.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/isdict_containingentries.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/isdict_containingkey.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/isdict_containingvalue.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/isin.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/issequence_containing.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/issequence_containinginanyorder.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/issequence_containinginorder.cpython-39.pyc,, +hamcrest/library/collection/__pycache__/issequence_onlycontaining.cpython-39.pyc,, +hamcrest/library/collection/is_empty.py,sha256=CxteISdn1Ne75BwvM6m2A8ccfiVMZav0dBxaTrhDeFY,1076 +hamcrest/library/collection/isdict_containing.py,sha256=WrXln6YJ6Ow0cf97yL2XbNIdC81Wjj9Euor9rBxzPRM,2305 +hamcrest/library/collection/isdict_containingentries.py,sha256=NLU9s5MLJYvPX3q_QkL24XWdSohpq8LCUjiQdO3GUYs,5692 +hamcrest/library/collection/isdict_containingkey.py,sha256=vu6ZqpwpkJ_ez-_IOqiO-In7ICF9Vs8kNX1VRWdCtmk,1829 +hamcrest/library/collection/isdict_containingvalue.py,sha256=S08RBkdrzYW1URsdj3tWaxya0uUdY3CB3CdYMktDB1M,1835 +hamcrest/library/collection/isin.py,sha256=_fNAS55mHVYZa_1AOHe1ti1oaV6gkXr7rDfCrA0ZUtE,977 +hamcrest/library/collection/issequence_containing.py,sha256=w6GSl_5jctJQDYVlWqau8sDGhzP2N0Qf_g82z3TyVIA,3432 +hamcrest/library/collection/issequence_containinginanyorder.py,sha256=kORH137ACuJCah5KHaW0aezkFsi6y9V9WBubaiQjXMk,3869 +hamcrest/library/collection/issequence_containinginorder.py,sha256=jGYYivLAWzlFTyXSFDknJUz3QWwLk7UDXFwJ96ZsRbg,3833 +hamcrest/library/collection/issequence_onlycontaining.py,sha256=r3PM88_2sY5z1898mG2CM2KlZTCVhNDFxuI2agk8JMc,1841 +hamcrest/library/integration/__init__.py,sha256=wIFPkUnh1CkcODPv-KKQ_hPMGGdkLfMnIbIgDyl1MjE,215 +hamcrest/library/integration/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/integration/__pycache__/match_equality.cpython-39.pyc,, +hamcrest/library/integration/match_equality.py,sha256=rTa1Ae_yg1aeb8PWW1ySFzt9BPgYpd6TdLR9o4AGsko,1323 +hamcrest/library/number/__init__.py,sha256=qEsI3wwSIZtXQfbbVzvYYimdR31deOFqDSd8hiLc-j0,317 +hamcrest/library/number/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/number/__pycache__/iscloseto.cpython-39.pyc,, +hamcrest/library/number/__pycache__/ordering_comparison.cpython-39.pyc,, +hamcrest/library/number/iscloseto.py,sha256=e1_-r0YZGcjf6moA1x8_uvMFmSHYwI09Ru1Lx9h4ZzQ,2742 +hamcrest/library/number/ordering_comparison.py,sha256=QRY53Q68bTLwq8EnorvNa4A7WrKdXw5kHi-mzcMzsB0,1939 +hamcrest/library/object/__init__.py,sha256=GOROM3mNGZsO09KMNtkT9lUVDcKwuzi4oQa5nqYHD6g,280 +hamcrest/library/object/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/object/__pycache__/haslength.cpython-39.pyc,, +hamcrest/library/object/__pycache__/hasproperty.cpython-39.pyc,, +hamcrest/library/object/__pycache__/hasstring.cpython-39.pyc,, +hamcrest/library/object/haslength.py,sha256=WLPQJUbUeLvIsTom_BcRBhvTIARv0J8hAk62e49SJew,1905 +hamcrest/library/object/hasproperty.py,sha256=0YXzHXPIa56ZrNBrI4861-Y79zwAnlG7P9iUAjwgkUk,7154 +hamcrest/library/object/hasstring.py,sha256=rZTgZbrhzsy0QwkXI_MBUAr06JUzj-Um3f7TmuVh7Vc,1395 +hamcrest/library/text/__init__.py,sha256=YuMghVZsfFOVFHEAVGqso-K9GH5TA4uwQw-VLQy53XA,509 +hamcrest/library/text/__pycache__/__init__.cpython-39.pyc,, +hamcrest/library/text/__pycache__/isequal_ignoring_case.cpython-39.pyc,, +hamcrest/library/text/__pycache__/isequal_ignoring_whitespace.cpython-39.pyc,, +hamcrest/library/text/__pycache__/stringcontains.cpython-39.pyc,, +hamcrest/library/text/__pycache__/stringcontainsinorder.cpython-39.pyc,, +hamcrest/library/text/__pycache__/stringendswith.cpython-39.pyc,, +hamcrest/library/text/__pycache__/stringmatches.cpython-39.pyc,, +hamcrest/library/text/__pycache__/stringstartswith.cpython-39.pyc,, +hamcrest/library/text/__pycache__/substringmatcher.cpython-39.pyc,, +hamcrest/library/text/isequal_ignoring_case.py,sha256=131_cbPxc-OjiUMjOZo1JNaO6ElNYnR-FghO4oyEsvE,1359 +hamcrest/library/text/isequal_ignoring_whitespace.py,sha256=829ussSeFtzIp-SjDNCgUj4XL2ZFbJAANq9Fu4vCKKs,1776 +hamcrest/library/text/stringcontains.py,sha256=ix7HlqKMjHhqs4PhX-5GaNAdR9HKqHYg6YkYdKBkkTg,1036 +hamcrest/library/text/stringcontainsinorder.py,sha256=snxoa2Y2umIY4oC2O1zWrjKlpqDbYeNkf2aFxpEoTe8,1774 +hamcrest/library/text/stringendswith.py,sha256=HZ43F8uva4dCC7ZkrxHrOCnEYtGwu7nKkysS9sXTNCw,1063 +hamcrest/library/text/stringmatches.py,sha256=nq8K7WcFXCQKdH_zrXFqJa-DtltXqmb3C2yxK43hlHc,1233 +hamcrest/library/text/stringstartswith.py,sha256=lIb0PuBlEerbPlqBWdTW3LEhYVXjNTuoZKhDN8Hh20E,1090 +hamcrest/library/text/substringmatcher.py,sha256=Ji-OrvF0Br7KgMALgt-LtE1WqqzUrX2j3-JCBWx75fM,786 +hamcrest/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/WHEEL b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/WHEEL new file mode 100644 index 0000000..3b5c403 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.6) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/top_level.txt b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..c5f2ee4 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/PyHamcrest-2.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +hamcrest diff --git a/WebCrawler/venv/Lib/site-packages/__pycache__/easy_install.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/__pycache__/easy_install.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8abbc92c943843c8bc2eed0b0568efc49241bcd1 GIT binary patch literal 305 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/__pycache__/six.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/__pycache__/six.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46bfa02677a45dc8325174491259696dde0a9b22 GIT binary patch literal 26921 zcmc(H378zmb>4K(xwEs2<>DfE4iAu65Ez0uc!Ch_Lj;x(0A2%7gW0Lx#q7?`461tp z>}Xdsxui&0hoQriWXU!l%Z{no@)65NEMM{=--+Y+NXJfMJGP?4R_r*j9mWy!|F61x zdUhAIuJ6mt*VV78UR|$VRlR!ks;dJ7`2>F1C;zn4dMT0kGkW5`1Muv|<36||kx+?p zLRrdgSkrddwg@L1$#PQOsd7r*>2g}$nQ}(n*>YB;$~l!T_c@u#yt39MRA$O9_eZ`g zdfoV->Q{vq6RP0cx{xdvJA=+`PH`cz zU|ET$63v@Z3Fr39)@;g3@E@joCeh4qp>Ke>oGz+Cwc^D@`3^OtuEYCIw5TCsnzhWcGjbmyWn4=*22FQwY(c48xV56T8EHzf-wUB4eCbtZb8Y6eCy%6UEQVDi|=l=0dXVhZt-n| z@1BJuur^7W&1#c`m(;!ZZ&4-j-6y`1x=(yt)i$+V((I7D?pHe``~kJW8Mtigo796% zTRo&6mbyFwoSlOGsM@98qIOGYQ56*^jdJ(kzgM7rYF_~DSNj9#{+<#JNF5KV15(~0 zY1d(O2)?_}rVR@=-bd71<^7o2D?D^`Dvdh*usVi1v7EcqsCry5j;pt+6B2S#ol;K- z^rU)9QawGDK&rn`Pa@Sb5>r;E)fs`FRc}`nfzGO`8WX6dlyU?bR}<=-Ky@{#rUYuJ zY1I^{rP}JeKw7!V6KFOJbc0=-YYUwxZEm(>T<2L<|&`mp+TfnHS~Q6ClP zW9mE9#|8R?`cCy-0)4l-qOJ<`N%cMIQv!Xj`o19Nf2O`)y(VFwR{vc6fIvT}J`H_jQ;X=!Q8HXnK&4AzoNc? zQTGKIbvwYlzp8#s+B2elJ%WBCf_^iCek+20JA!^Kg8o$m{p$$&oe0{kJ{y$rZzAY- zBk12o(C-mazpH*vM#t|*;eQZ8e;7gkE`t0B`u9d!#QKNCtm080L6_2Wu_+uhje$aU^D(QiqlG-TgLFa*>qz6#af02^Dr2cDA(tlHbiIVj?TAlxbrBM+E(C1pUtl?|((m-$l^hN6>03?7WZ zD`NQ!8F=E3^25%&x8vo#@Mlori+He8{;6WnRbL#CsUeO4Fl&R^h=)N>}>z z5oZMO8ueMYYuUGWU*F?f*W@`aB}_xiP5EO(@~! zs6MyAcdOLrR;kaUQiGzI!zQfqE@xL%#-p(^`p$1b8M~ZEgEAhKGHwgXfXt!ph|0JV zzV%YZ`aoWIi;S+ffafuH3YG4Xxy({`19t;tkllEb78?QYaSE6F^dG@@PkArgP33)X zH<$OrEtL$t&N*B@0{N&2`RJ{e^RpX_ ze1xb9)XNxLq+CeJB0F|#``dyBY>a5 z`>l8$16;Ac&<;x za(yzE>r>1X?Pd+1mUiFau!heBFl$&2;M0Il3tYHd(C>$j^?ep~Ka2O<@l*g;ow0IF zBzsj>j=JI?{Onb0a=bioTA?lHl!Y?uPI_{(JmoaX(}LS9H=X8WtK5RyF1JrNk*Zog zPuUC5*gE#v*p!8GJAi6s4Of+2xK7z?axNH`un7q}hp;xn>UhHXO#(LctCef0;{^Ou zcp9iP@uu-K0Z%!}D>F`N@`7{msvXph^=eJFQi*b_%zRtr^Kci{0#qa&+5xqyfX@@g zo3*VX?@M^I&f|b*@%Hdc0A`zJ@SFqu4sg$aZa8z!_Q`pKU0ATo@5K9~crN0(^rBUM zu6YBXkKti19fZ8oA>=lL?nUe>9PBK3Mq>DDdISEA$5E+X*dLn7y~3vCFTPKY~5wM;5Hfd(@4P zJ_q%eosU4myeEKx>%96X_K25PoWJw(;Q23~e)aT6n8THiI-9PdH&pUuV#9Y@iA3lA zC%k&2?$sT)INs95iyClqqF8Gwr|6xldPP0cbc?NK@%XHF4zI1nYEu=reTm!g5zAju z9dlca8PBQIr`s*iu`*xJJe91;m zUrI7NTc-%q@l%u43)T7?Z@lqb4c?v~6YR$0u7cwv%8*LRHpa6JnkLz@k(6&eT|?`l zA7MWG@VLxhSwOQ#8!VSUJMmiLHOo)APGel>5FpO$Z>c?eX2wM;&g|H+^}dJBD94@h zTJ19zow1s(UTiq}%mt@;;mpzc*crF(Ih)(n+EjJIapAjEYR~%FN~Pg6E0tZy(q+XH zR;TajQV=?dn&v8%W_8-BRQ!CUGTl-$4Z?*=<@`*wVPbS4tWdXVx}RZLI6Lu3);U}J zjWhz@c+UK@iJFv(ApQvR5js%EGH1;tDgiY*#XSle;#O^D+G%=Kua2(sTE%K{e5P5W zuQZAtM~i?`sf^fuiV=Pi-bM97qpC^~?=h5N+HLEVfS2@2RGVSMdWks*5LUvoChfVz zx&->j>O62nIIC!Av#F>ZZ$>xCq~19v2rX8}!D|xGsJb2+;gv>`q^My_P&Dbzx_;JV z;bxR4FiJN~O_~461Xq+L_(& zxHbJ%^$Obmnl-A|BInm^&F<3I(~0;~n1CEqZ`Qp^hz7s z1g*?fw1YX}g5zgh2W;eNskNU~PJ=$buTrU@mt1tp;2s3j$1r~!(7L5ZQqoF4*&3Vl zZLjTTkkw4XTijys;Dmz)pGJx9Ae@Aivj#0YIcycIjMW+LX}qA0j->Sf5H-;?)P@Ot zGo8EWbO|bu46Pdw@gyGU|D2smYKAQ7f8h?ImEc7EpL;nmjtNO6U+lw_g#H&U$fzvd z>6bzKat0jH=l36LU2xPf8TF&JFfZgJ-NWwU<8FoHVN_sr*jMa1h%y)>Nxfk%sS+~@ zU7WM#lXFRo77yrc`X||HC_mYB zF1}{z+lbqx1u0d><8mTOSVL9{^u}X%R>d07<+H_8Z#2ls!yM$3)&eGAQ$bq>mfnac z-AAX}8`2TCFbq$~*}X*uyw)?GNJl=x+P4D;Slb2#LA?bVOb#l6&4tCg%$w9K%+G>j zgl}(!FXYLT@NPDkqW$!RYGY=}{LwFrNz6)R28ms^h0K`;V|Lc|5-TVLQ>isNl3kWN zrS0r}e;^n%HK)<2RAMyRj99Z6u!AS?xEVM(d$12Y%djOpOP=D--2f-#S>aeNqB$<2 zX5NB;(&g5)-!H?;aBC02*}u$`kIOnQW>)lgl5(!x6_fKC`>m*FXvJ%4HI4v zHXzD7@tFA-JlI(ktIqPg7uIVZ(-q-RN|>I~%Q9wc+jp5T?NLdmR`MQ$~e6CKIO%v5CXVPcz6}TppKeX7>V6 zgfYmCtE`S$A533@c!F~cCVUu4^@DV_(UDe)(`7w&;vAlU^$Mw6Mmn~Ju%2Hy#krh! zL)KH7<)%xSCb@8C{XrQxd%`A<*2v-Ek8s3%3ZBKxhne#5(wTBDEpzAYIn0%qLw8~h zO*d0>srmF=8jPB5UT?@5gwe%4B9$PAju2XVgm7r}EgMWuaiiAsh|| z2hz9sUwK!h&&KWt?(VgGU7xCLuoJK^k zjhLd5LMfrP0=UQx0*A6I8>+hJ7TuXKLshqwmmE%=tGh)Jm6)jEP%H;}@%Vw`+qP^i zj@O$CS#m$tXjK80ibuSnd#*LpP{lC^d$?&7ULR{XlH0{PDiZGEN;@Q7wb3X#moU9h zoW6j44y1hS_QnIeZIW=wRL{9^A8E^}((EAW82%M(#6sq=jZ85x)ofjC25V+CQ>{ST zgD~0qEaoCk^*_k`4HrS6yLmY}cX^x@3V%$)9nc{>?(J~qZ0wq^hk!)>Ml~lbWvxxj zCD&r-bY29d*X&W>DnZ2F3v{V?C>U`l`+egx4cUpgel7$TRT)boH$0~MeuO2Ps^_du zarvru(U*{ytSjW@{3Q)$cOLy`^V6mbe0TziQ3fUTV(v(hIiUHD_PRV0&j{hkzkb$s%0x z*a=@aYIAxu8^e`BkHYbn<&}8b{CwT5H(jsVtT|?f!P%P|Z$nWCw=sq=OXFfbC1$`6 zzlg-5)=5~lO;TmR7x-h9!&uQ6*4Aph7OdRLsd-)H}ia%ydsV#ij!+k8?F9{Bte9ts;6K^RL!U z4Ks4vsTHxK1?(0%3rB?pv+=gl_TmQDaX7JW-*Mka6wj?ahmdGnvgfL<$OvykTbAWI z^aaqRhQ9+GGvKqGTbJdwF76Vlk>7-B+$(eMWOkfJXV!TnAk}EA>6mrO(C_?AT{}vM z*Uh^Kszhs-qo6?2*Q|byLxze+pOu#hG=*MYe(n!(xpx{^EJlb3FMEn3$Vxv(=NKI+ z`xK$4=ulze=b4q;n$h6kE^7)TGR+PtT8g z;N5s6SzG|YrYfb#eo3qvBG?}BoN2dnGnGTKl5;V}8Z3f-$T-XBFQk=EponFwT}H&8 zvwRW~)wVQ4{Jz>rY#f>sM;`a>ddts6zRY;N0Ues(2Q{YlTCE0FyRjLBVR-x5dJx-h z-s9MqIDR1rHNJGc*`D#xrb>_u`kg)~NuhjVc&6S&#!Z=FpnRyd{ZyT92IQ|@RKDGE z%iMSao{=3mfHA)hA*~sY8RQ_(Ohedl{X8V4wrBNr2QRF`92RQ**eqL$xW5?RU>LoJ-KUwmhetZr9rmGM6wvErEXS321`%*K25F zt<`8?I8$0O!ABuO`FSE3g8Io$oh_u>4+qmBstKF|gSx(2t2thuXje5-`h|VsJ8pa{ zVue(yV>O80>`HMu@yHS){cNq(p4H9-$<&^O3T^@lx3THUM03VZO#tf9TcS6|@FpCn zZV^szNxTCUH8VXuTfv&`fJlY7FDU&>)X+c&9H0!I^Sn03Y-_6SOjf}>1_Zr35>@I( z6=JBapV=pAIuaUSx&FX8Z@N)|lq&}kKC+mG_8h)h<&3)>i7rLa{em6PE`Rvcv7?4^ z9f>Ff5%92zjXKi#S$bGI2`vSoE1c zn3cQPm;@%9cmhA(V$Zqc#an!e{&^pR%8|M$5 zlqo+JlC2%D*QOd6r)~4bkaA`mKm9g&Wwq1R9Hc1%e!*?krW`NGyl_%{rd&T0a9-A% zk_pAno(h1$AOyOMYNIvbXZFjx6NZ<9@Zk^-Q<)Ql4F(mXBR|5V3R(g-F(a(k{Trfa;)^w_<=VSql!3}jx;YloiqAcYFROIIg#-9 zQM3IJ@I=DKu`B(4|8aKw2|2LxbEuPah2MV?3yv2COIYQ+>-U9F!|www);C?nk_~XO zRc}gqmkIqmf@Yc~F9QeRB9v6xjTwk%Gfg9+6av5m4~0IjRT-Q0AkeTVrztXaUb4Y7 ztY`h4z#b~lClHUkA!V_AIp**O5aL!?Me3mZe(^RP4=U=wg9=usA(}~y$<-u+#04eP z1?Tl))BUJHca-#mnPKtG;|DW@z7BqngroWo(5uUe)_;SDW~}?^hZuO`=mCyo=|nVf ztKY{J(1fjmXy<`+r&_I(=U^uxp^L_RNy=SBCkgBH(n-R;W;)$^t#P9r^q1>(9{Sox zPLT9XX!ZA?%?mMF(JvHgwVh^X&~QU3$j2WPT>?(H7)yzmTL~5UxEJQ8d@GX4^tm+* zkzE}21eajQ;%85o7WspZOE&wlF@=<`{k80n{myt5f|m5aVeBWM#r9V+;sm4tBK8Ct zIrX^NZ6J#Rz)Q0sO20@&K_)Ah$#EQPUuBOxy3nFbX<< z@F28Gvt56oP10i~YlFuA3NwLSM|(8A@lcyhPYqz z7%N_TjJa(HT2ANTuV;{%v~M!XZo&xr@z^M%-_JtFJSN+hXq1_Z`~qTX4M=Yg*`@@q z-W+fFc?1&xdS}gI;+dqcuU(}=ZryJAhiHQqhOGuQ&1i2fJO9gCP{Gr~+Nngn* z8Jss& z$Qjp#UNJNXbX;c|hf1#KNJAB77fb&&Dz5*I&W#|TzKzbEaC*+u;qM+RP{x|T;ru6! zRo)0}R*b-tmZi?e{!o@EKNoVA{w?M&ve|MrBRsPHB8mvlJg&9&g(u(F(jij2274u= zMM7OflXw>!bT=JXnkV!K9jOjWT~=UN50pQ~BL`;G#ifi|TU6Vcv7JJkb(T?p2#bXz!+}fbI&pqtL+9kVW)==5!0zZ!9iWS2;1tVf;f8 zf5G`O>q`B3!q%GrFR2gFr9RZ9Vuu~rCW(32Zk)T=v!mub0y{7<{CJdxV?{9>I~+Ta zftA#n*qKalG9${-&W$G=*2T1FT(_oUZR!j)(ZreBIZ={sDz4W&OfI4_rj@r7`aL+* zpev~CU^2t;B(`*mo87OaAZhvEvgK5JCu|!QWd+Ne*ys|%nHTki&}#ysr6?e%J2{ii zXj*L|n6fn>8~{P2r<_4EH<|@CT4PX}!jr8}OEzT!%%xnAT!UH?2%DpdSdAttRvPQk#@4=vaG5jS3s zk~}f0dC_nH>^5mmL*uTIf*%#~n!Gr>AH*xVQuRc1}QAywujaZbB*g0bq7+gzZeDifJllM-yT}^Pa3W zXZ@5n+lG}Q%x-myR#^HDq+FbNF3jl07+H2NM;3&c4j_GaHY)aQk{|3%u}2$g%{0~G z{8#b#A&3*c5WCx0S^HQPsTckTzgbzfz780EvesBasns=^<)iYpjwj1tpsSHBY0^)#hp?-Ji3JYU zPQfFliC_mdaoPS_88lId4NVUdZtm7YA7KMY!th5pstkv|sSFvjTNPU$VjD4c;q;x( zqSlgZTe_vx!py@r3)zil(P>bR&3X>!Kr#S(#tkx-aU--c)uWL#>2(#OCA6X31w4)$ zj&n?Q%Pooz0A)wFj-7$9yb=?^7Jae)g9%~{l_pEyz7-MM!knQ0pue;25Y9Ylk}YQ{ zG#13>v#$kFoXMM_gf81siM=KzfpPF)J z-Pdg2!uiqE#aLZgO+QB*VjK+Xn!xcR>iTsTtB)eJpAn^qtFgw#=_6(4S*D3U5-auO zH(qKQIZrQNsGQkJ^wC(EPka-~bt@|DNuaxTGt;s@&Nf%jV9A)8Ab|uGve*vXzoJdWmr!$qT0>f&t0fH z7s>v9o{(WmzmKr+O6R`dB;SaQGW8TG7Ro4QLNj_PKVdjm^=zrL?ah*y5|$=<%bO+I zfPyv^CFuz4E9!cgQuqGT8JsqSKYOh_diVr{>dvV&o~5|N8-kQRMmt$*ESsC}gS?b6 z+ET3F){@248l#jHN=k1>rb`N8K{9bK6$$hiL@u7OteFe3EGxk1*t_=nLlAm!D8CQ# zgLi=Ug1*Fz%flx4M70j>>*lu9Mx*Ux)srrF8sYEjDGhTLJCHQd|k!bBvO}c{_lF;yhJM6I~Op&9a zeJhTlUhNj4r;u!k%(0{#+H*zMBJ??=L7S3eGvmHhU(6_Z+J0UVrT)ia1vQbV9B|7K zE*HWrox)yJst9d9AhPHJHNH9k? zEYfAo*NnZFpQ`E!obyjzisE_DoHpZ=zmS_n(! zkXp7pHtRFrwDML2<%Oeo*&-E+{LyZae#*Jz)Rx$DX3=#rE$s!+*^1i`G=U$2Tq*Y; zU?pqMSo+R6N}13$y#TrV1?wr;dUC%86T*B5ZHd``+PtGeZMHK88#HWm2Wjip4S^cs zP86r_Bj4EG*rMLypw*noeu~wn=__miY2_}e656_F-hdHP2Mz3L5BW73N^B2WW1%%0 zDaKP*#;Z}2yz_zGCBpB5FF9|&GubQzA@{?yABK{cW2``(lIq-a0CdB(G;?7A4**MIVnHLI zFCedxR5@cZDrbXi5Fpw3X-T`7T4@$u`DN0IlO-=G=0Pjc%UsUV&#{gUln1ymDTLkN zwS$FrQ_&lHl=gcg4~wm#r)LdN#7}UGJ-C7dD_m@;V~E~Z@zEl4$z$uxZs=$!jh%?I z!q)T#S(7&v30KStf6ekFS}bB*fNH7%<3)7L0kilu^BJVfNXkz$C6q9qKmX~u zr2az;h{A$3pT!#=7MssCbE+_(RRi-mscAz0 z$1Eh}ju>af!-{i9;!2iSPzl)c$l*$kyKl@EG$K!qLQLezFP1wT=RsN?>C-gR_VYY` zVNi1d_m6SCX94V?$H_=J5iAiQ>!?00%*EUH6l7AW>Q(iN2!pI)kGBnna(}7cjljPm zS5k$Rz?je3c;2w>+*j;mLGA(#TAkHG!`K}%$@w5E;j~Y6Zh~8!p20n7+!EmcF5>2Y zwHQ{^f!)tdaIT5cxwGEHAgrq*WOp8R7O}?5rE#1Iv`qhP81b$A>sE0j=O^2(wwVe+ z9tEX<5J$+MUuL`esMt9mXXkxR6B%JE;*8|=c|>Z8T+-@t;UdhKpt=$nPrr}h?`QHP zN|#$zjd~L%WpY%Zrx`68i}w(cy?Mq^<%=ZWQIgLdB*E-LAq7pZnLt6z9yqw^3PNK6 zlBqQ>`g^(m3jdHyx&=#r6vgz+3uHt-B24WD5T6(3AyQqDyGUTDB&_r!B?m@I61UN8 zVMx5Mq_0BTCybUF6$ZkJ0Hcp{2XWUriKWHZ?0=B0`~Vz3Q;}xskHG_-PM3)9B??0q zO?XoETazFPr?P~oy{Y={tUh5D4xTGGmugO1J_1l_lvsPZsVq81$4?94{S4nP(KH`wLZ~w za39YkQRccP7l%dk@mEv~N|2>4kyaw1By*5aNUOZC(hXn+{Yg-`M?wL1f^-rZnVrof z@7s|+wzA%btE1R;LT>(U_RSSKSK&Zjx`<6&9@Rdw~6ow^=;K; z9^HnGf_nInJ4Y5LGyg6CyxfAXm09xTPJ0TB;(?!D!K}@t_7%?dTVKIYQ^}o)Cj9fM zSFl8a7jY#VZN^X|xk9UFlFT2hR9d<|Atu5&$idhW`K|zs3GdCp&K+M+p_@s;`p1xr6de!F+=`h7AMFTf@POFj#O?V^;4pw~=?$GGylkYtR# z6^czVaDug)7tMIhtaFPTfG?eMg4HAB7vT)%XbSioAz_b!p7duU?yw63`e%UkdV0ni z-~6C{3GlMRa331%J_tvIQz%}{B}?()^DEer%gsJ)$}v14nOh$2sxJg*=*B*_^M!pa z2X~o@8#lTeH-@GFW7xcb?RlIQTwXf}UJJ$QaPzmhcs3BP&K5WCDjMCV+-Exr;qa_% z$BIQ@(MJpuEa9>Iw#D)bG2?lO+A5Zt@k@TOsMpu>A||wzylBI({h;o}yVtvSbB+-4 zx?E*PZ)_+a@I@9GX&cdN*g6EgmeKnqCX4>ukC=f>R^auz1&ja!^CKuCbOyhIU2~?Nn;BH2qHedvmsxh2?hR#ocv0XYG8mj4gtn+u5j2kE!ae&w(wB#m?rod>nAuhQy3` zf^=8|ehCE{F(UsYKgJ{)1Y^VStBm?JR>;zi5MDHS-1sJCeFilWX)TfC^q;a*U&&yf zm$&q9A}2BZ!jc3*1UHXue8j|-mdl!cP55K-RUuxBAD_Y3>mWyK3Wu`6(-lB|4o1%+ z0GjQ*Y$JePg-v)1yi2l%`;3bIel|&(&k55{;d@@&jVh%8t^g0pI_TogD=upc@Ltq} zqfMAhz=1d&gmA!P)4>ZOX70^SS1-Bs4ostt?Rom-k@5lkE~2D(hqc@%0;`zf7)2IN z+B|H0rg32e`xVcnyzghseRugFp`XN^6Mx`w)PKCux@fwI8#VKRnHvb*&35FCajN9K zouTq!ojrsG=-^upfqft6ZL?n&%SH-yW+^#Bh=zaWPR=bocZ0;jFaGHy{Wrk$BP3Dc zEk%+m3&k*}z!Y^Un%G?5)uZlO_7Xf5eqN3?DzE4#WUD5`UB`mpM6V~xa) zL(DB`{NNYN29Xwf=*y>x@eG|Zoww8B;V&%X&S_|hutxBW5i^53-I7sXhp!V>L}>{w-EA`-61O0ss#OsAhf*|PUHpOm2K zYDj$9vHcdSa6|OfBG|H4aVb=ewa5tAka43dAF$9LW)rBB1!d(*KDZ}C{alYhWLGB7 z?VJ`v^<7l4xT`QFLrn|4R`90^HZ=$-Zx~QU{s^(n*RUwI6FZ+AN>MvEXb)0Pm(1ad z4MW!rtsY)6v~FluE;*E?oXCGZ_Fe;@*$#3`XyRGw4b-&Ye}lM$miwFfnayQye8#e& zr8lmLF)&LQHhKMY>M#wCb8lo){G4UMT7$2kWcVGF9C|{yNq*D+AE(xb`3|8CsnnW`q2Ay>rZS6T3U8#)C#H4=`}zS> z%R;))FFguc@y|ZZ1aKzF6JhD~5K3i09neUgLb8xtlSc1Ldt($y5-a$FGX{a*^%dkx zGm?gUg_;XCVEL#hs9+TTtc{Il6`r78s9hmdU@GP)I$&a(Kl=@_^3Q+^hYLf6d~S_Z z$QDvV$hELz71L!4_Npv$_{!j*94)*tm_lokh3gB$L&HOBhgKF=BbKFtD~8iTEjjH? G+5Zor5p^yA literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/_cffi_backend.cp39-win_amd64.pyd b/WebCrawler/venv/Lib/site-packages/_cffi_backend.cp39-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..8ad60084401ebf3375bbfaa817f500ec54f49b87 GIT binary patch literal 182784 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 + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER new file mode 100644 index 0000000..2d2d780 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/COPYING.LESSER @@ -0,0 +1,510 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs must +be allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in + Subsection 6a, above, for a charge no more than the cost of + performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA new file mode 100644 index 0000000..47dad94 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/METADATA @@ -0,0 +1,118 @@ +Metadata-Version: 2.1 +Name: astroid +Version: 2.4.2 +Summary: An abstract syntax tree for Python with inference support. +Home-page: https://github.com/PyCQA/astroid +Author: Python Code Quality Authority +Author-email: code-quality@python.org +License: LGPL +Platform: UNKNOWN +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Software Development :: Quality Assurance +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.5 +Requires-Dist: lazy-object-proxy (==1.4.*) +Requires-Dist: six (~=1.12) +Requires-Dist: wrapt (~=1.11) +Requires-Dist: typed-ast (<1.5,>=1.4.0) ; implementation_name == "cpython" and python_version < "3.8" + +Astroid +======= + +.. image:: https://travis-ci.org/PyCQA/astroid.svg?branch=master + :target: https://travis-ci.org/PyCQA/astroid + +.. image:: https://ci.appveyor.com/api/projects/status/co3u42kunguhbh6l/branch/master?svg=true + :alt: AppVeyor Build Status + :target: https://ci.appveyor.com/project/PCManticore/astroid + +.. image:: https://coveralls.io/repos/github/PyCQA/astroid/badge.svg?branch=master + :target: https://coveralls.io/github/PyCQA/astroid?branch=master + +.. image:: https://readthedocs.org/projects/astroid/badge/?version=latest + :target: http://astroid.readthedocs.io/en/latest/?badge=latest + :alt: Documentation Status + +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/ambv/black + +.. |tideliftlogo| image:: doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png + :width: 75 + :height: 60 + :alt: Tidelift + +.. list-table:: + :widths: 10 100 + + * - |tideliftlogo| + - Professional support for astroid is available as part of the `Tidelift + Subscription`_. Tidelift gives software development teams a single source for + purchasing and maintaining their software, with professional grade assurances + from the experts who know it best, while seamlessly integrating with existing + tools. + +.. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-astroid?utm_source=pypi-astroid&utm_medium=referral&utm_campaign=readme + + + +What's this? +------------ + +The aim of this module is to provide a common base representation of +python source code. It is currently the library powering pylint's capabilities. + +It provides a compatible representation which comes from the `_ast` +module. It rebuilds the tree generated by the builtin _ast module by +recursively walking down the AST and building an extended ast. The new +node classes have additional methods and attributes for different +usages. They include some support for static inference and local name +scopes. Furthermore, astroid can also build partial trees by inspecting living +objects. + + +Installation +------------ + +Extract the tarball, jump into the created directory and run:: + + pip install . + + +If you want to do an editable installation, you can run:: + + pip install -e . + + +If you have any questions, please mail the code-quality@python.org +mailing list for support. See +http://mail.python.org/mailman/listinfo/code-quality for subscription +information and archives. + +Documentation +------------- +http://astroid.readthedocs.io/en/latest/ + + +Python Versions +--------------- + +astroid 2.0 is currently available for Python 3 only. If you want Python 2 +support, older versions of astroid will still supported until 2020. + +Test +---- + +Tests are in the 'test' subdirectory. To launch the whole tests suite, you can use +either `tox` or `pytest`:: + + tox + pytest astroid + + diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD new file mode 100644 index 0000000..c479925 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/RECORD @@ -0,0 +1,151 @@ +astroid-2.4.2.dist-info/COPYING,sha256=qxX9UmvY3Rip5368E5ZWv00z6X_HI4zRG_YOK5uGZsY,17987 +astroid-2.4.2.dist-info/COPYING.LESSER,sha256=qb3eVhbs3R6YC0TzYGAO6Hg7H5m4zIOivrFjoKOQ6GE,26527 +astroid-2.4.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +astroid-2.4.2.dist-info/METADATA,sha256=mWlOM8vl6thD_vA7Lzn2yKmQuaX8NukwS72gEpsGM0U,3915 +astroid-2.4.2.dist-info/RECORD,, +astroid-2.4.2.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92 +astroid-2.4.2.dist-info/top_level.txt,sha256=HsdW4O2x7ZXRj6k-agi3RaQybGLobI3VSE-jt4vQUXM,8 +astroid/__init__.py,sha256=zZF5EWBTfOtOcFd62WMbhLAtS2b_Fm-3JJW2AVUUMUI,5655 +astroid/__pkginfo__.py,sha256=G6QlkatrWucF445cQW7Kb2ZSgBzf7TiKLPwqkP0CoQU,2329 +astroid/__pycache__/__init__.cpython-39.pyc,, +astroid/__pycache__/__pkginfo__.cpython-39.pyc,, +astroid/__pycache__/_ast.cpython-39.pyc,, +astroid/__pycache__/arguments.cpython-39.pyc,, +astroid/__pycache__/as_string.cpython-39.pyc,, +astroid/__pycache__/bases.cpython-39.pyc,, +astroid/__pycache__/builder.cpython-39.pyc,, +astroid/__pycache__/context.cpython-39.pyc,, +astroid/__pycache__/decorators.cpython-39.pyc,, +astroid/__pycache__/exceptions.cpython-39.pyc,, +astroid/__pycache__/helpers.cpython-39.pyc,, +astroid/__pycache__/inference.cpython-39.pyc,, +astroid/__pycache__/manager.cpython-39.pyc,, +astroid/__pycache__/mixins.cpython-39.pyc,, +astroid/__pycache__/modutils.cpython-39.pyc,, +astroid/__pycache__/node_classes.cpython-39.pyc,, +astroid/__pycache__/nodes.cpython-39.pyc,, +astroid/__pycache__/objects.cpython-39.pyc,, +astroid/__pycache__/protocols.cpython-39.pyc,, +astroid/__pycache__/raw_building.cpython-39.pyc,, +astroid/__pycache__/rebuilder.cpython-39.pyc,, +astroid/__pycache__/scoped_nodes.cpython-39.pyc,, +astroid/__pycache__/test_utils.cpython-39.pyc,, +astroid/__pycache__/transforms.cpython-39.pyc,, +astroid/__pycache__/util.cpython-39.pyc,, +astroid/_ast.py,sha256=n1U2HblBNrMhsmrjF84HUfIgEZ3PyHyiJJOrOkgiUFk,3385 +astroid/arguments.py,sha256=KJcZn7HeEhj2fZICr-9Pi7iueCNDZRQWh0T7O-qb-AE,12558 +astroid/as_string.py,sha256=8bOZWsGG79TLmlzRzPtmHdanIAqQUFTKiYH873iMhOw,22821 +astroid/bases.py,sha256=wL9C23mHFaj7vhMqM83DdsU6kfP488aEjoFWaO8p6Cg,19175 +astroid/brain/__pycache__/brain_argparse.cpython-39.pyc,, +astroid/brain/__pycache__/brain_attrs.cpython-39.pyc,, +astroid/brain/__pycache__/brain_boto3.cpython-39.pyc,, +astroid/brain/__pycache__/brain_builtin_inference.cpython-39.pyc,, +astroid/brain/__pycache__/brain_collections.cpython-39.pyc,, +astroid/brain/__pycache__/brain_crypt.cpython-39.pyc,, +astroid/brain/__pycache__/brain_curses.cpython-39.pyc,, +astroid/brain/__pycache__/brain_dataclasses.cpython-39.pyc,, +astroid/brain/__pycache__/brain_dateutil.cpython-39.pyc,, +astroid/brain/__pycache__/brain_fstrings.cpython-39.pyc,, +astroid/brain/__pycache__/brain_functools.cpython-39.pyc,, +astroid/brain/__pycache__/brain_gi.cpython-39.pyc,, +astroid/brain/__pycache__/brain_hashlib.cpython-39.pyc,, +astroid/brain/__pycache__/brain_http.cpython-39.pyc,, +astroid/brain/__pycache__/brain_io.cpython-39.pyc,, +astroid/brain/__pycache__/brain_mechanize.cpython-39.pyc,, +astroid/brain/__pycache__/brain_multiprocessing.cpython-39.pyc,, +astroid/brain/__pycache__/brain_namedtuple_enum.cpython-39.pyc,, +astroid/brain/__pycache__/brain_nose.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_fromnumeric.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_core_umath.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_ndarray.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-39.pyc,, +astroid/brain/__pycache__/brain_numpy_utils.cpython-39.pyc,, +astroid/brain/__pycache__/brain_pkg_resources.cpython-39.pyc,, +astroid/brain/__pycache__/brain_pytest.cpython-39.pyc,, +astroid/brain/__pycache__/brain_qt.cpython-39.pyc,, +astroid/brain/__pycache__/brain_random.cpython-39.pyc,, +astroid/brain/__pycache__/brain_re.cpython-39.pyc,, +astroid/brain/__pycache__/brain_responses.cpython-39.pyc,, +astroid/brain/__pycache__/brain_scipy_signal.cpython-39.pyc,, +astroid/brain/__pycache__/brain_six.cpython-39.pyc,, +astroid/brain/__pycache__/brain_ssl.cpython-39.pyc,, +astroid/brain/__pycache__/brain_subprocess.cpython-39.pyc,, +astroid/brain/__pycache__/brain_threading.cpython-39.pyc,, +astroid/brain/__pycache__/brain_typing.cpython-39.pyc,, +astroid/brain/__pycache__/brain_uuid.cpython-39.pyc,, +astroid/brain/brain_argparse.py,sha256=5XqcThekktCIWRlWAMs-R47wkbsOUSnQlsEbLEnRpsY,1041 +astroid/brain/brain_attrs.py,sha256=k8zJqIXsIbQrncthrzyB5NtdPTktgVi9wG7nyl8xMzs,2208 +astroid/brain/brain_boto3.py,sha256=nE8Cw_S_Gp___IszRDRkhEGS6WGrKcF_gTOs3GVxH9k,862 +astroid/brain/brain_builtin_inference.py,sha256=F6_09yM2mmu_u3ad_f9Uumc-q0lDA2CY8v9-PYtUMmA,28793 +astroid/brain/brain_collections.py,sha256=Uqi4VmpLDl0ndQa9x-5tIXRtVdtI6TlwR9KNHmOqLyw,2724 +astroid/brain/brain_crypt.py,sha256=gA7Q4GVuAM4viuTGWM6SNTPQXv5Gr_mFapyKMTRcsJ0,875 +astroid/brain/brain_curses.py,sha256=tDnlCP1bEvleqCMz856yua9mM5um1p_JendFhT4rBFk,3303 +astroid/brain/brain_dataclasses.py,sha256=5WndOYSY0oi2v-Od6KdPte-FKt00LoNRH2riSB4S1os,1647 +astroid/brain/brain_dateutil.py,sha256=GwDrgbaUkKbp3ImLAvuUtPuDBeK3lPh0bNI_Wphm2_8,801 +astroid/brain/brain_fstrings.py,sha256=Jaf-G-wkLecwG4jfjjfR8MDKzgAjjn2mgrrWZQLOAd8,2126 +astroid/brain/brain_functools.py,sha256=Nljy7o2vu16S2amFot4wdTI0U76Yafq-ujVPHOdGgCE,5481 +astroid/brain/brain_gi.py,sha256=oraXhBWyCCxmPEAEvRboeTIho0--ORObvckni00_1wY,7554 +astroid/brain/brain_hashlib.py,sha256=W2cS6-rixdBcre6lPWIuSOqPLCcVji5JBlImdPbV6Qo,2292 +astroid/brain/brain_http.py,sha256=a_8eIACvZetnR2xI4ZARVMuB1WSjyyqM3rCl2DVltMo,10524 +astroid/brain/brain_io.py,sha256=wEY3vvTeV23tYxFn8HHQeyjhb7-jqzwgwNI-kl2Yu-c,1476 +astroid/brain/brain_mechanize.py,sha256=boZxoCxPGSpHC_RccO5U026hyXyhunXR55M9WM1lYTo,895 +astroid/brain/brain_multiprocessing.py,sha256=9OswtRuVBj-KemJ0yp4prz8mrkJDzOzN6n13u2MgmwM,3096 +astroid/brain/brain_namedtuple_enum.py,sha256=eZ8IaHPLLHBakywJ3q4Ogtd2Tk0gtNcAgYAloMAKTjM,15966 +astroid/brain/brain_nose.py,sha256=PSPmme611h7fC8MKuVXbiGw0HZhdmIuoxM6yieZ1OOc,2217 +astroid/brain/brain_numpy_core_fromnumeric.py,sha256=NxiHbcMyQQ3Gpx4KEA5eAmGrpjlPN5rfXjRLjHPOVkw,621 +astroid/brain/brain_numpy_core_function_base.py,sha256=7i6Kge_PviqoWXhbeRgB581xwLo0dxvO54_5UB3ppig,1168 +astroid/brain/brain_numpy_core_multiarray.py,sha256=vr-nBt3EF_z-UmHmcAlJhGorgDXPpQaYX8g4TWu_2Vw,4015 +astroid/brain/brain_numpy_core_numeric.py,sha256=M0RXOym2YC-DaZfRqGNIpr6s-Oh1KHn1okGr3PtPl0k,1384 +astroid/brain/brain_numpy_core_numerictypes.py,sha256=ltlZyQprEbVdUJpC_ERGyXyJsYwzFHx7zGYDLheIonA,8013 +astroid/brain/brain_numpy_core_umath.py,sha256=je6K3ILMen2mgkZseHCOjOgnFV6SaNgAihEi6irhbRk,4436 +astroid/brain/brain_numpy_ndarray.py,sha256=WZbRG7GgOWZ68sEr4JjZUnJHLfUc91xp2mucHeLMrnw,8463 +astroid/brain/brain_numpy_random_mtrand.py,sha256=WRy_CStllgZN2B3Dw2qxXbY4SBrCzu-cdaK230VQHaE,3278 +astroid/brain/brain_numpy_utils.py,sha256=ZYtCVmn1x6P7iwYFohdW3CCrvVT5BCNYe-7jKcz_25s,1875 +astroid/brain/brain_pkg_resources.py,sha256=S_5UED1Zg8ObEJumRdpYGnjxZzemh_G_NFj3p5NGPfc,2262 +astroid/brain/brain_pytest.py,sha256=RYp7StKnC22n4vFJkHH5h7DAFWtouIcg-ZCXQ8Oz3xk,2390 +astroid/brain/brain_qt.py,sha256=m2s4YXFrnOynWDf9omHOBLVqFriBdGJAmvarJCxiffM,2536 +astroid/brain/brain_random.py,sha256=2RZY-QEXMNWp7E6h0l0-ke-DtjKTOFlTdjiQZi3XdQc,2432 +astroid/brain/brain_re.py,sha256=le7VJHUAf80HyE_aQCh7_8FyDVK6JwNWA--c9RaMVQ8,1128 +astroid/brain/brain_responses.py,sha256=GIAGkwMEGEZ9bJHI9uBGs_UmUy3DRBtjI_j_8dLBVsc,1534 +astroid/brain/brain_scipy_signal.py,sha256=IKNnGXzEH5FKhPHM2hv57pNdo1emThWwZ0ksckdsOeE,2255 +astroid/brain/brain_six.py,sha256=79aws4au6ZQJuf-YhBT4R-9wuVOwg-u0T42aUhCswK0,6187 +astroid/brain/brain_ssl.py,sha256=9dMCTQ0JsX2gpdmBkYO7BByw3zN23oXRL8Svo2S1V28,3722 +astroid/brain/brain_subprocess.py,sha256=yp-HsE69uh7T7C1kZYciAdRMQ48aNT51lI032oDppDk,4688 +astroid/brain/brain_threading.py,sha256=dY8YwZ-zrB30_CQFYWh4AK3qUVssakgwLVwunQ6yYkU,837 +astroid/brain/brain_typing.py,sha256=iFw33beNCitCJjJNvccIY6SsFJcdKVDdl-56DxDioh0,2780 +astroid/brain/brain_uuid.py,sha256=YzfiOXavu515cS1prsKGfY4-12g_KWT0Yr4-5ti0v74,569 +astroid/builder.py,sha256=72JlHrXRF9sS5zh1mqXlRHGFg88Efc2rm9yRJKDIShA,16891 +astroid/context.py,sha256=MpwiEzWZ39a4WyqYgbSmePL2nZLqALt1gjrvi3TP35U,5169 +astroid/decorators.py,sha256=z_wTjsiMlu_ElHtYUUuxaB2F_s4G0Ks7bmtCZS3IQ_Q,4283 +astroid/exceptions.py,sha256=GLiZo9BdWILJShO-il8ra-tPZqaODMAX987F--LWv2w,6891 +astroid/helpers.py,sha256=3YoJeVLoS-66T_abDorUNHiP8m2R7-faNnpc5yPJhrc,9448 +astroid/inference.py,sha256=UiKKPRYqb5JINQIw1lSdBniHhXjCohCGAqycp2GkVI4,34686 +astroid/interpreter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +astroid/interpreter/__pycache__/__init__.cpython-39.pyc,, +astroid/interpreter/__pycache__/dunder_lookup.cpython-39.pyc,, +astroid/interpreter/__pycache__/objectmodel.cpython-39.pyc,, +astroid/interpreter/_import/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +astroid/interpreter/_import/__pycache__/__init__.cpython-39.pyc,, +astroid/interpreter/_import/__pycache__/spec.cpython-39.pyc,, +astroid/interpreter/_import/__pycache__/util.cpython-39.pyc,, +astroid/interpreter/_import/spec.py,sha256=rZ9kX3I0xPo_pFAYWeOk2Xbi4ZIg_5bRsouZgxOXegA,11436 +astroid/interpreter/_import/util.py,sha256=inubUz6F3_kaMFaeleKUW6E6wCMIPrhU882zvwEZ02I,255 +astroid/interpreter/dunder_lookup.py,sha256=dP-AZU_aGPNt03b1ttrMglxzeU3NtgnG0MfpSLPH6sg,2155 +astroid/interpreter/objectmodel.py,sha256=bbPIaamrqrx7WHtG5YNs9dbrlDC00GrJPxPGoSTsnqg,25792 +astroid/manager.py,sha256=jmEm9uH00mPA2Y68s10xrPNbZaadv_2c-CWluB3SYoE,13701 +astroid/mixins.py,sha256=F2rv2Ow7AU3YT_2jitVJik95ZWRVK6hpf8BrkkspzUY,5571 +astroid/modutils.py,sha256=GBW5Z691eqf6VAnPsZzeQ0WYzrl-0GGTHkkZNb_9XRQ,23242 +astroid/node_classes.py,sha256=cBRkZ_u8ZoRkiXznYWq1L3I7cO-P9nGowNCy8T7Qpzk,142740 +astroid/nodes.py,sha256=WoyRe22GNVRc2TRHWOUlqdxCdOVD8GKOq9v1LpPhkr8,2978 +astroid/objects.py,sha256=caKeQPBtrrfqa1q844vkehXwpdMzvph5YJdJJdbD_m8,11035 +astroid/protocols.py,sha256=m1ZHvKvFQZSZp993na4f9s8V17kqNPRfH-XpQc8gJ7c,27396 +astroid/raw_building.py,sha256=PI70y2mPQ7JURDVyNZ6deeBFkvjNNaOQBkuo0VPbvQ4,17340 +astroid/rebuilder.py,sha256=xn82eWlxzGcDd2VACUnNNWCxArfV9HI8g67fUip0XFk,39411 +astroid/scoped_nodes.py,sha256=fUrmTyltaLCr9-i8RdC2e5dPA9O8w946Mvvft8mgXdM,98203 +astroid/test_utils.py,sha256=axGB3j6ZEaVspL1ZgPizKgWehNEREb58Z97U7mQ-GA8,2319 +astroid/transforms.py,sha256=1npwJWcQUSIjcpcWd1pc-dJhtHOyiboQHsETAIQd5co,3377 +astroid/util.py,sha256=jg5LnqbWSZTZP1KgpxGBuC6Lfwhn9Jb2T2TohXghmC0,4785 diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL new file mode 100644 index 0000000..b552003 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt new file mode 100644 index 0000000..450d4fe --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid-2.4.2.dist-info/top_level.txt @@ -0,0 +1 @@ +astroid diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__init__.py b/WebCrawler/venv/Lib/site-packages/astroid/__init__.py new file mode 100644 index 0000000..e869274 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/__init__.py @@ -0,0 +1,168 @@ +# Copyright (c) 2006-2013, 2015 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2016 Moises Lopez +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2019 Nick Drozd + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Python Abstract Syntax Tree New Generation + +The aim of this module is to provide a common base representation of +python source code for projects such as pychecker, pyreverse, +pylint... Well, actually the development of this library is essentially +governed by pylint's needs. + +It extends class defined in the python's _ast module with some +additional methods and attributes. Instance attributes are added by a +builder object, which can either generate extended ast (let's call +them astroid ;) by visiting an existent ast tree or by inspecting living +object. Methods are added by monkey patching ast classes. + +Main modules are: + +* nodes and scoped_nodes for more information about methods and + attributes added to different node classes + +* the manager contains a high level object to get astroid trees from + source files and living objects. It maintains a cache of previously + constructed tree for quick access + +* builder contains the class responsible to build astroid trees +""" + +import enum +import itertools +import os +import sys + +import wrapt + + +_Context = enum.Enum("Context", "Load Store Del") +Load = _Context.Load +Store = _Context.Store +Del = _Context.Del +del _Context + + +# pylint: disable=wrong-import-order,wrong-import-position +from .__pkginfo__ import version as __version__ + +# WARNING: internal imports order matters ! + +# pylint: disable=redefined-builtin + +# make all exception classes accessible from astroid package +from astroid.exceptions import * + +# make all node classes accessible from astroid package +from astroid.nodes import * + +# trigger extra monkey-patching +from astroid import inference + +# more stuff available +from astroid import raw_building +from astroid.bases import BaseInstance, Instance, BoundMethod, UnboundMethod +from astroid.node_classes import are_exclusive, unpack_infer +from astroid.scoped_nodes import builtin_lookup +from astroid.builder import parse, extract_node +from astroid.util import Uninferable + +# make a manager instance (borg) accessible from astroid package +from astroid.manager import AstroidManager + +MANAGER = AstroidManager() +del AstroidManager + +# transform utilities (filters and decorator) + + +# pylint: disable=dangerous-default-value +@wrapt.decorator +def _inference_tip_cached(func, instance, args, kwargs, _cache={}): + """Cache decorator used for inference tips""" + node = args[0] + try: + return iter(_cache[func, node]) + except KeyError: + result = func(*args, **kwargs) + # Need to keep an iterator around + original, copy = itertools.tee(result) + _cache[func, node] = list(copy) + return original + + +# pylint: enable=dangerous-default-value + + +def inference_tip(infer_function, raise_on_overwrite=False): + """Given an instance specific inference function, return a function to be + given to MANAGER.register_transform to set this inference function. + + :param bool raise_on_overwrite: Raise an `InferenceOverwriteError` + if the inference tip will overwrite another. Used for debugging + + Typical usage + + .. sourcecode:: python + + MANAGER.register_transform(Call, inference_tip(infer_named_tuple), + predicate) + + .. Note:: + + Using an inference tip will override + any previously set inference tip for the given + node. Use a predicate in the transform to prevent + excess overwrites. + """ + + def transform(node, infer_function=infer_function): + if ( + raise_on_overwrite + and node._explicit_inference is not None + and node._explicit_inference is not infer_function + ): + raise InferenceOverwriteError( + "Inference already set to {existing_inference}. " + "Trying to overwrite with {new_inference} for {node}".format( + existing_inference=infer_function, + new_inference=node._explicit_inference, + node=node, + ) + ) + # pylint: disable=no-value-for-parameter + node._explicit_inference = _inference_tip_cached(infer_function) + return node + + return transform + + +def register_module_extender(manager, module_name, get_extension_mod): + def transform(node): + extension_module = get_extension_mod() + for name, objs in extension_module.locals.items(): + node.locals[name] = objs + for obj in objs: + if obj.parent is extension_module: + obj.parent = node + + manager.register_transform(Module, transform, lambda n: n.name == module_name) + + +# load brain plugins +BRAIN_MODULES_DIR = os.path.join(os.path.dirname(__file__), "brain") +if BRAIN_MODULES_DIR not in sys.path: + # add it to the end of the list so user path take precedence + sys.path.append(BRAIN_MODULES_DIR) +# load modules in this directory +for module in os.listdir(BRAIN_MODULES_DIR): + if module.endswith(".py"): + __import__(module[:-3]) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pkginfo__.py b/WebCrawler/venv/Lib/site-packages/astroid/__pkginfo__.py new file mode 100644 index 0000000..fd8e132 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/__pkginfo__.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2006-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014-2019 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2015-2017 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2015 Radosław Ganczarek +# Copyright (c) 2016 Moises Lopez +# Copyright (c) 2017 Hugo +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2017 Calen Pennington +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Ashley Whetter +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2019 Uilian Ries +# Copyright (c) 2019 Thomas Hisch +# Copyright (c) 2020 Michael + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""astroid packaging information""" + +version = "2.4.2" +numversion = tuple(int(elem) for elem in version.split(".") if elem.isdigit()) + +extras_require = {} +install_requires = [ + "lazy_object_proxy==1.4.*", + "six~=1.12", + "wrapt~=1.11", + 'typed-ast>=1.4.0,<1.5;implementation_name== "cpython" and python_version<"3.8"', +] + +# pylint: disable=redefined-builtin; why license is a builtin anyway? +license = "LGPL" + +author = "Python Code Quality Authority" +author_email = "code-quality@python.org" +mailinglist = "mailto://%s" % author_email +web = "https://github.com/PyCQA/astroid" + +description = "An abstract syntax tree for Python with inference support." + +classifiers = [ + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: Quality Assurance", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d1f13efbc113c08ba72b7820544b3b329d191db GIT binary patch literal 4459 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 BP;USL literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/bases.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ebc08a9c01c027231108f53320b79d6c63bfee8e GIT binary patch literal 15859 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 U!sGd=iQk?0;>78R_QVta2M8Pnt^fc4 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/builder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..47dad2f9c40015a03fb0ecbfd6422e1fd4877143 GIT binary patch literal 12903 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 CNJqK= literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/decorators.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76e14a791bee95e3334f6b6c13ad8334d1d5356a GIT binary patch literal 3601 zcmaJ^QE%MF5#C+$c)auJqNasX8*ac9cGFAJv*XmLYY2i}$Eck&LIF87N(f*m?w-UG zk328;B;S>CfymGO4KmP|ycd0G-}*23*go|y6a~_6_U>d!O>zR4yUX3#otbaG8O19r zZHC`}lYd5kTV?EDG&uWnFt~@Otk6gnGRdXLc*yNrgaU6Tb4G61;PlN!-wQq4Z=l}{ zo17^z^ra`8FWE5f+2cw$jl!Q?D-_m?B8xWKRWJm6OZ_ z#UNNHmc&_B28SuMoR}ciyJf#_Mv+~;*>mdVt}?MPS~qa(+W%BdA8K9bo>#kMquNjN z(!_b9YL_`x(n;-ZU(_QTU&t`IW`}0!ia{Kn}TOa;%`(st^n_|5ERP8*_ z@nNR)_JPU|wttiEY?rA~KO4u%e!Q#7?YK0$Nac+)ju=mC&z>SLlUac<#+(lKd7BG7 z9lpjjO(yi=?C%tJw=k<1@Wu#hp(91;N=LfDOhb9HAw7!`2RI^B@vteIK+C1NJ3n`< zi?PyX8vlhe7W`Hh2dPwL5YLS*gXQ-?J)5Klai(%Zt}t)}jF#-D`7T`14)D7-ml(vk z4DK!WeGu%xDWgKGKn(_Il0rbgZP(u)7^Q|Ye9Mu0g4k|2BK#eE)26$d8X zS9vhd#mIgiPjx&>WrP`A=CIKFRz2D}QaYLFG|nP265VGZr{52v#lE}2o-yOQH*Sol z_TmEtute5ZQ4~;|rSQ1wxwXHXt-JS^(>C(z)|2U2*{*&QH$#lNrOF0&P&*(Z z8*20B4J;s0X`aHzzaVWaCEEb$@@std)_ElNmunLs`t(PpAv&|>_%S-5FE%6sV<0e) zcE$Bo>5v(6A>B1nw6RG%B8w!7X78^rj2!GtUn55@vHF^*Hm;X5r+vMwVJJ{cDfBn+ltiygbfH=I>)G1>X=N|6nUG_bKho$_tM@PfB{L9lr^5X!c7pLM ze&iUq7uvF+sGMU5B{ogxV~N5!>PWebLw^!jS4x*R20>nD0()DGYa@9vIePJQB-DyDKY*b zE%%qE)&YiRu0pJ=2_^b_XnumH?4ZF-x~}k>;8D+h`F1#5#d5<=V4_z5M8yU|3hBJ$ z$NUI}0}$NVKeRFvompbgw4gKv(jV}Ye@8>v9MD-MOT1#F`H3Kl=(i8ubb0UWfEIkyDFzGg{~cx8X<}h zRn`qfHOd*7TZ9u^KEYF7L&F^3Rtm20_?uh^U!ZajF6KN$U>EHgpZ$m+7%gnmU(X6u zOXWs?0oR_WTNc7ak>O05EkRpEM3x#ZoL_g&O8bm1LJY^6K3~18KSJ+Z$w>7UiAwO; z6m+)uLy6c02fN3dU;!vxwMpsDyi7D==+Hc+A}R|j_aS zWZn@lxX?ex%sD;D2IOq3=K(t3spltF&jBEhe+g!{s>V?0N5&bt1BSvFBgro_Dv!V9 z#yLS@{R+KBQf|Cx*rbfNP0Hu2(sMQ~u4f;e!(pJ~l*s3_K+dOu1sCx|p+^?1ec0=@ zHAxvwc_!?h28B)6J@4DCdXqL?Fzsb~_BR>#k62y)0L{|4UEzr}WDoK66<6QJe6MR0 zf&LKv&_WaGXi-DkaMIWD#a`38ziyot*0yH0q;ElKJ!WN|x!-I5`|I;Ov_Vtl6*R~j VHkvxT;~<}Py6^he@LqBG{{UZeflmMc literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/exceptions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c310b4dc6608816a6fa4c25d8476b2617ce73b77 GIT binary patch literal 9215 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/helpers.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2dd27f14dcd163c07f44350de798759d706d3bc0 GIT binary patch literal 7377 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

4|Uy?Yam{$ zy0K-n5%vK<3eL#*s4!rtF2yaFm#!e+qo4u5E`3T_Cjy4_niDX!Z5lUy3Byxus%<$% z_pbnZ1=TbtXYifvTRRR`{GFmWH$pLo*?(2D=hf^56^@7xRIuU~qi^nAk{8k7y2M=V z21ry&FzuT#?Namd;qSF+quQNk<>M=T=Xl`+&0VT{HLzlJ>G&!+(Fr9vE_ihHN&ea7 z*ZVHfGjHG0cTHcN!j;#WZ@i+p4?yuI^G-|}6SS*0P2f$gev5J^Kl&$#cAXju0h$K8 za*uHCwEhWnSuj>5jaEK`v~fx0C}Md~I6qbQE6V=IiYrRIRr_cBm4B)t8aOX}K4Cf^ zf}e4fo5f7MhVtJXp0(l4ILXkL$-&a>>}32BPNqwzK?<&fKxtZ$gyWUt+1;N?ymtnE ztrIpN3*~pJ<5;k$Yd}JZm0-Pqi&LpnmZwgl`#xqqai3?sINe0|$A%|t@bBT8my7fD z3f+*xR5V!p$SX>l2zXt_Ai(9 zD#8C29H?Y(q{yTSP$ioqg~DT+Q!rAhAIeyuhlMukJH)^95Teg*oGLGEQ3E4);+7P- zvz9b4MGY3A>(~!z6KdqtE)TP=aV_!ph~zJc#O)lC6!;d+D5SeX(^IFBILvmc<>E*HCt zbMKM@x?oe$Q)ik`RpJ@P@l0DFc3o3R(~Q%HooU+X)YG(X>$FbVG`Agh>h_PO_j9U9#oslpMLbB^Otxkz7iZQWnd)xKEcda-YO~wv?6o6z+4SoZP2z zKUNx(`wZ^$rM%o{aX(%fm-}2}Vrg4xo7|7#{bXrU?(?|cUfOOYy!`sqMxwOC+rGY2 zjc-_`yVO-Rp|*X&D(&)idE@oF%e&=zPjtOEx_%_O-dEnODr!<~M~#nqx%&NTPEDyD zU$Aajr3btR&_V$vd3`Xt?m>;J+NthBjfd1Ob@vw%rH9pSbq}r|^BzLUM^NHk^$|Sp zRZ88bK8lk2yxjWzIEvoB4Qsb zJ*f6XUmy1#$JYY`Ul-Iv>fz|?6W$Z}`Xt7&s6M71LH|$n`hP0w|7q66nDC6U&kT&B zruM3RQA^Ky&*JMRQ1-c7iP9%kT@}@%XzyUJy@OGEpNiVUGirQlpuKDA<7$7@-XZT0 zzJ3}bdrVCOLeHy)dR!eqi!b!%xul*@Pe$cm^j<*u!{rye7v;KJJ*A#Ty(8)w^(?MO zRZ~5uK8gCrR7)LHpTga7bx3_0-%hCK)eE@3q+V2qaXqPysH3=^QpePBTtA~usF!ek z89kpC__x(bbt>xljQ28noGHKTossKqwX8m)UPk+8dn48Av^o=&Kj)oAxzCo*dgtUS z>!y4)qt3EK>AZIy?=K9jSfI|S&qlRpy;*$yIKJ}w%s{D*IY}uL$-9L2p955Hs8`e_jPX_PRWDU9l|QdOr(VSzFLTW5byZTIml{{RE2!}rT5{{< zT4LT(m(>;da@D)4R@7^%EKe1$f^u_c*}jk{uCAU57HfWCsiis%uTX6@gG#OG7b*qc z3kt3I!hEM$4QegC3R;E5N>ia!tvT;$uUYj9t!AO(2f9^Lg+P0rpZgOsotdH)Cg&=? z=ijlyG~4uE5AZJMyFS2dj3R=}xgJ0cFP-}$g)?D4I27cA%Afi9sTR5sXeDcU{;uXA57A9}6 ze&bX;mA!t!YpTM0OBbZiLaZ}z!d0e`cLp6?YZ8o)5! zOB**9Yt_Ym(SmBBaakXUsZa6h{H`z@L_{Gj|eq z?9jy+<~8_tLQlk}cg|D~UcTr9aF?HX=E)~MdHI;lqq=gV;pxlQz2^1H zr)zVU{aWBX)~-~q0lNO>XyG33&1bs35@zM83{X5xfC(g1dJ6YLP)*?lMaoeYdK;&O z#G2hr)Dy=NSH8OD1XkAx?7DNy)^mZop6ojHRM*8n|EaD?y;c6zBw?4|kbLW#3!w zuvpm;N0^unURwA(0JOzE9y(u^%-W)nIXV=0Ys$x!a$_a4IN?R@+wPRDTg z1)LJLYv-)IHDS3payTY?PkB3UN$H{G=PY;#QN4njK=g?(fVk?`u>_?Z(81QH10Y4$ zx@7|;oG#wuyNe@~r|YbzgA54K+5ira6uXWvVXm<=yv7dtV&}5PTq>;buFLis5Gr2h!4=kf zP^9Se*Eq}_t5t)GO|m(>e+ZvL>sn})MhA+!F{uhqK>U{=YOO^Iki<{L&6bh5z zpG$t2i>MQY^`m${vW)uUEbBIEegNd_t)qUDMfdYGOpGzlMRRR@_47C-tesW{M7hhF zvh*`}-g0q-`%dF)kXQ$4t=k)*1fIcZZ7T90NSov+u^BP{@4N5z3 zn+o1Q(5p_nQLFOdnz!N`L3g1>iC^hUd@@B5Y|XtvVJ|B;_TqaB;?fAw!i`$6NaDI?xoPm>{~YH5Up?Ua;7LzWId0=cJ%gsPUWXH;jh1S(4fh1dI}qv;tyZsw)^2KLcYvCvrb%Pe$IT7b?~ z(JO?&-X%{jczdIjsx^a_CGZNP==T{37Z_{0uG;qT^k^6plyQ4+qLKIFWJlP1w$m%^LjWDQ?rAm)LRI( zFn5U1tG1Tf&;KIY*H7TIy1(3MD2GcIed-KbQ(CGg|{I`360CP9pWr-K&s$}m}7 zgccxl8@enbEVt;EGVw~4GBI#V9s`bev6 z3*T#01JGWVW=C@MVbOuM)WMDc)YC#gdIu({i8({4L_L6q&x7g@WJG?=>RNfx?Tzdg z$sn*V+C~gOb@P@+Rzt+VI+`%p^3gtPAHa`TB`D?%6Ynb&WWJ*7>D|2J;^=#E3SCY@ zKgDM*qsWh9rmw3BDnYLVUld#}O{i99uHnUkzLf8X2rC;ne1dHZG}OL!maaM0WG z_~%ltiyoJ^Cve>*`ka*B1VlnskcrBEH$f2A6S@Et!PO}6eu4LE)-o1dACT{Iz5tC6 z3u#w2prI8mcohu;hSn3={d`UPLCpcl9a;LEgs>z+L*2H=W;r zZ8zV74Qu2dD~g=FQKRul;bF`On%oDgjf(Fdyc!9oX=y=~g|AMZi0tvJ{f6ETyuyhi z0}`4DRm=fBX)JE(m^Tj!AsN9|@4#ee1|z5jdt|Y;0I6P%p42f7 zU_qcQU@yN}3hG7jiA3$X8f zuplUd!kQxbDMW+}OVF+81wYI{t+>(B%AX0h8(_l3Yd~Z0JB^@dmr{K6v>=AarQ!~K z9H7!Ca0Wqz7<7S-^n%Xr{~R zL78~NTHOa9!Ly`h94@^88dBQ=E3xKUu+|3K>AG*&mw+J( zoa3h3%$e(f!~r9roYhZ67}6}9T57j+AV_jBLI6REn!Jb5F>cVujVEu$EOSb~gn9HK z8&0ZL+0-bT@?lncm4*;sxbv{_haTzF8VV>V9-cva9-bRtn1FB_2QJZ3TFx8vGhO^o z^zBdKlyJEW6Sj>-*@?xNwDc9c9fCd;L_(iD%KtAoeGv2k`$uCquQ{uPxw`@Q4#2ws zcqcc(JK2MG@@7)tjVs~33Kg@*i@|@(iLMJ*pVNiUXFa=-=p^9tvDctpfoI*ZEj{AeTjAvD!Dxk}1wH{w=1;lER%yJp z&}?ZBbO=i2tWdI4pJgapZaj4yHcKgJ1+o_+_z z=zl`JS%v!R4Vcz5x_;^&3GFUtw*4<-du0yo;Y!9}Y6>SsXdO-LT}&1}m`j zBHyfmxR>7ql8n{!D>r-M;LQVxCfbMRcYJ*UXlt#WSiK*XhE;aqXo5(oPtx*%NU@Aa zY2GJoY)3m&!H#)n<$G~kP5S_tjH2q`F6Ye^f+ipAj9C=~jk9{V$3}Xq*Aq9!Ef6g? z{m2wGP~uwE8hAWB%Mu!h7|LC6BGZ9)5ik^HuIWP6pXEtR3sDa;r((}?8XxFtF8iH1 zx(&lI(_C46h~&88y=5q&$2`@k)*ugNQRrmN)6~gV1Rul69->7;D$LYk?932Hg(Y!m zjr}swo1-A6ktR+bDZ^yz1{~z0h__8(RAz%hF%J>#4x&}+A|gKQoI3%b;yUDGIV**PN*i3q2G@C5YQik$lGky-zy%^jdfkqlU9wB{;}^MoQ5^n^q2ylveJvZX#J zgi0%T2tL&0#`zM5e-3pa5vjxVi1jV&$|Ite8FHN_*;3LXEC!tlCEXrb|Ag9jMAo0{ zmop`UA>t@$oOEw<{&rd~f-V{w7M7@^krt~j&Q}~YdP%9ZEv0mRKQ45hl zE8gl4}kn99XZNo7cY@c^m-oc6?4*@#BK;3R8S}A)ib2EdLk}FpV zt*1MQw=93En>O=!%hG#BXVOiZ8OIu^0^30;+U_)zgVc45T6*5u$wCdA1+sKKMY7;oQy1N zv`-p^LRhpjq&)OmewKI-B9~V|%5)T5jr^wjBa_=-Y;_t+YDA%1uL3jO@3g50fiIcC zkdG89RYYSs(8h|f8BZ8?H48mgylunm3f2jS8}2AyxOn8k(etOy&6Y15pP4;1bNqCe zEtkcHEtieZs{s?mO;WnsypPS@GQ4{-h5_}8Qj?P@O-8B|*_m*m()Q@hDZaNBd9#^h2K*p(nDjp5xJNthx07vRY=Vs?ZuBM#SFaF4V} zp`OUPaMpvPfrpXTWh_Qn@_5SQ37pM#!R4sGO-39JJnkp?)FbXLmc`qQ&9a(qz#)33 zR>$KZ9R7dBiL@*fjSwp6Za1-c&1t4^b)m`a`XZzMwsO9Jn2Wgo!SR~+gO-x@)C!mh z|B*sT^U#~&Z9R|(vURxT-edr`3pe7JN~#nbd#;J*>6>x+<=0diEk|G0k|>#xlF6v# zH~S@d2W>A8{V#b7Be`-f?ETal;(gsT9EIQRrVQ6ver-9rUw$os-uLqfl@;qQxB4xi zGZ4odT(TY7b>Eo8MxI9q=CMRD70I8lc$YRdI#5!hWP?k z@XDm|wqdS`+tx3M&%0=euM-#2+8yJzG{ooNg^>~4aR*m7!%O1o{%s(jab7+cITSd< z)?gf~S9UnmMhV4sDL`ag@u*<)!&>9o47gG;92%aYt3*Q!UDD}@=n{|WcY1>=yx*W= zr|Kq9QOUl*AyMK9sKmF+0D%FMbcoPEjuSO>tp7ZRHcYB|4e$OzJdjP@eE6B`n{0fm z9zKQ-|1j>sSc?<7fS165c9=1^iU5By(4AnBX#_#J&*}Q`)SqOXG*Vii!38GR=&aV- zhNlhM0@65gUp&MkfS{pEge{HrA>kW*`3q>!z(X)ckY;>nDZYkr`*bBGvMI7FI|bH6 z8vx7*j^imXD?7f9rNG+A*isA@|0UF^a+TsgA~&C_IQ(gx;Ch2gM@asDFcUC~E}cDM z+6h|aOt60$DiuOKdr$=$k?6iX9E)t`QWVLiYeIY->_}9mFlD6U$g;z?GGA-JSS$Bf zMHz}JvW#G1CVVo|1ZJ6YbGH6P+z+u@s+GhdnaLv{kRi3nzB09DuTH_f5SLi&o>|h%drF?xmGa>vR ze(+dU|8R9Om|EX~(YjE%QV*xtPYjI}bA1&}|7E_VHzRZz@s~k`X%qa1OIDO#@VZi-ZAZRX zU;hGY4Kw?2B4Ta=saE?>Nb4t2E&&tL2KSn0X znGyXD57hX4ksn3FUd z9DN%FBR@b=_>VMfL;<6D!t(Vt-i^#~T%b{oCinolH_Xh1`{uozqkk23hNK*ki`@Sx z4oUto1FVBFwBXvPJAvDw9c!%~IJ)Rnuf-OM#O9a^iWr{w(_yS2qvF(38}U=VHLZlkJBgx!C;X|2jh8`#I)ECKT-(V049w%@< z*34`q#mDp9spj<-@=XxQXYxf)f(+v(fwXi>NzTo_rDJ-DIf*rgbt zEdu@#8{TwX#m+?J@gXtbtL8)rxC}T!^CKjVbobLh_-1VrthTmUqeSScfHQL z4W2|R_%+-CGlk#nIDGM?Gq6XGAM5kHFe`=uv_>Dw76ZYRhRo_t+B7Qdy)o2inAYBP zq}O_yt&f5*UB*zcJfF4!GV#!WVZg2%{P%zK+o<{eaC;J8yGZ!!!>*Z=sGEVK16L`c zo?F22=YIwqLA-jY(%1|`6X`xRUwAZ{+oSYH%<2xj4{$3O@1^$U8_1?+P{ib7i7gdJ z=ZTA6MHx?l{_B_mBA5dByU!m#ar*dC0{+OUnLhAK<3o@78wBUy;E8ypzsb`Gf~JX? zfbPqLu0%AGu&B3!@UNqGmAo$gBP9_hsyO^-aU%SfqH<*)JYNYK6HJytG|GXpVL{n& z%MRk2F5JhGhq{~*Pmi}D; zUYUzUEg_LLyaSx$xA3${c5=CdaZKXIEQv`2yGBWAtv=irN^k%@K@{aQC6y4_6m(iW zIZXkxOy4ykv`M~t!d#vl9cr%3isCYFafCQ1XTF7Vm252jBRlJ{w7-gnt_^2PnsObv z=(c`Xl3kh6Q+UZjiQ# z9+@i>^(qNQz3PQ6+7@)tHB_aWNPMqApx!nN?{)Z31{wfaM+pHVs!r6Q47f*u1WvKn zgJFWh^FUt}_*o@hL-(!J9|RejcpqpWn-u8Hv423zFcJup(YCi3=fEt{u1U?3)&(+H z)8-c7lS;F&O74IJz}nxyMTkX{)tZ#II_|=}#HFIqAPVvue3|9!gx13Go(dx>%irYZ zoQ%?huY~Jti{wy`&q#MvU`EM!+W^NQvIjtZpBhtQJG~e?p|9Y8&Oh;PDg`eF!b|!) z_&P-6v+k5rmIt!A6+Vq+WXZv4#B z8l{o0B)s4^HkIyk2Dop*8H@rI_vWl+n@?`4!_h@0P=2I^1=Q(g!6)3xmjS9xeB%8z zt-e(I|I9HW%ty~6%>)1hip z?6tVnpg)LPY&pJx@yEQP-}~mlen6k^!$&@BuOGl3xf0|q17qDhGWqz9_32st+n__F zJ&^L5`G#Pc;WuyN#R${Uf1712i7?3Z!#0>mLtj9$pD)*V6-ASDtCtckmTt;v?8KTQ_w?i{r*~Zbpphny~P~K z92{Mr5x1i<&MIWb9pZs^jPf8;ivNb*rsHfn8o+dxy^4eGD@1<~F_oxJE{fv(PF%*6 z2*!duA~U&L_AN_)Z~0I#q1?gpYh&Fp{Z4l**oHFJHAlZQT)&%(-65tuw2)b!?#o`ayor0Y`Cx9==j_eL7+^RMo8?Pk5p6X@XXVRr1x<536gwoI@Y+s zS3ESDxu#nU>PMs=w(DBODN+B8%5aV4pXNzClcW}t6v1u>;vq#m!u)77LWesj=nV=T zzq1rN4X+vA1ApfcndI4cjBJo!u^Px7xEJ1 zZA5oSz7kg$>|A7GIJi&J=7m|qe7zJXke0CmSIVp*6)WNe*>0w{siVvIF!2ENi+C|I zYsR1wAzT4>XZ}_a)a^!@yXU}x#_JO+-!dF1t_MzZ4({@Etc~p-51RGc(!IDC}@|`*2c<&? zrAB7fODP9Rw%Y%Lc*u=b3FH-|lFUNjE?+9hbagY_cQ5cze;*}=Fb(zk+l*+O4?DKw zfSqgH*Q{>l{EvCJmFF567ZIVf+F7ii+2n)_u-tq4_fcu6cN*h8JST+UJZC5j{xR+! zWz?Ko93}q&zAi2R}-6}wM> z$i}BRB3Sx(?;{FCq<(*n{Aa}U2hh5~^oJr$hmoKLhLIT*w&O2Szae2csh(8c-r0#o<4S z6EhK+Rx7!U{hW96vk8*fNIlW)ap}dBUP8rz9D^}DmUfqW&cPUNdO^HqgL#NAu;vJy z<4MH6#pgK*iJ^n3P>kt6K&>G_avBu4G7Y+3$v)~PDrW0@d2hth1*occ;zkk(BPg}D zkS(V~51_qzN%%&gQaCIbSu=3pJ#KE9oqDj)^ynF)kJWF(RV`}R`I8r9j~5*yP|HMv zGuSS%EO|CrHdzzGqK!#x{JRkAjydh?vg2+bmG3?3e#r}&m4Z~`1#Uq!@02&t;{U) zvfpAb0Cf<9l9Xn_v{F9G%QGo?TZw>4(~!5+4pt=oRU$z0m}LT*5mV7c7X3RsZvqNR z8f0Q|AWW3U8p|PjfbVS8btHWx>#xRM323-}{}|^@F@qlcDSVX>BP}%UQM3J>T_@TP zWkoRqrz|n9y6lMJ-UgLGaspD@ku!_jHzZ)pQvXrn#(^~9ZZ*Ugu=@d);0A0dEK6!e zzlpxWu`=yXCRD-C&nd6&JId@$=C;9W2kT^@fC!a8M|1Z_8}iE}TF9pOf#GZNMrU=_qU@PA5t{W?#iV*R&x`WjCYz0-Ewg;>%kbut<^M;!&h zxarJ=I!k{XQXk(-x%%Iu&d}1P@S?{j7V#jvnJr;f&Hhzx=fJW^JX_5?CPnc*(_7xa7Xl|-f|%WMKk zj|ET)DrRn5?TJ|T!IkWhKj;wOxnv5MH1|eY>!}T7C<`-9!b7kd8Vm4n&xBb`q)N7{~TJ#qXopkZdzMswHs_+v>4}&oFd`;#7?Zpa_EDHzBmmuDXvz;rh_OG1M4BpopJ}>q7L92WKtL_izK34~!0upENLo-He^ZCa+EJ9h z*O@WqPY7Yo&R`GFh#^2S!;iXna9oK3B>EAViR8TWS*yu#apziU1uPWN4c`MM3dxZc zO5+@NIUcwEr))uVq95{ZgaTvEHjnKjUm>m)P$-dcBVFI{)Ew5aUCe|Ir;n#73#=#VduS9+)a55Xe$)6dONGm8-~W_ssTsI!cgx2_GyB^9HCGyKqM#x7}1wV7Zd%+tR;F z_;DSmKQa*#d+4D<0$%?O?}n%pCHsP!asoI{`y}$_`FqUo;)tVO#55Eg*}05zuq^nK z3*2WS$$s#=-A<93>SIiGt>-C4EWnfkf3OAo7E-hwG0ep2&1O@Wqgqw-6EyoU7Wp}$ zqOJcU?+K*hxF)AHoF99R{W8)_#p`QQjmGh@lsOl_6D9D+tUzVjY#QIoyN~lE4G!px zC8VOli_ZaV03G6w`XRd z!OV`nW~meMe^ZUY2C8AYTn3yVTED@0h{=8ncctVFU1{UjvY_JdXY7oACxTBXTu4~p zN4r#$Ohj2M?T9K&-Wv%MW;aZ7xmeX049>}%40#AZ7@t@3sD zLcEPea*V^&5v1yzZ4ac${VI#4qg+Shg8VwGzs=LH^YmLheT%2>@Fb?@@A2;YIF;^R z@vz}!3#icz5hmf3LU&@@{eX4;kf%T3r|jX_0usetQ&BBtk5iqUVJg-ivrzIBH<*Z~ zBWaWR2J4^aiA)#YDfq%{?}rbCw+P1T7g?&$-{nr!tjr;^>GOH|0sQ}s6Mczd}JWu3yW+rj>Q0B4B{>(k{H67)TcJ9CF>1mEgilY8$xh>0*snybQyk2At#kPKJd8M(|lq`FqO{+Q8B%2!c zjH-JmO?$>kEHCT?@InZJoPq@j?8UbrheeJ-kV66ldk*>#Y<4d(a>#8Dj@QcfUiA!z zBiWlFr>eTT>eZ`y|F0(4waeA;`Ks}2|0geN+HdG#^kd@Tb$pX06hfX{J%T8G3{FOP#1Gyw&2mbVh7L!dHj<82tHK^nDUcUiX9 zy^TOdtxn=4t&VJ9{aARNq<|MRRzt#pkVy*^l6m(FoR(Ib*K;?#-w4|TE5VbMw8I8! zhj2}!CiS_g4B}+DCD)UAGqV=5sEsmQSwVSkwb{@KRPmvq3~^Nn7n(H^Zg#GPu_a<*kh{-nexoTDp})Y53iC(6|E{CASKi zyim|=q20|ZNw6IHwBWOZEupRHhVJTBT~46gppMaxiHFzmP5uEzsDZ^aVz0U>jJg$R z^^!1!1-7xnvM34rV{E(bh_Z0dR}tS4Rk7=1z3z%rVoFS-H6eD38N92CJz^I1F0oha zLp>?JEB1>67%?RdibLp`7KgfK^NJSC3c&5U?KJS{x5_K4Hs8F3V?S@EnmhEaRP zbK*Gaed2_89`$}PFHWL9ASyWQ7xT%pih-{x{>|1?u*iUEivv0}&V!1X2cwwnmZN5v zxE_64a==;(F86>+9)UgAk}F<2NYhZp3;ZUV8~|yy0ujo`_{YHMGXLB{Bh}XQp5_}p zZOusDi@;01$)&YI?UJCkHkakpc|d)Y)ZLueqE;2Ns%yK@!WXScv?c{$`BThyX6@1! z0*lN~%POk8v?PNl&K=(uQ6u&Jd{=?0-yku{r+kQoPung!X8q*=Pr{GZ+bx;;tF6|Z zB;OY_?*-k&r~Uci{WOFmL%izM7UXO_%0eGtb2ACk{P6I#U$ClwZxxK&j6k9iaH>yV zA4uQ35m>quNE1HoV8AD=hXoH8*P<*IOlFTedWG7rU^`5>3 zg*2~cf5_*|%sV{igmr4rZa2I1V%>vMChlH|pl-aAaZ7|J7v>GQ58(3B1`!HRbZ)st zFUR*X%|o_nmR!cr!DgNw+sydb+Vx8fVvWJaMq{XR{{;`(K9(A`fS(zC)P3uw7SBTe zLW;U42O2mwPHR0wm>o^t&Sr(RX{OqyMF+8^_YKV0hZ&{rpQ!OY^u4dCIXE(VLz5p< z-7^kqYvrDP$Jl;e)OwcuIVr)WvtH?!bgfq+E3oPI^q#Q=JK8hlFM0;P+U5j$aP%o8 zRRE4~J~KXo%?2?lUoNN<4hFU}h8-onKxwV^7hr%aYRykd3qa~q zu*JTzv#bc})mm$j&F&>Ag4|kbMR9#MIFu&&q$YV-K5>~f#6>Avl6gG0NRQ-G#Re7_ zfl$h$w2I3*hP(1vj8K3S-}`h1lDIgZEjWeu1AEWV=WWG!4#6NS@-imUq}*8!n$0Dc z#N1X};MK;Nla$^z=2x*$vVcM}41E$>U=ljOft{R%opcT7kzq`JZCI{u8C7E%Z_v`M zN7-C~TVZ4tb^y(_2A$^ML)=VX7Re)Mu#n=_#7X2Q!Dp@L&ua3=A1W3IYs~ zCD+udZSO?BfYI_aig}YUS2z=QjiWoGcIYQ*XQ|MwZ46TwgQ(dvW2Ah1e1i}jdnkw87*}6rbvAnsmvTO+gD%p7H=a_4G~ngI>9@1(vm2p_NSnnDDBrC7#GlbK$gd@U6&pJ?l7E#TdA>D+JtQ+TdHdhjqJULdiGBk4+}>Yuy6IOH7BjCxoZ=E^w)S(Mb9o+ z-cqk5jE*iJ_DVOkn-FvPQ-TQH2S|(BLp^?FICqjEOf4H5=$CH|`=Eqbm)u+keNvyO<$k`~dPtdVG60<^Ye`1k8gx;?M}x zpFI)kVV?2JoqNSP|28&y7fzQ>>%Vw?8?-Ew#{ufj5hmn;h{|VXu?Is|N9W^oX4js2 zXmtM)=Yz~awuE^{E@(e~tM6o|dQK0*d=oyV4$9f;l*%8LiHZ*m`R)@THAnrihsNFG zz4AwZ!6%Hle8Q;dgbO%-zYQmzVaR{C-Gi8#w5uzh1{aejzmAy3_iNelD~LxZEAT<# z5A;11y?FPcboCYY19%@T*@x({c_ZbT&2M{16wSbluD2=R8TeyEPz%|K^Fe$f^_C-K z9|BbHtH_U1ig$ZWcvKAk66#Y}V*Y96@>8Ud8?7X_;bArIiM-TU6_MoFJTIfg9?V{L zjM%MGfZ1r|R@!Zcl5}$JUghZEIy&mrYw!E@%h#^Hec{HHi}@517lS~Jta$E_&Z5jm zy>i|^cjNMv>z8Z!#CiYXd)F`47B9bDlV<@@>8`yT%oS_$`h<@x(*RP^`Anf_M*KW> z?nYg=d;$oafBWjS%U3R5VC-sVuU=fdcJ};5`F#R%DCsN}Yb0SH8>>*W3dN*e!Q4yl zyj{OoljM%cc`9a5%vZKeVqR^u;uLPLa!$*wrtoo?a41`ySooCP$!)blZiM%99WE;c ztz!mMJ`cE`;G6s$g=SEsr#w4HpFyh%FR+T*ei6F%m$qS1T==z9s=^y|;0;z!p#R?u zc!`txH1sjGtlwFd@zsISi4IOun5YTJ+OS-kmg!<^Qu(`fyVVN}s?J+iIY z3Z8#!U~LzW4wdlqr2)vUK8KjJ`pDL^XUFt>Fz~^O^CWWZu;gS*NZGTZr?4qSG76zk zl~M!jvgqqZf9PjHt(y?@pY^S54z?ZYJ1wo*Yvui#Ft?0bM!(dzi;&6b)(0Ye_m~Qq zvKm6G3Y4R@ALhDW?%A8JnlCIE1E*I;7-YkD_-W4}zW_ZZ3_^Kx7xj`_*)sc;UPY-E zPNhwD|8aDcyT?vzcaL#e!yfem&tPZl3}lsIY(77gS0D^3X))sQPC;1w%U7?x{myj~ zg2mjHY@Q{Zk&;AYE!w&JE@clm+Q=t{fI^vt%KV0mKCR*2~B*a`587ZRhwZcND&%tUDQq%JTOP!C?P@3!J zc?%0}w}aZy=O|`DO*PW4Ax1xMR(9g_XDl#B(L9wCj9fr4~*;|zc z*$xBeUGe}(RD55h9q`B-_Z8KqNl?4#YAY_X8f;vUDM=ASFLhES<=Z-hDk_heXGTrQN4UN^BkI{z2ooTa%24qTy`o5MS$3zsuX`f*U ztU7qzW&=p`ibve)rY*$c}f@^lo!D(+Ho zhl(c&8~glZ##qo;_UcYl2w#1-GHhuSq_`y_;T!np4yNSg!nnzG0>COWrhbdvnHDu2 zCXoyulg|VEf-aAW>>`q%=_<~1KS^pGb2VdDci@fhkXH7)_mxW$d=p<*(v+Sdw?(BQ=+Ye=X#{;B|4wm>Maf$VN60}T zzpuFw7G^Jjh7D2=nV-0odP~F&2xz<(^sc-YC1G*xNOzI93Bqk}y_4`j#G;+JL1CT( z5j5z&o72QNI`Cy6S32vsQ1@ShxFiDZbO35C#Oe!_h^wF@?e`Y(Ll z0?AefcL@cah0`k3gG->U7sVSSUWvN-BBe|mIJo_y zHhFj{*nY@iYT;8#Iy@Zd5H0+Og=RoxQ~te+;?V&r>hh(LHoMzQ$1W;T|5f~KLnZ5h z0tl0r3kH`T;DqY?NZS#=`@pXA8Z*wKmEp)A5tWFWG#j@V2gc|$9JYf4vSZ`&opKl^X!~2FN3T3lPhse}l@Xj_9+$jzYU1^TNc@}KC&4#50 zL6Uu}_Qad-34X7Ba`4B)Js~NR9U9xy$Ut1LT)%{KqI)3x&S&KRpt4(J-}0*O-vvLA zjNs=EW&H4=)qsyl!XPK9I7p)${6Y!&wX`b_Qy<;XsT|Zx)S}ECr>|7HjC@g!!6gM~ z?DtEGo#X};_o>LJ;O+h?wYK9rZjp<~zsERtL58y%M$2?8cg`(4HvT5u zbIu`Wk2~W|xu+c0u^g9Y&R6B16BMGNe3uHkAYiY#ez@SMg$RiQl ph<|(`Z_+IGu<1(RNr>jo86_64k_t_zuu4caAa%umre!+i{{te33(Eii literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/mixins.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c8c27a8ec53cd07393df809567720ba1a890ae6 GIT binary patch literal 5859 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/objects.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..371546bf5601dfd4b695f1159a4693a1046ba423 GIT binary patch literal 9669 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 =8NVin-?(ET|lcfxGgui2C5bdn*kbj^gls4ti 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/rebuilder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a73620042d7cbf5e4901fd7b218d2819933ca05 GIT binary patch literal 35317 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 wkGDz*CKV6kI0ISU7;CSiII)xX`smGP$48 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�Lg14Kcx%?Yg*^<5W)@RTbe}!t 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/test_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f34ea1d02edf55c5be127a3e73f16596270edc2 GIT binary patch literal 2536 zcmb7GOOG2x5bo|7Ki2z56v9ebAWWq2m_SSdWF?}_DpA4>Sx8H=iE$XsPPcc*9?v-4 z?R^-V18cO-fdl^_IqqNTBb;*Ph9ZTk9`7q50ov;7=X6(pRbQ3E+1Uz#@;v%II5kDc zA2>K(92ne$s(t{$Nu6-YSwid7wye%<>(m|Fx^>sKg?a&6CnoCEOH%WxDWtGnMGVK2f=@Z9>O2fU6~>(rea!aA9^GS2 z$EsN#vH_}7>Ob&qXPs^+g|{iB0(HEs>2-JX2K3@o3)z(dq^C1bOnB?@rhqM}sCp~y zxNGN7^@;~2ZhBe5g{<09?G???3@cDA&;!yf4(O2d7qkU@L}R%09)Q7y>?f91^7ab30yFTkVlAR@)j>g!5EzAZ z9>jn=oEuV225{6pLdheBpY2lw)`5rbGsCJ^4Bgx(vJCtGszuiucNJjNxOVOHt6w$l z2-VhEx3MbLZp&~h5wZc$Y&O1$*BUC;;&L~P+TprTjfojQL!5#hSYK7UJ7#KWU8G{W zE0@tue?lewt5Q7b#Zm+lTU3{lED95~Tm=g$aWp*q*3fEy@kj8JI9(rlvGUSPdm%WI zlp@lHHofktjjWe&Z%ugjs}H`f)*n{kp~d_|-!%o@>n6e!R2O{HRPKdIPkb$9CQT8% zvlD9Hk+YzpDRI#Zdxs)Yg4(Hx|F2u0PM=$ zCyW<(ab&+o2YX5%6YV^K)u$ARu}6R!C0-ttcj<&2Q?+M!y`kU+U&1*Sx|GB- z(5V1xS%Cgaph;xKCpbS1qJQhP;6xiDY6q`fK6Hr)jyWu-BwqSHRCOH$phJ38zN?XJ zbWF#r$>sqAKx$zO)Pc1{yT-=kXw6c}srCJu5L|iR=J8?K`#@E_+dc5L^vKu131PZ_ z>BQEh8*kX_GgE|+1N1Pif~W#xHZNlrR;nThQm9OyJ}WOlFG80-DA-4aVrx?lFv(`l zQ5ga{(X_?#kUjv$LSS}Y4a|oGUw|{#F*KhU(gAIeF=;dD4(M;}k-L(sx=)Rph8^KE ziCP(&N=qL54Euu0QW7g2K~`H{h8;PrF02b3;CBHg&0~S|aIf#w=WId^vStt^p;8jb zW850v=F}@nhf)VknRVo+xKM~wF1B<0tP1w_*%KGtfQ<@|Ayi%kc_M&denRpiVbvmt zoRbidFx|~_f_Z5*pJn-MI+t@ZA5Bu7Q!~Xd*$Q`*JOifyd&)qY6fy$1s){=h*qd`K(nXEjKV67}|HOeqL>76pN+L>c^1 z*w#tBCNIL8ynx~h6z4$HOOpg>@w5(Pu`qL!?>b=$c~aUdj_GxzTzRRJ@m?a9F+wUN TjtiN^{#cpKIF*kou1o(0uxE5N literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/__pycache__/transforms.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce41affeac9bf2f126bd9f205b4dfebe9b23e0ea GIT binary patch literal 3424 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 (3, 8) +if PY38: + # On Python 3.8, typed_ast was merged back into `ast` + _ast_py3 = ast + + +FunctionType = namedtuple("FunctionType", ["argtypes", "returns"]) + + +class ParserModule( + namedtuple( + "ParserModule", + [ + "module", + "unary_op_classes", + "cmp_op_classes", + "bool_op_classes", + "bin_op_classes", + "context_classes", + ], + ) +): + def parse(self, string: str, type_comments=True): + if self.module is _ast_py3: + if PY38: + parse_func = partial(self.module.parse, type_comments=type_comments) + else: + parse_func = partial( + self.module.parse, feature_version=sys.version_info.minor + ) + else: + parse_func = self.module.parse + return parse_func(string) + + +def parse_function_type_comment(type_comment: str) -> Optional[FunctionType]: + """Given a correct type comment, obtain a FunctionType object""" + if _ast_py3 is None: + return None + + func_type = _ast_py3.parse(type_comment, "", "func_type") + return FunctionType(argtypes=func_type.argtypes, returns=func_type.returns) + + +def get_parser_module(type_comments=True) -> ParserModule: + if not type_comments: + parser_module = ast + else: + parser_module = _ast_py3 + parser_module = parser_module or ast + + unary_op_classes = _unary_operators_from_module(parser_module) + cmp_op_classes = _compare_operators_from_module(parser_module) + bool_op_classes = _bool_operators_from_module(parser_module) + bin_op_classes = _binary_operators_from_module(parser_module) + context_classes = _contexts_from_module(parser_module) + + return ParserModule( + parser_module, + unary_op_classes, + cmp_op_classes, + bool_op_classes, + bin_op_classes, + context_classes, + ) + + +def _unary_operators_from_module(module): + return {module.UAdd: "+", module.USub: "-", module.Not: "not", module.Invert: "~"} + + +def _binary_operators_from_module(module): + binary_operators = { + module.Add: "+", + module.BitAnd: "&", + module.BitOr: "|", + module.BitXor: "^", + module.Div: "/", + module.FloorDiv: "//", + module.MatMult: "@", + module.Mod: "%", + module.Mult: "*", + module.Pow: "**", + module.Sub: "-", + module.LShift: "<<", + module.RShift: ">>", + } + return binary_operators + + +def _bool_operators_from_module(module): + return {module.And: "and", module.Or: "or"} + + +def _compare_operators_from_module(module): + return { + module.Eq: "==", + module.Gt: ">", + module.GtE: ">=", + module.In: "in", + module.Is: "is", + module.IsNot: "is not", + module.Lt: "<", + module.LtE: "<=", + module.NotEq: "!=", + module.NotIn: "not in", + } + + +def _contexts_from_module(module): + return { + module.Load: astroid.Load, + module.Store: astroid.Store, + module.Del: astroid.Del, + module.Param: astroid.Store, + } diff --git a/WebCrawler/venv/Lib/site-packages/astroid/arguments.py b/WebCrawler/venv/Lib/site-packages/astroid/arguments.py new file mode 100644 index 0000000..5f4d909 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/arguments.py @@ -0,0 +1,300 @@ +# Copyright (c) 2015-2016, 2018-2020 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Anthony Sottile + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +from astroid import bases +from astroid import context as contextmod +from astroid import exceptions +from astroid import nodes +from astroid import util + + +class CallSite: + """Class for understanding arguments passed into a call site + + It needs a call context, which contains the arguments and the + keyword arguments that were passed into a given call site. + In order to infer what an argument represents, call :meth:`infer_argument` + with the corresponding function node and the argument name. + + :param callcontext: + An instance of :class:`astroid.context.CallContext`, that holds + the arguments for the call site. + :param argument_context_map: + Additional contexts per node, passed in from :attr:`astroid.context.Context.extra_context` + :param context: + An instance of :class:`astroid.context.Context`. + """ + + def __init__(self, callcontext, argument_context_map=None, context=None): + if argument_context_map is None: + argument_context_map = {} + self.argument_context_map = argument_context_map + args = callcontext.args + keywords = callcontext.keywords + self.duplicated_keywords = set() + self._unpacked_args = self._unpack_args(args, context=context) + self._unpacked_kwargs = self._unpack_keywords(keywords, context=context) + + self.positional_arguments = [ + arg for arg in self._unpacked_args if arg is not util.Uninferable + ] + self.keyword_arguments = { + key: value + for key, value in self._unpacked_kwargs.items() + if value is not util.Uninferable + } + + @classmethod + def from_call(cls, call_node, context=None): + """Get a CallSite object from the given Call node. + + :param context: + An instance of :class:`astroid.context.Context` that will be used + to force a single inference path. + """ + + # Determine the callcontext from the given `context` object if any. + context = context or contextmod.InferenceContext() + callcontext = contextmod.CallContext(call_node.args, call_node.keywords) + return cls(callcontext, context=context) + + def has_invalid_arguments(self): + """Check if in the current CallSite were passed *invalid* arguments + + This can mean multiple things. For instance, if an unpacking + of an invalid object was passed, then this method will return True. + Other cases can be when the arguments can't be inferred by astroid, + for example, by passing objects which aren't known statically. + """ + return len(self.positional_arguments) != len(self._unpacked_args) + + def has_invalid_keywords(self): + """Check if in the current CallSite were passed *invalid* keyword arguments + + For instance, unpacking a dictionary with integer keys is invalid + (**{1:2}), because the keys must be strings, which will make this + method to return True. Other cases where this might return True if + objects which can't be inferred were passed. + """ + return len(self.keyword_arguments) != len(self._unpacked_kwargs) + + def _unpack_keywords(self, keywords, context=None): + values = {} + context = context or contextmod.InferenceContext() + context.extra_context = self.argument_context_map + for name, value in keywords: + if name is None: + # Then it's an unpacking operation (**) + try: + inferred = next(value.infer(context=context)) + except exceptions.InferenceError: + values[name] = util.Uninferable + continue + + if not isinstance(inferred, nodes.Dict): + # Not something we can work with. + values[name] = util.Uninferable + continue + + for dict_key, dict_value in inferred.items: + try: + dict_key = next(dict_key.infer(context=context)) + except exceptions.InferenceError: + values[name] = util.Uninferable + continue + if not isinstance(dict_key, nodes.Const): + values[name] = util.Uninferable + continue + if not isinstance(dict_key.value, str): + values[name] = util.Uninferable + continue + if dict_key.value in values: + # The name is already in the dictionary + values[dict_key.value] = util.Uninferable + self.duplicated_keywords.add(dict_key.value) + continue + values[dict_key.value] = dict_value + else: + values[name] = value + return values + + def _unpack_args(self, args, context=None): + values = [] + context = context or contextmod.InferenceContext() + context.extra_context = self.argument_context_map + for arg in args: + if isinstance(arg, nodes.Starred): + try: + inferred = next(arg.value.infer(context=context)) + except exceptions.InferenceError: + values.append(util.Uninferable) + continue + + if inferred is util.Uninferable: + values.append(util.Uninferable) + continue + if not hasattr(inferred, "elts"): + values.append(util.Uninferable) + continue + values.extend(inferred.elts) + else: + values.append(arg) + return values + + def infer_argument(self, funcnode, name, context): + """infer a function argument value according to the call context + + Arguments: + funcnode: The function being called. + name: The name of the argument whose value is being inferred. + context: Inference context object + """ + if name in self.duplicated_keywords: + raise exceptions.InferenceError( + "The arguments passed to {func!r} " " have duplicate keywords.", + call_site=self, + func=funcnode, + arg=name, + context=context, + ) + + # Look into the keywords first, maybe it's already there. + try: + return self.keyword_arguments[name].infer(context) + except KeyError: + pass + + # Too many arguments given and no variable arguments. + if len(self.positional_arguments) > len(funcnode.args.args): + if not funcnode.args.vararg: + raise exceptions.InferenceError( + "Too many positional arguments " + "passed to {func!r} that does " + "not have *args.", + call_site=self, + func=funcnode, + arg=name, + context=context, + ) + + positional = self.positional_arguments[: len(funcnode.args.args)] + vararg = self.positional_arguments[len(funcnode.args.args) :] + argindex = funcnode.args.find_argname(name)[0] + kwonlyargs = {arg.name for arg in funcnode.args.kwonlyargs} + kwargs = { + key: value + for key, value in self.keyword_arguments.items() + if key not in kwonlyargs + } + # If there are too few positionals compared to + # what the function expects to receive, check to see + # if the missing positional arguments were passed + # as keyword arguments and if so, place them into the + # positional args list. + if len(positional) < len(funcnode.args.args): + for func_arg in funcnode.args.args: + if func_arg.name in kwargs: + arg = kwargs.pop(func_arg.name) + positional.append(arg) + + if argindex is not None: + # 2. first argument of instance/class method + if argindex == 0 and funcnode.type in ("method", "classmethod"): + if context.boundnode is not None: + boundnode = context.boundnode + else: + # XXX can do better ? + boundnode = funcnode.parent.frame() + + if isinstance(boundnode, nodes.ClassDef): + # Verify that we're accessing a method + # of the metaclass through a class, as in + # `cls.metaclass_method`. In this case, the + # first argument is always the class. + method_scope = funcnode.parent.scope() + if method_scope is boundnode.metaclass(): + return iter((boundnode,)) + + if funcnode.type == "method": + if not isinstance(boundnode, bases.Instance): + boundnode = boundnode.instantiate_class() + return iter((boundnode,)) + if funcnode.type == "classmethod": + return iter((boundnode,)) + # if we have a method, extract one position + # from the index, so we'll take in account + # the extra parameter represented by `self` or `cls` + if funcnode.type in ("method", "classmethod"): + argindex -= 1 + # 2. search arg index + try: + return self.positional_arguments[argindex].infer(context) + except IndexError: + pass + + if funcnode.args.kwarg == name: + # It wants all the keywords that were passed into + # the call site. + if self.has_invalid_keywords(): + raise exceptions.InferenceError( + "Inference failed to find values for all keyword arguments " + "to {func!r}: {unpacked_kwargs!r} doesn't correspond to " + "{keyword_arguments!r}.", + keyword_arguments=self.keyword_arguments, + unpacked_kwargs=self._unpacked_kwargs, + call_site=self, + func=funcnode, + arg=name, + context=context, + ) + kwarg = nodes.Dict( + lineno=funcnode.args.lineno, + col_offset=funcnode.args.col_offset, + parent=funcnode.args, + ) + kwarg.postinit( + [(nodes.const_factory(key), value) for key, value in kwargs.items()] + ) + return iter((kwarg,)) + if funcnode.args.vararg == name: + # It wants all the args that were passed into + # the call site. + if self.has_invalid_arguments(): + raise exceptions.InferenceError( + "Inference failed to find values for all positional " + "arguments to {func!r}: {unpacked_args!r} doesn't " + "correspond to {positional_arguments!r}.", + positional_arguments=self.positional_arguments, + unpacked_args=self._unpacked_args, + call_site=self, + func=funcnode, + arg=name, + context=context, + ) + args = nodes.Tuple( + lineno=funcnode.args.lineno, + col_offset=funcnode.args.col_offset, + parent=funcnode.args, + ) + args.postinit(vararg) + return iter((args,)) + + # Check if it's a default parameter. + try: + return funcnode.args.default_value(name).infer(context) + except exceptions.NoDefault: + pass + raise exceptions.InferenceError( + "No value found for argument {name} to " "{func!r}", + call_site=self, + func=funcnode, + arg=name, + context=context, + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/as_string.py b/WebCrawler/venv/Lib/site-packages/astroid/as_string.py new file mode 100644 index 0000000..653411f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/as_string.py @@ -0,0 +1,631 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2010 Daniel Harding +# Copyright (c) 2013-2016, 2018-2020 Claudiu Popa +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Jared Garst +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2017, 2019 Łukasz Rogalski +# Copyright (c) 2017 rr- +# Copyright (c) 2018 Serhiy Storchaka +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 brendanator +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2019 Alex Hall +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""This module renders Astroid nodes as string: + +* :func:`to_code` function return equivalent (hopefully valid) python string + +* :func:`dump` function return an internal representation of nodes found + in the tree, useful for debugging or understanding the tree structure +""" + +# pylint: disable=unused-argument + +DOC_NEWLINE = "\0" + + +class AsStringVisitor: + """Visitor to render an Astroid node as a valid python code string""" + + def __init__(self, indent): + self.indent = indent + + def __call__(self, node): + """Makes this visitor behave as a simple function""" + return node.accept(self).replace(DOC_NEWLINE, "\n") + + def _docs_dedent(self, doc): + """Stop newlines in docs being indented by self._stmt_list""" + return '\n%s"""%s"""' % (self.indent, doc.replace("\n", DOC_NEWLINE)) + + def _stmt_list(self, stmts, indent=True): + """return a list of nodes to string""" + stmts = "\n".join(nstr for nstr in [n.accept(self) for n in stmts] if nstr) + if indent: + return self.indent + stmts.replace("\n", "\n" + self.indent) + + return stmts + + def _precedence_parens(self, node, child, is_left=True): + """Wrap child in parens only if required to keep same semantics""" + if self._should_wrap(node, child, is_left): + return "(%s)" % child.accept(self) + + return child.accept(self) + + def _should_wrap(self, node, child, is_left): + """Wrap child if: + - it has lower precedence + - same precedence with position opposite to associativity direction + """ + node_precedence = node.op_precedence() + child_precedence = child.op_precedence() + + if node_precedence > child_precedence: + # 3 * (4 + 5) + return True + + if ( + node_precedence == child_precedence + and is_left != node.op_left_associative() + ): + # 3 - (4 - 5) + # (2**3)**4 + return True + + return False + + ## visit_ methods ########################################### + + def visit_await(self, node): + return "await %s" % node.value.accept(self) + + def visit_asyncwith(self, node): + return "async %s" % self.visit_with(node) + + def visit_asyncfor(self, node): + return "async %s" % self.visit_for(node) + + def visit_arguments(self, node): + """return an astroid.Function node as string""" + return node.format_args() + + def visit_assignattr(self, node): + """return an astroid.AssAttr node as string""" + return self.visit_attribute(node) + + def visit_assert(self, node): + """return an astroid.Assert node as string""" + if node.fail: + return "assert %s, %s" % (node.test.accept(self), node.fail.accept(self)) + return "assert %s" % node.test.accept(self) + + def visit_assignname(self, node): + """return an astroid.AssName node as string""" + return node.name + + def visit_assign(self, node): + """return an astroid.Assign node as string""" + lhs = " = ".join(n.accept(self) for n in node.targets) + return "%s = %s" % (lhs, node.value.accept(self)) + + def visit_augassign(self, node): + """return an astroid.AugAssign node as string""" + return "%s %s %s" % (node.target.accept(self), node.op, node.value.accept(self)) + + def visit_annassign(self, node): + """Return an astroid.AugAssign node as string""" + + target = node.target.accept(self) + annotation = node.annotation.accept(self) + if node.value is None: + return "%s: %s" % (target, annotation) + return "%s: %s = %s" % (target, annotation, node.value.accept(self)) + + def visit_repr(self, node): + """return an astroid.Repr node as string""" + return "`%s`" % node.value.accept(self) + + def visit_binop(self, node): + """return an astroid.BinOp node as string""" + left = self._precedence_parens(node, node.left) + right = self._precedence_parens(node, node.right, is_left=False) + if node.op == "**": + return "%s%s%s" % (left, node.op, right) + + return "%s %s %s" % (left, node.op, right) + + def visit_boolop(self, node): + """return an astroid.BoolOp node as string""" + values = ["%s" % self._precedence_parens(node, n) for n in node.values] + return (" %s " % node.op).join(values) + + def visit_break(self, node): + """return an astroid.Break node as string""" + return "break" + + def visit_call(self, node): + """return an astroid.Call node as string""" + expr_str = self._precedence_parens(node, node.func) + args = [arg.accept(self) for arg in node.args] + if node.keywords: + keywords = [kwarg.accept(self) for kwarg in node.keywords] + else: + keywords = [] + + args.extend(keywords) + return "%s(%s)" % (expr_str, ", ".join(args)) + + def visit_classdef(self, node): + """return an astroid.ClassDef node as string""" + decorate = node.decorators.accept(self) if node.decorators else "" + args = [n.accept(self) for n in node.bases] + if node._metaclass and not node.has_metaclass_hack(): + args.append("metaclass=" + node._metaclass.accept(self)) + args += [n.accept(self) for n in node.keywords] + args = "(%s)" % ", ".join(args) if args else "" + docs = self._docs_dedent(node.doc) if node.doc else "" + return "\n\n%sclass %s%s:%s\n%s\n" % ( + decorate, + node.name, + args, + docs, + self._stmt_list(node.body), + ) + + def visit_compare(self, node): + """return an astroid.Compare node as string""" + rhs_str = " ".join( + [ + "%s %s" % (op, self._precedence_parens(node, expr, is_left=False)) + for op, expr in node.ops + ] + ) + return "%s %s" % (self._precedence_parens(node, node.left), rhs_str) + + def visit_comprehension(self, node): + """return an astroid.Comprehension node as string""" + ifs = "".join(" if %s" % n.accept(self) for n in node.ifs) + generated = "for %s in %s%s" % ( + node.target.accept(self), + node.iter.accept(self), + ifs, + ) + return "%s%s" % ("async " if node.is_async else "", generated) + + def visit_const(self, node): + """return an astroid.Const node as string""" + if node.value is Ellipsis: + return "..." + return repr(node.value) + + def visit_continue(self, node): + """return an astroid.Continue node as string""" + return "continue" + + def visit_delete(self, node): # XXX check if correct + """return an astroid.Delete node as string""" + return "del %s" % ", ".join(child.accept(self) for child in node.targets) + + def visit_delattr(self, node): + """return an astroid.DelAttr node as string""" + return self.visit_attribute(node) + + def visit_delname(self, node): + """return an astroid.DelName node as string""" + return node.name + + def visit_decorators(self, node): + """return an astroid.Decorators node as string""" + return "@%s\n" % "\n@".join(item.accept(self) for item in node.nodes) + + def visit_dict(self, node): + """return an astroid.Dict node as string""" + return "{%s}" % ", ".join(self._visit_dict(node)) + + def _visit_dict(self, node): + for key, value in node.items: + key = key.accept(self) + value = value.accept(self) + if key == "**": + # It can only be a DictUnpack node. + yield key + value + else: + yield "%s: %s" % (key, value) + + def visit_dictunpack(self, node): + return "**" + + def visit_dictcomp(self, node): + """return an astroid.DictComp node as string""" + return "{%s: %s %s}" % ( + node.key.accept(self), + node.value.accept(self), + " ".join(n.accept(self) for n in node.generators), + ) + + def visit_expr(self, node): + """return an astroid.Discard node as string""" + return node.value.accept(self) + + def visit_emptynode(self, node): + """dummy method for visiting an Empty node""" + return "" + + def visit_excepthandler(self, node): + if node.type: + if node.name: + excs = "except %s as %s" % ( + node.type.accept(self), + node.name.accept(self), + ) + else: + excs = "except %s" % node.type.accept(self) + else: + excs = "except" + return "%s:\n%s" % (excs, self._stmt_list(node.body)) + + def visit_ellipsis(self, node): + """return an astroid.Ellipsis node as string""" + return "..." + + def visit_empty(self, node): + """return an Empty node as string""" + return "" + + def visit_exec(self, node): + """return an astroid.Exec node as string""" + if node.locals: + return "exec %s in %s, %s" % ( + node.expr.accept(self), + node.locals.accept(self), + node.globals.accept(self), + ) + if node.globals: + return "exec %s in %s" % (node.expr.accept(self), node.globals.accept(self)) + return "exec %s" % node.expr.accept(self) + + def visit_extslice(self, node): + """return an astroid.ExtSlice node as string""" + return ", ".join(dim.accept(self) for dim in node.dims) + + def visit_for(self, node): + """return an astroid.For node as string""" + fors = "for %s in %s:\n%s" % ( + node.target.accept(self), + node.iter.accept(self), + self._stmt_list(node.body), + ) + if node.orelse: + fors = "%s\nelse:\n%s" % (fors, self._stmt_list(node.orelse)) + return fors + + def visit_importfrom(self, node): + """return an astroid.ImportFrom node as string""" + return "from %s import %s" % ( + "." * (node.level or 0) + node.modname, + _import_string(node.names), + ) + + def visit_joinedstr(self, node): + string = "".join( + # Use repr on the string literal parts + # to get proper escapes, e.g. \n, \\, \" + # But strip the quotes off the ends + # (they will always be one character: ' or ") + repr(value.value)[1:-1] + # Literal braces must be doubled to escape them + .replace("{", "{{").replace("}", "}}") + # Each value in values is either a string literal (Const) + # or a FormattedValue + if type(value).__name__ == "Const" else value.accept(self) + for value in node.values + ) + + # Try to find surrounding quotes that don't appear at all in the string. + # Because the formatted values inside {} can't contain backslash (\) + # using a triple quote is sometimes necessary + for quote in ["'", '"', '"""', "'''"]: + if quote not in string: + break + + return "f" + quote + string + quote + + def visit_formattedvalue(self, node): + result = node.value.accept(self) + if node.conversion and node.conversion >= 0: + # e.g. if node.conversion == 114: result += "!r" + result += "!" + chr(node.conversion) + if node.format_spec: + # The format spec is itself a JoinedString, i.e. an f-string + # We strip the f and quotes of the ends + result += ":" + node.format_spec.accept(self)[2:-1] + return "{%s}" % result + + def handle_functiondef(self, node, keyword): + """return a (possibly async) function definition node as string""" + decorate = node.decorators.accept(self) if node.decorators else "" + docs = self._docs_dedent(node.doc) if node.doc else "" + trailer = ":" + if node.returns: + return_annotation = " -> " + node.returns.as_string() + trailer = return_annotation + ":" + def_format = "\n%s%s %s(%s)%s%s\n%s" + return def_format % ( + decorate, + keyword, + node.name, + node.args.accept(self), + trailer, + docs, + self._stmt_list(node.body), + ) + + def visit_functiondef(self, node): + """return an astroid.FunctionDef node as string""" + return self.handle_functiondef(node, "def") + + def visit_asyncfunctiondef(self, node): + """return an astroid.AsyncFunction node as string""" + return self.handle_functiondef(node, "async def") + + def visit_generatorexp(self, node): + """return an astroid.GeneratorExp node as string""" + return "(%s %s)" % ( + node.elt.accept(self), + " ".join(n.accept(self) for n in node.generators), + ) + + def visit_attribute(self, node): + """return an astroid.Getattr node as string""" + left = self._precedence_parens(node, node.expr) + if left.isdigit(): + left = "(%s)" % left + return "%s.%s" % (left, node.attrname) + + def visit_global(self, node): + """return an astroid.Global node as string""" + return "global %s" % ", ".join(node.names) + + def visit_if(self, node): + """return an astroid.If node as string""" + ifs = ["if %s:\n%s" % (node.test.accept(self), self._stmt_list(node.body))] + if node.has_elif_block(): + ifs.append("el%s" % self._stmt_list(node.orelse, indent=False)) + elif node.orelse: + ifs.append("else:\n%s" % self._stmt_list(node.orelse)) + return "\n".join(ifs) + + def visit_ifexp(self, node): + """return an astroid.IfExp node as string""" + return "%s if %s else %s" % ( + self._precedence_parens(node, node.body, is_left=True), + self._precedence_parens(node, node.test, is_left=True), + self._precedence_parens(node, node.orelse, is_left=False), + ) + + def visit_import(self, node): + """return an astroid.Import node as string""" + return "import %s" % _import_string(node.names) + + def visit_keyword(self, node): + """return an astroid.Keyword node as string""" + if node.arg is None: + return "**%s" % node.value.accept(self) + return "%s=%s" % (node.arg, node.value.accept(self)) + + def visit_lambda(self, node): + """return an astroid.Lambda node as string""" + args = node.args.accept(self) + body = node.body.accept(self) + if args: + return "lambda %s: %s" % (args, body) + + return "lambda: %s" % body + + def visit_list(self, node): + """return an astroid.List node as string""" + return "[%s]" % ", ".join(child.accept(self) for child in node.elts) + + def visit_listcomp(self, node): + """return an astroid.ListComp node as string""" + return "[%s %s]" % ( + node.elt.accept(self), + " ".join(n.accept(self) for n in node.generators), + ) + + def visit_module(self, node): + """return an astroid.Module node as string""" + docs = '"""%s"""\n\n' % node.doc if node.doc else "" + return docs + "\n".join(n.accept(self) for n in node.body) + "\n\n" + + def visit_name(self, node): + """return an astroid.Name node as string""" + return node.name + + def visit_namedexpr(self, node): + """Return an assignment expression node as string""" + target = node.target.accept(self) + value = node.value.accept(self) + return "%s := %s" % (target, value) + + def visit_nonlocal(self, node): + """return an astroid.Nonlocal node as string""" + return "nonlocal %s" % ", ".join(node.names) + + def visit_pass(self, node): + """return an astroid.Pass node as string""" + return "pass" + + def visit_print(self, node): + """return an astroid.Print node as string""" + nodes = ", ".join(n.accept(self) for n in node.values) + if not node.nl: + nodes = "%s," % nodes + if node.dest: + return "print >> %s, %s" % (node.dest.accept(self), nodes) + return "print %s" % nodes + + def visit_raise(self, node): + """return an astroid.Raise node as string""" + if node.exc: + if node.cause: + return "raise %s from %s" % ( + node.exc.accept(self), + node.cause.accept(self), + ) + return "raise %s" % node.exc.accept(self) + return "raise" + + def visit_return(self, node): + """return an astroid.Return node as string""" + if node.is_tuple_return() and len(node.value.elts) > 1: + elts = [child.accept(self) for child in node.value.elts] + return "return %s" % ", ".join(elts) + + if node.value: + return "return %s" % node.value.accept(self) + + return "return" + + def visit_index(self, node): + """return an astroid.Index node as string""" + return node.value.accept(self) + + def visit_set(self, node): + """return an astroid.Set node as string""" + return "{%s}" % ", ".join(child.accept(self) for child in node.elts) + + def visit_setcomp(self, node): + """return an astroid.SetComp node as string""" + return "{%s %s}" % ( + node.elt.accept(self), + " ".join(n.accept(self) for n in node.generators), + ) + + def visit_slice(self, node): + """return an astroid.Slice node as string""" + lower = node.lower.accept(self) if node.lower else "" + upper = node.upper.accept(self) if node.upper else "" + step = node.step.accept(self) if node.step else "" + if step: + return "%s:%s:%s" % (lower, upper, step) + return "%s:%s" % (lower, upper) + + def visit_subscript(self, node): + """return an astroid.Subscript node as string""" + idx = node.slice + if idx.__class__.__name__.lower() == "index": + idx = idx.value + idxstr = idx.accept(self) + if idx.__class__.__name__.lower() == "tuple" and idx.elts: + # Remove parenthesis in tuple and extended slice. + # a[(::1, 1:)] is not valid syntax. + idxstr = idxstr[1:-1] + return "%s[%s]" % (self._precedence_parens(node, node.value), idxstr) + + def visit_tryexcept(self, node): + """return an astroid.TryExcept node as string""" + trys = ["try:\n%s" % self._stmt_list(node.body)] + for handler in node.handlers: + trys.append(handler.accept(self)) + if node.orelse: + trys.append("else:\n%s" % self._stmt_list(node.orelse)) + return "\n".join(trys) + + def visit_tryfinally(self, node): + """return an astroid.TryFinally node as string""" + return "try:\n%s\nfinally:\n%s" % ( + self._stmt_list(node.body), + self._stmt_list(node.finalbody), + ) + + def visit_tuple(self, node): + """return an astroid.Tuple node as string""" + if len(node.elts) == 1: + return "(%s, )" % node.elts[0].accept(self) + return "(%s)" % ", ".join(child.accept(self) for child in node.elts) + + def visit_unaryop(self, node): + """return an astroid.UnaryOp node as string""" + if node.op == "not": + operator = "not " + else: + operator = node.op + return "%s%s" % (operator, self._precedence_parens(node, node.operand)) + + def visit_while(self, node): + """return an astroid.While node as string""" + whiles = "while %s:\n%s" % (node.test.accept(self), self._stmt_list(node.body)) + if node.orelse: + whiles = "%s\nelse:\n%s" % (whiles, self._stmt_list(node.orelse)) + return whiles + + def visit_with(self, node): # 'with' without 'as' is possible + """return an astroid.With node as string""" + items = ", ".join( + ("%s" % expr.accept(self)) + (vars and " as %s" % (vars.accept(self)) or "") + for expr, vars in node.items + ) + return "with %s:\n%s" % (items, self._stmt_list(node.body)) + + def visit_yield(self, node): + """yield an ast.Yield node as string""" + yi_val = (" " + node.value.accept(self)) if node.value else "" + expr = "yield" + yi_val + if node.parent.is_statement: + return expr + + return "(%s)" % (expr,) + + def visit_yieldfrom(self, node): + """ Return an astroid.YieldFrom node as string. """ + yi_val = (" " + node.value.accept(self)) if node.value else "" + expr = "yield from" + yi_val + if node.parent.is_statement: + return expr + + return "(%s)" % (expr,) + + def visit_starred(self, node): + """return Starred node as string""" + return "*" + node.value.accept(self) + + # These aren't for real AST nodes, but for inference objects. + + def visit_frozenset(self, node): + return node.parent.accept(self) + + def visit_super(self, node): + return node.parent.accept(self) + + def visit_uninferable(self, node): + return str(node) + + def visit_property(self, node): + return node.function.accept(self) + + def visit_evaluatedobject(self, node): + return node.original.accept(self) + + +def _import_string(names): + """return a list of (name, asname) formatted as a string""" + _names = [] + for name, asname in names: + if asname is not None: + _names.append("%s as %s" % (name, asname)) + else: + _names.append(name) + return ", ".join(_names) + + +# This sets the default indent to 4 spaces. +to_code = AsStringVisitor(" ") diff --git a/WebCrawler/venv/Lib/site-packages/astroid/bases.py b/WebCrawler/venv/Lib/site-packages/astroid/bases.py new file mode 100644 index 0000000..9c74303 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/bases.py @@ -0,0 +1,548 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2012 FELD Boris +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2016-2017 Derek Gustafson +# Copyright (c) 2017 Calen Pennington +# Copyright (c) 2018-2019 hippo91 +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Daniel Colascione +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""This module contains base classes and functions for the nodes and some +inference utils. +""" + +import builtins +import collections + +from astroid import context as contextmod +from astroid import exceptions +from astroid import util + +objectmodel = util.lazy_import("interpreter.objectmodel") +helpers = util.lazy_import("helpers") +BUILTINS = builtins.__name__ +manager = util.lazy_import("manager") +MANAGER = manager.AstroidManager() + +# TODO: check if needs special treatment +BUILTINS = "builtins" +BOOL_SPECIAL_METHOD = "__bool__" + +PROPERTIES = {BUILTINS + ".property", "abc.abstractproperty"} +# List of possible property names. We use this list in order +# to see if a method is a property or not. This should be +# pretty reliable and fast, the alternative being to check each +# decorator to see if its a real property-like descriptor, which +# can be too complicated. +# Also, these aren't qualified, because each project can +# define them, we shouldn't expect to know every possible +# property-like decorator! +POSSIBLE_PROPERTIES = { + "cached_property", + "cachedproperty", + "lazyproperty", + "lazy_property", + "reify", + "lazyattribute", + "lazy_attribute", + "LazyProperty", + "lazy", + "cache_readonly", +} + + +def _is_property(meth, context=None): + decoratornames = meth.decoratornames(context=context) + if PROPERTIES.intersection(decoratornames): + return True + stripped = { + name.split(".")[-1] for name in decoratornames if name is not util.Uninferable + } + if any(name in stripped for name in POSSIBLE_PROPERTIES): + return True + + # Lookup for subclasses of *property* + if not meth.decorators: + return False + for decorator in meth.decorators.nodes or (): + inferred = helpers.safe_infer(decorator, context=context) + if inferred is None or inferred is util.Uninferable: + continue + if inferred.__class__.__name__ == "ClassDef": + for base_class in inferred.bases: + if base_class.__class__.__name__ != "Name": + continue + module, _ = base_class.lookup(base_class.name) + if module.name == BUILTINS and base_class.name == "property": + return True + + return False + + +class Proxy: + """a simple proxy object + + Note: + + Subclasses of this object will need a custom __getattr__ + if new instance attributes are created. See the Const class + """ + + _proxied = None # proxied object may be set by class or by instance + + def __init__(self, proxied=None): + if proxied is not None: + self._proxied = proxied + + def __getattr__(self, name): + if name == "_proxied": + return getattr(self.__class__, "_proxied") + if name in self.__dict__: + return self.__dict__[name] + return getattr(self._proxied, name) + + def infer(self, context=None): + yield self + + +def _infer_stmts(stmts, context, frame=None): + """Return an iterator on statements inferred by each statement in *stmts*.""" + inferred = False + if context is not None: + name = context.lookupname + context = context.clone() + else: + name = None + context = contextmod.InferenceContext() + + for stmt in stmts: + if stmt is util.Uninferable: + yield stmt + inferred = True + continue + context.lookupname = stmt._infer_name(frame, name) + try: + for inferred in stmt.infer(context=context): + yield inferred + inferred = True + except exceptions.NameInferenceError: + continue + except exceptions.InferenceError: + yield util.Uninferable + inferred = True + if not inferred: + raise exceptions.InferenceError( + "Inference failed for all members of {stmts!r}.", + stmts=stmts, + frame=frame, + context=context, + ) + + +def _infer_method_result_truth(instance, method_name, context): + # Get the method from the instance and try to infer + # its return's truth value. + meth = next(instance.igetattr(method_name, context=context), None) + if meth and hasattr(meth, "infer_call_result"): + if not meth.callable(): + return util.Uninferable + try: + for value in meth.infer_call_result(instance, context=context): + if value is util.Uninferable: + return value + + inferred = next(value.infer(context=context)) + return inferred.bool_value() + except exceptions.InferenceError: + pass + return util.Uninferable + + +class BaseInstance(Proxy): + """An instance base class, which provides lookup methods for potential instances.""" + + special_attributes = None + + def display_type(self): + return "Instance of" + + def getattr(self, name, context=None, lookupclass=True): + try: + values = self._proxied.instance_attr(name, context) + except exceptions.AttributeInferenceError as exc: + if self.special_attributes and name in self.special_attributes: + return [self.special_attributes.lookup(name)] + + if lookupclass: + # Class attributes not available through the instance + # unless they are explicitly defined. + return self._proxied.getattr(name, context, class_context=False) + + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) from exc + # since we've no context information, return matching class members as + # well + if lookupclass: + try: + return values + self._proxied.getattr( + name, context, class_context=False + ) + except exceptions.AttributeInferenceError: + pass + return values + + def igetattr(self, name, context=None): + """inferred getattr""" + if not context: + context = contextmod.InferenceContext() + try: + # avoid recursively inferring the same attr on the same class + if context.push((self._proxied, name)): + raise exceptions.InferenceError( + message="Cannot infer the same attribute again", + node=self, + context=context, + ) + + # XXX frame should be self._proxied, or not ? + get_attr = self.getattr(name, context, lookupclass=False) + yield from _infer_stmts( + self._wrap_attr(get_attr, context), context, frame=self + ) + except exceptions.AttributeInferenceError as error: + try: + # fallback to class.igetattr since it has some logic to handle + # descriptors + # But only if the _proxied is the Class. + if self._proxied.__class__.__name__ != "ClassDef": + raise + attrs = self._proxied.igetattr(name, context, class_context=False) + yield from self._wrap_attr(attrs, context) + except exceptions.AttributeInferenceError as error: + raise exceptions.InferenceError(**vars(error)) from error + + def _wrap_attr(self, attrs, context=None): + """wrap bound methods of attrs in a InstanceMethod proxies""" + for attr in attrs: + if isinstance(attr, UnboundMethod): + if _is_property(attr): + yield from attr.infer_call_result(self, context) + else: + yield BoundMethod(attr, self) + elif hasattr(attr, "name") and attr.name == "": + if attr.args.arguments and attr.args.arguments[0].name == "self": + yield BoundMethod(attr, self) + continue + yield attr + else: + yield attr + + def infer_call_result(self, caller, context=None): + """infer what a class instance is returning when called""" + context = contextmod.bind_context_to_node(context, self) + inferred = False + for node in self._proxied.igetattr("__call__", context): + if node is util.Uninferable or not node.callable(): + continue + for res in node.infer_call_result(caller, context): + inferred = True + yield res + if not inferred: + raise exceptions.InferenceError(node=self, caller=caller, context=context) + + +class Instance(BaseInstance): + """A special node representing a class instance.""" + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.InstanceModel()) + + def __repr__(self): + return "" % ( + self._proxied.root().name, + self._proxied.name, + id(self), + ) + + def __str__(self): + return "Instance of %s.%s" % (self._proxied.root().name, self._proxied.name) + + def callable(self): + try: + self._proxied.getattr("__call__", class_context=False) + return True + except exceptions.AttributeInferenceError: + return False + + def pytype(self): + return self._proxied.qname() + + def display_type(self): + return "Instance of" + + def bool_value(self, context=None): + """Infer the truth value for an Instance + + The truth value of an instance is determined by these conditions: + + * if it implements __bool__ on Python 3 or __nonzero__ + on Python 2, then its bool value will be determined by + calling this special method and checking its result. + * when this method is not defined, __len__() is called, if it + is defined, and the object is considered true if its result is + nonzero. If a class defines neither __len__() nor __bool__(), + all its instances are considered true. + """ + context = context or contextmod.InferenceContext() + context.callcontext = contextmod.CallContext(args=[]) + context.boundnode = self + + try: + result = _infer_method_result_truth(self, BOOL_SPECIAL_METHOD, context) + except (exceptions.InferenceError, exceptions.AttributeInferenceError): + # Fallback to __len__. + try: + result = _infer_method_result_truth(self, "__len__", context) + except (exceptions.AttributeInferenceError, exceptions.InferenceError): + return True + return result + + # This is set in inference.py. + def getitem(self, index, context=None): + pass + + +class UnboundMethod(Proxy): + """a special node representing a method not bound to an instance""" + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.UnboundMethodModel()) + + def __repr__(self): + frame = self._proxied.parent.frame() + return "<%s %s of %s at 0x%s" % ( + self.__class__.__name__, + self._proxied.name, + frame.qname(), + id(self), + ) + + def implicit_parameters(self): + return 0 + + def is_bound(self): + return False + + def getattr(self, name, context=None): + if name in self.special_attributes: + return [self.special_attributes.lookup(name)] + return self._proxied.getattr(name, context) + + def igetattr(self, name, context=None): + if name in self.special_attributes: + return iter((self.special_attributes.lookup(name),)) + return self._proxied.igetattr(name, context) + + def infer_call_result(self, caller, context): + """ + The boundnode of the regular context with a function called + on ``object.__new__`` will be of type ``object``, + which is incorrect for the argument in general. + If no context is given the ``object.__new__`` call argument will + correctly inferred except when inside a call that requires + the additional context (such as a classmethod) of the boundnode + to determine which class the method was called from + """ + + # If we're unbound method __new__ of builtin object, the result is an + # instance of the class given as first argument. + if ( + self._proxied.name == "__new__" + and self._proxied.parent.frame().qname() == "%s.object" % BUILTINS + ): + if caller.args: + node_context = context.extra_context.get(caller.args[0]) + infer = caller.args[0].infer(context=node_context) + else: + infer = [] + return (Instance(x) if x is not util.Uninferable else x for x in infer) + return self._proxied.infer_call_result(caller, context) + + def bool_value(self, context=None): + return True + + +class BoundMethod(UnboundMethod): + """a special node representing a method bound to an instance""" + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.BoundMethodModel()) + + def __init__(self, proxy, bound): + UnboundMethod.__init__(self, proxy) + self.bound = bound + + def implicit_parameters(self): + if self.name == "__new__": + # __new__ acts as a classmethod but the class argument is not implicit. + return 0 + return 1 + + def is_bound(self): + return True + + def _infer_type_new_call(self, caller, context): + """Try to infer what type.__new__(mcs, name, bases, attrs) returns. + + In order for such call to be valid, the metaclass needs to be + a subtype of ``type``, the name needs to be a string, the bases + needs to be a tuple of classes + """ + # pylint: disable=import-outside-toplevel; circular import + from astroid import node_classes + + # Verify the metaclass + mcs = next(caller.args[0].infer(context=context)) + if mcs.__class__.__name__ != "ClassDef": + # Not a valid first argument. + return None + if not mcs.is_subtype_of("%s.type" % BUILTINS): + # Not a valid metaclass. + return None + + # Verify the name + name = next(caller.args[1].infer(context=context)) + if name.__class__.__name__ != "Const": + # Not a valid name, needs to be a const. + return None + if not isinstance(name.value, str): + # Needs to be a string. + return None + + # Verify the bases + bases = next(caller.args[2].infer(context=context)) + if bases.__class__.__name__ != "Tuple": + # Needs to be a tuple. + return None + inferred_bases = [next(elt.infer(context=context)) for elt in bases.elts] + if any(base.__class__.__name__ != "ClassDef" for base in inferred_bases): + # All the bases needs to be Classes + return None + + # Verify the attributes. + attrs = next(caller.args[3].infer(context=context)) + if attrs.__class__.__name__ != "Dict": + # Needs to be a dictionary. + return None + cls_locals = collections.defaultdict(list) + for key, value in attrs.items: + key = next(key.infer(context=context)) + value = next(value.infer(context=context)) + # Ignore non string keys + if key.__class__.__name__ == "Const" and isinstance(key.value, str): + cls_locals[key.value].append(value) + + # Build the class from now. + cls = mcs.__class__( + name=name.value, + lineno=caller.lineno, + col_offset=caller.col_offset, + parent=caller, + ) + empty = node_classes.Pass() + cls.postinit( + bases=bases.elts, + body=[empty], + decorators=[], + newstyle=True, + metaclass=mcs, + keywords=[], + ) + cls.locals = cls_locals + return cls + + def infer_call_result(self, caller, context=None): + context = contextmod.bind_context_to_node(context, self.bound) + if ( + self.bound.__class__.__name__ == "ClassDef" + and self.bound.name == "type" + and self.name == "__new__" + and len(caller.args) == 4 + ): + # Check if we have a ``type.__new__(mcs, name, bases, attrs)`` call. + new_cls = self._infer_type_new_call(caller, context) + if new_cls: + return iter((new_cls,)) + + return super().infer_call_result(caller, context) + + def bool_value(self, context=None): + return True + + +class Generator(BaseInstance): + """a special node representing a generator. + + Proxied class is set once for all in raw_building. + """ + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.GeneratorModel()) + + # pylint: disable=super-init-not-called + def __init__(self, parent=None): + self.parent = parent + + def callable(self): + return False + + def pytype(self): + return "%s.generator" % BUILTINS + + def display_type(self): + return "Generator" + + def bool_value(self, context=None): + return True + + def __repr__(self): + return "" % ( + self._proxied.name, + self.lineno, + id(self), + ) + + def __str__(self): + return "Generator(%s)" % (self._proxied.name) + + +class AsyncGenerator(Generator): + """Special node representing an async generator""" + + def pytype(self): + return "%s.async_generator" % BUILTINS + + def display_type(self): + return "AsyncGenerator" + + def __repr__(self): + return "" % ( + self._proxied.name, + self.lineno, + id(self), + ) + + def __str__(self): + return "AsyncGenerator(%s)" % (self._proxied.name) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_argparse.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0fead1537367c3adaf66b0a50538e6d74f3ffe4f GIT binary patch literal 1079 zcmYjRO>fgc5Zzs`Kaw`31`s`UKXm>|46U3HgqP|CbMkN3hKy7)c~8 zNktP{v4mA#;#EB1m7n;O$WVHcf2K(weHnZvNvP;aq`ac1xC)k3g{K~5v6m!{en2e} z`!0OGH{5&j_=W2UJ(*Xkw#NB&Bb9N3ydEp9>P)3JpSeq~jCy+RIZ$IUFYPd6Sm$g7 za0dcpAGWE%SW?h}wWOtzeqjsNvcfYvmM_UCYWzxcv$(SxFkmAFbx-e^Mt3F!S8;VMq znaGsu$tE*a=k+As&>jFwqJ2@8FLSGs-dHzPn!z#InyTXujh5*@DKt{j$jL?fr7#9~ zyI>|j73(~sY|?vN&Ft|I1apzFR@d;+WFxPQ6(}6KjN|YjooubVHWyZ<8CHt}$5Cq? zc9;-^K}`KFnqtUtECDFRRCSK8L~lX%&o|lb2s)z8= zDm{9y>i45(`OyfAUI!(nVxr7QfD}zGZysrp*DH&Rft67=X21hnTc;7-fE~cKLG>kwWEA6P3ugjV?&e?@9-zNuK`m{m#r`sVucZZ-bjq4L=q-Hk z2TM5Na}i25g&~z**Haxq1rYZP;b9y(KAzW^>*wZN=T(b(dmvSQGzYN<_zqVeXWDU` z1JD_4%=85a=xsEp;>uja#R@L|1j47&3t_od@&uy z{UkgSR3qtZZUxG>vt$`v(*6p=OD8qF$D;5zyX0z&(JTn8@(`-A7t z4*JeKuqr#nsP^rq7|mB2MtkVH^M<{nYtM4@Ji3$W`TE_y7|jgV8L{@4!-3U>xeHT2 z0kS|P(hFD2`DW>P^bPn5W#>A&L1yI) zt6xqx1p%Gz0{RE!ImlOq4|HveZN0(nHviPlJ&Gr^pd7^V5k~%qX8a1G%6Rejxt%LGS4+PY8?{0-@mVHrt9FPI2Q6; zfTql7rE7O2*@g10%pWw(Tz3XSEVtent!7-oV}(@568nJF-NDh(!H-YV{lSZ8hjjqh zx2RCI=(XQEqwZO4iv@rzKr~sqjjVOM@2M3KCf$tj+`3?K-B?hcS$?P{I&F9s!wrzt zs6{mz{3j zfR9Fr$nZ3iFu7BHra)(76@gyr2@RK1%F~G2DHjU~6B{iIeG`+Ur__)s{X|clsWYHc za)5N#$dn-P%4B6viBu!r5&H|S9Lr3`5@f@YcnD0Mq+%3DEJ}pdpeIje87>KZ#`yq@ zFh+5{s3Ga!Ww!8Fiw4`Iz>HPO9ux=p+?9UcQ5I`nOR`8L+OOoUrJcJG=Ah9Zr_rC` zUx@Os^~Zj+8t!WpHe6nQ^zdoe20b*{VfY4mEhRoApu%HFkHgKl7wXu+y+aWV#Q=0D zN{8p}ic``dd9h`5?djVrOrM?{>PcH(DLO-fZpdbl>t<`_0Xb^^H!OZ#TC(K24fh|6#t4ZQ9}>RLx`dXYxAdGK)A5>KE*leP4*KEYN~W(HvY; xFo?AQbxA$HY;IDuy_9_a;4F7@bw<5s*m&&B6ozX5@#@_hgR literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_builtin_inference.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a63f665a4511a2cf7c0cc2a46d673f1cfefe4a2 GIT binary patch literal 20562 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 J>){7s_%F7&$q4`e literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_crypt.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e2097bed5b2384ae1d82bfc5be220a310eb594c GIT binary patch literal 851 zcmZva&u`N(6vyrSSgUH~%rUnv()iJq1egF(+Ch=lZdx}@iy}pC{JLdLlgRc8<;dn<+Q1<=}hLQABZ! zykf>426UxSZEAWt=**=$H9jNH0DNNtzS^QD7`Hl>%m~?AOUa|5tu190w5&)MDy3}d zq$>wkR}$z3Q+%sfZAiXgglg8>CM=y)BdfAzZLDqPdyLzXo3s+mbK0az9SP zJ^z#g0Qc8PAB`D_lEMce zTVw#e%NgFrBn@JY&M+p1esO@s}s{bE(Q^2}ARUCDL6;LMOxzCD*0k*yL$$t3lR zqx1IDBKAImi--$g!7QcMF$C~YKth3el|g6NdAEQ3_mhg1>fF5gq6mMbT6Wd0Rb16- JnqgG${RSV>)7Jn1 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_curses.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..903483ee9d1ad91d728692f4794ae20ee1301913 GIT binary patch literal 3367 zcmZu!!EW0|5TztLG1BJHTaP~U;zQCpK~SVZPC2Lvrjd`Pd$c{z6fpoh4m!XIBJ7aNf?&&d$77)w8BBv!e>M0enD)xxeZLHT7_9cn-iJXCM&XIUh3(B0v1*@c0%CWt^VavXYS{MsZ?EaXN{? zmUAX!ZUL#%36mC(X_X6ZFQ~;tpbwS~-H<`XD(PZmfROPM$QY;S@C)L~a6`nXi>NUXQ!(li+>BCDSot@@ zTna|xAXFDRqahTv4@2S%(AjCmMszQkhaiDMVuO1Ca}kl|g02Kw*rj1y^^r`+X-5yE zBk69~G4X^wC1Uu5h@2{ON7?l`6eBvFrCiYExl~qdH3?Bkg7rlws_dKs$jzLFSvYgV zSxh%Rj2(@!kd(g()0FUu0C3Zps0m#-wF}VfKxKlKiOTX=rIb|}_LW!_6x1S8WS?3L zg%%h!7sX7E9W0Y>6`@j&4Z_ib!YM&u&W^xM9B@B#z;`4HK_^qd{ZxTdqTm!X2x<3V z6H{>03tm}z2?sCZ;H4bAh6GN70I#dTE?R)c3-E{myNCcgnSiKUxLEHFI}q`c4t~=G z?dRN2IuwA!rG*E0uu(?t((;rNB(_Ugh^G`v*x4O38HafoLRSq9AQkWGu|X8mor4Vm zp)(1f>#ePZYc?01BaKEOrG3XhU-(JrEfq1X?c*BNA~DjAu_$JVvZ81f7>Vx+``kuo zOfL(FNM<^G*Eq~X=`SgLTT*hRQ|okSrs`dwyYZ^f@%-1@y+Y+$?~gNQI}Ocd-m+f@$*?!)~~i# z*R#{|f>(=omt{43TW;RY&5cb;$>OSZjF9^Q7zV+_B~&|LHqUN>z{5u zx&5ARtHq}N{;GO?&-{Ndub{Wr>;GGs&*{B(#?fBYN3q2|t;(0{dRtcW*H^1Im*u?t oaa(RyWi`Ez7Y&S#?)-1R%paYbgRfil7v|4Ov(Uld;OF4+f6v9~VgLXD literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dataclasses.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ccc8a1360df100aa606b70c194acb23e1b021fe GIT binary patch literal 1279 zcmZ8h&2Aev5GJ|5TFXx0AOYF}!5*^(>Y_z`NDveeB)2`J4j?%wuvM|4mXx&env_Y( zh6L&4T>B2mv9H8qd+I9`4bq_`%R#xAAvrrUJDl(1(*6Ae!T7iQvydS|f4R-4BY@2d z5d9MLS-`@#I1gCF;7quN8%sxmPM85#FL=&VFhI{MP1b5JHPgcZ`B{AN_zai?$l1zdX z?B9j&(Gp)Fb+{@0^3X+P-lEgxW~M}Xre-{?hAB-MFQuY}vs6gN(=pXxe6y?Q&8-6* zl}@L1#o5shXIYdd+d!$b4P2R)kj)qhzH`nodwt0^td>4@w8wwkX2n@VhSu{$HzN7K3eqSD2#8O3#F#&;eE4uboj z5DBr5oA87nF;-2mmDs)64oAHRWR2PtEF5Zp)MSMXUSdNg9*93AH$*?a3{9{EQUZ2I zOFRih2s#>Jhatp#w{pHQ*cu=Sc#_|}mA~{y7_#myy-D*q+V1u@yUS;nA@cxhe{tO9 z*9yAeK)xktYGgX#DW|%s=jlu^Xr_^prGt4oo!6BxHZoL=xX}Pn2nH^sO-fl8ayZo7 z*lL@@xpEX$?$ox?5~8JbH4--5&Jpm*!Kn6~L%2z8qu1hG$ZMfoU)4QO z`N1u73g@nY9l!=CK$f)DS)dxuX%DU#WG@_Z)*019XO7iaZ)}bwYpSR{SlI`=a~DQY zq2az>d=4-4V^GLT@F6CC{4pls2NJ{ptb53ZFgU>KGw{e7HYy4x%c5AHP`T@A8$%@* zTtGAON1fJLtNpUo>z(w9&Pn@Kw{`Za+gr0@ogqI|d{k+})m;TPZo7X)hYvTU{;%lx d`GsV&nt$)X$JV6t{TMgB*lRZ9M?Q`}{s#zCVm|-? literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_dateutil.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4dc121fc76ada077ac21823ebb7dacd4a0c42de1 GIT binary patch literal 685 zcmYjPO>fgc5Z$$%*i?EvWd#%|`1G$zT zQjYv3AK}DbKuBfQPM~A$c;D0Pn~z{DNP4*1rrS|3)7b9tAA2M*P9bKNZOF3hi;(gkxK`ps;YTDaUC>~rRG*B z>ZUJ2LS?@*3|*{qzdue-v-bwjWXH#k9-d?`z$~n;vkx#iL$N9Vvva7JMm%trMa~QxkXVKx{z|8GMe^T@Q4T8yYjB^265}XZS1fe z4JJ_&=DF0n8 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_fstrings.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bae3ccc36bcec630c69e3a4e43101403ff452ca8 GIT binary patch literal 1547 zcmbVM&2Jqw5VyTweqTu%D$#-vU*hnD8VXVmpeUkh013f65b>eaR?BAXm+Z@C_r-P+ z75SY4qL*^v${~@sMrwEuU~g ze#gbLEriAU(DejB5J78_b|X!xU$c}6CW3EC8i-ItFou%OB0)v`9lJ?HauBJHC7Z?P z2_To@1*2eRhm83Z*d&uOz+u^jFviePrhf%^NM>Xa0MbPW$QF@hFb0+i`ctrozb8}b z@8>q!CTDb!*icPud>;Cp5SVcr;?4!7#0FDR5gY$Zf1nF)qK8C8XH5NKBk0L_d_lI! z{o5H^^cH>FSIQ)|Z}_Zt#@8{k(I0W3z6{qSjj*Pfz_n$GuxBfy-160Ut^yTfx~X zz&cKlljHMNo2seIWuQhV#pk3Vfbq!nav)o1o#*K&Z_U0``LvR?&~7zfI=>VseElvy zo{Pdrm+TiBqwXSz*P(X(N>`0GMN>*Qfc)07G*#PZ$9Lq>u|)Cn{}Gms&o$&T>vZ@mFLfO@(*gRE`&8?6^@)Q^f#Z!l_0d-Y=-80C-Spbs;J`v1xu1{HbVgRZ{@uu!WiL!3c%9xy+r z-TEL+SJ z5}xj1T>TAQ_^`MXhR?l_8&xzKug$x=!E&eiGVE(i8i8o8Ks<*KLq_|65XUz_euW;4 z*%dOpLYqMOCJZjn546IBbfi$%4Nsts;brAjGi}r4)4P+qAARsyx~}A2r42mae~75p j@ucVY6g*qLdDx2MT5e&&G!_Y`obiBP=cDxqa{u^miBx#< literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_functools.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0614532bbdf0da318c1d765a7936eb8248d24c8 GIT binary patch literal 4659 zcmbtXTXP)66`r2U?(AxHm#-KY=R(-TECxaYotY3N6mKowA-C+KhB3b$V{-8r@C3&_kV#L9gpPEjp)uUX9}hOewEE%Ss2dwIUEf=(`jLB@qtI?i~K?FOAe z*4BBRsvu2vWGoMYUd{)pXnhHwtR^d}{aETGPN913y*SCXpw(izJLri_E4Iwwf@!{?~_`#sNw2#L#nQ5S5W)%>ENXKWI>O~PckWn6EcBqe+%tLwdWBbwUgbWJsTGUw z$ia0P_xpmsOZyrA=~`d3anK;vS|&RKEeHyc8qmzHk~~uZ7wufeTJYdjqW5O_&9>XB z*8@Bs?1@0dfPOq8mn!JT8s|}1Vp5Aa1D*8HHHVljlV>_N(`ZaHTXWK(W!l;d=bt>J zQ`taKv}F}PVO_-?L2C%vbmRh6Rj?AQTvXfeIo#a`tf>K~!Hv?m+>^8Y$h>yf#e@LRX=qbQ4eB8rN76qU>by%9w>260-p zNbr5>%W`$9nGLT!4!s{v_Utox4*CPT@cJ^peNcEi#AASkE|2s`%tHV=!pU?l(J;%H z6&8)t&d|Duj><$L+h+E+ZgtHaKK(y{d90sr&_ov?NG>U^GCM&v#G6`+J%wVUFLy^vj(ojB z`-chqv(^_(Hq3l;X1>+#+Q`OCr%+C#oIyE@a*j9dRt{a9>^$BUQJz4#fbt~DQz%dK z`MWrq4n}SVtAJY<5bTWEzNAn%eC}90D$|%i$NOaf#%)nL$TJa4l9}PvN4sZ2a1*b~ z?m7?l;+vCboq#y`bhwgc&5IjxmgPDyj22M%9>>3FbRRxLxxvZWAW;F0i>LjJ>phkp z6b`2Xh>`WlS&#!9NyDLzY-x{J*CFb^Vb46>E$WGyBmhNq9Js^!x>Ct*wgrO4^@nWQ zh26RgK8$7DJL&kfS9e7wZujNY-_Ytrk}g=T@y+o0S=f)p*K6JQRq{VczgfxoZ?p($_l$!BQLDsri}DZJ9zH$^8#m<*Tq#lfvy@>yr#jZhnU#!143 z>4-O^%w;(DVP+cQ9R%j@)8Xgdq&yufVoK?tMz%~fHj-!QfjN48|JGD@2pFQAaPhs; z@h1})FeOE9NqLlfjs!s%`j|{7S)%3hR7X@VUm)=!iI*S>7ih?4ZN`p;OX)zkmJND4 zLc$`^44QCh;tb|mVe{cRb1W(NG$))i6^^*w4$JHxJ;{&8_74}Qy2%C9NyohK-`sB< z+g87Yu-Fo-GlUL`%g#di>(-gg*3j}4+Ul&q>Mnu`{eA6vzHNWwdrRY<7zb_q_f^H8 z>Qsk!`5M-E>}55qe+8|SkgGc7fTVTVruE5paCvcMwFCCI)%R|!Xb&t-7kLHQn{&;& zv0`#Yclg={K7{szq+=*$7ndcQ5(RjJ3*wL2hl2SynZ~Eqn?-H<@kxXnTT8JPwUTZF<8_n&Z^*;nPKbhx42C)Uqo;tbsp58c7(z z^H8*;&`mCGaQg@f=nZITyXyd#^Q3p(5!***KW*{Q^1f-QP)q(^+0w0+qw@DmTNM%0 zjN|lG;0%BI7)%L*DV}34rtjm{*qM=R0i&AnTdJoN$6QgDs>V1HrIxH!Tc3PQ7Ct2y zM6-oUG&(`DQUZGdMoEtQ8Oj*61pu~SqkL=Ijjv6sB%l!PeqnwP__mtoNqGM5yyx=*ilI7Q*TOMN-C+n^Ztj?#`?z3-w5a5 z9P^R+b~Y)PNqfvKFeWuy3|Egk!x+JEMT*@-VS!mHB`JfFuS10Mh9ihRBc1e*!D13I yO6Lmy)$&u|DkbTP=*f5#Qd07(>7U~|D?xp(e#LM2jfUeg|6A9id+Rg%>wg2z;mQpF literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_gi.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e018a647555ae16d255be43d432b9a79a4306f4c GIT binary patch literal 4338 zcmaJ^&5s;M74NG4n4X^5*$=PRyG~F>0h5ez7RL}Fti_6BJH{c|gnZy+7}M#QuAS-K zo}SsN-gS1=bMZzI2M`wGzzNL?goK15{)U_oe*lLT;s9K7$pubP!2DkI?0VN0%&5NJ ztM}^F>w3Re70k?d27X_3{^sBNl41Ov2FHIk1}~zhU!e+(rV+A`$E?Y8%bQ%cX4BNI z)wFbLH*K_L?DR{`Qr~U5{c^L+NY;wIex+GqMr1Urq1~JjwVn|=zh?WaIUANj_d}yO z7nVa0?R;1Xt7sR(nXrcTlqgLW#ry$d270GOd2>me5(@_=H1oHN#_Z_cRh7y?6xMr# z!Ir9T3}ij+iTWFRX>X9!FV%0p-rf|Qv>qjxriSQ7ptqwWjFPTe^}O$jc&O@kqqJAw zNkSo28fac!>y*?L;xHb3@93%a{NW=#u;P`$b3KhLT^@?75Fo=)jr^?D$ zBS{76E%|;d5_BLOlM)c1yC8Il0E6IysSRLFb$|>5h+Osk&LByHC{cx2Oh!NtK375L z5&=dhgJdM+pdgBE$T4#0^f!aHgmMi<{gE3uMPr7-QA`voH8NwLT{rHtJKosN>aE$kLFDO3!9aI+xCD@O^%tNmzEonJ2xVJ^9d*hjO7aE@dXTSF%!A%8bp0CF5Jh zxRjpCO!C&9cga_wy<$uj58yl5y3e*>CfzH>*oBquJ{ySf$m&lpnmJ(u*EXDm4W+P_*@ZOvvr{d9%1FzgF zb`lL|>Vj6(iAh>rsEf3-swp}5{gJb_5eHp`RwO(9`lz&a^XeC@ zU?t>BmFJDDr_ZUUKWD8GZ?#4)nBTz+Z^XeWCLb*f%1S6Uz<&08AiG%m{Q0fB)N5S! zMrGO_ZOI$e^dfx$R1Rs0r>0U$#2XNLT(%IHZprgl}BZdUxqnhT@+UN9g zcCnO2tLDsWJdvAWBy$h@lBptu&*yydbri(@)Rde{k=y+s?ey}RAB8}`Xd?oGfm{N% z60YSXfEZ;Cbd+8*_ab%ZgS;Fm`Y>sft`$X;gi$wwDS+QNfQU_qugD^`)7I9>r|HAi z{BGpy69dTIX~PXeB!@Ukkb-7%XBbHAH7`v)+$KBMU6eJ4)^356u*R`eu2ucEmr(% zY=LpJ$~fn&#vJBxk9lmdD7^ZB^Xh-V|2MbXFSz5eIdCw?^tiP;F()cnDL1jB2O?Q0e*!xXzQAWyu^&rCt+!9rq;wp&f*6gIQ09m zHTo!ZCZz-8XPcODA#}rXjCn+kPL~=I^sTuh56gSnSfd zM|t=CizryLKAm;3m_<5~udx3$%u3E8GcTm4kVzMjrHliP+%n}RF3m#T0wpwdD4X?; z`INA>vOcPvxV5d~8dd_#(y<;boMhd^Q5?CT`P~@3(~oeA3+1SyClsh8pTd{bc-r9k z(i?j>Z(YabNOS_isoQ}}a0kpQL_ZujQ8yV#(Ks#7k*J9(U+||mBSOE(04jHa;ZP(Y zKnB;U6t^~&+npZbA$I|@q*vuNtkdcFM`PZNRcp@Eam@DP#Tz#K^u zP5T<f&A4gjPiEw)-lETMpNZ~ZE zuEhi7Cv|1@NHCv$WR83XTHbC{auctJ+@j=;wPPd-N-__v%ga}hUZeI-id09LRwo&Y ztjVo)M5d(A592L*Ims>tkDC9)|1tH?n6I8hWtcS}Gmsh>Ud3^+*je-mt359J;6LVV zLTi0AUPNc~EMBojjCV(ddptfr57`P1f$nkY9YalP@A7ff%;=k#>lzzAr3+WX*4~jF z^rb+R+eo21LPur;hl%Lqzejhvf-ljH6uqt$xATq99&bY`dYRegy7c4#Pgo#Yy*@-iO7Baz^dD!)oZ zLJ}Ql+NFB^<`YLYZv;^cT$|z!J=U8GN6b_PiNe#ppIg^(PL6Gzt`JfKgu7P2!j(CY k)U&88+XWWrKR#|1soR1BoCnrZZri=&F1uCw)b4}-0zwR$82|tP literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_hashlib.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..851a6188b304495177609f3c38872d7ae08b03da GIT binary patch literal 1931 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 E03}f|4*&oF literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_mechanize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abebba33a2dbf5433999a6938a894d932d8bc30a GIT binary patch literal 719 zcmb_a&2H2%5Vn*3Yt${3xNyv|k(MG5Jx~E+TM!r60|+6aNRgAwE~bvX8arF)g+qA| zIPyw4!U^#P2noiURVfExMDR= zc^#wy_dHNx-Aj9A^PoLK#*?J*rZmGH6J167OY7YNi=WxMQ(D9D=Flg6!MyEBuv zsoVov{tOQ75sAOZM>uiih>(`|#*WubizCm>d++yV-kbN~u!V&tf#+ZE4|j2%kUx>A zJ~j|v!7KM+@QF`D(#>bur9c}Y9T{DN65sT#Ur5*VZNCPy#p#vJ=~2zEbL-lqq@)|% zMB1kZqRs$fqPVQgdKzk)L)hX$lr!)vpOq zt3Bh=y0la4s^Qz$RHP@v6nuL~E^T!$wG}yPzBI(IV9#7?r}WwYteuk7S|umLlWq!o zx9fWsM@3+V)-Bo@j!m_*)g&eKXhA2QijwYBi#=l?&;izCI))%2(>K44(YX3kx9HkjlEF+CdP&YE)*S)9}dILInm zg&?bg(WseOh{>ocC(P``_Z4M;_l6A{JRK zj6D|0%nlSE$*d_A6H1;1YM3R&mmM!TXzn zorPTVPI+|N+X?zT308faFz*;bD0_u-pY#O_qI`5`!<|gB_hy-{5-gH~Sd13H0NH|p zP>UL`tfn6827Qx0p!aFhn5S>iCN+!(oj2#{JQeQ%_C~FsvI(!Q6)fv%tw1Ikd+cv; zTL-sDHzov|R2gb0IP)PhtIS(o#Bt~_=_D{Wt3Vl?=d>3xDV;qw;u7wMx8nX0_f#c; z6OdP-&oKtKVUS6V>jqJvT(>28I9PVnB;g)}a@o;wTXrBtj@O=vF|TZoHG=StJB354 zPM6wZMBtO7^i}}Tb1BEu54q9@&um^4U`6|emMpXiBWIK=T6do5x`HR7@OVbIIQY?$ zY%PgpXGydlEw#|I+{%vYMsVw{yFBCnl-3^Ry#n2zIu0!<;X+MX;4eZ|JC6=t!8#_1 zJ|n+($xp^uqIX|?VW7^ejvnt&Eq2e-q|)r<6b4fuy-1*PK$WTL||L_=qLLSfBx~x0)4}TF^cH0Nc)^T+gn>lQa4LCz;2{sElJ^`d3YdB>xjL4>)pN-$ z3l${gx|F&uTqcKn1Zl`deV^&vTG3+_b&h5F8uSqphjPWiF;6B;I7}$r#fx&r+74J4 zTyU|r7e|m($Uz-V&SbxC8@LTVdaL1B`SDqFSB;k7wjuC8gs9_yUA{6r05W_3R!^RO zmtQyM#{iVLP2QZvyRf=goNbL$z3hz{NxPnzaw2m>@LQ*Qx89|@DEJ|S6RtS_R=Mz5 u<;;uSF}cHGsA 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_nose.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..763d3e96c413c3e09cf6f120f54625b862ccd6c6 GIT binary patch literal 2062 zcmaJ?OK;mo5Z+x<6s?DoxK5m;Xv<515JA+YK#DeSgF3d67I1vXqiGlg1jSt|v?-F_ zUD=I5onrJ?^dKGcmw0SXJ@-}=aA%f|n)uKqc6MeTquFo28AaW0i$MD){ylu_67mNc z?>7gG@1d(-L2wcfPB}|yK+VVkW=1Qp%xDLeu=X1>2V`?j16R=561V1bk8+zgPH52L z4sV{2pv_&r1Y?J{cpJv9ux876ig!eJZc&2z>;lM(qQkp<`GnvsXOD@0VY2o^o*yW0 zFPC1HE8(TdKt}R)?@tJl>`t0DUToY7UivXZ`>dgEL*In1E`liO%-rULlw^*6t=*Wy z{JVy_1^qE}wF-jMlFY~)g1AOzbWYY_2@X{>l(^Stl{1w2xKLFi&5wojX+=kGi9`(l zeiGm9KUG4i{+&Bt-Tt<}CDeh=i~ch)*p$(6DrEmiWJmp-WYAZM7PpEhK8S`w^&_Qa zp71Z=ib+<>5O3WpURUmV8jS`#x`*-o1)WUR!a@|^^w!fnj#70GlzIn5W2x}~qO`MU zBmz5*3T0xeMH3EJ4RiP-P?f=s$`0r;^hHAqfhlHE{RWB#Ff^M11Lp8e$z)aAWerke zPTtTdeMYh?Hqp+0^YvXy@Ow_U^_YB#Z{W_!7J2z-%1XAsG;48tPUVC*&^iK5w^0Kx zR%vNx)+t#@=WLJt1YU53I|oc|@#gup!!7&;-<{liAhZ`{9$+dX4UEb6JOn_&B=-jS z801LkS2a$r$NEfL$QT^rkn<0uWfwGj%ml;5q~@cz>uceb`4RULT$BpZf)EfMh`V<6V zHnk}`Wv6zV(N(%kUD}~nXp64U7Ly;tjt^1~({7Qg9vGUuL6)rc*_0wvhLDQ;w503g z(BYVdbl0!_R8CEN-vVHAE~<7Nd>!^R@b$m3YZ+w<>dNRg>{J*7foSDtFn*8)nA3|0 ze+C1y05f0;%;(k+;?&HvwDz+O7DN;ap!TB`)+LgZH=OYCc8-=5kUY9{cSP8+3N zHbUs79X3n6Sz~f@bF6ee@)og~!lz#eQ~Y`cbgzD}-lP+TQJRJ!u7DqWt_Bk5~ZugQIw8_?*z8e<3Z3y&$uNKN?u0? zh-c8kY2a@%%xXO!?2A~R$N7`@IRZY8k|+%qclsJUnJP z(c^g>h82@SuHXWq6kIsVww}pNA%o^SWqG5n+V?SOapB>{?#6@dM+W?=8Rw%Sftrui z)x3gXn7L+fRf-{iFJxH1X$a{J?*mR&7Ap(bD(9ie)c0H)inC{gS!Ne;G?sq<*H;-9QtI=-;TO;wbeac&XD3$#U`fI8=e zRn-c{KSF;p%NyLcD3G(@t{KylYpUoC4KJ|Sc74c$DOhk<6+=1Va;@F7nKdxt%5O^8 z#kTUhXbDg%UHmE1Mtdz+Z8AA&yEPpVe1&E=u2B+EZiXKwBR=_c|g%!Nx<5JQGjXx^>j9UdH&|_-d)uEmwNEDD}UY(ti4>!2GQV7 IOb55W0plRBhX4Qo literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_function_base.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6b47b1e077fc6a50a86aa906481b8e4f384a683 GIT binary patch literal 1024 zcmbtT&2G~`5VjpBanc4#4{+h&V6oiM?xfH-%K< z9e4l^$&pv`5l*}UKN4#vt;(%ZNAkBjYtMW$o^MI5R<(@%3BThnu4VnmoXb`*&QtR! zX@FYDqBeCR8`=5lAjhnQs1Uozjf<#gThygRTB7Bz1yq94tUR~6*71YDK_04rJ*z?y zDsu;|fb)KJRx@}5oY_rSncMkW7rePMFWAfYH_M`7k_L;)a zj~G`831LHNB6Y)8S|p8(u)W=C_`qo*7}xD1Ie~^RK`RYOdzVDYxKvLQX!iv-d-92? zcB{Tq^)H$Eej@p@d`^j!WV-Rro8C5PysIR4EjHw7QPAmC{g@_a?lZ6z}t$`$rFUL30EK<@jBbNmO==NUk z=;eO*5FhR1XFdF?zuP-F=ylT~(-5mgKFmoB$jee=CBw9wm}xT-p@lGjhk(zeh01%K ze&^#ztAeTNpf-(ynL6(o4UWkORIqIMe%|o{mwjjYzbG=-e>0h; k-s8n3cv3dx>aGFT@odjtbDhk7mnv)as$H^Ob5{NP58nboh5!Hn literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_multiarray.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bdb3f5b9debeb5e5e1481ca065b3281c479e58f GIT binary patch literal 3232 zcmcgu%WoS+824`ciW8@4`s5+85(nFon~tn zwz+cS&WS^E=(iWAL|9JQz&TEsHHHnH({CY*`#Bp($>!OGD*Eqs?FMX>ivU_UO? zA`}m1@VrFJbe2}=9G$0CxP(cH zwH}B?$xA^@3Ik6__$eofXqTD(0{>?Fa|uGWZ`^oi_1*S5$iCu(_LtDPBfPy3M0*$5 zZu`@q)0TmPYXi^kdpjW88Pn?>;RP(6GgP&2++zqNZ>2tX>c&;VV-lSjEoij0Ryiwg z*-u0nSK~`3x_T@%lqpQS^B8>9bf_8)ptZ>vG##H0My+iTk2l`R?^F+Uv-j20GZA&M@ORIx`Mihd9(_ z&l{jWQW&}+_t2La4tHuVVtbY+<895e6EL60Ox1@?XAgp%o|>4A?hb+NsNUI}{=MNE zOX`i>lye7m0?bhb2rDp}t@Z%=kth4D+NvHaD;RJ+9tKD!TMr*$z8fCC7rulWCMNzc zr3~+OC8&BPKHZ^4f`?(NhWRJ~H8@qPG*@1QUbnPfzQrDt=J%pRr-DP_S+7N3qkQl2=CRF6dfsT}!}RAV-Udr~l1 zH7+D2*QMNd-DK9ZYMh5s%COiFQ)ya3qyQc zv8f=Xduy9(A8u@s%l9_6Kf1sEz}>#@-rjIO-n_f9wY9OH6tG!}WHJ|l>T&8aF9I?@ z=@nh9a7hWfF>GH$lD4G4d~hd!AWMgm4|}9!c1>X+>%z(`zr@URZ%GTmcxth1iPx3|kv{A4N+4XP5)kSOGDq??DwkrSR3zOBq D>x=1D literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numeric.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73cc58f67dfeb09191b6997470d8c5fc300ac434 GIT binary patch literal 1262 zcmcIjO>fgc5cN7v;^lds#+d#%MP>1%!rn9Dgd=Bj#o}P!<2`PVdV0vPk9`Bwo`?=L=9d_51mVz^H zPl%E7hC+I2o@58hk&v*AE=V4EiC}pQ%ij>W)$iEFh1gUFF&{xtmInzW1CYf6Plq7? z$VKMR*;T_}1Gh5s($*LUFd+!W?uW04WledwE_;j*u@j`)8|G=Gxk#1AV8~No9#0KO zgKRlFDC>EW38^dSWdcjRLy)2ZxfFIirVlb$>x&e+o{$XW+T!EIuBY;W7_IHd96GC> z1f9#WIZhyDp_Jjl($clAcdgSoZHpcLL)T#*$K^l`)*;7WKa6w4`cH71nIdn^uwuKY zXQ5Q^*^&+9pfukH(W?JKfmHs=%8l!{{7q0JEi(Tl3^ru=J_hOUL%Q!j;R9cB4Og-- z8il){{Ntuq2QuVoWsenLL}c7!s)|dMSk9&cEyGly?vh!f34_NX4zZ7 zQpYfG_{>mjyd||4W`7^l#$so+51VyV9oe;5-4#J@G z<=u{Nm1~Z98}rg=xdcitO4#K}qxh@G62J!yDawpCpRV`UAN02A`KP^|hg+M^gPpD5 zUN3mmzu(*5?rj!zoMxhm=>+tiU_lxtK-(v(50s3GCeo#O7}M%~K^j4DQa~3@|M_&3 zMQdGa$p^UxI#WK$@`&cyZ^A3Di5Do`+ZE(sQ>@~ literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_core_numerictypes.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d409c9dd559891fc54180f1c9b1c18c039a95ac2 GIT binary patch literal 7728 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_numpy_random_mtrand.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dadd87ba99b3c1361277014988e5b2e3ebd029c8 GIT binary patch literal 3234 zcmbtX&5q+l5VoDn&S=G+xNt%8Z5`wdJ4h?RXoDCnD=shxeuNZ7vfA#l-AwBO+Rbncvdx(XiEr;o!s64nR+`KyU_SPHoW&Y!t7Y6uCQHyH=Wrvzq!NtqM5b}$FSWK{5)QJm z^lHp5ke zag)}C#T10Y>~#8c&z8f|C3=b(PGee9z^LwAI4o8XAxL6s(x7+4Ppv=+u;_2%pT!Dn zW-PIg++kWPa^MM9#q4Pph`}+b*A3_!6J@0oO=Fo8Hya`v?wt0!v7B`G;6CPXRWV~R zR`+lTbx5TJUJ(IAZUe(AK?YqG)M7w0EGGZ7iI&^_s$CLpyrb6%FNtQD_H56AG%nQA zTZ@E>Shj>L-#5fxT*(6KOB0^m#s`Uiyo;89*W5roT^jFk7aGJjt8U@d;flg)5G__7 zQ!=@_W2<7u;5JUgpqtgG73cvbITlJjBDyk%?Q#2m)f%PbZTdLAmp!uVG4LXd6_Zk)8g}z`OlJ zH9aULo|uGobHG@<16>#Znz+e>(9907JJ>$#h^gDM%wntb<6ILa`#J02C384}b=|ky(`LQ-@IT&Xt{FEjTlfhOmlz-(z2DA^~@&T_1f;t zY?4NsQ*!0Ny@%w;-^0yEIQ3sZ{ouXvhHhJdkQiy6XWpB6pTBwL*RKZz#?$2Yc(+N& zAGlc_E^O|@)Z0J==@UT(%V?j9Yr+xkIqfq^$IjT54bgbageRKkZr_tl%k_clKX$~5 z2!OjH*e;1$C%3oL(MT$pn{Z~*EH$ar;iyodIgnvKo0gBlq2g(-pMXu$OC0`QhN( zbU4tdk#|a-O!&UkgN41%Y$P>}ZEP{dtlQZUcm;7;XqDAg*4g*hiQpvs4D#8d-5 zm8YbcsXU=5Tns#j( zc1YAZC8DuQ99j1ASzO^d%*($;$KjW-ZD#-g$fmq~_tUTw zS?M0)16|nY@u_U*<>o&*^Abs~xYI4U;!~@mTWc~!Xrwk)eYZ|=_dkdHrWFkBl@cMC zuztHR^+!PVp)e0_ol-;Q)Bs}7n1XWr!XCQ2HRb?}L8>8m!}CNc2kunfH#S`nt62N< ziXK~V)&w3cse+9x)g~#XkP+BxwCd55PvTU^{0d-oT{f~J;hElSzr6AUF;z8e`Sy0e zzMDgOD=#aG$*cqc>~!Q>9QNO;6B_4fGC@Iqtt<@SAmv$H7d19q?MqX6_4jpOZ@%f& zJLvNbAf)9{kG5WTj!##qPu07?1Bb5FuOmi-)(y1+f&|078o0(>ZNbz(0a;3L2U>$O zCljVR$Q`?o_y#1tV?5lQQPmO9G!{2dG5~(l-hkDGe@Vv83us@LR1NT?aNw=DC%;+P z{QELQ8uOgF*Z*#kP1g3z#km0Ihf$v>@hcL5?O{o3wbWEJ4+JYTuT>Q6qj6 TyRmKoaUI_Y8n@Pb%AWrP_*n8M literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_pkg_resources.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..02901db0a9ecaecfe3ade2808c02fe8e24b12a0c GIT binary patch literal 2188 zcmcgu&2G~`5VrHvq){V|aP+NqNrOP@fvQ1NEpUMdfe=y@WNqw8vc&e9*>y^VIF(1> zCHg`fa)cAFfRJF;c1+SgT2<;sUe9`WXTJG%b|$RZY#7vjd*9t}b;J0f2aByjgU9s9 zm(=-&Zw5wBze|A;nmyCha+%~(uawFalFPkvDpyIa^eQB;__Z%auL@3Q?D z;jI27tw#6QoK<6n5*%~ZEi3!rMl6I&+xVZJ%pBLu5OzFtW5LM> zdxRp1Tb8!f>5Aym1~1g)_&7NIPcUgpI%zNKB=KY93p}U`E>+9*;n|F^Vat zBRprn(;hQfP){^2Dmwv$OP`;o=lVDb)0vqxI@%Q}{jZM~uWo-&iYsJUe=g1EcBsls@@Wo>A;WTq)k!V3yBXJR20 z zVSs#)XzFb}$XDga_fJhX8Y$C@*1>WX!2V2xgB_v@Xv-G3tiWq)hy z!TpE*eUK9+;{ID0>>)b{0Q*yjrv2x9(3h0EH|Glbj9>}w-y0y~QP#W5wJbiI-Cp|Q z5nB@rU1Ri~#lYiOEeb4(~7R|3i zi$Cb6UeF-C*b}~JrT)AXw|p~ir|o$s?##P!*RDJ1-nQ-zTYRkYwA8@lyvR`xTdUsb z;o0HI(?3@~AWWswfNY+NG6e<;4VeHWyPK8gC#6hDk{EZ*uT6_1`l*{VXixiZ{C6$k zzxOGw))~LO=XpV(arrn1>2us6tAd+zoNbdMBo`dBt*SE10Jmw#=j(i{jhe}#klA#b z6;}#SOEQE-0)-Br+3k6Xn4^oiAV>hI0=E=UP&H_Xb0B%s_NlTYm{TUIE|7pG`1{);7)j&pM%(leP_i_5a1G+ zDhqQ7El(wqS(27wZKKw~(FSm5!LDuE#*LdorV^Beqc(YLcx`M`jlITf>~>ujqjP&x z$FUKEfN?pUUfo9pnrY-o^MGnZ)6S>eO zf^ui=77f}fbyQ6(Y$+iXtdeX4uK~VoJHEV@Cco=k)#Yl2Wq@nUjnFFin%d^_)jAor zu}i%JO(%&5)W@hY*x0n2e>|l2;f7BylgFdK>8)0yhYx>#@Mv@lYNqpI^a{pD$S+dB z(K%%2qvvuwQgq*cDtI#EQ&1!BdgHw@y*Qa0uNqLXTphR)Gc}kgYMk=}qEv?0^ZS15 zKkU;i-gBtSUa^c!Up*V{uX>D$JYj4VFg7X8Av1<8gYH$7HYYUAKfYCoBAXeY%h~w; glB1jTNVe+#>RR#d=6{76(9rP*{((Pe_fH1?|CuSLP5=M^ literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_qt.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e53d90d311f7ed8440d7744d5af4b1eb9af9ca33 GIT binary patch literal 2096 zcmcIm&u`pB6rLG-e|a~XG)-s&0$JjcMInW%MG&PCA#Ez8vTc&0s@6)D*E88T>$NvC zlfbUhQ*-8TNRIh;IQqZ=E^y|CK=7XJO&p+VFP+sq&pf|*GxL4#J+C)4Wf5q9`aiqB z)(H6pC&gBV$(PX84kRSA3oSlZc5P$ zlorw*#QZQ6uJ~Syhzr@GNi%o&)nO23no<;Vq2N_%=t(6KYdAX4J3%k#Sy0qgtGKGcwD@@F z`F*b^RL9HUz6HnzQ6}93y*wNxvu=nKxM9#2Znp6(B7qwcYEed;v_TuJOyvw{e7w@6 zA#~VN=+Reg$M=k%I)z_mJKb%&%PvV zG4AdQU$<7$w`jq|uI{MQMmqr)S@yjNnG@m)guV*WNiAEOXxxB;ukS2x=?$>G5|UVEaKp5;U>Y2gQ*s97

J} zYq!{VE(@xB^>P+mGm00|!`7TQp6o!pYM^S64%C(BVX_%4)U;t(_3AAA8Vx!_P53cd{_7uH C#{k>_ literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_random.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6ffd50ca24075411bfcea0ad2da7db184af607c GIT binary patch literal 2174 zcmbVN&2QX96rT^T*SpzG(jg5`GUQ^Wesi^P6{+O4PHuVLFU9w4r93&k&Ala}|F!<*Mjp>hk=zc@GG-fe>=oOVE zvO|Z}!jbL5-E*wRu^tCK`;?M`cS%AD_b2)t9eTR5OXA87liNiFh6fpp|ph z`+yraO)`96iF% zMCBxk6Ch?#!I+HK&y`NHM7OG@7C>yFQbFK1gIsS28FUko#>z|tqfAEziS;+`pdW`? z0NO%@C6;(2t(u&`w^vah#te^AMwDk-e6FPf^JgH4 z_iCAU8kBWp-pmkqSI}K-BGBL-@$W7BTC~NEPyjk!fJFr84bTl2sXm}`7VS^*39LyI zRkG$i@Fo-=GjRP4eEiUA-t~dM>_H-%YK#98pOhCSdp;?mPnPvT60-Ghdnf{kry$D|Q4hRB- za9N!;fF>~54A2DUE}LXfX*vVe26O26W0%(%`^$CeRGx!<&wv4`vj{`I3j!cW01DWK zfjZFdPZ#i212VByGP2@V;5=B}(i(%O#oO|A*nJfmkkcJxk$eSa@?{XFwg6ovSsOr) z@vy;UVNV#RZ6)deB-?A|afe0F5sYSoG|#sbbk{BMPt06~)d~TKjiN!Z4v^mkn73%V zH7;AA+4Jr7OUzNe3BvGI_##zq4FGrYELtt1u`qVGKPAOF+%8~L0|Hbxmp$VwhH2_I r?RDV21v=>;3-u^o?_w{H2dTJ(=P7K^9`o=b_$2qn>#uq>ypX>Eg6#_t literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_re.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df243239866777a1bd0fa100ac299bc22008fb90 GIT binary patch literal 1067 zcmZ`&OK+P%5Z(oBBP+h==&KJ&)K-bqsI5vcwU985{OAKAA#5fov3Y2hI?cU5Bsumk zacoci3st3dFz(v2%Sb!BeBU?2%xcGPwVDL&_w0xFSs~TC=wl7&T|KCQ@+4D?8IewXh4IAhNGlolRUO@|Kz6NQ zbX>eBDI;ce&Hi(D2?_TF+aP zLTdKx!O+mPkx`}JDnyVq&^4F}Pv#hH6 zOIC>A8^fzXb+;Q@$Tdv6cVmeB?@kcj?;N3n_7FSlV1(#iogWd}FJ^4?uPtp{c{Trd zQT-T`9DrTpYSKeu=jCi)$C?!J9Vu`4JYz{1z?4=UI}vA7H98|9%0?T|&Hct#In{FoToSpUwSS;O-{r*_8QVTzZeeY5I`2aQ8Ci z$NVN?(NQr7#SaNpsPu=ac*-RPoklM62hMORLZ&T1lzmj}1L=RU0O%fQB=w_oa4o#5y$6QVuV=x+GqvnnE*@hoU zzcFRnfXdP1WbS#NF>I&H?Yue4_;G?iZL?>bcdl^XyBK(>%l@u7jz^Z`wDYpl>yQ?y zX1nTI^1RctFfKXvqSHRLpj~tH{GxYu-o3JdkVv`1j;e>KI0R#)|D}M>zfJ~+0ucj9X8jXjZc9|Ra{hLLevUMSUFa3obxre8pPDdw$ewO#iGB(&{)XWoTRSn#l1_ltuIT`=wI@X6q zF24D_NH9v#EGSC1VIwNvh6Z)*HR@!>q7)aSFq4+*-(5kcoP)MbtvU&H)(ER!&M8lp zn#G$jZo(P9TeVRd^Y2V&twOA%ct{(jwrVVGWKzSN$Qz101Z7%1mBPJla$=VjyZETt zXLzxbFs0!iN8$67O<#WF&A~OA(t{^YetP`#;1u)(y$oK1f1=n;1ZpsYcs6($`U4#r zc$8qy*ckL+X|&-hENM2cxvlZtTs&McT~iygKCo})1DqVU;+FnZcDvYLD;@4Eb}1E- zQ>scRx|8>RP%sYdn@p!tq!C~-kyF^{{oPmXZu@!XG7l!(*?+6W-qTF|7Z<pF literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_scipy_signal.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a6c2ec516b19328bf6630ed63e431c8c2c145c5 GIT binary patch literal 2185 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_subprocess.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44f7b965aba544530090f851a78316083f013126 GIT binary patch literal 4191 zcmeHKPmkL~6t^8GakAZoqHd{B57vrGaTT_OsuZejMb+|02v(~CMTAtA<9SJE*BP6c zNq09&xU^Tk0f${U@gevYNJu`G1L~Pug#>SG$FaBRmSd4>Yo6!NdvE;S%>3p(Z+W?? z;q$lu$lZEP)BaG6;#0-O2Ux@>NQg%CKqho-!T_MI!wPPl=3f8K`B-Mvn zrv}DB9gJ;@)Sz})(NV(}np1y_+O$o_cwE8n<2n+@;D)N#koZ{gNBy5FH?fGHkVw=) zj0eW-+c%~fsZ4dL^EF~l4Ync;-X>M7nWQ!~NPSu%*3=}8X%%@sCC!7%p*F2Ci!7xz zX&zL`iAimuP4r1+Vos`L`N!I6?NFcA)!4*1)DLPXW094EI(db>`cRu#x3mX3ax^CO zN#lx!oYn!>50!lOzyPwt2Blm#| zFK`*`29&`}-(nR)dR&eo%KBlZz~|se8nS-i4TN$92O&cauAl>kf41=@A3^&VZE9jy zfDou;W=rG=k=WL9+V=TpNCWdj^ygq^6XzipSwq5Jy0XsI($q?E-r@cJa+z~y9NDP< zhh;u?ZGV2bwlB)s9=A^8vkG2!Jt{M3EdlZPPHsbr!oVc(42GSnh&6J=nXTabDC1rM zuFosHM)v&lj~lAT-mt&D>-|>TDE>Y0cU%N!yct@#N_93;$UlNb1wbz`KNHWN3DP+> zm-Lh&t~^wLyVAgaL-eAX%lMk#4JEBPpq81R5B5hdu9DUw&X)!XS97U9xqqI%F>;>5 zR`Y&+xv;rk)DB*}urKloZedWGn4k{-xmNLTrr`yiesJa&I_=v}@BVTCkRis}TJD;x zr-xlhpC4e1U~h#HuvXaH245C7RmzNU2OxMvlpwvBYf8`nd+>`0l2$OR!%Ck9&~kFd zbFFCqlAC~%NGDb6g9gq+)S`V0Ehuq2yr5fw>2t*uWUkMx$;FkYqc8{(G%gsfelYXY zaiRhk$s)fD&(kpQh^8Efm0C3=qWX}sS!n(|?j5@L2TN+vL2}O>ddwRDpKlVU7N1_c zk>aI-|Krs{WA4p(rR-glnNJd1vt^C-rjO{8KPtIW$(B&%G?IyScV&tx+(ds}yQAsa zcSe$$8Dmp;JTAa#a!Xm=KoXlO`Qj=MNyavJ9Y3k~R~OoI3WvmdNHqPFZsJ>OVp%d9ST{|>)SIi; zDN{GzF!cO=V*Y9TW4^h95|++wltrU*e>#o0BK8G8gZ=!h8a$!WEKG6mx6p;Fs$Xq{ zM6z>+!+;7E+6+T73cy8w;YkACsegWB^Tx*?-YyuD?1sb|>srcwUAaamuUNWeSe2&U ItXSXw3lZUL1ONa4 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_threading.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4cd0087278ed89f34bb19e6ffbcb8af8f13ad1f GIT binary patch literal 746 zcmaJ<&2G~`5T3OY5-Rn;p%OOUZ#BAyP}$+B*r`IJTKtx8=@* zv`1daM>z2c2nlv=3(_EUq#fall*nKL z%2WOqmTTHi393Bzch`Mdz5GM<+UoSR33bWjdEL$Tep;UG&kIK*Wz0Qmc z$(*MJE!^_?j#VIf!uw6`THpOk3VY;PPvf54C!A?^LthlC$}q-DgSkSQ3|<|K4_+R> Z{?|o&bHBA7K5gO82G(NN=g=Q+`~gP4y)Xa( literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/brain/__pycache__/brain_typing.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ceac2756a06b17a81cd40df3d7e15da9a1e2595 GIT binary patch literal 2354 zcmZ`)TW=Fb6yDj3*WNhJm7tVJY%5w~1c4&as)$xG#6gI}N)rQR>uR;}jFU~)-tEjd zA#TzK!c!&wgVTpf{H0N!+Nb^n)QX<7-rS&_WY3xN&6(Rd=NkvZ!;S{+@8%!=@6h`b zjkC=HV;(;7D+sE28YNVZh(|yhk=`~uqiuR-+w!b-&darJ&u-_vJkh90txer4&>Xcv zJ2X!VpoggA71=N&TctzdjnE-le5HA#bb=1k(ktSP(GfZd$T*#(V{{yl31;*snZ0#^ z<=EIEVWUR|(K2ibunEA%5u^H=R=&`?QW28JA$2$7cw4xwn7eW>2|F8e$(}2^NfL88 z_ZQqotCe%gUar(C538$c;)!67IxWUor^yyrE9gd271;~PgQoO5F=c8vJRbLDm?#TD zp-LySs+`AMIklk8XuX?6tT&eJdVi|Lb%IJ z2D9MH%6AcKJf*JeQirSAd>78sc#vF zI-l7mTc)&jv^6b5bAa9k)E=OeKsxo>VmYtOR=3ksPAI~TkOAa}=U_=ys7T4f^{!+p zA3(PQfmb8-=PQqD4}DP8r@=3b^@f1x-bjMxcCf)jBN!Cg&2=7xoq_bTTqb+! zN`&?2N8vWhP*iLu;C{^g4%G@79vm6aQ*_F-ju|U zk}Z87nE09;k^}vj*12YC(%73P+5zyPH!jV6<0atFfg1t=C8prB+ORkoOAw|eKOp&ru#&H|^9Lq^rKc-2Z zelN-Xw@)fdj}{+Q7nF&`tO|kfAv?f&WuZ>EiPI;~%=7Ej<&~vMy{dBXMzjN2w)i-1 zbP+|my}@2IRUY$%yQbwb5RpWB<@B&I-Ux=yA@iOlFlVnUuxeG)8w1xC)1 z219_iOtZWQ9n7(W90M_?Am)ZNQ@RXL3()I;=FXuup!a1S@WLSwXh5Rg<2v7SW$d=X zjV@mgI zAI07n2vy2ryIftqUtL|}!#GmHk;2I~YR3PN6(=hzYbS`htV{-ZKz5#nn_mTU9zKC< zY7oi+Sx~2A=Lmz@J|WBtFn|mxVfy-!c8)Cf{(~$eBTK4J$hF}smg4e?L`KO5E055Z#aakP@j#(z!a)sfa@YE*ylhkc=@TDw2r6ad50|*V0LMx0l(KgN;kK z{ttHPzjS3%rA`+D$?QpmApx8*=Yzolj)Yy?Qw^7IZG7rPgZ`ook5f zQbn`b*(55p+!Sj6C$f+MZNd+u>FD(2BSOE@Qkjgp%FZ12(8uUz4}&EuD(N+m?3OL? zyJC_Lv0bF~rr?g_ML{hyu8eJhLT92d547TEf&foVms;UIf%U4#&omE z<$itHJWFd~vt^s7Ss{$+Bbh<<31RRQSPgb19BqVD<~0fFqs`!X`{psk1bV!(HRx7+Z&b^eIR$p$;N?Mjc_3o@>6kN0SgcYKfb{{90qIhBO~ literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_argparse.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_argparse.py new file mode 100644 index 0000000..6a7556f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_argparse.py @@ -0,0 +1,33 @@ +from astroid import MANAGER, arguments, nodes, inference_tip, UseInferenceDefault + + +def infer_namespace(node, context=None): + callsite = arguments.CallSite.from_call(node, context=context) + if not callsite.keyword_arguments: + # Cannot make sense of it. + raise UseInferenceDefault() + + class_node = nodes.ClassDef("Namespace", "docstring") + class_node.parent = node.parent + for attr in set(callsite.keyword_arguments): + fake_node = nodes.EmptyNode() + fake_node.parent = class_node + fake_node.attrname = attr + class_node.instance_attrs[attr] = [fake_node] + return iter((class_node.instantiate_class(),)) + + +def _looks_like_namespace(node): + func = node.func + if isinstance(func, nodes.Attribute): + return ( + func.attrname == "Namespace" + and isinstance(func.expr, nodes.Name) + and func.expr.name == "argparse" + ) + return False + + +MANAGER.register_transform( + nodes.Call, inference_tip(infer_namespace), _looks_like_namespace +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_attrs.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_attrs.py new file mode 100644 index 0000000..670736f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_attrs.py @@ -0,0 +1,65 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +""" +Astroid hook for the attrs library + +Without this hook pylint reports unsupported-assignment-operation +for attrs classes +""" + +import astroid +from astroid import MANAGER + + +ATTRIB_NAMES = frozenset(("attr.ib", "attrib", "attr.attrib")) +ATTRS_NAMES = frozenset(("attr.s", "attrs", "attr.attrs", "attr.attributes")) + + +def is_decorated_with_attrs(node, decorator_names=ATTRS_NAMES): + """Return True if a decorated node has + an attr decorator applied.""" + if not node.decorators: + return False + for decorator_attribute in node.decorators.nodes: + if isinstance(decorator_attribute, astroid.Call): # decorator with arguments + decorator_attribute = decorator_attribute.func + if decorator_attribute.as_string() in decorator_names: + return True + return False + + +def attr_attributes_transform(node): + """Given that the ClassNode has an attr decorator, + rewrite class attributes as instance attributes + """ + # Astroid can't infer this attribute properly + # Prevents https://github.com/PyCQA/pylint/issues/1884 + node.locals["__attrs_attrs__"] = [astroid.Unknown(parent=node)] + + for cdefbodynode in node.body: + if not isinstance(cdefbodynode, (astroid.Assign, astroid.AnnAssign)): + continue + if isinstance(cdefbodynode.value, astroid.Call): + if cdefbodynode.value.func.as_string() not in ATTRIB_NAMES: + continue + else: + continue + targets = ( + cdefbodynode.targets + if hasattr(cdefbodynode, "targets") + else [cdefbodynode.target] + ) + for target in targets: + + rhs_node = astroid.Unknown( + lineno=cdefbodynode.lineno, + col_offset=cdefbodynode.col_offset, + parent=cdefbodynode, + ) + node.locals[target.name] = [rhs_node] + node.instance_attrs[target.name] = [rhs_node] + + +MANAGER.register_transform( + astroid.ClassDef, attr_attributes_transform, is_decorated_with_attrs +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_boto3.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_boto3.py new file mode 100644 index 0000000..342ca57 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_boto3.py @@ -0,0 +1,28 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for understanding boto3.ServiceRequest()""" +import astroid +from astroid import MANAGER, extract_node + +BOTO_SERVICE_FACTORY_QUALIFIED_NAME = "boto3.resources.base.ServiceResource" + + +def service_request_transform(node): + """Transform ServiceResource to look like dynamic classes""" + code = """ + def __getattr__(self, attr): + return 0 + """ + func_getattr = extract_node(code) + node.locals["__getattr__"] = [func_getattr] + return node + + +def _looks_like_boto3_service_request(node): + return node.qname() == BOTO_SERVICE_FACTORY_QUALIFIED_NAME + + +MANAGER.register_transform( + astroid.ClassDef, service_request_transform, _looks_like_boto3_service_request +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py new file mode 100644 index 0000000..4b07ac5 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_builtin_inference.py @@ -0,0 +1,873 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014-2015 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Rene Zhang +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2019 Stanislav Levin +# Copyright (c) 2019 David Liu +# Copyright (c) 2019 Bryce Guinta +# Copyright (c) 2019 Frédéric Chapoton + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for various builtins.""" + +from functools import partial +from textwrap import dedent + +import six +from astroid import ( + MANAGER, + UseInferenceDefault, + AttributeInferenceError, + inference_tip, + InferenceError, + NameInferenceError, + AstroidTypeError, + MroError, +) +from astroid import arguments +from astroid.builder import AstroidBuilder +from astroid import helpers +from astroid import nodes +from astroid import objects +from astroid import scoped_nodes +from astroid import util + + +OBJECT_DUNDER_NEW = "object.__new__" + + +def _extend_str(class_node, rvalue): + """function to extend builtin str/unicode class""" + code = dedent( + """ + class whatever(object): + def join(self, iterable): + return {rvalue} + def replace(self, old, new, count=None): + return {rvalue} + def format(self, *args, **kwargs): + return {rvalue} + def encode(self, encoding='ascii', errors=None): + return '' + def decode(self, encoding='ascii', errors=None): + return u'' + def capitalize(self): + return {rvalue} + def title(self): + return {rvalue} + def lower(self): + return {rvalue} + def upper(self): + return {rvalue} + def swapcase(self): + return {rvalue} + def index(self, sub, start=None, end=None): + return 0 + def find(self, sub, start=None, end=None): + return 0 + def count(self, sub, start=None, end=None): + return 0 + def strip(self, chars=None): + return {rvalue} + def lstrip(self, chars=None): + return {rvalue} + def rstrip(self, chars=None): + return {rvalue} + def rjust(self, width, fillchar=None): + return {rvalue} + def center(self, width, fillchar=None): + return {rvalue} + def ljust(self, width, fillchar=None): + return {rvalue} + """ + ) + code = code.format(rvalue=rvalue) + fake = AstroidBuilder(MANAGER).string_build(code)["whatever"] + for method in fake.mymethods(): + method.parent = class_node + method.lineno = None + method.col_offset = None + if "__class__" in method.locals: + method.locals["__class__"] = [class_node] + class_node.locals[method.name] = [method] + method.parent = class_node + + +def _extend_builtins(class_transforms): + builtin_ast = MANAGER.builtins_module + for class_name, transform in class_transforms.items(): + transform(builtin_ast[class_name]) + + +_extend_builtins( + { + "bytes": partial(_extend_str, rvalue="b''"), + "str": partial(_extend_str, rvalue="''"), + } +) + + +def _builtin_filter_predicate(node, builtin_name): + if isinstance(node.func, nodes.Name) and node.func.name == builtin_name: + return True + if isinstance(node.func, nodes.Attribute): + return ( + node.func.attrname == "fromkeys" + and isinstance(node.func.expr, nodes.Name) + and node.func.expr.name == "dict" + ) + return False + + +def register_builtin_transform(transform, builtin_name): + """Register a new transform function for the given *builtin_name*. + + The transform function must accept two parameters, a node and + an optional context. + """ + + def _transform_wrapper(node, context=None): + result = transform(node, context=context) + if result: + if not result.parent: + # Let the transformation function determine + # the parent for its result. Otherwise, + # we set it to be the node we transformed from. + result.parent = node + + if result.lineno is None: + result.lineno = node.lineno + if result.col_offset is None: + result.col_offset = node.col_offset + return iter([result]) + + MANAGER.register_transform( + nodes.Call, + inference_tip(_transform_wrapper), + partial(_builtin_filter_predicate, builtin_name=builtin_name), + ) + + +def _container_generic_inference(node, context, node_type, transform): + args = node.args + if not args: + return node_type() + if len(node.args) > 1: + raise UseInferenceDefault() + + (arg,) = args + transformed = transform(arg) + if not transformed: + try: + inferred = next(arg.infer(context=context)) + except (InferenceError, StopIteration): + raise UseInferenceDefault() + if inferred is util.Uninferable: + raise UseInferenceDefault() + transformed = transform(inferred) + if not transformed or transformed is util.Uninferable: + raise UseInferenceDefault() + return transformed + + +def _container_generic_transform(arg, context, klass, iterables, build_elts): + if isinstance(arg, klass): + return arg + elif isinstance(arg, iterables): + if all(isinstance(elt, nodes.Const) for elt in arg.elts): + elts = [elt.value for elt in arg.elts] + else: + # TODO: Does not handle deduplication for sets. + elts = [] + for element in arg.elts: + inferred = helpers.safe_infer(element, context=context) + if inferred: + evaluated_object = nodes.EvaluatedObject( + original=element, value=inferred + ) + elts.append(evaluated_object) + elif isinstance(arg, nodes.Dict): + # Dicts need to have consts as strings already. + if not all(isinstance(elt[0], nodes.Const) for elt in arg.items): + raise UseInferenceDefault() + elts = [item[0].value for item in arg.items] + elif isinstance(arg, nodes.Const) and isinstance( + arg.value, (six.string_types, six.binary_type) + ): + elts = arg.value + else: + return + return klass.from_elements(elts=build_elts(elts)) + + +def _infer_builtin_container( + node, context, klass=None, iterables=None, build_elts=None +): + transform_func = partial( + _container_generic_transform, + context=context, + klass=klass, + iterables=iterables, + build_elts=build_elts, + ) + + return _container_generic_inference(node, context, klass, transform_func) + + +# pylint: disable=invalid-name +infer_tuple = partial( + _infer_builtin_container, + klass=nodes.Tuple, + iterables=( + nodes.List, + nodes.Set, + objects.FrozenSet, + objects.DictItems, + objects.DictKeys, + objects.DictValues, + ), + build_elts=tuple, +) + +infer_list = partial( + _infer_builtin_container, + klass=nodes.List, + iterables=( + nodes.Tuple, + nodes.Set, + objects.FrozenSet, + objects.DictItems, + objects.DictKeys, + objects.DictValues, + ), + build_elts=list, +) + +infer_set = partial( + _infer_builtin_container, + klass=nodes.Set, + iterables=(nodes.List, nodes.Tuple, objects.FrozenSet, objects.DictKeys), + build_elts=set, +) + +infer_frozenset = partial( + _infer_builtin_container, + klass=objects.FrozenSet, + iterables=(nodes.List, nodes.Tuple, nodes.Set, objects.FrozenSet, objects.DictKeys), + build_elts=frozenset, +) + + +def _get_elts(arg, context): + is_iterable = lambda n: isinstance(n, (nodes.List, nodes.Tuple, nodes.Set)) + try: + inferred = next(arg.infer(context)) + except (InferenceError, NameInferenceError): + raise UseInferenceDefault() + if isinstance(inferred, nodes.Dict): + items = inferred.items + elif is_iterable(inferred): + items = [] + for elt in inferred.elts: + # If an item is not a pair of two items, + # then fallback to the default inference. + # Also, take in consideration only hashable items, + # tuples and consts. We are choosing Names as well. + if not is_iterable(elt): + raise UseInferenceDefault() + if len(elt.elts) != 2: + raise UseInferenceDefault() + if not isinstance(elt.elts[0], (nodes.Tuple, nodes.Const, nodes.Name)): + raise UseInferenceDefault() + items.append(tuple(elt.elts)) + else: + raise UseInferenceDefault() + return items + + +def infer_dict(node, context=None): + """Try to infer a dict call to a Dict node. + + The function treats the following cases: + + * dict() + * dict(mapping) + * dict(iterable) + * dict(iterable, **kwargs) + * dict(mapping, **kwargs) + * dict(**kwargs) + + If a case can't be inferred, we'll fallback to default inference. + """ + call = arguments.CallSite.from_call(node, context=context) + if call.has_invalid_arguments() or call.has_invalid_keywords(): + raise UseInferenceDefault + + args = call.positional_arguments + kwargs = list(call.keyword_arguments.items()) + + if not args and not kwargs: + # dict() + return nodes.Dict() + elif kwargs and not args: + # dict(a=1, b=2, c=4) + items = [(nodes.Const(key), value) for key, value in kwargs] + elif len(args) == 1 and kwargs: + # dict(some_iterable, b=2, c=4) + elts = _get_elts(args[0], context) + keys = [(nodes.Const(key), value) for key, value in kwargs] + items = elts + keys + elif len(args) == 1: + items = _get_elts(args[0], context) + else: + raise UseInferenceDefault() + + value = nodes.Dict( + col_offset=node.col_offset, lineno=node.lineno, parent=node.parent + ) + value.postinit(items) + return value + + +def infer_super(node, context=None): + """Understand super calls. + + There are some restrictions for what can be understood: + + * unbounded super (one argument form) is not understood. + + * if the super call is not inside a function (classmethod or method), + then the default inference will be used. + + * if the super arguments can't be inferred, the default inference + will be used. + """ + if len(node.args) == 1: + # Ignore unbounded super. + raise UseInferenceDefault + + scope = node.scope() + if not isinstance(scope, nodes.FunctionDef): + # Ignore non-method uses of super. + raise UseInferenceDefault + if scope.type not in ("classmethod", "method"): + # Not interested in staticmethods. + raise UseInferenceDefault + + cls = scoped_nodes.get_wrapping_class(scope) + if not len(node.args): + mro_pointer = cls + # In we are in a classmethod, the interpreter will fill + # automatically the class as the second argument, not an instance. + if scope.type == "classmethod": + mro_type = cls + else: + mro_type = cls.instantiate_class() + else: + try: + mro_pointer = next(node.args[0].infer(context=context)) + except InferenceError: + raise UseInferenceDefault + try: + mro_type = next(node.args[1].infer(context=context)) + except InferenceError: + raise UseInferenceDefault + + if mro_pointer is util.Uninferable or mro_type is util.Uninferable: + # No way we could understand this. + raise UseInferenceDefault + + super_obj = objects.Super( + mro_pointer=mro_pointer, mro_type=mro_type, self_class=cls, scope=scope + ) + super_obj.parent = node + return super_obj + + +def _infer_getattr_args(node, context): + if len(node.args) not in (2, 3): + # Not a valid getattr call. + raise UseInferenceDefault + + try: + obj = next(node.args[0].infer(context=context)) + attr = next(node.args[1].infer(context=context)) + except InferenceError: + raise UseInferenceDefault + + if obj is util.Uninferable or attr is util.Uninferable: + # If one of the arguments is something we can't infer, + # then also make the result of the getattr call something + # which is unknown. + return util.Uninferable, util.Uninferable + + is_string = isinstance(attr, nodes.Const) and isinstance( + attr.value, six.string_types + ) + if not is_string: + raise UseInferenceDefault + + return obj, attr.value + + +def infer_getattr(node, context=None): + """Understand getattr calls + + If one of the arguments is an Uninferable object, then the + result will be an Uninferable object. Otherwise, the normal attribute + lookup will be done. + """ + obj, attr = _infer_getattr_args(node, context) + if ( + obj is util.Uninferable + or attr is util.Uninferable + or not hasattr(obj, "igetattr") + ): + return util.Uninferable + + try: + return next(obj.igetattr(attr, context=context)) + except (StopIteration, InferenceError, AttributeInferenceError): + if len(node.args) == 3: + # Try to infer the default and return it instead. + try: + return next(node.args[2].infer(context=context)) + except InferenceError: + raise UseInferenceDefault + + raise UseInferenceDefault + + +def infer_hasattr(node, context=None): + """Understand hasattr calls + + This always guarantees three possible outcomes for calling + hasattr: Const(False) when we are sure that the object + doesn't have the intended attribute, Const(True) when + we know that the object has the attribute and Uninferable + when we are unsure of the outcome of the function call. + """ + try: + obj, attr = _infer_getattr_args(node, context) + if ( + obj is util.Uninferable + or attr is util.Uninferable + or not hasattr(obj, "getattr") + ): + return util.Uninferable + obj.getattr(attr, context=context) + except UseInferenceDefault: + # Can't infer something from this function call. + return util.Uninferable + except AttributeInferenceError: + # Doesn't have it. + return nodes.Const(False) + return nodes.Const(True) + + +def infer_callable(node, context=None): + """Understand callable calls + + This follows Python's semantics, where an object + is callable if it provides an attribute __call__, + even though that attribute is something which can't be + called. + """ + if len(node.args) != 1: + # Invalid callable call. + raise UseInferenceDefault + + argument = node.args[0] + try: + inferred = next(argument.infer(context=context)) + except InferenceError: + return util.Uninferable + if inferred is util.Uninferable: + return util.Uninferable + return nodes.Const(inferred.callable()) + + +def infer_property(node, context=None): + """Understand `property` class + + This only infers the output of `property` + call, not the arguments themselves. + """ + if len(node.args) < 1: + # Invalid property call. + raise UseInferenceDefault + + getter = node.args[0] + try: + inferred = next(getter.infer(context=context)) + except InferenceError: + raise UseInferenceDefault + + if not isinstance(inferred, (nodes.FunctionDef, nodes.Lambda)): + raise UseInferenceDefault + + return objects.Property( + function=inferred, + name=inferred.name, + doc=getattr(inferred, "doc", None), + lineno=node.lineno, + parent=node, + col_offset=node.col_offset, + ) + + +def infer_bool(node, context=None): + """Understand bool calls.""" + if len(node.args) > 1: + # Invalid bool call. + raise UseInferenceDefault + + if not node.args: + return nodes.Const(False) + + argument = node.args[0] + try: + inferred = next(argument.infer(context=context)) + except InferenceError: + return util.Uninferable + if inferred is util.Uninferable: + return util.Uninferable + + bool_value = inferred.bool_value(context=context) + if bool_value is util.Uninferable: + return util.Uninferable + return nodes.Const(bool_value) + + +def infer_type(node, context=None): + """Understand the one-argument form of *type*.""" + if len(node.args) != 1: + raise UseInferenceDefault + + return helpers.object_type(node.args[0], context) + + +def infer_slice(node, context=None): + """Understand `slice` calls.""" + args = node.args + if not 0 < len(args) <= 3: + raise UseInferenceDefault + + infer_func = partial(helpers.safe_infer, context=context) + args = [infer_func(arg) for arg in args] + for arg in args: + if not arg or arg is util.Uninferable: + raise UseInferenceDefault + if not isinstance(arg, nodes.Const): + raise UseInferenceDefault + if not isinstance(arg.value, (type(None), int)): + raise UseInferenceDefault + + if len(args) < 3: + # Make sure we have 3 arguments. + args.extend([None] * (3 - len(args))) + + slice_node = nodes.Slice( + lineno=node.lineno, col_offset=node.col_offset, parent=node.parent + ) + slice_node.postinit(*args) + return slice_node + + +def _infer_object__new__decorator(node, context=None): + # Instantiate class immediately + # since that's what @object.__new__ does + return iter((node.instantiate_class(),)) + + +def _infer_object__new__decorator_check(node): + """Predicate before inference_tip + + Check if the given ClassDef has an @object.__new__ decorator + """ + if not node.decorators: + return False + + for decorator in node.decorators.nodes: + if isinstance(decorator, nodes.Attribute): + if decorator.as_string() == OBJECT_DUNDER_NEW: + return True + return False + + +def infer_issubclass(callnode, context=None): + """Infer issubclass() calls + + :param nodes.Call callnode: an `issubclass` call + :param InferenceContext: the context for the inference + :rtype nodes.Const: Boolean Const value of the `issubclass` call + :raises UseInferenceDefault: If the node cannot be inferred + """ + call = arguments.CallSite.from_call(callnode, context=context) + if call.keyword_arguments: + # issubclass doesn't support keyword arguments + raise UseInferenceDefault("TypeError: issubclass() takes no keyword arguments") + if len(call.positional_arguments) != 2: + raise UseInferenceDefault( + "Expected two arguments, got {count}".format( + count=len(call.positional_arguments) + ) + ) + # The left hand argument is the obj to be checked + obj_node, class_or_tuple_node = call.positional_arguments + + try: + obj_type = next(obj_node.infer(context=context)) + except InferenceError as exc: + raise UseInferenceDefault from exc + if not isinstance(obj_type, nodes.ClassDef): + raise UseInferenceDefault("TypeError: arg 1 must be class") + + # The right hand argument is the class(es) that the given + # object is to be checked against. + try: + class_container = _class_or_tuple_to_container( + class_or_tuple_node, context=context + ) + except InferenceError as exc: + raise UseInferenceDefault from exc + try: + issubclass_bool = helpers.object_issubclass(obj_type, class_container, context) + except AstroidTypeError as exc: + raise UseInferenceDefault("TypeError: " + str(exc)) from exc + except MroError as exc: + raise UseInferenceDefault from exc + return nodes.Const(issubclass_bool) + + +def infer_isinstance(callnode, context=None): + """Infer isinstance calls + + :param nodes.Call callnode: an isinstance call + :param InferenceContext: context for call + (currently unused but is a common interface for inference) + :rtype nodes.Const: Boolean Const value of isinstance call + + :raises UseInferenceDefault: If the node cannot be inferred + """ + call = arguments.CallSite.from_call(callnode, context=context) + if call.keyword_arguments: + # isinstance doesn't support keyword arguments + raise UseInferenceDefault("TypeError: isinstance() takes no keyword arguments") + if len(call.positional_arguments) != 2: + raise UseInferenceDefault( + "Expected two arguments, got {count}".format( + count=len(call.positional_arguments) + ) + ) + # The left hand argument is the obj to be checked + obj_node, class_or_tuple_node = call.positional_arguments + # The right hand argument is the class(es) that the given + # obj is to be check is an instance of + try: + class_container = _class_or_tuple_to_container( + class_or_tuple_node, context=context + ) + except InferenceError: + raise UseInferenceDefault + try: + isinstance_bool = helpers.object_isinstance(obj_node, class_container, context) + except AstroidTypeError as exc: + raise UseInferenceDefault("TypeError: " + str(exc)) + except MroError as exc: + raise UseInferenceDefault from exc + if isinstance_bool is util.Uninferable: + raise UseInferenceDefault + return nodes.Const(isinstance_bool) + + +def _class_or_tuple_to_container(node, context=None): + # Move inferences results into container + # to simplify later logic + # raises InferenceError if any of the inferences fall through + node_infer = next(node.infer(context=context)) + # arg2 MUST be a type or a TUPLE of types + # for isinstance + if isinstance(node_infer, nodes.Tuple): + class_container = [ + next(node.infer(context=context)) for node in node_infer.elts + ] + class_container = [ + klass_node for klass_node in class_container if klass_node is not None + ] + else: + class_container = [node_infer] + return class_container + + +def infer_len(node, context=None): + """Infer length calls + + :param nodes.Call node: len call to infer + :param context.InferenceContext: node context + :rtype nodes.Const: a Const node with the inferred length, if possible + """ + call = arguments.CallSite.from_call(node, context=context) + if call.keyword_arguments: + raise UseInferenceDefault("TypeError: len() must take no keyword arguments") + if len(call.positional_arguments) != 1: + raise UseInferenceDefault( + "TypeError: len() must take exactly one argument " + "({len}) given".format(len=len(call.positional_arguments)) + ) + [argument_node] = call.positional_arguments + try: + return nodes.Const(helpers.object_len(argument_node, context=context)) + except (AstroidTypeError, InferenceError) as exc: + raise UseInferenceDefault(str(exc)) from exc + + +def infer_str(node, context=None): + """Infer str() calls + + :param nodes.Call node: str() call to infer + :param context.InferenceContext: node context + :rtype nodes.Const: a Const containing an empty string + """ + call = arguments.CallSite.from_call(node, context=context) + if call.keyword_arguments: + raise UseInferenceDefault("TypeError: str() must take no keyword arguments") + try: + return nodes.Const("") + except (AstroidTypeError, InferenceError) as exc: + raise UseInferenceDefault(str(exc)) from exc + + +def infer_int(node, context=None): + """Infer int() calls + + :param nodes.Call node: int() call to infer + :param context.InferenceContext: node context + :rtype nodes.Const: a Const containing the integer value of the int() call + """ + call = arguments.CallSite.from_call(node, context=context) + if call.keyword_arguments: + raise UseInferenceDefault("TypeError: int() must take no keyword arguments") + + if call.positional_arguments: + try: + first_value = next(call.positional_arguments[0].infer(context=context)) + except (InferenceError, StopIteration) as exc: + raise UseInferenceDefault(str(exc)) from exc + + if first_value is util.Uninferable: + raise UseInferenceDefault + + if isinstance(first_value, nodes.Const) and isinstance( + first_value.value, (int, str) + ): + try: + actual_value = int(first_value.value) + except ValueError: + return nodes.Const(0) + return nodes.Const(actual_value) + + return nodes.Const(0) + + +def infer_dict_fromkeys(node, context=None): + """Infer dict.fromkeys + + :param nodes.Call node: dict.fromkeys() call to infer + :param context.InferenceContext: node context + :rtype nodes.Dict: + a Dictionary containing the values that astroid was able to infer. + In case the inference failed for any reason, an empty dictionary + will be inferred instead. + """ + + def _build_dict_with_elements(elements): + new_node = nodes.Dict( + col_offset=node.col_offset, lineno=node.lineno, parent=node.parent + ) + new_node.postinit(elements) + return new_node + + call = arguments.CallSite.from_call(node, context=context) + if call.keyword_arguments: + raise UseInferenceDefault("TypeError: int() must take no keyword arguments") + if len(call.positional_arguments) not in {1, 2}: + raise UseInferenceDefault( + "TypeError: Needs between 1 and 2 positional arguments" + ) + + default = nodes.Const(None) + values = call.positional_arguments[0] + try: + inferred_values = next(values.infer(context=context)) + except InferenceError: + return _build_dict_with_elements([]) + if inferred_values is util.Uninferable: + return _build_dict_with_elements([]) + + # Limit to a couple of potential values, as this can become pretty complicated + accepted_iterable_elements = (nodes.Const,) + if isinstance(inferred_values, (nodes.List, nodes.Set, nodes.Tuple)): + elements = inferred_values.elts + for element in elements: + if not isinstance(element, accepted_iterable_elements): + # Fallback to an empty dict + return _build_dict_with_elements([]) + + elements_with_value = [(element, default) for element in elements] + return _build_dict_with_elements(elements_with_value) + + elif isinstance(inferred_values, nodes.Const) and isinstance( + inferred_values.value, (str, bytes) + ): + elements = [ + (nodes.Const(element), default) for element in inferred_values.value + ] + return _build_dict_with_elements(elements) + elif isinstance(inferred_values, nodes.Dict): + keys = inferred_values.itered() + for key in keys: + if not isinstance(key, accepted_iterable_elements): + # Fallback to an empty dict + return _build_dict_with_elements([]) + + elements_with_value = [(element, default) for element in keys] + return _build_dict_with_elements(elements_with_value) + + # Fallback to an empty dictionary + return _build_dict_with_elements([]) + + +# Builtins inference +register_builtin_transform(infer_bool, "bool") +register_builtin_transform(infer_super, "super") +register_builtin_transform(infer_callable, "callable") +register_builtin_transform(infer_property, "property") +register_builtin_transform(infer_getattr, "getattr") +register_builtin_transform(infer_hasattr, "hasattr") +register_builtin_transform(infer_tuple, "tuple") +register_builtin_transform(infer_set, "set") +register_builtin_transform(infer_list, "list") +register_builtin_transform(infer_dict, "dict") +register_builtin_transform(infer_frozenset, "frozenset") +register_builtin_transform(infer_type, "type") +register_builtin_transform(infer_slice, "slice") +register_builtin_transform(infer_isinstance, "isinstance") +register_builtin_transform(infer_issubclass, "issubclass") +register_builtin_transform(infer_len, "len") +register_builtin_transform(infer_str, "str") +register_builtin_transform(infer_int, "int") +register_builtin_transform(infer_dict_fromkeys, "dict.fromkeys") + + +# Infer object.__new__ calls +MANAGER.register_transform( + nodes.ClassDef, + inference_tip(_infer_object__new__decorator), + _infer_object__new__decorator_check, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_collections.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_collections.py new file mode 100644 index 0000000..669c6ca --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_collections.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2016, 2018 Claudiu Popa +# Copyright (c) 2016-2017 Łukasz Rogalski +# Copyright (c) 2017 Derek Gustafson +# Copyright (c) 2018 Ioana Tagirta +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import sys + +import astroid + + +def _collections_transform(): + return astroid.parse( + """ + class defaultdict(dict): + default_factory = None + def __missing__(self, key): pass + def __getitem__(self, key): return default_factory + + """ + + _deque_mock() + + _ordered_dict_mock() + ) + + +def _deque_mock(): + base_deque_class = """ + class deque(object): + maxlen = 0 + def __init__(self, iterable=None, maxlen=None): + self.iterable = iterable or [] + def append(self, x): pass + def appendleft(self, x): pass + def clear(self): pass + def count(self, x): return 0 + def extend(self, iterable): pass + def extendleft(self, iterable): pass + def pop(self): return self.iterable[0] + def popleft(self): return self.iterable[0] + def remove(self, value): pass + def reverse(self): return reversed(self.iterable) + def rotate(self, n=1): return self + def __iter__(self): return self + def __reversed__(self): return self.iterable[::-1] + def __getitem__(self, index): return self.iterable[index] + def __setitem__(self, index, value): pass + def __delitem__(self, index): pass + def __bool__(self): return bool(self.iterable) + def __nonzero__(self): return bool(self.iterable) + def __contains__(self, o): return o in self.iterable + def __len__(self): return len(self.iterable) + def __copy__(self): return deque(self.iterable) + def copy(self): return deque(self.iterable) + def index(self, x, start=0, end=0): return 0 + def insert(self, x, i): pass + def __add__(self, other): pass + def __iadd__(self, other): pass + def __mul__(self, other): pass + def __imul__(self, other): pass + def __rmul__(self, other): pass""" + return base_deque_class + + +def _ordered_dict_mock(): + base_ordered_dict_class = """ + class OrderedDict(dict): + def __reversed__(self): return self[::-1] + def move_to_end(self, key, last=False): pass""" + return base_ordered_dict_class + + +astroid.register_module_extender(astroid.MANAGER, "collections", _collections_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_crypt.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_crypt.py new file mode 100644 index 0000000..491ee23 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_crypt.py @@ -0,0 +1,26 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import sys +import astroid + +PY37 = sys.version_info >= (3, 7) + +if PY37: + # Since Python 3.7 Hashing Methods are added + # dynamically to globals() + + def _re_transform(): + return astroid.parse( + """ + from collections import namedtuple + _Method = namedtuple('_Method', 'name ident salt_chars total_size') + + METHOD_SHA512 = _Method('SHA512', '6', 16, 106) + METHOD_SHA256 = _Method('SHA256', '5', 16, 63) + METHOD_BLOWFISH = _Method('BLOWFISH', 2, 'b', 22) + METHOD_MD5 = _Method('MD5', '1', 8, 34) + METHOD_CRYPT = _Method('CRYPT', None, 2, 13) + """ + ) + + astroid.register_module_extender(astroid.MANAGER, "crypt", _re_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_curses.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_curses.py new file mode 100644 index 0000000..68e88b9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_curses.py @@ -0,0 +1,179 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import astroid + + +def _curses_transform(): + return astroid.parse( + """ + A_ALTCHARSET = 1 + A_BLINK = 1 + A_BOLD = 1 + A_DIM = 1 + A_INVIS = 1 + A_ITALIC = 1 + A_NORMAL = 1 + A_PROTECT = 1 + A_REVERSE = 1 + A_STANDOUT = 1 + A_UNDERLINE = 1 + A_HORIZONTAL = 1 + A_LEFT = 1 + A_LOW = 1 + A_RIGHT = 1 + A_TOP = 1 + A_VERTICAL = 1 + A_CHARTEXT = 1 + A_ATTRIBUTES = 1 + A_CHARTEXT = 1 + A_COLOR = 1 + KEY_MIN = 1 + KEY_BREAK = 1 + KEY_DOWN = 1 + KEY_UP = 1 + KEY_LEFT = 1 + KEY_RIGHT = 1 + KEY_HOME = 1 + KEY_BACKSPACE = 1 + KEY_F0 = 1 + KEY_Fn = 1 + KEY_DL = 1 + KEY_IL = 1 + KEY_DC = 1 + KEY_IC = 1 + KEY_EIC = 1 + KEY_CLEAR = 1 + KEY_EOS = 1 + KEY_EOL = 1 + KEY_SF = 1 + KEY_SR = 1 + KEY_NPAGE = 1 + KEY_PPAGE = 1 + KEY_STAB = 1 + KEY_CTAB = 1 + KEY_CATAB = 1 + KEY_ENTER = 1 + KEY_SRESET = 1 + KEY_RESET = 1 + KEY_PRINT = 1 + KEY_LL = 1 + KEY_A1 = 1 + KEY_A3 = 1 + KEY_B2 = 1 + KEY_C1 = 1 + KEY_C3 = 1 + KEY_BTAB = 1 + KEY_BEG = 1 + KEY_CANCEL = 1 + KEY_CLOSE = 1 + KEY_COMMAND = 1 + KEY_COPY = 1 + KEY_CREATE = 1 + KEY_END = 1 + KEY_EXIT = 1 + KEY_FIND = 1 + KEY_HELP = 1 + KEY_MARK = 1 + KEY_MESSAGE = 1 + KEY_MOVE = 1 + KEY_NEXT = 1 + KEY_OPEN = 1 + KEY_OPTIONS = 1 + KEY_PREVIOUS = 1 + KEY_REDO = 1 + KEY_REFERENCE = 1 + KEY_REFRESH = 1 + KEY_REPLACE = 1 + KEY_RESTART = 1 + KEY_RESUME = 1 + KEY_SAVE = 1 + KEY_SBEG = 1 + KEY_SCANCEL = 1 + KEY_SCOMMAND = 1 + KEY_SCOPY = 1 + KEY_SCREATE = 1 + KEY_SDC = 1 + KEY_SDL = 1 + KEY_SELECT = 1 + KEY_SEND = 1 + KEY_SEOL = 1 + KEY_SEXIT = 1 + KEY_SFIND = 1 + KEY_SHELP = 1 + KEY_SHOME = 1 + KEY_SIC = 1 + KEY_SLEFT = 1 + KEY_SMESSAGE = 1 + KEY_SMOVE = 1 + KEY_SNEXT = 1 + KEY_SOPTIONS = 1 + KEY_SPREVIOUS = 1 + KEY_SPRINT = 1 + KEY_SREDO = 1 + KEY_SREPLACE = 1 + KEY_SRIGHT = 1 + KEY_SRSUME = 1 + KEY_SSAVE = 1 + KEY_SSUSPEND = 1 + KEY_SUNDO = 1 + KEY_SUSPEND = 1 + KEY_UNDO = 1 + KEY_MOUSE = 1 + KEY_RESIZE = 1 + KEY_MAX = 1 + ACS_BBSS = 1 + ACS_BLOCK = 1 + ACS_BOARD = 1 + ACS_BSBS = 1 + ACS_BSSB = 1 + ACS_BSSS = 1 + ACS_BTEE = 1 + ACS_BULLET = 1 + ACS_CKBOARD = 1 + ACS_DARROW = 1 + ACS_DEGREE = 1 + ACS_DIAMOND = 1 + ACS_GEQUAL = 1 + ACS_HLINE = 1 + ACS_LANTERN = 1 + ACS_LARROW = 1 + ACS_LEQUAL = 1 + ACS_LLCORNER = 1 + ACS_LRCORNER = 1 + ACS_LTEE = 1 + ACS_NEQUAL = 1 + ACS_PI = 1 + ACS_PLMINUS = 1 + ACS_PLUS = 1 + ACS_RARROW = 1 + ACS_RTEE = 1 + ACS_S1 = 1 + ACS_S3 = 1 + ACS_S7 = 1 + ACS_S9 = 1 + ACS_SBBS = 1 + ACS_SBSB = 1 + ACS_SBSS = 1 + ACS_SSBB = 1 + ACS_SSBS = 1 + ACS_SSSB = 1 + ACS_SSSS = 1 + ACS_STERLING = 1 + ACS_TTEE = 1 + ACS_UARROW = 1 + ACS_ULCORNER = 1 + ACS_URCORNER = 1 + ACS_VLINE = 1 + COLOR_BLACK = 1 + COLOR_BLUE = 1 + COLOR_CYAN = 1 + COLOR_GREEN = 1 + COLOR_MAGENTA = 1 + COLOR_RED = 1 + COLOR_WHITE = 1 + COLOR_YELLOW = 1 + """ + ) + + +astroid.register_module_extender(astroid.MANAGER, "curses", _curses_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py new file mode 100644 index 0000000..7a25e0c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dataclasses.py @@ -0,0 +1,50 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +""" +Astroid hook for the dataclasses library +""" + +import astroid +from astroid import MANAGER + + +DATACLASSES_DECORATORS = frozenset(("dataclasses.dataclass", "dataclass")) + + +def is_decorated_with_dataclass(node, decorator_names=DATACLASSES_DECORATORS): + """Return True if a decorated node has a `dataclass` decorator applied.""" + if not node.decorators: + return False + for decorator_attribute in node.decorators.nodes: + if isinstance(decorator_attribute, astroid.Call): # decorator with arguments + decorator_attribute = decorator_attribute.func + if decorator_attribute.as_string() in decorator_names: + return True + return False + + +def dataclass_transform(node): + """Rewrite a dataclass to be easily understood by pylint""" + + for assign_node in node.body: + if not isinstance(assign_node, (astroid.AnnAssign, astroid.Assign)): + continue + + targets = ( + assign_node.targets + if hasattr(assign_node, "targets") + else [assign_node.target] + ) + for target in targets: + rhs_node = astroid.Unknown( + lineno=assign_node.lineno, + col_offset=assign_node.col_offset, + parent=assign_node, + ) + node.instance_attrs[target.name] = [rhs_node] + node.locals[target.name] = [rhs_node] + + +MANAGER.register_transform( + astroid.ClassDef, dataclass_transform, is_decorated_with_dataclass +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dateutil.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dateutil.py new file mode 100644 index 0000000..9fdb9fd --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_dateutil.py @@ -0,0 +1,28 @@ +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2015 raylu +# Copyright (c) 2016 Ceridwen + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for dateutil""" + +import textwrap + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder + + +def dateutil_transform(): + return AstroidBuilder(MANAGER).string_build( + textwrap.dedent( + """ + import datetime + def parse(timestr, parserinfo=None, **kwargs): + return datetime.datetime() + """ + ) + ) + + +register_module_extender(MANAGER, "dateutil.parser", dateutil_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_fstrings.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_fstrings.py new file mode 100644 index 0000000..298d58a --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_fstrings.py @@ -0,0 +1,51 @@ +# Copyright (c) 2017-2018 Claudiu Popa + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import collections +import sys + +import astroid + + +def _clone_node_with_lineno(node, parent, lineno): + cls = node.__class__ + other_fields = node._other_fields + _astroid_fields = node._astroid_fields + init_params = {"lineno": lineno, "col_offset": node.col_offset, "parent": parent} + postinit_params = {param: getattr(node, param) for param in _astroid_fields} + if other_fields: + init_params.update({param: getattr(node, param) for param in other_fields}) + new_node = cls(**init_params) + if hasattr(node, "postinit") and _astroid_fields: + for param, child in postinit_params.items(): + if child and not isinstance(child, collections.Sequence): + cloned_child = _clone_node_with_lineno( + node=child, lineno=new_node.lineno, parent=new_node + ) + postinit_params[param] = cloned_child + new_node.postinit(**postinit_params) + return new_node + + +def _transform_formatted_value(node): + if node.value and node.value.lineno == 1: + if node.lineno != node.value.lineno: + new_node = astroid.FormattedValue( + lineno=node.lineno, col_offset=node.col_offset, parent=node.parent + ) + new_value = _clone_node_with_lineno( + node=node.value, lineno=node.lineno, parent=new_node + ) + new_node.postinit(value=new_value, format_spec=node.format_spec) + return new_node + + +if sys.version_info[:2] >= (3, 6): + # TODO: this fix tries to *patch* http://bugs.python.org/issue29051 + # The problem is that FormattedValue.value, which is a Name node, + # has wrong line numbers, usually 1. This creates problems for pylint, + # which expects correct line numbers for things such as message control. + astroid.MANAGER.register_transform( + astroid.FormattedValue, _transform_formatted_value + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_functools.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_functools.py new file mode 100644 index 0000000..d6c6069 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_functools.py @@ -0,0 +1,159 @@ +# Copyright (c) 2016, 2018-2020 Claudiu Popa +# Copyright (c) 2018 hippo91 +# Copyright (c) 2018 Bryce Guinta + +"""Astroid hooks for understanding functools library module.""" +from functools import partial +from itertools import chain + +import astroid +from astroid import arguments +from astroid import BoundMethod +from astroid import extract_node +from astroid import helpers +from astroid.interpreter import objectmodel +from astroid import MANAGER +from astroid import objects + + +LRU_CACHE = "functools.lru_cache" + + +class LruWrappedModel(objectmodel.FunctionModel): + """Special attribute model for functions decorated with functools.lru_cache. + + The said decorators patches at decoration time some functions onto + the decorated function. + """ + + @property + def attr___wrapped__(self): + return self._instance + + @property + def attr_cache_info(self): + cache_info = extract_node( + """ + from functools import _CacheInfo + _CacheInfo(0, 0, 0, 0) + """ + ) + + class CacheInfoBoundMethod(BoundMethod): + def infer_call_result(self, caller, context=None): + yield helpers.safe_infer(cache_info) + + return CacheInfoBoundMethod(proxy=self._instance, bound=self._instance) + + @property + def attr_cache_clear(self): + node = extract_node("""def cache_clear(self): pass""") + return BoundMethod(proxy=node, bound=self._instance.parent.scope()) + + +def _transform_lru_cache(node, context=None): + # TODO: this is not ideal, since the node should be immutable, + # but due to https://github.com/PyCQA/astroid/issues/354, + # there's not much we can do now. + # Replacing the node would work partially, because, + # in pylint, the old node would still be available, leading + # to spurious false positives. + node.special_attributes = LruWrappedModel()(node) + return + + +def _functools_partial_inference(node, context=None): + call = arguments.CallSite.from_call(node, context=context) + number_of_positional = len(call.positional_arguments) + if number_of_positional < 1: + raise astroid.UseInferenceDefault( + "functools.partial takes at least one argument" + ) + if number_of_positional == 1 and not call.keyword_arguments: + raise astroid.UseInferenceDefault( + "functools.partial needs at least to have some filled arguments" + ) + + partial_function = call.positional_arguments[0] + try: + inferred_wrapped_function = next(partial_function.infer(context=context)) + except astroid.InferenceError as exc: + raise astroid.UseInferenceDefault from exc + if inferred_wrapped_function is astroid.Uninferable: + raise astroid.UseInferenceDefault("Cannot infer the wrapped function") + if not isinstance(inferred_wrapped_function, astroid.FunctionDef): + raise astroid.UseInferenceDefault("The wrapped function is not a function") + + # Determine if the passed keywords into the callsite are supported + # by the wrapped function. + function_parameters = chain( + inferred_wrapped_function.args.args or (), + inferred_wrapped_function.args.posonlyargs or (), + inferred_wrapped_function.args.kwonlyargs or (), + ) + parameter_names = set( + param.name + for param in function_parameters + if isinstance(param, astroid.AssignName) + ) + if set(call.keyword_arguments) - parameter_names: + raise astroid.UseInferenceDefault( + "wrapped function received unknown parameters" + ) + + partial_function = objects.PartialFunction( + call, + name=inferred_wrapped_function.name, + doc=inferred_wrapped_function.doc, + lineno=inferred_wrapped_function.lineno, + col_offset=inferred_wrapped_function.col_offset, + parent=inferred_wrapped_function.parent, + ) + partial_function.postinit( + args=inferred_wrapped_function.args, + body=inferred_wrapped_function.body, + decorators=inferred_wrapped_function.decorators, + returns=inferred_wrapped_function.returns, + type_comment_returns=inferred_wrapped_function.type_comment_returns, + type_comment_args=inferred_wrapped_function.type_comment_args, + ) + return iter((partial_function,)) + + +def _looks_like_lru_cache(node): + """Check if the given function node is decorated with lru_cache.""" + if not node.decorators: + return False + for decorator in node.decorators.nodes: + if not isinstance(decorator, astroid.Call): + continue + if _looks_like_functools_member(decorator, "lru_cache"): + return True + return False + + +def _looks_like_functools_member(node, member): + """Check if the given Call node is a functools.partial call""" + if isinstance(node.func, astroid.Name): + return node.func.name == member + elif isinstance(node.func, astroid.Attribute): + return ( + node.func.attrname == member + and isinstance(node.func.expr, astroid.Name) + and node.func.expr.name == "functools" + ) + + +_looks_like_partial = partial(_looks_like_functools_member, member="partial") + + +MANAGER.register_transform( + astroid.FunctionDef, _transform_lru_cache, _looks_like_lru_cache +) + + +MANAGER.register_transform( + astroid.Call, + astroid.inference_tip(_functools_partial_inference), + _looks_like_partial, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_gi.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_gi.py new file mode 100644 index 0000000..e49f3a2 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_gi.py @@ -0,0 +1,253 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Cole Robinson +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 David Shea +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2016 Giuseppe Scrivano +# Copyright (c) 2018 Christoph Reiter +# Copyright (c) 2019 Philipp Hörist + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for the Python 2 GObject introspection bindings. + +Helps with understanding everything imported from 'gi.repository' +""" + +import inspect +import itertools +import sys +import re +import warnings + +from astroid import MANAGER, AstroidBuildingError, nodes +from astroid.builder import AstroidBuilder + + +_inspected_modules = {} + +_identifier_re = r"^[A-Za-z_]\w*$" + +_special_methods = frozenset( + { + "__lt__", + "__le__", + "__eq__", + "__ne__", + "__ge__", + "__gt__", + "__iter__", + "__getitem__", + "__setitem__", + "__delitem__", + "__len__", + "__bool__", + "__nonzero__", + "__next__", + "__str__", + "__len__", + "__contains__", + "__enter__", + "__exit__", + "__repr__", + "__getattr__", + "__setattr__", + "__delattr__", + "__del__", + "__hash__", + } +) + + +def _gi_build_stub(parent): + """ + Inspect the passed module recursively and build stubs for functions, + classes, etc. + """ + classes = {} + functions = {} + constants = {} + methods = {} + for name in dir(parent): + if name.startswith("__") and name not in _special_methods: + continue + + # Check if this is a valid name in python + if not re.match(_identifier_re, name): + continue + + try: + obj = getattr(parent, name) + except: + continue + + if inspect.isclass(obj): + classes[name] = obj + elif inspect.isfunction(obj) or inspect.isbuiltin(obj): + functions[name] = obj + elif inspect.ismethod(obj) or inspect.ismethoddescriptor(obj): + methods[name] = obj + elif ( + str(obj).startswith(", ) + # Only accept function calls with two constant arguments + if len(node.args) != 2: + return False + + if not all(isinstance(arg, nodes.Const) for arg in node.args): + return False + + func = node.func + if isinstance(func, nodes.Attribute): + if func.attrname != "require_version": + return False + if isinstance(func.expr, nodes.Name) and func.expr.name == "gi": + return True + + return False + + if isinstance(func, nodes.Name): + return func.name == "require_version" + + return False + + +def _register_require_version(node): + # Load the gi.require_version locally + try: + import gi + + gi.require_version(node.args[0].value, node.args[1].value) + except Exception: + pass + + return node + + +MANAGER.register_failed_import_hook(_import_gi_module) +MANAGER.register_transform( + nodes.Call, _register_require_version, _looks_like_require_version +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_hashlib.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_hashlib.py new file mode 100644 index 0000000..eb34e15 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_hashlib.py @@ -0,0 +1,69 @@ +# Copyright (c) 2016, 2018 Claudiu Popa +# Copyright (c) 2018 David Poirier +# Copyright (c) 2018 wgehalo +# Copyright (c) 2018 Ioana Tagirta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import sys + +import six + +import astroid + +PY36 = sys.version_info >= (3, 6) + + +def _hashlib_transform(): + signature = "value=''" + template = """ + class %(name)s(object): + def __init__(self, %(signature)s): pass + def digest(self): + return %(digest)s + def copy(self): + return self + def update(self, value): pass + def hexdigest(self): + return '' + @property + def name(self): + return %(name)r + @property + def block_size(self): + return 1 + @property + def digest_size(self): + return 1 + """ + algorithms_with_signature = dict.fromkeys( + ["md5", "sha1", "sha224", "sha256", "sha384", "sha512"], signature + ) + if PY36: + blake2b_signature = "data=b'', *, digest_size=64, key=b'', salt=b'', \ + person=b'', fanout=1, depth=1, leaf_size=0, node_offset=0, \ + node_depth=0, inner_size=0, last_node=False" + blake2s_signature = "data=b'', *, digest_size=32, key=b'', salt=b'', \ + person=b'', fanout=1, depth=1, leaf_size=0, node_offset=0, \ + node_depth=0, inner_size=0, last_node=False" + new_algorithms = dict.fromkeys( + ["sha3_224", "sha3_256", "sha3_384", "sha3_512", "shake_128", "shake_256"], + signature, + ) + algorithms_with_signature.update(new_algorithms) + algorithms_with_signature.update( + {"blake2b": blake2b_signature, "blake2s": blake2s_signature} + ) + classes = "".join( + template + % { + "name": hashfunc, + "digest": 'b""' if six.PY3 else '""', + "signature": signature, + } + for hashfunc, signature in algorithms_with_signature.items() + ) + return astroid.parse(classes) + + +astroid.register_module_extender(astroid.MANAGER, "hashlib", _hashlib_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_http.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_http.py new file mode 100644 index 0000000..b16464e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_http.py @@ -0,0 +1,211 @@ +# Copyright (c) 2018-2019 Claudiu Popa + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid brain hints for some of the `http` module.""" +import textwrap + +import astroid +from astroid.builder import AstroidBuilder + + +def _http_transform(): + code = textwrap.dedent( + """ + from collections import namedtuple + _HTTPStatus = namedtuple('_HTTPStatus', 'value phrase description') + + class HTTPStatus: + + @property + def phrase(self): + return "" + @property + def value(self): + return 0 + @property + def description(self): + return "" + + # informational + CONTINUE = _HTTPStatus(100, 'Continue', 'Request received, please continue') + SWITCHING_PROTOCOLS = _HTTPStatus(101, 'Switching Protocols', + 'Switching to new protocol; obey Upgrade header') + PROCESSING = _HTTPStatus(102, 'Processing', '') + OK = _HTTPStatus(200, 'OK', 'Request fulfilled, document follows') + CREATED = _HTTPStatus(201, 'Created', 'Document created, URL follows') + ACCEPTED = _HTTPStatus(202, 'Accepted', + 'Request accepted, processing continues off-line') + NON_AUTHORITATIVE_INFORMATION = _HTTPStatus(203, + 'Non-Authoritative Information', 'Request fulfilled from cache') + NO_CONTENT = _HTTPStatus(204, 'No Content', 'Request fulfilled, nothing follows') + RESET_CONTENT =_HTTPStatus(205, 'Reset Content', 'Clear input form for further input') + PARTIAL_CONTENT = _HTTPStatus(206, 'Partial Content', 'Partial content follows') + MULTI_STATUS = _HTTPStatus(207, 'Multi-Status', '') + ALREADY_REPORTED = _HTTPStatus(208, 'Already Reported', '') + IM_USED = _HTTPStatus(226, 'IM Used', '') + MULTIPLE_CHOICES = _HTTPStatus(300, 'Multiple Choices', + 'Object has several resources -- see URI list') + MOVED_PERMANENTLY = _HTTPStatus(301, 'Moved Permanently', + 'Object moved permanently -- see URI list') + FOUND = _HTTPStatus(302, 'Found', 'Object moved temporarily -- see URI list') + SEE_OTHER = _HTTPStatus(303, 'See Other', 'Object moved -- see Method and URL list') + NOT_MODIFIED = _HTTPStatus(304, 'Not Modified', + 'Document has not changed since given time') + USE_PROXY = _HTTPStatus(305, 'Use Proxy', + 'You must use proxy specified in Location to access this resource') + TEMPORARY_REDIRECT = _HTTPStatus(307, 'Temporary Redirect', + 'Object moved temporarily -- see URI list') + PERMANENT_REDIRECT = _HTTPStatus(308, 'Permanent Redirect', + 'Object moved permanently -- see URI list') + BAD_REQUEST = _HTTPStatus(400, 'Bad Request', + 'Bad request syntax or unsupported method') + UNAUTHORIZED = _HTTPStatus(401, 'Unauthorized', + 'No permission -- see authorization schemes') + PAYMENT_REQUIRED = _HTTPStatus(402, 'Payment Required', + 'No payment -- see charging schemes') + FORBIDDEN = _HTTPStatus(403, 'Forbidden', + 'Request forbidden -- authorization will not help') + NOT_FOUND = _HTTPStatus(404, 'Not Found', + 'Nothing matches the given URI') + METHOD_NOT_ALLOWED = _HTTPStatus(405, 'Method Not Allowed', + 'Specified method is invalid for this resource') + NOT_ACCEPTABLE = _HTTPStatus(406, 'Not Acceptable', + 'URI not available in preferred format') + PROXY_AUTHENTICATION_REQUIRED = _HTTPStatus(407, + 'Proxy Authentication Required', + 'You must authenticate with this proxy before proceeding') + REQUEST_TIMEOUT = _HTTPStatus(408, 'Request Timeout', + 'Request timed out; try again later') + CONFLICT = _HTTPStatus(409, 'Conflict', 'Request conflict') + GONE = _HTTPStatus(410, 'Gone', + 'URI no longer exists and has been permanently removed') + LENGTH_REQUIRED = _HTTPStatus(411, 'Length Required', + 'Client must specify Content-Length') + PRECONDITION_FAILED = _HTTPStatus(412, 'Precondition Failed', + 'Precondition in headers is false') + REQUEST_ENTITY_TOO_LARGE = _HTTPStatus(413, 'Request Entity Too Large', + 'Entity is too large') + REQUEST_URI_TOO_LONG = _HTTPStatus(414, 'Request-URI Too Long', + 'URI is too long') + UNSUPPORTED_MEDIA_TYPE = _HTTPStatus(415, 'Unsupported Media Type', + 'Entity body in unsupported format') + REQUESTED_RANGE_NOT_SATISFIABLE = _HTTPStatus(416, + 'Requested Range Not Satisfiable', + 'Cannot satisfy request range') + EXPECTATION_FAILED = _HTTPStatus(417, 'Expectation Failed', + 'Expect condition could not be satisfied') + MISDIRECTED_REQUEST = _HTTPStatus(421, 'Misdirected Request', + 'Server is not able to produce a response') + UNPROCESSABLE_ENTITY = _HTTPStatus(422, 'Unprocessable Entity') + LOCKED = _HTTPStatus(423, 'Locked') + FAILED_DEPENDENCY = _HTTPStatus(424, 'Failed Dependency') + UPGRADE_REQUIRED = _HTTPStatus(426, 'Upgrade Required') + PRECONDITION_REQUIRED = _HTTPStatus(428, 'Precondition Required', + 'The origin server requires the request to be conditional') + TOO_MANY_REQUESTS = _HTTPStatus(429, 'Too Many Requests', + 'The user has sent too many requests in ' + 'a given amount of time ("rate limiting")') + REQUEST_HEADER_FIELDS_TOO_LARGE = _HTTPStatus(431, + 'Request Header Fields Too Large', + 'The server is unwilling to process the request because its header ' + 'fields are too large') + UNAVAILABLE_FOR_LEGAL_REASONS = _HTTPStatus(451, + 'Unavailable For Legal Reasons', + 'The server is denying access to the ' + 'resource as a consequence of a legal demand') + INTERNAL_SERVER_ERROR = _HTTPStatus(500, 'Internal Server Error', + 'Server got itself in trouble') + NOT_IMPLEMENTED = _HTTPStatus(501, 'Not Implemented', + 'Server does not support this operation') + BAD_GATEWAY = _HTTPStatus(502, 'Bad Gateway', + 'Invalid responses from another server/proxy') + SERVICE_UNAVAILABLE = _HTTPStatus(503, 'Service Unavailable', + 'The server cannot process the request due to a high load') + GATEWAY_TIMEOUT = _HTTPStatus(504, 'Gateway Timeout', + 'The gateway server did not receive a timely response') + HTTP_VERSION_NOT_SUPPORTED = _HTTPStatus(505, 'HTTP Version Not Supported', + 'Cannot fulfill request') + VARIANT_ALSO_NEGOTIATES = _HTTPStatus(506, 'Variant Also Negotiates') + INSUFFICIENT_STORAGE = _HTTPStatus(507, 'Insufficient Storage') + LOOP_DETECTED = _HTTPStatus(508, 'Loop Detected') + NOT_EXTENDED = _HTTPStatus(510, 'Not Extended') + NETWORK_AUTHENTICATION_REQUIRED = _HTTPStatus(511, + 'Network Authentication Required', + 'The client needs to authenticate to gain network access') + """ + ) + return AstroidBuilder(astroid.MANAGER).string_build(code) + + +def _http_client_transform(): + return AstroidBuilder(astroid.MANAGER).string_build( + textwrap.dedent( + """ + from http import HTTPStatus + + CONTINUE = HTTPStatus.CONTINUE + SWITCHING_PROTOCOLS = HTTPStatus.SWITCHING_PROTOCOLS + PROCESSING = HTTPStatus.PROCESSING + OK = HTTPStatus.OK + CREATED = HTTPStatus.CREATED + ACCEPTED = HTTPStatus.ACCEPTED + NON_AUTHORITATIVE_INFORMATION = HTTPStatus.NON_AUTHORITATIVE_INFORMATION + NO_CONTENT = HTTPStatus.NO_CONTENT + RESET_CONTENT = HTTPStatus.RESET_CONTENT + PARTIAL_CONTENT = HTTPStatus.PARTIAL_CONTENT + MULTI_STATUS = HTTPStatus.MULTI_STATUS + ALREADY_REPORTED = HTTPStatus.ALREADY_REPORTED + IM_USED = HTTPStatus.IM_USED + MULTIPLE_CHOICES = HTTPStatus.MULTIPLE_CHOICES + MOVED_PERMANENTLY = HTTPStatus.MOVED_PERMANENTLY + FOUND = HTTPStatus.FOUND + SEE_OTHER = HTTPStatus.SEE_OTHER + NOT_MODIFIED = HTTPStatus.NOT_MODIFIED + USE_PROXY = HTTPStatus.USE_PROXY + TEMPORARY_REDIRECT = HTTPStatus.TEMPORARY_REDIRECT + PERMANENT_REDIRECT = HTTPStatus.PERMANENT_REDIRECT + BAD_REQUEST = HTTPStatus.BAD_REQUEST + UNAUTHORIZED = HTTPStatus.UNAUTHORIZED + PAYMENT_REQUIRED = HTTPStatus.PAYMENT_REQUIRED + FORBIDDEN = HTTPStatus.FORBIDDEN + NOT_FOUND = HTTPStatus.NOT_FOUND + METHOD_NOT_ALLOWED = HTTPStatus.METHOD_NOT_ALLOWED + NOT_ACCEPTABLE = HTTPStatus.NOT_ACCEPTABLE + PROXY_AUTHENTICATION_REQUIRED = HTTPStatus.PROXY_AUTHENTICATION_REQUIRED + REQUEST_TIMEOUT = HTTPStatus.REQUEST_TIMEOUT + CONFLICT = HTTPStatus.CONFLICT + GONE = HTTPStatus.GONE + LENGTH_REQUIRED = HTTPStatus.LENGTH_REQUIRED + PRECONDITION_FAILED = HTTPStatus.PRECONDITION_FAILED + REQUEST_ENTITY_TOO_LARGE = HTTPStatus.REQUEST_ENTITY_TOO_LARGE + REQUEST_URI_TOO_LONG = HTTPStatus.REQUEST_URI_TOO_LONG + UNSUPPORTED_MEDIA_TYPE = HTTPStatus.UNSUPPORTED_MEDIA_TYPE + REQUESTED_RANGE_NOT_SATISFIABLE = HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE + EXPECTATION_FAILED = HTTPStatus.EXPECTATION_FAILED + UNPROCESSABLE_ENTITY = HTTPStatus.UNPROCESSABLE_ENTITY + LOCKED = HTTPStatus.LOCKED + FAILED_DEPENDENCY = HTTPStatus.FAILED_DEPENDENCY + UPGRADE_REQUIRED = HTTPStatus.UPGRADE_REQUIRED + PRECONDITION_REQUIRED = HTTPStatus.PRECONDITION_REQUIRED + TOO_MANY_REQUESTS = HTTPStatus.TOO_MANY_REQUESTS + REQUEST_HEADER_FIELDS_TOO_LARGE = HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE + INTERNAL_SERVER_ERROR = HTTPStatus.INTERNAL_SERVER_ERROR + NOT_IMPLEMENTED = HTTPStatus.NOT_IMPLEMENTED + BAD_GATEWAY = HTTPStatus.BAD_GATEWAY + SERVICE_UNAVAILABLE = HTTPStatus.SERVICE_UNAVAILABLE + GATEWAY_TIMEOUT = HTTPStatus.GATEWAY_TIMEOUT + HTTP_VERSION_NOT_SUPPORTED = HTTPStatus.HTTP_VERSION_NOT_SUPPORTED + VARIANT_ALSO_NEGOTIATES = HTTPStatus.VARIANT_ALSO_NEGOTIATES + INSUFFICIENT_STORAGE = HTTPStatus.INSUFFICIENT_STORAGE + LOOP_DETECTED = HTTPStatus.LOOP_DETECTED + NOT_EXTENDED = HTTPStatus.NOT_EXTENDED + NETWORK_AUTHENTICATION_REQUIRED = HTTPStatus.NETWORK_AUTHENTICATION_REQUIRED + """ + ) + ) + + +astroid.register_module_extender(astroid.MANAGER, "http", _http_transform) +astroid.register_module_extender(astroid.MANAGER, "http.client", _http_client_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_io.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_io.py new file mode 100644 index 0000000..c745311 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_io.py @@ -0,0 +1,45 @@ +# Copyright (c) 2016, 2018 Claudiu Popa + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid brain hints for some of the _io C objects.""" + +import astroid + + +BUFFERED = {"BufferedWriter", "BufferedReader"} +TextIOWrapper = "TextIOWrapper" +FileIO = "FileIO" +BufferedWriter = "BufferedWriter" + + +def _generic_io_transform(node, name, cls): + """Transform the given name, by adding the given *class* as a member of the node.""" + + io_module = astroid.MANAGER.ast_from_module_name("_io") + attribute_object = io_module[cls] + instance = attribute_object.instantiate_class() + node.locals[name] = [instance] + + +def _transform_text_io_wrapper(node): + # This is not always correct, since it can vary with the type of the descriptor, + # being stdout, stderr or stdin. But we cannot get access to the name of the + # stream, which is why we are using the BufferedWriter class as a default + # value + return _generic_io_transform(node, name="buffer", cls=BufferedWriter) + + +def _transform_buffered(node): + return _generic_io_transform(node, name="raw", cls=FileIO) + + +astroid.MANAGER.register_transform( + astroid.ClassDef, _transform_buffered, lambda node: node.name in BUFFERED +) +astroid.MANAGER.register_transform( + astroid.ClassDef, + _transform_text_io_wrapper, + lambda node: node.name == TextIOWrapper, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_mechanize.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_mechanize.py new file mode 100644 index 0000000..ef62c53 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_mechanize.py @@ -0,0 +1,29 @@ +# Copyright (c) 2012-2013 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder + + +def mechanize_transform(): + return AstroidBuilder(MANAGER).string_build( + """ + +class Browser(object): + def open(self, url, data=None, timeout=None): + return None + def open_novisit(self, url, data=None, timeout=None): + return None + def open_local_file(self, filename): + return None + +""" + ) + + +register_module_extender(MANAGER, "mechanize", mechanize_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py new file mode 100644 index 0000000..3629b03 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_multiprocessing.py @@ -0,0 +1,107 @@ +# Copyright (c) 2016, 2018 Claudiu Popa +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +import sys + +import astroid +from astroid import exceptions + + +def _multiprocessing_transform(): + module = astroid.parse( + """ + from multiprocessing.managers import SyncManager + def Manager(): + return SyncManager() + """ + ) + # Multiprocessing uses a getattr lookup inside contexts, + # in order to get the attributes they need. Since it's extremely + # dynamic, we use this approach to fake it. + node = astroid.parse( + """ + from multiprocessing.context import DefaultContext, BaseContext + default = DefaultContext() + base = BaseContext() + """ + ) + try: + context = next(node["default"].infer()) + base = next(node["base"].infer()) + except exceptions.InferenceError: + return module + + for node in (context, base): + for key, value in node.locals.items(): + if key.startswith("_"): + continue + + value = value[0] + if isinstance(value, astroid.FunctionDef): + # We need to rebound this, since otherwise + # it will have an extra argument (self). + value = astroid.BoundMethod(value, node) + module[key] = value + return module + + +def _multiprocessing_managers_transform(): + return astroid.parse( + """ + import array + import threading + import multiprocessing.pool as pool + + import six + + class Namespace(object): + pass + + class Value(object): + def __init__(self, typecode, value, lock=True): + self._typecode = typecode + self._value = value + def get(self): + return self._value + def set(self, value): + self._value = value + def __repr__(self): + return '%s(%r, %r)'%(type(self).__name__, self._typecode, self._value) + value = property(get, set) + + def Array(typecode, sequence, lock=True): + return array.array(typecode, sequence) + + class SyncManager(object): + Queue = JoinableQueue = six.moves.queue.Queue + Event = threading.Event + RLock = threading.RLock + BoundedSemaphore = threading.BoundedSemaphore + Condition = threading.Condition + Barrier = threading.Barrier + Pool = pool.Pool + list = list + dict = dict + Value = Value + Array = Array + Namespace = Namespace + __enter__ = lambda self: self + __exit__ = lambda *args: args + + def start(self, initializer=None, initargs=None): + pass + def shutdown(self): + pass + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "multiprocessing.managers", _multiprocessing_managers_transform +) +astroid.register_module_extender( + astroid.MANAGER, "multiprocessing", _multiprocessing_transform +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py new file mode 100644 index 0000000..13fcf79 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_namedtuple_enum.py @@ -0,0 +1,455 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2012-2015 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Dmitry Pribysh +# Copyright (c) 2015 David Shea +# Copyright (c) 2015 Philip Lorenz +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2016 Mateusz Bysiek +# Copyright (c) 2017 Hugo +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2019 Ashley Whetter + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for the Python standard library.""" + +import functools +import keyword +from textwrap import dedent + +from astroid import MANAGER, UseInferenceDefault, inference_tip, InferenceError +from astroid import arguments +from astroid import exceptions +from astroid import nodes +from astroid.builder import AstroidBuilder, extract_node +from astroid import util + + +TYPING_NAMEDTUPLE_BASENAMES = {"NamedTuple", "typing.NamedTuple"} +ENUM_BASE_NAMES = { + "Enum", + "IntEnum", + "enum.Enum", + "enum.IntEnum", + "IntFlag", + "enum.IntFlag", +} + + +def _infer_first(node, context): + if node is util.Uninferable: + raise UseInferenceDefault + try: + value = next(node.infer(context=context)) + if value is util.Uninferable: + raise UseInferenceDefault() + else: + return value + except StopIteration: + raise InferenceError() + + +def _find_func_form_arguments(node, context): + def _extract_namedtuple_arg_or_keyword(position, key_name=None): + + if len(args) > position: + return _infer_first(args[position], context) + if key_name and key_name in found_keywords: + return _infer_first(found_keywords[key_name], context) + + args = node.args + keywords = node.keywords + found_keywords = ( + {keyword.arg: keyword.value for keyword in keywords} if keywords else {} + ) + + name = _extract_namedtuple_arg_or_keyword(position=0, key_name="typename") + names = _extract_namedtuple_arg_or_keyword(position=1, key_name="field_names") + if name and names: + return name.value, names + + raise UseInferenceDefault() + + +def infer_func_form(node, base_type, context=None, enum=False): + """Specific inference function for namedtuple or Python 3 enum. """ + # node is a Call node, class name as first argument and generated class + # attributes as second argument + + # namedtuple or enums list of attributes can be a list of strings or a + # whitespace-separate string + try: + name, names = _find_func_form_arguments(node, context) + try: + attributes = names.value.replace(",", " ").split() + except AttributeError: + if not enum: + attributes = [ + _infer_first(const, context).value for const in names.elts + ] + else: + # Enums supports either iterator of (name, value) pairs + # or mappings. + if hasattr(names, "items") and isinstance(names.items, list): + attributes = [ + _infer_first(const[0], context).value + for const in names.items + if isinstance(const[0], nodes.Const) + ] + elif hasattr(names, "elts"): + # Enums can support either ["a", "b", "c"] + # or [("a", 1), ("b", 2), ...], but they can't + # be mixed. + if all(isinstance(const, nodes.Tuple) for const in names.elts): + attributes = [ + _infer_first(const.elts[0], context).value + for const in names.elts + if isinstance(const, nodes.Tuple) + ] + else: + attributes = [ + _infer_first(const, context).value for const in names.elts + ] + else: + raise AttributeError + if not attributes: + raise AttributeError + except (AttributeError, exceptions.InferenceError): + raise UseInferenceDefault() + + attributes = [attr for attr in attributes if " " not in attr] + + # If we can't infer the name of the class, don't crash, up to this point + # we know it is a namedtuple anyway. + name = name or "Uninferable" + # we want to return a Class node instance with proper attributes set + class_node = nodes.ClassDef(name, "docstring") + class_node.parent = node.parent + # set base class=tuple + class_node.bases.append(base_type) + # XXX add __init__(*attributes) method + for attr in attributes: + fake_node = nodes.EmptyNode() + fake_node.parent = class_node + fake_node.attrname = attr + class_node.instance_attrs[attr] = [fake_node] + return class_node, name, attributes + + +def _has_namedtuple_base(node): + """Predicate for class inference tip + + :type node: ClassDef + :rtype: bool + """ + return set(node.basenames) & TYPING_NAMEDTUPLE_BASENAMES + + +def _looks_like(node, name): + func = node.func + if isinstance(func, nodes.Attribute): + return func.attrname == name + if isinstance(func, nodes.Name): + return func.name == name + return False + + +_looks_like_namedtuple = functools.partial(_looks_like, name="namedtuple") +_looks_like_enum = functools.partial(_looks_like, name="Enum") +_looks_like_typing_namedtuple = functools.partial(_looks_like, name="NamedTuple") + + +def infer_named_tuple(node, context=None): + """Specific inference function for namedtuple Call node""" + tuple_base_name = nodes.Name(name="tuple", parent=node.root()) + class_node, name, attributes = infer_func_form( + node, tuple_base_name, context=context + ) + call_site = arguments.CallSite.from_call(node, context=context) + func = next(extract_node("import collections; collections.namedtuple").infer()) + try: + rename = next(call_site.infer_argument(func, "rename", context)).bool_value() + except InferenceError: + rename = False + + if rename: + attributes = _get_renamed_namedtuple_attributes(attributes) + + replace_args = ", ".join("{arg}=None".format(arg=arg) for arg in attributes) + field_def = ( + " {name} = property(lambda self: self[{index:d}], " + "doc='Alias for field number {index:d}')" + ) + field_defs = "\n".join( + field_def.format(name=name, index=index) + for index, name in enumerate(attributes) + ) + fake = AstroidBuilder(MANAGER).string_build( + """ +class %(name)s(tuple): + __slots__ = () + _fields = %(fields)r + def _asdict(self): + return self.__dict__ + @classmethod + def _make(cls, iterable, new=tuple.__new__, len=len): + return new(cls, iterable) + def _replace(self, %(replace_args)s): + return self + def __getnewargs__(self): + return tuple(self) +%(field_defs)s + """ + % { + "name": name, + "fields": attributes, + "field_defs": field_defs, + "replace_args": replace_args, + } + ) + class_node.locals["_asdict"] = fake.body[0].locals["_asdict"] + class_node.locals["_make"] = fake.body[0].locals["_make"] + class_node.locals["_replace"] = fake.body[0].locals["_replace"] + class_node.locals["_fields"] = fake.body[0].locals["_fields"] + for attr in attributes: + class_node.locals[attr] = fake.body[0].locals[attr] + # we use UseInferenceDefault, we can't be a generator so return an iterator + return iter([class_node]) + + +def _get_renamed_namedtuple_attributes(field_names): + names = list(field_names) + seen = set() + for i, name in enumerate(field_names): + if ( + not all(c.isalnum() or c == "_" for c in name) + or keyword.iskeyword(name) + or not name + or name[0].isdigit() + or name.startswith("_") + or name in seen + ): + names[i] = "_%d" % i + seen.add(name) + return tuple(names) + + +def infer_enum(node, context=None): + """ Specific inference function for enum Call node. """ + enum_meta = extract_node( + """ + class EnumMeta(object): + 'docstring' + def __call__(self, node): + class EnumAttribute(object): + name = '' + value = 0 + return EnumAttribute() + def __iter__(self): + class EnumAttribute(object): + name = '' + value = 0 + return [EnumAttribute()] + def __reversed__(self): + class EnumAttribute(object): + name = '' + value = 0 + return (EnumAttribute, ) + def __next__(self): + return next(iter(self)) + def __getitem__(self, attr): + class Value(object): + @property + def name(self): + return '' + @property + def value(self): + return attr + + return Value() + __members__ = [''] + """ + ) + class_node = infer_func_form(node, enum_meta, context=context, enum=True)[0] + return iter([class_node.instantiate_class()]) + + +INT_FLAG_ADDITION_METHODS = """ + def __or__(self, other): + return {name}(self.value | other.value) + def __and__(self, other): + return {name}(self.value & other.value) + def __xor__(self, other): + return {name}(self.value ^ other.value) + def __add__(self, other): + return {name}(self.value + other.value) + def __div__(self, other): + return {name}(self.value / other.value) + def __invert__(self): + return {name}(~self.value) + def __mul__(self, other): + return {name}(self.value * other.value) +""" + + +def infer_enum_class(node): + """ Specific inference for enums. """ + for basename in node.basenames: + # TODO: doesn't handle subclasses yet. This implementation + # is a hack to support enums. + if basename not in ENUM_BASE_NAMES: + continue + if node.root().name == "enum": + # Skip if the class is directly from enum module. + break + for local, values in node.locals.items(): + if any(not isinstance(value, nodes.AssignName) for value in values): + continue + + targets = [] + stmt = values[0].statement() + if isinstance(stmt, nodes.Assign): + if isinstance(stmt.targets[0], nodes.Tuple): + targets = stmt.targets[0].itered() + else: + targets = stmt.targets + elif isinstance(stmt, nodes.AnnAssign): + targets = [stmt.target] + else: + continue + + inferred_return_value = None + if isinstance(stmt, nodes.Assign): + if isinstance(stmt.value, nodes.Const): + if isinstance(stmt.value.value, str): + inferred_return_value = repr(stmt.value.value) + else: + inferred_return_value = stmt.value.value + else: + inferred_return_value = stmt.value.as_string() + + new_targets = [] + for target in targets: + # Replace all the assignments with our mocked class. + classdef = dedent( + """ + class {name}({types}): + @property + def value(self): + return {return_value} + @property + def name(self): + return "{name}" + """.format( + name=target.name, + types=", ".join(node.basenames), + return_value=inferred_return_value, + ) + ) + if "IntFlag" in basename: + # Alright, we need to add some additional methods. + # Unfortunately we still can't infer the resulting objects as + # Enum members, but once we'll be able to do that, the following + # should result in some nice symbolic execution + classdef += INT_FLAG_ADDITION_METHODS.format(name=target.name) + + fake = AstroidBuilder(MANAGER).string_build(classdef)[target.name] + fake.parent = target.parent + for method in node.mymethods(): + fake.locals[method.name] = [method] + new_targets.append(fake.instantiate_class()) + node.locals[local] = new_targets + break + return node + + +def infer_typing_namedtuple_class(class_node, context=None): + """Infer a subclass of typing.NamedTuple""" + # Check if it has the corresponding bases + annassigns_fields = [ + annassign.target.name + for annassign in class_node.body + if isinstance(annassign, nodes.AnnAssign) + ] + code = dedent( + """ + from collections import namedtuple + namedtuple({typename!r}, {fields!r}) + """ + ).format(typename=class_node.name, fields=",".join(annassigns_fields)) + node = extract_node(code) + generated_class_node = next(infer_named_tuple(node, context)) + for method in class_node.mymethods(): + generated_class_node.locals[method.name] = [method] + + for assign in class_node.body: + if not isinstance(assign, nodes.Assign): + continue + + for target in assign.targets: + attr = target.name + generated_class_node.locals[attr] = class_node.locals[attr] + + return iter((generated_class_node,)) + + +def infer_typing_namedtuple(node, context=None): + """Infer a typing.NamedTuple(...) call.""" + # This is essentially a namedtuple with different arguments + # so we extract the args and infer a named tuple. + try: + func = next(node.func.infer()) + except InferenceError: + raise UseInferenceDefault + + if func.qname() != "typing.NamedTuple": + raise UseInferenceDefault + + if len(node.args) != 2: + raise UseInferenceDefault + + if not isinstance(node.args[1], (nodes.List, nodes.Tuple)): + raise UseInferenceDefault + + names = [] + for elt in node.args[1].elts: + if not isinstance(elt, (nodes.List, nodes.Tuple)): + raise UseInferenceDefault + if len(elt.elts) != 2: + raise UseInferenceDefault + names.append(elt.elts[0].as_string()) + + typename = node.args[0].as_string() + if names: + field_names = "({},)".format(",".join(names)) + else: + field_names = "''" + node = extract_node( + "namedtuple({typename}, {fields})".format(typename=typename, fields=field_names) + ) + return infer_named_tuple(node, context) + + +MANAGER.register_transform( + nodes.Call, inference_tip(infer_named_tuple), _looks_like_namedtuple +) +MANAGER.register_transform(nodes.Call, inference_tip(infer_enum), _looks_like_enum) +MANAGER.register_transform( + nodes.ClassDef, + infer_enum_class, + predicate=lambda cls: any( + basename for basename in cls.basenames if basename in ENUM_BASE_NAMES + ), +) +MANAGER.register_transform( + nodes.ClassDef, inference_tip(infer_typing_namedtuple_class), _has_namedtuple_base +) +MANAGER.register_transform( + nodes.Call, inference_tip(infer_typing_namedtuple), _looks_like_typing_namedtuple +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_nose.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_nose.py new file mode 100644 index 0000000..d0280a3 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_nose.py @@ -0,0 +1,77 @@ +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Hooks for nose library.""" + +import re +import textwrap + +import astroid +import astroid.builder + +_BUILDER = astroid.builder.AstroidBuilder(astroid.MANAGER) + + +def _pep8(name, caps=re.compile("([A-Z])")): + return caps.sub(lambda m: "_" + m.groups()[0].lower(), name) + + +def _nose_tools_functions(): + """Get an iterator of names and bound methods.""" + module = _BUILDER.string_build( + textwrap.dedent( + """ + import unittest + + class Test(unittest.TestCase): + pass + a = Test() + """ + ) + ) + try: + case = next(module["a"].infer()) + except astroid.InferenceError: + return + for method in case.methods(): + if method.name.startswith("assert") and "_" not in method.name: + pep8_name = _pep8(method.name) + yield pep8_name, astroid.BoundMethod(method, case) + if method.name == "assertEqual": + # nose also exports assert_equals. + yield "assert_equals", astroid.BoundMethod(method, case) + + +def _nose_tools_transform(node): + for method_name, method in _nose_tools_functions(): + node.locals[method_name] = [method] + + +def _nose_tools_trivial_transform(): + """Custom transform for the nose.tools module.""" + stub = _BUILDER.string_build("""__all__ = []""") + all_entries = ["ok_", "eq_"] + + for pep8_name, method in _nose_tools_functions(): + all_entries.append(pep8_name) + stub[pep8_name] = method + + # Update the __all__ variable, since nose.tools + # does this manually with .append. + all_assign = stub["__all__"].parent + all_object = astroid.List(all_entries) + all_object.parent = all_assign + all_assign.value = all_object + return stub + + +astroid.register_module_extender( + astroid.MANAGER, "nose.tools.trivial", _nose_tools_trivial_transform +) +astroid.MANAGER.register_transform( + astroid.Module, _nose_tools_transform, lambda n: n.name == "nose.tools" +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py new file mode 100644 index 0000000..62dfe99 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_fromnumeric.py @@ -0,0 +1,23 @@ +# Copyright (c) 2019 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy.core.fromnumeric module.""" + +import astroid + + +def numpy_core_fromnumeric_transform(): + return astroid.parse( + """ + def sum(a, axis=None, dtype=None, out=None, keepdims=None, initial=None): + return numpy.ndarray([0, 0]) + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.core.fromnumeric", numpy_core_fromnumeric_transform +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py new file mode 100644 index 0000000..58aa0a9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_function_base.py @@ -0,0 +1,29 @@ +# Copyright (c) 2019 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy.core.function_base module.""" + +import functools +import astroid +from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member + + +METHODS_TO_BE_INFERRED = { + "linspace": """def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0): + return numpy.ndarray([0, 0])""", + "logspace": """def logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0): + return numpy.ndarray([0, 0])""", + "geomspace": """def geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0): + return numpy.ndarray([0, 0])""", +} + +for func_name, func_src in METHODS_TO_BE_INFERRED.items(): + inference_function = functools.partial(infer_numpy_member, func_src) + astroid.MANAGER.register_transform( + astroid.Attribute, + astroid.inference_tip(inference_function), + functools.partial(looks_like_numpy_member, func_name), + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py new file mode 100644 index 0000000..b2e32bc --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_multiarray.py @@ -0,0 +1,92 @@ +# Copyright (c) 2019-2020 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy.core.multiarray module.""" + +import functools +import astroid +from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member + + +def numpy_core_multiarray_transform(): + return astroid.parse( + """ + # different functions defined in multiarray.py + def inner(a, b): + return numpy.ndarray([0, 0]) + + def vdot(a, b): + return numpy.ndarray([0, 0]) + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.core.multiarray", numpy_core_multiarray_transform +) + + +METHODS_TO_BE_INFERRED = { + "array": """def array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0): + return numpy.ndarray([0, 0])""", + "dot": """def dot(a, b, out=None): + return numpy.ndarray([0, 0])""", + "empty_like": """def empty_like(a, dtype=None, order='K', subok=True): + return numpy.ndarray((0, 0))""", + "concatenate": """def concatenate(arrays, axis=None, out=None): + return numpy.ndarray((0, 0))""", + "where": """def where(condition, x=None, y=None): + return numpy.ndarray([0, 0])""", + "empty": """def empty(shape, dtype=float, order='C'): + return numpy.ndarray([0, 0])""", + "bincount": """def bincount(x, weights=None, minlength=0): + return numpy.ndarray([0, 0])""", + "busday_count": """def busday_count(begindates, enddates, weekmask='1111100', holidays=[], busdaycal=None, out=None): + return numpy.ndarray([0, 0])""", + "busday_offset": """def busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None): + return numpy.ndarray([0, 0])""", + "can_cast": """def can_cast(from_, to, casting='safe'): + return True""", + "copyto": """def copyto(dst, src, casting='same_kind', where=True): + return None""", + "datetime_as_string": """def datetime_as_string(arr, unit=None, timezone='naive', casting='same_kind'): + return numpy.ndarray([0, 0])""", + "is_busday": """def is_busday(dates, weekmask='1111100', holidays=None, busdaycal=None, out=None): + return numpy.ndarray([0, 0])""", + "lexsort": """def lexsort(keys, axis=-1): + return numpy.ndarray([0, 0])""", + "may_share_memory": """def may_share_memory(a, b, max_work=None): + return True""", + # Not yet available because dtype is not yet present in those brains + # "min_scalar_type": """def min_scalar_type(a): + # return numpy.dtype('int16')""", + "packbits": """def packbits(a, axis=None, bitorder='big'): + return numpy.ndarray([0, 0])""", + # Not yet available because dtype is not yet present in those brains + # "result_type": """def result_type(*arrays_and_dtypes): + # return numpy.dtype('int16')""", + "shares_memory": """def shares_memory(a, b, max_work=None): + return True""", + "unpackbits": """def unpackbits(a, axis=None, count=None, bitorder='big'): + return numpy.ndarray([0, 0])""", + "unravel_index": """def unravel_index(indices, shape, order='C'): + return (numpy.ndarray([0, 0]),)""", + "zeros": """def zeros(shape, dtype=float, order='C'): + return numpy.ndarray([0, 0])""", +} + +for method_name, function_src in METHODS_TO_BE_INFERRED.items(): + inference_function = functools.partial(infer_numpy_member, function_src) + astroid.MANAGER.register_transform( + astroid.Attribute, + astroid.inference_tip(inference_function), + functools.partial(looks_like_numpy_member, method_name), + ) + astroid.MANAGER.register_transform( + astroid.Name, + astroid.inference_tip(inference_function), + functools.partial(looks_like_numpy_member, method_name), + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py new file mode 100644 index 0000000..2a6f37e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numeric.py @@ -0,0 +1,43 @@ +# Copyright (c) 2019 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy.core.numeric module.""" + +import functools +import astroid +from brain_numpy_utils import looks_like_numpy_member, infer_numpy_member + + +def numpy_core_numeric_transform(): + return astroid.parse( + """ + # different functions defined in numeric.py + import numpy + def zeros_like(a, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) + def ones_like(a, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) + def full_like(a, fill_value, dtype=None, order='K', subok=True): return numpy.ndarray((0, 0)) + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.core.numeric", numpy_core_numeric_transform +) + + +METHODS_TO_BE_INFERRED = { + "ones": """def ones(shape, dtype=None, order='C'): + return numpy.ndarray([0, 0])""" +} + + +for method_name, function_src in METHODS_TO_BE_INFERRED.items(): + inference_function = functools.partial(infer_numpy_member, function_src) + astroid.MANAGER.register_transform( + astroid.Attribute, + astroid.inference_tip(inference_function), + functools.partial(looks_like_numpy_member, method_name), + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py new file mode 100644 index 0000000..6ac4a14 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_numerictypes.py @@ -0,0 +1,254 @@ +# Copyright (c) 2019-2020 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +# TODO(hippo91) : correct the methods signature. + +"""Astroid hooks for numpy.core.numerictypes module.""" + +import astroid + + +def numpy_core_numerictypes_transform(): + # TODO: Uniformize the generic API with the ndarray one. + # According to numpy doc the generic object should expose + # the same API than ndarray. This has been done here partially + # through the astype method. + return astroid.parse( + """ + # different types defined in numerictypes.py + class generic(object): + def __init__(self, value): + self.T = None + self.base = None + self.data = None + self.dtype = None + self.flags = None + self.flat = None + self.imag = None + self.itemsize = None + self.nbytes = None + self.ndim = None + self.real = None + self.size = None + self.strides = None + + def all(self): return uninferable + def any(self): return uninferable + def argmax(self): return uninferable + def argmin(self): return uninferable + def argsort(self): return uninferable + def astype(self, dtype, order='K', casting='unsafe', subok=True, copy=True): return np.ndarray([0, 0]) + def base(self): return uninferable + def byteswap(self): return uninferable + def choose(self): return uninferable + def clip(self): return uninferable + def compress(self): return uninferable + def conj(self): return uninferable + def conjugate(self): return uninferable + def copy(self): return uninferable + def cumprod(self): return uninferable + def cumsum(self): return uninferable + def data(self): return uninferable + def diagonal(self): return uninferable + def dtype(self): return uninferable + def dump(self): return uninferable + def dumps(self): return uninferable + def fill(self): return uninferable + def flags(self): return uninferable + def flat(self): return uninferable + def flatten(self): return uninferable + def getfield(self): return uninferable + def imag(self): return uninferable + def item(self): return uninferable + def itemset(self): return uninferable + def itemsize(self): return uninferable + def max(self): return uninferable + def mean(self): return uninferable + def min(self): return uninferable + def nbytes(self): return uninferable + def ndim(self): return uninferable + def newbyteorder(self): return uninferable + def nonzero(self): return uninferable + def prod(self): return uninferable + def ptp(self): return uninferable + def put(self): return uninferable + def ravel(self): return uninferable + def real(self): return uninferable + def repeat(self): return uninferable + def reshape(self): return uninferable + def resize(self): return uninferable + def round(self): return uninferable + def searchsorted(self): return uninferable + def setfield(self): return uninferable + def setflags(self): return uninferable + def shape(self): return uninferable + def size(self): return uninferable + def sort(self): return uninferable + def squeeze(self): return uninferable + def std(self): return uninferable + def strides(self): return uninferable + def sum(self): return uninferable + def swapaxes(self): return uninferable + def take(self): return uninferable + def tobytes(self): return uninferable + def tofile(self): return uninferable + def tolist(self): return uninferable + def tostring(self): return uninferable + def trace(self): return uninferable + def transpose(self): return uninferable + def var(self): return uninferable + def view(self): return uninferable + + + class dtype(object): + def __init__(self, obj, align=False, copy=False): + self.alignment = None + self.base = None + self.byteorder = None + self.char = None + self.descr = None + self.fields = None + self.flags = None + self.hasobject = None + self.isalignedstruct = None + self.isbuiltin = None + self.isnative = None + self.itemsize = None + self.kind = None + self.metadata = None + self.name = None + self.names = None + self.num = None + self.shape = None + self.str = None + self.subdtype = None + self.type = None + + def newbyteorder(self, new_order='S'): return uninferable + def __neg__(self): return uninferable + + class busdaycalendar(object): + def __init__(self, weekmask='1111100', holidays=None): + self.holidays = None + self.weekmask = None + + class flexible(generic): pass + class bool_(generic): pass + class number(generic): + def __neg__(self): return uninferable + class datetime64(generic): + def __init__(self, nb, unit=None): pass + + + class void(flexible): + def __init__(self, *args, **kwargs): + self.base = None + self.dtype = None + self.flags = None + def getfield(self): return uninferable + def setfield(self): return uninferable + + + class character(flexible): pass + + + class integer(number): + def __init__(self, value): + self.denominator = None + self.numerator = None + + + class inexact(number): pass + + + class str_(str, character): + def maketrans(self, x, y=None, z=None): return uninferable + + + class bytes_(bytes, character): + def fromhex(self, string): return uninferable + def maketrans(self, frm, to): return uninferable + + + class signedinteger(integer): pass + + + class unsignedinteger(integer): pass + + + class complexfloating(inexact): pass + + + class floating(inexact): pass + + + class float64(floating, float): + def fromhex(self, string): return uninferable + + + class uint64(unsignedinteger): pass + class complex64(complexfloating): pass + class int16(signedinteger): pass + class float96(floating): pass + class int8(signedinteger): pass + class uint32(unsignedinteger): pass + class uint8(unsignedinteger): pass + class _typedict(dict): pass + class complex192(complexfloating): pass + class timedelta64(signedinteger): + def __init__(self, nb, unit=None): pass + class int32(signedinteger): pass + class uint16(unsignedinteger): pass + class float32(floating): pass + class complex128(complexfloating, complex): pass + class float16(floating): pass + class int64(signedinteger): pass + + buffer_type = memoryview + bool8 = bool_ + byte = int8 + bytes0 = bytes_ + cdouble = complex128 + cfloat = complex128 + clongdouble = complex192 + clongfloat = complex192 + complex_ = complex128 + csingle = complex64 + double = float64 + float_ = float64 + half = float16 + int0 = int32 + int_ = int32 + intc = int32 + intp = int32 + long = int32 + longcomplex = complex192 + longdouble = float96 + longfloat = float96 + longlong = int64 + object0 = object_ + object_ = object_ + short = int16 + single = float32 + singlecomplex = complex64 + str0 = str_ + string_ = bytes_ + ubyte = uint8 + uint = uint32 + uint0 = uint32 + uintc = uint32 + uintp = uint32 + ulonglong = uint64 + unicode = str_ + unicode_ = str_ + ushort = uint16 + void0 = void + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.core.numerictypes", numpy_core_numerictypes_transform +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py new file mode 100644 index 0000000..897961e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_core_umath.py @@ -0,0 +1,147 @@ +# Copyright (c) 2019 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy.core.umath module.""" + +import astroid + + +def numpy_core_umath_transform(): + ufunc_optional_keyword_arguments = ( + """out=None, where=True, casting='same_kind', order='K', """ + """dtype=None, subok=True""" + ) + return astroid.parse( + """ + class FakeUfunc: + def __init__(self): + self.__doc__ = str() + self.__name__ = str() + self.nin = 0 + self.nout = 0 + self.nargs = 0 + self.ntypes = 0 + self.types = None + self.identity = None + self.signature = None + + @classmethod + def reduce(cls, a, axis=None, dtype=None, out=None): + return numpy.ndarray([0, 0]) + + @classmethod + def accumulate(cls, array, axis=None, dtype=None, out=None): + return numpy.ndarray([0, 0]) + + @classmethod + def reduceat(cls, a, indices, axis=None, dtype=None, out=None): + return numpy.ndarray([0, 0]) + + @classmethod + def outer(cls, A, B, **kwargs): + return numpy.ndarray([0, 0]) + + @classmethod + def at(cls, a, indices, b=None): + return numpy.ndarray([0, 0]) + + class FakeUfuncOneArg(FakeUfunc): + def __call__(self, x, {opt_args:s}): + return numpy.ndarray([0, 0]) + + class FakeUfuncOneArgBis(FakeUfunc): + def __call__(self, x, {opt_args:s}): + return numpy.ndarray([0, 0]), numpy.ndarray([0, 0]) + + class FakeUfuncTwoArgs(FakeUfunc): + def __call__(self, x1, x2, {opt_args:s}): + return numpy.ndarray([0, 0]) + + # Constants + e = 2.718281828459045 + euler_gamma = 0.5772156649015329 + + # One arg functions with optional kwargs + arccos = FakeUfuncOneArg() + arccosh = FakeUfuncOneArg() + arcsin = FakeUfuncOneArg() + arcsinh = FakeUfuncOneArg() + arctan = FakeUfuncOneArg() + arctanh = FakeUfuncOneArg() + cbrt = FakeUfuncOneArg() + conj = FakeUfuncOneArg() + conjugate = FakeUfuncOneArg() + cosh = FakeUfuncOneArg() + deg2rad = FakeUfuncOneArg() + exp2 = FakeUfuncOneArg() + expm1 = FakeUfuncOneArg() + fabs = FakeUfuncOneArg() + frexp = FakeUfuncOneArgBis() + isfinite = FakeUfuncOneArg() + isinf = FakeUfuncOneArg() + log = FakeUfuncOneArg() + log1p = FakeUfuncOneArg() + log2 = FakeUfuncOneArg() + logical_not = FakeUfuncOneArg() + modf = FakeUfuncOneArgBis() + negative = FakeUfuncOneArg() + positive = FakeUfuncOneArg() + rad2deg = FakeUfuncOneArg() + reciprocal = FakeUfuncOneArg() + rint = FakeUfuncOneArg() + sign = FakeUfuncOneArg() + signbit = FakeUfuncOneArg() + sinh = FakeUfuncOneArg() + spacing = FakeUfuncOneArg() + square = FakeUfuncOneArg() + tan = FakeUfuncOneArg() + tanh = FakeUfuncOneArg() + trunc = FakeUfuncOneArg() + + # Two args functions with optional kwargs + bitwise_and = FakeUfuncTwoArgs() + bitwise_or = FakeUfuncTwoArgs() + bitwise_xor = FakeUfuncTwoArgs() + copysign = FakeUfuncTwoArgs() + divide = FakeUfuncTwoArgs() + divmod = FakeUfuncTwoArgs() + equal = FakeUfuncTwoArgs() + float_power = FakeUfuncTwoArgs() + floor_divide = FakeUfuncTwoArgs() + fmax = FakeUfuncTwoArgs() + fmin = FakeUfuncTwoArgs() + fmod = FakeUfuncTwoArgs() + greater = FakeUfuncTwoArgs() + gcd = FakeUfuncTwoArgs() + hypot = FakeUfuncTwoArgs() + heaviside = FakeUfuncTwoArgs() + lcm = FakeUfuncTwoArgs() + ldexp = FakeUfuncTwoArgs() + left_shift = FakeUfuncTwoArgs() + less = FakeUfuncTwoArgs() + logaddexp = FakeUfuncTwoArgs() + logaddexp2 = FakeUfuncTwoArgs() + logical_and = FakeUfuncTwoArgs() + logical_or = FakeUfuncTwoArgs() + logical_xor = FakeUfuncTwoArgs() + maximum = FakeUfuncTwoArgs() + minimum = FakeUfuncTwoArgs() + nextafter = FakeUfuncTwoArgs() + not_equal = FakeUfuncTwoArgs() + power = FakeUfuncTwoArgs() + remainder = FakeUfuncTwoArgs() + right_shift = FakeUfuncTwoArgs() + subtract = FakeUfuncTwoArgs() + true_divide = FakeUfuncTwoArgs() + """.format( + opt_args=ufunc_optional_keyword_arguments + ) + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.core.umath", numpy_core_umath_transform +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py new file mode 100644 index 0000000..d40a7dd --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_ndarray.py @@ -0,0 +1,153 @@ +# Copyright (c) 2015-2016, 2018-2019 Claudiu Popa +# Copyright (c) 2016 Ceridwen +# Copyright (c) 2017-2020 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for numpy ndarray class.""" + +import functools +import astroid + + +def infer_numpy_ndarray(node, context=None): + ndarray = """ + class ndarray(object): + def __init__(self, shape, dtype=float, buffer=None, offset=0, + strides=None, order=None): + self.T = None + self.base = None + self.ctypes = None + self.data = None + self.dtype = None + self.flags = None + self.flat = None + self.imag = np.ndarray([0, 0]) + self.itemsize = None + self.nbytes = None + self.ndim = None + self.real = np.ndarray([0, 0]) + self.shape = numpy.ndarray([0, 0]) + self.size = None + self.strides = None + + def __abs__(self): return numpy.ndarray([0, 0]) + def __add__(self, value): return numpy.ndarray([0, 0]) + def __and__(self, value): return numpy.ndarray([0, 0]) + def __array__(self, dtype=None): return numpy.ndarray([0, 0]) + def __array_wrap__(self, obj): return numpy.ndarray([0, 0]) + def __contains__(self, key): return True + def __copy__(self): return numpy.ndarray([0, 0]) + def __deepcopy__(self, memo): return numpy.ndarray([0, 0]) + def __divmod__(self, value): return (numpy.ndarray([0, 0]), numpy.ndarray([0, 0])) + def __eq__(self, value): return numpy.ndarray([0, 0]) + def __float__(self): return 0. + def __floordiv__(self): return numpy.ndarray([0, 0]) + def __ge__(self, value): return numpy.ndarray([0, 0]) + def __getitem__(self, key): return uninferable + def __gt__(self, value): return numpy.ndarray([0, 0]) + def __iadd__(self, value): return numpy.ndarray([0, 0]) + def __iand__(self, value): return numpy.ndarray([0, 0]) + def __ifloordiv__(self, value): return numpy.ndarray([0, 0]) + def __ilshift__(self, value): return numpy.ndarray([0, 0]) + def __imod__(self, value): return numpy.ndarray([0, 0]) + def __imul__(self, value): return numpy.ndarray([0, 0]) + def __int__(self): return 0 + def __invert__(self): return numpy.ndarray([0, 0]) + def __ior__(self, value): return numpy.ndarray([0, 0]) + def __ipow__(self, value): return numpy.ndarray([0, 0]) + def __irshift__(self, value): return numpy.ndarray([0, 0]) + def __isub__(self, value): return numpy.ndarray([0, 0]) + def __itruediv__(self, value): return numpy.ndarray([0, 0]) + def __ixor__(self, value): return numpy.ndarray([0, 0]) + def __le__(self, value): return numpy.ndarray([0, 0]) + def __len__(self): return 1 + def __lshift__(self, value): return numpy.ndarray([0, 0]) + def __lt__(self, value): return numpy.ndarray([0, 0]) + def __matmul__(self, value): return numpy.ndarray([0, 0]) + def __mod__(self, value): return numpy.ndarray([0, 0]) + def __mul__(self, value): return numpy.ndarray([0, 0]) + def __ne__(self, value): return numpy.ndarray([0, 0]) + def __neg__(self): return numpy.ndarray([0, 0]) + def __or__(self): return numpy.ndarray([0, 0]) + def __pos__(self): return numpy.ndarray([0, 0]) + def __pow__(self): return numpy.ndarray([0, 0]) + def __repr__(self): return str() + def __rshift__(self): return numpy.ndarray([0, 0]) + def __setitem__(self, key, value): return uninferable + def __str__(self): return str() + def __sub__(self, value): return numpy.ndarray([0, 0]) + def __truediv__(self, value): return numpy.ndarray([0, 0]) + def __xor__(self, value): return numpy.ndarray([0, 0]) + def all(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def any(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def argmax(self, axis=None, out=None): return np.ndarray([0, 0]) + def argmin(self, axis=None, out=None): return np.ndarray([0, 0]) + def argpartition(self, kth, axis=-1, kind='introselect', order=None): return np.ndarray([0, 0]) + def argsort(self, axis=-1, kind='quicksort', order=None): return np.ndarray([0, 0]) + def astype(self, dtype, order='K', casting='unsafe', subok=True, copy=True): return np.ndarray([0, 0]) + def byteswap(self, inplace=False): return np.ndarray([0, 0]) + def choose(self, choices, out=None, mode='raise'): return np.ndarray([0, 0]) + def clip(self, min=None, max=None, out=None): return np.ndarray([0, 0]) + def compress(self, condition, axis=None, out=None): return np.ndarray([0, 0]) + def conj(self): return np.ndarray([0, 0]) + def conjugate(self): return np.ndarray([0, 0]) + def copy(self, order='C'): return np.ndarray([0, 0]) + def cumprod(self, axis=None, dtype=None, out=None): return np.ndarray([0, 0]) + def cumsum(self, axis=None, dtype=None, out=None): return np.ndarray([0, 0]) + def diagonal(self, offset=0, axis1=0, axis2=1): return np.ndarray([0, 0]) + def dot(self, b, out=None): return np.ndarray([0, 0]) + def dump(self, file): return None + def dumps(self): return str() + def fill(self, value): return None + def flatten(self, order='C'): return np.ndarray([0, 0]) + def getfield(self, dtype, offset=0): return np.ndarray([0, 0]) + def item(self, *args): return uninferable + def itemset(self, *args): return None + def max(self, axis=None, out=None): return np.ndarray([0, 0]) + def mean(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def min(self, axis=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def newbyteorder(self, new_order='S'): return np.ndarray([0, 0]) + def nonzero(self): return (1,) + def partition(self, kth, axis=-1, kind='introselect', order=None): return None + def prod(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def ptp(self, axis=None, out=None): return np.ndarray([0, 0]) + def put(self, indices, values, mode='raise'): return None + def ravel(self, order='C'): return np.ndarray([0, 0]) + def repeat(self, repeats, axis=None): return np.ndarray([0, 0]) + def reshape(self, shape, order='C'): return np.ndarray([0, 0]) + def resize(self, new_shape, refcheck=True): return None + def round(self, decimals=0, out=None): return np.ndarray([0, 0]) + def searchsorted(self, v, side='left', sorter=None): return np.ndarray([0, 0]) + def setfield(self, val, dtype, offset=0): return None + def setflags(self, write=None, align=None, uic=None): return None + def sort(self, axis=-1, kind='quicksort', order=None): return None + def squeeze(self, axis=None): return np.ndarray([0, 0]) + def std(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False): return np.ndarray([0, 0]) + def sum(self, axis=None, dtype=None, out=None, keepdims=False): return np.ndarray([0, 0]) + def swapaxes(self, axis1, axis2): return np.ndarray([0, 0]) + def take(self, indices, axis=None, out=None, mode='raise'): return np.ndarray([0, 0]) + def tobytes(self, order='C'): return b'' + def tofile(self, fid, sep="", format="%s"): return None + def tolist(self, ): return [] + def tostring(self, order='C'): return b'' + def trace(self, offset=0, axis1=0, axis2=1, dtype=None, out=None): return np.ndarray([0, 0]) + def transpose(self, *axes): return np.ndarray([0, 0]) + def var(self, axis=None, dtype=None, out=None, ddof=0, keepdims=False): return np.ndarray([0, 0]) + def view(self, dtype=None, type=None): return np.ndarray([0, 0]) + """ + node = astroid.extract_node(ndarray) + return node.infer(context=context) + + +def _looks_like_numpy_ndarray(node): + return isinstance(node, astroid.Attribute) and node.attrname == "ndarray" + + +astroid.MANAGER.register_transform( + astroid.Attribute, + astroid.inference_tip(infer_numpy_ndarray), + _looks_like_numpy_ndarray, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py new file mode 100644 index 0000000..cffdcee --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_random_mtrand.py @@ -0,0 +1,70 @@ +# Copyright (c) 2019 hippo91 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +# TODO(hippo91) : correct the functions return types +"""Astroid hooks for numpy.random.mtrand module.""" + +import astroid + + +def numpy_random_mtrand_transform(): + return astroid.parse( + """ + def beta(a, b, size=None): return uninferable + def binomial(n, p, size=None): return uninferable + def bytes(length): return uninferable + def chisquare(df, size=None): return uninferable + def choice(a, size=None, replace=True, p=None): return uninferable + def dirichlet(alpha, size=None): return uninferable + def exponential(scale=1.0, size=None): return uninferable + def f(dfnum, dfden, size=None): return uninferable + def gamma(shape, scale=1.0, size=None): return uninferable + def geometric(p, size=None): return uninferable + def get_state(): return uninferable + def gumbel(loc=0.0, scale=1.0, size=None): return uninferable + def hypergeometric(ngood, nbad, nsample, size=None): return uninferable + def laplace(loc=0.0, scale=1.0, size=None): return uninferable + def logistic(loc=0.0, scale=1.0, size=None): return uninferable + def lognormal(mean=0.0, sigma=1.0, size=None): return uninferable + def logseries(p, size=None): return uninferable + def multinomial(n, pvals, size=None): return uninferable + def multivariate_normal(mean, cov, size=None): return uninferable + def negative_binomial(n, p, size=None): return uninferable + def noncentral_chisquare(df, nonc, size=None): return uninferable + def noncentral_f(dfnum, dfden, nonc, size=None): return uninferable + def normal(loc=0.0, scale=1.0, size=None): return uninferable + def pareto(a, size=None): return uninferable + def permutation(x): return uninferable + def poisson(lam=1.0, size=None): return uninferable + def power(a, size=None): return uninferable + def rand(*args): return uninferable + def randint(low, high=None, size=None, dtype='l'): + import numpy + return numpy.ndarray((1,1)) + def randn(*args): return uninferable + def random_integers(low, high=None, size=None): return uninferable + def random_sample(size=None): return uninferable + def rayleigh(scale=1.0, size=None): return uninferable + def seed(seed=None): return uninferable + def set_state(state): return uninferable + def shuffle(x): return uninferable + def standard_cauchy(size=None): return uninferable + def standard_exponential(size=None): return uninferable + def standard_gamma(shape, size=None): return uninferable + def standard_normal(size=None): return uninferable + def standard_t(df, size=None): return uninferable + def triangular(left, mode, right, size=None): return uninferable + def uniform(low=0.0, high=1.0, size=None): return uninferable + def vonmises(mu, kappa, size=None): return uninferable + def wald(mean, scale, size=None): return uninferable + def weibull(a, size=None): return uninferable + def zipf(a, size=None): return uninferable + """ + ) + + +astroid.register_module_extender( + astroid.MANAGER, "numpy.random.mtrand", numpy_random_mtrand_transform +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py new file mode 100644 index 0000000..b29d271 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_numpy_utils.py @@ -0,0 +1,65 @@ +# Copyright (c) 2019-2020 hippo91 +# Copyright (c) 2019 Claudiu Popa + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Different utilities for the numpy brains""" + + +import astroid + + +def infer_numpy_member(src, node, context=None): + node = astroid.extract_node(src) + return node.infer(context=context) + + +def _is_a_numpy_module(node: astroid.node_classes.Name) -> bool: + """ + Returns True if the node is a representation of a numpy module. + + For example in : + import numpy as np + x = np.linspace(1, 2) + The node is a representation of the numpy module. + + :param node: node to test + :return: True if the node is a representation of the numpy module. + """ + module_nickname = node.name + potential_import_target = [ + x for x in node.lookup(module_nickname)[1] if isinstance(x, astroid.Import) + ] + for target in potential_import_target: + if ("numpy", module_nickname) in target.names: + return True + return False + + +def looks_like_numpy_member( + member_name: str, node: astroid.node_classes.NodeNG +) -> bool: + """ + Returns True if the node is a member of numpy whose + name is member_name. + + :param member_name: name of the member + :param node: node to test + :return: True if the node is a member of numpy + """ + if ( + isinstance(node, astroid.Attribute) + and node.attrname == member_name + and isinstance(node.expr, astroid.Name) + and _is_a_numpy_module(node.expr) + ): + return True + if ( + isinstance(node, astroid.Name) + and node.name == member_name + and node.root().name.startswith("numpy") + ): + return True + return False diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py new file mode 100644 index 0000000..25e7649 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pkg_resources.py @@ -0,0 +1,75 @@ +# Copyright (c) 2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +import astroid +from astroid import parse +from astroid import inference_tip +from astroid import register_module_extender +from astroid import MANAGER + + +def pkg_resources_transform(): + return parse( + """ +def require(*requirements): + return pkg_resources.working_set.require(*requirements) + +def run_script(requires, script_name): + return pkg_resources.working_set.run_script(requires, script_name) + +def iter_entry_points(group, name=None): + return pkg_resources.working_set.iter_entry_points(group, name) + +def resource_exists(package_or_requirement, resource_name): + return get_provider(package_or_requirement).has_resource(resource_name) + +def resource_isdir(package_or_requirement, resource_name): + return get_provider(package_or_requirement).resource_isdir( + resource_name) + +def resource_filename(package_or_requirement, resource_name): + return get_provider(package_or_requirement).get_resource_filename( + self, resource_name) + +def resource_stream(package_or_requirement, resource_name): + return get_provider(package_or_requirement).get_resource_stream( + self, resource_name) + +def resource_string(package_or_requirement, resource_name): + return get_provider(package_or_requirement).get_resource_string( + self, resource_name) + +def resource_listdir(package_or_requirement, resource_name): + return get_provider(package_or_requirement).resource_listdir( + resource_name) + +def extraction_error(): + pass + +def get_cache_path(archive_name, names=()): + extract_path = self.extraction_path or get_default_cache() + target_path = os.path.join(extract_path, archive_name+'-tmp', *names) + return target_path + +def postprocess(tempname, filename): + pass + +def set_extraction_path(path): + pass + +def cleanup_resources(force=False): + pass + +def get_distribution(dist): + return Distribution(dist) + +_namespace_packages = {} +""" + ) + + +register_module_extender(MANAGER, "pkg_resources", pkg_resources_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pytest.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pytest.py new file mode 100644 index 0000000..56202ab --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_pytest.py @@ -0,0 +1,88 @@ +# Copyright (c) 2014-2016, 2018 Claudiu Popa +# Copyright (c) 2014 Jeff Quast +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2016 Florian Bruhin +# Copyright (c) 2016 Ceridwen + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for pytest.""" +from __future__ import absolute_import +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder + + +def pytest_transform(): + return AstroidBuilder(MANAGER).string_build( + """ + +try: + import _pytest.mark + import _pytest.recwarn + import _pytest.runner + import _pytest.python + import _pytest.skipping + import _pytest.assertion +except ImportError: + pass +else: + deprecated_call = _pytest.recwarn.deprecated_call + warns = _pytest.recwarn.warns + + exit = _pytest.runner.exit + fail = _pytest.runner.fail + skip = _pytest.runner.skip + importorskip = _pytest.runner.importorskip + + xfail = _pytest.skipping.xfail + mark = _pytest.mark.MarkGenerator() + raises = _pytest.python.raises + + # New in pytest 3.0 + try: + approx = _pytest.python.approx + register_assert_rewrite = _pytest.assertion.register_assert_rewrite + except AttributeError: + pass + + +# Moved in pytest 3.0 + +try: + import _pytest.freeze_support + freeze_includes = _pytest.freeze_support.freeze_includes +except ImportError: + try: + import _pytest.genscript + freeze_includes = _pytest.genscript.freeze_includes + except ImportError: + pass + +try: + import _pytest.debugging + set_trace = _pytest.debugging.pytestPDB().set_trace +except ImportError: + try: + import _pytest.pdb + set_trace = _pytest.pdb.pytestPDB().set_trace + except ImportError: + pass + +try: + import _pytest.fixtures + fixture = _pytest.fixtures.fixture + yield_fixture = _pytest.fixtures.yield_fixture +except ImportError: + try: + import _pytest.python + fixture = _pytest.python.fixture + yield_fixture = _pytest.python.yield_fixture + except ImportError: + pass +""" + ) + + +register_module_extender(MANAGER, "pytest", pytest_transform) +register_module_extender(MANAGER, "py.test", pytest_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_qt.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_qt.py new file mode 100644 index 0000000..b703b37 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_qt.py @@ -0,0 +1,83 @@ +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen +# Copyright (c) 2017 Roy Wright +# Copyright (c) 2018 Ashley Whetter +# Copyright (c) 2019 Antoine Boellinger + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for the PyQT library.""" + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder +from astroid import nodes +from astroid import parse + + +def _looks_like_signal(node, signal_name="pyqtSignal"): + if "__class__" in node.instance_attrs: + try: + cls = node.instance_attrs["__class__"][0] + return cls.name == signal_name + except AttributeError: + # return False if the cls does not have a name attribute + pass + return False + + +def transform_pyqt_signal(node): + module = parse( + """ + class pyqtSignal(object): + def connect(self, slot, type=None, no_receiver_check=False): + pass + def disconnect(self, slot): + pass + def emit(self, *args): + pass + """ + ) + signal_cls = module["pyqtSignal"] + node.instance_attrs["emit"] = signal_cls["emit"] + node.instance_attrs["disconnect"] = signal_cls["disconnect"] + node.instance_attrs["connect"] = signal_cls["connect"] + + +def transform_pyside_signal(node): + module = parse( + """ + class NotPySideSignal(object): + def connect(self, receiver, type=None): + pass + def disconnect(self, receiver): + pass + def emit(self, *args): + pass + """ + ) + signal_cls = module["NotPySideSignal"] + node.instance_attrs["connect"] = signal_cls["connect"] + node.instance_attrs["disconnect"] = signal_cls["disconnect"] + node.instance_attrs["emit"] = signal_cls["emit"] + + +def pyqt4_qtcore_transform(): + return AstroidBuilder(MANAGER).string_build( + """ + +def SIGNAL(signal_name): pass + +class QObject(object): + def emit(self, signal): pass +""" + ) + + +register_module_extender(MANAGER, "PyQt4.QtCore", pyqt4_qtcore_transform) +MANAGER.register_transform(nodes.FunctionDef, transform_pyqt_signal, _looks_like_signal) +MANAGER.register_transform( + nodes.ClassDef, + transform_pyside_signal, + lambda node: node.qname() in ("PySide.QtCore.Signal", "PySide2.QtCore.Signal"), +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_random.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_random.py new file mode 100644 index 0000000..5ec858a --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_random.py @@ -0,0 +1,75 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import random + +import astroid +from astroid import helpers +from astroid import MANAGER + + +ACCEPTED_ITERABLES_FOR_SAMPLE = (astroid.List, astroid.Set, astroid.Tuple) + + +def _clone_node_with_lineno(node, parent, lineno): + cls = node.__class__ + other_fields = node._other_fields + _astroid_fields = node._astroid_fields + init_params = {"lineno": lineno, "col_offset": node.col_offset, "parent": parent} + postinit_params = {param: getattr(node, param) for param in _astroid_fields} + if other_fields: + init_params.update({param: getattr(node, param) for param in other_fields}) + new_node = cls(**init_params) + if hasattr(node, "postinit") and _astroid_fields: + new_node.postinit(**postinit_params) + return new_node + + +def infer_random_sample(node, context=None): + if len(node.args) != 2: + raise astroid.UseInferenceDefault + + length = node.args[1] + if not isinstance(length, astroid.Const): + raise astroid.UseInferenceDefault + if not isinstance(length.value, int): + raise astroid.UseInferenceDefault + + inferred_sequence = helpers.safe_infer(node.args[0], context=context) + if not inferred_sequence: + raise astroid.UseInferenceDefault + + if not isinstance(inferred_sequence, ACCEPTED_ITERABLES_FOR_SAMPLE): + raise astroid.UseInferenceDefault + + if length.value > len(inferred_sequence.elts): + # In this case, this will raise a ValueError + raise astroid.UseInferenceDefault + + try: + elts = random.sample(inferred_sequence.elts, length.value) + except ValueError: + raise astroid.UseInferenceDefault + + new_node = astroid.List( + lineno=node.lineno, col_offset=node.col_offset, parent=node.scope() + ) + new_elts = [ + _clone_node_with_lineno(elt, parent=new_node, lineno=new_node.lineno) + for elt in elts + ] + new_node.postinit(new_elts) + return iter((new_node,)) + + +def _looks_like_random_sample(node): + func = node.func + if isinstance(func, astroid.Attribute): + return func.attrname == "sample" + if isinstance(func, astroid.Name): + return func.name == "sample" + return False + + +MANAGER.register_transform( + astroid.Call, astroid.inference_tip(infer_random_sample), _looks_like_random_sample +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_re.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_re.py new file mode 100644 index 0000000..c7ee51a --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_re.py @@ -0,0 +1,36 @@ +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import sys +import astroid + +PY36 = sys.version_info >= (3, 6) + +if PY36: + # Since Python 3.6 there is the RegexFlag enum + # where every entry will be exposed via updating globals() + + def _re_transform(): + return astroid.parse( + """ + import sre_compile + ASCII = sre_compile.SRE_FLAG_ASCII + IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE + LOCALE = sre_compile.SRE_FLAG_LOCALE + UNICODE = sre_compile.SRE_FLAG_UNICODE + MULTILINE = sre_compile.SRE_FLAG_MULTILINE + DOTALL = sre_compile.SRE_FLAG_DOTALL + VERBOSE = sre_compile.SRE_FLAG_VERBOSE + A = ASCII + I = IGNORECASE + L = LOCALE + U = UNICODE + M = MULTILINE + S = DOTALL + X = VERBOSE + TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE + T = TEMPLATE + DEBUG = sre_compile.SRE_FLAG_DEBUG + """ + ) + + astroid.register_module_extender(astroid.MANAGER, "re", _re_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_responses.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_responses.py new file mode 100644 index 0000000..3a44129 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_responses.py @@ -0,0 +1,73 @@ +""" +Astroid hooks for responses. + +It might need to be manually updated from the public methods of +:class:`responses.RequestsMock`. + +See: https://github.com/getsentry/responses/blob/master/responses.py + +""" +import astroid + + +def responses_funcs(): + return astroid.parse( + """ + DELETE = "DELETE" + GET = "GET" + HEAD = "HEAD" + OPTIONS = "OPTIONS" + PATCH = "PATCH" + POST = "POST" + PUT = "PUT" + response_callback = None + + def reset(): + return + + def add( + method=None, # method or ``Response`` + url=None, + body="", + adding_headers=None, + *args, + **kwargs + ): + return + + def add_passthru(prefix): + return + + def remove(method_or_response=None, url=None): + return + + def replace(method_or_response=None, url=None, body="", *args, **kwargs): + return + + def add_callback( + method, url, callback, match_querystring=False, content_type="text/plain" + ): + return + + calls = [] + + def __enter__(): + return + + def __exit__(type, value, traceback): + success = type is None + return success + + def activate(func): + return func + + def start(): + return + + def stop(allow_assert=True): + return + """ + ) + + +astroid.register_module_extender(astroid.MANAGER, "responses", responses_funcs) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py new file mode 100644 index 0000000..4d00c6c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_scipy_signal.py @@ -0,0 +1,89 @@ +# Copyright (c) 2019 Valentin Valls + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for scipy.signal module.""" + +import astroid + + +def scipy_signal(): + return astroid.parse( + """ + # different functions defined in scipy.signals + + def barthann(M, sym=True): + return numpy.ndarray([0]) + + def bartlett(M, sym=True): + return numpy.ndarray([0]) + + def blackman(M, sym=True): + return numpy.ndarray([0]) + + def blackmanharris(M, sym=True): + return numpy.ndarray([0]) + + def bohman(M, sym=True): + return numpy.ndarray([0]) + + def boxcar(M, sym=True): + return numpy.ndarray([0]) + + def chebwin(M, at, sym=True): + return numpy.ndarray([0]) + + def cosine(M, sym=True): + return numpy.ndarray([0]) + + def exponential(M, center=None, tau=1.0, sym=True): + return numpy.ndarray([0]) + + def flattop(M, sym=True): + return numpy.ndarray([0]) + + def gaussian(M, std, sym=True): + return numpy.ndarray([0]) + + def general_gaussian(M, p, sig, sym=True): + return numpy.ndarray([0]) + + def hamming(M, sym=True): + return numpy.ndarray([0]) + + def hann(M, sym=True): + return numpy.ndarray([0]) + + def hanning(M, sym=True): + return numpy.ndarray([0]) + + def impulse2(system, X0=None, T=None, N=None, **kwargs): + return numpy.ndarray([0]), numpy.ndarray([0]) + + def kaiser(M, beta, sym=True): + return numpy.ndarray([0]) + + def nuttall(M, sym=True): + return numpy.ndarray([0]) + + def parzen(M, sym=True): + return numpy.ndarray([0]) + + def slepian(M, width, sym=True): + return numpy.ndarray([0]) + + def step2(system, X0=None, T=None, N=None, **kwargs): + return numpy.ndarray([0]), numpy.ndarray([0]) + + def triang(M, sym=True): + return numpy.ndarray([0]) + + def tukey(M, alpha=0.5, sym=True): + return numpy.ndarray([0]) + """ + ) + + +astroid.register_module_extender(astroid.MANAGER, "scipy.signal", scipy_signal) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_six.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_six.py new file mode 100644 index 0000000..46d9fa3 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_six.py @@ -0,0 +1,201 @@ +# Copyright (c) 2014-2016, 2018, 2020 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +"""Astroid hooks for six module.""" + +from textwrap import dedent + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder +from astroid.exceptions import ( + AstroidBuildingError, + InferenceError, + AttributeInferenceError, +) +from astroid import nodes + + +SIX_ADD_METACLASS = "six.add_metaclass" + + +def _indent(text, prefix, predicate=None): + """Adds 'prefix' to the beginning of selected lines in 'text'. + + If 'predicate' is provided, 'prefix' will only be added to the lines + where 'predicate(line)' is True. If 'predicate' is not provided, + it will default to adding 'prefix' to all non-empty lines that do not + consist solely of whitespace characters. + """ + if predicate is None: + predicate = lambda line: line.strip() + + def prefixed_lines(): + for line in text.splitlines(True): + yield prefix + line if predicate(line) else line + + return "".join(prefixed_lines()) + + +_IMPORTS = """ +import _io +cStringIO = _io.StringIO +filter = filter +from itertools import filterfalse +input = input +from sys import intern +map = map +range = range +from importlib import reload +reload_module = lambda module: reload(module) +from functools import reduce +from shlex import quote as shlex_quote +from io import StringIO +from collections import UserDict, UserList, UserString +xrange = range +zip = zip +from itertools import zip_longest +import builtins +import configparser +import copyreg +import _dummy_thread +import http.cookiejar as http_cookiejar +import http.cookies as http_cookies +import html.entities as html_entities +import html.parser as html_parser +import http.client as http_client +import http.server as http_server +BaseHTTPServer = CGIHTTPServer = SimpleHTTPServer = http.server +import pickle as cPickle +import queue +import reprlib +import socketserver +import _thread +import winreg +import xmlrpc.server as xmlrpc_server +import xmlrpc.client as xmlrpc_client +import urllib.robotparser as urllib_robotparser +import email.mime.multipart as email_mime_multipart +import email.mime.nonmultipart as email_mime_nonmultipart +import email.mime.text as email_mime_text +import email.mime.base as email_mime_base +import urllib.parse as urllib_parse +import urllib.error as urllib_error +import tkinter +import tkinter.dialog as tkinter_dialog +import tkinter.filedialog as tkinter_filedialog +import tkinter.scrolledtext as tkinter_scrolledtext +import tkinter.simpledialog as tkinder_simpledialog +import tkinter.tix as tkinter_tix +import tkinter.ttk as tkinter_ttk +import tkinter.constants as tkinter_constants +import tkinter.dnd as tkinter_dnd +import tkinter.colorchooser as tkinter_colorchooser +import tkinter.commondialog as tkinter_commondialog +import tkinter.filedialog as tkinter_tkfiledialog +import tkinter.font as tkinter_font +import tkinter.messagebox as tkinter_messagebox +import urllib +import urllib.request as urllib_request +import urllib.robotparser as urllib_robotparser +import urllib.parse as urllib_parse +import urllib.error as urllib_error +""" + + +def six_moves_transform(): + code = dedent( + """ + class Moves(object): + {} + moves = Moves() + """ + ).format(_indent(_IMPORTS, " ")) + module = AstroidBuilder(MANAGER).string_build(code) + module.name = "six.moves" + return module + + +def _six_fail_hook(modname): + """Fix six.moves imports due to the dynamic nature of this + class. + + Construct a pseudo-module which contains all the necessary imports + for six + + :param modname: Name of failed module + :type modname: str + + :return: An astroid module + :rtype: nodes.Module + """ + + attribute_of = modname != "six.moves" and modname.startswith("six.moves") + if modname != "six.moves" and not attribute_of: + raise AstroidBuildingError(modname=modname) + module = AstroidBuilder(MANAGER).string_build(_IMPORTS) + module.name = "six.moves" + if attribute_of: + # Facilitate import of submodules in Moves + start_index = len(module.name) + attribute = modname[start_index:].lstrip(".").replace(".", "_") + try: + import_attr = module.getattr(attribute)[0] + except AttributeInferenceError: + raise AstroidBuildingError(modname=modname) + if isinstance(import_attr, nodes.Import): + submodule = MANAGER.ast_from_module_name(import_attr.names[0][0]) + return submodule + # Let dummy submodule imports pass through + # This will cause an Uninferable result, which is okay + return module + + +def _looks_like_decorated_with_six_add_metaclass(node): + if not node.decorators: + return False + + for decorator in node.decorators.nodes: + if not isinstance(decorator, nodes.Call): + continue + if decorator.func.as_string() == SIX_ADD_METACLASS: + return True + return False + + +def transform_six_add_metaclass(node): + """Check if the given class node is decorated with *six.add_metaclass* + + If so, inject its argument as the metaclass of the underlying class. + """ + if not node.decorators: + return + + for decorator in node.decorators.nodes: + if not isinstance(decorator, nodes.Call): + continue + + try: + func = next(decorator.func.infer()) + except InferenceError: + continue + if func.qname() == SIX_ADD_METACLASS and decorator.args: + metaclass = decorator.args[0] + node._metaclass = metaclass + return node + + +register_module_extender(MANAGER, "six", six_moves_transform) +register_module_extender( + MANAGER, "requests.packages.urllib3.packages.six", six_moves_transform +) +MANAGER.register_failed_import_hook(_six_fail_hook) +MANAGER.register_transform( + nodes.ClassDef, + transform_six_add_metaclass, + _looks_like_decorated_with_six_add_metaclass, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_ssl.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_ssl.py new file mode 100644 index 0000000..2ae21c3 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_ssl.py @@ -0,0 +1,75 @@ +# Copyright (c) 2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen +# Copyright (c) 2019 Benjamin Elven <25181435+S3ntinelX@users.noreply.github.com> + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for the ssl library.""" + +from astroid import MANAGER, register_module_extender +from astroid.builder import AstroidBuilder +from astroid import nodes +from astroid import parse + + +def ssl_transform(): + return parse( + """ + from _ssl import OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_INFO, OPENSSL_VERSION + from _ssl import _SSLContext, MemoryBIO + from _ssl import ( + SSLError, SSLZeroReturnError, SSLWantReadError, SSLWantWriteError, + SSLSyscallError, SSLEOFError, + ) + from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED + from _ssl import txt2obj as _txt2obj, nid2obj as _nid2obj + from _ssl import RAND_status, RAND_add, RAND_bytes, RAND_pseudo_bytes + try: + from _ssl import RAND_egd + except ImportError: + # LibreSSL does not provide RAND_egd + pass + from _ssl import (OP_ALL, OP_CIPHER_SERVER_PREFERENCE, + OP_NO_COMPRESSION, OP_NO_SSLv2, OP_NO_SSLv3, + OP_NO_TLSv1, OP_NO_TLSv1_1, OP_NO_TLSv1_2, + OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE) + + from _ssl import (ALERT_DESCRIPTION_ACCESS_DENIED, ALERT_DESCRIPTION_BAD_CERTIFICATE, + ALERT_DESCRIPTION_BAD_CERTIFICATE_HASH_VALUE, + ALERT_DESCRIPTION_BAD_CERTIFICATE_STATUS_RESPONSE, + ALERT_DESCRIPTION_BAD_RECORD_MAC, + ALERT_DESCRIPTION_CERTIFICATE_EXPIRED, + ALERT_DESCRIPTION_CERTIFICATE_REVOKED, + ALERT_DESCRIPTION_CERTIFICATE_UNKNOWN, + ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE, + ALERT_DESCRIPTION_CLOSE_NOTIFY, ALERT_DESCRIPTION_DECODE_ERROR, + ALERT_DESCRIPTION_DECOMPRESSION_FAILURE, + ALERT_DESCRIPTION_DECRYPT_ERROR, + ALERT_DESCRIPTION_HANDSHAKE_FAILURE, + ALERT_DESCRIPTION_ILLEGAL_PARAMETER, + ALERT_DESCRIPTION_INSUFFICIENT_SECURITY, + ALERT_DESCRIPTION_INTERNAL_ERROR, + ALERT_DESCRIPTION_NO_RENEGOTIATION, + ALERT_DESCRIPTION_PROTOCOL_VERSION, + ALERT_DESCRIPTION_RECORD_OVERFLOW, + ALERT_DESCRIPTION_UNEXPECTED_MESSAGE, + ALERT_DESCRIPTION_UNKNOWN_CA, + ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY, + ALERT_DESCRIPTION_UNRECOGNIZED_NAME, + ALERT_DESCRIPTION_UNSUPPORTED_CERTIFICATE, + ALERT_DESCRIPTION_UNSUPPORTED_EXTENSION, + ALERT_DESCRIPTION_USER_CANCELLED) + from _ssl import (SSL_ERROR_EOF, SSL_ERROR_INVALID_ERROR_CODE, SSL_ERROR_SSL, + SSL_ERROR_SYSCALL, SSL_ERROR_WANT_CONNECT, SSL_ERROR_WANT_READ, + SSL_ERROR_WANT_WRITE, SSL_ERROR_WANT_X509_LOOKUP, SSL_ERROR_ZERO_RETURN) + from _ssl import VERIFY_CRL_CHECK_CHAIN, VERIFY_CRL_CHECK_LEAF, VERIFY_DEFAULT, VERIFY_X509_STRICT + from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN + from _ssl import _OPENSSL_API_VERSION + from _ssl import PROTOCOL_SSLv23, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1, PROTOCOL_TLSv1_2 + from _ssl import PROTOCOL_TLS, PROTOCOL_TLS_CLIENT, PROTOCOL_TLS_SERVER + """ + ) + + +register_module_extender(MANAGER, "ssl", ssl_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_subprocess.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_subprocess.py new file mode 100644 index 0000000..ab7d5d7 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_subprocess.py @@ -0,0 +1,146 @@ +# Copyright (c) 2016-2020 Claudiu Popa +# Copyright (c) 2017 Hugo +# Copyright (c) 2018 Peter Talley +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +import sys +import textwrap + +import astroid + + +PY37 = sys.version_info >= (3, 7) +PY36 = sys.version_info >= (3, 6) + + +def _subprocess_transform(): + communicate = (bytes("string", "ascii"), bytes("string", "ascii")) + communicate_signature = "def communicate(self, input=None, timeout=None)" + if PY37: + init = """ + def __init__(self, args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, shell=False, + cwd=None, env=None, universal_newlines=False, + startupinfo=None, creationflags=0, restore_signals=True, + start_new_session=False, pass_fds=(), *, + encoding=None, errors=None, text=None): + pass + """ + elif PY36: + init = """ + def __init__(self, args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, shell=False, + cwd=None, env=None, universal_newlines=False, + startupinfo=None, creationflags=0, restore_signals=True, + start_new_session=False, pass_fds=(), *, + encoding=None, errors=None): + pass + """ + else: + init = """ + def __init__(self, args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, shell=False, + cwd=None, env=None, universal_newlines=False, + startupinfo=None, creationflags=0, restore_signals=True, + start_new_session=False, pass_fds=()): + pass + """ + wait_signature = "def wait(self, timeout=None)" + ctx_manager = """ + def __enter__(self): return self + def __exit__(self, *args): pass + """ + py3_args = "args = []" + + if PY37: + check_output_signature = """ + check_output( + args, *, + stdin=None, + stderr=None, + shell=False, + cwd=None, + encoding=None, + errors=None, + universal_newlines=False, + timeout=None, + env=None, + text=None, + restore_signals=True, + preexec_fn=None, + pass_fds=(), + input=None, + start_new_session=False + ): + """.strip() + else: + check_output_signature = """ + check_output( + args, *, + stdin=None, + stderr=None, + shell=False, + cwd=None, + encoding=None, + errors=None, + universal_newlines=False, + timeout=None, + env=None, + restore_signals=True, + preexec_fn=None, + pass_fds=(), + input=None, + start_new_session=False + ): + """.strip() + + code = textwrap.dedent( + """ + def %(check_output_signature)s + if universal_newlines: + return "" + return b"" + + class Popen(object): + returncode = pid = 0 + stdin = stdout = stderr = file() + %(py3_args)s + + %(communicate_signature)s: + return %(communicate)r + %(wait_signature)s: + return self.returncode + def poll(self): + return self.returncode + def send_signal(self, signal): + pass + def terminate(self): + pass + def kill(self): + pass + %(ctx_manager)s + """ + % { + "check_output_signature": check_output_signature, + "communicate": communicate, + "communicate_signature": communicate_signature, + "wait_signature": wait_signature, + "ctx_manager": ctx_manager, + "py3_args": py3_args, + } + ) + + init_lines = textwrap.dedent(init).splitlines() + indented_init = "\n".join(" " * 4 + line for line in init_lines) + code += indented_init + return astroid.parse(code) + + +astroid.register_module_extender(astroid.MANAGER, "subprocess", _subprocess_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_threading.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_threading.py new file mode 100644 index 0000000..ba3085b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_threading.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2016, 2018-2019 Claudiu Popa +# Copyright (c) 2017 Łukasz Rogalski + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +import astroid + + +def _thread_transform(): + return astroid.parse( + """ + class lock(object): + def acquire(self, blocking=True, timeout=-1): + return False + def release(self): + pass + def __enter__(self): + return True + def __exit__(self, *args): + pass + def locked(self): + return False + + def Lock(): + return lock() + """ + ) + + +astroid.register_module_extender(astroid.MANAGER, "threading", _thread_transform) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_typing.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_typing.py new file mode 100644 index 0000000..9ff7227 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_typing.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017-2018 Claudiu Popa +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2017 David Euresti +# Copyright (c) 2018 Bryce Guinta + +"""Astroid hooks for typing.py support.""" +import typing + +from astroid import ( + MANAGER, + UseInferenceDefault, + extract_node, + inference_tip, + nodes, + InferenceError, +) + + +TYPING_NAMEDTUPLE_BASENAMES = {"NamedTuple", "typing.NamedTuple"} +TYPING_TYPEVARS = {"TypeVar", "NewType"} +TYPING_TYPEVARS_QUALIFIED = {"typing.TypeVar", "typing.NewType"} +TYPING_TYPE_TEMPLATE = """ +class Meta(type): + def __getitem__(self, item): + return self + + @property + def __args__(self): + return () + +class {0}(metaclass=Meta): + pass +""" +TYPING_MEMBERS = set(typing.__all__) + + +def looks_like_typing_typevar_or_newtype(node): + func = node.func + if isinstance(func, nodes.Attribute): + return func.attrname in TYPING_TYPEVARS + if isinstance(func, nodes.Name): + return func.name in TYPING_TYPEVARS + return False + + +def infer_typing_typevar_or_newtype(node, context=None): + """Infer a typing.TypeVar(...) or typing.NewType(...) call""" + try: + func = next(node.func.infer(context=context)) + except InferenceError as exc: + raise UseInferenceDefault from exc + + if func.qname() not in TYPING_TYPEVARS_QUALIFIED: + raise UseInferenceDefault + if not node.args: + raise UseInferenceDefault + + typename = node.args[0].as_string().strip("'") + node = extract_node(TYPING_TYPE_TEMPLATE.format(typename)) + return node.infer(context=context) + + +def _looks_like_typing_subscript(node): + """Try to figure out if a Subscript node *might* be a typing-related subscript""" + if isinstance(node, nodes.Name): + return node.name in TYPING_MEMBERS + elif isinstance(node, nodes.Attribute): + return node.attrname in TYPING_MEMBERS + elif isinstance(node, nodes.Subscript): + return _looks_like_typing_subscript(node.value) + return False + + +def infer_typing_attr(node, context=None): + """Infer a typing.X[...] subscript""" + try: + value = next(node.value.infer()) + except InferenceError as exc: + raise UseInferenceDefault from exc + + if not value.qname().startswith("typing."): + raise UseInferenceDefault + + node = extract_node(TYPING_TYPE_TEMPLATE.format(value.qname().split(".")[-1])) + return node.infer(context=context) + + +MANAGER.register_transform( + nodes.Call, + inference_tip(infer_typing_typevar_or_newtype), + looks_like_typing_typevar_or_newtype, +) +MANAGER.register_transform( + nodes.Subscript, inference_tip(infer_typing_attr), _looks_like_typing_subscript +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_uuid.py b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_uuid.py new file mode 100644 index 0000000..5a33fc2 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/brain/brain_uuid.py @@ -0,0 +1,20 @@ +# Copyright (c) 2017-2018 Claudiu Popa + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Astroid hooks for the UUID module.""" + + +from astroid import MANAGER +from astroid import nodes + + +def _patch_uuid_class(node): + # The .int member is patched using __dict__ + node.locals["int"] = [nodes.Const(0, parent=node)] + + +MANAGER.register_transform( + nodes.ClassDef, _patch_uuid_class, lambda node: node.qname() == "uuid.UUID" +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/builder.py b/WebCrawler/venv/Lib/site-packages/astroid/builder.py new file mode 100644 index 0000000..142764b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/builder.py @@ -0,0 +1,455 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2006-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2013 Phil Schaf +# Copyright (c) 2014-2019 Claudiu Popa +# Copyright (c) 2014-2015 Google, Inc. +# Copyright (c) 2014 Alexander Presnyakov +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2018 Anthony Sottile + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""The AstroidBuilder makes astroid from living object and / or from _ast + +The builder is not thread safe and can't be used to parse different sources +at the same time. +""" + +import os +import textwrap +from tokenize import detect_encoding + +from astroid._ast import get_parser_module +from astroid import bases +from astroid import exceptions +from astroid import manager +from astroid import modutils +from astroid import raw_building +from astroid import rebuilder +from astroid import nodes +from astroid import util + +objects = util.lazy_import("objects") + +# The name of the transient function that is used to +# wrap expressions to be extracted when calling +# extract_node. +_TRANSIENT_FUNCTION = "__" + +# The comment used to select a statement to be extracted +# when calling extract_node. +_STATEMENT_SELECTOR = "#@" +MISPLACED_TYPE_ANNOTATION_ERROR = "misplaced type annotation" +MANAGER = manager.AstroidManager() + + +def open_source_file(filename): + with open(filename, "rb") as byte_stream: + encoding = detect_encoding(byte_stream.readline)[0] + stream = open(filename, "r", newline=None, encoding=encoding) + data = stream.read() + return stream, encoding, data + + +def _can_assign_attr(node, attrname): + try: + slots = node.slots() + except NotImplementedError: + pass + else: + if slots and attrname not in {slot.value for slot in slots}: + return False + return True + + +class AstroidBuilder(raw_building.InspectBuilder): + """Class for building an astroid tree from source code or from a live module. + + The param *manager* specifies the manager class which should be used. + If no manager is given, then the default one will be used. The + param *apply_transforms* determines if the transforms should be + applied after the tree was built from source or from a live object, + by default being True. + """ + + # pylint: disable=redefined-outer-name + def __init__(self, manager=None, apply_transforms=True): + super().__init__() + self._manager = manager or MANAGER + self._apply_transforms = apply_transforms + + def module_build(self, module, modname=None): + """Build an astroid from a living module instance.""" + node = None + path = getattr(module, "__file__", None) + if path is not None: + path_, ext = os.path.splitext(modutils._path_from_filename(path)) + if ext in (".py", ".pyc", ".pyo") and os.path.exists(path_ + ".py"): + node = self.file_build(path_ + ".py", modname) + if node is None: + # this is a built-in module + # get a partial representation by introspection + node = self.inspect_build(module, modname=modname, path=path) + if self._apply_transforms: + # We have to handle transformation by ourselves since the + # rebuilder isn't called for builtin nodes + node = self._manager.visit_transforms(node) + return node + + def file_build(self, path, modname=None): + """Build astroid from a source code file (i.e. from an ast) + + *path* is expected to be a python source file + """ + try: + stream, encoding, data = open_source_file(path) + except IOError as exc: + raise exceptions.AstroidBuildingError( + "Unable to load file {path}:\n{error}", + modname=modname, + path=path, + error=exc, + ) from exc + except (SyntaxError, LookupError) as exc: + raise exceptions.AstroidSyntaxError( + "Python 3 encoding specification error or unknown encoding:\n" + "{error}", + modname=modname, + path=path, + error=exc, + ) from exc + except UnicodeError as exc: # wrong encoding + # detect_encoding returns utf-8 if no encoding specified + raise exceptions.AstroidBuildingError( + "Wrong or no encoding specified for {filename}.", filename=path + ) from exc + with stream: + # get module name if necessary + if modname is None: + try: + modname = ".".join(modutils.modpath_from_file(path)) + except ImportError: + modname = os.path.splitext(os.path.basename(path))[0] + # build astroid representation + module = self._data_build(data, modname, path) + return self._post_build(module, encoding) + + def string_build(self, data, modname="", path=None): + """Build astroid from source code string.""" + module = self._data_build(data, modname, path) + module.file_bytes = data.encode("utf-8") + return self._post_build(module, "utf-8") + + def _post_build(self, module, encoding): + """Handles encoding and delayed nodes after a module has been built""" + module.file_encoding = encoding + self._manager.cache_module(module) + # post tree building steps after we stored the module in the cache: + for from_node in module._import_from_nodes: + if from_node.modname == "__future__": + for symbol, _ in from_node.names: + module.future_imports.add(symbol) + self.add_from_names_to_locals(from_node) + # handle delayed assattr nodes + for delayed in module._delayed_assattr: + self.delayed_assattr(delayed) + + # Visit the transforms + if self._apply_transforms: + module = self._manager.visit_transforms(module) + return module + + def _data_build(self, data, modname, path): + """Build tree node from data and add some informations""" + try: + node, parser_module = _parse_string(data, type_comments=True) + except (TypeError, ValueError, SyntaxError) as exc: + raise exceptions.AstroidSyntaxError( + "Parsing Python code failed:\n{error}", + source=data, + modname=modname, + path=path, + error=exc, + ) from exc + + if path is not None: + node_file = os.path.abspath(path) + else: + node_file = "" + if modname.endswith(".__init__"): + modname = modname[:-9] + package = True + else: + package = ( + path is not None + and os.path.splitext(os.path.basename(path))[0] == "__init__" + ) + builder = rebuilder.TreeRebuilder(self._manager, parser_module) + module = builder.visit_module(node, modname, node_file, package) + module._import_from_nodes = builder._import_from_nodes + module._delayed_assattr = builder._delayed_assattr + return module + + def add_from_names_to_locals(self, node): + """Store imported names to the locals + + Resort the locals if coming from a delayed node + """ + _key_func = lambda node: node.fromlineno + + def sort_locals(my_list): + my_list.sort(key=_key_func) + + for (name, asname) in node.names: + if name == "*": + try: + imported = node.do_import_module() + except exceptions.AstroidBuildingError: + continue + for name in imported.public_names(): + node.parent.set_local(name, node) + sort_locals(node.parent.scope().locals[name]) + else: + node.parent.set_local(asname or name, node) + sort_locals(node.parent.scope().locals[asname or name]) + + def delayed_assattr(self, node): + """Visit a AssAttr node + + This adds name to locals and handle members definition. + """ + try: + frame = node.frame() + for inferred in node.expr.infer(): + if inferred is util.Uninferable: + continue + try: + cls = inferred.__class__ + if cls is bases.Instance or cls is objects.ExceptionInstance: + inferred = inferred._proxied + iattrs = inferred.instance_attrs + if not _can_assign_attr(inferred, node.attrname): + continue + elif isinstance(inferred, bases.Instance): + # Const, Tuple or other containers that inherit from + # `Instance` + continue + elif inferred.is_function: + iattrs = inferred.instance_attrs + else: + iattrs = inferred.locals + except AttributeError: + # XXX log error + continue + values = iattrs.setdefault(node.attrname, []) + if node in values: + continue + # get assign in __init__ first XXX useful ? + if ( + frame.name == "__init__" + and values + and values[0].frame().name != "__init__" + ): + values.insert(0, node) + else: + values.append(node) + except exceptions.InferenceError: + pass + + +def build_namespace_package_module(name, path): + return nodes.Module(name, doc="", path=path, package=True) + + +def parse(code, module_name="", path=None, apply_transforms=True): + """Parses a source string in order to obtain an astroid AST from it + + :param str code: The code for the module. + :param str module_name: The name for the module, if any + :param str path: The path for the module + :param bool apply_transforms: + Apply the transforms for the give code. Use it if you + don't want the default transforms to be applied. + """ + code = textwrap.dedent(code) + builder = AstroidBuilder(manager=MANAGER, apply_transforms=apply_transforms) + return builder.string_build(code, modname=module_name, path=path) + + +def _extract_expressions(node): + """Find expressions in a call to _TRANSIENT_FUNCTION and extract them. + + The function walks the AST recursively to search for expressions that + are wrapped into a call to _TRANSIENT_FUNCTION. If it finds such an + expression, it completely removes the function call node from the tree, + replacing it by the wrapped expression inside the parent. + + :param node: An astroid node. + :type node: astroid.bases.NodeNG + :yields: The sequence of wrapped expressions on the modified tree + expression can be found. + """ + if ( + isinstance(node, nodes.Call) + and isinstance(node.func, nodes.Name) + and node.func.name == _TRANSIENT_FUNCTION + ): + real_expr = node.args[0] + real_expr.parent = node.parent + # Search for node in all _astng_fields (the fields checked when + # get_children is called) of its parent. Some of those fields may + # be lists or tuples, in which case the elements need to be checked. + # When we find it, replace it by real_expr, so that the AST looks + # like no call to _TRANSIENT_FUNCTION ever took place. + for name in node.parent._astroid_fields: + child = getattr(node.parent, name) + if isinstance(child, (list, tuple)): + for idx, compound_child in enumerate(child): + if compound_child is node: + child[idx] = real_expr + elif child is node: + setattr(node.parent, name, real_expr) + yield real_expr + else: + for child in node.get_children(): + yield from _extract_expressions(child) + + +def _find_statement_by_line(node, line): + """Extracts the statement on a specific line from an AST. + + If the line number of node matches line, it will be returned; + otherwise its children are iterated and the function is called + recursively. + + :param node: An astroid node. + :type node: astroid.bases.NodeNG + :param line: The line number of the statement to extract. + :type line: int + :returns: The statement on the line, or None if no statement for the line + can be found. + :rtype: astroid.bases.NodeNG or None + """ + if isinstance(node, (nodes.ClassDef, nodes.FunctionDef)): + # This is an inaccuracy in the AST: the nodes that can be + # decorated do not carry explicit information on which line + # the actual definition (class/def), but .fromline seems to + # be close enough. + node_line = node.fromlineno + else: + node_line = node.lineno + + if node_line == line: + return node + + for child in node.get_children(): + result = _find_statement_by_line(child, line) + if result: + return result + + return None + + +def extract_node(code, module_name=""): + """Parses some Python code as a module and extracts a designated AST node. + + Statements: + To extract one or more statement nodes, append #@ to the end of the line + + Examples: + >>> def x(): + >>> def y(): + >>> return 1 #@ + + The return statement will be extracted. + + >>> class X(object): + >>> def meth(self): #@ + >>> pass + + The function object 'meth' will be extracted. + + Expressions: + To extract arbitrary expressions, surround them with the fake + function call __(...). After parsing, the surrounded expression + will be returned and the whole AST (accessible via the returned + node's parent attribute) will look like the function call was + never there in the first place. + + Examples: + >>> a = __(1) + + The const node will be extracted. + + >>> def x(d=__(foo.bar)): pass + + The node containing the default argument will be extracted. + + >>> def foo(a, b): + >>> return 0 < __(len(a)) < b + + The node containing the function call 'len' will be extracted. + + If no statements or expressions are selected, the last toplevel + statement will be returned. + + If the selected statement is a discard statement, (i.e. an expression + turned into a statement), the wrapped expression is returned instead. + + For convenience, singleton lists are unpacked. + + :param str code: A piece of Python code that is parsed as + a module. Will be passed through textwrap.dedent first. + :param str module_name: The name of the module. + :returns: The designated node from the parse tree, or a list of nodes. + :rtype: astroid.bases.NodeNG, or a list of nodes. + """ + + def _extract(node): + if isinstance(node, nodes.Expr): + return node.value + + return node + + requested_lines = [] + for idx, line in enumerate(code.splitlines()): + if line.strip().endswith(_STATEMENT_SELECTOR): + requested_lines.append(idx + 1) + + tree = parse(code, module_name=module_name) + if not tree.body: + raise ValueError("Empty tree, cannot extract from it") + + extracted = [] + if requested_lines: + extracted = [_find_statement_by_line(tree, line) for line in requested_lines] + + # Modifies the tree. + extracted.extend(_extract_expressions(tree)) + + if not extracted: + extracted.append(tree.body[-1]) + + extracted = [_extract(node) for node in extracted] + if len(extracted) == 1: + return extracted[0] + return extracted + + +def _parse_string(data, type_comments=True): + parser_module = get_parser_module(type_comments=type_comments) + try: + parsed = parser_module.parse(data + "\n", type_comments=type_comments) + except SyntaxError as exc: + # If the type annotations are misplaced for some reason, we do not want + # to fail the entire parsing of the file, so we need to retry the parsing without + # type comment support. + if exc.args[0] != MISPLACED_TYPE_ANNOTATION_ERROR or not type_comments: + raise + + parser_module = get_parser_module(type_comments=False) + parsed = parser_module.parse(data + "\n", type_comments=False) + return parsed, parser_module diff --git a/WebCrawler/venv/Lib/site-packages/astroid/context.py b/WebCrawler/venv/Lib/site-packages/astroid/context.py new file mode 100644 index 0000000..40cebf2 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/context.py @@ -0,0 +1,179 @@ +# Copyright (c) 2015-2016, 2018-2019 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Nick Drozd + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Various context related utilities, including inference and call contexts.""" +import contextlib +import pprint +from typing import Optional + + +class InferenceContext: + """Provide context for inference + + Store already inferred nodes to save time + Account for already visited nodes to infinite stop infinite recursion + """ + + __slots__ = ( + "path", + "lookupname", + "callcontext", + "boundnode", + "inferred", + "extra_context", + ) + + def __init__(self, path=None, inferred=None): + self.path = path or set() + """ + :type: set(tuple(NodeNG, optional(str))) + + Path of visited nodes and their lookupname + + Currently this key is ``(node, context.lookupname)`` + """ + self.lookupname = None + """ + :type: optional[str] + + The original name of the node + + e.g. + foo = 1 + The inference of 'foo' is nodes.Const(1) but the lookup name is 'foo' + """ + self.callcontext = None + """ + :type: optional[CallContext] + + The call arguments and keywords for the given context + """ + self.boundnode = None + """ + :type: optional[NodeNG] + + The bound node of the given context + + e.g. the bound node of object.__new__(cls) is the object node + """ + self.inferred = inferred or {} + """ + :type: dict(seq, seq) + + Inferred node contexts to their mapped results + Currently the key is ``(node, lookupname, callcontext, boundnode)`` + and the value is tuple of the inferred results + """ + self.extra_context = {} + """ + :type: dict(NodeNG, Context) + + Context that needs to be passed down through call stacks + for call arguments + """ + + def push(self, node): + """Push node into inference path + + :return: True if node is already in context path else False + :rtype: bool + + Allows one to see if the given node has already + been looked at for this inference context""" + name = self.lookupname + if (node, name) in self.path: + return True + + self.path.add((node, name)) + return False + + def clone(self): + """Clone inference path + + For example, each side of a binary operation (BinOp) + starts with the same context but diverge as each side is inferred + so the InferenceContext will need be cloned""" + # XXX copy lookupname/callcontext ? + clone = InferenceContext(self.path, inferred=self.inferred) + clone.callcontext = self.callcontext + clone.boundnode = self.boundnode + clone.extra_context = self.extra_context + return clone + + def cache_generator(self, key, generator): + """Cache result of generator into dictionary + + Used to cache inference results""" + results = [] + for result in generator: + results.append(result) + yield result + + self.inferred[key] = tuple(results) + + @contextlib.contextmanager + def restore_path(self): + path = set(self.path) + yield + self.path = path + + def __str__(self): + state = ( + "%s=%s" + % (field, pprint.pformat(getattr(self, field), width=80 - len(field))) + for field in self.__slots__ + ) + return "%s(%s)" % (type(self).__name__, ",\n ".join(state)) + + +class CallContext: + """Holds information for a call site.""" + + __slots__ = ("args", "keywords") + + def __init__(self, args, keywords=None): + """ + :param List[NodeNG] args: Call positional arguments + :param Union[List[nodes.Keyword], None] keywords: Call keywords + """ + self.args = args + if keywords: + keywords = [(arg.arg, arg.value) for arg in keywords] + else: + keywords = [] + self.keywords = keywords + + +def copy_context(context: Optional[InferenceContext]) -> InferenceContext: + """Clone a context if given, or return a fresh contexxt""" + if context is not None: + return context.clone() + + return InferenceContext() + + +def bind_context_to_node(context, node): + """Give a context a boundnode + to retrieve the correct function name or attribute value + with from further inference. + + Do not use an existing context since the boundnode could then + be incorrectly propagated higher up in the call stack. + + :param context: Context to use + :type context: Optional(context) + + :param node: Node to do name lookups from + :type node NodeNG: + + :returns: A new context + :rtype: InferenceContext + """ + context = copy_context(context) + context.boundnode = node + return context diff --git a/WebCrawler/venv/Lib/site-packages/astroid/decorators.py b/WebCrawler/venv/Lib/site-packages/astroid/decorators.py new file mode 100644 index 0000000..0f3632c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/decorators.py @@ -0,0 +1,142 @@ +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Tomas Gavenciak +# Copyright (c) 2018 Ashley Whetter +# Copyright (c) 2018 HoverHell +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +""" A few useful function/method decorators.""" + +import functools + +import wrapt + +from astroid import context as contextmod +from astroid import exceptions +from astroid import util + + +@wrapt.decorator +def cached(func, instance, args, kwargs): + """Simple decorator to cache result of method calls without args.""" + cache = getattr(instance, "__cache", None) + if cache is None: + instance.__cache = cache = {} + try: + return cache[func] + except KeyError: + cache[func] = result = func(*args, **kwargs) + return result + + +class cachedproperty: + """ Provides a cached property equivalent to the stacking of + @cached and @property, but more efficient. + + After first usage, the becomes part of the object's + __dict__. Doing: + + del obj. empties the cache. + + Idea taken from the pyramid_ framework and the mercurial_ project. + + .. _pyramid: http://pypi.python.org/pypi/pyramid + .. _mercurial: http://pypi.python.org/pypi/Mercurial + """ + + __slots__ = ("wrapped",) + + def __init__(self, wrapped): + try: + wrapped.__name__ + except AttributeError as exc: + raise TypeError("%s must have a __name__ attribute" % wrapped) from exc + self.wrapped = wrapped + + @property + def __doc__(self): + doc = getattr(self.wrapped, "__doc__", None) + return "%s" % ( + "\n%s" % doc if doc else "" + ) + + def __get__(self, inst, objtype=None): + if inst is None: + return self + val = self.wrapped(inst) + setattr(inst, self.wrapped.__name__, val) + return val + + +def path_wrapper(func): + """return the given infer function wrapped to handle the path + + Used to stop inference if the node has already been looked + at for a given `InferenceContext` to prevent infinite recursion + """ + + @functools.wraps(func) + def wrapped(node, context=None, _func=func, **kwargs): + """wrapper function handling context""" + if context is None: + context = contextmod.InferenceContext() + if context.push(node): + return None + + yielded = set() + generator = _func(node, context, **kwargs) + try: + while True: + res = next(generator) + # unproxy only true instance, not const, tuple, dict... + if res.__class__.__name__ == "Instance": + ares = res._proxied + else: + ares = res + if ares not in yielded: + yield res + yielded.add(ares) + except StopIteration as error: + if error.args: + return error.args[0] + return None + + return wrapped + + +@wrapt.decorator +def yes_if_nothing_inferred(func, instance, args, kwargs): + generator = func(*args, **kwargs) + + try: + yield next(generator) + except StopIteration: + # generator is empty + yield util.Uninferable + return + + yield from generator + + +@wrapt.decorator +def raise_if_nothing_inferred(func, instance, args, kwargs): + generator = func(*args, **kwargs) + + try: + yield next(generator) + except StopIteration as error: + # generator is empty + if error.args: + # pylint: disable=not-a-mapping + raise exceptions.InferenceError(**error.args[0]) + raise exceptions.InferenceError( + "StopIteration raised without any error information." + ) + + yield from generator diff --git a/WebCrawler/venv/Lib/site-packages/astroid/exceptions.py b/WebCrawler/venv/Lib/site-packages/astroid/exceptions.py new file mode 100644 index 0000000..08e72c1 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/exceptions.py @@ -0,0 +1,230 @@ +# Copyright (c) 2007, 2009-2010, 2013 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2015-2018 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""this module contains exceptions used in the astroid library +""" +from astroid import util + + +class AstroidError(Exception): + """base exception class for all astroid related exceptions + + AstroidError and its subclasses are structured, intended to hold + objects representing state when the exception is thrown. Field + values are passed to the constructor as keyword-only arguments. + Each subclass has its own set of standard fields, but use your + best judgment to decide whether a specific exception instance + needs more or fewer fields for debugging. Field values may be + used to lazily generate the error message: self.message.format() + will be called with the field names and values supplied as keyword + arguments. + """ + + def __init__(self, message="", **kws): + super().__init__(message) + self.message = message + for key, value in kws.items(): + setattr(self, key, value) + + def __str__(self): + return self.message.format(**vars(self)) + + +class AstroidBuildingError(AstroidError): + """exception class when we are unable to build an astroid representation + + Standard attributes: + modname: Name of the module that AST construction failed for. + error: Exception raised during construction. + """ + + def __init__(self, message="Failed to import module {modname}.", **kws): + super().__init__(message, **kws) + + +class AstroidImportError(AstroidBuildingError): + """Exception class used when a module can't be imported by astroid.""" + + +class TooManyLevelsError(AstroidImportError): + """Exception class which is raised when a relative import was beyond the top-level. + + Standard attributes: + level: The level which was attempted. + name: the name of the module on which the relative import was attempted. + """ + + level = None + name = None + + def __init__( + self, + message="Relative import with too many levels " "({level}) for module {name!r}", + **kws + ): + super().__init__(message, **kws) + + +class AstroidSyntaxError(AstroidBuildingError): + """Exception class used when a module can't be parsed.""" + + +class NoDefault(AstroidError): + """raised by function's `default_value` method when an argument has + no default value + + Standard attributes: + func: Function node. + name: Name of argument without a default. + """ + + func = None + name = None + + def __init__(self, message="{func!r} has no default for {name!r}.", **kws): + super().__init__(message, **kws) + + +class ResolveError(AstroidError): + """Base class of astroid resolution/inference error. + + ResolveError is not intended to be raised. + + Standard attributes: + context: InferenceContext object. + """ + + context = None + + +class MroError(ResolveError): + """Error raised when there is a problem with method resolution of a class. + + Standard attributes: + mros: A sequence of sequences containing ClassDef nodes. + cls: ClassDef node whose MRO resolution failed. + context: InferenceContext object. + """ + + mros = () + cls = None + + def __str__(self): + mro_names = ", ".join( + "({})".format(", ".join(b.name for b in m)) for m in self.mros + ) + return self.message.format(mros=mro_names, cls=self.cls) + + +class DuplicateBasesError(MroError): + """Error raised when there are duplicate bases in the same class bases.""" + + +class InconsistentMroError(MroError): + """Error raised when a class's MRO is inconsistent.""" + + +class SuperError(ResolveError): + """Error raised when there is a problem with a *super* call. + + Standard attributes: + *super_*: The Super instance that raised the exception. + context: InferenceContext object. + """ + + super_ = None + + def __str__(self): + return self.message.format(**vars(self.super_)) + + +class InferenceError(ResolveError): + """raised when we are unable to infer a node + + Standard attributes: + node: The node inference was called on. + context: InferenceContext object. + """ + + node = None + context = None + + def __init__(self, message="Inference failed for {node!r}.", **kws): + super().__init__(message, **kws) + + +# Why does this inherit from InferenceError rather than ResolveError? +# Changing it causes some inference tests to fail. +class NameInferenceError(InferenceError): + """Raised when a name lookup fails, corresponds to NameError. + + Standard attributes: + name: The name for which lookup failed, as a string. + scope: The node representing the scope in which the lookup occurred. + context: InferenceContext object. + """ + + name = None + scope = None + + def __init__(self, message="{name!r} not found in {scope!r}.", **kws): + super().__init__(message, **kws) + + +class AttributeInferenceError(ResolveError): + """Raised when an attribute lookup fails, corresponds to AttributeError. + + Standard attributes: + target: The node for which lookup failed. + attribute: The attribute for which lookup failed, as a string. + context: InferenceContext object. + """ + + target = None + attribute = None + + def __init__(self, message="{attribute!r} not found on {target!r}.", **kws): + super().__init__(message, **kws) + + +class UseInferenceDefault(Exception): + """exception to be raised in custom inference function to indicate that it + should go back to the default behaviour + """ + + +class _NonDeducibleTypeHierarchy(Exception): + """Raised when is_subtype / is_supertype can't deduce the relation between two types.""" + + +class AstroidIndexError(AstroidError): + """Raised when an Indexable / Mapping does not have an index / key.""" + + +class AstroidTypeError(AstroidError): + """Raised when a TypeError would be expected in Python code.""" + + +class InferenceOverwriteError(AstroidError): + """Raised when an inference tip is overwritten + + Currently only used for debugging. + """ + + +# Backwards-compatibility aliases +OperationError = util.BadOperationMessage +UnaryOperationError = util.BadUnaryOperationMessage +BinaryOperationError = util.BadBinaryOperationMessage + +SuperArgumentTypeError = SuperError +UnresolvableName = NameInferenceError +NotFoundError = AttributeInferenceError +AstroidBuildingException = AstroidBuildingError diff --git a/WebCrawler/venv/Lib/site-packages/astroid/helpers.py b/WebCrawler/venv/Lib/site-packages/astroid/helpers.py new file mode 100644 index 0000000..1c84651 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/helpers.py @@ -0,0 +1,282 @@ +# Copyright (c) 2015-2020 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +""" +Various helper utilities. +""" + +import builtins as builtins_mod + +from astroid import bases +from astroid import context as contextmod +from astroid import exceptions +from astroid import manager +from astroid import nodes +from astroid import raw_building +from astroid import scoped_nodes +from astroid import util + + +BUILTINS = builtins_mod.__name__ + + +def _build_proxy_class(cls_name, builtins): + proxy = raw_building.build_class(cls_name) + proxy.parent = builtins + return proxy + + +def _function_type(function, builtins): + if isinstance(function, scoped_nodes.Lambda): + if function.root().name == BUILTINS: + cls_name = "builtin_function_or_method" + else: + cls_name = "function" + elif isinstance(function, bases.BoundMethod): + cls_name = "method" + elif isinstance(function, bases.UnboundMethod): + cls_name = "function" + return _build_proxy_class(cls_name, builtins) + + +def _object_type(node, context=None): + astroid_manager = manager.AstroidManager() + builtins = astroid_manager.builtins_module + context = context or contextmod.InferenceContext() + + for inferred in node.infer(context=context): + if isinstance(inferred, scoped_nodes.ClassDef): + if inferred.newstyle: + metaclass = inferred.metaclass(context=context) + if metaclass: + yield metaclass + continue + yield builtins.getattr("type")[0] + elif isinstance(inferred, (scoped_nodes.Lambda, bases.UnboundMethod)): + yield _function_type(inferred, builtins) + elif isinstance(inferred, scoped_nodes.Module): + yield _build_proxy_class("module", builtins) + else: + yield inferred._proxied + + +def object_type(node, context=None): + """Obtain the type of the given node + + This is used to implement the ``type`` builtin, which means that it's + used for inferring type calls, as well as used in a couple of other places + in the inference. + The node will be inferred first, so this function can support all + sorts of objects, as long as they support inference. + """ + + try: + types = set(_object_type(node, context)) + except exceptions.InferenceError: + return util.Uninferable + if len(types) > 1 or not types: + return util.Uninferable + return list(types)[0] + + +def _object_type_is_subclass(obj_type, class_or_seq, context=None): + if not isinstance(class_or_seq, (tuple, list)): + class_seq = (class_or_seq,) + else: + class_seq = class_or_seq + + if obj_type is util.Uninferable: + return util.Uninferable + + # Instances are not types + class_seq = [ + item if not isinstance(item, bases.Instance) else util.Uninferable + for item in class_seq + ] + # strict compatibility with issubclass + # issubclass(type, (object, 1)) evaluates to true + # issubclass(object, (1, type)) raises TypeError + for klass in class_seq: + if klass is util.Uninferable: + raise exceptions.AstroidTypeError("arg 2 must be a type or tuple of types") + + for obj_subclass in obj_type.mro(): + if obj_subclass == klass: + return True + return False + + +def object_isinstance(node, class_or_seq, context=None): + """Check if a node 'isinstance' any node in class_or_seq + + :param node: A given node + :param class_or_seq: Union[nodes.NodeNG, Sequence[nodes.NodeNG]] + :rtype: bool + + :raises AstroidTypeError: if the given ``classes_or_seq`` are not types + """ + obj_type = object_type(node, context) + if obj_type is util.Uninferable: + return util.Uninferable + return _object_type_is_subclass(obj_type, class_or_seq, context=context) + + +def object_issubclass(node, class_or_seq, context=None): + """Check if a type is a subclass of any node in class_or_seq + + :param node: A given node + :param class_or_seq: Union[Nodes.NodeNG, Sequence[nodes.NodeNG]] + :rtype: bool + + :raises AstroidTypeError: if the given ``classes_or_seq`` are not types + :raises AstroidError: if the type of the given node cannot be inferred + or its type's mro doesn't work + """ + if not isinstance(node, nodes.ClassDef): + raise TypeError("{node} needs to be a ClassDef node".format(node=node)) + return _object_type_is_subclass(node, class_or_seq, context=context) + + +def safe_infer(node, context=None): + """Return the inferred value for the given node. + + Return None if inference failed or if there is some ambiguity (more than + one node has been inferred). + """ + try: + inferit = node.infer(context=context) + value = next(inferit) + except exceptions.InferenceError: + return None + try: + next(inferit) + return None # None if there is ambiguity on the inferred node + except exceptions.InferenceError: + return None # there is some kind of ambiguity + except StopIteration: + return value + + +def has_known_bases(klass, context=None): + """Return true if all base classes of a class could be inferred.""" + try: + return klass._all_bases_known + except AttributeError: + pass + for base in klass.bases: + result = safe_infer(base, context=context) + # TODO: check for A->B->A->B pattern in class structure too? + if ( + not isinstance(result, scoped_nodes.ClassDef) + or result is klass + or not has_known_bases(result, context=context) + ): + klass._all_bases_known = False + return False + klass._all_bases_known = True + return True + + +def _type_check(type1, type2): + if not all(map(has_known_bases, (type1, type2))): + raise exceptions._NonDeducibleTypeHierarchy + + if not all([type1.newstyle, type2.newstyle]): + return False + try: + return type1 in type2.mro()[:-1] + except exceptions.MroError: + # The MRO is invalid. + raise exceptions._NonDeducibleTypeHierarchy + + +def is_subtype(type1, type2): + """Check if *type1* is a subtype of *type2*.""" + return _type_check(type1=type2, type2=type1) + + +def is_supertype(type1, type2): + """Check if *type2* is a supertype of *type1*.""" + return _type_check(type1, type2) + + +def class_instance_as_index(node): + """Get the value as an index for the given instance. + + If an instance provides an __index__ method, then it can + be used in some scenarios where an integer is expected, + for instance when multiplying or subscripting a list. + """ + context = contextmod.InferenceContext() + context.callcontext = contextmod.CallContext(args=[node]) + + try: + for inferred in node.igetattr("__index__", context=context): + if not isinstance(inferred, bases.BoundMethod): + continue + + for result in inferred.infer_call_result(node, context=context): + if isinstance(result, nodes.Const) and isinstance(result.value, int): + return result + except exceptions.InferenceError: + pass + return None + + +def object_len(node, context=None): + """Infer length of given node object + + :param Union[nodes.ClassDef, nodes.Instance] node: + :param node: Node to infer length of + + :raises AstroidTypeError: If an invalid node is returned + from __len__ method or no __len__ method exists + :raises InferenceError: If the given node cannot be inferred + or if multiple nodes are inferred + :rtype int: Integer length of node + """ + # pylint: disable=import-outside-toplevel; circular import + from astroid.objects import FrozenSet + + inferred_node = safe_infer(node, context=context) + if inferred_node is None or inferred_node is util.Uninferable: + raise exceptions.InferenceError(node=node) + if isinstance(inferred_node, nodes.Const) and isinstance( + inferred_node.value, (bytes, str) + ): + return len(inferred_node.value) + if isinstance(inferred_node, (nodes.List, nodes.Set, nodes.Tuple, FrozenSet)): + return len(inferred_node.elts) + if isinstance(inferred_node, nodes.Dict): + return len(inferred_node.items) + + node_type = object_type(inferred_node, context=context) + if not node_type: + raise exceptions.InferenceError(node=node) + + try: + len_call = next(node_type.igetattr("__len__", context=context)) + except exceptions.AttributeInferenceError: + raise exceptions.AstroidTypeError( + "object of type '{}' has no len()".format(node_type.pytype()) + ) + + result_of_len = next(len_call.infer_call_result(node, context)) + if ( + isinstance(result_of_len, nodes.Const) + and result_of_len.pytype() == "builtins.int" + ): + return result_of_len.value + if isinstance(result_of_len, bases.Instance) and result_of_len.is_subtype_of( + "builtins.int" + ): + # Fake a result as we don't know the arguments of the instance call. + return 0 + raise exceptions.AstroidTypeError( + "'{}' object cannot be interpreted as an integer".format(result_of_len) + ) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/inference.py b/WebCrawler/venv/Lib/site-packages/astroid/inference.py new file mode 100644 index 0000000..bc3e1f9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/inference.py @@ -0,0 +1,994 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2006-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2012 FELD Boris +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Dmitry Pribysh +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2017 Michał Masłowski +# Copyright (c) 2017 Calen Pennington +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2018-2019 Nick Drozd +# Copyright (c) 2018 Daniel Martin +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Ashley Whetter +# Copyright (c) 2018 HoverHell +# Copyright (c) 2020 Leandro T. C. Melo + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""this module contains a set of functions to handle inference on astroid trees +""" + +import functools +import itertools +import operator + +import wrapt +from astroid import bases +from astroid import context as contextmod +from astroid import exceptions +from astroid import decorators +from astroid import helpers +from astroid import manager +from astroid import nodes +from astroid.interpreter import dunder_lookup +from astroid import protocols +from astroid import util + + +MANAGER = manager.AstroidManager() +# Prevents circular imports +objects = util.lazy_import("objects") + + +# .infer method ############################################################### + + +def infer_end(self, context=None): + """Inference's end for nodes that yield themselves on inference + + These are objects for which inference does not have any semantic, + such as Module or Consts. + """ + yield self + + +nodes.Module._infer = infer_end +nodes.ClassDef._infer = infer_end +nodes.Lambda._infer = infer_end +nodes.Const._infer = infer_end +nodes.Slice._infer = infer_end + + +def _infer_sequence_helper(node, context=None): + """Infer all values based on _BaseContainer.elts""" + values = [] + + for elt in node.elts: + if isinstance(elt, nodes.Starred): + starred = helpers.safe_infer(elt.value, context) + if not starred: + raise exceptions.InferenceError(node=node, context=context) + if not hasattr(starred, "elts"): + raise exceptions.InferenceError(node=node, context=context) + values.extend(_infer_sequence_helper(starred)) + elif isinstance(elt, nodes.NamedExpr): + value = helpers.safe_infer(elt.value, context) + if not value: + raise exceptions.InferenceError(node=node, context=context) + values.append(value) + else: + values.append(elt) + return values + + +@decorators.raise_if_nothing_inferred +def infer_sequence(self, context=None): + has_starred_named_expr = any( + isinstance(e, (nodes.Starred, nodes.NamedExpr)) for e in self.elts + ) + if has_starred_named_expr: + values = _infer_sequence_helper(self, context) + new_seq = type(self)( + lineno=self.lineno, col_offset=self.col_offset, parent=self.parent + ) + new_seq.postinit(values) + + yield new_seq + else: + yield self + + +nodes.List._infer = infer_sequence +nodes.Tuple._infer = infer_sequence +nodes.Set._infer = infer_sequence + + +def infer_map(self, context=None): + if not any(isinstance(k, nodes.DictUnpack) for k, _ in self.items): + yield self + else: + items = _infer_map(self, context) + new_seq = type(self)(self.lineno, self.col_offset, self.parent) + new_seq.postinit(list(items.items())) + yield new_seq + + +def _update_with_replacement(lhs_dict, rhs_dict): + """Delete nodes that equate to duplicate keys + + Since an astroid node doesn't 'equal' another node with the same value, + this function uses the as_string method to make sure duplicate keys + don't get through + + Note that both the key and the value are astroid nodes + + Fixes issue with DictUnpack causing duplicte keys + in inferred Dict items + + :param dict(nodes.NodeNG, nodes.NodeNG) lhs_dict: Dictionary to 'merge' nodes into + :param dict(nodes.NodeNG, nodes.NodeNG) rhs_dict: Dictionary with nodes to pull from + :return dict(nodes.NodeNG, nodes.NodeNG): merged dictionary of nodes + """ + combined_dict = itertools.chain(lhs_dict.items(), rhs_dict.items()) + # Overwrite keys which have the same string values + string_map = {key.as_string(): (key, value) for key, value in combined_dict} + # Return to dictionary + return dict(string_map.values()) + + +def _infer_map(node, context): + """Infer all values based on Dict.items""" + values = {} + for name, value in node.items: + if isinstance(name, nodes.DictUnpack): + double_starred = helpers.safe_infer(value, context) + if not double_starred: + raise exceptions.InferenceError + if not isinstance(double_starred, nodes.Dict): + raise exceptions.InferenceError(node=node, context=context) + unpack_items = _infer_map(double_starred, context) + values = _update_with_replacement(values, unpack_items) + else: + key = helpers.safe_infer(name, context=context) + value = helpers.safe_infer(value, context=context) + if any(not elem for elem in (key, value)): + raise exceptions.InferenceError(node=node, context=context) + values = _update_with_replacement(values, {key: value}) + return values + + +nodes.Dict._infer = infer_map + + +def _higher_function_scope(node): + """ Search for the first function which encloses the given + scope. This can be used for looking up in that function's + scope, in case looking up in a lower scope for a particular + name fails. + + :param node: A scope node. + :returns: + ``None``, if no parent function scope was found, + otherwise an instance of :class:`astroid.scoped_nodes.Function`, + which encloses the given node. + """ + current = node + while current.parent and not isinstance(current.parent, nodes.FunctionDef): + current = current.parent + if current and current.parent: + return current.parent + return None + + +def infer_name(self, context=None): + """infer a Name: use name lookup rules""" + frame, stmts = self.lookup(self.name) + if not stmts: + # Try to see if the name is enclosed in a nested function + # and use the higher (first function) scope for searching. + parent_function = _higher_function_scope(self.scope()) + if parent_function: + _, stmts = parent_function.lookup(self.name) + + if not stmts: + raise exceptions.NameInferenceError( + name=self.name, scope=self.scope(), context=context + ) + context = contextmod.copy_context(context) + context.lookupname = self.name + return bases._infer_stmts(stmts, context, frame) + + +# pylint: disable=no-value-for-parameter +nodes.Name._infer = decorators.raise_if_nothing_inferred( + decorators.path_wrapper(infer_name) +) +nodes.AssignName.infer_lhs = infer_name # won't work with a path wrapper + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_call(self, context=None): + """infer a Call node by trying to guess what the function returns""" + callcontext = contextmod.copy_context(context) + callcontext.callcontext = contextmod.CallContext( + args=self.args, keywords=self.keywords + ) + callcontext.boundnode = None + if context is not None: + callcontext.extra_context = _populate_context_lookup(self, context.clone()) + + for callee in self.func.infer(context): + if callee is util.Uninferable: + yield callee + continue + try: + if hasattr(callee, "infer_call_result"): + yield from callee.infer_call_result(caller=self, context=callcontext) + except exceptions.InferenceError: + continue + return dict(node=self, context=context) + + +nodes.Call._infer = infer_call + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_import(self, context=None, asname=True): + """infer an Import node: return the imported module/object""" + name = context.lookupname + if name is None: + raise exceptions.InferenceError(node=self, context=context) + + try: + if asname: + yield self.do_import_module(self.real_name(name)) + else: + yield self.do_import_module(name) + except exceptions.AstroidBuildingError as exc: + raise exceptions.InferenceError(node=self, context=context) from exc + + +nodes.Import._infer = infer_import + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_import_from(self, context=None, asname=True): + """infer a ImportFrom node: return the imported module/object""" + name = context.lookupname + if name is None: + raise exceptions.InferenceError(node=self, context=context) + if asname: + name = self.real_name(name) + + try: + module = self.do_import_module() + except exceptions.AstroidBuildingError as exc: + raise exceptions.InferenceError(node=self, context=context) from exc + + try: + context = contextmod.copy_context(context) + context.lookupname = name + stmts = module.getattr(name, ignore_locals=module is self.root()) + return bases._infer_stmts(stmts, context) + except exceptions.AttributeInferenceError as error: + raise exceptions.InferenceError( + error.message, target=self, attribute=name, context=context + ) from error + + +nodes.ImportFrom._infer = infer_import_from + + +def infer_attribute(self, context=None): + """infer an Attribute node by using getattr on the associated object""" + for owner in self.expr.infer(context): + if owner is util.Uninferable: + yield owner + continue + + if context and context.boundnode: + # This handles the situation where the attribute is accessed through a subclass + # of a base class and the attribute is defined at the base class's level, + # by taking in consideration a redefinition in the subclass. + if isinstance(owner, bases.Instance) and isinstance( + context.boundnode, bases.Instance + ): + try: + if helpers.is_subtype( + helpers.object_type(context.boundnode), + helpers.object_type(owner), + ): + owner = context.boundnode + except exceptions._NonDeducibleTypeHierarchy: + # Can't determine anything useful. + pass + elif not context: + context = contextmod.InferenceContext() + + try: + context.boundnode = owner + yield from owner.igetattr(self.attrname, context) + except ( + exceptions.AttributeInferenceError, + exceptions.InferenceError, + AttributeError, + ): + pass + finally: + context.boundnode = None + return dict(node=self, context=context) + + +nodes.Attribute._infer = decorators.raise_if_nothing_inferred( + decorators.path_wrapper(infer_attribute) +) +# won't work with a path wrapper +nodes.AssignAttr.infer_lhs = decorators.raise_if_nothing_inferred(infer_attribute) + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_global(self, context=None): + if context.lookupname is None: + raise exceptions.InferenceError(node=self, context=context) + try: + return bases._infer_stmts(self.root().getattr(context.lookupname), context) + except exceptions.AttributeInferenceError as error: + raise exceptions.InferenceError( + error.message, target=self, attribute=context.lookupname, context=context + ) from error + + +nodes.Global._infer = infer_global + + +_SUBSCRIPT_SENTINEL = object() + + +def infer_subscript(self, context=None): + """Inference for subscripts + + We're understanding if the index is a Const + or a slice, passing the result of inference + to the value's `getitem` method, which should + handle each supported index type accordingly. + """ + + found_one = False + for value in self.value.infer(context): + if value is util.Uninferable: + yield util.Uninferable + return None + for index in self.slice.infer(context): + if index is util.Uninferable: + yield util.Uninferable + return None + + # Try to deduce the index value. + index_value = _SUBSCRIPT_SENTINEL + if value.__class__ == bases.Instance: + index_value = index + elif index.__class__ == bases.Instance: + instance_as_index = helpers.class_instance_as_index(index) + if instance_as_index: + index_value = instance_as_index + else: + index_value = index + + if index_value is _SUBSCRIPT_SENTINEL: + raise exceptions.InferenceError(node=self, context=context) + + try: + assigned = value.getitem(index_value, context) + except ( + exceptions.AstroidTypeError, + exceptions.AstroidIndexError, + exceptions.AttributeInferenceError, + AttributeError, + ) as exc: + raise exceptions.InferenceError(node=self, context=context) from exc + + # Prevent inferring if the inferred subscript + # is the same as the original subscripted object. + if self is assigned or assigned is util.Uninferable: + yield util.Uninferable + return None + yield from assigned.infer(context) + found_one = True + + if found_one: + return dict(node=self, context=context) + return None + + +nodes.Subscript._infer = decorators.raise_if_nothing_inferred( + decorators.path_wrapper(infer_subscript) +) +nodes.Subscript.infer_lhs = decorators.raise_if_nothing_inferred(infer_subscript) + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def _infer_boolop(self, context=None): + """Infer a boolean operation (and / or / not). + + The function will calculate the boolean operation + for all pairs generated through inference for each component + node. + """ + values = self.values + if self.op == "or": + predicate = operator.truth + else: + predicate = operator.not_ + + try: + values = [value.infer(context=context) for value in values] + except exceptions.InferenceError: + yield util.Uninferable + return None + + for pair in itertools.product(*values): + if any(item is util.Uninferable for item in pair): + # Can't infer the final result, just yield Uninferable. + yield util.Uninferable + continue + + bool_values = [item.bool_value() for item in pair] + if any(item is util.Uninferable for item in bool_values): + # Can't infer the final result, just yield Uninferable. + yield util.Uninferable + continue + + # Since the boolean operations are short circuited operations, + # this code yields the first value for which the predicate is True + # and if no value respected the predicate, then the last value will + # be returned (or Uninferable if there was no last value). + # This is conforming to the semantics of `and` and `or`: + # 1 and 0 -> 1 + # 0 and 1 -> 0 + # 1 or 0 -> 1 + # 0 or 1 -> 1 + value = util.Uninferable + for value, bool_value in zip(pair, bool_values): + if predicate(bool_value): + yield value + break + else: + yield value + + return dict(node=self, context=context) + + +nodes.BoolOp._infer = _infer_boolop + + +# UnaryOp, BinOp and AugAssign inferences + + +def _filter_operation_errors(self, infer_callable, context, error): + for result in infer_callable(self, context): + if isinstance(result, error): + # For the sake of .infer(), we don't care about operation + # errors, which is the job of pylint. So return something + # which shows that we can't infer the result. + yield util.Uninferable + else: + yield result + + +def _infer_unaryop(self, context=None): + """Infer what an UnaryOp should return when evaluated.""" + for operand in self.operand.infer(context): + try: + yield operand.infer_unary_op(self.op) + except TypeError as exc: + # The operand doesn't support this operation. + yield util.BadUnaryOperationMessage(operand, self.op, exc) + except AttributeError as exc: + meth = protocols.UNARY_OP_METHOD[self.op] + if meth is None: + # `not node`. Determine node's boolean + # value and negate its result, unless it is + # Uninferable, which will be returned as is. + bool_value = operand.bool_value() + if bool_value is not util.Uninferable: + yield nodes.const_factory(not bool_value) + else: + yield util.Uninferable + else: + if not isinstance(operand, (bases.Instance, nodes.ClassDef)): + # The operation was used on something which + # doesn't support it. + yield util.BadUnaryOperationMessage(operand, self.op, exc) + continue + + try: + try: + methods = dunder_lookup.lookup(operand, meth) + except exceptions.AttributeInferenceError: + yield util.BadUnaryOperationMessage(operand, self.op, exc) + continue + + meth = methods[0] + inferred = next(meth.infer(context=context)) + if inferred is util.Uninferable or not inferred.callable(): + continue + + context = contextmod.copy_context(context) + context.callcontext = contextmod.CallContext(args=[operand]) + call_results = inferred.infer_call_result(self, context=context) + result = next(call_results, None) + if result is None: + # Failed to infer, return the same type. + yield operand + else: + yield result + except exceptions.AttributeInferenceError as exc: + # The unary operation special method was not found. + yield util.BadUnaryOperationMessage(operand, self.op, exc) + except exceptions.InferenceError: + yield util.Uninferable + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_unaryop(self, context=None): + """Infer what an UnaryOp should return when evaluated.""" + yield from _filter_operation_errors( + self, _infer_unaryop, context, util.BadUnaryOperationMessage + ) + return dict(node=self, context=context) + + +nodes.UnaryOp._infer_unaryop = _infer_unaryop +nodes.UnaryOp._infer = infer_unaryop + + +def _is_not_implemented(const): + """Check if the given const node is NotImplemented.""" + return isinstance(const, nodes.Const) and const.value is NotImplemented + + +def _invoke_binop_inference(instance, opnode, op, other, context, method_name): + """Invoke binary operation inference on the given instance.""" + methods = dunder_lookup.lookup(instance, method_name) + context = contextmod.bind_context_to_node(context, instance) + method = methods[0] + inferred = next(method.infer(context=context)) + if inferred is util.Uninferable: + raise exceptions.InferenceError + return instance.infer_binary_op(opnode, op, other, context, inferred) + + +def _aug_op(instance, opnode, op, other, context, reverse=False): + """Get an inference callable for an augmented binary operation.""" + method_name = protocols.AUGMENTED_OP_METHOD[op] + return functools.partial( + _invoke_binop_inference, + instance=instance, + op=op, + opnode=opnode, + other=other, + context=context, + method_name=method_name, + ) + + +def _bin_op(instance, opnode, op, other, context, reverse=False): + """Get an inference callable for a normal binary operation. + + If *reverse* is True, then the reflected method will be used instead. + """ + if reverse: + method_name = protocols.REFLECTED_BIN_OP_METHOD[op] + else: + method_name = protocols.BIN_OP_METHOD[op] + return functools.partial( + _invoke_binop_inference, + instance=instance, + op=op, + opnode=opnode, + other=other, + context=context, + method_name=method_name, + ) + + +def _get_binop_contexts(context, left, right): + """Get contexts for binary operations. + + This will return two inference contexts, the first one + for x.__op__(y), the other one for y.__rop__(x), where + only the arguments are inversed. + """ + # The order is important, since the first one should be + # left.__op__(right). + for arg in (right, left): + new_context = context.clone() + new_context.callcontext = contextmod.CallContext(args=[arg]) + new_context.boundnode = None + yield new_context + + +def _same_type(type1, type2): + """Check if type1 is the same as type2.""" + return type1.qname() == type2.qname() + + +def _get_binop_flow( + left, left_type, binary_opnode, right, right_type, context, reverse_context +): + """Get the flow for binary operations. + + The rules are a bit messy: + + * if left and right have the same type, then only one + method will be called, left.__op__(right) + * if left and right are unrelated typewise, then first + left.__op__(right) is tried and if this does not exist + or returns NotImplemented, then right.__rop__(left) is tried. + * if left is a subtype of right, then only left.__op__(right) + is tried. + * if left is a supertype of right, then right.__rop__(left) + is first tried and then left.__op__(right) + """ + op = binary_opnode.op + if _same_type(left_type, right_type): + methods = [_bin_op(left, binary_opnode, op, right, context)] + elif helpers.is_subtype(left_type, right_type): + methods = [_bin_op(left, binary_opnode, op, right, context)] + elif helpers.is_supertype(left_type, right_type): + methods = [ + _bin_op(right, binary_opnode, op, left, reverse_context, reverse=True), + _bin_op(left, binary_opnode, op, right, context), + ] + else: + methods = [ + _bin_op(left, binary_opnode, op, right, context), + _bin_op(right, binary_opnode, op, left, reverse_context, reverse=True), + ] + return methods + + +def _get_aug_flow( + left, left_type, aug_opnode, right, right_type, context, reverse_context +): + """Get the flow for augmented binary operations. + + The rules are a bit messy: + + * if left and right have the same type, then left.__augop__(right) + is first tried and then left.__op__(right). + * if left and right are unrelated typewise, then + left.__augop__(right) is tried, then left.__op__(right) + is tried and then right.__rop__(left) is tried. + * if left is a subtype of right, then left.__augop__(right) + is tried and then left.__op__(right). + * if left is a supertype of right, then left.__augop__(right) + is tried, then right.__rop__(left) and then + left.__op__(right) + """ + bin_op = aug_opnode.op.strip("=") + aug_op = aug_opnode.op + if _same_type(left_type, right_type): + methods = [ + _aug_op(left, aug_opnode, aug_op, right, context), + _bin_op(left, aug_opnode, bin_op, right, context), + ] + elif helpers.is_subtype(left_type, right_type): + methods = [ + _aug_op(left, aug_opnode, aug_op, right, context), + _bin_op(left, aug_opnode, bin_op, right, context), + ] + elif helpers.is_supertype(left_type, right_type): + methods = [ + _aug_op(left, aug_opnode, aug_op, right, context), + _bin_op(right, aug_opnode, bin_op, left, reverse_context, reverse=True), + _bin_op(left, aug_opnode, bin_op, right, context), + ] + else: + methods = [ + _aug_op(left, aug_opnode, aug_op, right, context), + _bin_op(left, aug_opnode, bin_op, right, context), + _bin_op(right, aug_opnode, bin_op, left, reverse_context, reverse=True), + ] + return methods + + +def _infer_binary_operation(left, right, binary_opnode, context, flow_factory): + """Infer a binary operation between a left operand and a right operand + + This is used by both normal binary operations and augmented binary + operations, the only difference is the flow factory used. + """ + + context, reverse_context = _get_binop_contexts(context, left, right) + left_type = helpers.object_type(left) + right_type = helpers.object_type(right) + methods = flow_factory( + left, left_type, binary_opnode, right, right_type, context, reverse_context + ) + for method in methods: + try: + results = list(method()) + except AttributeError: + continue + except exceptions.AttributeInferenceError: + continue + except exceptions.InferenceError: + yield util.Uninferable + return + else: + if any(result is util.Uninferable for result in results): + yield util.Uninferable + return + + if all(map(_is_not_implemented, results)): + continue + not_implemented = sum( + 1 for result in results if _is_not_implemented(result) + ) + if not_implemented and not_implemented != len(results): + # Can't infer yet what this is. + yield util.Uninferable + return + + yield from results + return + # The operation doesn't seem to be supported so let the caller know about it + yield util.BadBinaryOperationMessage(left_type, binary_opnode.op, right_type) + + +def _infer_binop(self, context): + """Binary operation inference logic.""" + left = self.left + right = self.right + + # we use two separate contexts for evaluating lhs and rhs because + # 1. evaluating lhs may leave some undesired entries in context.path + # which may not let us infer right value of rhs + context = context or contextmod.InferenceContext() + lhs_context = contextmod.copy_context(context) + rhs_context = contextmod.copy_context(context) + lhs_iter = left.infer(context=lhs_context) + rhs_iter = right.infer(context=rhs_context) + for lhs, rhs in itertools.product(lhs_iter, rhs_iter): + if any(value is util.Uninferable for value in (rhs, lhs)): + # Don't know how to process this. + yield util.Uninferable + return + + try: + yield from _infer_binary_operation(lhs, rhs, self, context, _get_binop_flow) + except exceptions._NonDeducibleTypeHierarchy: + yield util.Uninferable + + +@decorators.yes_if_nothing_inferred +@decorators.path_wrapper +def infer_binop(self, context=None): + return _filter_operation_errors( + self, _infer_binop, context, util.BadBinaryOperationMessage + ) + + +nodes.BinOp._infer_binop = _infer_binop +nodes.BinOp._infer = infer_binop + + +def _infer_augassign(self, context=None): + """Inference logic for augmented binary operations.""" + if context is None: + context = contextmod.InferenceContext() + + rhs_context = context.clone() + + lhs_iter = self.target.infer_lhs(context=context) + rhs_iter = self.value.infer(context=rhs_context) + for lhs, rhs in itertools.product(lhs_iter, rhs_iter): + if any(value is util.Uninferable for value in (rhs, lhs)): + # Don't know how to process this. + yield util.Uninferable + return + + try: + yield from _infer_binary_operation( + left=lhs, + right=rhs, + binary_opnode=self, + context=context, + flow_factory=_get_aug_flow, + ) + except exceptions._NonDeducibleTypeHierarchy: + yield util.Uninferable + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_augassign(self, context=None): + return _filter_operation_errors( + self, _infer_augassign, context, util.BadBinaryOperationMessage + ) + + +nodes.AugAssign._infer_augassign = _infer_augassign +nodes.AugAssign._infer = infer_augassign + +# End of binary operation inference. + + +@decorators.raise_if_nothing_inferred +def infer_arguments(self, context=None): + name = context.lookupname + if name is None: + raise exceptions.InferenceError(node=self, context=context) + return protocols._arguments_infer_argname(self, name, context) + + +nodes.Arguments._infer = infer_arguments + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_assign(self, context=None): + """infer a AssignName/AssignAttr: need to inspect the RHS part of the + assign node + """ + if isinstance(self.parent, nodes.AugAssign): + return self.parent.infer(context) + + stmts = list(self.assigned_stmts(context=context)) + return bases._infer_stmts(stmts, context) + + +nodes.AssignName._infer = infer_assign +nodes.AssignAttr._infer = infer_assign + + +@decorators.raise_if_nothing_inferred +@decorators.path_wrapper +def infer_empty_node(self, context=None): + if not self.has_underlying_object(): + yield util.Uninferable + else: + try: + yield from MANAGER.infer_ast_from_something(self.object, context=context) + except exceptions.AstroidError: + yield util.Uninferable + + +nodes.EmptyNode._infer = infer_empty_node + + +@decorators.raise_if_nothing_inferred +def infer_index(self, context=None): + return self.value.infer(context) + + +nodes.Index._infer = infer_index + +# TODO: move directly into bases.Instance when the dependency hell +# will be solved. +def instance_getitem(self, index, context=None): + # Rewrap index to Const for this case + new_context = contextmod.bind_context_to_node(context, self) + if not context: + context = new_context + + # Create a new callcontext for providing index as an argument. + new_context.callcontext = contextmod.CallContext(args=[index]) + + method = next(self.igetattr("__getitem__", context=context), None) + if not isinstance(method, bases.BoundMethod): + raise exceptions.InferenceError( + "Could not find __getitem__ for {node!r}.", node=self, context=context + ) + + return next(method.infer_call_result(self, new_context)) + + +bases.Instance.getitem = instance_getitem + + +def _populate_context_lookup(call, context): + # Allows context to be saved for later + # for inference inside a function + context_lookup = {} + if context is None: + return context_lookup + for arg in call.args: + if isinstance(arg, nodes.Starred): + context_lookup[arg.value] = context + else: + context_lookup[arg] = context + keywords = call.keywords if call.keywords is not None else [] + for keyword in keywords: + context_lookup[keyword.value] = context + return context_lookup + + +@decorators.raise_if_nothing_inferred +def infer_ifexp(self, context=None): + """Support IfExp inference + + If we can't infer the truthiness of the condition, we default + to inferring both branches. Otherwise, we infer either branch + depending on the condition. + """ + both_branches = False + # We use two separate contexts for evaluating lhs and rhs because + # evaluating lhs may leave some undesired entries in context.path + # which may not let us infer right value of rhs. + + context = context or contextmod.InferenceContext() + lhs_context = contextmod.copy_context(context) + rhs_context = contextmod.copy_context(context) + try: + test = next(self.test.infer(context=context.clone())) + except exceptions.InferenceError: + both_branches = True + else: + if test is not util.Uninferable: + if test.bool_value(): + yield from self.body.infer(context=lhs_context) + else: + yield from self.orelse.infer(context=rhs_context) + else: + both_branches = True + if both_branches: + yield from self.body.infer(context=lhs_context) + yield from self.orelse.infer(context=rhs_context) + + +nodes.IfExp._infer = infer_ifexp + + +# pylint: disable=dangerous-default-value +@wrapt.decorator +def _cached_generator(func, instance, args, kwargs, _cache={}): + node = args[0] + try: + return iter(_cache[func, id(node)]) + except KeyError: + result = func(*args, **kwargs) + # Need to keep an iterator around + original, copy = itertools.tee(result) + _cache[func, id(node)] = list(copy) + return original + + +# When inferring a property, we instantiate a new `objects.Property` object, +# which in turn, because it inherits from `FunctionDef`, sets itself in the locals +# of the wrapping frame. This means that everytime we infer a property, the locals +# are mutated with a new instance of the property. This is why we cache the result +# of the function's inference. +@_cached_generator +def infer_functiondef(self, context=None): + if not self.decorators or not bases._is_property(self): + yield self + return dict(node=self, context=context) + + prop_func = objects.Property( + function=self, + name=self.name, + doc=self.doc, + lineno=self.lineno, + parent=self.parent, + col_offset=self.col_offset, + ) + prop_func.postinit(body=[], args=self.args) + yield prop_func + return dict(node=self, context=context) + + +nodes.FunctionDef._infer = infer_functiondef diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__init__.py b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f3006355558a0dc27eca173c33ef18645a1d7db GIT binary patch literal 179 zcmYe~<>g`kfQRXW=X1UL1J=tVtQ(EOk#0K vQGRBMer8@tYEeN^Dv;EVkI&4@EQycTE2zB1VUwGmQks)$2eR=q5HkP(o|`Yd literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/dunder_lookup.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/__pycache__/dunder_lookup.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc3aa348111870c12435ec09ec97eca756446d22 GIT binary patch literal 2130 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 DMCCH> literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/spec.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/spec.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cfc816d7678ec32850b1ea2d32d0b170968397c0 GIT binary patch literal 9375 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/util.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/__pycache__/util.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9039bd9a597fc5971bb5c2ac30c9163be48f2610 GIT binary patch literal 405 zcmYjN!Ab)`49)CTTWbrV;0JiygSHAiC?Z1jAV@DF#WJvLcS0Gv-B~iTEftUcjK8!; zJ^2eFXr?GOAuoAk5?&^0x0}HBmA=K_oZmfJw+53-4%=mTYAH}6gAoiN->(6R<$(b2 zN{rwE@}LVUP~i)V0wwMss(tVj3{v6KulYLQ=yTXz1_ugCVRoLmdK7cuIWdTWs$EPc zF`+djrD&_YI8SD1izLOEVVX?PMxv_EjPi|FpbcL3Dbq7~Z;`C*^-hjYybncJ}LdH(4XN4ixDV@%aie=T(_Fu-9zrddY qg6fP>NS;;OH>;s*B15ajO4%B0`d5u}R$gX!5i+y>p99fiZ-zf06=9VC literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/spec.py b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/spec.py new file mode 100644 index 0000000..3cf5fea --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/spec.py @@ -0,0 +1,346 @@ +# Copyright (c) 2016-2018 Claudiu Popa +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2017 Chris Philip +# Copyright (c) 2017 Hugo +# Copyright (c) 2017 ioanatia +# Copyright (c) 2017 Calen Pennington +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2019 Hugo van Kemenade +# Copyright (c) 2019 Ashley Whetter + +import abc +import collections +import distutils +import enum +import imp +import os +import sys +import zipimport + +try: + import importlib.machinery + + _HAS_MACHINERY = True +except ImportError: + _HAS_MACHINERY = False + +try: + from functools import lru_cache +except ImportError: + from backports.functools_lru_cache import lru_cache + +from . import util + +ModuleType = enum.Enum( + "ModuleType", + "C_BUILTIN C_EXTENSION PKG_DIRECTORY " + "PY_CODERESOURCE PY_COMPILED PY_FROZEN PY_RESOURCE " + "PY_SOURCE PY_ZIPMODULE PY_NAMESPACE", +) +_ImpTypes = { + imp.C_BUILTIN: ModuleType.C_BUILTIN, + imp.C_EXTENSION: ModuleType.C_EXTENSION, + imp.PKG_DIRECTORY: ModuleType.PKG_DIRECTORY, + imp.PY_COMPILED: ModuleType.PY_COMPILED, + imp.PY_FROZEN: ModuleType.PY_FROZEN, + imp.PY_SOURCE: ModuleType.PY_SOURCE, +} +if hasattr(imp, "PY_RESOURCE"): + _ImpTypes[imp.PY_RESOURCE] = ModuleType.PY_RESOURCE +if hasattr(imp, "PY_CODERESOURCE"): + _ImpTypes[imp.PY_CODERESOURCE] = ModuleType.PY_CODERESOURCE + + +def _imp_type_to_module_type(imp_type): + return _ImpTypes[imp_type] + + +_ModuleSpec = collections.namedtuple( + "_ModuleSpec", "name type location " "origin submodule_search_locations" +) + + +class ModuleSpec(_ModuleSpec): + """Defines a class similar to PEP 420's ModuleSpec + + A module spec defines a name of a module, its type, location + and where submodules can be found, if the module is a package. + """ + + def __new__( + cls, + name, + module_type, + location=None, + origin=None, + submodule_search_locations=None, + ): + return _ModuleSpec.__new__( + cls, + name=name, + type=module_type, + location=location, + origin=origin, + submodule_search_locations=submodule_search_locations, + ) + + +class Finder: + """A finder is a class which knows how to find a particular module.""" + + def __init__(self, path=None): + self._path = path or sys.path + + @abc.abstractmethod + def find_module(self, modname, module_parts, processed, submodule_path): + """Find the given module + + Each finder is responsible for each protocol of finding, as long as + they all return a ModuleSpec. + + :param str modname: The module which needs to be searched. + :param list module_parts: It should be a list of strings, + where each part contributes to the module's + namespace. + :param list processed: What parts from the module parts were processed + so far. + :param list submodule_path: A list of paths where the module + can be looked into. + :returns: A ModuleSpec, describing how and where the module was found, + None, otherwise. + """ + + def contribute_to_path(self, spec, processed): + """Get a list of extra paths where this finder can search.""" + + +class ImpFinder(Finder): + """A finder based on the imp module.""" + + def find_module(self, modname, module_parts, processed, submodule_path): + if submodule_path is not None: + submodule_path = list(submodule_path) + try: + stream, mp_filename, mp_desc = imp.find_module(modname, submodule_path) + except ImportError: + return None + + # Close resources. + if stream: + stream.close() + + return ModuleSpec( + name=modname, + location=mp_filename, + module_type=_imp_type_to_module_type(mp_desc[2]), + ) + + def contribute_to_path(self, spec, processed): + if spec.location is None: + # Builtin. + return None + + if _is_setuptools_namespace(spec.location): + # extend_path is called, search sys.path for module/packages + # of this name see pkgutil.extend_path documentation + path = [ + os.path.join(p, *processed) + for p in sys.path + if os.path.isdir(os.path.join(p, *processed)) + ] + # We already import distutils elsewhere in astroid, + # so if it is the same module, we can use it directly. + elif spec.name == "distutils" and spec.location in distutils.__path__: + # distutils is patched inside virtualenvs to pick up submodules + # from the original Python, not from the virtualenv itself. + path = list(distutils.__path__) + else: + path = [spec.location] + return path + + +class ExplicitNamespacePackageFinder(ImpFinder): + """A finder for the explicit namespace packages, generated through pkg_resources.""" + + def find_module(self, modname, module_parts, processed, submodule_path): + if processed: + modname = ".".join(processed + [modname]) + if util.is_namespace(modname) and modname in sys.modules: + submodule_path = sys.modules[modname].__path__ + return ModuleSpec( + name=modname, + location="", + origin="namespace", + module_type=ModuleType.PY_NAMESPACE, + submodule_search_locations=submodule_path, + ) + return None + + def contribute_to_path(self, spec, processed): + return spec.submodule_search_locations + + +class ZipFinder(Finder): + """Finder that knows how to find a module inside zip files.""" + + def __init__(self, path): + super().__init__(path) + self._zipimporters = _precache_zipimporters(path) + + def find_module(self, modname, module_parts, processed, submodule_path): + try: + file_type, filename, path = _search_zip(module_parts, self._zipimporters) + except ImportError: + return None + + return ModuleSpec( + name=modname, + location=filename, + origin="egg", + module_type=file_type, + submodule_search_locations=path, + ) + + +class PathSpecFinder(Finder): + """Finder based on importlib.machinery.PathFinder.""" + + def find_module(self, modname, module_parts, processed, submodule_path): + spec = importlib.machinery.PathFinder.find_spec(modname, path=submodule_path) + if spec: + # origin can be either a string on older Python versions + # or None in case it is a namespace package: + # https://github.com/python/cpython/pull/5481 + is_namespace_pkg = spec.origin in ("namespace", None) + location = spec.origin if not is_namespace_pkg else None + module_type = ModuleType.PY_NAMESPACE if is_namespace_pkg else None + spec = ModuleSpec( + name=spec.name, + location=location, + origin=spec.origin, + module_type=module_type, + submodule_search_locations=list(spec.submodule_search_locations or []), + ) + return spec + + def contribute_to_path(self, spec, processed): + if spec.type == ModuleType.PY_NAMESPACE: + return spec.submodule_search_locations + return None + + +_SPEC_FINDERS = (ImpFinder, ZipFinder) +if _HAS_MACHINERY: + _SPEC_FINDERS += (PathSpecFinder,) +_SPEC_FINDERS += (ExplicitNamespacePackageFinder,) + + +def _is_setuptools_namespace(location): + try: + with open(os.path.join(location, "__init__.py"), "rb") as stream: + data = stream.read(4096) + except IOError: + pass + else: + extend_path = b"pkgutil" in data and b"extend_path" in data + declare_namespace = ( + b"pkg_resources" in data and b"declare_namespace(__name__)" in data + ) + return extend_path or declare_namespace + + +@lru_cache() +def _cached_set_diff(left, right): + result = set(left) + result.difference_update(right) + return result + + +def _precache_zipimporters(path=None): + pic = sys.path_importer_cache + + # When measured, despite having the same complexity (O(n)), + # converting to tuples and then caching the conversion to sets + # and the set difference is faster than converting to sets + # and then only caching the set difference. + + req_paths = tuple(path or sys.path) + cached_paths = tuple(pic) + new_paths = _cached_set_diff(req_paths, cached_paths) + for entry_path in new_paths: + try: + pic[entry_path] = zipimport.zipimporter(entry_path) + except zipimport.ZipImportError: + continue + return pic + + +def _search_zip(modpath, pic): + for filepath, importer in list(pic.items()): + if importer is not None: + found = importer.find_module(modpath[0]) + if found: + if not importer.find_module(os.path.sep.join(modpath)): + raise ImportError( + "No module named %s in %s/%s" + % (".".join(modpath[1:]), filepath, modpath) + ) + # import code; code.interact(local=locals()) + return ( + ModuleType.PY_ZIPMODULE, + os.path.abspath(filepath) + os.path.sep + os.path.sep.join(modpath), + filepath, + ) + raise ImportError("No module named %s" % ".".join(modpath)) + + +def _find_spec_with_path(search_path, modname, module_parts, processed, submodule_path): + finders = [finder(search_path) for finder in _SPEC_FINDERS] + for finder in finders: + spec = finder.find_module(modname, module_parts, processed, submodule_path) + if spec is None: + continue + return finder, spec + + raise ImportError("No module named %s" % ".".join(module_parts)) + + +def find_spec(modpath, path=None): + """Find a spec for the given module. + + :type modpath: list or tuple + :param modpath: + split module's name (i.e name of a module or package split + on '.'), with leading empty strings for explicit relative import + + :type path: list or None + :param path: + optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :rtype: ModuleSpec + :return: A module spec, which describes how the module was + found and where. + """ + _path = path or sys.path + + # Need a copy for not mutating the argument. + modpath = modpath[:] + + submodule_path = None + module_parts = modpath[:] + processed = [] + + while modpath: + modname = modpath.pop(0) + finder, spec = _find_spec_with_path( + _path, modname, module_parts, processed, submodule_path or path + ) + processed.append(modname) + if modpath: + submodule_path = finder.contribute_to_path(spec, processed) + + if spec.type == ModuleType.PKG_DIRECTORY: + spec = spec._replace(submodule_search_locations=submodule_path) + + return spec diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/util.py b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/util.py new file mode 100644 index 0000000..a917bd3 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/_import/util.py @@ -0,0 +1,10 @@ +# Copyright (c) 2016, 2018 Claudiu Popa + +try: + import pkg_resources +except ImportError: + pkg_resources = None + + +def is_namespace(modname): + return pkg_resources is not None and modname in pkg_resources._namespace_packages diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/dunder_lookup.py b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/dunder_lookup.py new file mode 100644 index 0000000..0ae9bc9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/dunder_lookup.py @@ -0,0 +1,66 @@ +# Copyright (c) 2016-2018 Claudiu Popa +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Contains logic for retrieving special methods. + +This implementation does not rely on the dot attribute access +logic, found in ``.getattr()``. The difference between these two +is that the dunder methods are looked with the type slots +(you can find more about these here +http://lucumr.pocoo.org/2014/8/16/the-python-i-would-like-to-see/) +As such, the lookup for the special methods is actually simpler than +the dot attribute access. +""" +import itertools + +import astroid +from astroid import exceptions + + +def _lookup_in_mro(node, name): + attrs = node.locals.get(name, []) + + nodes = itertools.chain.from_iterable( + ancestor.locals.get(name, []) for ancestor in node.ancestors(recurs=True) + ) + values = list(itertools.chain(attrs, nodes)) + if not values: + raise exceptions.AttributeInferenceError(attribute=name, target=node) + + return values + + +def lookup(node, name): + """Lookup the given special method name in the given *node* + + If the special method was found, then a list of attributes + will be returned. Otherwise, `astroid.AttributeInferenceError` + is going to be raised. + """ + if isinstance( + node, (astroid.List, astroid.Tuple, astroid.Const, astroid.Dict, astroid.Set) + ): + return _builtin_lookup(node, name) + if isinstance(node, astroid.Instance): + return _lookup_in_mro(node, name) + if isinstance(node, astroid.ClassDef): + return _class_lookup(node, name) + + raise exceptions.AttributeInferenceError(attribute=name, target=node) + + +def _class_lookup(node, name): + metaclass = node.metaclass() + if metaclass is None: + raise exceptions.AttributeInferenceError(attribute=name, target=node) + + return _lookup_in_mro(metaclass, name) + + +def _builtin_lookup(node, name): + values = node.locals.get(name, []) + if not values: + raise exceptions.AttributeInferenceError(attribute=name, target=node) + + return values diff --git a/WebCrawler/venv/Lib/site-packages/astroid/interpreter/objectmodel.py b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/objectmodel.py new file mode 100644 index 0000000..277c825 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/interpreter/objectmodel.py @@ -0,0 +1,801 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2016-2019 Claudiu Popa +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2017-2018 Bryce Guinta +# Copyright (c) 2017 Ceridwen +# Copyright (c) 2017 Calen Pennington +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Nick Drozd +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER +""" +Data object model, as per https://docs.python.org/3/reference/datamodel.html. + +This module describes, at least partially, a data object model for some +of astroid's nodes. The model contains special attributes that nodes such +as functions, classes, modules etc have, such as __doc__, __class__, +__module__ etc, being used when doing attribute lookups over nodes. + +For instance, inferring `obj.__class__` will first trigger an inference +of the `obj` variable. If it was successfully inferred, then an attribute +`__class__ will be looked for in the inferred object. This is the part +where the data model occurs. The model is attached to those nodes +and the lookup mechanism will try to see if attributes such as +`__class__` are defined by the model or not. If they are defined, +the model will be requested to return the corresponding value of that +attribute. Thus the model can be viewed as a special part of the lookup +mechanism. +""" + +import itertools +import pprint +import os +import types +from functools import lru_cache + +import astroid +from astroid import context as contextmod +from astroid import exceptions +from astroid import node_classes + + +IMPL_PREFIX = "attr_" + + +def _dunder_dict(instance, attributes): + obj = node_classes.Dict(parent=instance) + + # Convert the keys to node strings + keys = [ + node_classes.Const(value=value, parent=obj) for value in list(attributes.keys()) + ] + + # The original attribute has a list of elements for each key, + # but that is not useful for retrieving the special attribute's value. + # In this case, we're picking the last value from each list. + values = [elem[-1] for elem in attributes.values()] + + obj.postinit(list(zip(keys, values))) + return obj + + +class ObjectModel: + def __init__(self): + self._instance = None + + def __repr__(self): + result = [] + cname = type(self).__name__ + string = "%(cname)s(%(fields)s)" + alignment = len(cname) + 1 + for field in sorted(self.attributes()): + width = 80 - len(field) - alignment + lines = pprint.pformat(field, indent=2, width=width).splitlines(True) + + inner = [lines[0]] + for line in lines[1:]: + inner.append(" " * alignment + line) + result.append(field) + + return string % { + "cname": cname, + "fields": (",\n" + " " * alignment).join(result), + } + + def __call__(self, instance): + self._instance = instance + return self + + def __get__(self, instance, cls=None): + # ObjectModel needs to be a descriptor so that just doing + # `special_attributes = SomeObjectModel` should be enough in the body of a node. + # But at the same time, node.special_attributes should return an object + # which can be used for manipulating the special attributes. That's the reason + # we pass the instance through which it got accessed to ObjectModel.__call__, + # returning itself afterwards, so we can still have access to the + # underlying data model and to the instance for which it got accessed. + return self(instance) + + def __contains__(self, name): + return name in self.attributes() + + @lru_cache(maxsize=None) + def attributes(self): + """Get the attributes which are exported by this object model.""" + return [ + obj[len(IMPL_PREFIX) :] for obj in dir(self) if obj.startswith(IMPL_PREFIX) + ] + + def lookup(self, name): + """Look up the given *name* in the current model + + It should return an AST or an interpreter object, + but if the name is not found, then an AttributeInferenceError will be raised. + """ + + if name in self.attributes(): + return getattr(self, IMPL_PREFIX + name) + raise exceptions.AttributeInferenceError(target=self._instance, attribute=name) + + +class ModuleModel(ObjectModel): + def _builtins(self): + builtins_ast_module = astroid.MANAGER.builtins_module + return builtins_ast_module.special_attributes.lookup("__dict__") + + @property + def attr_builtins(self): + return self._builtins() + + @property + def attr___path__(self): + if not self._instance.package: + raise exceptions.AttributeInferenceError( + target=self._instance, attribute="__path__" + ) + + path_objs = [ + node_classes.Const( + value=path + if not path.endswith("__init__.py") + else os.path.dirname(path), + parent=self._instance, + ) + for path in self._instance.path + ] + + container = node_classes.List(parent=self._instance) + container.postinit(path_objs) + + return container + + @property + def attr___name__(self): + return node_classes.Const(value=self._instance.name, parent=self._instance) + + @property + def attr___doc__(self): + return node_classes.Const(value=self._instance.doc, parent=self._instance) + + @property + def attr___file__(self): + return node_classes.Const(value=self._instance.file, parent=self._instance) + + @property + def attr___dict__(self): + return _dunder_dict(self._instance, self._instance.globals) + + @property + def attr___package__(self): + if not self._instance.package: + value = "" + else: + value = self._instance.name + + return node_classes.Const(value=value, parent=self._instance) + + # These are related to the Python 3 implementation of the + # import system, + # https://docs.python.org/3/reference/import.html#import-related-module-attributes + + @property + def attr___spec__(self): + # No handling for now. + return node_classes.Unknown() + + @property + def attr___loader__(self): + # No handling for now. + return node_classes.Unknown() + + @property + def attr___cached__(self): + # No handling for now. + return node_classes.Unknown() + + +class FunctionModel(ObjectModel): + @property + def attr___name__(self): + return node_classes.Const(value=self._instance.name, parent=self._instance) + + @property + def attr___doc__(self): + return node_classes.Const(value=self._instance.doc, parent=self._instance) + + @property + def attr___qualname__(self): + return node_classes.Const(value=self._instance.qname(), parent=self._instance) + + @property + def attr___defaults__(self): + func = self._instance + if not func.args.defaults: + return node_classes.Const(value=None, parent=func) + + defaults_obj = node_classes.Tuple(parent=func) + defaults_obj.postinit(func.args.defaults) + return defaults_obj + + @property + def attr___annotations__(self): + obj = node_classes.Dict(parent=self._instance) + + if not self._instance.returns: + returns = None + else: + returns = self._instance.returns + + args = self._instance.args + pair_annotations = itertools.chain( + zip(args.args or [], args.annotations), + zip(args.kwonlyargs, args.kwonlyargs_annotations), + zip(args.posonlyargs or [], args.posonlyargs_annotations), + ) + + annotations = { + arg.name: annotation for (arg, annotation) in pair_annotations if annotation + } + if args.varargannotation: + annotations[args.vararg] = args.varargannotation + if args.kwargannotation: + annotations[args.kwarg] = args.kwargannotation + if returns: + annotations["return"] = returns + + items = [ + (node_classes.Const(key, parent=obj), value) + for (key, value) in annotations.items() + ] + + obj.postinit(items) + return obj + + @property + def attr___dict__(self): + return node_classes.Dict(parent=self._instance) + + attr___globals__ = attr___dict__ + + @property + def attr___kwdefaults__(self): + def _default_args(args, parent): + for arg in args.kwonlyargs: + try: + default = args.default_value(arg.name) + except exceptions.NoDefault: + continue + + name = node_classes.Const(arg.name, parent=parent) + yield name, default + + args = self._instance.args + obj = node_classes.Dict(parent=self._instance) + defaults = dict(_default_args(args, obj)) + + obj.postinit(list(defaults.items())) + return obj + + @property + def attr___module__(self): + return node_classes.Const(self._instance.root().qname()) + + @property + def attr___get__(self): + # pylint: disable=import-outside-toplevel; circular import + from astroid import bases + + func = self._instance + + class DescriptorBoundMethod(bases.BoundMethod): + """Bound method which knows how to understand calling descriptor binding.""" + + def implicit_parameters(self): + # Different than BoundMethod since the signature + # is different. + return 0 + + def infer_call_result(self, caller, context=None): + if len(caller.args) > 2 or len(caller.args) < 1: + raise exceptions.InferenceError( + "Invalid arguments for descriptor binding", + target=self, + context=context, + ) + + context = contextmod.copy_context(context) + cls = next(caller.args[0].infer(context=context)) + + if cls is astroid.Uninferable: + raise exceptions.InferenceError( + "Invalid class inferred", target=self, context=context + ) + + # For some reason func is a Node that the below + # code is not expecting + if isinstance(func, bases.BoundMethod): + yield func + return + + # Rebuild the original value, but with the parent set as the + # class where it will be bound. + new_func = func.__class__( + name=func.name, + doc=func.doc, + lineno=func.lineno, + col_offset=func.col_offset, + ) + # pylint: disable=no-member + new_func.postinit(func.args, func.body, func.decorators, func.returns) + + # Build a proper bound method that points to our newly built function. + proxy = bases.UnboundMethod(new_func) + yield bases.BoundMethod(proxy=proxy, bound=cls) + + @property + def args(self): + """Overwrite the underlying args to match those of the underlying func + + Usually the underlying *func* is a function/method, as in: + + def test(self): + pass + + This has only the *self* parameter but when we access test.__get__ + we get a new object which has two parameters, *self* and *type*. + """ + nonlocal func + positional_or_keyword_params = func.args.args.copy() + positional_or_keyword_params.append(astroid.AssignName(name="type")) + + positional_only_params = func.args.posonlyargs.copy() + + arguments = astroid.Arguments(parent=func.args.parent) + arguments.postinit( + args=positional_or_keyword_params, + posonlyargs=positional_only_params, + defaults=[], + kwonlyargs=[], + kw_defaults=[], + annotations=[], + ) + return arguments + + return DescriptorBoundMethod(proxy=self._instance, bound=self._instance) + + # These are here just for completion. + @property + def attr___ne__(self): + return node_classes.Unknown() + + attr___subclasshook__ = attr___ne__ + attr___str__ = attr___ne__ + attr___sizeof__ = attr___ne__ + attr___setattr___ = attr___ne__ + attr___repr__ = attr___ne__ + attr___reduce__ = attr___ne__ + attr___reduce_ex__ = attr___ne__ + attr___new__ = attr___ne__ + attr___lt__ = attr___ne__ + attr___eq__ = attr___ne__ + attr___gt__ = attr___ne__ + attr___format__ = attr___ne__ + attr___delattr___ = attr___ne__ + attr___getattribute__ = attr___ne__ + attr___hash__ = attr___ne__ + attr___init__ = attr___ne__ + attr___dir__ = attr___ne__ + attr___call__ = attr___ne__ + attr___class__ = attr___ne__ + attr___closure__ = attr___ne__ + attr___code__ = attr___ne__ + + +class ClassModel(ObjectModel): + @property + def attr___module__(self): + return node_classes.Const(self._instance.root().qname()) + + @property + def attr___name__(self): + return node_classes.Const(self._instance.name) + + @property + def attr___qualname__(self): + return node_classes.Const(self._instance.qname()) + + @property + def attr___doc__(self): + return node_classes.Const(self._instance.doc) + + @property + def attr___mro__(self): + if not self._instance.newstyle: + raise exceptions.AttributeInferenceError( + target=self._instance, attribute="__mro__" + ) + + mro = self._instance.mro() + obj = node_classes.Tuple(parent=self._instance) + obj.postinit(mro) + return obj + + @property + def attr_mro(self): + if not self._instance.newstyle: + raise exceptions.AttributeInferenceError( + target=self._instance, attribute="mro" + ) + + # pylint: disable=import-outside-toplevel; circular import + from astroid import bases + + other_self = self + + # Cls.mro is a method and we need to return one in order to have a proper inference. + # The method we're returning is capable of inferring the underlying MRO though. + class MroBoundMethod(bases.BoundMethod): + def infer_call_result(self, caller, context=None): + yield other_self.attr___mro__ + + implicit_metaclass = self._instance.implicit_metaclass() + mro_method = implicit_metaclass.locals["mro"][0] + return MroBoundMethod(proxy=mro_method, bound=implicit_metaclass) + + @property + def attr___bases__(self): + obj = node_classes.Tuple() + context = contextmod.InferenceContext() + elts = list(self._instance._inferred_bases(context)) + obj.postinit(elts=elts) + return obj + + @property + def attr___class__(self): + # pylint: disable=import-outside-toplevel; circular import + from astroid import helpers + + return helpers.object_type(self._instance) + + @property + def attr___subclasses__(self): + """Get the subclasses of the underlying class + + This looks only in the current module for retrieving the subclasses, + thus it might miss a couple of them. + """ + # pylint: disable=import-outside-toplevel; circular import + from astroid import bases + from astroid import scoped_nodes + + if not self._instance.newstyle: + raise exceptions.AttributeInferenceError( + target=self._instance, attribute="__subclasses__" + ) + + qname = self._instance.qname() + root = self._instance.root() + classes = [ + cls + for cls in root.nodes_of_class(scoped_nodes.ClassDef) + if cls != self._instance and cls.is_subtype_of(qname) + ] + + obj = node_classes.List(parent=self._instance) + obj.postinit(classes) + + class SubclassesBoundMethod(bases.BoundMethod): + def infer_call_result(self, caller, context=None): + yield obj + + implicit_metaclass = self._instance.implicit_metaclass() + subclasses_method = implicit_metaclass.locals["__subclasses__"][0] + return SubclassesBoundMethod(proxy=subclasses_method, bound=implicit_metaclass) + + @property + def attr___dict__(self): + return node_classes.Dict(parent=self._instance) + + +class SuperModel(ObjectModel): + @property + def attr___thisclass__(self): + return self._instance.mro_pointer + + @property + def attr___self_class__(self): + return self._instance._self_class + + @property + def attr___self__(self): + return self._instance.type + + @property + def attr___class__(self): + return self._instance._proxied + + +class UnboundMethodModel(ObjectModel): + @property + def attr___class__(self): + # pylint: disable=import-outside-toplevel; circular import + from astroid import helpers + + return helpers.object_type(self._instance) + + @property + def attr___func__(self): + return self._instance._proxied + + @property + def attr___self__(self): + return node_classes.Const(value=None, parent=self._instance) + + attr_im_func = attr___func__ + attr_im_class = attr___class__ + attr_im_self = attr___self__ + + +class BoundMethodModel(FunctionModel): + @property + def attr___func__(self): + return self._instance._proxied._proxied + + @property + def attr___self__(self): + return self._instance.bound + + +class GeneratorModel(FunctionModel): + def __new__(cls, *args, **kwargs): + # Append the values from the GeneratorType unto this object. + ret = super(GeneratorModel, cls).__new__(cls, *args, **kwargs) + generator = astroid.MANAGER.builtins_module["generator"] + for name, values in generator.locals.items(): + method = values[0] + patched = lambda cls, meth=method: meth + + setattr(type(ret), IMPL_PREFIX + name, property(patched)) + + return ret + + @property + def attr___name__(self): + return node_classes.Const( + value=self._instance.parent.name, parent=self._instance + ) + + @property + def attr___doc__(self): + return node_classes.Const( + value=self._instance.parent.doc, parent=self._instance + ) + + +class AsyncGeneratorModel(GeneratorModel): + def __new__(cls, *args, **kwargs): + # Append the values from the AGeneratorType unto this object. + ret = super().__new__(cls, *args, **kwargs) + astroid_builtins = astroid.MANAGER.builtins_module + generator = astroid_builtins.get("async_generator") + if generator is None: + # Make it backward compatible. + generator = astroid_builtins.get("generator") + + for name, values in generator.locals.items(): + method = values[0] + patched = lambda cls, meth=method: meth + + setattr(type(ret), IMPL_PREFIX + name, property(patched)) + + return ret + + +class InstanceModel(ObjectModel): + @property + def attr___class__(self): + return self._instance._proxied + + @property + def attr___module__(self): + return node_classes.Const(self._instance.root().qname()) + + @property + def attr___doc__(self): + return node_classes.Const(self._instance.doc) + + @property + def attr___dict__(self): + return _dunder_dict(self._instance, self._instance.instance_attrs) + + +# Exception instances + + +class ExceptionInstanceModel(InstanceModel): + @property + def attr_args(self): + message = node_classes.Const("") + args = node_classes.Tuple(parent=self._instance) + args.postinit((message,)) + return args + + @property + def attr___traceback__(self): + builtins_ast_module = astroid.MANAGER.builtins_module + traceback_type = builtins_ast_module[types.TracebackType.__name__] + return traceback_type.instantiate_class() + + +class SyntaxErrorInstanceModel(ExceptionInstanceModel): + @property + def attr_text(self): + return node_classes.Const("") + + +class OSErrorInstanceModel(ExceptionInstanceModel): + @property + def attr_filename(self): + return node_classes.Const("") + + @property + def attr_errno(self): + return node_classes.Const(0) + + @property + def attr_strerror(self): + return node_classes.Const("") + + attr_filename2 = attr_filename + + +class ImportErrorInstanceModel(ExceptionInstanceModel): + @property + def attr_name(self): + return node_classes.Const("") + + @property + def attr_path(self): + return node_classes.Const("") + + +BUILTIN_EXCEPTIONS = { + "builtins.SyntaxError": SyntaxErrorInstanceModel, + "builtins.ImportError": ImportErrorInstanceModel, + # These are all similar to OSError in terms of attributes + "builtins.OSError": OSErrorInstanceModel, + "builtins.BlockingIOError": OSErrorInstanceModel, + "builtins.BrokenPipeError": OSErrorInstanceModel, + "builtins.ChildProcessError": OSErrorInstanceModel, + "builtins.ConnectionAbortedError": OSErrorInstanceModel, + "builtins.ConnectionError": OSErrorInstanceModel, + "builtins.ConnectionRefusedError": OSErrorInstanceModel, + "builtins.ConnectionResetError": OSErrorInstanceModel, + "builtins.FileExistsError": OSErrorInstanceModel, + "builtins.FileNotFoundError": OSErrorInstanceModel, + "builtins.InterruptedError": OSErrorInstanceModel, + "builtins.IsADirectoryError": OSErrorInstanceModel, + "builtins.NotADirectoryError": OSErrorInstanceModel, + "builtins.PermissionError": OSErrorInstanceModel, + "builtins.ProcessLookupError": OSErrorInstanceModel, + "builtins.TimeoutError": OSErrorInstanceModel, +} + + +class DictModel(ObjectModel): + @property + def attr___class__(self): + return self._instance._proxied + + def _generic_dict_attribute(self, obj, name): + """Generate a bound method that can infer the given *obj*.""" + + class DictMethodBoundMethod(astroid.BoundMethod): + def infer_call_result(self, caller, context=None): + yield obj + + meth = next(self._instance._proxied.igetattr(name)) + return DictMethodBoundMethod(proxy=meth, bound=self._instance) + + @property + def attr_items(self): + elems = [] + obj = node_classes.List(parent=self._instance) + for key, value in self._instance.items: + elem = node_classes.Tuple(parent=obj) + elem.postinit((key, value)) + elems.append(elem) + obj.postinit(elts=elems) + + # pylint: disable=import-outside-toplevel; circular import + from astroid import objects + + obj = objects.DictItems(obj) + return self._generic_dict_attribute(obj, "items") + + @property + def attr_keys(self): + keys = [key for (key, _) in self._instance.items] + obj = node_classes.List(parent=self._instance) + obj.postinit(elts=keys) + + # pylint: disable=import-outside-toplevel; circular import + from astroid import objects + + obj = objects.DictKeys(obj) + return self._generic_dict_attribute(obj, "keys") + + @property + def attr_values(self): + + values = [value for (_, value) in self._instance.items] + obj = node_classes.List(parent=self._instance) + obj.postinit(values) + + # pylint: disable=import-outside-toplevel; circular import + from astroid import objects + + obj = objects.DictValues(obj) + return self._generic_dict_attribute(obj, "values") + + +class PropertyModel(ObjectModel): + """Model for a builtin property""" + + # pylint: disable=import-outside-toplevel + def _init_function(self, name): + from astroid.node_classes import Arguments + from astroid.scoped_nodes import FunctionDef + + args = Arguments() + args.postinit( + args=[], + defaults=[], + kwonlyargs=[], + kw_defaults=[], + annotations=[], + posonlyargs=[], + posonlyargs_annotations=[], + kwonlyargs_annotations=[], + ) + + function = FunctionDef(name=name, parent=self._instance) + + function.postinit(args=args, body=[]) + return function + + @property + def attr_fget(self): + from astroid.scoped_nodes import FunctionDef + + func = self._instance + + class PropertyFuncAccessor(FunctionDef): + def infer_call_result(self, caller=None, context=None): + nonlocal func + if caller and len(caller.args) != 1: + raise exceptions.InferenceError( + "fget() needs a single argument", target=self, context=context + ) + + yield from func.function.infer_call_result( + caller=caller, context=context + ) + + property_accessor = PropertyFuncAccessor(name="fget", parent=self._instance) + property_accessor.postinit(args=func.args, body=func.body) + return property_accessor + + @property + def attr_setter(self): + return self._init_function("setter") + + @property + def attr_deleter(self): + return self._init_function("deleter") + + @property + def attr_getter(self): + return self._init_function("getter") + + # pylint: enable=import-outside-toplevel diff --git a/WebCrawler/venv/Lib/site-packages/astroid/manager.py b/WebCrawler/venv/Lib/site-packages/astroid/manager.py new file mode 100644 index 0000000..82208ad --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/manager.py @@ -0,0 +1,350 @@ +# Copyright (c) 2006-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014-2019 Claudiu Popa +# Copyright (c) 2014 BioGeek +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2017 Iva Miholic +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2019 Raphael Gaschignard +# Copyright (c) 2020 Anubhav <35621759+anubh-v@users.noreply.github.com> +# Copyright (c) 2020 Ashley Whetter + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""astroid manager: avoid multiple astroid build of a same module when +possible by providing a class responsible to get astroid representation +from various source and using a cache of built modules) +""" + +import os +import zipimport + +from astroid import exceptions +from astroid.interpreter._import import spec +from astroid import modutils +from astroid import transforms + + +ZIP_IMPORT_EXTS = (".zip", ".egg", ".whl") + + +def safe_repr(obj): + try: + return repr(obj) + except Exception: # pylint: disable=broad-except + return "???" + + +class AstroidManager: + """the astroid manager, responsible to build astroid from files + or modules. + + Use the Borg pattern. + """ + + name = "astroid loader" + brain = {} + + def __init__(self): + self.__dict__ = AstroidManager.brain + if not self.__dict__: + # NOTE: cache entries are added by the [re]builder + self.astroid_cache = {} + self._mod_file_cache = {} + self._failed_import_hooks = [] + self.always_load_extensions = False + self.optimize_ast = False + self.extension_package_whitelist = set() + self._transform = transforms.TransformVisitor() + + # Export these APIs for convenience + self.register_transform = self._transform.register_transform + self.unregister_transform = self._transform.unregister_transform + self.max_inferable_values = 100 + + @property + def builtins_module(self): + return self.astroid_cache["builtins"] + + def visit_transforms(self, node): + """Visit the transforms and apply them to the given *node*.""" + return self._transform.visit(node) + + def ast_from_file(self, filepath, modname=None, fallback=True, source=False): + """given a module name, return the astroid object""" + try: + filepath = modutils.get_source_file(filepath, include_no_ext=True) + source = True + except modutils.NoSourceFile: + pass + if modname is None: + try: + modname = ".".join(modutils.modpath_from_file(filepath)) + except ImportError: + modname = filepath + if ( + modname in self.astroid_cache + and self.astroid_cache[modname].file == filepath + ): + return self.astroid_cache[modname] + if source: + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import AstroidBuilder + + return AstroidBuilder(self).file_build(filepath, modname) + if fallback and modname: + return self.ast_from_module_name(modname) + raise exceptions.AstroidBuildingError( + "Unable to build an AST for {path}.", path=filepath + ) + + def ast_from_string(self, data, modname="", filepath=None): + """ Given some source code as a string, return its corresponding astroid object""" + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import AstroidBuilder + + return AstroidBuilder(self).string_build(data, modname, filepath) + + def _build_stub_module(self, modname): + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import AstroidBuilder + + return AstroidBuilder(self).string_build("", modname) + + def _build_namespace_module(self, modname, path): + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import build_namespace_package_module + + return build_namespace_package_module(modname, path) + + def _can_load_extension(self, modname): + if self.always_load_extensions: + return True + if modutils.is_standard_module(modname): + return True + parts = modname.split(".") + return any( + ".".join(parts[:x]) in self.extension_package_whitelist + for x in range(1, len(parts) + 1) + ) + + def ast_from_module_name(self, modname, context_file=None): + """given a module name, return the astroid object""" + if modname in self.astroid_cache: + return self.astroid_cache[modname] + if modname == "__main__": + return self._build_stub_module(modname) + if context_file: + old_cwd = os.getcwd() + os.chdir(os.path.dirname(context_file)) + try: + found_spec = self.file_from_module_name(modname, context_file) + if found_spec.type == spec.ModuleType.PY_ZIPMODULE: + module = self.zip_import_data(found_spec.location) + if module is not None: + return module + + elif found_spec.type in ( + spec.ModuleType.C_BUILTIN, + spec.ModuleType.C_EXTENSION, + ): + if ( + found_spec.type == spec.ModuleType.C_EXTENSION + and not self._can_load_extension(modname) + ): + return self._build_stub_module(modname) + try: + module = modutils.load_module_from_name(modname) + except Exception as ex: + raise exceptions.AstroidImportError( + "Loading {modname} failed with:\n{error}", + modname=modname, + path=found_spec.location, + ) from ex + return self.ast_from_module(module, modname) + + elif found_spec.type == spec.ModuleType.PY_COMPILED: + raise exceptions.AstroidImportError( + "Unable to load compiled module {modname}.", + modname=modname, + path=found_spec.location, + ) + + elif found_spec.type == spec.ModuleType.PY_NAMESPACE: + return self._build_namespace_module( + modname, found_spec.submodule_search_locations + ) + elif found_spec.type == spec.ModuleType.PY_FROZEN: + return self._build_stub_module(modname) + + if found_spec.location is None: + raise exceptions.AstroidImportError( + "Can't find a file for module {modname}.", modname=modname + ) + + return self.ast_from_file(found_spec.location, modname, fallback=False) + except exceptions.AstroidBuildingError as e: + for hook in self._failed_import_hooks: + try: + return hook(modname) + except exceptions.AstroidBuildingError: + pass + raise e + finally: + if context_file: + os.chdir(old_cwd) + + def zip_import_data(self, filepath): + if zipimport is None: + return None + + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import AstroidBuilder + + builder = AstroidBuilder(self) + for ext in ZIP_IMPORT_EXTS: + try: + eggpath, resource = filepath.rsplit(ext + os.path.sep, 1) + except ValueError: + continue + try: + importer = zipimport.zipimporter(eggpath + ext) + zmodname = resource.replace(os.path.sep, ".") + if importer.is_package(resource): + zmodname = zmodname + ".__init__" + module = builder.string_build( + importer.get_source(resource), zmodname, filepath + ) + return module + except Exception: # pylint: disable=broad-except + continue + return None + + def file_from_module_name(self, modname, contextfile): + try: + value = self._mod_file_cache[(modname, contextfile)] + except KeyError: + try: + value = modutils.file_info_from_modpath( + modname.split("."), context_file=contextfile + ) + except ImportError as ex: + value = exceptions.AstroidImportError( + "Failed to import module {modname} with error:\n{error}.", + modname=modname, + error=ex, + ) + self._mod_file_cache[(modname, contextfile)] = value + if isinstance(value, exceptions.AstroidBuildingError): + raise value + return value + + def ast_from_module(self, module, modname=None): + """given an imported module, return the astroid object""" + modname = modname or module.__name__ + if modname in self.astroid_cache: + return self.astroid_cache[modname] + try: + # some builtin modules don't have __file__ attribute + filepath = module.__file__ + if modutils.is_python_source(filepath): + return self.ast_from_file(filepath, modname) + except AttributeError: + pass + + # pylint: disable=import-outside-toplevel; circular import + from astroid.builder import AstroidBuilder + + return AstroidBuilder(self).module_build(module, modname) + + def ast_from_class(self, klass, modname=None): + """get astroid for the given class""" + if modname is None: + try: + modname = klass.__module__ + except AttributeError as exc: + raise exceptions.AstroidBuildingError( + "Unable to get module for class {class_name}.", + cls=klass, + class_repr=safe_repr(klass), + modname=modname, + ) from exc + modastroid = self.ast_from_module_name(modname) + return modastroid.getattr(klass.__name__)[0] # XXX + + def infer_ast_from_something(self, obj, context=None): + """infer astroid for the given class""" + if hasattr(obj, "__class__") and not isinstance(obj, type): + klass = obj.__class__ + else: + klass = obj + try: + modname = klass.__module__ + except AttributeError as exc: + raise exceptions.AstroidBuildingError( + "Unable to get module for {class_repr}.", + cls=klass, + class_repr=safe_repr(klass), + ) from exc + except Exception as exc: + raise exceptions.AstroidImportError( + "Unexpected error while retrieving module for {class_repr}:\n" + "{error}", + cls=klass, + class_repr=safe_repr(klass), + ) from exc + try: + name = klass.__name__ + except AttributeError as exc: + raise exceptions.AstroidBuildingError( + "Unable to get name for {class_repr}:\n", + cls=klass, + class_repr=safe_repr(klass), + ) from exc + except Exception as exc: + raise exceptions.AstroidImportError( + "Unexpected error while retrieving name for {class_repr}:\n" "{error}", + cls=klass, + class_repr=safe_repr(klass), + ) from exc + # take care, on living object __module__ is regularly wrong :( + modastroid = self.ast_from_module_name(modname) + if klass is obj: + for inferred in modastroid.igetattr(name, context): + yield inferred + else: + for inferred in modastroid.igetattr(name, context): + yield inferred.instantiate_class() + + def register_failed_import_hook(self, hook): + """Registers a hook to resolve imports that cannot be found otherwise. + + `hook` must be a function that accepts a single argument `modname` which + contains the name of the module or package that could not be imported. + If `hook` can resolve the import, must return a node of type `astroid.Module`, + otherwise, it must raise `AstroidBuildingError`. + """ + self._failed_import_hooks.append(hook) + + def cache_module(self, module): + """Cache a module if no module with the same name is known yet.""" + self.astroid_cache.setdefault(module.name, module) + + def bootstrap(self): + """Bootstrap the required AST modules needed for the manager to work + + The bootstrap usually involves building the AST for the builtins + module, which is required by the rest of astroid to work correctly. + """ + from astroid import raw_building # pylint: disable=import-outside-toplevel + + raw_building._astroid_bootstrapping() + + def clear_cache(self): + """Clear the underlying cache. Also bootstraps the builtins module.""" + self.astroid_cache.clear() + self.bootstrap() diff --git a/WebCrawler/venv/Lib/site-packages/astroid/mixins.py b/WebCrawler/venv/Lib/site-packages/astroid/mixins.py new file mode 100644 index 0000000..497a840 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/mixins.py @@ -0,0 +1,160 @@ +# Copyright (c) 2010-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014-2016, 2018 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2018 Nick Drozd + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""This module contains some mixins for the different nodes. +""" +import itertools + +from astroid import decorators +from astroid import exceptions + + +class BlockRangeMixIn: + """override block range """ + + @decorators.cachedproperty + def blockstart_tolineno(self): + return self.lineno + + def _elsed_block_range(self, lineno, orelse, last=None): + """handle block line numbers range for try/finally, for, if and while + statements + """ + if lineno == self.fromlineno: + return lineno, lineno + if orelse: + if lineno >= orelse[0].fromlineno: + return lineno, orelse[-1].tolineno + return lineno, orelse[0].fromlineno - 1 + return lineno, last or self.tolineno + + +class FilterStmtsMixin: + """Mixin for statement filtering and assignment type""" + + def _get_filtered_stmts(self, _, node, _stmts, mystmt): + """method used in _filter_stmts to get statements and trigger break""" + if self.statement() is mystmt: + # original node's statement is the assignment, only keep + # current node (gen exp, list comp) + return [node], True + return _stmts, False + + def assign_type(self): + return self + + +class AssignTypeMixin: + def assign_type(self): + return self + + def _get_filtered_stmts(self, lookup_node, node, _stmts, mystmt): + """method used in filter_stmts""" + if self is mystmt: + return _stmts, True + if self.statement() is mystmt: + # original node's statement is the assignment, only keep + # current node (gen exp, list comp) + return [node], True + return _stmts, False + + +class ParentAssignTypeMixin(AssignTypeMixin): + def assign_type(self): + return self.parent.assign_type() + + +class ImportFromMixin(FilterStmtsMixin): + """MixIn for From and Import Nodes""" + + def _infer_name(self, frame, name): + return name + + def do_import_module(self, modname=None): + """return the ast for a module whose name is imported by + """ + # handle special case where we are on a package node importing a module + # using the same name as the package, which may end in an infinite loop + # on relative imports + # XXX: no more needed ? + mymodule = self.root() + level = getattr(self, "level", None) # Import as no level + if modname is None: + modname = self.modname + # XXX we should investigate deeper if we really want to check + # importing itself: modname and mymodule.name be relative or absolute + if mymodule.relative_to_absolute_name(modname, level) == mymodule.name: + # FIXME: we used to raise InferenceError here, but why ? + return mymodule + + return mymodule.import_module( + modname, level=level, relative_only=level and level >= 1 + ) + + def real_name(self, asname): + """get name from 'as' name""" + for name, _asname in self.names: + if name == "*": + return asname + if not _asname: + name = name.split(".", 1)[0] + _asname = name + if asname == _asname: + return name + raise exceptions.AttributeInferenceError( + "Could not find original name for {attribute} in {target!r}", + target=self, + attribute=asname, + ) + + +class MultiLineBlockMixin: + """Mixin for nodes with multi-line blocks, e.g. For and FunctionDef. + Note that this does not apply to every node with a `body` field. + For instance, an If node has a multi-line body, but the body of an + IfExpr is not multi-line, and hence cannot contain Return nodes, + Assign nodes, etc. + """ + + @decorators.cachedproperty + def _multi_line_blocks(self): + return tuple(getattr(self, field) for field in self._multi_line_block_fields) + + def _get_return_nodes_skip_functions(self): + for block in self._multi_line_blocks: + for child_node in block: + if child_node.is_function: + continue + yield from child_node._get_return_nodes_skip_functions() + + def _get_yield_nodes_skip_lambdas(self): + for block in self._multi_line_blocks: + for child_node in block: + if child_node.is_lambda: + continue + yield from child_node._get_yield_nodes_skip_lambdas() + + @decorators.cached + def _get_assign_nodes(self): + children_assign_nodes = ( + child_node._get_assign_nodes() + for block in self._multi_line_blocks + for child_node in block + ) + return list(itertools.chain.from_iterable(children_assign_nodes)) + + +class NoChildrenMixin: + """Mixin for nodes with no children, e.g. Pass.""" + + def get_children(self): + yield from () diff --git a/WebCrawler/venv/Lib/site-packages/astroid/modutils.py b/WebCrawler/venv/Lib/site-packages/astroid/modutils.py new file mode 100644 index 0000000..4e6ed86 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/modutils.py @@ -0,0 +1,690 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2014-2018, 2020 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Denis Laxalde +# Copyright (c) 2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2015 Radosław Ganczarek +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2016 Ceridwen +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Mario Corchero +# Copyright (c) 2018 Mario Corchero +# Copyright (c) 2018 Anthony Sottile +# Copyright (c) 2019 Hugo van Kemenade +# Copyright (c) 2019 markmcclain +# Copyright (c) 2019 BasPH + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Python modules manipulation utility functions. + +:type PY_SOURCE_EXTS: tuple(str) +:var PY_SOURCE_EXTS: list of possible python source file extension + +:type STD_LIB_DIRS: set of str +:var STD_LIB_DIRS: directories where standard modules are located + +:type BUILTIN_MODULES: dict +:var BUILTIN_MODULES: dictionary with builtin module names has key +""" +import imp +import os +import platform +import sys +import itertools +from distutils.sysconfig import get_python_lib # pylint: disable=import-error + +# pylint: disable=import-error, no-name-in-module +from distutils.errors import DistutilsPlatformError + +# distutils is replaced by virtualenv with a module that does +# weird path manipulations in order to get to the +# real distutils module. +from typing import Optional, List + +from .interpreter._import import spec +from .interpreter._import import util + +if sys.platform.startswith("win"): + PY_SOURCE_EXTS = ("py", "pyw") + PY_COMPILED_EXTS = ("dll", "pyd") +else: + PY_SOURCE_EXTS = ("py",) + PY_COMPILED_EXTS = ("so",) + + +try: + # The explicit sys.prefix is to work around a patch in virtualenv that + # replaces the 'real' sys.prefix (i.e. the location of the binary) + # with the prefix from which the virtualenv was created. This throws + # off the detection logic for standard library modules, thus the + # workaround. + STD_LIB_DIRS = { + get_python_lib(standard_lib=True, prefix=sys.prefix), + # Take care of installations where exec_prefix != prefix. + get_python_lib(standard_lib=True, prefix=sys.exec_prefix), + get_python_lib(standard_lib=True), + } +# get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to +# non-valid path, see https://bugs.pypy.org/issue1164 +except DistutilsPlatformError: + STD_LIB_DIRS = set() + +if os.name == "nt": + STD_LIB_DIRS.add(os.path.join(sys.prefix, "dlls")) + try: + # real_prefix is defined when running inside virtual environments, + # created with the **virtualenv** library. + STD_LIB_DIRS.add(os.path.join(sys.real_prefix, "dlls")) + except AttributeError: + # sys.base_exec_prefix is always defined, but in a virtual environment + # created with the stdlib **venv** module, it points to the original + # installation, if the virtual env is activated. + try: + STD_LIB_DIRS.add(os.path.join(sys.base_exec_prefix, "dlls")) + except AttributeError: + pass + +if platform.python_implementation() == "PyPy": + _root = os.path.join(sys.prefix, "lib_pypy") + STD_LIB_DIRS.add(_root) + try: + # real_prefix is defined when running inside virtualenv. + STD_LIB_DIRS.add(os.path.join(sys.real_prefix, "lib_pypy")) + except AttributeError: + pass + del _root +if os.name == "posix": + # Need the real prefix is we're under a virtualenv, otherwise + # the usual one will do. + try: + prefix = sys.real_prefix + except AttributeError: + prefix = sys.prefix + + def _posix_path(path): + base_python = "python%d.%d" % sys.version_info[:2] + return os.path.join(prefix, path, base_python) + + STD_LIB_DIRS.add(_posix_path("lib")) + if sys.maxsize > 2 ** 32: + # This tries to fix a problem with /usr/lib64 builds, + # where systems are running both 32-bit and 64-bit code + # on the same machine, which reflects into the places where + # standard library could be found. More details can be found + # here http://bugs.python.org/issue1294959. + # An easy reproducing case would be + # https://github.com/PyCQA/pylint/issues/712#issuecomment-163178753 + STD_LIB_DIRS.add(_posix_path("lib64")) + +EXT_LIB_DIRS = {get_python_lib(), get_python_lib(True)} +IS_JYTHON = platform.python_implementation() == "Jython" +BUILTIN_MODULES = dict.fromkeys(sys.builtin_module_names, True) + + +class NoSourceFile(Exception): + """exception raised when we are not able to get a python + source file for a precompiled file + """ + + +def _normalize_path(path): + return os.path.normcase(os.path.abspath(path)) + + +def _canonicalize_path(path): + return os.path.realpath(os.path.expanduser(path)) + + +def _path_from_filename(filename, is_jython=IS_JYTHON): + if not is_jython: + return filename + head, has_pyclass, _ = filename.partition("$py.class") + if has_pyclass: + return head + ".py" + return filename + + +def _handle_blacklist(blacklist, dirnames, filenames): + """remove files/directories in the black list + + dirnames/filenames are usually from os.walk + """ + for norecurs in blacklist: + if norecurs in dirnames: + dirnames.remove(norecurs) + elif norecurs in filenames: + filenames.remove(norecurs) + + +_NORM_PATH_CACHE = {} + + +def _cache_normalize_path(path): + """abspath with caching""" + # _module_file calls abspath on every path in sys.path every time it's + # called; on a larger codebase this easily adds up to half a second just + # assembling path components. This cache alleviates that. + try: + return _NORM_PATH_CACHE[path] + except KeyError: + if not path: # don't cache result for '' + return _normalize_path(path) + result = _NORM_PATH_CACHE[path] = _normalize_path(path) + return result + + +def load_module_from_name(dotted_name, path=None, use_sys=True): + """Load a Python module from its name. + + :type dotted_name: str + :param dotted_name: python name of a module or package + + :type path: list or None + :param path: + optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :type use_sys: bool + :param use_sys: + boolean indicating whether the sys.modules dictionary should be + used or not + + + :raise ImportError: if the module or package is not found + + :rtype: module + :return: the loaded module + """ + return load_module_from_modpath(dotted_name.split("."), path, use_sys) + + +def load_module_from_modpath(parts, path: Optional[List[str]] = None, use_sys=1): + """Load a python module from its split name. + + :type parts: list(str) or tuple(str) + :param parts: + python name of a module or package split on '.' + + :param path: + Optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :type use_sys: bool + :param use_sys: + boolean indicating whether the sys.modules dictionary should be used or not + + :raise ImportError: if the module or package is not found + + :rtype: module + :return: the loaded module + """ + if use_sys: + try: + return sys.modules[".".join(parts)] + except KeyError: + pass + modpath = [] + prevmodule = None + for part in parts: + modpath.append(part) + curname = ".".join(modpath) + module = None + if len(modpath) != len(parts): + # even with use_sys=False, should try to get outer packages from sys.modules + module = sys.modules.get(curname) + elif use_sys: + # because it may have been indirectly loaded through a parent + module = sys.modules.get(curname) + if module is None: + mp_file, mp_filename, mp_desc = imp.find_module(part, path) + module = imp.load_module(curname, mp_file, mp_filename, mp_desc) + # mp_file still needs to be closed. + if mp_file: + mp_file.close() + if prevmodule: + setattr(prevmodule, part, module) + _file = getattr(module, "__file__", "") + prevmodule = module + if not _file and util.is_namespace(curname): + continue + if not _file and len(modpath) != len(parts): + raise ImportError("no module in %s" % ".".join(parts[len(modpath) :])) + path = [os.path.dirname(_file)] + return module + + +def load_module_from_file( + filepath: str, path: Optional[List[str]] = None, use_sys=True +): + """Load a Python module from it's path. + + :type filepath: str + :param filepath: path to the python module or package + + :param Optional[List[str]] path: + Optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :type use_sys: bool + :param use_sys: + boolean indicating whether the sys.modules dictionary should be + used or not + + :raise ImportError: if the module or package is not found + + :rtype: module + :return: the loaded module + """ + modpath = modpath_from_file(filepath) + return load_module_from_modpath(modpath, path, use_sys) + + +def check_modpath_has_init(path, mod_path): + """check there are some __init__.py all along the way""" + modpath = [] + for part in mod_path: + modpath.append(part) + path = os.path.join(path, part) + if not _has_init(path): + old_namespace = util.is_namespace(".".join(modpath)) + if not old_namespace: + return False + return True + + +def _get_relative_base_path(filename, path_to_check): + """Extracts the relative mod path of the file to import from + + Check if a file is within the passed in path and if so, returns the + relative mod path from the one passed in. + + If the filename is no in path_to_check, returns None + + Note this function will look for both abs and realpath of the file, + this allows to find the relative base path even if the file is a + symlink of a file in the passed in path + + Examples: + _get_relative_base_path("/a/b/c/d.py", "/a/b") -> ["c","d"] + _get_relative_base_path("/a/b/c/d.py", "/dev") -> None + """ + importable_path = None + path_to_check = os.path.normcase(path_to_check) + abs_filename = os.path.abspath(filename) + if os.path.normcase(abs_filename).startswith(path_to_check): + importable_path = abs_filename + + real_filename = os.path.realpath(filename) + if os.path.normcase(real_filename).startswith(path_to_check): + importable_path = real_filename + + if importable_path: + base_path = os.path.splitext(importable_path)[0] + relative_base_path = base_path[len(path_to_check) :] + return [pkg for pkg in relative_base_path.split(os.sep) if pkg] + + return None + + +def modpath_from_file_with_callback(filename, path=None, is_package_cb=None): + filename = os.path.expanduser(_path_from_filename(filename)) + for pathname in itertools.chain( + path or [], map(_canonicalize_path, sys.path), sys.path + ): + pathname = _cache_normalize_path(pathname) + if not pathname: + continue + modpath = _get_relative_base_path(filename, pathname) + if not modpath: + continue + if is_package_cb(pathname, modpath[:-1]): + return modpath + + raise ImportError( + "Unable to find module for %s in %s" % (filename, ", \n".join(sys.path)) + ) + + +def modpath_from_file(filename, path=None): + """Get the corresponding split module's name from a filename + + This function will return the name of a module or package split on `.`. + + :type filename: str + :param filename: file's path for which we want the module's name + + :type Optional[List[str]] path: + Optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :raise ImportError: + if the corresponding module's name has not been found + + :rtype: list(str) + :return: the corresponding split module's name + """ + return modpath_from_file_with_callback(filename, path, check_modpath_has_init) + + +def file_from_modpath(modpath, path=None, context_file=None): + return file_info_from_modpath(modpath, path, context_file).location + + +def file_info_from_modpath(modpath, path=None, context_file=None): + """given a mod path (i.e. split module / package name), return the + corresponding file, giving priority to source file over precompiled + file if it exists + + :type modpath: list or tuple + :param modpath: + split module's name (i.e name of a module or package split + on '.') + (this means explicit relative imports that start with dots have + empty strings in this list!) + + :type path: list or None + :param path: + optional list of path where the module or package should be + searched (use sys.path if nothing or None is given) + + :type context_file: str or None + :param context_file: + context file to consider, necessary if the identifier has been + introduced using a relative import unresolvable in the actual + context (i.e. modutils) + + :raise ImportError: if there is no such module in the directory + + :rtype: (str or None, import type) + :return: + the path to the module's file or None if it's an integrated + builtin module such as 'sys' + """ + if context_file is not None: + context = os.path.dirname(context_file) + else: + context = context_file + if modpath[0] == "xml": + # handle _xmlplus + try: + return _spec_from_modpath(["_xmlplus"] + modpath[1:], path, context) + except ImportError: + return _spec_from_modpath(modpath, path, context) + elif modpath == ["os", "path"]: + # FIXME: currently ignoring search_path... + return spec.ModuleSpec( + name="os.path", location=os.path.__file__, module_type=imp.PY_SOURCE + ) + return _spec_from_modpath(modpath, path, context) + + +def get_module_part(dotted_name, context_file=None): + """given a dotted name return the module part of the name : + + >>> get_module_part('astroid.as_string.dump') + 'astroid.as_string' + + :type dotted_name: str + :param dotted_name: full name of the identifier we are interested in + + :type context_file: str or None + :param context_file: + context file to consider, necessary if the identifier has been + introduced using a relative import unresolvable in the actual + context (i.e. modutils) + + + :raise ImportError: if there is no such module in the directory + + :rtype: str or None + :return: + the module part of the name or None if we have not been able at + all to import the given name + + XXX: deprecated, since it doesn't handle package precedence over module + (see #10066) + """ + # os.path trick + if dotted_name.startswith("os.path"): + return "os.path" + parts = dotted_name.split(".") + if context_file is not None: + # first check for builtin module which won't be considered latter + # in that case (path != None) + if parts[0] in BUILTIN_MODULES: + if len(parts) > 2: + raise ImportError(dotted_name) + return parts[0] + # don't use += or insert, we want a new list to be created ! + path = None + starti = 0 + if parts[0] == "": + assert ( + context_file is not None + ), "explicit relative import, but no context_file?" + path = [] # prevent resolving the import non-relatively + starti = 1 + while parts[starti] == "": # for all further dots: change context + starti += 1 + context_file = os.path.dirname(context_file) + for i in range(starti, len(parts)): + try: + file_from_modpath( + parts[starti : i + 1], path=path, context_file=context_file + ) + except ImportError: + if i < max(1, len(parts) - 2): + raise + return ".".join(parts[:i]) + return dotted_name + + +def get_module_files(src_directory, blacklist, list_all=False): + """given a package directory return a list of all available python + module's files in the package and its subpackages + + :type src_directory: str + :param src_directory: + path of the directory corresponding to the package + + :type blacklist: list or tuple + :param blacklist: iterable + list of files or directories to ignore. + + :type list_all: bool + :param list_all: + get files from all paths, including ones without __init__.py + + :rtype: list + :return: + the list of all available python module's files in the package and + its subpackages + """ + files = [] + for directory, dirnames, filenames in os.walk(src_directory): + if directory in blacklist: + continue + _handle_blacklist(blacklist, dirnames, filenames) + # check for __init__.py + if not list_all and "__init__.py" not in filenames: + dirnames[:] = () + continue + for filename in filenames: + if _is_python_file(filename): + src = os.path.join(directory, filename) + files.append(src) + return files + + +def get_source_file(filename, include_no_ext=False): + """given a python module's file name return the matching source file + name (the filename will be returned identically if it's already an + absolute path to a python source file...) + + :type filename: str + :param filename: python module's file name + + + :raise NoSourceFile: if no source file exists on the file system + + :rtype: str + :return: the absolute path of the source file if it exists + """ + filename = os.path.abspath(_path_from_filename(filename)) + base, orig_ext = os.path.splitext(filename) + for ext in PY_SOURCE_EXTS: + source_path = "%s.%s" % (base, ext) + if os.path.exists(source_path): + return source_path + if include_no_ext and not orig_ext and os.path.exists(base): + return base + raise NoSourceFile(filename) + + +def is_python_source(filename): + """ + rtype: bool + return: True if the filename is a python source file + """ + return os.path.splitext(filename)[1][1:] in PY_SOURCE_EXTS + + +def is_standard_module(modname, std_path=None): + """try to guess if a module is a standard python module (by default, + see `std_path` parameter's description) + + :type modname: str + :param modname: name of the module we are interested in + + :type std_path: list(str) or tuple(str) + :param std_path: list of path considered has standard + + + :rtype: bool + :return: + true if the module: + - is located on the path listed in one of the directory in `std_path` + - is a built-in module + """ + modname = modname.split(".")[0] + try: + filename = file_from_modpath([modname]) + except ImportError: + # import failed, i'm probably not so wrong by supposing it's + # not standard... + return False + # modules which are not living in a file are considered standard + # (sys and __builtin__ for instance) + if filename is None: + # we assume there are no namespaces in stdlib + return not util.is_namespace(modname) + filename = _normalize_path(filename) + for path in EXT_LIB_DIRS: + if filename.startswith(_cache_normalize_path(path)): + return False + if std_path is None: + std_path = STD_LIB_DIRS + for path in std_path: + if filename.startswith(_cache_normalize_path(path)): + return True + return False + + +def is_relative(modname, from_file): + """return true if the given module name is relative to the given + file name + + :type modname: str + :param modname: name of the module we are interested in + + :type from_file: str + :param from_file: + path of the module from which modname has been imported + + :rtype: bool + :return: + true if the module has been imported relatively to `from_file` + """ + if not os.path.isdir(from_file): + from_file = os.path.dirname(from_file) + if from_file in sys.path: + return False + try: + stream, _, _ = imp.find_module(modname.split(".")[0], [from_file]) + + # Close the stream to avoid ResourceWarnings. + if stream: + stream.close() + return True + except ImportError: + return False + + +# internal only functions ##################################################### + + +def _spec_from_modpath(modpath, path=None, context=None): + """given a mod path (i.e. split module / package name), return the + corresponding spec + + this function is used internally, see `file_from_modpath`'s + documentation for more information + """ + assert modpath + location = None + if context is not None: + try: + found_spec = spec.find_spec(modpath, [context]) + location = found_spec.location + except ImportError: + found_spec = spec.find_spec(modpath, path) + location = found_spec.location + else: + found_spec = spec.find_spec(modpath, path) + if found_spec.type == spec.ModuleType.PY_COMPILED: + try: + location = get_source_file(found_spec.location) + return found_spec._replace( + location=location, type=spec.ModuleType.PY_SOURCE + ) + except NoSourceFile: + return found_spec._replace(location=location) + elif found_spec.type == spec.ModuleType.C_BUILTIN: + # integrated builtin module + return found_spec._replace(location=None) + elif found_spec.type == spec.ModuleType.PKG_DIRECTORY: + location = _has_init(found_spec.location) + return found_spec._replace(location=location, type=spec.ModuleType.PY_SOURCE) + return found_spec + + +def _is_python_file(filename): + """return true if the given filename should be considered as a python file + + .pyc and .pyo are ignored + """ + return filename.endswith((".py", ".so", ".pyd", ".pyw")) + + +def _has_init(directory): + """if the given directory has a valid __init__ file, return its path, + else return None + """ + mod_or_pack = os.path.join(directory, "__init__") + for ext in PY_SOURCE_EXTS + ("pyc", "pyo"): + if os.path.exists(mod_or_pack + "." + ext): + return mod_or_pack + "." + ext + return None + + +def is_namespace(specobj): + return specobj.type == spec.ModuleType.PY_NAMESPACE + + +def is_directory(specobj): + return specobj.type == spec.ModuleType.PKG_DIRECTORY diff --git a/WebCrawler/venv/Lib/site-packages/astroid/node_classes.py b/WebCrawler/venv/Lib/site-packages/astroid/node_classes.py new file mode 100644 index 0000000..621dc5f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/node_classes.py @@ -0,0 +1,4862 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2010 Daniel Harding +# Copyright (c) 2012 FELD Boris +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2016-2017 Derek Gustafson +# Copyright (c) 2016 Jared Garst +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2016 Dave Baum +# Copyright (c) 2017-2020 Ashley Whetter +# Copyright (c) 2017, 2019 Łukasz Rogalski +# Copyright (c) 2017 rr- +# Copyright (c) 2018-2019 hippo91 +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 brendanator +# Copyright (c) 2018 HoverHell +# Copyright (c) 2019 kavins14 +# Copyright (c) 2019 kavins14 + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +# pylint: disable=too-many-lines; https://github.com/PyCQA/astroid/issues/465 + +"""Module for some node classes. More nodes in scoped_nodes.py +""" + +import abc +import builtins as builtins_mod +import itertools +import pprint +import sys +from functools import lru_cache, singledispatch as _singledispatch + +from astroid import as_string +from astroid import bases +from astroid import context as contextmod +from astroid import decorators +from astroid import exceptions +from astroid import manager +from astroid import mixins +from astroid import util + + +BUILTINS = builtins_mod.__name__ +MANAGER = manager.AstroidManager() +PY38 = sys.version_info[:2] >= (3, 8) + + +def _is_const(value): + return isinstance(value, tuple(CONST_CLS)) + + +@decorators.raise_if_nothing_inferred +def unpack_infer(stmt, context=None): + """recursively generate nodes inferred by the given statement. + If the inferred value is a list or a tuple, recurse on the elements + """ + if isinstance(stmt, (List, Tuple)): + for elt in stmt.elts: + if elt is util.Uninferable: + yield elt + continue + yield from unpack_infer(elt, context) + return dict(node=stmt, context=context) + # if inferred is a final node, return it and stop + inferred = next(stmt.infer(context)) + if inferred is stmt: + yield inferred + return dict(node=stmt, context=context) + # else, infer recursively, except Uninferable object that should be returned as is + for inferred in stmt.infer(context): + if inferred is util.Uninferable: + yield inferred + else: + yield from unpack_infer(inferred, context) + + return dict(node=stmt, context=context) + + +def are_exclusive( + stmt1, stmt2, exceptions=None +): # pylint: disable=redefined-outer-name + """return true if the two given statements are mutually exclusive + + `exceptions` may be a list of exception names. If specified, discard If + branches and check one of the statement is in an exception handler catching + one of the given exceptions. + + algorithm : + 1) index stmt1's parents + 2) climb among stmt2's parents until we find a common parent + 3) if the common parent is a If or TryExcept statement, look if nodes are + in exclusive branches + """ + # index stmt1's parents + stmt1_parents = {} + children = {} + node = stmt1.parent + previous = stmt1 + while node: + stmt1_parents[node] = 1 + children[node] = previous + previous = node + node = node.parent + # climb among stmt2's parents until we find a common parent + node = stmt2.parent + previous = stmt2 + while node: + if node in stmt1_parents: + # if the common parent is a If or TryExcept statement, look if + # nodes are in exclusive branches + if isinstance(node, If) and exceptions is None: + if ( + node.locate_child(previous)[1] + is not node.locate_child(children[node])[1] + ): + return True + elif isinstance(node, TryExcept): + c2attr, c2node = node.locate_child(previous) + c1attr, c1node = node.locate_child(children[node]) + if c1node is not c2node: + first_in_body_caught_by_handlers = ( + c2attr == "handlers" + and c1attr == "body" + and previous.catch(exceptions) + ) + second_in_body_caught_by_handlers = ( + c2attr == "body" + and c1attr == "handlers" + and children[node].catch(exceptions) + ) + first_in_else_other_in_handlers = ( + c2attr == "handlers" and c1attr == "orelse" + ) + second_in_else_other_in_handlers = ( + c2attr == "orelse" and c1attr == "handlers" + ) + if any( + ( + first_in_body_caught_by_handlers, + second_in_body_caught_by_handlers, + first_in_else_other_in_handlers, + second_in_else_other_in_handlers, + ) + ): + return True + elif c2attr == "handlers" and c1attr == "handlers": + return previous is not children[node] + return False + previous = node + node = node.parent + return False + + +# getitem() helpers. + +_SLICE_SENTINEL = object() + + +def _slice_value(index, context=None): + """Get the value of the given slice index.""" + + if isinstance(index, Const): + if isinstance(index.value, (int, type(None))): + return index.value + elif index is None: + return None + else: + # Try to infer what the index actually is. + # Since we can't return all the possible values, + # we'll stop at the first possible value. + try: + inferred = next(index.infer(context=context)) + except exceptions.InferenceError: + pass + else: + if isinstance(inferred, Const): + if isinstance(inferred.value, (int, type(None))): + return inferred.value + + # Use a sentinel, because None can be a valid + # value that this function can return, + # as it is the case for unspecified bounds. + return _SLICE_SENTINEL + + +def _infer_slice(node, context=None): + lower = _slice_value(node.lower, context) + upper = _slice_value(node.upper, context) + step = _slice_value(node.step, context) + if all(elem is not _SLICE_SENTINEL for elem in (lower, upper, step)): + return slice(lower, upper, step) + + raise exceptions.AstroidTypeError( + message="Could not infer slice used in subscript", + node=node, + index=node.parent, + context=context, + ) + + +def _container_getitem(instance, elts, index, context=None): + """Get a slice or an item, using the given *index*, for the given sequence.""" + try: + if isinstance(index, Slice): + index_slice = _infer_slice(index, context=context) + new_cls = instance.__class__() + new_cls.elts = elts[index_slice] + new_cls.parent = instance.parent + return new_cls + if isinstance(index, Const): + return elts[index.value] + except IndexError as exc: + raise exceptions.AstroidIndexError( + message="Index {index!s} out of range", + node=instance, + index=index, + context=context, + ) from exc + except TypeError as exc: + raise exceptions.AstroidTypeError( + message="Type error {error!r}", node=instance, index=index, context=context + ) from exc + + raise exceptions.AstroidTypeError("Could not use %s as subscript index" % index) + + +OP_PRECEDENCE = { + op: precedence + for precedence, ops in enumerate( + [ + ["Lambda"], # lambda x: x + 1 + ["IfExp"], # 1 if True else 2 + ["or"], + ["and"], + ["not"], + ["Compare"], # in, not in, is, is not, <, <=, >, >=, !=, == + ["|"], + ["^"], + ["&"], + ["<<", ">>"], + ["+", "-"], + ["*", "@", "/", "//", "%"], + ["UnaryOp"], # +, -, ~ + ["**"], + ["Await"], + ] + ) + for op in ops +} + + +class NodeNG: + """ A node of the new Abstract Syntax Tree (AST). + + This is the base class for all Astroid node classes. + """ + + is_statement = False + """Whether this node indicates a statement. + + :type: bool + """ + optional_assign = False # True for For (and for Comprehension if py <3.0) + """Whether this node optionally assigns a variable. + + This is for loop assignments because loop won't necessarily perform an + assignment if the loop has no iterations. + This is also the case from comprehensions in Python 2. + + :type: bool + """ + is_function = False # True for FunctionDef nodes + """Whether this node indicates a function. + + :type: bool + """ + is_lambda = False + # Attributes below are set by the builder module or by raw factories + lineno = None + """The line that this node appears on in the source code. + + :type: int or None + """ + col_offset = None + """The column that this node appears on in the source code. + + :type: int or None + """ + parent = None + """The parent node in the syntax tree. + + :type: NodeNG or None + """ + _astroid_fields = () + """Node attributes that contain child nodes. + + This is redefined in most concrete classes. + + :type: tuple(str) + """ + _other_fields = () + """Node attributes that do not contain child nodes. + + :type: tuple(str) + """ + _other_other_fields = () + """Attributes that contain AST-dependent fields. + + :type: tuple(str) + """ + # instance specific inference function infer(node, context) + _explicit_inference = None + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.lineno = lineno + self.col_offset = col_offset + self.parent = parent + + def infer(self, context=None, **kwargs): + """Get a generator of the inferred values. + + This is the main entry point to the inference system. + + .. seealso:: :ref:`inference` + + If the instance has some explicit inference function set, it will be + called instead of the default interface. + + :returns: The inferred values. + :rtype: iterable + """ + if context is not None: + context = context.extra_context.get(self, context) + if self._explicit_inference is not None: + # explicit_inference is not bound, give it self explicitly + try: + # pylint: disable=not-callable + return self._explicit_inference(self, context, **kwargs) + except exceptions.UseInferenceDefault: + pass + + if not context: + return self._infer(context, **kwargs) + + key = (self, context.lookupname, context.callcontext, context.boundnode) + if key in context.inferred: + return iter(context.inferred[key]) + + gen = context.cache_generator(key, self._infer(context, **kwargs)) + return util.limit_inference(gen, MANAGER.max_inferable_values) + + def _repr_name(self): + """Get a name for nice representation. + + This is either :attr:`name`, :attr:`attrname`, or the empty string. + + :returns: The nice name. + :rtype: str + """ + names = {"name", "attrname"} + if all(name not in self._astroid_fields for name in names): + return getattr(self, "name", getattr(self, "attrname", "")) + return "" + + def __str__(self): + rname = self._repr_name() + cname = type(self).__name__ + if rname: + string = "%(cname)s.%(rname)s(%(fields)s)" + alignment = len(cname) + len(rname) + 2 + else: + string = "%(cname)s(%(fields)s)" + alignment = len(cname) + 1 + result = [] + for field in self._other_fields + self._astroid_fields: + value = getattr(self, field) + width = 80 - len(field) - alignment + lines = pprint.pformat(value, indent=2, width=width).splitlines(True) + + inner = [lines[0]] + for line in lines[1:]: + inner.append(" " * alignment + line) + result.append("%s=%s" % (field, "".join(inner))) + + return string % { + "cname": cname, + "rname": rname, + "fields": (",\n" + " " * alignment).join(result), + } + + def __repr__(self): + rname = self._repr_name() + if rname: + string = "<%(cname)s.%(rname)s l.%(lineno)s at 0x%(id)x>" + else: + string = "<%(cname)s l.%(lineno)s at 0x%(id)x>" + return string % { + "cname": type(self).__name__, + "rname": rname, + "lineno": self.fromlineno, + "id": id(self), + } + + def accept(self, visitor): + """Visit this node using the given visitor.""" + func = getattr(visitor, "visit_" + self.__class__.__name__.lower()) + return func(self) + + def get_children(self): + """Get the child nodes below this node. + + :returns: The children. + :rtype: iterable(NodeNG) + """ + for field in self._astroid_fields: + attr = getattr(self, field) + if attr is None: + continue + if isinstance(attr, (list, tuple)): + yield from attr + else: + yield attr + + def last_child(self): + """An optimized version of list(get_children())[-1] + + :returns: The last child, or None if no children exist. + :rtype: NodeNG or None + """ + for field in self._astroid_fields[::-1]: + attr = getattr(self, field) + if not attr: # None or empty listy / tuple + continue + if isinstance(attr, (list, tuple)): + return attr[-1] + + return attr + return None + + def parent_of(self, node): + """Check if this node is the parent of the given node. + + :param node: The node to check if it is the child. + :type node: NodeNG + + :returns: True if this node is the parent of the given node, + False otherwise. + :rtype: bool + """ + parent = node.parent + while parent is not None: + if self is parent: + return True + parent = parent.parent + return False + + def statement(self): + """The first parent node, including self, marked as statement node. + + :returns: The first parent statement. + :rtype: NodeNG + """ + if self.is_statement: + return self + return self.parent.statement() + + def frame(self): + """The first parent frame node. + + A frame node is a :class:`Module`, :class:`FunctionDef`, + or :class:`ClassDef`. + + :returns: The first parent frame node. + :rtype: Module or FunctionDef or ClassDef + """ + return self.parent.frame() + + def scope(self): + """The first parent node defining a new scope. + + :returns: The first parent scope node. + :rtype: Module or FunctionDef or ClassDef or Lambda or GenExpr + """ + if self.parent: + return self.parent.scope() + return None + + def root(self): + """Return the root node of the syntax tree. + + :returns: The root node. + :rtype: Module + """ + if self.parent: + return self.parent.root() + return self + + def child_sequence(self, child): + """Search for the sequence that contains this child. + + :param child: The child node to search sequences for. + :type child: NodeNG + + :returns: The sequence containing the given child node. + :rtype: iterable(NodeNG) + + :raises AstroidError: If no sequence could be found that contains + the given child. + """ + for field in self._astroid_fields: + node_or_sequence = getattr(self, field) + if node_or_sequence is child: + return [node_or_sequence] + # /!\ compiler.ast Nodes have an __iter__ walking over child nodes + if ( + isinstance(node_or_sequence, (tuple, list)) + and child in node_or_sequence + ): + return node_or_sequence + + msg = "Could not find %s in %s's children" + raise exceptions.AstroidError(msg % (repr(child), repr(self))) + + def locate_child(self, child): + """Find the field of this node that contains the given child. + + :param child: The child node to search fields for. + :type child: NodeNG + + :returns: A tuple of the name of the field that contains the child, + and the sequence or node that contains the child node. + :rtype: tuple(str, iterable(NodeNG) or NodeNG) + + :raises AstroidError: If no field could be found that contains + the given child. + """ + for field in self._astroid_fields: + node_or_sequence = getattr(self, field) + # /!\ compiler.ast Nodes have an __iter__ walking over child nodes + if child is node_or_sequence: + return field, child + if ( + isinstance(node_or_sequence, (tuple, list)) + and child in node_or_sequence + ): + return field, node_or_sequence + msg = "Could not find %s in %s's children" + raise exceptions.AstroidError(msg % (repr(child), repr(self))) + + # FIXME : should we merge child_sequence and locate_child ? locate_child + # is only used in are_exclusive, child_sequence one time in pylint. + + def next_sibling(self): + """The next sibling statement node. + + :returns: The next sibling statement node. + :rtype: NodeNG or None + """ + return self.parent.next_sibling() + + def previous_sibling(self): + """The previous sibling statement. + + :returns: The previous sibling statement node. + :rtype: NodeNG or None + """ + return self.parent.previous_sibling() + + # these are lazy because they're relatively expensive to compute for every + # single node, and they rarely get looked at + + @decorators.cachedproperty + def fromlineno(self): + """The first line that this node appears on in the source code. + + :type: int or None + """ + if self.lineno is None: + return self._fixed_source_line() + + return self.lineno + + @decorators.cachedproperty + def tolineno(self): + """The last line that this node appears on in the source code. + + :type: int or None + """ + if not self._astroid_fields: + # can't have children + lastchild = None + else: + lastchild = self.last_child() + if lastchild is None: + return self.fromlineno + + return lastchild.tolineno + + def _fixed_source_line(self): + """Attempt to find the line that this node appears on. + + We need this method since not all nodes have :attr:`lineno` set. + + :returns: The line number of this node, + or None if this could not be determined. + :rtype: int or None + """ + line = self.lineno + _node = self + try: + while line is None: + _node = next(_node.get_children()) + line = _node.lineno + except StopIteration: + _node = self.parent + while _node and line is None: + line = _node.lineno + _node = _node.parent + return line + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: The line number to start the range at. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + starting at the given line number. + :rtype: tuple(int, int or None) + """ + return lineno, self.tolineno + + def set_local(self, name, stmt): + """Define that the given name is declared in the given statement node. + + This definition is stored on the parent scope node. + + .. seealso:: :meth:`scope` + + :param name: The name that is being defined. + :type name: str + + :param stmt: The statement that defines the given name. + :type stmt: NodeNG + """ + self.parent.set_local(name, stmt) + + def nodes_of_class(self, klass, skip_klass=None): + """Get the nodes (including this one or below) of the given types. + + :param klass: The types of node to search for. + :type klass: builtins.type or tuple(builtins.type) + + :param skip_klass: The types of node to ignore. This is useful to ignore + subclasses of :attr:`klass`. + :type skip_klass: builtins.type or tuple(builtins.type) + + :returns: The node of the given types. + :rtype: iterable(NodeNG) + """ + if isinstance(self, klass): + yield self + + if skip_klass is None: + for child_node in self.get_children(): + yield from child_node.nodes_of_class(klass, skip_klass) + + return + + for child_node in self.get_children(): + if isinstance(child_node, skip_klass): + continue + yield from child_node.nodes_of_class(klass, skip_klass) + + @decorators.cached + def _get_assign_nodes(self): + return [] + + def _get_name_nodes(self): + for child_node in self.get_children(): + yield from child_node._get_name_nodes() + + def _get_return_nodes_skip_functions(self): + yield from () + + def _get_yield_nodes_skip_lambdas(self): + yield from () + + def _infer_name(self, frame, name): + # overridden for ImportFrom, Import, Global, TryExcept and Arguments + pass + + def _infer(self, context=None): + """we don't know how to resolve a statement by default""" + # this method is overridden by most concrete classes + raise exceptions.InferenceError( + "No inference function for {node!r}.", node=self, context=context + ) + + def inferred(self): + """Get a list of the inferred values. + + .. seealso:: :ref:`inference` + + :returns: The inferred values. + :rtype: list + """ + return list(self.infer()) + + def instantiate_class(self): + """Instantiate an instance of the defined class. + + .. note:: + + On anything other than a :class:`ClassDef` this will return self. + + :returns: An instance of the defined class. + :rtype: object + """ + return self + + def has_base(self, node): + """Check if this node inherits from the given type. + + :param node: The node defining the base to look for. + Usually this is a :class:`Name` node. + :type node: NodeNG + """ + return False + + def callable(self): + """Whether this node defines something that is callable. + + :returns: True if this defines something that is callable, + False otherwise. + :rtype: bool + """ + return False + + def eq(self, value): + return False + + def as_string(self): + """Get the source code that this node represents. + + :returns: The source code. + :rtype: str + """ + return as_string.to_code(self) + + def repr_tree( + self, + ids=False, + include_linenos=False, + ast_state=False, + indent=" ", + max_depth=0, + max_width=80, + ): + """Get a string representation of the AST from this node. + + :param ids: If true, includes the ids with the node type names. + :type ids: bool + + :param include_linenos: If true, includes the line numbers and + column offsets. + :type include_linenos: bool + + :param ast_state: If true, includes information derived from + the whole AST like local and global variables. + :type ast_state: bool + + :param indent: A string to use to indent the output string. + :type indent: str + + :param max_depth: If set to a positive integer, won't return + nodes deeper than max_depth in the string. + :type max_depth: int + + :param max_width: Attempt to format the output string to stay + within this number of characters, but can exceed it under some + circumstances. Only positive integer values are valid, the default is 80. + :type max_width: int + + :returns: The string representation of the AST. + :rtype: str + """ + # pylint: disable=too-many-statements + @_singledispatch + def _repr_tree(node, result, done, cur_indent="", depth=1): + """Outputs a representation of a non-tuple/list, non-node that's + contained within an AST, including strings. + """ + lines = pprint.pformat( + node, width=max(max_width - len(cur_indent), 1) + ).splitlines(True) + result.append(lines[0]) + result.extend([cur_indent + line for line in lines[1:]]) + return len(lines) != 1 + + # pylint: disable=unused-variable; doesn't understand singledispatch + @_repr_tree.register(tuple) + @_repr_tree.register(list) + def _repr_seq(node, result, done, cur_indent="", depth=1): + """Outputs a representation of a sequence that's contained within an AST.""" + cur_indent += indent + result.append("[") + if not node: + broken = False + elif len(node) == 1: + broken = _repr_tree(node[0], result, done, cur_indent, depth) + elif len(node) == 2: + broken = _repr_tree(node[0], result, done, cur_indent, depth) + if not broken: + result.append(", ") + else: + result.append(",\n") + result.append(cur_indent) + broken = _repr_tree(node[1], result, done, cur_indent, depth) or broken + else: + result.append("\n") + result.append(cur_indent) + for child in node[:-1]: + _repr_tree(child, result, done, cur_indent, depth) + result.append(",\n") + result.append(cur_indent) + _repr_tree(node[-1], result, done, cur_indent, depth) + broken = True + result.append("]") + return broken + + # pylint: disable=unused-variable; doesn't understand singledispatch + @_repr_tree.register(NodeNG) + def _repr_node(node, result, done, cur_indent="", depth=1): + """Outputs a strings representation of an astroid node.""" + if node in done: + result.append( + indent + + " max_depth: + result.append("...") + return False + depth += 1 + cur_indent += indent + if ids: + result.append("%s<0x%x>(\n" % (type(node).__name__, id(node))) + else: + result.append("%s(" % type(node).__name__) + fields = [] + if include_linenos: + fields.extend(("lineno", "col_offset")) + fields.extend(node._other_fields) + fields.extend(node._astroid_fields) + if ast_state: + fields.extend(node._other_other_fields) + if not fields: + broken = False + elif len(fields) == 1: + result.append("%s=" % fields[0]) + broken = _repr_tree( + getattr(node, fields[0]), result, done, cur_indent, depth + ) + else: + result.append("\n") + result.append(cur_indent) + for field in fields[:-1]: + result.append("%s=" % field) + _repr_tree(getattr(node, field), result, done, cur_indent, depth) + result.append(",\n") + result.append(cur_indent) + result.append("%s=" % fields[-1]) + _repr_tree(getattr(node, fields[-1]), result, done, cur_indent, depth) + broken = True + result.append(")") + return broken + + result = [] + _repr_tree(self, result, set()) + return "".join(result) + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + The boolean value of a node can have three + possible values: + + * False: For instance, empty data structures, + False, empty strings, instances which return + explicitly False from the __nonzero__ / __bool__ + method. + * True: Most of constructs are True by default: + classes, functions, modules etc + * Uninferable: The inference engine is uncertain of the + node's value. + + :returns: The boolean value of this node. + :rtype: bool or Uninferable + """ + return util.Uninferable + + def op_precedence(self): + # Look up by class name or default to highest precedence + return OP_PRECEDENCE.get(self.__class__.__name__, len(OP_PRECEDENCE)) + + def op_left_associative(self): + # Everything is left associative except `**` and IfExp + return True + + +class Statement(NodeNG): + """Statement node adding a few attributes""" + + is_statement = True + """Whether this node indicates a statement. + + :type: bool + """ + + def next_sibling(self): + """The next sibling statement node. + + :returns: The next sibling statement node. + :rtype: NodeNG or None + """ + stmts = self.parent.child_sequence(self) + index = stmts.index(self) + try: + return stmts[index + 1] + except IndexError: + pass + + def previous_sibling(self): + """The previous sibling statement. + + :returns: The previous sibling statement node. + :rtype: NodeNG or None + """ + stmts = self.parent.child_sequence(self) + index = stmts.index(self) + if index >= 1: + return stmts[index - 1] + return None + + +class _BaseContainer( + mixins.ParentAssignTypeMixin, NodeNG, bases.Instance, metaclass=abc.ABCMeta +): + """Base class for Set, FrozenSet, Tuple and List.""" + + _astroid_fields = ("elts",) + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.elts = [] + """The elements in the node. + + :type: list(NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, elts): + """Do some setup after initialisation. + + :param elts: The list of elements the that node contains. + :type elts: list(NodeNG) + """ + self.elts = elts + + @classmethod + def from_elements(cls, elts=None): + """Create a node of this type from the given list of elements. + + :param elts: The list of elements that the node should contain. + :type elts: list(NodeNG) + + :returns: A new node containing the given elements. + :rtype: NodeNG + """ + node = cls() + if elts is None: + node.elts = [] + else: + node.elts = [const_factory(e) if _is_const(e) else e for e in elts] + return node + + def itered(self): + """An iterator over the elements this node contains. + + :returns: The contents of this node. + :rtype: iterable(NodeNG) + """ + return self.elts + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + :rtype: bool or Uninferable + """ + return bool(self.elts) + + @abc.abstractmethod + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + + def get_children(self): + yield from self.elts + + +class LookupMixIn: + """Mixin to look up a name in the right scope.""" + + @lru_cache(maxsize=None) + def lookup(self, name): + """Lookup where the given variable is assigned. + + The lookup starts from self's scope. If self is not a frame itself + and the name is found in the inner frame locals, statements will be + filtered to remove ignorable statements according to self's location. + + :param name: The name of the variable to find assignments for. + :type name: str + + :returns: The scope node and the list of assignments associated to the + given name according to the scope where it has been found (locals, + globals or builtin). + :rtype: tuple(str, list(NodeNG)) + """ + return self.scope().scope_lookup(self, name) + + def ilookup(self, name): + """Lookup the inferred values of the given variable. + + :param name: The variable name to find values for. + :type name: str + + :returns: The inferred values of the statements returned from + :meth:`lookup`. + :rtype: iterable + """ + frame, stmts = self.lookup(name) + context = contextmod.InferenceContext() + return bases._infer_stmts(stmts, context, frame) + + def _get_filtered_node_statements(self, nodes): + statements = [(node, node.statement()) for node in nodes] + # Next we check if we have ExceptHandlers that are parent + # of the underlying variable, in which case the last one survives + if len(statements) > 1 and all( + isinstance(stmt, ExceptHandler) for _, stmt in statements + ): + statements = [ + (node, stmt) for node, stmt in statements if stmt.parent_of(self) + ] + return statements + + def _filter_stmts(self, stmts, frame, offset): + """Filter the given list of statements to remove ignorable statements. + + If self is not a frame itself and the name is found in the inner + frame locals, statements will be filtered to remove ignorable + statements according to self's location. + + :param stmts: The statements to filter. + :type stmts: list(NodeNG) + + :param frame: The frame that all of the given statements belong to. + :type frame: NodeNG + + :param offset: The line offset to filter statements up to. + :type offset: int + + :returns: The filtered statements. + :rtype: list(NodeNG) + """ + # if offset == -1, my actual frame is not the inner frame but its parent + # + # class A(B): pass + # + # we need this to resolve B correctly + if offset == -1: + myframe = self.frame().parent.frame() + else: + myframe = self.frame() + # If the frame of this node is the same as the statement + # of this node, then the node is part of a class or + # a function definition and the frame of this node should be the + # the upper frame, not the frame of the definition. + # For more information why this is important, + # see Pylint issue #295. + # For example, for 'b', the statement is the same + # as the frame / scope: + # + # def test(b=1): + # ... + + if self.statement() is myframe and myframe.parent: + myframe = myframe.parent.frame() + mystmt = self.statement() + # line filtering if we are in the same frame + # + # take care node may be missing lineno information (this is the case for + # nodes inserted for living objects) + if myframe is frame and mystmt.fromlineno is not None: + assert mystmt.fromlineno is not None, mystmt + mylineno = mystmt.fromlineno + offset + else: + # disabling lineno filtering + mylineno = 0 + + _stmts = [] + _stmt_parents = [] + statements = self._get_filtered_node_statements(stmts) + + for node, stmt in statements: + # line filtering is on and we have reached our location, break + if stmt.fromlineno > mylineno > 0: + break + # Ignore decorators with the same name as the + # decorated function + # Fixes issue #375 + if mystmt is stmt and is_from_decorator(self): + continue + assert hasattr(node, "assign_type"), ( + node, + node.scope(), + node.scope().locals, + ) + assign_type = node.assign_type() + if node.has_base(self): + break + + _stmts, done = assign_type._get_filtered_stmts(self, node, _stmts, mystmt) + if done: + break + + optional_assign = assign_type.optional_assign + if optional_assign and assign_type.parent_of(self): + # we are inside a loop, loop var assignment is hiding previous + # assignment + _stmts = [node] + _stmt_parents = [stmt.parent] + continue + + if isinstance(assign_type, NamedExpr): + _stmts = [node] + continue + + # XXX comment various branches below!!! + try: + pindex = _stmt_parents.index(stmt.parent) + except ValueError: + pass + else: + # we got a parent index, this means the currently visited node + # is at the same block level as a previously visited node + if _stmts[pindex].assign_type().parent_of(assign_type): + # both statements are not at the same block level + continue + # if currently visited node is following previously considered + # assignment and both are not exclusive, we can drop the + # previous one. For instance in the following code :: + # + # if a: + # x = 1 + # else: + # x = 2 + # print x + # + # we can't remove neither x = 1 nor x = 2 when looking for 'x' + # of 'print x'; while in the following :: + # + # x = 1 + # x = 2 + # print x + # + # we can remove x = 1 when we see x = 2 + # + # moreover, on loop assignment types, assignment won't + # necessarily be done if the loop has no iteration, so we don't + # want to clear previous assignments if any (hence the test on + # optional_assign) + if not (optional_assign or are_exclusive(_stmts[pindex], node)): + if ( + # In case of partial function node, if the statement is different + # from the origin function then it can be deleted otherwise it should + # remain to be able to correctly infer the call to origin function. + not node.is_function + or node.qname() != "PartialFunction" + or node.name != _stmts[pindex].name + ): + del _stmt_parents[pindex] + del _stmts[pindex] + if isinstance(node, AssignName): + if not optional_assign and stmt.parent is mystmt.parent: + _stmts = [] + _stmt_parents = [] + elif isinstance(node, DelName): + _stmts = [] + _stmt_parents = [] + continue + if not are_exclusive(self, node): + _stmts.append(node) + _stmt_parents.append(stmt.parent) + return _stmts + + +# Name classes + + +class AssignName( + mixins.NoChildrenMixin, LookupMixIn, mixins.ParentAssignTypeMixin, NodeNG +): + """Variation of :class:`ast.Assign` representing assignment to a name. + + An :class:`AssignName` is the name of something that is assigned to. + This includes variables defined in a function signature or in a loop. + + >>> node = astroid.extract_node('variable = range(10)') + >>> node + + >>> list(node.get_children()) + [, ] + >>> list(node.get_children())[0].as_string() + 'variable' + """ + + _other_fields = ("name",) + + def __init__(self, name=None, lineno=None, col_offset=None, parent=None): + """ + :param name: The name that is assigned to. + :type name: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.name = name + """The name that is assigned to. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + +class DelName( + mixins.NoChildrenMixin, LookupMixIn, mixins.ParentAssignTypeMixin, NodeNG +): + """Variation of :class:`ast.Delete` representing deletion of a name. + + A :class:`DelName` is the name of something that is deleted. + + >>> node = astroid.extract_node("del variable #@") + >>> list(node.get_children()) + [] + >>> list(node.get_children())[0].as_string() + 'variable' + """ + + _other_fields = ("name",) + + def __init__(self, name=None, lineno=None, col_offset=None, parent=None): + """ + :param name: The name that is being deleted. + :type name: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.name = name + """The name that is being deleted. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + +class Name(mixins.NoChildrenMixin, LookupMixIn, NodeNG): + """Class representing an :class:`ast.Name` node. + + A :class:`Name` node is something that is named, but not covered by + :class:`AssignName` or :class:`DelName`. + + >>> node = astroid.extract_node('range(10)') + >>> node + + >>> list(node.get_children()) + [, ] + >>> list(node.get_children())[0].as_string() + 'range' + """ + + _other_fields = ("name",) + + def __init__(self, name=None, lineno=None, col_offset=None, parent=None): + """ + :param name: The name that this node refers to. + :type name: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.name = name + """The name that this node refers to. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def _get_name_nodes(self): + yield self + + for child_node in self.get_children(): + yield from child_node._get_name_nodes() + + +class Arguments(mixins.AssignTypeMixin, NodeNG): + """Class representing an :class:`ast.arguments` node. + + An :class:`Arguments` node represents that arguments in a + function definition. + + >>> node = astroid.extract_node('def foo(bar): pass') + >>> node + + >>> node.args + + """ + + # Python 3.4+ uses a different approach regarding annotations, + # each argument is a new class, _ast.arg, which exposes an + # 'annotation' attribute. In astroid though, arguments are exposed + # as is in the Arguments node and the only way to expose annotations + # is by using something similar with Python 3.3: + # - we expose 'varargannotation' and 'kwargannotation' of annotations + # of varargs and kwargs. + # - we expose 'annotation', a list with annotations for + # for each normal argument. If an argument doesn't have an + # annotation, its value will be None. + # pylint: disable=too-many-instance-attributes + _astroid_fields = ( + "args", + "defaults", + "kwonlyargs", + "posonlyargs", + "posonlyargs_annotations", + "kw_defaults", + "annotations", + "varargannotation", + "kwargannotation", + "kwonlyargs_annotations", + "type_comment_args", + "type_comment_kwonlyargs", + "type_comment_posonlyargs", + ) + varargannotation = None + """The type annotation for the variable length arguments. + + :type: NodeNG + """ + kwargannotation = None + """The type annotation for the variable length keyword arguments. + + :type: NodeNG + """ + + _other_fields = ("vararg", "kwarg") + + def __init__(self, vararg=None, kwarg=None, parent=None): + """ + :param vararg: The name of the variable length arguments. + :type vararg: str or None + + :param kwarg: The name of the variable length keyword arguments. + :type kwarg: str or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + super().__init__(parent=parent) + self.vararg = vararg + """The name of the variable length arguments. + + :type: str or None + """ + + self.kwarg = kwarg + """The name of the variable length keyword arguments. + + :type: str or None + """ + + self.args = [] + """The names of the required arguments. + + :type: list(AssignName) + """ + + self.defaults = [] + """The default values for arguments that can be passed positionally. + + :type: list(NodeNG) + """ + + self.kwonlyargs = [] + """The keyword arguments that cannot be passed positionally. + + :type: list(AssignName) + """ + + self.posonlyargs = [] + """The arguments that can only be passed positionally. + + :type: list(AssignName) + """ + + self.kw_defaults = [] + """The default values for keyword arguments that cannot be passed positionally. + + :type: list(NodeNG) + """ + + self.annotations = [] + """The type annotations of arguments that can be passed positionally. + + :type: list(NodeNG) + """ + + self.posonlyargs_annotations = [] + """The type annotations of arguments that can only be passed positionally. + + :type: list(NodeNG) + """ + + self.kwonlyargs_annotations = [] + """The type annotations of arguments that cannot be passed positionally. + + :type: list(NodeNG) + """ + + self.type_comment_args = [] + """The type annotation, passed by a type comment, of each argument. + + If an argument does not have a type comment, + the value for that argument will be None. + + :type: list(NodeNG or None) + """ + + self.type_comment_kwonlyargs = [] + """The type annotation, passed by a type comment, of each keyword only argument. + + If an argument does not have a type comment, + the value for that argument will be None. + + :type: list(NodeNG or None) + """ + + self.type_comment_posonlyargs = [] + """The type annotation, passed by a type comment, of each positional argument. + + If an argument does not have a type comment, + the value for that argument will be None. + + :type: list(NodeNG or None) + """ + + # pylint: disable=too-many-arguments + def postinit( + self, + args, + defaults, + kwonlyargs, + kw_defaults, + annotations, + posonlyargs=None, + kwonlyargs_annotations=None, + posonlyargs_annotations=None, + varargannotation=None, + kwargannotation=None, + type_comment_args=None, + type_comment_kwonlyargs=None, + type_comment_posonlyargs=None, + ): + """Do some setup after initialisation. + + :param args: The names of the required arguments. + :type args: list(AssignName) + + :param defaults: The default values for arguments that can be passed + positionally. + :type defaults: list(NodeNG) + + :param kwonlyargs: The keyword arguments that cannot be passed + positionally. + :type kwonlyargs: list(AssignName) + + :param posonlyargs: The arguments that can only be passed + positionally. + :type kwonlyargs: list(AssignName) + + :param kw_defaults: The default values for keyword arguments that + cannot be passed positionally. + :type kw_defaults: list(NodeNG) + + :param annotations: The type annotations of arguments that can be + passed positionally. + :type annotations: list(NodeNG) + + :param kwonlyargs_annotations: The type annotations of arguments that + cannot be passed positionally. This should always be passed in + Python 3. + :type kwonlyargs_annotations: list(NodeNG) + + :param posonlyargs_annotations: The type annotations of arguments that + can only be passed positionally. This should always be passed in + Python 3. + :type posonlyargs_annotations: list(NodeNG) + + :param varargannotation: The type annotation for the variable length + arguments. + :type varargannotation: NodeNG + + :param kwargannotation: The type annotation for the variable length + keyword arguments. + :type kwargannotation: NodeNG + + :param type_comment_args: The type annotation, + passed by a type comment, of each argument. + :type type_comment_args: list(NodeNG or None) + + :param type_comment_args: The type annotation, + passed by a type comment, of each keyword only argument. + :type type_comment_args: list(NodeNG or None) + + :param type_comment_args: The type annotation, + passed by a type comment, of each positional argument. + :type type_comment_args: list(NodeNG or None) + """ + self.args = args + self.defaults = defaults + self.kwonlyargs = kwonlyargs + self.posonlyargs = posonlyargs + self.kw_defaults = kw_defaults + self.annotations = annotations + self.kwonlyargs_annotations = kwonlyargs_annotations + self.posonlyargs_annotations = posonlyargs_annotations + self.varargannotation = varargannotation + self.kwargannotation = kwargannotation + self.type_comment_args = type_comment_args + self.type_comment_kwonlyargs = type_comment_kwonlyargs + self.type_comment_posonlyargs = type_comment_posonlyargs + + # pylint: disable=too-many-arguments + + def _infer_name(self, frame, name): + if self.parent is frame: + return name + return None + + @decorators.cachedproperty + def fromlineno(self): + """The first line that this node appears on in the source code. + + :type: int or None + """ + lineno = super().fromlineno + return max(lineno, self.parent.fromlineno or 0) + + @decorators.cachedproperty + def arguments(self): + """Get all the arguments for this node, including positional only and positional and keyword""" + return list(itertools.chain((self.posonlyargs or ()), self.args or ())) + + def format_args(self): + """Get the arguments formatted as string. + + :returns: The formatted arguments. + :rtype: str + """ + result = [] + positional_only_defaults = [] + positional_or_keyword_defaults = self.defaults + if self.defaults: + args = self.args or [] + positional_or_keyword_defaults = self.defaults[-len(args) :] + positional_only_defaults = self.defaults[: len(self.defaults) - len(args)] + + if self.posonlyargs: + result.append( + _format_args( + self.posonlyargs, + positional_only_defaults, + self.posonlyargs_annotations, + ) + ) + result.append("/") + if self.args: + result.append( + _format_args( + self.args, + positional_or_keyword_defaults, + getattr(self, "annotations", None), + ) + ) + if self.vararg: + result.append("*%s" % self.vararg) + if self.kwonlyargs: + if not self.vararg: + result.append("*") + result.append( + _format_args( + self.kwonlyargs, self.kw_defaults, self.kwonlyargs_annotations + ) + ) + if self.kwarg: + result.append("**%s" % self.kwarg) + return ", ".join(result) + + def default_value(self, argname): + """Get the default value for an argument. + + :param argname: The name of the argument to get the default value for. + :type argname: str + + :raises NoDefault: If there is no default value defined for the + given argument. + """ + args = self.arguments + index = _find_arg(argname, args)[0] + if index is not None: + idx = index - (len(args) - len(self.defaults)) + if idx >= 0: + return self.defaults[idx] + index = _find_arg(argname, self.kwonlyargs)[0] + if index is not None and self.kw_defaults[index] is not None: + return self.kw_defaults[index] + raise exceptions.NoDefault(func=self.parent, name=argname) + + def is_argument(self, name): + """Check if the given name is defined in the arguments. + + :param name: The name to check for. + :type name: str + + :returns: True if the given name is defined in the arguments, + False otherwise. + :rtype: bool + """ + if name == self.vararg: + return True + if name == self.kwarg: + return True + return ( + self.find_argname(name, rec=True)[1] is not None + or self.kwonlyargs + and _find_arg(name, self.kwonlyargs, rec=True)[1] is not None + ) + + def find_argname(self, argname, rec=False): + """Get the index and :class:`AssignName` node for given name. + + :param argname: The name of the argument to search for. + :type argname: str + + :param rec: Whether or not to include arguments in unpacked tuples + in the search. + :type rec: bool + + :returns: The index and node for the argument. + :rtype: tuple(str or None, AssignName or None) + """ + if self.arguments: + return _find_arg(argname, self.arguments, rec) + return None, None + + def get_children(self): + yield from self.posonlyargs or () + + for elt in self.posonlyargs_annotations: + if elt is not None: + yield elt + + yield from self.args or () + + yield from self.defaults + yield from self.kwonlyargs + + for elt in self.kw_defaults: + if elt is not None: + yield elt + + for elt in self.annotations: + if elt is not None: + yield elt + + if self.varargannotation is not None: + yield self.varargannotation + + if self.kwargannotation is not None: + yield self.kwargannotation + + for elt in self.kwonlyargs_annotations: + if elt is not None: + yield elt + + +def _find_arg(argname, args, rec=False): + for i, arg in enumerate(args): + if isinstance(arg, Tuple): + if rec: + found = _find_arg(argname, arg.elts) + if found[0] is not None: + return found + elif arg.name == argname: + return i, arg + return None, None + + +def _format_args(args, defaults=None, annotations=None): + values = [] + if args is None: + return "" + if annotations is None: + annotations = [] + if defaults is not None: + default_offset = len(args) - len(defaults) + packed = itertools.zip_longest(args, annotations) + for i, (arg, annotation) in enumerate(packed): + if isinstance(arg, Tuple): + values.append("(%s)" % _format_args(arg.elts)) + else: + argname = arg.name + default_sep = "=" + if annotation is not None: + argname += ": " + annotation.as_string() + default_sep = " = " + values.append(argname) + + if defaults is not None and i >= default_offset: + if defaults[i - default_offset] is not None: + values[-1] += default_sep + defaults[i - default_offset].as_string() + return ", ".join(values) + + +class AssignAttr(mixins.ParentAssignTypeMixin, NodeNG): + """Variation of :class:`ast.Assign` representing assignment to an attribute. + + >>> node = astroid.extract_node('self.attribute = range(10)') + >>> node + + >>> list(node.get_children()) + [, ] + >>> list(node.get_children())[0].as_string() + 'self.attribute' + """ + + _astroid_fields = ("expr",) + _other_fields = ("attrname",) + expr = None + """What has the attribute that is being assigned to. + + :type: NodeNG or None + """ + + def __init__(self, attrname=None, lineno=None, col_offset=None, parent=None): + """ + :param attrname: The name of the attribute being assigned to. + :type attrname: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.attrname = attrname + """The name of the attribute being assigned to. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, expr=None): + """Do some setup after initialisation. + + :param expr: What has the attribute that is being assigned to. + :type expr: NodeNG or None + """ + self.expr = expr + + def get_children(self): + yield self.expr + + +class Assert(Statement): + """Class representing an :class:`ast.Assert` node. + + An :class:`Assert` node represents an assert statement. + + >>> node = astroid.extract_node('assert len(things) == 10, "Not enough things"') + >>> node + + """ + + _astroid_fields = ("test", "fail") + test = None + """The test that passes or fails the assertion. + + :type: NodeNG or None + """ + fail = None + """The message shown when the assertion fails. + + :type: NodeNG or None + """ + + def postinit(self, test=None, fail=None): + """Do some setup after initialisation. + + :param test: The test that passes or fails the assertion. + :type test: NodeNG or None + + :param fail: The message shown when the assertion fails. + :type fail: NodeNG or None + """ + self.fail = fail + self.test = test + + def get_children(self): + yield self.test + + if self.fail is not None: + yield self.fail + + +class Assign(mixins.AssignTypeMixin, Statement): + """Class representing an :class:`ast.Assign` node. + + An :class:`Assign` is a statement where something is explicitly + asssigned to. + + >>> node = astroid.extract_node('variable = range(10)') + >>> node + + """ + + _astroid_fields = ("targets", "value") + _other_other_fields = ("type_annotation",) + targets = None + """What is being assigned to. + + :type: list(NodeNG) or None + """ + value = None + """The value being assigned to the variables. + + :type: NodeNG or None + """ + type_annotation = None + """If present, this will contain the type annotation passed by a type comment + + :type: NodeNG or None + """ + + def postinit(self, targets=None, value=None, type_annotation=None): + """Do some setup after initialisation. + + :param targets: What is being assigned to. + :type targets: list(NodeNG) or None + + :param value: The value being assigned to the variables. + :type: NodeNG or None + """ + self.targets = targets + self.value = value + self.type_annotation = type_annotation + + def get_children(self): + yield from self.targets + + yield self.value + + @decorators.cached + def _get_assign_nodes(self): + return [self] + list(self.value._get_assign_nodes()) + + def _get_yield_nodes_skip_lambdas(self): + yield from self.value._get_yield_nodes_skip_lambdas() + + +class AnnAssign(mixins.AssignTypeMixin, Statement): + """Class representing an :class:`ast.AnnAssign` node. + + An :class:`AnnAssign` is an assignment with a type annotation. + + >>> node = astroid.extract_node('variable: List[int] = range(10)') + >>> node + + """ + + _astroid_fields = ("target", "annotation", "value") + _other_fields = ("simple",) + target = None + """What is being assigned to. + + :type: NodeNG or None + """ + annotation = None + """The type annotation of what is being assigned to. + + :type: NodeNG + """ + value = None + """The value being assigned to the variables. + + :type: NodeNG or None + """ + simple = None + """Whether :attr:`target` is a pure name or a complex statement. + + :type: int + """ + + def postinit(self, target, annotation, simple, value=None): + """Do some setup after initialisation. + + :param target: What is being assigned to. + :type target: NodeNG + + :param annotation: The type annotation of what is being assigned to. + :type: NodeNG + + :param simple: Whether :attr:`target` is a pure name + or a complex statement. + :type simple: int + + :param value: The value being assigned to the variables. + :type: NodeNG or None + """ + self.target = target + self.annotation = annotation + self.value = value + self.simple = simple + + def get_children(self): + yield self.target + yield self.annotation + + if self.value is not None: + yield self.value + + +class AugAssign(mixins.AssignTypeMixin, Statement): + """Class representing an :class:`ast.AugAssign` node. + + An :class:`AugAssign` is an assignment paired with an operator. + + >>> node = astroid.extract_node('variable += 1') + >>> node + + """ + + _astroid_fields = ("target", "value") + _other_fields = ("op",) + target = None + """What is being assigned to. + + :type: NodeNG or None + """ + value = None + """The value being assigned to the variable. + + :type: NodeNG or None + """ + + def __init__(self, op=None, lineno=None, col_offset=None, parent=None): + """ + :param op: The operator that is being combined with the assignment. + This includes the equals sign. + :type op: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.op = op + """The operator that is being combined with the assignment. + + This includes the equals sign. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, target=None, value=None): + """Do some setup after initialisation. + + :param target: What is being assigned to. + :type target: NodeNG or None + + :param value: The value being assigned to the variable. + :type: NodeNG or None + """ + self.target = target + self.value = value + + # This is set by inference.py + def _infer_augassign(self, context=None): + raise NotImplementedError + + def type_errors(self, context=None): + """Get a list of type errors which can occur during inference. + + Each TypeError is represented by a :class:`BadBinaryOperationMessage` , + which holds the original exception. + + :returns: The list of possible type errors. + :rtype: list(BadBinaryOperationMessage) + """ + try: + results = self._infer_augassign(context=context) + return [ + result + for result in results + if isinstance(result, util.BadBinaryOperationMessage) + ] + except exceptions.InferenceError: + return [] + + def get_children(self): + yield self.target + yield self.value + + +class Repr(NodeNG): + """Class representing an :class:`ast.Repr` node. + + A :class:`Repr` node represents the backtick syntax, + which is a deprecated alias for :func:`repr` removed in Python 3. + + >>> node = astroid.extract_node('`variable`') + >>> node + + """ + + _astroid_fields = ("value",) + value = None + """What is having :func:`repr` called on it. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: What is having :func:`repr` called on it. + :type value: NodeNG or None + """ + self.value = value + + +class BinOp(NodeNG): + """Class representing an :class:`ast.BinOp` node. + + A :class:`BinOp` node is an application of a binary operator. + + >>> node = astroid.extract_node('a + b') + >>> node + + """ + + _astroid_fields = ("left", "right") + _other_fields = ("op",) + left = None + """What is being applied to the operator on the left side. + + :type: NodeNG or None + """ + right = None + """What is being applied to the operator on the right side. + + :type: NodeNG or None + """ + + def __init__(self, op=None, lineno=None, col_offset=None, parent=None): + """ + :param op: The operator. + :type: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.op = op + """The operator. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, left=None, right=None): + """Do some setup after initialisation. + + :param left: What is being applied to the operator on the left side. + :type left: NodeNG or None + + :param right: What is being applied to the operator on the right side. + :type right: NodeNG or None + """ + self.left = left + self.right = right + + # This is set by inference.py + def _infer_binop(self, context=None): + raise NotImplementedError + + def type_errors(self, context=None): + """Get a list of type errors which can occur during inference. + + Each TypeError is represented by a :class:`BadBinaryOperationMessage`, + which holds the original exception. + + :returns: The list of possible type errors. + :rtype: list(BadBinaryOperationMessage) + """ + try: + results = self._infer_binop(context=context) + return [ + result + for result in results + if isinstance(result, util.BadBinaryOperationMessage) + ] + except exceptions.InferenceError: + return [] + + def get_children(self): + yield self.left + yield self.right + + def op_precedence(self): + return OP_PRECEDENCE[self.op] + + def op_left_associative(self): + # 2**3**4 == 2**(3**4) + return self.op != "**" + + +class BoolOp(NodeNG): + """Class representing an :class:`ast.BoolOp` node. + + A :class:`BoolOp` is an application of a boolean operator. + + >>> node = astroid.extract_node('a and b') + >>> node + + """ + + _astroid_fields = ("values",) + _other_fields = ("op",) + values = None + """The values being applied to the operator. + + :type: list(NodeNG) or None + """ + + def __init__(self, op=None, lineno=None, col_offset=None, parent=None): + """ + :param op: The operator. + :type: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.op = op + """The operator. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, values=None): + """Do some setup after initialisation. + + :param values: The values being applied to the operator. + :type values: list(NodeNG) or None + """ + self.values = values + + def get_children(self): + yield from self.values + + def op_precedence(self): + return OP_PRECEDENCE[self.op] + + +class Break(mixins.NoChildrenMixin, Statement): + """Class representing an :class:`ast.Break` node. + + >>> node = astroid.extract_node('break') + >>> node + + """ + + +class Call(NodeNG): + """Class representing an :class:`ast.Call` node. + + A :class:`Call` node is a call to a function, method, etc. + + >>> node = astroid.extract_node('function()') + >>> node + + """ + + _astroid_fields = ("func", "args", "keywords") + func = None + """What is being called. + + :type: NodeNG or None + """ + args = None + """The positional arguments being given to the call. + + :type: list(NodeNG) or None + """ + keywords = None + """The keyword arguments being given to the call. + + :type: list(NodeNG) or None + """ + + def postinit(self, func=None, args=None, keywords=None): + """Do some setup after initialisation. + + :param func: What is being called. + :type func: NodeNG or None + + :param args: The positional arguments being given to the call. + :type args: list(NodeNG) or None + + :param keywords: The keyword arguments being given to the call. + :type keywords: list(NodeNG) or None + """ + self.func = func + self.args = args + self.keywords = keywords + + @property + def starargs(self): + """The positional arguments that unpack something. + + :type: list(Starred) + """ + args = self.args or [] + return [arg for arg in args if isinstance(arg, Starred)] + + @property + def kwargs(self): + """The keyword arguments that unpack something. + + :type: list(Keyword) + """ + keywords = self.keywords or [] + return [keyword for keyword in keywords if keyword.arg is None] + + def get_children(self): + yield self.func + + yield from self.args + + yield from self.keywords or () + + +class Compare(NodeNG): + """Class representing an :class:`ast.Compare` node. + + A :class:`Compare` node indicates a comparison. + + >>> node = astroid.extract_node('a <= b <= c') + >>> node + + >>> node.ops + [('<=', ), ('<=', )] + """ + + _astroid_fields = ("left", "ops") + left = None + """The value at the left being applied to a comparison operator. + + :type: NodeNG or None + """ + ops = None + """The remainder of the operators and their relevant right hand value. + + :type: list(tuple(str, NodeNG)) or None + """ + + def postinit(self, left=None, ops=None): + """Do some setup after initialisation. + + :param left: The value at the left being applied to a comparison + operator. + :type left: NodeNG or None + + :param ops: The remainder of the operators + and their relevant right hand value. + :type ops: list(tuple(str, NodeNG)) or None + """ + self.left = left + self.ops = ops + + def get_children(self): + """Get the child nodes below this node. + + Overridden to handle the tuple fields and skip returning the operator + strings. + + :returns: The children. + :rtype: iterable(NodeNG) + """ + yield self.left + for _, comparator in self.ops: + yield comparator # we don't want the 'op' + + def last_child(self): + """An optimized version of list(get_children())[-1] + + :returns: The last child. + :rtype: NodeNG + """ + # XXX maybe if self.ops: + return self.ops[-1][1] + # return self.left + + +class Comprehension(NodeNG): + """Class representing an :class:`ast.comprehension` node. + + A :class:`Comprehension` indicates the loop inside any type of + comprehension including generator expressions. + + >>> node = astroid.extract_node('[x for x in some_values]') + >>> list(node.get_children()) + [, ] + >>> list(node.get_children())[1].as_string() + 'for x in some_values' + """ + + _astroid_fields = ("target", "iter", "ifs") + _other_fields = ("is_async",) + target = None + """What is assigned to by the comprehension. + + :type: NodeNG or None + """ + iter = None + """What is iterated over by the comprehension. + + :type: NodeNG or None + """ + ifs = None + """The contents of any if statements that filter the comprehension. + + :type: list(NodeNG) or None + """ + is_async = None + """Whether this is an asynchronous comprehension or not. + + :type: bool or None + """ + + def __init__(self, parent=None): + """ + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + super().__init__() + self.parent = parent + + # pylint: disable=redefined-builtin; same name as builtin ast module. + def postinit(self, target=None, iter=None, ifs=None, is_async=None): + """Do some setup after initialisation. + + :param target: What is assigned to by the comprehension. + :type target: NodeNG or None + + :param iter: What is iterated over by the comprehension. + :type iter: NodeNG or None + + :param ifs: The contents of any if statements that filter + the comprehension. + :type ifs: list(NodeNG) or None + + :param is_async: Whether this is an asynchronous comprehension or not. + :type: bool or None + """ + self.target = target + self.iter = iter + self.ifs = ifs + self.is_async = is_async + + optional_assign = True + """Whether this node optionally assigns a variable. + + :type: bool + """ + + def assign_type(self): + """The type of assignment that this node performs. + + :returns: The assignment type. + :rtype: NodeNG + """ + return self + + def _get_filtered_stmts(self, lookup_node, node, stmts, mystmt): + """method used in filter_stmts""" + if self is mystmt: + if isinstance(lookup_node, (Const, Name)): + return [lookup_node], True + + elif self.statement() is mystmt: + # original node's statement is the assignment, only keeps + # current node (gen exp, list comp) + + return [node], True + + return stmts, False + + def get_children(self): + yield self.target + yield self.iter + + yield from self.ifs + + +class Const(mixins.NoChildrenMixin, NodeNG, bases.Instance): + """Class representing any constant including num, str, bool, None, bytes. + + >>> node = astroid.extract_node('(5, "This is a string.", True, None, b"bytes")') + >>> node + + >>> list(node.get_children()) + [, + , + , + , + ] + """ + + _other_fields = ("value",) + + def __init__(self, value, lineno=None, col_offset=None, parent=None): + """ + :param value: The value that the constant represents. + :type value: object + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.value = value + """The value that the constant represents. + + :type: object + """ + + super().__init__(lineno, col_offset, parent) + + def __getattr__(self, name): + # This is needed because of Proxy's __getattr__ method. + # Calling object.__new__ on this class without calling + # __init__ would result in an infinite loop otherwise + # since __getattr__ is called when an attribute doesn't + # exist and self._proxied indirectly calls self.value + # and Proxy __getattr__ calls self.value + if name == "value": + raise AttributeError + return super().__getattr__(name) + + def getitem(self, index, context=None): + """Get an item from this node if subscriptable. + + :param index: The node to use as a subscript index. + :type index: Const or Slice + + :raises AstroidTypeError: When the given index cannot be used as a + subscript index, or if this node is not subscriptable. + """ + if isinstance(index, Const): + index_value = index.value + elif isinstance(index, Slice): + index_value = _infer_slice(index, context=context) + + else: + raise exceptions.AstroidTypeError( + "Could not use type {} as subscript index".format(type(index)) + ) + + try: + if isinstance(self.value, (str, bytes)): + return Const(self.value[index_value]) + except IndexError as exc: + raise exceptions.AstroidIndexError( + message="Index {index!r} out of range", + node=self, + index=index, + context=context, + ) from exc + except TypeError as exc: + raise exceptions.AstroidTypeError( + message="Type error {error!r}", node=self, index=index, context=context + ) from exc + + raise exceptions.AstroidTypeError("%r (value=%s)" % (self, self.value)) + + def has_dynamic_getattr(self): + """Check if the node has a custom __getattr__ or __getattribute__. + + :returns: True if the class has a custom + __getattr__ or __getattribute__, False otherwise. + For a :class:`Const` this is always ``False``. + :rtype: bool + """ + return False + + def itered(self): + """An iterator over the elements this node contains. + + :returns: The contents of this node. + :rtype: iterable(Const) + + :raises TypeError: If this node does not represent something that is iterable. + """ + if isinstance(self.value, str): + return [const_factory(elem) for elem in self.value] + raise TypeError("Cannot iterate over type {!r}".format(type(self.value))) + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return self._proxied.qname() + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + :rtype: bool + """ + return bool(self.value) + + +class Continue(mixins.NoChildrenMixin, Statement): + """Class representing an :class:`ast.Continue` node. + + >>> node = astroid.extract_node('continue') + >>> node + + """ + + +class Decorators(NodeNG): + """A node representing a list of decorators. + + A :class:`Decorators` is the decorators that are applied to + a method or function. + + >>> node = astroid.extract_node(''' + @property + def my_property(self): + return 3 + ''') + >>> node + + >>> list(node.get_children())[0] + + """ + + _astroid_fields = ("nodes",) + nodes = None + """The decorators that this node contains. + + :type: list(Name or Call) or None + """ + + def postinit(self, nodes): + """Do some setup after initialisation. + + :param nodes: The decorators that this node contains. + :type nodes: list(Name or Call) + """ + self.nodes = nodes + + def scope(self): + """The first parent node defining a new scope. + + :returns: The first parent scope node. + :rtype: Module or FunctionDef or ClassDef or Lambda or GenExpr + """ + # skip the function node to go directly to the upper level scope + return self.parent.parent.scope() + + def get_children(self): + yield from self.nodes + + +class DelAttr(mixins.ParentAssignTypeMixin, NodeNG): + """Variation of :class:`ast.Delete` representing deletion of an attribute. + + >>> node = astroid.extract_node('del self.attr') + >>> node + + >>> list(node.get_children())[0] + + """ + + _astroid_fields = ("expr",) + _other_fields = ("attrname",) + expr = None + """The name that this node represents. + + :type: Name or None + """ + + def __init__(self, attrname=None, lineno=None, col_offset=None, parent=None): + """ + :param attrname: The name of the attribute that is being deleted. + :type attrname: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.attrname = attrname + """The name of the attribute that is being deleted. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, expr=None): + """Do some setup after initialisation. + + :param expr: The name that this node represents. + :type expr: Name or None + """ + self.expr = expr + + def get_children(self): + yield self.expr + + +class Delete(mixins.AssignTypeMixin, Statement): + """Class representing an :class:`ast.Delete` node. + + A :class:`Delete` is a ``del`` statement this is deleting something. + + >>> node = astroid.extract_node('del self.attr') + >>> node + + """ + + _astroid_fields = ("targets",) + targets = None + """What is being deleted. + + :type: list(NodeNG) or None + """ + + def postinit(self, targets=None): + """Do some setup after initialisation. + + :param targets: What is being deleted. + :type targets: list(NodeNG) or None + """ + self.targets = targets + + def get_children(self): + yield from self.targets + + +class Dict(NodeNG, bases.Instance): + """Class representing an :class:`ast.Dict` node. + + A :class:`Dict` is a dictionary that is created with ``{}`` syntax. + + >>> node = astroid.extract_node('{1: "1"}') + >>> node + + """ + + _astroid_fields = ("items",) + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.items = [] + """The key-value pairs contained in the dictionary. + + :type: list(tuple(NodeNG, NodeNG)) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, items): + """Do some setup after initialisation. + + :param items: The key-value pairs contained in the dictionary. + :type items: list(tuple(NodeNG, NodeNG)) + """ + self.items = items + + @classmethod + def from_elements(cls, items=None): + """Create a :class:`Dict` of constants from a live dictionary. + + :param items: The items to store in the node. + :type items: dict + + :returns: The created dictionary node. + :rtype: Dict + """ + node = cls() + if items is None: + node.items = [] + else: + node.items = [ + (const_factory(k), const_factory(v) if _is_const(v) else v) + for k, v in items.items() + # The keys need to be constants + if _is_const(k) + ] + return node + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.dict" % BUILTINS + + def get_children(self): + """Get the key and value nodes below this node. + + Children are returned in the order that they are defined in the source + code, key first then the value. + + :returns: The children. + :rtype: iterable(NodeNG) + """ + for key, value in self.items: + yield key + yield value + + def last_child(self): + """An optimized version of list(get_children())[-1] + + :returns: The last child, or None if no children exist. + :rtype: NodeNG or None + """ + if self.items: + return self.items[-1][1] + return None + + def itered(self): + """An iterator over the keys this node contains. + + :returns: The keys of this node. + :rtype: iterable(NodeNG) + """ + return [key for (key, _) in self.items] + + def getitem(self, index, context=None): + """Get an item from this node. + + :param index: The node to use as a subscript index. + :type index: Const or Slice + + :raises AstroidTypeError: When the given index cannot be used as a + subscript index, or if this node is not subscriptable. + :raises AstroidIndexError: If the given index does not exist in the + dictionary. + """ + for key, value in self.items: + # TODO(cpopa): no support for overriding yet, {1:2, **{1: 3}}. + if isinstance(key, DictUnpack): + try: + return value.getitem(index, context) + except (exceptions.AstroidTypeError, exceptions.AstroidIndexError): + continue + for inferredkey in key.infer(context): + if inferredkey is util.Uninferable: + continue + if isinstance(inferredkey, Const) and isinstance(index, Const): + if inferredkey.value == index.value: + return value + + raise exceptions.AstroidIndexError(index) + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + :rtype: bool + """ + return bool(self.items) + + +class Expr(Statement): + """Class representing an :class:`ast.Expr` node. + + An :class:`Expr` is any expression that does not have its value used or + stored. + + >>> node = astroid.extract_node('method()') + >>> node + + >>> node.parent + + """ + + _astroid_fields = ("value",) + value = None + """What the expression does. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: What the expression does. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + yield self.value + + def _get_yield_nodes_skip_lambdas(self): + if not self.value.is_lambda: + yield from self.value._get_yield_nodes_skip_lambdas() + + +class Ellipsis(mixins.NoChildrenMixin, NodeNG): # pylint: disable=redefined-builtin + """Class representing an :class:`ast.Ellipsis` node. + + An :class:`Ellipsis` is the ``...`` syntax. + + >>> node = astroid.extract_node('...') + >>> node + + """ + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For an :class:`Ellipsis` this is always ``True``. + :rtype: bool + """ + return True + + +class EmptyNode(mixins.NoChildrenMixin, NodeNG): + """Holds an arbitrary object in the :attr:`LocalsDictNodeNG.locals`.""" + + object = None + + +class ExceptHandler(mixins.MultiLineBlockMixin, mixins.AssignTypeMixin, Statement): + """Class representing an :class:`ast.ExceptHandler`. node. + + An :class:`ExceptHandler` is an ``except`` block on a try-except. + + >>> node = astroid.extract_node(''' + try: + do_something() + except Exception as error: + print("Error!") + ''') + >>> node + + >>> >>> node.handlers + [] + """ + + _astroid_fields = ("type", "name", "body") + _multi_line_block_fields = ("body",) + type = None + """The types that the block handles. + + :type: Tuple or NodeNG or None + """ + name = None + """The name that the caught exception is assigned to. + + :type: AssignName or None + """ + body = None + """The contents of the block. + + :type: list(NodeNG) or None + """ + + def get_children(self): + if self.type is not None: + yield self.type + + if self.name is not None: + yield self.name + + yield from self.body + + # pylint: disable=redefined-builtin; had to use the same name as builtin ast module. + def postinit(self, type=None, name=None, body=None): + """Do some setup after initialisation. + + :param type: The types that the block handles. + :type type: Tuple or NodeNG or None + + :param name: The name that the caught exception is assigned to. + :type name: AssignName or None + + :param body:The contents of the block. + :type body: list(NodeNG) or None + """ + self.type = type + self.name = name + self.body = body + + @decorators.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + if self.name: + return self.name.tolineno + if self.type: + return self.type.tolineno + return self.lineno + + def catch(self, exceptions): # pylint: disable=redefined-outer-name + """Check if this node handles any of the given exceptions. + + If ``exceptions`` is empty, this will default to ``True``. + + :param exceptions: The name of the exceptions to check for. + :type exceptions: list(str) + """ + if self.type is None or exceptions is None: + return True + for node in self.type._get_name_nodes(): + if node.name in exceptions: + return True + return False + + +class Exec(Statement): + """Class representing the ``exec`` statement. + + >>> node = astroid.extract_node('exec "True"') + >>> node + + """ + + _astroid_fields = ("expr", "globals", "locals") + expr = None + """The expression to be executed. + + :type: NodeNG or None + """ + globals = None + """The globals dictionary to execute with. + + :type: NodeNG or None + """ + locals = None + """The locals dictionary to execute with. + + :type: NodeNG or None + """ + + # pylint: disable=redefined-builtin; had to use the same name as builtin ast module. + def postinit(self, expr=None, globals=None, locals=None): + """Do some setup after initialisation. + + :param expr: The expression to be executed. + :type expr: NodeNG or None + + :param globals:The globals dictionary to execute with. + :type globals: NodeNG or None + + :param locals: The locals dictionary to execute with. + :type locals: NodeNG or None + """ + self.expr = expr + self.globals = globals + self.locals = locals + + +class ExtSlice(NodeNG): + """Class representing an :class:`ast.ExtSlice` node. + + An :class:`ExtSlice` is a complex slice expression. + + >>> node = astroid.extract_node('l[1:3, 5]') + >>> node + + >>> node.slice + + """ + + _astroid_fields = ("dims",) + dims = None + """The simple dimensions that form the complete slice. + + :type: list(NodeNG) or None + """ + + def postinit(self, dims=None): + """Do some setup after initialisation. + + :param dims: The simple dimensions that form the complete slice. + :type dims: list(NodeNG) or None + """ + self.dims = dims + + +class For( + mixins.MultiLineBlockMixin, + mixins.BlockRangeMixIn, + mixins.AssignTypeMixin, + Statement, +): + """Class representing an :class:`ast.For` node. + + >>> node = astroid.extract_node('for thing in things: print(thing)') + >>> node + + """ + + _astroid_fields = ("target", "iter", "body", "orelse") + _other_other_fields = ("type_annotation",) + _multi_line_block_fields = ("body", "orelse") + target = None + """What the loop assigns to. + + :type: NodeNG or None + """ + iter = None + """What the loop iterates over. + + :type: NodeNG or None + """ + body = None + """The contents of the body of the loop. + + :type: list(NodeNG) or None + """ + orelse = None + """The contents of the ``else`` block of the loop. + + :type: list(NodeNG) or None + """ + type_annotation = None + """If present, this will contain the type annotation passed by a type comment + + :type: NodeNG or None + """ + + # pylint: disable=redefined-builtin; had to use the same name as builtin ast module. + def postinit( + self, target=None, iter=None, body=None, orelse=None, type_annotation=None + ): + """Do some setup after initialisation. + + :param target: What the loop assigns to. + :type target: NodeNG or None + + :param iter: What the loop iterates over. + :type iter: NodeNG or None + + :param body: The contents of the body of the loop. + :type body: list(NodeNG) or None + + :param orelse: The contents of the ``else`` block of the loop. + :type orelse: list(NodeNG) or None + """ + self.target = target + self.iter = iter + self.body = body + self.orelse = orelse + self.type_annotation = type_annotation + + optional_assign = True + """Whether this node optionally assigns a variable. + + This is always ``True`` for :class:`For` nodes. + + :type: bool + """ + + @decorators.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + return self.iter.tolineno + + def get_children(self): + yield self.target + yield self.iter + + yield from self.body + yield from self.orelse + + +class AsyncFor(For): + """Class representing an :class:`ast.AsyncFor` node. + + An :class:`AsyncFor` is an asynchronous :class:`For` built with + the ``async`` keyword. + + >>> node = astroid.extract_node(''' + async def func(things): + async for thing in things: + print(thing) + ''') + >>> node + + >>> node.body[0] + + """ + + +class Await(NodeNG): + """Class representing an :class:`ast.Await` node. + + An :class:`Await` is the ``await`` keyword. + + >>> node = astroid.extract_node(''' + async def func(things): + await other_func() + ''') + >>> node + + >>> node.body[0] + + >>> list(node.body[0].get_children())[0] + + """ + + _astroid_fields = ("value",) + value = None + """What to wait for. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: What to wait for. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + yield self.value + + +class ImportFrom(mixins.NoChildrenMixin, mixins.ImportFromMixin, Statement): + """Class representing an :class:`ast.ImportFrom` node. + + >>> node = astroid.extract_node('from my_package import my_module') + >>> node + + """ + + _other_fields = ("modname", "names", "level") + + def __init__( + self, fromname, names, level=0, lineno=None, col_offset=None, parent=None + ): + """ + :param fromname: The module that is being imported from. + :type fromname: str or None + + :param names: What is being imported from the module. + :type names: list(tuple(str, str or None)) + + :param level: The level of relative import. + :type level: int + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.modname = fromname + """The module that is being imported from. + + This is ``None`` for relative imports. + + :type: str or None + """ + + self.names = names + """What is being imported from the module. + + Each entry is a :class:`tuple` of the name being imported, + and the alias that the name is assigned to (if any). + + :type: list(tuple(str, str or None)) + """ + + self.level = level + """The level of relative import. + + Essentially this is the number of dots in the import. + This is always 0 for absolute imports. + + :type: int + """ + + super().__init__(lineno, col_offset, parent) + + +class Attribute(NodeNG): + """Class representing an :class:`ast.Attribute` node.""" + + _astroid_fields = ("expr",) + _other_fields = ("attrname",) + expr = None + """The name that this node represents. + + :type: Name or None + """ + + def __init__(self, attrname=None, lineno=None, col_offset=None, parent=None): + """ + :param attrname: The name of the attribute. + :type attrname: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.attrname = attrname + """The name of the attribute. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, expr=None): + """Do some setup after initialisation. + + :param expr: The name that this node represents. + :type expr: Name or None + """ + self.expr = expr + + def get_children(self): + yield self.expr + + +class Global(mixins.NoChildrenMixin, Statement): + """Class representing an :class:`ast.Global` node. + + >>> node = astroid.extract_node('global a_global') + >>> node + + """ + + _other_fields = ("names",) + + def __init__(self, names, lineno=None, col_offset=None, parent=None): + """ + :param names: The names being declared as global. + :type names: list(str) + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.names = names + """The names being declared as global. + + :type: list(str) + """ + + super().__init__(lineno, col_offset, parent) + + def _infer_name(self, frame, name): + return name + + +class If(mixins.MultiLineBlockMixin, mixins.BlockRangeMixIn, Statement): + """Class representing an :class:`ast.If` node. + + >>> node = astroid.extract_node('if condition: print(True)') + >>> node + + """ + + _astroid_fields = ("test", "body", "orelse") + _multi_line_block_fields = ("body", "orelse") + test = None + """The condition that the statement tests. + + :type: NodeNG or None + """ + body = None + """The contents of the block. + + :type: list(NodeNG) or None + """ + orelse = None + """The contents of the ``else`` block. + + :type: list(NodeNG) or None + """ + + def postinit(self, test=None, body=None, orelse=None): + """Do some setup after initialisation. + + :param test: The condition that the statement tests. + :type test: NodeNG or None + + :param body: The contents of the block. + :type body: list(NodeNG) or None + + :param orelse: The contents of the ``else`` block. + :type orelse: list(NodeNG) or None + """ + self.test = test + self.body = body + self.orelse = orelse + + @decorators.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + return self.test.tolineno + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: The line number to start the range at. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + starting at the given line number. + :rtype: tuple(int, int) + """ + if lineno == self.body[0].fromlineno: + return lineno, lineno + if lineno <= self.body[-1].tolineno: + return lineno, self.body[-1].tolineno + return self._elsed_block_range(lineno, self.orelse, self.body[0].fromlineno - 1) + + def get_children(self): + yield self.test + + yield from self.body + yield from self.orelse + + def has_elif_block(self): + return len(self.orelse) == 1 and isinstance(self.orelse[0], If) + + +class IfExp(NodeNG): + """Class representing an :class:`ast.IfExp` node. + + >>> node = astroid.extract_node('value if condition else other') + >>> node + + """ + + _astroid_fields = ("test", "body", "orelse") + test = None + """The condition that the statement tests. + + :type: NodeNG or None + """ + body = None + """The contents of the block. + + :type: list(NodeNG) or None + """ + orelse = None + """The contents of the ``else`` block. + + :type: list(NodeNG) or None + """ + + def postinit(self, test=None, body=None, orelse=None): + """Do some setup after initialisation. + + :param test: The condition that the statement tests. + :type test: NodeNG or None + + :param body: The contents of the block. + :type body: list(NodeNG) or None + + :param orelse: The contents of the ``else`` block. + :type orelse: list(NodeNG) or None + """ + self.test = test + self.body = body + self.orelse = orelse + + def get_children(self): + yield self.test + yield self.body + yield self.orelse + + def op_left_associative(self): + # `1 if True else 2 if False else 3` is parsed as + # `1 if True else (2 if False else 3)` + return False + + +class Import(mixins.NoChildrenMixin, mixins.ImportFromMixin, Statement): + """Class representing an :class:`ast.Import` node. + + >>> node = astroid.extract_node('import astroid') + >>> node + + """ + + _other_fields = ("names",) + + def __init__(self, names=None, lineno=None, col_offset=None, parent=None): + """ + :param names: The names being imported. + :type names: list(tuple(str, str or None)) or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.names = names + """The names being imported. + + Each entry is a :class:`tuple` of the name being imported, + and the alias that the name is assigned to (if any). + + :type: list(tuple(str, str or None)) or None + """ + + super().__init__(lineno, col_offset, parent) + + +class Index(NodeNG): + """Class representing an :class:`ast.Index` node. + + An :class:`Index` is a simple subscript. + + >>> node = astroid.extract_node('things[1]') + >>> node + + >>> node.slice + + """ + + _astroid_fields = ("value",) + value = None + """The value to subscript with. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: The value to subscript with. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + yield self.value + + +class Keyword(NodeNG): + """Class representing an :class:`ast.keyword` node. + + >>> node = astroid.extract_node('function(a_kwarg=True)') + >>> node + + >>> node.keywords + [] + """ + + _astroid_fields = ("value",) + _other_fields = ("arg",) + value = None + """The value being assigned to the keyword argument. + + :type: NodeNG or None + """ + + def __init__(self, arg=None, lineno=None, col_offset=None, parent=None): + """ + :param arg: The argument being assigned to. + :type arg: Name or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.arg = arg + """The argument being assigned to. + + :type: Name or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: The value being assigned to the ketword argument. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + yield self.value + + +class List(_BaseContainer): + """Class representing an :class:`ast.List` node. + + >>> node = astroid.extract_node('[1, 2, 3]') + >>> node + + """ + + _other_fields = ("ctx",) + + def __init__(self, ctx=None, lineno=None, col_offset=None, parent=None): + """ + :param ctx: Whether the list is assigned to or loaded from. + :type ctx: Context or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.ctx = ctx + """Whether the list is assigned to or loaded from. + + :type: Context or None + """ + + super().__init__(lineno, col_offset, parent) + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.list" % BUILTINS + + def getitem(self, index, context=None): + """Get an item from this node. + + :param index: The node to use as a subscript index. + :type index: Const or Slice + """ + return _container_getitem(self, self.elts, index, context=context) + + +class Nonlocal(mixins.NoChildrenMixin, Statement): + """Class representing an :class:`ast.Nonlocal` node. + + >>> node = astroid.extract_node(''' + def function(): + nonlocal var + ''') + >>> node + + >>> node.body[0] + + """ + + _other_fields = ("names",) + + def __init__(self, names, lineno=None, col_offset=None, parent=None): + """ + :param names: The names being declared as not local. + :type names: list(str) + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.names = names + """The names being declared as not local. + + :type: list(str) + """ + + super().__init__(lineno, col_offset, parent) + + def _infer_name(self, frame, name): + return name + + +class Pass(mixins.NoChildrenMixin, Statement): + """Class representing an :class:`ast.Pass` node. + + >>> node = astroid.extract_node('pass') + >>> node + + """ + + +class Print(Statement): + """Class representing an :class:`ast.Print` node. + + >>> node = astroid.extract_node('print "A message"') + >>> node + + """ + + _astroid_fields = ("dest", "values") + dest = None + """Where to print to. + + :type: NodeNG or None + """ + values = None + """What to print. + + :type: list(NodeNG) or None + """ + + def __init__(self, nl=None, lineno=None, col_offset=None, parent=None): + """ + :param nl: Whether to print a new line. + :type nl: bool or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.nl = nl + """Whether to print a new line. + + :type: bool or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, dest=None, values=None): + """Do some setup after initialisation. + + :param dest: Where to print to. + :type dest: NodeNG or None + + :param values: What to print. + :type values: list(NodeNG) or None + """ + self.dest = dest + self.values = values + + +class Raise(Statement): + """Class representing an :class:`ast.Raise` node. + + >>> node = astroid.extract_node('raise RuntimeError("Something bad happened!")') + >>> node + + """ + + exc = None + """What is being raised. + + :type: NodeNG or None + """ + _astroid_fields = ("exc", "cause") + cause = None + """The exception being used to raise this one. + + :type: NodeNG or None + """ + + def postinit(self, exc=None, cause=None): + """Do some setup after initialisation. + + :param exc: What is being raised. + :type exc: NodeNG or None + + :param cause: The exception being used to raise this one. + :type cause: NodeNG or None + """ + self.exc = exc + self.cause = cause + + def raises_not_implemented(self): + """Check if this node raises a :class:`NotImplementedError`. + + :returns: True if this node raises a :class:`NotImplementedError`, + False otherwise. + :rtype: bool + """ + if not self.exc: + return False + for name in self.exc._get_name_nodes(): + if name.name == "NotImplementedError": + return True + return False + + def get_children(self): + if self.exc is not None: + yield self.exc + + if self.cause is not None: + yield self.cause + + +class Return(Statement): + """Class representing an :class:`ast.Return` node. + + >>> node = astroid.extract_node('return True') + >>> node + + """ + + _astroid_fields = ("value",) + value = None + """The value being returned. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: The value being returned. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + if self.value is not None: + yield self.value + + def is_tuple_return(self): + return isinstance(self.value, Tuple) + + def _get_return_nodes_skip_functions(self): + yield self + + +class Set(_BaseContainer): + """Class representing an :class:`ast.Set` node. + + >>> node = astroid.extract_node('{1, 2, 3}') + >>> node + + """ + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.set" % BUILTINS + + +class Slice(NodeNG): + """Class representing an :class:`ast.Slice` node. + + >>> node = astroid.extract_node('things[1:3]') + >>> node + + >>> node.slice + + """ + + _astroid_fields = ("lower", "upper", "step") + lower = None + """The lower index in the slice. + + :type: NodeNG or None + """ + upper = None + """The upper index in the slice. + + :type: NodeNG or None + """ + step = None + """The step to take between indexes. + + :type: NodeNG or None + """ + + def postinit(self, lower=None, upper=None, step=None): + """Do some setup after initialisation. + + :param lower: The lower index in the slice. + :value lower: NodeNG or None + + :param upper: The upper index in the slice. + :value upper: NodeNG or None + + :param step: The step to take between index. + :param step: NodeNG or None + """ + self.lower = lower + self.upper = upper + self.step = step + + def _wrap_attribute(self, attr): + """Wrap the empty attributes of the Slice in a Const node.""" + if not attr: + const = const_factory(attr) + const.parent = self + return const + return attr + + @decorators.cachedproperty + def _proxied(self): + builtins = MANAGER.builtins_module + return builtins.getattr("slice")[0] + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.slice" % BUILTINS + + def igetattr(self, attrname, context=None): + """Infer the possible values of the given attribute on the slice. + + :param attrname: The name of the attribute to infer. + :type attrname: str + + :returns: The inferred possible values. + :rtype: iterable(NodeNG) + """ + if attrname == "start": + yield self._wrap_attribute(self.lower) + elif attrname == "stop": + yield self._wrap_attribute(self.upper) + elif attrname == "step": + yield self._wrap_attribute(self.step) + else: + yield from self.getattr(attrname, context=context) + + def getattr(self, attrname, context=None): + return self._proxied.getattr(attrname, context) + + def get_children(self): + if self.lower is not None: + yield self.lower + + if self.upper is not None: + yield self.upper + + if self.step is not None: + yield self.step + + +class Starred(mixins.ParentAssignTypeMixin, NodeNG): + """Class representing an :class:`ast.Starred` node. + + >>> node = astroid.extract_node('*args') + >>> node + + """ + + _astroid_fields = ("value",) + _other_fields = ("ctx",) + value = None + """What is being unpacked. + + :type: NodeNG or None + """ + + def __init__(self, ctx=None, lineno=None, col_offset=None, parent=None): + """ + :param ctx: Whether the list is assigned to or loaded from. + :type ctx: Context or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.ctx = ctx + """Whether the starred item is assigned to or loaded from. + + :type: Context or None + """ + + super().__init__(lineno=lineno, col_offset=col_offset, parent=parent) + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: What is being unpacked. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + yield self.value + + +class Subscript(NodeNG): + """Class representing an :class:`ast.Subscript` node. + + >>> node = astroid.extract_node('things[1:3]') + >>> node + + """ + + _astroid_fields = ("value", "slice") + _other_fields = ("ctx",) + value = None + """What is being indexed. + + :type: NodeNG or None + """ + slice = None + """The slice being used to lookup. + + :type: NodeNG or None + """ + + def __init__(self, ctx=None, lineno=None, col_offset=None, parent=None): + """ + :param ctx: Whether the subscripted item is assigned to or loaded from. + :type ctx: Context or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.ctx = ctx + """Whether the subscripted item is assigned to or loaded from. + + :type: Context or None + """ + + super().__init__(lineno=lineno, col_offset=col_offset, parent=parent) + + # pylint: disable=redefined-builtin; had to use the same name as builtin ast module. + def postinit(self, value=None, slice=None): + """Do some setup after initialisation. + + :param value: What is being indexed. + :type value: NodeNG or None + + :param slice: The slice being used to lookup. + :type slice: NodeNG or None + """ + self.value = value + self.slice = slice + + def get_children(self): + yield self.value + yield self.slice + + +class TryExcept(mixins.MultiLineBlockMixin, mixins.BlockRangeMixIn, Statement): + """Class representing an :class:`ast.TryExcept` node. + + >>> node = astroid.extract_node(''' + try: + do_something() + except Exception as error: + print("Error!") + ''') + >>> node + + """ + + _astroid_fields = ("body", "handlers", "orelse") + _multi_line_block_fields = ("body", "handlers", "orelse") + body = None + """The contents of the block to catch exceptions from. + + :type: list(NodeNG) or None + """ + handlers = None + """The exception handlers. + + :type: list(ExceptHandler) or None + """ + orelse = None + """The contents of the ``else`` block. + + :type: list(NodeNG) or None + """ + + def postinit(self, body=None, handlers=None, orelse=None): + """Do some setup after initialisation. + + :param body: The contents of the block to catch exceptions from. + :type body: list(NodeNG) or None + + :param handlers: The exception handlers. + :type handlers: list(ExceptHandler) or None + + :param orelse: The contents of the ``else`` block. + :type orelse: list(NodeNG) or None + """ + self.body = body + self.handlers = handlers + self.orelse = orelse + + def _infer_name(self, frame, name): + return name + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: The line number to start the range at. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + starting at the given line number. + :rtype: tuple(int, int) + """ + last = None + for exhandler in self.handlers: + if exhandler.type and lineno == exhandler.type.fromlineno: + return lineno, lineno + if exhandler.body[0].fromlineno <= lineno <= exhandler.body[-1].tolineno: + return lineno, exhandler.body[-1].tolineno + if last is None: + last = exhandler.body[0].fromlineno - 1 + return self._elsed_block_range(lineno, self.orelse, last) + + def get_children(self): + yield from self.body + + yield from self.handlers or () + yield from self.orelse or () + + +class TryFinally(mixins.MultiLineBlockMixin, mixins.BlockRangeMixIn, Statement): + """Class representing an :class:`ast.TryFinally` node. + + >>> node = astroid.extract_node(''' + try: + do_something() + except Exception as error: + print("Error!") + finally: + print("Cleanup!") + ''') + >>> node + + """ + + _astroid_fields = ("body", "finalbody") + _multi_line_block_fields = ("body", "finalbody") + body = None + """The try-except that the finally is attached to. + + :type: list(TryExcept) or None + """ + finalbody = None + """The contents of the ``finally`` block. + + :type: list(NodeNG) or None + """ + + def postinit(self, body=None, finalbody=None): + """Do some setup after initialisation. + + :param body: The try-except that the finally is attached to. + :type body: list(TryExcept) or None + + :param finalbody: The contents of the ``finally`` block. + :type finalbody: list(NodeNG) or None + """ + self.body = body + self.finalbody = finalbody + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: The line number to start the range at. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + starting at the given line number. + :rtype: tuple(int, int) + """ + child = self.body[0] + # py2.5 try: except: finally: + if ( + isinstance(child, TryExcept) + and child.fromlineno == self.fromlineno + and child.tolineno >= lineno > self.fromlineno + ): + return child.block_range(lineno) + return self._elsed_block_range(lineno, self.finalbody) + + def get_children(self): + yield from self.body + yield from self.finalbody + + +class Tuple(_BaseContainer): + """Class representing an :class:`ast.Tuple` node. + + >>> node = astroid.extract_node('(1, 2, 3)') + >>> node + + """ + + _other_fields = ("ctx",) + + def __init__(self, ctx=None, lineno=None, col_offset=None, parent=None): + """ + :param ctx: Whether the tuple is assigned to or loaded from. + :type ctx: Context or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.ctx = ctx + """Whether the tuple is assigned to or loaded from. + + :type: Context or None + """ + + super().__init__(lineno, col_offset, parent) + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.tuple" % BUILTINS + + def getitem(self, index, context=None): + """Get an item from this node. + + :param index: The node to use as a subscript index. + :type index: Const or Slice + """ + return _container_getitem(self, self.elts, index, context=context) + + +class UnaryOp(NodeNG): + """Class representing an :class:`ast.UnaryOp` node. + + >>> node = astroid.extract_node('-5') + >>> node + + """ + + _astroid_fields = ("operand",) + _other_fields = ("op",) + operand = None + """What the unary operator is applied to. + + :type: NodeNG or None + """ + + def __init__(self, op=None, lineno=None, col_offset=None, parent=None): + """ + :param op: The operator. + :type: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.op = op + """The operator. + + :type: str or None + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, operand=None): + """Do some setup after initialisation. + + :param operand: What the unary operator is applied to. + :type operand: NodeNG or None + """ + self.operand = operand + + # This is set by inference.py + def _infer_unaryop(self, context=None): + raise NotImplementedError + + def type_errors(self, context=None): + """Get a list of type errors which can occur during inference. + + Each TypeError is represented by a :class:`BadBinaryOperationMessage`, + which holds the original exception. + + :returns: The list of possible type errors. + :rtype: list(BadBinaryOperationMessage) + """ + try: + results = self._infer_unaryop(context=context) + return [ + result + for result in results + if isinstance(result, util.BadUnaryOperationMessage) + ] + except exceptions.InferenceError: + return [] + + def get_children(self): + yield self.operand + + def op_precedence(self): + if self.op == "not": + return OP_PRECEDENCE[self.op] + + return super().op_precedence() + + +class While(mixins.MultiLineBlockMixin, mixins.BlockRangeMixIn, Statement): + """Class representing an :class:`ast.While` node. + + >>> node = astroid.extract_node(''' + while condition(): + print("True") + ''') + >>> node + + """ + + _astroid_fields = ("test", "body", "orelse") + _multi_line_block_fields = ("body", "orelse") + test = None + """The condition that the loop tests. + + :type: NodeNG or None + """ + body = None + """The contents of the loop. + + :type: list(NodeNG) or None + """ + orelse = None + """The contents of the ``else`` block. + + :type: list(NodeNG) or None + """ + + def postinit(self, test=None, body=None, orelse=None): + """Do some setup after initialisation. + + :param test: The condition that the loop tests. + :type test: NodeNG or None + + :param body: The contents of the loop. + :type body: list(NodeNG) or None + + :param orelse: The contents of the ``else`` block. + :type orelse: list(NodeNG) or None + """ + self.test = test + self.body = body + self.orelse = orelse + + @decorators.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + return self.test.tolineno + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: The line number to start the range at. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + starting at the given line number. + :rtype: tuple(int, int) + """ + return self._elsed_block_range(lineno, self.orelse) + + def get_children(self): + yield self.test + + yield from self.body + yield from self.orelse + + def _get_yield_nodes_skip_lambdas(self): + """A While node can contain a Yield node in the test""" + yield from self.test._get_yield_nodes_skip_lambdas() + yield from super()._get_yield_nodes_skip_lambdas() + + +class With( + mixins.MultiLineBlockMixin, + mixins.BlockRangeMixIn, + mixins.AssignTypeMixin, + Statement, +): + """Class representing an :class:`ast.With` node. + + >>> node = astroid.extract_node(''' + with open(file_path) as file_: + print(file_.read()) + ''') + >>> node + + """ + + _astroid_fields = ("items", "body") + _other_other_fields = ("type_annotation",) + _multi_line_block_fields = ("body",) + items = None + """The pairs of context managers and the names they are assigned to. + + :type: list(tuple(NodeNG, AssignName or None)) or None + """ + body = None + """The contents of the ``with`` block. + + :type: list(NodeNG) or None + """ + type_annotation = None + """If present, this will contain the type annotation passed by a type comment + + :type: NodeNG or None + """ + + def postinit(self, items=None, body=None, type_annotation=None): + """Do some setup after initialisation. + + :param items: The pairs of context managers and the names + they are assigned to. + :type items: list(tuple(NodeNG, AssignName or None)) or None + + :param body: The contents of the ``with`` block. + :type body: list(NodeNG) or None + """ + self.items = items + self.body = body + self.type_annotation = type_annotation + + @decorators.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + return self.items[-1][0].tolineno + + def get_children(self): + """Get the child nodes below this node. + + :returns: The children. + :rtype: iterable(NodeNG) + """ + for expr, var in self.items: + yield expr + if var: + yield var + yield from self.body + + +class AsyncWith(With): + """Asynchronous ``with`` built with the ``async`` keyword.""" + + +class Yield(NodeNG): + """Class representing an :class:`ast.Yield` node. + + >>> node = astroid.extract_node('yield True') + >>> node + + """ + + _astroid_fields = ("value",) + value = None + """The value to yield. + + :type: NodeNG or None + """ + + def postinit(self, value=None): + """Do some setup after initialisation. + + :param value: The value to yield. + :type value: NodeNG or None + """ + self.value = value + + def get_children(self): + if self.value is not None: + yield self.value + + def _get_yield_nodes_skip_lambdas(self): + yield self + + +class YieldFrom(Yield): + """Class representing an :class:`ast.YieldFrom` node.""" + + +class DictUnpack(mixins.NoChildrenMixin, NodeNG): + """Represents the unpacking of dicts into dicts using :pep:`448`.""" + + +class FormattedValue(NodeNG): + """Class representing an :class:`ast.FormattedValue` node. + + Represents a :pep:`498` format string. + + >>> node = astroid.extract_node('f"Format {type_}"') + >>> node + + >>> node.values + [, ] + """ + + _astroid_fields = ("value", "format_spec") + value = None + """The value to be formatted into the string. + + :type: NodeNG or None + """ + conversion = None + """The type of formatting to be applied to the value. + + .. seealso:: + :class:`ast.FormattedValue` + + :type: int or None + """ + format_spec = None + """The formatting to be applied to the value. + + .. seealso:: + :class:`ast.FormattedValue` + + :type: JoinedStr or None + """ + + def postinit(self, value, conversion=None, format_spec=None): + """Do some setup after initialisation. + + :param value: The value to be formatted into the string. + :type value: NodeNG + + :param conversion: The type of formatting to be applied to the value. + :type conversion: int or None + + :param format_spec: The formatting to be applied to the value. + :type format_spec: JoinedStr or None + """ + self.value = value + self.conversion = conversion + self.format_spec = format_spec + + def get_children(self): + yield self.value + + if self.format_spec is not None: + yield self.format_spec + + +class JoinedStr(NodeNG): + """Represents a list of string expressions to be joined. + + >>> node = astroid.extract_node('f"Format {type_}"') + >>> node + + """ + + _astroid_fields = ("values",) + values = None + """The string expressions to be joined. + + :type: list(FormattedValue or Const) or None + """ + + def postinit(self, values=None): + """Do some setup after initialisation. + + :param value: The string expressions to be joined. + + :type: list(FormattedValue or Const) or None + """ + self.values = values + + def get_children(self): + yield from self.values + + +class NamedExpr(mixins.AssignTypeMixin, NodeNG): + """Represents the assignment from the assignment expression + + >>> module = astroid.parse('if a := 1: pass') + >>> module.body[0].test + + """ + + _astroid_fields = ("target", "value") + target = None + """The assignment target + + :type: Name + """ + value = None + """The value that gets assigned in the expression + + :type: NodeNG + """ + + def postinit(self, target, value): + self.target = target + self.value = value + + +class Unknown(mixins.AssignTypeMixin, NodeNG): + """This node represents a node in a constructed AST where + introspection is not possible. At the moment, it's only used in + the args attribute of FunctionDef nodes where function signature + introspection failed. + """ + + name = "Unknown" + + def qname(self): + return "Unknown" + + def infer(self, context=None, **kwargs): + """Inference on an Unknown node immediately terminates.""" + yield util.Uninferable + + +class EvaluatedObject(NodeNG): + """Contains an object that has already been inferred + + This class is useful to pre-evaluate a particular node, + with the resulting class acting as the non-evaluated node. + """ + + name = "EvaluatedObject" + _astroid_fields = ("original",) + _other_fields = ("value",) + + original = None + """The original node that has already been evaluated + + :type: NodeNG + """ + + value = None + """The inferred value + + :type: Union[Uninferable, NodeNG] + """ + + def __init__(self, original, value): + self.original = original + self.value = value + super().__init__( + lineno=self.original.lineno, + col_offset=self.original.col_offset, + parent=self.original.parent, + ) + + def infer(self, context=None, **kwargs): + yield self.value + + +# constants ############################################################## + +CONST_CLS = { + list: List, + tuple: Tuple, + dict: Dict, + set: Set, + type(None): Const, + type(NotImplemented): Const, +} +if PY38: + CONST_CLS[type(...)] = Const + + +def _update_const_classes(): + """update constant classes, so the keys of CONST_CLS can be reused""" + klasses = (bool, int, float, complex, str, bytes) + for kls in klasses: + CONST_CLS[kls] = Const + + +_update_const_classes() + + +def _two_step_initialization(cls, value): + instance = cls() + instance.postinit(value) + return instance + + +def _dict_initialization(cls, value): + if isinstance(value, dict): + value = tuple(value.items()) + return _two_step_initialization(cls, value) + + +_CONST_CLS_CONSTRUCTORS = { + List: _two_step_initialization, + Tuple: _two_step_initialization, + Dict: _dict_initialization, + Set: _two_step_initialization, + Const: lambda cls, value: cls(value), +} + + +def const_factory(value): + """return an astroid node for a python value""" + # XXX we should probably be stricter here and only consider stuff in + # CONST_CLS or do better treatment: in case where value is not in CONST_CLS, + # we should rather recall the builder on this value than returning an empty + # node (another option being that const_factory shouldn't be called with something + # not in CONST_CLS) + assert not isinstance(value, NodeNG) + + # Hack for ignoring elements of a sequence + # or a mapping, in order to avoid transforming + # each element to an AST. This is fixed in 2.0 + # and this approach is a temporary hack. + if isinstance(value, (list, set, tuple, dict)): + elts = [] + else: + elts = value + + try: + initializer_cls = CONST_CLS[value.__class__] + initializer = _CONST_CLS_CONSTRUCTORS[initializer_cls] + return initializer(initializer_cls, elts) + except (KeyError, AttributeError): + node = EmptyNode() + node.object = value + return node + + +def is_from_decorator(node): + """Return True if the given node is the child of a decorator""" + parent = node.parent + while parent is not None: + if isinstance(parent, Decorators): + return True + parent = parent.parent + return False diff --git a/WebCrawler/venv/Lib/site-packages/astroid/nodes.py b/WebCrawler/venv/Lib/site-packages/astroid/nodes.py new file mode 100644 index 0000000..4ce4ebe --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/nodes.py @@ -0,0 +1,176 @@ +# Copyright (c) 2006-2011, 2013 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2010 Daniel Harding +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Jared Garst +# Copyright (c) 2017 Ashley Whetter +# Copyright (c) 2017 rr- +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Every available node class. + +.. seealso:: + :doc:`ast documentation ` + +All nodes inherit from :class:`~astroid.node_classes.NodeNG`. +""" +# pylint: disable=unused-import,redefined-builtin + +from astroid.node_classes import ( + Arguments, + AssignAttr, + Assert, + Assign, + AnnAssign, + AssignName, + AugAssign, + Repr, + BinOp, + BoolOp, + Break, + Call, + Compare, + Comprehension, + Const, + Continue, + Decorators, + DelAttr, + DelName, + Delete, + Dict, + Expr, + Ellipsis, + EmptyNode, + ExceptHandler, + Exec, + ExtSlice, + For, + ImportFrom, + Attribute, + Global, + If, + IfExp, + Import, + Index, + Keyword, + List, + Name, + NamedExpr, + Nonlocal, + Pass, + Print, + Raise, + Return, + Set, + Slice, + Starred, + Subscript, + TryExcept, + TryFinally, + Tuple, + UnaryOp, + While, + With, + Yield, + YieldFrom, + const_factory, + AsyncFor, + Await, + AsyncWith, + FormattedValue, + JoinedStr, + # Node not present in the builtin ast module. + DictUnpack, + Unknown, + EvaluatedObject, +) +from astroid.scoped_nodes import ( + Module, + GeneratorExp, + Lambda, + DictComp, + ListComp, + SetComp, + FunctionDef, + ClassDef, + AsyncFunctionDef, +) + + +ALL_NODE_CLASSES = ( + AsyncFunctionDef, + AsyncFor, + AsyncWith, + Await, + Arguments, + AssignAttr, + Assert, + Assign, + AnnAssign, + AssignName, + AugAssign, + Repr, + BinOp, + BoolOp, + Break, + Call, + ClassDef, + Compare, + Comprehension, + Const, + Continue, + Decorators, + DelAttr, + DelName, + Delete, + Dict, + DictComp, + DictUnpack, + Expr, + Ellipsis, + EmptyNode, + ExceptHandler, + Exec, + ExtSlice, + For, + ImportFrom, + FunctionDef, + Attribute, + GeneratorExp, + Global, + If, + IfExp, + Import, + Index, + Keyword, + Lambda, + List, + ListComp, + Name, + NamedExpr, + Nonlocal, + Module, + Pass, + Print, + Raise, + Return, + Set, + SetComp, + Slice, + Starred, + Subscript, + TryExcept, + TryFinally, + Tuple, + UnaryOp, + While, + With, + Yield, + YieldFrom, + FormattedValue, + JoinedStr, +) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/objects.py b/WebCrawler/venv/Lib/site-packages/astroid/objects.py new file mode 100644 index 0000000..fb782e6 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/objects.py @@ -0,0 +1,314 @@ +# Copyright (c) 2015-2016, 2018-2020 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2018 hippo91 +# Copyright (c) 2018 Bryce Guinta + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +""" +Inference objects are a way to represent composite AST nodes, +which are used only as inference results, so they can't be found in the +original AST tree. For instance, inferring the following frozenset use, +leads to an inferred FrozenSet: + + Call(func=Name('frozenset'), args=Tuple(...)) +""" + +import builtins + +from astroid import bases +from astroid import decorators +from astroid import exceptions +from astroid import MANAGER +from astroid import node_classes +from astroid import scoped_nodes +from astroid import util + + +BUILTINS = builtins.__name__ +objectmodel = util.lazy_import("interpreter.objectmodel") + + +class FrozenSet(node_classes._BaseContainer): + """class representing a FrozenSet composite node""" + + def pytype(self): + return "%s.frozenset" % BUILTINS + + def _infer(self, context=None): + yield self + + @decorators.cachedproperty + def _proxied(self): # pylint: disable=method-hidden + ast_builtins = MANAGER.builtins_module + return ast_builtins.getattr("frozenset")[0] + + +class Super(node_classes.NodeNG): + """Proxy class over a super call. + + This class offers almost the same behaviour as Python's super, + which is MRO lookups for retrieving attributes from the parents. + + The *mro_pointer* is the place in the MRO from where we should + start looking, not counting it. *mro_type* is the object which + provides the MRO, it can be both a type or an instance. + *self_class* is the class where the super call is, while + *scope* is the function where the super call is. + """ + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.SuperModel()) + + # pylint: disable=super-init-not-called + def __init__(self, mro_pointer, mro_type, self_class, scope): + self.type = mro_type + self.mro_pointer = mro_pointer + self._class_based = False + self._self_class = self_class + self._scope = scope + + def _infer(self, context=None): + yield self + + def super_mro(self): + """Get the MRO which will be used to lookup attributes in this super.""" + if not isinstance(self.mro_pointer, scoped_nodes.ClassDef): + raise exceptions.SuperError( + "The first argument to super must be a subtype of " + "type, not {mro_pointer}.", + super_=self, + ) + + if isinstance(self.type, scoped_nodes.ClassDef): + # `super(type, type)`, most likely in a class method. + self._class_based = True + mro_type = self.type + else: + mro_type = getattr(self.type, "_proxied", None) + if not isinstance(mro_type, (bases.Instance, scoped_nodes.ClassDef)): + raise exceptions.SuperError( + "The second argument to super must be an " + "instance or subtype of type, not {type}.", + super_=self, + ) + + if not mro_type.newstyle: + raise exceptions.SuperError( + "Unable to call super on old-style classes.", super_=self + ) + + mro = mro_type.mro() + if self.mro_pointer not in mro: + raise exceptions.SuperError( + "The second argument to super must be an " + "instance or subtype of type, not {type}.", + super_=self, + ) + + index = mro.index(self.mro_pointer) + return mro[index + 1 :] + + @decorators.cachedproperty + def _proxied(self): + ast_builtins = MANAGER.builtins_module + return ast_builtins.getattr("super")[0] + + def pytype(self): + return "%s.super" % BUILTINS + + def display_type(self): + return "Super of" + + @property + def name(self): + """Get the name of the MRO pointer.""" + return self.mro_pointer.name + + def qname(self): + return "super" + + def igetattr(self, name, context=None): + """Retrieve the inferred values of the given attribute name.""" + + if name in self.special_attributes: + yield self.special_attributes.lookup(name) + return + + try: + mro = self.super_mro() + # Don't let invalid MROs or invalid super calls + # leak out as is from this function. + except exceptions.SuperError as exc: + raise exceptions.AttributeInferenceError( + ( + "Lookup for {name} on {target!r} because super call {super!r} " + "is invalid." + ), + target=self, + attribute=name, + context=context, + super_=exc.super_, + ) from exc + except exceptions.MroError as exc: + raise exceptions.AttributeInferenceError( + ( + "Lookup for {name} on {target!r} failed because {cls!r} has an " + "invalid MRO." + ), + target=self, + attribute=name, + context=context, + mros=exc.mros, + cls=exc.cls, + ) from exc + found = False + for cls in mro: + if name not in cls.locals: + continue + + found = True + for inferred in bases._infer_stmts([cls[name]], context, frame=self): + if not isinstance(inferred, scoped_nodes.FunctionDef): + yield inferred + continue + + # We can obtain different descriptors from a super depending + # on what we are accessing and where the super call is. + if inferred.type == "classmethod": + yield bases.BoundMethod(inferred, cls) + elif self._scope.type == "classmethod" and inferred.type == "method": + yield inferred + elif self._class_based or inferred.type == "staticmethod": + yield inferred + elif isinstance(inferred, Property): + function = inferred.function + try: + yield from function.infer_call_result( + caller=self, context=context + ) + except exceptions.InferenceError: + yield util.Uninferable + elif bases._is_property(inferred): + # TODO: support other descriptors as well. + try: + yield from inferred.infer_call_result(self, context) + except exceptions.InferenceError: + yield util.Uninferable + else: + yield bases.BoundMethod(inferred, cls) + + if not found: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + def getattr(self, name, context=None): + return list(self.igetattr(name, context=context)) + + +class ExceptionInstance(bases.Instance): + """Class for instances of exceptions + + It has special treatment for some of the exceptions's attributes, + which are transformed at runtime into certain concrete objects, such as + the case of .args. + """ + + @decorators.cachedproperty + def special_attributes(self): + qname = self.qname() + instance = objectmodel.BUILTIN_EXCEPTIONS.get( + qname, objectmodel.ExceptionInstanceModel + ) + return instance()(self) + + +class DictInstance(bases.Instance): + """Special kind of instances for dictionaries + + This instance knows the underlying object model of the dictionaries, which means + that methods such as .values or .items can be properly inferred. + """ + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.DictModel()) + + +# Custom objects tailored for dictionaries, which are used to +# disambiguate between the types of Python 2 dict's method returns +# and Python 3 (where they return set like objects). +class DictItems(bases.Proxy): + __str__ = node_classes.NodeNG.__str__ + __repr__ = node_classes.NodeNG.__repr__ + + +class DictKeys(bases.Proxy): + __str__ = node_classes.NodeNG.__str__ + __repr__ = node_classes.NodeNG.__repr__ + + +class DictValues(bases.Proxy): + __str__ = node_classes.NodeNG.__str__ + __repr__ = node_classes.NodeNG.__repr__ + + +class PartialFunction(scoped_nodes.FunctionDef): + """A class representing partial function obtained via functools.partial""" + + def __init__( + self, call, name=None, doc=None, lineno=None, col_offset=None, parent=None + ): + super().__init__(name, doc, lineno, col_offset, parent) + self.filled_positionals = len(call.positional_arguments[1:]) + self.filled_args = call.positional_arguments[1:] + self.filled_keywords = call.keyword_arguments + + def infer_call_result(self, caller=None, context=None): + if context: + current_passed_keywords = { + keyword for (keyword, _) in context.callcontext.keywords + } + for keyword, value in self.filled_keywords.items(): + if keyword not in current_passed_keywords: + context.callcontext.keywords.append((keyword, value)) + + call_context_args = context.callcontext.args or [] + context.callcontext.args = self.filled_args + call_context_args + + return super().infer_call_result(caller=caller, context=context) + + def qname(self): + return self.__class__.__name__ + + +# TODO: Hack to solve the circular import problem between node_classes and objects +# This is not needed in 2.0, which has a cleaner design overall +node_classes.Dict.__bases__ = (node_classes.NodeNG, DictInstance) + + +class Property(scoped_nodes.FunctionDef): + """Class representing a Python property""" + + def __init__( + self, function, name=None, doc=None, lineno=None, col_offset=None, parent=None + ): + self.function = function + super().__init__(name, doc, lineno, col_offset, parent) + + # pylint: disable=unnecessary-lambda + special_attributes = util.lazy_descriptor(lambda: objectmodel.PropertyModel()) + type = "property" + + def pytype(self): + return "%s.property" % BUILTINS + + def infer_call_result(self, caller=None, context=None): + raise exceptions.InferenceError("Properties are not callable") + + def infer(self, context=None, **kwargs): + return iter((self,)) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/protocols.py b/WebCrawler/venv/Lib/site-packages/astroid/protocols.py new file mode 100644 index 0000000..2cdf554 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/protocols.py @@ -0,0 +1,780 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2009-2011, 2013-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Dmitry Pribysh +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2017-2018 Ashley Whetter +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2017 rr- +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 HoverHell +# Copyright (c) 2019 Hugo van Kemenade + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""this module contains a set of functions to handle python protocols for nodes +where it makes sense. +""" + +import collections +import operator as operator_mod + +import itertools + +from astroid import Store +from astroid import arguments +from astroid import bases +from astroid import context as contextmod +from astroid import exceptions +from astroid import decorators +from astroid import node_classes +from astroid import helpers +from astroid import nodes +from astroid import util + +raw_building = util.lazy_import("raw_building") +objects = util.lazy_import("objects") + + +def _reflected_name(name): + return "__r" + name[2:] + + +def _augmented_name(name): + return "__i" + name[2:] + + +_CONTEXTLIB_MGR = "contextlib.contextmanager" +BIN_OP_METHOD = { + "+": "__add__", + "-": "__sub__", + "/": "__truediv__", + "//": "__floordiv__", + "*": "__mul__", + "**": "__pow__", + "%": "__mod__", + "&": "__and__", + "|": "__or__", + "^": "__xor__", + "<<": "__lshift__", + ">>": "__rshift__", + "@": "__matmul__", +} + +REFLECTED_BIN_OP_METHOD = { + key: _reflected_name(value) for (key, value) in BIN_OP_METHOD.items() +} +AUGMENTED_OP_METHOD = { + key + "=": _augmented_name(value) for (key, value) in BIN_OP_METHOD.items() +} + +UNARY_OP_METHOD = { + "+": "__pos__", + "-": "__neg__", + "~": "__invert__", + "not": None, # XXX not '__nonzero__' +} +_UNARY_OPERATORS = { + "+": operator_mod.pos, + "-": operator_mod.neg, + "~": operator_mod.invert, + "not": operator_mod.not_, +} + + +def _infer_unary_op(obj, op): + func = _UNARY_OPERATORS[op] + value = func(obj) + return nodes.const_factory(value) + + +nodes.Tuple.infer_unary_op = lambda self, op: _infer_unary_op(tuple(self.elts), op) +nodes.List.infer_unary_op = lambda self, op: _infer_unary_op(self.elts, op) +nodes.Set.infer_unary_op = lambda self, op: _infer_unary_op(set(self.elts), op) +nodes.Const.infer_unary_op = lambda self, op: _infer_unary_op(self.value, op) +nodes.Dict.infer_unary_op = lambda self, op: _infer_unary_op(dict(self.items), op) + +# Binary operations + +BIN_OP_IMPL = { + "+": lambda a, b: a + b, + "-": lambda a, b: a - b, + "/": lambda a, b: a / b, + "//": lambda a, b: a // b, + "*": lambda a, b: a * b, + "**": lambda a, b: a ** b, + "%": lambda a, b: a % b, + "&": lambda a, b: a & b, + "|": lambda a, b: a | b, + "^": lambda a, b: a ^ b, + "<<": lambda a, b: a << b, + ">>": lambda a, b: a >> b, + "@": operator_mod.matmul, +} +for _KEY, _IMPL in list(BIN_OP_IMPL.items()): + BIN_OP_IMPL[_KEY + "="] = _IMPL + + +@decorators.yes_if_nothing_inferred +def const_infer_binary_op(self, opnode, operator, other, context, _): + not_implemented = nodes.Const(NotImplemented) + if isinstance(other, nodes.Const): + try: + impl = BIN_OP_IMPL[operator] + try: + yield nodes.const_factory(impl(self.value, other.value)) + except TypeError: + # ArithmeticError is not enough: float >> float is a TypeError + yield not_implemented + except Exception: # pylint: disable=broad-except + yield util.Uninferable + except TypeError: + yield not_implemented + elif isinstance(self.value, str) and operator == "%": + # TODO(cpopa): implement string interpolation later on. + yield util.Uninferable + else: + yield not_implemented + + +nodes.Const.infer_binary_op = const_infer_binary_op + + +def _multiply_seq_by_int(self, opnode, other, context): + node = self.__class__(parent=opnode) + filtered_elts = ( + helpers.safe_infer(elt, context) or util.Uninferable + for elt in self.elts + if elt is not util.Uninferable + ) + node.elts = list(filtered_elts) * other.value + return node + + +def _filter_uninferable_nodes(elts, context): + for elt in elts: + if elt is util.Uninferable: + yield nodes.Unknown() + else: + for inferred in elt.infer(context): + if inferred is not util.Uninferable: + yield inferred + else: + yield nodes.Unknown() + + +@decorators.yes_if_nothing_inferred +def tl_infer_binary_op(self, opnode, operator, other, context, method): + not_implemented = nodes.Const(NotImplemented) + if isinstance(other, self.__class__) and operator == "+": + node = self.__class__(parent=opnode) + node.elts = list( + itertools.chain( + _filter_uninferable_nodes(self.elts, context), + _filter_uninferable_nodes(other.elts, context), + ) + ) + yield node + elif isinstance(other, nodes.Const) and operator == "*": + if not isinstance(other.value, int): + yield not_implemented + return + yield _multiply_seq_by_int(self, opnode, other, context) + elif isinstance(other, bases.Instance) and operator == "*": + # Verify if the instance supports __index__. + as_index = helpers.class_instance_as_index(other) + if not as_index: + yield util.Uninferable + else: + yield _multiply_seq_by_int(self, opnode, as_index, context) + else: + yield not_implemented + + +nodes.Tuple.infer_binary_op = tl_infer_binary_op +nodes.List.infer_binary_op = tl_infer_binary_op + + +@decorators.yes_if_nothing_inferred +def instance_class_infer_binary_op(self, opnode, operator, other, context, method): + return method.infer_call_result(self, context) + + +bases.Instance.infer_binary_op = instance_class_infer_binary_op +nodes.ClassDef.infer_binary_op = instance_class_infer_binary_op + + +# assignment ################################################################## + +"""the assigned_stmts method is responsible to return the assigned statement +(e.g. not inferred) according to the assignment type. + +The `assign_path` argument is used to record the lhs path of the original node. +For instance if we want assigned statements for 'c' in 'a, (b,c)', assign_path +will be [1, 1] once arrived to the Assign node. + +The `context` argument is the current inference context which should be given +to any intermediary inference necessary. +""" + + +def _resolve_looppart(parts, assign_path, context): + """recursive function to resolve multiple assignments on loops""" + assign_path = assign_path[:] + index = assign_path.pop(0) + for part in parts: + if part is util.Uninferable: + continue + if not hasattr(part, "itered"): + continue + try: + itered = part.itered() + except TypeError: + continue + for stmt in itered: + index_node = nodes.Const(index) + try: + assigned = stmt.getitem(index_node, context) + except ( + AttributeError, + exceptions.AstroidTypeError, + exceptions.AstroidIndexError, + ): + continue + if not assign_path: + # we achieved to resolved the assignment path, + # don't infer the last part + yield assigned + elif assigned is util.Uninferable: + break + else: + # we are not yet on the last part of the path + # search on each possibly inferred value + try: + yield from _resolve_looppart( + assigned.infer(context), assign_path, context + ) + except exceptions.InferenceError: + break + + +@decorators.raise_if_nothing_inferred +def for_assigned_stmts(self, node=None, context=None, assign_path=None): + if isinstance(self, nodes.AsyncFor) or getattr(self, "is_async", False): + # Skip inferring of async code for now + return dict(node=self, unknown=node, assign_path=assign_path, context=context) + if assign_path is None: + for lst in self.iter.infer(context): + if isinstance(lst, (nodes.Tuple, nodes.List)): + yield from lst.elts + else: + yield from _resolve_looppart(self.iter.infer(context), assign_path, context) + return dict(node=self, unknown=node, assign_path=assign_path, context=context) + + +nodes.For.assigned_stmts = for_assigned_stmts +nodes.Comprehension.assigned_stmts = for_assigned_stmts + + +def sequence_assigned_stmts(self, node=None, context=None, assign_path=None): + if assign_path is None: + assign_path = [] + try: + index = self.elts.index(node) + except ValueError as exc: + raise exceptions.InferenceError( + "Tried to retrieve a node {node!r} which does not exist", + node=self, + assign_path=assign_path, + context=context, + ) from exc + + assign_path.insert(0, index) + return self.parent.assigned_stmts( + node=self, context=context, assign_path=assign_path + ) + + +nodes.Tuple.assigned_stmts = sequence_assigned_stmts +nodes.List.assigned_stmts = sequence_assigned_stmts + + +def assend_assigned_stmts(self, node=None, context=None, assign_path=None): + return self.parent.assigned_stmts(node=self, context=context) + + +nodes.AssignName.assigned_stmts = assend_assigned_stmts +nodes.AssignAttr.assigned_stmts = assend_assigned_stmts + + +def _arguments_infer_argname(self, name, context): + # arguments information may be missing, in which case we can't do anything + # more + if not (self.arguments or self.vararg or self.kwarg): + yield util.Uninferable + return + + functype = self.parent.type + # first argument of instance/class method + if ( + self.arguments + and getattr(self.arguments[0], "name", None) == name + and functype != "staticmethod" + ): + cls = self.parent.parent.scope() + is_metaclass = isinstance(cls, nodes.ClassDef) and cls.type == "metaclass" + # If this is a metaclass, then the first argument will always + # be the class, not an instance. + if context.boundnode and isinstance(context.boundnode, bases.Instance): + cls = context.boundnode._proxied + if is_metaclass or functype == "classmethod": + yield cls + return + if functype == "method": + yield cls.instantiate_class() + return + + if context and context.callcontext: + call_site = arguments.CallSite(context.callcontext, context.extra_context) + yield from call_site.infer_argument(self.parent, name, context) + return + + if name == self.vararg: + vararg = nodes.const_factory(()) + vararg.parent = self + if not self.arguments and self.parent.name == "__init__": + cls = self.parent.parent.scope() + vararg.elts = [cls.instantiate_class()] + yield vararg + return + if name == self.kwarg: + kwarg = nodes.const_factory({}) + kwarg.parent = self + yield kwarg + return + # if there is a default value, yield it. And then yield Uninferable to reflect + # we can't guess given argument value + try: + context = contextmod.copy_context(context) + yield from self.default_value(name).infer(context) + yield util.Uninferable + except exceptions.NoDefault: + yield util.Uninferable + + +def arguments_assigned_stmts(self, node=None, context=None, assign_path=None): + if context.callcontext: + # reset call context/name + callcontext = context.callcontext + context = contextmod.copy_context(context) + context.callcontext = None + args = arguments.CallSite(callcontext, context=context) + return args.infer_argument(self.parent, node.name, context) + return _arguments_infer_argname(self, node.name, context) + + +nodes.Arguments.assigned_stmts = arguments_assigned_stmts + + +@decorators.raise_if_nothing_inferred +def assign_assigned_stmts(self, node=None, context=None, assign_path=None): + if not assign_path: + yield self.value + return None + yield from _resolve_assignment_parts( + self.value.infer(context), assign_path, context + ) + + return dict(node=self, unknown=node, assign_path=assign_path, context=context) + + +def assign_annassigned_stmts(self, node=None, context=None, assign_path=None): + for inferred in assign_assigned_stmts(self, node, context, assign_path): + if inferred is None: + yield util.Uninferable + else: + yield inferred + + +nodes.Assign.assigned_stmts = assign_assigned_stmts +nodes.AnnAssign.assigned_stmts = assign_annassigned_stmts +nodes.AugAssign.assigned_stmts = assign_assigned_stmts + + +def _resolve_assignment_parts(parts, assign_path, context): + """recursive function to resolve multiple assignments""" + assign_path = assign_path[:] + index = assign_path.pop(0) + for part in parts: + assigned = None + if isinstance(part, nodes.Dict): + # A dictionary in an iterating context + try: + assigned, _ = part.items[index] + except IndexError: + return + + elif hasattr(part, "getitem"): + index_node = nodes.Const(index) + try: + assigned = part.getitem(index_node, context) + except (exceptions.AstroidTypeError, exceptions.AstroidIndexError): + return + + if not assigned: + return + + if not assign_path: + # we achieved to resolved the assignment path, don't infer the + # last part + yield assigned + elif assigned is util.Uninferable: + return + else: + # we are not yet on the last part of the path search on each + # possibly inferred value + try: + yield from _resolve_assignment_parts( + assigned.infer(context), assign_path, context + ) + except exceptions.InferenceError: + return + + +@decorators.raise_if_nothing_inferred +def excepthandler_assigned_stmts(self, node=None, context=None, assign_path=None): + for assigned in node_classes.unpack_infer(self.type): + if isinstance(assigned, nodes.ClassDef): + assigned = objects.ExceptionInstance(assigned) + + yield assigned + return dict(node=self, unknown=node, assign_path=assign_path, context=context) + + +nodes.ExceptHandler.assigned_stmts = excepthandler_assigned_stmts + + +def _infer_context_manager(self, mgr, context): + inferred = next(mgr.infer(context=context)) + if isinstance(inferred, bases.Generator): + # Check if it is decorated with contextlib.contextmanager. + func = inferred.parent + if not func.decorators: + raise exceptions.InferenceError( + "No decorators found on inferred generator %s", node=func + ) + + for decorator_node in func.decorators.nodes: + decorator = next(decorator_node.infer(context=context)) + if isinstance(decorator, nodes.FunctionDef): + if decorator.qname() == _CONTEXTLIB_MGR: + break + else: + # It doesn't interest us. + raise exceptions.InferenceError(node=func) + + # Get the first yield point. If it has multiple yields, + # then a RuntimeError will be raised. + + possible_yield_points = func.nodes_of_class(nodes.Yield) + # Ignore yields in nested functions + yield_point = next( + (node for node in possible_yield_points if node.scope() == func), None + ) + if yield_point: + if not yield_point.value: + const = nodes.Const(None) + const.parent = yield_point + const.lineno = yield_point.lineno + yield const + else: + yield from yield_point.value.infer(context=context) + elif isinstance(inferred, bases.Instance): + try: + enter = next(inferred.igetattr("__enter__", context=context)) + except (exceptions.InferenceError, exceptions.AttributeInferenceError): + raise exceptions.InferenceError(node=inferred) + if not isinstance(enter, bases.BoundMethod): + raise exceptions.InferenceError(node=enter) + yield from enter.infer_call_result(self, context) + else: + raise exceptions.InferenceError(node=mgr) + + +@decorators.raise_if_nothing_inferred +def with_assigned_stmts(self, node=None, context=None, assign_path=None): + """Infer names and other nodes from a *with* statement. + + This enables only inference for name binding in a *with* statement. + For instance, in the following code, inferring `func` will return + the `ContextManager` class, not whatever ``__enter__`` returns. + We are doing this intentionally, because we consider that the context + manager result is whatever __enter__ returns and what it is binded + using the ``as`` keyword. + + class ContextManager(object): + def __enter__(self): + return 42 + with ContextManager() as f: + pass + + # ContextManager().infer() will return ContextManager + # f.infer() will return 42. + + Arguments: + self: nodes.With + node: The target of the assignment, `as (a, b)` in `with foo as (a, b)`. + context: Inference context used for caching already inferred objects + assign_path: + A list of indices, where each index specifies what item to fetch from + the inference results. + """ + try: + mgr = next(mgr for (mgr, vars) in self.items if vars == node) + except StopIteration: + return None + if assign_path is None: + yield from _infer_context_manager(self, mgr, context) + else: + for result in _infer_context_manager(self, mgr, context): + # Walk the assign_path and get the item at the final index. + obj = result + for index in assign_path: + if not hasattr(obj, "elts"): + raise exceptions.InferenceError( + "Wrong type ({targets!r}) for {node!r} assignment", + node=self, + targets=node, + assign_path=assign_path, + context=context, + ) + try: + obj = obj.elts[index] + except IndexError as exc: + raise exceptions.InferenceError( + "Tried to infer a nonexistent target with index {index} " + "in {node!r}.", + node=self, + targets=node, + assign_path=assign_path, + context=context, + ) from exc + except TypeError as exc: + raise exceptions.InferenceError( + "Tried to unpack a non-iterable value " "in {node!r}.", + node=self, + targets=node, + assign_path=assign_path, + context=context, + ) from exc + yield obj + return dict(node=self, unknown=node, assign_path=assign_path, context=context) + + +nodes.With.assigned_stmts = with_assigned_stmts + + +@decorators.raise_if_nothing_inferred +def named_expr_assigned_stmts(self, node, context=None, assign_path=None): + """Infer names and other nodes from an assignment expression""" + if self.target == node: + yield from self.value.infer(context=context) + else: + raise exceptions.InferenceError( + "Cannot infer NamedExpr node {node!r}", + node=self, + assign_path=assign_path, + context=context, + ) + + +nodes.NamedExpr.assigned_stmts = named_expr_assigned_stmts + + +@decorators.yes_if_nothing_inferred +def starred_assigned_stmts(self, node=None, context=None, assign_path=None): + """ + Arguments: + self: nodes.Starred + node: a node related to the current underlying Node. + context: Inference context used for caching already inferred objects + assign_path: + A list of indices, where each index specifies what item to fetch from + the inference results. + """ + # pylint: disable=too-many-locals,too-many-branches,too-many-statements + def _determine_starred_iteration_lookups(starred, target, lookups): + # Determine the lookups for the rhs of the iteration + itered = target.itered() + for index, element in enumerate(itered): + if ( + isinstance(element, nodes.Starred) + and element.value.name == starred.value.name + ): + lookups.append((index, len(itered))) + break + if isinstance(element, nodes.Tuple): + lookups.append((index, len(element.itered()))) + _determine_starred_iteration_lookups(starred, element, lookups) + + stmt = self.statement() + if not isinstance(stmt, (nodes.Assign, nodes.For)): + raise exceptions.InferenceError( + "Statement {stmt!r} enclosing {node!r} " "must be an Assign or For node.", + node=self, + stmt=stmt, + unknown=node, + context=context, + ) + + if context is None: + context = contextmod.InferenceContext() + + if isinstance(stmt, nodes.Assign): + value = stmt.value + lhs = stmt.targets[0] + + if sum(1 for _ in lhs.nodes_of_class(nodes.Starred)) > 1: + raise exceptions.InferenceError( + "Too many starred arguments in the " " assignment targets {lhs!r}.", + node=self, + targets=lhs, + unknown=node, + context=context, + ) + + try: + rhs = next(value.infer(context)) + except exceptions.InferenceError: + yield util.Uninferable + return + if rhs is util.Uninferable or not hasattr(rhs, "itered"): + yield util.Uninferable + return + + try: + elts = collections.deque(rhs.itered()) + except TypeError: + yield util.Uninferable + return + + # Unpack iteratively the values from the rhs of the assignment, + # until the find the starred node. What will remain will + # be the list of values which the Starred node will represent + # This is done in two steps, from left to right to remove + # anything before the starred node and from right to left + # to remove anything after the starred node. + + for index, left_node in enumerate(lhs.elts): + if not isinstance(left_node, nodes.Starred): + if not elts: + break + elts.popleft() + continue + lhs_elts = collections.deque(reversed(lhs.elts[index:])) + for right_node in lhs_elts: + if not isinstance(right_node, nodes.Starred): + if not elts: + break + elts.pop() + continue + + # We're done unpacking. + elts = list(elts) + packed = nodes.List( + ctx=Store, parent=self, lineno=lhs.lineno, col_offset=lhs.col_offset + ) + packed.postinit(elts=elts) + yield packed + break + + if isinstance(stmt, nodes.For): + try: + inferred_iterable = next(stmt.iter.infer(context=context)) + except exceptions.InferenceError: + yield util.Uninferable + return + if inferred_iterable is util.Uninferable or not hasattr( + inferred_iterable, "itered" + ): + yield util.Uninferable + return + try: + itered = inferred_iterable.itered() + except TypeError: + yield util.Uninferable + return + + target = stmt.target + + if not isinstance(target, nodes.Tuple): + raise exceptions.InferenceError( + "Could not make sense of this, the target must be a tuple", + context=context, + ) + + lookups = [] + _determine_starred_iteration_lookups(self, target, lookups) + if not lookups: + raise exceptions.InferenceError( + "Could not make sense of this, needs at least a lookup", context=context + ) + + # Make the last lookup a slice, since that what we want for a Starred node + last_element_index, last_element_length = lookups[-1] + is_starred_last = last_element_index == (last_element_length - 1) + + lookup_slice = slice( + last_element_index, + None if is_starred_last else (last_element_length - last_element_index), + ) + lookups[-1] = lookup_slice + + for element in itered: + + # We probably want to infer the potential values *for each* element in an + # iterable, but we can't infer a list of all values, when only a list of + # step values are expected: + # + # for a, *b in [...]: + # b + # + # *b* should now point to just the elements at that particular iteration step, + # which astroid can't know about. + + found_element = None + for lookup in lookups: + if not hasattr(element, "itered"): + break + if not isinstance(lookup, slice): + # Grab just the index, not the whole length + lookup = lookup[0] + try: + itered_inner_element = element.itered() + element = itered_inner_element[lookup] + except IndexError: + break + except TypeError: + # Most likely the itered() call failed, cannot make sense of this + yield util.Uninferable + return + else: + found_element = element + + unpacked = nodes.List( + ctx=Store, parent=self, lineno=self.lineno, col_offset=self.col_offset + ) + unpacked.postinit(elts=found_element or []) + yield unpacked + return + + yield util.Uninferable + + +nodes.Starred.assigned_stmts = starred_assigned_stmts diff --git a/WebCrawler/venv/Lib/site-packages/astroid/raw_building.py b/WebCrawler/venv/Lib/site-packages/astroid/raw_building.py new file mode 100644 index 0000000..b261277 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/raw_building.py @@ -0,0 +1,483 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2006-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2012 FELD Boris +# Copyright (c) 2014-2020 Claudiu Popa +# Copyright (c) 2014 Google, Inc. +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Florian Bruhin +# Copyright (c) 2015 Ovidiu Sabou +# Copyright (c) 2016 Derek Gustafson +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2020 Robin Jarry + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""this module contains a set of functions to create astroid trees from scratch +(build_* functions) or from living object (object_build_* functions) +""" + +import builtins +import inspect +import os +import sys +import types + +from astroid import bases +from astroid import manager +from astroid import node_classes +from astroid import nodes + + +MANAGER = manager.AstroidManager() +# the keys of CONST_CLS eg python builtin types + +_CONSTANTS = tuple(node_classes.CONST_CLS) +_BUILTINS = vars(builtins) +TYPE_NONE = type(None) +TYPE_NOTIMPLEMENTED = type(NotImplemented) +TYPE_ELLIPSIS = type(...) + + +def _io_discrepancy(member): + # _io module names itself `io`: http://bugs.python.org/issue18602 + member_self = getattr(member, "__self__", None) + return ( + member_self + and inspect.ismodule(member_self) + and member_self.__name__ == "_io" + and member.__module__ == "io" + ) + + +def _attach_local_node(parent, node, name): + node.name = name # needed by add_local_node + parent.add_local_node(node) + + +def _add_dunder_class(func, member): + """Add a __class__ member to the given func node, if we can determine it.""" + python_cls = member.__class__ + cls_name = getattr(python_cls, "__name__", None) + if not cls_name: + return + cls_bases = [ancestor.__name__ for ancestor in python_cls.__bases__] + ast_klass = build_class(cls_name, cls_bases, python_cls.__doc__) + func.instance_attrs["__class__"] = [ast_klass] + + +_marker = object() + + +def attach_dummy_node(node, name, runtime_object=_marker): + """create a dummy node and register it in the locals of the given + node with the specified name + """ + enode = nodes.EmptyNode() + enode.object = runtime_object + _attach_local_node(node, enode, name) + + +def _has_underlying_object(self): + return self.object is not None and self.object is not _marker + + +nodes.EmptyNode.has_underlying_object = _has_underlying_object + + +def attach_const_node(node, name, value): + """create a Const node and register it in the locals of the given + node with the specified name + """ + if name not in node.special_attributes: + _attach_local_node(node, nodes.const_factory(value), name) + + +def attach_import_node(node, modname, membername): + """create a ImportFrom node and register it in the locals of the given + node with the specified name + """ + from_node = nodes.ImportFrom(modname, [(membername, None)]) + _attach_local_node(node, from_node, membername) + + +def build_module(name, doc=None): + """create and initialize an astroid Module node""" + node = nodes.Module(name, doc, pure_python=False) + node.package = False + node.parent = None + return node + + +def build_class(name, basenames=(), doc=None): + """create and initialize an astroid ClassDef node""" + node = nodes.ClassDef(name, doc) + for base in basenames: + basenode = nodes.Name() + basenode.name = base + node.bases.append(basenode) + basenode.parent = node + return node + + +def build_function(name, args=None, posonlyargs=None, defaults=None, doc=None): + """create and initialize an astroid FunctionDef node""" + args, defaults, posonlyargs = args or [], defaults or [], posonlyargs or [] + # first argument is now a list of decorators + func = nodes.FunctionDef(name, doc) + func.args = argsnode = nodes.Arguments() + argsnode.args = [] + argsnode.posonlyargs = [] + for arg in args: + argsnode.args.append(nodes.Name()) + argsnode.args[-1].name = arg + argsnode.args[-1].parent = argsnode + for arg in posonlyargs: + argsnode.posonlyargs.append(nodes.Name()) + argsnode.posonlyargs[-1].name = arg + argsnode.posonlyargs[-1].parent = argsnode + argsnode.defaults = [] + for default in defaults: + argsnode.defaults.append(nodes.const_factory(default)) + argsnode.defaults[-1].parent = argsnode + argsnode.kwarg = None + argsnode.vararg = None + argsnode.parent = func + if args: + register_arguments(func) + return func + + +def build_from_import(fromname, names): + """create and initialize an astroid ImportFrom import statement""" + return nodes.ImportFrom(fromname, [(name, None) for name in names]) + + +def register_arguments(func, args=None): + """add given arguments to local + + args is a list that may contains nested lists + (i.e. def func(a, (b, c, d)): ...) + """ + if args is None: + args = func.args.args + if func.args.vararg: + func.set_local(func.args.vararg, func.args) + if func.args.kwarg: + func.set_local(func.args.kwarg, func.args) + for arg in args: + if isinstance(arg, nodes.Name): + func.set_local(arg.name, arg) + else: + register_arguments(func, arg.elts) + + +def object_build_class(node, member, localname): + """create astroid for a living class object""" + basenames = [base.__name__ for base in member.__bases__] + return _base_class_object_build(node, member, basenames, localname=localname) + + +def object_build_function(node, member, localname): + """create astroid for a living function object""" + signature = inspect.signature(member) + args = [] + defaults = [] + posonlyargs = [] + for param_name, param in signature.parameters.items(): + if param.kind == inspect.Parameter.POSITIONAL_ONLY: + posonlyargs.append(param_name) + elif param.kind == inspect.Parameter.POSITIONAL_OR_KEYWORD: + args.append(param_name) + elif param.kind == inspect.Parameter.VAR_POSITIONAL: + args.append(param_name) + elif param.kind == inspect.Parameter.VAR_KEYWORD: + args.append(param_name) + if param.default is not inspect._empty: + defaults.append(param.default) + func = build_function( + getattr(member, "__name__", None) or localname, + args, + posonlyargs, + defaults, + member.__doc__, + ) + node.add_local_node(func, localname) + + +def object_build_datadescriptor(node, member, name): + """create astroid for a living data descriptor object""" + return _base_class_object_build(node, member, [], name) + + +def object_build_methoddescriptor(node, member, localname): + """create astroid for a living method descriptor object""" + # FIXME get arguments ? + func = build_function( + getattr(member, "__name__", None) or localname, doc=member.__doc__ + ) + # set node's arguments to None to notice that we have no information, not + # and empty argument list + func.args.args = None + node.add_local_node(func, localname) + _add_dunder_class(func, member) + + +def _base_class_object_build(node, member, basenames, name=None, localname=None): + """create astroid for a living class object, with a given set of base names + (e.g. ancestors) + """ + klass = build_class( + name or getattr(member, "__name__", None) or localname, + basenames, + member.__doc__, + ) + klass._newstyle = isinstance(member, type) + node.add_local_node(klass, localname) + try: + # limit the instantiation trick since it's too dangerous + # (such as infinite test execution...) + # this at least resolves common case such as Exception.args, + # OSError.errno + if issubclass(member, Exception): + instdict = member().__dict__ + else: + raise TypeError + except TypeError: + pass + else: + for item_name, obj in instdict.items(): + valnode = nodes.EmptyNode() + valnode.object = obj + valnode.parent = klass + valnode.lineno = 1 + klass.instance_attrs[item_name] = [valnode] + return klass + + +def _build_from_function(node, name, member, module): + # verify this is not an imported function + try: + code = member.__code__ + except AttributeError: + # Some implementations don't provide the code object, + # such as Jython. + code = None + filename = getattr(code, "co_filename", None) + if filename is None: + assert isinstance(member, object) + object_build_methoddescriptor(node, member, name) + elif filename != getattr(module, "__file__", None): + attach_dummy_node(node, name, member) + else: + object_build_function(node, member, name) + + +def _safe_has_attribute(obj, member): + try: + return hasattr(obj, member) + except Exception: # pylint: disable=broad-except + return False + + +class InspectBuilder: + """class for building nodes from living object + + this is actually a really minimal representation, including only Module, + FunctionDef and ClassDef nodes and some others as guessed. + """ + + def __init__(self): + self._done = {} + self._module = None + + def inspect_build(self, module, modname=None, path=None): + """build astroid from a living module (i.e. using inspect) + this is used when there is no python source code available (either + because it's a built-in module or because the .py is not available) + """ + self._module = module + if modname is None: + modname = module.__name__ + try: + node = build_module(modname, module.__doc__) + except AttributeError: + # in jython, java modules have no __doc__ (see #109562) + node = build_module(modname) + node.file = node.path = os.path.abspath(path) if path else path + node.name = modname + MANAGER.cache_module(node) + node.package = hasattr(module, "__path__") + self._done = {} + self.object_build(node, module) + return node + + def object_build(self, node, obj): + """recursive method which create a partial ast from real objects + (only function, class, and method are handled) + """ + if obj in self._done: + return self._done[obj] + self._done[obj] = node + for name in dir(obj): + try: + member = getattr(obj, name) + except AttributeError: + # damned ExtensionClass.Base, I know you're there ! + attach_dummy_node(node, name) + continue + if inspect.ismethod(member): + member = member.__func__ + if inspect.isfunction(member): + _build_from_function(node, name, member, self._module) + elif inspect.isbuiltin(member): + if not _io_discrepancy(member) and self.imported_member( + node, member, name + ): + continue + object_build_methoddescriptor(node, member, name) + elif inspect.isclass(member): + if self.imported_member(node, member, name): + continue + if member in self._done: + class_node = self._done[member] + if class_node not in node.locals.get(name, ()): + node.add_local_node(class_node, name) + else: + class_node = object_build_class(node, member, name) + # recursion + self.object_build(class_node, member) + if name == "__class__" and class_node.parent is None: + class_node.parent = self._done[self._module] + elif inspect.ismethoddescriptor(member): + assert isinstance(member, object) + object_build_methoddescriptor(node, member, name) + elif inspect.isdatadescriptor(member): + assert isinstance(member, object) + object_build_datadescriptor(node, member, name) + elif isinstance(member, _CONSTANTS): + attach_const_node(node, name, member) + elif inspect.isroutine(member): + # This should be called for Jython, where some builtin + # methods aren't caught by isbuiltin branch. + _build_from_function(node, name, member, self._module) + elif _safe_has_attribute(member, "__all__"): + module = build_module(name) + _attach_local_node(node, module, name) + # recursion + self.object_build(module, member) + else: + # create an empty node so that the name is actually defined + attach_dummy_node(node, name, member) + return None + + def imported_member(self, node, member, name): + """verify this is not an imported class or handle it""" + # /!\ some classes like ExtensionClass doesn't have a __module__ + # attribute ! Also, this may trigger an exception on badly built module + # (see http://www.logilab.org/ticket/57299 for instance) + try: + modname = getattr(member, "__module__", None) + except TypeError: + modname = None + if modname is None: + if name in ("__new__", "__subclasshook__"): + # Python 2.5.1 (r251:54863, Sep 1 2010, 22:03:14) + # >>> print object.__new__.__module__ + # None + modname = builtins.__name__ + else: + attach_dummy_node(node, name, member) + return True + + real_name = {"gtk": "gtk_gtk", "_io": "io"}.get(modname, modname) + + if real_name != self._module.__name__: + # check if it sounds valid and then add an import node, else use a + # dummy node + try: + getattr(sys.modules[modname], name) + except (KeyError, AttributeError): + attach_dummy_node(node, name, member) + else: + attach_import_node(node, modname, name) + return True + return False + + +### astroid bootstrapping ###################################################### + +_CONST_PROXY = {} + +# TODO : find a nicer way to handle this situation; +def _set_proxied(const): + return _CONST_PROXY[const.value.__class__] + + +def _astroid_bootstrapping(): + """astroid bootstrapping the builtins module""" + # this boot strapping is necessary since we need the Const nodes to + # inspect_build builtins, and then we can proxy Const + builder = InspectBuilder() + astroid_builtin = builder.inspect_build(builtins) + + # pylint: disable=redefined-outer-name + for cls, node_cls in node_classes.CONST_CLS.items(): + if cls is TYPE_NONE: + proxy = build_class("NoneType") + proxy.parent = astroid_builtin + elif cls is TYPE_NOTIMPLEMENTED: + proxy = build_class("NotImplementedType") + proxy.parent = astroid_builtin + elif cls is TYPE_ELLIPSIS: + proxy = build_class("Ellipsis") + proxy.parent = astroid_builtin + else: + proxy = astroid_builtin.getattr(cls.__name__)[0] + if cls in (dict, list, set, tuple): + node_cls._proxied = proxy + else: + _CONST_PROXY[cls] = proxy + + # Set the builtin module as parent for some builtins. + nodes.Const._proxied = property(_set_proxied) + + _GeneratorType = nodes.ClassDef( + types.GeneratorType.__name__, types.GeneratorType.__doc__ + ) + _GeneratorType.parent = astroid_builtin + bases.Generator._proxied = _GeneratorType + builder.object_build(bases.Generator._proxied, types.GeneratorType) + + if hasattr(types, "AsyncGeneratorType"): + # pylint: disable=no-member; AsyncGeneratorType + _AsyncGeneratorType = nodes.ClassDef( + types.AsyncGeneratorType.__name__, types.AsyncGeneratorType.__doc__ + ) + _AsyncGeneratorType.parent = astroid_builtin + bases.AsyncGenerator._proxied = _AsyncGeneratorType + builder.object_build(bases.AsyncGenerator._proxied, types.AsyncGeneratorType) + builtin_types = ( + types.GetSetDescriptorType, + types.GeneratorType, + types.MemberDescriptorType, + TYPE_NONE, + TYPE_NOTIMPLEMENTED, + types.FunctionType, + types.MethodType, + types.BuiltinFunctionType, + types.ModuleType, + types.TracebackType, + ) + for _type in builtin_types: + if _type.__name__ not in astroid_builtin: + cls = nodes.ClassDef(_type.__name__, _type.__doc__) + cls.parent = astroid_builtin + builder.object_build(cls, _type) + astroid_builtin[_type.__name__] = cls + + +_astroid_bootstrapping() diff --git a/WebCrawler/venv/Lib/site-packages/astroid/rebuilder.py b/WebCrawler/venv/Lib/site-packages/astroid/rebuilder.py new file mode 100644 index 0000000..3fc1a83 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/rebuilder.py @@ -0,0 +1,1010 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2009-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2013-2020 Claudiu Popa +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2014 Alexander Presnyakov +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016-2017 Derek Gustafson +# Copyright (c) 2016 Jared Garst +# Copyright (c) 2017 Hugo +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2017 rr- +# Copyright (c) 2018-2019 Ville Skyttä +# Copyright (c) 2018 Tomas Gavenciak +# Copyright (c) 2018 Serhiy Storchaka +# Copyright (c) 2018 Nick Drozd +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2019-2020 Ashley Whetter +# Copyright (c) 2019 Hugo van Kemenade +# Copyright (c) 2019 Zbigniew Jędrzejewski-Szmek + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""this module contains utilities for rebuilding an _ast tree in +order to get a single Astroid representation +""" + +import sys +from typing import Optional + +import astroid +from astroid._ast import parse_function_type_comment, get_parser_module, ParserModule +from astroid import nodes + + +CONST_NAME_TRANSFORMS = {"None": None, "True": True, "False": False} + +REDIRECT = { + "arguments": "Arguments", + "comprehension": "Comprehension", + "ListCompFor": "Comprehension", + "GenExprFor": "Comprehension", + "excepthandler": "ExceptHandler", + "keyword": "Keyword", +} +PY37 = sys.version_info >= (3, 7) +PY38 = sys.version_info >= (3, 8) + + +def _visit_or_none(node, attr, visitor, parent, visit="visit", **kws): + """If the given node has an attribute, visits the attribute, and + otherwise returns None. + + """ + value = getattr(node, attr, None) + if value: + return getattr(visitor, visit)(value, parent, **kws) + + return None + + +class TreeRebuilder: + """Rebuilds the _ast tree to become an Astroid tree""" + + def __init__(self, manager, parser_module: Optional[ParserModule] = None): + self._manager = manager + self._global_names = [] + self._import_from_nodes = [] + self._delayed_assattr = [] + self._visit_meths = {} + + if parser_module is None: + self._parser_module = get_parser_module() + else: + self._parser_module = parser_module + self._module = self._parser_module.module + + def _get_doc(self, node): + try: + if PY37 and hasattr(node, "docstring"): + doc = node.docstring + return node, doc + if node.body and isinstance(node.body[0], self._module.Expr): + + first_value = node.body[0].value + if isinstance(first_value, self._module.Str) or ( + PY38 + and isinstance(first_value, self._module.Constant) + and isinstance(first_value.value, str) + ): + doc = first_value.value if PY38 else first_value.s + node.body = node.body[1:] + return node, doc + except IndexError: + pass # ast built from scratch + return node, None + + def _get_context(self, node): + return self._parser_module.context_classes.get(type(node.ctx), astroid.Load) + + def visit_module(self, node, modname, modpath, package): + """visit a Module node by returning a fresh instance of it""" + node, doc = self._get_doc(node) + newnode = nodes.Module( + name=modname, + doc=doc, + file=modpath, + path=[modpath], + package=package, + parent=None, + ) + newnode.postinit([self.visit(child, newnode) for child in node.body]) + return newnode + + def visit(self, node, parent): + cls = node.__class__ + if cls in self._visit_meths: + visit_method = self._visit_meths[cls] + else: + cls_name = cls.__name__ + visit_name = "visit_" + REDIRECT.get(cls_name, cls_name).lower() + visit_method = getattr(self, visit_name) + self._visit_meths[cls] = visit_method + return visit_method(node, parent) + + def _save_assignment(self, node, name=None): + """save assignement situation since node.parent is not available yet""" + if self._global_names and node.name in self._global_names[-1]: + node.root().set_local(node.name, node) + else: + node.parent.set_local(node.name, node) + + def visit_arg(self, node, parent): + """visit an arg node by returning a fresh AssName instance""" + return self.visit_assignname(node, parent, node.arg) + + def visit_arguments(self, node, parent): + """visit an Arguments node by returning a fresh instance of it""" + vararg, kwarg = node.vararg, node.kwarg + newnode = nodes.Arguments( + vararg.arg if vararg else None, kwarg.arg if kwarg else None, parent + ) + args = [self.visit(child, newnode) for child in node.args] + defaults = [self.visit(child, newnode) for child in node.defaults] + varargannotation = None + kwargannotation = None + posonlyargs = [] + # change added in 82732 (7c5c678e4164), vararg and kwarg + # are instances of `_ast.arg`, not strings + if vararg: + if node.vararg.annotation: + varargannotation = self.visit(node.vararg.annotation, newnode) + vararg = vararg.arg + if kwarg: + if node.kwarg.annotation: + kwargannotation = self.visit(node.kwarg.annotation, newnode) + kwarg = kwarg.arg + kwonlyargs = [self.visit(child, newnode) for child in node.kwonlyargs] + kw_defaults = [ + self.visit(child, newnode) if child else None for child in node.kw_defaults + ] + annotations = [ + self.visit(arg.annotation, newnode) if arg.annotation else None + for arg in node.args + ] + kwonlyargs_annotations = [ + self.visit(arg.annotation, newnode) if arg.annotation else None + for arg in node.kwonlyargs + ] + + posonlyargs_annotations = [] + if PY38: + posonlyargs = [self.visit(child, newnode) for child in node.posonlyargs] + posonlyargs_annotations = [ + self.visit(arg.annotation, newnode) if arg.annotation else None + for arg in node.posonlyargs + ] + type_comment_args = [ + self.check_type_comment(child, parent=newnode) for child in node.args + ] + type_comment_kwonlyargs = [ + self.check_type_comment(child, parent=newnode) for child in node.kwonlyargs + ] + type_comment_posonlyargs = [] + if PY38: + type_comment_posonlyargs = [ + self.check_type_comment(child, parent=newnode) + for child in node.posonlyargs + ] + + newnode.postinit( + args=args, + defaults=defaults, + kwonlyargs=kwonlyargs, + posonlyargs=posonlyargs, + kw_defaults=kw_defaults, + annotations=annotations, + kwonlyargs_annotations=kwonlyargs_annotations, + posonlyargs_annotations=posonlyargs_annotations, + varargannotation=varargannotation, + kwargannotation=kwargannotation, + type_comment_args=type_comment_args, + type_comment_kwonlyargs=type_comment_kwonlyargs, + type_comment_posonlyargs=type_comment_posonlyargs, + ) + # save argument names in locals: + if vararg: + newnode.parent.set_local(vararg, newnode) + if kwarg: + newnode.parent.set_local(kwarg, newnode) + return newnode + + def visit_assert(self, node, parent): + """visit a Assert node by returning a fresh instance of it""" + newnode = nodes.Assert(node.lineno, node.col_offset, parent) + if node.msg: + msg = self.visit(node.msg, newnode) + else: + msg = None + newnode.postinit(self.visit(node.test, newnode), msg) + return newnode + + def check_type_comment(self, node, parent): + type_comment = getattr(node, "type_comment", None) + if not type_comment: + return None + + try: + type_comment_ast = self._parser_module.parse(type_comment) + except SyntaxError: + # Invalid type comment, just skip it. + return None + + type_object = self.visit(type_comment_ast.body[0], parent=parent) + if not isinstance(type_object, nodes.Expr): + return None + + return type_object.value + + def check_function_type_comment(self, node): + type_comment = getattr(node, "type_comment", None) + if not type_comment: + return None + + try: + type_comment_ast = parse_function_type_comment(type_comment) + except SyntaxError: + # Invalid type comment, just skip it. + return None + + returns = None + argtypes = [ + self.visit(elem, node) for elem in (type_comment_ast.argtypes or []) + ] + if type_comment_ast.returns: + returns = self.visit(type_comment_ast.returns, node) + + return returns, argtypes + + # Async structs added in Python 3.5 + def visit_asyncfunctiondef(self, node, parent): + return self._visit_functiondef(nodes.AsyncFunctionDef, node, parent) + + def visit_asyncfor(self, node, parent): + return self._visit_for(nodes.AsyncFor, node, parent) + + def visit_await(self, node, parent): + newnode = nodes.Await(node.lineno, node.col_offset, parent) + newnode.postinit(value=self.visit(node.value, newnode)) + return newnode + + def visit_asyncwith(self, node, parent): + return self._visit_with(nodes.AsyncWith, node, parent) + + def visit_assign(self, node, parent): + """visit a Assign node by returning a fresh instance of it""" + newnode = nodes.Assign(node.lineno, node.col_offset, parent) + type_annotation = self.check_type_comment(node, parent=newnode) + newnode.postinit( + targets=[self.visit(child, newnode) for child in node.targets], + value=self.visit(node.value, newnode), + type_annotation=type_annotation, + ) + return newnode + + def visit_annassign(self, node, parent): + """visit an AnnAssign node by returning a fresh instance of it""" + newnode = nodes.AnnAssign(node.lineno, node.col_offset, parent) + annotation = _visit_or_none(node, "annotation", self, newnode) + newnode.postinit( + target=self.visit(node.target, newnode), + annotation=annotation, + simple=node.simple, + value=_visit_or_none(node, "value", self, newnode), + ) + return newnode + + def visit_assignname(self, node, parent, node_name=None): + """visit a node and return a AssignName node""" + newnode = nodes.AssignName( + node_name, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + self._save_assignment(newnode) + return newnode + + def visit_augassign(self, node, parent): + """visit a AugAssign node by returning a fresh instance of it""" + newnode = nodes.AugAssign( + self._parser_module.bin_op_classes[type(node.op)] + "=", + node.lineno, + node.col_offset, + parent, + ) + newnode.postinit( + self.visit(node.target, newnode), self.visit(node.value, newnode) + ) + return newnode + + def visit_repr(self, node, parent): + """visit a Backquote node by returning a fresh instance of it""" + newnode = nodes.Repr(node.lineno, node.col_offset, parent) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_binop(self, node, parent): + """visit a BinOp node by returning a fresh instance of it""" + newnode = nodes.BinOp( + self._parser_module.bin_op_classes[type(node.op)], + node.lineno, + node.col_offset, + parent, + ) + newnode.postinit( + self.visit(node.left, newnode), self.visit(node.right, newnode) + ) + return newnode + + def visit_boolop(self, node, parent): + """visit a BoolOp node by returning a fresh instance of it""" + newnode = nodes.BoolOp( + self._parser_module.bool_op_classes[type(node.op)], + node.lineno, + node.col_offset, + parent, + ) + newnode.postinit([self.visit(child, newnode) for child in node.values]) + return newnode + + def visit_break(self, node, parent): + """visit a Break node by returning a fresh instance of it""" + return nodes.Break( + getattr(node, "lineno", None), getattr(node, "col_offset", None), parent + ) + + def visit_call(self, node, parent): + """visit a CallFunc node by returning a fresh instance of it""" + newnode = nodes.Call(node.lineno, node.col_offset, parent) + starargs = _visit_or_none(node, "starargs", self, newnode) + kwargs = _visit_or_none(node, "kwargs", self, newnode) + args = [self.visit(child, newnode) for child in node.args] + + if node.keywords: + keywords = [self.visit(child, newnode) for child in node.keywords] + else: + keywords = None + if starargs: + new_starargs = nodes.Starred( + col_offset=starargs.col_offset, + lineno=starargs.lineno, + parent=starargs.parent, + ) + new_starargs.postinit(value=starargs) + args.append(new_starargs) + if kwargs: + new_kwargs = nodes.Keyword( + arg=None, + col_offset=kwargs.col_offset, + lineno=kwargs.lineno, + parent=kwargs.parent, + ) + new_kwargs.postinit(value=kwargs) + if keywords: + keywords.append(new_kwargs) + else: + keywords = [new_kwargs] + + newnode.postinit(self.visit(node.func, newnode), args, keywords) + return newnode + + def visit_classdef(self, node, parent, newstyle=True): + """visit a ClassDef node to become astroid""" + node, doc = self._get_doc(node) + newnode = nodes.ClassDef(node.name, doc, node.lineno, node.col_offset, parent) + metaclass = None + for keyword in node.keywords: + if keyword.arg == "metaclass": + metaclass = self.visit(keyword, newnode).value + break + if node.decorator_list: + decorators = self.visit_decorators(node, newnode) + else: + decorators = None + newnode.postinit( + [self.visit(child, newnode) for child in node.bases], + [self.visit(child, newnode) for child in node.body], + decorators, + newstyle, + metaclass, + [ + self.visit(kwd, newnode) + for kwd in node.keywords + if kwd.arg != "metaclass" + ], + ) + return newnode + + def visit_const(self, node, parent): + """visit a Const node by returning a fresh instance of it""" + return nodes.Const( + node.value, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + def visit_continue(self, node, parent): + """visit a Continue node by returning a fresh instance of it""" + return nodes.Continue( + getattr(node, "lineno", None), getattr(node, "col_offset", None), parent + ) + + def visit_compare(self, node, parent): + """visit a Compare node by returning a fresh instance of it""" + newnode = nodes.Compare(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.left, newnode), + [ + ( + self._parser_module.cmp_op_classes[op.__class__], + self.visit(expr, newnode), + ) + for (op, expr) in zip(node.ops, node.comparators) + ], + ) + return newnode + + def visit_comprehension(self, node, parent): + """visit a Comprehension node by returning a fresh instance of it""" + newnode = nodes.Comprehension(parent) + newnode.postinit( + self.visit(node.target, newnode), + self.visit(node.iter, newnode), + [self.visit(child, newnode) for child in node.ifs], + getattr(node, "is_async", None), + ) + return newnode + + def visit_decorators(self, node, parent): + """visit a Decorators node by returning a fresh instance of it""" + # /!\ node is actually an _ast.FunctionDef node while + # parent is an astroid.nodes.FunctionDef node + if PY38: + # Set the line number of the first decorator for Python 3.8+. + lineno = node.decorator_list[0].lineno + else: + lineno = node.lineno + newnode = nodes.Decorators(lineno, node.col_offset, parent) + newnode.postinit([self.visit(child, newnode) for child in node.decorator_list]) + return newnode + + def visit_delete(self, node, parent): + """visit a Delete node by returning a fresh instance of it""" + newnode = nodes.Delete(node.lineno, node.col_offset, parent) + newnode.postinit([self.visit(child, newnode) for child in node.targets]) + return newnode + + def _visit_dict_items(self, node, parent, newnode): + for key, value in zip(node.keys, node.values): + rebuilt_value = self.visit(value, newnode) + if not key: + # Python 3.5 and extended unpacking + rebuilt_key = nodes.DictUnpack( + rebuilt_value.lineno, rebuilt_value.col_offset, parent + ) + else: + rebuilt_key = self.visit(key, newnode) + yield rebuilt_key, rebuilt_value + + def visit_dict(self, node, parent): + """visit a Dict node by returning a fresh instance of it""" + newnode = nodes.Dict(node.lineno, node.col_offset, parent) + items = list(self._visit_dict_items(node, parent, newnode)) + newnode.postinit(items) + return newnode + + def visit_dictcomp(self, node, parent): + """visit a DictComp node by returning a fresh instance of it""" + newnode = nodes.DictComp(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.key, newnode), + self.visit(node.value, newnode), + [self.visit(child, newnode) for child in node.generators], + ) + return newnode + + def visit_expr(self, node, parent): + """visit a Expr node by returning a fresh instance of it""" + newnode = nodes.Expr(node.lineno, node.col_offset, parent) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + # Not used in Python 3.8+. + def visit_ellipsis(self, node, parent): + """visit an Ellipsis node by returning a fresh instance of it""" + return nodes.Ellipsis( + getattr(node, "lineno", None), getattr(node, "col_offset", None), parent + ) + + def visit_emptynode(self, node, parent): + """visit an EmptyNode node by returning a fresh instance of it""" + return nodes.EmptyNode( + getattr(node, "lineno", None), getattr(node, "col_offset", None), parent + ) + + def visit_excepthandler(self, node, parent): + """visit an ExceptHandler node by returning a fresh instance of it""" + newnode = nodes.ExceptHandler(node.lineno, node.col_offset, parent) + if node.name: + name = self.visit_assignname(node, newnode, node.name) + else: + name = None + newnode.postinit( + _visit_or_none(node, "type", self, newnode), + name, + [self.visit(child, newnode) for child in node.body], + ) + return newnode + + def visit_exec(self, node, parent): + """visit an Exec node by returning a fresh instance of it""" + newnode = nodes.Exec(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.body, newnode), + _visit_or_none(node, "globals", self, newnode), + _visit_or_none(node, "locals", self, newnode), + ) + return newnode + + # Not used in Python 3.8+. + def visit_extslice(self, node, parent): + """visit an ExtSlice node by returning a fresh instance of it""" + newnode = nodes.ExtSlice(parent=parent) + newnode.postinit([self.visit(dim, newnode) for dim in node.dims]) + return newnode + + def _visit_for(self, cls, node, parent): + """visit a For node by returning a fresh instance of it""" + newnode = cls(node.lineno, node.col_offset, parent) + type_annotation = self.check_type_comment(node, parent=newnode) + newnode.postinit( + target=self.visit(node.target, newnode), + iter=self.visit(node.iter, newnode), + body=[self.visit(child, newnode) for child in node.body], + orelse=[self.visit(child, newnode) for child in node.orelse], + type_annotation=type_annotation, + ) + return newnode + + def visit_for(self, node, parent): + return self._visit_for(nodes.For, node, parent) + + def visit_importfrom(self, node, parent): + """visit an ImportFrom node by returning a fresh instance of it""" + names = [(alias.name, alias.asname) for alias in node.names] + newnode = nodes.ImportFrom( + node.module or "", + names, + node.level or None, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + # store From names to add them to locals after building + self._import_from_nodes.append(newnode) + return newnode + + def _visit_functiondef(self, cls, node, parent): + """visit an FunctionDef node to become astroid""" + self._global_names.append({}) + node, doc = self._get_doc(node) + + lineno = node.lineno + if PY38 and node.decorator_list: + # Python 3.8 sets the line number of a decorated function + # to be the actual line number of the function, but the + # previous versions expected the decorator's line number instead. + # We reset the function's line number to that of the + # first decorator to maintain backward compatibility. + # It's not ideal but this discrepancy was baked into + # the framework for *years*. + lineno = node.decorator_list[0].lineno + + newnode = cls(node.name, doc, lineno, node.col_offset, parent) + if node.decorator_list: + decorators = self.visit_decorators(node, newnode) + else: + decorators = None + if node.returns: + returns = self.visit(node.returns, newnode) + else: + returns = None + + type_comment_args = type_comment_returns = None + type_comment_annotation = self.check_function_type_comment(node) + if type_comment_annotation: + type_comment_returns, type_comment_args = type_comment_annotation + newnode.postinit( + args=self.visit(node.args, newnode), + body=[self.visit(child, newnode) for child in node.body], + decorators=decorators, + returns=returns, + type_comment_returns=type_comment_returns, + type_comment_args=type_comment_args, + ) + self._global_names.pop() + return newnode + + def visit_functiondef(self, node, parent): + return self._visit_functiondef(nodes.FunctionDef, node, parent) + + def visit_generatorexp(self, node, parent): + """visit a GeneratorExp node by returning a fresh instance of it""" + newnode = nodes.GeneratorExp(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.elt, newnode), + [self.visit(child, newnode) for child in node.generators], + ) + return newnode + + def visit_attribute(self, node, parent): + """visit an Attribute node by returning a fresh instance of it""" + context = self._get_context(node) + if context == astroid.Del: + # FIXME : maybe we should reintroduce and visit_delattr ? + # for instance, deactivating assign_ctx + newnode = nodes.DelAttr(node.attr, node.lineno, node.col_offset, parent) + elif context == astroid.Store: + newnode = nodes.AssignAttr(node.attr, node.lineno, node.col_offset, parent) + # Prohibit a local save if we are in an ExceptHandler. + if not isinstance(parent, astroid.ExceptHandler): + self._delayed_assattr.append(newnode) + else: + newnode = nodes.Attribute(node.attr, node.lineno, node.col_offset, parent) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_global(self, node, parent): + """visit a Global node to become astroid""" + newnode = nodes.Global( + node.names, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + if self._global_names: # global at the module level, no effect + for name in node.names: + self._global_names[-1].setdefault(name, []).append(newnode) + return newnode + + def visit_if(self, node, parent): + """visit an If node by returning a fresh instance of it""" + newnode = nodes.If(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.test, newnode), + [self.visit(child, newnode) for child in node.body], + [self.visit(child, newnode) for child in node.orelse], + ) + return newnode + + def visit_ifexp(self, node, parent): + """visit a IfExp node by returning a fresh instance of it""" + newnode = nodes.IfExp(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.test, newnode), + self.visit(node.body, newnode), + self.visit(node.orelse, newnode), + ) + return newnode + + def visit_import(self, node, parent): + """visit a Import node by returning a fresh instance of it""" + names = [(alias.name, alias.asname) for alias in node.names] + newnode = nodes.Import( + names, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + # save import names in parent's locals: + for (name, asname) in newnode.names: + name = asname or name + parent.set_local(name.split(".")[0], newnode) + return newnode + + def visit_joinedstr(self, node, parent): + newnode = nodes.JoinedStr(node.lineno, node.col_offset, parent) + newnode.postinit([self.visit(child, newnode) for child in node.values]) + return newnode + + def visit_formattedvalue(self, node, parent): + newnode = nodes.FormattedValue(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.value, newnode), + node.conversion, + _visit_or_none(node, "format_spec", self, newnode), + ) + return newnode + + def visit_namedexpr(self, node, parent): + newnode = nodes.NamedExpr(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.target, newnode), self.visit(node.value, newnode) + ) + return newnode + + # Not used in Python 3.8+. + def visit_index(self, node, parent): + """visit a Index node by returning a fresh instance of it""" + newnode = nodes.Index(parent=parent) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_keyword(self, node, parent): + """visit a Keyword node by returning a fresh instance of it""" + newnode = nodes.Keyword(node.arg, parent=parent) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_lambda(self, node, parent): + """visit a Lambda node by returning a fresh instance of it""" + newnode = nodes.Lambda(node.lineno, node.col_offset, parent) + newnode.postinit(self.visit(node.args, newnode), self.visit(node.body, newnode)) + return newnode + + def visit_list(self, node, parent): + """visit a List node by returning a fresh instance of it""" + context = self._get_context(node) + newnode = nodes.List( + ctx=context, lineno=node.lineno, col_offset=node.col_offset, parent=parent + ) + newnode.postinit([self.visit(child, newnode) for child in node.elts]) + return newnode + + def visit_listcomp(self, node, parent): + """visit a ListComp node by returning a fresh instance of it""" + newnode = nodes.ListComp(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.elt, newnode), + [self.visit(child, newnode) for child in node.generators], + ) + return newnode + + def visit_name(self, node, parent): + """visit a Name node by returning a fresh instance of it""" + context = self._get_context(node) + # True and False can be assigned to something in py2x, so we have to + # check first the context. + if context == astroid.Del: + newnode = nodes.DelName(node.id, node.lineno, node.col_offset, parent) + elif context == astroid.Store: + newnode = nodes.AssignName(node.id, node.lineno, node.col_offset, parent) + elif node.id in CONST_NAME_TRANSFORMS: + newnode = nodes.Const( + CONST_NAME_TRANSFORMS[node.id], + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + return newnode + else: + newnode = nodes.Name(node.id, node.lineno, node.col_offset, parent) + # XXX REMOVE me : + if context in (astroid.Del, astroid.Store): # 'Aug' ?? + self._save_assignment(newnode) + return newnode + + # Not used in Python 3.8+. + def visit_nameconstant(self, node, parent): + # in Python 3.4 we have NameConstant for True / False / None + return nodes.Const( + node.value, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + def visit_nonlocal(self, node, parent): + """visit a Nonlocal node and return a new instance of it""" + return nodes.Nonlocal( + node.names, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + def visit_constant(self, node, parent): + """visit a Constant node by returning a fresh instance of Const""" + return nodes.Const( + node.value, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + # Not used in Python 3.8+. + def visit_str(self, node, parent): + """visit a String/Bytes node by returning a fresh instance of Const""" + return nodes.Const( + node.s, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + visit_bytes = visit_str + + # Not used in Python 3.8+. + def visit_num(self, node, parent): + """visit a Num node by returning a fresh instance of Const""" + return nodes.Const( + node.n, + getattr(node, "lineno", None), + getattr(node, "col_offset", None), + parent, + ) + + def visit_pass(self, node, parent): + """visit a Pass node by returning a fresh instance of it""" + return nodes.Pass(node.lineno, node.col_offset, parent) + + def visit_print(self, node, parent): + """visit a Print node by returning a fresh instance of it""" + newnode = nodes.Print(node.nl, node.lineno, node.col_offset, parent) + newnode.postinit( + _visit_or_none(node, "dest", self, newnode), + [self.visit(child, newnode) for child in node.values], + ) + return newnode + + def visit_raise(self, node, parent): + """visit a Raise node by returning a fresh instance of it""" + newnode = nodes.Raise(node.lineno, node.col_offset, parent) + # no traceback; anyway it is not used in Pylint + newnode.postinit( + _visit_or_none(node, "exc", self, newnode), + _visit_or_none(node, "cause", self, newnode), + ) + return newnode + + def visit_return(self, node, parent): + """visit a Return node by returning a fresh instance of it""" + newnode = nodes.Return(node.lineno, node.col_offset, parent) + if node.value is not None: + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_set(self, node, parent): + """visit a Set node by returning a fresh instance of it""" + newnode = nodes.Set(node.lineno, node.col_offset, parent) + newnode.postinit([self.visit(child, newnode) for child in node.elts]) + return newnode + + def visit_setcomp(self, node, parent): + """visit a SetComp node by returning a fresh instance of it""" + newnode = nodes.SetComp(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.elt, newnode), + [self.visit(child, newnode) for child in node.generators], + ) + return newnode + + def visit_slice(self, node, parent): + """visit a Slice node by returning a fresh instance of it""" + newnode = nodes.Slice(parent=parent) + newnode.postinit( + _visit_or_none(node, "lower", self, newnode), + _visit_or_none(node, "upper", self, newnode), + _visit_or_none(node, "step", self, newnode), + ) + return newnode + + def visit_subscript(self, node, parent): + """visit a Subscript node by returning a fresh instance of it""" + context = self._get_context(node) + newnode = nodes.Subscript( + ctx=context, lineno=node.lineno, col_offset=node.col_offset, parent=parent + ) + newnode.postinit( + self.visit(node.value, newnode), self.visit(node.slice, newnode) + ) + return newnode + + def visit_starred(self, node, parent): + """visit a Starred node and return a new instance of it""" + context = self._get_context(node) + newnode = nodes.Starred( + ctx=context, lineno=node.lineno, col_offset=node.col_offset, parent=parent + ) + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_tryexcept(self, node, parent): + """visit a TryExcept node by returning a fresh instance of it""" + newnode = nodes.TryExcept(node.lineno, node.col_offset, parent) + newnode.postinit( + [self.visit(child, newnode) for child in node.body], + [self.visit(child, newnode) for child in node.handlers], + [self.visit(child, newnode) for child in node.orelse], + ) + return newnode + + def visit_try(self, node, parent): + # python 3.3 introduce a new Try node replacing + # TryFinally/TryExcept nodes + if node.finalbody: + newnode = nodes.TryFinally(node.lineno, node.col_offset, parent) + if node.handlers: + body = [self.visit_tryexcept(node, newnode)] + else: + body = [self.visit(child, newnode) for child in node.body] + newnode.postinit(body, [self.visit(n, newnode) for n in node.finalbody]) + return newnode + if node.handlers: + return self.visit_tryexcept(node, parent) + return None + + def visit_tryfinally(self, node, parent): + """visit a TryFinally node by returning a fresh instance of it""" + newnode = nodes.TryFinally(node.lineno, node.col_offset, parent) + newnode.postinit( + [self.visit(child, newnode) for child in node.body], + [self.visit(n, newnode) for n in node.finalbody], + ) + return newnode + + def visit_tuple(self, node, parent): + """visit a Tuple node by returning a fresh instance of it""" + context = self._get_context(node) + newnode = nodes.Tuple( + ctx=context, lineno=node.lineno, col_offset=node.col_offset, parent=parent + ) + newnode.postinit([self.visit(child, newnode) for child in node.elts]) + return newnode + + def visit_unaryop(self, node, parent): + """visit a UnaryOp node by returning a fresh instance of it""" + newnode = nodes.UnaryOp( + self._parser_module.unary_op_classes[node.op.__class__], + node.lineno, + node.col_offset, + parent, + ) + newnode.postinit(self.visit(node.operand, newnode)) + return newnode + + def visit_while(self, node, parent): + """visit a While node by returning a fresh instance of it""" + newnode = nodes.While(node.lineno, node.col_offset, parent) + newnode.postinit( + self.visit(node.test, newnode), + [self.visit(child, newnode) for child in node.body], + [self.visit(child, newnode) for child in node.orelse], + ) + return newnode + + def _visit_with(self, cls, node, parent): + newnode = cls(node.lineno, node.col_offset, parent) + + def visit_child(child): + expr = self.visit(child.context_expr, newnode) + var = _visit_or_none(child, "optional_vars", self, newnode) + return expr, var + + type_annotation = self.check_type_comment(node, parent=newnode) + newnode.postinit( + items=[visit_child(child) for child in node.items], + body=[self.visit(child, newnode) for child in node.body], + type_annotation=type_annotation, + ) + return newnode + + def visit_with(self, node, parent): + return self._visit_with(nodes.With, node, parent) + + def visit_yield(self, node, parent): + """visit a Yield node by returning a fresh instance of it""" + newnode = nodes.Yield(node.lineno, node.col_offset, parent) + if node.value is not None: + newnode.postinit(self.visit(node.value, newnode)) + return newnode + + def visit_yieldfrom(self, node, parent): + newnode = nodes.YieldFrom(node.lineno, node.col_offset, parent) + if node.value is not None: + newnode.postinit(self.visit(node.value, newnode)) + return newnode diff --git a/WebCrawler/venv/Lib/site-packages/astroid/scoped_nodes.py b/WebCrawler/venv/Lib/site-packages/astroid/scoped_nodes.py new file mode 100644 index 0000000..8561e74 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/scoped_nodes.py @@ -0,0 +1,2927 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2006-2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2010 Daniel Harding +# Copyright (c) 2011, 2013-2015 Google, Inc. +# Copyright (c) 2013-2020 Claudiu Popa +# Copyright (c) 2013 Phil Schaf +# Copyright (c) 2014 Eevee (Alex Munroe) +# Copyright (c) 2015-2016 Florian Bruhin +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2015 Rene Zhang +# Copyright (c) 2015 Philip Lorenz +# Copyright (c) 2016-2017 Derek Gustafson +# Copyright (c) 2017-2018 Bryce Guinta +# Copyright (c) 2017-2018 Ashley Whetter +# Copyright (c) 2017 Łukasz Rogalski +# Copyright (c) 2017 David Euresti +# Copyright (c) 2018-2019 Nick Drozd +# Copyright (c) 2018 Ville Skyttä +# Copyright (c) 2018 Anthony Sottile +# Copyright (c) 2018 HoverHell +# Copyright (c) 2019 Hugo van Kemenade +# Copyright (c) 2019 Peter de Blanc + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +""" +This module contains the classes for "scoped" node, i.e. which are opening a +new local scope in the language definition : Module, ClassDef, FunctionDef (and +Lambda, GeneratorExp, DictComp and SetComp to some extent). +""" + +import builtins +import sys +import io +import itertools +from typing import Optional, List + +from astroid import bases +from astroid import context as contextmod +from astroid import exceptions +from astroid import decorators as decorators_mod +from astroid.interpreter import objectmodel +from astroid.interpreter import dunder_lookup +from astroid import manager +from astroid import mixins +from astroid import node_classes +from astroid import util + + +BUILTINS = builtins.__name__ +ITER_METHODS = ("__iter__", "__getitem__") +EXCEPTION_BASE_CLASSES = frozenset({"Exception", "BaseException"}) +objects = util.lazy_import("objects") +BUILTIN_DESCRIPTORS = frozenset( + {"classmethod", "staticmethod", "builtins.classmethod", "builtins.staticmethod"} +) + + +def _c3_merge(sequences, cls, context): + """Merges MROs in *sequences* to a single MRO using the C3 algorithm. + + Adapted from http://www.python.org/download/releases/2.3/mro/. + + """ + result = [] + while True: + sequences = [s for s in sequences if s] # purge empty sequences + if not sequences: + return result + for s1 in sequences: # find merge candidates among seq heads + candidate = s1[0] + for s2 in sequences: + if candidate in s2[1:]: + candidate = None + break # reject the current head, it appears later + else: + break + if not candidate: + # Show all the remaining bases, which were considered as + # candidates for the next mro sequence. + raise exceptions.InconsistentMroError( + message="Cannot create a consistent method resolution order " + "for MROs {mros} of class {cls!r}.", + mros=sequences, + cls=cls, + context=context, + ) + + result.append(candidate) + # remove the chosen candidate + for seq in sequences: + if seq[0] == candidate: + del seq[0] + return None + + +def clean_duplicates_mro(sequences, cls, context): + for sequence in sequences: + names = [ + (node.lineno, node.qname()) if node.name else None for node in sequence + ] + last_index = dict(map(reversed, enumerate(names))) + if names and names[0] is not None and last_index[names[0]] != 0: + raise exceptions.DuplicateBasesError( + message="Duplicates found in MROs {mros} for {cls!r}.", + mros=sequences, + cls=cls, + context=context, + ) + yield [ + node + for i, (node, name) in enumerate(zip(sequence, names)) + if name is None or last_index[name] == i + ] + + +def function_to_method(n, klass): + if isinstance(n, FunctionDef): + if n.type == "classmethod": + return bases.BoundMethod(n, klass) + if n.type == "property": + return n + if n.type != "staticmethod": + return bases.UnboundMethod(n) + return n + + +MANAGER = manager.AstroidManager() + + +def builtin_lookup(name): + """lookup a name into the builtin module + return the list of matching statements and the astroid for the builtin + module + """ + builtin_astroid = MANAGER.ast_from_module(builtins) + if name == "__dict__": + return builtin_astroid, () + try: + stmts = builtin_astroid.locals[name] + except KeyError: + stmts = () + return builtin_astroid, stmts + + +# TODO move this Mixin to mixins.py; problem: 'FunctionDef' in _scope_lookup +class LocalsDictNodeNG(node_classes.LookupMixIn, node_classes.NodeNG): + """ this class provides locals handling common to Module, FunctionDef + and ClassDef nodes, including a dict like interface for direct access + to locals information + """ + + # attributes below are set by the builder module or by raw factories + + locals = {} + """A map of the name of a local variable to the node defining the local. + + :type: dict(str, NodeNG) + """ + + def qname(self): + """Get the 'qualified' name of the node. + + For example: module.name, module.class.name ... + + :returns: The qualified name. + :rtype: str + """ + # pylint: disable=no-member; github.com/pycqa/astroid/issues/278 + if self.parent is None: + return self.name + return "%s.%s" % (self.parent.frame().qname(), self.name) + + def frame(self): + """The first parent frame node. + + A frame node is a :class:`Module`, :class:`FunctionDef`, + or :class:`ClassDef`. + + :returns: The first parent frame node. + :rtype: Module or FunctionDef or ClassDef + """ + return self + + def scope(self): + """The first parent node defining a new scope. + + :returns: The first parent scope node. + :rtype: Module or FunctionDef or ClassDef or Lambda or GenExpr + """ + return self + + def _scope_lookup(self, node, name, offset=0): + """XXX method for interfacing the scope lookup""" + try: + stmts = node._filter_stmts(self.locals[name], self, offset) + except KeyError: + stmts = () + if stmts: + return self, stmts + if self.parent: # i.e. not Module + # nested scope: if parent scope is a function, that's fine + # else jump to the module + pscope = self.parent.scope() + if not pscope.is_function: + pscope = pscope.root() + return pscope.scope_lookup(node, name) + return builtin_lookup(name) # Module + + def set_local(self, name, stmt): + """Define that the given name is declared in the given statement node. + + .. seealso:: :meth:`scope` + + :param name: The name that is being defined. + :type name: str + + :param stmt: The statement that defines the given name. + :type stmt: NodeNG + """ + # assert not stmt in self.locals.get(name, ()), (self, stmt) + self.locals.setdefault(name, []).append(stmt) + + __setitem__ = set_local + + def _append_node(self, child): + """append a child, linking it in the tree""" + # pylint: disable=no-member; depending by the class + # which uses the current class as a mixin or base class. + # It's rewritten in 2.0, so it makes no sense for now + # to spend development time on it. + self.body.append(child) + child.parent = self + + def add_local_node(self, child_node, name=None): + """Append a child that should alter the locals of this scope node. + + :param child_node: The child node that will alter locals. + :type child_node: NodeNG + + :param name: The name of the local that will be altered by + the given child node. + :type name: str or None + """ + if name != "__class__": + # add __class__ node as a child will cause infinite recursion later! + self._append_node(child_node) + self.set_local(name or child_node.name, child_node) + + def __getitem__(self, item): + """The first node the defines the given local. + + :param item: The name of the locally defined object. + :type item: str + + :raises KeyError: If the name is not defined. + """ + return self.locals[item][0] + + def __iter__(self): + """Iterate over the names of locals defined in this scoped node. + + :returns: The names of the defined locals. + :rtype: iterable(str) + """ + return iter(self.keys()) + + def keys(self): + """The names of locals defined in this scoped node. + + :returns: The names of the defined locals. + :rtype: list(str) + """ + return list(self.locals.keys()) + + def values(self): + """The nodes that define the locals in this scoped node. + + :returns: The nodes that define locals. + :rtype: list(NodeNG) + """ + return [self[key] for key in self.keys()] + + def items(self): + """Get the names of the locals and the node that defines the local. + + :returns: The names of locals and their associated node. + :rtype: list(tuple(str, NodeNG)) + """ + return list(zip(self.keys(), self.values())) + + def __contains__(self, name): + """Check if a local is defined in this scope. + + :param name: The name of the local to check for. + :type name: str + + :returns: True if this node has a local of the given name, + False otherwise. + :rtype: bool + """ + return name in self.locals + + +class Module(LocalsDictNodeNG): + """Class representing an :class:`ast.Module` node. + + >>> node = astroid.extract_node('import astroid') + >>> node + + >>> node.parent + + """ + + _astroid_fields = ("body",) + + fromlineno = 0 + """The first line that this node appears on in the source code. + + :type: int or None + """ + lineno = 0 + """The line that this node appears on in the source code. + + :type: int or None + """ + + # attributes below are set by the builder module or by raw factories + + file = None + """The path to the file that this ast has been extracted from. + + This will be ``None`` when the representation has been built from a + built-in module. + + :type: str or None + """ + file_bytes = None + """The string/bytes that this ast was built from. + + :type: str or bytes or None + """ + file_encoding = None + """The encoding of the source file. + + This is used to get unicode out of a source file. + Python 2 only. + + :type: str or None + """ + name = None + """The name of the module. + + :type: str or None + """ + pure_python = None + """Whether the ast was built from source. + + :type: bool or None + """ + package = None + """Whether the node represents a package or a module. + + :type: bool or None + """ + globals = None + """A map of the name of a global variable to the node defining the global. + + :type: dict(str, NodeNG) + """ + + # Future imports + future_imports = None + """The imports from ``__future__``. + + :type: set(str) or None + """ + special_attributes = objectmodel.ModuleModel() + """The names of special attributes that this module has. + + :type: objectmodel.ModuleModel + """ + + # names of module attributes available through the global scope + scope_attrs = {"__name__", "__doc__", "__file__", "__path__", "__package__"} + """The names of module attributes available through the global scope. + + :type: str(str) + """ + + _other_fields = ( + "name", + "doc", + "file", + "path", + "package", + "pure_python", + "future_imports", + ) + _other_other_fields = ("locals", "globals") + + def __init__( + self, + name, + doc, + file=None, + path: Optional[List[str]] = None, + package=None, + parent=None, + pure_python=True, + ): + """ + :param name: The name of the module. + :type name: str + + :param doc: The module docstring. + :type doc: str + + :param file: The path to the file that this ast has been extracted from. + :type file: str or None + + :param path: + :type path: Optional[List[str]] + + :param package: Whether the node represents a package or a module. + :type package: bool or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + + :param pure_python: Whether the ast was built from source. + :type pure_python: bool or None + """ + self.name = name + self.doc = doc + self.file = file + self.path = path + self.package = package + self.parent = parent + self.pure_python = pure_python + self.locals = self.globals = {} + """A map of the name of a local variable to the node defining the local. + + :type: dict(str, NodeNG) + """ + self.body = [] + """The contents of the module. + + :type: list(NodeNG) or None + """ + self.future_imports = set() + + # pylint: enable=redefined-builtin + + def postinit(self, body=None): + """Do some setup after initialisation. + + :param body: The contents of the module. + :type body: list(NodeNG) or None + """ + self.body = body + + def _get_stream(self): + if self.file_bytes is not None: + return io.BytesIO(self.file_bytes) + if self.file is not None: + stream = open(self.file, "rb") + return stream + return None + + def stream(self): + """Get a stream to the underlying file or bytes. + + :type: file or io.BytesIO or None + """ + return self._get_stream() + + def block_range(self, lineno): + """Get a range from where this node starts to where this node ends. + + :param lineno: Unused. + :type lineno: int + + :returns: The range of line numbers that this node belongs to. + :rtype: tuple(int, int) + """ + return self.fromlineno, self.tolineno + + def scope_lookup(self, node, name, offset=0): + """Lookup where the given variable is assigned. + + :param node: The node to look for assignments up to. + Any assignments after the given node are ignored. + :type node: NodeNG + + :param name: The name of the variable to find assignments for. + :type name: str + + :param offset: The line offset to filter statements up to. + :type offset: int + + :returns: This scope node and the list of assignments associated to the + given name according to the scope where it has been found (locals, + globals or builtin). + :rtype: tuple(str, list(NodeNG)) + """ + if name in self.scope_attrs and name not in self.locals: + try: + return self, self.getattr(name) + except exceptions.AttributeInferenceError: + return self, () + return self._scope_lookup(node, name, offset) + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + return "%s.module" % BUILTINS + + def display_type(self): + """A human readable type of this node. + + :returns: The type of this node. + :rtype: str + """ + return "Module" + + def getattr(self, name, context=None, ignore_locals=False): + if not name: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + result = [] + name_in_locals = name in self.locals + + if name in self.special_attributes and not ignore_locals and not name_in_locals: + result = [self.special_attributes.lookup(name)] + elif not ignore_locals and name_in_locals: + result = self.locals[name] + elif self.package: + try: + result = [self.import_module(name, relative_only=True)] + except (exceptions.AstroidBuildingError, SyntaxError) as exc: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) from exc + result = [n for n in result if not isinstance(n, node_classes.DelName)] + if result: + return result + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + def igetattr(self, name, context=None): + """Infer the possible values of the given variable. + + :param name: The name of the variable to infer. + :type name: str + + :returns: The inferred possible values. + :rtype: iterable(NodeNG) or None + """ + # set lookup name since this is necessary to infer on import nodes for + # instance + context = contextmod.copy_context(context) + context.lookupname = name + try: + return bases._infer_stmts(self.getattr(name, context), context, frame=self) + except exceptions.AttributeInferenceError as error: + raise exceptions.InferenceError( + error.message, target=self, attribute=name, context=context + ) from error + + def fully_defined(self): + """Check if this module has been build from a .py file. + + If so, the module contains a complete representation, + including the code. + + :returns: True if the module has been built from a .py file. + :rtype: bool + """ + return self.file is not None and self.file.endswith(".py") + + def statement(self): + """The first parent node, including self, marked as statement node. + + :returns: The first parent statement. + :rtype: NodeNG + """ + return self + + def previous_sibling(self): + """The previous sibling statement. + + :returns: The previous sibling statement node. + :rtype: NodeNG or None + """ + + def next_sibling(self): + """The next sibling statement node. + + :returns: The next sibling statement node. + :rtype: NodeNG or None + """ + + _absolute_import_activated = True + + def absolute_import_activated(self): + """Whether :pep:`328` absolute import behaviour has been enabled. + + :returns: True if :pep:`328` has been enabled, False otherwise. + :rtype: bool + """ + return self._absolute_import_activated + + def import_module(self, modname, relative_only=False, level=None): + """Get the ast for a given module as if imported from this module. + + :param modname: The name of the module to "import". + :type modname: str + + :param relative_only: Whether to only consider relative imports. + :type relative_only: bool + + :param level: The level of relative import. + :type level: int or None + + :returns: The imported module ast. + :rtype: NodeNG + """ + if relative_only and level is None: + level = 0 + absmodname = self.relative_to_absolute_name(modname, level) + + try: + return MANAGER.ast_from_module_name(absmodname) + except exceptions.AstroidBuildingError: + # we only want to import a sub module or package of this module, + # skip here + if relative_only: + raise + return MANAGER.ast_from_module_name(modname) + + def relative_to_absolute_name(self, modname, level): + """Get the absolute module name for a relative import. + + The relative import can be implicit or explicit. + + :param modname: The module name to convert. + :type modname: str + + :param level: The level of relative import. + :type level: int + + :returns: The absolute module name. + :rtype: str + + :raises TooManyLevelsError: When the relative import refers to a + module too far above this one. + """ + # XXX this returns non sens when called on an absolute import + # like 'pylint.checkers.astroid.utils' + # XXX doesn't return absolute name if self.name isn't absolute name + if self.absolute_import_activated() and level is None: + return modname + if level: + if self.package: + level = level - 1 + if level and self.name.count(".") < level: + raise exceptions.TooManyLevelsError(level=level, name=self.name) + + package_name = self.name.rsplit(".", level)[0] + elif self.package: + package_name = self.name + else: + package_name = self.name.rsplit(".", 1)[0] + + if package_name: + if not modname: + return package_name + return "%s.%s" % (package_name, modname) + return modname + + def wildcard_import_names(self): + """The list of imported names when this module is 'wildcard imported'. + + It doesn't include the '__builtins__' name which is added by the + current CPython implementation of wildcard imports. + + :returns: The list of imported names. + :rtype: list(str) + """ + # We separate the different steps of lookup in try/excepts + # to avoid catching too many Exceptions + default = [name for name in self.keys() if not name.startswith("_")] + try: + all_values = self["__all__"] + except KeyError: + return default + + try: + explicit = next(all_values.assigned_stmts()) + except exceptions.InferenceError: + return default + except AttributeError: + # not an assignment node + # XXX infer? + return default + + # Try our best to detect the exported name. + inferred = [] + try: + explicit = next(explicit.infer()) + except exceptions.InferenceError: + return default + if not isinstance(explicit, (node_classes.Tuple, node_classes.List)): + return default + + str_const = lambda node: ( + isinstance(node, node_classes.Const) and isinstance(node.value, str) + ) + for node in explicit.elts: + if str_const(node): + inferred.append(node.value) + else: + try: + inferred_node = next(node.infer()) + except exceptions.InferenceError: + continue + if str_const(inferred_node): + inferred.append(inferred_node.value) + return inferred + + def public_names(self): + """The list of the names that are publicly available in this module. + + :returns: The list of publc names. + :rtype: list(str) + """ + return [name for name in self.keys() if not name.startswith("_")] + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`Module` this is always ``True``. + :rtype: bool + """ + return True + + def get_children(self): + yield from self.body + + +class ComprehensionScope(LocalsDictNodeNG): + """Scoping for different types of comprehensions.""" + + def frame(self): + """The first parent frame node. + + A frame node is a :class:`Module`, :class:`FunctionDef`, + or :class:`ClassDef`. + + :returns: The first parent frame node. + :rtype: Module or FunctionDef or ClassDef + """ + return self.parent.frame() + + scope_lookup = LocalsDictNodeNG._scope_lookup + + +class GeneratorExp(ComprehensionScope): + """Class representing an :class:`ast.GeneratorExp` node. + + >>> node = astroid.extract_node('(thing for thing in things if thing)') + >>> node + + """ + + _astroid_fields = ("elt", "generators") + _other_other_fields = ("locals",) + elt = None + """The element that forms the output of the expression. + + :type: NodeNG or None + """ + generators = None + """The generators that are looped through. + + :type: list(Comprehension) or None + """ + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.locals = {} + """A map of the name of a local variable to the node defining the local. + + :type: dict(str, NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, elt=None, generators=None): + """Do some setup after initialisation. + + :param elt: The element that forms the output of the expression. + :type elt: NodeNG or None + + :param generators: The generators that are looped through. + :type generators: list(Comprehension) or None + """ + self.elt = elt + if generators is None: + self.generators = [] + else: + self.generators = generators + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`GeneratorExp` this is always ``True``. + :rtype: bool + """ + return True + + def get_children(self): + yield self.elt + + yield from self.generators + + +class DictComp(ComprehensionScope): + """Class representing an :class:`ast.DictComp` node. + + >>> node = astroid.extract_node('{k:v for k, v in things if k > v}') + >>> node + + """ + + _astroid_fields = ("key", "value", "generators") + _other_other_fields = ("locals",) + key = None + """What produces the keys. + + :type: NodeNG or None + """ + value = None + """What produces the values. + + :type: NodeNG or None + """ + generators = None + """The generators that are looped through. + + :type: list(Comprehension) or None + """ + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.locals = {} + """A map of the name of a local variable to the node defining the local. + + :type: dict(str, NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, key=None, value=None, generators=None): + """Do some setup after initialisation. + + :param key: What produces the keys. + :type key: NodeNG or None + + :param value: What produces the values. + :type value: NodeNG or None + + :param generators: The generators that are looped through. + :type generators: list(Comprehension) or None + """ + self.key = key + self.value = value + if generators is None: + self.generators = [] + else: + self.generators = generators + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`DictComp` this is always :class:`Uninferable`. + :rtype: Uninferable + """ + return util.Uninferable + + def get_children(self): + yield self.key + yield self.value + + yield from self.generators + + +class SetComp(ComprehensionScope): + """Class representing an :class:`ast.SetComp` node. + + >>> node = astroid.extract_node('{thing for thing in things if thing}') + >>> node + + """ + + _astroid_fields = ("elt", "generators") + _other_other_fields = ("locals",) + elt = None + """The element that forms the output of the expression. + + :type: NodeNG or None + """ + generators = None + """The generators that are looped through. + + :type: list(Comprehension) or None + """ + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.locals = {} + """A map of the name of a local variable to the node defining the local. + + :type: dict(str, NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, elt=None, generators=None): + """Do some setup after initialisation. + + :param elt: The element that forms the output of the expression. + :type elt: NodeNG or None + + :param generators: The generators that are looped through. + :type generators: list(Comprehension) or None + """ + self.elt = elt + if generators is None: + self.generators = [] + else: + self.generators = generators + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`SetComp` this is always :class:`Uninferable`. + :rtype: Uninferable + """ + return util.Uninferable + + def get_children(self): + yield self.elt + + yield from self.generators + + +class _ListComp(node_classes.NodeNG): + """Class representing an :class:`ast.ListComp` node. + + >>> node = astroid.extract_node('[thing for thing in things if thing]') + >>> node + + """ + + _astroid_fields = ("elt", "generators") + elt = None + """The element that forms the output of the expression. + + :type: NodeNG or None + """ + generators = None + """The generators that are looped through. + + :type: list(Comprehension) or None + """ + + def postinit(self, elt=None, generators=None): + """Do some setup after initialisation. + + :param elt: The element that forms the output of the expression. + :type elt: NodeNG or None + + :param generators: The generators that are looped through. + :type generators: list(Comprehension) or None + """ + self.elt = elt + self.generators = generators + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`ListComp` this is always :class:`Uninferable`. + :rtype: Uninferable + """ + return util.Uninferable + + def get_children(self): + yield self.elt + + yield from self.generators + + +class ListComp(_ListComp, ComprehensionScope): + """Class representing an :class:`ast.ListComp` node. + + >>> node = astroid.extract_node('[thing for thing in things if thing]') + >>> node + + """ + + _other_other_fields = ("locals",) + + def __init__(self, lineno=None, col_offset=None, parent=None): + self.locals = {} + """A map of the name of a local variable to the node defining it. + + :type: dict(str, NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + +def _infer_decorator_callchain(node): + """Detect decorator call chaining and see if the end result is a + static or a classmethod. + """ + if not isinstance(node, FunctionDef): + return None + if not node.parent: + return None + try: + result = next(node.infer_call_result(node.parent)) + except exceptions.InferenceError: + return None + if isinstance(result, bases.Instance): + result = result._proxied + if isinstance(result, ClassDef): + if result.is_subtype_of("%s.classmethod" % BUILTINS): + return "classmethod" + if result.is_subtype_of("%s.staticmethod" % BUILTINS): + return "staticmethod" + if isinstance(result, FunctionDef): + if not result.decorators: + return None + # Determine if this function is decorated with one of the builtin descriptors we want. + for decorator in result.decorators.nodes: + if isinstance(decorator, node_classes.Name): + if decorator.name in BUILTIN_DESCRIPTORS: + return decorator.name + if ( + isinstance(decorator, node_classes.Attribute) + and isinstance(decorator.expr, node_classes.Name) + and decorator.expr.name == BUILTINS + and decorator.attrname in BUILTIN_DESCRIPTORS + ): + return decorator.attrname + return None + + +class Lambda(mixins.FilterStmtsMixin, LocalsDictNodeNG): + """Class representing an :class:`ast.Lambda` node. + + >>> node = astroid.extract_node('lambda arg: arg + 1') + >>> node + l.1 at 0x7f23b2e41518> + """ + + _astroid_fields = ("args", "body") + _other_other_fields = ("locals",) + name = "" + is_lambda = True + + def implicit_parameters(self): + return 0 + + # function's type, 'function' | 'method' | 'staticmethod' | 'classmethod' + @property + def type(self): + """Whether this is a method or function. + + :returns: 'method' if this is a method, 'function' otherwise. + :rtype: str + """ + # pylint: disable=no-member + if self.args.arguments and self.args.arguments[0].name == "self": + if isinstance(self.parent.scope(), ClassDef): + return "method" + return "function" + + def __init__(self, lineno=None, col_offset=None, parent=None): + """ + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.locals = {} + """A map of the name of a local variable to the node defining it. + + :type: dict(str, NodeNG) + """ + + self.args = [] + """The arguments that the function takes. + + :type: Arguments or list + """ + + self.body = [] + """The contents of the function body. + + :type: list(NodeNG) + """ + + super().__init__(lineno, col_offset, parent) + + def postinit(self, args, body): + """Do some setup after initialisation. + + :param args: The arguments that the function takes. + :type args: Arguments + + :param body: The contents of the function body. + :type body: list(NodeNG) + """ + self.args = args + self.body = body + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + if "method" in self.type: + return "%s.instancemethod" % BUILTINS + return "%s.function" % BUILTINS + + def display_type(self): + """A human readable type of this node. + + :returns: The type of this node. + :rtype: str + """ + if "method" in self.type: + return "Method" + return "Function" + + def callable(self): + """Whether this node defines something that is callable. + + :returns: True if this defines something that is callable, + False otherwise. + For a :class:`Lambda` this is always ``True``. + :rtype: bool + """ + return True + + def argnames(self): + """Get the names of each of the arguments. + + :returns: The names of the arguments. + :rtype: list(str) + """ + # pylint: disable=no-member; github.com/pycqa/astroid/issues/291 + # args is in fact redefined later on by postinit. Can't be changed + # to None due to a strong interaction between Lambda and FunctionDef. + + if self.args.arguments: # maybe None with builtin functions + names = _rec_get_names(self.args.arguments) + else: + names = [] + if self.args.vararg: + names.append(self.args.vararg) + if self.args.kwarg: + names.append(self.args.kwarg) + return names + + def infer_call_result(self, caller, context=None): + """Infer what the function returns when called. + + :param caller: Unused + :type caller: object + """ + # pylint: disable=no-member; github.com/pycqa/astroid/issues/291 + # args is in fact redefined later on by postinit. Can't be changed + # to None due to a strong interaction between Lambda and FunctionDef. + return self.body.infer(context) + + def scope_lookup(self, node, name, offset=0): + """Lookup where the given names is assigned. + + :param node: The node to look for assignments up to. + Any assignments after the given node are ignored. + :type node: NodeNG + + :param name: The name to find assignments for. + :type name: str + + :param offset: The line offset to filter statements up to. + :type offset: int + + :returns: This scope node and the list of assignments associated to the + given name according to the scope where it has been found (locals, + globals or builtin). + :rtype: tuple(str, list(NodeNG)) + """ + # pylint: disable=no-member; github.com/pycqa/astroid/issues/291 + # args is in fact redefined later on by postinit. Can't be changed + # to None due to a strong interaction between Lambda and FunctionDef. + + if node in self.args.defaults or node in self.args.kw_defaults: + frame = self.parent.frame() + # line offset to avoid that def func(f=func) resolve the default + # value to the defined function + offset = -1 + else: + # check this is not used in function decorators + frame = self + return frame._scope_lookup(node, name, offset) + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`Lambda` this is always ``True``. + :rtype: bool + """ + return True + + def get_children(self): + yield self.args + yield self.body + + +class FunctionDef(mixins.MultiLineBlockMixin, node_classes.Statement, Lambda): + """Class representing an :class:`ast.FunctionDef`. + + >>> node = astroid.extract_node(''' + ... def my_func(arg): + ... return arg + 1 + ... ''') + >>> node + + """ + + _astroid_fields = ("decorators", "args", "returns", "body") + _multi_line_block_fields = ("body",) + returns = None + decorators = None + """The decorators that are applied to this method or function. + + :type: Decorators or None + """ + special_attributes = objectmodel.FunctionModel() + """The names of special attributes that this function has. + + :type: objectmodel.FunctionModel + """ + is_function = True + """Whether this node indicates a function. + + For a :class:`FunctionDef` this is always ``True``. + + :type: bool + """ + type_annotation = None + """If present, this will contain the type annotation passed by a type comment + + :type: NodeNG or None + """ + type_comment_args = None + """ + If present, this will contain the type annotation for arguments + passed by a type comment + """ + type_comment_returns = None + """If present, this will contain the return type annotation, passed by a type comment""" + # attributes below are set by the builder module or by raw factories + _other_fields = ("name", "doc") + _other_other_fields = ( + "locals", + "_type", + "type_comment_returns", + "type_comment_args", + ) + _type = None + + def __init__(self, name=None, doc=None, lineno=None, col_offset=None, parent=None): + """ + :param name: The name of the function. + :type name: str or None + + :param doc: The function's docstring. + :type doc: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.name = name + """The name of the function. + + :type name: str or None + """ + + self.doc = doc + """The function's docstring. + + :type doc: str or None + """ + + self.instance_attrs = {} + super().__init__(lineno, col_offset, parent) + if parent: + frame = parent.frame() + frame.set_local(name, self) + + # pylint: disable=arguments-differ; different than Lambdas + def postinit( + self, + args, + body, + decorators=None, + returns=None, + type_comment_returns=None, + type_comment_args=None, + ): + """Do some setup after initialisation. + + :param args: The arguments that the function takes. + :type args: Arguments or list + + :param body: The contents of the function body. + :type body: list(NodeNG) + + :param decorators: The decorators that are applied to this + method or function. + :type decorators: Decorators or None + :params type_comment_returns: + The return type annotation passed via a type comment. + :params type_comment_args: + The args type annotation passed via a type comment. + """ + self.args = args + self.body = body + self.decorators = decorators + self.returns = returns + self.type_comment_returns = type_comment_returns + self.type_comment_args = type_comment_args + + @decorators_mod.cachedproperty + def extra_decorators(self): + """The extra decorators that this function can have. + + Additional decorators are considered when they are used as + assignments, as in ``method = staticmethod(method)``. + The property will return all the callables that are used for + decoration. + + :type: list(NodeNG) + """ + frame = self.parent.frame() + if not isinstance(frame, ClassDef): + return [] + + decorators = [] + for assign in frame._get_assign_nodes(): + if isinstance(assign.value, node_classes.Call) and isinstance( + assign.value.func, node_classes.Name + ): + for assign_node in assign.targets: + if not isinstance(assign_node, node_classes.AssignName): + # Support only `name = callable(name)` + continue + + if assign_node.name != self.name: + # Interested only in the assignment nodes that + # decorates the current method. + continue + try: + meth = frame[self.name] + except KeyError: + continue + else: + # Must be a function and in the same frame as the + # original method. + if ( + isinstance(meth, FunctionDef) + and assign_node.frame() == frame + ): + decorators.append(assign.value) + return decorators + + @decorators_mod.cachedproperty + def type( + self + ): # pylint: disable=invalid-overridden-method,too-many-return-statements + """The function type for this node. + + Possible values are: method, function, staticmethod, classmethod. + + :type: str + """ + for decorator in self.extra_decorators: + if decorator.func.name in BUILTIN_DESCRIPTORS: + return decorator.func.name + + frame = self.parent.frame() + type_name = "function" + if isinstance(frame, ClassDef): + if self.name == "__new__": + return "classmethod" + if sys.version_info >= (3, 6) and self.name == "__init_subclass__": + return "classmethod" + + type_name = "method" + + if not self.decorators: + return type_name + + for node in self.decorators.nodes: + if isinstance(node, node_classes.Name): + if node.name in BUILTIN_DESCRIPTORS: + return node.name + if ( + isinstance(node, node_classes.Attribute) + and isinstance(node.expr, node_classes.Name) + and node.expr.name == BUILTINS + and node.attrname in BUILTIN_DESCRIPTORS + ): + return node.attrname + + if isinstance(node, node_classes.Call): + # Handle the following case: + # @some_decorator(arg1, arg2) + # def func(...) + # + try: + current = next(node.func.infer()) + except exceptions.InferenceError: + continue + _type = _infer_decorator_callchain(current) + if _type is not None: + return _type + + try: + for inferred in node.infer(): + # Check to see if this returns a static or a class method. + _type = _infer_decorator_callchain(inferred) + if _type is not None: + return _type + + if not isinstance(inferred, ClassDef): + continue + for ancestor in inferred.ancestors(): + if not isinstance(ancestor, ClassDef): + continue + if ancestor.is_subtype_of("%s.classmethod" % BUILTINS): + return "classmethod" + if ancestor.is_subtype_of("%s.staticmethod" % BUILTINS): + return "staticmethod" + except exceptions.InferenceError: + pass + return type_name + + @decorators_mod.cachedproperty + def fromlineno(self): + """The first line that this node appears on in the source code. + + :type: int or None + """ + # lineno is the line number of the first decorator, we want the def + # statement lineno + lineno = self.lineno + if self.decorators is not None: + lineno += sum( + node.tolineno - node.lineno + 1 for node in self.decorators.nodes + ) + + return lineno + + @decorators_mod.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + return self.args.tolineno + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: Unused. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + :rtype: tuple(int, int) + """ + return self.fromlineno, self.tolineno + + def getattr(self, name, context=None): + """this method doesn't look in the instance_attrs dictionary since it's + done by an Instance proxy at inference time. + """ + if not name: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + found_attrs = [] + if name in self.instance_attrs: + found_attrs = self.instance_attrs[name] + if name in self.special_attributes: + found_attrs.append(self.special_attributes.lookup(name)) + if found_attrs: + return found_attrs + raise exceptions.AttributeInferenceError(target=self, attribute=name) + + def igetattr(self, name, context=None): + """Inferred getattr, which returns an iterator of inferred statements.""" + try: + return bases._infer_stmts(self.getattr(name, context), context, frame=self) + except exceptions.AttributeInferenceError as error: + raise exceptions.InferenceError( + error.message, target=self, attribute=name, context=context + ) from error + + def is_method(self): + """Check if this function node represents a method. + + :returns: True if this is a method, False otherwise. + :rtype: bool + """ + # check we are defined in a ClassDef, because this is usually expected + # (e.g. pylint...) when is_method() return True + return self.type != "function" and isinstance(self.parent.frame(), ClassDef) + + @decorators_mod.cached + def decoratornames(self, context=None): + """Get the qualified names of each of the decorators on this function. + + :param context: + An inference context that can be passed to inference functions + :returns: The names of the decorators. + :rtype: set(str) + """ + result = set() + decoratornodes = [] + if self.decorators is not None: + decoratornodes += self.decorators.nodes + decoratornodes += self.extra_decorators + for decnode in decoratornodes: + try: + for infnode in decnode.infer(context=context): + result.add(infnode.qname()) + except exceptions.InferenceError: + continue + return result + + def is_bound(self): + """Check if the function is bound to an instance or class. + + :returns: True if the function is bound to an instance or class, + False otherwise. + :rtype: bool + """ + return self.type == "classmethod" + + def is_abstract(self, pass_is_abstract=True): + """Check if the method is abstract. + + A method is considered abstract if any of the following is true: + * The only statement is 'raise NotImplementedError' + * The only statement is 'pass' and pass_is_abstract is True + * The method is annotated with abc.astractproperty/abc.abstractmethod + + :returns: True if the method is abstract, False otherwise. + :rtype: bool + """ + if self.decorators: + for node in self.decorators.nodes: + try: + inferred = next(node.infer()) + except exceptions.InferenceError: + continue + if inferred and inferred.qname() in ( + "abc.abstractproperty", + "abc.abstractmethod", + ): + return True + + for child_node in self.body: + if isinstance(child_node, node_classes.Raise): + if child_node.raises_not_implemented(): + return True + return pass_is_abstract and isinstance(child_node, node_classes.Pass) + # empty function is the same as function with a single "pass" statement + if pass_is_abstract: + return True + + def is_generator(self): + """Check if this is a generator function. + + :returns: True is this is a generator function, False otherwise. + :rtype: bool + """ + return bool(next(self._get_yield_nodes_skip_lambdas(), False)) + + def infer_call_result(self, caller=None, context=None): + """Infer what the function returns when called. + + :returns: What the function returns. + :rtype: iterable(NodeNG or Uninferable) or None + """ + if self.is_generator(): + if isinstance(self, AsyncFunctionDef): + generator_cls = bases.AsyncGenerator + else: + generator_cls = bases.Generator + result = generator_cls(self) + yield result + return + # This is really a gigantic hack to work around metaclass generators + # that return transient class-generating functions. Pylint's AST structure + # cannot handle a base class object that is only used for calling __new__, + # but does not contribute to the inheritance structure itself. We inject + # a fake class into the hierarchy here for several well-known metaclass + # generators, and filter it out later. + if ( + self.name == "with_metaclass" + and len(self.args.args) == 1 + and self.args.vararg is not None + ): + metaclass = next(caller.args[0].infer(context)) + if isinstance(metaclass, ClassDef): + class_bases = [next(arg.infer(context)) for arg in caller.args[1:]] + new_class = ClassDef(name="temporary_class") + new_class.hide = True + new_class.parent = self + new_class.postinit( + bases=[base for base in class_bases if base != util.Uninferable], + body=[], + decorators=[], + metaclass=metaclass, + ) + yield new_class + return + returns = self._get_return_nodes_skip_functions() + + first_return = next(returns, None) + if not first_return: + if self.body and isinstance(self.body[-1], node_classes.Assert): + yield node_classes.Const(None) + return + + raise exceptions.InferenceError( + "The function does not have any return statements" + ) + + for returnnode in itertools.chain((first_return,), returns): + if returnnode.value is None: + yield node_classes.Const(None) + else: + try: + yield from returnnode.value.infer(context) + except exceptions.InferenceError: + yield util.Uninferable + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`FunctionDef` this is always ``True``. + :rtype: bool + """ + return True + + def get_children(self): + if self.decorators is not None: + yield self.decorators + + yield self.args + + if self.returns is not None: + yield self.returns + + yield from self.body + + def scope_lookup(self, node, name, offset=0): + """Lookup where the given name is assigned.""" + if name == "__class__": + # __class__ is an implicit closure reference created by the compiler + # if any methods in a class body refer to either __class__ or super. + # In our case, we want to be able to look it up in the current scope + # when `__class__` is being used. + frame = self.parent.frame() + if isinstance(frame, ClassDef): + return self, [frame] + return super().scope_lookup(node, name, offset) + + +class AsyncFunctionDef(FunctionDef): + """Class representing an :class:`ast.FunctionDef` node. + + A :class:`AsyncFunctionDef` is an asynchronous function + created with the `async` keyword. + + >>> node = astroid.extract_node(''' + async def func(things): + async for thing in things: + print(thing) + ''') + >>> node + + >>> node.body[0] + + """ + + +def _rec_get_names(args, names=None): + """return a list of all argument names""" + if names is None: + names = [] + for arg in args: + if isinstance(arg, node_classes.Tuple): + _rec_get_names(arg.elts, names) + else: + names.append(arg.name) + return names + + +def _is_metaclass(klass, seen=None): + """ Return if the given class can be + used as a metaclass. + """ + if klass.name == "type": + return True + if seen is None: + seen = set() + for base in klass.bases: + try: + for baseobj in base.infer(): + baseobj_name = baseobj.qname() + if baseobj_name in seen: + continue + + seen.add(baseobj_name) + if isinstance(baseobj, bases.Instance): + # not abstract + return False + if baseobj is util.Uninferable: + continue + if baseobj is klass: + continue + if not isinstance(baseobj, ClassDef): + continue + if baseobj._type == "metaclass": + return True + if _is_metaclass(baseobj, seen): + return True + except exceptions.InferenceError: + continue + return False + + +def _class_type(klass, ancestors=None): + """return a ClassDef node type to differ metaclass and exception + from 'regular' classes + """ + # XXX we have to store ancestors in case we have an ancestor loop + if klass._type is not None: + return klass._type + if _is_metaclass(klass): + klass._type = "metaclass" + elif klass.name.endswith("Exception"): + klass._type = "exception" + else: + if ancestors is None: + ancestors = set() + klass_name = klass.qname() + if klass_name in ancestors: + # XXX we are in loop ancestors, and have found no type + klass._type = "class" + return "class" + ancestors.add(klass_name) + for base in klass.ancestors(recurs=False): + name = _class_type(base, ancestors) + if name != "class": + if name == "metaclass" and not _is_metaclass(klass): + # don't propagate it if the current class + # can't be a metaclass + continue + klass._type = base.type + break + if klass._type is None: + klass._type = "class" + return klass._type + + +def get_wrapping_class(node): + """Get the class that wraps the given node. + + We consider that a class wraps a node if the class + is a parent for the said node. + + :returns: The class that wraps the given node + :rtype: ClassDef or None + """ + + klass = node.frame() + while klass is not None and not isinstance(klass, ClassDef): + if klass.parent is None: + klass = None + else: + klass = klass.parent.frame() + return klass + + +class ClassDef(mixins.FilterStmtsMixin, LocalsDictNodeNG, node_classes.Statement): + """Class representing an :class:`ast.ClassDef` node. + + >>> node = astroid.extract_node(''' + class Thing: + def my_meth(self, arg): + return arg + self.offset + ''') + >>> node + + """ + + # some of the attributes below are set by the builder module or + # by a raw factories + + # a dictionary of class instances attributes + _astroid_fields = ("decorators", "bases", "body") # name + + decorators = None + """The decorators that are applied to this class. + + :type: Decorators or None + """ + special_attributes = objectmodel.ClassModel() + """The names of special attributes that this class has. + + :type: objectmodel.ClassModel + """ + + _type = None + _metaclass_hack = False + hide = False + type = property( + _class_type, + doc=( + "The class type for this node.\n\n" + "Possible values are: class, metaclass, exception.\n\n" + ":type: str" + ), + ) + _other_fields = ("name", "doc") + _other_other_fields = ("locals", "_newstyle") + _newstyle = None + + def __init__(self, name=None, doc=None, lineno=None, col_offset=None, parent=None): + """ + :param name: The name of the class. + :type name: str or None + + :param doc: The function's docstring. + :type doc: str or None + + :param lineno: The line that this node appears on in the source code. + :type lineno: int or None + + :param col_offset: The column that this node appears on in the + source code. + :type col_offset: int or None + + :param parent: The parent node in the syntax tree. + :type parent: NodeNG or None + """ + self.instance_attrs = {} + self.locals = {} + """A map of the name of a local variable to the node defining it. + + :type: dict(str, NodeNG) + """ + + self.keywords = [] + """The keywords given to the class definition. + + This is usually for :pep:`3115` style metaclass declaration. + + :type: list(Keyword) or None + """ + + self.bases = [] + """What the class inherits from. + + :type: list(NodeNG) + """ + + self.body = [] + """The contents of the class body. + + :type: list(NodeNG) + """ + + self.name = name + """The name of the class. + + :type name: str or None + """ + + self.doc = doc + """The class' docstring. + + :type doc: str or None + """ + + super().__init__(lineno, col_offset, parent) + if parent is not None: + parent.frame().set_local(name, self) + + for local_name, node in self.implicit_locals(): + self.add_local_node(node, local_name) + + def implicit_parameters(self): + return 1 + + def implicit_locals(self): + """Get implicitly defined class definition locals. + + :returns: the the name and Const pair for each local + :rtype: tuple(tuple(str, node_classes.Const), ...) + """ + locals_ = (("__module__", self.special_attributes.attr___module__),) + # __qualname__ is defined in PEP3155 + locals_ += (("__qualname__", self.special_attributes.attr___qualname__),) + return locals_ + + # pylint: disable=redefined-outer-name + def postinit( + self, bases, body, decorators, newstyle=None, metaclass=None, keywords=None + ): + """Do some setup after initialisation. + + :param bases: What the class inherits from. + :type bases: list(NodeNG) + + :param body: The contents of the class body. + :type body: list(NodeNG) + + :param decorators: The decorators that are applied to this class. + :type decorators: Decorators or None + + :param newstyle: Whether this is a new style class or not. + :type newstyle: bool or None + + :param metaclass: The metaclass of this class. + :type metaclass: NodeNG or None + + :param keywords: The keywords given to the class definition. + :type keywords: list(Keyword) or None + """ + self.keywords = keywords + self.bases = bases + self.body = body + self.decorators = decorators + if newstyle is not None: + self._newstyle = newstyle + if metaclass is not None: + self._metaclass = metaclass + + def _newstyle_impl(self, context=None): + if context is None: + context = contextmod.InferenceContext() + if self._newstyle is not None: + return self._newstyle + for base in self.ancestors(recurs=False, context=context): + if base._newstyle_impl(context): + self._newstyle = True + break + klass = self.declared_metaclass() + # could be any callable, we'd need to infer the result of klass(name, + # bases, dict). punt if it's not a class node. + if klass is not None and isinstance(klass, ClassDef): + self._newstyle = klass._newstyle_impl(context) + if self._newstyle is None: + self._newstyle = False + return self._newstyle + + _newstyle = None + newstyle = property( + _newstyle_impl, + doc=("Whether this is a new style class or not\n\n" ":type: bool or None"), + ) + + @decorators_mod.cachedproperty + def blockstart_tolineno(self): + """The line on which the beginning of this block ends. + + :type: int + """ + if self.bases: + return self.bases[-1].tolineno + + return self.fromlineno + + def block_range(self, lineno): + """Get a range from the given line number to where this node ends. + + :param lineno: Unused. + :type lineno: int + + :returns: The range of line numbers that this node belongs to, + :rtype: tuple(int, int) + """ + return self.fromlineno, self.tolineno + + def pytype(self): + """Get the name of the type that this node represents. + + :returns: The name of the type. + :rtype: str + """ + if self.newstyle: + return "%s.type" % BUILTINS + return "%s.classobj" % BUILTINS + + def display_type(self): + """A human readable type of this node. + + :returns: The type of this node. + :rtype: str + """ + return "Class" + + def callable(self): + """Whether this node defines something that is callable. + + :returns: True if this defines something that is callable, + False otherwise. + For a :class:`ClassDef` this is always ``True``. + :rtype: bool + """ + return True + + def is_subtype_of(self, type_name, context=None): + """Whether this class is a subtype of the given type. + + :param type_name: The name of the type of check against. + :type type_name: str + + :returns: True if this class is a subtype of the given type, + False otherwise. + :rtype: bool + """ + if self.qname() == type_name: + return True + for anc in self.ancestors(context=context): + if anc.qname() == type_name: + return True + return False + + def _infer_type_call(self, caller, context): + name_node = next(caller.args[0].infer(context)) + if isinstance(name_node, node_classes.Const) and isinstance( + name_node.value, str + ): + name = name_node.value + else: + return util.Uninferable + + result = ClassDef(name, None) + + # Get the bases of the class. + class_bases = next(caller.args[1].infer(context)) + if isinstance(class_bases, (node_classes.Tuple, node_classes.List)): + bases = [] + for base in class_bases.itered(): + inferred = next(base.infer(context=context)) + if inferred: + bases.append( + node_classes.EvaluatedObject(original=base, value=inferred) + ) + result.bases = bases + else: + # There is currently no AST node that can represent an 'unknown' + # node (Uninferable is not an AST node), therefore we simply return Uninferable here + # although we know at least the name of the class. + return util.Uninferable + + # Get the members of the class + try: + members = next(caller.args[2].infer(context)) + except exceptions.InferenceError: + members = None + + if members and isinstance(members, node_classes.Dict): + for attr, value in members.items: + if isinstance(attr, node_classes.Const) and isinstance(attr.value, str): + result.locals[attr.value] = [value] + + result.parent = caller.parent + return result + + def infer_call_result(self, caller, context=None): + """infer what a class is returning when called""" + if ( + self.is_subtype_of("%s.type" % (BUILTINS,), context) + and len(caller.args) == 3 + ): + result = self._infer_type_call(caller, context) + yield result + return + + dunder_call = None + try: + metaclass = self.metaclass(context=context) + if metaclass is not None: + dunder_call = next(metaclass.igetattr("__call__", context)) + except exceptions.AttributeInferenceError: + pass + + if dunder_call and dunder_call.qname() != "builtins.type.__call__": + # Call type.__call__ if not set metaclass + # (since type is the default metaclass) + context = contextmod.bind_context_to_node(context, self) + yield from dunder_call.infer_call_result(caller, context) + else: + yield self.instantiate_class() + + def scope_lookup(self, node, name, offset=0): + """Lookup where the given name is assigned. + + :param node: The node to look for assignments up to. + Any assignments after the given node are ignored. + :type node: NodeNG + + :param name: The name to find assignments for. + :type name: str + + :param offset: The line offset to filter statements up to. + :type offset: int + + :returns: This scope node and the list of assignments associated to the + given name according to the scope where it has been found (locals, + globals or builtin). + :rtype: tuple(str, list(NodeNG)) + """ + # If the name looks like a builtin name, just try to look + # into the upper scope of this class. We might have a + # decorator that it's poorly named after a builtin object + # inside this class. + lookup_upper_frame = ( + isinstance(node.parent, node_classes.Decorators) + and name in MANAGER.builtins_module + ) + if ( + any(node == base or base.parent_of(node) for base in self.bases) + or lookup_upper_frame + ): + # Handle the case where we have either a name + # in the bases of a class, which exists before + # the actual definition or the case where we have + # a Getattr node, with that name. + # + # name = ... + # class A(name): + # def name(self): ... + # + # import name + # class A(name.Name): + # def name(self): ... + + frame = self.parent.frame() + # line offset to avoid that class A(A) resolve the ancestor to + # the defined class + offset = -1 + else: + frame = self + return frame._scope_lookup(node, name, offset) + + @property + def basenames(self): + """The names of the parent classes + + Names are given in the order they appear in the class definition. + + :type: list(str) + """ + return [bnode.as_string() for bnode in self.bases] + + def ancestors(self, recurs=True, context=None): + """Iterate over the base classes in prefixed depth first order. + + :param recurs: Whether to recurse or return direct ancestors only. + :type recurs: bool + + :returns: The base classes + :rtype: iterable(NodeNG) + """ + # FIXME: should be possible to choose the resolution order + # FIXME: inference make infinite loops possible here + yielded = {self} + if context is None: + context = contextmod.InferenceContext() + if not self.bases and self.qname() != "builtins.object": + yield builtin_lookup("object")[1][0] + return + + for stmt in self.bases: + with context.restore_path(): + try: + for baseobj in stmt.infer(context): + if not isinstance(baseobj, ClassDef): + if isinstance(baseobj, bases.Instance): + baseobj = baseobj._proxied + else: + continue + if not baseobj.hide: + if baseobj in yielded: + continue + yielded.add(baseobj) + yield baseobj + if not recurs: + continue + for grandpa in baseobj.ancestors(recurs=True, context=context): + if grandpa is self: + # This class is the ancestor of itself. + break + if grandpa in yielded: + continue + yielded.add(grandpa) + yield grandpa + except exceptions.InferenceError: + continue + + def local_attr_ancestors(self, name, context=None): + """Iterate over the parents that define the given name. + + :param name: The name to find definitions for. + :type name: str + + :returns: The parents that define the given name. + :rtype: iterable(NodeNG) + """ + # Look up in the mro if we can. This will result in the + # attribute being looked up just as Python does it. + try: + ancestors = self.mro(context)[1:] + except exceptions.MroError: + # Fallback to use ancestors, we can't determine + # a sane MRO. + ancestors = self.ancestors(context=context) + for astroid in ancestors: + if name in astroid: + yield astroid + + def instance_attr_ancestors(self, name, context=None): + """Iterate over the parents that define the given name as an attribute. + + :param name: The name to find definitions for. + :type name: str + + :returns: The parents that define the given name as + an instance attribute. + :rtype: iterable(NodeNG) + """ + for astroid in self.ancestors(context=context): + if name in astroid.instance_attrs: + yield astroid + + def has_base(self, node): + """Whether this class directly inherits from the given node. + + :param node: The node to check for. + :type node: NodeNG + + :returns: True if this class directly inherits from the given node. + :rtype: bool + """ + return node in self.bases + + def local_attr(self, name, context=None): + """Get the list of assign nodes associated to the given name. + + Assignments are looked for in both this class and in parents. + + :returns: The list of assignments to the given name. + :rtype: list(NodeNG) + + :raises AttributeInferenceError: If no attribute with this name + can be found in this class or parent classes. + """ + result = [] + if name in self.locals: + result = self.locals[name] + else: + class_node = next(self.local_attr_ancestors(name, context), None) + if class_node: + result = class_node.locals[name] + result = [n for n in result if not isinstance(n, node_classes.DelAttr)] + if result: + return result + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + def instance_attr(self, name, context=None): + """Get the list of nodes associated to the given attribute name. + + Assignments are looked for in both this class and in parents. + + :returns: The list of assignments to the given name. + :rtype: list(NodeNG) + + :raises AttributeInferenceError: If no attribute with this name + can be found in this class or parent classes. + """ + # Return a copy, so we don't modify self.instance_attrs, + # which could lead to infinite loop. + values = list(self.instance_attrs.get(name, [])) + # get all values from parents + for class_node in self.instance_attr_ancestors(name, context): + values += class_node.instance_attrs[name] + values = [n for n in values if not isinstance(n, node_classes.DelAttr)] + if values: + return values + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + def instantiate_class(self): + """Get an :class:`Instance` of the :class:`ClassDef` node. + + :returns: An :class:`Instance` of the :class:`ClassDef` node, + or self if this is not possible. + :rtype: Instance or ClassDef + """ + try: + if any(cls.name in EXCEPTION_BASE_CLASSES for cls in self.mro()): + # Subclasses of exceptions can be exception instances + return objects.ExceptionInstance(self) + except exceptions.MroError: + pass + return bases.Instance(self) + + def getattr(self, name, context=None, class_context=True): + """Get an attribute from this class, using Python's attribute semantic. + + This method doesn't look in the :attr:`instance_attrs` dictionary + since it is done by an :class:`Instance` proxy at inference time. + It may return an :class:`Uninferable` object if + the attribute has not been + found, but a ``__getattr__`` or ``__getattribute__`` method is defined. + If ``class_context`` is given, then it is considered that the + attribute is accessed from a class context, + e.g. ClassDef.attribute, otherwise it might have been accessed + from an instance as well. If ``class_context`` is used in that + case, then a lookup in the implicit metaclass and the explicit + metaclass will be done. + + :param name: The attribute to look for. + :type name: str + + :param class_context: Whether the attribute can be accessed statically. + :type class_context: bool + + :returns: The attribute. + :rtype: list(NodeNG) + + :raises AttributeInferenceError: If the attribute cannot be inferred. + """ + if not name: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + values = self.locals.get(name, []) + if name in self.special_attributes and class_context and not values: + result = [self.special_attributes.lookup(name)] + if name == "__bases__": + # Need special treatment, since they are mutable + # and we need to return all the values. + result += values + return result + + # don't modify the list in self.locals! + values = list(values) + for classnode in self.ancestors(recurs=True, context=context): + values += classnode.locals.get(name, []) + + if class_context: + values += self._metaclass_lookup_attribute(name, context) + + if not values: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + + # Look for AnnAssigns, which are not attributes in the purest sense. + for value in values: + if isinstance(value, node_classes.AssignName): + stmt = value.statement() + if isinstance(stmt, node_classes.AnnAssign) and stmt.value is None: + raise exceptions.AttributeInferenceError( + target=self, attribute=name, context=context + ) + return values + + def _metaclass_lookup_attribute(self, name, context): + """Search the given name in the implicit and the explicit metaclass.""" + attrs = set() + implicit_meta = self.implicit_metaclass() + context = contextmod.copy_context(context) + metaclass = self.metaclass(context=context) + for cls in {implicit_meta, metaclass}: + if cls and cls != self and isinstance(cls, ClassDef): + cls_attributes = self._get_attribute_from_metaclass(cls, name, context) + attrs.update(set(cls_attributes)) + return attrs + + def _get_attribute_from_metaclass(self, cls, name, context): + try: + attrs = cls.getattr(name, context=context, class_context=True) + except exceptions.AttributeInferenceError: + return + + for attr in bases._infer_stmts(attrs, context, frame=cls): + if not isinstance(attr, FunctionDef): + yield attr + continue + + if isinstance(attr, objects.Property): + yield attr + continue + if attr.type == "classmethod": + # If the method is a classmethod, then it will + # be bound to the metaclass, not to the class + # from where the attribute is retrieved. + # get_wrapping_class could return None, so just + # default to the current class. + frame = get_wrapping_class(attr) or self + yield bases.BoundMethod(attr, frame) + elif attr.type == "staticmethod": + yield attr + else: + yield bases.BoundMethod(attr, self) + + def igetattr(self, name, context=None, class_context=True): + """Infer the possible values of the given variable. + + :param name: The name of the variable to infer. + :type name: str + + :returns: The inferred possible values. + :rtype: iterable(NodeNG or Uninferable) + """ + # set lookup name since this is necessary to infer on import nodes for + # instance + context = contextmod.copy_context(context) + context.lookupname = name + + metaclass = self.declared_metaclass(context=context) + try: + attributes = self.getattr(name, context, class_context=class_context) + # If we have more than one attribute, make sure that those starting from + # the second one are from the same scope. This is to account for modifications + # to the attribute happening *after* the attribute's definition (e.g. AugAssigns on lists) + if len(attributes) > 1: + first_attr, attributes = attributes[0], attributes[1:] + first_scope = first_attr.scope() + attributes = [first_attr] + [ + attr + for attr in attributes + if attr.parent and attr.parent.scope() == first_scope + ] + + for inferred in bases._infer_stmts(attributes, context, frame=self): + # yield Uninferable object instead of descriptors when necessary + if not isinstance(inferred, node_classes.Const) and isinstance( + inferred, bases.Instance + ): + try: + inferred._proxied.getattr("__get__", context) + except exceptions.AttributeInferenceError: + yield inferred + else: + yield util.Uninferable + elif isinstance(inferred, objects.Property): + function = inferred.function + if not class_context: + # Through an instance so we can solve the property + yield from function.infer_call_result( + caller=self, context=context + ) + # If we have a metaclass, we're accessing this attribute through + # the class itself, which means we can solve the property + elif metaclass: + # Resolve a property as long as it is not accessed through + # the class itself. + yield from function.infer_call_result( + caller=self, context=context + ) + else: + yield inferred + else: + yield function_to_method(inferred, self) + except exceptions.AttributeInferenceError as error: + if not name.startswith("__") and self.has_dynamic_getattr(context): + # class handle some dynamic attributes, return a Uninferable object + yield util.Uninferable + else: + raise exceptions.InferenceError( + error.message, target=self, attribute=name, context=context + ) + + def has_dynamic_getattr(self, context=None): + """Check if the class has a custom __getattr__ or __getattribute__. + + If any such method is found and it is not from + builtins, nor from an extension module, then the function + will return True. + + :returns: True if the class has a custom + __getattr__ or __getattribute__, False otherwise. + :rtype: bool + """ + + def _valid_getattr(node): + root = node.root() + return root.name != BUILTINS and getattr(root, "pure_python", None) + + try: + return _valid_getattr(self.getattr("__getattr__", context)[0]) + except exceptions.AttributeInferenceError: + # if self.newstyle: XXX cause an infinite recursion error + try: + getattribute = self.getattr("__getattribute__", context)[0] + return _valid_getattr(getattribute) + except exceptions.AttributeInferenceError: + pass + return False + + def getitem(self, index, context=None): + """Return the inference of a subscript. + + This is basically looking up the method in the metaclass and calling it. + + :returns: The inferred value of a subscript to this class. + :rtype: NodeNG + + :raises AstroidTypeError: If this class does not define a + ``__getitem__`` method. + """ + try: + methods = dunder_lookup.lookup(self, "__getitem__") + except exceptions.AttributeInferenceError as exc: + raise exceptions.AstroidTypeError(node=self, context=context) from exc + + method = methods[0] + + # Create a new callcontext for providing index as an argument. + new_context = contextmod.bind_context_to_node(context, self) + new_context.callcontext = contextmod.CallContext(args=[index]) + + try: + return next(method.infer_call_result(self, new_context)) + except exceptions.InferenceError: + return util.Uninferable + + def methods(self): + """Iterate over all of the method defined in this class and its parents. + + :returns: The methods defined on the class. + :rtype: iterable(FunctionDef) + """ + done = {} + for astroid in itertools.chain(iter((self,)), self.ancestors()): + for meth in astroid.mymethods(): + if meth.name in done: + continue + done[meth.name] = None + yield meth + + def mymethods(self): + """Iterate over all of the method defined in this class only. + + :returns: The methods defined on the class. + :rtype: iterable(FunctionDef) + """ + for member in self.values(): + if isinstance(member, FunctionDef): + yield member + + def implicit_metaclass(self): + """Get the implicit metaclass of the current class. + + For newstyle classes, this will return an instance of builtins.type. + For oldstyle classes, it will simply return None, since there's + no implicit metaclass there. + + :returns: The metaclass. + :rtype: builtins.type or None + """ + if self.newstyle: + return builtin_lookup("type")[1][0] + return None + + _metaclass = None + + def declared_metaclass(self, context=None): + """Return the explicit declared metaclass for the current class. + + An explicit declared metaclass is defined + either by passing the ``metaclass`` keyword argument + in the class definition line (Python 3) or (Python 2) by + having a ``__metaclass__`` class attribute, or if there are + no explicit bases but there is a global ``__metaclass__`` variable. + + :returns: The metaclass of this class, + or None if one could not be found. + :rtype: NodeNG or None + """ + for base in self.bases: + try: + for baseobj in base.infer(context=context): + if isinstance(baseobj, ClassDef) and baseobj.hide: + self._metaclass = baseobj._metaclass + self._metaclass_hack = True + break + except exceptions.InferenceError: + pass + + if self._metaclass: + # Expects this from Py3k TreeRebuilder + try: + return next( + node + for node in self._metaclass.infer(context=context) + if node is not util.Uninferable + ) + except (exceptions.InferenceError, StopIteration): + return None + + return None + + def _find_metaclass(self, seen=None, context=None): + if seen is None: + seen = set() + seen.add(self) + + klass = self.declared_metaclass(context=context) + if klass is None: + for parent in self.ancestors(context=context): + if parent not in seen: + klass = parent._find_metaclass(seen) + if klass is not None: + break + return klass + + def metaclass(self, context=None): + """Get the metaclass of this class. + + If this class does not define explicitly a metaclass, + then the first defined metaclass in ancestors will be used + instead. + + :returns: The metaclass of this class. + :rtype: NodeNG or None + """ + return self._find_metaclass(context=context) + + def has_metaclass_hack(self): + return self._metaclass_hack + + def _islots(self): + """ Return an iterator with the inferred slots. """ + if "__slots__" not in self.locals: + return None + for slots in self.igetattr("__slots__"): + # check if __slots__ is a valid type + for meth in ITER_METHODS: + try: + slots.getattr(meth) + break + except exceptions.AttributeInferenceError: + continue + else: + continue + + if isinstance(slots, node_classes.Const): + # a string. Ignore the following checks, + # but yield the node, only if it has a value + if slots.value: + yield slots + continue + if not hasattr(slots, "itered"): + # we can't obtain the values, maybe a .deque? + continue + + if isinstance(slots, node_classes.Dict): + values = [item[0] for item in slots.items] + else: + values = slots.itered() + if values is util.Uninferable: + continue + if not values: + # Stop the iteration, because the class + # has an empty list of slots. + return values + + for elt in values: + try: + for inferred in elt.infer(): + if inferred is util.Uninferable: + continue + if not isinstance( + inferred, node_classes.Const + ) or not isinstance(inferred.value, str): + continue + if not inferred.value: + continue + yield inferred + except exceptions.InferenceError: + continue + + return None + + def _slots(self): + if not self.newstyle: + raise NotImplementedError( + "The concept of slots is undefined for old-style classes." + ) + + slots = self._islots() + try: + first = next(slots) + except StopIteration as exc: + # The class doesn't have a __slots__ definition or empty slots. + if exc.args and exc.args[0] not in ("", None): + return exc.args[0] + return None + return [first] + list(slots) + + # Cached, because inferring them all the time is expensive + @decorators_mod.cached + def slots(self): + """Get all the slots for this node. + + :returns: The names of slots for this class. + If the class doesn't define any slot, through the ``__slots__`` + variable, then this function will return a None. + Also, it will return None in the case the slots were not inferred. + :rtype: list(str) or None + """ + + def grouped_slots(): + # Not interested in object, since it can't have slots. + for cls in self.mro()[:-1]: + try: + cls_slots = cls._slots() + except NotImplementedError: + continue + if cls_slots is not None: + yield from cls_slots + else: + yield None + + if not self.newstyle: + raise NotImplementedError( + "The concept of slots is undefined for old-style classes." + ) + + slots = list(grouped_slots()) + if not all(slot is not None for slot in slots): + return None + + return sorted(set(slots), key=lambda item: item.value) + + def _inferred_bases(self, context=None): + # Similar with .ancestors, but the difference is when one base is inferred, + # only the first object is wanted. That's because + # we aren't interested in superclasses, as in the following + # example: + # + # class SomeSuperClass(object): pass + # class SomeClass(SomeSuperClass): pass + # class Test(SomeClass): pass + # + # Inferring SomeClass from the Test's bases will give + # us both SomeClass and SomeSuperClass, but we are interested + # only in SomeClass. + + if context is None: + context = contextmod.InferenceContext() + if not self.bases and self.qname() != "builtins.object": + yield builtin_lookup("object")[1][0] + return + + for stmt in self.bases: + try: + baseobj = next(stmt.infer(context=context)) + except exceptions.InferenceError: + continue + if isinstance(baseobj, bases.Instance): + baseobj = baseobj._proxied + if not isinstance(baseobj, ClassDef): + continue + if not baseobj.hide: + yield baseobj + else: + yield from baseobj.bases + + def _compute_mro(self, context=None): + inferred_bases = list(self._inferred_bases(context=context)) + bases_mro = [] + for base in inferred_bases: + if base is self: + continue + + try: + mro = base._compute_mro(context=context) + bases_mro.append(mro) + except NotImplementedError: + # Some classes have in their ancestors both newstyle and + # old style classes. For these we can't retrieve the .mro, + # although in Python it's possible, since the class we are + # currently working is in fact new style. + # So, we fallback to ancestors here. + ancestors = list(base.ancestors(context=context)) + bases_mro.append(ancestors) + + unmerged_mro = [[self]] + bases_mro + [inferred_bases] + unmerged_mro = list(clean_duplicates_mro(unmerged_mro, self, context)) + return _c3_merge(unmerged_mro, self, context) + + def mro(self, context=None) -> List["ClassDef"]: + """Get the method resolution order, using C3 linearization. + + :returns: The list of ancestors, sorted by the mro. + :rtype: list(NodeNG) + :raises DuplicateBasesError: Duplicate bases in the same class base + :raises InconsistentMroError: A class' MRO is inconsistent + """ + return self._compute_mro(context=context) + + def bool_value(self, context=None): + """Determine the boolean value of this node. + + :returns: The boolean value of this node. + For a :class:`ClassDef` this is always ``True``. + :rtype: bool + """ + return True + + def get_children(self): + if self.decorators is not None: + yield self.decorators + + yield from self.bases + yield from self.body + + @decorators_mod.cached + def _get_assign_nodes(self): + children_assign_nodes = ( + child_node._get_assign_nodes() for child_node in self.body + ) + return list(itertools.chain.from_iterable(children_assign_nodes)) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/test_utils.py b/WebCrawler/venv/Lib/site-packages/astroid/test_utils.py new file mode 100644 index 0000000..e22c7a4 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/test_utils.py @@ -0,0 +1,73 @@ +# Copyright (c) 2013-2014 Google, Inc. +# Copyright (c) 2014 LOGILAB S.A. (Paris, FRANCE) +# Copyright (c) 2015-2016, 2018-2019 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2016 Jakub Wilk +# Copyright (c) 2018 Anthony Sottile + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +"""Utility functions for test code that uses astroid ASTs as input.""" +import contextlib +import functools +import sys +import warnings + +import pytest + +from astroid import nodes + + +def require_version(minver=None, maxver=None): + """ Compare version of python interpreter to the given one. Skip the test + if older. + """ + + def parse(string, default=None): + string = string or default + try: + return tuple(int(v) for v in string.split(".")) + except ValueError as exc: + raise ValueError( + "{string} is not a correct version : should be X.Y[.Z].".format( + string=string + ) + ) from exc + + def check_require_version(f): + current = sys.version_info[:3] + if parse(minver, "0") < current <= parse(maxver, "4"): + return f + + str_version = ".".join(str(v) for v in sys.version_info) + + @functools.wraps(f) + def new_f(*args, **kwargs): + if minver is not None: + pytest.skip( + "Needs Python > %s. Current version is %s." % (minver, str_version) + ) + elif maxver is not None: + pytest.skip( + "Needs Python <= %s. Current version is %s." % (maxver, str_version) + ) + + return new_f + + return check_require_version + + +def get_name_node(start_from, name, index=0): + return [n for n in start_from.nodes_of_class(nodes.Name) if n.name == name][index] + + +@contextlib.contextmanager +def enable_warning(warning): + warnings.simplefilter("always", warning) + try: + yield + finally: + # Reset it to default value, so it will take + # into account the values from the -W flag. + warnings.simplefilter("default", warning) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/transforms.py b/WebCrawler/venv/Lib/site-packages/astroid/transforms.py new file mode 100644 index 0000000..e5506cc --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/transforms.py @@ -0,0 +1,90 @@ +# Copyright (c) 2015-2016, 2018 Claudiu Popa +# Copyright (c) 2016 Ceridwen +# Copyright (c) 2018 Nick Drozd + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + + +import collections +from functools import lru_cache + + +class TransformVisitor: + """A visitor for handling transforms. + + The standard approach of using it is to call + :meth:`~visit` with an *astroid* module and the class + will take care of the rest, walking the tree and running the + transforms for each encountered node. + """ + + TRANSFORM_MAX_CACHE_SIZE = 10000 + + def __init__(self): + self.transforms = collections.defaultdict(list) + + @lru_cache(maxsize=TRANSFORM_MAX_CACHE_SIZE) + def _transform(self, node): + """Call matching transforms for the given node if any and return the + transformed node. + """ + cls = node.__class__ + if cls not in self.transforms: + # no transform registered for this class of node + return node + + transforms = self.transforms[cls] + for transform_func, predicate in transforms: + if predicate is None or predicate(node): + ret = transform_func(node) + # if the transformation function returns something, it's + # expected to be a replacement for the node + if ret is not None: + node = ret + if ret.__class__ != cls: + # Can no longer apply the rest of the transforms. + break + return node + + def _visit(self, node): + if hasattr(node, "_astroid_fields"): + for name in node._astroid_fields: + value = getattr(node, name) + visited = self._visit_generic(value) + if visited != value: + setattr(node, name, visited) + return self._transform(node) + + def _visit_generic(self, node): + if isinstance(node, list): + return [self._visit_generic(child) for child in node] + if isinstance(node, tuple): + return tuple(self._visit_generic(child) for child in node) + if not node or isinstance(node, str): + return node + + return self._visit(node) + + def register_transform(self, node_class, transform, predicate=None): + """Register `transform(node)` function to be applied on the given + astroid's `node_class` if `predicate` is None or returns true + when called with the node as argument. + + The transform function may return a value which is then used to + substitute the original node in the tree. + """ + self.transforms[node_class].append((transform, predicate)) + + def unregister_transform(self, node_class, transform, predicate=None): + """Unregister the given transform.""" + self.transforms[node_class].remove((transform, predicate)) + + def visit(self, module): + """Walk the given astroid *tree* and transform each encountered node + + Only the nodes which have transforms registered will actually + be replaced or changed. + """ + module.body = [self._visit(child) for child in module.body] + return self._transform(module) diff --git a/WebCrawler/venv/Lib/site-packages/astroid/util.py b/WebCrawler/venv/Lib/site-packages/astroid/util.py new file mode 100644 index 0000000..3ab7561 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/astroid/util.py @@ -0,0 +1,164 @@ +# Copyright (c) 2015-2018 Claudiu Popa +# Copyright (c) 2015-2016 Ceridwen +# Copyright (c) 2018 Bryce Guinta +# Copyright (c) 2018 Nick Drozd + +# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html +# For details: https://github.com/PyCQA/astroid/blob/master/COPYING.LESSER + +import warnings +from itertools import islice + +import importlib +import lazy_object_proxy + + +def lazy_descriptor(obj): + class DescriptorProxy(lazy_object_proxy.Proxy): + def __get__(self, instance, owner=None): + return self.__class__.__get__(self, instance) + + return DescriptorProxy(obj) + + +def lazy_import(module_name): + return lazy_object_proxy.Proxy( + lambda: importlib.import_module("." + module_name, "astroid") + ) + + +@object.__new__ +class Uninferable: + """Special inference object, which is returned when inference fails.""" + + def __repr__(self): + return "Uninferable" + + __str__ = __repr__ + + def __getattribute__(self, name): + if name == "next": + raise AttributeError("next method should not be called") + if name.startswith("__") and name.endswith("__"): + return object.__getattribute__(self, name) + if name == "accept": + return object.__getattribute__(self, name) + return self + + def __call__(self, *args, **kwargs): + return self + + def __bool__(self): + return False + + __nonzero__ = __bool__ + + def accept(self, visitor): + func = getattr(visitor, "visit_uninferable") + return func(self) + + +class BadOperationMessage: + """Object which describes a TypeError occurred somewhere in the inference chain + + This is not an exception, but a container object which holds the types and + the error which occurred. + """ + + +class BadUnaryOperationMessage(BadOperationMessage): + """Object which describes operational failures on UnaryOps.""" + + def __init__(self, operand, op, error): + self.operand = operand + self.op = op + self.error = error + + @property + def _object_type_helper(self): + helpers = lazy_import("helpers") + return helpers.object_type + + def _object_type(self, obj): + # pylint: disable=not-callable; can't infer lazy_import + objtype = self._object_type_helper(obj) + if objtype is Uninferable: + return None + + return objtype + + def __str__(self): + if hasattr(self.operand, "name"): + operand_type = self.operand.name + else: + object_type = self._object_type(self.operand) + if hasattr(object_type, "name"): + operand_type = object_type.name + else: + # Just fallback to as_string + operand_type = object_type.as_string() + + msg = "bad operand type for unary {}: {}" + return msg.format(self.op, operand_type) + + +class BadBinaryOperationMessage(BadOperationMessage): + """Object which describes type errors for BinOps.""" + + def __init__(self, left_type, op, right_type): + self.left_type = left_type + self.right_type = right_type + self.op = op + + def __str__(self): + msg = "unsupported operand type(s) for {}: {!r} and {!r}" + return msg.format(self.op, self.left_type.name, self.right_type.name) + + +def _instancecheck(cls, other): + wrapped = cls.__wrapped__ + other_cls = other.__class__ + is_instance_of = wrapped is other_cls or issubclass(other_cls, wrapped) + warnings.warn( + "%r is deprecated and slated for removal in astroid " + "2.0, use %r instead" % (cls.__class__.__name__, wrapped.__name__), + PendingDeprecationWarning, + stacklevel=2, + ) + return is_instance_of + + +def proxy_alias(alias_name, node_type): + """Get a Proxy from the given name to the given node type.""" + proxy = type( + alias_name, + (lazy_object_proxy.Proxy,), + { + "__class__": object.__dict__["__class__"], + "__instancecheck__": _instancecheck, + }, + ) + return proxy(lambda: node_type) + + +def limit_inference(iterator, size): + """Limit inference amount. + + Limit inference amount to help with performance issues with + exponentially exploding possible results. + + :param iterator: Inference generator to limit + :type iterator: Iterator(NodeNG) + + :param size: Maximum mount of nodes yielded plus an + Uninferable at the end if limit reached + :type size: int + + :yields: A possibly modified generator + :rtype param: Iterable + """ + yield from islice(iterator, size) + has_more = next(iterator, False) + if has_more is not False: + yield Uninferable + return diff --git a/WebCrawler/venv/Lib/site-packages/attr/__init__.py b/WebCrawler/venv/Lib/site-packages/attr/__init__.py new file mode 100644 index 0000000..bf329ca --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/__init__.py @@ -0,0 +1,76 @@ +from __future__ import absolute_import, division, print_function + +import sys + +from functools import partial + +from . import converters, exceptions, filters, setters, validators +from ._config import get_run_validators, set_run_validators +from ._funcs import asdict, assoc, astuple, evolve, has, resolve_types +from ._make import ( + NOTHING, + Attribute, + Factory, + attrib, + attrs, + fields, + fields_dict, + make_class, + validate, +) +from ._version_info import VersionInfo + + +__version__ = "20.3.0" +__version_info__ = VersionInfo._from_version_string(__version__) + +__title__ = "attrs" +__description__ = "Classes Without Boilerplate" +__url__ = "https://www.attrs.org/" +__uri__ = __url__ +__doc__ = __description__ + " <" + __uri__ + ">" + +__author__ = "Hynek Schlawack" +__email__ = "hs@ox.cx" + +__license__ = "MIT" +__copyright__ = "Copyright (c) 2015 Hynek Schlawack" + + +s = attributes = attrs +ib = attr = attrib +dataclass = partial(attrs, auto_attribs=True) # happy Easter ;) + +__all__ = [ + "Attribute", + "Factory", + "NOTHING", + "asdict", + "assoc", + "astuple", + "attr", + "attrib", + "attributes", + "attrs", + "converters", + "evolve", + "exceptions", + "fields", + "fields_dict", + "filters", + "get_run_validators", + "has", + "ib", + "make_class", + "resolve_types", + "s", + "set_run_validators", + "setters", + "validate", + "validators", +] + +if sys.version_info[:2] >= (3, 6): + from ._next_gen import define, field, frozen, mutable + + __all__.extend((define, field, frozen, mutable)) diff --git a/WebCrawler/venv/Lib/site-packages/attr/__init__.pyi b/WebCrawler/venv/Lib/site-packages/attr/__init__.pyi new file mode 100644 index 0000000..442d6e7 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/__init__.pyi @@ -0,0 +1,433 @@ +from typing import ( + Any, + Callable, + Dict, + Generic, + List, + Optional, + Sequence, + Mapping, + Tuple, + Type, + TypeVar, + Union, + overload, +) + +# `import X as X` is required to make these public +from . import exceptions as exceptions +from . import filters as filters +from . import converters as converters +from . import setters as setters +from . import validators as validators + +from ._version_info import VersionInfo + +__version__: str +__version_info__: VersionInfo +__title__: str +__description__: str +__url__: str +__uri__: str +__author__: str +__email__: str +__license__: str +__copyright__: str + +_T = TypeVar("_T") +_C = TypeVar("_C", bound=type) + +_ValidatorType = Callable[[Any, Attribute[_T], _T], Any] +_ConverterType = Callable[[Any], Any] +_FilterType = Callable[[Attribute[_T], _T], bool] +_ReprType = Callable[[Any], str] +_ReprArgType = Union[bool, _ReprType] +_OnSetAttrType = Callable[[Any, Attribute[Any], Any], Any] +_OnSetAttrArgType = Union[ + _OnSetAttrType, List[_OnSetAttrType], setters._NoOpType +] +_FieldTransformer = Callable[[type, List[Attribute]], List[Attribute]] +# FIXME: in reality, if multiple validators are passed they must be in a list +# or tuple, but those are invariant and so would prevent subtypes of +# _ValidatorType from working when passed in a list or tuple. +_ValidatorArgType = Union[_ValidatorType[_T], Sequence[_ValidatorType[_T]]] + +# _make -- + +NOTHING: object + +# NOTE: Factory lies about its return type to make this possible: +# `x: List[int] # = Factory(list)` +# Work around mypy issue #4554 in the common case by using an overload. +@overload +def Factory(factory: Callable[[], _T]) -> _T: ... +@overload +def Factory( + factory: Union[Callable[[Any], _T], Callable[[], _T]], + takes_self: bool = ..., +) -> _T: ... + +class Attribute(Generic[_T]): + name: str + default: Optional[_T] + validator: Optional[_ValidatorType[_T]] + repr: _ReprArgType + cmp: bool + eq: bool + order: bool + hash: Optional[bool] + init: bool + converter: Optional[_ConverterType] + metadata: Dict[Any, Any] + type: Optional[Type[_T]] + kw_only: bool + on_setattr: _OnSetAttrType + +# NOTE: We had several choices for the annotation to use for type arg: +# 1) Type[_T] +# - Pros: Handles simple cases correctly +# - Cons: Might produce less informative errors in the case of conflicting +# TypeVars e.g. `attr.ib(default='bad', type=int)` +# 2) Callable[..., _T] +# - Pros: Better error messages than #1 for conflicting TypeVars +# - Cons: Terrible error messages for validator checks. +# e.g. attr.ib(type=int, validator=validate_str) +# -> error: Cannot infer function type argument +# 3) type (and do all of the work in the mypy plugin) +# - Pros: Simple here, and we could customize the plugin with our own errors. +# - Cons: Would need to write mypy plugin code to handle all the cases. +# We chose option #1. + +# `attr` lies about its return type to make the following possible: +# attr() -> Any +# attr(8) -> int +# attr(validator=) -> Whatever the callable expects. +# This makes this type of assignments possible: +# x: int = attr(8) +# +# This form catches explicit None or no default but with no other arguments +# returns Any. +@overload +def attrib( + default: None = ..., + validator: None = ..., + repr: _ReprArgType = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + type: None = ..., + converter: None = ..., + factory: None = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> Any: ... + +# This form catches an explicit None or no default and infers the type from the +# other arguments. +@overload +def attrib( + default: None = ..., + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + type: Optional[Type[_T]] = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> _T: ... + +# This form catches an explicit default argument. +@overload +def attrib( + default: _T, + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + type: Optional[Type[_T]] = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> _T: ... + +# This form covers type=non-Type: e.g. forward references (str), Any +@overload +def attrib( + default: Optional[_T] = ..., + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + type: object = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> Any: ... +@overload +def field( + *, + default: None = ..., + validator: None = ..., + repr: _ReprArgType = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + converter: None = ..., + factory: None = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> Any: ... + +# This form catches an explicit None or no default and infers the type from the +# other arguments. +@overload +def field( + *, + default: None = ..., + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> _T: ... + +# This form catches an explicit default argument. +@overload +def field( + *, + default: _T, + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> _T: ... + +# This form covers type=non-Type: e.g. forward references (str), Any +@overload +def field( + *, + default: Optional[_T] = ..., + validator: Optional[_ValidatorArgType[_T]] = ..., + repr: _ReprArgType = ..., + hash: Optional[bool] = ..., + init: bool = ..., + metadata: Optional[Mapping[Any, Any]] = ..., + converter: Optional[_ConverterType] = ..., + factory: Optional[Callable[[], _T]] = ..., + kw_only: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., +) -> Any: ... +@overload +def attrs( + maybe_cls: _C, + these: Optional[Dict[str, Any]] = ..., + repr_ns: Optional[str] = ..., + repr: bool = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + auto_detect: bool = ..., + collect_by_mro: bool = ..., + getstate_setstate: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., + field_transformer: Optional[_FieldTransformer] = ..., +) -> _C: ... +@overload +def attrs( + maybe_cls: None = ..., + these: Optional[Dict[str, Any]] = ..., + repr_ns: Optional[str] = ..., + repr: bool = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + auto_detect: bool = ..., + collect_by_mro: bool = ..., + getstate_setstate: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., + field_transformer: Optional[_FieldTransformer] = ..., +) -> Callable[[_C], _C]: ... +@overload +def define( + maybe_cls: _C, + *, + these: Optional[Dict[str, Any]] = ..., + repr: bool = ..., + hash: Optional[bool] = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + auto_detect: bool = ..., + getstate_setstate: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., + field_transformer: Optional[_FieldTransformer] = ..., +) -> _C: ... +@overload +def define( + maybe_cls: None = ..., + *, + these: Optional[Dict[str, Any]] = ..., + repr: bool = ..., + hash: Optional[bool] = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + auto_detect: bool = ..., + getstate_setstate: Optional[bool] = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., + field_transformer: Optional[_FieldTransformer] = ..., +) -> Callable[[_C], _C]: ... + +mutable = define +frozen = define # they differ only in their defaults + +# TODO: add support for returning NamedTuple from the mypy plugin +class _Fields(Tuple[Attribute[Any], ...]): + def __getattr__(self, name: str) -> Attribute[Any]: ... + +def fields(cls: type) -> _Fields: ... +def fields_dict(cls: type) -> Dict[str, Attribute[Any]]: ... +def validate(inst: Any) -> None: ... +def resolve_types( + cls: _C, + globalns: Optional[Dict[str, Any]] = ..., + localns: Optional[Dict[str, Any]] = ..., +) -> _C: ... + +# TODO: add support for returning a proper attrs class from the mypy plugin +# we use Any instead of _CountingAttr so that e.g. `make_class('Foo', +# [attr.ib()])` is valid +def make_class( + name: str, + attrs: Union[List[str], Tuple[str, ...], Dict[str, Any]], + bases: Tuple[type, ...] = ..., + repr_ns: Optional[str] = ..., + repr: bool = ..., + cmp: Optional[bool] = ..., + hash: Optional[bool] = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: Optional[bool] = ..., + order: Optional[bool] = ..., + collect_by_mro: bool = ..., + on_setattr: Optional[_OnSetAttrArgType] = ..., + field_transformer: Optional[_FieldTransformer] = ..., +) -> type: ... + +# _funcs -- + +# TODO: add support for returning TypedDict from the mypy plugin +# FIXME: asdict/astuple do not honor their factory args. Waiting on one of +# these: +# https://github.com/python/mypy/issues/4236 +# https://github.com/python/typing/issues/253 +def asdict( + inst: Any, + recurse: bool = ..., + filter: Optional[_FilterType[Any]] = ..., + dict_factory: Type[Mapping[Any, Any]] = ..., + retain_collection_types: bool = ..., + value_serializer: Optional[Callable[[type, Attribute, Any], Any]] = ..., +) -> Dict[str, Any]: ... + +# TODO: add support for returning NamedTuple from the mypy plugin +def astuple( + inst: Any, + recurse: bool = ..., + filter: Optional[_FilterType[Any]] = ..., + tuple_factory: Type[Sequence[Any]] = ..., + retain_collection_types: bool = ..., +) -> Tuple[Any, ...]: ... +def has(cls: type) -> bool: ... +def assoc(inst: _T, **changes: Any) -> _T: ... +def evolve(inst: _T, **changes: Any) -> _T: ... + +# _config -- + +def set_run_validators(run: bool) -> None: ... +def get_run_validators() -> bool: ... + +# aliases -- + +s = attributes = attrs +ib = attr = attrib +dataclass = attrs # Technically, partial(attrs, auto_attribs=True) ;) diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c264ae3b1c88b82ab62d2e0e42b53dfa67da073e GIT binary patch literal 1667 zcmZ8hTW{Mo6qe+Re2sH)?n&z=+ZuJPlcvquWJTAmz}5g=H=soa92g)Jk+!vvl0ni= z;`coc*iUHpw!g&3?J0kuPdk*lrl<^kJUl!k&-dvZhs|cq!N-5|59yR0=U+Sd^g*BV z1Yh-w>p0Y*E_Z|ruJFJU1t_@I=kX#GaV+qXC_@>2MOxy%s6a(jp(<)n6LqMI1~js@ zGH;3*m=P^#Wpkg;iaD4Q^Dr+KU_rE@Ef!%>EWuK?Ug67P1y;l=tco>Q6YH=pHef?+ z!lt+e*Ti+WE;`W3Vypay*n%yzYp~6>-hRQh-?{K5t;1Ke0XJzAcGwOC>?WOAc380N z(AKg8x9BWf!J zORIHIFs<-JrF^UziNz?D+Ei#fiB+5?W@aSgM3eqFi8Rh%2Cnf(q1186FY%i=LCMsj zG?_4|nN+66&LcLmk;?e}m}gF3F`chYLLSplr&0x;nIAAs4n#zYH846H;gH(~?anetx<^8?x zz3!e|K{2N5&ulPLonK=;Ovk$OeHwEnM?BPQx-`^!q>grX&(6-e*|ptN4tA$r=h1uj z@wD~)B4MYUSJ9A%XJK?Ytqj$Z^t>CLo5D}Wucuqj($R&C2SeT2iGt4l-ra-FXIowe zE;PciPD##A1#5B<^O8#z+7@Okv@Fabn4%4o%hs&rdr&2nk&(WQnzK-`uxeq=Le)aU z!aRcU;uE=UXA5@bD%rFX+t_l$LLK4KLkPUfg0*c|2Srn+tRE-Llrqin6UcPR661@p z4o^4>9+?`!!qa2P2$A*xX}8NFf+?sAWvW?OrYTplWSvf)bCzzFWR`@z-}nTpv>y-h zylsY1&Z=5{CP~iN63h9Nh^>NLyeloOV!29JvSb=q#?U0#54J)`j3pvB(P!%9qmw|J zAX)Lzp|CuYftkGuvHJ)yRYG*EIr29xLMT&_jI-`Shfl~@^8bxEH)tB6fx2N83{#0V z9>GKy+dxc##}P}EJ+Dbnkq-rh@@`u~H!N&f=paB9TQ$tfA1@2JJ)`j{GpLe;oog~+ ziM(mI?N|sb+(N+qJl8Cte>?I!>$C9wI6CT$70S~)IM}~?*h5mMIvw@S*hwVAGwhb$ zge8;Si}<9cV$JT1uouDsQ$1Usy96bTH6h*6g{eFeDIIh6*!~fzeT24G@fzNSJL`7b e+x14F=+?ZVoBw95W#2-@t+)-Zve|Z5y#D}p&(|;j literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_compat.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_compat.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1392596a53aad91efc7d760c6092c6b4c97c4fd0 GIT binary patch literal 5827 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 QMWo?U40m|S5}sy10VdeE(f|Me literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_funcs.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_funcs.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07346a42e196c4cc400a132e3da64b081c6cbecf GIT binary patch literal 9735 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 G7yTQJ-~)pI literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_next_gen.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_next_gen.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7064812d62637cee7307b30c7cd03a5e1bb92741 GIT binary patch literal 3307 zcmb_eTW=h<6`tGPMyspk*6Ecnk~+JPx3=4~sE`B+n!0t+N&=)h=vKijcgWR_H8Wh3 zT*)hp`%oE}aRCE;>r4JXfc}j9ig|3G0_3fE%1e3mS;&0`SI}ZeCLoZ zFZ&iejfejVx@(s8Z){wBHlgtz6!lLK%<5arW=?D;PT#Sy?#6E7^*yM2tQOajdcSV! z^|+BV`^}`)ZzX=;PnP;i(7(Bm>x&1b8_m{cD+veNy z3%9?*anwb@(TIWX$|r5M%GRDa{Z-c3w>leVpZN#lND=r^vNzLXk&>VFenDu;NK7@C zw?!Jyw#YG`oeIh3E&ST;PNX=AR3uUwce~{My$3{(srEw}$BGQ7*0QGt***B( zgPq@&Yr#m0GoA+U&8$||@h=*dHPhTVxZl|*YkJHTFFna8vh>DOjY}^|BVE>1EVL@? z6-e1W<@8wcQGng0tF$cJbgD&AVXCrmd>WvAOE6kE=7E7~nj!p2SUUW1Sp%zcSuUAQ z#x)Ohxqig8!kwX-rc(N1p>w%Dig?TdEorJoLMB{>xMh4cprE&|Lvf*~hahr0cXBtc z<@LOgH}h8R=Sz7zU(Q$Z)qE{q&o@Tv=+V!b&%NBrJs8y3N<<4XIFM65AVQMCeHtr1 z*dmdxRN~6ufvWro4K-*QN5_2O#63ib`ACz&4tO6-yyD*Ar&`W%fg|u}HCGLw?wV=n z$JKd*16EsIIHsXl3Yy`7UNjsa4@Y8}GNT$*YMNZC29Vz{$UC^7Ztp_#dp)uXMwF+K z;<&N-?3d=4op;T`;MbrK=pBkU2EV!hf^`-O9TMay^i(r|-z1r8I*d69V^{$I-W&`n ze}AX4>Y#(-ES9a1VnAW1MYolY4i1cYAltQX%-w;=%fN zpj?BZ?tsu%W)-VNyJ!^6V!5alYsE@t7p=l6?7}UU3JAGHz3>Ztu6xB;TSGPhkYoCOI4 zm)G#i_fUKvM8}pb{Bued*G0U}x|vvk8CZjeqpRf&!lhnjc>`z`HCh{8jfQ3?sPL!O zS09Gkhf@VcJ$&n}dv||z$hbPzVsd!OhoPjWF_(uYJUu!5eKb5&k>Iw^={8#EkY2&Vd!Z> zF=zUBs1z=L8><$IvL{3x4M^lM|4LL|CImK`_ zcY37JN1T9B#C$r;21Zr%xt&7vz{qz&EWnLYAT*p6TdMvIb`F*LHS;-MzATLD;et1Vaj}4uW#&3U6ftMwk9WOxh-i zN<6}jD}RV6D`Uzak6kR?Zz2RTt>aZ3A~34*ZsW;6!sd@blpb1h7i#Jz2&=i`uGw|Z zw|(0~hx^*A)$O{|w0+01+wh)kzU*8Gup<$%vnhW7f8QdzUt+U-1L4h5*Q$MC2)M#z zg3WJ*&XslQ)n<|3%G^M2ZQa;-qiK7N{0a1RoJ*U2+AbUOt5v@>KTRQD3UXyLfolx} zW?HsFkwO55`%l>zLB~ z@aUtzRT~1vD?^adGBhh|K|+tYtiwRVq)IDH4dx*Gjd@P3&J$O= wqU|MHnr|n9O=JEpUgy*v2(Qt0;I(gf*4K{v${kz=?=RYqJbR_~ijn{MFMJR`$p8QV literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_version_info.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/_version_info.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c940393047ec6256cd9ae9d3d04f7936331a07a GIT binary patch literal 2406 zcmb_e&2QT_6elUkABvL}ZPp>%VO+6~I!oLpSO+v{gAPMG6zGCsExJuGK*%DUsL_W@ z(k@~+m!&)QFW99$=CVJC$L*AVVVCWZN?g0m4g)5cPfz6I+LduEX7U>3@rOlZP)555>ZfcZ82{)Zz<|P`h;kC!w}yF2p@mW<^8z_D173T9qDAWncrI0rh%Qv-n}sJrS}PwE{WAUy3<)V*U(-=FP0QX>k!Y&- zVoj5{pglp8G9ScJaH>n{?4@O&W}?{Ddvs%c{mZS;>Db=hrq=q-%n8>vZmrRcHF{%> zUhStvoLy~GdixG_^P6qA@39<;|D@n{wH?%MoTFis(mUtl*qp;LJrXv&qw#*6sW+ge z64i0I4f59B#q^~Q7*XDL6e;!ah-Hs(LLC|lVz+onq4D975QLP{6wm?tzeUA6iWCC6}e+OLLYuvH#TsFh;IggkM;)Ziy|*8IJ?FOf&W!%+7=J-v(#J zcG?$BgRuhgg)tK{mX~~(S-!>CvtgW_uGAUhWdaFe{VzYXWZ9DUEV%;2cu=_VeakJl zWXgr!E4lpG3OIjXx7-a&-XL}ywR1KrnlO}A+wlD55W5=+KWsHFHyTc2r@d%F_J`0D z0i?7gE^YghHaASu{dXwKOvwP=qni6Op{lG7SRU_-$^d(ksa4-xr}#Wfrg6LS#GiaABMV5<^TWy literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/converters.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/converters.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b34fa749ee1eb3c235c20015a091d91fa628a261 GIT binary patch literal 2378 zcma)8&u`;I6!tj3+%(;mZb2Y{G>1Kqh&9_v6%Z|}T_IRjKo)6ND-=btC!R@b>e$xI zBvGSqp_M3q0~g?cwEvQiaN55Bi3_|pcH*>Z(OU92Z~W%XH{bi-bJ*5a(}Jt<;!p1n z$FlxHWBsat@epp+gMnLpixX}~WNi2Caiw1wSNm0B@d~d-wQ;>)A2<4qvD0^mb!73{ z@1(!M>%4Jp^_!y3osrEqc=Md}H@Wl7YH!ZpYkroD$4MNW(uoqINkoGro(idjRBrPX zY-zPC*)|)hB${a9h2u1lI&*k94ON)L*{xKDvGzujIM86fBKe9&@9Fa|pY$GQjW1ZB z6M33d(=Zk7ii9&-nUkdG&7y3ZixHbd+6zZsoWvr)0L#mUA9#Me)ea0lStEkyKX-m0 z3j!yo%>QmuxE__bsXk_!vM5Ssin5q8tz|d_@Kh&sDClx)mp+PDM(Jh3g^B_eIy(-7 zV;VpZSf_->2)^HgSHAByjb}Gyl8wP9ir6p`C5$fMSTl1}5Ep3Xbd*R6r@gxjWsx4 zD%9d`%7PPiB-8*I{%{pdx#?-PyJXp0&A*G->M&TuAyqQJvvhIqM+xw!9=OYya*=`7 zwk0NC?&5%0_lr_9kRcE(>%@r$s3`lZRa6|Li*>!MEK}AdB9x8>uuyjb z`xKOEq6F}UJgmk4pCcBvD_N+7qR&rL@wt?V?9wN|VkZ_MkSjZ#%Y?7!MeqezIr>y(VGEhCAP17X=cDxm*bdMSkUj;J!wqBeJzH zjqX?LH+afTsPQ(*8U`(JSNy>Kq#4mDt8hr1C8=pTfO{sa==YPqU4cfMo;iCVZNUy6rd18qAudvfxAf zCb&xcV3^SPPG(QjSMg8D9k>;R!P?y+j=e){V*gvMI`F$m>VKweWpPO(wAk*#5VAAE>A18bg Ui3j+>Q@Crjx@YfIoQ8AzKjV6eZvX%Q literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/exceptions.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/exceptions.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8c0b0d089313b18599d55b5ea8a073331f33e14 GIT binary patch literal 3236 zcmbtWTW=dh6rT02uZa_Uzn+*b2_33Z!PgO#G zM^L;R01x0+ze2+aw*nGcT`MegOQGGhE%FKBC2s#fxGkJxyIThA@G{`CC_!8hHgBJi_;LCuQ z#UhMv@s&-|zW4|1mbC43k@Zy^BwDzBIE0MX(L*U?dH838!nH;Rrti8RhKXkV zKu|wYnnj+Vv7}6E>Gxq=fZp3r=+mJ!YOT=KjDJywfo7v8JJq%P6XM z@v~hv@?pMsK)1Ie77DJDVIb7@HtiqKMETK<8K~eD75E_yg;H!Mo1I0Rs-*7)OqrqE zYvX+xF5CI4oemudiAH0b3%r-#Fmnc}fcjwNnoA-KLsAoDJ z_Vz{JlWac_vNsaZsP~!Q?z0rnr((ob`vpuV*=;jmKX6Ur81`X+tjJ{!inCLR=|u zLVRvcSCEaGP}+#~qd19pCf{C0ErK{gS{Om&lYx415^(hKfe!)0Or++-^)AyU!q7`8 zQ_moJ2eCXea6r>rdEmT)?h?>@r$86+x#_L|!L`V6UdI5>c>1}7Q5;>HQZ*+4oJF~c zLl_Q3;CPIY?sVMPB>$7&1>o~ufgj>?^Sku17_cPJYk?GuA8ZPpG5j%S$g|f|R(L{X zM`A{(A^L8+@1BAk%f<*SjcUqGK1G+wZFnw`3xKJ4!xLcx(_HA182}Q++TTX9}|r z9HnPVf46h{pIv(enBFfiM|^JPOP?RW4x_C&eiG#In=yv`xQ~pAnG_;(O3}o%U^eq<1#s5B^OsUj&8^3ycxJ#Mp*Tywp`_iYezg8Ca&k zs&$>Lun1rJwcjj3$-?jC%R_*~lp5&FTZHL&Ug(EtH1Gu&zMZt;a0e~CP(BO>)6^P@-=|%QfezL%^up8 zd=t6~SqxWCq0oU5uKN`LlbDHh`1&cUn?ddBsmUH0NQ$#HbAp}-f-y=w5=S z4Y#;$CApqYZFNx|%lqp@9JxEM_WGV=WDK~9AMfWgzNK8r+PwsU7 wizL#1nD^sZCNZofdb+%f4X#`;$wZa3c0a2OKSCQToNdK!Ew*a;uik>+-xsI{4gdfE literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/filters.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/filters.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f34a2aa96c8b7c9db66bb6bab951403bfe6b3f6f GIT binary patch literal 1737 zcmbtUO^+Kz5bd6^*W+35W)l`65QIJ;BuC&RNI77wRzPw#&xgq|A|I!@clruLDh^iisy#a)f(o&bZ$~Dzh^-*pK2 z4VBBw0p%;$`aTFwCWKS&NSZklCvzum)|qrD;V$pUZniVovFEPrW!}Vt^A7J_kV&6= zybr%V_xUdT?()GyGTd8y=HD%{tjOgVtF)L^lFd?SgwkwQC>F)Ws8OtWnwV(hzlQtC z(5^ z*9rdFE<8i=(oVrHsR3RcWm zG*iVwq+H<&n30Wv-NgokPesVZ@ z2$elhJK(W$YG-t-b`z;rMD2m)k8hK403B62xO3-=+g}D;=o3?v!Ks)gDn6A$1#^+l zgZt?;(5VrhmvM3uKM^{>J<=I z@qmdTw40WL(!t#R_C>vWDeqnQNMrX%_kbS!sSe?kpxUk$h#na9br1jnP$6($(O2XJ zc|m6mPQr!voGvMl!Cm}p(R}ltkaT%*PV`v()#~_(0KwJAZL>Qa1 zQmkDf3=vr>p%qT;Kx`Ns1x&AlEA$z&2#}ERREnq}7S_-%JmY=`w!Q{pNq;0S>70}Y zOY)M;fl#*nE9hhxTE2!MP^-V8Yu%m4vJznHqD`v-MA-sTdug7?ii?op74~krczlH!_gWE)W7nBC9{=nIH6~ghBVEtk{^o<1G|4*={t?z$< z)z109qt$ZZE#RU>0~b)v!lke`>OB;;Z#e!<^E~maf#WuqHgK$sTR2)T^%1zWV0?^G zY^Y0MtUW))aCUMUFc|0$hJ(5nhP+6^u=YcEf#F3IVW^M=3g0t@j{x{2MOMOO;#Ae$ sFpE#t6OQv|aa9aY_U^5)Z19e%-;<7=&ve4WmrGoS<4^S!Ho0d`22Y5)KL literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/setters.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/setters.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0f66f9f3d2a6c1193e0a8a643effe0c8e0fee60 GIT binary patch literal 1609 zcma)6-HzKt6rQmi$MI&9vQ!B1r?~-?hz)I}O0cRbP@&?Y+E!HJ!U~KW&!p>J$75#3 zSsHnTL@L2E@CJP)U&2*ifh*3L>@J(qiyi44&x}3C-}%mWCf(hQ35@O!fAK#%g#3+* ztHXoES70UqCrCmB6<$FXUg9nM#9stSK#A~0P;?ey61sV(=q{opf_W&qFG$i8k?6rQ z7O~iY=Z@%$U3m88?wTY6F?dQw!_~*}1GQMFvUtvFBLzEB>cp_Q(oB`yNSj)#C-EzQ zK}LQ%OlL+FwUs`C?$&K3Esb+yM7GnNv*tMRZ0R3V{99JZ3PyuS=E|1selIE43N3 zv=mHBTkDe9BY81hrbR88n!CLsH5Ss6li0b?l98ve3>r_m4L!u!Tj1IN&+fp?1mH-wA8F)gi#Q|^h428(pyVxCli#4E zK$5q5L=U>ZD;Jq1uBVi1(2x$Pm@9B48=YPZ?X^t4A4X7YUh2CrY##=*89R+mt z>zgQmYXG_pdX??(Z>NnLkp31g+uiKqX=&=hUPlUW?es2x_XaYu*U9LffBgkywP}zp z@(_9Yeb_l14dEK&LS>w{F^4M-ZW#&cLN+u?T%%xG;tJEo@|R3jcn2Dd&E~qo>CAEJ wLbjor9m~unox{ic@slff{u66-59D7L@;)|@!43?9n_i#x{b(=hfek|XFM73pfdBvi literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/__pycache__/validators.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/attr/__pycache__/validators.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..773e5cc14fb03f231c2ada667387813ca30f57fe GIT binary patch literal 11381 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/attr/_compat.py b/WebCrawler/venv/Lib/site-packages/attr/_compat.py new file mode 100644 index 0000000..b0ead6e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_compat.py @@ -0,0 +1,231 @@ +from __future__ import absolute_import, division, print_function + +import platform +import sys +import types +import warnings + + +PY2 = sys.version_info[0] == 2 +PYPY = platform.python_implementation() == "PyPy" + + +if PYPY or sys.version_info[:2] >= (3, 6): + ordered_dict = dict +else: + from collections import OrderedDict + + ordered_dict = OrderedDict + + +if PY2: + from collections import Mapping, Sequence + + from UserDict import IterableUserDict + + # We 'bundle' isclass instead of using inspect as importing inspect is + # fairly expensive (order of 10-15 ms for a modern machine in 2016) + def isclass(klass): + return isinstance(klass, (type, types.ClassType)) + + # TYPE is used in exceptions, repr(int) is different on Python 2 and 3. + TYPE = "type" + + def iteritems(d): + return d.iteritems() + + # Python 2 is bereft of a read-only dict proxy, so we make one! + class ReadOnlyDict(IterableUserDict): + """ + Best-effort read-only dict wrapper. + """ + + def __setitem__(self, key, val): + # We gently pretend we're a Python 3 mappingproxy. + raise TypeError( + "'mappingproxy' object does not support item assignment" + ) + + def update(self, _): + # We gently pretend we're a Python 3 mappingproxy. + raise AttributeError( + "'mappingproxy' object has no attribute 'update'" + ) + + def __delitem__(self, _): + # We gently pretend we're a Python 3 mappingproxy. + raise TypeError( + "'mappingproxy' object does not support item deletion" + ) + + def clear(self): + # We gently pretend we're a Python 3 mappingproxy. + raise AttributeError( + "'mappingproxy' object has no attribute 'clear'" + ) + + def pop(self, key, default=None): + # We gently pretend we're a Python 3 mappingproxy. + raise AttributeError( + "'mappingproxy' object has no attribute 'pop'" + ) + + def popitem(self): + # We gently pretend we're a Python 3 mappingproxy. + raise AttributeError( + "'mappingproxy' object has no attribute 'popitem'" + ) + + def setdefault(self, key, default=None): + # We gently pretend we're a Python 3 mappingproxy. + raise AttributeError( + "'mappingproxy' object has no attribute 'setdefault'" + ) + + def __repr__(self): + # Override to be identical to the Python 3 version. + return "mappingproxy(" + repr(self.data) + ")" + + def metadata_proxy(d): + res = ReadOnlyDict() + res.data.update(d) # We blocked update, so we have to do it like this. + return res + + def just_warn(*args, **kw): # pragma: no cover + """ + We only warn on Python 3 because we are not aware of any concrete + consequences of not setting the cell on Python 2. + """ + + +else: # Python 3 and later. + from collections.abc import Mapping, Sequence # noqa + + def just_warn(*args, **kw): + """ + We only warn on Python 3 because we are not aware of any concrete + consequences of not setting the cell on Python 2. + """ + warnings.warn( + "Running interpreter doesn't sufficiently support code object " + "introspection. Some features like bare super() or accessing " + "__class__ will not work with slotted classes.", + RuntimeWarning, + stacklevel=2, + ) + + def isclass(klass): + return isinstance(klass, type) + + TYPE = "class" + + def iteritems(d): + return d.items() + + def metadata_proxy(d): + return types.MappingProxyType(dict(d)) + + +def make_set_closure_cell(): + """Return a function of two arguments (cell, value) which sets + the value stored in the closure cell `cell` to `value`. + """ + # pypy makes this easy. (It also supports the logic below, but + # why not do the easy/fast thing?) + if PYPY: + + def set_closure_cell(cell, value): + cell.__setstate__((value,)) + + return set_closure_cell + + # Otherwise gotta do it the hard way. + + # Create a function that will set its first cellvar to `value`. + def set_first_cellvar_to(value): + x = value + return + + # This function will be eliminated as dead code, but + # not before its reference to `x` forces `x` to be + # represented as a closure cell rather than a local. + def force_x_to_be_a_cell(): # pragma: no cover + return x + + try: + # Extract the code object and make sure our assumptions about + # the closure behavior are correct. + if PY2: + co = set_first_cellvar_to.func_code + else: + co = set_first_cellvar_to.__code__ + if co.co_cellvars != ("x",) or co.co_freevars != (): + raise AssertionError # pragma: no cover + + # Convert this code object to a code object that sets the + # function's first _freevar_ (not cellvar) to the argument. + if sys.version_info >= (3, 8): + # CPython 3.8+ has an incompatible CodeType signature + # (added a posonlyargcount argument) but also added + # CodeType.replace() to do this without counting parameters. + set_first_freevar_code = co.replace( + co_cellvars=co.co_freevars, co_freevars=co.co_cellvars + ) + else: + args = [co.co_argcount] + if not PY2: + args.append(co.co_kwonlyargcount) + args.extend( + [ + co.co_nlocals, + co.co_stacksize, + co.co_flags, + co.co_code, + co.co_consts, + co.co_names, + co.co_varnames, + co.co_filename, + co.co_name, + co.co_firstlineno, + co.co_lnotab, + # These two arguments are reversed: + co.co_cellvars, + co.co_freevars, + ] + ) + set_first_freevar_code = types.CodeType(*args) + + def set_closure_cell(cell, value): + # Create a function using the set_first_freevar_code, + # whose first closure cell is `cell`. Calling it will + # change the value of that cell. + setter = types.FunctionType( + set_first_freevar_code, {}, "setter", (), (cell,) + ) + # And call it to set the cell. + setter(value) + + # Make sure it works on this interpreter: + def make_func_with_cell(): + x = None + + def func(): + return x # pragma: no cover + + return func + + if PY2: + cell = make_func_with_cell().func_closure[0] + else: + cell = make_func_with_cell().__closure__[0] + set_closure_cell(cell, 100) + if cell.cell_contents != 100: + raise AssertionError # pragma: no cover + + except Exception: + return just_warn + else: + return set_closure_cell + + +set_closure_cell = make_set_closure_cell() diff --git a/WebCrawler/venv/Lib/site-packages/attr/_config.py b/WebCrawler/venv/Lib/site-packages/attr/_config.py new file mode 100644 index 0000000..8ec9209 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_config.py @@ -0,0 +1,23 @@ +from __future__ import absolute_import, division, print_function + + +__all__ = ["set_run_validators", "get_run_validators"] + +_run_validators = True + + +def set_run_validators(run): + """ + Set whether or not validators are run. By default, they are run. + """ + if not isinstance(run, bool): + raise TypeError("'run' must be bool.") + global _run_validators + _run_validators = run + + +def get_run_validators(): + """ + Return whether or not validators are run. + """ + return _run_validators diff --git a/WebCrawler/venv/Lib/site-packages/attr/_funcs.py b/WebCrawler/venv/Lib/site-packages/attr/_funcs.py new file mode 100644 index 0000000..e6c930c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_funcs.py @@ -0,0 +1,390 @@ +from __future__ import absolute_import, division, print_function + +import copy + +from ._compat import iteritems +from ._make import NOTHING, _obj_setattr, fields +from .exceptions import AttrsAttributeNotFoundError + + +def asdict( + inst, + recurse=True, + filter=None, + dict_factory=dict, + retain_collection_types=False, + value_serializer=None, +): + """ + Return the ``attrs`` attribute values of *inst* as a dict. + + Optionally recurse into other ``attrs``-decorated classes. + + :param inst: Instance of an ``attrs``-decorated class. + :param bool recurse: Recurse into classes that are also + ``attrs``-decorated. + :param callable filter: A callable whose return code determines whether an + attribute or element is included (``True``) or dropped (``False``). Is + called with the `attr.Attribute` as the first argument and the + value as the second argument. + :param callable dict_factory: A callable to produce dictionaries from. For + example, to produce ordered dictionaries instead of normal Python + dictionaries, pass in ``collections.OrderedDict``. + :param bool retain_collection_types: Do not convert to ``list`` when + encountering an attribute whose type is ``tuple`` or ``set``. Only + meaningful if ``recurse`` is ``True``. + :param Optional[callable] value_serializer: A hook that is called for every + attribute or dict key/value. It receives the current instance, field + and value and must return the (updated) value. The hook is run *after* + the optional *filter* has been applied. + + :rtype: return type of *dict_factory* + + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + .. versionadded:: 16.0.0 *dict_factory* + .. versionadded:: 16.1.0 *retain_collection_types* + .. versionadded:: 20.3.0 *value_serializer* + """ + attrs = fields(inst.__class__) + rv = dict_factory() + for a in attrs: + v = getattr(inst, a.name) + if filter is not None and not filter(a, v): + continue + + if value_serializer is not None: + v = value_serializer(inst, a, v) + + if recurse is True: + if has(v.__class__): + rv[a.name] = asdict( + v, + True, + filter, + dict_factory, + retain_collection_types, + value_serializer, + ) + elif isinstance(v, (tuple, list, set, frozenset)): + cf = v.__class__ if retain_collection_types is True else list + rv[a.name] = cf( + [ + _asdict_anything( + i, + filter, + dict_factory, + retain_collection_types, + value_serializer, + ) + for i in v + ] + ) + elif isinstance(v, dict): + df = dict_factory + rv[a.name] = df( + ( + _asdict_anything( + kk, + filter, + df, + retain_collection_types, + value_serializer, + ), + _asdict_anything( + vv, + filter, + df, + retain_collection_types, + value_serializer, + ), + ) + for kk, vv in iteritems(v) + ) + else: + rv[a.name] = v + else: + rv[a.name] = v + return rv + + +def _asdict_anything( + val, + filter, + dict_factory, + retain_collection_types, + value_serializer, +): + """ + ``asdict`` only works on attrs instances, this works on anything. + """ + if getattr(val.__class__, "__attrs_attrs__", None) is not None: + # Attrs class. + rv = asdict( + val, + True, + filter, + dict_factory, + retain_collection_types, + value_serializer, + ) + elif isinstance(val, (tuple, list, set, frozenset)): + cf = val.__class__ if retain_collection_types is True else list + rv = cf( + [ + _asdict_anything( + i, + filter, + dict_factory, + retain_collection_types, + value_serializer, + ) + for i in val + ] + ) + elif isinstance(val, dict): + df = dict_factory + rv = df( + ( + _asdict_anything( + kk, filter, df, retain_collection_types, value_serializer + ), + _asdict_anything( + vv, filter, df, retain_collection_types, value_serializer + ), + ) + for kk, vv in iteritems(val) + ) + else: + rv = val + if value_serializer is not None: + rv = value_serializer(None, None, rv) + + return rv + + +def astuple( + inst, + recurse=True, + filter=None, + tuple_factory=tuple, + retain_collection_types=False, +): + """ + Return the ``attrs`` attribute values of *inst* as a tuple. + + Optionally recurse into other ``attrs``-decorated classes. + + :param inst: Instance of an ``attrs``-decorated class. + :param bool recurse: Recurse into classes that are also + ``attrs``-decorated. + :param callable filter: A callable whose return code determines whether an + attribute or element is included (``True``) or dropped (``False``). Is + called with the `attr.Attribute` as the first argument and the + value as the second argument. + :param callable tuple_factory: A callable to produce tuples from. For + example, to produce lists instead of tuples. + :param bool retain_collection_types: Do not convert to ``list`` + or ``dict`` when encountering an attribute which type is + ``tuple``, ``dict`` or ``set``. Only meaningful if ``recurse`` is + ``True``. + + :rtype: return type of *tuple_factory* + + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + .. versionadded:: 16.2.0 + """ + attrs = fields(inst.__class__) + rv = [] + retain = retain_collection_types # Very long. :/ + for a in attrs: + v = getattr(inst, a.name) + if filter is not None and not filter(a, v): + continue + if recurse is True: + if has(v.__class__): + rv.append( + astuple( + v, + recurse=True, + filter=filter, + tuple_factory=tuple_factory, + retain_collection_types=retain, + ) + ) + elif isinstance(v, (tuple, list, set, frozenset)): + cf = v.__class__ if retain is True else list + rv.append( + cf( + [ + astuple( + j, + recurse=True, + filter=filter, + tuple_factory=tuple_factory, + retain_collection_types=retain, + ) + if has(j.__class__) + else j + for j in v + ] + ) + ) + elif isinstance(v, dict): + df = v.__class__ if retain is True else dict + rv.append( + df( + ( + astuple( + kk, + tuple_factory=tuple_factory, + retain_collection_types=retain, + ) + if has(kk.__class__) + else kk, + astuple( + vv, + tuple_factory=tuple_factory, + retain_collection_types=retain, + ) + if has(vv.__class__) + else vv, + ) + for kk, vv in iteritems(v) + ) + ) + else: + rv.append(v) + else: + rv.append(v) + + return rv if tuple_factory is list else tuple_factory(rv) + + +def has(cls): + """ + Check whether *cls* is a class with ``attrs`` attributes. + + :param type cls: Class to introspect. + :raise TypeError: If *cls* is not a class. + + :rtype: bool + """ + return getattr(cls, "__attrs_attrs__", None) is not None + + +def assoc(inst, **changes): + """ + Copy *inst* and apply *changes*. + + :param inst: Instance of a class with ``attrs`` attributes. + :param changes: Keyword changes in the new copy. + + :return: A copy of inst with *changes* incorporated. + + :raise attr.exceptions.AttrsAttributeNotFoundError: If *attr_name* couldn't + be found on *cls*. + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + .. deprecated:: 17.1.0 + Use `evolve` instead. + """ + import warnings + + warnings.warn( + "assoc is deprecated and will be removed after 2018/01.", + DeprecationWarning, + stacklevel=2, + ) + new = copy.copy(inst) + attrs = fields(inst.__class__) + for k, v in iteritems(changes): + a = getattr(attrs, k, NOTHING) + if a is NOTHING: + raise AttrsAttributeNotFoundError( + "{k} is not an attrs attribute on {cl}.".format( + k=k, cl=new.__class__ + ) + ) + _obj_setattr(new, k, v) + return new + + +def evolve(inst, **changes): + """ + Create a new instance, based on *inst* with *changes* applied. + + :param inst: Instance of a class with ``attrs`` attributes. + :param changes: Keyword changes in the new copy. + + :return: A copy of inst with *changes* incorporated. + + :raise TypeError: If *attr_name* couldn't be found in the class + ``__init__``. + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + .. versionadded:: 17.1.0 + """ + cls = inst.__class__ + attrs = fields(cls) + for a in attrs: + if not a.init: + continue + attr_name = a.name # To deal with private attributes. + init_name = attr_name if attr_name[0] != "_" else attr_name[1:] + if init_name not in changes: + changes[init_name] = getattr(inst, attr_name) + + return cls(**changes) + + +def resolve_types(cls, globalns=None, localns=None): + """ + Resolve any strings and forward annotations in type annotations. + + This is only required if you need concrete types in `Attribute`'s *type* + field. In other words, you don't need to resolve your types if you only + use them for static type checking. + + With no arguments, names will be looked up in the module in which the class + was created. If this is not what you want, e.g. if the name only exists + inside a method, you may pass *globalns* or *localns* to specify other + dictionaries in which to look up these names. See the docs of + `typing.get_type_hints` for more details. + + :param type cls: Class to resolve. + :param Optional[dict] globalns: Dictionary containing global variables. + :param Optional[dict] localns: Dictionary containing local variables. + + :raise TypeError: If *cls* is not a class. + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + :raise NameError: If types cannot be resolved because of missing variables. + + :returns: *cls* so you can use this function also as a class decorator. + Please note that you have to apply it **after** `attr.s`. That means + the decorator has to come in the line **before** `attr.s`. + + .. versionadded:: 20.1.0 + """ + try: + # Since calling get_type_hints is expensive we cache whether we've + # done it already. + cls.__attrs_types_resolved__ + except AttributeError: + import typing + + hints = typing.get_type_hints(cls, globalns=globalns, localns=localns) + for field in fields(cls): + if field.name in hints: + # Since fields have been frozen we must work around it. + _obj_setattr(field, "type", hints[field.name]) + cls.__attrs_types_resolved__ = True + + # Return the class so you can use it as a decorator too. + return cls diff --git a/WebCrawler/venv/Lib/site-packages/attr/_make.py b/WebCrawler/venv/Lib/site-packages/attr/_make.py new file mode 100644 index 0000000..49484f9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_make.py @@ -0,0 +1,2765 @@ +from __future__ import absolute_import, division, print_function + +import copy +import linecache +import sys +import threading +import uuid +import warnings + +from operator import itemgetter + +from . import _config, setters +from ._compat import ( + PY2, + PYPY, + isclass, + iteritems, + metadata_proxy, + ordered_dict, + set_closure_cell, +) +from .exceptions import ( + DefaultAlreadySetError, + FrozenInstanceError, + NotAnAttrsClassError, + PythonTooOldError, + UnannotatedAttributeError, +) + + +# This is used at least twice, so cache it here. +_obj_setattr = object.__setattr__ +_init_converter_pat = "__attr_converter_%s" +_init_factory_pat = "__attr_factory_{}" +_tuple_property_pat = ( + " {attr_name} = _attrs_property(_attrs_itemgetter({index}))" +) +_classvar_prefixes = ("typing.ClassVar", "t.ClassVar", "ClassVar") +# we don't use a double-underscore prefix because that triggers +# name mangling when trying to create a slot for the field +# (when slots=True) +_hash_cache_field = "_attrs_cached_hash" + +_empty_metadata_singleton = metadata_proxy({}) + +# Unique object for unequivocal getattr() defaults. +_sentinel = object() + + +class _Nothing(object): + """ + Sentinel class to indicate the lack of a value when ``None`` is ambiguous. + + ``_Nothing`` is a singleton. There is only ever one of it. + """ + + _singleton = None + + def __new__(cls): + if _Nothing._singleton is None: + _Nothing._singleton = super(_Nothing, cls).__new__(cls) + return _Nothing._singleton + + def __repr__(self): + return "NOTHING" + + +NOTHING = _Nothing() +""" +Sentinel to indicate the lack of a value when ``None`` is ambiguous. +""" + + +class _CacheHashWrapper(int): + """ + An integer subclass that pickles / copies as None + + This is used for non-slots classes with ``cache_hash=True``, to avoid + serializing a potentially (even likely) invalid hash value. Since ``None`` + is the default value for uncalculated hashes, whenever this is copied, + the copy's value for the hash should automatically reset. + + See GH #613 for more details. + """ + + if PY2: + # For some reason `type(None)` isn't callable in Python 2, but we don't + # actually need a constructor for None objects, we just need any + # available function that returns None. + def __reduce__(self, _none_constructor=getattr, _args=(0, "", None)): + return _none_constructor, _args + + else: + + def __reduce__(self, _none_constructor=type(None), _args=()): + return _none_constructor, _args + + +def attrib( + default=NOTHING, + validator=None, + repr=True, + cmp=None, + hash=None, + init=True, + metadata=None, + type=None, + converter=None, + factory=None, + kw_only=False, + eq=None, + order=None, + on_setattr=None, +): + """ + Create a new attribute on a class. + + .. warning:: + + Does *not* do anything unless the class is also decorated with + `attr.s`! + + :param default: A value that is used if an ``attrs``-generated ``__init__`` + is used and no value is passed while instantiating or the attribute is + excluded using ``init=False``. + + If the value is an instance of `Factory`, its callable will be + used to construct a new value (useful for mutable data types like lists + or dicts). + + If a default is not set (or set manually to `attr.NOTHING`), a value + *must* be supplied when instantiating; otherwise a `TypeError` + will be raised. + + The default can also be set using decorator notation as shown below. + + :type default: Any value + + :param callable factory: Syntactic sugar for + ``default=attr.Factory(factory)``. + + :param validator: `callable` that is called by ``attrs``-generated + ``__init__`` methods after the instance has been initialized. They + receive the initialized instance, the `Attribute`, and the + passed value. + + The return value is *not* inspected so the validator has to throw an + exception itself. + + If a `list` is passed, its items are treated as validators and must + all pass. + + Validators can be globally disabled and re-enabled using + `get_run_validators`. + + The validator can also be set using decorator notation as shown below. + + :type validator: `callable` or a `list` of `callable`\\ s. + + :param repr: Include this attribute in the generated ``__repr__`` + method. If ``True``, include the attribute; if ``False``, omit it. By + default, the built-in ``repr()`` function is used. To override how the + attribute value is formatted, pass a ``callable`` that takes a single + value and returns a string. Note that the resulting string is used + as-is, i.e. it will be used directly *instead* of calling ``repr()`` + (the default). + :type repr: a `bool` or a `callable` to use a custom function. + :param bool eq: If ``True`` (default), include this attribute in the + generated ``__eq__`` and ``__ne__`` methods that check two instances + for equality. + :param bool order: If ``True`` (default), include this attributes in the + generated ``__lt__``, ``__le__``, ``__gt__`` and ``__ge__`` methods. + :param bool cmp: Setting to ``True`` is equivalent to setting ``eq=True, + order=True``. Deprecated in favor of *eq* and *order*. + :param Optional[bool] hash: Include this attribute in the generated + ``__hash__`` method. If ``None`` (default), mirror *eq*'s value. This + is the correct behavior according the Python spec. Setting this value + to anything else than ``None`` is *discouraged*. + :param bool init: Include this attribute in the generated ``__init__`` + method. It is possible to set this to ``False`` and set a default + value. In that case this attributed is unconditionally initialized + with the specified default value or factory. + :param callable converter: `callable` that is called by + ``attrs``-generated ``__init__`` methods to convert attribute's value + to the desired format. It is given the passed-in value, and the + returned value will be used as the new value of the attribute. The + value is converted before being passed to the validator, if any. + :param metadata: An arbitrary mapping, to be used by third-party + components. See `extending_metadata`. + :param type: The type of the attribute. In Python 3.6 or greater, the + preferred method to specify the type is using a variable annotation + (see `PEP 526 `_). + This argument is provided for backward compatibility. + Regardless of the approach used, the type will be stored on + ``Attribute.type``. + + Please note that ``attrs`` doesn't do anything with this metadata by + itself. You can use it as part of your own code or for + `static type checking `. + :param kw_only: Make this attribute keyword-only (Python 3+) + in the generated ``__init__`` (if ``init`` is ``False``, this + parameter is ignored). + :param on_setattr: Allows to overwrite the *on_setattr* setting from + `attr.s`. If left `None`, the *on_setattr* value from `attr.s` is used. + Set to `attr.setters.NO_OP` to run **no** `setattr` hooks for this + attribute -- regardless of the setting in `attr.s`. + :type on_setattr: `callable`, or a list of callables, or `None`, or + `attr.setters.NO_OP` + + .. versionadded:: 15.2.0 *convert* + .. versionadded:: 16.3.0 *metadata* + .. versionchanged:: 17.1.0 *validator* can be a ``list`` now. + .. versionchanged:: 17.1.0 + *hash* is ``None`` and therefore mirrors *eq* by default. + .. versionadded:: 17.3.0 *type* + .. deprecated:: 17.4.0 *convert* + .. versionadded:: 17.4.0 *converter* as a replacement for the deprecated + *convert* to achieve consistency with other noun-based arguments. + .. versionadded:: 18.1.0 + ``factory=f`` is syntactic sugar for ``default=attr.Factory(f)``. + .. versionadded:: 18.2.0 *kw_only* + .. versionchanged:: 19.2.0 *convert* keyword argument removed + .. versionchanged:: 19.2.0 *repr* also accepts a custom callable. + .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01. + .. versionadded:: 19.2.0 *eq* and *order* + .. versionadded:: 20.1.0 *on_setattr* + .. versionchanged:: 20.3.0 *kw_only* backported to Python 2 + """ + eq, order = _determine_eq_order(cmp, eq, order, True) + + if hash is not None and hash is not True and hash is not False: + raise TypeError( + "Invalid value for hash. Must be True, False, or None." + ) + + if factory is not None: + if default is not NOTHING: + raise ValueError( + "The `default` and `factory` arguments are mutually " + "exclusive." + ) + if not callable(factory): + raise ValueError("The `factory` argument must be a callable.") + default = Factory(factory) + + if metadata is None: + metadata = {} + + # Apply syntactic sugar by auto-wrapping. + if isinstance(on_setattr, (list, tuple)): + on_setattr = setters.pipe(*on_setattr) + + if validator and isinstance(validator, (list, tuple)): + validator = and_(*validator) + + if converter and isinstance(converter, (list, tuple)): + converter = pipe(*converter) + + return _CountingAttr( + default=default, + validator=validator, + repr=repr, + cmp=None, + hash=hash, + init=init, + converter=converter, + metadata=metadata, + type=type, + kw_only=kw_only, + eq=eq, + order=order, + on_setattr=on_setattr, + ) + + +def _make_attr_tuple_class(cls_name, attr_names): + """ + Create a tuple subclass to hold `Attribute`s for an `attrs` class. + + The subclass is a bare tuple with properties for names. + + class MyClassAttributes(tuple): + __slots__ = () + x = property(itemgetter(0)) + """ + attr_class_name = "{}Attributes".format(cls_name) + attr_class_template = [ + "class {}(tuple):".format(attr_class_name), + " __slots__ = ()", + ] + if attr_names: + for i, attr_name in enumerate(attr_names): + attr_class_template.append( + _tuple_property_pat.format(index=i, attr_name=attr_name) + ) + else: + attr_class_template.append(" pass") + globs = {"_attrs_itemgetter": itemgetter, "_attrs_property": property} + eval(compile("\n".join(attr_class_template), "", "exec"), globs) + + return globs[attr_class_name] + + +# Tuple class for extracted attributes from a class definition. +# `base_attrs` is a subset of `attrs`. +_Attributes = _make_attr_tuple_class( + "_Attributes", + [ + # all attributes to build dunder methods for + "attrs", + # attributes that have been inherited + "base_attrs", + # map inherited attributes to their originating classes + "base_attrs_map", + ], +) + + +def _is_class_var(annot): + """ + Check whether *annot* is a typing.ClassVar. + + The string comparison hack is used to avoid evaluating all string + annotations which would put attrs-based classes at a performance + disadvantage compared to plain old classes. + """ + return str(annot).startswith(_classvar_prefixes) + + +def _has_own_attribute(cls, attrib_name): + """ + Check whether *cls* defines *attrib_name* (and doesn't just inherit it). + + Requires Python 3. + """ + attr = getattr(cls, attrib_name, _sentinel) + if attr is _sentinel: + return False + + for base_cls in cls.__mro__[1:]: + a = getattr(base_cls, attrib_name, None) + if attr is a: + return False + + return True + + +def _get_annotations(cls): + """ + Get annotations for *cls*. + """ + if _has_own_attribute(cls, "__annotations__"): + return cls.__annotations__ + + return {} + + +def _counter_getter(e): + """ + Key function for sorting to avoid re-creating a lambda for every class. + """ + return e[1].counter + + +def _collect_base_attrs(cls, taken_attr_names): + """ + Collect attr.ibs from base classes of *cls*, except *taken_attr_names*. + """ + base_attrs = [] + base_attr_map = {} # A dictionary of base attrs to their classes. + + # Traverse the MRO and collect attributes. + for base_cls in reversed(cls.__mro__[1:-1]): + for a in getattr(base_cls, "__attrs_attrs__", []): + if a.inherited or a.name in taken_attr_names: + continue + + a = a.evolve(inherited=True) + base_attrs.append(a) + base_attr_map[a.name] = base_cls + + # For each name, only keep the freshest definition i.e. the furthest at the + # back. base_attr_map is fine because it gets overwritten with every new + # instance. + filtered = [] + seen = set() + for a in reversed(base_attrs): + if a.name in seen: + continue + filtered.insert(0, a) + seen.add(a.name) + + return filtered, base_attr_map + + +def _collect_base_attrs_broken(cls, taken_attr_names): + """ + Collect attr.ibs from base classes of *cls*, except *taken_attr_names*. + + N.B. *taken_attr_names* will be mutated. + + Adhere to the old incorrect behavior. + + Notably it collects from the front and considers inherited attributes which + leads to the buggy behavior reported in #428. + """ + base_attrs = [] + base_attr_map = {} # A dictionary of base attrs to their classes. + + # Traverse the MRO and collect attributes. + for base_cls in cls.__mro__[1:-1]: + for a in getattr(base_cls, "__attrs_attrs__", []): + if a.name in taken_attr_names: + continue + + a = a.evolve(inherited=True) + taken_attr_names.add(a.name) + base_attrs.append(a) + base_attr_map[a.name] = base_cls + + return base_attrs, base_attr_map + + +def _transform_attrs( + cls, these, auto_attribs, kw_only, collect_by_mro, field_transformer +): + """ + Transform all `_CountingAttr`s on a class into `Attribute`s. + + If *these* is passed, use that and don't look for them on the class. + + *collect_by_mro* is True, collect them in the correct MRO order, otherwise + use the old -- incorrect -- order. See #428. + + Return an `_Attributes`. + """ + cd = cls.__dict__ + anns = _get_annotations(cls) + + if these is not None: + ca_list = [(name, ca) for name, ca in iteritems(these)] + + if not isinstance(these, ordered_dict): + ca_list.sort(key=_counter_getter) + elif auto_attribs is True: + ca_names = { + name + for name, attr in cd.items() + if isinstance(attr, _CountingAttr) + } + ca_list = [] + annot_names = set() + for attr_name, type in anns.items(): + if _is_class_var(type): + continue + annot_names.add(attr_name) + a = cd.get(attr_name, NOTHING) + + if not isinstance(a, _CountingAttr): + if a is NOTHING: + a = attrib() + else: + a = attrib(default=a) + ca_list.append((attr_name, a)) + + unannotated = ca_names - annot_names + if len(unannotated) > 0: + raise UnannotatedAttributeError( + "The following `attr.ib`s lack a type annotation: " + + ", ".join( + sorted(unannotated, key=lambda n: cd.get(n).counter) + ) + + "." + ) + else: + ca_list = sorted( + ( + (name, attr) + for name, attr in cd.items() + if isinstance(attr, _CountingAttr) + ), + key=lambda e: e[1].counter, + ) + + own_attrs = [ + Attribute.from_counting_attr( + name=attr_name, ca=ca, type=anns.get(attr_name) + ) + for attr_name, ca in ca_list + ] + + if collect_by_mro: + base_attrs, base_attr_map = _collect_base_attrs( + cls, {a.name for a in own_attrs} + ) + else: + base_attrs, base_attr_map = _collect_base_attrs_broken( + cls, {a.name for a in own_attrs} + ) + + attr_names = [a.name for a in base_attrs + own_attrs] + + AttrsClass = _make_attr_tuple_class(cls.__name__, attr_names) + + if kw_only: + own_attrs = [a.evolve(kw_only=True) for a in own_attrs] + base_attrs = [a.evolve(kw_only=True) for a in base_attrs] + + attrs = AttrsClass(base_attrs + own_attrs) + + # Mandatory vs non-mandatory attr order only matters when they are part of + # the __init__ signature and when they aren't kw_only (which are moved to + # the end and can be mandatory or non-mandatory in any order, as they will + # be specified as keyword args anyway). Check the order of those attrs: + had_default = False + for a in (a for a in attrs if a.init is not False and a.kw_only is False): + if had_default is True and a.default is NOTHING: + raise ValueError( + "No mandatory attributes allowed after an attribute with a " + "default value or factory. Attribute in question: %r" % (a,) + ) + + if had_default is False and a.default is not NOTHING: + had_default = True + + if field_transformer is not None: + attrs = field_transformer(cls, attrs) + return _Attributes((attrs, base_attrs, base_attr_map)) + + +if PYPY: + + def _frozen_setattrs(self, name, value): + """ + Attached to frozen classes as __setattr__. + """ + if isinstance(self, BaseException) and name in ( + "__cause__", + "__context__", + ): + BaseException.__setattr__(self, name, value) + return + + raise FrozenInstanceError() + + +else: + + def _frozen_setattrs(self, name, value): + """ + Attached to frozen classes as __setattr__. + """ + raise FrozenInstanceError() + + +def _frozen_delattrs(self, name): + """ + Attached to frozen classes as __delattr__. + """ + raise FrozenInstanceError() + + +class _ClassBuilder(object): + """ + Iteratively build *one* class. + """ + + __slots__ = ( + "_attr_names", + "_attrs", + "_base_attr_map", + "_base_names", + "_cache_hash", + "_cls", + "_cls_dict", + "_delete_attribs", + "_frozen", + "_has_post_init", + "_is_exc", + "_on_setattr", + "_slots", + "_weakref_slot", + "_has_own_setattr", + "_has_custom_setattr", + ) + + def __init__( + self, + cls, + these, + slots, + frozen, + weakref_slot, + getstate_setstate, + auto_attribs, + kw_only, + cache_hash, + is_exc, + collect_by_mro, + on_setattr, + has_custom_setattr, + field_transformer, + ): + attrs, base_attrs, base_map = _transform_attrs( + cls, + these, + auto_attribs, + kw_only, + collect_by_mro, + field_transformer, + ) + + self._cls = cls + self._cls_dict = dict(cls.__dict__) if slots else {} + self._attrs = attrs + self._base_names = set(a.name for a in base_attrs) + self._base_attr_map = base_map + self._attr_names = tuple(a.name for a in attrs) + self._slots = slots + self._frozen = frozen + self._weakref_slot = weakref_slot + self._cache_hash = cache_hash + self._has_post_init = bool(getattr(cls, "__attrs_post_init__", False)) + self._delete_attribs = not bool(these) + self._is_exc = is_exc + self._on_setattr = on_setattr + + self._has_custom_setattr = has_custom_setattr + self._has_own_setattr = False + + self._cls_dict["__attrs_attrs__"] = self._attrs + + if frozen: + self._cls_dict["__setattr__"] = _frozen_setattrs + self._cls_dict["__delattr__"] = _frozen_delattrs + + self._has_own_setattr = True + + if getstate_setstate: + ( + self._cls_dict["__getstate__"], + self._cls_dict["__setstate__"], + ) = self._make_getstate_setstate() + + def __repr__(self): + return "<_ClassBuilder(cls={cls})>".format(cls=self._cls.__name__) + + def build_class(self): + """ + Finalize class based on the accumulated configuration. + + Builder cannot be used after calling this method. + """ + if self._slots is True: + return self._create_slots_class() + else: + return self._patch_original_class() + + def _patch_original_class(self): + """ + Apply accumulated methods and return the class. + """ + cls = self._cls + base_names = self._base_names + + # Clean class of attribute definitions (`attr.ib()`s). + if self._delete_attribs: + for name in self._attr_names: + if ( + name not in base_names + and getattr(cls, name, _sentinel) is not _sentinel + ): + try: + delattr(cls, name) + except AttributeError: + # This can happen if a base class defines a class + # variable and we want to set an attribute with the + # same name by using only a type annotation. + pass + + # Attach our dunder methods. + for name, value in self._cls_dict.items(): + setattr(cls, name, value) + + # If we've inherited an attrs __setattr__ and don't write our own, + # reset it to object's. + if not self._has_own_setattr and getattr( + cls, "__attrs_own_setattr__", False + ): + cls.__attrs_own_setattr__ = False + + if not self._has_custom_setattr: + cls.__setattr__ = object.__setattr__ + + return cls + + def _create_slots_class(self): + """ + Build and return a new class with a `__slots__` attribute. + """ + base_names = self._base_names + cd = { + k: v + for k, v in iteritems(self._cls_dict) + if k not in tuple(self._attr_names) + ("__dict__", "__weakref__") + } + + # If our class doesn't have its own implementation of __setattr__ + # (either from the user or by us), check the bases, if one of them has + # an attrs-made __setattr__, that needs to be reset. We don't walk the + # MRO because we only care about our immediate base classes. + # XXX: This can be confused by subclassing a slotted attrs class with + # XXX: a non-attrs class and subclass the resulting class with an attrs + # XXX: class. See `test_slotted_confused` for details. For now that's + # XXX: OK with us. + if not self._has_own_setattr: + cd["__attrs_own_setattr__"] = False + + if not self._has_custom_setattr: + for base_cls in self._cls.__bases__: + if base_cls.__dict__.get("__attrs_own_setattr__", False): + cd["__setattr__"] = object.__setattr__ + break + + # Traverse the MRO to check for an existing __weakref__. + weakref_inherited = False + for base_cls in self._cls.__mro__[1:-1]: + if base_cls.__dict__.get("__weakref__", None) is not None: + weakref_inherited = True + break + + names = self._attr_names + if ( + self._weakref_slot + and "__weakref__" not in getattr(self._cls, "__slots__", ()) + and "__weakref__" not in names + and not weakref_inherited + ): + names += ("__weakref__",) + + # We only add the names of attributes that aren't inherited. + # Setting __slots__ to inherited attributes wastes memory. + slot_names = [name for name in names if name not in base_names] + if self._cache_hash: + slot_names.append(_hash_cache_field) + cd["__slots__"] = tuple(slot_names) + + qualname = getattr(self._cls, "__qualname__", None) + if qualname is not None: + cd["__qualname__"] = qualname + + # Create new class based on old class and our methods. + cls = type(self._cls)(self._cls.__name__, self._cls.__bases__, cd) + + # The following is a fix for + # https://github.com/python-attrs/attrs/issues/102. On Python 3, + # if a method mentions `__class__` or uses the no-arg super(), the + # compiler will bake a reference to the class in the method itself + # as `method.__closure__`. Since we replace the class with a + # clone, we rewrite these references so it keeps working. + for item in cls.__dict__.values(): + if isinstance(item, (classmethod, staticmethod)): + # Class- and staticmethods hide their functions inside. + # These might need to be rewritten as well. + closure_cells = getattr(item.__func__, "__closure__", None) + else: + closure_cells = getattr(item, "__closure__", None) + + if not closure_cells: # Catch None or the empty list. + continue + for cell in closure_cells: + try: + match = cell.cell_contents is self._cls + except ValueError: # ValueError: Cell is empty + pass + else: + if match: + set_closure_cell(cell, cls) + + return cls + + def add_repr(self, ns): + self._cls_dict["__repr__"] = self._add_method_dunders( + _make_repr(self._attrs, ns=ns) + ) + return self + + def add_str(self): + repr = self._cls_dict.get("__repr__") + if repr is None: + raise ValueError( + "__str__ can only be generated if a __repr__ exists." + ) + + def __str__(self): + return self.__repr__() + + self._cls_dict["__str__"] = self._add_method_dunders(__str__) + return self + + def _make_getstate_setstate(self): + """ + Create custom __setstate__ and __getstate__ methods. + """ + # __weakref__ is not writable. + state_attr_names = tuple( + an for an in self._attr_names if an != "__weakref__" + ) + + def slots_getstate(self): + """ + Automatically created by attrs. + """ + return tuple(getattr(self, name) for name in state_attr_names) + + hash_caching_enabled = self._cache_hash + + def slots_setstate(self, state): + """ + Automatically created by attrs. + """ + __bound_setattr = _obj_setattr.__get__(self, Attribute) + for name, value in zip(state_attr_names, state): + __bound_setattr(name, value) + + # The hash code cache is not included when the object is + # serialized, but it still needs to be initialized to None to + # indicate that the first call to __hash__ should be a cache + # miss. + if hash_caching_enabled: + __bound_setattr(_hash_cache_field, None) + + return slots_getstate, slots_setstate + + def make_unhashable(self): + self._cls_dict["__hash__"] = None + return self + + def add_hash(self): + self._cls_dict["__hash__"] = self._add_method_dunders( + _make_hash( + self._cls, + self._attrs, + frozen=self._frozen, + cache_hash=self._cache_hash, + ) + ) + + return self + + def add_init(self): + self._cls_dict["__init__"] = self._add_method_dunders( + _make_init( + self._cls, + self._attrs, + self._has_post_init, + self._frozen, + self._slots, + self._cache_hash, + self._base_attr_map, + self._is_exc, + self._on_setattr is not None + and self._on_setattr is not setters.NO_OP, + ) + ) + + return self + + def add_eq(self): + cd = self._cls_dict + + cd["__eq__"] = self._add_method_dunders( + _make_eq(self._cls, self._attrs) + ) + cd["__ne__"] = self._add_method_dunders(_make_ne()) + + return self + + def add_order(self): + cd = self._cls_dict + + cd["__lt__"], cd["__le__"], cd["__gt__"], cd["__ge__"] = ( + self._add_method_dunders(meth) + for meth in _make_order(self._cls, self._attrs) + ) + + return self + + def add_setattr(self): + if self._frozen: + return self + + sa_attrs = {} + for a in self._attrs: + on_setattr = a.on_setattr or self._on_setattr + if on_setattr and on_setattr is not setters.NO_OP: + sa_attrs[a.name] = a, on_setattr + + if not sa_attrs: + return self + + if self._has_custom_setattr: + # We need to write a __setattr__ but there already is one! + raise ValueError( + "Can't combine custom __setattr__ with on_setattr hooks." + ) + + # docstring comes from _add_method_dunders + def __setattr__(self, name, val): + try: + a, hook = sa_attrs[name] + except KeyError: + nval = val + else: + nval = hook(self, a, val) + + _obj_setattr(self, name, nval) + + self._cls_dict["__attrs_own_setattr__"] = True + self._cls_dict["__setattr__"] = self._add_method_dunders(__setattr__) + self._has_own_setattr = True + + return self + + def _add_method_dunders(self, method): + """ + Add __module__ and __qualname__ to a *method* if possible. + """ + try: + method.__module__ = self._cls.__module__ + except AttributeError: + pass + + try: + method.__qualname__ = ".".join( + (self._cls.__qualname__, method.__name__) + ) + except AttributeError: + pass + + try: + method.__doc__ = "Method generated by attrs for class %s." % ( + self._cls.__qualname__, + ) + except AttributeError: + pass + + return method + + +_CMP_DEPRECATION = ( + "The usage of `cmp` is deprecated and will be removed on or after " + "2021-06-01. Please use `eq` and `order` instead." +) + + +def _determine_eq_order(cmp, eq, order, default_eq): + """ + Validate the combination of *cmp*, *eq*, and *order*. Derive the effective + values of eq and order. If *eq* is None, set it to *default_eq*. + """ + if cmp is not None and any((eq is not None, order is not None)): + raise ValueError("Don't mix `cmp` with `eq' and `order`.") + + # cmp takes precedence due to bw-compatibility. + if cmp is not None: + warnings.warn(_CMP_DEPRECATION, DeprecationWarning, stacklevel=3) + + return cmp, cmp + + # If left None, equality is set to the specified default and ordering + # mirrors equality. + if eq is None: + eq = default_eq + + if order is None: + order = eq + + if eq is False and order is True: + raise ValueError("`order` can only be True if `eq` is True too.") + + return eq, order + + +def _determine_whether_to_implement( + cls, flag, auto_detect, dunders, default=True +): + """ + Check whether we should implement a set of methods for *cls*. + + *flag* is the argument passed into @attr.s like 'init', *auto_detect* the + same as passed into @attr.s and *dunders* is a tuple of attribute names + whose presence signal that the user has implemented it themselves. + + Return *default* if no reason for either for or against is found. + + auto_detect must be False on Python 2. + """ + if flag is True or flag is False: + return flag + + if flag is None and auto_detect is False: + return default + + # Logically, flag is None and auto_detect is True here. + for dunder in dunders: + if _has_own_attribute(cls, dunder): + return False + + return default + + +def attrs( + maybe_cls=None, + these=None, + repr_ns=None, + repr=None, + cmp=None, + hash=None, + init=None, + slots=False, + frozen=False, + weakref_slot=True, + str=False, + auto_attribs=False, + kw_only=False, + cache_hash=False, + auto_exc=False, + eq=None, + order=None, + auto_detect=False, + collect_by_mro=False, + getstate_setstate=None, + on_setattr=None, + field_transformer=None, +): + r""" + A class decorator that adds `dunder + `_\ -methods according to the + specified attributes using `attr.ib` or the *these* argument. + + :param these: A dictionary of name to `attr.ib` mappings. This is + useful to avoid the definition of your attributes within the class body + because you can't (e.g. if you want to add ``__repr__`` methods to + Django models) or don't want to. + + If *these* is not ``None``, ``attrs`` will *not* search the class body + for attributes and will *not* remove any attributes from it. + + If *these* is an ordered dict (`dict` on Python 3.6+, + `collections.OrderedDict` otherwise), the order is deduced from + the order of the attributes inside *these*. Otherwise the order + of the definition of the attributes is used. + + :type these: `dict` of `str` to `attr.ib` + + :param str repr_ns: When using nested classes, there's no way in Python 2 + to automatically detect that. Therefore it's possible to set the + namespace explicitly for a more meaningful ``repr`` output. + :param bool auto_detect: Instead of setting the *init*, *repr*, *eq*, + *order*, and *hash* arguments explicitly, assume they are set to + ``True`` **unless any** of the involved methods for one of the + arguments is implemented in the *current* class (i.e. it is *not* + inherited from some base class). + + So for example by implementing ``__eq__`` on a class yourself, + ``attrs`` will deduce ``eq=False`` and won't create *neither* + ``__eq__`` *nor* ``__ne__`` (but Python classes come with a sensible + ``__ne__`` by default, so it *should* be enough to only implement + ``__eq__`` in most cases). + + .. warning:: + + If you prevent ``attrs`` from creating the ordering methods for you + (``order=False``, e.g. by implementing ``__le__``), it becomes + *your* responsibility to make sure its ordering is sound. The best + way is to use the `functools.total_ordering` decorator. + + + Passing ``True`` or ``False`` to *init*, *repr*, *eq*, *order*, + *cmp*, or *hash* overrides whatever *auto_detect* would determine. + + *auto_detect* requires Python 3. Setting it ``True`` on Python 2 raises + a `PythonTooOldError`. + + :param bool repr: Create a ``__repr__`` method with a human readable + representation of ``attrs`` attributes.. + :param bool str: Create a ``__str__`` method that is identical to + ``__repr__``. This is usually not necessary except for + `Exception`\ s. + :param Optional[bool] eq: If ``True`` or ``None`` (default), add ``__eq__`` + and ``__ne__`` methods that check two instances for equality. + + They compare the instances as if they were tuples of their ``attrs`` + attributes if and only if the types of both classes are *identical*! + :param Optional[bool] order: If ``True``, add ``__lt__``, ``__le__``, + ``__gt__``, and ``__ge__`` methods that behave like *eq* above and + allow instances to be ordered. If ``None`` (default) mirror value of + *eq*. + :param Optional[bool] cmp: Setting to ``True`` is equivalent to setting + ``eq=True, order=True``. Deprecated in favor of *eq* and *order*, has + precedence over them for backward-compatibility though. Must not be + mixed with *eq* or *order*. + :param Optional[bool] hash: If ``None`` (default), the ``__hash__`` method + is generated according how *eq* and *frozen* are set. + + 1. If *both* are True, ``attrs`` will generate a ``__hash__`` for you. + 2. If *eq* is True and *frozen* is False, ``__hash__`` will be set to + None, marking it unhashable (which it is). + 3. If *eq* is False, ``__hash__`` will be left untouched meaning the + ``__hash__`` method of the base class will be used (if base class is + ``object``, this means it will fall back to id-based hashing.). + + Although not recommended, you can decide for yourself and force + ``attrs`` to create one (e.g. if the class is immutable even though you + didn't freeze it programmatically) by passing ``True`` or not. Both of + these cases are rather special and should be used carefully. + + See our documentation on `hashing`, Python's documentation on + `object.__hash__`, and the `GitHub issue that led to the default \ + behavior `_ for more + details. + :param bool init: Create a ``__init__`` method that initializes the + ``attrs`` attributes. Leading underscores are stripped for the + argument name. If a ``__attrs_post_init__`` method exists on the + class, it will be called after the class is fully initialized. + :param bool slots: Create a `slotted class ` that's more + memory-efficient. Slotted classes are generally superior to the default + dict classes, but have some gotchas you should know about, so we + encourage you to read the `glossary entry `. + :param bool frozen: Make instances immutable after initialization. If + someone attempts to modify a frozen instance, + `attr.exceptions.FrozenInstanceError` is raised. + + .. note:: + + 1. This is achieved by installing a custom ``__setattr__`` method + on your class, so you can't implement your own. + + 2. True immutability is impossible in Python. + + 3. This *does* have a minor a runtime performance `impact + ` when initializing new instances. In other words: + ``__init__`` is slightly slower with ``frozen=True``. + + 4. If a class is frozen, you cannot modify ``self`` in + ``__attrs_post_init__`` or a self-written ``__init__``. You can + circumvent that limitation by using + ``object.__setattr__(self, "attribute_name", value)``. + + 5. Subclasses of a frozen class are frozen too. + + :param bool weakref_slot: Make instances weak-referenceable. This has no + effect unless ``slots`` is also enabled. + :param bool auto_attribs: If ``True``, collect `PEP 526`_-annotated + attributes (Python 3.6 and later only) from the class body. + + In this case, you **must** annotate every field. If ``attrs`` + encounters a field that is set to an `attr.ib` but lacks a type + annotation, an `attr.exceptions.UnannotatedAttributeError` is + raised. Use ``field_name: typing.Any = attr.ib(...)`` if you don't + want to set a type. + + If you assign a value to those attributes (e.g. ``x: int = 42``), that + value becomes the default value like if it were passed using + ``attr.ib(default=42)``. Passing an instance of `Factory` also + works as expected. + + Attributes annotated as `typing.ClassVar`, and attributes that are + neither annotated nor set to an `attr.ib` are **ignored**. + + .. _`PEP 526`: https://www.python.org/dev/peps/pep-0526/ + :param bool kw_only: Make all attributes keyword-only (Python 3+) + in the generated ``__init__`` (if ``init`` is ``False``, this + parameter is ignored). + :param bool cache_hash: Ensure that the object's hash code is computed + only once and stored on the object. If this is set to ``True``, + hashing must be either explicitly or implicitly enabled for this + class. If the hash code is cached, avoid any reassignments of + fields involved in hash code computation or mutations of the objects + those fields point to after object creation. If such changes occur, + the behavior of the object's hash code is undefined. + :param bool auto_exc: If the class subclasses `BaseException` + (which implicitly includes any subclass of any exception), the + following happens to behave like a well-behaved Python exceptions + class: + + - the values for *eq*, *order*, and *hash* are ignored and the + instances compare and hash by the instance's ids (N.B. ``attrs`` will + *not* remove existing implementations of ``__hash__`` or the equality + methods. It just won't add own ones.), + - all attributes that are either passed into ``__init__`` or have a + default value are additionally available as a tuple in the ``args`` + attribute, + - the value of *str* is ignored leaving ``__str__`` to base classes. + :param bool collect_by_mro: Setting this to `True` fixes the way ``attrs`` + collects attributes from base classes. The default behavior is + incorrect in certain cases of multiple inheritance. It should be on by + default but is kept off for backward-compatability. + + See issue `#428 `_ for + more details. + + :param Optional[bool] getstate_setstate: + .. note:: + This is usually only interesting for slotted classes and you should + probably just set *auto_detect* to `True`. + + If `True`, ``__getstate__`` and + ``__setstate__`` are generated and attached to the class. This is + necessary for slotted classes to be pickleable. If left `None`, it's + `True` by default for slotted classes and ``False`` for dict classes. + + If *auto_detect* is `True`, and *getstate_setstate* is left `None`, + and **either** ``__getstate__`` or ``__setstate__`` is detected directly + on the class (i.e. not inherited), it is set to `False` (this is usually + what you want). + + :param on_setattr: A callable that is run whenever the user attempts to set + an attribute (either by assignment like ``i.x = 42`` or by using + `setattr` like ``setattr(i, "x", 42)``). It receives the same arguments + as validators: the instance, the attribute that is being modified, and + the new value. + + If no exception is raised, the attribute is set to the return value of + the callable. + + If a list of callables is passed, they're automatically wrapped in an + `attr.setters.pipe`. + + :param Optional[callable] field_transformer: + A function that is called with the original class object and all + fields right before ``attrs`` finalizes the class. You can use + this, e.g., to automatically add converters or validators to + fields based on their types. See `transform-fields` for more details. + + .. versionadded:: 16.0.0 *slots* + .. versionadded:: 16.1.0 *frozen* + .. versionadded:: 16.3.0 *str* + .. versionadded:: 16.3.0 Support for ``__attrs_post_init__``. + .. versionchanged:: 17.1.0 + *hash* supports ``None`` as value which is also the default now. + .. versionadded:: 17.3.0 *auto_attribs* + .. versionchanged:: 18.1.0 + If *these* is passed, no attributes are deleted from the class body. + .. versionchanged:: 18.1.0 If *these* is ordered, the order is retained. + .. versionadded:: 18.2.0 *weakref_slot* + .. deprecated:: 18.2.0 + ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now raise a + `DeprecationWarning` if the classes compared are subclasses of + each other. ``__eq`` and ``__ne__`` never tried to compared subclasses + to each other. + .. versionchanged:: 19.2.0 + ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` now do not consider + subclasses comparable anymore. + .. versionadded:: 18.2.0 *kw_only* + .. versionadded:: 18.2.0 *cache_hash* + .. versionadded:: 19.1.0 *auto_exc* + .. deprecated:: 19.2.0 *cmp* Removal on or after 2021-06-01. + .. versionadded:: 19.2.0 *eq* and *order* + .. versionadded:: 20.1.0 *auto_detect* + .. versionadded:: 20.1.0 *collect_by_mro* + .. versionadded:: 20.1.0 *getstate_setstate* + .. versionadded:: 20.1.0 *on_setattr* + .. versionadded:: 20.3.0 *field_transformer* + """ + if auto_detect and PY2: + raise PythonTooOldError( + "auto_detect only works on Python 3 and later." + ) + + eq_, order_ = _determine_eq_order(cmp, eq, order, None) + hash_ = hash # work around the lack of nonlocal + + if isinstance(on_setattr, (list, tuple)): + on_setattr = setters.pipe(*on_setattr) + + def wrap(cls): + + if getattr(cls, "__class__", None) is None: + raise TypeError("attrs only works with new-style classes.") + + is_frozen = frozen or _has_frozen_base_class(cls) + is_exc = auto_exc is True and issubclass(cls, BaseException) + has_own_setattr = auto_detect and _has_own_attribute( + cls, "__setattr__" + ) + + if has_own_setattr and is_frozen: + raise ValueError("Can't freeze a class with a custom __setattr__.") + + builder = _ClassBuilder( + cls, + these, + slots, + is_frozen, + weakref_slot, + _determine_whether_to_implement( + cls, + getstate_setstate, + auto_detect, + ("__getstate__", "__setstate__"), + default=slots, + ), + auto_attribs, + kw_only, + cache_hash, + is_exc, + collect_by_mro, + on_setattr, + has_own_setattr, + field_transformer, + ) + if _determine_whether_to_implement( + cls, repr, auto_detect, ("__repr__",) + ): + builder.add_repr(repr_ns) + if str is True: + builder.add_str() + + eq = _determine_whether_to_implement( + cls, eq_, auto_detect, ("__eq__", "__ne__") + ) + if not is_exc and eq is True: + builder.add_eq() + if not is_exc and _determine_whether_to_implement( + cls, order_, auto_detect, ("__lt__", "__le__", "__gt__", "__ge__") + ): + builder.add_order() + + builder.add_setattr() + + if ( + hash_ is None + and auto_detect is True + and _has_own_attribute(cls, "__hash__") + ): + hash = False + else: + hash = hash_ + if hash is not True and hash is not False and hash is not None: + # Can't use `hash in` because 1 == True for example. + raise TypeError( + "Invalid value for hash. Must be True, False, or None." + ) + elif hash is False or (hash is None and eq is False) or is_exc: + # Don't do anything. Should fall back to __object__'s __hash__ + # which is by id. + if cache_hash: + raise TypeError( + "Invalid value for cache_hash. To use hash caching," + " hashing must be either explicitly or implicitly " + "enabled." + ) + elif hash is True or ( + hash is None and eq is True and is_frozen is True + ): + # Build a __hash__ if told so, or if it's safe. + builder.add_hash() + else: + # Raise TypeError on attempts to hash. + if cache_hash: + raise TypeError( + "Invalid value for cache_hash. To use hash caching," + " hashing must be either explicitly or implicitly " + "enabled." + ) + builder.make_unhashable() + + if _determine_whether_to_implement( + cls, init, auto_detect, ("__init__",) + ): + builder.add_init() + else: + if cache_hash: + raise TypeError( + "Invalid value for cache_hash. To use hash caching," + " init must be True." + ) + + return builder.build_class() + + # maybe_cls's type depends on the usage of the decorator. It's a class + # if it's used as `@attrs` but ``None`` if used as `@attrs()`. + if maybe_cls is None: + return wrap + else: + return wrap(maybe_cls) + + +_attrs = attrs +""" +Internal alias so we can use it in functions that take an argument called +*attrs*. +""" + + +if PY2: + + def _has_frozen_base_class(cls): + """ + Check whether *cls* has a frozen ancestor by looking at its + __setattr__. + """ + return ( + getattr(cls.__setattr__, "__module__", None) + == _frozen_setattrs.__module__ + and cls.__setattr__.__name__ == _frozen_setattrs.__name__ + ) + + +else: + + def _has_frozen_base_class(cls): + """ + Check whether *cls* has a frozen ancestor by looking at its + __setattr__. + """ + return cls.__setattr__ == _frozen_setattrs + + +def _attrs_to_tuple(obj, attrs): + """ + Create a tuple of all values of *obj*'s *attrs*. + """ + return tuple(getattr(obj, a.name) for a in attrs) + + +def _generate_unique_filename(cls, func_name): + """ + Create a "filename" suitable for a function being generated. + """ + unique_id = uuid.uuid4() + extra = "" + count = 1 + + while True: + unique_filename = "".format( + func_name, + cls.__module__, + getattr(cls, "__qualname__", cls.__name__), + extra, + ) + # To handle concurrency we essentially "reserve" our spot in + # the linecache with a dummy line. The caller can then + # set this value correctly. + cache_line = (1, None, (str(unique_id),), unique_filename) + if ( + linecache.cache.setdefault(unique_filename, cache_line) + == cache_line + ): + return unique_filename + + # Looks like this spot is taken. Try again. + count += 1 + extra = "-{0}".format(count) + + +def _make_hash(cls, attrs, frozen, cache_hash): + attrs = tuple( + a for a in attrs if a.hash is True or (a.hash is None and a.eq is True) + ) + + tab = " " + + unique_filename = _generate_unique_filename(cls, "hash") + type_hash = hash(unique_filename) + + hash_def = "def __hash__(self" + hash_func = "hash((" + closing_braces = "))" + if not cache_hash: + hash_def += "):" + else: + if not PY2: + hash_def += ", *" + + hash_def += ( + ", _cache_wrapper=" + + "__import__('attr._make')._make._CacheHashWrapper):" + ) + hash_func = "_cache_wrapper(" + hash_func + closing_braces += ")" + + method_lines = [hash_def] + + def append_hash_computation_lines(prefix, indent): + """ + Generate the code for actually computing the hash code. + Below this will either be returned directly or used to compute + a value which is then cached, depending on the value of cache_hash + """ + + method_lines.extend( + [ + indent + prefix + hash_func, + indent + " %d," % (type_hash,), + ] + ) + + for a in attrs: + method_lines.append(indent + " self.%s," % a.name) + + method_lines.append(indent + " " + closing_braces) + + if cache_hash: + method_lines.append(tab + "if self.%s is None:" % _hash_cache_field) + if frozen: + append_hash_computation_lines( + "object.__setattr__(self, '%s', " % _hash_cache_field, tab * 2 + ) + method_lines.append(tab * 2 + ")") # close __setattr__ + else: + append_hash_computation_lines( + "self.%s = " % _hash_cache_field, tab * 2 + ) + method_lines.append(tab + "return self.%s" % _hash_cache_field) + else: + append_hash_computation_lines("return ", tab) + + script = "\n".join(method_lines) + globs = {} + locs = {} + bytecode = compile(script, unique_filename, "exec") + eval(bytecode, globs, locs) + + # In order of debuggers like PDB being able to step through the code, + # we add a fake linecache entry. + linecache.cache[unique_filename] = ( + len(script), + None, + script.splitlines(True), + unique_filename, + ) + + return locs["__hash__"] + + +def _add_hash(cls, attrs): + """ + Add a hash method to *cls*. + """ + cls.__hash__ = _make_hash(cls, attrs, frozen=False, cache_hash=False) + return cls + + +def _make_ne(): + """ + Create __ne__ method. + """ + + def __ne__(self, other): + """ + Check equality and either forward a NotImplemented or + return the result negated. + """ + result = self.__eq__(other) + if result is NotImplemented: + return NotImplemented + + return not result + + return __ne__ + + +def _make_eq(cls, attrs): + """ + Create __eq__ method for *cls* with *attrs*. + """ + attrs = [a for a in attrs if a.eq] + + unique_filename = _generate_unique_filename(cls, "eq") + lines = [ + "def __eq__(self, other):", + " if other.__class__ is not self.__class__:", + " return NotImplemented", + ] + # We can't just do a big self.x = other.x and... clause due to + # irregularities like nan == nan is false but (nan,) == (nan,) is true. + if attrs: + lines.append(" return (") + others = [" ) == ("] + for a in attrs: + lines.append(" self.%s," % (a.name,)) + others.append(" other.%s," % (a.name,)) + + lines += others + [" )"] + else: + lines.append(" return True") + + script = "\n".join(lines) + globs = {} + locs = {} + bytecode = compile(script, unique_filename, "exec") + eval(bytecode, globs, locs) + + # In order of debuggers like PDB being able to step through the code, + # we add a fake linecache entry. + linecache.cache[unique_filename] = ( + len(script), + None, + script.splitlines(True), + unique_filename, + ) + return locs["__eq__"] + + +def _make_order(cls, attrs): + """ + Create ordering methods for *cls* with *attrs*. + """ + attrs = [a for a in attrs if a.order] + + def attrs_to_tuple(obj): + """ + Save us some typing. + """ + return _attrs_to_tuple(obj, attrs) + + def __lt__(self, other): + """ + Automatically created by attrs. + """ + if other.__class__ is self.__class__: + return attrs_to_tuple(self) < attrs_to_tuple(other) + + return NotImplemented + + def __le__(self, other): + """ + Automatically created by attrs. + """ + if other.__class__ is self.__class__: + return attrs_to_tuple(self) <= attrs_to_tuple(other) + + return NotImplemented + + def __gt__(self, other): + """ + Automatically created by attrs. + """ + if other.__class__ is self.__class__: + return attrs_to_tuple(self) > attrs_to_tuple(other) + + return NotImplemented + + def __ge__(self, other): + """ + Automatically created by attrs. + """ + if other.__class__ is self.__class__: + return attrs_to_tuple(self) >= attrs_to_tuple(other) + + return NotImplemented + + return __lt__, __le__, __gt__, __ge__ + + +def _add_eq(cls, attrs=None): + """ + Add equality methods to *cls* with *attrs*. + """ + if attrs is None: + attrs = cls.__attrs_attrs__ + + cls.__eq__ = _make_eq(cls, attrs) + cls.__ne__ = _make_ne() + + return cls + + +_already_repring = threading.local() + + +def _make_repr(attrs, ns): + """ + Make a repr method that includes relevant *attrs*, adding *ns* to the full + name. + """ + + # Figure out which attributes to include, and which function to use to + # format them. The a.repr value can be either bool or a custom callable. + attr_names_with_reprs = tuple( + (a.name, repr if a.repr is True else a.repr) + for a in attrs + if a.repr is not False + ) + + def __repr__(self): + """ + Automatically created by attrs. + """ + try: + working_set = _already_repring.working_set + except AttributeError: + working_set = set() + _already_repring.working_set = working_set + + if id(self) in working_set: + return "..." + real_cls = self.__class__ + if ns is None: + qualname = getattr(real_cls, "__qualname__", None) + if qualname is not None: + class_name = qualname.rsplit(">.", 1)[-1] + else: + class_name = real_cls.__name__ + else: + class_name = ns + "." + real_cls.__name__ + + # Since 'self' remains on the stack (i.e.: strongly referenced) for the + # duration of this call, it's safe to depend on id(...) stability, and + # not need to track the instance and therefore worry about properties + # like weakref- or hash-ability. + working_set.add(id(self)) + try: + result = [class_name, "("] + first = True + for name, attr_repr in attr_names_with_reprs: + if first: + first = False + else: + result.append(", ") + result.extend( + (name, "=", attr_repr(getattr(self, name, NOTHING))) + ) + return "".join(result) + ")" + finally: + working_set.remove(id(self)) + + return __repr__ + + +def _add_repr(cls, ns=None, attrs=None): + """ + Add a repr method to *cls*. + """ + if attrs is None: + attrs = cls.__attrs_attrs__ + + cls.__repr__ = _make_repr(attrs, ns) + return cls + + +def fields(cls): + """ + Return the tuple of ``attrs`` attributes for a class. + + The tuple also allows accessing the fields by their names (see below for + examples). + + :param type cls: Class to introspect. + + :raise TypeError: If *cls* is not a class. + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + :rtype: tuple (with name accessors) of `attr.Attribute` + + .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields + by name. + """ + if not isclass(cls): + raise TypeError("Passed object must be a class.") + attrs = getattr(cls, "__attrs_attrs__", None) + if attrs is None: + raise NotAnAttrsClassError( + "{cls!r} is not an attrs-decorated class.".format(cls=cls) + ) + return attrs + + +def fields_dict(cls): + """ + Return an ordered dictionary of ``attrs`` attributes for a class, whose + keys are the attribute names. + + :param type cls: Class to introspect. + + :raise TypeError: If *cls* is not a class. + :raise attr.exceptions.NotAnAttrsClassError: If *cls* is not an ``attrs`` + class. + + :rtype: an ordered dict where keys are attribute names and values are + `attr.Attribute`\\ s. This will be a `dict` if it's + naturally ordered like on Python 3.6+ or an + :class:`~collections.OrderedDict` otherwise. + + .. versionadded:: 18.1.0 + """ + if not isclass(cls): + raise TypeError("Passed object must be a class.") + attrs = getattr(cls, "__attrs_attrs__", None) + if attrs is None: + raise NotAnAttrsClassError( + "{cls!r} is not an attrs-decorated class.".format(cls=cls) + ) + return ordered_dict(((a.name, a) for a in attrs)) + + +def validate(inst): + """ + Validate all attributes on *inst* that have a validator. + + Leaves all exceptions through. + + :param inst: Instance of a class with ``attrs`` attributes. + """ + if _config._run_validators is False: + return + + for a in fields(inst.__class__): + v = a.validator + if v is not None: + v(inst, a, getattr(inst, a.name)) + + +def _is_slot_cls(cls): + return "__slots__" in cls.__dict__ + + +def _is_slot_attr(a_name, base_attr_map): + """ + Check if the attribute name comes from a slot class. + """ + return a_name in base_attr_map and _is_slot_cls(base_attr_map[a_name]) + + +def _make_init( + cls, + attrs, + post_init, + frozen, + slots, + cache_hash, + base_attr_map, + is_exc, + has_global_on_setattr, +): + if frozen and has_global_on_setattr: + raise ValueError("Frozen classes can't use on_setattr.") + + needs_cached_setattr = cache_hash or frozen + filtered_attrs = [] + attr_dict = {} + for a in attrs: + if not a.init and a.default is NOTHING: + continue + + filtered_attrs.append(a) + attr_dict[a.name] = a + + if a.on_setattr is not None: + if frozen is True: + raise ValueError("Frozen classes can't use on_setattr.") + + needs_cached_setattr = True + elif ( + has_global_on_setattr and a.on_setattr is not setters.NO_OP + ) or _is_slot_attr(a.name, base_attr_map): + needs_cached_setattr = True + + unique_filename = _generate_unique_filename(cls, "init") + + script, globs, annotations = _attrs_to_init_script( + filtered_attrs, + frozen, + slots, + post_init, + cache_hash, + base_attr_map, + is_exc, + needs_cached_setattr, + has_global_on_setattr, + ) + locs = {} + bytecode = compile(script, unique_filename, "exec") + globs.update({"NOTHING": NOTHING, "attr_dict": attr_dict}) + + if needs_cached_setattr: + # Save the lookup overhead in __init__ if we need to circumvent + # setattr hooks. + globs["_cached_setattr"] = _obj_setattr + + eval(bytecode, globs, locs) + + # In order of debuggers like PDB being able to step through the code, + # we add a fake linecache entry. + linecache.cache[unique_filename] = ( + len(script), + None, + script.splitlines(True), + unique_filename, + ) + + __init__ = locs["__init__"] + __init__.__annotations__ = annotations + + return __init__ + + +def _setattr(attr_name, value_var, has_on_setattr): + """ + Use the cached object.setattr to set *attr_name* to *value_var*. + """ + return "_setattr('%s', %s)" % (attr_name, value_var) + + +def _setattr_with_converter(attr_name, value_var, has_on_setattr): + """ + Use the cached object.setattr to set *attr_name* to *value_var*, but run + its converter first. + """ + return "_setattr('%s', %s(%s))" % ( + attr_name, + _init_converter_pat % (attr_name,), + value_var, + ) + + +def _assign(attr_name, value, has_on_setattr): + """ + Unless *attr_name* has an on_setattr hook, use normal assignment. Otherwise + relegate to _setattr. + """ + if has_on_setattr: + return _setattr(attr_name, value, True) + + return "self.%s = %s" % (attr_name, value) + + +def _assign_with_converter(attr_name, value_var, has_on_setattr): + """ + Unless *attr_name* has an on_setattr hook, use normal assignment after + conversion. Otherwise relegate to _setattr_with_converter. + """ + if has_on_setattr: + return _setattr_with_converter(attr_name, value_var, True) + + return "self.%s = %s(%s)" % ( + attr_name, + _init_converter_pat % (attr_name,), + value_var, + ) + + +if PY2: + + def _unpack_kw_only_py2(attr_name, default=None): + """ + Unpack *attr_name* from _kw_only dict. + """ + if default is not None: + arg_default = ", %s" % default + else: + arg_default = "" + return "%s = _kw_only.pop('%s'%s)" % ( + attr_name, + attr_name, + arg_default, + ) + + def _unpack_kw_only_lines_py2(kw_only_args): + """ + Unpack all *kw_only_args* from _kw_only dict and handle errors. + + Given a list of strings "{attr_name}" and "{attr_name}={default}" + generates list of lines of code that pop attrs from _kw_only dict and + raise TypeError similar to builtin if required attr is missing or + extra key is passed. + + >>> print("\n".join(_unpack_kw_only_lines_py2(["a", "b=42"]))) + try: + a = _kw_only.pop('a') + b = _kw_only.pop('b', 42) + except KeyError as _key_error: + raise TypeError( + ... + if _kw_only: + raise TypeError( + ... + """ + lines = ["try:"] + lines.extend( + " " + _unpack_kw_only_py2(*arg.split("=")) + for arg in kw_only_args + ) + lines += """\ +except KeyError as _key_error: + raise TypeError( + '__init__() missing required keyword-only argument: %s' % _key_error + ) +if _kw_only: + raise TypeError( + '__init__() got an unexpected keyword argument %r' + % next(iter(_kw_only)) + ) +""".split( + "\n" + ) + return lines + + +def _attrs_to_init_script( + attrs, + frozen, + slots, + post_init, + cache_hash, + base_attr_map, + is_exc, + needs_cached_setattr, + has_global_on_setattr, +): + """ + Return a script of an initializer for *attrs* and a dict of globals. + + The globals are expected by the generated script. + + If *frozen* is True, we cannot set the attributes directly so we use + a cached ``object.__setattr__``. + """ + lines = [] + if needs_cached_setattr: + lines.append( + # Circumvent the __setattr__ descriptor to save one lookup per + # assignment. + # Note _setattr will be used again below if cache_hash is True + "_setattr = _cached_setattr.__get__(self, self.__class__)" + ) + + if frozen is True: + if slots is True: + fmt_setter = _setattr + fmt_setter_with_converter = _setattr_with_converter + else: + # Dict frozen classes assign directly to __dict__. + # But only if the attribute doesn't come from an ancestor slot + # class. + # Note _inst_dict will be used again below if cache_hash is True + lines.append("_inst_dict = self.__dict__") + + def fmt_setter(attr_name, value_var, has_on_setattr): + if _is_slot_attr(attr_name, base_attr_map): + return _setattr(attr_name, value_var, has_on_setattr) + + return "_inst_dict['%s'] = %s" % (attr_name, value_var) + + def fmt_setter_with_converter( + attr_name, value_var, has_on_setattr + ): + if has_on_setattr or _is_slot_attr(attr_name, base_attr_map): + return _setattr_with_converter( + attr_name, value_var, has_on_setattr + ) + + return "_inst_dict['%s'] = %s(%s)" % ( + attr_name, + _init_converter_pat % (attr_name,), + value_var, + ) + + else: + # Not frozen. + fmt_setter = _assign + fmt_setter_with_converter = _assign_with_converter + + args = [] + kw_only_args = [] + attrs_to_validate = [] + + # This is a dictionary of names to validator and converter callables. + # Injecting this into __init__ globals lets us avoid lookups. + names_for_globals = {} + annotations = {"return": None} + + for a in attrs: + if a.validator: + attrs_to_validate.append(a) + + attr_name = a.name + has_on_setattr = a.on_setattr is not None or ( + a.on_setattr is not setters.NO_OP and has_global_on_setattr + ) + arg_name = a.name.lstrip("_") + + has_factory = isinstance(a.default, Factory) + if has_factory and a.default.takes_self: + maybe_self = "self" + else: + maybe_self = "" + + if a.init is False: + if has_factory: + init_factory_name = _init_factory_pat.format(a.name) + if a.converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, + init_factory_name + "(%s)" % (maybe_self,), + has_on_setattr, + ) + ) + conv_name = _init_converter_pat % (a.name,) + names_for_globals[conv_name] = a.converter + else: + lines.append( + fmt_setter( + attr_name, + init_factory_name + "(%s)" % (maybe_self,), + has_on_setattr, + ) + ) + names_for_globals[init_factory_name] = a.default.factory + else: + if a.converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, + "attr_dict['%s'].default" % (attr_name,), + has_on_setattr, + ) + ) + conv_name = _init_converter_pat % (a.name,) + names_for_globals[conv_name] = a.converter + else: + lines.append( + fmt_setter( + attr_name, + "attr_dict['%s'].default" % (attr_name,), + has_on_setattr, + ) + ) + elif a.default is not NOTHING and not has_factory: + arg = "%s=attr_dict['%s'].default" % (arg_name, attr_name) + if a.kw_only: + kw_only_args.append(arg) + else: + args.append(arg) + + if a.converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr + ) + ) + names_for_globals[ + _init_converter_pat % (a.name,) + ] = a.converter + else: + lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) + + elif has_factory: + arg = "%s=NOTHING" % (arg_name,) + if a.kw_only: + kw_only_args.append(arg) + else: + args.append(arg) + lines.append("if %s is not NOTHING:" % (arg_name,)) + + init_factory_name = _init_factory_pat.format(a.name) + if a.converter is not None: + lines.append( + " " + + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr + ) + ) + lines.append("else:") + lines.append( + " " + + fmt_setter_with_converter( + attr_name, + init_factory_name + "(" + maybe_self + ")", + has_on_setattr, + ) + ) + names_for_globals[ + _init_converter_pat % (a.name,) + ] = a.converter + else: + lines.append( + " " + fmt_setter(attr_name, arg_name, has_on_setattr) + ) + lines.append("else:") + lines.append( + " " + + fmt_setter( + attr_name, + init_factory_name + "(" + maybe_self + ")", + has_on_setattr, + ) + ) + names_for_globals[init_factory_name] = a.default.factory + else: + if a.kw_only: + kw_only_args.append(arg_name) + else: + args.append(arg_name) + + if a.converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr + ) + ) + names_for_globals[ + _init_converter_pat % (a.name,) + ] = a.converter + else: + lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) + + if a.init is True and a.converter is None and a.type is not None: + annotations[arg_name] = a.type + + if attrs_to_validate: # we can skip this if there are no validators. + names_for_globals["_config"] = _config + lines.append("if _config._run_validators is True:") + for a in attrs_to_validate: + val_name = "__attr_validator_" + a.name + attr_name = "__attr_" + a.name + lines.append( + " %s(self, %s, self.%s)" % (val_name, attr_name, a.name) + ) + names_for_globals[val_name] = a.validator + names_for_globals[attr_name] = a + + if post_init: + lines.append("self.__attrs_post_init__()") + + # because this is set only after __attrs_post_init is called, a crash + # will result if post-init tries to access the hash code. This seemed + # preferable to setting this beforehand, in which case alteration to + # field values during post-init combined with post-init accessing the + # hash code would result in silent bugs. + if cache_hash: + if frozen: + if slots: + # if frozen and slots, then _setattr defined above + init_hash_cache = "_setattr('%s', %s)" + else: + # if frozen and not slots, then _inst_dict defined above + init_hash_cache = "_inst_dict['%s'] = %s" + else: + init_hash_cache = "self.%s = %s" + lines.append(init_hash_cache % (_hash_cache_field, "None")) + + # For exceptions we rely on BaseException.__init__ for proper + # initialization. + if is_exc: + vals = ",".join("self." + a.name for a in attrs if a.init) + + lines.append("BaseException.__init__(self, %s)" % (vals,)) + + args = ", ".join(args) + if kw_only_args: + if PY2: + lines = _unpack_kw_only_lines_py2(kw_only_args) + lines + + args += "%s**_kw_only" % (", " if args else "",) # leading comma + else: + args += "%s*, %s" % ( + ", " if args else "", # leading comma + ", ".join(kw_only_args), # kw_only args + ) + return ( + """\ +def __init__(self, {args}): + {lines} +""".format( + args=args, lines="\n ".join(lines) if lines else "pass" + ), + names_for_globals, + annotations, + ) + + +class Attribute(object): + """ + *Read-only* representation of an attribute. + + Instances of this class are frequently used for introspection purposes + like: + + - `fields` returns a tuple of them. + - Validators get them passed as the first argument. + - The *field transformer* hook receives a list of them. + + :attribute name: The name of the attribute. + :attribute inherited: Whether or not that attribute has been inherited from + a base class. + + Plus *all* arguments of `attr.ib` (except for ``factory`` + which is only syntactic sugar for ``default=Factory(...)``. + + .. versionadded:: 20.1.0 *inherited* + .. versionadded:: 20.1.0 *on_setattr* + .. versionchanged:: 20.2.0 *inherited* is not taken into account for + equality checks and hashing anymore. + + For the full version history of the fields, see `attr.ib`. + """ + + __slots__ = ( + "name", + "default", + "validator", + "repr", + "eq", + "order", + "hash", + "init", + "metadata", + "type", + "converter", + "kw_only", + "inherited", + "on_setattr", + ) + + def __init__( + self, + name, + default, + validator, + repr, + cmp, # XXX: unused, remove along with other cmp code. + hash, + init, + inherited, + metadata=None, + type=None, + converter=None, + kw_only=False, + eq=None, + order=None, + on_setattr=None, + ): + eq, order = _determine_eq_order(cmp, eq, order, True) + + # Cache this descriptor here to speed things up later. + bound_setattr = _obj_setattr.__get__(self, Attribute) + + # Despite the big red warning, people *do* instantiate `Attribute` + # themselves. + bound_setattr("name", name) + bound_setattr("default", default) + bound_setattr("validator", validator) + bound_setattr("repr", repr) + bound_setattr("eq", eq) + bound_setattr("order", order) + bound_setattr("hash", hash) + bound_setattr("init", init) + bound_setattr("converter", converter) + bound_setattr( + "metadata", + ( + metadata_proxy(metadata) + if metadata + else _empty_metadata_singleton + ), + ) + bound_setattr("type", type) + bound_setattr("kw_only", kw_only) + bound_setattr("inherited", inherited) + bound_setattr("on_setattr", on_setattr) + + def __setattr__(self, name, value): + raise FrozenInstanceError() + + @classmethod + def from_counting_attr(cls, name, ca, type=None): + # type holds the annotated value. deal with conflicts: + if type is None: + type = ca.type + elif ca.type is not None: + raise ValueError( + "Type annotation and type argument cannot both be present" + ) + inst_dict = { + k: getattr(ca, k) + for k in Attribute.__slots__ + if k + not in ( + "name", + "validator", + "default", + "type", + "inherited", + ) # exclude methods and deprecated alias + } + return cls( + name=name, + validator=ca._validator, + default=ca._default, + type=type, + cmp=None, + inherited=False, + **inst_dict + ) + + @property + def cmp(self): + """ + Simulate the presence of a cmp attribute and warn. + """ + warnings.warn(_CMP_DEPRECATION, DeprecationWarning, stacklevel=2) + + return self.eq and self.order + + # Don't use attr.evolve since fields(Attribute) doesn't work + def evolve(self, **changes): + """ + Copy *self* and apply *changes*. + + This works similarly to `attr.evolve` but that function does not work + with ``Attribute``. + + It is mainly meant to be used for `transform-fields`. + + .. versionadded:: 20.3.0 + """ + new = copy.copy(self) + + new._setattrs(changes.items()) + + return new + + # Don't use _add_pickle since fields(Attribute) doesn't work + def __getstate__(self): + """ + Play nice with pickle. + """ + return tuple( + getattr(self, name) if name != "metadata" else dict(self.metadata) + for name in self.__slots__ + ) + + def __setstate__(self, state): + """ + Play nice with pickle. + """ + self._setattrs(zip(self.__slots__, state)) + + def _setattrs(self, name_values_pairs): + bound_setattr = _obj_setattr.__get__(self, Attribute) + for name, value in name_values_pairs: + if name != "metadata": + bound_setattr(name, value) + else: + bound_setattr( + name, + metadata_proxy(value) + if value + else _empty_metadata_singleton, + ) + + +_a = [ + Attribute( + name=name, + default=NOTHING, + validator=None, + repr=True, + cmp=None, + eq=True, + order=False, + hash=(name != "metadata"), + init=True, + inherited=False, + ) + for name in Attribute.__slots__ +] + +Attribute = _add_hash( + _add_eq( + _add_repr(Attribute, attrs=_a), + attrs=[a for a in _a if a.name != "inherited"], + ), + attrs=[a for a in _a if a.hash and a.name != "inherited"], +) + + +class _CountingAttr(object): + """ + Intermediate representation of attributes that uses a counter to preserve + the order in which the attributes have been defined. + + *Internal* data structure of the attrs library. Running into is most + likely the result of a bug like a forgotten `@attr.s` decorator. + """ + + __slots__ = ( + "counter", + "_default", + "repr", + "eq", + "order", + "hash", + "init", + "metadata", + "_validator", + "converter", + "type", + "kw_only", + "on_setattr", + ) + __attrs_attrs__ = tuple( + Attribute( + name=name, + default=NOTHING, + validator=None, + repr=True, + cmp=None, + hash=True, + init=True, + kw_only=False, + eq=True, + order=False, + inherited=False, + on_setattr=None, + ) + for name in ( + "counter", + "_default", + "repr", + "eq", + "order", + "hash", + "init", + "on_setattr", + ) + ) + ( + Attribute( + name="metadata", + default=None, + validator=None, + repr=True, + cmp=None, + hash=False, + init=True, + kw_only=False, + eq=True, + order=False, + inherited=False, + on_setattr=None, + ), + ) + cls_counter = 0 + + def __init__( + self, + default, + validator, + repr, + cmp, # XXX: unused, remove along with cmp + hash, + init, + converter, + metadata, + type, + kw_only, + eq, + order, + on_setattr, + ): + _CountingAttr.cls_counter += 1 + self.counter = _CountingAttr.cls_counter + self._default = default + self._validator = validator + self.converter = converter + self.repr = repr + self.eq = eq + self.order = order + self.hash = hash + self.init = init + self.metadata = metadata + self.type = type + self.kw_only = kw_only + self.on_setattr = on_setattr + + def validator(self, meth): + """ + Decorator that adds *meth* to the list of validators. + + Returns *meth* unchanged. + + .. versionadded:: 17.1.0 + """ + if self._validator is None: + self._validator = meth + else: + self._validator = and_(self._validator, meth) + return meth + + def default(self, meth): + """ + Decorator that allows to set the default for an attribute. + + Returns *meth* unchanged. + + :raises DefaultAlreadySetError: If default has been set before. + + .. versionadded:: 17.1.0 + """ + if self._default is not NOTHING: + raise DefaultAlreadySetError() + + self._default = Factory(meth, takes_self=True) + + return meth + + +_CountingAttr = _add_eq(_add_repr(_CountingAttr)) + + +@attrs(slots=True, init=False, hash=True) +class Factory(object): + """ + Stores a factory callable. + + If passed as the default value to `attr.ib`, the factory is used to + generate a new value. + + :param callable factory: A callable that takes either none or exactly one + mandatory positional argument depending on *takes_self*. + :param bool takes_self: Pass the partially initialized instance that is + being initialized as a positional argument. + + .. versionadded:: 17.1.0 *takes_self* + """ + + factory = attrib() + takes_self = attrib() + + def __init__(self, factory, takes_self=False): + """ + `Factory` is part of the default machinery so if we want a default + value here, we have to implement it ourselves. + """ + self.factory = factory + self.takes_self = takes_self + + +def make_class(name, attrs, bases=(object,), **attributes_arguments): + """ + A quick way to create a new class called *name* with *attrs*. + + :param str name: The name for the new class. + + :param attrs: A list of names or a dictionary of mappings of names to + attributes. + + If *attrs* is a list or an ordered dict (`dict` on Python 3.6+, + `collections.OrderedDict` otherwise), the order is deduced from + the order of the names or attributes inside *attrs*. Otherwise the + order of the definition of the attributes is used. + :type attrs: `list` or `dict` + + :param tuple bases: Classes that the new class will subclass. + + :param attributes_arguments: Passed unmodified to `attr.s`. + + :return: A new class with *attrs*. + :rtype: type + + .. versionadded:: 17.1.0 *bases* + .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained. + """ + if isinstance(attrs, dict): + cls_dict = attrs + elif isinstance(attrs, (list, tuple)): + cls_dict = dict((a, attrib()) for a in attrs) + else: + raise TypeError("attrs argument must be a dict or a list.") + + post_init = cls_dict.pop("__attrs_post_init__", None) + type_ = type( + name, + bases, + {} if post_init is None else {"__attrs_post_init__": post_init}, + ) + # For pickling to work, the __module__ variable needs to be set to the + # frame where the class is created. Bypass this step in environments where + # sys._getframe is not defined (Jython for example) or sys._getframe is not + # defined for arguments greater than 0 (IronPython). + try: + type_.__module__ = sys._getframe(1).f_globals.get( + "__name__", "__main__" + ) + except (AttributeError, ValueError): + pass + + # We do it here for proper warnings with meaningful stacklevel. + cmp = attributes_arguments.pop("cmp", None) + ( + attributes_arguments["eq"], + attributes_arguments["order"], + ) = _determine_eq_order( + cmp, + attributes_arguments.get("eq"), + attributes_arguments.get("order"), + True, + ) + + return _attrs(these=cls_dict, **attributes_arguments)(type_) + + +# These are required by within this module so we define them here and merely +# import into .validators / .converters. + + +@attrs(slots=True, hash=True) +class _AndValidator(object): + """ + Compose many validators to a single one. + """ + + _validators = attrib() + + def __call__(self, inst, attr, value): + for v in self._validators: + v(inst, attr, value) + + +def and_(*validators): + """ + A validator that composes multiple validators into one. + + When called on a value, it runs all wrapped validators. + + :param callables validators: Arbitrary number of validators. + + .. versionadded:: 17.1.0 + """ + vals = [] + for validator in validators: + vals.extend( + validator._validators + if isinstance(validator, _AndValidator) + else [validator] + ) + + return _AndValidator(tuple(vals)) + + +def pipe(*converters): + """ + A converter that composes multiple converters into one. + + When called on a value, it runs all wrapped converters, returning the + *last* value. + + :param callables converters: Arbitrary number of converters. + + .. versionadded:: 20.1.0 + """ + + def pipe_converter(val): + for converter in converters: + val = converter(val) + + return val + + return pipe_converter diff --git a/WebCrawler/venv/Lib/site-packages/attr/_next_gen.py b/WebCrawler/venv/Lib/site-packages/attr/_next_gen.py new file mode 100644 index 0000000..2b5565c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_next_gen.py @@ -0,0 +1,160 @@ +""" +This is a Python 3.6 and later-only, keyword-only, and **provisional** API that +calls `attr.s` with different default values. + +Provisional APIs that shall become "import attrs" one glorious day. +""" + +from functools import partial + +from attr.exceptions import UnannotatedAttributeError + +from . import setters +from ._make import NOTHING, _frozen_setattrs, attrib, attrs + + +def define( + maybe_cls=None, + *, + these=None, + repr=None, + hash=None, + init=None, + slots=True, + frozen=False, + weakref_slot=True, + str=False, + auto_attribs=None, + kw_only=False, + cache_hash=False, + auto_exc=True, + eq=None, + order=False, + auto_detect=True, + getstate_setstate=None, + on_setattr=None, + field_transformer=None, +): + r""" + The only behavioral differences are the handling of the *auto_attribs* + option: + + :param Optional[bool] auto_attribs: If set to `True` or `False`, it behaves + exactly like `attr.s`. If left `None`, `attr.s` will try to guess: + + 1. If all attributes are annotated and no `attr.ib` is found, it assumes + *auto_attribs=True*. + 2. Otherwise it assumes *auto_attribs=False* and tries to collect + `attr.ib`\ s. + + and that mutable classes (``frozen=False``) validate on ``__setattr__``. + + .. versionadded:: 20.1.0 + """ + + def do_it(cls, auto_attribs): + return attrs( + maybe_cls=cls, + these=these, + repr=repr, + hash=hash, + init=init, + slots=slots, + frozen=frozen, + weakref_slot=weakref_slot, + str=str, + auto_attribs=auto_attribs, + kw_only=kw_only, + cache_hash=cache_hash, + auto_exc=auto_exc, + eq=eq, + order=order, + auto_detect=auto_detect, + collect_by_mro=True, + getstate_setstate=getstate_setstate, + on_setattr=on_setattr, + field_transformer=field_transformer, + ) + + def wrap(cls): + """ + Making this a wrapper ensures this code runs during class creation. + + We also ensure that frozen-ness of classes is inherited. + """ + nonlocal frozen, on_setattr + + had_on_setattr = on_setattr not in (None, setters.NO_OP) + + # By default, mutable classes validate on setattr. + if frozen is False and on_setattr is None: + on_setattr = setters.validate + + # However, if we subclass a frozen class, we inherit the immutability + # and disable on_setattr. + for base_cls in cls.__bases__: + if base_cls.__setattr__ is _frozen_setattrs: + if had_on_setattr: + raise ValueError( + "Frozen classes can't use on_setattr " + "(frozen-ness was inherited)." + ) + + on_setattr = setters.NO_OP + break + + if auto_attribs is not None: + return do_it(cls, auto_attribs) + + try: + return do_it(cls, True) + except UnannotatedAttributeError: + return do_it(cls, False) + + # maybe_cls's type depends on the usage of the decorator. It's a class + # if it's used as `@attrs` but ``None`` if used as `@attrs()`. + if maybe_cls is None: + return wrap + else: + return wrap(maybe_cls) + + +mutable = define +frozen = partial(define, frozen=True, on_setattr=None) + + +def field( + *, + default=NOTHING, + validator=None, + repr=True, + hash=None, + init=True, + metadata=None, + converter=None, + factory=None, + kw_only=False, + eq=None, + order=None, + on_setattr=None, +): + """ + Identical to `attr.ib`, except keyword-only and with some arguments + removed. + + .. versionadded:: 20.1.0 + """ + return attrib( + default=default, + validator=validator, + repr=repr, + hash=hash, + init=init, + metadata=metadata, + converter=converter, + factory=factory, + kw_only=kw_only, + eq=eq, + order=order, + on_setattr=on_setattr, + ) diff --git a/WebCrawler/venv/Lib/site-packages/attr/_version_info.py b/WebCrawler/venv/Lib/site-packages/attr/_version_info.py new file mode 100644 index 0000000..014e78a --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_version_info.py @@ -0,0 +1,85 @@ +from __future__ import absolute_import, division, print_function + +from functools import total_ordering + +from ._funcs import astuple +from ._make import attrib, attrs + + +@total_ordering +@attrs(eq=False, order=False, slots=True, frozen=True) +class VersionInfo(object): + """ + A version object that can be compared to tuple of length 1--4: + + >>> attr.VersionInfo(19, 1, 0, "final") <= (19, 2) + True + >>> attr.VersionInfo(19, 1, 0, "final") < (19, 1, 1) + True + >>> vi = attr.VersionInfo(19, 2, 0, "final") + >>> vi < (19, 1, 1) + False + >>> vi < (19,) + False + >>> vi == (19, 2,) + True + >>> vi == (19, 2, 1) + False + + .. versionadded:: 19.2 + """ + + year = attrib(type=int) + minor = attrib(type=int) + micro = attrib(type=int) + releaselevel = attrib(type=str) + + @classmethod + def _from_version_string(cls, s): + """ + Parse *s* and return a _VersionInfo. + """ + v = s.split(".") + if len(v) == 3: + v.append("final") + + return cls( + year=int(v[0]), minor=int(v[1]), micro=int(v[2]), releaselevel=v[3] + ) + + def _ensure_tuple(self, other): + """ + Ensure *other* is a tuple of a valid length. + + Returns a possibly transformed *other* and ourselves as a tuple of + the same length as *other*. + """ + + if self.__class__ is other.__class__: + other = astuple(other) + + if not isinstance(other, tuple): + raise NotImplementedError + + if not (1 <= len(other) <= 4): + raise NotImplementedError + + return astuple(self)[: len(other)], other + + def __eq__(self, other): + try: + us, them = self._ensure_tuple(other) + except NotImplementedError: + return NotImplemented + + return us == them + + def __lt__(self, other): + try: + us, them = self._ensure_tuple(other) + except NotImplementedError: + return NotImplemented + + # Since alphabetically "dev0" < "final" < "post1" < "post2", we don't + # have to do anything special with releaselevel for now. + return us < them diff --git a/WebCrawler/venv/Lib/site-packages/attr/_version_info.pyi b/WebCrawler/venv/Lib/site-packages/attr/_version_info.pyi new file mode 100644 index 0000000..45ced08 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/_version_info.pyi @@ -0,0 +1,9 @@ +class VersionInfo: + @property + def year(self) -> int: ... + @property + def minor(self) -> int: ... + @property + def micro(self) -> int: ... + @property + def releaselevel(self) -> str: ... diff --git a/WebCrawler/venv/Lib/site-packages/attr/converters.py b/WebCrawler/venv/Lib/site-packages/attr/converters.py new file mode 100644 index 0000000..715ce17 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/converters.py @@ -0,0 +1,85 @@ +""" +Commonly useful converters. +""" + +from __future__ import absolute_import, division, print_function + +from ._make import NOTHING, Factory, pipe + + +__all__ = [ + "pipe", + "optional", + "default_if_none", +] + + +def optional(converter): + """ + A converter that allows an attribute to be optional. An optional attribute + is one which can be set to ``None``. + + :param callable converter: the converter that is used for non-``None`` + values. + + .. versionadded:: 17.1.0 + """ + + def optional_converter(val): + if val is None: + return None + return converter(val) + + return optional_converter + + +def default_if_none(default=NOTHING, factory=None): + """ + A converter that allows to replace ``None`` values by *default* or the + result of *factory*. + + :param default: Value to be used if ``None`` is passed. Passing an instance + of `attr.Factory` is supported, however the ``takes_self`` option + is *not*. + :param callable factory: A callable that takes not parameters whose result + is used if ``None`` is passed. + + :raises TypeError: If **neither** *default* or *factory* is passed. + :raises TypeError: If **both** *default* and *factory* are passed. + :raises ValueError: If an instance of `attr.Factory` is passed with + ``takes_self=True``. + + .. versionadded:: 18.2.0 + """ + if default is NOTHING and factory is None: + raise TypeError("Must pass either `default` or `factory`.") + + if default is not NOTHING and factory is not None: + raise TypeError( + "Must pass either `default` or `factory` but not both." + ) + + if factory is not None: + default = Factory(factory) + + if isinstance(default, Factory): + if default.takes_self: + raise ValueError( + "`takes_self` is not supported by default_if_none." + ) + + def default_if_none_converter(val): + if val is not None: + return val + + return default.factory() + + else: + + def default_if_none_converter(val): + if val is not None: + return val + + return default + + return default_if_none_converter diff --git a/WebCrawler/venv/Lib/site-packages/attr/converters.pyi b/WebCrawler/venv/Lib/site-packages/attr/converters.pyi new file mode 100644 index 0000000..7b0caa1 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/converters.pyi @@ -0,0 +1,11 @@ +from typing import TypeVar, Optional, Callable, overload +from . import _ConverterType + +_T = TypeVar("_T") + +def pipe(*validators: _ConverterType) -> _ConverterType: ... +def optional(converter: _ConverterType) -> _ConverterType: ... +@overload +def default_if_none(default: _T) -> _ConverterType: ... +@overload +def default_if_none(*, factory: Callable[[], _T]) -> _ConverterType: ... diff --git a/WebCrawler/venv/Lib/site-packages/attr/exceptions.py b/WebCrawler/venv/Lib/site-packages/attr/exceptions.py new file mode 100644 index 0000000..fcd8910 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/exceptions.py @@ -0,0 +1,92 @@ +from __future__ import absolute_import, division, print_function + + +class FrozenError(AttributeError): + """ + A frozen/immutable instance or attribute haave been attempted to be + modified. + + It mirrors the behavior of ``namedtuples`` by using the same error message + and subclassing `AttributeError`. + + .. versionadded:: 20.1.0 + """ + + msg = "can't set attribute" + args = [msg] + + +class FrozenInstanceError(FrozenError): + """ + A frozen instance has been attempted to be modified. + + .. versionadded:: 16.1.0 + """ + + +class FrozenAttributeError(FrozenError): + """ + A frozen attribute has been attempted to be modified. + + .. versionadded:: 20.1.0 + """ + + +class AttrsAttributeNotFoundError(ValueError): + """ + An ``attrs`` function couldn't find an attribute that the user asked for. + + .. versionadded:: 16.2.0 + """ + + +class NotAnAttrsClassError(ValueError): + """ + A non-``attrs`` class has been passed into an ``attrs`` function. + + .. versionadded:: 16.2.0 + """ + + +class DefaultAlreadySetError(RuntimeError): + """ + A default has been set using ``attr.ib()`` and is attempted to be reset + using the decorator. + + .. versionadded:: 17.1.0 + """ + + +class UnannotatedAttributeError(RuntimeError): + """ + A class with ``auto_attribs=True`` has an ``attr.ib()`` without a type + annotation. + + .. versionadded:: 17.3.0 + """ + + +class PythonTooOldError(RuntimeError): + """ + It was attempted to use an ``attrs`` feature that requires a newer Python + version. + + .. versionadded:: 18.2.0 + """ + + +class NotCallableError(TypeError): + """ + A ``attr.ib()`` requiring a callable has been set with a value + that is not callable. + + .. versionadded:: 19.2.0 + """ + + def __init__(self, msg, value): + super(TypeError, self).__init__(msg, value) + self.msg = msg + self.value = value + + def __str__(self): + return str(self.msg) diff --git a/WebCrawler/venv/Lib/site-packages/attr/exceptions.pyi b/WebCrawler/venv/Lib/site-packages/attr/exceptions.pyi new file mode 100644 index 0000000..f268011 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/exceptions.pyi @@ -0,0 +1,17 @@ +from typing import Any + +class FrozenError(AttributeError): + msg: str = ... + +class FrozenInstanceError(FrozenError): ... +class FrozenAttributeError(FrozenError): ... +class AttrsAttributeNotFoundError(ValueError): ... +class NotAnAttrsClassError(ValueError): ... +class DefaultAlreadySetError(RuntimeError): ... +class UnannotatedAttributeError(RuntimeError): ... +class PythonTooOldError(RuntimeError): ... + +class NotCallableError(TypeError): + msg: str = ... + value: Any = ... + def __init__(self, msg: str, value: Any) -> None: ... diff --git a/WebCrawler/venv/Lib/site-packages/attr/filters.py b/WebCrawler/venv/Lib/site-packages/attr/filters.py new file mode 100644 index 0000000..dc47e8f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/filters.py @@ -0,0 +1,52 @@ +""" +Commonly useful filters for `attr.asdict`. +""" + +from __future__ import absolute_import, division, print_function + +from ._compat import isclass +from ._make import Attribute + + +def _split_what(what): + """ + Returns a tuple of `frozenset`s of classes and attributes. + """ + return ( + frozenset(cls for cls in what if isclass(cls)), + frozenset(cls for cls in what if isinstance(cls, Attribute)), + ) + + +def include(*what): + """ + Whitelist *what*. + + :param what: What to whitelist. + :type what: `list` of `type` or `attr.Attribute`\\ s + + :rtype: `callable` + """ + cls, attrs = _split_what(what) + + def include_(attribute, value): + return value.__class__ in cls or attribute in attrs + + return include_ + + +def exclude(*what): + """ + Blacklist *what*. + + :param what: What to blacklist. + :type what: `list` of classes or `attr.Attribute`\\ s. + + :rtype: `callable` + """ + cls, attrs = _split_what(what) + + def exclude_(attribute, value): + return value.__class__ not in cls and attribute not in attrs + + return exclude_ diff --git a/WebCrawler/venv/Lib/site-packages/attr/filters.pyi b/WebCrawler/venv/Lib/site-packages/attr/filters.pyi new file mode 100644 index 0000000..68368fe --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/filters.pyi @@ -0,0 +1,5 @@ +from typing import Union, Any +from . import Attribute, _FilterType + +def include(*what: Union[type, Attribute[Any]]) -> _FilterType[Any]: ... +def exclude(*what: Union[type, Attribute[Any]]) -> _FilterType[Any]: ... diff --git a/WebCrawler/venv/Lib/site-packages/attr/py.typed b/WebCrawler/venv/Lib/site-packages/attr/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/WebCrawler/venv/Lib/site-packages/attr/setters.py b/WebCrawler/venv/Lib/site-packages/attr/setters.py new file mode 100644 index 0000000..240014b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/setters.py @@ -0,0 +1,77 @@ +""" +Commonly used hooks for on_setattr. +""" + +from __future__ import absolute_import, division, print_function + +from . import _config +from .exceptions import FrozenAttributeError + + +def pipe(*setters): + """ + Run all *setters* and return the return value of the last one. + + .. versionadded:: 20.1.0 + """ + + def wrapped_pipe(instance, attrib, new_value): + rv = new_value + + for setter in setters: + rv = setter(instance, attrib, rv) + + return rv + + return wrapped_pipe + + +def frozen(_, __, ___): + """ + Prevent an attribute to be modified. + + .. versionadded:: 20.1.0 + """ + raise FrozenAttributeError() + + +def validate(instance, attrib, new_value): + """ + Run *attrib*'s validator on *new_value* if it has one. + + .. versionadded:: 20.1.0 + """ + if _config._run_validators is False: + return new_value + + v = attrib.validator + if not v: + return new_value + + v(instance, attrib, new_value) + + return new_value + + +def convert(instance, attrib, new_value): + """ + Run *attrib*'s converter -- if it has one -- on *new_value* and return the + result. + + .. versionadded:: 20.1.0 + """ + c = attrib.converter + if c: + return c(new_value) + + return new_value + + +NO_OP = object() +""" +Sentinel for disabling class-wide *on_setattr* hooks for certain attributes. + +Does not work in `pipe` or within lists. + +.. versionadded:: 20.1.0 +""" diff --git a/WebCrawler/venv/Lib/site-packages/attr/setters.pyi b/WebCrawler/venv/Lib/site-packages/attr/setters.pyi new file mode 100644 index 0000000..19bc33f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/setters.pyi @@ -0,0 +1,18 @@ +from . import _OnSetAttrType, Attribute +from typing import TypeVar, Any, NewType, NoReturn, cast + +_T = TypeVar("_T") + +def frozen( + instance: Any, attribute: Attribute, new_value: Any +) -> NoReturn: ... +def pipe(*setters: _OnSetAttrType) -> _OnSetAttrType: ... +def validate(instance: Any, attribute: Attribute[_T], new_value: _T) -> _T: ... + +# convert is allowed to return Any, because they can be chained using pipe. +def convert( + instance: Any, attribute: Attribute[Any], new_value: Any +) -> Any: ... + +_NoOpType = NewType("_NoOpType", object) +NO_OP: _NoOpType diff --git a/WebCrawler/venv/Lib/site-packages/attr/validators.py b/WebCrawler/venv/Lib/site-packages/attr/validators.py new file mode 100644 index 0000000..b9a7305 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/validators.py @@ -0,0 +1,379 @@ +""" +Commonly useful validators. +""" + +from __future__ import absolute_import, division, print_function + +import re + +from ._make import _AndValidator, and_, attrib, attrs +from .exceptions import NotCallableError + + +__all__ = [ + "and_", + "deep_iterable", + "deep_mapping", + "in_", + "instance_of", + "is_callable", + "matches_re", + "optional", + "provides", +] + + +@attrs(repr=False, slots=True, hash=True) +class _InstanceOfValidator(object): + type = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not isinstance(value, self.type): + raise TypeError( + "'{name}' must be {type!r} (got {value!r} that is a " + "{actual!r}).".format( + name=attr.name, + type=self.type, + actual=value.__class__, + value=value, + ), + attr, + self.type, + value, + ) + + def __repr__(self): + return "".format( + type=self.type + ) + + +def instance_of(type): + """ + A validator that raises a `TypeError` if the initializer is called + with a wrong type for this particular attribute (checks are performed using + `isinstance` therefore it's also valid to pass a tuple of types). + + :param type: The type to check for. + :type type: type or tuple of types + + :raises TypeError: With a human readable error message, the attribute + (of type `attr.Attribute`), the expected type, and the value it + got. + """ + return _InstanceOfValidator(type) + + +@attrs(repr=False, frozen=True, slots=True) +class _MatchesReValidator(object): + regex = attrib() + flags = attrib() + match_func = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not self.match_func(value): + raise ValueError( + "'{name}' must match regex {regex!r}" + " ({value!r} doesn't)".format( + name=attr.name, regex=self.regex.pattern, value=value + ), + attr, + self.regex, + value, + ) + + def __repr__(self): + return "".format( + regex=self.regex + ) + + +def matches_re(regex, flags=0, func=None): + r""" + A validator that raises `ValueError` if the initializer is called + with a string that doesn't match *regex*. + + :param str regex: a regex string to match against + :param int flags: flags that will be passed to the underlying re function + (default 0) + :param callable func: which underlying `re` function to call (options + are `re.fullmatch`, `re.search`, `re.match`, default + is ``None`` which means either `re.fullmatch` or an emulation of + it on Python 2). For performance reasons, they won't be used directly + but on a pre-`re.compile`\ ed pattern. + + .. versionadded:: 19.2.0 + """ + fullmatch = getattr(re, "fullmatch", None) + valid_funcs = (fullmatch, None, re.search, re.match) + if func not in valid_funcs: + raise ValueError( + "'func' must be one of %s." + % ( + ", ".join( + sorted( + e and e.__name__ or "None" for e in set(valid_funcs) + ) + ), + ) + ) + + pattern = re.compile(regex, flags) + if func is re.match: + match_func = pattern.match + elif func is re.search: + match_func = pattern.search + else: + if fullmatch: + match_func = pattern.fullmatch + else: + pattern = re.compile(r"(?:{})\Z".format(regex), flags) + match_func = pattern.match + + return _MatchesReValidator(pattern, flags, match_func) + + +@attrs(repr=False, slots=True, hash=True) +class _ProvidesValidator(object): + interface = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not self.interface.providedBy(value): + raise TypeError( + "'{name}' must provide {interface!r} which {value!r} " + "doesn't.".format( + name=attr.name, interface=self.interface, value=value + ), + attr, + self.interface, + value, + ) + + def __repr__(self): + return "".format( + interface=self.interface + ) + + +def provides(interface): + """ + A validator that raises a `TypeError` if the initializer is called + with an object that does not provide the requested *interface* (checks are + performed using ``interface.providedBy(value)`` (see `zope.interface + `_). + + :param interface: The interface to check for. + :type interface: ``zope.interface.Interface`` + + :raises TypeError: With a human readable error message, the attribute + (of type `attr.Attribute`), the expected interface, and the + value it got. + """ + return _ProvidesValidator(interface) + + +@attrs(repr=False, slots=True, hash=True) +class _OptionalValidator(object): + validator = attrib() + + def __call__(self, inst, attr, value): + if value is None: + return + + self.validator(inst, attr, value) + + def __repr__(self): + return "".format( + what=repr(self.validator) + ) + + +def optional(validator): + """ + A validator that makes an attribute optional. An optional attribute is one + which can be set to ``None`` in addition to satisfying the requirements of + the sub-validator. + + :param validator: A validator (or a list of validators) that is used for + non-``None`` values. + :type validator: callable or `list` of callables. + + .. versionadded:: 15.1.0 + .. versionchanged:: 17.1.0 *validator* can be a list of validators. + """ + if isinstance(validator, list): + return _OptionalValidator(_AndValidator(validator)) + return _OptionalValidator(validator) + + +@attrs(repr=False, slots=True, hash=True) +class _InValidator(object): + options = attrib() + + def __call__(self, inst, attr, value): + try: + in_options = value in self.options + except TypeError: # e.g. `1 in "abc"` + in_options = False + + if not in_options: + raise ValueError( + "'{name}' must be in {options!r} (got {value!r})".format( + name=attr.name, options=self.options, value=value + ) + ) + + def __repr__(self): + return "".format( + options=self.options + ) + + +def in_(options): + """ + A validator that raises a `ValueError` if the initializer is called + with a value that does not belong in the options provided. The check is + performed using ``value in options``. + + :param options: Allowed options. + :type options: list, tuple, `enum.Enum`, ... + + :raises ValueError: With a human readable error message, the attribute (of + type `attr.Attribute`), the expected options, and the value it + got. + + .. versionadded:: 17.1.0 + """ + return _InValidator(options) + + +@attrs(repr=False, slots=False, hash=True) +class _IsCallableValidator(object): + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not callable(value): + message = ( + "'{name}' must be callable " + "(got {value!r} that is a {actual!r})." + ) + raise NotCallableError( + msg=message.format( + name=attr.name, value=value, actual=value.__class__ + ), + value=value, + ) + + def __repr__(self): + return "" + + +def is_callable(): + """ + A validator that raises a `attr.exceptions.NotCallableError` if the + initializer is called with a value for this particular attribute + that is not callable. + + .. versionadded:: 19.1.0 + + :raises `attr.exceptions.NotCallableError`: With a human readable error + message containing the attribute (`attr.Attribute`) name, + and the value it got. + """ + return _IsCallableValidator() + + +@attrs(repr=False, slots=True, hash=True) +class _DeepIterable(object): + member_validator = attrib(validator=is_callable()) + iterable_validator = attrib( + default=None, validator=optional(is_callable()) + ) + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if self.iterable_validator is not None: + self.iterable_validator(inst, attr, value) + + for member in value: + self.member_validator(inst, attr, member) + + def __repr__(self): + iterable_identifier = ( + "" + if self.iterable_validator is None + else " {iterable!r}".format(iterable=self.iterable_validator) + ) + return ( + "" + ).format( + iterable_identifier=iterable_identifier, + member=self.member_validator, + ) + + +def deep_iterable(member_validator, iterable_validator=None): + """ + A validator that performs deep validation of an iterable. + + :param member_validator: Validator to apply to iterable members + :param iterable_validator: Validator to apply to iterable itself + (optional) + + .. versionadded:: 19.1.0 + + :raises TypeError: if any sub-validators fail + """ + return _DeepIterable(member_validator, iterable_validator) + + +@attrs(repr=False, slots=True, hash=True) +class _DeepMapping(object): + key_validator = attrib(validator=is_callable()) + value_validator = attrib(validator=is_callable()) + mapping_validator = attrib(default=None, validator=optional(is_callable())) + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if self.mapping_validator is not None: + self.mapping_validator(inst, attr, value) + + for key in value: + self.key_validator(inst, attr, key) + self.value_validator(inst, attr, value[key]) + + def __repr__(self): + return ( + "" + ).format(key=self.key_validator, value=self.value_validator) + + +def deep_mapping(key_validator, value_validator, mapping_validator=None): + """ + A validator that performs deep validation of a dictionary. + + :param key_validator: Validator to apply to dictionary keys + :param value_validator: Validator to apply to dictionary values + :param mapping_validator: Validator to apply to top-level mapping + attribute (optional) + + .. versionadded:: 19.1.0 + + :raises TypeError: if any sub-validators fail + """ + return _DeepMapping(key_validator, value_validator, mapping_validator) diff --git a/WebCrawler/venv/Lib/site-packages/attr/validators.pyi b/WebCrawler/venv/Lib/site-packages/attr/validators.pyi new file mode 100644 index 0000000..9a22abb --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attr/validators.pyi @@ -0,0 +1,66 @@ +from typing import ( + Container, + List, + Union, + TypeVar, + Type, + Any, + Optional, + Tuple, + Iterable, + Mapping, + Callable, + Match, + AnyStr, + overload, +) +from . import _ValidatorType + +_T = TypeVar("_T") +_T1 = TypeVar("_T1") +_T2 = TypeVar("_T2") +_T3 = TypeVar("_T3") +_I = TypeVar("_I", bound=Iterable) +_K = TypeVar("_K") +_V = TypeVar("_V") +_M = TypeVar("_M", bound=Mapping) + +# To be more precise on instance_of use some overloads. +# If there are more than 3 items in the tuple then we fall back to Any +@overload +def instance_of(type: Type[_T]) -> _ValidatorType[_T]: ... +@overload +def instance_of(type: Tuple[Type[_T]]) -> _ValidatorType[_T]: ... +@overload +def instance_of( + type: Tuple[Type[_T1], Type[_T2]] +) -> _ValidatorType[Union[_T1, _T2]]: ... +@overload +def instance_of( + type: Tuple[Type[_T1], Type[_T2], Type[_T3]] +) -> _ValidatorType[Union[_T1, _T2, _T3]]: ... +@overload +def instance_of(type: Tuple[type, ...]) -> _ValidatorType[Any]: ... +def provides(interface: Any) -> _ValidatorType[Any]: ... +def optional( + validator: Union[_ValidatorType[_T], List[_ValidatorType[_T]]] +) -> _ValidatorType[Optional[_T]]: ... +def in_(options: Container[_T]) -> _ValidatorType[_T]: ... +def and_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... +def matches_re( + regex: AnyStr, + flags: int = ..., + func: Optional[ + Callable[[AnyStr, AnyStr, int], Optional[Match[AnyStr]]] + ] = ..., +) -> _ValidatorType[AnyStr]: ... +def deep_iterable( + member_validator: _ValidatorType[_T], + iterable_validator: Optional[_ValidatorType[_I]] = ..., +) -> _ValidatorType[_I]: ... +def deep_mapping( + key_validator: _ValidatorType[_K], + value_validator: _ValidatorType[_V], + mapping_validator: Optional[_ValidatorType[_M]] = ..., +) -> _ValidatorType[_M]: ... +def is_callable() -> _ValidatorType[_T]: ... diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/AUTHORS.rst b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/AUTHORS.rst new file mode 100644 index 0000000..f14ef6c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/AUTHORS.rst @@ -0,0 +1,11 @@ +Credits +======= + +``attrs`` is written and maintained by `Hynek Schlawack `_. + +The development is kindly supported by `Variomedia AG `_. + +A full list of contributors can be found in `GitHub's overview `_. + +It’s the spiritual successor of `characteristic `_ and aspires to fix some of it clunkiness and unfortunate decisions. +Both were inspired by Twisted’s `FancyEqMixin `_ but both are implemented using class decorators because `subclassing is bad for you `_, m’kay? diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/INSTALLER b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/LICENSE b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/LICENSE new file mode 100644 index 0000000..7ae3df9 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/METADATA b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/METADATA new file mode 100644 index 0000000..a92cacb --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/METADATA @@ -0,0 +1,241 @@ +Metadata-Version: 2.1 +Name: attrs +Version: 20.3.0 +Summary: Classes Without Boilerplate +Home-page: https://www.attrs.org/ +Author: Hynek Schlawack +Author-email: hs@ox.cx +Maintainer: Hynek Schlawack +Maintainer-email: hs@ox.cx +License: MIT +Project-URL: Documentation, https://www.attrs.org/ +Project-URL: Bug Tracker, https://github.com/python-attrs/attrs/issues +Project-URL: Source Code, https://github.com/python-attrs/attrs +Project-URL: Funding, https://github.com/sponsors/hynek +Project-URL: Tidelift, https://tidelift.com/subscription/pkg/pypi-attrs?utm_source=pypi-attrs&utm_medium=pypi +Keywords: class,attribute,boilerplate +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Description-Content-Type: text/x-rst +Provides-Extra: dev +Requires-Dist: coverage[toml] (>=5.0.2) ; extra == 'dev' +Requires-Dist: hypothesis ; extra == 'dev' +Requires-Dist: pympler ; extra == 'dev' +Requires-Dist: pytest (>=4.3.0) ; extra == 'dev' +Requires-Dist: six ; extra == 'dev' +Requires-Dist: zope.interface ; extra == 'dev' +Requires-Dist: furo ; extra == 'dev' +Requires-Dist: sphinx ; extra == 'dev' +Requires-Dist: pre-commit ; extra == 'dev' +Provides-Extra: docs +Requires-Dist: furo ; extra == 'docs' +Requires-Dist: sphinx ; extra == 'docs' +Requires-Dist: zope.interface ; extra == 'docs' +Provides-Extra: tests +Requires-Dist: coverage[toml] (>=5.0.2) ; extra == 'tests' +Requires-Dist: hypothesis ; extra == 'tests' +Requires-Dist: pympler ; extra == 'tests' +Requires-Dist: pytest (>=4.3.0) ; extra == 'tests' +Requires-Dist: six ; extra == 'tests' +Requires-Dist: zope.interface ; extra == 'tests' +Provides-Extra: tests_no_zope +Requires-Dist: coverage[toml] (>=5.0.2) ; extra == 'tests_no_zope' +Requires-Dist: hypothesis ; extra == 'tests_no_zope' +Requires-Dist: pympler ; extra == 'tests_no_zope' +Requires-Dist: pytest (>=4.3.0) ; extra == 'tests_no_zope' +Requires-Dist: six ; extra == 'tests_no_zope' + +.. image:: https://www.attrs.org/en/latest/_static/attrs_logo.png + :alt: attrs Logo + +====================================== +``attrs``: Classes Without Boilerplate +====================================== + +.. image:: https://readthedocs.org/projects/attrs/badge/?version=stable + :target: https://www.attrs.org/en/stable/?badge=stable + :alt: Documentation Status + +.. image:: https://github.com/python-attrs/attrs/workflows/CI/badge.svg?branch=master + :target: https://github.com/python-attrs/attrs/actions?workflow=CI + :alt: CI Status + +.. image:: https://codecov.io/github/python-attrs/attrs/branch/master/graph/badge.svg + :target: https://codecov.io/github/python-attrs/attrs + :alt: Test Coverage + +.. image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/psf/black + :alt: Code style: black + +.. teaser-begin + +``attrs`` is the Python package that will bring back the **joy** of **writing classes** by relieving you from the drudgery of implementing object protocols (aka `dunder `_ methods). + +Its main goal is to help you to write **concise** and **correct** software without slowing down your code. + +.. teaser-end + +For that, it gives you a class decorator and a way to declaratively define the attributes on that class: + +.. -code-begin- + +.. code-block:: pycon + + >>> import attr + + >>> @attr.s + ... class SomeClass(object): + ... a_number = attr.ib(default=42) + ... list_of_numbers = attr.ib(factory=list) + ... + ... def hard_math(self, another_number): + ... return self.a_number + sum(self.list_of_numbers) * another_number + + + >>> sc = SomeClass(1, [1, 2, 3]) + >>> sc + SomeClass(a_number=1, list_of_numbers=[1, 2, 3]) + + >>> sc.hard_math(3) + 19 + >>> sc == SomeClass(1, [1, 2, 3]) + True + >>> sc != SomeClass(2, [3, 2, 1]) + True + + >>> attr.asdict(sc) + {'a_number': 1, 'list_of_numbers': [1, 2, 3]} + + >>> SomeClass() + SomeClass(a_number=42, list_of_numbers=[]) + + >>> C = attr.make_class("C", ["a", "b"]) + >>> C("foo", "bar") + C(a='foo', b='bar') + + +After *declaring* your attributes ``attrs`` gives you: + +- a concise and explicit overview of the class's attributes, +- a nice human-readable ``__repr__``, +- a complete set of comparison methods (equality and ordering), +- an initializer, +- and much more, + +*without* writing dull boilerplate code again and again and *without* runtime performance penalties. + +On Python 3.6 and later, you can often even drop the calls to ``attr.ib()`` by using `type annotations `_. + +This gives you the power to use actual classes with actual types in your code instead of confusing ``tuple``\ s or `confusingly behaving `_ ``namedtuple``\ s. +Which in turn encourages you to write *small classes* that do `one thing well `_. +Never again violate the `single responsibility principle `_ just because implementing ``__init__`` et al is a painful drag. + + +.. -getting-help- + +Getting Help +============ + +Please use the ``python-attrs`` tag on `StackOverflow `_ to get help. + +Answering questions of your fellow developers is also a great way to help the project! + + +.. -project-information- + +Project Information +=================== + +``attrs`` is released under the `MIT `_ license, +its documentation lives at `Read the Docs `_, +the code on `GitHub `_, +and the latest release on `PyPI `_. +It’s rigorously tested on Python 2.7, 3.5+, and PyPy. + +We collect information on **third-party extensions** in our `wiki `_. +Feel free to browse and add your own! + +If you'd like to contribute to ``attrs`` you're most welcome and we've written `a little guide `_ to get you started! + + +``attrs`` for Enterprise +------------------------ + +Available as part of the Tidelift Subscription. + +The maintainers of ``attrs`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. +Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use. +`Learn more. `_ + + +Release Information +=================== + +20.3.0 (2020-11-05) +------------------- + +Backward-incompatible Changes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ``attr.define()``, ``attr.frozen()``, ``attr.mutable()``, and ``attr.field()`` remain **provisional**. + + This release does **not** change change anything about them and they are already used widely in production though. + + If you wish to use them together with mypy, you can simply drop `this plugin `_ into your project. + + Feel free to provide feedback to them in the linked issue #668. + + We will release the ``attrs`` namespace once we have the feeling that the APIs have properly settled. + `#668 `_ + + +Changes +^^^^^^^ + +- ``attr.s()`` now has a *field_transformer* hook that is called for all ``Attribute``\ s and returns a (modified or updated) list of ``Attribute`` instances. + ``attr.asdict()`` has a *value_serializer* hook that can change the way values are converted. + Both hooks are meant to help with data (de-)serialization workflows. + `#653 `_ +- ``kw_only=True`` now works on Python 2. + `#700 `_ +- ``raise from`` now works on frozen classes on PyPy. + `#703 `_, + `#712 `_ +- ``attr.asdict()`` and ``attr.astuple()`` now treat ``frozenset``\ s like ``set``\ s with regards to the *retain_collection_types* argument. + `#704 `_ +- The type stubs for ``attr.s()`` and ``attr.make_class()`` are not missing the *collect_by_mro* argument anymore. + `#711 `_ + +`Full changelog `_. + +Credits +======= + +``attrs`` is written and maintained by `Hynek Schlawack `_. + +The development is kindly supported by `Variomedia AG `_. + +A full list of contributors can be found in `GitHub's overview `_. + +It’s the spiritual successor of `characteristic `_ and aspires to fix some of it clunkiness and unfortunate decisions. +Both were inspired by Twisted’s `FancyEqMixin `_ but both are implemented using class decorators because `subclassing is bad for you `_, m’kay? + + diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/RECORD b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/RECORD new file mode 100644 index 0000000..1e64401 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/RECORD @@ -0,0 +1,39 @@ +attr/__init__.py,sha256=70KmZOgz2sUvtRTC_IuXEeN2ttOyBWHn4XA59aqGXPs,1568 +attr/__init__.pyi,sha256=ca_4sg7z0e_EL7ehy-flXVGAju5PBX2hVo51dUmPMi0,12986 +attr/__pycache__/__init__.cpython-39.pyc,, +attr/__pycache__/_compat.cpython-39.pyc,, +attr/__pycache__/_config.cpython-39.pyc,, +attr/__pycache__/_funcs.cpython-39.pyc,, +attr/__pycache__/_make.cpython-39.pyc,, +attr/__pycache__/_next_gen.cpython-39.pyc,, +attr/__pycache__/_version_info.cpython-39.pyc,, +attr/__pycache__/converters.cpython-39.pyc,, +attr/__pycache__/exceptions.cpython-39.pyc,, +attr/__pycache__/filters.cpython-39.pyc,, +attr/__pycache__/setters.cpython-39.pyc,, +attr/__pycache__/validators.cpython-39.pyc,, +attr/_compat.py,sha256=rZhpP09xbyWSzMv796XQbryIr21oReJFvA70G3lrHxg,7308 +attr/_config.py,sha256=_KvW0mQdH2PYjHc0YfIUaV_o2pVfM7ziMEYTxwmEhOA,514 +attr/_funcs.py,sha256=PvFQlflEswO_qIR2sUr4a4x8ggQpEoDKe3YKM2rLJu4,13081 +attr/_make.py,sha256=61XB4-SHQpFbWbStGWotTTbzVT2m49DUovRgnxpMqmU,88313 +attr/_next_gen.py,sha256=x6TU2rVOXmFmrNNvkfshJsxyRbAAK0wDI4SJV2OI97c,4138 +attr/_version_info.py,sha256=azMi1lNelb3cJvvYUMXsXVbUANkRzbD5IEiaXVpeVr4,2162 +attr/_version_info.pyi,sha256=x_M3L3WuB7r_ULXAWjx959udKQ4HLB8l-hsc1FDGNvk,209 +attr/converters.py,sha256=CaK6iLtEMmemrqU8LQ1D2nWtbo9dGPAv4UaZ0rFzhOA,2214 +attr/converters.pyi,sha256=fVGSfawF3NMy2EBApkC7dAwMuujWCHnGEnnAgsbkVpg,380 +attr/exceptions.py,sha256=gmlET97ikqdQVvy7Ff9p7zVvqc2SsNtTd-r30pva1GE,1950 +attr/exceptions.pyi,sha256=zZq8bCUnKAy9mDtBEw42ZhPhAUIHoTKedDQInJD883M,539 +attr/filters.py,sha256=weDxwATsa69T_0bPVjiM1fGsciAMQmwhY5G8Jm5BxuI,1098 +attr/filters.pyi,sha256=xDpmKQlFdssgxGa5tsl1ADh_3zwAwAT4vUhd8h-8-Tk,214 +attr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +attr/setters.py,sha256=0ElzHwdVK3dsYcQi2CXkFvhx8fNxUI5OVhw8SWeaKmA,1434 +attr/setters.pyi,sha256=SYr6adhx4f0dSkmmBICg6eK8WMev5jT-KJQJTdul078,567 +attr/validators.py,sha256=6DBx1jt4oZxx1ppvx6JWqm9-UAsYpXC4HTwxJilCeRg,11497 +attr/validators.pyi,sha256=vZgsJqUwrJevh4v_Hd7_RSXqDrBctE6-3AEZ7uYKodo,1868 +attrs-20.3.0.dist-info/AUTHORS.rst,sha256=wsqCNbGz_mklcJrt54APIZHZpoTIJLkXqEhhn4Nd8hc,752 +attrs-20.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +attrs-20.3.0.dist-info/LICENSE,sha256=v2WaKLSSQGAvVrvfSQy-LsUJsVuY-Z17GaUsdA4yeGM,1082 +attrs-20.3.0.dist-info/METADATA,sha256=2XTmALrRRbIZj9J8pJgpKYnyATu_NAL8vfUnqRFpE5w,10220 +attrs-20.3.0.dist-info/RECORD,, +attrs-20.3.0.dist-info/WHEEL,sha256=ADKeyaGyKF5DwBNE0sRE5pvW-bSkFMJfBuhzZ3rceP4,110 +attrs-20.3.0.dist-info/top_level.txt,sha256=tlRYMddkRlKPqJ96wP2_j9uEsmcNHgD2SbuWd4CzGVU,5 diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/WHEEL b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/WHEEL new file mode 100644 index 0000000..6d38aa0 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.35.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/top_level.txt b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/top_level.txt new file mode 100644 index 0000000..66a062d --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/attrs-20.3.0.dist-info/top_level.txt @@ -0,0 +1 @@ +attr diff --git a/WebCrawler/venv/Lib/site-packages/automat/__init__.py b/WebCrawler/venv/Lib/site-packages/automat/__init__.py new file mode 100644 index 0000000..570b84f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/__init__.py @@ -0,0 +1,8 @@ +# -*- test-case-name: automat -*- +from ._methodical import MethodicalMachine +from ._core import NoTransition + +__all__ = [ + 'MethodicalMachine', + 'NoTransition', +] diff --git a/WebCrawler/venv/Lib/site-packages/automat/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07f8dfb5d742902cd89ac687ed16831fa942f95f GIT binary patch literal 295 zcmYjLJ5B>J5M6t-B!W%B9cZ>l5J)LN2yuWU4Txf8$#U#bV#S}8?M=jyxYCwTaRmy* zI0a&)dGqG;W=2e>=LOpM^@G1-{LIOJqnJFQ$14O?C}IjrT0%0XhT5_%k(X+;rR_*n z&qZ_gMR2qs!{rLn&MPg2SqZt*4zO6S{Ywxo>ZH93d3z`k)=kx3aQi1Xb=rzcAK)}F zj5!y^aQre6&xxbmDy8y$zEG>s4>yF~1cj2sNooO6boo;5kfw literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_core.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_core.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6233e5d5d44d4feabf886bf9cd683b764d8a3d67 GIT binary patch literal 5298 zcmbtYO^@5g8Rn1_Mair6dK=rR3pA|LCQ)N6sR6f%Z5UqIZsHJmdgHM<^#}A)G}%1w3`J4$Zd0J#o#6~QoO!>V_d{Nz zQP*%)AO6Gr`?{umLzD7lVsZ;D`5axKb+mv5dc^vAM`v1Kbd1lmzziy{w4lPxeWO#s z+zP6gSGk3G6>~eNVP2DSJE(7J%~RuHeZ%o%!JQ=aQhvGb`Mq$!9j}|D!t>KG9<=K9 zuej)W!^BDAK2Py}$4Pr$itk2I;B>ho_%QN(9yrg!wCBXa2?r_P5!f)GVeF`F!z69h z{|WlFCd(>*&kG0R`i()X&c5l>oAPDklf=P*YaIr@^?-GZueEJ(9~iIfj`_7_YMlyr zF|(C+{6KhvBqXxO|EfE|zC0rz1SFc|A)u&qlPadc7aO)ZG z`oen_ak2H351wv)5q7trWPW+*`H#IFo@{xeG{zAhxn#<%;hwOu{o81XL>05}S7-I3 z@!7J8v}PoNACNon`W)oeUAG?xqlm^UuKQ%jts!x^nldk(2K8D8jP_aV5J` zG+L#OsZ{{tpeFVI?aM=V87Bj zKz2~ay%wAbR&cKejbIh`Q^DzA4fmDcOt6l7Blr=N`&L%lPyz!?L=KaHLlJ;1bVmm3 z9c$jXp|)dKxO4&V28o0JL9Fb3=0C!eRDInEQ+gZr`=iwBMm)Ds20mvOjdir!XbC)@ zmTJm6_vvl~jI43|y8=D;U{s+Og=3-su;!`6R{`F{@dkl>MdpW<3Xtk#f?pe+qUN^0 zbT=PtJh%%r=Ib^Ix0!(rq4v2mNM18RMpRO;)Gb-q`$RM8Rx>R&UN3}N7?!`xDa|FP z1j~uGOITy$PYUkt^K>KzARki8jXEB{shq$|lZkWKNc@<(xdjq|*-DwOkMJZRF>96a zxjCKXCBA%3OK{Pc7?ZUA90Q^?Wg{joq;SCp@Ep6^A=_s!ner)t4o-~m%Yu_lDCP&) zaGd*Im~e3FJoKUwzbgdAj_qQP#qS+265I>+q{H?GC&^^|&VsOtugFpmie5}%07`0S z!BiTfpyiVJx58#Lurs&%HrrT)L9XL-zPpYCK$W4o%P)DN63@-?>N;(=wyjhc~$g25y*{RZD znGN0)W*cQLldR?q?kNJZ1`P`Vbn4#V%h^Y)?6M_b8aR2LKimZ|$r?J%UT14k)0S?r z)uZwGIer$tcmwQ(TOKt^P zm9qMmAe+^0fKos14{v%{E1mT!(~ri#oC`-9)kZYzd0n2iZbY%~Maj)p@gbb7w9(_l z-&pwg5gkE1Q9LjgEM;Ncf*dF$kSwIbAPDM20B?U>BM}fG3|*?N#bkPmeOukL=y{_)FOUH&z53R z?Zyrt@aIEubC>ofA8YDJ%RZcILn-qZbVHWXnC(A>eK6lLK$DAH2& z+(!JInA-}jxdHo={t{r5@VZyXdBeGKSw=DzGA7K(SNbErEGKDibDHWv3N zs{H}$k`;7X#XPDr6Jctdy=lj@ertS)Lb9Bp*%!}W`3kOZQbksbSZ9}J3lhqsc8M|uRcEdg`XqAt) zaFM~>LQBXNkE?@J71XJyUp7$v*ic$6TbTzyF2);Dg%qgZ_PgPrRMPk(A@~6Gv?|e2 zC%{X7@uILa)cO>97c9*HEku}f&y;Mdd{@=b0qo9|&QKx=C2rmIW~EhTx$>Z_O67#l z1+0LKyi+TdNMV=6C?!ah#h=ksB$2i2_-vWQd3iyE%`O@jgwi>RQ1aA@I3_;9(>%ZJ zSc;~l!!sL-$5}rAE7qz^f-RjsTd`0ukeO5DlVbWD1DV3&=Z0PR!@`zMF+E_2>e{X$ zu1zSt#k&LZ5Om63jt^zrC!s3fLcjX>b^*${6cF6fXB;`N@*tP+8x&Pe^xKp-*vnB` zN~hY0QojaS%5W)(m(s{8vh2r8lGr?{knro&0DCD6u`H%Kq?i9%^f!E%kYQ*h3W6hB zH=(i>QrmZ?fwJ)YoM0(X(UUwV-!X=TLf%@HWlEg*)0}r(;&!V|75pyoU|zttl)(@8dCN+ zqZyf`>_{E~?b<-o570|b@})p}=wUxVf%ap}u|4G*6ur3bk&+{Cl45r+y;Q<*L=MS$ zeDC-By{E9zs1f*79{!`Va*2?CVrTK=L+3VJ`Zv%BB4|R|?oQhj`Yd66ukBGB^Af*b zYM1)ub{YDfPTaF>tb1~ zz`BN56_?%mFyrOS_{U6N&)HsS!uGGg zy`0m%%43+(^u~XvarnGzjO-5#HyIbPj4cxKQhg$`*4S$eO#hjaZj?8_qPbnxEkG`+$P!PItL zXG0Z9=h1c}8Y%_my6!Wg>afed??yMahZ=0&e&?OH-}=e6kovL72HS_S8>#Rxk!t%u zrU%=bad%tCMqV3)(c^GO>g{l7vVLfO(3yL$H5e6ZvA(C`oj47X%`6H{oTU|v+A=hx zyi5b?GoRLIz!VN$2y+PrFw7BL`tQ)VFz-+dvSG&%+MKGt=5*?vl8KjlQy=cWDdoN? zA2W47_j7hY;m)R&+&`t1ds}r-7d&h8}tvFd&L8o=txq;BK zYf8CimSOj`+1$0)%>}z~<;r}eg+B}b#t5j^fr&oVXO@RX<*sZa=_88FTi$Uw>VUYZpAYT zo>t9)FEcZQe&G$8_rsBcHKKYR{S6+1Wim-->wg7kpW|S}cjZulL2<;REY-0G2g{HUsN(FumPl|GM<`p?X*{i^*-KCC8Nw)%TF2c)@}A22bM^tX2eQTaOmsB9 z6ini&M3=b@CAv9D>^9vOCy`=<1K%MWnU>%LGgLrVw|j4xMhI_fRo_aR+k~f?;axd% z%xyCo$XN_;fD>K{-&YIX?E%PA|9rnkPFXSz!l2Mj$u$U9v^#&hv-t*qWJjh_g$7)B zxEn{i4uaZZY~$6z8HBOYGi_?F7E4inxK4Yv# zSK$}-)n%B4Qgq>iY3VjxdKDT;Frl`YpluJ64+!tl$0^to3#9J&Ba0`b#tzUvwZ7({ z{T3l17n!-HB?c66m;hlg**JjA*g1FqGhboSFKV5R<3^`b)H|L1VVF40FDjjm$f8bX z!4atM3caD;gyt4p8e$G4{WX#V$jRe>$^R4}1T`;spV5;%HZGz23@i zgH=CUuoC+hQW~Z+WPyj1AO}HxqU#1~vSa!gHFV0LiUH`H+7u_eoE{MMHaz!p(xdAH zXF*zlH1~TluA9BX9yJtc2I;)FHa zuKA-|12clBHpP8H_Wul57gn-q^%VBo@8(!ZF-WoWee&r?@a`+7_B*ghltlR?fF!qc z3eh=+Q%t-^WdC#6xjy>W%$kO%OqU_?uE74x*|q=qb(ocVK#^el7wgqKmJy*N#Rh7t zib3uzlAQDTK^)rdPLg%QWKIl+CA$YgUjw3~&6$|jcx$wft2dc(i3~6!0YQcBa1=Ju* zQ8s^wsQErLIr)@hox2BhuK@I%GQr*;PswAZpd_-z4HM{HU!k}?N0oYh2A{1avnpJa zl^!Iqfr^{8t`{XJzZ3C{7S$*NmZo6Nf_7GKVy<{HP`5^C0AjdI*U!dpqKDBLt(ytd zc8R{#I-fZ%9ZgzCljf?`7PSIv6iQ@KvhOV_kRwp<74B99KbNBql**Li*sWnf;_`vb zBT&#nhEVJHtnmP<(T^b=*jiE{!-{e*Q&4%@lQsRq@9huLqIP~1U6dV2it2go;EvaX z)m9OUV1AbSFl7HzkN~m)TV(-d@b%BwneXH8I((Ns%oOf-jn-I=`LmHLtWGa8^&{Bj zLI^PeNc#71d(<{V4E$w5%0QTCcokx7G5mF_LaYc=VYe8jP+(c6%>Ss&vIob%5{NUw zyCaxxCHnsb8|I-eTd>WXX8rs>s=a{1Sc+JTHK{^TSV)<++Nm#AJHJK9p@fhX^B8Ll{yLl9Z;bpc58)6F+QFl6t9sO2TH^NSp9&rLC01m#6KYNYGjAboS?F zEX!VA8YOil5|hJhEQ(4f-S51Duq0rXe=k$<^Slza`{T59i*S};{<=YZ1iJ@a@53;H zYF^S~W{82RPMEsCWX~B^^ny|1ybbU^T6>%5JtJo{W3EcRWIvD-dh8jx^!^}FZ+j42 z3wf+YiJX=uY?Xyf;zEaQZQ|rm=L=yQSrL!4^%JN!Y$meQM%zXiPlUF77OSYUnvl;d_Uiuovu4_L~oI(9nZ4 z7tDGiVQdSA*cb(K)_f@)ub(F04yPIj9zK5j^;h2vQ=t!y ztcFM8AW`vAA=Gdt%GvNqelXOz5nogQZwyg}@zlskY`%=H=%ruHZD+U0wMpcp+H+?> zB{Ug(v$&VYYL0aDcUN@nfl)6FJlh(_8tYaK*kPM_35A)!SGQrRFqCS#AG5fa3a#Ep z&rKXYKsT?WbC_xL6UrMM+NB-VrCrAUY5M9z@FpnBx?!q~R3E`)EmdzVKM?6DUwTe{ zJ__}mK4VLe@Q5z`m-H!da`Xp*53m>V07U2jw>%YDJS{+Tt)!58s>Hil{?z3KmhZpK za!Rf;ZCMnlZP=i$!vMT)WpEAG+^(Q%M=S0ADWuNba?YNZ0zr<*^07v@TK zyoh)hC)|5r7`S{uI(f!Y`a52}wRPe_C2SB-$9CW;Jc#wvJTV9umIHv%u)RrpK`qTz z_&8|lKT>@TTQz1S)Tg)KEOx5($p#SRKaSRsq;f$5rXIi!72x1d{|v1a>X!qcxE%k) z?|LrRAZXiG6s0nWBHJ+VdTWKRj=OgXfmitMIQHGS+^$s;muVv~%XcR-ofcvbfzx>N MeE+(~Z}F{v0eC5^(EtDd literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_methodical.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_methodical.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58419c0fef1c872e6a098c36e026665471aca457 GIT binary patch literal 15249 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 P{{@sB$L}1jCYS#oVwkwI literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_visualize.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/__pycache__/_visualize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00ee6f83ab2ff9a85c622dec438feb946b72b71b GIT binary patch literal 4962 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_core.py b/WebCrawler/venv/Lib/site-packages/automat/_core.py new file mode 100644 index 0000000..4118a4b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_core.py @@ -0,0 +1,165 @@ +# -*- test-case-name: automat._test.test_core -*- + +""" +A core state-machine abstraction. + +Perhaps something that could be replaced with or integrated into machinist. +""" + +from itertools import chain + +_NO_STATE = "" + + +class NoTransition(Exception): + """ + A finite state machine in C{state} has no transition for C{symbol}. + + @param state: the finite state machine's state at the time of the + illegal transition. + + @param symbol: the input symbol for which no transition exists. + """ + + def __init__(self, state, symbol): + self.state = state + self.symbol = symbol + super(Exception, self).__init__( + "no transition for {} in {}".format(symbol, state) + ) + + +class Automaton(object): + """ + A declaration of a finite state machine. + + Note that this is not the machine itself; it is immutable. + """ + + def __init__(self): + """ + Initialize the set of transitions and the initial state. + """ + self._initialState = _NO_STATE + self._transitions = set() + + + @property + def initialState(self): + """ + Return this automaton's initial state. + """ + return self._initialState + + + @initialState.setter + def initialState(self, state): + """ + Set this automaton's initial state. Raises a ValueError if + this automaton already has an initial state. + """ + + if self._initialState is not _NO_STATE: + raise ValueError( + "initial state already set to {}".format(self._initialState)) + + self._initialState = state + + + def addTransition(self, inState, inputSymbol, outState, outputSymbols): + """ + Add the given transition to the outputSymbol. Raise ValueError if + there is already a transition with the same inState and inputSymbol. + """ + # keeping self._transitions in a flat list makes addTransition + # O(n^2), but state machines don't tend to have hundreds of + # transitions. + for (anInState, anInputSymbol, anOutState, _) in self._transitions: + if (anInState == inState and anInputSymbol == inputSymbol): + raise ValueError( + "already have transition from {} via {}".format(inState, inputSymbol)) + self._transitions.add( + (inState, inputSymbol, outState, tuple(outputSymbols)) + ) + + + def allTransitions(self): + """ + All transitions. + """ + return frozenset(self._transitions) + + + def inputAlphabet(self): + """ + The full set of symbols acceptable to this automaton. + """ + return {inputSymbol for (inState, inputSymbol, outState, + outputSymbol) in self._transitions} + + + def outputAlphabet(self): + """ + The full set of symbols which can be produced by this automaton. + """ + return set( + chain.from_iterable( + outputSymbols for + (inState, inputSymbol, outState, outputSymbols) + in self._transitions + ) + ) + + + def states(self): + """ + All valid states; "Q" in the mathematical description of a state + machine. + """ + return frozenset( + chain.from_iterable( + (inState, outState) + for + (inState, inputSymbol, outState, outputSymbol) + in self._transitions + ) + ) + + + def outputForInput(self, inState, inputSymbol): + """ + A 2-tuple of (outState, outputSymbols) for inputSymbol. + """ + for (anInState, anInputSymbol, + outState, outputSymbols) in self._transitions: + if (inState, inputSymbol) == (anInState, anInputSymbol): + return (outState, list(outputSymbols)) + raise NoTransition(state=inState, symbol=inputSymbol) + + +class Transitioner(object): + """ + The combination of a current state and an L{Automaton}. + """ + + def __init__(self, automaton, initialState): + self._automaton = automaton + self._state = initialState + self._tracer = None + + def setTrace(self, tracer): + self._tracer = tracer + + def transition(self, inputSymbol): + """ + Transition between states, returning any outputs. + """ + outState, outputSymbols = self._automaton.outputForInput(self._state, + inputSymbol) + outTracer = None + if self._tracer: + outTracer = self._tracer(self._state._name(), + inputSymbol._name(), + outState._name()) + self._state = outState + return (outputSymbols, outTracer) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_discover.py b/WebCrawler/venv/Lib/site-packages/automat/_discover.py new file mode 100644 index 0000000..c0d88ba --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_discover.py @@ -0,0 +1,144 @@ +import collections +import inspect +from automat import MethodicalMachine +from twisted.python.modules import PythonModule, getModule + + +def isOriginalLocation(attr): + """ + Attempt to discover if this appearance of a PythonAttribute + representing a class refers to the module where that class was + defined. + """ + sourceModule = inspect.getmodule(attr.load()) + if sourceModule is None: + return False + + currentModule = attr + while not isinstance(currentModule, PythonModule): + currentModule = currentModule.onObject + + return currentModule.name == sourceModule.__name__ + + +def findMachinesViaWrapper(within): + """ + Recursively yield L{MethodicalMachine}s and their FQPNs within a + L{PythonModule} or a L{twisted.python.modules.PythonAttribute} + wrapper object. + + Note that L{PythonModule}s may refer to packages, as well. + + The discovery heuristic considers L{MethodicalMachine} instances + that are module-level attributes or class-level attributes + accessible from module scope. Machines inside nested classes will + be discovered, but those returned from functions or methods will not be. + + @type within: L{PythonModule} or L{twisted.python.modules.PythonAttribute} + @param within: Where to start the search. + + @return: a generator which yields FQPN, L{MethodicalMachine} pairs. + """ + queue = collections.deque([within]) + visited = set() + + while queue: + attr = queue.pop() + value = attr.load() + + if isinstance(value, MethodicalMachine) and value not in visited: + visited.add(value) + yield attr.name, value + elif (inspect.isclass(value) and isOriginalLocation(attr) and + value not in visited): + visited.add(value) + queue.extendleft(attr.iterAttributes()) + elif isinstance(attr, PythonModule) and value not in visited: + visited.add(value) + queue.extendleft(attr.iterAttributes()) + queue.extendleft(attr.iterModules()) + + +class InvalidFQPN(Exception): + """ + The given FQPN was not a dot-separated list of Python objects. + """ + + +class NoModule(InvalidFQPN): + """ + A prefix of the FQPN was not an importable module or package. + """ + + +class NoObject(InvalidFQPN): + """ + A suffix of the FQPN was not an accessible object + """ + + +def wrapFQPN(fqpn): + """ + Given an FQPN, retrieve the object via the global Python module + namespace and wrap it with a L{PythonModule} or a + L{twisted.python.modules.PythonAttribute}. + """ + # largely cribbed from t.p.reflect.namedAny + + if not fqpn: + raise InvalidFQPN("FQPN was empty") + + components = collections.deque(fqpn.split('.')) + + if '' in components: + raise InvalidFQPN( + "name must be a string giving a '.'-separated list of Python " + "identifiers, not %r" % (fqpn,)) + + component = components.popleft() + try: + module = getModule(component) + except KeyError: + raise NoModule(component) + + # find the bottom-most module + while components: + component = components.popleft() + try: + module = module[component] + except KeyError: + components.appendleft(component) + break + else: + module.load() + else: + return module + + # find the bottom-most attribute + attribute = module + for component in components: + try: + attribute = next(child for child in attribute.iterAttributes() + if child.name.rsplit('.', 1)[-1] == component) + except StopIteration: + raise NoObject('{}.{}'.format(attribute.name, component)) + + return attribute + + +def findMachines(fqpn): + """ + Recursively yield L{MethodicalMachine}s and their FQPNs in and + under the a Python object specified by an FQPN. + + The discovery heuristic considers L{MethodicalMachine} instances + that are module-level attributes or class-level attributes + accessible from module scope. Machines inside nested classes will + be discovered, but those returned from functions or methods will not be. + + @type within: an FQPN + @param within: Where to start the search. + + @return: a generator which yields FQPN, L{MethodicalMachine} pairs. + """ + return findMachinesViaWrapper(wrapFQPN(fqpn)) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_introspection.py b/WebCrawler/venv/Lib/site-packages/automat/_introspection.py new file mode 100644 index 0000000..3f7307d --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_introspection.py @@ -0,0 +1,45 @@ +""" +Python introspection helpers. +""" + +from types import CodeType as code, FunctionType as function + + +def copycode(template, changes): + names = [ + "argcount", "nlocals", "stacksize", "flags", "code", "consts", + "names", "varnames", "filename", "name", "firstlineno", "lnotab", + "freevars", "cellvars" + ] + if hasattr(code, "co_kwonlyargcount"): + names.insert(1, "kwonlyargcount") + if hasattr(code, "co_posonlyargcount"): + # PEP 570 added "positional only arguments" + names.insert(1, "posonlyargcount") + values = [ + changes.get(name, getattr(template, "co_" + name)) + for name in names + ] + return code(*values) + + + +def copyfunction(template, funcchanges, codechanges): + names = [ + "globals", "name", "defaults", "closure", + ] + values = [ + funcchanges.get(name, getattr(template, "__" + name + "__")) + for name in names + ] + return function(copycode(template.__code__, codechanges), *values) + + +def preserveName(f): + """ + Preserve the name of the given function on the decorated function. + """ + def decorator(decorated): + return copyfunction(decorated, + dict(name=f.__name__), dict(name=f.__name__)) + return decorator diff --git a/WebCrawler/venv/Lib/site-packages/automat/_methodical.py b/WebCrawler/venv/Lib/site-packages/automat/_methodical.py new file mode 100644 index 0000000..84fcd36 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_methodical.py @@ -0,0 +1,474 @@ +# -*- test-case-name: automat._test.test_methodical -*- + +import collections +from functools import wraps +from itertools import count + +try: + # Python 3 + from inspect import getfullargspec as getArgsSpec +except ImportError: + # Python 2 + from inspect import getargspec as getArgsSpec + +import attr +import six + +from ._core import Transitioner, Automaton +from ._introspection import preserveName + + +ArgSpec = collections.namedtuple('ArgSpec', ['args', 'varargs', 'varkw', + 'defaults', 'kwonlyargs', + 'kwonlydefaults', 'annotations']) + + +def _getArgSpec(func): + """ + Normalize inspect.ArgSpec across python versions + and convert mutable attributes to immutable types. + + :param Callable func: A function. + :return: The function's ArgSpec. + :rtype: ArgSpec + """ + spec = getArgsSpec(func) + return ArgSpec( + args=tuple(spec.args), + varargs=spec.varargs, + varkw=spec.varkw if six.PY3 else spec.keywords, + defaults=spec.defaults if spec.defaults else (), + kwonlyargs=tuple(spec.kwonlyargs) if six.PY3 else (), + kwonlydefaults=( + tuple(spec.kwonlydefaults.items()) + if spec.kwonlydefaults else () + ) if six.PY3 else (), + annotations=tuple(spec.annotations.items()) if six.PY3 else (), + ) + + +def _getArgNames(spec): + """ + Get the name of all arguments defined in a function signature. + + The name of * and ** arguments is normalized to "*args" and "**kwargs". + + :param ArgSpec spec: A function to interrogate for a signature. + :return: The set of all argument names in `func`s signature. + :rtype: Set[str] + """ + return set( + spec.args + + spec.kwonlyargs + + (('*args',) if spec.varargs else ()) + + (('**kwargs',) if spec.varkw else ()) + + spec.annotations + ) + + +def _keywords_only(f): + """ + Decorate a function so all its arguments must be passed by keyword. + + A useful utility for decorators that take arguments so that they don't + accidentally get passed the thing they're decorating as their first + argument. + + Only works for methods right now. + """ + @wraps(f) + def g(self, **kw): + return f(self, **kw) + return g + + +@attr.s(frozen=True) +class MethodicalState(object): + """ + A state for a L{MethodicalMachine}. + """ + machine = attr.ib(repr=False) + method = attr.ib() + serialized = attr.ib(repr=False) + + def upon(self, input, enter, outputs, collector=list): + """ + Declare a state transition within the :class:`automat.MethodicalMachine` + associated with this :class:`automat.MethodicalState`: + upon the receipt of the `input`, enter the `state`, + emitting each output in `outputs`. + + :param MethodicalInput input: The input triggering a state transition. + :param MethodicalState enter: The resulting state. + :param Iterable[MethodicalOutput] outputs: The outputs to be triggered + as a result of the declared state transition. + :param Callable collector: The function to be used when collecting + output return values. + + :raises TypeError: if any of the `outputs` signatures do not match + the `inputs` signature. + :raises ValueError: if the state transition from `self` via `input` + has already been defined. + """ + inputArgs = _getArgNames(input.argSpec) + for output in outputs: + outputArgs = _getArgNames(output.argSpec) + if not outputArgs.issubset(inputArgs): + raise TypeError( + "method {input} signature {inputSignature} " + "does not match output {output} " + "signature {outputSignature}".format( + input=input.method.__name__, + output=output.method.__name__, + inputSignature=getArgsSpec(input.method), + outputSignature=getArgsSpec(output.method), + )) + self.machine._oneTransition(self, input, enter, outputs, collector) + + def _name(self): + return self.method.__name__ + + +def _transitionerFromInstance(oself, symbol, automaton): + """ + Get a L{Transitioner} + """ + transitioner = getattr(oself, symbol, None) + if transitioner is None: + transitioner = Transitioner( + automaton, + automaton.initialState, + ) + setattr(oself, symbol, transitioner) + return transitioner + + +def _empty(): + pass + +def _docstring(): + """docstring""" + +def assertNoCode(inst, attribute, f): + # The function body must be empty, i.e. "pass" or "return None", which + # both yield the same bytecode: LOAD_CONST (None), RETURN_VALUE. We also + # accept functions with only a docstring, which yields slightly different + # bytecode, because the "None" is put in a different constant slot. + + # Unfortunately, this does not catch function bodies that return a + # constant value, e.g. "return 1", because their code is identical to a + # "return None". They differ in the contents of their constant table, but + # checking that would require us to parse the bytecode, find the index + # being returned, then making sure the table has a None at that index. + + if f.__code__.co_code not in (_empty.__code__.co_code, + _docstring.__code__.co_code): + raise ValueError("function body must be empty") + + +def _filterArgs(args, kwargs, inputSpec, outputSpec): + """ + Filter out arguments that were passed to input that output won't accept. + + :param tuple args: The *args that input received. + :param dict kwargs: The **kwargs that input received. + :param ArgSpec inputSpec: The input's arg spec. + :param ArgSpec outputSpec: The output's arg spec. + :return: The args and kwargs that output will accept. + :rtype: Tuple[tuple, dict] + """ + named_args = tuple(zip(inputSpec.args[1:], args)) + if outputSpec.varargs: + # Only return all args if the output accepts *args. + return_args = args + else: + # Filter out arguments that don't appear + # in the output's method signature. + return_args = [v for n, v in named_args if n in outputSpec.args] + + # Get any of input's default arguments that were not passed. + passed_arg_names = tuple(kwargs) + for name, value in named_args: + passed_arg_names += (name, value) + defaults = zip(inputSpec.args[::-1], inputSpec.defaults[::-1]) + full_kwargs = {n: v for n, v in defaults if n not in passed_arg_names} + full_kwargs.update(kwargs) + + if outputSpec.varkw: + # Only pass all kwargs if the output method accepts **kwargs. + return_kwargs = full_kwargs + else: + # Filter out names that the output method does not accept. + all_accepted_names = outputSpec.args[1:] + outputSpec.kwonlyargs + return_kwargs = {n: v for n, v in full_kwargs.items() + if n in all_accepted_names} + + return return_args, return_kwargs + + +@attr.s(eq=False, hash=False) +class MethodicalInput(object): + """ + An input for a L{MethodicalMachine}. + """ + automaton = attr.ib(repr=False) + method = attr.ib(validator=assertNoCode) + symbol = attr.ib(repr=False) + collectors = attr.ib(default=attr.Factory(dict), repr=False) + argSpec = attr.ib(init=False, repr=False) + + @argSpec.default + def _buildArgSpec(self): + return _getArgSpec(self.method) + + def __get__(self, oself, type=None): + """ + Return a function that takes no arguments and returns values returned + by output functions produced by the given L{MethodicalInput} in + C{oself}'s current state. + """ + transitioner = _transitionerFromInstance(oself, self.symbol, + self.automaton) + @preserveName(self.method) + @wraps(self.method) + def doInput(*args, **kwargs): + self.method(oself, *args, **kwargs) + previousState = transitioner._state + (outputs, outTracer) = transitioner.transition(self) + collector = self.collectors[previousState] + values = [] + for output in outputs: + if outTracer: + outTracer(output._name()) + a, k = _filterArgs(args, kwargs, self.argSpec, output.argSpec) + value = output(oself, *a, **k) + values.append(value) + return collector(values) + return doInput + + def _name(self): + return self.method.__name__ + + +@attr.s(frozen=True) +class MethodicalOutput(object): + """ + An output for a L{MethodicalMachine}. + """ + machine = attr.ib(repr=False) + method = attr.ib() + argSpec = attr.ib(init=False, repr=False) + + @argSpec.default + def _buildArgSpec(self): + return _getArgSpec(self.method) + + def __get__(self, oself, type=None): + """ + Outputs are private, so raise an exception when we attempt to get one. + """ + raise AttributeError( + "{cls}.{method} is a state-machine output method; " + "to produce this output, call an input method instead.".format( + cls=type.__name__, + method=self.method.__name__ + ) + ) + + + def __call__(self, oself, *args, **kwargs): + """ + Call the underlying method. + """ + return self.method(oself, *args, **kwargs) + + def _name(self): + return self.method.__name__ + +@attr.s(eq=False, hash=False) +class MethodicalTracer(object): + automaton = attr.ib(repr=False) + symbol = attr.ib(repr=False) + + + def __get__(self, oself, type=None): + transitioner = _transitionerFromInstance(oself, self.symbol, + self.automaton) + def setTrace(tracer): + transitioner.setTrace(tracer) + return setTrace + + + +counter = count() +def gensym(): + """ + Create a unique Python identifier. + """ + return "_symbol_" + str(next(counter)) + + + +class MethodicalMachine(object): + """ + A :class:`MethodicalMachine` is an interface to an `Automaton` + that uses methods on a class. + """ + + def __init__(self): + self._automaton = Automaton() + self._reducers = {} + self._symbol = gensym() + + + def __get__(self, oself, type=None): + """ + L{MethodicalMachine} is an implementation detail for setting up + class-level state; applications should never need to access it on an + instance. + """ + if oself is not None: + raise AttributeError( + "MethodicalMachine is an implementation detail.") + return self + + + @_keywords_only + def state(self, initial=False, terminal=False, + serialized=None): + """ + Declare a state, possibly an initial state or a terminal state. + + This is a decorator for methods, but it will modify the method so as + not to be callable any more. + + :param bool initial: is this state the initial state? + Only one state on this :class:`automat.MethodicalMachine` + may be an initial state; more than one is an error. + + :param bool terminal: Is this state a terminal state? + i.e. a state that the machine can end up in? + (This is purely informational at this point.) + + :param Hashable serialized: a serializable value + to be used to represent this state to external systems. + This value should be hashable; + :py:func:`unicode` is a good type to use. + """ + def decorator(stateMethod): + state = MethodicalState(machine=self, + method=stateMethod, + serialized=serialized) + if initial: + self._automaton.initialState = state + return state + return decorator + + + @_keywords_only + def input(self): + """ + Declare an input. + + This is a decorator for methods. + """ + def decorator(inputMethod): + return MethodicalInput(automaton=self._automaton, + method=inputMethod, + symbol=self._symbol) + return decorator + + + @_keywords_only + def output(self): + """ + Declare an output. + + This is a decorator for methods. + + This method will be called when the state machine transitions to this + state as specified in the decorated `output` method. + """ + def decorator(outputMethod): + return MethodicalOutput(machine=self, method=outputMethod) + return decorator + + + def _oneTransition(self, startState, inputToken, endState, outputTokens, + collector): + """ + See L{MethodicalState.upon}. + """ + # FIXME: tests for all of this (some of it is wrong) + # if not isinstance(startState, MethodicalState): + # raise NotImplementedError("start state {} isn't a state" + # .format(startState)) + # if not isinstance(inputToken, MethodicalInput): + # raise NotImplementedError("start state {} isn't an input" + # .format(inputToken)) + # if not isinstance(endState, MethodicalState): + # raise NotImplementedError("end state {} isn't a state" + # .format(startState)) + # for output in outputTokens: + # if not isinstance(endState, MethodicalState): + # raise NotImplementedError("output state {} isn't a state" + # .format(endState)) + self._automaton.addTransition(startState, inputToken, endState, + tuple(outputTokens)) + inputToken.collectors[startState] = collector + + + @_keywords_only + def serializer(self): + """ + + """ + def decorator(decoratee): + @wraps(decoratee) + def serialize(oself): + transitioner = _transitionerFromInstance(oself, self._symbol, + self._automaton) + return decoratee(oself, transitioner._state.serialized) + return serialize + return decorator + + @_keywords_only + def unserializer(self): + """ + + """ + def decorator(decoratee): + @wraps(decoratee) + def unserialize(oself, *args, **kwargs): + state = decoratee(oself, *args, **kwargs) + mapping = {} + for eachState in self._automaton.states(): + mapping[eachState.serialized] = eachState + transitioner = _transitionerFromInstance( + oself, self._symbol, self._automaton) + transitioner._state = mapping[state] + return None # it's on purpose + return unserialize + return decorator + + @property + def _setTrace(self): + return MethodicalTracer(self._automaton, self._symbol) + + def asDigraph(self): + """ + Generate a L{graphviz.Digraph} that represents this machine's + states and transitions. + + @return: L{graphviz.Digraph} object; for more information, please + see the documentation for + U{graphviz} + + """ + from ._visualize import makeDigraph + return makeDigraph( + self._automaton, + stateAsString=lambda state: state.method.__name__, + inputAsString=lambda input: input.method.__name__, + outputAsString=lambda output: output.method.__name__, + ) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__init__.py b/WebCrawler/venv/Lib/site-packages/automat/_test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2890609c503714197dee979969d926cd7c921c2d GIT binary patch literal 173 zcmYe~<>g`k0`{;+@gVv!h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o0~<*(#>AIJKxa z#?;iv&@v_^wK%&ZzaXYOH7U6$u{RF+H_7Cb6_6 oKR2;NKfWZj7)Zuv=4F<|$LkeT-r}&y%}*)KNwovn^%;m60Ps63r2qf` literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_core.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_core.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41e63570788c74ce86d9c47229cb10808ef873b2 GIT binary patch literal 3020 zcma)8&5zSY6rZsj#|g=HcM>3usujta&CKo^96Ozv z?6M&_E!V0&_Q)Rjmwaqb{0o&T`rg>X}(KnzHM9_qcXh=s+=ujdY;U@0L3q4AHAi@)kmqawAcj$%<;Xfk1<{Jm5 z^_;wQXJWDuH(8o@`q^W}QyrT)OW!~@>CrrREVa4IwH#tY{Xqq{q3Exnk|d;pgpQ!0 zi;KS`p;s)63yLPlz6eAMzD>~u8Kikd}EBAI;vn#`i zQZhBk0UN7$j~jWF#iMZ|N6^S|!%RrS9Hslj6VSp)4j|=pt-O_N^tcK}1Q+YU%T3;*l01g_qKljUq zX5QgiOJ#oKv6eb-Jw6!AdrDyZHfUB@c2{vRLYYgVe87s80>Rj7#Hp`SY*^=QXgaaQT{LWRMNQ?r&( zgrN7KSQK4^A43kwoPy^m;^L_*sBn%T>Vylv_NLD(7d?1UMcPI-G2q1enc75W&Y7}C zJ_Uw&o26N$VBt9%8`k9o7-9|J-;Pr$7M`C5X;%8Yg?|<={hp`r1geDzSfj!IpE@FlqL1Y44vwmqrMXhELnndpo^!!jvaxyx*KDXerG}Ur{uqaD}%+ z(VSplFz+k(2*PmpIJmIIgBEY8rD0uA&fPu^OdRXOSP0==+a?;|AfGpYBPtWueZ+-W zu;HA6s3EkV)Z&ksg?s9A?U*~sc$aTUGr!7slGwS0ts$b{J+0`j&x3fkQLO2D{t7}(3hz|(S>in*R;^dyGw@2 z&lE&(@0STr^6t{XkFj-pAcdg^41-jr)fxyVF}7|omZfrG`71E2h}ou3*X_GPgSVbD zy?6p>OVgH6hCr{Ve*i*(GC}7~EpRPjfXID|HV^R9I3h>1k^nt5sktNtg;Zc_`uqO@ zR2lP}Rm{rvcV)_UVxT%!BBfGfqn$$rylenTQt_>%NCzU58XLhYkRA@$f+cFceS?WG zY;CJ-^a!mVw)SHF$WlVsG?{Jd_gXb>z`KV!kF!b#-{%Ps^henIF;<^o-wFVG;VRv8 zEqSPQ>|0N>bhF&)L(3WZq`SX3?e6IGEWBQ5+zL_*a<&5{_{Z~BD8AF{|Am8h=v#sY zvS9^{J_yIqn9&GX9XTDSsLbZB@rwI`fcA*OeZgJ2FWg?bFBBQzkIIMj5ROy0W%0yX ze$IfvIZ!wz{IP+1kM*{ez&4os%dwRn8$b+_Lu}w?lxBtYG#_f^lr#$lD9W?~LLi@zy7A!dz{y zv%XJ#a9Zbd%B_zFEapKJrFsC87uiB#$tdfWHu}ssW-MSJP@2 Vu}L!cuGs1Kh%1d(&Q+)5{0ketFb)6! literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_discover.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_discover.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25dd41066e596468cba6a5ae18c9c7c2c22d2a0f GIT binary patch literal 21374 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_methodical.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_methodical.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..088165ae7723106ec152ecdf7c4f9f86ea2f9ce6 GIT binary patch literal 27006 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 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_trace.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_trace.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a206e9f8e7bfadbea3b56236776699e4ae10528 GIT binary patch literal 3042 zcmbtWOK%%D5GI$qtJTx8(>86=hwBz;)wB*`Acq!4;KB%s0*!Kr(ZfQ(VlC2&lGUT+ zDn^BvG#o&h~0DCjQt z9+OJ;6|6uiH1YO?ig!aLURkDN^`VHLba=BKMi0aKlV)4g(RBWCK-qy;{Q*J{pK{_` zf*ldx7WPwzQ*QlAIpg**IikKR?2&T{;c!>$nN-hkPwO7&Ss2gqoYr%xp63Ov=Tp7N zOIk00UIhCUUeK~LcrL6wWI9?9uF?1^9LZWz zcpSF6k$ANKRMg`=IGjwg-He-IRHv}f$%Actci~l-5l&&Y)i0*T>naXoQ5};pO>8Bi z1DOFME&kc7e^cuzAyw_(y{)@n*SJv6;!d}ADE8|zJdA{_Js0igwI7=MHPwv8SKYAw zENlo>3wv>=6~=dh81i)oMG(udE;hR_5@%mDnr-x=Fp0$Kug&jdQxCt^9ty1{=aERa zU;_6h(Hj*Jnz+Ue+Y^`97F?R~*YcSaZNAhY1Eb=cxAKBF7+mgZZ1oFDCwRTt?)Kv9 z<=bP8&fV2Zy}{seZ?XjQuk^6>))gMM{Tia9|-I8%sRbz$)SP8 z%{hOIDT2W&l$aL;?XV?+Ajt(mtHXN{whKY?otaOeL;~Pp*ODX9FeTJuHvJo3wnp*X^`TMy3TR5y2Aq44taaL3q@)ax`bT z=4I&@b!;=&D$_D8Q9bJ%HDdkk;8O2{m{21U;xX}=p+q0p83@BoaymlfU$u}422(L4 z{Hk9-G|127gd9-4j`xzrj-N(9*s3d@r{fR@x7Q zoz4Sdp3R%HxNs&X5VupUV_=hK66`hTP>ARu89^WeIAX}S_Lw6!)_NUwZf8Y zC*pxg?z=E0$+pFz(a}uvnwn=D-6JdL0`o*50sY&v)7#W^*l9;E0*wu|xgB-j{!;fh z)0xbGNMi<(RAB~C8b64tv8(ebZ$Mi^E6Ilnh&q0Nz?|W1%w!f#J^_)?G{}#!NAqI& zY$Tt-kh%qeP@5Jsm^@ly9`&g8ugh}qH7)b)-@Ia1mxJUtSpQ8ya&fX7a8Lg}fzO37 zS+JOc$*f<)#9f35rp<*{!vxE0$VOyn4apFk9M}ky6LLaNtP^%%r#NQ=26$uDg?;1A zJ6-6Vg@p#`Lg-&&{mBnNRH%FpKej}u$#oPTq1Zs7nLwwmsG$-V8c`2m(A;da|NYsV z7?1^Fn@`No0`81HF*5<##{VoF1hzyF0W4>|I!Mh=2)11e2scjX8eOycTW=oJ*gjJQ z)pI?XKH;do06+3J2xx2Oofb;#H>R(az;0t9U0 literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_visualize.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/automat/_test/__pycache__/test_visualize.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4526c0c774119e700a549fbcd73ee8cd9b6124c GIT binary patch literal 15757 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 Ezm*2G8UO$Q literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/test_core.py b/WebCrawler/venv/Lib/site-packages/automat/_test/test_core.py new file mode 100644 index 0000000..a9ff050 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_test/test_core.py @@ -0,0 +1,86 @@ + +from .._core import Automaton, NoTransition + +from unittest import TestCase + +class CoreTests(TestCase): + """ + Tests for Automat's (currently private, implementation detail) core. + """ + + def test_NoTransition(self): + """ + A L{NoTransition} exception describes the state and input symbol + that caused it. + """ + # NoTransition requires two arguments + with self.assertRaises(TypeError): + NoTransition() + + state = "current-state" + symbol = "transitionless-symbol" + noTransitionException = NoTransition(state=state, symbol=symbol) + + self.assertIs(noTransitionException.symbol, symbol) + + self.assertIn(state, str(noTransitionException)) + self.assertIn(symbol, str(noTransitionException)) + + + def test_noOutputForInput(self): + """ + L{Automaton.outputForInput} raises L{NoTransition} if no + transition for that input is defined. + """ + a = Automaton() + self.assertRaises(NoTransition, a.outputForInput, + "no-state", "no-symbol") + + + def test_oneTransition(self): + """ + L{Automaton.addTransition} adds its input symbol to + L{Automaton.inputAlphabet}, all its outputs to + L{Automaton.outputAlphabet}, and causes L{Automaton.outputForInput} to + start returning the new state and output symbols. + """ + a = Automaton() + a.addTransition("beginning", "begin", "ending", ["end"]) + self.assertEqual(a.inputAlphabet(), {"begin"}) + self.assertEqual(a.outputAlphabet(), {"end"}) + self.assertEqual(a.outputForInput("beginning", "begin"), + ("ending", ["end"])) + self.assertEqual(a.states(), {"beginning", "ending"}) + + + def test_oneTransition_nonIterableOutputs(self): + """ + L{Automaton.addTransition} raises a TypeError when given outputs + that aren't iterable and doesn't add any transitions. + """ + a = Automaton() + nonIterableOutputs = 1 + self.assertRaises( + TypeError, + a.addTransition, + "fromState", "viaSymbol", "toState", nonIterableOutputs) + self.assertFalse(a.inputAlphabet()) + self.assertFalse(a.outputAlphabet()) + self.assertFalse(a.states()) + self.assertFalse(a.allTransitions()) + + + def test_initialState(self): + """ + L{Automaton.initialState} is a descriptor that sets the initial + state if it's not yet set, and raises L{ValueError} if it is. + + """ + a = Automaton() + a.initialState = "a state" + self.assertEqual(a.initialState, "a state") + with self.assertRaises(ValueError): + a.initialState = "another state" + + +# FIXME: addTransition for transition that's been added before diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/test_discover.py b/WebCrawler/venv/Lib/site-packages/automat/_test/test_discover.py new file mode 100644 index 0000000..2aaf16a --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_test/test_discover.py @@ -0,0 +1,609 @@ +import operator +import os +import shutil +import sys +import textwrap +import tempfile +from unittest import skipIf, TestCase + +import six + + +def isTwistedInstalled(): + try: + __import__('twisted') + except ImportError: + return False + else: + return True + + +class _WritesPythonModules(TestCase): + """ + A helper that enables generating Python module test fixtures. + """ + + def setUp(self): + super(_WritesPythonModules, self).setUp() + + from twisted.python.modules import getModule, PythonPath + from twisted.python.filepath import FilePath + + self.getModule = getModule + self.PythonPath = PythonPath + self.FilePath = FilePath + + self.originalSysModules = set(sys.modules.keys()) + self.savedSysPath = sys.path[:] + + self.pathDir = tempfile.mkdtemp() + self.makeImportable(self.pathDir) + + def tearDown(self): + super(_WritesPythonModules, self).tearDown() + + sys.path[:] = self.savedSysPath + modulesToDelete = six.viewkeys(sys.modules) - self.originalSysModules + for module in modulesToDelete: + del sys.modules[module] + + shutil.rmtree(self.pathDir) + + def makeImportable(self, path): + sys.path.append(path) + + def writeSourceInto(self, source, path, moduleName): + directory = self.FilePath(path) + + module = directory.child(moduleName) + # FilePath always opens a file in binary mode - but that will + # break on Python 3 + with open(module.path, 'w') as f: + f.write(textwrap.dedent(source)) + + return self.PythonPath([directory.path]) + + def makeModule(self, source, path, moduleName): + pythonModuleName, _ = os.path.splitext(moduleName) + return self.writeSourceInto(source, path, moduleName)[pythonModuleName] + + def attributesAsDict(self, hasIterAttributes): + return {attr.name: attr for attr in hasIterAttributes.iterAttributes()} + + def loadModuleAsDict(self, module): + module.load() + return self.attributesAsDict(module) + + def makeModuleAsDict(self, source, path, name): + return self.loadModuleAsDict(self.makeModule(source, path, name)) + + +@skipIf(not isTwistedInstalled(), "Twisted is not installed.") +class OriginalLocationTests(_WritesPythonModules): + """ + Tests that L{isOriginalLocation} detects when a + L{PythonAttribute}'s FQPN refers to an object inside the module + where it was defined. + + For example: A L{twisted.python.modules.PythonAttribute} with a + name of 'foo.bar' that refers to a 'bar' object defined in module + 'baz' does *not* refer to bar's original location, while a + L{PythonAttribute} with a name of 'baz.bar' does. + + """ + def setUp(self): + super(OriginalLocationTests, self).setUp() + from .._discover import isOriginalLocation + self.isOriginalLocation = isOriginalLocation + + def test_failsWithNoModule(self): + """ + L{isOriginalLocation} returns False when the attribute refers to an + object whose source module cannot be determined. + """ + source = """\ + class Fake(object): + pass + hasEmptyModule = Fake() + hasEmptyModule.__module__ = None + """ + + moduleDict = self.makeModuleAsDict(source, + self.pathDir, + 'empty_module_attr.py') + + self.assertFalse(self.isOriginalLocation( + moduleDict['empty_module_attr.hasEmptyModule'])) + + def test_failsWithDifferentModule(self): + """ + L{isOriginalLocation} returns False when the attribute refers to + an object outside of the module where that object was defined. + """ + originalSource = """\ + class ImportThisClass(object): + pass + importThisObject = ImportThisClass() + importThisNestingObject = ImportThisClass() + importThisNestingObject.nestedObject = ImportThisClass() + """ + + importingSource = """\ + from original import (ImportThisClass, + importThisObject, + importThisNestingObject) + """ + + self.makeModule(originalSource, self.pathDir, 'original.py') + importingDict = self.makeModuleAsDict(importingSource, + self.pathDir, + 'importing.py') + self.assertFalse( + self.isOriginalLocation( + importingDict['importing.ImportThisClass'])) + self.assertFalse( + self.isOriginalLocation( + importingDict['importing.importThisObject'])) + + nestingObject = importingDict['importing.importThisNestingObject'] + nestingObjectDict = self.attributesAsDict(nestingObject) + nestedObject = nestingObjectDict[ + 'importing.importThisNestingObject.nestedObject'] + + self.assertFalse(self.isOriginalLocation(nestedObject)) + + def test_succeedsWithSameModule(self): + """ + L{isOriginalLocation} returns True when the attribute refers to an + object inside the module where that object was defined. + """ + mSource = textwrap.dedent(""" + class ThisClassWasDefinedHere(object): + pass + anObject = ThisClassWasDefinedHere() + aNestingObject = ThisClassWasDefinedHere() + aNestingObject.nestedObject = ThisClassWasDefinedHere() + """) + mDict = self.makeModuleAsDict(mSource, self.pathDir, 'm.py') + self.assertTrue(self.isOriginalLocation( + mDict['m.ThisClassWasDefinedHere'])) + self.assertTrue(self.isOriginalLocation(mDict['m.aNestingObject'])) + + nestingObject = mDict['m.aNestingObject'] + nestingObjectDict = self.attributesAsDict(nestingObject) + nestedObject = nestingObjectDict['m.aNestingObject.nestedObject'] + + self.assertTrue(self.isOriginalLocation(nestedObject)) + + +@skipIf(not isTwistedInstalled(), "Twisted is not installed.") +class FindMachinesViaWrapperTests(_WritesPythonModules): + """ + L{findMachinesViaWrapper} recursively yields FQPN, + L{MethodicalMachine} pairs in and under a given + L{twisted.python.modules.PythonModule} or + L{twisted.python.modules.PythonAttribute}. + """ + TEST_MODULE_SOURCE = """ + from automat import MethodicalMachine + + + class PythonClass(object): + _classMachine = MethodicalMachine() + + class NestedClass(object): + _nestedClassMachine = MethodicalMachine() + + ignoredAttribute = "I am ignored." + + def ignoredMethod(self): + "I am also ignored." + + rootLevelMachine = MethodicalMachine() + ignoredPythonObject = PythonClass() + anotherIgnoredPythonObject = "I am ignored." + """ + + def setUp(self): + super(FindMachinesViaWrapperTests, self).setUp() + from .._discover import findMachinesViaWrapper + self.findMachinesViaWrapper = findMachinesViaWrapper + + def test_yieldsMachine(self): + """ + When given a L{twisted.python.modules.PythonAttribute} that refers + directly to a L{MethodicalMachine}, L{findMachinesViaWrapper} + yields that machine and its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + rootMachine = MethodicalMachine() + """ + + moduleDict = self.makeModuleAsDict(source, self.pathDir, 'root.py') + rootMachine = moduleDict['root.rootMachine'] + self.assertIn(('root.rootMachine', rootMachine.load()), + list(self.findMachinesViaWrapper(rootMachine))) + + def test_yieldsMachineInClass(self): + """ + When given a L{twisted.python.modules.PythonAttribute} that refers + to a class that contains a L{MethodicalMachine} as a class + variable, L{findMachinesViaWrapper} yields that machine and + its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + class PythonClass(object): + _classMachine = MethodicalMachine() + """ + moduleDict = self.makeModuleAsDict(source, self.pathDir, 'clsmod.py') + PythonClass = moduleDict['clsmod.PythonClass'] + self.assertIn(('clsmod.PythonClass._classMachine', + PythonClass.load()._classMachine), + list(self.findMachinesViaWrapper(PythonClass))) + + def test_yieldsMachineInNestedClass(self): + """ + When given a L{twisted.python.modules.PythonAttribute} that refers + to a nested class that contains a L{MethodicalMachine} as a + class variable, L{findMachinesViaWrapper} yields that machine + and its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + class PythonClass(object): + class NestedClass(object): + _classMachine = MethodicalMachine() + """ + moduleDict = self.makeModuleAsDict(source, + self.pathDir, + 'nestedcls.py') + + PythonClass = moduleDict['nestedcls.PythonClass'] + self.assertIn(('nestedcls.PythonClass.NestedClass._classMachine', + PythonClass.load().NestedClass._classMachine), + list(self.findMachinesViaWrapper(PythonClass))) + + def test_yieldsMachineInModule(self): + """ + When given a L{twisted.python.modules.PythonModule} that refers to + a module that contains a L{MethodicalMachine}, + L{findMachinesViaWrapper} yields that machine and its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + rootMachine = MethodicalMachine() + """ + module = self.makeModule(source, self.pathDir, 'root.py') + rootMachine = self.loadModuleAsDict(module)['root.rootMachine'].load() + self.assertIn(('root.rootMachine', rootMachine), + list(self.findMachinesViaWrapper(module))) + + def test_yieldsMachineInClassInModule(self): + """ + When given a L{twisted.python.modules.PythonModule} that refers to + the original module of a class containing a + L{MethodicalMachine}, L{findMachinesViaWrapper} yields that + machine and its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + class PythonClass(object): + _classMachine = MethodicalMachine() + """ + module = self.makeModule(source, self.pathDir, 'clsmod.py') + PythonClass = self.loadModuleAsDict( + module)['clsmod.PythonClass'].load() + self.assertIn(('clsmod.PythonClass._classMachine', + PythonClass._classMachine), + list(self.findMachinesViaWrapper(module))) + + def test_yieldsMachineInNestedClassInModule(self): + """ + When given a L{twisted.python.modules.PythonModule} that refers to + the original module of a nested class containing a + L{MethodicalMachine}, L{findMachinesViaWrapper} yields that + machine and its FQPN. + """ + source = """\ + from automat import MethodicalMachine + + class PythonClass(object): + class NestedClass(object): + _classMachine = MethodicalMachine() + """ + module = self.makeModule(source, self.pathDir, 'nestedcls.py') + PythonClass = self.loadModuleAsDict( + module)['nestedcls.PythonClass'].load() + + self.assertIn(('nestedcls.PythonClass.NestedClass._classMachine', + PythonClass.NestedClass._classMachine), + list(self.findMachinesViaWrapper(module))) + + def test_ignoresImportedClass(self): + """ + When given a L{twisted.python.modules.PythonAttribute} that refers + to a class imported from another module, any + L{MethodicalMachine}s on that class are ignored. + + This behavior ensures that a machine is only discovered on a + class when visiting the module where that class was defined. + """ + originalSource = """ + from automat import MethodicalMachine + + class PythonClass(object): + _classMachine = MethodicalMachine() + """ + + importingSource = """ + from original import PythonClass + """ + + self.makeModule(originalSource, self.pathDir, 'original.py') + importingModule = self.makeModule(importingSource, + self.pathDir, + 'importing.py') + + self.assertFalse(list(self.findMachinesViaWrapper(importingModule))) + + def test_descendsIntoPackages(self): + """ + L{findMachinesViaWrapper} descends into packages to discover + machines. + """ + pythonPath = self.PythonPath([self.pathDir]) + package = self.FilePath(self.pathDir).child("test_package") + package.makedirs() + package.child('__init__.py').touch() + + source = """ + from automat import MethodicalMachine + + + class PythonClass(object): + _classMachine = MethodicalMachine() + + + rootMachine = MethodicalMachine() + """ + self.makeModule(source, package.path, 'module.py') + + test_package = pythonPath['test_package'] + machines = sorted(self.findMachinesViaWrapper(test_package), + key=operator.itemgetter(0)) + + moduleDict = self.loadModuleAsDict(test_package['module']) + rootMachine = moduleDict['test_package.module.rootMachine'].load() + PythonClass = moduleDict['test_package.module.PythonClass'].load() + + expectedMachines = sorted( + [('test_package.module.rootMachine', + rootMachine), + ('test_package.module.PythonClass._classMachine', + PythonClass._classMachine)], key=operator.itemgetter(0)) + + self.assertEqual(expectedMachines, machines) + + def test_infiniteLoop(self): + """ + L{findMachinesViaWrapper} ignores infinite loops. + + Note this test can't fail - it can only run forever! + """ + source = """ + class InfiniteLoop(object): + pass + + InfiniteLoop.loop = InfiniteLoop + """ + module = self.makeModule(source, self.pathDir, 'loop.py') + self.assertFalse(list(self.findMachinesViaWrapper(module))) + + +@skipIf(not isTwistedInstalled(), "Twisted is not installed.") +class WrapFQPNTests(TestCase): + """ + Tests that ensure L{wrapFQPN} loads the + L{twisted.python.modules.PythonModule} or + L{twisted.python.modules.PythonAttribute} for a given FQPN. + """ + + def setUp(self): + from twisted.python.modules import PythonModule, PythonAttribute + from .._discover import wrapFQPN, InvalidFQPN, NoModule, NoObject + + self.PythonModule = PythonModule + self.PythonAttribute = PythonAttribute + self.wrapFQPN = wrapFQPN + self.InvalidFQPN = InvalidFQPN + self.NoModule = NoModule + self.NoObject = NoObject + + def assertModuleWrapperRefersTo(self, moduleWrapper, module): + """ + Assert that a L{twisted.python.modules.PythonModule} refers to a + particular Python module. + """ + self.assertIsInstance(moduleWrapper, self.PythonModule) + self.assertEqual(moduleWrapper.name, module.__name__) + self.assertIs(moduleWrapper.load(), module) + + def assertAttributeWrapperRefersTo(self, attributeWrapper, fqpn, obj): + """ + Assert that a L{twisted.python.modules.PythonAttribute} refers to a + particular Python object. + """ + self.assertIsInstance(attributeWrapper, self.PythonAttribute) + self.assertEqual(attributeWrapper.name, fqpn) + self.assertIs(attributeWrapper.load(), obj) + + def test_failsWithEmptyFQPN(self): + """ + L{wrapFQPN} raises L{InvalidFQPN} when given an empty string. + """ + with self.assertRaises(self.InvalidFQPN): + self.wrapFQPN('') + + def test_failsWithBadDotting(self): + """" + L{wrapFQPN} raises L{InvalidFQPN} when given a badly-dotted + FQPN. (e.g., x..y). + """ + for bad in ('.fails', 'fails.', 'this..fails'): + with self.assertRaises(self.InvalidFQPN): + self.wrapFQPN(bad) + + def test_singleModule(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonModule} + referring to the single module a dotless FQPN describes. + """ + import os + + moduleWrapper = self.wrapFQPN('os') + + self.assertIsInstance(moduleWrapper, self.PythonModule) + self.assertIs(moduleWrapper.load(), os) + + def test_failsWithMissingSingleModuleOrPackage(self): + """ + L{wrapFQPN} raises L{NoModule} when given a dotless FQPN that does + not refer to a module or package. + """ + with self.assertRaises(self.NoModule): + self.wrapFQPN("this is not an acceptable name!") + + def test_singlePackage(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonModule} + referring to the single package a dotless FQPN describes. + """ + import xml + self.assertModuleWrapperRefersTo(self.wrapFQPN('xml'), xml) + + def test_multiplePackages(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonModule} + referring to the deepest package described by dotted FQPN. + """ + import xml.etree + self.assertModuleWrapperRefersTo(self.wrapFQPN('xml.etree'), xml.etree) + + def test_multiplePackagesFinalModule(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonModule} + referring to the deepest module described by dotted FQPN. + """ + import xml.etree.ElementTree + self.assertModuleWrapperRefersTo( + self.wrapFQPN('xml.etree.ElementTree'), xml.etree.ElementTree) + + def test_singleModuleObject(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonAttribute} + referring to the deepest object an FQPN names, traversing one module. + """ + import os + self.assertAttributeWrapperRefersTo( + self.wrapFQPN('os.path'), 'os.path', os.path) + + def test_multiplePackagesObject(self): + """ + L{wrapFQPN} returns a L{twisted.python.modules.PythonAttribute} + referring to the deepest object described by an FQPN, + descending through several packages. + """ + import xml.etree.ElementTree + import automat + + for fqpn, obj in [('xml.etree.ElementTree.fromstring', + xml.etree.ElementTree.fromstring), + ('automat.MethodicalMachine.__doc__', + automat.MethodicalMachine.__doc__)]: + self.assertAttributeWrapperRefersTo( + self.wrapFQPN(fqpn), fqpn, obj) + + def test_failsWithMultiplePackagesMissingModuleOrPackage(self): + """ + L{wrapFQPN} raises L{NoObject} when given an FQPN that contains a + missing attribute, module, or package. + """ + for bad in ('xml.etree.nope!', + 'xml.etree.nope!.but.the.rest.is.believable'): + with self.assertRaises(self.NoObject): + self.wrapFQPN(bad) + + +@skipIf(not isTwistedInstalled(), "Twisted is not installed.") +class FindMachinesIntegrationTests(_WritesPythonModules): + """ + Integration tests to check that L{findMachines} yields all + machines discoverable at or below an FQPN. + """ + + SOURCE = """ + from automat import MethodicalMachine + + class PythonClass(object): + _machine = MethodicalMachine() + ignored = "i am ignored" + + rootLevel = MethodicalMachine() + + ignored = "i am ignored" + """ + + def setUp(self): + super(FindMachinesIntegrationTests, self).setUp() + from .._discover import findMachines + + self.findMachines = findMachines + + packageDir = self.FilePath(self.pathDir).child("test_package") + packageDir.makedirs() + self.pythonPath = self.PythonPath([self.pathDir]) + self.writeSourceInto(self.SOURCE, packageDir.path, '__init__.py') + + subPackageDir = packageDir.child('subpackage') + subPackageDir.makedirs() + subPackageDir.child('__init__.py').touch() + + self.makeModule(self.SOURCE, subPackageDir.path, 'module.py') + + self.packageDict = self.loadModuleAsDict( + self.pythonPath['test_package']) + self.moduleDict = self.loadModuleAsDict( + self.pythonPath['test_package']['subpackage']['module']) + + def test_discoverAll(self): + """ + Given a top-level package FQPN, L{findMachines} discovers all + L{MethodicalMachine} instances in and below it. + """ + machines = sorted(self.findMachines('test_package'), + key=operator.itemgetter(0)) + + tpRootLevel = self.packageDict['test_package.rootLevel'].load() + tpPythonClass = self.packageDict['test_package.PythonClass'].load() + + mRLAttr = self.moduleDict['test_package.subpackage.module.rootLevel'] + mRootLevel = mRLAttr.load() + mPCAttr = self.moduleDict['test_package.subpackage.module.PythonClass'] + mPythonClass = mPCAttr.load() + + expectedMachines = sorted( + [('test_package.rootLevel', tpRootLevel), + ('test_package.PythonClass._machine', tpPythonClass._machine), + ('test_package.subpackage.module.rootLevel', mRootLevel), + ('test_package.subpackage.module.PythonClass._machine', + mPythonClass._machine)], + key=operator.itemgetter(0)) + + self.assertEqual(expectedMachines, machines) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/test_methodical.py b/WebCrawler/venv/Lib/site-packages/automat/_test/test_methodical.py new file mode 100644 index 0000000..7e3d7ca --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_test/test_methodical.py @@ -0,0 +1,587 @@ + +""" +Tests for the public interface of Automat. +""" + +from functools import reduce +from unittest import TestCase + +from automat._methodical import ArgSpec, _getArgNames, _getArgSpec, _filterArgs +from .. import MethodicalMachine, NoTransition +from .. import _methodical + + +class MethodicalTests(TestCase): + """ + Tests for L{MethodicalMachine}. + """ + + def test_oneTransition(self): + """ + L{MethodicalMachine} provides a way for you to declare a state machine + with inputs, outputs, and states as methods. When you have declared an + input, an output, and a state, calling the input method in that state + will produce the specified output. + """ + + class Machination(object): + machine = MethodicalMachine() + @machine.input() + def anInput(self): + "an input" + + @machine.output() + def anOutput(self): + "an output" + return "an-output-value" + + @machine.output() + def anotherOutput(self): + "another output" + return "another-output-value" + + @machine.state(initial=True) + def anState(self): + "a state" + + @machine.state() + def anotherState(self): + "another state" + + anState.upon(anInput, enter=anotherState, outputs=[anOutput]) + anotherState.upon(anInput, enter=anotherState, + outputs=[anotherOutput]) + + m = Machination() + self.assertEqual(m.anInput(), ["an-output-value"]) + self.assertEqual(m.anInput(), ["another-output-value"]) + + + def test_machineItselfIsPrivate(self): + """ + L{MethodicalMachine} is an implementation detail. If you attempt to + access it on an instance of your class, you will get an exception. + However, since tools may need to access it for the purposes of, for + example, visualization, you may access it on the class itself. + """ + expectedMachine = MethodicalMachine() + class Machination(object): + machine = expectedMachine + machination = Machination() + with self.assertRaises(AttributeError) as cm: + machination.machine + self.assertIn("MethodicalMachine is an implementation detail", + str(cm.exception)) + self.assertIs(Machination.machine, expectedMachine) + + + def test_outputsArePrivate(self): + """ + One of the benefits of using a state machine is that your output method + implementations don't need to take invalid state transitions into + account - the methods simply won't be called. This property would be + broken if client code called output methods directly, so output methods + are not directly visible under their names. + """ + class Machination(object): + machine = MethodicalMachine() + counter = 0 + @machine.input() + def anInput(self): + "an input" + @machine.output() + def anOutput(self): + self.counter += 1 + @machine.state(initial=True) + def state(self): + "a machine state" + state.upon(anInput, enter=state, outputs=[anOutput]) + mach1 = Machination() + mach1.anInput() + self.assertEqual(mach1.counter, 1) + mach2 = Machination() + with self.assertRaises(AttributeError) as cm: + mach2.anOutput + self.assertEqual(mach2.counter, 0) + + self.assertIn( + "Machination.anOutput is a state-machine output method; to " + "produce this output, call an input method instead.", + str(cm.exception) + ) + + + def test_multipleMachines(self): + """ + Two machines may co-exist happily on the same instance; they don't + interfere with each other. + """ + class MultiMach(object): + a = MethodicalMachine() + b = MethodicalMachine() + + @a.input() + def inputA(self): + "input A" + @b.input() + def inputB(self): + "input B" + @a.state(initial=True) + def initialA(self): + "initial A" + @b.state(initial=True) + def initialB(self): + "initial B" + @a.output() + def outputA(self): + return "A" + @b.output() + def outputB(self): + return "B" + initialA.upon(inputA, initialA, [outputA]) + initialB.upon(inputB, initialB, [outputB]) + + mm = MultiMach() + self.assertEqual(mm.inputA(), ["A"]) + self.assertEqual(mm.inputB(), ["B"]) + + + def test_collectOutputs(self): + """ + Outputs can be combined with the "collector" argument to "upon". + """ + import operator + class Machine(object): + m = MethodicalMachine() + @m.input() + def input(self): + "an input" + @m.output() + def outputA(self): + return "A" + @m.output() + def outputB(self): + return "B" + @m.state(initial=True) + def state(self): + "a state" + state.upon(input, state, [outputA, outputB], + collector=lambda x: reduce(operator.add, x)) + m = Machine() + self.assertEqual(m.input(), "AB") + + + def test_methodName(self): + """ + Input methods preserve their declared names. + """ + class Mech(object): + m = MethodicalMachine() + @m.input() + def declaredInputName(self): + "an input" + @m.state(initial=True) + def aState(self): + "state" + m = Mech() + with self.assertRaises(TypeError) as cm: + m.declaredInputName("too", "many", "arguments") + self.assertIn("declaredInputName", str(cm.exception)) + + + def test_inputWithArguments(self): + """ + If an input takes an argument, it will pass that along to its output. + """ + class Mechanism(object): + m = MethodicalMachine() + @m.input() + def input(self, x, y=1): + "an input" + @m.state(initial=True) + def state(self): + "a state" + @m.output() + def output(self, x, y=1): + self._x = x + return x + y + state.upon(input, state, [output]) + + m = Mechanism() + self.assertEqual(m.input(3), [4]) + self.assertEqual(m._x, 3) + + + def test_outputWithSubsetOfArguments(self): + """ + Inputs pass arguments that output will accept. + """ + class Mechanism(object): + m = MethodicalMachine() + @m.input() + def input(self, x, y=1): + "an input" + @m.state(initial=True) + def state(self): + "a state" + @m.output() + def outputX(self, x): + self._x = x + return x + @m.output() + def outputY(self, y): + self._y = y + return y + @m.output() + def outputNoArgs(self): + return None + state.upon(input, state, [outputX, outputY, outputNoArgs]) + + m = Mechanism() + + # Pass x as positional argument. + self.assertEqual(m.input(3), [3, 1, None]) + self.assertEqual(m._x, 3) + self.assertEqual(m._y, 1) + + # Pass x as key word argument. + self.assertEqual(m.input(x=4), [4, 1, None]) + self.assertEqual(m._x, 4) + self.assertEqual(m._y, 1) + + # Pass y as positional argument. + self.assertEqual(m.input(6, 3), [6, 3, None]) + self.assertEqual(m._x, 6) + self.assertEqual(m._y, 3) + + # Pass y as key word argument. + self.assertEqual(m.input(5, y=2), [5, 2, None]) + self.assertEqual(m._x, 5) + self.assertEqual(m._y, 2) + + + def test_inputFunctionsMustBeEmpty(self): + """ + The wrapped input function must have an empty body. + """ + # input functions are executed to assert that the signature matches, + # but their body must be empty + + _methodical._empty() # chase coverage + _methodical._docstring() + + class Mechanism(object): + m = MethodicalMachine() + with self.assertRaises(ValueError) as cm: + @m.input() + def input(self): + "an input" + list() # pragma: no cover + self.assertEqual(str(cm.exception), "function body must be empty") + + # all three of these cases should be valid. Functions/methods with + # docstrings produce slightly different bytecode than ones without. + + class MechanismWithDocstring(object): + m = MethodicalMachine() + @m.input() + def input(self): + "an input" + @m.state(initial=True) + def start(self): + "starting state" + start.upon(input, enter=start, outputs=[]) + MechanismWithDocstring().input() + + class MechanismWithPass(object): + m = MethodicalMachine() + @m.input() + def input(self): + pass + @m.state(initial=True) + def start(self): + "starting state" + start.upon(input, enter=start, outputs=[]) + MechanismWithPass().input() + + class MechanismWithDocstringAndPass(object): + m = MethodicalMachine() + @m.input() + def input(self): + "an input" + pass + @m.state(initial=True) + def start(self): + "starting state" + start.upon(input, enter=start, outputs=[]) + MechanismWithDocstringAndPass().input() + + class MechanismReturnsNone(object): + m = MethodicalMachine() + @m.input() + def input(self): + return None + @m.state(initial=True) + def start(self): + "starting state" + start.upon(input, enter=start, outputs=[]) + MechanismReturnsNone().input() + + class MechanismWithDocstringAndReturnsNone(object): + m = MethodicalMachine() + @m.input() + def input(self): + "an input" + return None + @m.state(initial=True) + def start(self): + "starting state" + start.upon(input, enter=start, outputs=[]) + MechanismWithDocstringAndReturnsNone().input() + + + def test_inputOutputMismatch(self): + """ + All the argument lists of the outputs for a given input must match; if + one does not the call to C{upon} will raise a C{TypeError}. + """ + class Mechanism(object): + m = MethodicalMachine() + @m.input() + def nameOfInput(self, a): + "an input" + @m.output() + def outputThatMatches(self, a): + "an output that matches" + @m.output() + def outputThatDoesntMatch(self, b): + "an output that doesn't match" + @m.state() + def state(self): + "a state" + with self.assertRaises(TypeError) as cm: + state.upon(nameOfInput, state, [outputThatMatches, + outputThatDoesntMatch]) + self.assertIn("nameOfInput", str(cm.exception)) + self.assertIn("outputThatDoesntMatch", str(cm.exception)) + + + def test_getArgNames(self): + """ + Type annotations should be included in the set of + """ + spec = ArgSpec( + args=('a', 'b'), + varargs=None, + varkw=None, + defaults=None, + kwonlyargs=(), + kwonlydefaults=None, + annotations=(('a', int), ('b', str)), + ) + self.assertEqual( + _getArgNames(spec), + {'a', 'b', ('a', int), ('b', str)}, + ) + + + def test_filterArgs(self): + """ + filterArgs() should not filter the `args` parameter + if outputSpec accepts `*args`. + """ + inputSpec = _getArgSpec(lambda *args, **kwargs: None) + outputSpec = _getArgSpec(lambda *args, **kwargs: None) + argsIn = () + argsOut, _ = _filterArgs(argsIn, {}, inputSpec, outputSpec) + self.assertIs(argsIn, argsOut) + + + def test_multipleInitialStatesFailure(self): + """ + A L{MethodicalMachine} can only have one initial state. + """ + + class WillFail(object): + m = MethodicalMachine() + + @m.state(initial=True) + def firstInitialState(self): + "The first initial state -- this is OK." + + with self.assertRaises(ValueError): + @m.state(initial=True) + def secondInitialState(self): + "The second initial state -- results in a ValueError." + + + def test_multipleTransitionsFailure(self): + """ + A L{MethodicalMachine} can only have one transition per start/event + pair. + """ + + class WillFail(object): + m = MethodicalMachine() + + @m.state(initial=True) + def start(self): + "We start here." + @m.state() + def end(self): + "Rainbows end." + + @m.input() + def event(self): + "An event." + start.upon(event, enter=end, outputs=[]) + with self.assertRaises(ValueError): + start.upon(event, enter=end, outputs=[]) + + + def test_badTransitionForCurrentState(self): + """ + Calling any input method that lacks a transition for the machine's + current state raises an informative L{NoTransition}. + """ + + class OnlyOnePath(object): + m = MethodicalMachine() + @m.state(initial=True) + def start(self): + "Start state." + @m.state() + def end(self): + "End state." + @m.input() + def advance(self): + "Move from start to end." + @m.input() + def deadEnd(self): + "A transition from nowhere to nowhere." + start.upon(advance, end, []) + + machine = OnlyOnePath() + with self.assertRaises(NoTransition) as cm: + machine.deadEnd() + self.assertIn("deadEnd", str(cm.exception)) + self.assertIn("start", str(cm.exception)) + machine.advance() + with self.assertRaises(NoTransition) as cm: + machine.deadEnd() + self.assertIn("deadEnd", str(cm.exception)) + self.assertIn("end", str(cm.exception)) + + + def test_saveState(self): + """ + L{MethodicalMachine.serializer} is a decorator that modifies its + decoratee's signature to take a "state" object as its first argument, + which is the "serialized" argument to the L{MethodicalMachine.state} + decorator. + """ + + class Mechanism(object): + m = MethodicalMachine() + def __init__(self): + self.value = 1 + @m.state(serialized="first-state", initial=True) + def first(self): + "First state." + @m.state(serialized="second-state") + def second(self): + "Second state." + @m.serializer() + def save(self, state): + return { + 'machine-state': state, + 'some-value': self.value, + } + + self.assertEqual( + Mechanism().save(), + { + "machine-state": "first-state", + "some-value": 1, + } + ) + + + def test_restoreState(self): + """ + L{MethodicalMachine.unserializer} decorates a function that becomes a + machine-state unserializer; its return value is mapped to the + C{serialized} parameter to C{state}, and the L{MethodicalMachine} + associated with that instance's state is updated to that state. + """ + + class Mechanism(object): + m = MethodicalMachine() + def __init__(self): + self.value = 1 + self.ranOutput = False + @m.state(serialized="first-state", initial=True) + def first(self): + "First state." + @m.state(serialized="second-state") + def second(self): + "Second state." + @m.input() + def input(self): + "an input" + @m.output() + def output(self): + self.value = 2 + self.ranOutput = True + return 1 + @m.output() + def output2(self): + return 2 + first.upon(input, second, [output], + collector=lambda x: list(x)[0]) + second.upon(input, second, [output2], + collector=lambda x: list(x)[0]) + @m.serializer() + def save(self, state): + return { + 'machine-state': state, + 'some-value': self.value, + } + + @m.unserializer() + def _restore(self, blob): + self.value = blob['some-value'] + return blob['machine-state'] + + @classmethod + def fromBlob(cls, blob): + self = cls() + self._restore(blob) + return self + + m1 = Mechanism() + m1.input() + blob = m1.save() + m2 = Mechanism.fromBlob(blob) + self.assertEqual(m2.ranOutput, False) + self.assertEqual(m2.input(), 2) + self.assertEqual( + m2.save(), + { + 'machine-state': 'second-state', + 'some-value': 2, + } + ) + + + +# FIXME: error for wrong types on any call to _oneTransition +# FIXME: better public API for .upon; maybe a context manager? +# FIXME: when transitions are defined, validate that we can always get to +# terminal? do we care about this? +# FIXME: implementation (and use-case/example) for passing args from in to out + +# FIXME: possibly these need some kind of support from core +# FIXME: wildcard state (in all states, when input X, emit Y and go to Z) +# FIXME: wildcard input (in state X, when any input, emit Y and go to Z) +# FIXME: combined wildcards (in any state for any input, emit Y go to Z) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/test_trace.py b/WebCrawler/venv/Lib/site-packages/automat/_test/test_trace.py new file mode 100644 index 0000000..6d7433b --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_test/test_trace.py @@ -0,0 +1,98 @@ +from unittest import TestCase +from .._methodical import MethodicalMachine + +class SampleObject(object): + mm = MethodicalMachine() + + @mm.state(initial=True) + def begin(self): + "initial state" + @mm.state() + def middle(self): + "middle state" + @mm.state() + def end(self): + "end state" + + @mm.input() + def go1(self): + "sample input" + @mm.input() + def go2(self): + "sample input" + @mm.input() + def back(self): + "sample input" + + @mm.output() + def out(self): + "sample output" + + setTrace = mm._setTrace + + begin.upon(go1, middle, [out]) + middle.upon(go2, end, [out]) + end.upon(back, middle, []) + middle.upon(back, begin, []) + +class TraceTests(TestCase): + def test_only_inputs(self): + traces = [] + def tracer(old_state, input, new_state): + traces.append((old_state, input, new_state)) + return None # "I only care about inputs, not outputs" + s = SampleObject() + s.setTrace(tracer) + + s.go1() + self.assertEqual(traces, [("begin", "go1", "middle"), + ]) + + s.go2() + self.assertEqual(traces, [("begin", "go1", "middle"), + ("middle", "go2", "end"), + ]) + s.setTrace(None) + s.back() + self.assertEqual(traces, [("begin", "go1", "middle"), + ("middle", "go2", "end"), + ]) + s.go2() + self.assertEqual(traces, [("begin", "go1", "middle"), + ("middle", "go2", "end"), + ]) + + def test_inputs_and_outputs(self): + traces = [] + def tracer(old_state, input, new_state): + traces.append((old_state, input, new_state, None)) + def trace_outputs(output): + traces.append((old_state, input, new_state, output)) + return trace_outputs # "I care about outputs too" + s = SampleObject() + s.setTrace(tracer) + + s.go1() + self.assertEqual(traces, [("begin", "go1", "middle", None), + ("begin", "go1", "middle", "out"), + ]) + + s.go2() + self.assertEqual(traces, [("begin", "go1", "middle", None), + ("begin", "go1", "middle", "out"), + ("middle", "go2", "end", None), + ("middle", "go2", "end", "out"), + ]) + s.setTrace(None) + s.back() + self.assertEqual(traces, [("begin", "go1", "middle", None), + ("begin", "go1", "middle", "out"), + ("middle", "go2", "end", None), + ("middle", "go2", "end", "out"), + ]) + s.go2() + self.assertEqual(traces, [("begin", "go1", "middle", None), + ("begin", "go1", "middle", "out"), + ("middle", "go2", "end", None), + ("middle", "go2", "end", "out"), + ]) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_test/test_visualize.py b/WebCrawler/venv/Lib/site-packages/automat/_test/test_visualize.py new file mode 100644 index 0000000..987eb3c --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_test/test_visualize.py @@ -0,0 +1,430 @@ +from __future__ import print_function +import functools + +import os +import subprocess +from unittest import TestCase, skipIf + +import attr + +from .._methodical import MethodicalMachine + +from .test_discover import isTwistedInstalled + + +def isGraphvizModuleInstalled(): + """ + Is the graphviz Python module installed? + """ + try: + __import__("graphviz") + except ImportError: + return False + else: + return True + + +def isGraphvizInstalled(): + """ + Are the graphviz tools installed? + """ + r, w = os.pipe() + os.close(w) + try: + return not subprocess.call("dot", stdin=r, shell=True) + finally: + os.close(r) + + + +def sampleMachine(): + """ + Create a sample L{MethodicalMachine} with some sample states. + """ + mm = MethodicalMachine() + class SampleObject(object): + @mm.state(initial=True) + def begin(self): + "initial state" + @mm.state() + def end(self): + "end state" + @mm.input() + def go(self): + "sample input" + @mm.output() + def out(self): + "sample output" + begin.upon(go, end, [out]) + so = SampleObject() + so.go() + return mm + + +@skipIf(not isGraphvizModuleInstalled(), "Graphviz module is not installed.") +class ElementMakerTests(TestCase): + """ + L{elementMaker} generates HTML representing the specified element. + """ + + def setUp(self): + from .._visualize import elementMaker + self.elementMaker = elementMaker + + def test_sortsAttrs(self): + """ + L{elementMaker} orders HTML attributes lexicographically. + """ + expected = r'

' + self.assertEqual(expected, + self.elementMaker("div", + b='2', + a='1', + c='3')) + + def test_quotesAttrs(self): + """ + L{elementMaker} quotes HTML attributes according to DOT's quoting rule. + + See U{http://www.graphviz.org/doc/info/lang.html}, footnote 1. + """ + expected = r'
' + self.assertEqual(expected, + self.elementMaker("div", + b='a " quote', + a=1, + c="a string")) + + def test_noAttrs(self): + """ + L{elementMaker} should render an element with no attributes. + """ + expected = r'
' + self.assertEqual(expected, self.elementMaker("div")) + + +@attr.s +class HTMLElement(object): + """Holds an HTML element, as created by elementMaker.""" + name = attr.ib() + children = attr.ib() + attributes = attr.ib() + + +def findElements(element, predicate): + """ + Recursively collect all elements in an L{HTMLElement} tree that + match the optional predicate. + """ + if predicate(element): + return [element] + elif isLeaf(element): + return [] + + return [result + for child in element.children + for result in findElements(child, predicate)] + + +def isLeaf(element): + """ + This HTML element is actually leaf node. + """ + return not isinstance(element, HTMLElement) + + +@skipIf(not isGraphvizModuleInstalled(), "Graphviz module is not installed.") +class TableMakerTests(TestCase): + """ + Tests that ensure L{tableMaker} generates HTML tables usable as + labels in DOT graphs. + + For more information, read the "HTML-Like Labels" section of + U{http://www.graphviz.org/doc/info/shapes.html}. + """ + + def fakeElementMaker(self, name, *children, **attributes): + return HTMLElement(name=name, children=children, attributes=attributes) + + def setUp(self): + from .._visualize import tableMaker + + self.inputLabel = "input label" + self.port = "the port" + self.tableMaker = functools.partial(tableMaker, + _E=self.fakeElementMaker) + + def test_inputLabelRow(self): + """ + The table returned by L{tableMaker} always contains the input + symbol label in its first row, and that row contains one cell + with a port attribute set to the provided port. + """ + + def hasPort(element): + return (not isLeaf(element) + and element.attributes.get("port") == self.port) + + for outputLabels in ([], ["an output label"]): + table = self.tableMaker(self.inputLabel, outputLabels, + port=self.port) + self.assertGreater(len(table.children), 0) + inputLabelRow = table.children[0] + + portCandidates = findElements(table, hasPort) + + self.assertEqual(len(portCandidates), 1) + self.assertEqual(portCandidates[0].name, "td") + self.assertEqual(findElements(inputLabelRow, isLeaf), + [self.inputLabel]) + + def test_noOutputLabels(self): + """ + L{tableMaker} does not add a colspan attribute to the input + label's cell or a second row if there no output labels. + """ + table = self.tableMaker("input label", (), port=self.port) + self.assertEqual(len(table.children), 1) + (inputLabelRow,) = table.children + self.assertNotIn("colspan", inputLabelRow.attributes) + + def test_withOutputLabels(self): + """ + L{tableMaker} adds a colspan attribute to the input label's cell + equal to the number of output labels and a second row that + contains the output labels. + """ + table = self.tableMaker(self.inputLabel, ("output label 1", + "output label 2"), + port=self.port) + + self.assertEqual(len(table.children), 2) + inputRow, outputRow = table.children + + def hasCorrectColspan(element): + return (not isLeaf(element) + and element.name == "td" + and element.attributes.get('colspan') == "2") + + self.assertEqual(len(findElements(inputRow, hasCorrectColspan)), + 1) + self.assertEqual(findElements(outputRow, isLeaf), ["output label 1", + "output label 2"]) + + +@skipIf(not isGraphvizModuleInstalled(), "Graphviz module is not installed.") +@skipIf(not isGraphvizInstalled(), "Graphviz tools are not installed.") +class IntegrationTests(TestCase): + """ + Tests which make sure Graphviz can understand the output produced by + Automat. + """ + + def test_validGraphviz(self): + """ + L{graphviz} emits valid graphviz data. + """ + p = subprocess.Popen("dot", stdin=subprocess.PIPE, + stdout=subprocess.PIPE) + out, err = p.communicate("".join(sampleMachine().asDigraph()) + .encode("utf-8")) + self.assertEqual(p.returncode, 0) + + +@skipIf(not isGraphvizModuleInstalled(), "Graphviz module is not installed.") +class SpotChecks(TestCase): + """ + Tests to make sure that the output contains salient features of the machine + being generated. + """ + + def test_containsMachineFeatures(self): + """ + The output of L{graphviz} should contain the names of the states, + inputs, outputs in the state machine. + """ + gvout = "".join(sampleMachine().asDigraph()) + self.assertIn("begin", gvout) + self.assertIn("end", gvout) + self.assertIn("go", gvout) + self.assertIn("out", gvout) + + +class RecordsDigraphActions(object): + """ + Records calls made to L{FakeDigraph}. + """ + + def __init__(self): + self.reset() + + def reset(self): + self.renderCalls = [] + self.saveCalls = [] + + +class FakeDigraph(object): + """ + A fake L{graphviz.Digraph}. Instantiate it with a + L{RecordsDigraphActions}. + """ + + def __init__(self, recorder): + self._recorder = recorder + + def render(self, **kwargs): + self._recorder.renderCalls.append(kwargs) + + def save(self, **kwargs): + self._recorder.saveCalls.append(kwargs) + + +class FakeMethodicalMachine(object): + """ + A fake L{MethodicalMachine}. Instantiate it with a L{FakeDigraph} + """ + + def __init__(self, digraph): + self._digraph = digraph + + def asDigraph(self): + return self._digraph + + +@skipIf(not isGraphvizModuleInstalled(), "Graphviz module is not installed.") +@skipIf(not isGraphvizInstalled(), "Graphviz tools are not installed.") +@skipIf(not isTwistedInstalled(), "Twisted is not installed.") +class VisualizeToolTests(TestCase): + + def setUp(self): + self.digraphRecorder = RecordsDigraphActions() + self.fakeDigraph = FakeDigraph(self.digraphRecorder) + + self.fakeProgname = 'tool-test' + self.fakeSysPath = ['ignored'] + self.collectedOutput = [] + self.fakeFQPN = 'fake.fqpn' + + def collectPrints(self, *args): + self.collectedOutput.append(' '.join(args)) + + def fakeFindMachines(self, fqpn): + yield fqpn, FakeMethodicalMachine(self.fakeDigraph) + + def tool(self, + progname=None, + argv=None, + syspath=None, + findMachines=None, + print=None): + from .._visualize import tool + return tool( + _progname=progname or self.fakeProgname, + _argv=argv or [self.fakeFQPN], + _syspath=syspath or self.fakeSysPath, + _findMachines=findMachines or self.fakeFindMachines, + _print=print or self.collectPrints) + + def test_checksCurrentDirectory(self): + """ + L{tool} adds '' to sys.path to ensure + L{automat._discover.findMachines} searches the current + directory. + """ + self.tool(argv=[self.fakeFQPN]) + self.assertEqual(self.fakeSysPath[0], '') + + def test_quietHidesOutput(self): + """ + Passing -q/--quiet hides all output. + """ + self.tool(argv=[self.fakeFQPN, '--quiet']) + self.assertFalse(self.collectedOutput) + self.tool(argv=[self.fakeFQPN, '-q']) + self.assertFalse(self.collectedOutput) + + def test_onlySaveDot(self): + """ + Passing an empty string for --image-directory/-i disables + rendering images. + """ + for arg in ('--image-directory', '-i'): + self.digraphRecorder.reset() + self.collectedOutput = [] + + self.tool(argv=[self.fakeFQPN, arg, '']) + self.assertFalse(any("image" in line + for line in self.collectedOutput)) + + self.assertEqual(len(self.digraphRecorder.saveCalls), 1) + (call,) = self.digraphRecorder.saveCalls + self.assertEqual("{}.dot".format(self.fakeFQPN), + call['filename']) + + self.assertFalse(self.digraphRecorder.renderCalls) + + def test_saveOnlyImage(self): + """ + Passing an empty string for --dot-directory/-d disables saving dot + files. + """ + for arg in ('--dot-directory', '-d'): + self.digraphRecorder.reset() + self.collectedOutput = [] + self.tool(argv=[self.fakeFQPN, arg, '']) + + self.assertFalse(any("dot" in line + for line in self.collectedOutput)) + + self.assertEqual(len(self.digraphRecorder.renderCalls), 1) + (call,) = self.digraphRecorder.renderCalls + self.assertEqual("{}.dot".format(self.fakeFQPN), + call['filename']) + self.assertTrue(call['cleanup']) + + self.assertFalse(self.digraphRecorder.saveCalls) + + def test_saveDotAndImagesInDifferentDirectories(self): + """ + Passing different directories to --image-directory and --dot-directory + writes images and dot files to those directories. + """ + imageDirectory = 'image' + dotDirectory = 'dot' + self.tool(argv=[self.fakeFQPN, + '--image-directory', imageDirectory, + '--dot-directory', dotDirectory]) + + self.assertTrue(any("image" in line + for line in self.collectedOutput)) + self.assertTrue(any("dot" in line + for line in self.collectedOutput)) + + self.assertEqual(len(self.digraphRecorder.renderCalls), 1) + (renderCall,) = self.digraphRecorder.renderCalls + self.assertEqual(renderCall["directory"], imageDirectory) + self.assertTrue(renderCall['cleanup']) + + self.assertEqual(len(self.digraphRecorder.saveCalls), 1) + (saveCall,) = self.digraphRecorder.saveCalls + self.assertEqual(saveCall["directory"], dotDirectory) + + def test_saveDotAndImagesInSameDirectory(self): + """ + Passing the same directory to --image-directory and --dot-directory + writes images and dot files to that one directory. + """ + directory = 'imagesAndDot' + self.tool(argv=[self.fakeFQPN, + '--image-directory', directory, + '--dot-directory', directory]) + + self.assertTrue(any("image and dot" in line + for line in self.collectedOutput)) + + self.assertEqual(len(self.digraphRecorder.renderCalls), 1) + (renderCall,) = self.digraphRecorder.renderCalls + self.assertEqual(renderCall["directory"], directory) + self.assertFalse(renderCall['cleanup']) + + self.assertFalse(len(self.digraphRecorder.saveCalls)) diff --git a/WebCrawler/venv/Lib/site-packages/automat/_visualize.py b/WebCrawler/venv/Lib/site-packages/automat/_visualize.py new file mode 100644 index 0000000..7a9c8c6 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/automat/_visualize.py @@ -0,0 +1,182 @@ +from __future__ import print_function +import argparse +import sys + +import graphviz + +from ._discover import findMachines + + +def _gvquote(s): + return '"{}"'.format(s.replace('"', r'\"')) + + +def _gvhtml(s): + return '<{}>'.format(s) + + +def elementMaker(name, *children, **attrs): + """ + Construct a string from the HTML element description. + """ + formattedAttrs = ' '.join('{}={}'.format(key, _gvquote(str(value))) + for key, value in sorted(attrs.items())) + formattedChildren = ''.join(children) + return u'<{name} {attrs}>{children}'.format( + name=name, + attrs=formattedAttrs, + children=formattedChildren) + + +def tableMaker(inputLabel, outputLabels, port, _E=elementMaker): + """ + Construct an HTML table to label a state transition. + """ + colspan = {} + if outputLabels: + colspan['colspan'] = str(len(outputLabels)) + + inputLabelCell = _E("td", + _E("font", + inputLabel, + face="menlo-italic"), + color="purple", + port=port, + **colspan) + + pointSize = {"point-size": "9"} + outputLabelCells = [_E("td", + _E("font", + outputLabel, + **pointSize), + color="pink") + for outputLabel in outputLabels] + + rows = [_E("tr", inputLabelCell)] + + if outputLabels: + rows.append(_E("tr", *outputLabelCells)) + + return _E("table", *rows) + + +def makeDigraph(automaton, inputAsString=repr, + outputAsString=repr, + stateAsString=repr): + """ + Produce a L{graphviz.Digraph} object from an automaton. + """ + digraph = graphviz.Digraph(graph_attr={'pack': 'true', + 'dpi': '100'}, + node_attr={'fontname': 'Menlo'}, + edge_attr={'fontname': 'Menlo'}) + + for state in automaton.states(): + if state is automaton.initialState: + stateShape = "bold" + fontName = "Menlo-Bold" + else: + stateShape = "" + fontName = "Menlo" + digraph.node(stateAsString(state), + fontame=fontName, + shape="ellipse", + style=stateShape, + color="blue") + for n, eachTransition in enumerate(automaton.allTransitions()): + inState, inputSymbol, outState, outputSymbols = eachTransition + thisTransition = "t{}".format(n) + inputLabel = inputAsString(inputSymbol) + + port = "tableport" + table = tableMaker(inputLabel, [outputAsString(outputSymbol) + for outputSymbol in outputSymbols], + port=port) + + digraph.node(thisTransition, + label=_gvhtml(table), margin="0.2", shape="none") + + digraph.edge(stateAsString(inState), + '{}:{}:w'.format(thisTransition, port), + arrowhead="none") + digraph.edge('{}:{}:e'.format(thisTransition, port), + stateAsString(outState)) + + return digraph + + +def tool(_progname=sys.argv[0], + _argv=sys.argv[1:], + _syspath=sys.path, + _findMachines=findMachines, + _print=print): + """ + Entry point for command line utility. + """ + + DESCRIPTION = """ + Visualize automat.MethodicalMachines as graphviz graphs. + """ + EPILOG = """ + You must have the graphviz tool suite installed. Please visit + http://www.graphviz.org for more information. + """ + if _syspath[0]: + _syspath.insert(0, '') + argumentParser = argparse.ArgumentParser( + prog=_progname, + description=DESCRIPTION, + epilog=EPILOG) + argumentParser.add_argument('fqpn', + help="A Fully Qualified Path name" + " representing where to find machines.") + argumentParser.add_argument('--quiet', '-q', + help="suppress output", + default=False, + action="store_true") + argumentParser.add_argument('--dot-directory', '-d', + help="Where to write out .dot files.", + default=".automat_visualize") + argumentParser.add_argument('--image-directory', '-i', + help="Where to write out image files.", + default=".automat_visualize") + argumentParser.add_argument('--image-type', '-t', + help="The image format.", + choices=graphviz.FORMATS, + default='png') + argumentParser.add_argument('--view', '-v', + help="View rendered graphs with" + " default image viewer", + default=False, + action="store_true") + args = argumentParser.parse_args(_argv) + + explicitlySaveDot = (args.dot_directory + and (not args.image_directory + or args.image_directory != args.dot_directory)) + if args.quiet: + def _print(*args): + pass + + for fqpn, machine in _findMachines(args.fqpn): + _print(fqpn, '...discovered') + + digraph = machine.asDigraph() + + if explicitlySaveDot: + digraph.save(filename="{}.dot".format(fqpn), + directory=args.dot_directory) + _print(fqpn, "...wrote dot into", args.dot_directory) + + if args.image_directory: + deleteDot = not args.dot_directory or explicitlySaveDot + digraph.format = args.image_type + digraph.render(filename="{}.dot".format(fqpn), + directory=args.image_directory, + view=args.view, + cleanup=deleteDot) + if deleteDot: + msg = "...wrote image into" + else: + msg = "...wrote image and dot into" + _print(fqpn, msg, args.image_directory) diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/INSTALLER b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/LICENSE b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/LICENSE new file mode 100644 index 0000000..29225ee --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/LICENSE @@ -0,0 +1,26 @@ + +Except when otherwise stated (look for LICENSE files in directories or +information at the beginning of each file) all software and +documentation is licensed as follows: + + The MIT License + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/METADATA b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/METADATA new file mode 100644 index 0000000..1bb2984 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/METADATA @@ -0,0 +1,37 @@ +Metadata-Version: 2.1 +Name: cffi +Version: 1.14.4 +Summary: Foreign Function Interface for Python calling C code. +Home-page: http://cffi.readthedocs.org +Author: Armin Rigo, Maciej Fijalkowski +Author-email: python-cffi@googlegroups.com +License: MIT +Platform: UNKNOWN +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.6 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.2 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: License :: OSI Approved :: MIT License +Requires-Dist: pycparser + + +CFFI +==== + +Foreign Function Interface for Python calling C code. +Please see the `Documentation `_. + +Contact +------- + +`Mailing list `_ + + diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/RECORD b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/RECORD new file mode 100644 index 0000000..01361d5 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/RECORD @@ -0,0 +1,44 @@ +_cffi_backend.cp39-win_amd64.pyd,sha256=PTrrIv2XqL0v7lNBLOQ0ZsdvIqH9kYt2mrali_hZ1aI,182784 +cffi-1.14.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +cffi-1.14.4.dist-info/LICENSE,sha256=esEZUOct9bRcUXFqeyLnuzSzJNZ_Bl4pOBUt1HLEgV8,1320 +cffi-1.14.4.dist-info/METADATA,sha256=7KLrKixzeTBGgSzYhkjTJqjRajLP1EkcN_xG_bVShL0,1191 +cffi-1.14.4.dist-info/RECORD,, +cffi-1.14.4.dist-info/WHEEL,sha256=2Kg4PzfJLrLEnxRV1e1jZf0TVEjxVcXZXjp8WtjE4tI,105 +cffi-1.14.4.dist-info/entry_points.txt,sha256=Q9f5C9IpjYxo0d2PK9eUcnkgxHc9pHWwjEMaANPKNCI,76 +cffi-1.14.4.dist-info/top_level.txt,sha256=rE7WR3rZfNKxWI9-jn6hsHCAl7MDkB-FmuQbxWjFehQ,19 +cffi/__init__.py,sha256=cZPh5zl2j5Zp7h2-a8VlqWYWQ1AJ3POlA0aBvDh9TL0,527 +cffi/__pycache__/__init__.cpython-39.pyc,, +cffi/__pycache__/api.cpython-39.pyc,, +cffi/__pycache__/backend_ctypes.cpython-39.pyc,, +cffi/__pycache__/cffi_opcode.cpython-39.pyc,, +cffi/__pycache__/commontypes.cpython-39.pyc,, +cffi/__pycache__/cparser.cpython-39.pyc,, +cffi/__pycache__/error.cpython-39.pyc,, +cffi/__pycache__/ffiplatform.cpython-39.pyc,, +cffi/__pycache__/lock.cpython-39.pyc,, +cffi/__pycache__/model.cpython-39.pyc,, +cffi/__pycache__/pkgconfig.cpython-39.pyc,, +cffi/__pycache__/recompiler.cpython-39.pyc,, +cffi/__pycache__/setuptools_ext.cpython-39.pyc,, +cffi/__pycache__/vengine_cpy.cpython-39.pyc,, +cffi/__pycache__/vengine_gen.cpython-39.pyc,, +cffi/__pycache__/verifier.cpython-39.pyc,, +cffi/_cffi_errors.h,sha256=INd0GxZQna8TTRYNOOr9_iFy0FZa84I_KH1qlmPgulQ,4003 +cffi/_cffi_include.h,sha256=H7cgdZR-POwmUFrIup4jOGzmje8YoQHhN99gVFg7w08,15185 +cffi/_embedding.h,sha256=jg_yr7a0FTaws4Q91B-6G134zgSe8LhoBt3-eN9dZj8,18108 +cffi/api.py,sha256=Xs_dAN5x1ehfnn_F9ZTdA3Ce0bmPrqeIOkO4Ya1tfbQ,43029 +cffi/backend_ctypes.py,sha256=BHN3q2giL2_Y8wMDST2CIcc_qoMrs65qV9Ob5JvxBZ4,43575 +cffi/cffi_opcode.py,sha256=57P2NHLZkuTWueZybu5iosWljb6ocQmUXzGrCplrnyE,5911 +cffi/commontypes.py,sha256=mEZD4g0qtadnv6O6CEXvMQaJ1K6SRbG5S1h4YvVZHOU,2769 +cffi/cparser.py,sha256=CwVk2V3ATYlCoywG6zN35w6UQ7zj2EWX68KjoJp2Mzk,45237 +cffi/error.py,sha256=Bka7fSV22aIglTQDPIDfpnxTc1aWZLMQdQOJY-h_PUA,908 +cffi/ffiplatform.py,sha256=qioydJeC63dEvrQ3ht5_BPmSs7wzzzuWnZAJtfhic7I,4173 +cffi/lock.py,sha256=vnbsel7392Ib8gGBifIfAfc7MHteSwd3nP725pvc25Q,777 +cffi/model.py,sha256=HRD0WEYHF2Vr6RjS-4wyncElrZxU2256zY0fbMkSKec,22385 +cffi/parse_c_type.h,sha256=fKYNqWNX5f9kZNNhbXcRLTOlpRGRhh8eCLyHmTXIZnQ,6157 +cffi/pkgconfig.py,sha256=9zDcDf0XKIJaxFHLg7e-W8-Xb8Yq5hdhqH7kLg-ugRo,4495 +cffi/recompiler.py,sha256=LmEalHqs90dgp5od-BiZizsu2M2WJV7S6ctNSxj3FsA,66149 +cffi/setuptools_ext.py,sha256=8y14TOlRAkgdczmwtPOahyFXJHNyIqhLjUHMYQmjOHs,9150 +cffi/vengine_cpy.py,sha256=ukugKCIsURxJzHxlxS265tGjQfPTFDbThwsqBrwKh-A,44396 +cffi/vengine_gen.py,sha256=mykUhLFJIcV6AyQ5cMJ3n_7dbqw0a9WEjXW0E-WfgiI,27359 +cffi/verifier.py,sha256=La8rdbEkvdvbqAHDzTk5lsNUvdkqB_GcFnO7wXI6Mgk,11513 diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/WHEEL b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/WHEEL new file mode 100644 index 0000000..358414f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.35.1) +Root-Is-Purelib: false +Tag: cp39-cp39-win_amd64 + diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/entry_points.txt b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/entry_points.txt new file mode 100644 index 0000000..eee7e0f --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[distutils.setup_keywords] +cffi_modules = cffi.setuptools_ext:cffi_modules + diff --git a/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/top_level.txt b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/top_level.txt new file mode 100644 index 0000000..f645779 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi-1.14.4.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_cffi_backend +cffi diff --git a/WebCrawler/venv/Lib/site-packages/cffi/__init__.py b/WebCrawler/venv/Lib/site-packages/cffi/__init__.py new file mode 100644 index 0000000..644dea7 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/cffi/__init__.py @@ -0,0 +1,14 @@ +__all__ = ['FFI', 'VerificationError', 'VerificationMissing', 'CDefError', + 'FFIError'] + +from .api import FFI +from .error import CDefError, FFIError, VerificationError, VerificationMissing +from .error import PkgConfigError + +__version__ = "1.14.4" +__version_info__ = (1, 14, 4) + +# The verifier module file names are based on the CRC32 of a string that +# contains the following version number. It may be older than __version__ +# if nothing is clearly incompatible. +__version_verifier_modules__ = "0.8.6" diff --git a/WebCrawler/venv/Lib/site-packages/cffi/__pycache__/__init__.cpython-39.pyc b/WebCrawler/venv/Lib/site-packages/cffi/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..238b3e1c014580911de2c6bd8814a6982b585c1f GIT binary patch literal 505 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' + return '' % el.tag + + def collect_diff(self, want, got, html, indent): + parts = [] + if not len(want) and not len(got): + parts.append(' '*indent) + parts.append(self.collect_diff_tag(want, got)) + if not self.html_empty_tag(got, html): + parts.append(self.collect_diff_text(want.text, got.text)) + parts.append(self.collect_diff_end_tag(want, got)) + parts.append(self.collect_diff_text(want.tail, got.tail)) + parts.append('\n') + return ''.join(parts) + parts.append(' '*indent) + parts.append(self.collect_diff_tag(want, got)) + parts.append('\n') + if strip(want.text) or strip(got.text): + parts.append(' '*indent) + parts.append(self.collect_diff_text(want.text, got.text)) + parts.append('\n') + want_children = list(want) + got_children = list(got) + while want_children or got_children: + if not want_children: + parts.append(self.format_doc(got_children.pop(0), html, indent+2, '+')) + continue + if not got_children: + parts.append(self.format_doc(want_children.pop(0), html, indent+2, '-')) + continue + parts.append(self.collect_diff( + want_children.pop(0), got_children.pop(0), html, indent+2)) + parts.append(' '*indent) + parts.append(self.collect_diff_end_tag(want, got)) + parts.append('\n') + if strip(want.tail) or strip(got.tail): + parts.append(' '*indent) + parts.append(self.collect_diff_text(want.tail, got.tail)) + parts.append('\n') + return ''.join(parts) + + def collect_diff_tag(self, want, got): + if not self.tag_compare(want.tag, got.tag): + tag = '%s (got: %s)' % (want.tag, got.tag) + else: + tag = got.tag + attrs = [] + any = want.tag == 'any' or 'any' in want.attrib + for name, value in sorted(got.attrib.items()): + if name not in want.attrib and not any: + attrs.append('+%s="%s"' % (name, self.format_text(value, False))) + else: + if name in want.attrib: + text = self.collect_diff_text(want.attrib[name], value, False) + else: + text = self.format_text(value, False) + attrs.append('%s="%s"' % (name, text)) + if not any: + for name, value in sorted(want.attrib.items()): + if name in got.attrib: + continue + attrs.append('-%s="%s"' % (name, self.format_text(value, False))) + if attrs: + tag = '<%s %s>' % (tag, ' '.join(attrs)) + else: + tag = '<%s>' % tag + return tag + + def collect_diff_end_tag(self, want, got): + if want.tag != got.tag: + tag = '%s (got: %s)' % (want.tag, got.tag) + else: + tag = got.tag + return '' % tag + + def collect_diff_text(self, want, got, strip=True): + if self.text_compare(want, got, strip): + if not got: + return '' + return self.format_text(got, strip) + text = '%s (got: %s)' % (want, got) + return self.format_text(text, strip) + +class LHTMLOutputChecker(LXMLOutputChecker): + def get_default_parser(self): + return html_fromstring + +def install(html=False): + """ + Install doctestcompare for all future doctests. + + If html is true, then by default the HTML parser will be used; + otherwise the XML parser is used. + """ + if html: + doctest.OutputChecker = LHTMLOutputChecker + else: + doctest.OutputChecker = LXMLOutputChecker + +def temp_install(html=False, del_module=None): + """ + Use this *inside* a doctest to enable this checker for this + doctest only. + + If html is true, then by default the HTML parser will be used; + otherwise the XML parser is used. + """ + if html: + Checker = LHTMLOutputChecker + else: + Checker = LXMLOutputChecker + frame = _find_doctest_frame() + dt_self = frame.f_locals['self'] + checker = Checker() + old_checker = dt_self._checker + dt_self._checker = checker + # The unfortunate thing is that there is a local variable 'check' + # in the function that runs the doctests, that is a bound method + # into the output checker. We have to update that. We can't + # modify the frame, so we have to modify the object in place. The + # only way to do this is to actually change the func_code + # attribute of the method. We change it, and then wait for + # __record_outcome to be run, which signals the end of the __run + # method, at which point we restore the previous check_output + # implementation. + if _IS_PYTHON_3: + check_func = frame.f_locals['check'].__func__ + checker_check_func = checker.check_output.__func__ + else: + check_func = frame.f_locals['check'].im_func + checker_check_func = checker.check_output.im_func + # Because we can't patch up func_globals, this is the only global + # in check_output that we care about: + doctest.etree = etree + _RestoreChecker(dt_self, old_checker, checker, + check_func, checker_check_func, + del_module) + +class _RestoreChecker(object): + def __init__(self, dt_self, old_checker, new_checker, check_func, clone_func, + del_module): + self.dt_self = dt_self + self.checker = old_checker + self.checker._temp_call_super_check_output = self.call_super + self.checker._temp_override_self = new_checker + self.check_func = check_func + self.clone_func = clone_func + self.del_module = del_module + self.install_clone() + self.install_dt_self() + def install_clone(self): + if _IS_PYTHON_3: + self.func_code = self.check_func.__code__ + self.func_globals = self.check_func.__globals__ + self.check_func.__code__ = self.clone_func.__code__ + else: + self.func_code = self.check_func.func_code + self.func_globals = self.check_func.func_globals + self.check_func.func_code = self.clone_func.func_code + def uninstall_clone(self): + if _IS_PYTHON_3: + self.check_func.__code__ = self.func_code + else: + self.check_func.func_code = self.func_code + def install_dt_self(self): + self.prev_func = self.dt_self._DocTestRunner__record_outcome + self.dt_self._DocTestRunner__record_outcome = self + def uninstall_dt_self(self): + self.dt_self._DocTestRunner__record_outcome = self.prev_func + def uninstall_module(self): + if self.del_module: + import sys + del sys.modules[self.del_module] + if '.' in self.del_module: + package, module = self.del_module.rsplit('.', 1) + package_mod = sys.modules[package] + delattr(package_mod, module) + def __call__(self, *args, **kw): + self.uninstall_clone() + self.uninstall_dt_self() + del self.checker._temp_override_self + del self.checker._temp_call_super_check_output + result = self.prev_func(*args, **kw) + self.uninstall_module() + return result + def call_super(self, *args, **kw): + self.uninstall_clone() + try: + return self.check_func(*args, **kw) + finally: + self.install_clone() + +def _find_doctest_frame(): + import sys + frame = sys._getframe(1) + while frame: + l = frame.f_locals + if 'BOOM' in l: + # Sign of doctest + return frame + frame = frame.f_back + raise LookupError( + "Could not find doctest (only use this function *inside* a doctest)") + +__test__ = { + 'basic': ''' + >>> temp_install() + >>> print """stuff""" + ... + >>> print """""" + + + + >>> print """blahblahblah""" # doctest: +NOPARSE_MARKUP, +ELLIPSIS + ...foo /> + '''} + +if __name__ == '__main__': + import doctest + doctest.testmod() + + diff --git a/WebCrawler/venv/Lib/site-packages/lxml/etree.cp39-win_amd64.pyd b/WebCrawler/venv/Lib/site-packages/lxml/etree.cp39-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..34cfdd2ff3a00de1d583575e6907b6420093b904 GIT binary patch literal 3859968 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

! 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 -nHiDKHQT z`_E?06tuWm^V=V`t@#ttLOv(co2a9Nm!Pbv++9_+@OV5r(5Dft64C0xDZ)RC(d`8D zR8b}2_!OJvNWNZOHveNyvwzKFb09dizJ1mMi+cr}I_my43I5E7|-M(?(o-*4mu zU@c-riLUvTQ9?M9#bRF9Vh-r8it->S3p+(0to`FNrI*`s7GM@DI&M4w_Uv-mC047w z;5n7Di9e+4w;`2v=*C(Q;9$=BP?arE0ROqkCOo4PY%O1FY>R8?W2zzRm;8d*YdT>> z3bvEfyKiLsoL;ffP~yXk=l+!t@_?n`TC3a+O7hs>9F~~QB5jf6!lQlVJH{FteLp~O zga=IXJ1)&>YzlPNlWTpk{0{KdH2+H&jJC(xYa&~dMHBt1zj>8Sc*U{<&MJ-A56Jbw zKxj^T5ojhB;K7sryK0((U1131&CTiGR1*qrS&6l5OI*aXy*0aneX`P?m2j@)dq|E} ziK@`Yt)YE;gMZA*W@NHyk$Dgn$afx#X_2e&y%ORx+6Dt{y?GmvT9}LOMJ{0y7M~4U zzB+GIZU@y;(9;^z&&i@dQ>gH*(jt}zY*w1r0Gv#VV`B%3po%VZj4*cy9h>87%Ba!DDYfjJzg5Xp8&qKhvkEKJ~2)`9})Q zPoB7*l7C=7LaAzr{3rXWw<*`$B3q-NP=tthF&fs*c=+nf9KJv^d~NU=7@OhY)Gt-< zID(06^_+lGx9jhz&DJtR9Gd07510Xz6^r>zAMQ!Tm=n1b8 z>|{Rr&gVOV`M`$tFpSGR124Q}!LMKx&EINi`UVfHLA>({NNx&#h+5$2G&NxOn>GFe z<8P_5vI!z7*s=Vez0ig7YTymrE)(@$;Ls`G;cMf`W|D;OxHVFahIMD1(jdwa7u;Nf zAxT+>7gw&R?`;F_53Zp7IF{Q;*Wila1TWd34L)Nhmj4O<>JI}$q<&bI>#>QP|6=z4 zc=W&93Et{;!DBq(cn*{w1mO1I4j+Z}Vo%OSfw*PFIG9rcsAFnr0_q5`TvzZ(_3k# zDG6cCp@-dEIe}tp{(Lzg=|I2lq*rxtPd1*N8rP;%7E<+ka-1^zKSck!V15cqiC;&0 z%Qpr)d%|W;Kw%l?N3aY7$NP1{l>4UQxDL7XK3P($fgEUAYkU@gxdn0VF>gP~^ZKo!`5HY9Kw#YJ@K zo?L$^wZ>Sv(*xQn(s>MS?(sl0<3}0qM;NB-$Uq_XQ&~T*(%|=zWUBA=>B{IppH!Yp z>v8;IF$TNSq7M8W1z{FUjsOl~@cfE@HYjN4y2zqux$qAigt8V?Ahjy~ zm0A@Uq!&s=QxotbSo?e~F>nF+k@I4BbO~^&5T>Nl)7-3NA3RFnQSuP60m%xRWc#~t zy(oR&B^x+m9?j00H{@5VY=o1QsZ9y)=aiGYB}1uff-nyfh#%N;G3?K^7ls26?#5(b zhV?!>Km{vtL1sR|G*OX~G4A2b!Qpj;+4`}@8%SArw7>f8K(A#WZym;Bg9Lr7ej|8< zEIPs)H1Sg(@9m%=*k|)yLl~Wd1U=9GNu)&yk(>b+=~s}<6F{^N6EWx8$|l?c>O}4@ z4jPths$Mt$Kl}o2Z;Ss0+;3K41pUS)R?$xX;e(@^)`M(!mc0;cN@!-ju`$sbPs6zb zC8A~aJndXo*SIZE05|d5%;2}-O>ptOu-uQSABbfV=m&WZdJe9}VgNAV+ON#F@J$NZ z+z`DWbPMsMUgM^@mlFoU!hNpzzg5LS{Ex1aUHV@1k z^0tBgC!SWm$THHFH_@9r-!mOSHQ>GU&&N!jY(P3*iOG^060;q4Cz5AGW);7 zlLQls2W-e%%q`B{G`A4wA&V+^)0}VX;5+vNK&iNV173&*VJznUd}Kcia@KY&a-As9P$j0usuQ6L+u)z*f4E*P z%P@fHNel)O!lfbv!w7LjWF4V}bJF`a=2z}a48hx6cryTdZeP4%*4Q++B)4g9XBmH} zT0pfv7pM$;zVV&%e{$td1rhA=M0(K=Grf8TtmGYLq5O7)fEN31$r>F;>|(W|E7)T+ zNoz~cU2sMuhwlhYz`1aCnjj?JVu5tF1J{R~r&3D{!fG&m$u|hvrofkT`{8DZ1>ApP z4BfcCv*5W2!`L0!p4f&ce;)|}f4o;5O@VL1*ehXB`!PXm9pGV^!5{@w&bz>y9>%xtC^fZ@` zpWQb4qxdw|Vb>U``=h=CquCNEhIL*SIVt<(Bk@IR-YSoK{%Ltl`qXVv4^`>9zV=^v zkncT$g%hpSInr{pXov*QbtgW9+&ft=VYQ zy7lNhS4_`|GBT5g{W-vl!)T!5+-H34<6SLE6{;F|$8df?^-Yo?Auc20NDoJ`hd6j0 zt4G6(HNvbRR_MlYPd5w)c}U6FOJxl9Q#n+>C9@h=5ypi<#1|1)qG2gG)nMbgAvOD_ zdclWrKw*iEt}eA&GOXNh>CwU4RBEiS4vDrrOiCtkSSk^3v=-`_6n`{7lM=PsB%DB6 zfQ@Or)uHeuaE{jy5D{NaOW{j8=BPBvEE1Rr*8GkgPqg<(qYUVVBprZAhvu&i#Ggtv zVb&yJNHQ}rR|@J6KP1x=ELA{$c~a}Y=-_u0(ag0$4AouZcC1T4RLS$-3;vIspWR{U~!RV%TT`|$gzF+}0p02^P7e7~^Fco%${?9WMq z$(UOCF+gr{{D|gn)FGe_{);wpX~tR*UFa31Sz-_9{GmYr;UsxL6Qm7+p+=OIh2yz% z`uPomHR@9#IPA8T`opT>fq6(m{l$9N%$@s{5#Ea&+;7yKTvdSV*&2+#O1eLPdV1!f zl08}S$^B~nPFFbmDWI-uvSO6r!#=cs2*oS zgj1H3p0tIO4kwE$UV&N7WTv%M^%z34^cdgPv_@lDjACQnm(lYy#(Qq|tvB*FBF#imT{4*XzhP?oN$%TE-U)9_ks|Kat z$+=-JYi<}!&y6fnKthU7HPqU5FZf>E+`5F<0wHw`_SKC)u0$iN zIB(_#D4O)>66O@n=wB>>ix5+|(5pTL(_#Fcxjh&a^-q}4Vi*mWAD&HGVAdJm!ubRa z-&^oaR|hBuivlS^Mb3+erZ~X(JzKy%Jf7%p(P(Y3gLU;;wG9m>OFmi-xJp!DsyFIv zcIQ)|ov1L}`Bi!IC&%(b=#N?{v2O2FNSW1{GRGkw$r&VV(hw{r(Ux^{?;Z2w61i#ycI~=z7KQaT}g7-w)4A>g&yXM}rWVAlxwL~9|b{D>_(c;ja9_=PX z8y#caqWaV~0QMFKKj^84k25jK+agMrx5QR<0j*fIL`j$|ISN7K2pPgA!` zU{33qJXx-b9?TEv;Z?*bAXTexYFw_+ydQ*p=^ru(b9(_1Cd_OEPoY`}r{3;V1HS_A^EN^WuNGQ2BY zl8U3);D`;mPH^K1$I@If<;k^@k@CR}Xs!A!UGr`u%bMae4xsm9eAWt)iY3aqgiTMT zjQxC%QH&GI_)xV|H`WKcWXn_5hFs3TcQ_c~Sft}v6xs(?-Vv<&e(guWy`J*7e7Ie@ zPS0yGx8U(YOF4BWLAJ##ye*@h%FtB^lUIVw1wN}g)&X?&z{O6JZ|YnAsgM%94SoNE zyrv@pt_pH$7VY=(M6}W5tr#5(Rmoo=?+Mk|Y{Bm{v^(0KdM(Aki0RF_&|-LK07=0H zp47zb(PGApU$7cH^OJm(dZD5P@o+M&9nw5&lJ6&zl$b+nGpA>0f1lY!IJ|qb`?qL| zk|Zuf`gk+`%9(x_&-7=+^xW#L+V6KF7D}Z_ovGVsQRh1?vI((}nymALclBYsXYHWxSEcIS8``%^-A#z;d8~ilA?v?F#d zhVE><)UrMNFO6-k{TG|;_!e^@fX|L^HSD(`&rB$?`^+AS0lup(qBE>j5Zc?~pW{!% z{v_;>W_5}E&gM)e8}|L&2ZLV16Q|0v4j};owR&3QV|>Q+e0Fp@f`B0akp+jfh!p6s zpK0h&M2lE&=REc;1vA?AX)mDn?b~*~CDr*u45Wwy8O(vqI4{xP>U_`a&d=(EFB^w~ zCy8vcD_4;eV_Wv;ZHjfvG2mZft9Fx(s0OM6nhGQ#X~E)vZe;R$h-N?kVMhWIQ!B#S zbCv#7YkU#V!_us|0%zN~IYR=yYkXFyTg@CRR8TV^cpOtfd}3$h3O+;D7W2GX(_@w+ z6u&66ug7dVS9`p&$(5_!)m0V1{*G6_B0nm@k>{yMbZpM(y8 zU}%vc2#~PZ)*~TTyNPBBin_#WhG>ya@+k_I!MLKcwx)x&_-8`APY8dJ^Dynb<5?GQ6oI2aI$3^jMNNm<-yoDLp|~Din`bri zB+#N}Nbp^dUqI}zm8&T+?F7f{N0E(^#p_YFvMIEG2&XfpuLj#~F*@82T$G97?E#F= zoZpd~h-^6KHf%N6j9@P$-!PRMnvc|G*`|;g(5A>Gi~D=?O(=`UipMA1ZOjRl_*7AB z10d5rV|%=&L#{2mgtcF!uYp)Li%v)n#u}}D5h_+D&D(L@Qk;y|$O}_cRUBz7=3xSd zP5jl3#dmW4qhbDt7lX~_Q|Gc2=rA-O?{Z&-P-L^Y?-n~^Y0VoLOSa=tzVu$Tx)|l4 zWkm-4&&<%Ohb7Jyyp~oRSLjjsOibZ6^E~T7h1i9+z+crL$!E2geSXi)C*eV@{H$+V z@fLH>J#8y4WX0{RilwGHsY!MsHwgg_`7`bReNGKg0O3)=Vo31bixv@&iGg+8~Vlf$s2U@g!kpo z?*tPN?!Q;e&jnk!*Mr{uZGi$HAm5cFa!Lv^yr(%C$~@doFt3myiK$yJp!LzP>VtvA zHwK}x)m)9|04kf}_X1~{LuL4jX}1}nw7hAPzV>6t%pSO%$F0R8KtgMM6?gGBtCCrK zQvm%L8Y7hAXA%LiqeD&!vpqNQ&=_hyQ-Q;EwaNR{o8eCv6|Q1q$r4@aZb$sF>OIG* zx3^XAyEjR_-yu64cCZ))lGjfuv^A{Wfet^lX7`7>(JpwtY}_v+Bt1fNUP{&-GO|6^ja`!SA)OC`>lnrz4J%^#>JWF!o~UcT>yP_ zF(Z(~Nr>aXk)jP^mycre{LyI;OTvr==cd!0X5?~C7{Xi3m*D=gF7m0?xBwud#nv3% zILAf4be3)ukRDzO(T~&o&r}u}=Nb#&X~y444~+Aidii&~hAra?*a;m%61ybZj ztc3)Y#b)z6QXX|@T#E#-OR!}K$5G=}(-k2KCXVz*|F)FF04?k2q0)SdIb=Dr;5w^v^LjT3W zKAqnY!@PJcv5pQ=-i`{~+}TPQxb03ar{!UVhnSm;JEkt^LNjwPqh!fKA=5 zL>2c~`Hw_K<~N$7QfXF0>g*O?!kGjerr;t&2M^rus5$c(aqGS%?Rd5a+k>S1fg^=N z`CIeu9tdHIx}Y^oks?GV-UM)iQodttHJ^PUR}u|;x0sK#W7#C{fq~x5!Iq7j*x9x* zG4WUStHrEc2${+}=tGVQuYMX(u>nV*T!Bs!E1;u!)~&b@jD!EYVjU*PNJb&(6@TS) zY3V20;$wxc?f3#GvWW_FZK)bq6H}ghUh@1_>?B0x1 z4GEl*$VJ0bkShVMW(5P#-Z`T)A-tYhA6-HCBfgYBs2sOD#5#7X`9ht8oF-Zu<4l&g zZzel6z6^z&ZS&on$yWyZN6B|9w*q7>W7gj3DyOQfMOfF&kSzH!##(Q!SACE|Z3>)_ zDZo6*l2xj}1XV!FwJDI3DZo6*lBH4r3QAEtM^{Km;EUaCw+s@n*qG_)W^r?Eg}^Ji zq7jG_ojEMJLRoySaG;jvT0#eO%!xT=2=KyPOhhch2P2|0ry;Ha!RU$*zgNtW^riUA zbR<54U;I3PDxxdi#9y;csF9%rlA8ixo=QHrslsMn(29;lS4g~K)rsJp!0Okk6p=_7 zhSZ4tsDjCMb6{zKExg)~nr$#|jv172m>0bO)CZ+&b0TnOyZRun2N`RfVfu}KS=?)9 zO4v~QiCXwL2NM}d>4a=*1`*^`}^jcKuL0IbNFe@7UwZ+@PL?;XcxVe zQOJ-V=pNpa-yB|!Pa=uRk=|wY(t+Gym z9R4D;F$vG|MF;&d!(N0s=C*v^^QT#3zPY?n-IzQp1^g_pkQIghYSzrvCh`Y-0cBNdLS94q18p0dUZ5UK**V zEgU{{I@N(+B!UOj#1=gZmcZLH!0`e&x$JbqYivDB0D0hic29LGGoO4#7A$kP^%`x- z?Wi5s-d>3Rl+^Ep9-uMj%_H-0SLvn(vqzrIm$xbTF(&oizPOHeJ+dOan&C@Tcq_x_ zsqjvQ$Exs040}}g8-`C*;UvSys&Ge4WxSUPAHguaiK6~;hV3dmn&Ewz0>n>bc()4Q z$neK1d@IAana4aYGE5Z_!YvHHqQZL^eny2m0zu;ss_-!k-=)H17^W5$Wv^qnL50H% z2UU0p!&DI=&z~5+K!smr_zV?pVVGuC$nzeyAfi4+7cefRfFg8 z{;Z_M>@#nN&J%0qkc5YXp#ETLaNx2c&3POQXX4^C&B-+I5;}O;1`bcz4%NnJGPVB$ zy@B1(;_i92zn13N9>>3n5xy4xZot1=@b549_Za?tbwr-+e5AjC@H+fkg78B8`vBoz z@b5qPSAaa-@$XFhyAuCq;osf(_bmRc!M}I$?_cq5!V~v8}M%{ z{_Vg&o6D7xo0o5QrT%Nz-qFET(6P|^F6!jcwBpYA>eAKK%~jIn_cp$y(c`&`? z!blPFG`dZ=#X>jkfficxrV73gO%kY#LXE@8(jR@Uwr)_q}@-s>s_A@wZBz+HnCmaqj_h~%qR@FNKL$a(c z`{Do_#jcjNy3AJ(mePq`c;N|>BTwC`pN?G<0?e;AILV7+iW1;yx#c3zws0PQtTh2tqAK= z*ZE?Fw14zh;pQKbpp_|B_K#2(la_0^UPXgFBY%?@*GuC3yc1v9mle^XoF8682QB&F ze31`UCYu|CTZJSlJlCDm+>qkk7M>>3!W$uTeJ@e*DrfD?p>DUo5#MoJ6sz8;pb z^V~T%z94`Eqjw6R=_Uj_VG>J|+k}IU&T-3ctSBBMY0xpr7TlwBPm>Opi6v?ZjPA3k zJXDTtAWr(UE~O;)7(bD>=5<0qT%<{pCgVaP^o{k9$8cK3Hm)Zx!@VHy3?Suz+~K7Z z6+jru8~%`&K)vfAs|s<+<8vuAD%YbE<&d< zr^Rdsm_YFH1gBOhT)bd;aL4e7RBoO;c1@RDi;=4iCmra7M6KFmF|7TfmpPh84MU2p zd6bJk0z7zs(4*r3E#7yKuoK60Cul7SxSPXn*Pe_(Kns+m3pUWDzr48}@+91b4@H{VT5K1ev>77bktPE#${JJEWX zUj7D@{`vFAjm z@yF~ppabYKx-y+znfau^fFlZctLBvkPQYv5I225oz*FJ?-58C#%$Ez=l|q-3x}Sv% zZa9~K9J49-4ToZ0c|#7MH5C=9c_UcPxsLNG$G<5`s+EmXvXHGmpiX7s5wCo9A{O*K z^Q&bYY~c}4$=4<3^s_qP{gm$bb6HmiPGUvZ-AdBrfO_R@Mub66+Cw9^1BBoFWI_($ zI|-qxX}Ne0^f(l|ZV^6T!ZXw6gO56FX2oE{88_$Kn(aO`Ay`1)4~{>uGUZBC&ex(( zvrMfq|HcPegf4bsBkv8j_RtoulknT&))QuT(^vg?Djw=P749f_`(_cm4Uo2u2=&CrHL*qCe#C;qW*6&Xre(90O1(4A zj4fJ*q!E44=~;ELMYg}=V-HxES+3ZkddC(O=i&oaD7IOh zkpex#h-9(|c3=Zh%}N=+9Mmy6lh-%=NQf*rvEfIO^T4UGk&$q#chEhl`h^PtfHM_wcEn2FmS2|z!F?{@2EyTzlDux5f|cPwW*oN zbE0py)J)KOrK)Fs8A^s#$tSFmzhF)f`)3t<2V#xZL_x!kFQNvwc3U%UAV)qB)1Nlt zB+Fk#TikdHWnknLZmr^kquE;g%Tp8n7}CN&4%Zs*W2QxJq=Z{fQu%Jg$Bh==V0Kc7 z(Vp`a#DoJe!mUNKuFS@f3sN|eGwc5|PCS4fsA-iQ*P4O~3mt}A=x~CC4ugme11xmt zl~oQvHQyIZ@L*X16CO|D0W^%qX5+yT79MD6JeZY_JQ+;5mcaUPvetO11OUWI2&gS5 z#p1Z-bvdv&mEVi8(>~d-KL-f0o58{j0b}GOAaI}qt?44v=IB*3>b1x^hOoQo=1RCM zuc`?2GLxM^2yiL#7_9@W!bjnBSn>qiTVoSTb~TTlO4_{x;xf`cCn)MPq{ZrU%vRbd zVIk4TRW?tmL~G-)wk!rnz!PpaGylnYtqnxq{3uU(R(%=5))0rjLS(T#V^^H1SU zH|O1|7oWrWq%Xt2i(Y*bs|2U+D-Y$kvP^9Yp|7(db9^> zc0h?=aFus{7e*_hqJgMTFhKKjwBKU(pORz4b(js|)=L%+tNi{~JAW3QnFzmXNdWoe z6wFT0QI9j^DhL)QJ;ONcX15F7u_f}79;6{%MvEJ1Zav52xjHOdUd?O|+T)XMoB?pAcvHuUvu{ z+RPnuEmf3zL9evNpJ~(*yRAQ$m=9{pyveu~0{i?r5)-G_)i+S1r|%Uj^KvalM;qb& zMOq^{=h#RR25m6~=6H2Zi;)@OEb;v23BO`3-oKzBvfoEg!3p1JI|D_b`Mr})_(;HA z``|Yl@+;8+)htI?qeUJ-5mcZQ0i7~cbp*Mo-0f+OgwVo3{DYLPYZ3h;L*1%GBRE4K z^7969(*{`2A?nfg4S#@(^qGr46Zi)LIU0oGPa8D=>&-~Iuf}wi!ob86y{6Pt^&}OZ zS|rT=HAhlsy!cFfgP%%ML`TDZA&40!i}dhgEdTKS8m(~$=|CDjZ;+Za{3z${&YmA4 zJTXxv_!FsIbngT{w|Ew+A3%*bp2_;LqTn*$PX6%&6y}GdnQ!@|_ z1>zSn=AgnWvI@U*l~owtn+3&;JHD8DXR!Ae@D5CU$Td)Fbb{~T2X4_UEvzJns*#nM)GbPM zWezY!ZtI*=kGb(K#j`Q|BX7N$cX)Ep-5B%G$Pc*7H6zgf4~7822>ear-hFId0am?+ zE%=fB!H%JQodWGJC(cBkYE@4*`;yI=$ytN_v0*Z;{_5|vMNpjpPhi&tTk7g7t(nPJ zgYg+(c|xb!f)A%wDz=YgNiXE`V(AJ>HLLERN4EG>bO-(ci_P^f5NQFyvBqV^{;926 zUAmA}x;p}XHf{i|ja}aRC|GYZ`2nz}xLuRWSr$t3d zV)=C_h!wb)_4713_*qzPY&DlXkClVts>2h$nMu&)Vkl=`fdOX?fk^C&jfRh$^?KfV z;+)GDyRiW4;5u0Yloh3Bz7xxG4ZJ6joOvnAa?P{hnJ2lhJ0>K*zbCnMX?~?I`5J0P z?2TWhfCu8NXfc|tCSn|onn)d&2xzCSlVdWP4~HhuK>_uOgEz zaUKXsx-G}jZp37|9WSgj|4xHjSzw1=FLZ#Gg4&MDtyb=nNP(I$whgyNs+G;H`ItVn zQHDug4djsAEZA9VD`?Bka)TO~AUm7cu+9V=yl_uRX0^@6r8UmRouK$B_ycZeOfk5j zGE~hvZZ^qCDzxIWb(_t>7hs$KJdDb*Sh~wdQZFt$@P+LJ&M3K)V?%!$KPkH^UQYB3 ze@$z=7Ll-H>#6q01%tx-9ScYE`ci?gb=v*gX1LIgj@kWahkhj7huSjUNuSF#+bsJ3 zd|b2GJoa`A%u*A$oVnTbUWtA;K*689aYhehyM)1k!(u}X5IrLcsK z4?%R*UEI2|RP16f7qdTX?`>(?k6|HeOXcnwv)_6HUu^7=A=dA-xuuwPC>cC&z{)yBC%$Mc!a0qw&@hWE8V8 zcWxVIV-lH-Ndyb;Q{WH40?8=<04y+*Jv>+@0W6QtvD>1PORMe`pcFJONpTr~y^`hw z1232?k6k_|T)8LN?2kSmJ4o{qGF@Z<{l>^L(4v0uB8o-r2SZ8v<2SzXRqvSL4!Uj2oSs$HM4u{*84No|MzZr(5>|3 z91FzyFMZT;MX7uP2QRvfg~dNC$?#S0OV4*`i%!Q{h_|3uGLCf!=&v9u>9*P69WaD% z+-K|P8UChvG$ORGW_AJS_hxMohZ5Qs(!%7h)F5!FHkj|~7+A=mY)lV@r`GFBgIIew zCzgAh`iKmmuY;*_dPL`j=xTA3Qsp~lm}nh6QOzQTc}#`k|QUmW3v-!#J5XIUc@D+aDa;#KFiBh>Ta z|9y}&I%VeCSv$jtG0yfbksx5jqO?U)JBf(ix#s7IgT-3aXRKJL=n|p74Rxg7j%!QFEZIMQNFj@PCIh|aqYHG!Qh_T=xVRV{1hr+= zqoiCZTJHv}cc+P$-R%7d$Jb(R_$vp4F3MFKJW6ICR!Z5N*Su*Lmi%y3VRnHza!Oqi zsv3d3TBHaG6h64kPa!yBP5-VyuBxkCff6wDp!doK?=tWfVB8ZB^!(f$Ce6jk)K>NQ zZ3qRbASNt9bF{h}@(7-Wguiai#C_`-4jw5R2+o!0)h|bg4klKAvDptoITY+>75w&L zDL4aBoh53k`LT-Xt{Y(p(`->-%LZQ*%0TotaWyi|S-@-eTg{a!BlbhdsOC63^Ql=~ zSdA{cbeT+ki}@GG7Nttum}0Hn;X4oAJc4uJz80pdwM-Xyb_ znLiP4STAM}=Rzo72^}9S)<1@gqF>o1M_pC2iKk{%$BgQjQ6?x~zx|yHiq4^c?93E-M8ioDoz?Anad8B{-O$t%# zw7TzDbNk~CMuh;%njcP4Sn&B!=(NBGau2NoNWempAdEF$mz%LI=GoLt8+*yZ5Ajqj zumz66H8)-9+p5;6^#VNTtiuB#uh>BUIf>3waiv7;Lo-O^tIF@MMLtLERjUP^#$aZ1 z;dWjJ*Z1Lrf)y^00ej;uW}he6>PBFq>0K+x)tfU52E&Q+RPz0~B#mI}z(}B~@q%)j z&0AGfGpwrq{y3_Nl{_f7MQBbtpBAx8 zsQq{?@*{YT&>RQyeT@+Pw!kUXMU%o|&>*x( z7@in+`(SZ}*9Aj8x}!Bk9&^u5&L{8@ZlwA6l_Fp8*=-+yOdwx$lQKa$!VkYTePVnK z3Yb3B6<$rUDB1u~UAH|xvCcfKkqo&zMQi*PTmzR03}SavQb^n;%?0BMds%TC410<2 zYDLZ%vMDCF^X~3V0tk{fyJ^R*MAT)Xt^ju6 zWS~cE)Gt)qbjE5#9Tu6o5JH?(w$5lFlXBZi^fHhgHzr1+7T- zFpo8R&(4L}CNiC!%9POXbqv3}R$Gsu6g_?D>e38Cpcx9iNky<_rB>xB!K1y^7fs@$ zrS=C{#rakhmrKJf=11q#FI1Z)*OuB?_cO&lz&eboYmGrzQ2B5e^*HIurW^)1BfiDl zEG*|SfSx|&b3sq@o+%^}Sf6?4elhB;w;O5v!&e$Nv1i)cTd8f0H{4oR{n(|0f z)(o}hnA%%o!tX(2`Xd`5N1cVJLVsH_5%G05@YWmoO?6br)~0bUGa8f#{!F0 z(G=fVxH9=|o$>E*YuUoWlC|y+$GT!a+XcTe#J0 zMHn5&-RKj5P*$`*+Mb3;QBoda zmfXpjl!q9ogAFd^*u#GJa zKB&dN>kdrj_k2!hi`fi^TI`1{emU9)A{LVcV)d}-i%xU0YIDXgRyUqoH=HAvnq9yl zXV`RO$sAOWY>Gb4TZGXtzlqtV+k+kp~k4(($fv) z(l8oU7lxO}?O^4$&b;_|=^ACnNjwL&hW!Qe-SJW~-*EXsRcY{Y=>CoiUZl7P2y|22 z+SkbJx8%3fHqYU)2Xe{Zssue7<(tDH{ADO{Z6o*=uy8oyl3mGah`bY|!wb+umH!+@ z{6DnJ@?dhxVAn3fMIwo`YyW%}q>x(Ys2 z8XGg+?O?$rFf#=cv6=^1tR|*Yq7B$6W$_e-C-4uXwue#?6DI5i^hHkw%2ISP%3Jj+Q72I0t-7(4Z}*;y zg|$7<*I#u*ec-6@LOfnwqQ`#E6@nA3Iq|MsTVGKw`J)TVbYoTpY6-rSs@xx)TbjsY z-83@=@##yOVe@sY0F~t?Sxj*6Vqw4TG{RKW!3yzRCZq|8PILEUtbjw^8_7`4_+6m6Vz7mMAE4XC zUO^Qog4!I96KG}5sv+=91-DAV?Tj?sMiXud2YxHOeinE&dt#9cyjC3!UMGBgczE4B z`TsM#Ub*ns;dK!fR2IA_Mo@%FH>*=S9c)SgC}%3kb(c)J%9(~uP8)5FQ4 zz@@R#V#{|yIO$w4!8dgSU+~GyOgIU#KqJa1sh@{OBEcEVNdGr+wA+F-;9QoSi^9aB zEJU3Bh$o!9AXrdWy(ef#je$F{(c7zEpMOHb&$MxYDkkl`TWgGCFnPNn%hIR51HW%R zOOgB~#|Rsimjx?wf`#a-C%M79w5B4_**A3yE&21dn8#HCP4f0y0&P4?2;?Rj)fqn{ zj)3wSdl0t^Ay4?H6BeHI>vEEv7-)JM{UB8=0=S$eHV;zz=#I-COk=86Nf0$iKZ#tJh=~wHIpfj@WwC*TJf9#=oJT3++25U=Qs( zI(W2|0bZT(UPm|a$2oj$;4CYe?~g&cm@OV1iuPZ+K!&}=yzdz7iD?l?$I)CzliGMS zf=oOm>~_1V1J4?7`;3jA@@?iFckm1Vr@v#^L1+Tm!%Z0RmKh1Wz!F@_dY{pan;*dn z!b!&bY#S_#ql@{OSe7loOM(2J=?&Sl@tU%O*|i} zhWXsUytevgD%3`XYMeIXG*_UHdX6XEo;CN$wUQ&a7mtHTZNa0F#mlabc45kr?(Fu^ ztH9@p2Wl<|9_6ad2^NIr<$^N)EOTdNcO@c(t?^Cy^-h@Z-24LJghLa_?w<)Gwc`9$ z;)f(~o!_{g2Au7Hyi*nOzCQDOs?R_aAQZz>0WjDyKfH_U0QCeQx08}wvUNyGoYZy= zpYBjaWDPH&J}B%;29Ii{$J=D0D~sWF7-Xu3Z0Hf zVlJlRXaPxd0_~0%YzvyW5Q$_9frz(y+&N;V@i3n_GEJ-`> z#o;7@!^UAPXIO8B$)e@VQn0(x*`-x4%Hb!=M8ra79g`RDD~jUL#L(%2p~Vt`!!4&4 zZ&c6`%1^)++?wRxpjS0;O$V-5PjCUdbb7zrYMv&vnK*fL1}C+~wNg}&3mJi5@uv`T z2qaahIO5Hf#jhwjo_Gy| z23?eMJ-AuIP!2{<^snGS=!xUG{fAqzRvtkTsN}zP0YPFzYR~QkqGt;y2g3J^@Mv1> zRpbDlrZv*tzv9)j#l%bSYg()s0UQu7(WgT3PhVPE_)CyN@6wm^mm|qvRUOd1imMHt zO0t6PFhQoW#awi|qAht^<16S{W-eir4VEA)Hzt!0F4m*+RL^#zL^$ctZl=~Kob015 zIRUAbfm^G#i1%vZeGqjh_ONpnd#Ej`0v>`xgf%nzhBGKuuI_ZZ=H_UTzal0y7qm7) zDkG+m9g*7_6yzvMyb)MHh=-5`rx>cRc#Nmk4aa!?;26)JDg1*w2ROd)56t!tIKE`B zEGAkB!jlCRhD+g0>@1f-!!nS0dd12UEqeJM1eO61=B0vG(Y~KBkH?H zJnn$)CaIH+2hYHo3x4Wod()iFzit1c{M$h}R57;@NWv9Au6!!N*uoN?c#K~>#`hlM zD;}Kj9${!dZU>CRdWHN1#!|#lNbcuo5iwU5g?1jL^e}J{%>#Z9qK{vDe*=BI=~eD9 zDIH<8)_4U*uP%ahTX+)sq8ak6B&t8sy=btz71a99c#bH4>xa148)Dx8vE>` z@GspKsJKTHUFdG#KD&x>!zAA(yx)NN%WG`_n!~r)=so85IC8PpBsM+Vr>LsdA`_4p ze;IJ0h!9U)#Om9beO^QyefJ3XsCQQ2vm>MgM~7BEWo;@i*Zu~eoxA1$pg|N(6HD-` z{~PE!p`tYCO3=%LKvxA|#7^HIEBt+|M#ngfW(z8#UdO{YA3}(A09@t~E)QS{VB!uC zIEmljn7zl2lmJCkIBf(@W5;C+P-tWTffIjl+X}o8|A1nH7vdjK>;tTbSz(G7VxrTW zKbCZQCg}8v1L-tyK83X*S9P$n$WSoHg57%3?NpoF%x>7vW}mc@Z-r?0x6T|Ke+R7` zf+Ec568k;nN9x51^~541x{-&F-Dr-l#Lqz>;Z+DQg#+J9fyBXxHXs>3_WubatgtOe zu7C`bAUPN!iilnRQ5F%qXD}TWWXWWUea2O#kjp}GJ+F+i*|r8YVvjxk>})TjFwd(q z_JIUVha*xEiPIY?z9Ef%-}ugJd^2h_R>VdY5ZLExC3RB=2cLSb;{0<_deOyGw70ToK`B0aS^c|+(oB; zX9zyc1z3IHhl3DugJ#A`u15-eWy@ytQT7fb&JLK)S8te^TfWx|gJFlq_}OcGRgU$8HO7&oe4}dIreG&w;D0i3m*9jT5Kzt#yBUy6c~-qvVg~2VONuYgPa(j&UNbLa{-hs=3U+B-9lS>hs@V_OcShF$2no! zVxEHTNaM!O)=)55K%fUhOVnX^p%j0iA}{ z7-kIS2R`P@amfk_r@SqJ>+y8#HF(yNgKKRUJjOqD-Am*olO=0wFiDux(-RZg0)qG1 zy+)Y)6kZRq2i}CBJJ5_^ZeT6k90XoQFfU-opJ3Nabu(0TX?G?CA7tSypRKVl4=+8* z`JZOzICOI`Hx|LnsuX5cB8V-^2x5ah!Q8C+0CWN6Q9+A23@ePkg{yE~M3h%l`dN#V zuI3=n8snS#Is~l#yj}5oz?31o(uHAIN%QTM*n04CD9o*F<_lZ7kL)l%j&_@IU1|As&O9?UnaM!6 zaBHW4mSzO(W_OrCD>~6B*cI-Dv(xtfEtQ5lua=z`j411;QH$3OljBHkS2B0PiC#5f zF5Q%9XM{rndr+$bX{O$v0@?6nWqLBIFL7G(5d+ZA62z1T(xiL496Ms?_1V7>wa1KTE#jTa^T}ZgYa~f}pBD zMSYgYqpgri-Kg2#udhXgx>=H(2D)#U{2D=$HcKUM=X zKG?r4uYmMI44Jh?CBFDRG5EAt;Ym97NMCjHj6Qg)=n{V(CU-Lo_mU;ES%6ZKM*%yQ zgv1m6tcD7vpXoH8`mv+UpZC3IL;lbd-I~?r#!F1fL39b(4+jcAOotSE7Qz3&NCCA* zS|IK(%jk8Z>$gbsE?$Avkn;HOAGDsDb%JsZK^d&E1hGhbsa|rx_r~r3 z)El%Jz5?_Mw-s}kWu^5|z1#y%8O5Lq8e*;&f{PNj zpahK$rzqQcs372#70VGsq0ACQawy)aY07eO`1_!UYA4@nK1sqPYZfOq3@hyB5l+@E zeh<MyYk6pKgSf6Q&3sVM#iJ5FwwAjdFJYk0wGW#}N1)baMBQ3Sb9`1~&U~ zpkvm^;v*3Tg}>C(%a+`h_y^wu6)y+WXgn=b<^jFhjXMB%p-4U5Xt*bVA(r(7hhxJ$ zFLSX#q~|f-OqK-DkWyy`k5mlB4gJvP^j%DHk`v*T>m97|N~6p(QiB2&XJT279ut zCnYoNNQ8R|{BgN~&oO)G&0aQ3?L3rf=QAy}b1l`*r;OZ?e+qfT$Z~LyO4FQtrn~UbgRCv! zOk_~1aUw-du;a+3gHI7-wnP#3kW+9$tMo{$kURZ(t-j>z(1R0+Ao;;~SpsG>mcASj zO!7glH|sYj#@E405Gyx*JbFYrl34`51$%a(J*BK}F>gUH1$!dvKt`*C4Gx~A@bL^_ zdbY^^VD16$_xwn{mpsRRyNFPTUUQvG%fQ*5(rWy4G>HXx?b|@St?U%_;HAf=RPf#V zU@dM#yoJWsi0m6{hqCYV#qQP_vv~}F9Xp9vwXW##`KU8(N#5%*E-~KsAfXiv{Y<|i zv|~YNFHdRfFC2?#Px#M%6(+v^|S_yp6?}I09qpg7&e!yu|Y)o4!)I zfZAUQL7$tXIr#oj;&bzsee9pYACXAH4*f9*cpy@P@$v{z14txc$5knz zJlx6QonP1#pRGlxX@FfZY`aP%)DFhm9T8GOxL>s|KABwtXtb;@gj^E?!GlS~D)gvw zw>sC1=Lll;yUPcsyGOy{3z{4<4rKsXL-M9A9W$D;bG>lNaB%=4Gp z$Xm=$afgpxoHWQ`Gmm)<3>2J_j+1je@Mf_1>JJPsFIdNs&~NBovjJhRaXS25mt44+ zO32Z`C`Yop>5@#X<`n+MO4gzsCSXzFeAoJ0R?&t>*_-h$9yvxrevF5N)w_JlLi;WV zYA`^7l6(%8ejZ-3bkfmx=&EC|FDN!6=9Zt`qGKYJrDq9rC zxf64^-#VkLFtZhaWivm7>0!noG>i6g(9d8TrXO=sRi-r_2kcGFZn<7H&4I}cHDxCE z0feo|ZD`4!+=-H@)eQ4DR#FIVFive;Xg}7|`Ct$L_0d|SUP8H8S)(MBce)m-kx>4b zTI2)?*|Cbs5K^nC9VR=B+a461)Vi>MpT_X8#(9L5HJ)V#`MHp{7IV#a97SqRn5a%k z2N~L3iZ-xtp4pI^30YWK`!Vjjx&EJKf)%!%iL*|&<3c4x#PRn4>eQOM27=l2nw$QB zT65+=thp6{XO$}eD@`Rb!lcaMq$Jj4CPjNSJt_YNQOK;g4U(zV{EEM^l6%pLtT@=E ziG;`y(K$v;m|Et-S=gb(0~*qB9)*}Pv*zyQ9HflAZ@~u_R`vfO?oHsMs?Puagd`*) zFmXYnAViIdq7nr)F;Oxyz(f+nx?x4d;#xP985U&;P9jXNV{NtW3vN|wZC!D}C4ej% z6-zP_l{xE%%v;mb@$5+Wisk zf!w*Icd;a)hUY#lusG!0gZ?YXRfV~bd*kpl6A3B_wBV~u<3h7!VnB1QY0@Dvf?l`>|Kk z-29<|W*lHLdsW6S&Xn4~qGG%@w&R5nQ7kdr+?y|D4HwWSeRwG4yGDmM&4ohl-!!*i zWOQ)T+`>?Fx2Cy8!RUadxjm1Ciq0(#LPh76cvSSoHBixdYOOS1m-F?0(Vh8vzbInO zHuuH$Y`>NEK`J}G6!||wptjmQqs8tjv{dcIc+kv!Q?O!L>a*=IyP1P04Mf?ukk8sp zxS4JD*j_pN%aS( z`LfNu0*g8Qo^BQ<_gyiubyyC;z~0O2jY@&NronkzVpB9yeH9whMrl+kXzMSw374=^ z;}Vwjc7w;pBBzj_13qHajrfQa$%nURL-owk=nhn$WkstVs2O7$c5}rlZUJIac-PbW z(ajpgT4XQL5(&*a5WTkxn4OL8ElFg_e2$Nv+hq$NE6^>STrl8QBGr=7PN2soq z&^6icEL5d(qvI88f9!79sG{S`G?Lq*nikVHz(by3rSb$ryTfCO_2t@8|zmhs3f&Cd?A{;&ag zTR~HGZFCy0S|g%Uuy2|X{bke4g7c%NH_a?OFM0|M7GV~8d?wtcV#G}ytrUjyn@(viGG(;#*u5hyWEsV6;I%)|5I68V*L5;Z8w?uD}hVSSowzo zA>?HvOPpWp)Eam6*D(%6ag!4>+lwvj}R^EGe5 zr-g?cGjDMl;V*I6Is0h=e8`cP-r2@W?-!nZSC$~^12YwWtZ3rb=&5CfHbsB1hu8uO zw&VCNebPLnw|sCp~>_De-4RWO|UX znkx>)?-ZvJc1GisM^5r)ox-~GZn_^QLM#-O{X}~{&4%rkI+U3g_k>M!%XfNEzJq9A zXK@o1w4{Q8(0A=ah1Jm%(r*;J^>Gp>zYqzWc@_S2;Ntp9Zk6v~bQzgQ%Yu$*5C{*j zmMD&&Y-hL$eRHv3cqh5WTI{DNF&3xGKhENNOC7qQ9ndr7J8@ne_CoT`4^7ffFWwHO zUnW!%Vb5jp6+h4fKew_NFMa@KUjJZxoE3f+Jr`!*IHMOFEywM`!OK(#EnM48&!-2lZQ84b`p-L$I+PA;Q4!YB0ZE-tRq(J9@!* zHCWi725A;g@t&r^;&g-E`@LrwQcYEZoaDMTCLhhY4XFaYlU1?USJsk4NurYX_uQTp5q(`^)-Q8HJiNS+yMX1KzYrjGl^ z3n#=EPf%6AqAE``x@&_|Dh6sN&$dkb%-9lX_cS5+E4`LJ`~Jz)l|iz|8g8Pf77>(Z zhIYr}KDs+h@8*aXR_v91NRuVmk1|73h3UhHF+=;$p4R578#6S`>$N*5<;u-g-tL@) zUDdg$g0ZdY9KOiQC&3*#m|gxHqgmNHA;IRS_Q3ZRV=yiGh|S=Bk*S8On~*G_wS`;R9UJp_L{@k~X^gvki9kY?CKN2bsrG z84C-#uh(atjtk65ufTq7s0b5N+2C9yf+&no;rTTTXmA`Mj|L|u-yt)@%Q482}mU&ruvmkp2L%yG21kiF zw`{_76tW2e%`>_8a9g0|JZ`k{8l9Jn0VqCTuO&}Vp*|gFKCPS4sGDH+cf-B!!txqh zliY*brf=!&=d^-Jju{Qc*`ArU5ibR^^@*2kZ-L>6PqI*Tm8sNjG(|=kH2w4^twHw^ z+$=?_sa^b*mD9f*64ibRG@w;+i?1|L;I2O1{yxrWTIB&G9nRH)+nO%}&CrQF*?YFR zZ?as;<=m!ctSz#)6EgtryfS1(2+h%8OlE;U%&6aV&+2d6IhA_bPr_`}{jdx$IXb&z zyBh_9*D-LT>DUDjMKyS^*Rg?K$EKZ?=~$$f?bH!;N^nvcyY%clUqV3M=Il*T$EKh@ z`V}%?;kTJ215s;QM+wBu-X9Zf8^LaOw&!TdkT61jp|Ln>O-Ru0y z|4ilWw}<0n%EIv(<>C0*$TUZlr}=wppz{Na-Tv?p>ip=n8v5p##ys)!BnfN-r8DrL&ewT1CCD|AaHce(|?-R zy8zcH3tV$(IRjjy3Jq|bqrxMDGD#F71mPU?xx=A`mgS1T(iRp=m%00rC<0Xr^u&{@Wy=MdIX7GDtJ;A$S+`$ znJQb;UACqt0T17(BrS}4jdZaw&7(miiK3Ewr0(Qw-CUtk9f}e~yYH0aG7d%&X27&$ z3*z#0#V5y=W#N-ROC#toONV$kw|*}(F~qi|)bFWqG@ZKq_uce#X4y~gsp`$eeE08| z(^I8^$m;1F9TXsPeY6ZE;rNAYoZ00<16X0LqOxkw3ajEV*3CDjxz4CppywuRUN$i9 zX%?;o5OzivKF9ZYF}HxYsda&CSH@QMh|eiZwo?fDJJY=RH*Uaif>V?h^53p5#LV8@ z9&LEFZJi?uV{Q-Xm|nc{2n((WoG#?S10%n!6U;mgdeAKAqv&JFd1`4$phdsJG!gnV z>@_NLUZlFfbxUGP3gY7mHU1N0BMPJSXa;EWg~*PXN_(%gm3j)YqfDclemz6$v4%$clonkS?8yBdXPx3J5)Uql8P1mf+8rSih3jG&9P>LBg^obpFVQ zUt}NM{3z=oxOCr+0c<+xOQ#3x;mZl#i)eN8JG!PN&Gto}01+6~t2^p-HR}_D-J=J= z0FRFj5x;K)5P;_@B0m0}lO*4y*jqcbqvu7~6jb#mX4ZEh6XEL)>XN=j@n#P)NV)(2Gu5mjZqlCA>F#BNPr(xW{@RnTdo5I3zK9B4U} z{jU?=gJ!w0_oJ-6H+PeCXJ{fF_~#s1 z=vtAfg5&r?)2UTnz`#>YC}zpS*=d-9cxlXi&-V`qoJ8zXb{w%@y{r+Nw(Iz?NyCOU z@&)Ip_n$Dcru~WPll;L{w z-Hm&R7wRyaTL+sW1MmAp5lywN9AjCu73Q;*$pbXT^@AgX-J%@zK2Bs`sbBWlslS=I|ZI2l!hvXKn7)IBOcmQlU2z1=Ah(^Ov;4 z?-XDC15EgRKx$^9W(AswkC#=jH!gQn20_{f181(JSsbLfvIjVI^71{^NlpQ_lN<$L zZ^Z2~zh>@2)idlWHvBPb6`#Wy-{-4i#qB~AUep2;r~ej~ zZ(b8`9K}C>`JUmSp5D^iWB9Sy)42r3&&0~*BqG?RGPlIBR3So;CzVVYkvJR z8wRaQrACnH-D3d*iw^MeTbaq2R+bq3dhLOM`K#%S7kw=dTguI-nvJstjZ74RKvp+Q zUdLWc_1j9V3kN))IdD3H3x-SjPqIhymZes@FMMloChK)H>aPRqn!k?T;PI`27AcT6 zV+(g55->I!-v^0%l-8i%0pd$nGc1Eb(1E2Bdj}Fbn+I*~a2iVX(aq%LD+;TqaAkWx zEBiU|6ZH>2)9}|rb7MOgFeA1@oeyG2(JdKG3;8^Fi&T_KvM09HSQI!L-G9K```vD; zIs--(?il9l0vJ_8>UvCuQ8iZu7s9BTtHRS^RLxbMIZ(DBGMg&& z_q{$YcR$0ht=q^OASZ>;QtyA&VMp=X6}rzHMt2LeaKtdLoaMceGAcAd3VT6@&g3kV zLT*!I{pNaqth;p?>+2=|)mT+w?pS+lYODtKUiwO~m;8t=Tf0}ZQUm|ZH+JBAn^7?$ ze+BnS?%_f81-z2H^#?|HSbBuJb{XLp#sAd^RblQ3%ZdBZ?P~f8vvTaB`>N|=vOClv zVjIB3G6U}9!=$7OG~Z#1@AZlsykbi{`^AAky?u~ZywJYA$a{OBS8QO}&KE593z43w ze&>EE9H}WJ9p#L$yZhU+0u{oH?2KyPJ*E(o{MMOgSV>bk^%7*@=kV(g{!_(htH^DP zD7z9_ovNn}j-qc;eI;sP=WsPy3zZq=+Xs1BaT>ISjZ+PyFxczFM_$ox~N#qj5{z!fU-QlywreSX5P&MDkZGB%$+XmB!K4+z0Lq1gJIE1%u*Sshu) zE>!0{pI*+lJu+Ad2EnpDqYTczx{Mk$jB7b%c(|6mCEiY(teY%EFEc;-;KQZ*aIA5F z0&6#aYCQy+syGL#`7T_?BkEJ4=$Whi9jQ}WF7^o)<-+Ta^fpq38F=LY{ zhiAlQ?SsA8M~Zrst60lAd+aLdCTgIC>S-*MAHj&sF*BAZiv9sOZIR35rCdFQzC`mF z4vbnUWB$Pg`7OCvbA=0_=UojXmNz&?1&Bwv7nT?`thWkM*{{*u)`!g;OWI@(;Pajr ztelekO@r~#eEU8cJko2h^E=N>F;ODZ2(Je&1%D^I@-Zs@V6;2!K6+ zsnxXTSxYSI;lrR2=o&#qMy0AlqYjIkfV~$C-lNvZHk`FU)(n)xP}rFQegA^I(kF*& zzPWgUH#;F`rTeAX`_WN}F+>_%6|VW>;tKz4*Hl||cyxzw!IE(Nh;ls#GV_B~Nrg1k z9=5q6@;OFulRu-XouL0d?2~=~lmFiho0KLNGj-h;d-urQ7e7*&mb)*+bWR|sRGR6GZt1>A zON+Mpntc)5m>(I9P?kM?4&r(se+BU=6(C{kcp*c4Q6Il(inn3dCdcX}Z4G~~7>%=g z%Y}B2us8P3Xx1aU_}c>ue6vs})u~wvgjQV>-CU2x_Zp*`L0F6NR-1eD7}e#&k_AC+ zJ`1@w8*w-u3))PI8^L+Pm+_}H5o>(;zS&=iqAOXJE}DoN@_xE}U-f2?loq2cRhU_f zK+9OjX9iIvYq`yAW}SbqC&`L7X6Xp1y2>+jol+WdKH^wk7IMCJJ|nhPIf1J}&PHS8 z^oOm?wneDA&|FEVdab!CKv;T(xl-D{%gj{~4wEy?l@df;V6KWWcRHObspp&{6sKYh zBl1EPLNAwuhaBPO_QIdm+RNG8US^HX$9~`EZbe)nTa@P}bILjc-1?Pek*4vPCrljz z$HQt%n7Za%EjYCpDaszveFX(IpV?1FW<( zApOb$=>WG%I&|4GEtJGm(cK7|#-x^BC-M48n!o56ZB`i{)F|Xj?tyVTd2y+Xt8H; zdokK<5zIIgVVU8&H~kqFzP}lPksc5A`W@Yq6o-|v z+!IvCn;b6%3-4=COwqP%!v^Pl=8tgWdgg2m;te$4!?gtiWV2j1I7h3QK=YO6C6XQ3 zLBphyLXk#BC4z;rRl0!Z0>NK#0u=~e#&1^;Y%5b!-eOoOV~e5Q0>K3k+%6zERa7`p zw9f*6S-OJY=ndJ+@;?B<=(jl_xK68<@e%zyw*tXbYZ?T}h$|3GT$2XDhff0qJjRAa~vRT#(DwZ!oOE4`4g=bp|sYE(fJH_khRK zXz4T9aEgRPoil~B#O?=?>_Y~gWJriHkmCQ@T=hU=f48|(ZrGd5l_dMW;mV@&?h_Rv zX!TDUZz8Qy5B|I;-GeJKJ=n_hpv~QNuz;0N{lMzSz>GKB2*d6BF%~4x5qVX4u{iF;`ulX$orqlPcXV+tS zp`m(mDgJzkK9}gp_bGZK7d-7kNz<|&49Au>RG&6Jy0bQ1qTj&;143lz{-H<*Q)J8W zAUH0p?b9KTOc7>jOGrJ zb8&iz$BeK;T!|jvAEI0$v-?9;Ae?-6w%+v39q#q41j|1vM%j>xoXG@2bV0mK+KGgp zX{AaGGv$vjKLDUN*p$6sj}{+C?x?}#upp!VlZ_*P zbf6Jcm?6qK`bYl_{^#i5C0IRUH$e*kvTYcqFS#m33k%(LU+zmD8msVYkt2J`6eeY;PtfPl1tyAgI+q560(u0Zi8acq3uP^V-j}`(vIK>||Uf8Gl;aazS zAInPbM|Fp&7klzz`}VQc@385aE;jr`l@6qou4;5oP7;MOet`>Bn(-S#sCI6-Cs^}N zNlNZms*HKZnWRCjd;n!5#2!_=WeiNP!y##&jG}jo_Qa~qZSM`Y)3Uk{io;#lc{#Me z27!`Cwpg1~zm4xou4l~;EzcG83`@Uz-Pq~A$xe`y*}dwZGquVx`CD`6nVZtp(Sz%U zj4sdi*O|-2`@0e$A(-NB8UjR{%*HZ1Qi2rs%)hfE;r;ShVok}JcmO-=6z>!JVafuD z^Z6pSkyIJK;vz9xY0ZesXbMS{5mkMYSB_p#Tb{)zhj zl&2`fN7O{hm|unYTL30_>I5p+P=>r(oTnCS-0+xjQOOUq+`wa*MFd)Y&6RIfl0K;a zk1}3Npl%;=7}F6egHf@2;5so`8Q&d|J2)d;L7Q!Dumw7i5tp8OxQ zdt?VI&a-A+pt*t-@JEp`j?pH8ef<0qA2k}{mO+jGMKTZ7lruEyyOnWalW7fZ09i!y}Hj7r{{!jG@B_uSkAI+#-ia(&~o&?2C%TlecQx_|$ZwXCGH4#Oxxc2K4_P~uWAo$`oThBlPP3WVJ_6Qe`2AoJ5t;U zq=dqazSYE^0biTk@qPe3jwbh0J4X{7@@_X*JvfkDXRZo3kmxLiA2`czT7GH!wJOq5w2wwdi;U8aoV6?3I={Ur&k@9CY~tHM~07H!g%+_{WOQg z;cwRVZ;icAAh+}*)iQvt*rN0+_>L=bizQf=mGiPW327KgWx`mKEoPMSja76K5$*Rp ztp2lSbK-}Z^;UGFR&;(7Zyd0t&WcZc44l|2?i+)2mJzGbU%AP_BCojbqiyx$Xo%rj>;5TGEXf?4 zx8gtkRX7HRVwb+krfNjkX>UJF3=)%6&Y};!9745=MnqqZKo*dx&7Ewk!Zn1dKKski zy!M{;@qrD5!{*%;a8N{K0S#IEuI9bq>u}15OeLFfrzPB3<4F`6eIR1xVV>bZ8G9-prafFT3u)^R-lW@j}<`SVe5n|4s9|Gcvb3Hzj{s zcT`Opj-1sVX0c&1R=O6V=uKyk3d=so11AWQ2$Q5wt@_QJkNn*v{9!`@9OrGRg}kUt z3+wnL9)Nf>?Xr3&*(lrHZ^OzCjw0#`i-J)}7_x%>I-dToMfme|wAT~b9LZm*25F~nHbQgB z0#2zB#$T%wR!L%H|0KC2SnCOBoKp&JIsbaWhD|7+8;0f@DvX=>E6#k`kj7*B>x?-& zKJsj5%#`@ZDbAQkd}IV5oDq(XoY6k0A^xCh3&kJQw=0|UzQ#(yLNk<4BLmFYfz0og z(G5Gx!huoC8{$K#flb!tt{y8o*r)uH0eNo0=UNF@T`%JqdFhGMGIfS~DYTIo@5u;r zmn|tEh*Esicp`)#T^%)n)SuVWcsQQWkNbNz6GaPD#5tk2dl1_>9B)y91PFj2_wu65yca^*3H1E+4M>(kc9#;jVi@wZ4o;1Z~fr;J*I`tnrxq;MseDZIOz8uvgyHPIyGT}a64aE69iFT zUyGJuYt6Xh*Hkp|6nZAP){n(r$MLCU#&u=IWQuZUP_v10_uCJ!Z%g$1D!L23&#>v2 z*bs~D7nAb#T)%7SbHj;r$5wkh)q-8$;PW)S{0aS3HA&by4$y$ZC@-pyIlWsAeYt!>(pjT-z|q3hq89J#*Gt?i&F{&X zFe9DpNsU#eiI8^{-#{>ej%)H}eF;07okp|4sV}dWx-;mjJBJ`=;Do;eqG7$0wnJ5QJ?t@9J|XrPtT;V^mKL58tEVwK z*K)L*iq(@=*iWEEp^nPi(&G0I+1wO~qx}^@O7--zb2M2}h6Y-WWOcgcGsCNvr90?` zzYoYu-UXb|ZS4OCQcAapLM_)({7#MtwDdAp^3)NHq1&jEzvc_Njh}%0!nd&NxBSI+ zJ&F+=ltw{#j?8p@HGX^Qdhr2tEZ&p8eg8g)N+S?i>2m&wQOKTeJ%H1#D6H|j4w2KTL@D74{2_ENO?VS8C%BARe7^Bgw}Qq2(HkIin% z5a1d^fN`)Rjv)?q#4*IdjyQ%$UEAEmxuTCv)KVVZmI9AwJ@u56l1puOkvv0f`@HlI zc&a~tsP!@0r07o2wnI49<$jcSt~iIQk{aochAS3l+e$kM#JP%JtL=%+9G@5MBkhT^ z0<-Z`ctVAi?!yH^V#Nn)V%=>~?dd#4Ubn(;bMbdJ(K$)*TIrKW z;1m2x-DW_;9-II|{8vewWuw40I4=M*fo6$#Il2Uzdvk&MAkbXEg=aMwXiid5Y^DUW z@0qHNcxEtCin4GDtGuNbZ;SsX23h82>Q|IZ?KA9!`uNuMaSYm@AH1xdu&t@qMuhV9 zQd9B#Y+}_ntv@_+4CPJh_re;H!eKUFRa4bok-?O!=C9fZHm%<+x|ber@5!f|s&-Rj z_Bjv2iEw^6Fmjblk@)0py<1Wr$2d_mD zy0dj;0h|{yx5gjL0@#f5rV%GcdrBZa=LAoJ8W~6YWNnobVZ!x$8l+agM7-x01jW{g zKBrK^PeEY{<{-;pAFRZRHjxd+~EuSsMJswO+kOsDYuc zkfqOIXPE!HDD|1_!_;1)Xs>g+F{At0TLW~WlVn5F{G%NDRc~gm!Uwy}YuN;s`ownk zjIoEL2luKQ9?&n-6zyP!)aij)Fzx&@@d3WkZ0wVAl3Z3H$WHQa9qiga8l3eK7n#V! zA`t3)IOxnN4-T1AHq#XAT;$9f&V1Lbtathbj_MHf)Um;$z3QD)h>$t1vK zRUxO*z7hlIw&rHJ?X1G2noNhu9__{W(?oitUO?U*p8P8CIeTcRs-i49NN@D5tBRm} z+^(+bys{qcz4Yp#rYOP+*j+K})nNQNb;R>Aual2?I7|jD4&!8(1!&7XbI9Pz`Fc_R z1&QPtl(uT}YRqceSEOOO?iesexrYsaWotUzRpETs=v4TH1N$nIJ21TRfp5)Wqe$3Q47Fqd5J~fMo7<=xfn_y4*F| zmmeaM7xPoFU!-r-x8>6bCJ5TObLG?#`eYmPiJgN4deHWAy|bPFj@h!uEid*`4Q#kF zty76!rnNP4>GS{uc4JJDybK`jW?uBcdGN{W7dCg|8>ayemxey*a#!!()>ghLZ$?Ke?8!9?){4He^s zf+ot|k6j98N!$CWnGB{80oeHsFwLoD)wgvPRZ1;jht_!(z&R$GGj8Ga&a1wQhC4nY z#Hu88Za98odH&;-nk)+PFVfLE+KWyjyS?Ety@nXnx+1jSklu`3sKfApKGNzMUjZ!w zIqO5-*>%$%-(Qib&g>Ety5f!5Uk%Qb@`fQ(%G__TKMYUqAj#PD?Ze_E^75PV>Hw0C zz-4t%9cu=Yf26gN+MkkG>d-**9_9iQsS7G#dg?a-lxwQ zH}89a#hjc>V0-a`8Oi3fb$c_Cw3hL9z7kJc;M;`J3O6fK@N7rlMk z5@geZv``^|gbe}?Pg7s;S2yosg#04PT@}sRIqZaQ&+w0eX8W*9?563n$7F4qD=M0J z4>p>ObrL1oJ|-8OQU7&S8;N)$e1V?m&nEYck=YS1!YTskoVRn*2AMetx4mGno#Gn! zFfVvdkkdIM1hw2 zCpL_*-m^If?@JHi_2l(c7k}WPv%vf#1YrMDl(zTjo^5#=rOiLBGfI1glK&k_8-wx7 z{|2SazHp0B+KLA|p|tKu$KQcPs}B}GhW~9g+VTMEU~ z`|)tO(d}3bZ+88w-Jg9g(33K_W`#JdswaUI9A!cT5YFg->j+zYtQRwoV4#dD==?iW zeY=Dmn*!?aVVS}8WpJKkb0ShrDVJ8M8SqJ~evuBW(JvAJfK*a3KU0Uh>mRUx^Jp&N z7ACI^v=BoxFSbEg{wdz{vHaVC%bw?0K5xUE0%&#fZ+Vi4Rra709fJaw$IPuY1}P_M z>9jsPCGXdoANi(YhKuk@>3GAFW*!7Y158L#PZ(P<<`@}u?^L8Msm+=#X2sW zRyA+KH&hs@oVVdk{SHoyY>9P*rj;i~E{}EWF}*bWd&9t?Q9z&#STZ&^v`hiLHm;{g#WwJUiCIr}w1C z%PyXtnCH#iwDWjIaE!xJ<;>5iiFy9K9h;b!nYS^CdC!@7+kaYZZ2i7-4w<)J>kt{5 zn1`bvlQv?yaMFs42PT3{Rn4>=62Vtv9S4}wl}yljZ-VA!P0)H4+NZV$8;HBdK%50@ zq-$ZMYvGJ^ZMFOQp|s^QVvo@QF)C2iR%U^7Z5CDC^7*~(9)EsYo`=#UCvOV;M$z89 z4U$vM-pd1w13bXkJ2CQZlEqKkHMXH{&HxX3wr{WFVBR!fP#*O3t=HxG8{IzP6=WQsiWD5HOG!HZXcOT9C_l<2h6=lr^$iQFehlclGf=}!38Qxk0K5@EU|7-#4 zO!jbXu|V@QieekQyhz^Q_VET+tECO0xi<( zrpFk#yoFnDoU^mXImK(MS7PLvSjSe=Cbbhox8KdSt_MtA(T2px*JB+AdVqDf{bJT` zyf@Ll*J9tRpyU!;GL@3{-t#s*PP0Mh`M@=;V()&#-H(H_bE~r8tdTkTAHdlmcl!&` zG7mVj997`T=joh}088?0Sej7vJ)P_`EbG+g>WRKVgk_!5#QEbBGsIcy{X|ju&$Asi zW&Mt7{PgS?FW!+urCp=EWFI;7M!9>>O0iC75#{Bcu7{5H6Es5&li>!_kwWWhT4$Fb z^!ezdw9sd@d(lwi+djDI&|cAPnl4H8iEfReUcR(LUM1DS5Y)@wDP_6)*jXs4IL(M) z=-^>#h@~xAi8vPWn2;H#c*aaHX?3!_6+s(pmagdLr!le_Mhv*-ic(4piNg-}J3>+U zRBqE}l2dWJ^Vnpg4LP<@aDR=l;1JI>!L-rlo^U7YEA2SpY)`_ZLXh_!&(LR*oO^j} z{poY|HVtkrbkS!A(V&fv$;7OT_O4s-XrTs~TG@^-#1$2~#&V!wmAmZrEw(lEdkl5C zitqh|zqj8(ugO~-MRvqwY_4xVQ{Vhlhxr=0UoSZBI8#?Fb$TG7N7lT2JSba;p#zv# zM244Wd|t{PxL0zWIZ@ci^{Y^zUIuuOJfzn$UcOWc4lGsr&IgeIMVj{%sl=B-()Q+g1ObnRe4-N&ejZZ^B z$LlutP_T6JeZ7l>jVWEIC304|zr1v7ZyrmkEl9~4!&weIb(}s2qPYcYb}Mmf(rYF^ zxWt%V!J3tGhGSgR^@Mu|^^Yn@;UrQ&`OQ?n-~8FLfxSeX!zJAV%#7`8W!m=j6?fQe z|1CUjvoN!Z`hkT7IyRyXhT{ZybXFu6)5A?d$$cz+w@|X`*v?S0k&^7g<$nz&ElW2E zCC2Bb@lPi74;alr1&RQ+U`*?z!h|Em^V97nlu0XA33U--W>KQ6mqu z0lvYuR+fLHO(1bOEQ$n+ftFe3N~vWpHdjg@akjaVZR#oJst9}4W6hO(tB*8S#VE<^ z%vA|r9Bi((qLzKR^0c2m?;dh4nW*q2n{&6`IEPP7bOxk`NI-G7HWx%@;MX^kPDce9 zx=6<|^yzaoH!^)41QAKH`!N*gg!WHL9=$&Y9QK(6LVkn@cOpk;&r;JwKBzW_{H!Qx zquHIldH@~_ELPOo*o}H%*pi>F9#Fj*p`FwNXS8Oi2MDsn>Sj~~$%na>qxUOrBe)Vn z9<;rSzJGz{SEg>kkstPLd#1n7bHji6fiQ)pYAuamycsroEY~wqZw=vcjtGQ~hT1JQLf& z!eD0rHB5;SjdqcW{#g6!fn$B<&wy-tdc^Jh>e=k+k*uq$piHHk5R_%Zsuh$y`HXPc zChV)l*8Ft)>d!6_xUP10ctDV}+8ubQz5o3u>0R4=lv?OwUmf{!BLqQ44H^6DCL|g% zwlQK|&w$#^F`)j_ge(K>MCc3N8iyc=BVA3M9VZ?1#A_QOX>oosTPAv5|+ zcBoBl__!eGhJBiF8|nHU=!(L+$m6GXLVwHnd=~cNN#Jsx!E-Dz7R6W zsRy{FBdw~tieKzUIP2|izAH&>=L^u9s`2`~mzKJCCOi(+V%A?8<*&$2TB4ktGk$UI ziu}l|W2(?cEXH-(or~E{h;XLXGa=A2j6P%*C0U^^G5uu-zQ`Y&vUZH%`kk_Tfbs1- z%3@3o6mDAL;X<}>IS8~&VSB{p;+T0ssQU3{x)9xp3yIMq6S>eKJhFd7_2Ub5v4?Rc zK$#2#^g0;`=ufG-@E^Vm#UHsAWL50>5ZHtu&E+%+!efS>{r<{5+>6-sf@rQ7)@PyVvLMHZ*7jP&{*wqV8H{pgRAcd8295{)qdPu%A!wbOP zqcJ{tO~|=ZYISRk20)^E_mVO-#xGsP$!#rV*+ImzA_Fyp*u1bq`&&*nE&Q+sxN|&1 zw56UsuF>>=HdUi*bN^Z>Cdt@NHh*HUf_UMhL7;S2W?W5|C|}fNT-D69frf{T1KNJB zPV)WnyR+I})H9E-?jZ(y6PD)3w*?*svQw% z-pHM8>ss1+%E;nrZ5y>FZ>aYd4$Vsn_a^3N`-rBD9J&vMR!|?voBmtsi((h)vA{~w z)qE+GzCJO!sJ>?T#r+!#h;Hyoy<9>sqgFG6!)czW;2i$_fpf;?*o9)Z)LC-f=I&IH zbqLqT!#?eHkpE^XIAd$F@GlK6s6E)|cG~;YCwd=Dr1)2V4aT@$z}8T}LIkr!-XlAy z6o4jw+7bGg>CX?AYf1iim6kw9>nKv0>X^_lPMF!o*k^dayVzn~&wVYoe9ah#Ddw|<|k zpko^W(dqd5;I>12kmJ=q6Y6C*&jO7Q6*ikYJISO1B%~777TQH-xMOdn@3+$7F7b(O zpb)Cpi{K?ze6ha@(o_#+c+u}4&Zc@&N17uL=Ha@Yq(2;ilqrlq9Dztv3zbV7k*GqS z>gi#*`)plgYwFgTo%DMekpIE3PlJi^_kO+fy+F%kiUNzq=O>PQWNbfX+mnOB98|ma{yr&OKltfTsZT_JzkZ3Ysna`&qT3GhG~mq@O_WGdlqlNmp&Wq#_PsjWu>f0O+gnF1nFUaQkYgXj z%uYhlJ9tFe9G_*pT5qQLcoY93T)p3-tB0bJ#4h>)F2c@#kcD~nr%F}|Kpyv@IUY?2 zr&iQg@B4LqqVVe|nH@1IqA{lB{4r))f{CN+-1=Eo+R)~{_pgnN(YnaAsGQZGQ zURb%+?ukP(nIG`UBRo2>A~t10kNlm)55D)KASdLQ2%r zmnqPO;!fzvZ!=H!LPn<}%lo{A-1A0D>L6)ekd5m=nm9xBHD7{jjoVr&FH7unm42~k z3oNR}Y-K?HAmDA^K%n_pf$DSoK@CvHzha%1BZWJ!3R)wyTx%npvuzyo zSNu5W`RbQQ_(FIU2oMxvcrdk`IOs${x76sM%~K<17clXsX`wLL7|d)m-=bOdr>~mG zq0wo6Wxwz<{~q=&Be2d6A*%78vvQVw$#t;qvT}81iMmMrs?i-}Hyv1n9K6r#seyS- zwNi_{03neJt*|{%RIdQ*m01&c3scqA4EWcSvTNU{^0Df^e4dL{$3KvbRgIp^28+VM zc?+^3s6u~JTRqv_KW4eWO)kR^iB4qXe57!~&rw*_2(r8O`9^B=Ws^qJk?3^b$l87C{!K{73>j;_PJ(Pv0}Jb zXj`IN(Qex|pC4nIZF6t>haaqo1B|?wg(lgr1^3}V^e0Dcx$WDFfx4X=ez{NeYy6#X zs<9Rf8bk2ExUbbq#j9q;4fx^6D)gd;wk&D*BA+#9qUM^3DexzT9(of4vC;q^g3s3P zlh>Ppx<{||duoo{tJKqCdV1o$^t90QG^;~MTRPms>67UW@z6M=69?uRnCEiN=;r+J z){YA4Bh-v3zv#?1&96mv^63AerP02DMMq;8jpi{#GQXH9@717?|8ief8B6B|JG^h+KXeLDG_2aWb zVHItC3kz%&@(TslMuy0`y~UaP2^qFB#HMOOJzWd6<@CP0&h4Dm%L6UqEu6$#vBe8`k{@V(jtURMGAeKGQHVJ#f+|3TUhx~Xq}P=o2|itt26N)wm3#j* z+>dK0S&518&GAX!>kO>4Z?V*jhysx90(%)tO(4czqG&6wL(VG6MfB=Z7@6g{S8V$o zgRw{L=lL)b292~|-206g-(=}V(haRiUc+8Ad8dN9Xk)ouGM7^$9G7HHm{3ul4&lyLQw zQjBMcxvwMmTF*dp3)eE{b2TYXGu=kT{UE;_cLL$+>1EL!zmCa(zDK050<%@vyKSTW zgEcP&nh$4koh3I6S^8>6zVYHt?rWy|7;=?8BDr9==JonO=*?iw^UJ{_LMIptz8Bpn_6_ z2$SC+%t6xj(NA|%ui|F1%m$!=4^vncmc6aVg7t9cl)Q%4hS&=9lMgQ~SCghyl z9=9XRT=V}~*19;f)jgWg*!TEVzsE&a+vpZb;Z%+o>Qla4si!&r-IYuEex!~^6^3AG z23y6!+B-$|G9e3e){`U_0`GojoUH6RO97@87PVi;ug-!U=H42jNL~H(kw#tJN^wvQ zeVQ|8r9J9Dc!H4&-7B$mQr{^ls}5U4^h>Q`r33SOaz}bPSf%gu0umoQ4#A@bLt}Y&be%qrl4oo> z3q7q;(NNxv&7BAenNFKJY=xbowcic5*g>s|rP3jPH8D7+c`ar8*U&!m1T@yUSFKj( zyVT!4BKCd%$UY4u0|k7xLztb8ba+9jAxY^Ox{~k>?WOd}hHISrJ5fxWC7u(=a4a_< zCEyAoS~Jsh851T^-63YZjwxX(vv$tT-p(KbT><%dgggN9%zZZv$nW0%zXasK?KyxPXgPu& zc)*-Im}|R(rySw$VE5z_;XR9<`|(0HdM?t(g1(jw&^d2-ftJri^qdnoW}6Hd$-kL< zBm3DW>@+no6_A$5Kz$nB&HGH*`RpgDHOW7k>IBwzaMe(K>G(kN^{NGEM0sNXSQZKf z!~-qMsL>fS0U(LB77cqXKlYN)BjMK^M^^wyz4N(y%(2>BftI6GCD5#xfWI{Hs7gmU z&vT%4g9&{mQzPQnR#!!P%F7QYSd$?EvE~|V!Cklih32h>n(5_{tsB`RQlviFKFHs3 zI|w?r300q265SeLFN+qP8H%5Iu{M!S)X4_AZoRjGq`O7zl^h}H8v6$|Ak8%T6d$f8D=Kp+cO+saO9cPuu`F zZhDRy?Hmm~#?H|Y-qwz9fPg*0=MBz<IQ=pKuHwt7q6wXN#Fi_}oC~Gxz25HJhZMAc^1-uIp?56DeWEl;z{Dm|1CR zvAu|bcMT%bTt-nB6dl!J=27c_$-dM?1bEFF_2h5OIL6cGK=YaAMsZ&Q%|GY5q53&- z0)gg6Zqm?OXWn|nz2>jbBOn+)fWD=!)2qqddFVb|zja<(eAiii=f^^TKYNB_c*;HR zBr`yWspQX7Ndr&_n>Hgqf;X|b>Tz12R$P|dS|5=P1T1*qFv9}CDiJlvBxqA zAgsFmGAC+ccvRn_2xCOz&;bY`-#vm1R?0m=qTPfBRT?q&Z*IA z`(}a3#;2Fzd(6xHT9FGeU~G_6n}TU6LapR=^tnrzlFRJ0+?U4V<5Z9(kk;ggPHKK2 z^_n4x8n?h0M>Y9paD7njj=gD<;s$>m$pxTrFJ1b1nDAnv=r==rdb3+rKYz*!>U$H$ zoiqe3hkMKP%U@|F%`y$T$zLYpUAwtO+NbH;|8k86qVoB{H7ZJv{r}4~y61+?t`QS9 z(Np+T$LaL#Ol8;22M$edzFoCgiJ}dA=WM>GZ}@4OPqq1gg|x_n&TQ z^L!ytM>gLz*;hJ7(r_eYLJBvp1jWOHl}l8_sRyxv%y<=$9BDa!)Q21)#D_6NYVb z-ykg4X5+~Ix>#S2tg>Qhd(uYZxrTitffyEI=gA)c?Ga`@E1Qkt2Xslt##TL*LRit@ zoFmWjQF*mP(NH$cmcDd4U)K(r-WvyQ9Mb}qoyC1xy!>-+oSC(fAiy@aF;OBs?(dDN zRyqeSfry0RGH+?#-^?;R$ee**{E6Nhi9YK_2yDz;j19+D_NYf{{x4`?^xP+PJfWjn zgdO;o>i5!R5;TeFi3aT{SHT<3~N0yUdV0e>yq}q8EM(q^M*3l(&7G4 zLgecW(D<@_ya@x%OZkE|?1g}ZyGOYb@cr8GOD4+IT{Ub=8xSgqr=1|6W+nl68fwld zkM<&bTa?g}pDMzgZ5@uMv*xBd1Bg$5Cg9jyhyPV*;naiB$d1WN#H$nkon8g41NSlX zikWIMT}J}gz^({4ID%pXY;~S?b}v*HQ&^G6Ko1#3`!N)F;J=XKtq4}Ny#Q1JmjxF{ zu!;8?YBtO+JJRXBQRjHFI{vPSnACtA<+EH#D`9+abkT11c6f$$vhptWZkZPZUK!A_ zQmJBjEcyUzG&r|w%^RIBocliE!owm@GYm!dyw?mztW|BKls!K0d3~*9VTgFs$mG$A z8Tu5ktK?T)?O@&K;1}QXz#^rzs{5q{>8!TVA7Qw1(9!BDAcVL|A^=(3w4pJZM7w17 z;_7)yof+jrW|Sc^0x!DU$M4q=dDyBO8`_1RHQc$6xU4bnt>vb{h{a8khlWEf+#Mfs zFTzX%ty?Hyn?^23RKFpsgYmwC)qjo$;XNWq`his7w;Ip|;h8{^X@s|=r)KX_8#tcd zJk6euU!B-C(YLYe)IcJkV%WTtUBM%>?!^fNM zfd>k2N?#FZt}879V*F$+(m?z-$YfGo znR%-%>#e6wH`TSdD|k*xhHBQ$ zIx;-@Y5}b|Ct>ozaAQk1h7;SbvGVh9^?{KEG%_?|v z5oj5z9@WG&Lz!%FDU@br+S9Yc#N4s9CdRhrx9;r&tRQx&wveTaJm@(dxKwJFM=jtv z8#lYLMqx~q27S4i8028I6NbK=N>PTs9Bp1`bB8vX^LX=q=6-AyZUWjFHNjeRBO)w) ziN+b-$^i3!mftlK~*0 zATMjWk|tq7&HdUO#Jm%T@kZb5H~s)$Yk+EBfa>PQEl_>1%m7vTi-v=T_T6$@* zSGx}cm4!VAtk(#v8yhCaELg7!I|i)lF=-l?C~R%49xQ-fS`SReTmbqd0rX$z_6MLb zU(yzHztU8DTkJj~HRBQDi8lB9H?kg;@yMUS?+)_jgRUmeHs9C{pvbTNLO4>0bOaN@ zqMGIkQNKBdgE3V`wXvl|?y`?G!GQ(!=G!}4dEyv$%>ULWm!MaD&#>~$?zzIC^ANBl z%$aI7lqnQ1%n!$w6e?D8i5kIaFpuBH_`c7F6XP)lo%MXlDEI_aUc=vL@9jZWS$(|s z8}*Y{*nLwUpY=vbxS&J5)^#bUp@8PqYw8tQqY6dYRTDu{lJZcc$=d~niGIHx#-uQ7 zV=lmW)Z2en&$!~Ur|aKQ^_2F~N(8x+hX6y4In^|54r6mhas$|MV&tW{SeiLPKX%i*Vk0&(ge zf2ey)H%fR$KG5pQz?It1;mLN18xj-B8k{d1oefvjJ9D8;F>Swk=faK#-dL!bYdWGA zv4x`Nfx%Sp1TP3j*SNE)H;JP0x9x(Tm(KYlRP%D+%9Clo(b>`B=;I06P+zk&&^*SJ zE*^LcoL|kaZdCqRfnHuY`pf%P~ylQW8>$2S)zq59vhE*S=wF?w$7cg12Z#Lkvn6us|u6U zU}op}8XFINiH%w@=57VLCi&5r5?z#YmMT(OD>|d8iylx`5Am7JGWn0DP4Qov z2n;bG5mz2!n)nR6g!|NTV!yZf$;5MObV8q(uu}ugr0s)eihtSL`U))nGubGX+1V%!ohDBT)ka28pE#=2?w^L5 z;5z8I6YQw3X6EeJ`Ibxw)zy)0L1lpS62gA|W!4+Xg?!${99J?bu|nwyup)!Z1jt5= z95ot(od8`;k~DKO6VOJ@-AsUr-4If7I|0~xJI8*`5w*>|@DtE{Y?ZYx4u}3aQT-8v0K%n_&e4Gmp&PKL>p!s%)9H9 zyi%7_xD3aMu+_g&$y8R*g+}KlS3kO6#D#Bkp|~Yt3>NbH#93&4zWG$rvpT|Ny!x%P zbcs8tU=0*}&LqbXvxNO+-VmQ(YMA`$k%``G__~#^0rV;|y;W*6ppOPuw2zeHY)2n% z3s=iogjL*_Yyf8c;@Z{8t6>hi)B@Y79U<8Sx*y1BF!eedf|!TM$S|1Wd9DEYIR}do z6Z$|9RwjC9*`8SKgL(2#4R~^kcQ1sW2Mu8l9IpA#thef&=cRTsVgf3t)SLl5Gx!xg zD%X9Eticy+h$$@qGG3*>F@M)GoMAL{peMeD@ZfPK} zXiR?X?tvBso@tufV@9AwTP?8Y)B<{1(6pf@a>1Eb5fr9&tLeRhOa5LMj4fHyPTZy2 zYKzhZ_q7KSBcG#Sxc9~jfkn%xB0p5HDmZU_Dpd;KHRcPlp;2G-;V|ho4t*ya7=;aD zNBbN=6GQW!?!P|Xn4;%;%4`1PQ`Nb*Y?q+FD|@I*V{C`^rI|5_-f=ZGDpBu_PV^4@ z?Kw*VqgT+PvrcWUZr|QEQ|va`W>iYZ;g$9A!}%nS(N7HrW9tV^KkEs}R71pbn>rEh z?S_7Ecw1>{IkaB$3z;1Iu9?1|8oO)4(@iB7!arqedFrxY!i(Spn>US=F(%g1#eG$b zc;T>A3MZGlfXjtJXG!}*08pfV^+U4tz@);MWv3!Hten?Gqa|uMQPjJ)cZj#hUYnWt zxtC>`zH7%2PX?Wj{!G#z_VgzGi&d|X9&NH?rSUm&o=o349SvY(gyOTysvmohr-2qu z@~M?A>YZLrB9)c=M`98m8WsN_<9~`hpo!0}L^pWO^^lyesHtkthz&|61kN0tv`m3$ zK~AmQOMdl)ej#T1b^mCf*2s%1ScAmwhC`RA{mW0qW82s2<2~ugTJxbjQTs8in`YUxDQFLjkCfLx`CQ9rCuV~7eU{MkX%a*DgRj)t6`ilJL zb2Y*5MEZ5>3%oLCD+)EwVcc<<>V(F z+kJjgQSQo2MUhh38GUerUs0!=q(g${fn#j!V;!j|SPj>o-gMYfe`@=s$xOO;_2Op6 zPG-`@3;2~6tx{-zT+TM?Pk|`t`J5vCoTIPm!Oq@;4l>m5$%0eT+(BB*%;w815EZ-!rny z!^Fp4<<49LAW_zr&Mj9T_M{K(J1VVdCh6!0dN7a&3_=|biS(;K+hzJQp8g2_tytOO z@}k94>F=;~fTIS7bPiS_(%}4qaDJHRy7v(1Rq=^d<7xU12ScQGO73tzoEQMEeWLv# zn#zGBy7hvaD;84btZgsDbPj>0?%bc9NF{6i_peX4B44!CY9*L%Wu1GRao3NWdzJUT z>LpKNTWXn%7*${U!0_Z{e&qx-qJnh@6$^f-h4-e?g>|tFL>c-!RhS{UAAey6bnUzi zif9wKatS*++bj7Y?zbeAZ_&xyXlD}2*K)k#JNtqSyzoM1qxM-&i5Qy(8#H{PHtIw< z0ZkMKXoC5|0_zI?cVey=)&+Dqvr#9qQIEm^ViR#MldD(_iJ=XnhqzZHnkYj3O%$Qe z&JvL7j2$&mgjT!%J{hH}sBD8~)jLE3d=yWm?YRgB1m+4UW9vWp}?5w1f&yYuINW64NlU z3n5}HB(8H0upMf-5Cjh_tSB5z{mYfk%(_RIM0I&T7=F3vzCh%eF{i=8|r#mod+l%R7Fq@kx)wk7pnxCQ{FWVj36P01kTv18xpu|W)=w) zqwphmjBFBUd5r(euq1FtYv=li7>sN;M`k+J?}^im(Cz=|pGU`1==O|dU#Ex+(ikc$ zyP{xu5#FB>yMLx3M2BE)WhfEGe3lducY%1PvyAKAZ~JG_qnAVM;`m}siO7=tr7zZV zpDZ;p<=JHEe4LEh2NMl{V$3ZBiB21kRr7=aSv60kW=6F#CR)g7(S@&_tc1EN!twnx zRNeyuJnUETj_+9yFX_e5Gw`JldRZVAa&9l7Mj1c6<$NA;z6mAfo}QhIs;ll7LMV}a z#%nKhzU1C%LnPm8@38Y!OvrkGYK=PNsStLvsUJQ&6UW?VcH=?&4lUpA{ zFHiKd!`9IZds2 z5l#+Ei9s)!*NqSQ^}(9&BUdLz6%m+C&VbznW|P+|htUx*1PzmMx*<5*zfbef^0ubU zb?B1NQ5-nu;LU5-x&^f+w%f}n0194lPdFN^?)uBO zx%lO(NEE>Q<_F6)BM1FVa}613xdJA}x}7VQxe-2R`;A-g!jC?XdP&ONJf&0>*mSlo z=mKH?_+zn`YIwokWUn3xi_UEv)M>Z}-d1RuZ3y)uX6!%M9zd_Ehj2M1}ow z97N?QQ@D)6_C?uH+1o;8;EEukB_8+($H3*46!>%23kP{l_Ips|PnaAaIni8{B5QN! z6V1P;W})-$=Sbda;7AyyP7%9QZ-!9A3CRLmLNp z^k;|)yoFSc6Ge@5Q=FYvQVR;%v6hUmbX#D~s0wp?ItxqIZr2j(IfhOOzm{ZK)mo?L zpbS0&EoCs|m~@T^w8+&Mvrc3rh32Z@{6NdM>~vDuVK=*uE1cwu$jcF!FFZt21P&G2 zE`)eq6Ns&*%-Vw@?F^P9pf{$V{8|j0wLcacT-D~{Sgs%*%5b-4TaN_@x}W|{ECBfj z22i!t_siMu)@iuVU38b8b->8;!m*jpAIg0GC-b>BIS1Yu%(a+fWa;yo| zbsF7)v^3i$jy{9eXg<#OZp3T&yZzO0I;RPFnnpxND?!QO(Gi|)Y}k+5k{$ho5e8b$ zp?+iRDmltR&5qqBrzV%5QJhE0C+o@JgLo!~kOWgclvnG!MA5l<-7qbEFZ$_Fu6lD} zr*6t7U`Nx}c?7SYDnlL#OT;4kaap_R_`}_8&*P^2FFQW}!cBJEAb1@5&|-V`d_Dvo zj_H8}Gr@9?4Ct-sd)tx`?KP1!0g{)=NNmoi2(!d{T_X8LkhTh)=1+B-AgYToC^r?h}`Zq-mG^T*}5-8 zcL+Ks<0?U(p&@?@I4E{Uz*2EQ|N=3L@jaarDpG*R$k>hG~<7cdcd z(c@zq3IkVs)=y&`Rc;b7k{@nCLq%BkCT3PcMZI_3gYqN2>jJLFh7-K#UW@U#j=8V6 zwIG`0_2NA?^axyWy{Wa4TJoDYQrB{;e8$q%+CWtbZWG&3G;8{(mJb3g@`+b|+H=Sp zGUVj48K*gyYjJCc!O@r(IBKmHpjSOp5OhXW;-{-A-FgqD^I~x{liZ(MS(ryIyvc3h z$!o$jFV5bvsWvboTHG`%kbiijEQOGdM0GFDO2%(h)j?-v@|*2}dDD z2y*Sd6WM_rmlN_L0r&4;8X)9ov?g`T1Tt$^83Q}zp*+jvp*+pxp*)G4T1BqR%2w zha2}R2YPQ6KlO@x`TyhXP2i)fuK)i)5{PUQkVssKib_Q=ic3O3Cnmr|0>nL962s|M7 z+^KSZH;bw+Gl=?%q#{W_jRZZLI@b+tv9DkH0U2_F*gL?jVz3meU7H=+dWJ~1i5r9y)x(}`*}Q;l z%0}<_Kcl`mP!+I!56_X~&7Q&6u(U~#5Z`Ueu;L%}SDPEX!S}KadPGY`UiCw4AoG^@ z;~#F&-c;LqgD|-kf9LwOi-klgR0~wY?T5P~Urjqti1qaTfI=>X--HCK6?>vDsH2?s zujg!@yvzRRewW>&hWxQUL(|bAiNzWO!>S(k7$cL3(|aFRI7dS2OlpyL?H_V8+AoEx z=Ai!XS*#|)na3vPkLJ`sKmNvbYuW+BI}pJP_rQVHVOQfG)Y$$*EO?_4fB(*daloIE z5C^lyU1ACTrMEvg!`x+iNID`B?4|MRPhk5N@Xt%8JWlhfIe`XV6{6xUWPD1<7 zG`It!xr6JW%KmFReuSZAle#zU7#^EiT`?&?c8;wzSJ4U)=L$IcwKBBq>AKdjFtUx+ z_nzRrmlTr%HRIJ~p97Fs5nJdbKcl>Q&@}ifdeGl`5WBQ#$G2nCtD6?&*TlZVPeE<$ z9DWL`W2f=cXb*g* ziQgl1%>y8)@x7M0V9%mmNAPbbc`5(ebY4KBw(@tv*HH6XzKkSr8!>{P&zJR8AB3)s zl4!4@MAME#V}G&FMAOCw8+jLCLTJg!JbeQ;xMTm0*l@Olj(`n@lD*J>!Ud~#!v)*X z7j<0;Lrb0}UlTC+??f2;ZP2-g$<21|k34;Y&Yjz-bAKD!p>vl)%XDt^ZaP>06`ebV z{E@75;@$dB9X$?rQcWrGy`jG67;$~oj54k{R4Q2*!m8ol&AQQhVuRxezrnTBF_afS z^~IML``A3j4#~`+JSsGY;>V%p2YFvtiI5ckGpUgQO9?d}OJC{}Hxz-FiN)e)tocKe zeZtA=bp5n-$?7lbr>#g^Jbi;{x_{q} zI8<_2hiO^^X*>U;rqPwVTTgH4EqFND9AS;SO~;nyuMRD_n*4T{F|*@3uHHUk{if3? zyMb||N4SJwl_ahhpZJTya&evqp@KYa^=dV8Y(L@?xXeB0!9CzLCW7A83hbnNTN35d z`oye?>g50i0hOCz%h+#uhr#~!ejM+s)^hZbUnfe1ny;oLCReT@T`nbSUUYn=Z3<#1 zDi++ZaitM1@wxJXNOA&d;qiMQdN0D>k}i3;aX*Rs6I4&K&E^A}WPS)$1@_V%qGX?EcESZ4)1oua3k{ZPu6SLeHHYEztb zsw>l5Z`Y6l&}$MiJgF>yrJ^oe^BdN-y2K>Ar-6_>p%xwEZ`#Q^w}~+uhf{zW^T1lj z3Mgs+e8jw&N@pZ~F7XWn{sjp94z)BW5f>Uht_Pp8x_$*mNje7n|X-+dUzM`4z1hv;%Q?wyfO|f|c4k$XUu=9JD_Zz+wF4L$y}b4$wA&T*b6)nrzIJh#zVSaBdM%d@ zz+O_9@B};dlc^#Qb-B+w7IHIV)gSVKu(pS*26U5D9X%?bx1q?f!ad2ch@{sx&_aD; zv49mx+z_#!NkxdV%uMSe>WOz7Ji^tF4F;Ra`*dVGEB@oiHZEU6jvJtfJ3pm_CUz9Q z7~g848Qe@i$2Ea@Zr*3r zyJ+cGQO?u6&0=G4UA1WE@4V5tPrV%)s(>0|-{q?3;jz=$6AzC~6dmkSeb4Y523^$b zNa5i^M+$eArMUK*_cQ~jDrzVZHzdiKh)_#^-sen5cOKQPyZ8P^({W5$ zm+9Eb#CMpEnaqz(#~s0RXuoD`Y&ok?z{dWd^uL{s(*|~!j=v7>G#yi^1%Jn{nvZH; z?|wdp^F{+-bsO_hYuxD}Af`D9wcKH;d{Q@)+RfZta+RAKx?^mr&%m6ySr4h%mMl9h z{wk~sEyf<5t{wJSXo(_Uxbat4;o3Qo4cz1pjCD`h6P{rb_7=2Vmi4y-q}y6IaoQRu zPgE0qx@vtW-e28oPDl41xtVpnZEVHp($LtaVWvB={Bam9^*q@FOLc#DtU5WVfRAQg zQr&cADK~y!pkFZXT>XNBr&Az5v9eBT2ChOOpzi3>;jv;XJv>%qrB8_Nn_fxP6ict5 zVWoV;U?7_N#+1ich`3NS?v3ob{-Vt9MKweiBH;VEbp)mc}H5_d7+jF2|Cfu z??k0KQE@sq$@i~Ke8|^+y;w^*Hgj6Hy5R29yt@2N{x^ku6I#}N^a;_uM`H!y&|R8a zC|8BzI8LP%3~yEHIa|Pd&iV0zoQX4^h|b)x+!t*A7tC?--P%8EM~))(FZ|?ekm#q+ zz1x>^3x+r9HL1s0P?znqm%mdxx}&X#~%RqkZJoRv?O z%-c=5IVyLMU(U)WOX9mJ*FZUua?f?#lC&aqN@xAubmJeS?D`=y*cg@9@{bNIw&W9w5IX|; z-&MQV((yWi-J*;dbfD~7Ui+@a8@)=7l*%s%GVww2P33UR%8F;6!E{CDZP~iuM8xwT zzHwHv{(q9j4?(ucvh((-G-PX?0@aIq6T65M3^Dd%z?VjoanaIIXBFg)sxHVob7Dc> zhi706IISS>+J=I>Uz7e}O+ntGaRqsW^#ys2Cl}=HeI{!hf8Xctr~K`IYC+z5$~{Or z@HjSmt^D7K=eg(|DI)B$33zpdj-gazxSbVhk&mHb@vxv+s{7?ED3;16M3NLj7;e8G zYH77pApwtc({aKGl^li2L2HrB|fwxSkPWZjSd&~5LfoW|FN@n`i z<+w&GnHVm=`$k~?o}i2l=I=?TcQk+hhjHaqVb(gv`2}x2;NERqc@WMbGSmCLYuqRf z%o&A3BN0O82KA64+fH&t7CGMjsYCNZAh0KO>Hpg;9E#7OmQ6*id6p%+Q5d%fgyR*HLj`YHo|);oUJ9a?5J?l zm*tl?j!k^7VDjCT@>n^$u9h<|2P6wF#J9X)` zoY+I&@UH4w@63DaraiW%pp-hect*WI-yTr_UsekGlj*d^@dGM%(3pO-ppkki@YgKL z9-@&~N$!0J3if)uWls&4{auUS2JcQZg!(N*`!{kMw+f7JkalLfba*Yl0AyXr z>l48-S$Nj#0eMYTMwXRmid;l6aS%KBWf8%!^oVyh>K~kaa!&QxE3=M1sTs&i2g9<2a?_g4?fc~5U_tl1*kMg49u+&NX<@e!F}X=vZNQ*G34_%^h0E*}SCeTbMlYx=2FTWZEqO{H{6Yr@9^vKr5INJ!es|>bB zvG0kMIzN>D89x*vw6(uYjWqhsjvT<>@vsB@k+sb7!%dXH$ayiio$=c^p9f=fl|PC^ zYj@k^2sK&an(UX`Waf)NI+R5(iznNqe^*h4{$28q|3CV7LT>*$`YXG2CR}k; zbhys-X63D~_NSq+`O|oJR1s=Dd6W6%cZ_s4kK<(jQ=M~vb|k@3lEzYbt++e3B=U^q z#-c=fUE%|G-l{tBh1sfyGj*RWQp{%^9}BhY&vX32dY-xcEy|CbTYi$a)$uv!5=43> z$%&QI34i*4GAoxi^Al>35h4Cy6aVtv&HU82PDN9^9=~HnhOS=Qq;gcAH=cOr-9-)@xNa zA#kFD?;EYC^&75&R@oKwjN6-T_iM^DYa>qAzqy)#byD3sbyzV$SFY z!H**ObIKBNi|(DzH5LU;k^B{rDlZgYO*7hy+~oW=gJV|J=V=px&LkSy_Nr6h--`(refK>eLoTH(7oN0V$AaqQ zmq2{))WlVUqI8y<0bFRo&vP_Ao` zJ_+K}>Z6?~JEc)NFx z6|50lZnlCG%c}91MYD{Cj$K(}&HP`N-y^&w(oLj&7tI_73@wsU8 zA3NvfqK(O2-m7f>cI%uQpU1>b5?@W67H-+R5SiO_JuMg**cNM${bX32P>~{J zv7ko|7Q4hiGDokAB%biD{1%|6wuQ@>p%gboSeTqcTjkGg`k}=3=$nCSJ9j=9Tkq-s z|0V~1WcG3sDz0%4VD#Nr&kK+P4A0%4BBodC^utb&#H)FT8Z3m&gTE3Mnz&xv`LYJQ z>Rh4I?-1Kd%XO;F``+Gmv95xWV?o^D{oLQNy?+4m%e>OO*uL?HMR$2P-w-|@H5+16 zZ!hl{q$@(~%%hnNk+n6&l*sem9x7CWdf0Dd@4g6z;P*ds$Xs`;)S&}Rc!`(Tb9h%i z$T09oY4iU13-xeCbl+N>rKajW*u-;ig)%iFBD)Ib6txppcs>)-?QWDQK}*ICp2Qy$ zcg!4kg;At0-I@ElIy|B5GNnf_ylPt?g4ajhy*wc~t&Vnlk znp({Jq{MkBZt#9Nx+g~a%Zi8(-nyVDg&LX#@8%(<8YhdV2XN+*`4~BE?o-JIgcS42g4J5X_Sjc&&gGb+PKl*sy zDb)dCg?h!>KN6t{3D(dyQ5}|M`$ZP%*c^9^KR^0I?HiM`yX9^P8_JfN=w3FvmR-wJ zGhs(H6-_&O#rmYf$0*%8qau}`4p*QpCt|{=ycj6N#I`n+`EK(QD!gAFr#{zIr2cF@ zZ#|`~{lA$cp=f#KgV&H$mI6588Inr^B=WZuWwT3gdD4bz zW*^OF8qH*SZE9=NjzeOD1^V*PvXi>uJK6)){+i1VQki)zNFi%e4>WURz}U8ZS%Sfu z++S-xU^M3rsSv6lM~LG@+{)_a!_Kw^_tUMj9u>|;yz|dci_MNCDu`}DK%Y8vA^~c3 zO-OxWXX1<6#HY2%OD_n)8LPk42F&e|++Y zD?{dD{EW~s_1PWzYqD#H^I+Tnl|pY_TEXw_qr3wo*Ekz=dASTJa;t}tz@ zn0;t!k&ef98p009F0>v3uaTR*?;L0>O*o+t00R`648?TV+kS;O_4ZVc>c3yW zC}<(nay_LOd0p%1A#`I;bO_15_nd(D?FI_BU%}htxJTpLD`yXkJjhhbx|9#%tPEXs z6IE#1%T!OZ48n3a9g0p`mmvJ%SRFhYqus;&L&m(o+h}<*(h}cMJ8Nh%a(jG7;jFUw z_V9vz$9$%D15;Fypa)BR8wk-esm-y10JYr~cft5U%q^e`<4oTy1iGud!91Yua(x zX4;=km#q7in|8!OP5TMfaxm*_0QW{a>R4gZ6hdOLSvqyD&62I!J{}_wuAqmJ#5GPF z!6NdvH_Rd;LQ+H$Etq!v%%Q;fgT*_*i-~jrmDv4HYDwHL;ECP|f5NFC-o(d0RJ~oe zUq-&kl@G#bV_2@eh)D>l@OY8n(W1RS#^kiNqBikVXqmLViD#CGk`rxuoI!dhuxA5t z2+iSXvBGg}7zO-W%BuKd;f?}>_-|>gT@(a6fD_jbDPnVsK)!-1MnYOUbs+jib)T5N zFVh{on6bLirBE|*{xB-D8gmLDuWs6kNd7AAj3lHdY#Zx@=FA>CBQ)PZiOOH-@CAo3 zT%eXvGcyk_DcpN4BJ-jqN_5<5aj2tk{^*V(v+cCBd`#CrQ}qwZICfh4C!&AC$WWP! zVmpe=+G+iv3X%D;(#l^+-ovPYU2pATI}}3u?bq`7h^$$PRB`rU!c`9j6KXz@7m+F_ zy@ujL^#szq#y3IS2qbJTgrYRDN#%P`BDAd8Vlq~33N>#lbk7o*_53gYx!8Yxp6B>Z zZVB6$9WxrggJUrX%W6R9dp-R^!6!T*VJO-kF*ey}nD>*tKu4Se^Iwc4YcAj>v(Vx? zDq;s56C={p+^Sz*T-Bl%5`W>lS08Ew6l$JfnQmLu-kXPQF76?I{=Z_guc9MbkCG+tKIQh4XvDkrwhYde_=$GlK~Lg4(1;Y$PJ9PVd`=UnMd}kP zV2_Nh!CX3Acn-rm-KUXQ)XWgvMO#;E?;f9fZjTtw^VRavj25BEY=58KG0bWyoyqK3 z^VtBjGucq#+=jeR^8r9QeYI1y@F}1%9H)vC#cyga7olBa@y9Gy?sYy5w5@^Q^7v<{ z{wd4z9^#mUCf^{N*aX#WPX9#pCa!ivbzkaUq2_&PA3-A2++Q6L1>L3j9Yuc*BVqT8 zB8|H%>`k5vEh{KpQZNku>QCvciS>z*3xaF@>66q2cO;>GE>Wvo1cTAukr$ zW)VmR#EytRYKJ~z2Tx2yiXWOz)nMvz>P>dD*XFeVvsCXo(Px`?BgZR(mK@5~CBlZX zHgf^W{`7}kP}a?C7nJRZ*L6@KJRpm*noLIqpk_bD18TDDgqmg8^YKwvG5Q!u=oo9k zF`HSZ8d}%|veLwPfJ1<+K9?jV;dU4+`8E$;NFV#;tToj%OL8oW&L{ zLp+y*;;x66sS)6N8XEv38lTY-)Avs5pUIlsnd@)z_C7)w=c+gE@ALgoOLyQ7_VV`e zR7EgK$Lj_T(nnb)#3pQAx@23K+7Ipy^>}hB)(>bLWyuPDq+WGffBV<;4S^}2J=DlF zd_r*ojr`W1HStyh-E-0MEhPW^$h)sdwY+4z^6AzJ{Xz;$_^tON z25A#9hlr&%C8!0U`fN-ui{txL5IeFJyPCkoesH%PYc{4w$>(Iszp_UJhq^V=(1Tu zNOThj_saz#ey9$FONB3~d|39^4g||sk){w>X2ULJVY$98@kA;d)Bxt}Zb}RoUr`0X z5IAzfH;GVc$tf2!^q|*e-p`H(8cy??yJKg!KQun(`fE^yMT?}QjXySY_1eNkWawM( zrcs19OZJUnNsY7?E+9Ky(r_3LKxQvE-5hd2Z8jknQN$a*oa;oBea|PIE*Y9r?(|H# zQ&p~za;CHznv3jUJo97vhrWCAf%je|tta~SB%RoQM}nNs$w{ovO5PeA@d*N*#SW&^ zg6Y@3Mjw-X$MTadxn(F1rcsRUPfx>o$JTttO}nH+j6s{&!*{B;?8M7ec}A#4or(au z`!-&C)!KNSpL9u8$2R_-a8H1y1FY{S#qOccF?N9&rF5*=M z@W|KbU#T#7eD-6(<4ykc-XW(mJW73dNFix*)^QLih#22KAk=&~X_HiRrY&)DQG5rP zCCaSY8EWpM1e%fxg2;th7J&g(D`Wda;tLz{f{?gMZ&K7ge%{KgTY= zWS_1Q|FKuGaRWwQ!D`S?fJ24*UwRr#7tV;rWQAP z6M`1eEw_1N{1ywXMQaGXOQx;(ydrK1T*a`Z9vUF#+^IA1g`6dZ3re-##=Ln0;ON}9 zhr|#qn3xC`dzj+M`9K6RI8wFRIXhv_C{`fBbzb5!z24}}9HIey9BN)H5=~4-0k~e5 z>REfpj8oX*W%`ATTMl|um+KsBQRXT3QMUZq<-RneL4Y^d22z~&Z#NUvxxl7pWkkvPer+Nc@0@XhM-6yjQIQ6EXAf3}umd$&fD>E1lY;DE z1jM#7+~sWk4~8L<8xHq0h|gKNN1ME{-Hqwgw6%Oqk;igGEF;(`27$( zf~&L5j`5+c^^3n|C^=c?i+u=EoQmE|=v(vW4JQerzsEVn=!?Rwp-Tn##Sw7fK~^CZJqr zpq+eyo+t6VNp`~zCaO+Y-;`1zahv!4{>q?QAk9BQ1#3zd7MEH;1Bhs2_C@ClvUQz;1UpDE;s%P zc#jfr4gbp3A;J4FWf{C>#amIY z3V_#I#egHZ^-VT!1;xfA+|8hzB}5u=u01tI7FXQCny zUqaeoU>&?^zfdHU$OZK3v+VN#&;XaJTF3LZK(M6)4$y*n2GFGj=+dtNw9&Va+ASh= zteUdVf!6?aE4=`yu*j#?ABmysNZ>7@yuVxCdbEC5A@Xqg6zQiz9 zpVr_#@@jq_=!@RxF`EsmF1B@dRq1x-$zkuxFcKh2{yoj1Li3Q@UZdKJF7!b#Bd5-H zc2}o$FWQjnpG81-4msb24lErjCT6f~>LAWWPyXxvcw;Z^t}=CSqxa4$`L?I+*fZ;F zz|2-xaCg8z_}j<-JB%rRmcQV6p8u?J$`78E4*u5Vr1jo5%f5U9Kkygj@@kP1QWA17 zc=#X_V0b7kM|^HE+NIwqwJROE=4KL_t2n=N2Wp+@f4)2E5L&WG?^Z-FPMlQ~U)4ST znX0q;%sNr@c0OtyCS&A7h|OSe;SDeBmzUr~bnOsq^$OPPU2=Fq-g0{j3WqgWvhI~n zS)G{7yc2^qL;&1$$(yD7<#n4#3mdr_rt6OA30WYl@mq%!{G8 z%?BrPyJVFHBmV94okx6y!WF2mZrD~jm>u{jQf>kLbG_Q8UVT{2b9)W=rSb4Sf8+{i zrWdb9~aU(vPJlRXwZQ@yL4a&3J4IChQGafE#$&~Ud!*%+~>8{^zkMr zRn$76I5DA5y5tPi*s2h!u_J>TS3cKyNOvg6ffoMbC>~V3h8c&|uB|Cm3$D4G^@91> z;dk5Xm+AJfppkRCG;)&bwxNjuE$I6%?(%yqgC>X5$9I<{h_Nthb>neqCaANk=w{K zf6-C4XO+|=n}5Exi*+!j^;(&Gt3YopinuMmWpV*fWfd2BLw+aEQb$V?26dumuO=@xs-=UYiLbD zk-O@t+iZx5`dX*(D@wO1T(q!A5zuB9Bwk7_tx4{eSM|)SC5!NQNiUpTk-xR-nb{w; z$9U2!>~67qx>fZ|Xz_Q*bNd&+aBsh`4k89q{HOMk1{}4Qw4d?QZ3W^%cS&t4|Xjq{h__8(&l%-+sZ&zKLhjC5QUiN2*MJ z_dpBL69psNZ4C0xc>zmnB9t!a#(T2Y6tLeiL9X?9H(6cb6%1_>X6cUDJH&CO*_p&(tIno32_ZDJftgFfK~wv{`?Y?(ngX!921 z&O)g_Q%V4U0Ne`IejcCj;>$97;Z6F=8fsk)&-n!p(RZ0@{J9br3ZG%u39#Pb>EiBm z5zFY~Fy1bnm3OjO&Euj$mm^Ydl-77^B;H2FpK;Gj)98MAF%oN=M&n5InGWns*S@4L zQR|PdhRfDgt(#vJJYa@RmmIc-+^Sz=f@22-s9J?lvLmX_JxJ?Mszw;pz(oUG(_5Fo zk9)N@{@Gr6+~HC`ZHPXOHpXKpK+<9y)21&la5z z29#mQ8BwRq7jxjUB9V-+1@E11(zdrq8Yf#lGfJmokw>p|$wft4L2ye;OrD{vJ-jzg z2bWuGW<(M{St9HtvyazinHI4-arIKNTjTmSF`klaO6pr{>UArV+^slu*gCU}zf$T% z1YaMm@@^%cl02_tI3+fi6FfpeYr&xpE9>DI=f)G^id>m8$?nyKW7TSt!u zu6*DPnPhdBTC2?BKEAw-cA-3mcA=&$*iyagfaBJ;oSlmUsgb?*sHJC0sVs+y7Zab- zQp~i0wqcZ;7K_#SoUy8#frg(MI;B`@_$$%5>>8?WZ#O1zusWNV;CKD?!w}tD$J6x* z5jU7AgYa8z9UmdbK(vRqKOrN?X&|T3l^M3D<$wSa=D3_+xO(OwjROKiR*AK?59%Kq znW#Az_H(Vgtyp>&gxC^=+zcir&ylmM10?FA(~7-UqpbW~1QH^QZbC4HbjeEPY; z`s5+ctcS%gZ;-hhW0Be%BSCpauD8o8=vsmmTL=i7A20fkx)w+MmvHU^;9vkZ74!4Og>fzb$K ztu@F8K&_SirmzoH#@d=9q67k{ciH&UK+`EkW7ZckHhMpF8Kq)i_+jlz<=3^cpFOcY z@iDSrsO4zjC0{qDL}PSrK*nU&8f&mCmNKlt617?#@V{ukZG4_KNy2YBmg}EnNWLTS zsW}62nd8Eue$nHq9|U)?kNd707xJ|x_#{p69?YetHPts#wS^6$DPN^g*%GEmlP|kFeqr zV&bVwMA(;e_znIR))jOSXkk67MIIG+QS0HGNvVn>I$3+0>t*(ljy@RUN*J;Zkp$UILyOb>!mprVvm_ z8~ra@igO2hNwlx@c602*x~fTZuc5duREz5(U!HpyU$%~oq>iORDvdyArxtt1)*CuP zO6NsV`>4I3ABkc92N2kNKESt`aUT&$oDr^1Jnro$N^Bhq&do1VkM@jI&M^i!wk*Q{ zZG3MqzPic<;ZXBSq%;!h2{k{ZhswEgLd~l!n?Y*lyo?82*u9&fe}PHc=1AgvoRu;2 z)+ZM5F^nidt|<_{kStb*vm$Z0;3)DUUwx!0E}|nDerdG{fXe&!!^AmfsJy1hjrw!3QfSi#(h01i~dhb#kuqc@>xrPt5dX|Z~ z@bTkr`e8ES-G&2(gS({%xD0#g_QWd!Ez)68w`c(?dWGh++;p?g(U!u`3&d|ScB$|_ zkRnq0Ns+?BazmE1Jd_c(cS8q`1hS+kY}8R(Se-jiVA75DJ<)HWKV+I$M2nZAw(6%a zV@^HzAuqI?+QliaLa`4vX=0%9aJuA2c^PJPNFc2|_gH6XWdq^3@D0A1j|tVX+`fmS z->{)q9{ftN+C+dS%9V2yNXZD{S1V#8f*RvpYMe`rEDGt8B050T=GhO=1H+&4u5oot zR~*I)3uWv59rCzV`d8joZWT6RUWRB%Wqh)}F5Q zb2IEWN8jQwEMx;>$L=FohsyaZD{lsN0hq>Z8l~98FG)BZxa2}HK2WjT`#EmMX3uEz z`kW|$%!bx=C`0OWwrBHzAvo@|pE9AvDmCKP1r!nGv?}ySjzs%{WRBk)r%Dn2jJ9&$ zdgDFq9=f~|95Us65YSktS&<%0XAvLsz{SRpUKCx@u!=*M;Yi}a8yS%f5k#1yH8*DF z=wT(@96154(3``SkejEQ_yCEezIEmt4YSZIM|F&Cx-pWt7_sFqdLOBJFS@r-9E~IE ze}jg!kuMs(eEQ_N3+Z4Rn9$%g*z2cw-QbCRlZjQ19tkbVT^sM9#UX#HdwQf$Pp5(X zn=zokEfF)?ye)s}A+04^?g`V=CEw-B0x{{1W&WBiQ=Be2!Igpba_d=|Ei)rsvX7Pd zncFRFjuLy@Z|?i97)&dnm+6uZcBw^(@GT`MR-|5C{)Zmq3f86w%AFtG|EdWI92+=K z@~&Z)NrP~|Na9XSPkhYw?>izortGmHBaB@NQ<{#JTr?XxfDl;;r9nVn?6%2@>>!<@;jGrE2HBKnC zYIHO{T{3{I_ESj8YMlH1B2cq(%vsZq;n;%Ld_A*LSpk!~LMcZ;HHZ;5o6BuB=N0vr z^|Ukk?tO0nYN79KI}Ck6_*~Td^qx$aspvhdjP(-Tm-Kf10#KWyL#?X(Xc-%) zoDUkZAAmD2Z6C3_4lywC4q48OX8uC4?4&q-l|`z7)4Dw?Y<1+eM4dc)VgvX_rQL?L z{ZG`Atp4n-kJ(7X263|hH%xaZ@Ghz@=9gF0#Fy1hnlw= z$+cYMNbbI$Wk~K0C4HVK)W`sR676;Z`j7zV`}+2_x#iwjHdqvC>Dc?$rhPMTc46qY zwK~F%H0VRW%%66)2x6dL{wXu@Rz7C?lG0Jv)uk!@?)%`hJ9TQYZbv6a%mf+~b zyM$^tvzXvyJU9dDVBOT{kMVuDUd$n!cebfAhmvT*U$#eB;AA75(haN$h&aSrPk^Zqo~`~9-L@BcNuzaLdiw)c0~5rEE1;;&ht z{AH8g4-0yKkR`N2gjy~$g@$2+I+`<&{&MzYqVQCDmK`JG^X*+(`Kz;lpDpe5*}diK zBHML!*=kHNLDlxlPJa)emC1AdgHBcZVti*|DEUWCzOdl8B;fVc5B}Jgb$DFXZgDg4tV?|wwXn1#c>b|kZX8r`LeQB;AxI9;-yZzReWh*omuDS|Bo^Sgw18QpEiDejKV{R@Ee5Z6S0cS6r%A2o*s6OGJJlS4<#@Bqh0Ct2YCe`APaz?K%*!J&M_#|bcDjGqYMfx zXPuw`DAvn&)rZ32u3X{6ntM|$0EpiU5L}*~HZUY!ZvRNa*^Z)E6g3jp6AdpIq-kA1 z2anxxKl)6di$hCT9>2+&Zd8tkZ&7IMYH74K$J)g^If8Sqt!6j~8h_wnDZSsv(J50> z9=gs9v~R2R7GBfv0)7aE4_^o^HmAECJza#HdZs#g%DIL(fGI&Q=+`BCVMrP@qazyS zAWn2Ru<98D34CN3R%u|$L4sE>KB=>5TVs4kf5d~vM}NO%HNczv8rmyVLuf3wV4#%& zcw5!|m3%<=AL2(>V_$@OnaH6)-Gm%O45x}1lBayfh9IIilyThl*I>F&`C-RV2;A*I zq`rxEulKg@jCAk^+4`ytfwYnX`X*2>=-0f%}_0fxkP6om9O!%fGe6ohn(Jv;8F zGZ;D-sYphi;;dj|_T(Rf#R|iU+p?~SjRuAndr4Boo``=a5FvmZTfH}^A zz|hS7!RPka2X%Xy3ztzLg8@T&yEgf~USN5sc?`X9>WPtJfQ)^r1l{T42Q#!&XVI?4 zR}c=lf*x@f%v95rir)qHB=G0Z>SXN@ndu@cU(ZjM>_Jxoi;sC2tu4@aIBYv|D^kIN z@?8I_NTL91pmZM%TnF?-bWiW(WK`OFSRuZgTJ(1CFJe4M)6ayo#Sn7DMPu8?RM%7gFoIYV;lbZrTy zN_8L^rNYGonUaBj$6x2F#5>Mut=6XQ_BBqqH43{L>k^lSMRHS3S*~3}^TUEve7?@D-b0cL z*&-v6ncfoDIgWO0Asp^aIiAG}8`Zs{$93LPFr_YW218osHIsJYNc2a94@+_OU_OTs zws8m|F|h&L9NKy=-u0g3)Sr)>Eib6m#6;kP^!Ef0*i%nlULU#dRsJ{ zi5SOUn5c#RuuLaoEQi*?C`Jzz3yKtEi}Z@bR~JR%Re7=B)af+ruiHnUqYnD_GoCVQ zFUG7!U|jF;zkQr>i<}vE_$z)%d<^BUwzUrLCL=x>jet{lskR4LyNi^GI%{gr=ZC-aE(;=kRii+M!ZFYl`<`#^Xx z)Hjd(7|dg@Yvz&Pc_VVnBQxyH_5dZXlRy;KBvk+q?ewjOW^T1kas;{W=ezc$feu}7 zry7jEp_X>Ho;2Eko*@@9M)v;nRTMm@gB(Wx3@kVg@=;)%HLI%;>Yaj@Snn-4@H9dl z?EISoLaRN>NEFWG=;^Kam}_V!FUmQQDPd7I=R};9{AjK0GDekS1Qr{?m%!<5;HvJ; zUhWNw!T6lUyqF(2f$7Ppf4`x6IHMoWEVHv2WnBX(6FtIiMT{O2$wYfc-X-|U(=MRt zs+sGEfvwZE%`0M_8NAr438y;QU+Gpmaj+hoBM>Eaa?ks}#NoGSXc;$?Pwwu_lLzD( zPo8KN_}b)2bG(1vYc?D93!v`B04*KuC)#WCj)PlZfM|%1dEs=oFMhT;v#VdPq}$b- z$~-KTf!oQ-U|wul?ydd@uC;;we{v%7+Ie_~ zor2!4Cp)fQZd~lC7}v~j(}{-?AAle*4D8aQzf30^kno@2q6ILdjVt8pAiWeJ6uht! zMJl!z#Tb7v<3G(Ge>^*WCEfT4c+aZouwk?{15R`l%LSYref-9qWLqj!u=!-TLp!C|J&u{`exEm&+*so*{wJWZxI2bUUnM0FV6!Z9iQ zDN&?gIc}XGLX}%&LM{XmEE3ff9bX8a0v|~OJ^p@gWT2k$H@)eu&QRa{Mc}DTtMU`h z0{j<$Hbg2Cz>|e5?_l{cv!AcfUsoPrQ|qY?nv1W>Ky#jw9k8hb4jKMu`m4o{crOSK zKE7xATYqQg{vOn|ztziC0j+s&{Rug;C5^>W+7I~JA3le#g~qmd`?}6f7d2(PW8Y&) z35-*<89(jEJ{Jz6fIE%OIMKid3uZidU4lQ~CSI5rn*LiGSM;wkOD*MJO=Nt`+*2Gp zW-ZFV<6za7SF9IfOmf;ndqjxZ$MC*+-Eq=6jwK?Q% z@`nDr2Tg7gT*lz|$EkVu;G%(uuSCC#OAbi8Eqb=w)Ov4xi%R6H0+xhrw;nrW*S3)OLz2Raa>Vre6g6K*`~1EdzteF&SR`2E6rt&PrsHy`wW{;-rgB8 zhwT)ZreF6_f4(;QnBffbS%RzrCD6iVRT{|E4oi?Dd%u#hhG^ zl{fA*oCrKt`p9GDfWtc>e_xluYT%oAKL3`Lm?27H!Z~$qWO2^~H`jlhmznF|DESq0 z{T0p_u!#RmUV7vonbBwDr62#g^XN;reZ9Q&(jD?9Zeuajs^snMh6tCM8Hta1{$w|@ zXRgSMY@L#BWL*TH|E&LCZtdFtCvNTB|HeTe>@vUJj$B&Ea3~w^-k)i6)aKnW#CEQGl2!15vYzs;v#i)^a}4!y zH!nN-3_}}zOXty_^NBIEKQT4P8Li*QQ}oQk0zCFbu(2+K<$7E60@SBd>9Smk&Yzk( z1H(W0@-V8LP#Q()aayVOCdc$FZH=_DLi%EH zr?mjQ@k;;4lyI*K=IDbeq=Iq#>5A0^At_^|dEQL^L8PhZXs+6AdBfV8uP!f1I;ekQ zVqMTgePR_+9D8^CE@%F$&$KAI}po2Eq z3aP}qeQAzVQ2wIn9_5Pu;8ZmS>%!dJjck8CJJVHlxDbiU(kFMQPa3H+a_f6-%ZR*S zcXYwco$=-Hj|^XQKXG;e{Oq>u0;s?Rw8I|bhhgpe)Hc?Mc@Y9Cu-f53oD4+70fBr_ zm}H4Trca?2*yw!*GTRdzaHh0K&L2)3^qs+mILFo}`&Qn>J|GM1$CHun4-G<2^Ok%F zJ=0P#a`)dTWb}d)>I_w|uhaF3xlX5hNSHaR?cPhjYPr>jDuG<1!(hMh5i|C-N ze3w8KGS8r09`Iw3_=e1z3!~GXn$T%aZ9vKBk?;^g0}&btt3V zS#G2SQB;h|bBef8m4x{luO^}M^8-RH%ax}HBHQs2XE_hGXtPldH78FyN;U|N&2x_{ z3i=b50_4qS?n=x4R`{ks{uod7sHG88+3`Q+{k7QYh@Q4+mxA;!JYV%#B@Z2KZLine zb-HE!K7HPz%8GgVD^D7dH?w1f>DAtMT$QmunwG`2wbA=;JVtaLF+!B<>AG|5oS$m- zxyb@*0jL=r16uuO>&c&<%aBxNJ$&ewohhW~{jXn7p19SBWq106;RkiqAMA06uRq9B z0yjjE|XJ;}9u2GlNLqSMn>CSEmok?1$$t zHRyky&5Sy;AHMDvoku<3J@EzU?);5vz#ZmzFWzDUX5O`bZ~u9x{dR!xKHDSqI+% zg><9A?v?dTy7NMKvFboH37itEMeJ{*C*l}q=vs?@qsU)aSY#QsQ|0)>g|3w&Jx&h` z`o*{Rj?TdCFw}CJnvqpN-m@Gf!nx^3xRyOHSNUpIjumqMToSPGJ-oetY-^GEgxX!x z&w2lXOA98cbEG8oGw)?E%9NC$ee%@Q=t$y6Wflt0Lz@dmZ&&Sy`s#s|_mfq%Hnx|9 zivE$x1?7rTfUoUFZ}AZIOy(lM!KOazLKy4^USd&>juCV#B>0zmxBXf~2^`najQ8f> z)m$4vXC~aFd`h%zozqv%XOwEvUI6Ia=wygi=)Vow1;KzqNyKEJ4MsO4@0@_9%|TcfLGpTN*Vub0aSnV>|;k`dm%dET4* z+Oo&#l5dx$P&iX4S<(k&^fu(aDfQpHeFJaqwKsS&_$ut*cI}#E%3d<&Z17ggN15RR z;&tAvx7=(f?2G8xge)73p^yxd6%0Al{5riiXSn{MW=Z!#u9ip1L@$5dIy_XkKkrQ> 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

peoMDT ze#hO$_niaa#w!7|empbU_7xuFec8A5B!l4)(5;ZRC zk|W75!eyB1G7JOK=pbW(D2~sHkN-%`s6OaXjqw(C;^QrATXQ{VLDDfa#!X{Pp>siSSzsF0Smh6>7t-*h$p z4*35EL^{@We4^U%(fq1_hbq%Hfp^^DuP_ulAM^`X2SP|C=wPAFOynf&yFf4DLC$F3zrG8EFAjbMNfUWuJ5t zWAInfk=r2@OxZTIM#eeia!3*O~ACx0)%^}#3V!^%=YQI**Rq}b? z=r2dX_jYEByg6vf(i5NcFX}H8Nw0Wtatp{Sib4H_@|);_!FuBC*6NbPP+P3~qd{O) z2engF#N{`U?mx3v$T9;?$APJ?lDAaFPHqM?^E+ZzpDmUA_wL@OCEc;H^-ux}brAHS zf|ZW~)9p~a<$f;I{{0k_THIV9%L@tGr9D>%?MWUCG5u@FXblk=T|+w0l(Php+W6_7 zuuUbjsU+W~@_pMRa`=Z+W!r^46?^<2Sn-$;xqvL_-{ULwt@Q<+iP4{>F zwb8%O>VFCTs^6EtH2I6a{5Nd9u@eJs1;-%PjjwQ&VegLx^ls>6Ocvjl%TROvZG4s2 zz6ZbV8%uiwV6DKs*wtO)tE}iDIQ$mGS6Q|Dv)m&CK}4jvQ<+Tl>PCOrkgh?6cI)fb zMb#wVk?hZ+VnuJ(iFQuc#g#vZ$mUBKfH(pokVYNHv6?d?BxzmDQ50op-cN?NAdJf} zdL%5Y_u3`_QtVF(69 z*M@h*d^KG%Ox#a~@mQ8!hE2*)(j~(o`^j(?_CuH9L1lRH<3cKBdhFZi`;G`Ryd)v; z(=Hhv-cN?MBf|_2Jws0?yJWa&KN+TQBbh_#M4{BsCBymMG8}@a+;$h6e#EsWHR5uN zGDR(ub3_Tmu+4v(L);|PCBE%}dFN47lR%@9s^eob2}JJ8lBWeSdXrGZ2+IMSgJsHK z+N+Xc<8o*Igurd`Hg^Xv*!xL%XNTsaf$`KGQqr1ID?0cpuvP@~b+`S&M(@2wZPx_; zvz&xj&tWfNx~mh@QQa_osmXgXz_cHj`dCG_@O~z{^ ze-*(-2Z?D|0lf#porAFq`M*ZUYWY^&n_uD!4hL{P0+iM4I=5F1_cS|Y%ji#0M}@X{ z`1)yPE-54afgQ#At zS=>8Vrny7B@s*scT~g^^AR9=S?q{TP{BZ7jsJ1D&UJ^D-IC;^`YrKVk>>-$g+0VWy zo*;-lKL>c@N7lqjmR`Y+;-9+{SH@-Hawzj=Acc6tg?joech#i zA4u`3Lu-ghjA#8R?|z0ogKl`k;KbBXpU4plryS|H*b$bE9<>YKxJl-hVh$jXL;fFK z{dMEpF>&A`g}?4;OI|U@hwRYg!AiTX(VUaL&BuVp3*|tJq4ZuA!HR zXhIQz^&9s#JtFWd6Na>ZAG67EBwbml>WlsRo{{<6IEi25?-3g8KZGT-|M2MT>g$bu z*4~9L)~xDX5?RovByvBWllb(9FZKDf#C_|%4ea2Lsyih=UbH_0V3=GOQ|zAvhyMLj zxxd$`?tcHbc`O`1u=;9xL1iGycXZhksbc@@R$C-=yHAD}KjuZaUJb62IrA-5qeaP9 zzg4_ys|Eiq14C`Gg$!?6RkbhY!PZu`n6legZu<}2#*!Qv2KMWj_yWgSPr3Plp^>>q z^0apTVYp@x->dte#Auss2g9wnamH(|txDFX&*pr_ zi?`C3sd`NGobWONq|38EAF4PxvSRpuyv_Qb`!7hCnpe55ex$8|Q}ZfP^O`}d8UsI^ zLws@NW@7uI+e~Kc`2Q5a*jd1ZDR8aP+LVnx&A%ErP3Z>zlaS_vd$QC?rrA0tCXFyQl}0 z(Fdra3yPVu$1@B3f^Z!BqR_RdJWDsQQC{KB>rd0Q?-t7$r{PgA;R&kwW7aqv6TH2O z?kp*NK@rW?9MG%>E@8AIc)kBwjAa-ra4tExe}}?rSE!4f2ja{N*F0QyG^yE2ogHia z1do9&4bg_z{3>#JzB2Xd-;s?4i|BhZ?3bOLm6Yo;U-ZO!yd^wS>>i{aieO|?z)Vs4G8HN$9Fkbn>d!gJ)^fCM@c;OS~i%!y`#4t z?tYg*2f zo1foVOp_Ya!$!Mk+vWBqBrIG#F!8s{KpG(b0IJ#K-|^?-h@I5PoQ?BD9()~OG|17w z#K?uihEZzrQDUbeFq)nin8f$^*Iq*@E!){3(bfxyMtUrd)UkE6BYK0Bffd2l%a82Y zZM{f63b$UQ$AtSNxABbWoC~}xv2DRD(}1mx|94RZun4aVqrlI^RIF(%x}zG zXd5#xxw786&#)bD8#5;@(9YeHa|`!lzVFgK;nKRVrV+Hbxhy+2M{AZae$QWum7tmlKCUu zuBh=P=G%<>14T%WuZvFGrHdV_qLrUDM2~484tE22t|}TD8B;a)lpx*kmAX|fGKSW9p#Hj(&;Gw;$OqY`K5*ru7J!56PaR?XK7ZyQQ6g) zc!mEIak#p)CiO->_hw6H+n&yFY1l4&D=(S0_}(%h7vjocqt5+T_CGDZ=D6UdDI<)Q zliVM0j^zyQ4;U^pg_ESZKcJi{!fF5C-XBm#0mRE+`BIp5tN-b10qz_91FUYRIeZZd zMDhqmlrBr2;dX7!nh>s$J6+{BcE1zg{-uR6^NqD638fCBEZBYZd3}afEhf42nQ7hh z8F{kudIqmCTrn5w+z#@YgOGB8>8jpr=~Qn@EJG zMvX20Pm}@8!7dZYt1pwKzHm9FwLQQKfQ(5#;EisT7=9Y^k-eS{wz>eFC+u> z?zN+^KR5af0z+?SOgre+JR46`LWItQP```+ze*qHCniE-~d>O=cH^=V`TJ$%3jIM-vpXPSD-f4p94H~W1o zk3;>XQ1)!}Z?_^h`#--%;?!wLW7tA<&(Hf+_AF{KF;%N`OdNK(0A5UEOV4K0IlR57 z8d!|RA;Xyo-!lVd&!re4SnqE|<#A_>c5#L;vr4*suIT!|B`*)9=V{1+#7TMg{$K^M zp47;ZYhN@9!$VvBKbY{?D#AZyU?)e$NsfRn{neQmu`*|f-|}X_2#~2s)r{8}G>(hg z1u{ptwaUe+>G)8q^Ct_$_ROK}to4thlu>WXY}LQPTU)z(=@@T! zwpwov`CV={*fzd=Ufaz9oeD=?@3NIR^+xc6s=>j zZhW_)cCGh(Lv-@mh7nKt&)M`3HqMnlab!4Dvz{FW-Xp zaGy=X#!uH-s)>lF7yRSja0fZ(Xavm84#;!HDGTIzgf=HBxKLA)R5}=+S)@>XbL;Eg zf&2>Y!JLMtp4s)Co{{%ax-jz!t}1!%cX~#_+Ya6aBZb{Gx*+eay!bj||B3lbKI# zCQi;WAx`&i@)s*1-$nM#T-imQPtyE6sgeZY{5-;y|J=5&hep-4aVYN3aG6+#@StrxDzlgzPs(S>feHTD7#H2w zsYs;q;~P|p)XBtgfkXLvf3E>w%$5a^jlOS?XPKd7u0P~-s>rROx<&PM(TCO!?-0M#{Y785A_-BJ9+h#b=P0!ngo!4 zXVk4TZ0+_WU~RjLRsPRLm<6B52y<>=g!%rw&(MSxNXm}C)2JjYVm@#3y*>BrY3@WJg;gz=^U#mszuEaPs{8Zj*(yjKN{;n9u zP#y%zpWdpmveEwo{FFU1o|=QfZ+1m~ui=4_x>sdgwx0@F@whe~G(4&#-m5iQv^4Az z^2_-7bZF-Ixpk3FG_oh8W4QmbR`>qbLE$j}`I@fMJY3+>(}0P`H-qsa8jl`jmWm@IWWcg?YjEJ)MaiFff7 z{L0T5E6lBN2sU4dG=?2&LnP7bnNaMgx}YIqQ%LW_gyF<(sdBCtXKAauT3K&3MsMpW<% z%>fB2bxK6C6S3NSn){TdxigIrJ3MI96%MSxt2$tNP-+NT#Ag3@57{~BlS8V-z5a0& zNiZUsKbp1wmG7%cB;^*^Ti3lXX@B!(u**)Rm?%pT6?2sIJmZjeZfH@uvK5yIOaH6TEE$4-h4zSlhBiT#N9NT3P4JCCPf7c3Co25^)P! zpnolojVf%tE*!5nQMr?-$O?3@DOY|S#ZA(wFD@s~m0!&-SVD~kKy4QSu=>xnbck(= z&y_bASQyF?aTw?yVCY{h^v8j|KVbmE4>bQu$IvhRMd{1R)EL(JyZw!4fwkFpl4HpI zi3cOO#w&Nw_}-M!IaO@EN~nO-Iv!N?O%%;~p-%GRkk-XhBZSK0dMm=8?8y>m?H-a% zN`0+PZvUK7A`QhX*L%`0rv4@St^Y>0%qcP2Hp6P7-AzH&rPitemv&}5 zw-fEjE?aP^`%tn7g&ija^_B!>tcNFv)4iOp26U}Cn)${z)V>yNUkXU=E?$0SB*{fk z1IAI0X}qzA>pJUsvwwize=EJZ%{^ZL4gE`V1@n}mTSKkcNo&OD0=tzwF=m}L~vIgO}(cDvbo+Iz4 z26Srv%+jCf@)|-ccIZc3f9e?O)l#VV)~$s4t^{c-tHM8r-pXjto%uzwbRA}Ot)K$U6kJLYTJw5L?{Q-&DG6fjP6;rpqqA7j1MZ<6OE-Y*G=ArHXt&4p! zak4gPPvFpU;#gfXa8!(q4Ec8)rZDk+C!w}y%4wF<-x|FQnLl3f2{Vvsz}@xVz{85e zvyI-4M$abz9Or3?qC&w`II9=x*=>g-h7bL8h*vt%AE?L6p-I*=H(Uf*9 zM0umf&F?1pG{=&{xI}f%XDQ)0toA`bCgtG}}?T8o2ji&ZxH~ zX>bH1QKe!9dVdw3R8M3j;mL&*IMQ-cNAE-*cAm%KXE4dTpt6bdRg-8!HYQ)C#NQje zbI=#2qKB}(HJE_OJsQ1@T2-ZIf0D}#B%8urCLV*bb(%64HhLd71+(lp?}{pzYdGu? z-SiReS=$y(?TnWZdsvJ{QKHY8lx7lljfk&hB@3|1&CetIii&(DF_O(<-Y`dap z+fGKct6XJPfPuJOLtSk4hs%Wt>igTtflbtn!NyR@;?nj4{M}H4)h=1;f7%q_m>uA+ zXbhgmdGF((1V_Juq+51Sx|yQ3_&pgB8fADE8adR2#@dgQN5xt{?XhfFEPb9Od#SI^ zHM|W!#B!^xxtWu|D(+oBBoFuk0QvdWe(Wx5YW0h#Y5rMxVyeFPSqeMUw}ZV^(h^oO zpGsnGKibK&KAA(Unbp?*$<44y@}N=M`~i1_h4^$y<_2C{NdvgohH{gDYC%D(NUYcXOO94(gyh_P90w9{aLLjA##C|&#~(l?qnQ+WVFrWf!EQt8|(pd z-Xb1icp%crh=2AA7!Seq(3xTvw-a~1X#3kB(&$}ViFAs#X{xO`D0=I5fcTGw_N6A> zwBbG9=sh*bE3NV6vxTgaBjI*2Hx`xcx~N!m@?T>>s4FP&C4`RiwA0aF7_v^{UDsXF ztT@3tbvweG+-lv4Fw5Fnd(e_^X+=A`QIQh0$w90lY3EkCy(s`^hy;NFhz)9uFq@7n ziPp!RdA+@&Voh1})}FMg$$LsQRdtD%3T7ou>BBEw|51(x66pf^{Tfo(oFT3zeBKUz zJI*fJU2UA*`WD}fMH_RkLqA%!E3qu_-+)|ll`KieJ|#xNf)?W0N%HTN-{bSGd-_Ve zoXwQ=l>f~=thWccNl454lUl@AEHz$A;_wfbXVJe+Rk@k*5clR+#l2UJY>$8str6vz zSJE`N!pN?RJgTr2L)z-b)>S1GQlUGVs%opFx5zj1-_zHBVz=wqp;iN3X64hn*2|-| zWq%xW^2f&h6VZg|K*WZ_BRX!!sBIZc%Wfs7j=SvkX%K1aX(f?6_}0CP`UmFvFbG0@ zNb#D&Sr)NwbL?I;U8bIB+ba6am|IRTF3x@1uf(D1r+f9_mLN96`6r;$HOLb=dh^YC z$Fx?b`GtYNz}n(1fEQo(H++#fK|3INg;d#K4n`P}Yj-4;;GH@|g&op>7Zo<2cYnbN z!(5U%lgke2$UkRmLdIrXz}Q=}WPCYMpTDn(`3LqNrP7Xa9=2JV>E#uSK11c2h|NiO zi$6(qvlrLSc4n@2LFv-Lnr^oE_pzWL%x!KhuqAKBTV|Hj&MaM8A5WkBvWV9?pRzYT z#Nto2E~MA)Ae<2e3MD3a)9Scs;jG+K zDSH^49xK5}(NL{)eLOX}8pUPZ_-dCAXv;gX5H`8q2GaWEB0N84Nu>5^k=sI%+jCf;!L~&nuf>q zr>@D{z>IGCEH*#hRiW!@j&~X@f`IvL>0HWQ@r0^$2G4Hw7bw+#<{+c0K*(=EsWxqT zjsVEi{}+|oA@IqyT@f%wz6xe_b{-bZ4D%i0SdLKCTwAwnf;UB-a|WGb5Bbi)!P+`! zVl@#qQ}e1}%Y4U3dCqsrwHJ+u)Xb~9{vmYexCqS>@*-f~J2pAg%qv|6RpEvvZ`bXV zf^-@~JlPytZ4h3(*ne`SL=gAcTJB-w=3Pnfv&{WO4(e#nXt_CS&9-O8h=_}fS9?|I zlAmhn1j=e)&Ah6_mulu!EMxxXbO9dOLHvI(TcccSHAU3Ut5`x9eVHO9(#ejXxB7ob z8eTBa?C0(7r`1mhE8I_nqrIJLKM6yAg&qR4QJw*nXmV&{!=hg%K(YV)#cFT=pokM( ziD7#y+|QuB6RuW!DZlUj%5PxOp~MD-Sx%gxEd#i+ecQqlLV3ZaXzNWi9l9|P>2;UMrzB^r@*PgDBjCmC7P6oZL4l;$l$m||vl00vix=|E;9m(7ib5t?hNSyYi^@HVml z*^oFb?j6Kr$gQ^iUw4VFnkxr$Aa-m8Q6_^z8>{^13GNdDno^5EKYV!sQ{EyHkB2)t z5*I6OSYrA(MN@lLa(R+BL1G;f^tn|`)UoKe4!I1o%=w3u_v2L%EBfP>4rR445tD?i z>p@AEMCdXIf5OM+_;1&MeRS6J$Z|<5;&^k366JH7ujITWzF#+19r04~Em6MpSEBS5 ze=#G8=;KZ3re!*z9$>H zMhcCWST=&TNqL@c(-}j$1TNKI+&I#?7go7{X0q-o7Onq?pazLz<U+k%Sa;a}woO_sXElTJgak+RhgL&nL?qhE1t$_-@LQW$ur|ie!+Bw#!K% z)G&^1Y*`DZy|h5Rt2U^K6-W}M*44&ouc4D!{42E|J1Qx=6A$8u9&;QKXKSJiY4wk7zMrI*>{;6T^X%Dw#_nbxB1@@$EDA2igo zlrB5D(fcHrKj8ntQ1<};B1@;e5S@fBt!}FMN?Ecwl<%cWwt9=Fi@YV?y4LkQQ}y(? zsl1nBph@w{8B#}4Wv=`e=R^E_SA3se^l|3XVj)QBM5fYw=v`Z8t6HP(@IV|{k1191?7nd%b7;jk@O1OgfpDKHc zlMV;?*SInVd(bSb~4I=+&ZE~)8eRXFo-AgzK#B`4wg0G?~3I5 zfeb3IiD58GG#54prJt)CD3)X2hn*vNA@7*MrIM1FAEWMRiDAVbs4|avTe7ks$t!5! zFpd@vh%0at=}_lX4@-&wn$5oAw#O&(DS*6%EV`{G0qs)3^;VqHJ?bi=>X^L_;b);C^Zb zo7lrDMUt2?q{eKtF?9EbS|@Jur?%*uj&7N%j%F->nFle@gIKfTEpl9#^~gu;PWD}J zDd*j$p=3OHFJc5H>e(MZ0@pZ68LqhD`0S7HLX-i2(kNZYsZ z@KODAI}_J_gMQqodBOdj%Wv1@;vtu_ua_<#FhqJ3$Y^|(nz718!MRB8S@4j*eSjpq z!A1nsdShNF#RGi-Yw2K0KwmfnwJxJ=mEWBJet!QSm=6R7Nf5}l)k9^GqNE!rQIs&w zJYlaV*I@(j-@IOi6|1m}$y{nguNyJM-eYN|)xqF_Z1&&!o+hL%a2Y-W&-*X8W3ytT zrFhI`*0vK5X1A*PQpt>+Vnrk@#jW>?2jzFIDkUr6hSB*Z*~DZ5CKy!X-^X;pRR@Ty zE&g>>VLNJl&k@hF{}kcDw%|T$7UX&qW#+!4Uvbc0Twm^=Geu|y%&;z2MtX{62;V~i+L>|UQ4Dquue#6nm)-u`aV3#Y_~^Uv)9iL+-3jTfKCiqu6peYDj{10HkKs(^Z#{oxumEHAs;lb;T(XI|PYw)1bD%zXnJ%Bp{hI)QnmaPVRDHE5R1Q*H}fj zxKyaRER(+sh~4t!tN`g_K|0Q*u*)eZP)HHH4*$VDO_WWR{LO1%Lse$JDgCXuaCiOF zCfAf`?s@t7_4PbMJ|31t6KBDTq9>0p0K7pgUS zGg(Hylvtn(Y^9;GN!0_qTNlS83i~jzj6QpG2^{dwx7CO8xx&)Hy^~j|NsVRx3kFyG zXoKGr!vEybmj~-Zq}gGZ`@n-j=pna1cL#_pVqs`q`*$%@o=Oc;2D(#8`c|hK!oMbp zO5p#|BL+U^hnsiFNrlBbm7l*iGXIUzv{HAlS_~rN_pFb9&A0Pbrkyt=Z6s? zR=o8a(a_6GYT0djODxMi9LGIS-d=yim&8Te#k#0<s^2167y zn8LWtUMQelB9@R^rdU3EHHxKbD!_`m3ebrogPMi+{?IsUAJy`@i&gzb|HuQ1Y{>n? zG&9p}rKk9Z94!K&FNMSGHUA@KM_fsgFo6;5=qtn7-X;M=MP4@=nRVjvW=f4!pFBK? zMZ@yc(vH}}<3UG=Rutyh{ZA=lIH{~_bfadXGJ7xATvV~_q(<*kZCHf+F&r@={?yZ` zxCi@@Z@ER70t3jxi^=SwiX|_r!U^dyp8~aRb&?@aA-^pkf*t`KZPQp{m_#mR=uEjt zlY;m{K~~oLqfY-+rxFPEF(YWfFJP0{!xK#Zonb8ii)s@Lr_uswmMbr&1=f^L;v*vc z*Jf5A&+y2tbiT$d%wnah{OJv*&SWOoOLA=?v42vNL|%vJeh+vlb_mVf?mtzpX0#2L z$|mf}n!IYw4%iOY`@cHVI?F$*PJ$2;wo#M>X^9C^4mcs~iv3fE)0oZv38OyEjoQ$d z8b8EO%rhKre`GnuN~x=#;`~gL2qK-n^1oW{9^_oKwgQBh1bk-HTkj=D=lZYZUrp(@ z;U(l6wE?PsN&4E0=N3gymlm<~6k_Hl&Pm5V!qzmuk+1+u8%AVXKkc=2-Z=E$uh}s# z?*+Ft>sJusE<^l)T>9onB@q<%h9sodC8_4 zVzRU(7=F)PL8r?w@5Z0L=I9T)2zGe=!48i(Pfv0E=^_N;`;5L%zU;{TV70KP@1H%( zIxPF;FjBF9!5LzNdjlU2)YJbmtS5O-Xik3gFJiS@j2-+3PA_8Ccxl1t3YSQ|*DXO-JR!LlM7g<`Ju2r%!(ppx{ZHiF&yfsQxB z$@{PZIVh8LI1XU5#Jz_qeo=)`l(w>js!izl2Ry98E}X8J5hudMvm%@-@utkiW=iKM zwG>qUrCUv{fiI`b;nf`fDF-NLE}Z3xPM3d)QvFqblw~q=8Jr?pVq9F}_HnwO|2qzH z%Vu7stqLi;x=~8n8I+n^Vv|DL8*PiQe+gf$Y;+jC!Hdnn`1(of?w-*bZC91UHJE;9 zS?B^Ri zDzJlvi&P#ivYVrZFb?nGJ6HardNc<&Q(qs)53yw^BbO!jEyI`d9=EUReww%0p@O~g zZeQJYs5B&--R2d;v!UzoL`D`^PQ@)3O%o{{1_hW&Ol-srXpaB2fqfWJ@l-9&TqUV` zhEDyE6dbEfdzUTW9H}Saenohmz<83I&GR&9^!$}|pn+diuKd?y^DSNs)375rz8Np3 zbn&jQbn$mPvv1IFOao#&%%A$g{Hd>5`cvTTrk()OMKE=3IrFjKay}BgBeMovpyjT3 zsz@#5V@>3{f=?x%Dn3j=a_CBp%J!FL{xgP@Wtc~Xt5_M%Bhx$*&#T}@iDb>n3QAo! zo}(}7*9|dR$s7cm66rEsJe0=8-Kzd;9Mgi*{$-qV!wO%+9zo6c(j~*#AsAAW_oo|Q zmMg!rvyjB2@s`P@(of^5!`9Oix$&h<=|Ug5t1zz2Ln1D=L)LASms=pXZM4?E?3 zc+>w0hl2bcG~|`Vf)0Th|3K7=0#1COPqz+{z_T8)j+tdWl4r&Ly+bgB``e~khirsq zv~4z_LS@j2dv-bZiSgElB?KagqX`}==Kzi0V*l{>dRh|iX1$H4?3I5xi%4(UbST^U zR4;!IE`{uhiKp?OtyP&g`*tMz`mdf=MCWHOWO3{t$l5R7`e+$NN0Lz`{p~oF*eXb? zcMpGA6k)$T?&F*VoMJ;@UK!CmS&qOyhRto-01`8hu9dQJ^y}I&-JBQc5a*9?5jw-| zHvHWEake+pk$4-zO4O`JtZ+JMGsxw;(jM@_z}Kr2X!Z)birxH6!7JLfoCLNX$pWCU zPN-h1aarZhWNXV@Q1I@w`3az=0y~Z%6U4+i1f4%!=aX5WLB!MosLGr>rOrR;6;4WR z=LlLqvg+on=w#+n?xV1SSd=6YkuS@N&;ROdLttNFJ~pI@#~V8BC$2Y~7lk;_aX9~y zEwBJ*H>c)tHaQHLKs+^vSw+aFr1JV7eM95bHQ?*{23-5{{u^)sr^mcC+4~H8!&?I0 z3eM{fokykim>uXT|3JfQJB$@=8zcTS9QVhIH^uwC$~2?a+yGYe6-uIRdpJl=RpB1CCjs-EWInvs%Uz+^@owkCg| zHMD-#sJE$$1G`AHny;5GJH>mxb3K9B;2ad>!QZe0-=UtnnJ4<~mUW0Iab>%;Yf+03 zdfpoksW!7m&Y1_ihYHO zz?k*cc%B+k;~Nm6b$sIfYj9L|inHR6Y4%Z|3 z4z|U(82t^I15l$by-)({zlJ|dBJFB)*tfG#`#*2DxgYnxvt>oNKxt(~xZU8;e*lu>zpUW`5L!Qt!q z)u6kYQ82$wil+4GZ(cRT**aK)VYmSQDFOcXeHlA$#NkOdnN{Przzk2nP54VPPK4E- z^S9gYX#10fl3*|TPq;KiI2na@j&H}fm^FH9pt0HH8*ccZY{h6gd zOt$Rp=n4MoW(SyDumoVb4kiYCafp%p?%5LYy0S!#mjWS@Na44BL2d8gw+y^ekWegw zJ`Ht)0`#7~=>HA9vq3L21C>{ENF>8iCs#fl){WYD9dTjV|H8)*+ zX4ojW1iE65LEVAyMnq^YwFl~JzfGDZ&->E9xq$wfhKV;Y$tKosej-z}d3UqFx5>;v`>2b!uEitCdVIEG4N{a+vAT4;B3J&sYLko*noCKLj1xe} z^ijX=&w=+tH^mb%!pRV6O%vmtT2p;PuKeQ8vJww!a(bI#!101Q8$ui}kZ$MIQ*n=! zri*R`BXTr9m57cOFTN_K^{(-RK$H#944wTUTnmkZ`% z+AGb>EpwsGiR?{4^Ey}3FFzf!Pf1MjT}v|Oeoa(e%OaKyQ$9e+14+i)3m^`3P37$Kt@ugX0XsH0asIV79hyuhljL7zG<*yrGVhIJ-+k7K5 zLs)m*AnM=}nOyRDyQ0a9RkAQeXYObmu_|7>bwRAL2<|wiqHzUY8Q|HwAr%vru>eb^ zd!WUsb4mm>jGAg!&u15|$J$;!5p!!GGyYo$@zV^K6F)C5tcfe*BVrZi|7H3iN*U{J zG&x1$bbKajp9(|})O{{y!#Ar6k&`^YuQ^(V1oA;VTdc-cEHaYMKh<@81Q8Z8(Ie9j z#e$M`{p0JZ+;^sF?&*zOT3AdsmY~G zV5!Lrf&TFnDmb2iDTOS;YV@BcBNXH{q2?OWA@WWw$p5wR8pNL38bm)pb5^N!b-#G+l*+j*$~OA{#E8d~aVm~AaXDw}EK~oRdl8hc zzCy>~HqkIZMQ#)K_?A!EO^PbLAsc7e)Z;;wHV~y9s_% zSl6_k>B)!t%c!enaWx8Gy-8Bz%^rqj!FZ~>xmxy-)M9uy&#yr%ZM_r5Mhlwx^Aq#U zJeI1z(5-6M%p%uJgkC7JW#bsND>a9<&Z$Vvp{;YO{HCXAYkN*jMDLy4GahYV2a&-w zu~ej=mMb5t+FU~$sO|S3b#3VRJ=13&?tgm%4V~Amp+gK$)!HGM9NRb) z9L;Ij<{w65TQ^_>^qcZVvYw@Vn>CJ@WB#zt!Qf; zdse*m#d(9`BX$RKfwAC)YZ_~J&o7P_<#3EoUw29Co?=S{fcIjq{NdxQuH^S!K_`A- zjA&dK7F685ARA^~N(;rmW*4@SoOUu%+DX01d^a#hV6U)gG{k|1R~yF>_U-ejt<+i* ztKfoCr{RR0?Y{H#Z-t`n>f)Ki%$h~j$uEE2(zU(8usJ~UM_B_yjnKBZ4J7bElV{6D z|GFbS$*Bo5uvNi+Y|#L`6rh0uUd-DJR7{hw7;lZ_nAhiPWZdJ%kg@O{qsz$?9xFqw zuCvVr#$!w~hw5T_N@pqxoB$924;D+);?-8I#3L*tZcyNTrYuK5f{Sp^TTL zz&6%yo!8&iwT{1H-iC3~8t;MeTDcQpAU7dI+vG;5BWo9>C-k#HVB-r6i0`5RtR}j& z?pS9(4rIN9nPtSzcf#T3QwD_n~8*`COgn2o^`e3mZ z4c#=eLydwqPa+J^(F!`vhN=54Nf8cS>trV%2JPHeKD;ru8(-`zAA<48P#9-ydL}ba ztKU-xi%(V%xG!LrSaxvh-rh?Ofa9xD3YXrIC`vV#iRZm#pSg} zCadDL&n5=y5@oKc8L`?wA4j#=!&si=-qPc3k$j6EllK~aGTyW3r@1whkzAvEGe*#m zEoAnGks>>ZEHAu8MXStZlFgPaes7%A06z{`KYzv>N8oVENtgErH@)*Zb8VHQVY>Xi zG49Q^-E(Pf>YTP*CwZ$eaUG1XZ|@-M0X#HD$8E*fzY(Sr{c}e>bG$vd^wuA;{FRB> z+|5kp#DMzzo`mSpG4J8ws2b5n-t0f`kn~Lv%onlLa)JEYzJSv5s2;QD`QJQAvVJ$T zP9CFUdF*h00mn7a`Q%(on9vb5l1^!gj(gI-4{sE9%7&q@sGn{OoXToH(>^;cx}Of0 zP=(f-mDz}4Oh~-h{Ok}9{s#Dm_Owwi5emh7Pl3rtUjM7P zfD;UO1;D=wc((yhF9UZcx$ApqYI@TUem(}2SOzANAz20Ye) z^8j+UP9(F$faM1K5bW{^2RG7u(?Fv6@PZDhs6+xh$JKfV1*vQLwD`)+=qPn9$U?u4SlLiGw;hKlgYpIQ3D zmZ5nKYVpg@I^Anm?T+wQ4WLtrkRhU%P@LXZ_-kx>+Gj&XS)B83;?RS*@) z+g)?`-gFh%5K-klFWZoA>5(kLRkl(&IUERz zphQUN^njsCoQju`5&zf2#ck^{Ujbe3^j)`9MOxqOvGBZj%SQ}?S8uI~#8>^JxG8;H z0`Jy%(aziB9!LE<61WF$%5CL=gN2)#YK~9#0~7x?5@m~Wx^GYXo9r8JeW!x*77_J> zeMhVCKvk#+77APzwkB?^8A};*k1FYG%?WDFbS5*SsZKV;(*uTdY0d-=M5;L%9hUV@ z9~CrVs%yewK@-3|>dr44{>SMAlJFl+Gw-Dyff3{0=|_EhQ0L?RPv8hVx_&)}GF@6pB6SnwwY@O)N} z(Zv(_LBtdKdv<$osjuFey6Bxxrmm{W9wZ{tA<%JbZYt!%ou;Q7e|66O)wSgXB8;_W z!7sP|a9gh|K32-snk!#;NGM^GvX^K4t`=%WTjL=R^{j%Zh-^b5y)Aa;$ z`h$Q6nN&WOS{%-1DwCaw#VT5@Uyb*B5Kv|!BHjP_PL>CF5MuAgiE;GGd*EpQK;H_i zq%4&=Bv-zJDM=hu*QHeRl=s`YsocVPRANSF_`wYFDIArWS7lkmZvh%z$Yb)pJAI~G zMK*#(pAB#Bk3PRgzIH+6f2PkRx;>!_efm*LmjWJPm@|^itg+tz76+g9AC}3@A)cBXJ*VR1~#Q zP!r>lfdnR!DDJdwsaVCON@Yfa0)mq$^L-dfZLPN27QePu?PjeD;L;#qq9`CLqEtoO z+8f6OH#U{|zd!dr&&&j(?f3V3{e2ncS?+W1x#ynko_p@O)0lF?jJNe=XMzw4$#ler znq?2=>w1k~P~Hqv*YPCTBbcFw8=!~U&e2tP46>;ks+~czg9Sj(C&j$dqxT1`BbKU% z<55(J-851}2FFG`Z+^bIUlCex(vq1q=OqrAIknGui34U%?R!#UpP5sO&r1yTolk!0 zD}vI>$`&E-^AO_qIXB`@;m4XP4_Z*Pfz1&IbS)|Z*CRSEseKN=a5mr8;lbAd)oOgo z6zT_EGYu!r2;t-xSY3;0g5Et{*Xcne(jhgmP`EvsQ^eu6qq#PzJ^B@$FpsNg$KZ;D zSypJ?I{;Pu>S#7JYh&_8F3iU^p~!MGl^t>ggsQkk)|atCv>|g2mMI_nix0%#ByYI< z66=;=t2}-I`*@`}+dYf7SeN|(^XLG+vW7yOpr9`E%vW+hYky#TkPVc3$^7-e;-btx zir@*%MuhKN>RZIFk0MiFf_@g z=1Dr5<@lz}q3|vDf$W8o)CyMK9lXkxf3}-Iu}lT#OG{4z^T*mS9m2*ZnPb=YD_U4I zlOTa&{mZ;wLSrS3N;(r%N9@kx_!A zt72)8Kn&e{VDVmM5fnRHXqNd{pFZW|`t+EP+5eJ$Mc!tHB%${1!N??ze;QTDzGN`& z=W@|!qOLTXT+BP?D@=IMK}|_$xr^N)<0F0vNo|g z=kZl)bctE`6Ov+1?1~jb7pZX(Z>QnV?UK~EVcji=2C#M+Kfw@Nd8n$u*R;xtrinOr zUvHkcM^o{O%`zmm5OLdFyCj^vliC|GafUB$go%@LxJA*I&D?rC`Y^e~UBs(P3to+xx%D76`I8WD+E`wF?+25giI(WgQobzB96WRD zApi9+ULSDeh#s#)vxmg8i(}cY#%zZ`yGdK5hU4cWa*=+BmFYmX z#4SD+1XSCpOSb&%eVDV=u8lV>WQd^3G5-DWBbd0=_&0Dgld|P|SFi;PNf*9tNix%C z>JWAurb}O`-J>Xda>yLbo=;ecxrEjzDgIN6b40N#^=rRWm{NdiOZfwW z7-p?L#Oj&7Hg~pP(KGMc=IC(5eiV#uPyg%|vyEQ)TzQzKKZ%8@+k#n*0uj56+lWID z_u6cE1Jc}=4ZdqLU$wn*_zXYFiuP;Am7aYF2H-y7N29X;bUnl(*7guj<)*zV*d#MV zK%~o0KMooE0!#(R_lqT$49V;hU0~;T>GD%}C#L+9dksM?K{Bk%FEzXUgHSAL0_@(r zlfc|8;emWzl8%KiyZ*w~OMfxb!fton^ca7|zF6b~|8b>19|pjCI^gH(dNAv2dJW_! z6heMS4Uq3z2>J0j$bZT^LH^l!xsHX@F=T`~Jhw5zoFjup}mY>EaLrG=Lhm_s*D?2zu#%-G^BTYkx&azPWE?-S(4YDcy+ zsM%=(M@In><_F!13fWJQMx{7l$|IM*@{zBOUrJkQg)u?mtchAfAzK~|8cVPWhc9>! z?vc8cmSNibmP>4(_|`hXCEmdNg-gPJe$&B2ow$N;{4PybHIgCsepGnPcrDpm1g`-;+Ex-BaZkXgps^0Y*C%R zpdeqIm^VJie4hOxi|QT5s8fZDA1F0{>y{b7+==d&qRKf6LaXuiizV)hi2DMXer^yD z7m5bktO_4e&>mg5TLn>grsV>4flq&w{}fwqYG}Bh+>ja^{hQL6{faiN-D{mc{%0TS zk3W-=Ky0~Q7UFY@(E%?z$d4Kv&AzdN%VRFDKCXh*aVc>z3iKzYyZlynv; zWBnSk^tNO6AOQY3Y2U~qrc6cVtvQ>r95{4b>4%lD=ao7O_PEl2=(@$p8Th6pTRv~7 zsGG&wW4X}psrDE4TYWS~z^*l&?9=zf#m?>PT0_Fw2>X#`sur2TRZ`es*w;D9W!+1Dt<||&t<7wQ?D>8|lwV+Iu7E#YfqdO~ z0DV2riKvXO?N&a7MYjCT-Th9F;zFJNuKlIcZ;Z5^UOjrpPM>H$DwHI-e*TrO%n_~^ z+l%Kv^G-MjZ`aA3Jk`rvStEna-v@$oUHL$mt}o5=kWY{835+1gqg}03xR(#4Mn7b# z(~}T>{4m9=3(jm zyZV&hR@uUnm zq^Oj_orF$l2a2`nwKK&IB0E+1RR*^?b`T{zPFn)Q&04Bab}0u%SnS6mZZJ=gjvkro zfVJ|+UVt7Ko%v1l$oD^IH77@MIelE^GJj$^4w40|se+ySFRW1AXyv+W`Gx(}2RkYI zHn@q5=*`oyD5AbozDG5>!3&;qkeMZC*cmDMwIfmO0#7y^wS9zJKXaw6ZMnG^182ut zeP{Ph-pW+1`7!I^nf}a(VoFda7b8^@FTdOz%*RT%piVhuQs+8{zR&UFL#%vZ8T8;@ zXAf}x>8$tb>^PMkUj_=KX4>o#7k0mf3tG5Ycp~CT8g{y>ZEasSV{-DOq8a_oCA;G> z9!S(8yB)uaDQ891nLd{sLbt^w!yv;3U9&&=$bd^A$11&ynEyT1GRO@@j_RsnP zI_7+*1?nH31x{YR@<(# z`cv~mt=gdHcDB~nVdTxP>TAQM_mJy9ReGEStn>z)i!{` z)Tk;MaotI#Xt`O!RTL9puW%)ul@OHt4kZit+wLzajOWN9X^Z(#UNFbdSgdc!xIHST z-G2D2EQ00cGTTV}gy;fa%#8P6jCU_8bDcI%vE@~(1hsEzc@L|oLE@a_NDjyIasO9` zYRPm_e;7alC1Q!zlY+^WFQ>dj1>!@<1A|%-v4Y5TNgrB&w2l8%6mep(rT1KLlJ#rE zYNm$RzO6jLfx+D08q6pt!tp)a-qvbPf7Y9wea@S*vjfZeGFK)7ElEJoujCCQiB8_k zJV+`4V5dr{hK`D@gKraF3c=ZY91QQ4RcZ}Zi5*Dll_%uwp{y| zK3bZ4UNJwprMZ1s32;kuxesz9oyQMu8$bRfV&&6T{GevUujLRVjeEolt)Rc*NKeh^>7X`$`&xnN|6fti}A74cm;Kh(Me&Asn@iLKarVFK>AX}n!T zWvu3g3R3Xb+z^V7G^f7?74|UbD8zI z%lR2rlpw#!^Yku7z$;wRNMSjxP6sB6y{ESs4xDC zHP9cuOO$X_g8`o8J)ERtzSv$11`9CEsQz(t0r^O&(kQFkjB1ihy?GMKJWSzveqlL? zb6$R1_-qP$ofOxr%xuwIejs~DggiaO>|q!in(|?;87zVNnjgYgZ_6~$Y+$V}*r#au zZaFvR_mHac>$E+oSI`KQy^^@c&W7rdCnYwuXQx`Wx6hZxd|IlnnKCjSq7A?ESNKGHq^o0?S@W_gFqv_- zmf4oHz7C4YLMUt^BujFu%&cWT6tk&K)b2XbRJ>*Q7N6up=%KkkcfE(~Cl-?ZJ6-y` zknD*q3eR>kD#%`Wj3VZV-b=~$(|g=<=GoPd{*)>^T8h{d{|Pk5*+g+OM0Sa~3~bjI zf8L&*F`%LL-EjN-k@7P|2i%?AM0{EF1g$NGC$;O;tmttY* zZuVW3`>8%bknO16yH8@XD^E~b%WJWRvyif9oAvxV(yxd-L~JdW&`62tm^Wc{F!Rk#aje&IzGmdXWatvRPCx8 z`z5!QV0=nSn{A72*AqvgEw1_G&>|E`Zd$lAs=*x2VhIeOYta@1kqb5%7fGMf$6N`& z<2D=NX5epfMomzG+Y;2zyvH1YZ>a?ZVEa^1g)GfF^BD56Nz2Hr^~qq{U<>Yq9f0(V zW?!`C)r~uWwCT#W2eOb;vp-QO>E&?S-R{y_65m~Fi^!4~W@}huUVX~x`wm+#D*Wb^ z*{oZ_(M)TD*?kRrwlLwQ)`Ez}kH1cO>_=BL1a+=I)`shWl40gBY93As<32h7M@ywW z-bWaEv*m99sCUl#^07g~W`k=OkJEPg`d)?(1lkvV`vnyjkiT1h$l33js#!XKPJQbd zh;qIerVsHOEOjL8mJ+m=PfrH8Fs0Fr9{H@Z28L_3wsgACdFquR#-vq+e*xXcwQK#2TXlF`F$H#q=nDte8$ z!KK5xU;I+z02hSNKI}ANJ)%P|{QaWN53BE!C)8YA#g2t`8{RQc8IvatI)F#XE#Yu_ zcl0fuml51+H!U$`c+!6Rw|+(0#i>DGO{^+9Ikg+2wEPohKPRWoEW$-tzUH6qTJf3h z;rG<@3R_#324EsmyZj=mP;IK_(R?)-B6)&pPQv=pwW_(tf9|T8m8)hiX7fQcSLdr4 z$>X4!>JReOJmFWVYNns)Ac^rTsN%4E72orVszcu|fMh^WMQ7=@i+pE{&}v7;;qzmj zgU{aqrCCJl;By_1ECyt@fzKs9@Ojo#4xf)u%ExEl0(`zpp1J@Lzd+{dy08bkXYxI` zCSS!zEcyjVIKxMXaM{TO+E&q7T2E;P7(wHD;Om#bA0mU+PrBadk&{OL@e%9Hm>DHS z_T0C&=k+af@_OQ`FqdrdY^7g5IOe4lwj$cxD?NsT{rX(T$pUubV`h;v(s@-zq)*9i zTKp9@Y=ZDf8@)QPE%%m#RI~9PsQO1v#2e}qO^bXkuYgn-^)xkwVU}yE!f%QR^h;*^ zO{&SRTJM=2lfBA@o8IzlFODS zcj-xchc<@bK4Ep0mm_%@gL9vq^>)$BqN1I6y25*jbF;r3is!C%P|SOUCBd@~aqa0e zfKQN2l7ToaP%m=((3LvIm*rl6{Z{Z2j}q)(QpUHB%{8k8o}AYlrk5`LbPx7KeE?LS zaG^f1Eh<~S>W#bJ0k8$;Q+T>zh+k){=~dDBaV_v^koI ze_bwL^nw>?WYffo#qag4Ib+y$$B>PHBHu=#AV!X-!6^}$N5em6-ToutuLA;CTvqWj zsoLS&Y{22@2-77kIKOqY0(%oz*Nm>X?p|+P30dEiA*<_q{S=7gEz=nv6Kppgwy{vk z>^0ur&#AQjc#PBG4?r5Tma4bW3rWGtveP7nM|_PGN^_Zu!KyPCRBz2@j$}5;iqxQm zb}&nC%@y%|@Xy-kED=FP5i^`m(CsDNbcS`Qy1+cLVOw@G{w!`$42tek;Bx(5z^|2+ z`iJ>9V-d4Jmu5HR#-fTRTB-8~;x`gAq>j~0LHlCRYxv3BDv?(kE8eP%Zt8NALvWK2 zy#51+;Gse=CtV7~(c#;;i-70MX!>}5MGh4=ahXF!l{w>B+poin>sK$!2_Iv|2;&yh z{)&}bp%U<#82tG@i+lAB2a@e`9fvol$L^!jLEH6sCAjq6h2gfn1L{)-DuvrkrlLj6 zF2FR@v3P`~j@>vd3X%3#CXYl*CEn_Og93(>>XErW`Tlq@(Sx9@ znP6C(`x3vPxs81CHk1E``kFsfcJMmfrZr~sK3fp$Ylh)ef5IlwkKu*Jox?_@2d6qRradxh^qL2M^RVy6qoF7VP3VFy`H{nFbWwIZwYBtwY=) zKQ1%7zCO_WBgMqgqm+MO1A?Q>Y|B5K&!7n}C4RIzV8?sA^*RsyG1$cL0K>(5v_**?jyWb-J<98;dinBVN~3Gbxl98s*$RGAGO!oQ`fI0F$?| zm{-!J5@_`ap~m!MVzqj2@<^|)8brym>HZ^C>KHJsj`=0JtqVxo(PfO$RJi>{U69t( z0a|Y;#?7GRB zPyhjG=t;{o3r1v^$O*pEJizh^D9aZ?!<$mp1$~-I_2Z%g@KR$+xRL>#8dKJkx`d_S zb#dmD%e&=$0-$i4E*iZzG^ZX1=AI?+&pUTmW)xx+ftlR0YoaP?`b<5lR_4ar``h)a zaJvp`W>Y)=7MUl$WWgsjrh$Z`8A?Rp5)zzo2ji|r?^H2ANS?ruj!yET>g?ozWGN*Dw?&$*e zw3^jm@%tc8xKTMSk3{FAJl$jgsW6Q@D01cbAZDKvGlJl$9#4qOh<$>;c z0@ssJpnBfK_1**Absg7bm%y?-{}$IJ{aqI`8 z7n3QNwBp&I5O#$Sb@_ z#PkqPbMU}NZD1eRDSbZK!yfupYY!60&hC*tkM$nYY5~W=*zD`rbLK}!YL=vweH%>D zUBh6;T<5NHx!GK3ug8U~BCv-PJ@QZFv>#8&hKGCIt@SWy|AV`=Ys1{m zcDE8VI^bw3w_g8Lu{X9v*6G+XLQFhzNXohx3o=KKcWIMd3gzG#zl`DN7&6Q5yrNq+ zr@JOCO(b>Kfjn$py#e55vZf{iIlb0=6(x^7>0kLs)R-Y0IW*O3{xe8dOxS}doe9cW z-A(Lnw%%A=WW&#y?65E5Lnai2-B3BKMlyTzI`3m%g?airo3fTVh`!SPVL4_)!~yC9 zt#&$#PJ?AGrS@cN30tq}g(lMar~5RXJ|FX#T8uB#*1o1x9YDn*tUwAVNN&=4^5d;- zN=@p*)@Vvi?qH*$Jvrzrp%f|jLvXt>zF$+#RiVTlUbGIgZpM&g$F?SH3MoKjo;R{f zjQcX=X+D}E(AS!w>O#8Q?4p@lD7&lG{K*%r;(z=djqqmJG~Ct>NsERim{%rj!tz{S zztiU&2*#eyKw9``l?3XasY_n{|L_B;|7bY&jP!pQ`oAB-=wQzjYJW6bw)`BmiCjQ| zZVt4+EN6*hjphV%v=90D{0iCW@}V0w(*t-df{fQ3c9L`qYrs@E*migL1mRgS4FSyy`65K{~E2w>v=w#`k3B1}dKeDYuNj z=AVV%l3}GI>P?NGHI zgv}zgZ(Xzgl4xhq1;T4FU%Q%^m@_-~b4p|5Nl{8mSv)aIO5JG8d)XGEr+ota{H;#w$TkoApxKjDh!5mwGK4v^)q5wGp5V_=TUvFNz!4?04 zU-GxB_=Z6~f8%WYFSIjC=9!bbC+S*E*O?Wn9Z2OwrWS} zj32<8v5A-*?tC~_$&QPEM}|MgN?pZayx+H0>=?_(gKb%#i4W_luQ_nu>8y$Y`3t5W zR*2c(hqzI{>GGq(KD70z123UuW?*OOclm{`ihR>v9FF|Rmalm;VDk9&%2gdRpPeZN z-#o9;8Ta$~NXEUT-tD>jVy%k(q}%6iYu!8U-T-&^uxyC90ci zE(s-e_ZkXEFXlDGnh?S4|2C)LUo=-vbzT0cemMs|AhGR7XyhBY5t`~o==3w}2>sUs z^vS>f+W}hp_pckEr&=Af@AB&gX#R$R0UB?Gvj(U@_TH-67~U4}C9yo2vANf;=PFwd zhbddxyUH#KFKvwm&X4@~#Qy)*hf6tH!@PB!>t26>mo8twQ!o1P_v?azDAb3`PW!*> z!|%QO-|EA$YO^QD+|g4X9_T~f%&!}m{vQ<%%y#;4+w13*woo4)kF}c9 zha8@rHH&yJefW-kS!a=bBfV>0^k4kkRp9HxFBE8;*N4`hdbR@Yty9%H3%t@}WEqaI zPSy2D8aZrQkW=J?!7^jf?lqZdFxAI8${kI$-m29fV8WvsyP8v1bZEX=ZuYexRG2aL zmrr6IDd10uG;{oFgLg#Kn^A@lG#-mQ60NzaB;2+qRS2^K?STO$F>ey_#;fBkP2Tl7 z#4g;H2At-aOGAl$yit~s%MruP-oLe>(;EdZAKyhhdPFGtelw~>v&CH+oO)THQ+IH& zzmz!{tu!W@{HhPx+R-JMBUEfiJ*qxkerv8&C8Z*i+V#3U7wl3LE~*dTW2S`bSwu^h z$AeOmI^iaKx#{xO;8`@?fI8VHe9NaoUb_6)lbGn;!HLuLOM+9f)8*f#boUFcz}dQ9 z?5^$eN8I%Vdam$5D!EA4cKtJ5Zl5ccB+qSmS%O@vp3F2ZzN3pNT%4zi%egpL7vJMT zf!`0=ITN!_Q$#y&c!@kFi|c4i7trTEdPZrv>J7{F0^a> z4_sLMg8co-zCnZ(|CA=Peef@&%kK|9uyyH!WblFH5wnsk2h3vTEg&5cp($mO<6Se4 zufe>6hca4z;-jZBLyIzl@jVKD?!WuK2%b@m5wbn3D1M#|*TrqM(uCQ;&N-Cv#%8a+ z(vrfi4N!+VRv$E-*_Y2EMY5+LhanA=)ccXa`=GYx&0-EMr_j!c)<%w_kYRImG&!U0 z;^~u2KOm0QjH#P`K9oI-&zAwD1*&o4m^%8Rjia$NL1gt_$ASoh_2~ndVy3o@6FZ)% zFR8nLQ{MWBglBD$lW)q{XXt@zgS_#w^}Pq z3~cB9=jpsY^V^@X7vj~9P|+icLq-4K_apwk;IBXTyYjame|o3C;rxx{PvuYWpH1NR zRQ|rl-{t&G;cps$?fj{(;M+0W&*krS{^s*{KYua;g{CQXKVEXG*6d!3x7ax_kC}4z zTO+yWw*PUv=@ok$OjnJ&4W_HFx!Yj6`W&}5ER7BG6HLFm`{4tVZ(Y_tvvf7ie|CM! zUzO6bka_%vh{;riN$MAh8*Bq!0!tJ7QJ3jKait}66Z~8(P_OmX#$A2I`n4YuKqI5o zL7@KQS0k@A5~i$)V_ch&XL$2DD-uN^=lUc2^wr(A!5bLMs` z9sEWYHaK{e^s`cSnl|@;4LterY4YlZNtFhJy?r(!H{ONt&+M@9f9)qd@y+;G$R4ou zGyc8TpNEI?)_(Zr^8XdT&9iWRBfpjH-8(H?A zIDRO^?`+Kwb8@0F`*tt%(NriTm4V-_pId&JIkRwl@U?TspX5wYoJIR_5gRYId(iE? z*z>u2NB)jsn)yfsnEy0>(9?uMdg?_Uv=rjYz7Mzk9r&DKE6G1W=tmSZrzVCF2ld`> zd>6)h7^?L4HK|iA1rQieAv3~J1W2Z-J&GY07ZSwHvcCeG{Aq6@zG%-0V_^s1F)ixSP zSHqkbuNlp8Oi1a;axxS8t=ZB{YDQ?=C72!ThsasM!Smkx&?g73GvP6{^p z?gXt39)!P+4K^{BgO#+1{jWQ-Bz&ChLt;p94BZ=E!}#v~r23(*$zU)z<;{%$N(kQo z`6gHq9(3gTp+)AfJ+#EIq0yV0$Nd_!JLisrA3Vs}@@t+4_skb)i=|()yj&kpvz(xs zu0&_C^jTErl1YVPWIe9m~05tL^SA~6Ht9XxoXUqS#Ty`V1 zrpqt3bxhyTy`DE>Uii&%kd~*#Q4C9+zcP0I64t{T7Ze>-WW8`U4(QRo$49Ok9DcN; zF?>(Qlv2E^nN0Z6zHP+D{fe)*>+n~f=Q@0AX+ej7%Z(}8zQYZ`WCrFt{5yT34zFQM za~=K;M_~$cVu~mA!gH9g9o_;A+42?7|S&8Y7$Uwi%f3@~=w@ zy8I9~W{`t77~}ZaX0IWBZ_?!pR9xNtw`eLD-^&Ah(A^c5*mB)flCFO|>vuIZeFNj$ zMjdvt`S=@R=`M38pNQmOT9He1!5et|750eT#UyYASyqv1xUxbJ;E;nw4t@HzE0N%(+M-{;1Rbu1T*Vz}*M5$ z+(>??Pc)MIsAMpb^UM4KjAV(cBG0K6RFN$&x4>IYU1aNka0l}S!aXpo{dZ9B-n~<= z+n*;=-hn?wzuy-99-61${k+a^62*MEG*(e)NM zI4~9LFZn@cy{}n_O&`eF6UbpD14rM4+qBor>vO`VIN`!ST0)@{j4so^=F%Q@F*JP3 zAGl_ka`9nuX+^y`Gvlv>ia3WN`!;9BYO01EHlyeCy_G(B8zLXd_7H;U$)6^aX zFHWx07jN=KUC%F0#%_N$v5Xg3XoXdsjDh@Y;t#wC^?YGB^(B77i%5?b{!y{9wA*j5 zoSIMAI3>F{?5sVh`_-nb8$6^34at&aqC_K>F8?DdQj#)9ONx;fkrUK(dyo}su0p?> z`E-?P6y_(*if4i=O&YXV%cWI4DYt5-m<1acA%%_Bo}_wmQa=H$_4Sov=vcPo26sl_UKDNuQ zTNq^j1RaG=XfNJEp;h9!E?fTS67^%PESqDqV_EMmU0P&wbqKEt8L?SO%go?6Yyvrq zvpSh(*m1e-_9IqD7uXuT<>uMBq{d*$%4&BUfDFaxNu9+q4~b=fo~K|}jfJLT5!S$y zi|ZDZ@+!kNjm5D=1o{-2-wx0~pGuGeu>*^Txrg)Y!zJC*SPitzgXTN{4huW_|)*bg!6{{F~BF7ZFkA-7dOmlAQ<}Ux`}+A8Uq)qgd*ewE~XeAVh%Z#3O(& zb93h{>v^jGggrj8XcHENL-WIsUTlZ6^X$VV-LbF1nF!zQAG7=NMJL-Qbcv}!M<;U^ z=kRotqm#R~^@gW+U)KnMB{xF;mM5jZr=!JoG(k*=KTx8R=|)HRtKzSkKM=O3ZF34X zha(eFhMA|hF9sa4vwp=oOi!}V7m|P8KM8ehSvZVpvgK<#a!`+ui?SHdHMZ%}85a5u zOXY6=+F)}ium@vo>;FcuJBwemP!)jLty#|3L0ET&R?sI|ZPCr_B%#yl>Bl6z%igGx z`})QQ(73x#c0oRF?vonD+Rdms*<3B1ZC3cvHG*uA26GQXsYv~n?{^SN1ZgZj^y3={ zHLk=L?e;@u>wT*i0NLV_>rX6mo)29tbGieqw-#nSBTQr#SW@FPV~EkI5r&A_*#E-fbF^g;umZa0tmlQpy@1Zd1m>nDg;shlTgW%8A@qvI6-?PzMZSAEIw)6_~6MgJ$ph+*R5h<*7;-zV-WWm$+ zD`Flcv92P!4rkJwEw6hLY4{Zuv z*TuZOwCwtKb;EZ-*mZu#o!h~ei3adJ%ayqpzXzP1SwN&VY;QUA}8VHow_BK6-{%=XVBWsfI#u?78y z@cu^4|9i_4+i9_%*@sKIZ$OK&<7Fy8J_4ke;J{#M$13~RoxW#fjDbB@{?4;;S;D(9 z+0*e|n!HghG4J#;bD>xfC0k~L8CROC2Qw|C_`wuKWUj$K)`zWV5JUL3#iXB>N~4^qZkR;5JP0V8P)C#kx5$UO)nG4JKGFv`jA)TT}e%iKKJDevv*gQgx2qBX6+_o`mU`f+E4UB!yATuV4Ol8kR zCu4IB8*z8EG4lK%SG71Hnz#RiZHxcAxv<7TVE--1v4L;@&e_--8w>`_9ogWUtpuG! zd_^RndTYpZGK)-)*{VIDYkL&SIN#Id#Rb|6uE81@HE@?kGUa zB>#i0+m3%}2h2^j50`W|e2uLuk@1cA`$a$>3I(zFll~|ql=P$9-0oCiE2Ek;*#7Vl#3IBTOPvDBGgSdFzL^U!~whXVN@RoFD{Z+6aEgI-6>+^|sW z?UTVXkL0>h>Cg9i?Z&>g8=2!enGH&rIS=ZTfgXuj zXK}y7WRo7)sCvcNpJmgmx&xr>GQ{MV*DmrwnKq@GH`5b-SS@?6KGnRQr3rqFU8i`P z^&DxP;wA|>KOQ(;`ad_*vGxyIhbxd~#@_tfH$Iquixay?pBTU_F*7v!#C!NKGU4bG z1G%SgxUGed4bHzp@YP}0U`HwmOHFGiJoh9nWMd7FO^k(5g9j)jH4>C_W}l6D)v=oE zLhPu)dP;VLVztjr%V-QDbbx&he--wnmBQ^0@+6u*$3LX}K-|Z251dTc2ez8|fD}H+ z@$SDfDQc`~jU=9I@){=N!!tJNYO^tWy$Kjzv$n(3$*Dg)yG2u%_qF_#YA`ZXD|po8 zHBXjXr>Qd5pe+MzuhltcO3_Myitbb&_%3Ie6JNHWJkq zZXlmg7lyTY`im_x^xKt}BtQ~dEiIm=8}liPu0Eb7XeFR{o5j=8ck_7K@Rh@phQr3p zf+_t%wJY=svb618n6imzEuQZDa{->>$e?Wbs=t7z%eWNa;Wl|BEyU^4eslrA3!vWF zhx!%@^#b(?d8qpe>SjP>bO#qeecb;G)c^WZ0n|@H$=UKf1@&LK6yiB7UE?r8$WGo^ z2HtPu4FI+_)r_qOx81^>Kj;;)iO~=tWEXI-35y&um--+A%5?Hc&EycYP*YbCAIf46 zx;oTY`{J}WVPSYwXYLV?Ikuwv1l65B+}tGWWW();^DN)Y_*62$ z>xg-M$v*_IHPxINQ9GxG)aHd{iGKApr&hBp>A0`4wriRsVD}u`;Ejkb(a&lQDoI@z z(#P=xGol|CYc2%~fZ$iSX4K6Gm;mCx^MFVTwC8VeMCM^vA)ZBr8ns0`AumK2)lD{; znvKyaeXy@8Wc3_yEnA7BYd!XiHt{(RF-Jd}MW0!8Z1R2p%3(DdHR=6WlCH^nyR*SC z1Ym{3(hJr^P3gs2aM{2DXlH{~5{t~I59U^{+jnDj-wbo4tiZI3pJ`QSK737J+iN=c zAe}T{Y_$~i#6QFbw!B2fzjzv5@D@DTT?DL6-uGMRYJxb_eRS<>|SZc$wxF8{>OK?Pe?0sU!`{&3k)mTE0FrR*{v>^Z#;q%H-z3=KOs%r5|+FOeWk!32TA7Bfht}m+m*>5)jg;Cfq)si%bb<*kCSKLOV(g zNLGhn1eNfX`J*6IcQ$O`8I$Se4Q9q#;k#K2gUeY!F>@gwu1|eO$ZpsmOy9sG31;q~ zy;w6-a(?Tg3%)=V>C#D^?L@Sx{Jmc@_+g#!{6ES7S#Cb~OweyPD^fK2xqffF#nI!rOMksX|j%VX<%Fu{7BMi;zq6%%tpJ2coX zi$qAWvj{6dR|YD92N9ox%+2@bn{Wg4#P1I+Qh(5R^n1*oU{(RIX=KzJ6Vc+oECJ?c z>;xm-`1#TEh@>H2X#4rEEKv+PD=YQ{8Fqd$go}miEm)|lZ22*?mYepD*0lFwW}T8a zvMOX?xM}ZPa(#($_-MyzZ*+mJ5g%0JwblVKnL3r7ow>=RSn5ZsY7(5|)`0N%{4krYUk-7EJe`8M3w(IO|ixne#!>&Z}eR zxBphkET*vc?l@%;{kc=Z3*1u&h%SH}Rw6od1lwpDII+{N%my7XGRZo8baJFDz< zepy>34rur5Ni%Av|2%%pk_vIyX7O~ot#T%hluZ@(MrPZDP<4tcsb&?XkEozZv3$d9 zsEN6QoYsui2{|t;n!U-EMo|3za2YKZSCWv1Zny&;7M;WN!-@`Jd+JT{MC%L%0a6gQ zG~OMPz^S{M?bWnI63Dm7k*1nUBJmaVHJ6M`bg{o0d4S12CL&!aNJmdF{qOGsZQ>S8 zu!(u%gq=DvcLU#m`kINA@nWJlz0sB2Grh73e&Irt#kdG^l@gauN))F~okWQ~W3TiU z>+|mKG31~c3d%v`k1qS?&pJDIs&HM?#94|JwTW1|8@$gOyswmSY5a_D#k^S&-b6ie z$yX(3oL3w_*&47N7_h6RWmM`={+U5?m6QrH6>;$&G4DuFuR_tp9~gSy~a;slNK#;r2n|(ETmB zU1_`Tiz(o(IG>63GDGlfXCNc(n^HzouTAH;XEyyYR)ZUHXBJu~|aN$Lkm>xGbrsiE#3y zip0Rqq#oMm`Ko%t>qW<7DqBvZCL*|>Mv5FmQ{9Wpzf`_ln~=z-d3S6$#N9y~Opc-a z5$o(8<4G-&5;1m*C6wrL)>75zED^1w&a#tOKTO2#dusG zR7JRmqhIf=3MN{+W7 zpJev%Vr9uK%tc?&2eoqrNI2cWjjaFTChtU9fqT+GNb!S>HDjq9357U3i8qN4W8U(4;nYa;#B(a@Q$MX-%R>$I?)6?YRL|666%Qmv zN|`oi2H8nb@VL>tu}p+DadMrGeq#hDNKzoe=h%1|ZQrQFOqu%#mZ;`oey)=0W_c(Z z%9^~&z8KKqw(s-ax?NvVV_&|4a|0r0J+xjGqiFqa6_-)W`>_3Zn7+U;$I)9BJ z^S_&zL9EqUO&jSR5Ep8+Bi@`D)8rl2&H6a$-D~GHg7=uW8}2w;gTCE)v;F>}{P!pE zJ)e?TpfgsxZ5pR^P!~qL&MQ>svdf~`XBulwc+U4B+uVXW4btNU>tRKvRASx zmMZzEapKsD+Qmw>v~%alshu}9CU1-sCHD7MdoKUA6+O-=CJP>?CL<Wl&h+TXy{`TYePZiCit)eIF!6JI5-#peS=_)Em2Z6hF?iNO6a@qAz}@Sd>iO zi^6Y?qp(O(;92@>N>z47vtui^8z6}d4P!LB*bZzg`7{*nk0G>KU0>T=5uS4qGtyx9 zg6yuAnD+z3hZ8#C_LuN)GjFpA*B8HCOq}1q5a-z*5h;-298N70We)rdQbdI0=7(?AT*4CtbtEEE@BUF-D@6sw=eA|8b#6df% zh%$YNK~+H*M}{4!rJV;_|A^I3=#xN|m`9yGgT*yd;Ieo=n_q37Z{1!}3!!ChQs8fO zsM1<(vvxt-Ur-ZM5`_EyRJ8O}3qr1< zv-+l+%gn|{V9{ln0XcHVOsvx`I0q#6#9Z*2P7R5K5l%h=1()JA~D1~u|*xeS$FDlW6Yat zubC0Oy-84>%6QAjt1vHekNA#->)+7iQO8@2ao84-Xuz{;=zjVE-=jE_G!xbdsbb#6xw5Wo{b-9p7?>Px{$kd;=i4I{(JHlA|K@iv=^r` zU@AS=mFBKT=^q89Z?+c~4%7SH?fg_z25+xy`IUOZZ0n=sjmmn;TvxPlYDD#xns@KQ zuXIu$`-oB1qkB*(RstNQFO$IrSZnXuq)trxnDVut2)x()NtU-sUSiFJ>|!7Y+-EBo zOP3$Pk9qN9c5pz1RC`zDO#LR8w#aD{^DakV`bh`be*e1HP(&7h_$I4`Llrog7DO>wc5|V%lJSV?*j79o7{?Kt5dsZ7;}rV0)Kq!)w_Ib}@XTT>NM`{P=%&h8M3>IRkKvpcMhmKp$je7JoY zj{}VNwN3Ye@fyZWiVz;^f$_U-^$z399(BXj6XRJL?Cr}-`LbIxu>j+j1sI=BJu-VS zwk79OVrQyf5_eo*CgIJ$|T<@SQE-qPd>f-c5Bl zY|A_l{+u!30_4E%HT_CSjFf)`LE6|kULD+Dh;I^^yF*>90mP(1$npngB4wUp7%3=z za81dRus!cBH+K-%tjTT9H{PholltEKymnb)OwHw$iD-~Vi8LN44OV+~%yUe0{^iE4 zxBs9FCsw!tIq*T^-QHUBM4t8Ds7jgX|i1Gb>@aky3~>` zl@J;zn!IJ^gAz9gsxrr$ubO++m_w;mj1Qvm+$SBhXa3FW9XoGU<-bz=q{cjuQ&0=0 zSxl;!1#+*ufIcmD+sO=r{a1)xJ2*kmAueP=Ze7O^$R!pT_K^>@IV0b=T?%xaPqs#w zt$obg&LS37JY29Z^FH669O@aAAEjwSzwJKgt_u!qR-n2sndhVX6(wQp72X~|Jq3Dw zJQe`Ox_!9)d<#=R@wZX1H>e072s(I;>at9hqmDuh*L!u9h_Pt43u3vpxU|Tpp8N>V z4evBYV0HWu5)bF%mo5HFzqUU<@wk{^<>N#1xON$bKlOFwqp>La+xp zYtd=CJ;*3zrE2XmpR9z|aQ){dEV!BBNaP_&*umVbRM-pXU0v-eG{vZ_cUq+Om1)K4 z>lyxWtz<`mq(WdpcRt2Vg@tjPRogK$(B7@uks~x77S{M!Irn^dow5XE&6-!uRm_$s5y)6y_Qt$cH(WOLy=O;= z@M|gx5N4juGrMIX_ewCE3usG8WpoouS=sCVG?A9no_+HcucDix6N-xZ7R3)H6JMow zPQ(Iw8YpP;e1YBJXv7?kq|01J8c~!&Rn66viQ$c2v<0Q3Meb_Yu~|pT0v_f|Ro;Xt zhjKDUF(Eld-;llc>%WNyX3vpdX_X>iEK7Ca_7m*1(-$I`Ojd21N57<~Bi}+fGC9)y zprY6CA!ya0>mxgN%A8{L;*O~InmG}qPrSdm{UbWLNAk(};D(LprN8@|tk^*d^b@XM z92mEEP@n9_bonVSErl(r9MzDT+7PoWZZO#`Li__@6mT;)J=He`u)|d-aH@RtKaMUocOM(id7>%9dBy zLU2{jLoMvR>{v3!<|ht*CoKE|y)IdUD^H=);r0Otkyz5kg` z#A3zBIo0MM&TcP|b>C%Bzzes!c$eKlMS6qeB%fg)wm>#NE z+js?cY0Xt&!xMISsY*A#L4TcQ;g*H}YT0yCt-3U&RTwXTS38UB)RWLY8_gZ_uBpH+ zY186w*)+!S>^@AlG(hHVut?%^;e8VQB`W^H3zlpgGodVA=0+p`6#GkSRV@IX;HcY$ zg2L*jF)d8To4iwC;YK7(4&vJomffWqCb>5rr+8iMl4<8AuaESde%60e!I_fBsaw>L z<ePPpDmjQkjs&6y=CTfSp!SpKf8Kew+iC#hIyM ze!eBaYLs;Ny#80Q9R669w_=r+bD_oRsvn47KQ#crQJc-pL3o;q{T&yNR z;%-<`WOu7o0 zxONk|u@k>@d7-Gx*;=2sveJ8j-VoGdcB7lZ4PhuOE;8zvIZ}?6W_>c9Z*^dEsKMLB zIjp#bw3(^V+hp?&1p3%xx@Q#|RWx}!6Uo@5V+o=yRuR~F)C9ktSo+!!j_dl`ABLuN zcHc^6gmP4B!qDz^PmRfs7-2`!V>trc&DOyqQB9|5x1-eHKvQ(7JrKs*G>>%E+kJ(`9k#ddrB{_;uyLn;e?9pj&RO=mP$!i`I6;p}RUxOdS)6dasHOi__z+fnyHa zqH#gpaSW$9X&T3AcEIm{?$2hLwditHUglTXqd)ab z7biD+OI1!j@ZC0-K;JyekDgh@GueZ!^@^N@uq}#2ExS`?^luCpJZ$Y2Ed=5>USZB# zCdyi6SH2;nGJFj86G|IhAPH%w(b9|el1D@`$R}LiL*{~Za;e>{hVcDM=r`dkQphLc zW8U?EyOl6MYrx8(sWTnIa~rwxF2s5AK{C@P>Ot_w@+3A9KjY+VQ+gyYV(W&Lk09pt zZ}xWU$5Hpk%gNHdv2|p#M{ssJwz;u*MKgIoSlRvC(a$`;1RCs+-5Jf;#cDg5&}UsAL0D0aCG&e zp%gMtzGD|uZeXT*4LjhPU~M~lO*;$T?DMo1=El}Fdn6k|pDqgTEYZkHEn!jmMHD;D@P;mG z>1awL;~Kql8Q?4G8oep8M(-cFAS+U=>@*$}o@xF)Z3 z>w}ZbTYzn&&o`Shmq4K$hAP3y{4YJ|p2u)mu6U6+H;KkBQ>;t!X7X6KpRLlHwK9*` zzxaU`RA06G7pK?)%gsxE0m&_cxeJNY8WDC5c#t6xTwAuv{gbyJEq_TN z+U5I*{J8JcTpyZonYZbZg87!$KvO0CW>v3Z`92XPP`NC@)^Qy1fOAx=_O^Qw*dyM`C*v<%(&U{yK|O2H;7+#lnok-2s5daV1+M&?MbS<3 z`LS#%F2&M!Y`LFh%e#2g=$-7d8oau1Sy&5Z?KqNOj1nsO|0foSvlQQK}1S$-Tm^=Tday+Ko)x@}pn0}|C>GDY; z9etr^KjB$)!7h+P_uD{$Zs&`eB^*YqYxbT7nrir2^g~B&9tr(g(lG~r(8q$$G^S{( z;-&<=W;e?&IKI+$rIrYLK$eeX!0EZKB=~+mQ zv5`z)M^i0gn91S-pFnc-UuRb>CKLq!EyGB%v!^GxfRKoi#ir6qH#^>$dqW04=O$Sl z4!6(K(`4%e@O)lnYkb_Mx>lymMe$J^M@9N1j#mI}>HiSeZ9$i(L7@BiAGWApz}x29 z4^b0iBO-qRND?>#Pn>e3j+*b**=6sh^fh(l%3xf{1J?r8hui+bP5O+Xjox$SroUU& zab=D=Cnru4bw2lGZrmp4sI&Ap4qt4ADSzY7jN8cP-MHz2AqzqGtI&W?ry%ZC^XUWn z0;`4sohtCC$jdu>*w+)EfR304$l)cV^#jx%#P@MVqEp28Z$zJYnifTTQqFneo9tMu zw6{*w-IMP`g*tKda=#Nf7PFvN7l7Ud=whdO6-}3yKJ18(a$Tm%eh%6B#8wcg99=NP zr^zaTEFBvV-(<6vWeu@9(#~qvvKuY&1?G((bx|<1WXFzq^Q>Y=KAya>uC-61zLCxL zSFx=b$%sda{Mn98tHpC78%HjhYS$s#oRWW2ti*N1jC`L7=>M?EECt0o3Idt_RgT(q zz9Kn+R>y}lqt?P+iM4Jqr%J|?a;+E&CmUpy#BDF#P#f;Lky9y6Vz49 zB4K^IE`%W(inDE~u}Zx-lx^fBtL=y%*>gU28qrA|vD)z=9i?i$7M}#;G(g|&lfle! zwfbXtjTiO2sLD@qfLyUg%xIXdyH;uwA zQCF0J;@8OFJoiQRwzYhQ}bqag@$(R}U?SA^IL3Mr7igtZ~jbET{f;;47^qq7qOH;$dq5pF+| z=Nm^)m>EAU=G}RpYQu(UV4f2qh9JJD^@0KvVO?v?J*zC-95u>EO&pj=Gu8*T!WgV% zHB-tPKS#sk3)Vt$nbHNXitrHYh>f0++5QNVf5k>hCyy(!I;cB7jEKT?=^x(qLrbLM z(&aC3Yv!-E5)wKduOy+~DCEF2W^Ae7RL%tWV6q^w8`A`=F1%=cD4aYJohNc&v`pI5>Cg z$O2n{_@W&;GIxD19a&n~k>AMko9oE7Ryv~h-Dk3r)8t*#YD4cDxbdga-ZnQMb-7HA zh#$LYtlJ!L1Pd(CeKzqgOBZL-vacCL7mvI}*JiJ>bYVAujaV1;SomFOCUOKca(yr5 zyp|pos+S2u?}d8r3-dCPs@c1ijY1m}FEnV=-~z~Gfl72g$klyy;kH3o_{^~pI4lpX z>xYTbKe@RizPt6%Ea%=&yn;=l8wA~Mf?9lxK46x#(){2BBGXTuuxYWP3=^$-bp6As zb)|^zBlvndqC5TpI&|sM9MRpi#E#V=Jl0sHb=w=!?Q9FIG*`L;BD!?x)nKRlNLp@t zb}FIGKN5>WMezgj^BFu-A?XD1MVs7h&E5ctB>s&vY;qJa;8ONPlMCnb@`!Ldf~hFH z=3b!%k1UzuPk_))0 zTOk(|Vt#1qX~bvMg&=S{to2hPN9G&3#5MBieXfyna*b@qs%vb4mF5^%z+r9bn~u1v zeLAaxbS$?n>U8vDxz#-V4}i;2_}kJ3vg$yjHRL7S-#8^ z7d-2FVHO(*UN@PiqZ^|W>hf~&)xYGB-2~pZL-x;q2eOyaGk-+4bl4HSna3K@_jKDE ziC$(4tTfNM0tHC9{SAll9!Pnv5GiN9Q;6(8$3cqTcT44ffpA*~q_U%29Gve+5?Q%j zM^@cSN4@|Wzav$yBTw>J9ohfuIx^oDSZRuO=*YIe_tKH&g&mpmc40@}okBo}Whz*bL9ptC_38fT-`sq_Dwb`~JU(HW&D)5Ux-Gpe97Mr|J1J!!ATAY<{ z@lige#nFC?zq561;K*3l7|F0+v8weT+t>@8+PL4}U{D zg5Tn&%beocS;u4b>?GZKYt3WdEr}nJ>_gc%QO~SF9e}KxEGXmFPAK ziIy?-=hu5E&6$Lh%Gel>pF>t?M^J944NrF75r$&|<;-xu(47=w$586W{KmXr1lA$} zUd~z^5?G6&81D4MGfDj#P+qsRdb6vrgTo}*ParWj*s^mO zAGcdyv$NgbjwPRBj8$cS3pQi0mhM>-t3Y7ue%PWH3&&&#nJyOSN%u+{J!JLD`+vxZ zy6^pI2MO_~{{;iDJ&}_TgSiATck)>DlYLzD15<2o0?x1nR+=|mfdWzYFeu)^1Y9XF zbMpTUkxpO&F1;G^(EIK^0a`}uae0XUjPGnanfB$~Kzwi>;`0PSy1bjmg1GtXAb#E! zSZNO10pd};LACL$YzO>F0{(I!@CEX( z7g^vB^MRkI+uqO}_JP0J6(~UWD8) zoFC8;z3+a<#sobo{=!qLtqM1BDGu9mQVz(?9o8K+3M4 zD`2ZVlkAy#dE`;1+{X#W{c<<$lJ7TE->LbRBQ+cbE}Opq@B zyK&{}_1Sw~WsFSBJ)(5mNUy)$3VBn8& zr$0A(ripV+;9O?lr&q9!eK+eHOt1ZwY}Bj9Dq>!DerrA_^8{`gxnm>^Bu4r*c^6e= zikrQ+apU`GKO1W%RD|1UoT(==hAxG-NEoAD!+6Nprr>*lJ-6K5jz%f8rLw) zdDz}I`{X=bx2)~DI;`a~AvhwzE^odpAY*Wse(SWn$4aqvU^7~|KCGb+K{fITl4yL~ zBna4tE>Flu^VFWe(0xT8K4C-aJfPRY^CYoE3pTD*8W>IR=V=6fG}f6(*9Yeygxh4h zAQ);Y;$?K_l6frur5o`%?vePsK7H6poUCZi$+J7y9=ufBO*g>V9PSGDl(2cu&$9N* z2W8Q9Sk80Xyat;-vm^j9Fz4}|>^hu6MNJd&G%RV)&N!3_HS(1`gDljYPUEcXr%v9W z`^Ibsw-wxOZmwNC?eC2f33Of2nA-c9YQvB^pT(0Wzwu`Q=hV zBvK6#$rESY?y3)J&W|K&2;-=*LyYsw!YU{J8ub z+AxQYU5KR@9Xvx1QqT`MNW7_KX%tCpb4d;SmG_GAF8F!0J5|o@P~YOFO$V z5Fu@wsa5X(a65}pDf@u6MbBC>Jn&$U}&M}+! zmj$Pho?$`B&Q!%if)niAV;I+w;A?Zj!~)2i1iI$?kg)xVWfH;|&gYo=V6iPA=$I#I z4qgAI@(%l}I6RpS<3VC_hGI;{aOGVP0#BJf_1?e3vyT=-D8yt^F2n?SV@qT{zT_1m z1OD6ik}_4-dwhw)?fm!>%TBZA^S~}-->r+D@g;M4l#eetzr!vPPHRBd{*WnbFuuW% znkR6oTO1Q%qF+b3pw~v4SOG6Yr%V5_DxlodiE6=-goFoDe(=REaASpeVu?UQA2A0m ziatT7$Wf&LlNW4&$r~=f1fmw61B&mta+V*a-T>a|zXkYPIe^#xf1JGue3aGo#~qeH zSi%G~8uzHEamV747|{$QFo6W32*#pG!?r2+m;%G%%5jXOFf9F241o8j+zJ46?+~>K=Ip>~x?z!ild+y*L0er@!G{AiV zfLq2gjY^74;BR)2nS%s2`&>sPM(RB1imYm9@rEEI{*+0;=4?}h?rAFi!DWk5l+PrWx_ z0AFL9QoHJWcB!qRe-H)z(sAA0*G@uoW&c1Wv&ns^r)3PvA5-*sdUg}&Ifoqu|&_p(>E8M zX=-R2cn-AI0-&lZXB5o3O=d+6G{Kgl_4Y3OBZFg=NZcSWh~-zJg}Zdq-`%b>y8jlx zAIvE)BF$l@ot|+$qVdWHHEFXO*5*I`fJwX&yjJodB{N<`o3ma-hgpU-elo})FQUiX zDgWdt3dHUpWKW9GsURMHxB2S8Q9#A^vBvLMS@Wf!x$)cWbI#jhKXtRuSIb38PGAKC zxPGG4R{}zRXEesgsFF7pFF)Ou0@#RM0zx!fVq01yZ_Ci4>mRnE#Yw+~7PAZ?qs625 z8!b-YwPe zoN<}c<{gqH^$B97N>g>Iu4F`A?8RGh61OQn znQ!?Q@yh&Yo!dM;EIJhFA6u)P_8}3x#9*!}bC_VVSoR$oLB?+S2L&0?1r4_ zDr%3EY>xP9zZc=i)_XGlB}K%c~W zfLklz#sypVg7)_>@}h>7Rj5Uly^4{ihnmg1G?`zjPX~J=vn`FY6`0k#Ur=u!S8sRf zRs0xKcIZ~;5o}Uinx-E}68uf*jep_C)T{I2VoH_vZq$=DyU*U}Y~QTDsae%cPY0JV z;j5{ZGYytKdG&y~Wb>AR_A~4LRte@aEz)^ zc{lxsPM6Z`+Tc~F`3J2@i?@ttlHG<894BV@Lh-}u5>+J$?sX+f$JmT#e1sUr^F9^O zxcd@bpcJK?_3F_VKCOiS%VS&+ws3qztxZ9!S0`fYt1B+W6P!q&c{SR>ifuA|47axW z$@Lzm-T`))g0HeNAQV+)y>}|ovXvR7-WySrIq%1*j-k%`S56mr{|;%2UXqE%x_;KX z-Wd^8eQ+mqS}k=TyqNx){C$uGa8mOMdK{$}0DOX4`u=Gw!r6~#k#pFir5Z;sY2g~G zZu9qo;Q?XURt=+Meh0|4Phipv$1fjlg zT>eX@fd5$+3@w5AYVp9NT)kH{(f`-G4%yE$$Oh)D;|3~;69++$kttVl)u(!3E;Ju-1{!F6Q+l+Fg&Qt6Bzef-C zVyNXed{kp$aUr`{aN#j^T$iq{6c?UWw9vfI8%pXbeu?)vYGP9a{tGo9uWDJg#+Mh= zSFTWWUhx;SG?M%NSJ$hlS4nTekmr9yvd$X|{WgL~RV{X;L<}Ps9)w{!4F8!>OS$#j z3;wOp8lOIjZpbX~UY{AzEm{2V0%q+V_b@jnYBtz$Pl-2S(Z?HF%7MT5#x5yLCfuTA z%x_Ysq0u}lA14vGNQP~;;zUe1RMTo7Z{ee@O0QKB>MNi=Rb~TFqic6o=~ToHaN5rj z&#f0i&1X^|cYtmAZF)f17^~m2(->QJgBxS{S~w>24_T(M!1#cZZG70kurbk@clK>H z8i+eW&HpihcHpTDh=1~E%Ug!xOY@Yc2G%dWo_eLmynUBxHMe;ZmVDt=8?W2|D1LO0 zpmoeWcP_C}@PfJSn5BmGu7wh`^)A74vAJ~^gPRt|fUVh34d|u*xKo1ufjIE>wd0Jh z(K;*F$g{J3>- zs&6>Z0m!jDK088x7oNDgI^uK_8%M~&nori{5`V<`f#RCslKJ~C&6=2&<)b{qApY$~ zh%jke&w*nPW~4Jqw;#uNtf`oCXsD&X5s96E)qd3mClj{K&~Ci->Knj&H~C{5Q8ZZ~Hp`dw0DF-oGfNo1=QoI9d0pyXaX9E`x$qy2 zT^&j2drF!#dqa?Le0Co0^=U9d&2kS6dqc{?72&c_lH-p?pa}~z1o{WG>P(=0;Q_zi zu(ajE{5y<5Azq6>Q&h30p1e={UyG=iI{r`n+Tl1@!s!Noc9!%u%?=Ew`N+Iz2=GD>fo7e@vB3kP2OaAyxwZ;E73TBj|3Ujf)|F4*Ze3Z; zYjx#fB|SfIe_$1ia5ph=pk;W`U*IxOv&Q5>v?JloJokrd%{GuW|7mO;!A_X*k4C|7e zzk-Sq;AP>b+o7$5>0ENudw&ni?xj!~|BYNRvatbi&AwN!i1%Vg@heJsS6ByDHkOB) zOOY+!@J9K84KH8b-Y@<^*J_U=zN@?Juh^Dex9U*!YFTwTP$oavrxwxRVY)kv;Nt82 z-rNzC!T@54!T)d~X|46q=<@K>9|NWTkv1H>(X2z*CvZ_z{F5Q89WG|xaK?*8^C9D! z+eAj&#>>-VvN*|WQSgi38wCT(eHPuD&0p)bCNhX}>s^L)3u4cUtYLU$qyJ%2oSHM4 z9I56`x8}_M^g4>u++IO*^OY2rZ0o$z#WK9;pXD-`&a=kvW-Spqaf?4)EoF?;X(m}Q zkLEtJGFc|s)3y0$z6r&C_8C3(r1#DRp}M|u_W`O)#<3yheZ#t?>eOzYMw_q#h>Q5*2v&E)Gn+su{@k_ z#R}8w?3TO9$*MZNUza|`>$URUw5ItyRC`_6e8`W^$Q+A|UaZ{+E}rB}B<@~^n@fAp z(t~X7!hLnQL#+a`DLs(d^1@I15@96EEcqibwma7HFw5(}ihSnymGa^G4C?{W&yJJ@ zl)!FuV$t#usl$_BuORB!`Fz&Hp~QLoE2#_grGlR6`9c5@48%ef`vjNE5Aq6-`PJ)%{E@YlFGLUZ z!i`)H+Lx*}?l>i%KmHDjyLU=+T%op!0S7s`p!=Hg}k^ziWCgJF@($Y#?(M68CT@b#ClG zr6&OOCptE+{YDaq(X!Rl6Emi1+d7_(VwWYV(5p70nqdwcWt;QfvS(QSH0G{tQ2XGfJW z$b{?{8i^Zi9vCr4L)Hmb$>u4%wuM|cIgaax5QTPu0=9tkmOTbGQG>BqX3M5@X@8gD zIjv}UcNI`~6h~@V-d)b)vyZdtLLCV;PY3>bjH8_(0IBLCk9 zCi9wU(8@D=1>yWJ@)BSTJ`!t+M}su-Zz4UVNgY)4l{#)#7Ur{PLa}H{-gdV6Do75 zLL`Aslh0)c+`rK7N$9m|*ipcomzoiL{QY`9UX%SuFXid(UMsmXHTjojKLSTy>cljh zQS61{g6+~X1=ivp+zrG!a0gxM?+-mi2DCa9#R9$hayq!KYCjwSfn9Ux=w6+EFPzjX zPrv#6^zFuzT{`_fE%5{edqC;)Tv}L^+L?NqJ#9L&uiBeJB)2b!pI4;ahchGbWsiVO zo{n$7;NQNtl!Fd#s9-;1bi}(>--w|Iqv$5Hx8=^teiW7l6n)|$;loMx=*wJ+QJ@L< zgNV1lima-#`MbJu+JI<&&dFT{Oy=Aaj{J5coCED?@YfDKE)N`ngvoiZ#V|=)y4CW6E00V@A?q|?ZVXyG^6SZh~!~Y>^8$54e zgkps1$f?&@3bCy(_JL30GYh&*E8=KAzjgjgF8jH`7Se}IAR6$*l`SwF)gt8)@w}^KRewCGRkrOLGNffqJOIN4XmR)J2s1ol5@Q zm2Al^`N;N4N@zn_$bj{XM|FLSOc@|)M(;O2m<|LRCr>Q7-Dh;7Wmi4pIGA%UMtdvBWXy0XFx zHJ_rUQI-qS?YC%x<=AT0@$U-&(6-Z9PBwOrGA2iq`+sEb6>c9Asd%cD&+b6w_Mz?r z)CR8p$w>MAF?qC`DoLe=s!Bg=80Fv`-P2!l$@a>}D4*Khe`vcOOCAs0^BF)8%h3sK zZlY-)S&A$PvwwsrQJ@Q?!bExR$!)KS9ny+rLM*ls!*h{oKoC42{6LG&

VpllcW1 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 L~%~~osNalB;c|$vkXQ2q}vGR&xz&c(l}lD zoMDWm%xXz>Xv;+MuNrIDnMl37Qgz_xfr*?Z8QUsb_>)uQY%B58ahM`74JZ5rEdm@>PEt3TbO zO~98N;M$kAf&J7j?c8s}jQc8U|J^p0z8JNycYX7dXs_Kgi!AD8;oi?_r(_c>*BON? z19OKiGmf_^e1a<&BwTBIddE8$KDRxcYXM!Wryqn?#NzWtO)o^IQbFDekuq%m4jZDZ z>Nw4pBJQEJW?a_Sg{aGfX`g zFx<~WwsV`E=fgtrb$D|QvJF1imGvz(g=v8XB0OvaAfbv~+?>C|r|=nU_^uk2*uo`Y ztNN1m`>6s^tVaAqs z&>}zp*j{#D`k=x^+BGAXFqXDUip$fN(5V4b7%#>JBp$B$P;v$iT)!ey`=drSAJ+az zwDQ70w_G!O=Qs1v^R{f}`A?V(VwKtYD(9p5Y9FI_*f|CKnwv*F%`v+br!bnXU09{% zx0Qz-Uf%QV`EjAJvZd(CTQzJjN)214Abo)vA-6l*CGfkZpFF;mW~jWj+#ei^4^%rg zrLb32v~@wZ!T!z${s4go_C9V^KAF2iBiPXn#1#g-xnnD&Cjg9KLrv46bd9uiCo4~Q zA?~$X9PmT)2l9Kaw%xpvyMD zGnLgFmk@Wxg8nuilzN%CGcPOd%tsb?<|E?HnAMfIGflhw@Ote>ZEIgv+?khKYMZvH z!DigHM!Wr7WYaWkgj^V2Y5L*ycD9((jLq;}Gc~3%VA)$ETj1B6K$6`?ajq~%U^6wN z1eXYeQy0npBb!d9=nP$NchAS0Fgm7OKo<(R%y#2II53+TUy@77sFKy1?&0F7g!;Pr zX5ob1RSz(Ku*fqF;SkI1E|`H$Sefu>C6ebAR$c=l{$Uy2B~%umxT;6ITvX#OCh;aE z>@P}r(CDp79Ki3lDI|{U@qp_^6N+6$kKEvU*;4fRO={tp*jKQ$ur&R>#~cBvT{fmQ z(i=Z4p(A79;UHlrHguD_I?;0U(&H&nTJtr+=*-C)`BG`$*rlqgg--j+K4R`KI*o#@ zt!SifOn&zRTm4Y)oeRuASy3|u?YI`*ri1o^d5ivK)*~FeM5e@;wYHWnuw=vJ@_r4m zYo@YL0(Vc~Rx)N6DNIwQ(|Yb8H&|5$%Qz@9#-dMv8NNrG7wGBN={u{>m11Z|o)M3v z{vR=Ife7^P>#%%*29hhkv{O16^5lSnh8lxI<%+I$*_ktk<$XF7dAGTQO5(gx;hpg{kx-ZwV#*h@};U#C~COB?Y&LyCvu8pD2#n%xa*>;j63 zOqdiQi4B16Y0v<`2st6?2f}-1*kH64g8@yAle;l%Wxn>uC4PF)JrmMJujN1*_E4sQz zgAGioM?Jr~sLwD8%$mcy8b3{x4(C#MTmA!&VB_3PqJGnVa7|h{|7EeMoG&GbU}=O= z&X)MpeZRD5uGK!~x--^!i0l)n)7B$h*{Bg_I)nFu)#dv4;jgt@(_unC?VPW6@-9Ij zyNSVjp?_C>`fl4z5ykK>8dLr`{`&@dH*S^c5!#EwNHS^k+jx7*$Xzeck*$yn0y`Nt z2s8e#{==ffr|y+RcZZF$zj@PhChNb}KxhenMH?>jPh$-RpEtm@QP6s?4cpbDfN=NG zD_w-jNTK25YqU<(ba;l&wrReUkL?~3VmF4j*q7wFB$XKdYz$L*nXC9R_#r`R49|C& z`)1;?@S^h(7?}4sR|V;}RMvEU`z(55TaDNZyFOPby)+cXAu5-MTWHG;=hN4S|FSRP z#OyI*!z`aOz@u8?x{0n^(X$WeHYULt9~dtbO+ZPzxrD8&4@B6}zE#(SqDi);Y~$$- zo#j8-ZB4;(!yli~SDh8?A~A3$`gT{n?Mk)0>j)f77YnsrClJT)sF zRzg8J^HCh$5eRr5$-bTu$$GAwCD~_`noqKu^D-?!TlRmlX!R$8rP4h(+D1CwO&o1< zH~!eR3&Ty1dGDGkT`Ys5RxPoJ-%^pn ze2VBreSTDokmuIydLrIT0&V$V9q_1iSGx{d63guv&%qm%PM7IHwCT1*mxU{ZS^O?G z&43PTi62f&*z2L&CV86dFkJmDq;~{U+1qysDPX8?XfG4+BsDtTTO9re?{z1ZIuYPV z+T<0K3$#W#IUuK}v>JcgKXvl&*TH*cMfa|`+1-*{X5 z#bgvz%s7gGn_-58K<8*Tv?*NlH&yoc9;@htmbw^|+rV>pHi7n8=_-SN#``+fWU=*r z`y4B0-Dc9&X=KRC<;0 zlkQ5Yatr7oO3Fvg?0#@7YnajFh&TbH=YBCqT}@B!Z2RTYU@>1qe~iwL2p6H6z=o+P|w2M8XOZ>kvp|b#e%mE2d#WFbbKJ{lW|2&D?rPM6IHepYPhnZjU>U zhwz-Y8NqbLI!03`bKB48rRyHL)Nb05AR(J#$=x;%nAWy=yNv^?w`p$A|5#y*#zYXt z3c@}>2!^0kRjf1J5I@XA zFsoR{6Hpvu$zs)-?B1l~*Qz=hv)IO}KbCq<1H`)VOjkyGCLM1G@AAOP`#v+DuQiJD zwbJ9r<@zSIh6Xn8fshNwPEhIwA!1nm6fP@$XU3DbhBky<+-Ss=BYbz23Notbj>ii~ zrs#__4l%{5IBi@(^x%({&l3eY6VO3{i4q_{&OP zRi@~6S4BL0MY+{d;D?D;ZFyWDf?UOL#+T-~ifueHMdN{Cn19#pwn~SyD556W1&I~w zyt_j$?LG%9b?Bj@RES<29<`ApA?GTY7V9_Xscr>z7~>(W(#*YGO1^JE!fr|GU&O`o`gSe<9@O;^ylxy$B|l8bQS z`FXS-m0%Z#ohUP3#!|Y9NX%D+7)#0fPB(&8NCljLN{mspoq3u$J@9O;xS)l*-Mlh@ z=V~Yp{GM(5Xcv*@`CXq%U0?i4`0xt3IsvObxtDmr1T_|@{#vgz5{frFMst&ci=*pi$7piU?U>8T&Dz#7g;iyzR9h-9_fFP{t)?tmBs^(wV*(7-S>v7;HPleli34ZI>vYZ%^c&K53b6b z9b`oHWi}nF!>f*wiP!Cue0I4;!|8>l5+EPTdO^}0id4eK)Nt+FFbBoqo+JvR#<=0K z)?$Te<%P95KDCY?Uj_ep5C|4W{#h^F;`1DFC(fTV(y2uH(6Y>kwu$s%5*A zRz+DRQ561dR6Eutu!+W6*mCq2{q|X;88iKbSyl>?n3&Cff6x_gCvq0A=^&`@(n1EI zX>Xnu9cx`dsd*(0FK6PqX~~LAyePc$Og|vZ`Q9i+8UhfTg@Faalsi;98yq(%q6>}7rz{c- z3ZZ~E>)!>`MqfBlgmi_pZV~C(XPjCZ?KSFlnjFg%nIQt`C|-0;KtgyKf|Szr;2dnJ z`LN(9lKYFT?NfVV+nRk;M?npZHqo0_L2Mab!#-g7{AXwxZmBtxds}UZ=ozzk z`1!{zFKn>&hwOfx(4sk6R{ug`T5+6Vthie=Z2$c>2SscT=RC!d2mvWR&;W8nYDl&VMcF)acZ;0Oe{`MjE6gX zs>Nj!1Q|;$(dylIVo9<%qJ>{h;VS|2?DM;PUOqtEJdEi8g8LgRlnT^~DkNt_QUoQY zQ1{x<4(1U~q5n$UgbkRW&&6TtUVzxc%&_}{RWOx}5mXXm?(|6u z;TR73dOc-h4Q|v$gW9nneE!RlFN+R(LewZt2l;oT(x?~-F4qolr&%txl`3_lEA{>3 ztx6SdtrV^I^nyd*`)0MVN?rxBb0~fJvTUDLv(r!*v%;*xIg4Cm3+dSJz3f-jJr945%|wwhyD zMA(~JGacp8;aJ^EOnJ+|9xOQMa0MScW#pO}yrW?TOJR7>O}}uO{=b#MSw>~2aI_$v zjP`R5eV=8vD9xW;3D&Kzeh*1}rZIs9UoecS~a0(BOx)iMPGc-!vJbTs)0 zqwwiJyRh1_p}jKv9R5)mT+|IOi&&~7&5LLDxLGgIT@mT6go)Gr6 zw{$Xj!kJcGEY(Zpq{{?F+eA${+kbOM^hQP9nV9QNSAjUzwK%Uk&nJC%_SkxNwr$;= zg?oTPVY`u%yw*UeH3zX5TXT^dD=_s8G4+xK+NlL`1V#~|dfpkwN;>t4Xt3 z*HL?1CJw@)Cd!}>2lp_eSJ<{(3%OwnG~NWBDm{^s&-jy<=0t`TwA zbB%8R?2>L@SJii7oKUB(@<6c9cd)y8*h@1W_Q?+RjuD_2o8|yu;ZB;ofv0NnHW`~e zU!$ob^DD!}&q+CJutmuXl}h{x5v!?!OciziN{&o8!OZxi_$9{7-R=+oG389BL!J~O zV_q&>@UBU0Zt8^vI2Cbz;GJ;0^~z3B(Gr_}{ihw!rtDcpx=qt((V5BYq{9#FiXzVr zbUq?LqLlXvXP-nIVh5M`z`*L)`445(IyjMS!76y-$Ocd)}2YwX01*FE$L zhe$S*;YvXE1IccynF%if6y*(1dqf!<%tFq(A!2DPXGh{I?g~J-EL*@Z!mi#D(23k& z6kUS*8Of5&b+ed#TzS80J_}xky+ESBp(n@ZY#>U|q{3GhYrtxtX9y=KI`#K{D4ulb z-O9Yy3<5TWznEq4j1nEfMt?e8k}jvjG{yKvlL2XMUI!v1 zQM?tib<|*1ves{>R^9)cVaeehOAd|Nm2v62rU2vhQaDH8T*|JcoHA!%Ux zTYr@m_Z%_Wf11o;yBWnIqK7_m9f=t1M{pm`X%4lD!RLj9?xHN>X?Vg=tphTj#8PGY zu63X>eEMm>4%lMqLYC>?m#<(%lApVfwaUfkMT9ad0_Gu=yztQog}H!FIPYYpGk{==qk02LrH9saW|TD~gGZYKoQQYS^VNowGbkRWVh}(|%OC0(7=v$P&aD0Jr9wlWrtmrr@zH2;yR}X$!u2_JY=;)qPT z+BP&R`Hnmodn9TKI67ukWk5X4p6{G3Y@gg9ggM`kbAyQFY%NCVhiyZ^=;Ug9g!Jof zP}`ly4b<}I2Y;1XrhlNEuAry<$KXB?%r8bTcbG}t^kEoUc-(y1;Y2YOPHT@^(6!sM zvcrW0e$Lt9-VV3n3UL|MBbhi0Mz#Ibq`ounb zJ-IRk zBd|>8Se=xIs(xj~vAQFb-0!?zu{!RRSLt}dOiW?p!W`_$rixVWqh;de}qOnh-ed5jF^AE}f+WeYlT zbW4Z>MVicme-PLb6%TJczg0C(=w4yW#5K}m{UVYy8Ctg4WD_deadeTo4EqzX0*`{k ztAZ8F=dI%_{cp1<;&L@_s17Y%HH+AV?M2*l8_IMwjBaW3gOtkVjpy=Sqr7JM99H6- zs%w|@3U9%snNm%YqNO*g+wI?2JU7lB1NrN++Mfz)wkz{-QIlgTg6cENG6Vke5UNB= z%}HgoKetPAlVH40xJ`pyaD0M!YGeuqtj4ClcG0({r6{JF$WlYdf4!XGSo&^D%L2;) zqm#v~RFW8n^Qp8w#)jIT+9q>V?_U;_o>?2VcQyMkZ^OkSebGcPr=B4bpPk%$E!C(_ zR*Di0B)`(>nMR4M@4QV^hD}&Hb@i~Z1QxcvX|YJG2LR6c$(kI@`#~8X42XA z7{6PussqFkv7PqZ3dqG*x3rWk@DQ3_VEEOYSn38%gd6(f#AL@mktZo^80)(<%%yiJ zTd4C2IeB6Ah3s??x-^^r^-@OFD3jbQz^tN&(2wG_Nk$uKHzU(}0 ztGKV&R+zcV)EA9{MV4A>Qhj)#?T2m>8)o19O@aFyYi^!VheSnI-v`|eDdxUP7N7<| zm1jx|B5q`ph})}FJ9e6^Sv%|WY`WsB$Zj+N23s4iE)0_6n~$nwITa9yRJInXkj=&M z(TYr2LHHJjNn4jjglSo>OIsO*Y4NCdJUwp}Nr_-mH8+~aQWs+9C5%-({!DbrTys?S z3ubYW#d@w@4(l2JsNsKC_`?j|8BBG2E`m!_X9q!9?;Hn;ALp|6NCYqTenYwXfpx*C z)$~F$DK)KjSasVbscE${XCoLql&kEk8C3Su-&9$w?kRHkMm#Fw`PkCg0E-}h#60F8 zXUINxSaq8=o!d0c%@v)Xq7OKbsf;xiJbEoW@-NI<=922(8?j{T6kqBb$c%Y)l1gbG z0w)}=luXgykBB8UglD@3bSs;?V;kD6>y@FOnU|!K zY*DyfS$f-ME_o=L;xk=knUedEv~+~vH-?wEBsRi}&h)v?A<252^JZ-__Vp?*bG=IY z^vz6SoKJ1eR0i#yeX#E0gc z)WS>nTQG{<**9fVNLPFqp8pqV1BnmG+~F=u`yo8q@+5w+3=9A2Gq5eZhdu=EgXkTf zq$8}^6(3Uj55RcSDr^Y9Wp=F*&KK!JHizIFQsbdgp-i%aNUpfKKxxI{y{{V=F*oe( zT8jSpJD4f`QJ2AW@G=oxNYD`Cg58eCXjPD$#3J;YvW){v=G1gBL@jKiw^IMsz6}Fu z-wRy|3YxyRcW;JYTvd@C1>ag*gES(2w$iUI``yn#Eur7=rK9}nGI*3lzkq}ym2Xec{qRe0TF!qlQ4O;c)s zkB5i4)_5x2*{F2qh)O@Qe2rnpY$j3ZE=HxhL{$2k&-AZ{)GwpbJx+F1`npRJl|JQj zJx|hRR61acR{5nM*FpaWmD)Igw;H1Xi1s-`UGE5Wy$JPD*4Kzo2mH|pb-fYlNM6Fn znLr42ADl0t!}Z~kKO60>r+sHBbGo7>%vhd;ma6q(=LdZT2(?BZ0{6iaYI?Nrs$xB4 zrC~kLDr^V`ld~0}uK!SY$-Yn$Ut4+G?dpwumTCfb{4}~t60*G zClR#X?zbMT&!d^b%AWa|g~~&fzmxJCIYx5uXzc?YVa4QWV8Y%rr+aYST{?TWiM7iI zDe#Ww$J550-(n2i*z^^t3lHH-_@BPq_%p1UFfxNC8*QE}d{=F;)F3@N+N@xW3hN&* z-0$matc+@W(53HPwy+S8vYq8u8Yb8q`Zu3ETo<9oG>@Hz19w6`+^?&BPljjVcGxQ1 z>jd}a99#wb_3gb=6yMpEk1T_?MQ}HPIMDE(WeZtmx6LO$NlGFTn6}xo8e?`-MsP^j8^KP|)ai$r9N+H!I zTS>LM%^?%<+_XKF-SyLMOz|xu!HV%t5OtdE4zH?tS>d(<-t5FIajG&xzUmj;d4&IK zXRd7%tGkz{E$X~~w(9Kk=bPxxZ6ec5(Gk=yG3XU$jo08h_xg-psn8T@P7_4d5{w!q zbjwQ=y9L8qYED%QrkUrIg8Ztbv|Fn-vy@(c2IIvDXq|K3>a&#+RCK7!9%)+MG=#lp z%qg3T>F6hsZc>>ZQaIui+ukf2iGK1B`pK1aR{l;n)>I&SY~lwg52~gp&PEP*>-t5F(%GAghyTV6X4AV&HC1<%Y`TgJ3&5n zbA83=GSpHCG#*?j(g}a)gwq|Cn*dYrDaQ3ijE`pkN&^hFBXh9oqVHz$39m;pK`!e+ z4kU!p>W#%388O~Tczf?kPuRjdh`|^!xeHv{49m7LoGG|>aMw1AJ~Y+RY=Xt%lGoJp zib=#!t2S0G8Z%ZTo$4PsW<7zT;V$>ss#3Qsm%d>Vz5MxZm;P`ry>JofpZN3}bLsJ0 zf%B?QpOH%+uJk8;x~Vmpg75ChI?|~Fi`L0(f{mYL;mshZ<;P(Lf5!^($wpL>z!s#vx;T);JHzMT)XszI&(8bZOIN%B+*akFfyT*|p?o zXA4k^Kam$#rr?f?y1+GU3r{l-*Zk?)RxQRa*X)5WW?M|ORN%H0ZBMJ4imW|FEhl+; zJ8QntVQc>ajo%~Jncj&@u{o-WayUqE$HJR0hc+L#LgoQKVs0P@2?0y zy3NS=L)u|*Uo*SS8A$g>?I~-zG>3q?Fc0nrz2^Dz#OnH5E8L!BS669Wl~1Edf7h*o zEq6KGKQfoT!_(mYdY}HAT>5`@B!8n%Z=XxwRk;7OPyZrE6IIxQ!aw=+w{q#nDSe(# zmzRv>2_e-eJ!gvkbtB)$`|o$;%6*~qVLmbs_%o@@;JjSQ%bW_u*?&B%;ab>u> z|8}#X$5QEx=$9O*`7j*LqFX!N)ZkCA5h$+)Z{j691=NER{zhP=29Len*4+q52CIzJaLE5fOOqOA0z|w!AsW%ooZ{U)L=>IuUUl+;TKGe+K{IOBVZ(VFjd$V z?B*S0G_MjLHQUvS@Mg1>qmxU9P$e|ZMY^naSXwCtJ5YXIvP{e0NS24#9f_|YG&t6rIoO*s#fS4_(E81mid$?Mr{ zCMnaMr<7yz>MUitADL$ROt)AjQ>It-*Ho?yQ!Yu$^m#tl?@21N0F06XkVIFu6n#Hj zSoo^kn|3Vk(=S%{AF=u?3`IwbhKf;_m$7_mzp_m@n^m(6mjol}odeaBa0+uzUcxz| z&`hTvZ};ST-7TIPpFi-X^b~T$jDzRAQg-pW71<#8Dy#{?3q}5XNq!Vp<7>W2xR^*_omjO@(O)3vRQy-9c#F z2khFF&s61LO- z4N04$+ZD$24Bfg3-BSP2v}TR4uX7NsPNs=Ejj|FA5L#w5sojFjf zyfM5Hq-35!!kXhMGeajB8L)&^X3m-{HYQOR;Zc14Wjmj@y@~s*ZIdkzD?PX%s8MntEKTcTg{g#p58?al*p<(xo59QhSJ|oQ}A^gq|0eL8?2=>xe@J z`StQIF8##H+F29Y)a)aDXbbWFDLesa(N~~w^E7P)tIxI;?ZD1(lXEJxS|6}Jnr6BX z(Lby*=&{tbE?wH`>jQnwC9dX6T+OF#wdUho&2>^EyntSr;yFOcTkw&T6rG`iAu$Kx zVdlT*6pKAtiY5%vt?PNsO+gid~0F6H9F)X5&W97E?EBmGm~e`bHbI zZhq8?qPEvqdh%jlY+`P(zmb+UBEQ%N6~4>IyJ9E$V&=`_YWoB-5BIdsvD9xIIE~i5 zQPFMuH;cvM8mnt{{1o4z;ve2%jV<<#oe&jW?$Qg(Y?G1z^se|-x#GvG(equle!lnt zQSmEX`o3igbuzOu7&ykwe|Fq|h|vzTmuA;5ok%kbh^bM7^BeVMxgUxnvW@Bn)aD17 zQq%G~qs(=dZo(8bje>!J-}U5(k_MBsRaDvOLPOHOV3W$XgLU%=ae}V*UIXk z$5%Q#7+j0`hL+S6R0c0069kxlh$PZ{cp~^kFZ!<4bT3hEVSIV1ET))%xM!qt`JfWL zgfCAs%M*t&*YH}!;k-HgVu_M*$(^Pcea0yKcxHas{8#(`p;qU+f@MS(Wy2hw)_8>r z&l(*Rj-|RIRGHz4yUd*7sZc3$@}ZUS;PLrXf!iL&80K z{L|onuMx#2eBgTFO;U#8&SGS@xOeaWIlxcYTuaRptYzCef1x<1^UE;*PavA@r7@f> zu|G3#f?V!0XPL7Gd=$d7Gbz0&Ee{0F>!Kgyn@AHl{&P@rs9f%lHFWe)zPFQ6*N>d2 zTJYRKL$99WT^F3Jkkz!egBtmIJX_{#+ufz_RgoF?OJq%xm4h*(+EGU%{4{Hl4d}ml(xfqw z^ZEevgKMn|k%fPJ1oS1Bj)i|SOS}iWt-#)x1>4FHzpL6h&lQgh@tq^ElU(|ihIkM5 z(W4;jQuA|Rm9u7s#{lmbSFX1o>H1RN_q|;D?z#SEP852JUxQ%aj^>Vg64cVnHAY_Y z;gHYoWDOQp55~hr>XhEzAivzwqM|y#VGWA*Vs^>Upg&(@<3=?$^@l|by2hm!=NfcJ zqvrkE`2w1rd#k~AhWX!Z1#4&FqyfU-GCRwXG6h#*X_G7#GzwR=Jy!6itNrR`815L< z*eCNb`F7)*E{LMs1aV%Lb51F~IC1mE8HMw2tCv>s2fFFJXo=m&VJE&)4G|kzY!8g+ zQ^rOJfe~*1km{8MCwW9mMGsnc+Z9>Upa#M&*6timg*D6XE$$j4_qP(5TBhK4&&e@I z=6pJtu7=82gzvC1=%lOU&Wy)sAeJq7nBAMET~)E$uKJHzp$$v^eJqo*Q^qD`Uq2~- zJi%khk5^mz_RBkjlxTX#7H`||T9kwEtROVHoDqcT2*T4@2u*@;V-CW!9E7U`A(IcG zO9UaAh48r`oScJjbPhtbAPmWe@YeCZ7rnC(ngyYA4#IbObkwq+Aau-!@P`P(*FiK6 zUkJiVF&H1HQ-4VKf$uaQaibHEi+5|`GMHSfBT-=mv{IUFc8xr_h=6YX0akX;u+kTIvk>L zCh9SlXturhaB>W&_3UItIC&mahFl{1&+zFgh(BD~2B!nU33ZY*wVSLJ)8nYWfN(rt$$I&(k?x_iNvK=2*UWKil_;q?jLP0pW<#)=LvJ}Q(!6lMUaKDSr21Q43 z8^g>a%IUy(5#Lc*@NLbH+lz0xq}hex^h zvwfaf2ngZcE-m5mtPXc_@6pMuCypY|f9nj6lgzI?#&qAOPEMwa@a)ZxhNEo>`rmq+dtHkm;6ghcDi9&gSPzj@mvqQ>yQ zmy?(tSS_~GVeZgrirJ#=3OGc6a8=1i{xHyzsiEdKnjFp>G}xI8tci=7nX&MJM`g@F zoDQFpFN5F(qmbF%0Nco3%CuCq_M|w4c7*><8Ir@YOm4g6Xg?tDxb!T`lC%}>z1U!v zdSwNN9S;-td*<9vMLSqfc(av{rS5d;Vu!m&urKr9=JGAk_n4Zo`RpJ;d(`N|D2afUmsNt|q zYkt(K0WG7f0oPdrqVwQtz_!V)H{jn7QXro_?MnmV!Ang)|7>g^BKAmQ)r7MB>Vwo2 zdv6MNB-6Cc%<+9s>H_a!Bo5ghMZAIlM4mMhy=HAq(&i3&;et1l{f;H}TUbbMv*^z$o-?h}us9|OJ0v^47$dW;&k1DWlRp04RdTKSfPWwI%V2Ut2hcr`2-TW}W^UoB-EZbl5dl65T?TZZDvbQq4`GGCQ^;MXm zTe~L9v3{C@$BC!HPA%S(9ccDm;1xbdaL1KJ@V{5Or4Q8Huq1~*wBPXWzUVxWjJxR#<>YCMUTSR zn#agvh{N!ile&gC-$|bIAm|Y98XC-PlDO0@DUR3H+wn+)XJh9UmDpn$GEx8lF5Y45WP6 z(Q1pO&UEQwM%NtfTk_>>wU7&{`DTVrR^ip^;C;#*`R@w8{JPY`Sn3JQsH3%Su%v_! zc^H3m>4JY~1V7`y&ElKIKXNzL8uzz)j#E97IfG%PT!hjxs8q(V0z!o}%O{cLW>c2m z>X?QXjD?lH4Hu~mJ*}Ra8KkNHzm@p@b+Ytix*6^ISE#W2>6+*)6&{qsw20#sGa#ZE z9IV@E@h!YhC30*QJJIn+Q6Wfh7S+U;J76?%GlGA#IE9bqs-VBTUW~MQ}NIckG>){73&4~x+ z9p(qI!BRJ4h>hXn_p6PL$=&I%o8H43DPad|AQRcHWstw2W$DapI13AdL=2yBQX;x@ zM3G{+he#*%WrvViZ%jPBt-|T12eLj4#6UR^QXR-#xOgsyxcy)Y_tVXz!fDhIcDL5X z>aI2vam{c2?#W$z?%P7-k;6ozOhv~7Jf{ULc&q*xP;da)Pte@}=hxl3jX1Xz_;yknD z@n-*Ar5&v|CVI0Z7=+Un)RRAcACIu{yZvG{G9ncT2Ti&0%ZVm$&Cegd9pHsJ6*dOh zAUYG4MSvW7NH+Hyz*;;>@%~oX1orX_W_@+yX$fF#SQ@GfrIr12Muph{WEOiU= z_=91L!@snPxpeIgtiyyFT%d{4nebChoGYY0mOe-Ojp1$x8kQfn7z@u(8JLaAH1`Xu z3$md2% z+c*~0U{GGjo0|_eh2w6s&nb> zJv~U~q#^h9m=6>$6zP%H2d5ZXmDg;JR)08Oy^QW0$YIuHcL}p{0n_2ej~eG1L>QXC z+ql`yPQiJd@fD~!$MzOhgx^k6OW6{khc*=Of=S4idZr+*m`EEmZP6w#co&OCzr4f7 zC5~!g!+|yno4CUr>8o8f4Hl*_GKvCLS5Jq2wVU^ytZsI?e*%McE0h>#@7}hV8p4;s zCtj}_tNu2Gi}dRIrzM*9;ROAo=L*BIjwp#$Z;gISO&9mrK~~g&eyN`$%O9J$_*+25){ifUPJ%6~TX_D0batUXu6rPWAxfE#$$$%p^*~ z-FQk zMHL^jJ%z4)&n=Fnb~Vz({3hlX8rWM5I!&uf8}3yM$GxIdb{hq#PL_s4wdMthQqb#3 znMlrp2zcJ>Y)~y-Q7UvBLQ++b7_NwW&P=l4bHg<^vr6)9ruC71q@pzZ_5cqWyU2)^ zqJ!a%Vjvsf!Qs55(OR8(m$)&2vQ*0=!FJ;S1G5`#>-7S{x zM^V%(&jIh$f_%^<`$_H0Y7Y7(7*D#devd0n?ppSoDhh{=6x9_CLm44R>~o5{5FYE& zCX%M12?t+dW3v62+?X6gl3MHB64_SeQjV&K)HHuw8L4*m5?&eYF(4oJ$_)rSX?L+g z_|K5?zULm9tk4|RoQR)SP4}{3U#+W)kR)iug$o_=~2$ZAA>sz0v;6k@f-?DNghP9^1KYQLR@F+4gS=Hh+**zNf%F#n9VkHP%< zzdX1urgAWE=nl+}e{WcDm~ZFA2<9s;y(|35w=nGKTX=5-t>#$Yx=}3B;jONOLfB}W z_l_XVap^neAk8u*o4%edNXzZ;IL-37tEc8t!`{1jw02t{I*r2(s_9S%F`AaA_wnP< z#ieJ(jd9N5qf`)0+(?vi%i?pATEp%`WW4Cq`**S}y$IKN2xF=fuSHX~!TJ;^WCV^6 zN2%jT?QYH^@8k9-3S#i052~IO2*%g}e~T^WV)#e##BAJZAVc~SQJ%Bjel1TTBq}y{$zqT=t;s-HI2VaRS+hMY%*7;||QDA?V zWbaOny?k#!XdhYX7IN$>cne2rjQlg+nChbx(`@Qwp$RbUhvqW~3z4)CA<@Uu6V~avq}oJvY4{-b0wPY}YIDdq*))BKtFf`YN_lbm zmzaad`06_FbNq!l{FH&^H23cC^W!}|ewJD47WjGKP3p7LvxJ|=0@35=iFawlD<)__ zGsG5>VF8&`Vxm@Sn>h(v`k89-3y9H_Fn4aCZ@y%1Wqi~LXc(9+aHTUOHo(j&#?Os ztkJlEvZR>E{(XPpRt3bw*LoGAn{`j~@T=YYU4?aX>=|@(r0dsc-_3bo3f+v4blse$ z*Z=o!zD}U+2#oLMKzL{CZg#Y8mWZRG&_qh^mQ(cSa<#qS7_`59+sPyJMoO-VI8<`0 z%}v+l*9~pIQhb0$NgJwTVs&q8sQQlU6RUfbCvSys8BZy(+W&JPceBQH>i$~>vXdLR zE*H6xI|0OFAX`p#uZQXNe-GsUQbn)atTW)tfA`7_q=wF&%U!QjcsB%mpHs2XyXV`` zxBzD`$l7I-Epnl^8Ntu0((&S|bSc)t;hjgE;^UFCqm-GT6T0|m>Mz0eR(j(*j*`^qOUtM zO6h6!l@MCpxnkq%H2A3pt;U9M$*{aDK<+sL&UfcTjp(L$aE)BS%A~BajWq8~%|7}N z=S@Emo5@rxPxy1qM(doil7&J%OuGRXBF9TB-wW%6rh7JCdU6b5Eq-TCr8O&sF78hql3@8sSY~(QB zPH2ljCnRXOnmJ7Nv{>B$DZ{w!qM*c5SE$RGqDN=b#jC~}+wAN&7XFGR=gmsy`PE%d~qAEzru zH$6uy!tFh1(?lHTZfe%I=jJtQS2asovv)mCb)i{}mIq!f5e#{!C6RY(cwGr_)}ANb za6_vZL`n`{d|gE7P7LoYHqH#%{WIl0aHLL$N2?Gs$s~qn>r7YXs3%6NXQLj)L*2a0 zxpVSJxd*hw>aJxOFHc{HK4vt{EmLmpDzQmV(!$%JW{TcWp+1Bz+8L z3g-GxCHiE@v*-(0y)cOa#Yzn?L>l3U18tr8A@0ik2KI>69nRouR_p3{DDOLNZ4&vc zV*JL^l5KQl>&*=YZp3;-{S&%s#Y(IXZyL9$rMECGHCJDQJ$mR%CIK3wJI`bT@||#r z)~Nsz%M@Kq)56!8DW3l@Tx3*1mWJ?oB_UkJaT?SwQZqe5=*n}|aFjrDvC4(#?dIV+ z8R(wfVIrBH-$HKwoJA-Ua%Lt)O;%SSQvL7$uT(DPifIy`y zo(``+Tf8RmG~f?a=5z)Az?KKjrVQ(T=QH3)QLYbx`=G^+<6ozD*W^|_O(Pnu5y%yO zVdz5c+&ybgyO1fus$QHbdmd?cB2yC%ck$y>Y}v| zo~5q68kUYVl0{1x^=R*UQTSSy;TE4^FPC8_;{qCY<$0PsZs-=f#%SmkhXYvk{LrmA z#fEON4P7%Y;Xu%rp&KT+>59eS$T2n=i)qZa%FJ1Xa39NKp`R9q_q(xOEFYAP`ru+h zE%rmVr+O7sET(5a_@R5oDs2eYGQ+u{TU@r_-@>T>Idm!c>IDf^5KFDVx1yzJVK*B( z>t)j-k~}Lr{0-Ptd*)V~0-|=-SDg>qjdaPwy*y(oh5(#D&1u9fY?@&ZR)^=05~MZs z`O&iHG^kC#^RUI}9;V~K9n%W#lGlF?Zc6~%9v<$_t>J1dZraYi6n(w328-Jjh8yfy z>YJZ5gN! z+~1tA)+^&Y-kx=v4|A8*)1=4{a27{5u-T2ab@HEl@Uq&z7^__uYB<`#VMsNzf}|1S zBV;hkaCv%6N%+#qWTvUNX-A_F#S2USG}@DRls$7c1Hp+pK-bP}gl)#FlhfzM&4;Ra zim$q6oUiubQ=@7Lod_1;yvgndV%3sf79=5j74-${NqKs_ZXR32NgYOaWmrCgykc~_ zsE}2Kg2;Y%ydbb1>vuihXPI8ZDK^&pHd579foszwI`=dm3twCnjNAb5M4Y!>| zJ8Fv}0{i5KUs{?r!qXV>)$~7E$hry|&SYj2mxwPM6CYbv$kl0B+&Wqa-PN`~*>-N9 z*OAUR5Z`Zd=j66k{ib!R85(bSfhj4h?6+#h`x^ciPtmlku^G_OSc}Qc<*A^723y-T zo6TdpGgM+}(>QW7ku1WaC4poTqr*P^HHDk^2$ui( zS(JBNksdpZ+Xc&U3cwV#M%P<{lf$`GIUa0pEX^F7YA*%3Ael-j2`7wVX*=KyLoV*x zY=;Q?6?+r{H6!xbZGTDqcZ#QV-7hl@XEaqAQpO08X4+fta616@xnET-yk z8)I8(Ich-Ib>J^8ZrcUPpdwg8#w&-x<4bsW5@fI&c%)rtOMJ=&O62wNs)%1tE~|;4 zSB~T7^6u7OTepc8?f|!FO)JwC?EqFB4!=~ZL4sLWS?-qhN#PgO)}h0UlV4ZJ2&AjK zu|xsZM|pbJ2G3bdqxEtm;iAIBtA(-2$ZO?~L&4%bTw3I{@@J)WbZO3-dSge=7{5Ku zsHSzOA@PTQ&K53uuN5L+~i+ zJxnBr^vu0%L5Z>0o{KY?_QM!{w>h>md3+DwsHTT6j&$7NC*uxGMo=_3s`(-R?F0Kp zbT2|0z->(*r46qm~k&J zpibfLwS!(eE%qXuD%G~R%dJR-al4!NbC8rYQe!(shNJxt7ztWt{ ziV?zOR{dA3aZgw5AAU1k?M%eP+OWt?6z}qlB6)u$!`V+IdHEnCquSX${;&4GaG14! zX$9?n$~Cz09M|CW%oXi_u++V-(d++n`;W+P|6jM?YWr^_dHJ9oVgukd7*L=y~KYzLEl_s*)ocT=xo%n@Kjf;n45~e-`@B0IG4@|t-yq8jvEkSn3|0Ah@PKsuEYZCvBs<0Gy6Qy+RTr;J${I~=OKMe6R$SG$ z6qosLt)7#5#rqB~j@5n2TkZ4f1e-NHlh_NY+)Hoa93(V}by+HvWg~_p5uV#yXj!xv zvs!ci+S$e2b79n)x}S1+Fpm3G82dOF&9WLooZ%6m4=}$yj(4KWi4W~XlEe<)(1+vR ziM})n(J2)fF1VR@%*wE#AjfH7DQ%6B(l5thzUjch2Kd1h=JWtTwp_7}RyVz`rn|{| zLyr!#C(mW__CLw!>0pm6k8R_TCFauEIR;tWq+P(?L({c6Q1f!2>V5>&KZhHrVh?Iu z1ZtT}Cj z&xdS8GRG$KW@9SMsFr}9$=z#bwzNswb#QlBBnl!>%%|`2(5{_1x=jrtz)*MT3vy0Z z3!QjZ6*u(~b>BE@tfJzu<`)pha^>tksZ((1)rNC*@3m|>OSsb=C+TWdXm{z_bP<*W zLGct51kd9E6?YX|D{LxX`GX8hx=rfs@HYt!0={wXHYuIRoI@kUq5V-3#^V_CO-tDq z#-jQJ*>tzMfqn=_S+v6?7#<&g2iHP}SpkXKEm9BLF`Mw)qw+42daE1A(+Iw8d6CpY zVg|&~?X;UyBo>%S*}*?WwO|r-luk*iGPfsyMOJ$PiObEGw*w83ABb(sDo#LfpXE0P zF{Xkd!lIL~6{&|?6|_PqtJ zWlalcqoFq*CMZ?zEaF26TR+C>9R{&z93yd)ON(UFJ>Guw$m(ii=F;b!&H+^V|6_1%uyA!`Q84LW^t}4XmuOpbsR5n9wo6<3oX~3QQBr> zTWpc8QPq&mI8TLS|IWJO$906MF}%k-TKwIZlF}T>M|O=}B$xfI%DBbhp5%{-I&iZ~ zZ*A9T3_rR;1Y7}{TNi4^v9i1R0iy=FFF`1dhOS_oz`z=uS z0a%bi$@L;2ZgO9FT-vU_!(eT!!m{PoS-Y%Sd#GnDjpM=e9_W}&u=CI&*3!x#Y;_gU zei4c85s@fI%wRUS*g&IF?I#N>bvfc?yUDuxRyd_n?OP*CJxwQx&4-=c9Ja5)KB)Bi zp32~ST>f!v-nNUT#PO@f@G1^&xAt*)p{>#9G|0mYx8~vz_IO_wVey4nD#<4|QsJHK zIhjQm+XE|ttic55-4MQw{erA@7H=j0W<(rBgbuwc75vKqbSt_${4qMB2lHrAM{gT! z^bq0sUw#KY)VVZ==biuK@qCh{Zh`03Q`EzpN6Q2tc%;10gj|2#W2WQ;t%x-dQqB@h z?dG6HNO{lCzP7e5Js&BnuznKIDniPbMF3-ZI4T=UyJ$1f0E=^)-78(rAg`lON45Mdf?mM`!dYLd83Ye3hM>(86vhOuU#(6 zN4p^{y+CV1*xG@2I|g9>WpZJ!wc8YRkg3&eiq8K}B!Y^8{VTdgS}= zs$d8<@d3=yDV@Xn65`JTz{5t~dxihvJs1FgdI`)=4`NIj!&1Np8?be?OAjaxhV^JW zqzB#yY2gzw=X~_6pHVwih!)7>uk~Qc1gY_-eg3?0x9Hp)Xjz6|*oNTzk~l|;g3CzY z(AebSx-SXS6}%GO$lcx@fUnYD;P;|(qUTwnb z1{%3+x4d=%Er(das-eX#1CI><%tgu0YLA+B!4Mk9wF306RDm#tBMTJ=OVX1_5=&3dE(QaO?KIueQcgI)zSTEF zG$&!D#W^Hl&Edf$tV@)_*eC=Of^`eM{!5@Sl$<=~Xym zOHm*A8pcZE;gK(QzpPl7NK;dI2zIn+N!Eyf%vWK<^(*+b7Yk!rT}PeI-R2{=h5ah> zmfU378;tKymCr`1bF zp4LzmESwMGDI9V8$WwT9-jcCgr%GnY&t4#eukOgm_yGgd-8$cKQCE5q9_ zV^rSITC7MK@j&*dDaLp@%RZOJgBdW8e_ z&@@#@_nB~n=74iV`G?0<+wl{WE78jaR<0E-MN@w4)u!oT9xH>>I)|_IH+1V-8Qijp zGz{zELQ9I(UCDbQ7=+B5SmQsdD;2%?TN8eQ{8kkZoeSUrs?wV9bxCw^@jjHJAgw*q z3I9S5=P!&ri(#3DIgxJmx!Kmq_O=G5LSvytGsV5kt4w~ViCye0dU_Q7AT*t$8j#jj z?(_RWH3hC4$NAOwns5DdepzPS>ybSKszK?ay{Y{UqzHPwx@Fs&BOWo|!;lf4TqdG5jb{p4i48n65BC5n%$u#nODm z?zA9Nu=r$AsSAIetx+ftj70e-4J`Pxraf0up`Le?(`JCTm& z`}Y5__9pOAR@eW3LI?x|CN5FjYE;y?qo5|nWd;(Mkwn226*MhYY1I~GMuY5~L>V6k zm#SaeT9>-E`nA@o1>6EE38H}5D(+j=XPmm!S_rl}|M%zI=b0p8fB*houixuMnCH3A zUCurC+;h)8_ndRvK9s;S9wEsMR_^+q7BW38-0m~eyN|UNs)H65hAq6~(nC?~mqtgR zw5Rwu0l3s<+cPLWCMubL2Q^rbNk<(u0^m~1$qnP$GdOwh-=7EFJTv(A zXTH(RpnK1nJlCsxkMKGD&7es8{i*}1pW>+g6zbD1bPj4NKjI*Y1#R3Ewz26LL%_a$ zsN>@8MIBdkh+@T5=UTTNHb)hT=K~tOPmO*Myd!Pz>(Mni>u+@JW>|3-hEP7K=G}}}3@t&f;QPEW2qThTP^mS@b zwAU?E3ww%gT1n9(`xbpVEV@Tfbcdc+$MqCFO05=->eJUnVbPB)J<|S$#@?wIx9Tan zwTeE|w`g-%^!}je?L9@^I$>1!-p3TpxT46pw)5F0EP9cpr+yr?_zTtGu=^(!JF#!E z*FOnRbfhab%F+9|L6PfKWH(pj#Gs{n!y*G+`jI{JX)nbMK+4<+rDJLUjH6YD9|}Iw z9R{T>a*{zDelyCEvLjRkVHQ9W1=hW7C)XH&sb0@kH!gV5OYcxC z*VZxBN7UQUhMV61{ab*oAuiqBiDk9!#OeloH(8w~u|(Rg<;7OyxuN{P5>Q%2^WO|k z9n4DfK@*zvx>#YH0$O(PVux&~U0AciWAobw6U|~(ehfMG#zX?{WWHlNvA+zLuQmI- z<*Tn2R%`CVXWP;tK}1XaC&oAC=)4{MNY8!V7(|%3INikoCTJQ*cQANm zc=pthq1e==LznMUUjSj-SyZhi%q>HH@u?PPZPnsGhk0^v3(ML2iX56-%<%MLUi=r1 z)FI2z8%K#|8e9A~50gf@xrM>GOqnx{zW-ax)9hP@1C9tXV0e0sK6vhf=!jF?yNua1 zwg7-n9pkLQF8^F|_T0kK5?k_H_9kWv>N+S}T`(8kMY_XOBhHq9I44qRaX1eNhcg_0 z=_mag0E^u$mM+2Y=LYo*<#0P$682b&K!9OyPbBdWd({|0{|D?{HN1$u-D`SbZ!|Cd z)esTbn{4tv*t>Of5qn1|v#@u*{~8PszCK=(+AiT)D9vdSTuwdQp|6?fnB+^nkxMG0i~axV zA&Q^%S4BojujCrxFaAyaLRXH5hT7^B)`WB8ITIJS?`E_%6l?u5t1?-U9(Ght$KRxx zJxB3!i~s6=m5&*)|Kt5CtH@wiV7w3Gh2olMJ{aMJARG3xjW=xLa<&l*$eCW%pDQqC zk#Dr+TkB78nTC1;?yX3*q`NA(*y41)j|jdWW#3a#l2UIcDhYB}K4r zt||?R4C?t_of?|%s^)v(V6P<&S0h~0=H#_ta1#dih&9yi8EJnX8pQvXliKV41-|9g zau-P)-^JOaw8(_Av$2IfAWySU#M1NZ7M82_>P3{d^5TC5;vvdkNvWtQJ^0WfQQo7> zBFdL7Pe7EXj|wtCluzhGFQUW@fBnaTw6TTeeKk){e`<|(`B#(M0C7go%xmLoY!z&O z1^tAV4EMf-Wo}&bG3xX_RCciI@IsVeJ*wriZgHl(J6nI({32v)gk>IxNL9&sa zymcMv?XWo@y%rv{K8f_S;|xd-D)cYI0z0I>VSB2p!Gf|oFa8{{!0gbyG#5mDR~=lW zzI~NB(-`+BTOMv{SBBR|_E6ukj(^$*@qVc9WZzMr8M?$}C{5Qt+ru#IN67yj^v6;{ z=)jkmULpCF+w$T+g(g|xQa6r5-K?2aUw*`X`4S!jd(r4gr<`hKy}vhl z|FlvsA%>VT>^Xa2bGDoZIb^psc(X>Ro#|{35%H94LGLesl?I~9sY4KWa`YIY2zNji zzo#B@3i+a?N7@x*#Fgx|cWT&*lD~H)L&?52Ecri{o=Un>|Aw}M_C7?R=+Ej~s$W>@ z`>xb6uGGq&Quj(S7;9hAw7B#*8kMeh14#D?zFo&RS6Uv-L7P8T>2lYmV#BKB;;`f= zkOO@`EEHs97Vp=h;cTkAuqHJWim1^No>R0Q&DaCC*Dne8lHi(hacE5PJ9sci`K7B; z$HQuB&# zqE{&C1MBiX8LVPhg12oV^qMb&5F6?qkPI1VKaeu@^F~D4M@T6lG%aNBq=Qg=;rH5_ zcCT^$DDNS`)##J_b6u<9?&Y($gMJ+E(swMz2no>kGJBX@gi2g>kM@jq8#@ethrZR_ z7FJg{&^o=*x?aIg{&Fx_?sCNr4{$XptnNXV{yp|Wp*E^#WM9ILGj~C; z&TV@@%&5+!E4zPC=htrqJ)YvyF-r|evKnMq^B zzjs(kyGyU^>DDw9cKH)H17q#rD4czyOj26dcM^VrIp)s6f4yt*9NcUGdfDy#Y?89| z#Clj}d_?C$?y%-M06aIKx66C_dZv)JaewRU#Q~V}-wd$-mPI@P*~2Rj&%m0z0RZTGGvh@K@GVTAk%S_pYs$3v|MZF zv1dK)C_8)$&-*M^K~M1O?DX5i%fzuxdN(uoJUas9VA>r4epV4s`iDFirN5~Zxej0# z*C>itOgiZ5-~X(FpfQ#Ev;TLquMu-d{lqD|dR+p)T|f1u5##ltbvqPkLH8QVQBbxw z(ozk>+75w@tJ6(OH6HecI*Ry*PUrdXhy}uIa8ni0TupB>HHboeEsL=;$w@wEY6j}V z1f!2Rj!spO)5oE30L(jLb(b%pMm${kpBH!fCn-R3XERvg6m71$0X7M?Blb^EQ_eS@fbt-tk3`p(9id#$CiZ=5o#a59bp%F%qIWTfW=Tb}Aju zTrPT5M|NcglJK6qO|O|p?MG3)HHu|`?R4y+byfBEz|&(RjCF;gTEoi$rtWa*J@yBx z{?oId5(4^#i(uOW5)9o5L$}F@CORA;Hva>wAUIrd;=@OO2`V2Kd|OZFV@r)rEOd_A zcYigQdqo5ch$Dy63qimEBgj7{t?g@oMjOd3QZ35$5$Kw;Bdd{ugVOa`rBF_xf+q- z#@&MqsBpew?5NH@1e@rH!PhttFm?cS!rlGWDEIAL2qFf&A{$pU?Yvi7)x)=#`^nT9Uw8m88#k_e&)OQ3f?T# z_?`Y=b?}#a=x$LSI`pN0Xs@-@EqKReW(Vqc#~*TMQ*SUK>>$a>(!X3qt&?2&gM-EW zwe>;0buQfnBow3ckNBgT0=YYdOgFuH9jA5g#u%1asW2XiN#~2g8b4w@k!XK}bnaNM zZ(hbss=PUu2g78tQ}YfiH6MNj&a&mw-v#1MV4v{G)}oz8%tge=oS5)xqm9fC!J@eh zytRSwITAjC+RqaaxZ2O7_C>Dtgw@{L^!I94`+08lbhXcRwTDac!|)?hRx0>SEFJo! z{9X+xgv{O662RNy*;HISx3e~fR#k$k3Z@w(SxWob^VjWRuU`#zulwoMEuK=d1dFF0 zwRq}Ri>H43E}lxM(SOzc6}@0)@hkymK_ZN}z)zpT_!1do%ep({mzyl0!WMFcvzH2F zr&Exa7SKC8>-sA0xvT2l5Es{;;3XbRQhH7)NJ@mQ1InU>l!da>?c=J$|KP!XW-1b% zaGhT~{}*RwecexMDM)($aMAzwjQ+#*^ugUh;?G^0TTj2YE}-4HmfB}dNK`*}oFiZ` zkovW(qFPxHFQRJ0sGM!dbddz{Y}JX>uC;cLT_ihct&OxD#KLD`eogRS!U+@Bg`DcP z^jZdXQ^!hTkw>LH9Ts`CBObYfSh{RP_HdTr2QjSGzQi!^B=2-8BvFuuDb0RzCZ6`EFs)*6rdp2PE_Ej?|yDdLnJwiv$dA^9w;6lY?(MY|*tY z>dB~rJD&--+gkf%6nLGg+bbv{6Sknb--Xo;3cl%Rl_kJb5GZ3`@E82U(3ZSJ8}%Q^ zdMMx0gRvjO9oekNq!IEHNovO~VP8l4QqZ*^=`Y|pHkI4E++B~)A|jbo-S=qxa^e@| zANno>1E~XQq!}PYE8!0u!BD4Thi=GWiK%}Y!@ZH}``T*H86vI}(i!SYBeiP(oT!Gx zl@A#2FJ6>+>R%)6%c;J(?mS}U30<@s20=F#Tx_${+8o+%EAaczU5y7GL;GThd%M?< z%H8V@dJP&AhEe#z7N27Cq({dVw+zv4kg^(|Ber-BY;nf7VCMYx0~kjLT@QO)ODY~g z--nL1o$NIVF24B|QO%=@qL8inAA}6pM8aFec|J$NpC>Rp*L^>4Y}PEcDRdeHndocd z+ubIj(#8z^zc`uv7Y`QU!vFdS1#A5~chr1|v@3uH$-fPfvzDA38tZJ7IcG^uM!$T& zHu!#FukXmVCAoL_4+>SZa(7@J^?$+A6dafzWNT1!)I_rwFaFItYhZ@Hpq(8N%>Dbf z*HBo5^Mo>E{NT4*p61Dx;a@uh84%6R)(6jh5RriJY=^XsMo;-k?6enx4VLNe&*-qH$@7Fq3 zm^|E;lOe&~h_ap7C}sJAf`&=VQm0EpzyDrUi9f}<(A{UmUh&7JX$3Wfhs)V-#JY6W ze4n;Z_-C0AvD*IvL}$Jak^`Hy{!b5=sf?m>b{TD)Lk)=_`Z^x< zx$mpS;sLVh|00i;^;urxg{Sj*664;#w7MKjiEphg<4fa(&bAKh6YBpJX&XicRt|6V z{xA8rxmh;JAj6XRbN`qC=C_4K&Yh4}B>(LbBzL*wT6(DDO4k*Fa^9*h`6h~t4!(T} zognh{AN6|vFlR;b1@?G>OI|f@2hL>V3AXvYaLazd|9GKri~VQgNRX1;CSETyWM>)= zqB~Nb3U#9oGu|4+8If~iCm?{n^jzF4hJsbJ35}oUoM}@tb8l4=YpGI8l&kBg*OAef zw?yihs;S^#w~1-s4w?5EsIdyB!I8Z9H$XCw#HWgisA+K5w#8{MMwvAYF0wqqH28A6 zo@pR@`_?qL@Od{4Xk61^m^IktA4E>U;Lew$u_Yw~L557L(P+|bo$q1kpXYp!?TP>P zk$vXCa4L;Gt|E+1p=uDX3y!5DZzp%oJ;DynQvb2qmYw`o%oc@GC#v={T67lih#D;# z#?g|6z4XB+$-80c=X@(`jwOS^m~ zc0sWvDk{Q%=EnXdX4}?j!AS~LlT;g3?V$xNTYlMqqMKwfQpy8XSALM3ppjbS`I7ck zAH}w&QtW@JBy5fFORm`-b++?Ik%vb0sE*EsGCOB6WHbms8k^p^P?{knWES45YBLL? z;-7V~n$*lrOA?0SbqjCfCpFxE;5X1ncOf-Q%K{DwBWbVtY)(=hQwBIf=M^11sE|K~ zL;QGVEEZ=SNyNshWf12deH-hn{Bvx^Czs%8g4kBtIlk5!veSwxe{Z?MQEQ^bfBY!9 zhtQIBlD2yFO^;!`^A>6iXwFn4tf#h>0@Wqb0hcSD zxweB$O?dTQ!*AR>5tG3Nyf6ZfUt4LzSiJrzQP{`^dUi}CGYFOvtjg7h)jKJi8@v(! zDW3fEcNeqA9JvOke+NfclVAc&($ zr+WeSi7tB_!GSxD=?vXqNgZ1q?33_-v)xg){P#74=ss|n~*6N^COFU7So8vFOE8Kv(NR$1?aSW znUO{aeou_RNf^_t zPoBlt%&-v|I>e|a6=y^+PAb1pIwSSW)`zh(jA+y|>H_0-a5j<-PY(xXmnXu`{ic>( zAV%n8q05t64Ne_fH+ks=R`!Ib#-hc4%}%Nim^xBpttl#3v7K#?ZVG=Vq);qT9O*J z^guHD%eYy`<3 zfux${Ybx6D%o+gXS_mtCy-5}1N}Y^#cl9XN;R(ZqYpL6c$lgH+bA8twGCd?_2IU`V zvrKxme;APujgn|r6Cr>leI(&$B*5tK<$@8@)5ny0pQ-Ma6alwZ`?tW^)Ea96C&-3) z-+%Q3@n0DtWUK!0clIw8!(j0=(~_^!Bvod_L;uCUDIdw?d!$i|aF_q)P+JXd+32W% zeB6JgG}?rw*dnW6Ea1RRfXdjC3j71~$gsL@@my_<`4=hrg~7qOD|Bi{ly@%IN-!4m zwN`vbhrKb;y0OvZPg&Ed13*u#QRnHhU#&=&JVDId4r}o-JFM+x4hpHXfFfHyP`xp{ z{`yxT46gaTX#P8zm3#7xK2#8r4E~=dodUT`j(cY?bSN=7in<$u;9$2xj=t>Q(OUZ4 zGQaR4Ax+U?Wj=)~x9D6KIHt-){e^j~#+rfpQ%&ZTw$tWfU|;fCB`Xy8J6hQ%NYuZlZS-q!cJfLDBRG z1sRm#9cGmE4|*c3o#7i&s5Y>j)5k62*83Iagn z46N0{(GcN1;=U<4Xj2@W$TC9i)`(~Q*luz=~z>lTfWzf2Q8Gj@g;+$6C|o8)xm zTa(GPXs%*Cd}utS?856J=*FN-NIrsZV=l2!4^aOMpni-_W$}3=WL6pCcGq z?P)gBrcp@O?igvmLLCEHfHy-##sX&qmbyTbq!re4e6>8*y;Ca<_!o>hcM0~h(L>hy z7hue4yG5qae?uvB;J3dIJ8<=(LdEP_sULx$Z%^WmT_)c$s59_R1cr2NMe0R0oSrqJ zG}-BYg6>F;_L|QD8S%TpZ}h`?nyuQ*>7sw~AS0tHLRAQPWa{#xN~0vWxB1_P5xLlU z#)uplk+Ir}`u?)8at;2m+P_up@&spb(0{=jJGrf6)=o0wW$^m;DJM7Dd!v!IN;2A# z6KOBkqjyq^tqk2pe5{@#lxt zAVtRvh^e(24NJ4v=|2L~QNMO~Qt2@DsVeAGatOVq(7)o|&Usw-8~2+0KqC3wSllS>MB%S`WTCaCOH;wkj>+^I|=7`6L*g+ zpacO5K>6#*I@5Or-f(+a$&Tb9oGihn*~MEHO~KUjFn(5kT@(td;HpqXgA8s- zK6;lel?;hLe;wRn8J6i`FM<98R^nx}cZJ{^@0y#8dtQf9W6^u7 zlLOM9S7&0;Mz;7!OEsh;WUb(_TFOZ~UlEW0*`ZcJ>Ig0K`f3@o*LYURn_ ze;eU+!o<$8IPmZ&y-M!GYtU4hhNURa!=qkJc$>Y90k)YdfxNUJu3tWH+d@~yp2er4 zDtGqNoz?-X(ZPYm;XR8;ACFbB{LR&)@MBEwmf_ z7{9TlcmLQH+6z8`(PXRk>d%h{Wt6GvYWiLiFT7KHe!8eXnOHF8kT7U%m^CBd42f>7+LA8-zfGCPZJF}dZ^k|GlSJn74pIXx*?t;ZO%0a*6(^e36rkSW z$v+7mMC!xDa?Hv22KS_ivCIR~;`;-yDJ@A)h+@OzrbvcuEwTozqFRT{ZEI-3`)6eF zN^9wH3%V6?=Z}y|D{EqEzoirTSg88jpO|tP#B(h>`%-!4z6E^fOtf9r89!d#gcApXkreBCsu1bcFQEe>c>x znfs%-H*mpGm3yaJ7R;$E-7|GMKmA6fPUNSoHZ_5t{`IMbu`Bym?!Cm&qTSYcgw4k% z^#Vo_5iHg@Zu(9Lf42BLr__i)WZl<=+%1AHTRwyAc{W1>BaaU0w*+`f#x5FC882JM z8E``xxadmMzZAKOxMzj2iw>w%aIEp1ED&w(1it~*1yjrRaZUJ~j)ZDzoS2cA0TP&z9~ls7|Z)m8JGNflqp!tygbD%p1U6Ib5B( zL@3H*!C#uHbC;`Y0)Wk`zZ1k!&(Q$JT7Z*#EqV|tnQM^0(DO5!t zVQojPfL^P-0Vs0Q>3qN+oPPTMC4aUPB-q${2RO`rn?JA6-7dzTH}K?p+M$1&KacZz z_;YdurVuFY&8WJ%nY-S!b~`)MvuVr(k5hRt>xpKiu&g4JacOfQdFaBYHb6+ffAW*J zQhUVHPx-vqM)|4F?P;5Mdj5ESd+ewm? zVe%dl0RlV>kw8YKr?*n{dzbnBOFGMTUpDrQ&a^byYMM>E7!wEYP9l|Y7_m0{HQYN;qL8h$wnEA&cu(+;%xcva6aNq;8S21t0FB?A(1&EcL1C) zuDB&z@vZv3ugQsmocmi`%0Vs#wfp=^mvX_omZz4K;VxxAm%=(XzuKj2aHZ(%{2G^X z_d8aKt-^e622fjVZ(GV_Qfghw7p|TbQlc*9nl~*EN{IQygj1^Tl-IyMUEiUl}m+0o({OK-nhSiq7Mwm%IB`t|dUu2M^J6!s0{J8Yb z4IURGD{Yn>E`7SekY4BV3+*nw!__Z(qW&et^jhnC`W=_vQA~f(rHkaquj*Vq8(clz zO3w}*Y*2V=2IcQH`a!VVF`dhyZqv{-Aqt7V8 z{7G}QEt!C@AuY5j;J7h8+Xxjc63I*yF0j=7?+*s2R@G+)2J1W+SgN}I++Ok0Gm|Qt zGBH?4f{HVSWwL;?KIyj!2A2JGy|%_Z^}%p^?5h@99hphU>;!FRsBp|%WaTpxtGU~c z=HfIL<=cO%??1yAz_A5<0o>mWU$w23fq(QJD=w}qbfmkh=X{yDR{Gyj9YRsqFT>BM z4l+xCq0^a3U^Rw(BpfLUedabLgQM;E<~mu#+jq1NpM;-)($l_Ghc^e$O>@hQ7&|4*>JKqPK@5V7B4?d>uLc zT`=Ou^C_Cb8l%hq)YTJJ4*w7TR6&mJu_UR|hiuiFnbb)=%G=NCr6#>I+!#9U@V{E^ zc;);n=;j;Us$`uq*;v)Ou{z;9$BGl0e#z~%myPScsQ#`LR}0G2O17gT{m&v_$%y1A35>n= zouB7KSvq0fUh?T6=`s*p4goJ)Lhm}FL&)OZw>SS6<(Ldv9q@ck!e#+%A;~6KvGEiw z=BeKac|1S%6_DT_&lZR}IO)e>kmZZc8utV}*RCd1S{{EJNg+mogG%(^-9AH z6O7Fm^?HNHzn8p;M3;Upwmi3UEd6e2a{C7FwFYl}YUzH|zaqhAC?P8B7}<(;GpDo>UI>-b}L36 z-R!E=2dIuvyLkGZ-h2@3aC2#rumFBlrk@70!j=SY(&Q#@`NkE|92)J&Bihl)h>@a29It@6+ih{Im_um>MwjB9()gJP~!z_BwlS8 zDs^Oocg6vD=fu3p2P70%NM30T^{=NcZT2RPR4i@pM1q#Ak9nQ3$o0#$eYn0OR=->) zpUt%~#akXGP<@M0B-x@ZOVI}F#XbFWEwE2vAc=8vl|ePMmP zB6)h;vpN0+%_h&(a78seJI9;BkZ60?;`;0Dh+WV>s4%1x;Iqb(+xSFM zE#{O@NVfO3q2W}9*9Y_px0@LEE*)v-D|XuJP348%-xZ9X-Pg8KYH{G3&;#G0A$);$ zaG=_!d;4&5gLaVp4N{n_g#g+Nhv1Li&I0ej+(??m_!(0Tf=!9BWXmf)*pi2h?l7fb z&LX>cr_r7D$pcwic<4y7!XqBljj2cuYRX(zk$Z!=pbSHr>Mp}2tEq18$W(QZInp+P zuT6EWtei2+$4Qd5`C2M~gJ3eJ0Pspg11#QP9U5UNYyJ!Z&b@{c923M&Zpg+;HI>R6 znQZjT2IyU-%poN?rZ_ko(ciKJ{rpW9)}FD5v>id4#DBQUjYm$RZKD3Tiq!9d*?o_o zv7(cMqD^)4Yg1KHA*@7&zyZ5DPk=Dfc#p5my$ghD8@!x`kL}QIEV#@Ifxts30VwFs zrE0gsBtR)Sg&+V?F6KkAJ^u{{s#=;7wiKv!TCFjeNP>sVaTWQQMMQIVpAcQC5t%9k zbJ-+aI1yy>o8ofBz=F^r-+2of+CHTYJPgAAPVd$J8`{o?J^dF(b0R6X973pspq0X; z1%^A)#s9UbD>AOOMH{(Lhl*ZCo0b^t!Qc6GQT^utnc7yIp5j!Lq$1P9YNcUko(=P( za`k<9sIx;&a`d5vk^}f(i)N%qh&N4}SwX=0d4vhakSks{dIj76x;ZNdrPuE`Uwolcl4I$_vsuvWIK)4w38sV zt>T%{FBWttkQEpLaujxRc$3?*>NZ#3>X|ooNd4G~`A-%ViJ7sS_+8Kg#+`2VJ@?j@ zU_AQx*98Ee{gS*FvP%1no^nzUx;J~lh*h|xTq7X8^1mWt#Yf3(c%Qhpu!BVT@^&`r zUIHGcBgS2br($*kuiT4f&O+rdL*2fXn0AY1gN{`)50B`w9FLpJt(3be(KOA+Qgaj3 zzj!@4d+&d|(ou!uy`$bqc$W@`!_1o`F50ty!#T3rFt$r~diIo()V@x*nJ_%^Xun!S zY=3orlVqH&NuL4Vs`i&zLTWTtyYc$Do8~+bL%fqZtzPrvZ|_Pw#w=V6Se?>5WG@Y$_;|M7W8_Zr!zfr)|Z>?zzvlFpVLun|f(|`3Ap(J!| z+V*y{Z_N!yO#YVKcrT$qR86*O9<}=~a@xm?%zZjYQ}s!aKncbnym9w;B$0kXA_OTV zTBul(7Arm{3v;9Q(H7%-oHx1~w3bHN6;~$VwX1C0n^$dP^$=<4)&ojX=W^?umbc`- zJ?p0w2Cw+fAKpkA;-_BvC)FlSuYkVcAsD~CA_~Tuxn@I4sPJdM% zY5SWV7v9GI>Fxs~ZExz~t5R%XyLU+LmhL{tnKB~2)h?5PjDHbF)1uUec|otA97X*y z!1AZpy91kR_>C<+X&P{4%O86Q`p8x#Kdu6RiULdQ)J^$0A})MM0gk?}N>106u8j&` zJ#T80Zgt&|@X)A;I1??(P;am%M;GBt?i<1wY3raC;FK^C!uSH`*TUUhd`c8nB)9{% zx&Ea&zs0wCV4~33gvtC>J3`wr??%ywtcRXpA&YIiT*3-X&n+YmNK9LNzsh@;o0`Mx z-vvr_MXYov9jvK!tH*ZB8%Pp3tmN4raiqgx6Th*gKXf>}biLtlWUdzua~v(B{x^cOts_*?Z^+W91Q*wBWTj9keT94Fu%sU*0McQ^oa!$`i4bYwf z9}H^>8JhGlq@&?tX)|(74(8r~8ZZ#eGm^5ZilL#9u5RHX>gI7I%)lt`OnT*iK>R&R z6u}&=uB+0YLyk?}Y)ValUA^Mp%3-}3{!D>qVP_c=l zh@x%OC_JpC+Ha_AnU*IM6+8G{yZn<$$Q{^O`O~k1Z+r2m|Io{u3kwTAc!^x?^!y#E z<$%grp!`=Ci$nNtcIeP^u6jim5bf8g7e}m6+o5Y+4AAhi-^3v06s(uBhC|4Gi2ueV zcvWPcv;@qsHbw0o>J)G=77*W{P0?yGuvB@>!_4R@%G;>ziVA3yGP7BiH@vKj){9?B!4FB z5VE7GDu0ilisP(`A5%sCF-WL|?GgSNf0rg>u2||MAYsauS=}8HSkB2k+R4ua@9k`Q5>}~T*(@|Zz7Ak83-+AP2Pt~`?vICKM}B-X0Lz$ zm=}fLY<=mV$Q{cgKT{;HW_NfU^Wu})>PFgTla|hvMcOW8{L{I9kv7GNvQL^{>CI)t zCLoU~fW*q=?Z3&7qm+PgZ=&}v(0hOK2POgRxQ4OKG;Wd<&`45j$*GKsWaqg4i|Rj? zcPz&=V<9pTmU9s`Zxd8V4wOz59}Ew0aHA-h@MLCJdjGqyGkp1RXUoa*phM7m%{=tq!ey&b8CxeB_I^E6;SdF zghlSsgh}j++;#bL$X$O>tqKF!<$w6TK|PaXy}qJXodOo%%M`&n>J?K(pK2La`;P`0 zyl$>00x3NM>d#(LM93oW=zFf}rssPQ(yAmOBzr1i86#=qXU2d{h9J;lL&=b8EH$S7 zo;MW7QYyA7|D!GZ>q(Xc)N9A{mfwrZd61YD{*2Pgj-#sPx~$k{vV7SD-u$(n-~=MN z=43pPex{07IE5rH}ka$>z~3v9k&YS^WDr+ZjOJ@4;uVt+;1xrQVc zW9Q7GhBkTMe9zhK=Z`8oiZphzd4zlViH%3o@7(^S)sjTKq57nz?_(0{e9a zjd&aO$d6c7yZyld0~+d5QzGs6kkinAUx&(gFKN#=L-v_7^wjEq+#$sA%JdpXY!83) zyPH@)8ixlqoTq@_h7mLT6%d{67mXP)DzPPdf;1%|(_?T4TbH@;4CnE|*feNx{40O% z>Ti`i#mKCxbrI^}6>@|-mN@Q8P)4Dk;dmW@O-=B?20#K;XD z81CThvVrgHzZl*YW*MCx>Lm~m5 z8b|)dr^6cC+1ng;;=M>!k;Y9iG=r(ZF{dazC^<~rQU@=QbR8Ti?tNN!^N4O5Ngc++ z=Xx0I>MW^D?qP0xUH;2BEEFM-F!QN~VDtu1F2gn zh`vId(~P25H2FeYZK#XYzBhth#KR+eKAHnr{VW1o7kl*tO7Yy`2o6fq_(UE(ee&}B z094frS64&6nz9|F=i2x$%w#I_l8WSe4c^tak&Z@KlpPH-%fZae@3o?S2{hyaeLyD# zPPO0uy#Sn=Ss40f zVKU0BF(Iv?seutgkGsqy`Wrr@UH*^EMmHdLh%KPB&q2dv1`sq*A`b~g;S09Op3%$c zxOcGNKGBUf%ink#DscYB7VbjPEPDAHZw56q;Jvc{i~cCMR3V(9pU2aWk66Gb(1i>M z6Dkf7&`pPUL>~YsZ4*0@aKvoDpe6baE#)Hw+-bs8%7ziS9*bZ9F{B_ZbsMFnMX)cs zmVhnHcj1s|qB6Qtc_{y&czVu=s1zbp5Y4k+GaLAIzW*GX5#>^DzBzOwcA*_zTf1Ab zI)}orFpDF>lg+YkvW3ZdA$J8s_So)5q;$fhZ&u$z)q-opLBpj6WK&hkrty>MT1E1- zptEpkhTCSE*GZ#{1(s|8Mk6q>fPh_B#in1{IiT3>XGNgce`91#iQHEp%wPb)!eL3I z?Igewbxz=y9#1aO?f@}it$zX<5Wp-_L`b^~3K+KyfuLYLtIiFebla*(Mztioj&yDR z)Hdl<|b-zmb%^& z)h4#Lq<=k-o@v|P49#TzSsWxtg7B;i~RvSH-@F`u{~@c9T$Q@gTeNrL9TP(+BstOvmvWL zG@O14TfNK7Jvn%QLA>mLikE80D1_)bhnr*fBn4*LZ2-i2ft zrNm>|lSlM3EBr=?zEn@OCfS`M_F#^G2yo{}x^|`g<(XcsIN5EZS5vY?r~)w)&C?$v zc?8y*&GIwhy)9Yw8oqa4A-RodK;veK7V1CXU6HoK;Q`(i!nt;(L+UJZB)gNQ#{`Th z5Dnx$U9fa9nn#}pl*|fODpKY^x|n;}?4B+sn%FGba37h|GFN0sq9-5^*=Y3cwB-qa`IUr{RB zKjy{HNtWOm&B!8Y)f4q^N7~BiWmDa>k&*VxE&G`@`6qi2*y0d4_rCn8+1S@eR+ns- zjs1(?OMk)CzLFiIS>Nc?G7|H~$;V(IJ_evGivDFHKIa8br!@Ft(HXj@9Yu-1yG98( zTF(QS!)^ADGZ}qD?r`G*#LqsE2in;F0GKrK9{I_S=lyW^{)*m@;C;Xd`@Ro9`F(i* zi9YPW!xI2U!IgU7n)kc*v-d|;-dh{cXSIJW=L~TBd_Nr+Ibw_B?jcI+Ly639iL~xc z&56kL7LOjWH>Y##HuS}u-Lm&TRQP0BYGsK>E!Lc=ZO+u8t}OL$_BUIEh8?!*a52uq z<{)^5v|wd8#Nr0{KOovluZ7O`T%c~5lQLiM-+Pr)OCd7Adx7C{fpbKl6z{`YvXo$tUx)n$t$1-Oc|AfA}-nVvd8<8X!3xmC#% z3sonOwW+Q?HQqtGWSYVoAgjc)Lx)(DT-0{v9>~Vp;7)SEp}{TfrYcYU;2Vxy0XfGC zgoQ{BS4)jR5&Ho;Tzm{kfX-LB2>=&SOhJsg+1koBpe&X-6wiwel4BdAQM}vk=F!>> zcY801wW*xn^pNY7ULcIGW#lsXC1Y(nKJHkXeS)>cNRBP3)iNsyRLdW~QQMm)S?zfl zX)B)Fpte~9Bv$($we@PmakgEqz!6lATUc4?coidEdG$-E_2N@tNvTQy0ped0fK#hb z0P%f-`0n)v@p+H+h4^ZcV@nPJ;+&iout*3FCDSYEDJkR`P$M zZbnUNN+9&ebmd6>x2LgZjUW(X#ezx*=>6;evZ;`t>t9Hl`AZU+)*6j`YphdO&6ebU zs+3V3-^MQ12eYu(S?ixmF*Y!P+fbvnU$1P8MX}RK)Fk)tJJrF!r6?2oj*9$tkw{Mt zv?3j}n~tjrMpR7~$F%oy?dUhKmwRAOwEux{fEl%K(k@?9<{LWiLg`(P72PcU%mk z7^S1^BRq3GVji}4%-;(?)ol4Wh;$)n05n$;UWEYSAoGuGBMV(R!}e9vG{(aj-Fu_E z+_GV=Y2%^|yfu;SbF#%Yb}*wQC_8^Kd|Ihu?kf}*35PYj6noNUDtgFx#_Lf1+2&XL zsSjxKG$YznZ6i=FTx%2OAPcn7_==Q|XDA8o73VZbztI5vTGVEGA88XF!Io!)m&RB8 ziiJU?ZfeKU;A5I6fusmd5sKWEsLfgOYlA2&k@hPspVKaJNMWAm-igEgex}HDpd;ip zd6p%SzHDMi>cnLtbEA(=+D7i!zd1Wb@|B&)toCnMBC<;Er}e+Ro+cTJcZunqdyaxG zPQf;3Y1bImFN3FT$>)ukB2`J-K``Ta`E++#WU)M`(jEW)Ejr3VYJ8k1%WgRzU+n8}mG22k4)^WO9B|LT*0{rl7t^@siuCZC>)vG^O0%<77`6#$eRqB*ZBUj6TqXSPSEEy zzAdz2el|!!53SU(6R{`q71i8e)t3T+gN{c0n0W+k;>}EKEdo2D$L~s2qyq z@GH)vO`tI%zP2Io`koBbuv8J1@KQCJFm)9+Lo z*^6fyn0f1+00$FoGDtXaTJ##pBv#Nreok1mEmsa<3+EL@6C8ys){qLOwUyMO;1Y9( zqPZ{$Elja(sQQm8949hEf^$ygkOs@xZ?yT^&UvTKk=F8F2sgJ8MA!Y{Ug}Q9{57w9 z&0+@Q!ahUN1K%=#bOWPcDkgOX5KVv-tA6qt9yzj=Ci2*r&o>w9{wS_Hk60+H{S&2G zQC-_aGOuVDv*l;2!Jkp7bBC@oC*w%l&7_2!(2GerNzI7YT~wR;A!W`~nd2?TmOT2b z$A!O;hfWN{0JeZu$^ORr6fK6K)VMx%7(?N|dJl#0uTaHr2&cdpPuKQK&5g5XCi7~4 z?tvV4gW#T?|I5bHP=7rE?`|);6*0(F6|7|DZUK@!E7zC= zOdcj=-L6YWc62GJLGijjY*0%?OqGFK?&`bL;CZ5%=ym9RR}f{s^13lFeM z^8dcx__n54?=E=XSc>}Q0*bIr=n*NA$2f69i(nyQ7IpvvivoPdn*j}O3^(wcU(IF0 zH0zASpM00l$UXGjnMi<0fBH%ro_#IOMq`bHpi`7&Tvtb=y@a6H649_*MniVuR?!;2 z1mjn$*NslyWsZ+#=uxW}k*Z7a$S%j@rus#2* z!Ipi%Rs@4>sgeX+xVXob93H^rh(|J-)+)CTYpfw}wLk6BKET~P%Ye&8k$F&5MB3Z8 zgk@w8EWaj7lpl4ll=gzpy41x8v;9X?wq>M$2Ks0OT)w+FF?1tA%?= ziY=)N@Etcq3G+qKo!RC_LS(@QmcPater8+=^@cmYjnQolRIrn$f4TASCoE_G7Vj_ENhXa=KS zHjUWkKiQ$aSE7+ot#@}(gw?XkNb_fW`W8}dxV?y!el+9XwZf2c?tMLIzfMW?6;13G zbND}#=26KWoN$<)x+EaYJjxIo^mo0Mu3DuDvpozbWQyO#fRNBca{jv) z3$<0Rg|-O_p8qA6Oz#)^(B_NP8~$(JN1}W6X_0GG6KBscSeAb_Sc+h^j{Dm zB$OZNc6kR({MIh-+sljX(hurOxd&^W{XjZ!twko}eaF&cqugWvaMCF%{;n565rc2D$6cOKRk;O{~FU@tgJ;;wU zB9;M|_EnLey#R$ME|TPFoIH72%2V9?l`@;k|8^dza2-Ep;9firK;iF|mPfF4>DI|(OS4Lde>7pT+)(G>-Ds!!$yfd&=XuFF6&2rqa2g)gSjWC zpYl4i-BOzi0m6$3+x|*cMy&7}A`NW2WH23RpJ}RX7d)R&kwt%2-Jit0e`x(atCdX2 zW6r&1Vf|;UP^sOVN$JZ^07!{{=_-lI_0J}^7PxW14GrzqvB%uL{gX&LivWq2u<6{0 zGuJVtsr$5j5qbz1*T)~=7A4X!?Typ<#Dt24b#kanaVnUIf*IH59VeB69@^YpZORU{ z$s@XgGyh&i(4s-<0_P}y`*ypx5U*M4Vo02k77(}5p1Urf7dd!OJNv=VOl2F1n^B

6IR>4$e9FX!+Ge7XJ@b9Q_X-=W~fv!-$CpoHb$OZ|rojAzAr5Y)rOy>1!Lj zXQf!LMqmB_F~W6v+j?mawIt8^Pn5!bE~J$4-$5xlpCm)Ie-q+?qn7tM6h>_jY3G6z zKzGz)VFHL2fRtUpawS{7q?9Rdn)GbdpLvEBA#4A3Eh4Dd=7ssz^~!gDPrg|}zEjE9 z4DGa;fme2D>0KCW4SB-&-xFlFD=x!1@zh9G+vM4CCWY|JYzTYJgh14YlPEy+9M!WP zYQu+-_MquOYPDYcJ6Mc0586*=lp4H`a!vetojLs498{(!%MLyNPN2Hvaf9jvbqHzo zp2zHUI-m41&1yhEkAWG8+!p-h>zq+Au1S>fKwQYXc`e;cCbk%VGAN2C!mJa-@~G7eP0J# ziaoCExo3G?Voy)J*|EDmiW=*vVGS zBsZ=TA;<9^JsCfTki=%`0 zG&UctCCMZ0j7hV3q^fOOrZMHti4FcNd+cJz;15gbTAl&g=?+H49oUN-e1)o|7ozx) zNzH>ic%AtjgY?_O^qY7H4qmOBb`+yfq3Gb9x18hy-Q2X+|Fcx(K)%*N$4RQx9`pbc zxflEomkPQrE+(0igd?yrlmQO;BMobb(AAm$bvS@M{&&S=`W9k8vScC(N;C(tFEr{P z@pGM^m-@4x-z-h;VJ2iUq$a*IoU^~tZ9sAkx|S#ZVQiQ+*|nKnqNBCkMh#354BZVT z;}{12N`M9vqSf#eLcG)zH@>jz6*LE@u|w|#`T^TcJmKSn@n5Bmnsnp0sE&SX;P6v89R z-WxP?TkmoypNL&|xinU}cTl@P^tCoiblViU21kCjiYG5NCGGc@DbU1!W}<4E|+rXg%pxAi7KwZS_Lct=#kMP}SHURLxl42UX3CRI``4M%9VaNuM5r zi+RgOj5w+~(mtB^jms;NiRSD$NDc0{#=r2Juhke6_OeLkEo7lyt?f=5uC-UV!Nl*^ zx3#wc?Z541RnW_zhc~@m>|y(G1ckuaE7CR<03aVW*s`fhc&9SAAxQ5!^~oR%iI&~n%-o2=8FrA_j z#Kf2U>n3b2uZBELv`2ao@4hreT3?|7}J(|aPhKv2MXje2IP_U~(Sq8PcfoffpY zAbAQT+LZYrnl$-2bjF^F!YKX3b>el+o%G?!e)Qq=Kf-*tzx!rw`5MXG<&PstERHZM z@I1%tcp91021KMR8tg7hjiIwO{=E;%H!{-xmistSZ6&;U(!J5L0Ej&mlSts*WCPK4 zEdXSzZm045@!?5Zr2SSaPJNSu`s6}u-TaRF#`LPMwWmJy%U|@6btu90Ct-(DB=vMi zLWMgTgIqO7YjE~=##t~Da3D>Zzxz1>p4|5JjB{C4&8LWyjYUF4{f%OLsllDb03pOe zW8K|X@ga%wV2%GS^GQmLnULi4T0>ZQ=#4 zlKcC)j|WjnOL8=2#dPQGzeR1V_G|o~tRN}^+8LZmjr~EI`B_0T?~PPABrBe(>U6vt zkl{QX)QBlLTTt&gQwV;hB|7wmaKtWEN3pr*wY<5OPW_o33bTTOrhk}ReK#5>w1PhrE z#qP8taNx~Woox%vK#YRWPje zuXDwAr`SGWv3WtU1+JKY$X`mC4|N_-nX_CO)HzlEI4fxCIG09%*(q=r?7zsr@*gh$ zL3|TDur$WM>M6?jJGuPT=mYCy6Bf@ZYUEA6lZbIjV1$YF@6vUYX4~E1{Z_;}>XQcVJ%V&$ zikYfXr5D(dnu(m!j>y1Kq9{W>J(m7=zf>8XbJ#jYc54vL+}J@KbP{oEOf}Af!^u;c z8t7lQialz%|0{kV`AFLyU{j;_qRT!UIV83F((QOFR9*f9kf|u<${^@E$BqyV^80vW zN7Rq4p1)gJhYP3LFEe%oanF0_?;vA*+63AjJG>!tz@oy~YJ~zTO)+8RF)Qz81vYD~ zl{|M!-}nOfG}gG=XzYk{ji0~ICUkIjhHZCKujO~s#%-tePf|ErELMXap^7V01JYfU znOGD@!oabRjlX#yHhY^A^>0Pmi3C#cp3NW6_HJ2TaT<)BRl|A3!m`Ij{HI7Njil@H({pnx(J|VvNyRfgsBo!_A+2?en+o(PF6v`2PvD z{`k&dj1MFe;TE8Gyv3PxW|oog#t(0(J77_yUAFx(Zy>mgw71QuJH!V6v9zrsEQ(dvUk!@$_c3KNjT7_RYI!6l z?Ad?xN@Z$Prr9>MEmihn!xK1Hx=r>#wrmNcns zRMJ0vY5;+Ry33g*g{s9cq?{Dd3GeKhn0F~l(fE=3&m=g(gqo&l)7h%7N{vl_GiY8# zw*TSyg6H80BhBh#8Xm&S-zDhqDDgCTjB6|&XEHTS8;iYnV);8|g7uR9`j_NSjZd3B zvVPN?Ud_OScN9Bflt$tJnxu?QMSNN!>Hxjc7-_e`*+^UTksMqif7BdjvChFr6#ixPn{IY9?u=E301%aa-n7PepX2ev8XzjtW<}BV4oi7UScb{?K>LZzVpYJUrWLrK>kC(4 z=K53hap|KzD~Yu2U`sj360vS{L_M*>f8!>rRc5QYT4kBYO3(@j`>(dyON7e2*zl0p z;4eQ@)HmDj+;qe@h1``Wi)_XO)5TCuTmEIP1xbeq?=+w5mQ>dMNp~fdSe$oAZzl-MC{U;mxRsdC%@YmRQ!QcjD97yo&5+z%1&K8Yyy1a=cbagsZ^jGDiQ7{VuU|Xo zQy28%*dVmk0aG9jY6-&ao$^0h2FuB$whXsdn?42x!rfAt#&yn13uoF2hDD(?SUSZ% zKG8~&@VE)_IBy6YyQl&xpEsuO`jYVaBbaQ*B@jb4usA}3i3)%GL+H!b8O`koi$gl7 z;2z3&{o8Za;fT6UG2@2D3M&)oXK~4$Q8DM2`rjQ-$GubDfh0B%nn(158naQvQ{q2; zqj(#QWlw>~n=xO|&dGlqiyGpZy(2P3;U}KPZ>`advT12&jNwO+$Y&pgB$7h2z~^-g zj(k|ZIRh+u%^PyxvniZ~@Bn+sViVV}?PJ!8zgb4x02PR%TABq(;Ln ztt2}8k08CofBR9_Li^8nquofml!>s7ib7Srfr*ahP#$u>AzgIUUWqbO+po^XiK;@g z&2PPdpnzyi>BSZ(Bc;f}!B}|_V`E1bxwtU){ORs8-?rc5Pp4C6BlF+zg8q+h7>H*^ zkI4O;1hE8|#QMK#sb|6U=Cf|WE^o)wmWB5#18eB{1X&Y2$PN}vJrEzBznJ*xTKxcK zhGjvck>_sC@{fyeFW8osku3K=8HIvUI>-ZnA*TaxF|cg;n`AcHpmZpiTtw9fz1)9J zUNQ3cv^DY0{#_I*$)5wm>rh1222*^!IhhO5>1CnnB|QZLlIL_@wg2fmYTuUH^UqVu z7-|W*C=2QYUV+e`DQeO6&WIf04Z_l!O*Pw%qL9P+UQPPwXICG{&TX{+X%ctQO!@D5 z)ub;+7_LE|+vO|TO57WIBOf};ujhZppZy1^PT{J2R;MxZqAC<*6Ho5*#!;^~dz+g~ zN@g>k+ND9e5>v6bKxD)Kmr5^(mn!X>P=0!~L~qGwEs~rkN;i98wz)J`hSHcAuKP1P z>X%2Z_5j2&$DI@PE1DwX*EN+fnO;v}GBXZ|wFAMZe#518h%!WnU#55{`HJJS+ufjH zh-Ld9ls&4QRimV-{*^>z>{s#Z2`u1;pQaJhoJ=XC`3&1hbw;aI21Z$9b2H0`ma%LD zjP69zj6JKG%bF^hqjP+oF=>zk%MH)=ib z&f6{WX#c_S!irc~N5hXgN*Qay0W9|iG{9)cd@9kLU^m8oq&3vwjt*UkAr<6n^-(%~&%?r$|p zRS38uWbT0o1b90zEM_u|M`?;UevKPG- zPZKNiDQa87-yit<9e;Q5cQb!C@VA)1EBG^d1%*xCi%iIYOP|LwGCv^lXzBS~-xHRp zGQD~5yuD-D*gs?5s@VRkV=ijc@^2!E(m(6sWGloW6G>=WBR!t&_)+|Y21Ic z#%n-&#gVbXD*a1u9(3u+iD}De>Zo2#{rC8bx~6*JkESZhP&hN-pz>Gawko-vzbt>3 z^EaQrR{k#H@5lU2<8KOo18BX#Z#RE`=kH_w-skTP{{F(>8vZ)@>rFC_-~Z)V@%vH! zH$O3c{}it#fBYOm5xc+fr^fE@A-%KwF8()mf16Sz?<|cfpHx?cs;y2e&h&Ff6*?{F z(vnJjZ>@DRzj6WD3svt_R(qD*_Q;1dc&NJ{E33tnwv;a5Tz3ZUH)t@7pm zeuy}pKWe?#k=XPFK}D9oU!EvCt0FynyOQLjc)GqMxnJG+!&AG|&90PV{RFs`6yp9D zx0=?v&F)gitb?4Xm%lS-SCI1&+6Af_mdZ$5Cojl7mGOm}4W3~MZ%ie9O6?x6Uq#G0 zy&Y{|svEsABe4>Yeim5s!+O1QyN1F3Y+}>Jl_BtFIN&*#1^B%M(r^KPm`_;Ocm6x0#f*3jKll1K2C6^qne#gsR zNY7&2_cWx!ditK;=ED=&UR*n!R@$X`rG z;exdjogYAKO&x`*GcDPQer6)+ah4#W73|@<6FtfN(ZxpC#<>fL8`+++0-4VnGgXq@ z*;s_73l$fmDJzsjOG++%U-9c(n!F#e(PiE?d9y09O-WTqeN6x*x^GAJo8rqqEQgW` zRex*_xCPxC(v&&havnlX&Ps(BG*B9hPlqEUa3zc+{J*W=F$VeVzsr4t*y1yB8%392#G`%@uy zQRn|X=e{>HLA34f_xpVQehl;8eRnzc+;h)8_uO;Nt*|eIdMsw#AJ{Q4<2bCw@Q4|= zIkazKsSsD4{eBq0g7M`&2IfUiu}Y`y4_f_;dRV2iN_eR6p}7#-SEgXv5Jwu7fCB&6TOfF3eHDx7!gZaj$lD5E;YvKj~?`JxC|4*at{_weem@dj#$2WvOp?J&pRLuR;4< zlws3L987G}c1Nlq+&H~-raifYH733#gtTBQY6e?l9TPA|3khZJcu6XOiR+UxQ%y$>ep^U#%S zN&6n3!NDc&k!X4ff{E#ht(l2|PyzlxZ1M<~42Cwl7}}!>ldWlAl43&h#KC%8h#lpY zlApU|xFiZ22xRp7O3r9*4?xRS)7?Uo!Uun##ChrP2AAV^!tvYcD#r~l9Di4qnxLvJb(wQb&J|(!;C_yB_4SYc4buimIkdckqy9+g9^x z-j!89EfymWYKyy5OX{o6jGR(eb**sa%atpi4gIr7KI7c=Lp>=vGi0BMdL$mgX>yyJ6^YdAmH4`ru$pJdFxgW}x@5R@*=%)9jH~VEeUxT4bw4YF!68f}~RH-}X z-w#28)@9Hvy&cy2QLPv5{fZ*dv&p#-Y!rg^Nx?p~$NGTjce{M}?9D z12h&Y-09rJGD=Od3p1CJwRZ(TC?uAlE^kFMyMf4A&~5~seE<&M!c`KcEmfXVYG_WW=WkWSU;$QJ()BkuxQ5~3++ts}R0assUEz_&tXr%%?|57C z>=Mde&LR-Kn&v9a{F_ojya5?D?vdi@UVSQ)059FAAH`(q^$ez`$a!nwqNBt16mRNT zX6kK~sn=J6^kAGj9k|?yJ!Fbb?CAHHj$=vIX_z5$Pf&6vq`BKAKA~}~D_4$j5}2}} zWSdTkbYY5!F(>|)%9Ll4)?Pf0e^sU&BdNwFvER`oI-g2WyPw5#y3i@*vo`*jTf97O zp!ZX&YJekLjw8>hJOn(szdEYdh>$^dWIgRbSz)lO&E}74WMfiBJQU#rA|a1`d+c8L zfZRsq8K`np2_Fblo`$&q56PJ%c49XxArlp>-!Cul5h75&;@(*i?ZrV> zMHi-|906l!5S0BSpB7g{k3hXU`zt=y#CN1SGiBxoOFmgjD3cvQsaVyRXrUa^Bz+&C zF?aSVF*#j*w0$l-VHS)FR#rsH(Ik}0zQB`zV;_xyYm(ZKKQkG~x29~i_cZN{I`F%F zz%X_v*opRzU7tTDT7;xoK+e3H(X42(B_#C-bDKk|PtBNU&&r;WLhcb2O~rUC%KY6< z6t)etwvJeh^fkWmQ)(g0k+GV}G2E@SC4@$cC=`1b zqLTDRK86bShZ=W=3wP9^rUVZO2-Vz4IyL|t-zK5MpL zDQ62f0I5Ia7Ag7u(^0$vq+DVjO!i%buDS7vv~NUEq)CVNqy6d65^_6Z%Q;Xp%IBB3 z4C5$wy}GKsaP;W(w#~H#V?yz^!sfl#tvlS6_GV_Nf4T44ta5i=MM0_#F`CaHy~p3*U@2C4vAdA$ubP!-ARJCJs#d> zb3)@BJPEu_C7bNuw&`p?r4M^J`x#Lnyj^A{`lrm>P}Q+wBevC<&AjUBB1LyTPsy7$hM+M;R$i~8J^thxq792<m|2E<`ZE?%UAWf+) zO`Sy|a^4fsKHUA8j>2ITmc0|Dgq-Bhf(|w5HIwAW2qVG4f|>mS_ZIVk^%UbxQ~kpx zsUdY5iIq}4cd^X!zW&hrib5rO50Xi&q<|m<7fo14+V^#n3{pDPkv`k0^Yjay%Cs8H zsaIPS=tgy~SCWQg>O^})Q_asZ60RQU*;IR0z{P zDmH#hl*M8T^T1>PU7cMINOMFd(@0d3&kC_QJkfM@_JaqW+PA zSKStad-Y@g?4?EDk*7#CN%hqmSDb8b432E!a%PWTYo&y#htI+cRu`4PbIG{;P5D64 zg6N&dNfqJ7C+b#@%V$faAY4=j?>`?sb#y>|)#5UlHf;6R0czgnyfKmswhgB~E!_B2 z_w#khI5W8@KPZdKx%sQ>3*bmorTM-+;LN+-#x@s;;4!1ZF+piNQ%L$s>7#1gA!J8& zc3Ijt)VwofXM2?0%Ov^jsfM!824p4qJ=I!PhALGen;}YVbAHPlR#TL{5`1r)qXBkc zp}cH&R_MfjL0&qY`SOAg!8QqYsV8P)#U~O4$BD+P-o0B-19wDAJZXvZhMG&GrIo?_ zXrI{9f=SWh%3xt+H0#`vv8DN3P{@Z8K8y)jQ+7#H#e-;yv4+Mvoc&B45~ZO_x;EUT zc1+8;jZ(HT0m(hhCXL+R9NCr(5vFUv;;V@O+t|Xf(a|9GsATZ2njwoyVqL-5fgy`$ zKnv!;C+V9Y)lh>EF6r(tQ5bRl>ND-DVfPYkzujn*1qe3h95erLe0kow*}|FN)Ro+G z$h*sZk7d>R>&uYvisPhSJ`20g==Nl9r20X_kAGAw{J7I8rE9h$)@HZJP3F1@k^Q^1 zW29=7%CRpqe#tHlw4&l_9sCLu*Ce4o?Qh2>&>t~Ws>2ua$l0K@`k^z!*0+8!X zlf*uBS-{Qp-zJIGb{SJb>uNPgi0^XqwI|?2m*(| zvyt@+c*X4@8hf`?-Z#HYPF{uDnsAUO%dnFvyf?g=M`RtD@X*WQL|&$v8SX zpsw=Ve8NE{Cl`jQJFKP~_!g@g9bEx)8y#J2tqJNhMJoOpa`QLjzR-AUq1q$E88Ju9 z53VlYIwCS~765Z*s%)nvf1*(ahq{xdL z9Uhsze>u2XR!BV+X1RJVxLK$wKII-FCW9p!hss!G zfB{Rl$i1K3lbp@h>3pA+hJ5FVKV4;P{P<{{*N_kVMq2S$-W_WCKW4o%XYq}wf?B}1a;PD|B+}I54z6UAU5mm3iUyENL+>>(af` zLiv#q$>1+)j$7<^tKYbAkks5uwrS?(opf8*e5F&fXMm|rWtYbV4))U{pQ4I_NKfY< zH?ZiGVCv;e_A}uU)8OaFdZVbPYKnsl!rc9n8$S!Ap^U~d>3vyNDy=n^@QanQ{Wb(= zcS2-r!}YT>2}4k{7|mid$su7G>dp4razMoBLCBM(PyF*G%j+OgshG7k2b_Qz5+|wz zY&FTo)=(I*x*rw!){SD{V+LTLqIi8~00ptv$WUA@2s>Ru>?_*KO+If#y+N6F=%7@@ zx{iw-7`C|g+Ab^a`_?@j3yzg(z{J+;m}K>O=`;|H4K^^~n4jt0O7@A&JG=tGRwyy? zvpvh=S5RhLX~6PP>PK@xzJjI?tTlx-msrixMIj_kaB41#3=l~e{&!_2Df*t6k%~rX zp^6D+qXKvn1w7fwwNEP*5Z#q$ge2pp&?HiYjUcmadPWO(<#+;G_Nva7b7Iq53h8}*nZQ?i(M`>8vFY+8Ua2jqjL6hq{Me9N4eDKXoV@a z+oa>M?567#ER{}&Ne656zH5|_OLp3=^M*CNR(i5?SRQlBoq!j2pMb3k!ZPZ0|H%X# z96K<9X({KrM?Z0Q#Z>D$~y*3f**wc_Gw7{Y~#DlrGN~( zXD;E+sO)&VO#LXshho)Zq9+@%*HY$-`+MzZx4+MK z>#xWp$9}pT=u{1dl@$Jahi2efGvBT7K1ShwG1HxWE^T-%n3HY=0)L z$Q{3LAN7CO9~VyPPgueG5Bh`2!oL`wZKDp`pKmPB?N95F|6zarvs+lSwDu! ziV808whZt1Mt9!Pvfy&z9T)v4yknFs-ov;L?k}jB?{U}eW!~ET%bMd4zjiMb2FKd{ zP5E^-Ud-uljZ_?FrgKlHVwtyg-w3xMEBmKu-lpP`O!h%ePcrg}&tJ5(yYm}+GdV}} zkP5~B)mqbA*7Zwc*Rig1ge!}6^h~%P>pD}}xtgSQv{oX(7KE=@}R{FSvre;L6A){Ci^b6t<2*Bee}vsm;2lZJ|#Ry9;Y= z3q}TGZyiS&<{?{{jn+Nw3ot6f_{I8eivWt|O@L!%E^7-)tOv|_*7PzsI6sF6C1unZSC1};G33w`6aMEX;M4tm(CYpE~nNZqWE$hdp3%uMvrU7t=xqnj`U z_q=n!m7-Vc1X59HeDs?tVi_UYNLlA%ivmer=}J>dwMb#PSsqh6j3|3O#v2OR_9p;#O( zm7bGLUIdTOC>7`@JDo~Chz)3_hA)^P+J5dNapfs);Nm}|!%?Ai9<_xtvSW6?&xW*+ z&8bizhdzM}1tR&iE~sPQ$@uf{;dXGXhuOikE+{4UgvCdPyn}Bc!=ITUbiK zvn{4wPoF%e%~iY7M%wq$aDhaXY}oMhYkUGFTaV8e8Y4frsg;|@{KGg!vJMh2cRtDbUb78oGq4x=O+ZH zgLx4yAcVlGRCl3)t3%*An99PHEpC{t;OD%IZ?we9j`jh#RgcG@rAykJ$7EXo`NGLN zoIhzro!-~31@jp%wCcp*xsB}3WJem>FUm?RR869nSrp#RH{IHXN^M`(+93KvGNLpN z+3k_iSf%KZISUcpA9`dXzxh?!`CFpLiF67jV2R_LOzX00OWc$xC&*yBb)paTx{~Q{ z@O)(ZK)wB{bhej{Re;z;GOZdmG)PUd(NE6EPy4!#m%6k=G8*4$XEfgCws#q2jcQ3o z#?TbM2Kxw9EfP9hRP$msKn%Na!_|6LLvgL5@?hnek%io}Tm8ZElUE(g%Ojlgts@XB z3SXcDNjAETJJPbi;f;rQl)_(#1=Hc8${$0zE##f^K(elKnsl-D(o_JXVXPBd#w zx;@#q0@T>=Dg4cH)k@d**tCQRDN&YZHDkb?hbi#zaufw~d6skuq+QB$_x}B~TmSa> z-TvK)=q!}rVsT97LC^^U6s#S=(hAnV?PKX506}do{xX9-o-f_nxY=t%qvzT(*x*pu z^SQFFPE`41(}F32zrgm zyo6q=Ta9D98ee1w%jg`QljzjQTiKAD+MB7KL8TafcB}2xV_f)dF||#>h)OQPXx=zT zuI+2wHga>Qa62r_dGpQ>(}jBkY;2>5LWtcPrzftN)~%)wV@$|zK)N8`NW|XZ+q)U)i+dbS?z&3{u*Hwq(aj=NfI$SyeoWdJCT`z)h4=Fr-|;nhAg1Enrw zCkTHC7`E^{y@f3tLL57}e4<;2hkI2$MSepZhR<3zE){$!uRX%uYHhM^5VH|@uB9>F z|95=1>p1F?Zp-oI2Qb4!U_I$jSeG2-B31Oz?%-sWY()U0M0ExM#P3Oi0QY?Jkh-_v zA=3>HL%q76fZB8M@c&`Gc@GZw`AgC%^b775@YbF*mc7ZLmw^)ChRr<9y>~+tQPCj? z1|K|%cy_k=h&>QruqME+MpkX;nlkNTZbxhmwImREjn}zi+3Ht`&YW2oc`hR^K3Q+S z=-wx;zS&}y&iVc9aAJmoCFr78eCWVycjKCzsNKci4*oj$<9)_j;)Ew^AK>p^A{k2?i_w zgybK&?Dep9%SXRcpHsQ?O7}y7kX`(m2ybI?_EytxaiTH7u2%sq1hJK{>&8)q(-(JNneLvgx%p($g7Q+$o{miULl*I z76=o`GhAx9KBtyXWiFAv#7AY@oe%#@%04SwkuH5S)fAg*beB4l>~CtQO;YRMq$V}Cw3;vz2iwd1dC?>J z9CIsg&?@#TnA@GnITc<`g>^&+!h$Sv221d_#`yBqi`Teri=3;!kHdJq+*9ZnXG|H;hyH0CndzoXK+2p;nXABwvm#R_%3)i-z3TwwWCRHL8b@DXJk!ZTnY?sW0(@TN`8-+ zG0S?76>Sn;mzT9+2omk^xp3k2*%q7%47+J8!@{IDOiFK ztfQ0thDhh?5l{ra&>w{_Wdq$uR5Nn}*WILfW zuOAh}6I3^-yT~-9kXp9|lU&v=ThwOYYiu@Tb-SAz%8H>d8^%8)0u8>=_=Y>RBGsuqD`Kx% zl76t);*wZf#p5i zd>BUWA|7nDJxnkc%trcsiwDPt=)v=|^4v?F#ie!sk-CWdF?UF_`oEcWhv!idscznR z{So3_ew(_NGpzfX(@Rbi$AD86XPBt|h}y7P5){aKb)Gc!Qt1K7OmHwEtj4Eu|T~yGz zx*+~;Vd^YXOwvgmb)lC&%v90WO+U*^?}^$my?r&Fsba4}7jHcQiqnpV?N%&|O!r-V zl<1RGxB5h6XndU<))Rd+zD}a0vxWZ=uZeHRG*8p;7Jg;9Y%-yz6E_c!ky6jH#yuFU zpN|Z`n|E1bI$fS0<}1-d=RwWnJ3k2~ax zTx2M5N35n-c{MQ$teaoqnaCciKFUL*vZ9Z@v2}lszQ{PK(ZN**q+ctzK)Q83+w{EF z{eAoHP7TuZ{&_2^B^@m(=|}e6vpOH6F5Qn}`ewI2y?^+mzOmryJW}It^;r7W%#j<# zTg?@6>fAv>*tzr1td=rXhz{UfB3{=qDDz}Q&mTTl<0PFgBG36E@|-WDbbfY}M4UoL zrs9;20U!O&MJGsnvrJ>Fdl|K`+jth0`Xt=ce<32?9_m3Xda?}8CSp<3@ZFjs763Ac z>TGmmJ#JadYA)L_)Tp5%#cn%nhy2*$jq=ybSv<&GnS%v*C87T$x$FC6i9fcQfAI@{ zR^$oXDnfKU%YW76G9%J*G(@qH`Jm6!m?T;PY zV>J)e{J}y~`Uu|Id!Pmo_~oQ3{#wu0*LuWvPwKNv&Zv0cRi6vJXOZLc^HS5>dx#{Q zDQ6w79C;zg)UoY7z)LpoFfXrh9<^?`k+0+hnuW9D2gPD3{d_uY-Lq@K*L2X~wRq8Y zA|XBgr$Kqi27DH`J3k~l`U=|&K*+w?j5I>;tPYV{9~xdp4(LZnVon(ZTAysD{m2gg{kigzUsw&*AA73M|Onb2Z~l;*hS#{@56LM;-}Rh zZe4*w&H#y#SUh%{Pp|fb+RH_13kdD5{~k>`_ul*=1Y9qPWIUaWD$4^qJ#hZY^3;Bl zkdg>|?LBzNjFym^FjkKMaVN2Zeo>(JRw{B%6}xnoE=Bqn8mbDFFTz|#?lIZ(M-g4O z6A!JI6Uo%t;Me2ve$k^i9`7CPoxZ6;(31}MHBM0%(InH>n$|AahkES_;s2|0#39vk zqEpOHNpL=Rt77~sLst){k!OYSd>A2|&t0>29%j{|3)0sHUE2=rh44eEv-`RgKK6gm4{t== z&9894ai8tV8`79|MdoSyDqW$4{#JR*B5^4Il}_Q!b7d&;-Qh7Z!uV@;7^?os|U<%T}c&(g!g>H--gi*6}`)qu9CNqmNnsF_Di-P9#H5oG|wM zzX98sb4?K|oK2UDys%3uTqeTBRXM`NX{K=xwByaI2igGh>Va0IuU`P#h665Wf9)wf z-tJ7#G#zaY*|*LIac(!)YK~h)gmP1Ur75%Ky01Sl8CvL$o6>ADc)%?(uYULI)#kO_ zeVuKJH)QLdYEourQ^rY(1f&=gvWGdB|D2YpcSX$YC1oaeX*PEclhPtIYR2`$9@5KO zTe5lnW>RE*kvzrDR~{Bg_SXH`ERUHiCE0%c-lXJZQ+{kxO5GHkqck+-Nxj$IS^p+vBx zP4sKw#3dMGt@=ln>qox|=Svosa?xivvCLt0LQ%FGKEm5Byv`HL(6cQ=&$dib*7Apz zZCN)h8vte4Am3IywL`dyKthTCM57G2V)~pm=eHazh2k4zJlTyq_MaHdL|lj0w%t*V z9*>gXXTKlBPQ!VN_4jZUt&e^Gjy$IZQzMO`Fkqdqcl>;czypFkGjjv;+gu|0>^rh0 zNo?p4yd^d$byY13MQf9@%G17iTBH{H>bhc~#OiiJMkIa5nfAZxwl6+N;!bpEheT1a z=3?DzM+V&{TA7gQ1Uj9&O=>jd6%}VE0=r?y4bP_68=7b?v20vo!_CreVuSE=esqRZ zEt?yixvqf^Y2W5T=~V4pLielI2?$RI!t1#c6byB+s}&3-ma*L8;p8=UD5TzZbK_$4 z3b*pFXytKX8}0Go{OdIlpoyWTi7P*+iNprK0l7?mKGR^guT>j_S4D@eE7v}~Um$&o zOIo`G2Q$sunjo8YV%qzDdY^XiO|tOfR6C36U5QzydX+T-$-|8rVvN2U~B zV%ki^wP5C=#!E`TWNCY?bd5rOW}$hKi6c+Wt#={WmL%-Ed1IdSjN8M>ROIZtlk~hq zT$BUO#dn)b-!++fuhL90`83Qe{|i1jfBLD(SE>1;M~7@YefqulvUF*+G-(P-%goh* z$A6M;k9Uwf?#Qk8g_38qu?qv8casuIJb17E{8+Z4RT~71$S~(UpsK1&Y>;!ekX5(O zKwIkOc7A?0$?kQ9bZW-XY>x^O%jSXC3Yt!A2ucR+{FB+V_#D9_+GWI;8AgXY# z1bGsv`xxiGpGY@$IZyM;=B<>16%-8FC25>^uIIq6Sv+mH2O!-M-;V}IbUb9b{VECi zY2SRq9Y5+rc+4&7SKZP_YH9BC!roF@diUn-3+GD2HG9?)!|yYYbp;Q8On701;P1Z{ z2(~$AAGQuRQN;6lm>&>1Oav%r_Cl*Kin)-h#4^3w}ix2&nQT4d+djO^6utu z8Go<4&%Fe5*-!{#)E`9QE?PU{A?=JFDFAB}!mL@pj^3{sD;d2Z&f6%PWb}ML)(EOv&mg!hI@p9R)$~%`#!jotDopX17oW?Gzw;VETb-vrpjH`R2Ipn7Hq)dUV z|B>h)oIx%?L!C=qfJ6%>-G8t$rxmQt(1suey8Xu z+KE3VE0F{#A!Y_ANn4$_!$L+kNwN$j1j5GtQtYy_-O9zT8y~}yo!8B!HuSt73n0=5 z_QOfv$$E|Db|;^}R31sIAS1XHciXv6If{bz+HnF*d#x}?er7B0W(+L*CSf#*+Dp^= z;KJl;c)Nom_IHrwx*Zfq`@WF{1nX?y>|g3?vlJ6m;Lu%wgkP1svdG`lF4~GtXB{kv z=%(PQ(|O6jta+tfeaLMR+*?gPG%#ZKw+Fz{dF>KWEvxf#Ra+=vt){27Esc?irMtca z{h{h$Il)nYDe0^Knaqezr--Oj{I zLHRT^Q7Jp#5*@;z-)cTe%k++xrh}aG)K<0!6vL^)G$E1n-kqRdd~vNcm4PNMmD^3p zKn(q3(@dTu5RRwJawe*!id@yBMI^|KQDB`QWvn&rMr$T*<5rm|*7GyPT&>wZ=$IB0 zwb@r<*A-@p{5L4g0WJ`Gb3ZVlI9o>%+I1CY_wg1^28s}V{g~p4b7y`q{%TK@WWm-~ zd(`#m5GT-XZ-uGjDS>9VTM4UMo}3cFqUJk+>k1wo;T* z>9~jmN>$xeU#BbedW4o$`d$1G)5s|M*k$YdxI}7TC2-vn)i+Try{)D*^@}i?cXwBBf~aM+Yl)mde6mHMs!=St*hR=C^(BM!(5#s zr+!)caPEg%G7~50V7g-l8LZNxEd)%h>tFW1Ra(EL6uA4>_b;b{#m`7zw2K5@qE8*! zK6R9)Ya?duHcT1h2wOhHH&FOe;6ei4*Ar>jXxWJmw==T1&JGs^*MdxrBR5W|?pT1d zcj<7AlQo5PTY~g(sY)x6Se|kS6Q7*TZgJoxA-nHW_0`YItpQRr)n{Qby5Ce$9eABm z-MWY{6I8-@U@}j9$z&isgOH8&RYRXzKy58^B$%RSww+;_+OUR~7W-{6k&g6j-noQj zEME|AT&ZQjfzxtv7+1zfmM)_8~; zOG(LgI~N#}TrS7ehqNf~W?^%|&h*xe7x4^WxH>LE*3fBq>mveMd@1&{O?nU?U+U-a zSCYyZhfbRx^5Ud6DtJJ(Bed!x>Chr30=?PzfWmd~Nxm}(Jwqqg`txgRJa}Jw+`#L- z57@^01S!9`j30SXwpXuN3IkjVmRUHLc~ zRq2qc;plNIE$XBfN|aIM2vV0UtNBNyz`dKEuoAcGqqnYn3cM)8Wm$<{C#>8oH*dPh zvTW4FUfn;w!)kt7)4YXY6K}!xJQg0xAC^qhxdu7Ahb2Gwp?g@e&AA4ve!?j}Ol|H#$kVw8A)9j# zLe_B*vRZE_g0^;MM3 zg$x0G?U@?LflFcP2zqZ)3Q`3^=UHBV?fn^E&$TLYOsex+gw`_mBryJuiuks){T6g@ zf6Aywd)k}327^sJlf|l^BbhVy&6fKM23t4jOt^zSHT9_bO&_?`%{P|w8!p_IepSvc zy`_!SHg$&zN*t~Xa|Q!-*CW6v%T&&O6&k|_O%80{jSfVP*$_Q~FdL5%aU|ZN0swYa zH@U@xAdi>Kg6AQhTjH^c!A+{~V-Lws@nggx%tLJc`-^B4q48!;w(^owK927{(z>aY zXT4_P#!J0EWMQM_ezeSO6yxbgY8ek-k%t95e7u=u{VP0NEh%$(xKEWT3%5Z)Y;#@Kb@Kjk3?KVBGox7Sy)<5=9;K_yT$n@@7XW*9`08@ zX4QrmsS5|Q!8jph8S(ZL8gk12ZtA_8dX0c9nZ(RQ_D;I4vCJVSnfSRCbK0)D?UY~l z$$N*tv-xZ0?_vJ_!rue@<>eO?78Vs17Zvp=&iyaVw~~ANtDypM&rM9%p@9&mscJ}41)7%N@a zjtf_JMEW|v>J*JM8kG6?8p_72LDs+EoH=rL=KQjd-CO1rxM3msDtuZh zWqjRHX`&Iv5B7+@ZOR{ZMoOcWJ;y(CP8kNN+TEi!%lgOWH0VcQEq4xXFz*PjU@S2k zn&e}++&R7d<8*w*xI8w;LP#OfBYjnJaUR}!fS@Ho`#I+rMKlGTlcfo4e%uN+Usy^o zf7yKv`kpYAtNdaO>=*O80j?Q@vEJ0nAcvYg*z!ke8(X1i(XY?C_Q`I~{uti3{$tiPGt zrVyZuFWu*^z*w^CbziauLpwN6ftIId+Nixm@8(&r90Mm-3LVIUUJKqwQ(lPnt4o}Y z<7?uyu3rkl!qVr38&4KNY;LG9C0<#x>l;t0FYF?;rxkA$YD^Zd*djN3A^>~w{MeKc zItlBV140f9i?D^6!Apyf#tjJy@v>XK^kLgJ%m|vNkS1GcO|w+PuZA-FrBM8QDZ~~J zY6L8ME2tdVDPf*&7BLG|~0<7At@mD9c?(R`%Kf$Ij{#JhUc@HKG z8K>rlt2bGy&#ha11QgV@g1R^+v0LoYVD(d0d;{-#NnqKk1E27`;7xk_wZP!K^`*Rt z!9j%+xJJxGv2+R{m%8*X{&qF&g!hFS_tQ=RH)he)!c#Z*I7u#yC0ILCbqsNXLxuaO zaRT0wn|lx)5oY*-Aohk0P*uIn%|P{d)cS)X_e>f2elT&CjLf*!4I-bgD zLK;ZjNmo+8_P8JPrcsb*5{=dF!YO*?$q3s-QaQ=h5bt{)OSKyR;!zU$WZ_8?ONl^` zT&=bIP3}KsuB!PCakU1hh$I9~++$V7T-H`o6a6q`C(DG~SdCv|LjEit##25{99E)R zy>Ch14G)mq-z2ZeCU0jCEW}>n{Bx}OxSYq$e|k0tAUm(<#5-yon}+ByVi@er9IM8>22|qB_+{W zA$t*%d@u2J>?sXg1euSx9$(Us7hN!xtM(@Jd}D;iFGECOHYjjT(>_FJVd58WFNq&K zW5M4PX{kv%l4b-U#b zvC40*J`X-&cIiJ75~qU|a^uPEW_(!G#PC9Nmf}q#3)>C)u19l&5mcA31V)%lrU0tS zV0wpryPwe|uJOZ6!Gyjn`5mvvB{ldlM>XX#`gULTUbZ&W$YyL@N9rc;le|BuUr6ry zx>B&a`J2;qi|{TRK&4}@LvWUMx`WoQdzBIWN^~`nEW=MfbNdMP z!}X2-T(Y7*d1@8Ms2To7_XJ|12~W2NzVEC!P0`KvL#QXD*rdvR8lDZR7+C*ec#M45^oT{bF+|1uRBTc(KxJc~s}iOwdZ!2n zAi0)2(1aXaSJa!|ayi`Up^DU(>mllQKYG8L6l>cyyjIq`9 zGvUn1pQyKX*uI1y=wHK>aA6>9zvkWeFbDAs9f{5-dz}yyQwj~niuk+vOO|A&)W3!H zl@l{4Uow^{bJXXd8Y^sfhUD~MTn9}q{qAQb$074UFz0IN;u9X5&GrUEd&GrkvGXTn zbncqlKq7?p-1+ z-?%gKP3@G+#8eZe5^!q|xca3Go)CF0Tfm-?3D^$C4)_-jBiw_xgb}`Ep~WKb{_lKr zzSB9yEzv(#Ie`peVd|)YW;aacwlCr$Wm-#8r zi(DpRfULjg2T^APM+Ok~cQ~i77r}m3rOJQ=oOSXy$_lr1*daaHf&s4AlWmnU3Kv2g zy;YhYy+-N~p*{XM+eVk)oB8MB-7h6%WwV;cGY;_yOJ5oR)|*b1rGvBN0|TXY=b@20 z$(sj}Tosp@d%ZZe^w-bCLtZY`=)5J=UT8j&v)m)baa_{(_Wpr+$n3%NQ@qs3&YJqZ z?AAx%Pidz0*Fs#|otbX(A4ra?HATL4s~!s`eWw*_N1c;3Pjn8&7Pv`+Oj12bmq680 zQ=v(!B56;NN!oLYPR5f+n)#4v?aT6_rY0`w9TnC zNj>B`htwH-_?wIGQ_KfkHTAxpuVJhtksf?ExOMf`?;)%19rWpF!rBm!)6s7Ue}%aK z2)8suNPAmMDW8!$6Yf<99)VdnFQLUR%Q{53z8HGi5bY)Uc=E`yry}Mbbssx&ohM&i35WK_R2jXfysVA6^)S!)~zQ=8~XwQ)4lzfP5s-PO(T?MPK4zWvEgOT z6pLQYtUs<^D$^jqeEU-a|5kz~@p^;%dW%?wC4CFs*H;#Qes^Y(C)=IW_uX|&5a-GZ zFe$lx^N@aVMf|(kC+9ey)UG?4Q>jTp)ogQKd|f!8Za&I{gI~HEh&btBt8kRO_kAXN z2%kk^*4*N`P@+O&*E_F0AQe$(r&GpG$l%*p1L%&yUGoGKL}}Icis*2D@B&X4_UcSz zWg-aHJeSG&fda(M6~b)jaKQNz>!|@-f)Q_be#vPCdduIDA^wT(mab?0 z=-nR6Dj&HK>OLiea%Y<0x!RF~A@08W_KPF(Tw}p&d6ZCN^d5S`iZUt*ViIu;4>T}? z2E=U^S*D49sU{hV@ne-@ob_XU>K}+%r892hzP{V6(%QSN{(-xBe}MM~cyHmoh4&r2 z@8Eqm@4I>5!~334yemKYdz5pLqWZ+55|Lx($~Ajj{Mf5Lu|}*cQgnB#bJeRLC2^xM zyV&MDe57DQMiwti2KB>%?k?k_XJQX=~17UUn2JbZFL6TO%^fwzz7R74>6cI z?hk@#p0_y{Ans3TetqS+!~luR4A~d38{HY<9H_S}!<-qR3H#1{lKpJ1n`#f*|E(^q z+(AC_A|UAHocM-(ynuuMPElL9%k8i~eVlH;@gcgw|3Hi~;}8w5cnG*mgQ!4<*?$=$ zqOPzU#+d^_ZbfEbgzJmp^@q+W>XqE-9LX@%+gy?)9oqB^@W31h6}3Z1G|DzeZcyoT zF5$?>H6;Rm0+vcp@ zEy$KR%=Jk0p;*ZJITVdyrn!1AcRG>3GTvlh@V7aOJ7u<{PI0?84{@;$RnUC!AzGt( z61ID;$Z0Z6PA@F0jF1F9!t%|X5k_44%>LMg-?Q`51KY_$JQJL6tFv&Yvy@7O|6rFz zd_sj?_)X+!g;s}WGhRe4wA-C0wkWjaF0|{BuLWA5d`6(13)C4{FGJP-xv&b_b-le5 z(lF<%Fca99URqG;>`|9vwL})mc#l1Xz~$qJ-)Y(|Q>xQ>(IiGw>_O*)p0Rrq3j?9V z!pg*h^LUl~gAQj#s++92lEXgFpIA7XA`OWL1;O6t3mhFSqsIv0e|W2g#Y0M+;pbkU z=Y-hKE2j{0aBjW{*?br-w`;!Jl`SL|mP=M5N4r%XX|l4;+meC%FHG(R1A`XoR^ZiJ z6b30Ed9aH%1!kK9TCQ7x2eJhuPuh2u79c19x+7-DgIW?=E_VL>JleHn@#XuV+yr;V zx`wLB8S_ak!NnnC6CF3Es}Bmhb?0f~!JB1fB_1rHmCxAYk}gVu_V{gN;(?56_nKHZ zk53h(Bp!^BoOp1FKFbQhhkN;PUfv<2Y?neGGUo>16tM8w5$OAZFoeW|nr_>kZ@>}w z2E1s#Xc99+m%5Czh@m%gUmP=b@5TT_Z0E<{3e+c7OTXd?+1v4!khi@X{gD&(yPxk5 zkirY!?&gVvwfvX@{-&Kvhr~C=+E;xSsQEu{l~xqvDb=$sk&t9-{ohI!GR1LLF8b4_>6p|huhdz(u+%L@UMk~X zQU_#HOEk5FT8bjQ4ZKD1w~EN*%VzRxCchNzmr3<2bo@(e<=};@-Ic%O`iK7RWv0T| zjDKjxR_?DDu;@Z?7Rtr=y1vqn2=4od0(+IbbPdyV8Eg!h9x}e4%~#S&Jy(#=W6LI^q#mHzl9it+ z>6#^o@1T|xyM!;R7ihLrLHAOD*x#{e`xJ||9kf8}u0`8M-rBi+MAAH0P|w=nP*>2@ z==MU;kj#hBWEGNGU3E^ z()bL&!8@03}(ezJ*h|Tc>O6^3Ixb)ob-mA zpRALUVAZ%#XovG8r--Q`_41YV8+h+I5tN)mD-If^QDMX6E1rxplVQL4XoX}j~Y zV{$|(WMIE%sW2EdP)S~tWn`PPJe#RR*5gNx5xAF?BIqP)ORI1zjE<^`3-^fVRTi9% z7$>5tTkik~QFNWIZ&9aH(IK#?e1?dc*{+G0kooU3{e6$~m+j&S^nx|4PTHo0ZO)&E z=zh?z$0ud04(gF#Rv($E+ccBxdx>c`S-hO8&~0{@Z7}#X@d9M^`9Jmdtp7eL4M^g1 z9WwtTf6qm)v2JHWCJjUTBf9l3sQy3j_Z*T_`IE?#$T8?hpVx`P{1H{U>V}LCv{lnf zG>__r)JCrPwL5E>2BI|NwYg7E2`zzlJL4uCZP)D<`&M#iSORu#Fg&F?B-Cjbpc`Zu8=#wP|voe zc8mQ+|KP|D`zhLF(965FK+#Yyk7mDp{nA*jR2gJKM^d8 zOoK_)Cw-6B%BeuVW63d-YyD0OHFkuPeQ`4^;RaRyYM#oAsJ$sC!s!-$=d3sTyrsSP zYycCcn$<1Iq&4>ZBGNO1MtSD?&b}WM<~bGDG2h+k&sK+?EFe{>JE4fmj0;h(VW#SU==tyAE|{FvKrYW?&^QRDeGhkP3v;Cf zac~-AT6jQIc|rB+!`0986~rSj?Q7N&=J1q4lPL5N3k7{!CMv1!j&xp6J%2$D9+m19 zRFgl)ThKic!?hAlOm%DZXRNdJO5_V-zxMB8m4-^K{%4n3r2)Uyf2yDN3f?Pt5AYt~ zy@B@z-skc@Hxz#-#`FA8+==nN$0{wc`X50GwM?ZJ*4qAOQ%itaxW2J8L@j4iOMqIY zf;8j3$F^Knv^?jbtC3Jj61KY9P16^49^2lM{fKdzOBToe!6Bb5QgKK&CJEh&cy1?I zUpseuv20#KJ?rSLY%=)KErtEK&!}R4W(?$P&t58Gme0Yv=MezrD6z5GM4CDLY7rX`#aG{;ECxJCg2}WHh(Mvf=b` z-7ydi*gX)Yh?b|*sp}AP3IV6PPEh;j9=#n{HVL>>zFbw zQSBIipfa~d;{;UTL_*2*#2?bIKGL}cbzy6R2xL&HRB+Ut2O9q2`UB0$0wVrEc_%1> zFEVhLIhx}Sbo=chGNIpK26_HKTOZ5%4oT0oP)4}mq0Uao++gV-mfZD)au*p&KsG>< zx?~TDD=WCaOztxd+cBL@$$??ab9RIqTf^)UWnzgZf%mbfqm3^iwr_lq{|^0{+qz3% zihq06BT|>1bycmB=9gapYhYg}>2e5ea^T9~=1eF!cgXGUq1L|@rhSvzg%5EDAoWmm zunv&J8A|tY3pK{2daIQ1U*cAw1=NGVDxIZH86Bl=9;7$7&jFfwiaP>BiQA=T30tc8 z>*!bfklUeVcJ{ozM zok3ozv1UZH)|nw?Mo5`I9;VEQ$Ptve>l=js(=ub6qscEO8qk(|s)&|gkrov#SM)gY z-$WbKm~6m_D{G|eR16iMa*LYrVNRki$7u8dq{F+}>S4F{i|wG=?1OJ3MXr~B-u}e? zCkmO~tG_$^ZaR=$!O1hOW7<6w?)s4%&FhL{=cetzocyj@CP+_j zLZ0F5<2JywJK_gwqGPIT*+g5-NswNLLAMA|2ou5h0pcmW!prKLi=@qTdsi1f@dGDC zOH7&67Lne*L^&c_QOAmb$>2Wmhgusy&@b{}{D6P?@YL^;IZjh0tFWqo`hGwnzEcx4 z$j`T`?h~y}j>!if^So$dV&@TY?L4j#I}b00)iuNC3i9A)VpYjMaItGl04pF;Gml>8 z*ERFF#xwJfWapM$tN>ptOO@3TybA=~O=75UM-X+u2M-e2b^ofg1EXHv7^)f>xzvCd zJ-?1I^fH6Z1G|JD$booa)qTQvq66z~_25ongWc(Ly)G0}NZM+umy=h=(NMPkE z2$?2AFhRd@2wC9$M7kv9WNv*S?e&qS?)z6w{j;-sQ*Ur( zN7r0hkt0#v@FUqykigScTs&n0tAAIdgH<&W^9mB&u~~M=*j)CUj?KvI*o<_?M#h1Y zk3+{HRV71qrtV^MhYYUrnXE^!wiBVQ1TDYEuaQuMCGoaT zT3;(l4V9qb#fwXLj<@|L)h{_&Vi%sMuTOCADl2y3E~non>9?tZilYy7{e+q|pj~RE zf%AP544h5|vI2puz=ceIUC1JHjk{dVdHx~rosgXI5zQz2+R33I5gWdx0$3J=t*N2w zd(x7yUYLgHNNyS|{CKzUgx1AM(;s;As&K2LC(QEUV)dV_QI6O5g z8P9rrmaICc%&Q-X9`jm!s*!mDA^@>x6jPI&)=x97qfshxP6YxJFs+tU*E@8(^DN0m z^!c1R?i{2&ppJZ}%O`Zf@?#`Uw?TK=m-VsiOZZ@M&J-kixvYP0neCF*B$3&evQQMZ zM>q2#T(v<==w{1>Mz`3YjdMiLa#IfjugloreIQ@uWN-t*)WvqgQbUJiA?>8~I8 z%`!O{?E8dxBP<U`g)Zt6+NhYWi)b}FcqxYJiQf&EWmD|v z*_~kSCp25hsd?RM%s7@~+r18-X4{#d!pFS${(e?di~`BfK7^M=OXBWDZWGTbic@z$yti)%i?MO zirHa_2VaqAGFVBC%$a6T9)zBf(?m41Zu~XRWVUW@1gtJ$O8}eksxNW7&@ZP4i|>u6 zCq{7!NuL@m4pzS#xg(gI%ERN!ht(#FaD3QS-?%$$|2J`f*F$BZMBFc!wfAt8yaY;! z_64wDdUIg)sESnoaO1OeoUa!?>-7087%tpnn{Ef~cLhszc3PC3oIcNY!w3HBp%nBm zj`Q2&GK}({NN3rhJn{{}n@CSBnX&kn($m&980ZF(o|w@~Gv#unH7j`q>2CZ7wEbP@ zYBmV^j&)!n=?jl%n?bvTsw&q29$6E4mWO{X*BQTbI?Hmu%`-3>J8 zT_Xcrb8Weg7~#l%7K45UBJCSS!(L0jr4El-@f)%qmtBskDiX6P#0D-=M*l*Id8PG< zxqIpp^Bl}rcGoAC>~gLx#!f}_XO9fuL8BPk*T6Btk4O|!-UG%UpFs|UAP>>OqBjt^*@&09-=Hj)~$p(&=1B z6oqU#&~h_s607+lGSRA^AFFwhE-mW7;QXj)U%E>`t)Z%7`Ml;FZfJR|rizWosh77vURMu-giESH{3F9-JYsAiK3N3*6)rhn zLU>{tFaOMye=v;4fKUE`p)T*fW2&P#+){T;^3gSnmt^NsOiSvpjL+CdiMOeX8ZJ{p zBmVe;^9AS+*29@z^}Ib;`;L(X`Oc@H=l%I|)}y9mcd|R^ngqexYEz2?(Zp(J`FO7w ziq`5p)qLv?{VwjG5K~AK#b(_aSxyX6rxb$JcXU@`;Hj&uij0N$KYmV>OWT|e(|eIi zP{k#E6Ly)TS2ZcpPoRySfBDR#!+b zqk}ltJ~dj(IrXVBr8}Lw(Cnlx=X;RvlT4b8A53aGX{Sn#uNUWz$cR5@N94hLEU?sH zhUu9aLgt#2qCK7E!zkW|TgJbM+9b_}vaVVuXk=n`4!M)nYM!M0=g{q`l^j93nY53> znYz*_oTKL&9BK*a4n}NwkwmI zKu@yS1R0|bi;OZwhAQHA5a>&)AlQK-q0_k*2Io~GL!>QSq#EACZrt|9HQ-|u3t4j& z&RA#01`a-$z9&l(+_w{F3#Q&r#OEUEdvEhV{8j%TXCoan1g8i!*tKQ*b{*ZaZ&z9l zh$}8pT|v(7qjg;$*rsJyn1 zh#Oj6o9B7D-mMNHHFdur;E%>Po4TK4OOyI}PA@LFmJK2Vmgg*Iwr8Y~?auG_i5MY1 z2-uJI6hnbd=Qq<(KT==6Ono;|pL}_D3R1;1mHj+6FwttR)`ZSO`q8!Vk46XJBJzcv zSt{74_{{X!5^k5wHV6yIki0Js3*a5gI#Lq>5X9|DSEjdW;%phG!hUKWhT~A~g za&0dFej~uk(1?LL0^XFSz0ohnswPI}=pt(rYnywxKwc1b&IQQ2ss|r{TJWZGCvaWm zX_3*Q(mPaMl$tQS?Q}XH$WB3W`h=^XP%sAt2*9=q=(s|L8uu+Zo_H9H zb-B>H=z#Fwee|E&U`cvA=hOL1k!LB{%;2iWPUq55D2qfPA*BBlE=%iKjq{vo;9DCt zI=xJ@_A}1SZ0IudwAH!H)L-q&v7*%)6C&FblYWBh2}|v-;qF3XYWAhA2%cV6P>o|W zMcI!$6a7rKHVqjItQs@yb=f>AmefCEp0obn!9P@a@ zDhg}_lC(g|C~S3J5i@n=aYE6Z&M*b)@J;0a7c#)Hun%@>1iDO>hcBv73#nw_&dzY; zr;I1MP{(2J>sd_`=DvmyT8tLnL<0Q3yRQdg&g1fo3Ugl%EM3r;DuS1A-Kn8JZ2`xn8N4yMJN>d6s@U z-)e5_{t5YNsD7GaHQ(F)6Ear5ewxYQEuRdVN6!p2EUx+hi#G}GKHa~#G_)?qzqxgR z*)*6Hy!SaiAeN0&&{?TFYWVRa=|!h=i=JQ`O~hB}v=Y53*7%9=V`k)3Cqyarq{?=@ z7xDD}B-m=OnorAMOYCREU~7_o`jXW=sQV`*(c$`OvekUBd%wX}Fa1<+HSg~J32eRd zM`yf5TOZHLVynRwO;=Ae*a}$u8gDbRxigr$;$s(6)0|`7 z5*KI*Pv*_9IUa}a5mDs+PUq;OrLz6PBLZqX(A`HT@Fj`&Bil~SEe?p1dkOu@d-Tiv z!&%|q!~rh$OWCMpjNC5zh_L_YV!mly|Kg8V;=_5VoWj7n=VEXamIFOjNA&C03@_K^ z%}}-k(Me~F%!mCoalR_4BBel@Gu`^2Vm}946Ymm z(suM3r;zo>-Z3EtoC}Lq4@gDKC0PqgTb&-mhxKh)U5KsY*e6n>NoNnZ@Q7BY@46o3 z9&T|@R^L|V$aO3YdBb~hJCb&Q@JIRAy+l&srJz9V4({RW`+-;A+}!$t_8@aF*}~qd2{h8y)tj&O#?Qg~h<_9BpG9~V&M5yLobUeJ z?e|(iw%2bNuK7ZsyHO5$B+^qsPM!NX(3bz3(BAf0aHXZGze4w`$Jn}2fy|o;ubN&YIJNJ?EG1Pp5}*Z=aYLTgJqAkvKxer4*N&Da!0u&vFtb1G6t>(Tq$*L)12a-PhBz)AesOXSLdUGiCAj@8J<@JI5ryh>C)x0**e3T`rw z=zdqk+X{m5R{mNF%+>%q_<||bZPy2>;8gTW6h1XNgr9Ihl|t@%mZLb-NCH8L{)IYn&-T64Oh0N+s)is^xmjbYnX4E`;Acbb>)XR z>%-DN?WkF~7^R|4F|H$(MYqC!B{=f=I=jtTajt-KHp}l)fBsKJfh=$N7r`XRCOZVg zIt{46w9UMA$+~DzAk}&HAGpkk%o?tg9X!^7D0pU9JuF!HJbmi5@IjgO4RTgJnJaKSiQ1MLFI zFAEfsPw5s*dh^eKF$0Ztqs$-!k<}#TRJl+sb=&Kmtlbgc-)qrVF!D?K?lkq?uk}U0 zl&pO^zW;RLXG;7(-rfX0%If<6PY7X=Wr7fmiW(IK#U%>b zM1p1@z(j%safu3oMJZL(C^HI*5S&DqK8(e>*S6AHTdi8PTI+65Nl*%*TDMv&wN{^W zTu>{EsQJG?=RPx;K(PJ(zQ5m}*DK6@?!KIR?%D3S3tb6Zm=|8^VlE&i)n`Q0lI?$> zWa!2w(HyrC^qSk7<6F;LG;GA?U=@LDdx0=pn;F>d{qmOrq{*duw!^|%W(X5@aQIIR zw&LinYg(2HMd_c@UAMZ&2>sKWRa^CtTCCA^OqNB8VkgJ97l#_>nzDIvY4t2_t7p{N zRim1&9xLV`ORV|hv7(gaaVXb6gx3s&(nW7(On_Sb6OG;I6!}A8X~uKLBnc|ZF}h_nttS+NAnHH z%+yCY)^izakQ!NoT;z;AE?Fq z4hwWm-)8%I-p?hC-3-jnl<`O(#?ijIVp(}f3e)vhWo3%(Nb6Dz4t(UwELQdw+xblm zH(zYAnY%I%`5e;?XCCr^ZK?kX%zjHRGv*<4GUc)lx=^x)c&9D>;YvUt%%_8hx)v=c z^L@!Jymerjo50p*M<|RQkk&;Nb%38d8AwyuEVG*pR?#7JC7if7OrG zii2?CabN$^JkiY`0Ay(Q@IP0Eq@o&+x5GcHC@nAH8Yv=i(Z5**$yiZ(cuDNNj|7;G&nT& zL(c9Z?{&PL`;GtH%&5>A`2LS6#tqvDx%^^mlQgns5kZsNe7f!trEP>_#=`(sAM7*KKhiJyH!R<_?8Gtv)P4MV? zBIot3Tvk0~*puwAoYX>G=;riNWWdCOmr@5SQXG5;4nF)?hK2733m<+g!^2~55>7^X zJa+GIe)F4Zu*;!a{_g!{RSH_NlmFnbw`NlElw3W6ZG3(>?)L~U8`Hkveds|nx;;YI z&{j^{joR{5gMVzyo+5GZS&r;=TK%(ruSt?msZhh|gQeDd%2l|Bv^`3G495 z!8*T9c9K@&RU#_AUfkOOGb=H0WSl(>F}C&<1JYN{?YGFK>>-pX=uDO_E?~6tz{m>}<|KKF$(Ow~;YRYyFYD^N`v{ z5@4|xdxfqQp;g~@E}VGiT0yK$)vOjBHoYsBMY~tDw}`UD;G+_~Ox_0nyGybzq#O=) zzzVIQ<6LBj_03u>m_yxEu!8Pp$$!3nak(L||Kb?q1S{F`>Pg!ToG8ihcIl@KcC%N| z-Vv1?#mW4`KFE3o>7x$>j@HnyNLjdeUN22f%Z<9|5&ce}vN|fb%rW%89HH2BfrudO z!-?+Vg@A~Q7e!pWfUld!1&n`~Orm0{^UYsp#3E*ME0{ul97)BdZbZRh_)u#)pO3%= z3D-<4MVcx==5jtnE@DE5M$pe^1YUfNfxyE}{GfkXNzH-TA%uD`=HcNTF4=6qRWq{I ze}&Vr+7w-(Ms>!Jx}(A(z!F)c?D_~J(y}KFHsK*NbX@rfR~(ZT>9^05%xK<$;pAzi z&i^rVA6&PjSeP)=SvDe$z-M4vtqPt<+fsH|@yQI)WG`#d28Pe7hX>pM2t(4&Mg5Nc z^G5jo}hpDRac)(~}D;Kp!s_-L7mxxku!F?J-G1(T4 zrlR$C4PvF%`KM4E)%szRq~vr1Uo6l`Td#fg9#Vw(e2P^D>lK(+qV`M{)}N|Z4%Yd7 zcdq68*|praQ!Nz!^;pU8*7>ckTNf@2dN*st<`p0S(+A_zk4)w?@*bD#NOd%elszW9 znQ=Qc)5*o;J%JTkO6%&^9-`%bucg5(&;Z<=s>jo-;&_C>eBy*F`tkS;(uGx_Ywl(u z>bD&g+f4=)?rKLs33{gK*SQ`WT*cckb`uaGdd}7Tj0~*u*7%J#8`O>1?4NBk14OJD zwLvYo>^=!1Z~zs!?Ap z{6J4!H15SD*kx(vZY7Ok<;4BsWy@vAFMUU-F-1(k|2#!!ilsu&TD0kh!G9b^9(82} zuPJmGyPZWX!7?fF;UVB?=CosJM%g@L=?nVXf!96#pPZD=!gUmtLVb*+M{E))*ylt; zAiF+Q?qbPX_kuZ`Euuyw`XbmT582E(Ch!^SBDdp(l|+mQ$&*iJIr4tNWtBEz4c=g7 zN;D0r@qtRV>?s4QMWgfBfao(`*IizA&`L7l_s}yQDHbq^(=n)P+sc5Lzx4CTapALI zCgKi8yRixr6NkS)F%f+qZw@bX3lQnVmhSIUZO+7&%J-oIp~F_$85wG_y!SZ4zD z$LD`2>*>1Ow{^ZLX%Oy*B0?EMY=iv z4Q%~4VCTOEJO3s&U8v!K{ek>v(t1VkA@9vpC;O#7{=D5gr`TImBzbt>N^em~aeRPp>o zxV_OttgyTKMCj7?%AOSP8hZf=?M?Bm19-NH7<;y9$^4`H^7Pb;?SHTTviOQJE+K-6 zo9A(_bDe)vv9=`M8DEU`@y3@7A77j|z9@wUXnJ_hOfHd~Tr~XT;=EPD%2nQUc!{^7 zNOG?-i`CkLwC5*53T$1mudgyQ_imV|M_h(}^I4xEt&p=f&xx14uL%)thU2^qN_2qk)#}2JuxHpFJ2l9hu{674k z9vK9-a_W)ix|!jW*Z_3x-S_6g>w(de_Cw;&XWh@QUBMXPQT?i9Isnqf{+boDe%DOAiv}R4NJ& zuN+dG*AiORmsU{Ksb#iM$9@u!)^PcPf`V-!x3&+s`iN7uO-~EB+Tj(@**u3fOjEP` za}c)JR8&%PaPuRy`~nKcw|2X_ zFSRyI=i|ZR6rhiXm`8bo6j#G$y!a(OEC;Yp1#D#A9BMp_mSy4`Y82_HF6mI5RD_;c2aXxFD)v(b zn8KUfzf8(f)!x+JqV`aUg_h5yci7W64x;+>^7JCy85#WTx&Rq`KoeO>AcN;E31slc z&PgDHyDbT1AbWK?V;`?u-lup1mV7*pC*|$RG<13^X(_(4m2W4h;w0%9kz{Rig8#?~(!2(Xmzy!8)d>knqzuLs_m z0D-62`i0v1p@v*+hElzExo^h+5N%`4u86Y+4OM9Q*E-YOzL)f^?cW9LEz}=cJ5BYe z{O&x}&)G@XG1YqSgOgEE{U7jdpO_zksQqo;CFkGWDlx>SHz8SeL_yooy%5ttxptp|bK91FDT<4=%U-fD#e{K>0D=OH+rQE~2U6&q;>x^pic+|;1$&)P zn?|~o$-%gm1?Pt2+q;F9e_{8G9NECVmQZ6U%UHh+1S{))9>F{!)VPm@@(2weq}kjN z!9GAO9SHX4_LTvMT_M=xt2-gs+i|Ye8NvQ)+y4~=yF1+pR-rS3eX}XE1a|Cg>i0iI zux&qPO_<2;q2>2+W@azUom5u8?ZjA0^K}~Yw(~|>pdwi~>-+YdnYVAjS?wov-bgb} z-*F>dfR#{sBbk2ue~-Ab=$BuyK{E8q?>Lv-Zj#YRu$vmvyD4_{f8I%=U%q`OolG0M z+DW^^NCz`-%XlcNgI(^VFSL_J+wC4B%6p3_e?G4zAj$VQExk|jR&^py*6ptSbvm@j zZkRBJ8t&j5e@5lpS-+8B{WdPLdj#CBQmUR3uHUBX7JP_e(Tge0xxz4&xKbNxKSEt? zsB?(#*ibe0l>v-hZK$?Lrww(|sXK0{(>8atq0SM-awZhZrJ`8oW+;~LI*R4&ohX)7 z12T)zc|$Ejp8i;WRz93CVzTXL+^_6Rvi#&*NR|tALPb~`ok2M?qM7OX3_5|-?5%U8 zeP?FqTei*%6FP65A@BlNN@dahM}5(;b^iCeChH8k*X2{?HR=NCN6-bwnmb)y61I?7-v## z_UhKy_kXjx?~m)ey5k|@JFo5(EiKX>?rebK;Iy z+Bc}SIoczRJ~e=v43)Y|%zl)>a~AePl&t^qgjlVgxDtX1iRxkXi~Hn6hol?pxcC$_ z#>FSK_NAcA=E*MXl`8HvF7{;iV4bu(aysY6KH<3Zb-;^oiB{#^q}kJ4{p?v&7(A#t z-fi97p88puO~R%J?w)Ft^uYr9ynqiRIc8uLJ%e>`RFLFl4MQGe&onm-d5E7J|8ZpV z=|ONiJL5I3(8htw808K>Mq#O@*=njMjlCu7YWxLB0UX0G-an|FU+ll6RN6^1g)f?sV@DfqV5=2#~UDqC0Cyyaz1u3cbG_rm{U$eT2 z(ChSKm)#2P*u_Zu_~N#?9O1$*q2*`yQ6I+_qlT%uSsIp~3|UF_D^e?~JNYWy=WlD;&TEWCh{{(vA!w*aswsvvA63<8a zl$8Wa{GcVl5>M}(1WSCACBYJp>6`>he5ED95)bX11WP=_l3Y2uGwKofM&a`Z74-VdJ4BCTlFaBS!Xm?d~Mxgl+=`tjq)q-ej z(x{eDa*}305RHLAOC=N=f&Fh$dF=3T{lX&n;UW5kAs(#Xt~lZ<84zR0TO^4|jpz?U zq3c;+Q0VD~LZ@*|HpT|6`B&5~;f==r~ z-%5T*yoIWw)P!6IQLKYxl-~faKE2?(q8R^hLMMu`2)3d#3pO(&<2o7{SN45fmQV7o zP{W_-1}hk9SVKS(r*|xZ4!=ggQIjRCos#PpmT2joCfLEQdFmO+U1 zV6J64=VLk%Do5QbWRRZ0*pXH7t7~$i`|qH2>vfdrfK5~M0#Y?0sJSRTOqXDScU|v9 zQ1~Huq3x%bB0#ia=lv3*w$(fs-gpGlFygIUiQ2@SH@?+&BtOQV$G5@{{(!2|{i2=V z5Fs*+kyD9qeLIBivS3-K*g@f2aHEdDUe_kXpCHY_gr4C%l9ge zomRhaFCYT8a4!JjY<_@;Q%yI~)D5+SAw1pk(EIT}#4$IwO7=P;wx5a}5!d)w?J`3}=Ep^rRCTH6PI$@LfqZK~Kg}<*b z_kG&S4~X@UbaCM+BKw)cdin^Oqo3y&1t$vGU~-z|9m2U1Jw(KH`^%~QM!c+Z?vXpu z3hbVS@KnEa$WE$Y?nO5*r`ps6pu0gUsgf7OI~E`&4#0HZQLgD)U+gPr9Mi(UkEv@M zKsZrV4E-NfQGqMerl`|pZwPO0G?zN&6ISMFGi4_;M|Z^PWD7E1c%h!I#!jZq0ty~we!$jqAg290zPA;kfLapa8m^x# zd0`n9ho?_}e)fu*lD;{24d|P5&!E0J@uT|YT*}`*d-u(`l3%a5Z_eKi>YH;S;YCOE z%~{UxP5k|gzYYA=?Atfzul)M_1@Du@7t}!dycwMuUjRcsNd|>pP5JPeqCBidJ@ef! zGYPZ1PRQTAS1~dX#)Y_N4*xy9*MKqYgm@NKe zmV#wW@!4&+U@B@M=bsGwnDnJM`h?+Q#>ztWEzauG$h_h!F2e5bwRzveKw@uqWndbn zD2+{vG4)^T*Byhjxg~`U$Nyw0N(b930?*_fxpQK{<)ognZ)r)zWmQtbRSMQQxYlO= zY_jZmWUUTsc*H+15o`Eq#QS;#7q9I}rc)j=-aBMZGF8O4PrK}Wtj&9Kk$cs~9(o%` zmCN1=DTSWKVP>!Zt@M@%)kL^?%COvf3_kBMSS;@`jChgwMf-%46?&2(;$1V$a`#;m zN&G-uf2t=B_Br<7lB$$x5LPVYNWW)i&%77M7mUnvuPt1?Hvss~aJ&BGU-*D^yC*)* zIKS*oYfC?9AC0ippV*NOGsj^+gjUPUJL19<18c;*CLTyPGcHSQFZ|W{SaBsX&%Fc> zGpx8Neak9%1tT)cbAxv|6Xk21+eO|o(U9#>TJT8f8Ntw0@82dzDF{D?krl0 z^Oli+%3`K5-=~~?r|o}~f6tEm|2{XJ|3J&%ok8!E|AYEW{eR5l{|wP+B;WkRslDv_ z|Im^DubKSMDSy0aSa$8$hp9hHJMu68Zn{4|a`}68k^hX2{MBzA9*p<9)}KgM{U6$q zf8$@$`H!*u1zqLe!c+wF`R|$O{&chaKDZ#eN7nzAj{IL`>VFyaWh8%VSNU)0$ls8u z{}+~jP*?r=UPu0DCjVuYzoe`D-|5JIcqacC%U{%0{+=EA%cma^%;)ZwzqYIVuQL_F z{M`L!dOqJ>sPPW&D*vxL^3TcS|DEMG>){>Y=ZcQ}%QN|}vHXv9RsV#J{9E5h_vaML zKcuVtdv@d>oT>jn%l}|k`9EMPg7H3eP5=)Ag0_#ZO5f{E8`&8={GlU%eWpLpkvEb* ztgHH$cI2O%$^RqEU(r?mGdl8@X7Yd6@*mz+{-GWDt26nJvHY95g3m2XMKIp-O#W_` zzp1PGTRQTud_6t?FC+VjgY?k%RQPQ&wlFWbMJL(t?1e5s-T(GDz zIi{A+A0KNe#a{j#x|4_-#_{q~b8wlKh>MruGR;TsYlFTL@fuBnm%q_P>Pjm0bh{6G z&_w(VzP$V?);%E$FaLZC8zS)X&(mNMaZRI_Kf+RqESzVJYkPY6AH1rLXzO|TYb|Ws zB$@xOCpqL2d0zfHixseX`Bhd@faT?{ws>1q`ggXqWhl|h|B@tHHh}W-zj9xO{=EEe z+?N55m%qY&RZt_N{E_=I#O>wZ=)P|ex2gERgpP7*|c_lv7`L`DnHE1zf6$ww_Ewu ziZAJ+{3M9>hA3+?)!uX{hN7rKjhQT5`%k&V`_%6@puies=%)Z()w81$;GsH z(>(10+^$u5@3@;feTFggjQ15XlhnJE^2PAKYfDeb-H3Vd-UM+2LDawOmXgbpuaRx%;PI1tI>F;lT!Q}w(L2E7v43#zxUN$0LvwaL#=&FN zA%aJ)fzLTJ4Ufkus!MpBRP66XVrO`??jJ_?{riV#asL>}fI)lV?yB`5HOf74|F1_| zhW5hkwM4^F6#nW_rf=LiU$sy27MI{EC)C)A98^GEEK$HPi2`Pdg{u{2HOG$J6^Cgz zl1R{Kw=8jQB5R1#A&_|Zrfrh!dH=$tX8+5L%m!mQTQ>J3Uj=6l=vH|1dIe7;M*ADC zdqwQmG}ePVS4BW>ba$Sl0e3K2mh^L^!u0o;xq{69iOxAKXD~uA7mHj{GQvRlY9CnT&ktf)r+_s zYt#BPQv5w>I^t<(to8dS9AAu-;c$|tA8WATe}Ne@Ip%;mi~TtzmZdHydIDK~^v|0fMnVlQu&!=A?p21MxlqH;w55}UFJDRZS6lU=h94-- zyQ+4?M>v%bG%gJM!{JVaJ~u^Y@dS2WY&tJtm*mLjzhR)sOSEh2IDg%+_oCXo-zsjs zKh;I`s7%)7vYaSk_6SPdLn(ixB}YP)AL9Wk%A=hh#g2=x!Du_?1%nMWo&Z>Cz~+$2 z;F!VM*2|hz{G0twZLaed-=(e86uX#y3=iTi4C2lruID{2-x)!ieEtj!@{JAR1aP4s z?x-NHh`2sM+&(TY)G%8|UA(Dxif4qHdKoUCN|ar*DvsidsW)19f!LR%IwocJv@N6Vr{x{aI``=>!NW%hKJdjV> zv^=IQoh`J=wC?D=B3#mlU%@@f#u~&Rs|4_qR z!WbIfgA#(2exQN)wr;Wgs<~Y2;S`L=GC1F-fe1kaT;84D_7BY0;@k3^|8~P_p@yNV zSzgAI{krd2n1ee*$!z-N1mR-=QEkrXIFU=t`8!b{Ww)Q%#xJtOWa0iXts&IZXFs*w z!p@iqp4y@Hn=mw1f}H17!QH!OYC{co8S%J5`0+B!f&??G*H9#RQ-?CNUa>JjpXWL1 z;KBXqFQv+ZiWM$V7+T6Db*iXs5NYvkJ@Gdmzl!&U8xD8XR0Y+1ft9f%c3b^6g@yKw zXuIJr4t>Aka%gCNi^9pmr}nizbZ+Qg(&F3lW8V>s-lw@~^>1-y3l#QT*=g=n=v?*^ zE89JGpv|EkU26n%DAhSzL{-GEirBeS!%M*+LI3lA>7?G2>IS|@7Jd!>QfvEK%R5v1 zt$v>CN8cis@!yyVrzgO7;hEwLfc92@==pZY)#{Mz4~RMV@(ZvV6(ZTcei4RLLN>n% zn*9|uaEY}pr>#HpEc6=fUdYT+ZzbSqPRVC^korQyZ}oFWf8c=iLJl(;hu2GHPP6e9^Nh>B^w`(mMK+ zEc|GegThJFD00IsLZuxp4DdL*scKJDwZ~hv;)04hS6w!-sEew96jc2gcEPmNlW}Rz z{-IBAY8R9HqRaSlq09J$%V?APTbFd_-Y)45KIxVYh}uxYBPiYIU#Q_;0ye#kKUb8S z_E5u(e0UX^xxj&fO9chNLtbtl6`Gb%!}s}MYC;V&6$?%9T{k^P(qLOPagL0tmTw!; zVx3m6Z7ZlSje-Tzv$Baoj_bf*5XW~#mG`O0NwLu0zwpbmf}35U8$q%W?^W(c`=ih^ zrip=fbuw0{u{3cf_z(sTyq!beooam1k`J2%{9gWtXTVN%`1j=Ts%r1u%4OC>n+PNG z`1q+ZCktOWPZa+j{iU}W3jU}3dTt_#dymlr@RWu6s{6edAf0E~tGSN*(K_z9E_-T7 zoEYwrLiFC}Jb@-2F|$Culyx_0)qJm1DafH|Mh>Baax|BA+*vg253p99BG3|(g~tzs zOxkvfdJ}4RLggJj*5fjE?B9d<-&wpPmwsvf99^4o0V>l(xeAprm!8;JY2R*C+1@nA zA^Af8)A2UeZiZ?@4l{>UVnU%)f2p|j{+%wW3wmuErThjpdBZ(HGdisv3W{OSZ8GeGOx%xbsQg3x-6hYW+_x-qx<{j}*y8L6sM)jnA(JicC2epI@63YS@=H!|`Wj<n|wvFzjPSl=J?;DAJ^!WH)7C-!ER1W6YS6X+nzI=qTC@h*>O(2acn z&XkV1k6{RuZT3FO9;>w}8N`%y$k*K5e9p+z;}T`sZz%|>!gcCU=5G#Y z>bPK{j%1=b_ywDa#yNU;R~Q zLE!+``|ut`;z{jW=P5~VbjyE&IfYb3ypMJ#3CWOZIcQBtwrU7cU@g8GtH zbsLKO|GR&hq>jfvI{J4WcX+$(pQzw9lI!?Pi;A9YkMNd z!PN8esAB)Vr?&7LElb~^sK((ft>7olbCXAj_E<@jNzGWA3Psq$^HECJ(7bm_4WA{c z>brN~1dzpS7 z*I@o3oRD$c9vskGo?_mZNIN$#L4Gw!i|U(LHImY`V$ZWr0cf( z0HWq8>HR9gfP`Uq z#%lFjKaz1%lmi|9S>2b~z)w}ck<~^h)2SonsdOQY7g0t13G>~JxcWu87lj(nQq-bubAxwf7v)_X zYLp+!`bFL6g&KvpDoZcV4>ca6P}#h}vGW2iXvvD)%4N|Z!`L32H3}9pgZ>YSu+p-Z zuYy}#l3bh*G$`@yfdU9*{R_jIG`$EbXRHPePPC+B!Cqwlnx`zH2wGeHqQR2KYZYTW z!l7+K7GWmtbxM%xq{63Fxzu& z3;5Ke|BheHe#1WrgzHP0{yQu*U-N&X3u*xpE~ph)#ssSoEz?Ty!mbp`h(~CH6+qlUABLHXJZlf(D9;~x z4>&CDa2VkC^$Du)y=ZUP-}b^!_==4BI@E9hWDO&0o5rs=`R|zc1vbt9_k3yf43jio z%dAve*OK{tHBB#Snw;!pt$!GE?_lXg^G*DkfA@JB%2tCY?cw-UgLAk+MxppsBMFHs zq(lL`$p5gBya|)Z2YjO>@;Iy-7VA!YF;A71Xe0P-ChZcU@a99;wnsg?e~&6AlEZYE zc4obQ^-??3_U1cMJ?gXQ{)n|eH&ErXEJeaTCzNlthXSkM3s}O7@6c9aMMY~LX5Cxs zPvOdR+8C;Ed73MS=zUcY#RQ9U#wEkKe$PQ2@bAz@7BmQC z(oZe={dhUmfkj({{%E;1ZhAk7hev+6P$!j$a`~DDY?{l3wZ7=8Hn5-n>@DfqEcdPC zZj-1bD}Sct8!~y@bRTVVd?oGo3Yk398#|aK9uR+0*3#W#g~A>85R5-5f`Tdd3IDUD zPrTg`-?uc{Dvt=x+jV~P^;>nY94CGWs;`*roQU~<_$k1;j}b9z{bTll35TiCh%tc$ z#%s>AXJp~lnSOWt(A{cpwg0Oz+q93f^8S0alqh9uPv1{ zBB2-bu%tg5i58h4cHEH(+RW^)DeM+h3qxbtkehg9w88)u=|xXl{mDEs*Y1f(jwC!w z^I9=;n(6P^BQK|ALN5|%PsY&`5CkDpO-!hWB(8|WpB$#7Xpic|;(`>Oz&QWeUnJA0 zwrGSc`eLjH&|jN65LG{0IvFmBhE_y83_yd=*k?SuQ4&c^E{%_V_HGQqqJ{obZ!lRL zX3^dJhZMxOeu2Xux6q*5Nl8MyPk`OVxZ%z9*upt4Gq$D+ug$_IH>mrDPrS+WJHp?N zcx7YiQp#}|6R6nD&N0XJK7<$#(At2E7>bp$p?>Ob!8tVOnq3U zM>;@`E!LER0~~78c2W=Kb5ces+$cO&AcGHd{5gCOwS_V9b*SNc`iRfhS*y#anh1^# z=Q^f()EDy#u&3cUlvU-2M30M%T6fu}ZZ`1$oxKMIvjS{kY`@Qq={?(aEL{%{R&O=f zq$G#=Gz8<7!7EM-bV_k9HE%#O#nfWfB-o&|2wwcxO`+;0*IFpdIiYj{49jv zI!mu`}rc9ibPa=tY31*3cV&AIxQ#K6>q}9P~&ny*8O)PL3{G%q@Csk}pR zKP*Ha+=^DFY(hb(Q8c%gP+gkNY9)JT;0hbtv+CsHS{w+*AoO4If4gLJdsPedaB<>b zFRo_WoA6`^ed0-r?oa>l8?8E5S0>l^_2dRYaUM>n;lQAZWZ`|TXZ{c>N%6{zXI+QN ztf)$MKRPnH{^nbAE+4VQ-sR@}&VfV0pL0;?6D-8Ctm15vGNXpf-Lj#YYrjhcE|FO` zXgHC_L8v0p)*S?fH_7ILQyjRHikoRvB7`a zc6O%1H!X>Jb_FXAUY}vYrXnc>%-$5dmN;PLWFK84DBoc1Tt}|>lfPsZ5N&V_mkL~q zm|z5Rk&##L7WzZQ$k~Z8b*b*N6DQSqanV*1)}WIR@v5Dus#&nJ+m5B52xT&9wOMI< zX$))&w96`&DU+)*i+gd6sx|8SWA|0h(uo-vo9(~!cuK0hmo+4BN&!p_{3KoXmZ)DE zWraG|0|LG##rpx>^wj++wUYA{N0N_ARxnNoqIHt@oPWqMLQzez9;}1Sg0ZmC$;LEQ z8AgO@s&GtGnTdH?{hwcxJ^<8D67@FxB=4ncv^@HH(6VOKpJ(;~nS6n`#;wnDWU%## zKW+^(rs%Nv0vI+d5o~N|_l;rOJ+fq#y6!)+prdhTB!UlBr?egjwAEo852;WWX&F0= z?CdIMgD^6FRYlICBSl3a2{?pRLj&+)mR8!8?dSjUYC$OLlL*&&-ZF+jHqe!8A{2kj zj#nmZnem8PbXy}^pWmd%695}41agGusvZY6 zb=aa zDNIz7Un%LVhGPF`W3VT9fKL}D5?m;SY+Vz%wS?ixq(FI1yZdGv!q%x0BwoD zo>`s|fmH+f^K)Y3M5$B&NnpR1MJ=AfPI)=j696pG*b%(k^U*gPd*kM(_Cl4A%>SL$ z!NWV1LyD6%bNnB0CtOU`O6%<-rry`3*a!9Pp4-k6+Ggu#m@uA;K}H;E5Qd}QZbsQ4 zMmh{!^4J>$A9&`Yzo|pZv|81Hj)TRxZGY5?eAX-4Lymo_xVsxx>XXi8X*~4FLhyi` zLfA-VDLb?fYB0SJN`%;q8`kL`{t7oA^(0%CcrT_zJFr8f5sdKc=d(JNlhrW^Kh?1j zFRSAJO`rTF6{g}4^rv@6uzxiG_+BH>5R`vfCFwU5+MA+MdLsi3HAwOjVB1)~_~Q~L z0P`R7BfJ}Gc#jZ_rcBk|RM5+{Gjbi_YMy|zI+`q@s+URNUKL=^L71ABT>aEiC&D=) zBRr3xdaLcdI%o?KUM2qZlXSw3jXW+4jsJ*Y7($d*db27jy$dT1oV>UYFY`1rjmO&y z&mImHlK`8u!i=T_C@xK)tAE%;ajcaRCCpA(;pzl+Ca5!UVP)GE8e*G{t;{EY&@eH! zg50Hk&n;Vo>`P&+yDtPMR~0{j7Bt5{alken^cDN|Pw+0HGUzq2O#bXov;`*gYMC&S z4$}GNmI=ZaRElKDU3Z2rr>ac2SRHPeP(h{~zsJli*lShfE<&8P)?f35`&!HrO)T~A zIY1j|Vx+xr>0#m(G$wB<8+=#e(oWq!pip(1_4XhAyU5hoZd5a@y|996^qdM<%GQC& zuTIQ^)@H%Lt))=a8LmU+p>D%Q{B-v!N_pQj`+%shYdxGt^mQAVW4*z0)G_0n=i`ry z^2iY-z21-3G8qzP%e$Nz`l6U&&&@?Z3#O7FR0Fq&5u8;qBtLUEw*=M;?imr z@TZ*NO16YWu;--C@=vswH?;0&V%Wl&`C4V7&gDKRlNQYuOP6z5=ZWu8Tomdjf7i@T zC}^p0HTIzb|6ivokxD^39vLgk{-Eh4gCN;xXC%ca$%&jve zX(k5#uH1h%%DD{D*)#4b8cGl|BW6r|SgowsbYN?$ZBK#kLBDri%K+!75(e0x0gh;@ zOxOrgTDKk7bL0-|sU_5{a)7>|Z8B4lCd`6gl?O;2Jme!y?$x;h>w20<+YMMK8&ey) zsVS4Gi}acu(w#6Z{>PqWV6ziM(V0I(2BV4ae1aqK$QMaCpK;0jn>X2)(Fn=>URIBJ zjU(q-TC>Cw;eWpF``mJ_bYIuunToW#-B%rMtogEoF0te>MJA^7;twiv3Z`#UiWx+c zi!R}_fmnmM{aHr~ zyKWUY9VmfW44_@(uUnwlR{wmo4j`w3NJ~Wxl?x~hQJYlIA9}D-jrgS$xg_FpN0QVtWXsU+C@YX)@eKPoi|3*iQ^KcBA25*ed04p&G4w$Kc?oFi^Apg+5HaE zL905HEmJj1^xO^@(blVkifxSe%%Gf;DL^%gUZQs|k9g7lbFJ_MTgP#Xp@x3|5iRxF z$@Tncci}1n)Z(y5+Y*b!CHn0$?6QK|yBI5zFyiIJ3YGL;N(+v<&WQ=tY1ISL2NP*U5=d2qMTY98q?SgZBgQ$-5JT*!(r*F@Kod zXv^EhH!hs8vPdw#OA4nA7=WRlrVl6v$OcR$c!&pb9g+nzoysy36hy~Ym(8z@Rd6iT zsFOu}Mq)?ve@$$-B^}KFGh=eRr=mJ92ZF(Hf^?4m-JGrM2*7mKOYF{mdtJoX#D5zt zSfCi0ZRP$?EM2Jfr$pNYVdF%k`j$SaQ05sUE z{vq9ge4g;!90^r!>R{Y?5KiKzZ;>{QGilSLIx11;uDenM!e&gr7D-M-+(T;>KIsZu?_6ql!4hqm%E;FI-#PYG+9M9S-ab0^|i_Bp~=!+&2)`3vuX^c zstFJf1V$$Vk_yow1|GL1n{C_Kwrq_(+);cmS#++xC;Q|HXrk;YVTa&XOr=94iEE$ zmG?=o3s15g+j%EOY$x(RJCXluF|JAPL?LVK!~}QdpV*D<;=lgYmUg!j1(wH8!rtjv z*u*l^lIme8!&Got{t>T&d$h_ZWl{r}TC>1e@831h?NIMY@xB6x7(9e&XYHm{!n1hO z&d&E2;G&^rf|z%RbJqx})+-89W@-hwyWaoh_YHLx2z6e=H znf@tHV$D)k8lCJ%2HQIEkjc=0MhZgcvlEl+WDpNK3MR(><@xq4?SXwCKz-dKj7|2n!tIsb#t!>s??@rG zi;@0Z&OSy7{HlLz1wCL=v9@lP&UwPjR9;o0XC&^-aiO=iMth?!HH#ANPC-nD1Myz8 z)X1Y_3?Mmwv3-_Z4faE3jV6YFm=KQ>qO|yLH>M?gRq+pz&dEPOz?I$?*#5rWfggom zZjWs?^MJj>*c%J!y^aYENbi+zwn)7^xW`rvTjw4l8055&-Fei^-Q^g*Db+Iw0#%`g zUu#<2je4_*VDd0^)J5;Hr!ff$yXGG|B$6y_Jx+IB*83NpXSNcyjAYeR7p1eRqSzV4 z3R$)KH996hbAu>eeziLU2V=75Ohqzep;`ZUYX$0knHzS(P%@`>6ObhH#}f7*{WAj8 zZ+Lvl-CcRg3D4p!#oos#t~iKZj$XV@w`ydO%*i6Msi_lrM@YThcbLj{fp zpvA=hPJ0WTD&(n9#Zg9p__uves1ltVpkK^JLZEUqU0 ztW&U+ab6o?S+b*oZERg?@a)9Iy7bId7beb$kA9``a8ArZf5Y#APiO10 zT0!iJL4`)ZBOaU!nI>*@2J#ZeYw3TZKWiCf04UKRs1P7So&KOow{wh_1x((Q{_H}N zB^px-4#QNCodi=EmJ6O7e?R#$3Umi|5Ruj${6mxF$?`PR@H*iR(R-+&#nMdt-jln_ z925vm+a4m;g!~dgS(~(?W?f6#a7X~9T)8sSW=6z+g=;H%Nk=`Zp|#iFKCocyS=sS@*Gmh=>ZOzC$RP{~_;~Q_C{Ty<~%alKJ2J#0qc*=1&7Z zQx^NR{G(lv%l-M+nsg`(H0Srxd&5rDwBbVqmo&LbF0-zN5kTkvy4CVj5S*r~D2Z@{ z-~q0cQi9hyc~uR;dtKE?9`YY_!I=cVaK$9Adcw(~>Rl^eNobH*BEpWe^;TtC7F8^9 zW@5=om)5N`TNd@6++TE(MM)cV{R;9v&mG9jDg|aGbLEsodm(dsjXhEAEhxfaPPKO_ z&yl|q@!D|YKjJ(#EC*y`j@AB)wfOs>&5*K5Lo$SLF0)TwglvZo!5c^?oz7Easl9ofx&oTu>BKG z^R&+YbAkK{{aNhkHs*rl9}mUIUBIij-;*qG!{tFc`g}llGFg^V1F6X~`uI0m`Pbck zQtel%_MSoU%dNOEzqh;E%d=}g!;%d)1>1H?y6bg2qVJ49K@+_7*6nF>pZ$D%fi5Lq zsAURFD8K>;Zj*&i%16g>XWHsCnDR#)f_qv>&;kJxZ@MGCH56KUIK}DtOmwJ9(Mm-kz+)d#EWp1yrRquE_f^*M z5lfE!o$uSoZg9G?%i5mPGBtLYbkzuwF6c7p#-m7@++|X(x;K&}!RK_y;hYQ>MSa1mQ3E zEePTiAK~xRtnZnGvrlNlUk_lW)j=+Q3aRX!)Cz zhR^4GsP?Yaak*34p&@x#>B*%WQg!hS7+&%Qn^%NBxudoI=Dym#&f(SGs;X>p4JNC} z{M9#RHu+kAgUbc3S?m9M0J(T~ePTyFoqKdAnf;$-)%%<)F>9A4E+w-(*Ho#Gp@yds z@+7BxMPsz{>Fex~nymJtuD0G9hmra_&d5PlTYl`sOda>14?OqH>QRZSBlnPwF?Jrq zJAKrn?x9A*D)wFn7KbBMT0nBd|Ass7bWNRy)Ymn2zcPSncZQbKZW=R}G6egbfIAFO zN}^U%>CLVP$G^&r!LFTTC+Lujye8X&3i8aV5)RndzfyVQybtKt&7ivA%vkF$p(TJk zqGKA4-g(x9Yeydq#FBd@;GW4n)p9!!y@GVWb*A_M_WgSQ=KVAh^Xc_YF_1EQsv+Bb zfa6H4kpE|zHZa7fRsVNf`PxkR_ffQ(st5uo!bL&RN8V(pDo*j=+bm6}h?Iqgg&Kct zU)It^t+e#jDemNusMd;Lt4a@axcD0_Eef}DNs%~g+T+ukvmdi-UFW6_ejc(|tH9j2_jNQ!3+|Rg%2)n78zdzj& zUE-fe5!$?)B4z-iYK9XRUsRDB8$`T+{lto1(!k&y1coR$87r2|3|`hX_0jt0GY@lZ(l=N;^GSb^H;TFW9yZew~|XCf49XK0~{m#S+33Kq2>?gAa63@Iib>9D)6MOTLhkI z;9T#&nlCtcMZ4ungaB5D0IYGZ%<`}IAGA!)RnBdqhG{j>&1UFS>)#)!JLuXpWkQ{J zCddYZ9^GJyFR17i>uVtDufwQ3rH0CrnTFQ-6Re@GFz0lzB)Mnncn~7cYV2jX9p)VE z(oYgpr}x0N?i!nISzU~w__NvD<}a44enK~8#*wDUY&>tPCC#@}d?WU8^Zlu%-f8_< z!~i)wZ`J@8F~CsJ{(8S{uV9R|%QL-h^=DbL&I&sFbZGS#^tLfx^HNssV=Xt5SQh9^ zmp*%4W{jsz@1tuwm{)najFvf?W?^Ow^&7J9GU4zkCn*H+kJw<19vPOSK<25HS_tc$K`h zd&@oYzzBAOCH~h%-1HI`ojg^0y47DuWfAYyG!VSq_911;H_jUndUV4xOe_F3E+_u( z{;BiJH_gNC_rz`uFGej9kP8w+snO+IL-C&x!CP`;yNwh1EY^kWc@2sGpxORbUTB&{DdSg1c0u$ z=3YKx35I$Da^?+p0~@mA!0v3>-i~P7<|&f*2JkJs+wUuO;1haUwha}P;D{|0YHa?B zFtglm_+PYRyyyM%C@u%ft^)1<#skPCLaau}q*mv_%s?#nlOZb^nUvlYavO9js1W2@ z7kFw*qgMMBTE!%<<9#8{ickI1KatVL8={=yLP6bY{Ja9)eUolS z`RNYz_1L+-e+BQr}aJh@lO4F{y>e``Zwo)T;J@S>l?Udrhi5Mp+5YpWXp+* zgBNx&=>=nh#6QDa0BQ$QzV9PA{z|%wIpd_cbb@O>v3p;LyOj`ECb2(>`@Qek&LI&s zUxU8}>eJFjB+BDa2g#$CPx47?)z!9IUv6TPKN=c&~h*6Nwo>Qt)7dC$K!F1FRa@vVD^RJ5M7vyL(psFpUu9Hl$qUOjJKVf8<#S>o?zd%Qjx3j=Y%+zj~NJRLLx#p*7?)F66l>i z2SP&TF?dJc{^#vn>nGoS%4bNEe8(yu-7O|zfD(2KDi~}P$RYddeiKE#ldF;V4q!=Q z%G-~;$thfEC)~C>-}G$ z)z@akw-67wd67E*RC-3n#-_(844R8fl_&toOKs7EwLlDStsfqse84WZ6rCUlz$L61Mp@2+ z3n@q!jrc1NpW=z86S{Hwfm>;2Yt!uAySQDi$nvKq*A%huqs&B0eku|M<`o9xY!peC5&9m91IKN zTgu{{W*j1LJ`OdKG)HA~YGOE7q4Ot!3c}tM zP+F~FZ!xb+%qR)BOsHU-JT*9>oUK6laTQgG2_@81v);yFA|u@;qvJ4v~#tP)~kn`GYRcxfj(nkL|9y^4qQ>DjD8b zJ|lFkd?O&qEk|@K*Fg2#AbRAmH&a8O(DI8dp(%9D3JYwUcSu!yJFlIe&S&V+@wt(B zb2n&%(4&8X7BRx1DxT_=nqR+d)4XHInipC=Jjj~P7P4#Ngl=WQsMe-Tjx!t z7;_-Rrxw!1dhS$=)V!=Jx>H4Wh!2{ZH(GScSe~h0ih92Mtb^p zN#oJp93KAH@bE97zuFpUcFC9RDCaNV8w#fw3g_$n`RK<76wYY8n&(_`pU}WbAx%}V zo~aY-x9xvLKPV*{)pSu!W*&Pi#IC|*FMD(Rx=pn~D+w&6=FAn5%hz%5#YDAB*snX_FQCanws%)))>WL;1EHDl!J0JW_ zkmYF05__9cvxBJpT+~a#+hxRGZt<;t4;TMCqHYhOK0iSX#O@%fDTvzWqLw?IY}fp= z^Y?N(w?a4A(&YDPKg2PV4MUnN<`KJKIZn6Y-T)gT!SI*rvaeXoTa-g`1Idsu@_}YA z4nMY%4}V-!H?Y2Gbjun{%WSDaY7s89$QAZ9C>vy`_&?8osE^SY&7yru{qKOH;?+ZH zi*@R~grS~r-T|4jZ9bGRXa7RHnZ9C``m?!1nc^B&@Htf7!W~|dej#xG@PN6E&mS4J#ow+wn4R%*5tenL(rk)$>)s3&gSj{J;#KJl9dWX zZZq0m!Q26@kL;#S0cXD)-7S7)uYR%acNa&yLvrnHwCGNye)^6|^^ff$`EQbxq8#F! zpUPpdQ}OErEo4-Oim_go(NIL%T}vZ|MVenSPz6=f$v#Gq>ryk|FX6JCsMo z?5>ZLjV*}oQ|$%L3_CY|z!y5nI>#NcbvqqGH?&$y6~~Exa>{lp;ygU(nL#imvqe&Nt7kDW$GV|=eJKIuJ4!CsiR$| znu!lcJQN1vj2KZmOS(!5tiA)R8={ZSlwxK=61_~&(oocz&YC(%9V{KOEv4 z|8jgX%zvE5IpQeR_5Oa=(d{tVD3P9bN~G<`M`?qsTOaJG(Eogs#$+`Wxgp(_Rnv|W zvzpx0Fk4xi8fm9d|AH)1B<*4=>HP(1WwF?TRS{pfV;d4L34fJ%mtdQiiWztyX_EEmQnT9i=RuHjp2txHS$YGHf78eX#S_`y;gUX6$?^bvbp& z>)o=7ccZvBAuXhz02g8?&3}pNE#3t56UzNEk3pisIn?U;Pm=O`KekET^f*nW2YL%} zRBtqNww7hRfB)x}`_V_TI`(~++b~X&^z3PT8pviIE>rEAhc>hF6&f3pNX5bvhKaIBa#&m3pFhZ>zV)s?#UF7>``k!0a>y})(n z9%rh_#-)mfxg2P6_kJk$1U-5e#*p^A*l=aw?4u6@s9`+O{h8^yDFCb_s{YGL3SeY2 zz~yvFhfx^N#(s-r@*n>DtlI8yMOewn#r~MpD!-#t%Fh4w>Y*5!PJ|s3VMEHO4X)CF zmn*M(lV*v6!U@U3KlNn5b;lYBb`jm^$DkNOvL@Hxd&eRDv?e{I_Eg7^4oVN{GYr<; zkT#M`U1xRxXRH55SHunJk{48-YZGsU8c#DmZzna0jc-dZzCb?$;p$W*pJGqvNio84 zAUT22bPo_iv_nf}Sds9~KRm{VS(F8VCkPpbKb=A5$!mN;_dKC?}i2|57wN$ zVt8wHa%`nsRe2MKje0IL`8n?fQ{6qV!7p|NUH-f;7JUlk&XEM}v2wB`p46yrqw#ik2cMZ3$$JU@ zh2+KI4~f;Y;%?-Sr3H~$FGk|4DkFKwg;2G$w~TsHv$n7m9~JzD9&i`=Z*8tDs?13Z z6{j$^lD}&HPUUYJf9LTxm%nIY?80U7dW!j@m#U)-M!oAEpIFM{VV$NRvyDqkr-^D) z2<_*THTVlPN&!f47*cdkLGLBMXake$j4oq`!3y6!PLde(Rxpw^C*{@&p4ZT{Zn?*slmT|Sv=RcEfkY+}1fQTHVto|F2g;0~@(4~+7>`r6wQt*M z)myb%sanKWO#n#%d8t*@TMJtCjN=2bLZH?8e}8+QnG6BF-v7UU_)N|@`@Pp*d+oK? zT6^u!FFY3d)e^ZZ9>Rsk-#%puTVv_Nz3I0IX*PRz=*jsMhDHvpIBy`_38l6$)lz}O zKkmfCS#HridQ`8K`*Y$CB;LGSXUZ+^1q?`FJw?gs^ww)9u<*u?fYtCSdB?rj8xs z-Lug4qg~H<;7+yzl2fq5B$qb%((puAhE}j)fp480TxLpQv0b)=4KUBX&8gJWU<>s= z`-!^aspMMkRKMhFY{@5ON{;_%2svM+F7S2Oid^@voIAXrMJja zQh@>HWpgUfofl+HIyHp2Zyov~zGU6QS6f;L1s9VF+?DJPXij?%A%y!{Dlm_X4X6m? zMPo>e^Vq;ErUj}COG?vY=;>tJ81-F9k@XMY|AHbjAsPBmCR2zUYL>p&eKiIEMtAbgy-17?oS}^)yuCsVHiN?h9yZvIw@=YC_B)hz>x{o`HE1f2$ zl70ASaJ${m2h)h$y6WZgU&9NG0lF#B+9lev6V8~R8&DZe^h zE7ugea*gX|PYb_+(!x$xi2%uEbTqEHxB@OiGB~YL-eDp@Zadf%=1ilG9?0EOu!d)u zP%OY{GPZiHJjyiR{L*3}mReH8@OjfU(#(gw`m=F-c7I0L=4JPX4X*9adQ$GypPt{c zKW7Nd{^R`tx*YxCykzs! z`$YB>KQyLDsl54vqNxJsb|E7UG0+&XZu}KpX}58PE145=XW=@IC=^Y8)CZ@TsA)t^ z)6QywMv-&p#;F{qWe{kfdgDYm@>4su=a{kWP&;rDIi?1(t7y5`W?6V0uK~oMBiZ2H zjO^8}B@lPHpn|+=RpC}r-5!GQKKV|XIB9;y0}=@(UJZ4a4R40Nf)u-+R;N;d&2NjE zZx#*>v3qj-2{E$n8q+xceC;qqffh|`RNY0aVnO321DfRRe25e1V+zqQA{&?@_E6Tg z%>AC;F+RFtb1%mo(@c|vbwiEOlNxAKMoi@!MrUI}3EdzkTX#o7;w5|YvZ{~zq86S+PJ@NFPwx;8dz3d4`W5i$7@wy^*urSqQ~ynZ$SC^VoTq0S!(v z3mSVGdldDPJ9TbRJ~~t3{x;l5;9j%gz}MU_i74yJDKUZddH zn90J$1280;hxJd3FU)gohKb2iPD+#XSI1hwCks(M<6iY zCR}!BhvN-zPrI`}uGyK&7;vrro!P^CzaUWhC@gYL8aa5cJU3- zpW2|NS&L3r@6iR*6oI}t9(ZOM@`0b&6w{RY7kbB*@OuL1TFyIiC%n>JXVZX6YrP2X z3Hb&j@;quWW?j6W=+{_h(-tf30ea7_F{ILtuqjN9N9jEtSe#Yk2}+Y%Pq?`?eXW;g zOOcrVIg2N6glzBLu&E#fviy$Z%MRJQpTLCi?;j7`<0o8V6PiXf>D_OX({z9Y5%Iud zPf_WuHkE1E5B1KSxfdHyBzDQ9i#yl-@}^~#cY;m%qD|@5*(kqFPV-u0eoVVQk|h{t zwvZ7CHiwvWnK9%3Qp2JoBqB2etA@L)&q3SQs6M*|hrp%z=A)Bq;Q}gxYzf@m9JNfZ zW8WdG@ngbKR#{(g2O5?iIEO$&d1GNw(79`6@Gl;lgrGbhe7yNcW^ac`eTLHAdumro zHx?}jl&&ow4a6y6vhVDaC4vg(aO*A+A@}oVWD!t5WGCLLFRia$b;EbY#Si{&ef8VU zEfY)vPDa9!-%6Ecx{n}`GoY$IesG1!>@0OKB5;~F(pz(4Qc^DYwOGOv|M`bG&HrWI zx(#*Ar5}w8@_73ZVF2~m`z-;OZfJ_OO5vMB)g9q;FYi1*K@A*_u?lPV^Q^`mn`!Lt zw4Kv2P8$2S*Zs!E3G8evm*YhK%u$}jc{*>icuX#jZi~ls!!&_SYFl1nBFVEXA5P{| zmJbeLX-kJ=OxTf5^BuIF&W7hOMqxU6bL5(5=BY<&K*QgmH+19zY8yE(eA;5jQ=6e~ z`)>SuA~k;F%hHYCNML82rWNw=| zWehEJ|Fn<`dr~ZLoaPBO8CPbR6fKUC13{~1)pAas(?Al^1kpQpd*(r`zl{Dw`E_)y z>{m>`-bY}x9IKm&rKf{zZ`-2?5@B%|UoM98=AHXF#-_Y+@x(X9iMQ)J$8mCTLy4O1Qt-1cnV0>Yxx#<+X z()OkkgWB$3a5|P=|8xw5y|dSg&hdM#yDrjQ50~g<5M5<|<18(dzHW778=LIBj>IO~ z*k!Fah$4gWi9O?|?eb=$F-Zgc55EBDKRs*@px?|%;jHQl_gVeb#vZ(D{mFA>KvIYS ziF4ob>+1zi`g05gY5+r~RPU*?ZGS?H;+c%14lACG?b47}xUZzk_$AZUC2f$N@Cg#e zChow5D$SS88r_vz{Q~8QnY`t%9tmrl?7k`w6Eb*gXjR%#v+t8frIvzsVoflBgHxF8%DYtyiIJtq02}U#ueii_!aS_ zR=H@RAMcEwmI{ot(eTfH?jLtXPiJ3mqu~Jk=x}HBoK)bemrdalGtuXCMo&xy{%)gT zyk8DqrKWw?MgzBTq2$?Wp!$Z#xIdee;|ycZ=YQExT4iE?Wy-$Ub-??{(z9!X`apM>N8x~!(iF0)w+@+NF`ilh^eJ%S}(83`h7BKNP<{)TeVLEptSrHT=M z-bSRDo8qkaOttjQ6ylFxP1+k<8JrAvQ*j5p>Di4eAE2AlG*d4C8K53u6kp>BF#4{h zF(yhzkJ@~>Bec9s4nB9_;f7~eJdo%+OqL$J;VmW}Og)5e6-@2l1{m0BSdT`{srjd2 zS>QCani0OBloRLC}O+1HtR$+X!%^z{1y9>g-Qmxe+oF=1RGF+>5IY26k!ra~wNW^GO$+u zoZ8)DpT434l{>1}$TP_}row70hhIJj-O;w{ujZF~JFm2b4>W}zkAQ%}&$NZVmGBF9 zzl!G{&#lE`3!)qYEU!ZXv&_LEIF zZ{+Np?dE-^o2ATpnp7V& zG}S%H8QLt+KnDbx9pP@Nz5?cH77-Fzh*03%_u})g|7g6^3W z_3mlqg1?DQ+eWP53_zXZfl&m zUV509}h6$9C7Yu)zoE+Q(Wm_r>BG}7#Ohw9aci)=dLqr3Zs#~4i? z{A4Y*L&12BKk*BLi~=LI9QE^X;1t{y#C zq;wY~o?X2=#d4Tx;duHy=a~VZDwPxQJ0ckMGDh8LT1W{l2Tyv0dos>W^L2*9F%xX9 zc9rGc5l8LTN%QFN+z2+kp+fI*ijoyPMCyY#DT=e<2gWBk+Ldc&$|hZU0BRaeO%3i& z-)F7&P_cF=9n>2+fC9XS$Q`sfy&{q(TGU3S947PElxy0-B0$u%qE)7<=H)m)ypdOY zAHWY|I?rm|r@N5&0(ZaYhXuHB+?|Vi8GO78@AePk<2~widk9xksqj4R;;MJslLsNM zE$4VUa@-LC%Gy}D8pn!f0KockZ}9=tPgab_Ho{nXlR0g|CM>$DuzFt3+_>8O#T&cD zb9#>+O;QQYIG=u`;AtF)8JdKCx(gsyDCe_&&M_Q_@K2Mh_4aSyok}jZEI9BpQ0qpR zFHg&+KlXYUdkKawSb{O=03hpFU_8x+7H)U8Xg`kP?FQc z;?2C*$L~;esf`I4Be{7)#z01&9Ms4M3V22rXJ`mMk!eh)bmAJUo&zVojWq`QbTW?6 zkp9#l1+#az&mB}D-K6P;)FR1o`zls>ru$`z)dz|G$HGwNSW!1lOuu+bW-WJ{>&5Hc z3ySOA8FX@18Mk!rdBmCXzDR4tfYrywd2mK!eu$sV*qAL8RoTLBg7?jkq1c#>{Mz{u zGHzMrYTlOcdobNGo<{we?i_K8y=!R3p0~amem5H*(w@Y3ReoIgmKT3pGm)b=Z_y&N z&3IWa(ll)FYCaW)YT`Lf&zj)&wi>}2dm)A&*AF5FxMI-Bt?;4IjvnCy=mw;B{dd`) zUIVdLF;`&ipJZ-q@SG!5pr_Y-^SV*_hloZTC>o(jxnHy@S6*G~K_ZUD*{!X~g)_1{))OR)YdA~qJmpop@fBK1vH?#Tv!}W?l=9L$ZOq;*0^-h0lHzt+E zIgzPYC#cACc~-tWyqFU|sg_VIuffgZ1ZvL6itCTH`o)n|vkyly5ij{s{7f%iaz+zd z#Cmq{*=c9JDf+P;M#YvIepn03KDPrIdkR)0iIgJ;de4-BBhb>~_(W7#A|Bk=_Tmbf z57Jjuat)?TnO;cy*rb14C8Y}Y6PG-um=WtS>M8&cxsJ&V2CNQ`5FyPC_m1xFE`Ptl za%@vr7d5!~RTT^BmAn68)Ib0#uXgYKR~gKNrN_u!y5W+uf5^G7ZB`Ne{U{V4t^Ow8 zRleS~xm@cl87zxLg{b6k(`@#1>~}1MgFsgRk2kE`@9BwPX)18sO7PgqG_nGt+&4YplCO@IvpLLIF&w?>P=+(HZZ1(;LMtnf54nrO+ApYJs z0(@H=sr0@ahNSgn!DS365C0Kz(^_5vgJ$-5Jyyj@hit=)_7Hc3s$p%i#gAVxES~5-dPSlbXri_rvfv{=Q99!CN5fd zClaYAk-1Q)Vaz3>G2GcjQ?V8}lhjnpm5=OvL8k*p9vztyO~RzyVyf;jywsn4Jyvzg z(e}-lkhwh?ha;c7)uf@Zy(z{>iMpxPupp+@+6QD+mx#CQPL1TM@zjdsQ6r~Dj%d6w z_h@c_q_8=;=cL=I(w+*1_*O$Tg_F1rG1tBDaXrg(;Od|_zPc@ z`O7}yzSn!V+LErM6!KCK*U=sy8Q}e>!lK#+Z?j-c#%3~lHy>=t$58->z*OL!7Qq{c zy}?U*c)jooFlLvlCegBBB}gdK1y4I?t;qGIX>Yy=yMHu(0zOWsm+NZL0FdNav6p@ zxlle*dmDd23Wq&|%gQr@mtH&*ZqxvG+s(DUJcoq4y3E4T{PLXR{qxz1Jjy+zQ&vL;AQ@1OmEB` zQc8b$+Fpu%c4n)_qFqd_Y}NMIs1dyDS+$z&xfLL?(2LRc7yADu5`Oh3C=YDUybli` zd1l14-~WcqzRYyrb9;$im$BUs-)wjJuj#fIw##4f3_d-rkeQ4>;h{$A@D8T*#;h@W zm*2oHKg2d(JFe1NcKS4s&91;~D0$+^K4LZsQ|;Q#zZm*CbpOu7KgZSm!os)v=9=hmO9y>nRn_9+zL-W zp}=(ZcY6p0Scg~qt&jQrhNph|9^$`ee=97VHvRnH*;I@v8Fxs~^Ie=oN;yQM2XZ(7eG zgJ~MXJJvu}&((0X_ak;GZDaGreI|)_3w^WAjsigVkUf ziv@jA4UP3K*baBUpXtLT5No;;JGeasr)=RV1<`|o-Cj3&+WGJAC(^^R%eT&b;As)b z&8leuHT|W$D_BN0c7o+U#D`wIPFi_2_@3+r69n0dv4zIkXNnoM9%`KlX#or3MFVM` zcc#2^%T_j**nO3gf%7p8(^2kOJgn-ba&QPjc|VWsENLNPz%8gvHJ&Y)H6P~@hGW~ z?aiwV@u7+NVw&s~Aa$&1KL1cxSnnQ;{0GKQUI1#j`oV3}6hTiliM6g-4Jy_p}o%>3Y{<*Jb8$GD2BkeMIjm>(g{k8w3sA?C*-ngTHoMVA*s$LB8bC&--y z8&Kc-|CjUY=Gux1Y%q;A7=|lgh?Tfw zv&coA5;uRU(`w;_pfb%kN0VF1dN^Qll5=>E&f&yUliWHORjx4>nZ}nW%*0@PCJe2C z>Q#fd(?De8-EKR$$bDPTi0SJPiTtp;imVznx1+i>gc;r?>z()#^)ZioF2BNf(R8D@uHyghnUyQI;w|KC66Pzyn^*8JfWz-gKTB zUBIsfn^n0X$F9l)lE10kk?5nnHSMi)S9v$(tF@6~!Fc|6>th3hvHU^C=14cFvP4KQ z2Db;Z3DgAJX)q6VV9=$%$w2KHxX0)spM<{v%|q@ctv;8sDA^_cd`v)=9Ow(|7e4Zy z1oo>_ThlHyE7STg_cV#ya|y42^$0q3Eiz3+u<<_4KsVu@Hqk51)ljx@6vl*E+$mpi z$3>KSAHUnPe%asYc!lYwZ$r<8H1@1#J>oETyY~Y`&^|ebwGtZ$G>lB*B01)K3eikk z%}kI*8?7sj0OGNkbC{2z*s?|fy>kySr{LsMOri0>c+z+^HnbjDr41dc&|_@qC5B^D z+Mq&9Z0JzW5NSfI75WvMGwN^qA|3i2g?ctr{&sD-M=A7WZRAX|t$yR{C< z(|)|ltY-eQ3mFite9lmp^m-=4R~`F8%)+mnUj@J6{A$|rjNAc3qMPCCC*gL%3KYUu z>5{J}2Q8yt+)9A5VE*Z1oiu@^Frd>JeL;i?*_L#I(bb#@YYFz=z zU}}|w{Pi@?XsU&qMwI4%%YnvXEA57%lJcEnvMPVlKNlxD#O7`yRxsfG8!8g#C!*qY*zu z@w%afY`qXUo`Uv5D&BR;!s2^1S*AUVw0KeByY=+ z5oRbh$DCeCOZn~oX|;|F7~-Q1&Od3uHaLtqNwu!bD@}KCvv-KWAjp=#?=eR}sJc^s zY>^;n+_j`RCVY>uy|f2jq!aED)N&V|>vwYaW44ns>Ey^myKgDer7{sb8|-2+OAG%sQZq~0kjM`^tN@V0Wlt4JQkTcIG20vTQJ{Hjztf<)n2J(7V2H@{uSvosdk?8l7lEf}}iliQm; zc6RLP3o1|lABf1 z)EBLS1$ZNJrn&DGNYtZ9D|dr6NDS1~5e?PLBYmpd=YD5Fe=rXLOg)13s}Df|(UD>% zqKAf+5HT!gFUOgm;V`jK$k@0Vo80!1`kbbZXr}4}(f861|LPB4qaVJ72+3p&3s%G| z&(;rrsgARXhRh;}y4TC=spK7<`r#kp?SR?Nm26%cf(^7%=!ef`3x@E;WR!NwA z_SDs$OKZL*yoZoT3V2>S4zB#F`2!~4O9lyz@-7qdgmhIcW= zq~RSldA<(b7StzaK;0=1#HF3!UGJ9c@6FVORCakSkT!lF@V=1Ey+3IVHyzyI-TKVl z@P7ZnG`t&7(UfL9F4wTjsCQe;B~M#5G5cC(vBr0uDjLE50%L;JX4yK>u>!!{5JfOZ#5-Y?v{%UO&v5vo+Uh z=sUbed1kgQTT0E=~Ik z+Qp>zS6TdSc&xRL86^7{&cX(bw077Y_Aysr1H(GgX$vz~yc(E>G|2G94N2ggv4y!; z7A=XT))wYoqrlz>M7+!M1UsmOA@x3q-oq%!*up&K=RD~H?7NHAEAsZDi(PGDcHEzy z@7iS)o^uw5`K%$S`w`-&MzSJg!)@x0SlzPt=&u@Lk!tylu{}_A?FT5erVT2<6uX5 z{y-kB3i&qMW?#*f&Nexd;}%m(egqRi&g10@KAWkh-A@p{OjZ{?!UZ~{eI98f3Yp_Q zNM3K)w#S6$)6b;w8R8pI|cx1?Px-r>fQkeC(Izvbf;pC8MPT{`a3i#Mu8Pd1-!Y{y1a*`x+lO%qZEG$PV|m z|3%P#ugz3Zy>|X9LHCX14^56{Le--10>(2f?deFOpdV|fWg%oBIl$~c7od+xh4Eyx zz}o*Vs4y=6t^IGy^_3!+f50E52>h zgww71+71D2ek*7U8-q^mn*vi)33N+CW=(@9OcXoX!+Yvevl_jPY4CraZ0pT8_4=m4 zC)s*i@PsEq-QRtCbUeROw!wd*-$UN6&HFqKBRuca+8OcAifEX9gswMKngw^Vw{5QsiQOB54z*AkL(wo3Rcy-e=~;Vky4N< z+#d{`-4tTEIY+9%lI}{ ziuk&3q=3rR*}A)*aiEXya>+kPxY&E)afu+iXo#e&*x;?)y;BV9^{J@ekhdHOx}F=P zV$~RMdk>o}8#G>37d5+B%p|_n_H286=*lHx%(qKQ z!T!6aAb6yE)=b<}4aBKhVRZMfd3~1+qwhnOqlEo=1ApAVdJi9j)St~~S(WkS?=<%j zuk3PeG4MeN61rQ7Pjrwg`mChTIl7Wsk#8#UYGroMEf(Mxf>$=`6dK~4si^4u(wy*! z)R>tWqdVVg{y}N|i@j;!0X$Kpec^wU8aFdz_7eSz!m^!N)WRnBbznqfc2vGUS~zkXgNJTql@e=^T%)Q#wBC zgvT@sD=ZGr&P>o}41RWk z#?Cii@;?VJMuss(8K8X-^R!bBpluPKET&zw0Qc;LpYcEbE0xfZUX~c{V8^;IjTNv? z!ip(s;v|}AoEA>y>lp!9uxu?e*=8!+p?)@;#$~YWJY_vNo%Jkb{kfm@2V~9UIFB4G zaIBXo3hv1vrlaRWfwT3(;pf2TMf>L%Ukkf=p|9Tcr9%D4H0DnD^vwMa z4csR}>a8{rdq}xwc%3hAv`PP6B`;33;iG0Q-n9cO)5ZSF9LDMG9YivBJi2hdZ;5W< zgC%k8D|Vc7xPhh0p%&en&bpWvwP?!#%{Z=12p?kyqYVV~)+p3Hhn>w@@9mN_Dm|j8 z$4r!lE&d3f_n6PWDq%B+EcSu-7p*vy0|`g*tKe6~Z#2Jg{LbcgA-~J{UCS>`v)Cdy zO}{Z?yz(rOte-Prq1bd7?Cr>+AslZs#AcROe%uh7<2A%j%%LF-@lkP>J!3CmCxPf$ z?{7iRWXt#F{+d6cXa4;8P&FFl96+hwGsGvfmGFxO)Pg{7#r;NkeR9T9>t~zE(&9xG zRdr2ic#x=>PsPL!b2xOZho+Lm3)nlPB8GldT~n-EwauCbp|Z1-$tay!BbCd<0I83t z)K!|22!Hfvn*KnvbT=}8n38PDv)9bMsnza>Gt_E>Y4Q!Uf;+62f2IAW)%!~r)0V=z-Q0(_IWP;N#2;IVV5=Nj$XI7C=`2& zzyP)H))I(WAHMd}*Id3xHC;)NjSF*f6@IA=H^j{k-&II>1K~E=F%N-7qs*s4nZsdV zvZh!u$5r-LrRMN__Ny{pjz1~5SF!mX;CFBpM$UP z$LTu_F598i;iKL9nd~DD7azdV7TuL$1zLSppx#~W{kDIXq54&3s2bGC1;i(0{Kil@ zSxe6ZBLBlfb?;t7)$c);o?dE@IcZXrSq~&5ups_a5P!3uAa0%Me1f>eM%~S2K;8>P znRV$k5@yz=qYtD*mbY=5e?wuoumWVqi|QVxKmGN`h(nHHxZfnNSsGUBMTB^nUPR}A z%L~Sq?yp;b-Bk}47t$W=eKdooW>Vp z!y7?VW*Ej}EW>!j*D;Loz*IFPqJ}W32d5|X$PA`DE@a5)a}(o8nSt*9q^iZ?SkP@3 zOzZWhT7QP>&p?(q;9#cSpk556L*8U1o!>#32xsDfb$Zdde79Z%{8@St@K57Kz<;yY z%uvN$L{k;iMv!qPqzj$adOyd&gMpbw3YDi657-pbb8LzmY>Mfmc-Bu5wJGNKDbBVj z=8)ncKgGp1#YApXP%XnqLD3|*g9P3f#p(uDq9$dc0uKPpaub!&fTx$v41Zau`Jb^h zO^;jr#8>an%=2%}@4x0fw*^&|ea7SUfOzzpP2#kI4V&xBlYHp? zOmcH$P4_v-S$mPxWPzze$vtDFC4vlDDHxIFC1xne$$flYBBHMfzS1jI zZBNtb0@gjDQGlp@4vyicjn55t(VZhd$4?tsypz%EeljVVL{dJQ?O1 z{`xAt#z*~`N97LW+ji6cZTagE@`9Usr^m~e7d&9cYj-!s>rURycwMtk-q$}*Y}_du z-dA@`LEPYdJFU;n(cgX9p6@+OU;P$xF5cE#{WhPqX*p+vog0mp+ivllA@(bw#KHfw%W@PamNM>Fe)& zr4j0LY4_rRC*gU8P%BN;DNHn{xv?;%V9862=B>0`cFlo~A`LmRP9^ z7pA*VTA;D~maNcOzorXU77FMhzT0xug*_#YiE)aKJ>96Tj5fx${hdWarFDx3PWjYd zb{YfzvXkMILPqGb*89ll=T!RdD4qN5%?O8RbGR&RoI60PV4i8X5>`!M6@1kuGz+9> zYkTPK{y7Ox6Vw;vu@hM9NsCCPvrXH3dv}|BS|Il7$#v9_Y2SmIbYyQxx36H$I0WzU zzz`KwHMSW4yz#&>YI8kB?ugzE05Gixn{k2-ijSQfs@}*+^LU_`REY_uKqLC~W}l){ zeZ8exReX-(hbcZD_{Xp4#F3qyaGDSGTe4i%it)g^IVA3uo#0DqR#WdK0Yq8L_IeU& zR{XI$yw2Z<&-81fpEztw`?E@WGCRRzeuA?)OZ&NB+BB7Rdv@Ym{KQAv(q@w|dBq;! z?_*=GRy}i>m+8oHYVoH+f_Px2vJFeea5KhQ@2@uIa>bOUV+@ld3tu{iI}n5OkKb}dzJG=;^=PT1$R=2 zm42t?B@%11#D06t%#Zh4=zr~co4U}RIYmtg2 z-s$!^PUf^e*=q;W`y}hqxcOHaASnF-qVDm)!AqqZ=QO#DFE2_wKxVDk6`|*Ij+9q> z62lvyfZ86~`8LjtImmt{UJ{CM4)Efv9#5B%AbIe}#_Izdb*H#L+@&_PE7xtqR3$by75*WBbXz)gh2pn;ePMlUMsa-% z0a5JcGTdTY$y~_2z6O!$x}S0{0`4}J;m^6)UyZyyO(+ddgp zRC)*Se<%Hh-|EtZfB#rr7{?^CXJ`MvREv)SRzH#M2X>o;%V^Z){_njtOrE+l^6E7G#8ZuYC4L{5Af}{QSYeTNR z9f7UvfZ#H4Pi5YG0@L8QN*FJaH(0L+*M7zzqmao-RyLT)Qt(BPGo97#;US>Fb(z?J zVzo2Y{JBNJkNTJ~9-eW}eQf%W!OfCR2B)rI4e3EI^eg4}1Ah1UKZQ-_Cpwt^=kGt# z1kkwEaog)<#?s+U5Qp0F6-Rv8duK0?{w6ST4q!Oulg@d?=k0ewqFEZh-CCKgib1%T zlQ8tpUwtX<%Z~#&$tBT_FP-Ken^EZ64iS=466WvOik`G0>7=JS@g*j{vsrdQ|N2Ed zyJ5dKz>hZ4fIWAs8*t3ql_lA8xv~Co#pAN@oOMptJ;q~xkkK}@5Uqs>0fWv2dn}T{ z*v$_T)E=LZn+i-^B#=I5PNX`MTJ*Y%EX&IHbGfsiY0y2qgyM4tl|Ox{-rUzde^}m! z%Mg3tMgW;P8WMZNO2>PF($ZU5E~)bp;$bJD2wAvN413lM#3t)G=W2&%S^0unoA+qA zZ7)qn#vkbuA4hxd`GNMxo4JY2YRlB%B@}Bq6IJAYtTWFWCbY8?SAUmIuw^uzvz_5S z<*YHGmDY`H*YS9wX^(Dw(|EKr|0lcfjOoJO}>pgy_}w^hQ%5jXQo=w zOBOOf1iRKRc5a-k!)Sr3CiiB3Fm-9?b>CnVwvUP*xoyvi#RdD~*dXgBk8-@^;Fh&fT|(KHt;+|y;(tGj*Cp!JVTK*u9pTK@r5^!4G9t)Z&< z(;{#Arz-YLw2Y1QUOD~1OiAWYLguS;y-6Phly!`FZ$w{}Sd?zVvd1_>emPR0HJv{@ z%tb{K091{7^^+kv_=*(-yy5*-`(|&Nc^2xh)4&GzMLLBj*HbGocDl|*;U{m_ykTLz=uyLbhMQgmLL zv#=Qtvm6}{Y0JaPYr3cjR;)p`leCf?7%VZ&jP3&(L(w0}ZmLG*s!K=OE?vfP4s|Kc zQ(cJ%jxbK8G3PbSrL}TxaQe&;660k?Mr4~BtW53E9__w3et9~Wuo{^!sc-#<9Im&7 z2Sn$T7DeEOIQmIkp?BxFWM*IbLmkiinIJa#=abV_VAp@PMvxcWHL!C28P^~(3=OT zqJd>%i+SEPXtSQN$zDTj;+BxxWE^m$nTG~WTws}rM+*+)=+E>9uy9%fligawDGW>L z2A##r*oRiGuBG)AP!M$qy#}-Q>_KImi~QwcLlM*jz=}OC6CgTjXVSp(4FI`|)SAaQ z&i0)g?GyvT$RIR!3m%?xWajob>5ulJCy^pMbpDLS_|oE7F5DbACS2%QnW`B+Jml1Y z%}8*tAAScU(c;m9NO(?Z-^k%=K~Gwc3T&Fi$|$S#E~KI}#bYJ~Q*)1s4ZzL$H1Q9b z<{xu5&Eg9f80kf7p&RS71PKMI9N!P7wIS~;Avqwd$uxOK&F~7Eye+s4b+1_Ld&JYx z_@9Hwuz{E9{Ux!iqaOIsK+_A?dc7TsdX?rWVi7siqTrp|L?jxxifkhD#Nc7#4?+Yp z|9)j+O=vnvBCdKlafY-ta0HdxmUyM6e*ZpVMSG{3Rt!wH;smd`uWiMn=4o01sZ!1H zz!}se3Z+?pb!V+=6C@Be`>4)qH&oD48&PZN8{w7a$D>lv@i z==Il^Cc+d;s08llg3{c`NUM!wmT(@&QOE3!WrO_gzUI}K15F;|5<$;zW4lLhtQoeT zSICv>BeE1vq#t+I_515o7p=;wD^2+Qr%%62nfc z_a1C9<2@Ik7=Ffk9ok(r>QCMfYWKoJy#YlAB;G0JX`tQ5j``3}J7FEFjV~0f zES2U7EOuzITt#LrmK(siD#5`nmgoB5X(RYb6RZ(oz4$o%Q;s;$EilY0Hz&JItsCuN z#X~8;7~S<{$T@YnnbheOqmw>GNA*{`jE?9t`q9tyBh`gkMMovxSL^+CaeQyv`Up=o z0J}mn>C@|?y7Pih!|pZXXM~I!Ltob-;h(*>#2m8(^=bhE)W{G`_0<5eu?oAIw(!Y! z;N~Da+*!I`eWu&>&X(yD^}%}QD)`K zBw3s*ucE0HToD&}$&5+8+qx>(tO{vY4F;1s`xhN`-+Kn$l4Anz-x&lg`W1mVfio~m zcQGkOQHm}yBD{RK^5h6K@)}cgz12|pkqn3JB7q@F1@@9bqF3H zA>n%~jAUnmiR2v3E8cc)3Kz+D3||82ssYbhA{j6KW*m(C*_i6&6bg3=`pjldRvII{ zZAe-w-vT9m?gfb2RU02uhSmiiQt# znslujhvSBp&6@$Vw9tv=Jk0goGgE=tquI zBYjLoCL%eXIlu&8Y9$`a|^h-F=h7Pu& z#j1I5GJkQy!DV(IkkD5r|F5`_(YX5rx!gzNJXW5ygLHCnr$FTXF zBng%^=*aPtMwr2grB^-(z`8v-Xfeq}%R4nUaAep-NH7Z978cuvO@#iW*)~{1eb&IC z8Qyv}H>JrZ6xj_?oaubJf#f8{`#(q+VR{{55 zn72d|c}~-xX%a8tsWQepF1o9m(|kWc%z`qn_9-pqlget{79I5Z>(fG8r&&md+nwYB zlV~7`aN$+mHXj*dChbEeZDdNV`&EPcsjefMgmvOe-knbv)US<>`me1bp@(@+cS}7_ z;)&5s1#{)4_W_qq@mk*dHUs7qvu{F$*SM6?YXCJR&T6}(f^9o(Pwy6bkz5^2z-Zl z8}rrG4zGhJqGo~bukYEe!jK`MbyvdAA1LQkYTkinQ>;z4(>%nyr+XaILH*C6D6${F z$97t-K|n&igMAgN{y)F5tZK znc&Om775mQxBbZ=!O784_x|1XqL=B#W^b731tT919Pjs{e=tSw8TlVP$;eB<4l+l& zbq@bEbVFOZBn_?nSn_yAs?cd(#dq}P;ixa3;|*Apd9x@YGiK|&eA7bfygWT-hnxLb z)_DDW$-c(xs&6q~gSD42<3&%OdfWE2EYFTth^IeZ7yct_ydV$tY>2Nw?QI6kN|fz@ z4Wg%l1|yYh0O7~@_(gy7u;%LI^Zo!G(BNy4+aC;2iJbFLiIKWs^ps%>(%jxk%7Y+r zRKQRShF%my^FTyT%hC&n84;hTqCKx3oPz%>vL#oi*}|H$vdE{+Ur;E%)UJUQWaSnq zC}ic!weI#>_rqHE9h&AeH8L%CXy!$UvQW@o>iRJHT zRW#8fe4dEq(MYxYYc54B2QaTQ1Q7pOpc>G=A@ySNdNVtAg7l)3E9ZYNE7?MuY(lO3 zzUbswJ4Lv^;g4pDoD>~3|GzEbe896W@ zh9+8nJ@_8sI2O0kbo6nWCG|Ixt-A_J6UYtT&kW_a_n@UG+u*dnpS%8jkIh!$UHj<1 z=G$d^%{P-_5Bm6LT4(1QU>p0E1>2I8%!)d^%{=}2HrVg4p^vz%_xfzNQ=`FdfqcrS zSvGzgjiB%ShTv$Tq2^mb;+S- zZfVM-=ay{l41erzO03e$-Gw*0Ie;h?*zi3jmi1~olNnO>w*W(dlKr+pjl`oxy8LK_ z>QZh&O8Ac&{{QlJ1uGD$WuCY7qo8LL!ABJ|zsceZ=b76Jcm?`Wcb7Hfm zM^oJ-=P&enuY+xljhQCjd+~i(8>b0}|Ew{R7r0~Xae7K7Yxrt&yF_?f$SwNu8$)uu z?=Aqw#zGwXzoJG3jUfm~+thB+6v70%3c+r;p)iXC6L(UDS8i^C-o_w>Cq_pdO-jv% zAAKq8*z7&SlS!r3^K}4fCY2FDP}Ql30>&1%jU7o*If)NcU~G2g`*psfqu$tT%Ny;N zcV%aJzfG5?X1EiEdsAUZt>co&k#yuKvbK#a1qE`vS@Si=>40E>gu$1NnU;WBHKrxp z^FjS^s8=iJsWLuduiX+UiHCZ5ck1HnSizY@sjDNSqfRzW8|3}|-?pn8c=}x()Y-Ix zGUcF!+IHi^tmli8wG|ymsQ0&deyfDknMP%ep@Htu&7_I#Wy=li_K=Kq)l`EC^FFTKmZK`ro zeep&*)dAjWKl(F0=vO54 zRvis7iXZan#dHaDD#mB$6AIE=;F2!5EM-!oxDtl^nm8~ljI}T6WCGDJ1cw%ZVWwZVT|tXfhx@eE!0I;>%3JTX#yDv->Y^wyUmY)GMMo(XUm8l`yj)Fm)c~0L+lc0 z!VXEIx$)y?7YN@GG)l&NxJ|@eN+iPdR;u2qV`2AW^KEQ}iLLNeFmiUwtF$u|AJUQ+ zyJTe6vPVm1VD~bsqTaoExa?oJ!7?}{GZ@fOty!gM{R4eSxI4Y+Qw_P+O#F^FWCtHr z%d{m7mw1QhD;_v>dsXG)Z$~*-@y;eeG=hl}wZCU3{yja(|Fp6tcR3ESA%&%B7 z6VDrXB3JOPy-@3cz!ovP%z-w+&(t6CZ#(oWuKqq1JIvR{$4;&nr~Bnl-Q{dtB@7df zSM_W$*cB;L@=X`X+GJZgtPjOv6dsEzh1w7^X6UhJ@8LW4tbF#hMavm=UUIzf*d3{= zn{`u=dvkFT)zY|P?~W;2&~9eETkAEQA(*tuVP1{=mC?bhPIoRyHRl?0N$p(Gs-Gf?8JmUFBjDK`5Vw4o3C6OUj1wA&wFCXm9{KAZb_j8_BJU{iX zcG=+u&4flhI_j;B&|qyFHu4!h${T6&baFC&voA8=WCgj z{M~7)Ga$nMZ9I@yfL+$*zY`!c>-lZb_SjJX!xUlBC}E{#nQq;$Z&~ir~E{=oD^0AFzDPaAXQo~vzU5L zhku5&+Pm-`iwL`vARah>Q$Ur^wCOi^Z(peyA|)hqZ59cFB+v>y*yIcMcwSUBd76}h zHAMF#+UuE)Gh=WZqaQE2Oanwg75)J5T5d$}M#0J4t)-*WuuU{2r2-e8dt?rsXBQH9 z^C`1BduP&?hIm2$8RnCSf`iqS&0bF;s2_(dz!<-+4X#-lC97A{gYo)&?=s_zb}iV% z{TGxi1Zv4H{@>YRjbI`CVNBG6m&8`FY8s)|iRK|e~RA)hM) z>^<)Vuk)T5(dZRP+~PEv|Kruu>lcxR&9A^gF562?qIr%9*xM4#dX z*Ag6zpOKfY*HlPNJ5&ArQ3d@(agH+}g5n_aYb3k0Hb;kIQwtHE7K?ay4{>>7a(|gv zgo_M6>LM4g_7)X5C(4ho(Z8rv`NoLYnL@DA)%>B`P++zMWgy#=YU$taHt;Bxb*$TF zwXj2sa?u_K)j@N{ zyW1MvUC#sN9QR+c@SR`pZt`Ydo?faV^u-cZGn+GN4QV(URTgeeuCnquh^qRXCaI`3 zq_3E$FiTP)WEr)_^;uNaI+yN$ITqJRamL#y7hliy?yKG>m!(&nJsKh=-;(#1|EVE{ z5B*;?BUz99Ugff`Iwjf6sx1!^eU7ZAtuJ}4F= zA?_l4eRR}=?L%^M=bz;5_pxO!s(6mq*1J#@VDP~`f2=DY;i8v}<{R69b$s1vzBEU~ zG7$!=FD68+iBGSI>mbBX>we}W)8^zXt$243%7mIq5uLz-5&!13(CDM!+rI%`v-TRe z^DkvN%s}ddiP?}kk}t_5d*X^Q6(}`vX={dF`m#c!duS~_E#R7G0L@vUH0OL_aLS(8 z{nAVE;0q%Un9U83tx+$yA|Cv0=4&ip8%OrEaV_~P8g~tebYFHdMe}+*uczo0Y0EP; zyfp3_<aP$WW|@VSUFk{W*ykOj9a|cbUb&ke#hrg`){AJh9UrekYbRxZ?TRw}n z=LTb^mIU2X%eFhk<4aq&^l$Abnb9)xa_5?s&z<*MwmVbWw>$fdFAXldyexMMng{pP zl83f|b&)=U2g2V(+ly@prT?Rl+0 zE>awnXSn(KsrF>IR0|<$edX9Pl~?e=Tm5qee>E^C=R0G|*rfz3PcMsZ&Hc`VG72uf zp>(@5Il`Y~SJ9{0rI}9BtQM~uHPtzj-nu;K9QQeCHs91Oe2`PVN{w#u{=p7f4HZPT zncRZJ!ta-)PT7`f_4-D)oRYVK0=H##wL@L~Lv}{>(01;W)-8S2zuSmbN$Ov#*E70h zpn=#fib>Tfd95?GAO^D*bjn-2sVdAluV4-VG^9g;DsX4(`#mdXmn?ig2dw5LHoL?d zM%r2yTh9D%dVISI0~4Hbkb*Lg-H7dn(@(%S0Pkz+bzdiXI{thoauAu?P< z=|T6dMfV(VL{74||FMw|b-UHer_0sLZ8kXA{+Qa?au_d4jjdh>2)f}H4 zqPn>2#J!=!T{T#!8|^5b)kAl&<|Mnfev%)3f1q1e63knkw=EcbDODH0Y7h)VPV}o> zC;nFw*|NBpzH@jDQnY#-_V1SCl(*NpD}@@X8N-c?%4d0#iff&^<%EIDz`_;}uFjdTj!TjT8!-1^rnLV%)sh8buM3D0_>DSmbJldq!kU)2$`p);jQoI_nckg4iL8O?j1hoAx-5- z=%JhzCnpkwI*%o5?%UB}VB7JEPJg1ws}C;B5rOa^;>yx0^jF{Ddyn^sLuI5fp2J__N*I?_e9>JZsIA7hG7)b54d8^$uyyk5RUa{tC20iik|DOiW zestdrzQ_;v8=U&a2Gd$WY>x&nZ2d6^R6Ar1Wa1amck=RNGzFbc60%XVU70TSbZ%?#ekXCujE2L3hPq(WFs1Eq!xlA4t~XGYc;xqpP1569Zz_)*8FWV%TXwTxEX&}iAHprqMl7c5 zyE+HVymsPL_J$TaeK|sCa4}hJm29`r>WmA)yMCeA$U)B15jD=z4K+>pxz_;2gMWSS z%kYtnyUvfy;3|z`a}E5+L4(EC8b-JVWUY_&W6NH+!dW^x7hJSBi0SM3-O@Oyn7weY zyItIYT;%HLt^v*>xfyM|DQ`r$uaEg72bpq%3#S#U!Wpe|44)e8SyN1j`JELNWL1>^ zbro^TX?Nj#AA|FL*`VU=i`6q`MP>WKt>S|#+k@PuR@0ao8acpiwE*9_Ij^O%)l^^E z8jRJzL5GUdky)dGhl7!WqN~{=gt8#xk49F1a_Enec0x}xobeg{G#G%&^03j``n5y` zOH>dqIGh`IeW7a^!k%vN(~7+L7f8bch=zZym-X_toC7GXtw!Q+9y+a#NQWGTpimzI zMeqS+=)48aS(+;vQx4`NsCH2*~JOM|&1mOG1nVctyvPE@B?G5#E~S-0~1kPk}m-iUvJh`pVzb59Xr zp-Wx~7i6h)vC5y{p~tGZ!%y*zn^HTdp{!8dNBAra2fGsw|O`+fcOCbY2iXk$x(2wmSV-F0ba z37_qedVFk*Wf*O25NSMnC7Y+# zkMe`je+;b6+u{wfDcN$@y3lk#A>U(8!W^o-RbSxMMA2U|bx8;rhp3OwR5-1TvKS?kvR zt-DG{nYWJZ=lD`mD$bDJQ`wA8VTXMDXE%(J;-H@O^V1iDsTaLJ(H+2&u&yB2dH4F?@6kSCLDN=VzygU+>IP&GVFdQB z77^A9K4&f86A=!wDbtA1htye!fQ_CIVKyae6d7j=2U;(L*u~aWyLAn>Mx7DQYj>A3 z$Qfh+Jm8AK1JDMXQSVOoWh{B^d22G5;7qPd_xZCMpgrro7fjpMCAPDfP}^^B)!44r z*j}pBi+hjlc!Ydi$5wWRCuEJSO1{jN>|MxHw%F(Jtdlw4uNho=nOH=Xk#*_ehW+&W zogVcd(vBcnoHC879ZLXUJ1-H2oeBHwe8Zssq4((#Pn-#XQEQ)4XTiwFc)Hzd-5$Ye z3|6+#RDZb74fw;|;f=$#)xEZah}Mtu0aoofF-eJhpRq3!-aN$=*!) z^{{H#QU9HmdMJ)Gb-i|;?utY{nuTb~ztNuzxOY1{@*cB~4gEam-nQ`UX+`#S=Et4n zL67&~o}#6%B>O$yE!p?+ykxJ(yC=IpUYP7Q>}7UN|IW%5PG?&}wk0Opie$efWLrYE zC1hKoY%Q!ghc6$trfF^D`lc1({c(qm%iiK(^+xBmYtS_~w@+hOcC>bjob_P0@FDKG zB}A7eyY|F^Ff^a=sN>RJkTUQ$Ry_A8$}j|dl|kW z(UZUj3&Ycp4Y?cL3DnTq`e9G9_RP+@1%n@F(aW%?AY*Gn(zoc=Q>t5?TUMDEXAK_anxG52gZe1X41yZG@-#cuR7u~|=$U%JFcvzkLdfkvs zb?!^GLy*;RUED>cg7fOC*HAtshELYAQ5@XKg=ZrNF`Zd4N+s+zPrvS8?p62VbV`$3 z@@T{Gm0~l2vQq-B$WW8%sJiM+PP1%bZOR>0*Ri3aCXAcx-b*HPr7LKVbDLPU`GvG4 zVH^y>VUA+dWUC4QDHs&&sRZE&}{=aslu z6j$zurV8hm$H(q$_3~0JZu`#7@sVv={FIvvx^LCGZ-+3`j%?@Rry1hlmlh zhTzV3TR+T;=l>|LrFO_>6Ige}D>+-g;I!PEJKuFzD7Md!@>UON<*xYyYp-ZmoJqHH zt9iI@5^;2EGH>Tr_runY^O{o&?nAa&D)wi1ZT05ahewb;o?60NX{0}I#ns;IzLB1F zBmQ0M)UHbAnXxf@RDlA{sZ86R3P!+yGz0oK^Lqvf#RFLWBfRE-w^U@$PXv@PdHC{66)%dol?D`F{W3KiZi- z-chfrUcGwt>ecIAFuu39;G!%oe?8N{wAYyvVyLWFW@cv|nD(N2I}NMwPJKA)bAQG- zW@_7S>7)gl)WA?L%t-%P@6pE9Hv*eH*D+c5)i*B7=7{A?m1Wp=E$~}1?0+koQ@3fk z{c`=>R8lu8e%}A~+CM+}HuR zcd@nxr|as)u;WFs3SSs252sFT*puun*j_nfeHHOF*D%(n^j=YsQnjMcOJCq@@J)KB zqWVUDmtrg0MGG2BcPOFb(JrWORFa_G{F1d;jO5C3QlcVUMSVt+tgGY(TDt4$V0uwj zv`3&NQ>&A$dEd&jc6rQ5mIatXC(T?Z&5z)PG;>MAYDkkg_`-uR78qCy>}&Q@_v9+t zBsTh7rVRHspj-!D@->=Cd}R7GlM2)N4n2(t_L(iWoTQ(~@7`Nx=`%$WEL7Q4di6Tl zf3_sw=p;WyKS{kG0Bt3CQT-7a`a$0P^Lwh#kSp=~u*35iSjnb@S>l&758u*D?{P$t zR${bt25Oq4;IiH!d=rXRXm3s8$YWpQ%dOi_E&G%;Z|Tmw1^3ML;-1+MjcRL>nam`< zTpx`h7?Uc3%()(;dLFt|1ULD0wRhFayvoXdjz?xw7xCPn%JUtg{J%Mw{vdO$sN~@W zdr>n$Ab1z{W-h*LmBI~{gCwdfXb>6O$TnMl?lIt(ZMeBzuiyZz*Sh z6(M*y9rV8XKz%Z++r{EFB~}J>;>jXCcX(yZ+hc6T!eBB_ka?-k>fP!t4uG|PxLTIx z-wqr&bAc?gKmJR?|IBF6)&!G3pOeYDNN`0xzf~#gJ+VCwZxY->yhir=4B2S}@SjL{ z1g6fdVK7{r@GP6-z6{iVzz`$6K^)7)EZO!-fHTl?rnWLes$18|_2wX#n+z(z&v*1-Q2?+Jia_+{ z&GOLrK60S@+C^+3-}Jn6djwd;4nu9RpV}xCtCPLL9^v)nYCixRL$|zvFh1;5KegsS zcYj~L<`UJTIi^<1=EmwMEzNd!!|i-RetAz z!{?n_mH2~pi6N9$Cu`Zhb&iclGzC)GqD7i5@L|@Wc9R6HCwB<3l)Akr zju{9CDP-|e2q$rtmr361X08S4NsWJ(8a>6*Ppu5R)avR;)BXdjp|g8xv&H==wZ4(pd9}&Gl(Z9r| z|8PbB0--+$QRtGUL;t_gn-u*^A+l=s93lVd0&xfQx4V!^IFGCr0xpB$ttM(KBZ?E0 zIMD*{@F1jPAc5iwSgMWpmbb9y$<(P(27yauzQK4DSYS(urCADUPr~-}c5kipsuJWw*vSEqIfi zy+EtGMzWXZ7~^vohWe{fPxcJ-nJ=x??))QU*1OY0OK`2cpJ!^Z9#zQ$+mxJbmpnwP z>%y&(|(WdYhb*u173fqrrV{@%Na*y(s~l%ABK{-$RnB`5yt z+{KlobR0*&8YwaAhItHjlT|SvMbgGKCS!-uS$xpd9woFU(-ej}ioVp&bycmZ;6Ez+ zg@~9XXSmC`&HF2i{qZ>|2asHH$2ZIx`+FI0hT(1zXc?-lR6Fq>fZ2no`SUQQ7`F#| z^IMtna_oKOOBc)j>U8m=+XbiiM?tz!3cG4pEXK7rRF30Zd2Xmc%SzXJq+s94(t1q5 zKP(FuFs(;DR`M9 zZ)TV$S#NTptXXU`Wo-hOqJOesobZ1Eqr}bf8Q(@zE0yo^@{B6uTl%n8_lgK$F`%&J zKy3aP{>5ij^>H}a-ajP9!+U^>eYvk=zk1_lY*wJMY;LCO2CiGUT&~o_e>^9-L_te( zB_+50l#-H^V8K%RaSLT8o2%u2ZSTuPRLCqY7bYQ=oskr1N%dz0>i5y@7j)k5$(1EX zU29Dexs{r1|414V%Rb?>IAJdpv4iJ-3dn^rZOGe{B2MEFwOmXY;;vVoWB%d|K}m}+ zg*wgaA(GhmX=<&K*3O}CctGr;j(h!GB;)`QmRERh#_$dr&;o|)hkt4$Zzk372(NV*zo9a#y2rL zUW1V$r%(-DFw*w`Js~|`&vY5Luk6E*FJ&7Cm?EI12==TV%oChhfgE^@sz-K6OwEX8 zzbg*}%X}t5LeE_Nr9ad49@il*mn%^`2<5GfR_dqSCo2+;HAQmbE6x5r`^00Vst?bmAZ85onD{U` z@!`D0hm#W@vJ)TnK9*3=?!<@giOD)AK6Fcb*q@kZMdFu3ze_0EotUgN@!{RXWN#%t zyq5T|E%9M<;=_i-hx){aey;mX8^GZG)l z5+C{}K8#3w$V`05O?>!OViWF9eCQm1h!5ZWUB9P?Jj3-Lt}R@OZg+8~ol2AN7JHGM+K3(ol^OpWVl%WQ%5s76_?Jt|U_bBak zjyNvhK~Tb&>`&k58p=NNBuU(PW>cp^qVR0QU{#eji-0lSo{rIF z93Y9}#p5+%uQJblgb>xkCC@dI?gTqsft4=T>?hxQ$al&9+GJ4Gl~)z03d-O|-TvX8 zg7+%I}S$0AVZbQ@6DDQooU4|;~4O1%*!=4+O)y$82BVf5hm<`A`P;_W9*7$ztNW- zW07BG5puwlLbUO!pzVA?TOwZBnbQ}1?R}IjRJ(so|1i>9!4>75kN=X7|7rhm2p{9* z7;BfCYnS)5WHH)jIlvT-@)pR)8{2<;hmVSUb`iRy^0iO3#wy}F=?VqyKRzf$z|?+W z>P?q|wyqLfDxCR;vwFKCF@=iRS%l_d8DBf&xx6g;)`Qv^FQ{EYUZaJrA3?Q;%3E}h z``h#OKud4IL3Tah6q?_HfANh?%I}bMqWd`V+5Ga;B(+atLe4i;+K@dY`dXVjYCWfa z$i@g#tt3@>xZ5=i@3Z!D!2FM-$2oczC0@6s2H$ea)rCD16h3V4{3&+6aZ>tfJ9WLJ zZqDj1q}i}el;6VVuK@|DhWTD5(z)iEU%@1j#_Tied)YK$V@b=mP^aZv z=oB7|^Sui*j2CH0O`rUR4Uhe#kElYfb&88j$59DGs<^}TJjLQ+Vc^rzqsS`9XFN+* zmU=a{*;L$h2218dhJ66ruwBO1lUvL95IWmsERZsAZlIk0(KYLk-_-XzJ1rtps(h|B z`9w)>G^kyttjlRelPUOC#xLi~3m*53sV6>p|w0xkc*>){E)Bhfyx= z>BUzZ1EjR)2gWgSv6L&giEwPOYhQV8l79wn7udAT+ax%dn)GQwO#$hXa(4e(h{sF- zNUfbVw6HVeM1D#;RRygm|L#Ene2b~h?@|?sn~;s4KmE_jdR)pWu>X~C zQPvD~CN5UMIfJqVK?0@hY5^@GiUc!}X^cu1&MrQBs%V|mpao^lWY@AFUW;;Xjohy+ z5^i>EvC~AMq*jX+U3XR))Ac3Sz9s0D&z>^lLgUj@Sn4DGT`@kqI9fRK z)xhXa?`IBXX^70jeg`kgoKM;9;`2^oz-%I!3VzHPL(cn%w{E|RLg18dB-#G5QhwX5 z$V^frY(-wT2do+gW7*f8fRIrRc&@w6Ltj=h(jwgMUDIOc6kcTn?uYn5s2up3n)IjU^!M<`i5~K*B$aZb_I65uap+`eGI2_5TgdfTK^c9fixtgXB_>?+9X1Lp%oF^{MXp%( zXT4E4!=rn3lO6pn;BV7?*$}>7@1wR{U!RB7tv);vomDf>JrgSIHhzd+*h++LW|uuE z*+%9w_cCVGjjIf~i(}bm0=s3a5fwZw9fd{(8DJvE z$Qf$83$`g;_`nxhmSb+*(OU9TxS@uo3VOH{MgAj#{L`wk9K4$Fk4sd8|hK zw!mt{C5er=@xMu~+6$(*JQN?!{*OAXI5VBnXbbI7Y-;i7k!@K$-)V~qVPTB=^sYEW zqrc@omi^Zr$AU=f2%>l1NrdRfyXkDi)uOcHfatL9KqUL@z|qAC5M8DqI^~!UEgjqe zj>flvXzXC(cNm!;u0Ae^u8%{+#6TcwB%e*S(Qk4e%MN873rEp2I)G>`)Am-XeRP+? z(S^qc(c69pN1~Sk(eMO_sue{0wPQhaSw|3^)&`<0Er?#c^SE&2i$jE^MId^Fd=8Ep zxsPT4{Fo3m<#&Lid*4pP(XQ1BM?;SfqBZjz94V1#jLJ-as8T`nYWHK|XjDfKCAWd- zA`7Bl-Emwv%8NsU1x0YQn0yY7p5i{1?KvhykDcBDj^@0Th@+S9R5S0Y3kIn9&4wt$k4qxZYw5XrIy5M7!8(XY6VW%oTM zM9WX>07q4AAbR=^g`kScHUy&I zlFz}>_uR*_uRSJ2oANrq(fw~E;;0LUm;=$UDmXgdno(hsw;;M$L9|tAY?rWq_dhbLXzFB5DVEJ?8f#4{-X%g{ z)2)y4tsj@oK%;gkP?8lWvaZ{a27HYI<%dL2wwc2P6qHA*L3w;Xq>!_D<#8crl7OOS zH!M~=po|`+Kv|G}EUdhh+W}VoxHAzeH(H>ar$G5htTfMdu#yWXK4Wwf`5ff@nfqAw z$DNJ^(YTHv>fHvS&sQnr{Pk8r&QC&gRve;1t;iWwtU$S3fpRoDz0kh{CJyaLq|>0k z%S<-&R0YaUD*1oLFk{h4tcNyMM*oA%#6M3v7FLEUP}*_t;q8fZde`dVzpOhhtmFzP zihECQ1!dF-1&UXJax|>`v0n#RnJ1vcxp%4sN;d_{Ph#c1>m00{AuJOb{T%r$UpSB&*tzcpgjSRfd+$@i;Q?vupRqJQilec%g_?6&lq`fs+Y1 zN0+}h0nQQfw+wJvp{cTfD2YhcR;l`J6tUq`-b(K<;@2@#7vo z3d-o~6e#5il%rwg4<~himAL{+ykCtNp|H|bf%21Bx%V0eD?JpQM$KOCaE>wRP0EO6 zKNA~t4CM4u5Vb?jp3RBK$$DHNXAvbIkNzhRDdecbGK^6d0)@lNuP+mb`X3Xb+MEu0 z*ZFNAy1!Q8=u=8N4v6Nk=wU&`HV^4t7m&|^$WRc44<8FhU*U*kniG)|-BRNnzM=5ACCo*yCaA)+d!1PSTWEaDeX8IXjmK~toy=1wf8{;eRt#Oql0CkNvoOTcp#54LsH#|OyKn-Wo+(+cn6rN@I}iHy{W z;+0g|4#jzKcyV1P>3e|eBN;1gV76}sw@qo~{8dvv{FB|{sXSfQ({P(+$xB5s!5@@8 zor(WsJyPuo4wNM6`;FR1DP25b3l_{{MY!K|Squ~(ao4Ozm5+GMWPU4Cnq%*WSMVSl?*9E!xR>blUyu#ceqxacJ()|G3E|Dz(Bilj9RuSB+(V-ZBVx@74w0Mgq^Wl$r3tUVn_& zFTUHx+qT2=ePovkhb2~+!%9_dlS`Q|q&T*dXui-Cc8NI4$j4p&D7*aA63eG-%MdYz z#kqyYEH;ip%l|m;sQusl3U0lVNE>^W|j*RMlpWXo(i9vzKrwWYMkm9RK1 zviDzbh`KBq=SV<^T>H3EBdKV&bpR|Y{!$8Jx}XN8`cgPpaNuLDv| zaUtIM{cE^ovmUXW3jHlaeIq_~5O>qxN{UEf&4JDfh)FhH_AYv2jj^WSCf)P|e#lwY zwK8;~cud?$LSAGo8|Vp7Ag&6VGT&nVa>lsu$TbvO5uR_34UfFJGGHdDoEghbCt-_~ z&^f}C8f?b~6E6!e-@1pIU2rF_W{aD|15=y9+r|SU z&E`J|%5c>3Th_isOz}dkX3+ zabMgXF}>f%PlOP9=3Ekwz#jN~Vnxvx>a-mqb-eE}zOOL8cf#65Zc|d41LyyeR|E3R z4V+Ng}77NayhxhrGo%xCjTp z{#hR$sXC{ddW(nozm>byS7#ixi!iP>=pcpM(_O@GbHJpJRawo|RKviM27>KDQ~hQQ`xX(X$|X zrn4n*#c48{#7}nmC~^wVsAzp;Y37Unl_MKt7I7~`w1~67LMU7n z9u?@+%T=XSe9H-_ezpyjhYTrm{T60m@|ufJ7nCf(KBt)xpDixmhQ!2j;1=#a&J8@pWebU)+WM zcCL7CjmwhuL^hC=z4v)0sVQhLKl)9ilAZs0p0=h}kca_^5$|@gd>fB=r+*wBL&_Ar z%w1gSKf9H`lgcu+;GalZ)AKMg zjo!}0$Zo8Eq*Kquffp1OQb?|+n>kWfn%N-UU=Hp{%;hyKyRX=9gPyNgJ`Y$%ZBP{NVjNeS%IEn2^Z;( z-6${c3Qnd?Wrcdz3S$GGYDyWRgpLzvo)tW`$Exmp@WnR9ngX$$xt~T0Yf8`5MMxQ6 z#S>}m6494B%NFI}pIF5f5RvtA-dj8PYD#g|3X(*jXf#U8IvL7MR>44#=x?~}@|In; z6@f!B|4F5X{MpucRkJKssCV|ow#K%V9@4)i1+GNiJom;*O&G z(a8n8O0Dj1WB{7;twYXh7A23>>K@{qyZAc5x)rAa1=e{MSRdU0SmhR2xP*(0)Pjp4 z3lvu1&G=+c0(fcU5*YN46W@M?9mWE5kW)mlRYXrooJ$cFz#B;@Z_XmS_2xO=z#ZvU zUui(EOJaBX&;>b6j_Q5t3`ti$9gsMt+KNpK6?`q6o3omqk_A0Tu41-$&?R|4FH%!- zrry_nSyni=XIY8R%TBYttZ?3!^bYAOD8!2?jp~L}JpP`3nw@A!!Q+Rd(<)>Z&eh1z zVTdX}nZHIyBM^n`_wA4u+{I^Tb$Jx4F#KOEco2TY^jSkOv|p3jK4+hU;mtQ1sd|zmA+OPb!imc|jru64p zotGO)UBWRMb!S_tlFF{;L}5Ee+4Te*vF=mIomw_etJ8Q^xjS)#EOQqZXu-RHvqL$> z*XYd(IK7j*cyW^d7l7DR?kqs30%+fw#YuDZ6KfVH>w1rx#VJ2m2~w>D=Ll@SLj02m z$nH{i$-uQz-K7B0QgxR~gXVEZ*=Yov;7*b5)GVkVZWHEYaZ#5(@i5;aDZFPkYGYcj z6w&Rq`GM%t48W&Ju?HA|`>Gp;;NIMbZhatE?~Ot&QxUc%lPFgUwxC3~i;MLJRqJ1< zaUC_d%y;FiWt&e1N`46bi?b4j(^`@`!zrO)x0vtzNx`YcO;LH|-Kz7y7Z#!YRHJGb zFExl^*<6xPLj#{BeMVvp{YmPvPGWM6*)OpM>c%_8r0^~5>uH{yP{byOW7pNYwcl)r6rn5Gl@wHPdYUQK^y8(1Hd{0)8I!wl6ZZ8snoAU;gHROEfSc0i#en? z0qlp-W-PGK5Y6|;IgkZK%RvRb(HCa(fn>`b%wcehMm(?&?tC{2r+MM2;(g5!2;b-< znWg*Bjb-;X2SEZ3ll)vU8{^nbCPNFZhc41F}Hpd*50PQU*rok4oVMJ?#6|~jlu%MOT%|e3nJAkpTz*zT{f-#o; z5hEmEAT3>yOmYdRv-s$|J0P(v@ZbG;V$WJhv32!}x~S6-BX39&nZ&-rja7dmca*?r z;)?u}d%JP{RpV6JU-QXVvdpao@8M3mPg%UEoMe6M-Z&R%^!jK5xeJEX62@TcnKayu5UN_YTE@5(l z$`XUch-O^(19}7;fui``=oU-HgY%g26@_B7;OjcEcAED`g%Z*q{YqRUNP$xTMW&?8 z!-=pKT2Ak0Zu&d2wqoTffZ#jRNj&4xlOuQWt0qS>bhjCQru~+h?D@4b{;VBF6$mS1 zJ7b)`ta9DIW3e{@^HSzdXl|T2;CrOzz)AB@CN$rBW#=jZEtbQ%ol)kN`BOF~Uxks* zU3`v?h~8>G`0qm$M;PoD>>nQpdVp+=j1kDNB~KobUdfc3Y1TT_d6)U%XHMg_;JYf> z7ITn*@a-*8?duC|s#39jqBO*jxC@m_pD*%3y?L_C3h9ubQ*(k{-4&J<#G_niXq8U026- zFaiH4D&gW#bo>L%3Q`4H&eLw~P6;GsyZMHMr0)TkI{t;@e)gm^97tx1Ww@-8LkPQw z=y{8QA$pCc^b4Z#N_ePEGI~(7`Q>U=?EJJ!&Pn^?iAI=8tNXKj4KyW3M+6QrGCa(q zC_nc)nbx(&atEm_M3&~Y)46GXF~LM;1u zqir9bQ(f?iPH^WIWgd599+zZ^_E=>fZ&dbimH2Zk7|Z(E^;2HB>_tEfFULOK94=cZ zVFV)xzg04bF@ZaljpI?0V9M*S_a}saK3mMAb+_|QeuMHG^IsBKY$ZAsYfb5)XlK&r zviD4c%GG=!k3NFyOnEVp7tuUY4AA?LSU*XXc#f1ri6i6}1{}<z!{ZRjT}9Zf>Nz(L3tAaCFx%NyY_5U;*qyCn~fq~8WT5;!PPsK-D(Cta&O zy)FGV=%3f^T-G;19>(bx+YI^Yb}ncABc`oN70|^HC4(3!9i;m_wTB-93EGNRg#lN7 zz=ztyg{zX2wG|EO&34`(6uQ>NV%y47B7fv1Qi0fN+|b>uX7m`b+O^}&*B7RglhtGJOgWN=YJ^lWM` zA@g$X3rK&4ULfg6v-diOd;lEm;!d_`bwM| zysH)th}mNCyO2MxmHb{% z)ItCKKc~O+-ZX(;$p0fVYcP45eg@O(%%9=a#uIQB{ z&yy|+=KsU%z~RAjCu%F7wNhk1krw5oiXZazlOzG*B`i|jYkiJEmA-r)toN1A%bd@; z^%=xzE3e}oTKPG?X^VNeoXC#ibW-i~To+x{y=v9~Z)i?VXijeykt;)~dF`fL!{3%w zl!zalYv$_Vef`0lr_qQ7Oj9(szs*-sODhify}XI!<< zWV-I9+}&KEXER-S&tGF?aeo%PR5*R5+a zUB3Zdxnzxp{k>C)>aps&ofRx+`HFY>T)F0fk3kTJ3#g?bNlywloC^}f8l0G(`&{{A zZgBEghr>@&3xvdWWHa&SZeQr)Jr&0LRmMRg(#V<-;o7s9#8QbH<1MG+N+=zchl^WR z04pF@pSV4~r@huS4@)&Euho`SBWodyA`U}(zAEb8XxDGLC3|)}rQ-^ul zR?w|;S@XDDtE(rYFMRPHU-*J7bK5aj!UI5Bl9U*(uvvEp$MhJXfKHKju_4?<2Fom6G)woCS^H|(01W977! zqts)ECDZN``P$m_@+Og<{`$!o2HTh+OY z)+vLtcXDv+PW{~0FY$93?GrS&`v-6!3fs@`E&C?Mp+BFc5?TT%IAyieKFqbhm0(^+ z3FN#@j_=uMG$V}s)d1OsPF31tTjxrARS0z=6o?b*w7V@rCCf_)#e%z5_dRplrgYfE z75NLdl?I#Guh?@;>aQnVywDv=6W8kgDleTvA611yKUd^ZZif`MauJ9AO^#=te5XL9 zmrF)<3gS?ihONhjwvnm9!OQhC;z_Sl_2@Zq4l7f2@W&MqcOOYu6a zm5qH=mEEAqwz&A9olS9Z=l12l!`G&CCTXt7J(AG4cu&na@ZL*2$amxLo*Bb@ z(ydtU_v*WZcdz%<*4v$~BAn_Y0h16Idj%;h#$KNyK}AIJcsa0`Sy2a2P9}963p11w zpMZt4_-dU)8uzn4@*ZF99s*w?5h?@q zDfB++234VoJ!%OhCGFPCSlgAMx6eK%xu8+Qic=^T{=+^)$`!LIX_FeyXYW9P_{Y@v8A6}KJAN%b75l#gQcbs6c8NaOgM zh(A%TxSU8t-rCP=Xt6p69(T=J^e)HmM9a_o*~JpxVjn8Ul*_8UK7wh@|3 z&5@9H9wSnXD!}a~@WH@AtBvRx@D zpYU3glw@CM3}HCN;1@TBW%e<-P08J)@nVh9f;y=nR^RFiG74oud21!5`M$^cINiZua#)l0e5FrIk3J;vumS=k=akTfPMnkhHoZf+vHg~oGcYU45K zX(7GtQLL~s?hoLQSCBp?XFn0)(ta_mmkTl(V|wr3MJ;1;LSuT1akV#Yg#<9}<1;p! z8y{!RV{C|O^01BvKBU0+avq)Vm-sLUSH;~I20=pc$7<%K1Oc8yP{|tZ#V-qAhE}gE z^ygxZtK_`cYAlYYVw&Q(A!1|UWwyB*k3P}Zy@tz#HN>&27`xskzgQ3LWK|N#i-caw zRauU^P!8OZ)KbCigGlWT>Apm1?8evPh1%Ix(yzp|qK66uBwG3ukK>2Ti1a3m=X;)>JyDUD1*In#K!oH^q8`4m?+#{iBImn62IOHS(>9jslWY9DuiP%cty`+SEUjMugq`Jn)m+LG25 z9HX`-a;e(xPsr1fwC)Va)2=QS9T%dwo$fO#!OSNAG%#bHkga0iPqgZ@5aNJVSuC?M znX}FjVi!uRbl%`mN}P1B@JAJgcbSb23_XECM(%P4mbHa|kcnZ@b6ermF0oVkOkn$s8FR?m$mHFaTc_#LYf;?qPgYxKpsnAkxPmO@W?aEX;}A z2g3#q46z3O+#Sk+KG2)r%9Jg!_ifDdtmLq5h@_uxp4aF5n9&lg zmagIBwYblHX0F=_jas5-%i9sWH6OQLoMv7%(^{xn$**VKWvsliR&{E1HhM+&>}=Wl zk`e1=bQ=9NOrf9ZGsYH|F3i$`C#g2DCt$720TVDaTB*k*)B8!nz+UNuvUy1`9r z*IReSzvj373aLTkCjVk0lbZu*+Jc++5tLk?EoT+bb9VZ#Hj-(Z#4MMCc@|vcsXh3) zz=$jMm;t4ptoe(qYKOKhm}Fl_vZ)-Hrw-tgq~}{n&up7iy|hPao9oTOpIhjf!mno? z;SK~{-%e2ID(h{dOJ!t0YwazoqpuK~m}@E5IIiA^1i3zYnSBadGhI8le~jOM+E?i| zViI#L;c6H6n;2!u{KsGZ$q4}wPF#*VBa1zQS-s_2?h(laucHV^RR6D8?$Uy_LOKyd z3%T)x&NY&T3UP6J)K>mnk=5qlDLe>wIvnid+2Y`Hxf53E&yn%$^WaE&V^K~-q41Oz9HYqNiLjUejiO}NU!_&=MPEt(#3pw!M z=kiuD@pmj^z{Hc~?FGCwKeS$y3#!$oSJ|=>Af!IR5FM(}TrtC<)|32t)=kIF4r*15 zSJb+rX9Bef1rIip_qUnc|G3TD?TT*Y@KfO7c`IzjZkI~2_Y7=lYc0-h_gMjK^Ogg1 z(#}j*A(w}1GMCHcoD`vcp?Hd-J5P%4j=mV_${_7L2>qeVEF;P4vL~x3guX0qX@h^F z&@9Ch>Z}^ps2ZXtB$ziWoP%>>+#=N_$xsQUEphnsAoAk{ z4!gN(UQ_H=vyfl4>&S;LBgM?&h0aA_z{G#@EFRDD*NG3<`W=fQl{xVpGXxglHS0VA zwLj-A`QA37qqe3qON0gXdXMGL%Y?AIo?~m0EG0&Si{qPgWFhSZnOa=cLl%~seFfWm zDO)UiHwJ(tPk7?~ed`a>*J@h2vwWPCizA=xH~Ao;5F1av(#`YK{w!+X?9ThzBQT*o zSyp?HAL=X+pYe@-Tts(*H(Q;I{w1d*a2UG)YfQ=TmG1JN=p%M19s#jSvslag5oG6?(u7)0N~CFj3nqNOJ_xb1j>y!66k!Df2g~j3(Rk?v|4_O zU?80R+&H`CG)I-I8maIr4Wu_%!4+}7iDmyu3gR6o9BDpj7qnA;!`b&Z1;H?}?E6T0 zWQo2ISf)rf?M(MIxyAQR7GC_RzR*=R9>Zxnu-f8^;nONOuSB7I9O!Qnq1yI5j6CZ+ z4C5{H4&@5emAF`{sbHm3c-BA-!^OO9fsD#5!D?2R$x>JOkKC^N9aD(7VV}{rGh*DE=Vc-eO<$N(^+GAp_vmZ(`QUqL4Sig%s3{(-&m-C^ zQ9C#BSr#gCE5e>sb2;0X#dP%n5}K4^{tprrOWaP?0W{O_g(vK*Oc@(%iqFyN*r{xP zR3^FH1;ZU6^6C7!RV8yWbnu5?(zF-xLo3e`(JyUnEk^;s%*RYdoYkDW5Vt0MLCvzH z8}yrNmL*@W&-ND2Ptkua#o_vd5ZT1e9U0ui*}Got=`w#c?~rn_kne$o87{lN&;Mh& z9Mv_b8dGSqwbo*_g_cJ|iSmUr@0L<7?)rT!x)wW*w{%|d(s@GAiIv8eGgm_`(2h@L z)fpLPEM2BWdL}M8fel%ui;I`+iE>Jg1z9-tJOPgGHHnj-nTyY89&hyCY#y9@C>Euo zQ_hU-KBL8dXg@Z93B5el_DP#$=5{a!6O9l@ zE1Y-Z2vFXZ(SIuhwEKVv+sOynY&@ks9VVg7ZndgVEFqk8168z5*M|G8@j2&Wn>l^| zb~rQcpK%0#ZfM7!HRlWy8RnL;!)HzSq$x%FYJIsbHRpqNXKHn7u4D6|!}9zJ%Ws$` zM=~mwkG>~|?HQYKQW(_A;ZlKcc(VCxb|(pk{|QEnu%*LQHjG^j{M!9xbt}9qdRv8e zlES0!0;v8omJ3)jSDWF~M{R{HU>#XgC$q?|X|(#D;${g z-S{sAz0AuWmb9U9g``cX4~@(B%@{|V>27YHF|M#FwOJPa5?_JK=8X0)vSQ>>fcx2X zB*Mb+-)M!m17f|YMAtBXA26IF>~f)7o-14j=A$Rq95~a@&b9JfW@YJq{86oM7DpEC zv-6BE_9f{RLVs^~Y$uVY!fMi#BBrmxX(1~|8~R%m{*_=>AuF<)TPkEF8&hw7Ld;|z0rG*%`exc+hFnB1% zyaD&S<3Xun;pH|9KfteI;icR}uH#S5fnoYpN46`;JjA{rY1br`Rl&}#RSWhSFmi18 zcRBE9s_g8~<5$%zvDKA5`gnk^DF*-RsZ5QpDQc9Ql&dfRafLkk1f)qP6Jxo8_74g$ z1#P^Kw|#P$@DgWytZtQ9p0(1)%w$!VKF#h&@q(PJ9ng!xT~#wc7;XfG&{my8-;kKY zw4g_gDk?#1Cz^(&MZ@q({}Ihc=@%+qhHSD{T1G|DN1|vL-+7GhS|z$Yzd8bc?d6Zp zU|U2|*_p(`r&sux+NfT^ECWU38e0sX&=W>@3dvUH)=`jDCrkEsv%7laKE6m!o9SBc zhl|w8J7K~lc@xb~m{?j~7&KNNDGJR%hn?6`F7;S>AybC=I6GA$YLVGeKq7^dWh*R& zj+8%Lc}M)Te5HL7iGGSS5)J6rNGxWDzL07)E(XPLnm7i%#4js3_O9s-+KOj+0Z``2 zYQROOIwhfO{dVRa`v!~V^k zkWs6X)zk!1TKm*&a`xQ>?)S{fk*@MBoVmIgU?#b~k40{THa0J4VL55J zJwF`!@qfV&E!Vc^hfiQDG+@OKhp5KkhY?c0YH##%IN*`PJrxJ6RJCfsIV5dur<#zb z(hhmWD4p!@Y?l+|)HU|ce1i^AUN%^dzwT%8nn(&2E6I{b<|;^v9-Si_nG*1*%K!b} z9Ha^J9KAUUinMoQC=NGlCaQz)3R~{7iN{ zK=n7&+xU^0P4XC6TP5+St1_xa zsnsH$SMV$oqK!GFi}RMSswOjcP(-E)g|X}zR+Y?j1#Sh7c{SiPrKqOTBb&-?ES1|> zDz~vzZeyw3#!|VBrE-O(Saya2ztt9E<6jH9!IwQ_X8P=|5;K*Y4NHS23jXp%f;0QY zzp^qsHjBs*RYqZz7_5#& zYKpJ8&*JBE5_wO^O14rVCDad6B%Ljmy;$A62OsMHl~M~S1}jxt{T$N>I+|mr>cC#J z&W+II{97rEF8QvkD`S*o#l@G)m2hUr9Gn=iS}p`dY^nE^boFNe$LiR6Uzml=0M^>? zELIFn0c0$ha<)m_tP-EaD)^NB=|z+RSLrsb`oOwe1;kx{lcwzwI0`ZS%-H5jIAFQq zeLPfP)a==kN{(E{Fu>d&Ox(;H#}cI~guyA0vKm8+*}v7ss@hsV#^7~@s^Xm1ibqmV zLao#o7DS*QgyQkU__?Wkh}HSpfTD2Xo@7T$ z!Vf@fO~%`5*r_ri@|#~_999zP7Eya-C)v$%L+6_AF}{@kHB0&z3&Yp2FkEtTo_0rs znmOUx-;3q?wXRe1*r%6#YA&j^=sq$SU5s61gPL&8NZsrUkKD{w4{hZGe3K)uKl(}* z7C7=6`P5SjzNF?mQ}c}p8Cd$Czz1BE9$p3x^oU+f8oX;CRcX#weP=SVp4}(O1TCps z#e1`CpQTJJR*A}eg1K(KlCey%XYneE8p+W(te3EKbH0c;Hf>10R6C!nVzc$A^oBg` zc0rxn%am}T-LT%wuqEso0=B*QpRDn z7Q!NnbF`pRHDtSp*xmxmGm>FaVu&!n6VY zE)jeAUZ|5B8L89>i`+eJa{D`*C#k~p^>)qr?a>Rv7st%?Z8Pu3ny-MtWzDLzE0t#G zgChSGJHN$6T5!91I6ouujGbN!vi(r8%?NydmgRY3TPtU5^rh6xIg7a-V@Ok_F|8>h z@}Q(=;x;3^o0WOxLE*GhJVB-NXIYT<3quIc!{4(0{^Qj=*at zkD2IIiVIt122vSbaU12SEHagprYyfO1(~-UV^L}>`~D}8GxU^RVt7>oOpWqNx*>@& z$c62wJT=-!3Gk-!R1r8$$Oe(-KFLig-wZLMWcX4xg+?~FKGHn-U?8f|^9(|vK+A75y|3(#2 zW(wKp`sZg4#f)8}#mKYtlF@Ghp#SPXeO;i%JO8q9`5%ajIRC=H5AJ1EwLk2akKWoJ zRN7g!Kd8j>!{sXRjdtRhlK5&n@nw;B$%E#4U-xVmD(IIR4$JiEg>c|KmeUbz^Pj2x zAss32e(86BtT)4W6YW}5 zU;D#90YSUBo<7#kHv>c}Z2D66$^yb0=B0lZoJMx4{&WF)^d^6nmu;lR>)wJ5=7FiG z|J}rf{z}2?X4n1Sv2*rpAvF3H!OevHVvevD!T!(b{VzJ+|AyW-*z{g((|evx@7Y4{ znKr$zjC^QO><`@(y$?7359l5E;T-?ntwjHsRm8tk5&s{EZkIF90_CVgA81uqWhE1$ zd#pF-@aA}k{D9=&6?{68!{5oMRB(5l;NJlTXGN91jn8WU=J!k}-KpN<}Ey zmTVSOlqLJX?~f^*3XSr75l$Gk%WcDUd7%&z2Qu+%on^n zvSO07on*3r7G6Kq7g$v6@}IKbqio0M6P7QX{waj?@ZLz-*^mEiH`b;y0NtNHtJ$4e9lqpoBU^rK6HiyAC{pl=Ia25U^|g9lKOY+ zNZ7b886P8@KAk|`my32*8JnbmKC8S++ZU~*YKFL{up40+E2NcK`;wCM{$i2|G~`y6 zu3z$1H80tWl1#4>APt3R)c>es2Iv$nGchGR8_ z;1|9xFK#N&m+cX;?1v@0yp;T$kivZN3xBstAFs?3A5vC_6)acga;$GB zf4cePhqClz4rI@BU|E(+tGief#3q@t(%!AUrm?oUV61H};9N@i)HK#M7mT&d1!HY< z!C2c|@YbV)h-vqce}HTsR@OOn(tYixF7y=nkRhBc(Wm6M7qx#;$_}P z88zpTfc4mEc?(&nK>U$cABPb^>~QBfHiV%G#+a+f6*tCwHqo{rRLa|?@?t9BtJRMh zDrMMI@mYm8)D%6yihG=AJZvNeGCgO1xmq4wE4kSX{*u?&6FD0^NCL>tE^;0u5vhqH z#RGQz$f<%U5dbegA|P!wtG*Crbe}&1tD$)(53Ox|f+P%2H;|>Z2V3!mQ5%iQyt+-x zrl8Oj28uiB7kE_9@RT+$^E{seOiuq%vh<=HLi8d|yX-}rcG-mqp-`S$6U3x({wX(8d z4~sZEZFyK;SRHnomB!@cjLLAg!L%5qf&WcWoR-Fazmmlm59%DQV)|3 z>vO)`c#Pi3^0hil`$&<4V3yZplmvizRJ5y#i$ZMMt+3B!=Q%n}MFrex7oUNPoa zim>DAqljRSkJpP*?9aH3V%piGG;W62pJumpFaz^BEsU;nj*vou6o z^epLrMtL_G6}wS0jc)ddK_g{CR*ZKUGVaMBb6tinbaPf{QI3I$uGtdtsBGwMaUT`8 z6~0wG045fFL2TZleV)L}@R%Cf&cwY@M2UY8?1I<2UJ)ox*4;kw3pt0sS^7v+@`Yat z+turuj2sdymL0mXDWTSv<8p%=g3~KZ#6J)qC-iV$4M-v!$&Qw=FUcG!Whk+yXHZO} zj6OgQR1;uYkzu}i>7m&EajHA`Iq^8hMfR%Db1L#}6_I&YQ<`j5x#Lc5klpw>)+e() zExZ7tjw_rH?zUXZ>fOvfjjHCXncA}LT93(jg)v^R%f}sPNncQbBe`*VO;yZxg~T+V zFRBRNloTycp}hz|zmCr6l6j0s7%}ckK%j+_>AOYysPFIg(E65(WFw*FSC3zUa<>Jmi=bw@-C1eE_yV_VuYglDuN*kE68S<8u?A&$Hj*-T^Ai@ zA3fJVu4j0DpWj>geT!e|pzZWmx?@p2UD0E-7~dc-Ppo3?q1xE&!9ckLnOGTU$S7@C zvX>L&OPiO>fM~hl)H>=#B1qRwj%AmLPc4tQ^Jk1?v+O=?l`N}|F(&Uxl~O#VJCo%(`c4^WM&|gf7O1(vALsSP><9&Q8t% zz)>JnKBS7kTaN=nq?!r?E!XH@7VYClQ``Dv>y}Kb^igu>RxDvC+M?xt!woU5%mI63 zQ4-Qi2z4#^Dz6nuqO;Z7mCRhMDwuF-_pL9g7qNF=J+q3s`&C)+S(qElQAuKNu2tpk zFgLxYjFU@z#9$IE`AQF3@e-f5KFm;+s;Z2yW#zSbl@rK-|TwcFo^M`0@=5~S3!AdgQ*!q?SEsD?rJz7455aw8wkyg;|m#q4_}^lA@OME_AF`-UWxyaUPle<bL#;NUdsC{IjJc#G-B4i)@?sqX`uLa{F3ZV$u$x}nivF%S20xYl@ zpgrOBO|oUDob1Z8r3jkFzc;v_u8b6t`@plVM90ISEXKi zOAq)nXn8Kg<2({?UjBZ!qK{VhJY$+@>asHMH*36uNRh|5WoVFPhUsEZn-B?x|mnH;E=~?ioPvlNWvHPH~pD#a7waTf25PNng1G|41vIn=)iibj%A@HQUm}ZUw0TOk zYzg11mN+9+tp(FX(#k^FVb~mQ(SovJThv$4GEg!^X4UOpl#V(h5w}GgPecb1K~egH zc6&Xk>DAip|K#R*83twT+HHO`OL|QUYO`Ohw)tf1@1uNHF`~pV#Zyz3$INddx4yu( zm@^+kx2!2EbLsnh?6Ah4G`4X}P1%_|hf~iD1@mf19;i=7yvMR1xXaQ!hOqu%J~l(p zEL=uavXsxCi3vwMOcARFN;{?r-wf8%p+Iw$VVciQOJWd8s+!S6nU%(Cl_{@`*_c|e z#C(Vkj2lv+jfPmg-Eg0+j*)}3XSk|EH|0dd2x0z}E>syBm*XR+$R@>GyqHqA+i3KJ zmS<_~*fn19gvNC)=Lj;w|_$FYuCRL+cV_< zqCM@(xBGAH|EB2p$uhN{%N9(+K-}^GTrbCu1oLFOf=mro^UIkt($@>s2|`xiepE6@ z-~Oe1m%e=mH>#7$5j4d-m}P=bWfRkaBPBhI`+)p1^(<7s6;tG3n0)S=D&#LE!BOHI z?5R1I4ty7P(t&-(e(^_*ZKVI6MSr#Jo2oybr~2>NviaKSyt~7y^J>B0lV5lik>i#M zXS}C+W+T$WJmE4r=Quj&M%6jrs7%>LhbvuT9-2buq%`T^k_+pN>Wd}t{8H5yx0wUp z7NdSePL)xe!{qhM6SG~Fw>C!Co>$gbH{H?Icc%_1yGSni50e@8t12GvidSVsV zBmVSGl}1H=bX}$KQuH|jBQz&;2U}jti8ErdKwiIJEz5%keTLAK-5Yd00`0PC5<-b= zMtfeGX?I<*OI*)5s<=I-=nxZTk5_8NF`_dmL zDmgCG%}1$4oHv7V^0%Ba+|5zXGZcTwt5}A8HX>(oIRQyf-b~U;OYB}zCbt`^LN_pi+sK9p6V;H_o*cp#ZY4|XjhM1Y zO-ZzM#R3*p;EHwIZ5CF0u|#%SRyNRXGtXiiDB2y(ljYA{_$47>m5&mO)V^GpvkjV@#OXKLD8x?l8n3~!(un0fFZRV>}t*%BX0uwg9 z>l4;uWtTStWG94ve)Mghu`&8OJ?RZw-?5|ZVe&&NCJ01P<&{7blf4p%RovL%;$CK+ zslb&L0yzap9L~hNqC)b486=~$lg{B5HKMpuXSFO}jM%!l(!W+>0{~dzXXX@w=>((O_&gwg(yx)E=neg|iZEpnMWhXKgHY-V*Jx?OH&B z0SiM^wn01M}vCT&Hqtg{r!Q1eHYxa7Ehz|$T4pYU&3R)5wk^;Dste0 zD}3uXVlRfzww&OyV_vn&+&$V*R3A8ao%Wl07V-iIZ*XpIc5W6qH%qOX+Jh@7!nt2* z->(H1uEv?GukG3072^6e*FU-5=6a9oRxXq4Yp#P_DYUv9R}NPmmn$f(`V! zLZzz9QjeQ%?k_beQVEaa|G>B?HE^(#|LxNCvd?^j51&3`uh*!?cymc=Md@aLACIxq zLx_`qi21geZj5(GYkA1BiPCeYD9f617<4>sJ%I>kE6Djl6$P*O&+;&>*Xp*&BYHDV z*JD{h+2$*$$kFa=h)6P@aR~!Vb&ffn0o7=Z+{!yo;2?hWOC*=^skdZl)v__w#(t0S zUdfeJ%LZ2(GF}=L6Dy5w2(GaceMaweQz=rV8~l9<m5mD_0b!|%=*`CY zsbS9{I)ZkqgvSYw`BB~Ha3463rUf-_)P%8g$1&G3|r?WWy+4-b@;ArE2MDqy@9>CBHx z`Jj-)==3k10Rf>U_Ro@Y^$aGY>HMZ}F1E+GF~d`OW4Go1kG6AxkE*)%e?k%n5SWNW zV+D;hY822|uuYnvGh||BV4^`#X??{;DOIacW+0e=!AT0!!ys*KYg=z?Tia`|-mCZD zR>4*c&jeAyH|VX8TJ^;70lrAEI{)u)?=yLz-v90W^qBXeeo;8a!VDL6~-__OK~DU9m}oS96e4Zmsc08 zV7yxn$&BUqR-jhd!J*{M&gRt1C^%C8HFGskSt)Ae0UH*_kvedVqrd?IH!9F|tMg*K z@93oq;ckz+`!bj5mK0n5mc_5(Z^>Cdi}&TGMkZ(dkmfJVGwlx0&Ne;H=H4qmSbC-7gOIsu#-8a!T0lisL**47+xbv3La=s`X8ZW zUESg1v(DzZisxFMWjrf*zQePYCu@}cvUx`EC4n`X|&cpn?-#~|c5f#&Jk!-)&}_U{TOuH1XAXYmcQwnRw4Hwe~7u$IpP7F~TmZsSOG&7R9Z3h8NWPDEWgd zt|StmeqGyTV*fTkUtwoONjT^4q4*hD(WThVrlZ#)Td%k($i&K_;xL!r9qrE=q{pyx zaY-oW1r+!+COVztZJJD{RMzFkj%UlB>-F4aqf}M&aCS^9>k48%^q-Y=g=~3v=N35m z5Q@K*9s5I&b&B8$q_?t#7mjZ!&OlmQb#<|CO(Xry;=u?x$OZ6;j?#A0b9^kmDc?hj zK}Dbn+^pG4f1)!M0SDqOk*sbjAn}^zTiXWWv`q=SMPBqHiB*p>tB5K-1e`jHw3CJ2 z?Zz7AZ&Z-M+TkYiTM-5>_EndFvA=}kIMeQUn6lYxU@_7~NV=r8GX2Zki6;cUX%Lu^ zx5Ca1><%0a8N9gD>u&k!0H-_U| zi_u?uO*icgRGm#<*b@*I|Ik`ApLL3E*wXq(9b`^NXn(FdpZZOVFdeA!(=lu47$vB1 zHi_XQy1@X&^_g-E*Y|GrUL?u7Ign^r#BgjeBAC%<`Y{-5V20b{>zK*t5&vY~)TpJ7 zMopf`zMP;jGpKtaNg#Y&`3EbnjI8(?m);K2F9JH1R*!^JMrXv&$cusbvr8oPvGM!* za%5bc__nXR%`2wrJ58X5CFsk`-G8jy>tt|@N&WjOv0ln1QR_TvkyVd65){=txv-S3Xf+c(jHh_T zbo7)WWQLC5|2G3+n(Zfz%TrTUq{QzvY{S(M}<%JD}UgK&yY?JOoz;DO!|R@BAfD zIk$MlrS;C%A^a^+5^joQ<)a<^N`2*2F2Sy?yeg}(?Icrra^j=pq*VnY)agaR%5TB3 zym~AmCXGmM3dg%>)7;{=d+HItzRKu}7}k#5H%+&ah^XRS`KJGj3B}0xvVv@#?MLO; zl^?F!)%IG7Yj5||J3A=B*IBEM%Md6%KLD>O%A?QIf|b`43?tApTZa+oSIjE}da?-| zOrXEl=xVgn8zT-p>y#P(8Hel``0Z}+B5g(XSAL5b<~N{N!cZe($G{+i^rgsVkoh&p z7;cuytP4AJ5X%hITz@d5-poT&DIySGQ4EVYMnPx15xV@a)p{2@|hmn z=>qhEtF@r2dfM0VCcp8Pf-GP1uO@_5TXMHT{Rm*91omNTD;G}nt-Y0(5G9CvG3FNn z&za@ZKb+lE0H3bYNbjj!TD;=I%&J&Mq;(~gSLNi#PU{Zl7?MRR5+M?$eZ6xwPHKb2 zg=aej`y^=TrGT+eY{ac~^I?%3?A=^kwY0eHUX>|EXQbn;i2Dntwzb1!+lkXuW#^&O zN642Ppfs_$UeMF6I|!lVGmH7*cVr$vkXL>hC5)G+>Kb^awy88`u(c4Do7}gx$m@;*zX5Tse!IKyOCaXRalC$T^3N%-O~6)J^YmIZls>bY@KrRPqc-XI3|5 zLqHNGq3s!Je}x^`KBK&U12qy%CN_@?sVdS%b6X&8UJpTW^w!5%YM^!bcmZdO{t>lN z+qoi$OTa-_gdHz&vz<&=W26i_f5wEY6r8HG>^wsJ8Usjo!#QNJ0=VkLg3$KH) zvI(`*y}MxmR;!3ME+2-EFG~+*6H}^C|Mcgzk=w$x>*in(r=WV7uyC)CEGh@7-GRb? zV~D%ALziZ)VF#{X_IiQ%vfNx>r+l{RRLJAUo7Ef|%(PC^o#zi#JsUlQ(_#5hZcJq3 z_fc2dVypz?y)1a|gnu$}kt#BQOBLv6#eb!QB$k4>wqU>DY!$yt3&$2|JK4rK9~!E> zxWL!>JD5+X^5P0#=PwkpI^jL#%H8Gbh%iZoy8Zd$SP`cuu|O+P04rCq?*R&lR-d3m z&T`bpkGc=dmb3OVvFAt6T;It3Q7Eq?$pUG_xN9qSG#?ASFJ~r#qfwLW!1=9Td4GTf zgG|<1i1YN+l4i(9$%37d+6+1$b^A=yYpLfvf3G|(1uDN*5WA57g|YJ> zlKlMG+3LNi`v{l}W6 z=jx9Q!fDLW&|d5dkOE@wp++;1xVWHdGb_Y1^PyZ?IA2ZKImiRqC4MwBR^8DC>L8*_ zqPEPAhUn#*!;a9uv5bJ&w>i)8tNHVC|We*0t=eK>#wXM73{iksT4=cnCXJ@t3?h2!< zy>1?8IXm9h7M-nYCcwrH_xO-7UnA4tj2U-1XT_a)rc|z6b#o~aYsT_KV5$zB`9s+? z`DQ(-sZ2?0I17ubj<%THv>^_UI`6mlpBR0oy}!)Y`G~1%UYT+0fv_mr6jPVoh*ok` zpYNW9@e2m~nq3W+cDU6h=E@R9EG{#~d9t1quPZHEQ=Pqp>rU_zHOBC$9qum}TSJhdjyiaL_wG4ZXP{YDHvKKEx~WP#OK!Pkc^wjO zBgxZ7(~3~#mE|!!UOzLWIrOG!$+c*U2Js%vk2qUFcZ_8Kibomr!z6dOcbetCZ}k(@ z$Q2*Azpn|dl?|~g%PX(sgz-ZbFM4=gX9hT7xq^-UX$0^C886OPD2BwVOxVRe2MY@jenagPXYCPQ>n`0gA1sFuF z(aB^ya!5u7ghW;U1--Q$A zUvMDjmk~jxh}Z*m*)f1xR*%U#RGFu9Lzc{m_GY!0HM7gK@w&gPQEot$W;&ne+zTP|@ah z#h7+vSi(~XVncAT?k6XY&-xutf@c}e2A=Qn{E}xS&qF-_>HTJ9kKu2G{+YiV{^xpO z{p5|*|55s9{_^=h+M89yuM1^5SmIpEN)_+MVTMX}^+mpp;~_>Xu(awJ+yq{$FODs6 zS|?f`SvAajNM1L~s(+}yg+ATUUU6Y;l$&NU=O|qTe9&Xu$-u9fMSNUN6_w9Stj7zp zqB|0;6H|3u7doS`w=!}3@s$RNQE&V#Zgi+1iC%KzMwuJ@Nh+vU9pCx#Dt>Tkln{;&}g6Hg4Gg6Su&`MZLK9 zOkB{!ecOxs$i$VKxNC;xokZM2mqFaU6ZEyO9>RKjFWq<( zC!Z+s{)JxL1QYk1iOWDb#>8zS?xE{U`}MW&>j$+zQ@h31EvAG_`z@3mCa&45X`Csw zS*2cY+HXpohtH9reU<5L3zyv34ffS!Q-XG0;{8{8r5a8MiTds6zRP( z!-)6Q98^;V%g311yOm}DD@U8SEha8g>ft8t9ut?Ls3T0Abc+wg`DgC9jrWCpo$v8x zycf>NZ?9a;sf1)v&0EZ_e|J-|@cdmyC~h;Z0)N(&QM zqD;7`nYBlhJgxcRed*-Y`{R8Vs*mNLJHW`VNY?F+_no`6+TKGm^7gNone;pB_zmYg z#tj}@olg+H8dD9UUS;xSCsx#{);7eo(jKX5U+{#!yhoU>$jYJI>PD=@9l z%+-lfQnX*6%`By3GDgmuM_afx=0fC4(>BpUVRDw*=38~4rh;1}DU2+vuZ@#9d{_Q#@U0JCzF{HQ(rkKKa0kJyq*~4K0blG zhk8^1O>BQ-VwSsRmI%pnRotv~9xHztv>5_fxbDT%#%FEjd6eflp4WNw$F!Pz(BG#b zhI}_!hP)HZ<{6QjVnCsgjfwZ4 z;p-54N(P=W#xODqi1)YpI=2$AlqXKWxML-~Lv}E%^A|#XnD6ZOg`pQM;HSnaJt3pL zVtH)TLwvs>#ZX|qZj!d-av6@6_P6&A6FL6fukKX|%ZIA~ZXTYl)21s&J`3V8tt(oD z-cbTEnadN+DE#wWwb~EL5%GzZ;iLVm$>%BoOwC~IiN!cyTwLPL zr#yXVuV{-tj?FLAvy=p_RA$PMw5W|D@%xbQA&b;xQKvi59qutqOQ~H4wP(;Dhx7ya z=Ss8=q3>V==>ganieT*Z#k1nq<0q|SyP}%TEOzEL??=DDq;c%i*rF@~@4mHn=_B&F z-%!(Zj?nmNHTEJ-!O`rl#%5JUj?Qnp#?zv4)g79uqnX*xX)v}6^35ha9UI@ex-ud| z(D|i}B&S>~N@AyJ@0%R4sX=Fx4v(F&`!jPu17o^_M;lWK6gcs2%pK5Xup24o8-|87 z!}*PAUufuUevdq2&dchI(mZMR!Ra!9+Y@Pe;w)#T-4G55{L2Z*1_JIkvklSG~`<%kCTnrhmwWq;Ku-35tvw0Z;}AIgf^#0{LKZ zbthjUPPR5cY64Z8d>v6DxQ4IuiI(v)`_W8IGt#M9oE0tzIxvqX7>GLlGRmE)4=m~; zrHkBC6)tz?7Ldc7&!L2olu(k&*LQO;*qPH1mc8|kdZ%EcdpGuEL2$l6#~&NC)wxw$ zoxU|+qbQMAqsXhACIOOkCl!|*JV5;C>WDF?1+dXeURBz~ouRU)GY8myXtZicyh3p8 zuavg|t>0+u%j^gS6ZN}z3TvHx-L(=ii7x{ukbnI>JnIt|wTBY*t1(r-jn_MPT+;Up z5S}BS44nTSb0OPWiCX$bdh%E_lpJ^TD-$gQYf9S%crx!_zKE}6$hQUNYt9rCZdL^1 z2ot^jVO$d7sxmy(OK;1+VY)JPrSPiRNFPhwP1hVS4(LvYiPWQlMHz}C4Hj-a?jDw= zA;&ZyM5IRHq6zR(*!{Uw2QskX_jRlWr=g~8?bV#v8yko(&tkMiiRzPw?59xQZ6y4n)UrbGgNP zmv7A#Ajb*zcfKSNm79d>vX3MUtkm$Xusg zj=Zu<^UIy6J%Uc3##QGk^2S@S3t0106JnXacAd&|ekg#kWrbq6F-J62z~0lW0?=Fn zyp;ytFH)m9?stUR#Ta0^;1JSS-hh1-rz}|7L0HTAV>|z8 za3Z#=y*fWD`t7RLf;KK;u5a(Iy@T%?7%N zV+hDGjrST$l!E4J+Hf>!6_SwU4wYNe03;c22JWrZ}g22x)Gl14S%r=&DQ9FnAV`FM78Hb(sk{ls~o=nts zxL>EJ&uI?XycYE)$nz&kO2gJtzYjOn6{K@l@l!bSTx=7Tazp_gB~=F#1*=lJQX!0m zCcIHJPBZc;iZOkMA@!+@*l*t!t+pgaAE!<=ULf!b{0*HU#{XN<)E5x8eb4Mm{|W7p zD(#ivHprATsYRu-%8Bn_<8t|WY$KyH1jX@A?LF*B9UV?CEevY?0BpuuZo_#nT5Ji! z*ptOv<8$-3MCpju09Q+Cdx%1?j>k-C6`!%6%1hQ{r@p`jT7LXGPQtF-qB+C5{o;J{P!ks`-#P&{B=>Z7-B93p4oBd*V6z-)%wXYV{nJ%2o_oX% zC2Kje@)I=;&a8rjHj8TVBTfD?j9pd)F>EQ6qO>$Qo4Mn)#tgn5`7iMG;#2$5-8nQt zhrp?TrJrAoA8#1DqIz>NaIzn*Udw^^R)h4>BYNy?=L3>?GVgex(m_i_Ft0s(q-HS$CFnyk zSF`rz_+6yEpEfOC^}|FK)SiMCS^WENrZJS=?njFbq!X>>I?r~SYFW8O?V#;VHRZiM z1S^-#@U3}_02eqV@Kz*;bl@EKf5yAu&*lR=tXpvF41$6C>gR{See~zTZ2)fk$DytT zYKi|I)W*$`bRik&^$m|iQ@TTmc?R5qha<^cznP+Q+{&Zr#HJc(YL2MJ4~3M361k5L zjl;wb&xZMma^{uEZMLrbsi{cJ@6qan4-I9=%4^@C%_d)l3LX3(X`bo)lfEGI8Y$(n zd7!Cj&J3yxn`-4Y@w4;AGgvHpZWtE#9P!WZ{f`%Fr_XkMcMkj@J%B>fNN1j3Lr3)Q zjy@_Ir&}QHAW9jw!WgPgwgZEKi=~Vc4zbD*T7E$DHu(A1T@%s>!2j(zhWyQ(&#=}%uiGyE$+VxoT(lqR-3J&>O(fk_wb8dmCpVJ0Ft9m`tdF7GL`^7N^!vF0 z$t<|c09P~|xYPeX0QU`m!*jAn+M(3haEL`ZYqR}dPzN^6ix>!V82KXHIlS^YM+2%S ze>#pxBEur95s!wa8L~%P$o?$mey^}MYbf`}rJVN~;BV}`Y-lkZ^@|3L_1$L9>?Ovs z9Y$eKFgdHm{p*nud&hzxorp-Z7A9J+>aJM?QKgf3?PT%FJ$EVsH0rcyAGb6~M^6}H=AC809x(IX zceYx=^yHer4)=~@HBebrXEY0m)@I|>LMv@M5t#qNh)3TC+cySuNSbq?_{(75n6}NJ zZ5ajVEvF!sJPN*~ku|%)ClC30y}sVfS7(+Gb1Dw(yJvYL<77d|M5Yf5DD^Odv7PQS z{LV3wIiF_|SB~0&he@?!kG*zX-k>y!~Z_^^O z(b!L#<;~_YkOGp6j4Su{c!v`4p!pAW{&;bM) ze5^hhRAiiWf!RwoJAn!yo!K3zFmqxELYaP+X}VucXr_P*OcQpv&)ducejzWkeRRp@ z%0P8nT@E7bt^{{TJ7I5r`l#Nbp^P$Kf6@}%k0}FI?hUPq;jn-bzf)7qb*D{psu@)N zP@=jgT|j)?jJZXI|O$+ z5NU)U*4+kNG&Lmw=VABHG|kynd2v~E6cP!jc+z;`Fm7|2BjdAn^1R4%8yLHf=dV0j z*l2rtVWS<+`{(~zt@Hom|L5=*j%9_Ko=b0s$2gy??6L3H8=kKobg$qoQJs(0xypvNEQERjIX1YWoG=NalVe12$*i~eTGn=YL9QtqXeqZ z|M+g&Jn(S?A!i#BGu!8m8~>=px9Yb<4Z4+Q%W97={{4Xr(oGCzFg18C*H7{sg;#iv z!pl8J;bn3Zeyryx{K(!q6`w3>yJw;t!$18^ISTi6o=U7&PA-S+OOr#q!WVgt-p392 zes{Jl9pQ8OEClN(15l+$)R&@Hq% zZ}M`c7-7V=+t_8qrp8*I_0Bfqwcgj+LlV%lQ9lFdp(EDBn4NxiaO`WuI(d)>y6 zVL+IfOWc`h(QdUd<#KlEIcASfc>caawcRYXO*~s%K&mNvvdG_&q%rhFcRK#-(&orJ&o?4!{JYVN&;<<_^ z#{UPMUnw(Iv-x@z~Pijz6L7#FM5>op$mm<>KFFf5m9Tt*7&nNYkYp znCdewboL<)`8wu8sS)S8kU2V~1LqNEcB47;_7z?oU)g}HLII6_K_-E5Q+?-?0oP1#*jh~>du+G43%&)I{x{VVAYuh1g z2{xRW{C!Z@@9lJJz9$bJ-_aLlnqXpKbH)X^U;x6#&j1s9{lvxWsNgOi`5du!dz3qP z7XX3we-;GoHsT!0ygJ7Ymg1idM2iOJ{D}BNYfs3TUh=e=ncxZLiNR) zwc4>p6w+5zu;giU-x-gulUi1YxlV09JE=}B8m9uM7XQP@%e4`@;aX{RHolBR-l*z4 zY5qv+b9-!k`P8R%P-BtmP1Uev6pO5=bUrcX3(sZ8<}sRmxZ42GlJgP3Im4hMh}EOA zqFd2e%X34bMmGl5M%o@RYZn8l+2kD%(`_>>UNZmHBy+z!t2ha;lGo+V2}Yr9MGnNE zL<>5zkpySuIunFWzgZvrdXj+AS}=M#eJPbkw9cJ&lc<8WL%x+Xaru8r;(p9M4(bAQ zlL{ibdX^B6ljX|^44`_TN?W^J{SH5|NLC2mAi%ehUs7N5goM5kN z*Rto5ZY%Hq>laOjuH2$50URi*EA3%Ea7#xna*rRUwQEi|F%m@pewp%xV7xZrth1We zVl4!CEpcitrHSR>GVl z%0t7XBu!`0H*ZVJM3Z(?EI&Q`q>J|YElNtftub9<64_=^a`Q1Nor~vRArbBp9ExHQ z2n_ivSn6<)W2f)vpn;$;R5@b=4tf(Oa&SL2(rRGkYBjzI)9Z~Kggi69?O7e=SM9)4 zY{~svuljQ9hmp%Ll0}bhwbd6^_^7!pw5MP{=YP)t2kh5Y?Qa8qR%Pj;BZ)HjnV@gPm84qDPr4|}iy_qq zr}L50E*kVtpz>Z&v{zm#;5?UX%?>1Mv&H6ocjK6HcWC1)GD+qB3#DY3`N6QdXqs1t ziPsGfKOljDq2g`J2fkK0Rz9y_G>vFPK@DGav;`Y+$NRvYG;2udP+W0i>} z8_hzkGa7d|?A~a{i4noB#M?Tr?qFGcH)kKTf7{frQZ08)pt2ca&@nl$ha%2v zLEqgwwAUXBJ1w|#_`6(R_&TI)v=>kKI^g82sIr}_Iyq}`?Sg2S9g$ej+3dT!!}f*2 zLXN@0k7jD$qYni5IwW8YwClzEY+is!+7vm!GF{I8jp&MI&BqEMcQxN4>5Vc0cs$K? zT=0E(=hCVkU&nVTE09=Hq0N}_28%&c6WK7INEdyXHxJ=cyda%gqF~cU9wC=%F-yHkETaMDp*wWxUc zQHB(IA2hbeYf8IBoXMh3HnKDibKU`x=SbaUB8&Mb9BikmD;F3+B17SF4`4brf?YyG zpz6H*Nzc40c2U>$|Z%-1&L%&mpo3t0t`CYBU}>wIb{iJt6yLM_EBCV@nflra2{ zaCeP^i*|>S7m#;Faog+qkS_W^0)7`Dx5J6p`23)xtGOcTFL3^>`b< zVjwMY1AB`i2PZb^Z>>LHCUQSDU9$d?5j|r7w3DnUnTLn*ES59&SRn<6D~|7)U@A zyAxFrY~3{Bwwns&lz`D%V#+!LNWzsZA-fd~%;TJEo8zA_kM^F$C+AvZN$U~@2|0Rn z!0|6&5?{ZclMAu~ z8qeDpbeL{7^*Ff>Ny~6r;=kdG=^oh0=Flzi>UeH+BIPzh{`iRqCkmdyfHRODrP2p{ zT=ca4R^wZpgO?cu71U4u1#0;lpg7d@GzS_*uT@Xt%Yc}A13?22Y%&n!$lq_kLU6o+ zpu|A12{TZEATI*`MgYM2&j66df0lniy4%!c?nUTp`z7Kc9QbBS24HVIew|C4o!lY< zLK0&z5{j19Gl{gwZ{%?jlA#&X4Ma-0ZExMgZRZ7>m98Z93{1Z{P`Mlq+DY5+sv53( zZ~5Y|tR8Z9Mlf1pZP9Xe$T>t5Ru{ohfaLkpoj~DC9k};(zD73p4^QcQ;%>K%-@u0M zLX|WY<>mViApj(clJN;y=|a;Kamp6BW3vpm@T*QJP*q#pwt5h~n8y@j`tdyoBGQBp zv1jY6Hv5t{igW-goP%N6+R zS-zx>k;oJP7LAJ2VKc?hxV~3#T3eO^oXIWALP(=wm~EEKN#t(pb$OYo;$p>a_mj4< zH}M67=ikp_7HE8b|D1RU3}*E&58sID zVdp%=?dwBX(Q)<4z13ZZjcDqSfU(x1Q6cAP_adreQHCXZd8o?uF6GJsG%cnq0GdM7 z25|z@a;6s3a`>zeD(}IE@qt-I7&kfwc@MTdA{nYgGMBl}%}y5~yODrn_n?>uePK3! zwr4IZ3Ryjc>?tr)hFQ3_Q4! zhAa{;iC2z@Ud2P8ajd&=}yX3#W5i{mGAryeZV+C{Iuhjn(Zo^{Jsv^4J$gac&ZaB zuAEcmOTNHI=~p=Ei^^vnz`!Sx1?NPXF6_w@qg=>1os;5)^v%0BU}mBtb8g$viI+K>@pxoo6P?B$A3)yL7xjT-=W9aKyDATe0c?7Qfn7E$e+9K4E#~ zd9`rlp!19nu{N#oN0AZ7UlO*KXU9cwMM*uoh#zPSjB;JDs^Iaq9|fx-kLTWSQ^0y? zs;zpmt-Dv`4;q*Tl?kqzyDpPCSe5&@Z_PyjiJjl$xxTeY()QN#ZcH%q02HkII%FEf zOagYEazFA3@5{^3qec(MCjK!d()gdvJfG$C<5QBfhBi(V^i8$u0tga23F8;a06ojW zs&H0i?v1{rZf2r5CYrT{WFRObMk%X3APd>x%bx8_-4mz`Ab-YNBUv|$$A7a&z<0eM z0^Z@?{5h%b7PdP<1Y5hMJ$#sDYsGNR!--^%xR|x(%6oB(5=WJ{bzyPE+AJ zYwj%OsJAf@=9qcO(CTJ-)g4E5#^8K$2_EMR*?jT(_pvINYE3gcmV$;9cgy(GD6|5o zy--^5@iAZhPUjP}6ybi^+dT)oAS-$(FNvp_Cc1NE1J`?}X}_hYLdmx6G)2qhBk7nZ zPR7$X8Fy;2OWvvK5$uc8^zIzgFJs4Uo4`oe2!n+Ei5g1L=x%T)f#Ws z(k>Ip-A<+ln$A_10fd?OqqCVLV^|S579yka>^enD+DF_5GcM-&`6{t5l!%)|8j*<_ zq;YFzW^85tazMnPq750_;;~D^yg!7kZ&vinv}O_WRrHJML3*#MCbImnP)-*kW}{dX zM~f_4Qk+c8$ZW4!PV2E*8;f5;Gs=7&HO!|D?glj5@UMmCIeNl5CF=n;3x3H~kKF*! zYHbLw-MoPTj=pGjWyTur?LV@vd;H&J4F~*0$Zvohg&hxMbs$d#?RqA}BfnZy;ugNSs|DGJ18 zp=jH)XRtju5Yyz#eCWpxr*c_EbPoUhxG>&dxvYG}3{6Aj&O0=&gG@rK%nl=EnRY!j zmFC!k0E^4pUKSmxCAjOlpD%>`9*}qHwX$_l^t8&>$O?`Iar;8hl(&e*Gx##?>r`>w zSdA76JIDod7Nv`tO-Xiyfgppf3NOQa^NlvnQNXrwNcY+HN)WgGr>2@FkM{CUB%75O z{GrOl4bkgtgWr}=aK5@W6l5A5w1=nt^sn^~i9TV#HRK~x)Y<`?p$E(>+Q&Z-kXppL zgxsj^4$-QHbkR>u5}~Vdu|IlJ<>KlU_+$FSpv)=oxi`Z8z-;n{{Hn#(ZLZ?cf16Bm z8bv6>@DMQ{z(b7!gLt5s)=Tl{wV&i(`%P;BrZBo_015dk>Oa-~!q05~NyFQ3Ue$gA znfB+mF;2M>v*;J*t8Kc`rBp61UNPB|SLQH-6pVMdzYz9cpIpK?DK^bVm$J}goKtSm zXi4TA8yE6Aw8p+Rc&{_`TDiCp7qp8PNL?cYgT4Y^x~Q0M84NFIdtD#WML8xvh&*tj zS~P%W52e`e%C|sZ0iyfFzfN5mvhB9_2{XG{V_p3t6<@!T!1C;sqRDWxdl~ zv%riXQ&MH%!nRpCUB>!|vciqlI(E5=AiLayeap*!1lgUM1)lZM0=sgOwXv#dnsXr} z+1Q=i1G?a9-YdrGdS~~6%RCcAW+*}%GU!&kO`H-e(42R@-K~9PYVdAVFAJeXx?Ul!s}6hAmrNNF*28|7`dMTIia-N7&V|3Qcs8#BwbLfH`e z=eL=lSb+Rf?Vqa-Xbr0cAs3LYHvrMchrK7gPIpZ%@zmMcm}q6+4Lj*XYefRHxyAXR z$`v79`6YcMJ%A<>fr+zwg~(J~>3C)tD~q*%Q0{^KzY`2S!9lxXOR?_0haNFTOdX}| zN|zk>;adX@>=F-ewicF)tYLSfqR@%|1J>P>X`Pue{(iia@Ts{G0JB!mfaR9IOSMgB zl|gbW846a15@yCjkOI zd=3Lf&aEKPM9o!z=-HYMDdIEjHA@)k+y}g&7^nlzUgwQ;(YE7`%Zjjmpkrj1+I_Pf z=-1%?2c#XEC`&ZwCR*}Yk~ahrv$$z%ldXi=k=au-er8NqenJiAij;KGRg|n^wfU8Q zr!BVF6l;g@|J&v@Gtw;zg}-9#3k(WzLTF42p7RV(OQ_@mD#@I=2A6CSvw3~VB^UQj z(4v(?EJ}3V=Ouaz=EqL2*)jLix<%fUiNj{e`mA*jTxXZa$TXRI4$sC&Wkrm;3BrYy zq5K%$ftw3rqbnD&I)RNa>Rrxaa)s$0j+=vpFK_4~7RM&}{G^M{E;R$9L z5VX_X4-_OKO;+!}^N#~%ZKuP|OR#XQnK<u9I{MBSz{AF6&l@py!9Ext zL+p9wMR%k*4$cKX-c^Y-sgD!-71_~~s!xh>GJw(lIP8%xcU<*f%_43mT?~SV>2wY5;n3rf?|6`7R&r( z(FcR60Mor%WWa$w!m*PC6+oBpTb!})oe*$>PtZj81T0drys^t+qce*z7)K z)d5&OxZBOgZY%rI+ry49qgU3H&oo@?Y?Sw7githd+3Z*argUW(DZA9|q+*7C|8{yo zB8WWeVHnS343CV+D?LYu&3P<#Hsu$9{a^hXcKqt!;K7+w#QIp`woPY(Ub#gu82T81 zhkfBL0fW9G8!(LYH3-I|uMP+bz`>S@z%if#?(0kBu=&AULNMPQNozSIt?<5-$Am%T%k5@n4ImR@cy7XHKX%wbhBbW_RkXf^cW3 zyUq{j(xrFTH7MlXxX+_8XLI5rW_?di8G2X|jClNg;CzU;qY8!&1bz1*5H+Bm`APe&AsFi`8ff1F@t9<{Hpn%4`cl(ph+^YRg08N-Os!`BdA zt6Kc?&K+VciRy>K-<|$My|a%^=^4KJ9`>&N;BXBQ70w&{FLw?s^o9aB{cAYEg@kF2 zKqK5tT;G2ZD2Q+IXKW+2v8f%fBn=B!HsE2i&xSb2`?d|0_&Wb)L)c%5VgpVYR}7Dc z9-(q4u0Q^SPZb&1@6XkGK00yz8K3dhX~~bLbCyh8U;SAh{RNE28L|RfO=aAtEalRI zzfxCFU8acM4V1I~qfet}f45o^I{|k5eQ`Hwwf;yYBDM*>`~1b3x|Vp45)`IOxuc^D zj48Gc=o&5;7e6Ya4Uam{vchF0v(r5l=I!i8usKq|9v5~F^WC?mw4D;%ktjFxNmp5q zcYAmXcO&GJezPn&)XfLcq%QB)&czMBTI_m`G7w=pGb89cMy*?^?*C8#=7{QrFVXPm zcjNiFhALO8gPuA@@U1e|U0mqu2P zjEynFu6Mf0YwavT991_Nz9)PdCmIBxwrfZDKirld1Gv0hznsVg^Y=YQMB)8><$Of# zF7#|AmY&CPfL<8QV-`x4Dk1i1e4~&atP_4kZsYV-H?x+zmy9AmOW$-?JC?Sw{cNfF zzVi`<8t2zfvnP-)Iu@$eti#SE*V2l67%F|7K)|Wb)g%urSRDS480+l5tm zj<#T-KCRFK_b8HPM_cbdnY4z5PV*8h+6G&0;%ja+f;|zj(=?{I_sY$VPRF7l`c2FE zJd+eLdC(n!m$02%_XNdd_EvRC>&2VbA0T^b7b#G5tx_#cpGFc^V(ryO)7D7UM@tSh z+bbB+fTb!(l(q2B4F^g6*wmJ~#lHP$kj6As6rYO})6N_Rbwx@%>gp(!&&2r5AN^Py zD4C~Y_M$li`N^l;2HQ#IRp^KOOwv%A@4jB*BJd_dnuN>DcSIS&m*GZP@gZO5Hz1Mw zrKbrc*OWH$n=X2AGCUHdKa;mevctq`7iAqF++Sdl;_C(dBcq6JfAJS|`;h1}G`Q#` zQd~$$^1TPme8JpQ%2t1a;@|^UT0YHNrjDV7jIm`q2bKMbDAAUkHBh#%!!bRMXCBJm zJIR)hx&y?&!CUGYDaquVGL*a!Pc!Ku`ull(CfT2q3AG4-o+^#|=0awmwwE+m)es=Rd@C4b=6C!986%Ds_!4AsnuIek9r}hC`H*n=Wi1>OQ*jPx zvWMkx@e863W03_5Nb?8QXS2EwIB&W!_RJNzrnEsZCf;o%5^pC&nA8|WM3U0ZByY8; zl5?}uMPGy38SfMtf;5!dm=9q6tOX6iFqdn&Ptj&)uZ#mEE||N9ecIosuROumDR-11 zr`wK~u3$xJ4!i-xe*>EiEc)uFY#ZnweEiMw-CK|~<#Cjs=`Muiw-5m<(_7;o7e>Ei z!61v7b~uvB6i`9+1|W%m0>=$`utaZ6U2O;4HxYF%4OZS>`VvTso-bj!%F2_$ip#39 z*<{F$eGp2XZ>AW=!+EA_UBSqh#!=Y$*@n^<9wp}WYS{4^!7q}ylv%`wk`{BT;9h5& zx>)_AE*|k1zbm(>12Z-uTxv0FF$EhqNdA@B@14AG-UvGTjHrw94bHpQ$hv<%QbcED z-ARM8?r#;#2!mZCn6Bdu)>F0+nb&MpE==SnT5_$RyE!oj33%}^3E0S*gSt5uhC0ij zGaSH|5zQ@V8I#8nEe|<>a$m2^SQ~3~t>=MIHxmHO-IiMl5>NbsKou+CB6Fe_##;*U z`GrUw3lg4?8=Dz&7O>VBD`EIluRk1#LtD88liRx77qt9NV7%HDW$NXSe6of8;LZ7D zh+!}|($X&TO2AO+-E`ZhrFH;aV48zBb?kDi$o^cq=vzl*W`%K@6%Nxs?nTVDtolJq zIrmw{e@}*EfA;;(Y8BRjI{-FXTG8Hi1cxJ%7Z{qFm!YW<1L)9Q#Y%5h_u%;wgdWUh z=Rsqzl@W&a%y;OC;spD^DnLuqVzU(1LO|AH-0UoasTQjgb1(P~r=97vvWWATNS9@6 zi8@8v2PZ#WbST6T->$==AzfWmaS%;PGU>bzC6l*qRm(W;;}IdLVlUTZRP120#%rnifkneVgsu2PRm7u|ihg3ZxGXHG{(juueQAAX9PS)T@e z-XRl@%Sz7422m9eu{$#h@IsZifVK7e4X1z~(mbKaFIcq8vOr86F2|3e(nWDo7jpES zyo!{6s+6oc{6OXQZ#SpFa6Esrt%$f+ZQN*}`YlkU+GJj48Vtf{y&5Dwb$>c7Mm&lJ zn+DFMCR{Qo-ilTcWrka@K>@n_|-hNQSAg>}davDfMCMi$kr&vR7PMtu~ z?LQ&&C;~4L0QclNFOw^eTp^?IgHfqRVN_oOUd=_u!`jL%>gWM-d&Jz=c|nQX9yZhc z|9-gF{pe0O_5N-+QF9N9(jfOVaq3W_(UMd5+6sY=z;xi zoRbqN-9uRcooBf%Z(lHP1B!{U_7$K^+P{xg+Brzs=JhT68uDIWFt0;xejc$grlB^= z{Wj({)8D3$J8aDA!I&S}n013O9X93;FJ^)}2U9+*TNHu(X}-=W>#ix+SPF5>MGZS; zqL>aYb*+(By6AMJgKe@&yzyny=;Ov_mB$-sxBwQR0GN5ve@6mEV&SBXbUt78$@v_)=@UV)m>eB zKubfJJZ657!Zm*$7k8UQ>msgo6^kRKtba9M$j``jb8a!NJMy@_TifYYPl3u!Q#}gW z%j5$Cy%(;gC;w<-R>W8Pu2DO>|H`zi74Ldgo}5-dJGDAJj6QIWWYw>6Bv!eHPD+(Z z7mzn3b~CY7uP~Y(NvtyTU`#4~9j$zuzTJ0kF5bO2el>U^)}4!pqNDR-z1WwClzkoY zuNiUjn!kIJSsEh}^x#ajT@7q+qdP;mCX9XH6rE3kZ;t3e60y1=|rU*qrm( zf5HMxBi`3x{6i$r0wO7nX64gG9(=uRE@c57Jwg>&`2?9X&|aO3t#f?yh@9OrzdI6B zNcwy`M}ovzwfN1Zd{z`WyE7ItMHWOq>qYN#dNW^bdI}sV<7wyo;t*4FdmDzG4<0>1E0?L8B=eP|-r*eV z)6sLBy25y0LsaHE#Y_wTsoh#Tt)884sEL;nWDob0)%((^Dpbl!_A8Ujuw#m;%QthD zTc9M!Y$nM~N%GaD{NC2F%@noqbi+dX>Q-!>p&6}xXt<6i+g(@=#%-HG524B6dc)CteB zqoFB^-o^5S07$YkVt0*voTlBi z=X4s|`K=2O>}{UVl-9;j)1#p&{g|VKat6u@B{F5XZ?p&}M!=Y|EI;QRCht5frkDOE z)FdbWncAl`7pKnQwAg~slt5#sYTNRo%=lH!AzL$x?;5_6qiUP1>E@AD5u21c&sn@+ z%DbVaPv9b~_S`ogrPl1$M(GSdhI$0jHcCiYLd5Or+v*3{b_3s;ZJ+h{;LLJ6wvd0y zOUN}wjkJ5$HI2T`UxEJ*Ysxv8v6v7CGeWT`8{CgYfaz=q z5U+h^(%#HhEQ9ogxJI4^9_V~d$h0ZBGK&c{RJCi#F*MIPFlEz}emqd5iyj}1=+o34 zI+08#lIcV;HO*T@e~^)Ip2?RiI6PF3M7>ZwJV-zuhVxqaEo$EJ%O8AA}$_%R0Mok=M&q&aKozDOdgW@HALfLZ` znDg2X>cye2?#-8&vDzp6xA)_YO61?(KQ5fCqdvQ&4f}!|ZR`t8*%+FM^Rq19nnS1~ zxcc_ev!Q}in`L}|{O+e2U*ZUHlJ1(T#1c}M+Jv`%M#4rC(mUy*chaQ*o5^uXyzg+X zwAoKQ6VV#fF%B7ekbWI%T3@sPk{DEOpM`-EYnp&gFv!oU^g_OoBt# z&k|jX5mPSn7Zw@KT2slCqvM-ey)bbXdwcrEeh?8VS@c7S53J`i4ClmrEgreAm@e_% zTa$-IFOMm-*4b5E-d5_ZPpT_#IKuZ}S6wo<9gC;hq~AR=nd{emCgsatY5(fUu`@iY zDDuoC@dTwLgHn=VAaPrXo&QL3*g%fu`%p zt&*)8SFX^_wAZ`VZw7I}#QDv^L|rr^WT3m$P-gR>=$h{cTjNNsbtLoM4!13&!*%u$ zG@9LUzI$_k+JkR%YVQykk%j)kkHk(8Z7)|Kv8r7~Iq#7v^k9}CDa^`ekNb$~s->fS z+?M3~^|tE@xFzV!>~MM;o7&9EH{C`aiJTO7IHd%qyhn*rHgBA*V|-R5O%^?QzE(-A zl-fOEj=YpuO}6~*QQ}!RBH5N7c3$XUJvvc6?yW!jtCrFTT~W2occb<`efQ46%8lD( zW3Tk4cn_>MYxZQ(wVhf$?QoaXSrqj15fl_4kGB(KHhP{WeHtM&f8l|DM)Qj)Ww801 z!b6+?)Omx=F9R`|=7#`jc=Mx2w9{tLZQ6X@*unM++qbAu7Tdq;FU<-}!Ck~-&XewZ z)s|SL&%N)1zQB4`Elj#aS9VyeG@WTqU0wr5DEm`Hp~32vJC}0Xt4@iXg39H%hbCmX zyKB{w^O5j++yWEUKB1efpj9{YuB1vsNR!B%iM-0d!6Hj=ycf4{JWnn}!oz{%5ayRb zP)?&$Q+osJ(da1s^IrNpZTizmf9SCEj5kZq>jpvpQJ+W8KU5&GN}qaPl zvGYx_zRp`sZF3IMosI+JWTW6<=n0M+$lxCDrIxNb8CuZ2>K+2L4lXs;)+C8S>#9~b zR3za?09~c1T2iw>>L!ZeX`%@Fyx3su<#$>2UmM#VX>UMgX|H2wLIGw%8p zX<@fV$02X+7uF^(A|^5U3KNei=Vt)m?Mv)*+qlNus-vP!I(IHXe=e@}yxF%&&y0r~vnEFf9Cg1DXT)g)0{Z4NWPXgw(YXq<}CNOPYg8_Wj; z!sv9-Vn7HbrkmX_V!+;|CWZqQo>du9XW6J?qDqvHs45%9D=6t2ijr?Vok-xHbhUW)!01Ixu3zkvQB%pMw@7 z`=Z$R_@+<7NX72os^3qi&P|UjhZkn)iiyDnV;^4mWzAA%?xLjJ)fIG9Gi z$u#t<@s!v!CzvjJ$$Zvrs}SoBcQooBWISk`&1=dZ*bBT3;mbp{*-J87yeMtAIqj$ za8DfsR|+hczy4y}=;5~V6+Ie(g zqUKB3OA(W(35wJOL4$>$ev~`jt3mFLjh=U2x!thkTrYX(lambnp6o&N!Xq$0LsM(` zOz(JT?`=^5VE!V6!K$sk&W{CZeCF2cq}lHH32zZ+To-S~HI1e&;PBr7XI*C+#g?bL z@>&$hkW%@!j?#ySrGO#ocT05`zcPZ6hVetye~9(LyZTn}p~_!E5M$Hd*Kr$}wfjGf zMUJmiUU;c}wyix@O3kk^9*5LCikeejB+cu|CIX*d@b%^RZo*23sb}N0Cux1L`f)+qm%U;fi0gQbm)?i?ha-)Apm=IH z6c+)-KY*jPeHk3Ft7TyL^H_CIY*}~S=~Pdoi5-cCg|khw1?5jkF$G9|%}2nJ>+>D% zaSUJ*oT%_JFM<3IDZxa*yj);DftEEH%6Hd4oS~A1)IWqu&QXq;JBy({ZH6k~ly zR}Mg+t%`@+sQrVhsa@*hr}XwZZ=b4kVE@Q&4}H4-y{eZTZ-!741!++KYQmF)w;(T*kv#r3S%;Hs1Tgf z@HIGR?eBPBxkZd`xW$sD>2H6=-tr@F!5atmmLD{41AEJN>$RyS*j?kNK#0Ixc*I1s z5eaeb!pzg|AF$@IcF$GHp}pHW$?026OjQs?{LY1n)7QL?bc@WJh4^0 zknr6c9uP6$2u(kY$p&my{4D=&`QQ-PqO60!fRdsrVy0<;xCNu(ee+u__Z{O-=&{`Q zM{tjLs~ z=A$R|-OI)y%ljpxJD!NL2HBW;OOtV%P=S3+r1UDiw&)dqT0!g<_!reHv|jW9pedqR z5hd;?o$sPw85x}d)bH}?{#^{=4O+Rm?`;$4HFh^OY($5i-WmM*?lpzta9c3TaIax? zZM$NxT3x$Rzs;*_Z`5yeb!}X~Evsug^xL+&w$rI?r{)WN_tkb7JB@VFSKk-ne2K9Z z`*FaqZWf!cNTzTpZWlm5?-|Jh5rbD#>+~+KghhM;^%}0B(!3QIBDYR~_yDQu8r_P%RczIwYcRl)x{f*Hi%>r?~>`nVUbQ7X9AztLc3 zw+#$Q{NZQd)Xh-&(0XW-xQ4rb(QngAjX$$H^H3I{s&3z^U-H38T&TC5zExTyaOuxY z4!=mmQ>XNVk`41CO&dcwPaWo`uE$Ey)ti_D9!F_q!4TuXz}(_!v%7>XOqhij zSrf2*vxT9cjZ@7IC9b>3PP!$ZDUg(8IKVMrYCvL&F0swKYjcJJe4WojIKXl+D3(8k zrb$+Pj(XGJWUyWxS{lieSe#(lbb065>@YpLtoX6)MiG$Riw z!cZ5h548~rJO0-K=GM}7y|W78$1@olw70o&-vB1N_#U76(jp0Wo#=6eDbk8d7xU9m9VbL8Axf$YXwG8b91(NAzTt z@(A1g8)Un}Jo6fLnT>k0zgtOV(14aYVyb3;ceMLnTH7a54ruq!?C(k~;18@f1~Bye z?^(8r&ld_YWv6@-jiA~8$)~yKg=@6%nC9wJ=y>yLvOnm?A0hW z1vd29iSBTv$(4TQpdQ%Yv76pmA$ z-1)9qRU#Z>iNHlvtsMT*WJ|Z~aDTpE4iY`i0Bi%pbU*|!>oIi&W3}X+0Sen|`bJhw z(JRdQ^D>6V{KW$kvxeo|%ZCih0e?OR%i{y%;l{V%Kb%ooR%H0klh@e+I<~7{7wzCk zA(d;!HxyxNXIS`dGZZ24GE&n}e*5Y5cuf8nOe3`e|FUi&z&|y+obW72BwaL4K=iSL zJ{dp`F@Q|)0J-rYI0ZPnVlTt9dkFg*z*UC770Pou5g&|+Zr2trYZP3@TK!{Xj zD(Gc)`L(_%S7ei6)^L=3qB%t=ZjXC8fHcVr)-Y9^X*t!e{^SR?*6wo9>{YxZFG;$F}^8`l{My>@h;rP?xPVq z;=S_|j)n{sEgq*@$7O2eC8nyVGWHXGQ#TJxK#X6nC=)gCmg$sF>ocEdGHL;7l2-jy zOlfi#F^S3dn)rkDnRgjYn9S>j=`&xx=5zF!xx@6CCsRR2pZRslck&wepV4OqRpWqm zvUlU}j6UsHK>mP@%yiLY`=xlOy3zWy zI^+JYnu4BpwL~G#@KSu+7xliR7H~iPBN6Au_!Utd6DAa#A40|`Puhv`tLWh{O$X6ERVna_3IXY^E|8gTY;=aInH(gN_7_c ze9mTdA)g^TyCuyzdi>uD<4G0TSkYZChvv40T$x8Lmtf29roP3w*Yf0UDuW5N$- z#O8BD6bmI7aXC8H&|FzXFlVy7R)l=Xl2blXZxj4ZIX)y;&wS6{Y$I%A?RHR(4(TLV zWaYNbW))SVP*kx7H^;I2wn!|7;YQJ0Dgoc#=m}QIH{DI}f2<&WQi=|*Q>mo{jb~Jl zO;}OyFI12d)S{Wss^C=wzhVXJ3I62gDs>LQyPs3Rxdgxbzbd$p;1#Og<|YfSavTr` zW6dk9*kDzUdTW=Q&;3k&d(8UwT_@-4G0Q?LUet7esUK^8QohBS*QlTS+SJcn+Sk$8WTP((zwB zt};l+@3+t)9iL;NLpnb3C#pMkS0DYciYeIQMI$VvtdtJKi)O2_QAYH{e)T^p=VR8l zhaCB6Sk!kk8t~H_n~vSebj;$Wm(qzgDH)rNV)rQ2H1R2mlPo@bvc$%V4*u#;I**8A zPUibU0ULOqJj5I5*09Bz6;(0b7V#AGz1gA|A*m~@Uo$ z>KCQ)vFmTb!Am|o^+&YlKBB%R)xRA4rGJ+4x&Aic=_6O4k!Z?9?EZ*GFOwww6Mai_ z-{#}O=XhJbf5LdYCG}mB?Z4yQ{_!T>2F-6zREquLj0g1}7yphU@Z&i5@F(a0!zaV* z+b->&mxZ_Kw@1M9#wV9|y!Lm#|NifMXZ)bwydblJ{*T+JaYYSd-I6z$oTo=(}btm{QQnT=DuTnS}O0omhcFyn}}ndJpSr*%y(6` zb*zDh=2)wmS89G!g7K!vvFAg*f_GLH{wI%UzlkktK73EYU-J7`r{-sl9^H!Gv}}DV z6}{&A?^g7X`|iL?Z+`s_=;IUVpHB0g33BZII2?OF`8#F%&7UL2>#-yFnZtqBH;;ck zspfyKKaS7Hc;)cdgyZY{{Ej2yP1w@s(+k!2&ksNOr2aP@l=kxI>o1aj87lJQ;G;n5 z&%<|G@OS+6VeU0Yz*jHzi!$lh_4}U6<##M`hvtZ!*4%dpE8ob862~Lx5Q+196xH*6JLS%dH#f_w z!#m0+#haaWkWy)uh5S;qACvYU*k{2@{62}d zjs z>Cus>Z0>v9&Y#TX|0YSt$xr)Bd&epxQQRpS0!e22ux=i<90UY3jZNPJ{2 zzE9$Xxp<$%|MtGsU-)@nc`0+k_75oWad~m0uQc+-=Dx@1LFDtzeN89v``PBc;V}OQ z!|d28$R0eO`E(woWIoN3Ur_Ck@yJJYZv9a5#6?+t?kJ*?eE9=;@00k|lZEpAiR1F8 zl}cW{7m$z5U$!WDGRI%%s`d6(8=efOwPu8pueh3=NmX&=i+=o4$$L5eU9aT5JbtRy z=ViJ6vR-{s|JsgRFDm|yJb_ocPpWUr5$mgCpvup@JT`tD#fPYG%yIGCggl&&4~LSU z^TreY4LsA2TmQ@Q{nw`)_q#*-`__+-_r0F=DSv%*D0v|>e$9yrHS==gu~YS5%i;fb zQa%T7{So;cy|NzWzB^E-h7p=?MAMkvG4TKG(M2 zG~ZC~!A5TMo1?D(Z5eykH+7u(F1$KuP7D(leH`Zb_(j^J+{lJ`sTjwoiMI>GX5kmY z9(iM$Sugw9o1*vcQ}@9`b8#4m+H0h-?B;`F z8XtZQwP)v)xeU5EU>IV2{BdM}<=!PW>t-&dYAxU8lkxFEt>r-iN<}ITP&l>89;uj{ zIB!feP2id8{i0dN90C6(QZue2<(xwdt2?LM4E~iG*(Z?Nhf(S(vDu;LE_DCR(r0pg z`wXcsUdN3^{D`4Z*mQt{Cs#MBlD?IMx^D48VnMNytl(;0>Sm+uHKVt7!S%t1wN)(z zEn9~>%)9Tnil3lsV|rI-P01y^9-Img_~jx369_O{9H~m{eUp@@v*ucr@F@a-=184F z0C~cZauYyu#UqG)K*-$%?jx)RrdGKwgR@xa5HgNqqO=kn;jiY+rq&NAW0%m4!-u1z z<-F2-O%A2@ZWBcG%JFw}c*s16KP(&!RF$14qjCuzqsDa05aWqfYQ~a?XMCgvIW{;U zEO*$rwJmn2KcS-3Y5olPnrQtLEBw`=NHde zjiV(ew*BT*H1}7lZgIP!jsWwn*0{aI89j-6w(8Ae{6cq9&>n;4+trvvPdBHI7PIzA zbo-}Px1k9TQy7lT#v)@=@@GJ*&RK<8EP}ilD-|gHDmnVIuD*4=wPm>Dsm;6#&)>8B z-O1lW{5{5Bguf;H-OFD)e~!V&{m+^ArC_itFE+SPB1MA-WYY#psCbYiH)Q_Jolo(g zfVrc2k?Llw8msNtqPo~3e{9j5jE>xG+-@<8FY<6BJ;3>se3aAU_!Mz6u->}pUIE|Wn1wmXJG-hJ z>icWuFf;2lNyUY5vnd%s>|fOU7_|4i!;+{{u*h-G$i3`|H&7k(bo>lBb))TLzgPDQ zpWr_3LjBjW1NUoFbUzHlb#2lI-hJAXeY$sV;~3mg42DPxwbok71cdMU z33xxyTJbU=6N@{h-VdUz3=M};E+7e*FEdr;2K1)ntFvflYPmd5UE?--3KP4FeJjR0 zNwN}LD@HnDP`@SNBML~K0+LKg*sl`O8z@6k*!0$#3%JeqYVyWw0mQteJm9?*uccG? zhs*ru^W0u(hhRr%+R_A~Z#?7_nLtR82iTFVWGg>+ol2F;cCpGt*5zzM_Z zSy-&KU^mXQVSev{dDu=&1*Y~+qnL3N)*3Y3Aap-nZQ32)~D zk7uKwwV0wo*H$}EvJVNvRMoKkY%J#KP8AU_R7tL<(-J57s{T#nc0MaLn&wcNHdRA0 zLr_J#o&>jur}V}Pt7As)bG1=I*2V!b^{afuit`5tjHbfAV|z`9zJEQ`o{o$KU2=Us zda75|8a+Yj&-&%%F1@E02-BOZ7Z%SC(6DI=1m3R2RpS&yo-V%)n);yn93SaS4moyj zUAOyX&=(bJQx+Ao9+a5(OCP1*41RJ+S+>`z_Wm8RCKFa8Os4Q`)t=orQ_Hi3xua`S zUiZ%68D4G5RDZye@Ou-DXJA$l9iV2)wM-z~|CufWw|voQesBAN5dUyPM4NIz{d-XdkCA>{Wgz7A!KJ6@0tq%}sY%JxMEQ{|)$^ zF*hHTvBK$w0wEp!PLD{{PSuVzzp$37vxd!YJv1X@>6Y=*yLYDBRKyxdNlVSL#)Iw( znA$41dOpTME!;Pg(hsNL=KkksygzOPD>$gZ_`D)3(+gYC)ZVnH(s%Y8L@3ZMMu{BplHTEcP~Wj*;w-ut_v6oXdQll8iJ zIQiUNly@$12U$XGKih5RvMTObxujZxA)@P6n#6ycnS+Mmw5d`XO zdCT(XYvE^&uymH>NePRO>c+vsXx%aU^AA4a=SZ^DeiZjH_$G~{Z zxSN0dv8RPgz}_R*c$EW}#u-^IqhX(ltTAH_Y(ET}8G7`R(d8dIb+JD- zb#CogIPmJii`6z`*daeHvZZdM3!~F4!LM}#e15CN=jog$k>QCTeN*zfx}%5Z zXVhQ~j}Mk89C0SXx6Kf3agtgG@REh_!-V38)Ta31uwztswN;_T4>jtt_~Af8@;(N9 zP|RJGSk;FvM{D^b3q6-JD`217tzZ?wS0rd&jrAAr-M2}kdI+v>32>9n=({aa7T14k z^iEVqLQM`hO+l$T5*pgv_bu3=)@qWM^`b~y-YmuO(nqy75j2+ZlKSAFaS`!rh&SI} zEG1+ocaWW2P-WpwSnk~x{opCNsy3x`jmYGRQm>tLO$V>K3R4eOe&mnM_Ek5Q%U)-5 z@;c^l^@5UUNaz~BT_|XTHnPR47ZgW7V;m^7yeY6xepS~lX>)D!Y(ei>Can|iV(-wt z41t)HPUF7ZLaVl7jw|< z*|@dGwK36Cm`?a_N{nF-3gfo6pFEjuZ(98;3Z2C48sJW=r%bbQN)^Y+ExE$x4C;gb zlB=h9#n6JI>Qvii+|phZVx5o&Z?LH^z70T=e;x_m8+q+ykM!{N;%cq+LIyNbVEH&z zz=m*rp>s^GZenJ?STQl2(^mM&E-$ULK1H1ZmCnvQms9rX|5(gW=7=(-oKrc(o;7y?J6kP$_HX@i507ugbE9`>eUrcLctcRyA}{L1fmL-4c-Iu6|N{8 zERgj}EIL-=04q_-s@$shKs)C@jEer%49(Te3RsR^u{%-@bZ8W&GE9Xsg#AmLVwF(2 zfv9@!ga|Jb&v2WUgp)U(t*9f`SOtCq76AoBJo8!JRpkbv*1FH40$#(N%VU7QBL>kf zEb)78ufjbVl>4gg+U%WLGJmnC!4ckM-p-y0r^sKy*yvBn68m`>t;IFWbMgAH1Cs~yX z{0rRn7`Tswzv5ql|E)3wKVw?yNog+j6SUVy zt!1}ha<(aq423^t*)XO}$vM06Q&(jgvd+lWH-0@cslsB72%&z}$>JXLO<8yUVKN*2z?Il`QFzOA$k| zYSiTytA*YbonTIlh-S5BPI^N_Y&^GFYw&Y5bq;cUt*b3LVlh3mI(I@$Epf4@Wtv)I zlwkEcXzy9TwU*D*xFrq9i#_JlbGh2`DV_VPhb$kWNU**z>dC9DrC1IML@qG;xbC@} zDjAWZhC_y;-}sP#IG;CQBwTW20?sr0=fIC;{{+-Hc?lAs9*sdyh5nt(ui$41{vgbn zbGZjqw10c7=3G`GpZ36dbA8V{A~YiU$T614JUCC>MiK%`NM7g^35sY=6teaE`S-81 zmMvh;mIPlS80OhM_1M`ONjJG}A>yJK#00BP!DA)?b9%9H;I>Fd$-1WP_$Jh{tCQ8y=>mYyM8N7Cw#kyh6~P0cVLMJn6Y z3e6hn+k)~+om^?v{PuO$Y`4{wGm(GgunkIg=+RJzmuqFYKH~9`?c1E z5{ob7fD!DkDV4no`v}pprf0zZk912bL?z# ze=|1OZQd!L;zL_$#}S)W60V+K7x^mx)fPSLg!yjXcqy+`zZ!eJXEyXeZ)V=ij@Y#oc_XrOblVxHt?%KiCAGUaMY zliy+gxrV=Vs!h>h>V-8JE6FU((9RL(ZMpMBOb^uizv_uNuAN>|o=n5UtsAN8cDP(A zmi+2IZ7KQH^xP@1TD!T|tf1`XHmV-jySe8jBD=X~2>f4nb20@wr-*+$x`t!2%8z0T zM#u0i99ux!JnK$>VNJ2da;{=p+zGY~Lq^`#FHCU@e~s)F)(Q3SiXMxHJh#0~G7Ms2 zoQ>X|hxs-n4@^*tFo=vb`jXGdWC8OPqP4JZ3(o4W=5#KeL!xg6YCd(JQ%R7r%awhi z98n@i)YRA5$;v0hVxmzfp?4C{y| zlX4^sH1^PQ(t&=B(Mo#MsOk&y|@o9+fAf*xa0~hqDFE^Q-}m zsUn#(o(uSN)EQ6STxK)+hvfFTly}bLjOV)2;~nn|w2pT!ReD|#l}lwB*UOTHs0@AE zOOI0Zf-y^f$wa>76Z>GkqGs{tO(RKH3v=Aa^_Sg)#9)IwLOJ1xUr6O zmNA9%@S@IjHYWqesP;aqT5AfQ$HdjmmwLt>F@e>3DJ<4%f1S^0v<_^t7kA7u=x7*t#Ur(LYi{J!kFVcwycDDZlG5M`dDi zptbbUta-ms8plaC+jOb(!{j1ngmp||okO7`R-@=jC?4`7RYrANjzj~Vt=6e1PuLco zpks(7$DcC0^zNN{Wg92k#PJ*uxit{~5~mtGZ*MkHN9KHkazkAKUTfosyL%_N;y_%T zZs=xvcx;=TapWCvOr0xeV`_~I>S+!{mF#FwiQU5#a)KF>Z?+|}zntW7y=85aU-Fo%ac zV-xUtf>jpe8_Mjvzj-sQT51FCC-iV3KIqz@t@dv$h^Z5N&ZjoU3=sw;u`p)HeoulJ z%KT7B!8-ehDO--18j#qtGMb&nV|-?w5)uY4A?(~N1S;U|`I$kQ2w|m}gIIH|@MgdH zhTjZHU&7{%b>=Un!SL++9#fybCy)f<%`#yxju)QCR%ZSX-P70HDRjeZOLG*LhD0Y6 zgsr70ID0E6a^nm9-utCP^IVDd3(UvWMDo6anDkD-?5K6U6q>zpa@7R98NNv-se^Kp ztHz@}5J{OA2J|X+Sn}e4EP8rXkgT#*V2v#Z@t2#=)|yyV9G%G`9V}q6B|Kfi;sS$k zK*EJqxLU$RR`@d#9$^DIw@+OO=&oK3y0f%$%;YRPrkwIbx4mF}4T2$wVUhg-Xn*?Wk$Hpr} z@fiy<nXJB^Vw!9KMyt3sMV*XTRWIb24vp0DkYs*djCb z#?m@DR^yA`yt9cP=>q&>8eO=8F8GC7kAmNCsyeYq)IEE`uB8=~Z#Lxg%a=o4&_0CVk>D1C<*LLsk=e>zwb3Ha<13M>+gDZ#gyV5o$CG>RiLL1_U zJSr2PwlKMlrz;TFjo!o788RA4OKENNVhev4C5_%gksFN{r0*mWbv~PDR;nI@;oMNoh zoB}Dh5O+{1ozF5usAW5~py9x+0Z%Szfwt7CBsShi)oO<>{_f(^5YvKr@oI9f+yfHN zX(BdR0@P8bEX zbN%sYS25<(U&PybO?mu^F~Qi=Kb7zCsrY+*`bi1Ko|Y9T_H>hqG%id|Ef+yQG9P|g zl^zw4%FU@2_!B2YWo2LGDYix`J1FDv3vP1R6h!Z`;)pWtADk`fu!{CH*pw(GBgZaj zDkdZLv8PF{;mipc@7Jt!*))C=K;WP|#O;ux}o~DIPGkTVED!CNkm2YRYP&fK) zv}XaUZuCXZv^p!<)NB`DL~3xdxuol8HH$Ni%1h=m7IMy%{QUI{f&ww-vZ}$|n$VPe zQ$p1wqn)h_|Kv(t!y70`>xC>7&e0)?ZYy;0+b!Bpo@o4&zxvB_BA-HmTz%PVP>YpcHUo8HU0$v~&qT(E6p^ErYb&DnS!udL-uHC#Lv7NB|KxLwpesv6L2_r>ug5ed3*7=%G7n-_Na>t@>l;rC?ImXHNUTB=DFIud*{_L#~Fy| zX|g=jQyP^-@?qGCjLMhjW_@aO>}g?DVapgRnUc%pe4J=j`eS1;$Mz({E>s)6yrtz% zAqa0u{?s1TQ-iJVX{{I2hmhHs8s1rRnV?d_%KMOg_)#aCNcaG~6zyaV5o+G3`6Akl zQgNA&7EH_%|3Ec1zw( z9?kB~vk~=+47(G5Sgo=}%y1OdLOuiWS-L^Fh_)d*Bzrb+U59;>Bl;I(Q909IC?0~T ziku!a5(|^>jD;f1Y0UT;kIIan#*7aUQdTLI>FUYI8?WN6TpfueS8tF7WEyv7&LR)o zGCk^tk4dpto4B{7nv8cnvG=jYUL4y+!kKb42uO^25t2ppLdJiQtb|)<+iPEPe-|T_k(mO_ z>nj)^rln@`SlEUL);}L(o07@U4`9I@K7K^XSC|%Ts+(hd(bJRSgMBVq4J)&E zFy)MXgB@CNuv+Px<_E3wck3M$>y1{VLht&eMR0-CV4xPEgk=(l)1%_F545)^IAy1o zsb|3pc8k%`_*k=EIN>w=)v8kkrxcq{2w2=6TPQE_TqqYjdk;r0@Tz33buuKc;2b1b zlB;p}g6Q)Z`u`of|NPqWl!!S4zLFJlHYW#lTB9uzzr77OVr=q8SjJbWT70IC25*O2 zVlR0F;+7*WXrz?t$J8TenVaHu2a`WvZ&!XT`X}Q>->eSt4Xt>z*7^hb#2G<))Nrc; zT>Q61uC4qCC(~6|ss0u{^PF5*w3cPA4&j37$hDbOe2iIhtv^1wm`Co&Q%>>HVu~lV zKMC1Jyw+O%&2P&Tl(qU^LV&q&R^Ec^0#NCFoz0zWXoIoFg#t0+0y08$)KOv_{boEV zXR#c+SQcYyK4i^~bBmnWE9=|{tB@$=)J3`=;?(8&jpL1mSA%eZ|GE+1H;>Op8{ z%^bRg|8)M5uL%(@nKM3_aKWHA*%+}lE2vih%G!yTQx|%sR$wCI+UVKG^2CyZWBe%} zqWNGyBgA$BICJzT0;zI$YG2dKhuIQLBfMWD%)HO$ z%CCgM-3w4=I$t06YS8<>HtChhZ5&t8RLs^j;ZN5t_TRJ~#XPDrbq`oXK2WQdv9?LN zuH@1k5iT7j|I5lB9Sk!8eX|f16fQ(w2<9w@tkYdtNn0A2?)r1o;>+9r)Rdba3PPss zmE)5ULLj0)S)aTf0~QVgY|+m~CU!nyXCoK;7$x#wXJvpM zZ7jN3+5WUGl2@i%t_2UWVNHI8#+Zbh9CxrJ%Wu!4Oo1$?u>yjSLaY-q@{HCp7;gnV zFEJ=8gA|23h#!w0Xu;vTG8msYg+^-4?O}7<{;ja3$XWVF?XJie^iU_5iD2cHP#Qv17121L7uqNkgF>5T z@>;R0w;MZVD-7ZD=5YlRRmF9W3J39;~^5Nu7zcvNk}&X#h)3^0kzRPMq92~ zWyB7?Pz4d(2de|0Ryi!wo0k+{L|&OsXdoh%>CYTl%<7fdLbO=#3>5pw;y14@VN)#C z2h46<;ks2T=557c^ZbChB&eG+!{Jyh=QA^_V$tXLdBz{Rp~C1rLtDO7j$I$dBl)yF zdpT9UJW?AE%r)E`8bn8mP6qdnJgs&0JjZY-61)`v#|v9@Y} zxrzIAulilRydi0H6!U%F&X3v)B3J3n=`koPqnGH$k_v}{T|Hc-_$QVgb75b4EKnMZ zU;bo6XW+>(rmn7=>1J(da)$j8hZDN_JAvQ=y4~}eBG~~4$^)?*@P6DD!5&GOyXhYV z+<2K40wLfw&oS^y3W#&6Ma(Y0ffEWf9T$cRF^W#*pq_d}Phd)EqKv#mFx*#6qC4 z(;0K>`vWBoxP0UsL2_YatbfIlCuPjQO|dm%r2JBi+ILt_rLQt-pz-r`6a=IOu~anj z#H-IC@VmVhT74-N=8gNTs;DhC%3fPlu$h*)rF7OwvTMohFGc^Ij(pinh{ z@5sC?G*584aZIczXoTXIVE$-frsN-iU{D?ejK#1lit)tamQkt}m}HOvNNZ_Q)1tP{ z`>NT;0VzUpL#D)M!)DNpm+i<|Je0<{a&UCK@MLddexYY0S64O*)85DqBjnnUJh#rS zQwZl&Yxqu-VL^Q?Ia@uT=pyS%#m;X8t<`yh<&DMu6=fszbf8X*mkPay=WWVj z?-+o+iSwd7z{Cc-b)YTR$PxkYPndKo0NFPl3qCf=S@^2{LHNAK zfG?($DoFz%Z zEL;iQ)hTf2;P|2-$lz%-t>st4a?o->#Ohw#CX1wiDGO#^DS@6Y;{8NUvhGY$l1hd; zA}8}~GQFF|cVpK;y?c*mN6+anVdG<$)rsdN>#^|el1_A{H-SKX>mJ$~O4QitvW_q0 zCBBLBPno5ZiWjY3#JkanJ=oGtDK$C{ORH)DdjhFn((N=qko0_;G-2|bd(0i_2*m>R z1Sj)A55YNlrvnpHM`roFmF(ko3rgd zqaFNn!28F5Hsz1%{=`+Xi!fglwq$N#QYQavs!eUK{W7Wn&+o$A-$6=}`J#LN78rK} z#|O1-J-12wv>*fAb3GB`%>X{aM?Lt?-n3rb zDqkAEDg<@5t}TjaV#D!TN^^u;|kZj-ZtU(jw`9=9Q>^H1xlu z+ZdGTE5kWiVX?J|26b0pv5iH|7zSHxSgD)EN|@{3i4g_E#kG4FSiM=e!t7%4*H&$a z1=e^s&7Ycw?+=+XIeb$CvaqTIfw+4oBJn3ywct6q#OZD@4!9dX3x`shV}*9l4wwc* z@<2a~nsFJ09(l4V`Zbk*i_u=-eWP(~M!veCA3RyX-22A7UD~SJwf2yy+U3MBAXEms z>C#~_5JZ8F9Vsj$psluuq37E)*kCMKHv$#F8V|)Ni8JDF)5CKUN;EA?N(f0;V=YJg6OIV=ze<`fg@lCXK9 zNtPovvRdo!L~iVC{nKfj?(kpF%M!QeY^^!7zI!LrUA|`LoNgAHnYqiv)rH(@KtqmV z|A86n-L&A>EzFtq;O(b-Edw#Xxkct|Vt28wMhqLQc5@3P2&drc40oz^yo4p)fwA1A z>G8X|Y7|7wrI~ACDf}jYWuxDPH>QsHJeIin@^u2_cZFTrY+P6TgsDa4n_%AU=~pQN zf6-kVU@&6J$?BHw3XJX4yOVxbn=q|OW?_@+xik?_)i3xlHEvR}h#rdzo-(M>ohquh zf~2`+>1}DVHvhE@XwTJ1omIVV%Rqe?SzEw#%ixZ zr*IY0uRo7}{Hie5(L6>3IYGB%Rx%I|FsP^Fe_flCHC)vDTzSY35>@ zF$b$cki(ojHhu&hOwR3}FX-34Irx*<_nf?y0AgqpB4`J~e=iZtRz#5D=MTaz{uM%) z^LGfr8hM$=qEwt&Wvz4h1Yr;Htw@ahhIksD>t*6+284=!x5L9V1GWI3tq5!wbvxvq z!eD)cGn7t<$@gB79QEqjI<56{(hdL%GweBwh=O_py3-k5zQQQTjII>42x(@4Rw!z!5~ zrt^<%rj2(IWT8jnI7~_C(k&sw2CeuVq3!Jtozv5olQXid%EsaDwJI z`9#g}1OCn)sX5m0cj+k2v7f(3PtqLMovb<9`1^>zq7u!~%iq^e(eN3gIey1q{i&Mc z$ERry=NQc~h`%$>)Eq7RjTlSa{GC>&Ii~P;HZQTi%HIzDuKu*<=w~m31q)trBA3|r zpd*v*JJ6Ad+<%T%Vf>s??Jw|f%;*!fPVQ!N-tFXIXH7Z%*3IJ| zBH@tW<2@^G9^Yu)JbqLqV$5!aeCpw5ea&7NrMmmui*7Mm5}$(IqOt=KgQWa+ZdYDX zH*pI%7@Onk^cBmYMsf*YnR}sAxdZRRDUsaYj@?v_3CwEirfaSab^a*Im`X)57%17D!`naZCP9XxO@@h%Hc~D_Svo577f(R_qn3& zHuoeB6&f!U8R?28F5_Jd6=|_`4|@Szpz0Zn=kJ^L?>f+_9wB4+sIwu^vZM;8r8y*NZCBL8m7D(V)_LvY-c2o9E*wkBUsO)p_ z>^DI;__l09ZCuCePg!+gE_ZFOfL=u6j$<5Bt_OE()_Om};wA&#LDb_f{l z7?twGU0UHnq2b1M!7*oxf*lJpRuZeA7)NkqKz_x{<(`sYUb{m~3`2M-NbD{Q-qgMq zWQcy^|Ns66d85Iy?-ANL@fZ|iBS!r|BsXqT*x6_!M#Y3c6T960A&3!)>}-GeWnFt> zi@7nFK5Iy1gb;mDMc!{z5#su@oT|XRH<&ST6ds7zd|>nqTY9a|qJcR;L-)=GeNeMo zPTI9q>Nmt$IKEf(v`&WUc;pVb<*4%BM~ub!S|6 zH3aO6V=9AgLm(~-1}(iIU`qY%Asm_<0|=a8xupS>%Whq=N_ya&Z%Ts-K-r92?eC}6 z-KeMm<38z5&m9PWq`e*22Lg#o6AiWnOwaXv6&}%ZjUA8({|Wyr7XFD915Qu#EOF(I zk=du?0IJ{YGVd3A1|u=pXdj&DaV2(h5go7KDB}~UfqJ|Squ6%5cW_Z`!D-my zMNaa|aUmAHTs+&9oWfSFM|`PSKG_Pj7P-2od$(B5W=vD?CByzD-1_+AQ}EKaS`Gam zLr|ryQa|wHBV8{U_NcEFB05J^gBvCpbwl}`|0@?&RoT=@)GFg>)yU|_R0hoG>IEa| zgn55Z1=`Z>0`i}zF&tMulEICL4?VJjISSN*{|KlB#{d;$G3_QcUhz>YxJV)}Zm~yd z4reyVD3@67!Eqh4^mOGO=?JWWMnP9<2p7Lb+BhX&4y_>TX~8!?G9V&zu=mMcR?Rc! zwrEk&W4u|A!>go})6c}U8bwW+?X1UH!Owm@n=w0jE9P8T;2di&$RjepweQP4d z6>Dp%+H+wA$1#}}75ytw5E|zqlQn5sLWO*;pgW95B8RRvq+<#;Qlp@!UBWN? zgH(b=IsYoM5e}uFYK+2Wr&TFNn{M93ZkF^*-1raMAIOT_YNEJ22F1x2dPq*>jP{{l0;tjZLC%wSZZY-%Y z4izjJkbcR01v`$7R%LcgvAb18!PyC>f7zWY9w?Ct)2es1?AnGhq5O9gj5E{%VAZ<# zNj-Ke*TbX<^^%j>t9xHuT!Or#WOe1W4Jh;#Rs?p+!aTPC5J5xa1)N?zEimZm^~o6Wx{XdPem-)a z)jFOn!WLYnAz3HcLy{Z>TW0B4L7FUouUgw|_-IhwBallma*M!z`KD(#oAw+5;onHK z1!{>e<-%O$d*RrGvRbp3txwQpgX!a(K{~(!K&}*(x@``7hcjMA8lU(dKeZoh# zHgvz;FlePrWo^|8Yev^0;tX}CedVOcY9d*&$Wf{0rgKzHe1&E9aO-}rQzd{>RlMgB zr5Rq0M3t#ncWvxxBDF?a^~_lD_8q@Rou_N77v}@#c^%kh{`+8yUvdO!sgvk%9$c=? zF$H?Sy!)BQ9^%;q*=OGg<^rBao^gM7EC|k^Z7ZOC$wpasu4n%Q%2GU0k%Q}D!MIv| z{>aj!Vw?t9VCiZ0g9l`*-8cl)J@6^+XJNRrIXT`Zj1)u`F7>KULG~j@8`y5KS`b7&WDsT+rTk3q&N&jyqPl6UszBDun=U zJj3+MEz+il>ut(OxFgAr>DpvA)<+kT#-3yyleiQV~feqEW!?S}W9EUdi z_3_Z`CRqeRv+r(_mCsu6%oUOb6tfd@$tS)9FoK?>QtG*0sf|A@Svd)>sEv;{&Qvml+&y&IMeP-m>|$R^>>7kImuO`%piuIT9&pFpd7f3q0h zB)Veu5UAl9H^cc>5333rCsP(#7 z=0BEO?C_mwJv5R>jmSsFUzk)yH(X!l2v)wRo+{+%A&BGGg0QD8j7+Z-*Bsuq$QXec zd@HRUD(aztYeU22*wD+ktr9X0XiNV@!SL*Dt=krc!TDuo0sZ+xFg~=5m9KC*f$4hO z=WK{Mk+ZY)aay0=Xzar7E;%IOY6D5{ZA~`R#0pJL_-dKR&jd{jCxVqPCv|jR%&4k7 zZ3ggLlWCn;a-l(82?7vGeT?sJXY>Pm$FuGXAh*t+kNPgV9`&5tvA(Nw?QpDFp*Gh1 zobZ!av%I{;kFX|n1+L`E(CoG;+{~0K-?N`-mH{-IMSSvO+j8$#8n-p9+{0Lc9nN$} z1Tpgwl@kgG+ClN_^r*-Qk2dJ|w;CB8g>W=P1SY-8`d#3{zZE4ig(L%_5wLv1N{Ykr#sNwWi!X8t7s;b1IH>to-F!1({xM)~ z!ugPHe#}~MhTpqwNs;dTIC8V!yJg7`rsV_Ql(A1$$fO+QJrpU%1>G+tsUh9`C;4)c zZX6iAY!K0;LWAHi(u5N>~neM(Bxk30<_)P_DAIaMk4QGYi$0_O0&~gDOByE{Sc8|4VeWY>@uVj$6tfcxSY+b-ehaa zl4k=rYCJnh>3}RgrwAJ4zV1uJ`v$A&fb_jm0%-7bmzUD5e ziib@rH{kl=L2NKw-2Kv4+$pLrL<=UW=%<*YTnWCujDvYJqqXsyoYu5u>lBWEV?h3S zM7rJF<2U#F&9``Q@^$kqzxgi1dQpH$TFl#%EeD0?;yEzBj+TS*@ec>%qaV)AcM$$v z!S_1RIA(SL-K-lo@Wqtb{7;I~mI|}~{wYrcRQspYsoLuM701ZiKiRUMytJ&f&SWrp zhR_8epcXMk33zvDE#FsIT>Z$C#{|7$GM1oE{-Zm z$>BbgbAim}1ozrK^4ziogrYlHC$xLzR8CN~8=!Shh6Y#2+VLNz!Ijd+C*Wz=e*{mW z%(w6)cJs%;ldETljgt5KqeNEG|1?UZjZZ+yprzN@r1Rmwk#zQFP?9=T@G+!6-3+u< z7?s;FqsDLFkoYAoi=(Da@q0H%hpa`51f$knsX=Q+dXQkq=tP2e4_>kre=~U!1dLV0 zh!X2K8|e)>UKntHm9p>h8TLl+ieUWavL5c&wox-8|GcYgkw1V5&5~t-O58MUuQm6D z&A@`N`F1!K_%)GO?GpjCX0gjx$7;=BY{^e7aVt-L$2DIYy4h0AxEGjlLJAIUF2eTw zfHr?uIQCqbY(=q7Iy)o}m3ALdURy1m{|Xw?{s8y&k=fr5nC^8Ppg8okTt-60$||%u z-QcgjInWusgmZN}$XTErIzK)s^POiA4%?}kZX`Z7+CRpe$Jw|RRg951n3BXpm{=K! z!zow5wK?G38qlWjVE2Y-ZO9xhj!b+&i+jORZb=vecyV;N72qBPA2$suCeF`>*!!|Uy{KI-0V*X(%!L35;yS#(UAeY=KBaQvB16f*KtM% zHy^%?PA+h#K2N+LTG4#C4&FPzTj_S8d*jgcj5CUhaM`C)9`8o6P6<5Z*(knRd6kyzr6fGc7R#9$C|NPG0jXu5 z67t|&+ao8c*7n%!W`Qs_ckg!nR`+bvV}%a{JnhlHp)^XXQSN@bwL3Cc;M%&owL5x% zo$(N;cIRaZR7L2cV*znZ;zed^}ZUPL3;Bc8KBfK zH9W(J%J^u@ucdi7$rD_5cplKP>|E|QxiI1IuNYat&x&w?GbGo<&?*Itpa`aCJSmE8E;|W|;2NOJT?8GZv?XS(i@|d&d zDsd6hmF~He-{gy&U*s!1l&^sqmuGmQdYJ?hp)Z#|FGPuB+!EcxN&1a!(R8*1s48~~PYU)m5KMn0~3$$#D==OQsNA2#Y z|D$#v_tP0R6C;t`03xl9?a*Bi$H?YmR)9W6^2-%#@kv1XSQ!Nj>te4 zOs`h}6`LC~wE~7~i{JCc|EU{yt4?D8Fqg!9(d1^Uk`=waUddjtZj_{N~+i`2C&@VOO}!t$R0W%GI;qvo*t?Wan5bu5VX3z^s_G zztoJE9g?W|j4Ku~P zA2bGduPxyDE%)t?ZZB1ufv)ik>O4jcv$NLh3S;iiV~X>qaE^3Hy)`4R%)~FY6fpVy z(T(;)^oNRcK=C;xP!M9PNQB=uSJ3lH^tUKPBTJ+)(SsCQ{l_sf?xwABf{!o*Tax;+ zTw(8GVsV}+`QssKVhL9}@l>u+%=33b@jy{*N^$y?vA?hN^oHWg zMJI!)yUs2<7~r3<=tAW|BulM}_9%VU`r3>gS3b{s`Q_YxIp`g>Xj+-$gXjstM8e&$ zA16m2L<>IX2qreTdpckV6hs414*IGQ$0FtO&q>AsXT-YXL!;##$#0BAAAxc4*=AA(8BChtLs zcGq@RU!QNa)0p_i#&KB34^|3@bT@pRyC!3fA0$Q{SW*kXY#$X=t>%6 zLOXn)OW(CAIf~`P*MfcGG#1-rr?i3{CTBM&Jj|}-msDT4lwl%EY)ak>JYjSFIw_C8 z({y*bXyuFJ97=Yvgmsn>#P-FOb+L{&$}Fx*lp@A=*FLl8TFO-7#68s zQj#~IbMf8P3#O`!iBE3;%nX_?lpfEcSFzI{AwBsJLEl}QlUD*>14uO@F(fNBqR zz-lw9ARhy!tWkp41;nl@4aa;Xu{y>qSj=)Mr{KPjxtABb&3&9NXw{=$>=@@*Cgb)L z{X?9=T6V!X$yG$m?JRH=Vp}h~3>28J)BofTxX+RK6q%n*E(57nvXOR1J&eiOe5>3h zMT+^Bjm)NeHZqNxIp4u5+!Z}1TbD1ti4(KQXJ&y)4XAum6jfHo7t&`RZ;B~Dpf>I^ zwtTi#)9KYgF6)c#HE8zmI4{pD)i_fp$oM`1p0O2@S8-lRciV`}+GisMJ(LsuK7HuO%TJ0=)nUKuI&Z6Jip*4_}BY0Dr%(GXe zWM`pMCO|IT9QIL&y=N?3Sei*>5g68!Nu=N_lSeXVnPc=z9ry@OS}Qdtp=AfDvtW~PS63u_sPNOHUYaZ;_iV4g62DB` zn{Vc{Dn05)k`C0L3mVs#Rq-v1Eef^Pg<0_EUj^hLiS-iUJxf(>dQ^j|?po!1*ryE0 zd~EY&hN{-CRG*)g)+#x9X_F@Fp|SL+3+(o)bM4KM_Ud!(t(W%Z_HXZ_0QA;rqze}R zlJ5CtaqMlc6SX{9hz&89-oz1y&DzxH2<-+;SRs<%AA33X)<1F-hRv;5G@HKS+Szr5 z`?rT(TRAKZkKG!Y-Epxwl0&E(w;3$PPOkVP-KDW*TBW;;oqKtaDO^b-8?Nc`a>2X* z;zlfQedFjU92;2{2LHvim2ZaWdP&%`rIt%;Icyfc@{I+9nZT#Dg zz1Z)scd6v)o-iUn7@o)sdeQwsrk}}gLwpR>nKuN@!m}!5903&fdwA0rS=qKXsQq$S z6XhUZ;;a_K;cZk|__?;!z~n$8PdXLx2(7a) z>d+o{pC7d9%hcr}AIqf_IwAQH70KF}e2+ltFL~vYZ<3PyE&tewQeJQ(3VL`tw#tgX zh0H!->hPqVwo_)+XXRLq$zkpgwaM}yGkVEQ3=baYX0cF}kO$S(UHlb@mP=IXitwhFV>453^@wO$gv zEbM95R_h~!@#!T&*A{{U$k-H)58Vj&DhqkHMoP?!hlbhb4>l(iyAok<+dSyMy*%|6 zR*`a{1(b|5zES2_BB8+$_W*ti6s?!Y9I?jit{urnK(5>dW{0%A866m0KI&7l2B_h% z@-$7HLW<+A9g)J8ZPDQfRTT^cKjZjO#47HzGwa@{O*JePyt}h8SUKt~Sgx__qG0z% z%wy8l8@cb&UW&J^yBV-w^F6sy0NBvl7S#Ma)gV%+)F*Q)`4d@C_HRF}ZU1(5*@{ak zhHBGCY0$W##1VYUHJ_6vk71MXmDBDfYP_>cO>5~<8I=IsDtp42GXF-dxi zlpox`h3Gbk(utW6^<@%tnVVi2XPosI^|E5s?iEX>E!3a<9^WM)J?b^OA2h#{gnWbX2e(V(9LCFv_q2SW zk_nj=D85sDRhe?DP)9HxPs#^b_oPkqNvGN<`9WZ`#v7#I*YzeRK%d>eY5piKlUe>gXzutZn!0Kqu%_% zjknwo(wq0*61m~#z>qC|^G&~5WIjI*2P1#gqmem*Av-XA9kQeOgDE%M5=GJ3>mRaB z(X00TSYR*L?fkLYUY>}Z`M22R2idhpFAW;QifEEM`CWx)?Y$_i`C~=Z)HtzifYT8v zpIASjz!5of;#~PTwdl#dgKRuXx#q$;A^$Vh+7CJ!hftiS*NW25jg!OI=qdk?xi^oG zvPk~NLtr2r!vthBDBvjJ5~FB92?5POz-M3r0R#gmMm!c36=g<)T!AFY_%JK1$Lf0D zxazL%st8^Q2n0}xpqw6f?!Fw0kS2hdI1ZwQ?IULzm3IIPC*R4CX*FKd>W& z>);KzK?w8AuRSsjW-e^o9n89^5R&fO#xh)Kj>iXP&5wn6*uYoh57B^ncMaT^bo}?BrV)MXkAJAmoa%&Uo5E(MqA5r z@vl(dHCtIv>Iq2cOFz28m%)Ga`fn=yvMp>8lKx1^kQ7O#!`l=b%~`Pth0XT&vN5U)TW1gMegtO(R)jcmU`JGZSy($jT_)Ca%5; zy>Fl}SdW9ax#&)YyCJ#nPCQ@X4WpbOB7EzXIhCC_!-Jmr zyOItHH%87%`fo$8(D+kjrO5Rt4FqciNmxHp6*GJW`cWtBgIMMpFnm9{6^?ahXGEYp z@s&03mK4yl4ztr1lkQGhFT0P!qT7Rp+O-kWeD z-t%BD`Simvkk4r4oIM%QB{I-xKj)vVsnTFAs~u}Bm^x`XGQIzyb|3dw4(v&TQqtcF ztx>ZgdS=qUlkCy|QNsjZg0LB)gOxP-m|~};+~V(0GZH;FG~8~1L*~oDhBh~{o={!Q6$V!2cD1pz2rZAsMf_dIg zm8}Ivq5z8#j;n7)N?!a)N=8E83Y)xe4zvy(+5ZR*Iaz&&)fjy@Je~o8 z{%|TVb=5hW2zK}zmk&F_#d=zfdkI`Z9jTzm~Q*!j9~n*epQWXBD79toDc`?0?dK?Eir8C*qHqKc$a& z*6ij&Y!|hLJ`j+DVG01LP3U$CxXKu2k9i(u62Q}ACoB}!_xhy&)w7WXv+r}Gs<$vk z#9a(L3a-;*XFKI@og#(P6ps0a%|l85HK-{cdlY*j@M~BfJg}n)4*Tmk7DY6?;i{(E z2<)YKCDN2{Bd41FLDKMd5|3g9Q0O@op?SyRv4G~a#RbJ{vuNbFa4mR$^QKcvuqUjx zQZ^^F<3OOA}?V z2o>Q$)XiYW9rLLMZiB(1^z@z>wAG-ACI~Hvw*v#1flZH|Vv|6%ka}>)ir=4G32cPS zDNx$4&Iy^b0wMErDmk7f4`cC16nMKFM`YB}iZC;O3x;AkCv7>KTSg%u%YK7j7$|Op z;HRH9f>UUr0<>u~TaGDin0vMC98AfZMpT{%;&qLG!mK)i))~QLizCS>P%+F%GxR-5 zhB;)=P9b0@3UCcHR`Tpx(m$a;iswFBE98kyhxIlGqySoOht%smzwhXiQG}MQ_w2Ft{&_udS+mi6OTmooS<&MS zv)y(h)&=&6KJYNRMY??fhho0zxdTNM?v0)npIL;Gj7zs+VcR0=w}93W3!xwxaF*8D7peT+gDA@lR#O%v?9Mowi1o3Fuc2i(id^EYJ`7p|U%TRIw=TF%cYj+Zrq z3)kGO3S3-RyeVsbCOq+^7)SrW+Um~a$^_RGjm-)d;&sV+=ugPJt&CKKUPA#4;*n11 zyz@Z=bvZ^shsZ^E*&5$jp~Bj^-#5XbX?4n9!!RpJH%8%Vyv2q2^}SK(KM10u!P_Is z5F)#U3;p9U2cvCyy9?GRFZb(!DmUQkS@}}ez93kGtd91k_%qjIyTWGWQZ$z8xChsC zHNkxOB09r*f&ERy{FFw#;~`^kRB;LX&&bW;UUUE|b<%&B*-igh!cpomEe*3{qT(8w zDSg$Cu_SXe<~Ma7bE-^vaNqgm#`+QE0Ag=)M4A3OUH$@p?MV5wtX{%GU5v0qD&k#j zE*-i*0PuIib{AA{Z?{Z}owC!}IM$60w-<8+ub)CMr>?=eP4ztD1*w6x>UhI^Cmm{h zW0A7_r%_6ISv4e(Ubna zokqZ35^qQLMBPgZ2GjT=3YD(HF9038gjkTS?x4^>Oe=P)>a=Fj(?q--1nQc)1FhEy zBL!L~;sa=nB>iul!DZ3Mr?M`L!R|;oM(FHaeQ*K^ZNVDv4m1O+!9j?A_*wQ~twhgN z(cQz?`7Y;#!@F$$^|HH!Oj8vU7sNdm}RMV!U`b8>qEb-?MPz$DhI8*RjbPqrVf84JG&kPE`srjKLQipSb+ zX~P2WM*Ae81Wp8;kQi!HAVqJcKmobk zduHgBF7112MVkbwNQkNB>{BxAv*B!Dt^MZ;R_qJtT|2pCxIcFw5wh?t;)S}@nxYil*7x2vFl6zk`hvtZ5n>JkW%*1Hrn39vq>rYdopce7|)-y3a`{+}^&P3@sl(GHsTNZ;i)7? zDj1p-xft`|nDtniV8sUF8=jbGuvW^F$R)5igWq`ykr)%F&@-+VKDvsaxSa(+Za@@7 zq0nGu^g3GE)Wa}8ZVDv*GYK|#;H-;y>0{li`(S<&rUcvVt63u5^R^^_Oz~S}AwQ$- z0`@{8+T5l6=1Ev1A6O_YEWv$p&2C23$MET0fS`bB=r~9#SaPjCxeU24GOs zAVUg*?Kflcxbl$49Y4_S zXgBG}jbjiV!ts+&v2 z^VfR~C=EUTM`ul61Nyim7HRl-Xy_c3<75ecF*v@(RT7%uV|)D&t{W3mBq6ns zNRhA#teXlwYd?YOS*rv*yECA)F5SaKNZ~VLj%sW&waVSXG(W`FP|7__>BiV~GD^AF z@EaypiCZFEt#L!|U?bIK)ISfj7d=*VGH~JxiOrN}*cyOe?hY_$U|4{yYJEU?6ht>; z_=o)qdI9b9D3S^dUF$LuFAXC)Fd9gX%IF}Q2x7pYt?~%mN30c5-7dplVTfY7#w2}K zC_foJ16w~?7?I-RI3nKXPVNAWxd@~Hrndu)1!cIJ88*+$3YnFASTt%q2hF|}xgrB_ zt4X2fvXA>?+w)MPI+B*)3P|?!BWIe67wo705z* zK$$YjN&pCeT@|rLX%TkP4_X9gDd-?yt zmo+n050t$}Jr^6njPksS)hl=Mqr)%+PqI+1{*(S$K!q|oMsZEJHSs9ovBwmv$WHnP z2AD+XR||U-F^iFL|Jxn)%$|ZCNfRAvXbPQbeXaFj%vWzNT9EYbmy$VYkE|Tq_N@HX z6Wx_tW!gW~czHi!>bU>U*}7G0b9JjM#OX|GUp|dA-T~RT0{7vh;0!;7Tf*((<4$&l z51g0|i@!u2iy=ekWUMdB#*D!%R7R6iQ|NIwBvroTM`rGgZHTnSv5{m0(83k|(G2`4 z`w@JoKNTd7O4U2eQSXaD067T721xyN(6g@5`Nz&rojwA^Q4f&SG)`+jeWgHXP0)_S zp^PTT28`&VU6l?bg2i*c3|s5u(n>)B4H~Ic{z)tW0{tSa=cVb3g;`eN4PtD!`zK2| zFyn#X+Q=}$egz(xBF)C@Va7szXCj?&K=789B;xeC=uOUAD?@saZC#fB9&LSIWSCuV z`kret*nGT0UZiDYFAS#nuflx$b<#hq8>)LStf{JU|^B?GMP)ZBLV#Z!Y9Ohs;DS3@pFk zw8!8U(P?2`vu17gmuuvWz%BMvr;L1FV9wZx&&gH9ww z0P!2ex&WH=3MAu+l(BGCLBjQk5lljjTd!O&40h>aVfXE~d9V*t5m_5~ld27(K3(*q zIUC)hc1YhEi*ebcVb077;&i3lc~Z^OK={h^Ro|z+nnlLrP+p5jHxSy}C!m+``Dv>e zS33*|P7u9{lw2LRhv6~l|EnIS`C(i!9fHp`HSqB{O4*3}8(=JH>XlADT_+#IplbESS%MVGsxO%*+p(b(ry4UAS8rYUpU5jzdB4>P?Z zHY}?H(f$o{P6f^NdHMSb{#}Wb^YK6^s@7)}N|L#IFt4d*l09LD*!Rv{ zj7pD@O&*N}LBJ!ZcLpBr<1FkfjCxaI5?h%TMdaV<0oM7eX7@&#oe>zAKNEhrDFK;l z&-N>#)7h*qjz9EsY=Y>ixD&6@VD#BZ#9s{_s|4|5(i%1R1O!rm+Y~^Cp8$A$sT|iU zfDixyMJYg;0tg8ZfNdp}<6H$0A|RkN1?Z^&LIwnsr2t+95JDiJJO%hkurNwUfqZd~5K00V}#0DWqinT<}aK3Y*_s z-G`v*$J!JMBZq^6KE|A>NcvkyNu;FM)gWN4p6hKLn=K5Dj5de8kSEgm;Sxbg3M^Cc z+DmUE2Dh152zO=$F`TuuNkS9_157#)k^EN_0#Aqq%fhh`F4zi|;@?csjk#}~&QlI| zKNQZ6gkuXA%b#EcK8ZT~d073S?HVCsB*kS!u`^qP11&oCXaty|f5`+2ro@5;Z%8L4 zyjrT&vk|KjG#_blp#B;L{{x#Ff~`hB#6hG#uHjBQPz9nVg4_Pa0^|N6klVtuzv!H@ zm%v3RiOat!HDjzK6k95FVR)@kdJJ z5~ezW1;#W^`&8JPm#L3*|7fA}50J!}Xex_AQ>8R}Q-4LrbW?#357I~8b>ZU;;NzQP z1RsZ+X?(n&lg3A?ZvM6UCzC{tkF9^NqZO|HNy1cr(7#1!(EquA6C^SF$70YwDb3!$ z6CC~Pfsm_zEu!pSJJr8$Gj#ucI_|&sZ)b8Dhm31CP+)7duB1;X7x}TORHsZ#pICYb z728@2+zHClZao$XA)hgMJoAtQG-~*UuLdqslLM&$yM!yv^T3&# z>MePL!=>iVC|qCvl8w6XE)wyUnyz>-Ng9nmTtL}cj{cAtVdKqnC5m?S98I_~S5Dkc-JumH?wi+P!Xj}8YYIdo#rvPO^{WWsfVGRCrYVcVY z)(+AL(DCh33o>|W_@$$Vm8!-{z?)p&a1>?o~L zW5ed8Y;5IWTmpO}^u2@O!W}{1L$%?8Ndf#_J-lW$o;t&j!>4m(tkaGVZX1Baher>F zp*Q?S9>shC3-6m^6S92sfA|O%ub&(zjf;F?L(YAm!z0NgO>aP0mLAWc7{x;{dsg7i z2r+YSg!f@GGjR|nyPL3QwRDFJ#g@oG>oCU*WrAM3Mp)7< z|2Aj4^8JH+gozfKvl?q5?>{tGzYn5u6s3Eh=AX8Du0O;%3v0Fa^>#LkX*TQRq8i%` zmW8N_^k^e&=XkwN%8q*{{)hr&o&)Wvt$X$`GUhqM*BiEkS)55AOIk<2zr}4!7=Rp! z0EZ*yc@I#gw5+55WjKVNRt-4`R>KTm4Oh}=#q;~|_^W>rYez9>&@ufk)^2*=m1g=M zLIUl%P7Yd&SWw7-6or7B_4t{XsZYdF;(E`UYqgUQaK6h%E7u7t_AZtBI;#32xZ=(K z)lVur@7zEeu)9t^ggtiHdj=ts?h(!>`K*9KC^A2d%#GaNu!zp~A^e1zx7?2blGq0t z#J*%}_HPI3@>Op^R=Bf%2ArU@-5e6udoxe~@Z!f6`05$~zb{~{#-?a+jev29g8#h~ zs7OE+*P_q?`y|&JDNqju8XpFsq})Ei0Mzw%+yq>L1jN7@Hna_79O>%{QnSAggUa$! z#Kk3+OKq|4?W#>~-j#UVD@? zLL`rlC}TvqEyZ;D7NLBsBZ4#GACSeq!*?SsF|4M^haPYH`54ri_xh8xKf;u85EPK~ zuan`YY8UCn8Y?&+SoF$u7~&>FgJdzUsVL43BwCRdgY}l$?2Rxr+Lm2bBmReeP_Fa? z^w6dslwl@l3dfwA#xBPF-G3k*Vz!OM;H74oRgLulHcoU=f9k^tVLEcx+L{H zjESv1^{6r3o-M7UJy-A5?O6q~`LFHa0JA;!lIq;;k^Pi@RkJJ5xkJ7sdA&-{`qQ}hRvBEjOpcJvtl|L78_QEf93c$z2Llx=vX*_MZ@5q^$RiC z3eL-lTrURC4wBj1rj2aUSAE|DvwTc>d;(19K1J@TaGcLkJf$-NuYrq2xDG;cjxydin6Ov`KOmi%p`w%Qs-lBr^hn}Cj6Q%#@rKyjr`riW`m!!#s~O58i&A#9BqhJZ1nQ4Of=N_4)Pv#(#d?Y zOhuR_ICctJf}vp!j*O`FP=#Q3lql&0SoWQZ6#)HIIV}6m2m<1x0*QCpu^E=xW{zdH z$yHf}a9O5h0cxuNm=vna@>DDKu?yxXtTq(DvSbl2psFKOD?zGLegweugomJ)${Z>i zOt6MVu{u#b#29X;eKdL!Vx((UjE{ZdIZAU|qPrlN+Z-SjSr#3Qouusl*4cbrKZ+D< ztW`bSQATC4YgT1&$W(h-R!rK<^^a=|n;(W^Q$%AcB~o^UV%SuV`zsoIVEH{PM;)_+ z(g*|`Lc|Ub2|@vUHbABQ9p4FjLw=swLdZ(ok1d}qUWqpov`n|r3SRiaOA>gNPPjlI z(N$vwqjq!`FBuPBfEfsbHRs@>O>nq=m9yu9yOl6gnm4mu|4I>T!voLd1- za1#(cOR4>dHZ9P2NN4NFMoeVX7#Vu(U!GTrJ|Tsg3o`($*KmeE;{6gMI zJT^uQb+TELxJ5R-8kEdYjcQ!fG9zQ%d2_+Npw$+7cF%>wK=nQrUFhkFTOxebU#dWd zs`2^%`g+J(bk)vSQO+07HgXmD>!7_ z)%c+CUUdzc#Xw14>MAwT6ex)_g=c0=&uU!D0BRbRu&61ApNg8g3Iae)_v1rRlb+Mu zp*>G12*>zfzfJ6t?U6C1bjOnoZYP0^l0I8Ibb}GB*-vWe2iGLidnynn^6QvPRD@;T z=3?AgotU7cRU~ASOU+o4>1m_deQCPg1JmvHqZBFb3(QtWyOaJ9VW1OSe&_KfvyrYI z)bmV+-stL>=y$C6pH;WRxI!)p8F?NPOkkBPi+j(V3_@E=F}KG1oCvq%6(mP#<(#?j zhe4YsVv`uS-u@MF4RVkBpXH~*^$SuFaNSR}S#&|-a_YKaoF3SAFZ8@NTO5`iK+AAc zyU=qdIzUe|obN}snz|zDhgC>|y(Rx%l#{5!u%uj@P!4+@#d#tn0UK*FNiqI)NJ*!! zRP@JmpLXb?LO-&9Vmtak!&Uxn&Qr9CZky&0W>XZloXv?PLajSco3Ca)W-2tR#s)Qy z$D(}^<|=v|4aH9E$n3;Lw&b)yGWjF;3*8$%hvklIZ2zs#qZ$(1Q4YjBCL<}c9e$nO z3scA(h7WWZ!U8(Z-M~@Oznqh^Cy5M7$!?5$$~P2=5c3FfpnedzuNZR))dkm$AmW^7 zEJzpJ^ z{UziR>G1f=LZS0MvnX^BKNW@E4x9*=osY@KapNigqkA!)&`n0m=rMl=xL!HSpb-yz z$2;dY zumbZfkCp*VvJ96C$Z+D@tXT>iQD2RXKnU{nB}RZkIH{83vxTm?q#m7vieqsForqRp zDXlV5(*&--y~d#kg?`ZK(3}*VP7!`2q^5CV$zpyGH{esA;+HgTP>T2BUj;YDr-B;{ zUr&-bs_6jWw1a{V#O?*!-Ghpv4#5{G9QSP5!=Vyy#@qR6dK1VQ@(phQzL9$isM^sK z2_XMUm48q=zfa}QL5_6(zZ^Zk%^uo}taUaR_9S4W18neFvPFwwurDtMN#C63rB#2O ze72)Z^^|v4s^7vds3n`7 z>=EPPrRW&ix{nD}or1L~&SSv;m2=&^2-DG7`<)W+d4hjr@9I8&#ab$Y6n-z7HT01l0MkmO`Abun;}*p9GOVe5pEO}!?1G5a{# zjeut)?L~nQxTUY=8PpasH#I(>{w5xPDH~aF!Dq=p@K<>F^fSx}frMv-$ZF1f3m4(| z@PS5rLO9%h=)aP<;J4Bg5wE|4_HOCv~?5_A9GBto}h;8A?)h`5$FS ze)2%2)XT=lKDwic@Progx!`>Vncodz9E}NDH?35nnQ{M`-PjTZ`J5MkCK`zFx{N)D z0=roG6RGArlmzzNj$D`mRCTR}QgFA;rV|knKyIj97cJa)ccu7u9X`+sES*o6HbD=& z0v|Yo@RDI(0M|R<8x0Y)BR1^KW$2A{&n}K_QIVj z+6TcY2u5c>xf+CzMArh@zvrdfw0i@dkLXBvzlY#vkzx99>NV16!P;CS*^>GUP9)(% zZ8_3Z5!ml(gY=oa6{$Aq|GoV_u$|KZ<3`ta^4=^_e3$(Bf{4mCBfyx7cuDycUR z{R*-r{yl_}Ct<_!Nm77lmY{db1M$DAm$Zk1uXMc#MTYt6tY_;}^ilPO7jaR%J2Db; zuarQpC242qt+w4%0k9CIqM!1t`TF0XtML9g5Y}Oyx30K9WZ+Jc4h)wnw2I|9` z2e<_8P}WT$Q02H$atYjR{a@0zxCBk33v=T}1Y84$Tjh2dl5^RCY+M%RgbAPm0NRs7 zvd|l}6%sdD&c)PbFr%n{U(lCbl)cY)q368oan)q9M?XpL?|_8NlI-!xzHHo@m9h6l zpZt4O|4oIr+rlZTb~0%^GVZQr4Hh0sT<}&&wEvqq65cV_-Ko6hn^iCdeDy!-N-dZbNFCCT7yuGKT|i zv6dFm5VwM{-#Y_sZJGcaZ~7hucGCs=;&P)go{7Bu zjjGw%xS2ok8J4K%Jr81ku<3Z_H*}%(!T7|?L_aAjl5gXQfzS*|EzYkHzbhUoJio4#R#L}J34=slG=AT_Bw zEaf+K2dKDEi$drH&;jIfP3z5+lt^|ZKCF1~EJ;;V&&2T3$zH`k5Z6JG{D+DM=~a!vYuUVqg(q!(my0*-m`~Dgc5N) z^aD@>?2cU@{~Ellhm2KYIl-oPA)-KMnIPMe)RDn=Kuf8yb=09fPd*?~;{FF@)pQKt+qH&zWZQ^Z;(N{0lPU5*9ebT0kS1Z(k! zRcJ^yIU(C|j}EEO#aJE|%4B)2#o(<1z%WXe94EEx^5h`o2^TmMLh$SYO9^Hze1%Sz z_^NOs?Uy}g|TmF?1)78i*b3SDLpP2 z59oW7;gVI0JC&ee&hKo*hvtL}vwYRJFb6MAs?91XTr;V&*ky^j6=Jt6@DQ*6BcI z4$cLoXNlO&*7(;^DLO?TdFw4^X#vNfm89Zjs#bH)4x44rh0)&K^Rf9|n-fNRcUbM+ zI`?~Ac|~*i-`LH<`sk@r1}d%dorp;yjSm&pMIM*NhYP)nF>8>AeSjWeRfG{PMMZ4P z{L!q4_s4__G9v#plDOBXmR1L;Y>n+bX?P;@{v%RsC#=NroJXOjH_OL$yQpJLP!3@6 zOZAxaT@p59WynN*zB?W?0jf9{{!kp-$hbW#&whKB`0h&`%-T`v0BQ^Ut1*Sq1x44E zz@;^y%aQGK<-O&odD%k9(;rA)zG82OtDuNr_>=nTYw19GzLM-@@8XC%wo3nl0+gC} z8kkgTmPfg^7kB~v9gjHgS0rKo{!Mhkz#ss+i!AAADw;x^{^eRJ?!N{3P)aYUh{m}G zklB$g70?q1=U1qN$O}0EEb07T$a^!{!ArWKGQW)treCj08|iM(1Ev2g@vP z^=)Ht#a6=;QN^$z;3kz~b1MFbGcL5l*|ZYhKUXKRw?W}M zoEdFVQ`)t63c#ZWR7tuEBQ@9AcoH;)KT(Ocp;{#DGN< z|GG`=`I! z*SH*$54>Y4M~|WZ;uBUY=nRx#`>%xZ2Mm`c{S67KiB!xZy>LG2Q_`V?I^%dFg+NxjhV)XzRdLZ-3W{;Bdo3KY^ z8?SBq)FkT6Py{c=oOpqA zjKXj^K6n)pMkd>p3^Y$;Kg{{@PFSn#p5NWzTaiUrwpW89NW(4K7%^zep)9HhRZY#J z-$)s}uU<5C)|MU{GO`nmz8h`%Vad)k;^UYu$f&Sy42}ugq7_-B^zmST$^`NF z-a(_V0g{7v*5a-q@ljcyX`ck#-C+y||TExaoNlalDD-7`!wh*G|}Wm6XLG=@-tv^b;xc5d{ zw)WYMn2*X{jB9COYbhdbi!c_6aTr$2u#Vy;Ba6pPiI022Vu2V2sV9S66RQHO*KQX! zq+V2M>2m2R)AL{P_u%=#2|;x=5~l6-Sd4%jc&1`bmzaCP=GVn&4phs=P{A$Sor>g! zO!?sCZPw@J1FQqo6}D{ZBum9Plj;BPwKmAaNgj!ql=P z3WLtWW-0E<^xukVBmMC)AK*w|4Cip1`G$&-`1t_d8^%et5_45HiYb96-6>SHDhJ=V zp}y%F7}`tuZQvm+{|*+8_Kh;ke&jF1u;@a?C35{E8dUy~G?hs@%Otft2irr;5wU}t z`r2&I2R{c#2O2V><5=-j>`Fik!Zv}W5!B~{HeM*{0demr zcT3;HNqiKw=pVe1UaK?O((Yy|x zF8=F@NW`3I;M_X?0&_4HH<#;XBHF)>q z*fM=zUKSLxC8Hb4b2FL-%2j*J5Im5;bJK@BW?fz4#OC!^*WsqUS`-GwES;08+>+6I zcXdZ|cH_pqHop5o^U&rD=nXZyL-BDC-0I4`E&9s6-;a9b9(EG&2A{feZxJXpedQkf zQ`(aag@LyGw-b4b)#|QXO;8AdnHa9pv{g>ExeKg?&@?#97u6*Ht4erpF+8cfN~W@I)97CPoMw-*+T(`8j5Sk z--E#D5!_+DUcq#*GNi{StVB-qRW_&hR*2b&8KklO=YbRKRgF zMspYl=}})qy`+M~IWuf3WZE$894ZN=`2~pnA(`uqy2f+EsrxZE1kF0!dSaWkxF2&g zW@}q@KPEJ0bwB2KnXDs2zT&NFvKs$~3o_r|ZlA3i6HD5t*;>lkx}aLk)|o^|1rSkg z)6^9*u)yb%`d%y``to!j)&UuKy^)5is(qP8-Ph-$eSBQIJ1_0DF{w zD!`OCHnoD>%{H2EGz!OL-*6FPh-pmIAJJfK9Dq)asH)9Ls*{#{Q^jHo&s{L5&LBC;lT#sNrTa)VzVCStf2PNRw@2}5>o*?kXc{#dnWFED~8<; zmIzlz)6KTN?EDt>>{4fA{obu;IP693VOIgdF@)8RVZvfU9rHf%56x!UP8Dw=9_J)w zSUmIi2OhTAvx1jQu{604%Tl`SG+2;xGNPy2yo#SeF_<;Q$S6$G|LFZR8`US54y5YA ze7kX`Po1*$4@o1mvlKo9*;6AbD@nb#q;(CepQ#VgCt%|`2X!`(JSY;{s+(&-;5@K8 zdkdm5sXP)^Ek4cG;zN`qrsprnty;YIK4~$N8_9>I*(@nlrQ@&CXKV-Mv*r4T*I8%W z|J@4Brk(&g*b|mR_2(##x2JF*&`dAxO+{0*!eeXaShQ0SuB|n$Gw%>sj>2&=ZV#l> zyBIRnY^8e@%|uPSFRLhvAMoniBlc-W*Cb%g=YF!&Am)gWSu`El)cs0=PhT|`PkK@p zC3-C*pV>hZS9B8g-Br&bqamR06uPR%O=C&_^N2_7J#Zg5$bk1B0%hjQM49)S_pF@^ z+|LUz1+J_Ttuu!~b@L`E>D@%J)bC7yVg{fX6xtqzT6-xANps*YhM*WHBkjG`^EI{q zt2LMFvvA8z;ehiRm=kmAkgxhFR#-To6AFtCq_9~Xs!N<3tlEo>T+Y?vwm3ln^?{5J zJC1mIp)i>3Qx`*+#dSH28>PiJ0+YBPWP0 z6WcZhZNm+oV9Hq2LHJ)v%2l%)tEmRzySHveoM>$cGEt;jD>z)+1jUFp%@+0PRg1MN zC)3xCTYjhROI%I=Dj*Cr6RgJL@Twt7I*d(AhYvV@(i$F~2Aj{PaFCKyEadBVQ;kdc zjrEqsX|bTw7H@{N2c2*jr~cpDGyH$IXYvv4xkrY>*`74koK14bpR~TK#82`acUOm` zivA-3ggI~q8x;3{_AlW@;08GsH&FY5sg?8dD&azv5cYYHf@VY5Jynl=EC!+49{a%k z{;BPXQGD!UDfcV>WZ$o7%ExOTw)fFfn@6_yKC*yR%$W3hA2_V$orAvW#dsDPRARy< zn3TQ-iFKonV1^h^@?)4HOJM8+b(NS6ATAtwsZXZvXHV8v4sMnaJz%U#EBdQ%q~YL@ z;@Oj5&^-HxbWJoywuCVfe;0rbJ?r2UrpSrx9A}oXAH})aj{ZEQN^tDqLZK8U1r_Wu z4$Oly!1^WYPBHra>^l)p z`n7Ah7;>kmnb@-TiWytf$)oczSNpk43&6&xEsXLeOyk?av%+S184f0wA9*Obq~?oA zi%_x!HgWg!?0QRD-S8Joa8z0Pl<=jvWouSB&jxc7uU*O^W+a7>>lDOU66f>*KN)e_ zLE|{`4O$LQ+r$r6a?mh&_;?mhTl_&ipONX;e9N7x^z!N*iF6)EUMX=&GHCBweB<2} zFp{Pm5gjvx8(J3##F)F?QI<)d%Wt0-f6 z6ael?wGjwDPlR2T#8=@9$9-z&H{$uzy05!oA=@3ANoI6s{)XVfJ>UZ84#y+)*d4yB zHdrvW3l=wR>zY;}Nwet7IzcgCv46VpCaysXJ$o>~(G&LhvV+-I1bx@m|LFT_!xg^M z>TbR@TGKclX|%6UvPVnQZIQlwQ2$c?oi~$A=-XQE_|4!_|_PBJT%fIu6lazmF z0A6+S$gkUnlm4B|`2rf{h6&&v;>_~zoQ$0YBN;${_kwED?ww_x>F0@i=U7SZxdHuv z(gNMCH*#>b>l^O*l7yDrbH&nzk9`^Zcc1>73a_w*?HH2z6*lix`ebIvJfXxK58EZ~ z;fyuMwh+z^BZM1iur~ltbOf_YVt}>QTAXWsivFfF*T#@J6Kd~%xFc50hxxq%&b`N? z3;DZY87;UlcV^^xxqfpR$xJCgHzCQ7=w1_Qu1zUJlVuKZbBxC@;FYB`qJMKZF^`AI z8Uic1cak{h0$aFsAMY}xz%wR2Fijp@2i_L<{`2ozEsgtM#HYx&&oQpnnkVhzYs3W)2mSXy9qilGL~lK%4knMg05DX_dmvLojsrOHcZ zX3_U1NS^3>@G-JzDL2y^+V1t=Vj4cj9ok6?L895jlf@A9HmaC#^{euojeaymC4V^=~|ID|jtq4=mhBxc;(xgIDi zxVp?&lX5C9B^QI4T=pIslKyko$kKfAOK7n;vl7nzQx!nE-V_mDS@tp@S_lr02WYnI zD2Ey(T85Jv3icXexIX6&PP0&~eHad3=FM3K9FdGz8)gsS3>LzYb|@~jb$WZP;~W98 zV**&L{a+I2oD>hr@HS!Lhw4MI(+vK9xrpGEak72_Q{g_gusz)er3I_iBJ^j@<*Os6L%+*%9raK&~$n> zqJCJlawdQ*0(^f;cmYh;-_GwsuP*2tMq!Sx`dMOKId+8$*UoL?BD)_|iGi@u(k^>| z1C1A}u2^cA#~L^ZRsEX`{V-cgeT!a1+<~g)_{D!kzG~WQX%8?LGj8D_{8aiD&Bvbu zi&Ci~HyCDBncf6~D-}Gy;B{6zAG<7cZ~`G_LO`UzKK0SUGsA^N9J>GWWo0?cb{`)OivGy{OSkJA4FV$h+ z5+7tIxq)mcb3a)$1*uXM^@SbP@-6&NuhJJPp#ieR17C0wGh*2|OPUpq8QBgp%Ho7` zQSVRS$ZnRthjCnVve$p0&xXxqs#fntq`qQl2r~(j#RJJs|57Yk7z*Q^#V@(T7=mv@ z3_@}!I0%GT8@3D9mu8S`Oo&eaaXdhM9?8By-@2Fn$x@$wDjfA~SfWI%?dzJp zJW6gwpMUJ%E_>pKC@(|ibO_6DebqvWRr9hkeAVB8lIZAylYjdoNO4Xh8B+dk^G6Y% z*Z_ukwfkx!?VysNzUr-#$MYOWqNxqU>ErmIyoLQaQYg>f?5ksjz34NxkokJg!^lFx z>Z`e%UnG`^$koWDCrX&cqU-{B1Gpn=bP42>k(%)RYmkGbBH;LE;&Uu${U~WQ#KX{E%*ud_XSoFU1?^>Xi zI|DdG3YTMH0`tm^*l_-XGBX@r0G2xg<)V8c_m!qHpNk$k3IHW@?C42`#!g)$;=~Fa z!CqibID~B&F`3akz~n{OM|=r|9?!HWAm4*?ZEIfntwx|fAUt03i{*#6-j%yb+x z$>HI{wJC&KDed@&A5z~9%wm5JsSjfQ+j~d_yn&7*z=x8==SaVY6aavdNW)U^A+>f# ztM`!hRi}%gjVvN(fB-lP~rKll> z{IK4qQMO{W<tjNnRJY%aWDRILuc zO*)Xc`5Ew`WM;G@_9a}IxnJol4pO8Gc#*lL1irO!SH&XyGN>MKb~iWaX4h~Xk0;b+ zNq8>$sR-tXTVSEo+)J|;{0%npPM~i>4zzqFcTvk?W}KJ#F7hi zyD4!8FXIr>hc)93p@n)n%V9Z?BTN(NKuxffkIDvimuKOHUu64`V=mdMYiIYT*%pSg z7Wo_K0x$}mO~|DxTAmqchjpGh;erWfeXtaq;?||unl7I*{??{YKwO%B(PpNKG@3y4 zGF_})T%70L{nyFp{Kjq z(@E&5H}p4NTl&ljS?wOxaf3smX!REW6C=qub zaUi5^$|?B>)sXFj;+gUMd*Z;`oTn#694o zjc>~2^}of&Kq-K~`AMs!CkEXyaMzDnSG6ZTq!P)Z1L(Mn(q?e!H#BR1T_6f1%*sif zS;Mj~SX~dSM=%H*@bLBJ_;-mM#iEEU!aI)AFJaU{*Lker=rAt7oE`uJPm~B@*!lIV z%$YWWJSzpEOnJ_Z=l#JdONp{FkY&HLV~`$JJ)W-pHtL@Td4(N$=yLWEx+t#C@!$0_ zl)v#9+%ETUaNm7NP{M7mbL89r22)N|VnjdV(5Vr9NIunwZbBA}=x=}3Bia^NwT>AG zTTcrOC+XSg-)gV6{FdXC6bSJLxR`=}CqRLLFsv|f@A;@F>F=r9$+N|)(3z?Q*fgI| zwIFv`bPSt#qH*bY*|1ngk1gSCWq83Fl({+aJd!qw$VKOSQlB{q@3LhxF&51BVZEP%~wrE!B>1(P80l4=)zBuD~0nqNzTBGgnuK3 zYBQ}w1B(%Wdk~iDCFW)jQy}S&zC!E(n|A{7Koh-R%0uRqK*+qhcgUR8FJyjBmrP3z zy2ex4$K{ZroYn?rIH-768W@pwVyc5OAwBjc{TE9mJE$&9f&{F3 zT9}T0-4xba!R%s)LwfKAF|ks-G?ar-W(3y~Y=F9j|84YaoBw)c+DNZs?{XkhOhmiF zSRLl$I6@(=$d$!zNtWR&{=}3EN_?yKbn{g`C`7*-mj}iD2kyWP#tXp}s6T9kJUHv$ zD5;<*EAl#u9s4h#=tq%AcvJzXy>U8H8|FvYkdS>+*#1Y7@S%3&NW*!+5ybs;oY9D2 zTa?!+IQJO7k_m$|>Rnh2^fO;gM=1~r+C~=N0-+&jA?ypE;m?7Zlzl;6mrT+t51X@a zTgELZ2=0k1{5gV4&6J1q9WTh#^+SyNs=1B~ncrb0=Bts{N^x-7c1Bj5Pv9NDRSTMj zkhdv|=QuoUD2=tdBM~iMxX*DdQQ{CTom7t^qj5qe3lDn-(`FuD%}zOo;>|*_!1g2{ zlBcY>yqN%`HSQxA_elSR2=;#VJgWrkJ;3Bp4P_lA5As(vzKGB85G23PzVF%y8nlh#%0auDRE9)Tt}H)6t8x@ zRo~~S?U|{KEUb}AfA~U7(^Ie8aCqnSHr>ywd4#? z6}>{rK^vH?)ks1bJQk8bUEl~?ng1;K_a(Pu6 z<`J6Vr&BY)q22dD)a>HZAV*LTh_0MOH&f&)cyJJJ_~NMmf9ud0iSN;TE%k?sVEFEt-rZ;|GT#4Z;W}9So`M{y zRO!Fabm92QJ3Zr`Y@{tIYzRXH^%I}{I+Sw<$|>=cz^~Gq0eHw)!d3R+c#jOcK!Hos zd-Y-KxyGhXGD;b}4hwK!@oE4+K`KhF-eG86kXBC-<#436%_#ePI)v)px|8KWygJ;Z zQfsm&i4Em$g8e0LFV)9^s3vtPv6xl-f$qm%y9(C+SEEs`!il{--rKK$fP>dP-;Kg` z2S%*xJj6ud2!A<{i3YSRMQd%~{bLk(gaTjJ*9pEDVdn0oz(uay{SYQNOM&b1oVi~> znBYd~qW9*}PViL-6TDG@PZ;Y2w?&xXXB7DTGo9eK5GHtu0cL{}d-U7h!_$RN#wTO)JqIiz@I$7g|PWv`kds+g&(cpmBb-0@t7Ktos#& zS$B>CcRs@jZjCU(hrmZcYa<6b!GjPcc$WhIdXW>{gfPLcD)9NIJHf>W6MVk{d&fD! zhjq*6DeymfI>8Sj%-mBIc)_Vo@O20ie69kQ<~hMd2ooGo;6~SY@6_YnOo7L_hGeK7 zlFx(}c(+b<7QO~y7QRM--*U~d7xf%_T!CL2@67!K!pvQxz{eU+a7%;`dn zB24gk3cR$y39dw#;NA-SLw6_mQ-ld_t-x2g26VC>(67n#OmEw>owtH8%ib{5_WVHQ3{flFOjE7Dl&r@)t7=*&G9 zVdn0jz_+>h8u=W-`<|74H=X0my&GYIw<_=w7hjvJ`Pz#LJivvP9vUroDeynaoP|G# zFbls?fqgDoOX?xHK!NwTCUAqEzylRnM5T=@)tx1Ty?k8b-xC1VufsAcv&Ax!XO z1#Y|83H}vZ9RwFD@P!pla2R2NyD0FG=}vGS!UP}wyLA5U+nwNB5GMFz1wOIT3HBjO z@S6&J4=v_4#4kpe;D;6X`uR@qB?uF|P=Wt-qZ9ln!URuKV3W5l*b1M6Fu}tV_(CWQ zc5qlL5V;Ecddvxa4q@i@DDY_4kes83ZJFmww-VnG?JKVdmbfz%#FPg3A#m_<02`xWNhTgD}C%6nORZPVm1FCin&g z9`DLMOy?f2!0lXw{2Oc}%-vsshqzjvr(5n<;5V*u*8LBJnS1|J((eNnt;M=F@mt@) zwH;v7Gn+g;KBUdB-(w$gex9<&Btmja2s4*#&R9@@zd>AdU4(_0=^2jrn%V_B zP0y4w`8B_n&JaeB8J5m)X6P@;m|-=9oh`$^5oCtS>zx_ylVr>gDsp5Pgdj5%-Qvt} zvLs`M+DVQKFCfSafrZWt_ewHmSTMkmVJ3pikbR>wLzyIFhHYS?=))Ol|7YF(*D2wU zwc&DS)+Zzbv%cEZQP;BwGDGdn&J1@-GG;haP;DW&yB?95uHLk@Mx^VxjvCq{$Qml~ zK)ihj_d@`xA$)d>Bf|p-GD9Hl%uplA*reMBIWklt$P9aKa%Pw=$)pcZrjLrR&eXb* zwcLg3W|DzfyN`6#)d@jqT+~_DZx*?9gLt&jmk&W^*n5pL!-1Ym#v0Z_y|QI^89`=P zI@6iqK}p68GfsD8xClXJ*yAF|;gXCQPB_Jpp&f$EknL*HPkmBNdUS+jIFi0%05EH< z>1^Efl7V%#>g%ZMpsuU*FU|~mq)E)M&TwQ{fgo#`xyYH}AxXvzhmUt;_zpp4czCum z!!}9A46hVBGCYkSGX$16Gc1#2%y3+ZBSRK~(xhe13|#-IAzTfu<*4-aGyu%{{0+{m z%OnHqYRYxg^&x`HfV=SUH_hPh+@!!eCZ)k|^IL<<6!;9Q zgR#6G{MO(C1s-{MI`=vJ*5Kn6cz1OQjCdoKw+Uf3?bnB;V>7OCf-gjv;13n}u31iS z4Z;M!uE1wq>;(5jnBWH$_YmW;~}i_zTBcU zg_a3=5`FtO>32(u)?#_TV6mSXv3C`Cv(@rg-Wq=E0sW@}*SfIwyvEv61)k(I0_BCY z5$JjazQKjHX&P(e6!_Bl&W?>om>tVk;MZK>XEnH!0uOQV^E}PZf4*1x{YP?an*#e> z9ZPCivOJgi*z-Kz`AbBTiJIG`O9_9k)YjB|gw{S^= zpKexY>7u|FO>tta1Yu(B@IBJ+o->``V-Y6!V+H=+>X@RIPxKUgQ-P;r4Q`*IWqM8i zumbmS$+6B_jxAK+aTA@nha$|nrzvn1jQIA#XCX}RFa^HQB`m^PSmY}3bFT4zK##Xa zfxEfT(q5zGtG^0bw!38LdM!iOEAVm`IoyLVo3>nm3r0Iz-UnfVV+#C>3;eYPU!}k& zOmpULi!gJKQs5a=o!|=*CiqkZE^*E8A$op$75J>N&fGl_X72CqmVVy^;<4lWPnwuE zEATznIl+q&X71+|_!00id+ueLuPsyH8^B`i;Asdm_YDeshl@K@Y3?vyf!}x0+FP2| z`YZ4d*O27tA@M8ljit`IuRxe}@4rj>z23z%S7@fWU4aj}kebj)eMNyUaSh2>JtX%k z@KvtqKUq)zn-zG}wa%s$BFv^uQQ+TPV(uF)<_0Tp57#8}>q*pAfuD5MeYdXr_d6Ax z&vDkh9%0t~i2}dk8nNYi#A+2dG{%{`0Ac2SM1eQDrvEBE{TC_l=PvM84Zc)?Bd%F; znVu!Z3Y>SPv+k}4v+f=W{JRS+-)Xe8RN&)Wb+^)W|K|=tONNWi_v#_3SKtkxGD zpH|?GE}ojHdFpKnJjF#VqcpW#t-$SWbaw1F-L$X*A9l6;TMf=r;HfUPW;DV?OM3-A z+co`r>FNLdU!>oATuY_~E#?{&_)1sPCLzqiUr^v(F05@tnBc!C@NO5w-lQ4!ECs$Z z?Cf_n!pwcX0(Twh1bY!Ccz^(zTV1^&d<@6Ed3$)(cogD#{dG*b5{@b#`CxkL|1odR!}?5uk=!tB_i3cLwZ&fc_F z5hl1wfzNj_>|)KZFH_(TT-35wQ_FA#-sWQ1>omjeslW?d^7}e1zgsDAZMm~)&m+vH zC2kkAY;dujm74WzP~hWTSZkxP_ICw7##MN8UAU>h{S9Z`xd^lF84CP_3u||2td%J6 ze%A#4N>AX^6!_dx&caVen1%ZkxYQ+Li?oQ{`)BEQql>rf)V$?A1s>^A1_xw0J1mm?@&JL|f4D)4PCUGZkEE3Q)Dt**M)=(_Jy;5%J)SL?dxD)8l(Iy*K2 zVRq~y1)l2S$fGq!K1YH7>B9L#8s{e}aE41~+N+h|3@fwN>zXAq^em}X;OAU+rU$g0>2d`=&84?=(|XGY1wPR=BtAVP zy%hM5)}dJn{ImX3QT*No!viprz2ou={F;y+(oWcM=%G)Hc&z*o7DI$0z2>szJYTV1ncjh-c&6!=cpBDY#E za-UUTkE`WBYeh7!z*AksG+GnWwF-P9c!{0PeF&2r#whU8bDiKygbD7az#Ck$WTloR z9Ta$^iyQ`Na@co^^!pAMTBbGC_`vC=R=@PN~^$eY_zz1Bp|D$tXtiZipSj*8^D^lPNqns^o zhA>-xk^Wew+A58;HVVAk zC7?HHVrr_Ae*cl)^0oqdT-@Pjtt&pKz*AkaWVDtge^%g6u5_YhGs5imbqc)HCBG}R z{4Q1CMi;~0sTuYe3cS%pYpb+6*HMAF{<06~Gny2CTqOO@bv3P%Zrb|_{G4k@9?(Pb zk^)b4QOjseEq5#M?Jn>F4ZcZ%_qbS3gJwNt3Vfw&yeH}LE>PfU=Quky4q+nocmhasIjj_jJ{Ltgib(1^(V84L;FwY=HtVc1_?4 zJ%P&=_y&1ufsYxWh-9 zJFHdUmM&ScUu#@XD)4_?tY^DsJ+~_GVprWf@5s8RD{u#wsA;A}O-O-18{zEO7KEAm z6a}8;TD@PYSMO~VIC7aY_hkq(_csfq-#@!#$(LG|yraM)Tmt$mEujCQz^z=fJQ~$Az5Wp$HRvrUDOhO`?1~iH=d=XI3g4y+U#Gy^Cp+t2k1*?gN`YT->1)doCU~&|U*b~8 z#%hJ^N(H_ONVJdGWR2933jB!faY61^&Q=HJ(Ew_~)CY-`}0(%>6OK1aDK|f4b)PLwbI%P~cM6 z6fDwH@E!$z!6p44(b9jm0^i^QPt)MZ3cTCZu}!*Tg$jHs7_=R!T@Yr=yD0E;;J|k9 z1DYcro-O^p3eTHaLP9WG_CUN03NR^VkWQe3D>aiId=<{FZl z^^iO&g}bFS;ht<9ZV1DsWd9*1Q^P9t9rZLd#hiEnig#S~d@J*8L{J ztb4rzA9Rg(LXY=y1zzUj4huDRh$-+iSK;Gy;a4f}=PvQSRg3pg3jB?WQa{v`da45Z zUCO^lEB{^ve$u7Z+^yA`?{1QQKjq>Mf7Ro?S%I@$68NCT`SS|g2dfx6t#wA2SX-vR zU%PBvyR?n#1_d7FQZ4>J#=bj1isA{EwB(Vvf`KR?IU^z<8IEv(1WA%4D^WOdI`X<4 zNwN|I6p)M(56KxMN|qo9>;%G5zsrYs`9vYdrHBU=w2gm`Ycl@1i2rb{xPDbDt~w%i%G=s6RU#J>@fg=2 zqVIi>@z+F5_h05HIf`o%-|fwQ4|i$zRNBWxoX_Rh8_KaYBCh z1(i&_MO@BRJPNAf(MZIOYY4tncd?~JJk({pyE6W|h+Dg+ntE!gdGZDOJJaKBd7j@kz8cqL{ECQkxMtvVY6jjR;t?+K7fQT9#4SFsjn~FC z86PR)sV?nNO1r&?ue-YBl^>sC=$hVtQPX>45f3e98}E*5GX9>3>tRwfJG6qDBr}P)sVmo_RIWYk z&VHwJ-PI&icQxlkyxFzF{z0v$BCg}=l5(m`28-C^iut2_qTN!& zg-hGUv*MbJe<l5`7jdK7Hnpm_Chc!ToZA(1uZsB) z5$AE0``1;uZzW=SuaD_>J(X(}L_E$l8}wJRL3R@;ysfEeaE*zGH zF7a0?=DS2(&K0$SDr$>FT&RN0oPKjmVHqvrJFaB9q>`zlh)cUF^1G@c*AVejm+^oy zo>#>Aird(4;F_>gh`6$=cobK~0GrMG}s!Yp8+|8B9^xI#; zjuY{RF2AY1leoKxFS{H&svN5);-an@IJ=sGi;8%Y3wx=;PAB5@u3LvhxF+nsJF(vl zT`{ksVt!J@ecrYGZjWoy{z=3`T+>tH^^!GT^ZNpcOns| zs$+|v*B0@$4jh&wuHpYsRfpXo?%*0kjnyFfPQ*!F%pa>kG)BaoT>afd^>-%`_jk=i zoz+YfC1RgTdw|l;C*tDSZO3xrn*2^F;&)sz&!A#{t3CUD*p*CMR5BeFah4Bl;|{LL z_zDrX%4Lh|;+n)0M7+&48>~{ZK@Sm6a`o77)noNVTqcWcJRh#fcrg)w;HoY8Rc%Qx z;%lx2*-5n^d(e*k9`C{)tgwF-aW!BF^mU zlH{sOnu?g-?_pw>Q46v%BChP}vEr)7-W2h3S0dlSHAU_Dr|frX7qu6vOMVk^dDq=s zA$2$RvxvL9?rK`8yPCNouII{@3MyNMi8y%<+p(uAQ`?9*M^;;$4%fuIl89@$CW{Z$ zWRX+E3t`NR+E>bWVi7NT(-u#~H5vb-Er;cltG4V>wPlZp*Sm~=uZ({$;(D&2R#5#t zR>YZI)gig6Yn?^>tt+ULRZwe+_=KxE(7PRod43URc-wX?F|J9RO2kQAUGh*-yWNKU zp5|gcT8V!Vadl*e8PxYwwyYF!nk=?Bq_8K7IC(W&{8Xi4PZ7^@%|t#m6MZD&%C3cI zakUUFF5(uh`Mb87zcYwh0voR8lKvuI>YCnXsp-9$h)=k7M0ctk(GNuYqigstRKx!*5%+O9)?PXG zq80o7v#W5eP=)KFi0S!=8J01)CdamlIOL*sS5ccM;+Zbvs z(-*iV?8+kkU+b24MBM%@n|UK#lXemjzjTTJQsV0^IV^WvxpqnA+FlXQD{LE|h-)&w zSj17T>hQj*4&y|8+%>*;sPWxJ#Km1Pr}s9I@meCj^^T2w0oNohAmZ^Z#|A6MQj55Q zYm#iNCdt1(VZXa)w2imIH5or5;)$*?HcXANRU%%3Vqs>>Ok9)pBoW8Drnz2fn(HOv z^sW_lBDKP9AmZMcY~$^4O~y-zcxq)^JPOw&&M4y1SeKgAV$?eIQ498aj4KuUs#H8J z;$iu0?H;%$;~PYL)>T{ftJ*SC#J{`7_i;782Z;E~Jht(HxF+MxMcmG7iyPva#AQWX z?hRX95Z5GrTf|;eVAF4ps>m;!v)`>;T~b$d$t4jlb`8N9Y6xx<@&C&6`69mW3hM7F zsIek;y?3=x_`R#2ig=JK6+c(0SVhE*Tw$rI!jenG)m+niDK))&L|iw$9hMJqO;Nki zjKk8yC2p<6`$U}9m8l6-rY;fjIoAk1phl=q#2>i2B){sC&qQ3n<@a04@7f~%ErZSc zFs_MtK@qQTQJbTvIU=s^8lms05qhU7`@O++XR%n_SsWE{Ue}5%vs!Vj7I8vXBHvfZ zG+D&O%h=3w;+mL$A>t|}ZE*=)lenRXx480rxytjBB7T|I*8U6Er0o^)Ypx0Um8!^( zo3P)RT*i|r<7Y(NKaFj?Gp@<_MiKw7@9oVJ@d8(ePEj2?P{h5{+Q!@AnvAy)@hDf9 z^if?>PQ-C#Z0#YqChaUD{;;?$E{tmuzxtT{9+u7)_rNuYFN=7!D_iEPY}qd20j{M* z7qztbR>ZSi%)eC3M~L{AYZ-e%Eo0k>__nLZe#13Ut199>t`WLUjnLd8p6gm+Pf#oD zq#_>c68BT$n~gav*BF&A=`vxpw7?8%F>k!sau@pHcGg?MpTe2T@_D0_UKMm(uPJPzW(_k{&` z5M6A_Cl}r6V#|ke(H0jtu!@ha%5wKO0sTYVeV#--K4IxYZUXn5vH9tcrX2NHzMwb_ z63DY^c_<&r6N)_1HA+v&Up=66Jv{V%2ZX30Y#?Bx0EI(bL*7H+O|dzPR)Nz!67t0% zT$Cvlbt7+rKJP&F-K#VjyqRy)KTb_%c`aJ>=A&uI8%><~K#DY@Cg2kQJp&n>nH2IK zs0kTP56lKj4#CEG@30If7G4BbLT^s!ODZMei)gxdtCvuzNEh8dPnaOkrJa0Im_DiV zlul4gGcE^R9L3?UbdixRu9la`Cc^~~ubpDZPzDhXv$20#=Q!s_De3dFfF!8!6h@~rEr6>qKylD!G(v`1LeF(A~ zF$HPpicSjhdrCeu1$pQS=K(=*?RQgfimrT>Iz#aHX;bhAUHK~YgrLhgCGfPSzbN>= zO8p^NVugJ+hdp+<6q0X#Gp$XaD_^V}E#t{c1zQK^O}g^MP7=M{2Ta*|y7I-+>9fE~ z5Hw|fbN9#27g?i=rmQ+$`C{oPDd^q1V9Ku2l`obKOM@&IicW;f>vZLd-Kg|voN1m{ z>B<+oU1aTdo3fAT$``v|WJN8!oPu{uWL>YAdadZn7kgG@$E zjYEBi@Ek~2zF1YzlN?qu&$C1Li#snCW0rh>y4TeEldgQR3FsgtzbDCEQ}*}{%aV&M zxivx*oZh1XZ`__$TP zkJ!rHA0&6%h+d!brVkzI$`{*NWaBQGvVnBvi|r}0MpnL5mwf3jvibK+y(x6%iybbq zl2$3n!=)s4oWir}&p@s}v6GbEEz@Qmy2AJq8P7Yqk5Wqi%@^4s%lGNx`x23LzHi!W zPFEOzBHLn(qm?p_Hi|5P6|=vo_+b2rEQ#gA;~>lSi>&Dm6R#Fs`C^ZW>>EoqL1bq| zR`HCfSDdbVu~!tHHT68^3LF~{Sz4>mC*ndMdrxE~E#LEq?@vY6^reYci>@&K=$uo( zXUh{)wvw)VvB^c&)9Uw6rQg$vY_MgsyV%SuvWiv>DK0f6yU6NT{r;i!dtQ;HwdzD7 zsS`y-_Qz$D=V`j~#lA1HCDyDpTVhsGWV@~TX+6(Ru~8z+d)&17CSCbr>nl8}L^=mg zOI>OzvYxw4*{5{ni)|yaI@TEbP{vqiktMg{`HU(b#-GTxSo7FQnaBEztj#eKuK`_Q z{D~~%&!#LXU19zc*)hw9o#MkJku|dFZgt@@Q)JnHH*Kb;D_`t#+$mO;YyzR2dBGD_?9yk=@^J%C6CsFE&bKjh~vb z8gzvrD6&dcSCo*U+f-yPkC=LQ=?X(oWZynEWna-1ra+N7R$M~DrKiYxSv=c`tiQ-E zTIKbql-J=b^Pam51iw=myN=lZDyMEW9ISnU{coU?aZIT?L;l?=X%ncULbp^h?>s66 z>rzX<=dWMM)|p7<`HeoHn-Awr1U0a(Stx`fY1Iu&rC=r-U~grz>Rk+_nmEh)$;UV# zRNvlI3I?weh!ap_*jN4%{iQYoz9iiU*Fm_fIkGU2U&W+=v5>b5KH;;Ou|HXn&TtIV zs2ZHahCLya5uD)*_BH)==`QCE*A=>TdMNcxeSU-M8{IlNhrl&(si{e{YOo^g5x7FW z%fa%_Cu=xVI6K@j(bJ1t=cK&W@s&DCe<`Tx+f*|$g@D!ZKUV!)1D~k={jGx8zcqs0*|291Ej-Nr{fSp1)W2UILLg2x zG5OR8mL|1Gr`$l?(Z9o>ME#oy>?8eKBbY+ix1s8Txyx7nWBN<6|ABNProP6d-M>D3 zqS$8z`$&Xq1y^6=?7X?&)xW3lfn;YvtknaVz&^sKR&W5+jM(QD_TQ2cV&ANh>1(ZE zZ3c0s>|yqZ{W$tdvA+#QhN+7bUMu#8IN;6}?1Gdy5s0%gKRS5#D)(!39=M(g^p7(9 zmFQ)B$a;+}z52loqBnupDW0+PkJ4)aJr%8c<;}is7^I_zk@7ic@-X{4Eq%aac{+9$ z13@eI8U|~VTBL)XeaL-%0Zpl|3p6xi+c20#n0+GALSHv9qP3NDBc@j2((day_(ZWU z4)&40{y4b%cV<5l<;EJzU*H2_{}gwcfdW?UeH@H~n$bb!gnfBZLSJ`lVD|OL!PX4o zoR*ao`uZ^ar9zuP(N&}WK84rn>&qN)=Sl*qxKmJZBT3gZm_$s+A0@h;pXeWDcL~&R z{(2d-_f=aJytW*ArFtSj=lt{*N-tmH*(a>rwtgkJT7stWEr?4bRYt)$4h6>!dlXK+?vuvo(k_DgCH5(+Vei%-y{e8c zW?~>`Z{B|!)dxoF_>WYJtKI@zm#JURogi>C^a}MLW>uZIXzcSIp+keCqT(7)4AkvK zIs;Nvifi>r@LedXT>Sn6?wfhipJ_%VW1^lKJ1L8dS@AvkfJagztil5GkX;nnis3EE zqqbA4xG%g3*vz58m3q{?nnwASyTkiC)&_O_+Y$YK$tYR_O3Gg42;11FWDI9`*YS0j zM|B^&n)TRz^u#*8_TYeL0N5SJ9yuNzlwwI8xNUx#P1?^upv{kyIw^KOwq&7<7C~W?AY%`3z_@WJVo-%tU&6fm4j5H-wv0rvze2#dFE())feBiICBm z-{1r4Me5@yo@s%K@4r(AAffSD0baGhyI%Ae(K5My!XJ8~lVX$EAC)<(jPn5&r!jd@ z_mA`U}_xaeHnnPDNlY+qeq8g zkQuF82g_X4neh{iTD_EM9n1<5QlgHpf94Vg0uz$bND1%bwhktM6nnu%FnO1F9PQsv z&la#%dZs2y(cekJqY8Vzty%|v{f#VnYSXi~IHzDcI#bybgLN>T1t6!229A5J?4q6G zHo>`~wWl<7*)EJj47YLd7?EYFCyz;8$6qTm&NF@w$H5~Bl5-+q`?(FeFxZ|nBhk&k zj(L8g2ZwRakWbzv_`+Dshv6Ii8@^pIo4{8$;qz^@;e8nG1n(=MmZa?n{`v(Ae(L)a zSI^J%2tCdz>@fUM^i3H4WX6Aa-!V9!jQBnK;Gp(?Ek>g0eM$wNG7R65;5*vzUV-0A zX%y##ZZZ6obrJYR|Ay}p%pvemCVb+HHoPA}C-42mmG@l;{^ohh`{{@u{OI(ElF-@S zkl_D#O3L?;2b{M*N-wa8P@{1-Brk_o)?p>M(p)g70j@XA=0LN!a@`Z&Cg6 zq{QqRhX45A@I8X>2z)IQzQa#8d>n#K-p3VF-uEE*;5p0tnTQ|KHXrHI;D5g;t|MhM zrZ3)e3pe0u$3$Q#!@M1q88H~no(6OSh+&?NmYV)7Rrr4JlUx;VVW7$Um3gEZ>-#X9 zVXSATCUM>zun_3l&tGv(^iD)eKq6kAgf!zME37cRl33s>sPbmyunb(FvSFENBZO+$x_5BW84BUi!1q1OI@~+hpFWQ)F5YD-&V1St^uMa(D?gq7 zQd4D05nezxRx7a`ar|gAMduaPUCHbC$IV1YqA>$`Dus?y?>7u*b{~pW8YbY()ygG7 z`hRG?VQHQ^%~M4ZDu8}(wckn2=^LU4v;7OI?ifQ5%h8aRDS@IppNHhHj`%B(@T8L< z@Y|BVvD9&{|3UiRtp~&C!)c8fjTnRXG2(pzeXJ(3l<~94a6=fT;C1P)CnhB+Ly}1N z0!TuhXzVnI}P^w)zv`aJk0E`(k{ARQUqlUuh8>E`V<6n$wf|0rbQ1*75f+Z|1 z&ve5em1$K;7Lz1$WBxH?9K{`Qpn%0_7}~|;G`JV!mY! zLmI~9=6p?rmbc!l=}#K%e^t|m<@I)z>_PM!kZSsCBuA#OrtIl2`p2K{bOiT2mSO~9)udr`Z+cHSX8&59hvv_g}DU@$6@RMOLRW?fpYk# zd@6^zQQ#yuYK`=iM$wpTLf(m1qg~P{CzV}}^HY@3koPmI(OhYi}d-hX8^N-2$c(K?8U zZ&*T&)>w_MpWqM_TorEgdv@tUEF&B#(NIS~+rmLwS{tL4Q$!t{KI!uk8z_RXk>U&P++`VjhrJ$79{yT`Uk5AMI|}fs13$F7{fYx zsO<@Yg&5S6)KB!3G6>9UuYdW`7Z!DYys7vm<1b{_Q31${2(UH@PAFVaQ%d#U}4 z#;arx1Gksh?!bOUqR2jm>|el#d1uites5p}{qvvM?Zt438hI#u(}iv*)x1cC@XkSe zLfp3pPvC!n_8Xp~Ly}L53hk=;ey%rSo}dTLA~>|{LHP4lD{+ACnzIKk=q=zrYgH0# zr=lvm%qhjBBl`g}F!(8N{GK@cRnu2Jb5sbWa%grVg7HvBb;lMKjkH2NjgiLe(!-Py z;qlzuyh9#{Pogl_$k?m8^*_g+gPd0slQG3x-3$(;*@SmL3K~;668H`aB%Pnk<4YvB zF{37770)AzZy3ha?Y`P1{hNZ_9~vQbnMVAv=^waJtucY><^U4d4u)+V|-&uc|NiVOl(zn~IX;kz zPmBOykUc7Z&X!%Dn2B|G8z_2lxH&~VFp^Y~9k!Bc6=f5)hR}DuEP324CzI5*4>UwH zP$Z1atj_q*@7%y5B`{>kYapxYY*Ol+xI;wHTM{=;GAR_tj1uye%%KV)H|mT=M$%-0 z!A(m)La!Dw?a{7Zu)NsYvLI~l>I1U(M|Ne88)dfb?W25-a}Fn@uSKSWaZNEfnf&u0 z&`}JAFMSPE6?v8%BS|Eghmjq>_kBDXmF?4xz(!hQ-4%vswOLRz(jkh~JpaIDu&4_b zl$AOitHo9F1Rm0TZx}lzv1&v{{NCr^g~9&80s-rvY|2q?RK!NQgbIp0eu5<$R6Eb5 zfBv&hcgsl)*;PyerEcWIj;}8fP_N@|0T$MYg**I6=07bIfCUvsvapCOd`T7-!h$N) znYf_y<3MUNT%!zQ6wd}MN~IQ4G3CO&h}Nkn+|j7ofr+2#B?jqN)cO@jKQb%c%r(la_$$1q-UK1`A8X;G$UVc<+5cI`tD(;fFSq7}m*dIHpYdHgAnd_n z8Vjeb_$RztX)f5e7I7bJ`QIzSAacgA{VCawBin7ocA1rIyEy&{+kQoL$?xewPbuS^ zHlaK);OTXd5rrIgUc%H@fbbalniI1 zu{{iiVd?IMa9q}{HMnGsaLKJz>eyT!@&I;Lz(UA-6oEuq?8oi|;46 zxg5?7F4c(314IX0+G#HT@SslmA}&Q`xCGlW zm(6w`rLwvFlnY#15SI(PIWDy|mtxq+*16l~O&yn5t+E6vMqKI(mlVvUfN*L5l;g5u z1NYIZ?e&1E-=4dOBc7DC>6 z2qfY%PWmWaF^0OJJ*-Z_%4jW<-&6-E~CisP~x&|C&%S2&1Eun8FU|2jd1x$ ztMrG85tr=3gg zGU3umb1BcavMP7yzpmr5LaY3`-HOX#E^kh5=F&vCMA432oHIE;Eg?M5uNq3;6vG0*Sc1c*0zwKjS`n zh3yA}OE#O!{%qiKlepZ)Yz;2;5JutB(&RGEtK%|Ft89Uak-P1MivtTGZw2A9{V8+# zs2p=?j-hFA`HHt!^a`{b8NN?k+6kB1SW*d>;|pOXyk>ZjQFBS5Rf^hN&T>g{QousU z`y&F0xO9ERT&9iSd}(FJC7I1-byjf6MJus0TRARGkR`&!G1m+|BV2}Pl|@i7;!;Pr zcwqtWc@!=^Uoe;0;T)Iq*!wi%G6?%g#yHAFhVv1Z+QQ`!rVQcI3%67{E`Mauak-x* ztdiO0vYpGDanL+svi!6pPE<#}=2FWcUN(vh8P%O9joP5DK>D z(lo-QgH{<26(cSsh09CC6X%>V7jG1Dmp9&>x+tB2$*rta<(p)x7NJ)X^k($f&?nCu z)lT6hDOAa15Zp`71G3Ei$oe>o?a|)1VY4gQ{A&w&7ef*_`Ut0Dl6%3e~`Am zW6GnoqeVL!EwT3qopxd;(Bc~Hk?3*s@U1Z3TjEh!w3D0FP3UTzf0#~tv|qQq8xQXz z_fs=a*Q{@ajKK%Ekusd_!==wV4fly~I?r{>=^kXb069G!hT(LcjbW$z@bpMdH>X=n zzJ2Hq7YwJ1Y3-(>T@)?F=}TB*(w%z8tCrKDH^X>&$PvGHJ=%%WyRVVcd(&#CPwKYM zHd{_FK+&?Co{SG{r-yM}^G4wY08SU2g}TooHX5VWqkL~md zR3yvkZ}5Tb^p{+;ybI5;)8)9Yw9})>a4~Xv`6hO{kM8OG2g6QxhN?I{0WKI$*U;MC zMf*dvl%6gqb^?R1SWbJjMmcD}=_F_;PM^pARml6>Yuf2x<}kOk)Hagd8&Pg7rx)V` z+v#ai9SeU2=6Br0#Rhe!GCriQa(yOEzXlOBT|PhD^h^3cn$Ez7)U<*$ z-Hwhz(}b(TO;^ze()9K!X_`@*<|cD~XD;q>g+NC7K$`mSAz2M#8VdAzkQ#B&{qk2P z_})D!`X%E=@;xtqX$wEX-9n9%-PDa!#^0ey_vQwQrn8=ID}0_+^bbJDx*rOVEZUBb z{9Zf{!$1GIA@nB3m|~DJ{skGG!bZKD@Z^Jcd5#9QVl!X$ziQJRZH%!y(>)$t&g zGXE%6A^-7UYc&#EBfTV~ylh2(FZ>K9AaFj5TNHFF_GgaZudqX#S?KZ0#MfvyPkfJN zSQFplySkpGjL%B*!`}5Apq~*2nSD!aph&3ITF2C!b*k-bv^9LHDQreSHRR2O{6s~F z#zG#`?#klipr>D)h2Gypk0g8~qSwFvMavR72kH9Y!xA zzNdYg(eGoFVD#;U z8GVy|lby&!FH7hreq`T$Fd@Eg!?IcD{1;(#Zu>pj8ooCc^ty~*RM5Zuo6&b>;;efI zs~^MnQFsQWBVU)$8wq+Ujb3T8f&MVL@}1k}wb9R@K*0B7%PI0}(MRxo*%3y6Sc!cv zgxYJMCpFRA68h=2?0XzcsD7Vgp!W@O*6Yzncn=KPYx@(({?j!)S=U2Z zZ&xFy9J1A}?u5)Nx}Y_u6+ zEoO3CKyD{wkDQG#Aq3{~tftVvO{&7mZBM}i1AP?NE@ud%w-)rC4;g)j>~S8%WM!cL z7&IcYp3q0aBC?Xce%jhGIuYi$1sEq9y-*mP+qSjQ(+YYDM!$t9!S~xz zNDF<=Sy9~{@fA$;oP?f6(D!1mQo8=Ixlyqyk@B6}UR!SYJ_WTC#QjjkITwQd_%Dw9 z#AUpAIEzANM1Du)COBn$0YaY)i!c$T(O*NE)xH-CqjTF1HhM-ucNqOHq6FWco@DfN z`?%lpPqfghnCR~ldImv1h?@)XeLkjAjs9aoO1m9Q7qH)b7M!yrP=?MlUIM z5c+qp2;V=^=(AC}wC~lz=-hUIjhM`4i_X>&EB>Au`Y}UNU@tMd&MF5x%$A z=*6*A(Y{BA(YbA`jb2pH^D%lVK|g$!(L0o3^bb+B4fNI~da9&AFCyqS5F_dL!N?Si ze)O60o!ch1(bsZ$bCy9B`~2u5_}=OlM(RB_HN`Ut)!I?U(|Wosh!cnkgdZ-(zh34Pr{_Pwh{pEBD(ZyZMF zwm!5qe1Biii!pizL9Z(4>z?JJyNK_x#bZRilZpN*p_dl)ONf#9zG$R@e&(t2o!h3e z(KmB}aTY=~=NNqi-10F(crI+0b?t`w^#gR1&c>Ig14YT3rZKj)Hbo?^@R zIfeWjT%NXM#Ya*2HAx*`zwCj86^(}%thfe>hM#R$F!uRdE@;JJIoh2ie-aVrq zqNR*)kPM-GGKYJ!6=q9*dglFRC`D84gw1%Ma*5j>qP7vA1~Q=Y4pc+l#^`s1E-S_@ z(C@b9Tq=qib_0FsX#@RJLLVULS8$Uf=vmENdLxX^ZKG}U7hE=+@A&@c%tJ<>zmCxp z%J=)Gpc)$J1x)mAg#P>+_We_hK76_1``3Rf-?{BkY8&x=sGz^g=*jaE8n^8NopJMeFPURrvRh36!bfSzN#8$U47Ie!}m46 z8otjX^jJX;;3h|W|K5C%lp~DJZ5!L@Nd$cbRPmmBLeP5`g74+x89nz=&iTTlE%XW|`ZhvOBj|lK`X^@OSN)}Y=eE~o zSiVo;^5&Ff^lpNFTJ{7&w;8?7NDF<(F~j#`gg%)p`kkjd@6pElbSyx0))fn*bK4F! zdPYJ28LBwv08xVP^AE7^J7gDb!Bh*qii!R^p=S{Eff{||7Y6!|x0UbQ_U3fU_vu{T zoC=KIOVHKxhyta!-#_VPq3=0r`2LL0r;$a!^8%}R>Gx;Q(7u-nqjTFXHhN}3-@*4s z4-h5z{)gO|c9Xr|3HBXI4HMl-0rX6QK2)RkF{{mnTgrECduy8I`)n?6P8CLv5%e)X zbL4OK<9_cy-17av5ySUvgg%Qb`ke$CeT?aQnJ_xH?PjCDE$Dl`p?-gYD8cva2N^x# zFrH;{cCyfGo9M*|{VhQs0TUAW`D2X8$N#B(=eBpJTE5Ta^5)cF^Z|l?LPlKK;f(%? zy$ATqFNW_G34IP(^gBs3`j;II^zvbJZrjU7&o1Z(z9!$FBTDdn>OS^8_fD>~ui3S( zo{2t^(6b5p>xj4bJ{9wl&bnRj zHr7TjD(GDpJ(Zx-`zMffFaP3wu#OWg-&>pLrwF}>py$!(RmU2>AHA-8=eCJ$^tD{x zoLfk2?0=$<;QK3?VSC8yzUpJnFe3l^e#7^3guZ4X`@RGw#P_~k4D^q}=-hTRwT;|O zloa%CjGji&`^$)H)`lzXc`Q5(^mZotMM5tj==nAJy-^1G$v>3u+%}nwzMjjQa~I_l z`=96|_`X?k{;kIx`M0rBG0?B?GkpJ@(AQ01-S0rN;LU>DB($t`ugQ0Z4LZ8?9hg=xHU;P1=IZ8n()CXKIbokCR!dC#DUMs7)N zhkWez5s2kmTFWt4;(NhiTiob88o{HbG8NTY$Ae@c7X9JAIX+;zHg{WXwLs4JG9M z-EYh%xlG*cg!^y|;d&RMk>JikzTl=f34$`GpUMoptfx#Efg5x~10yHi7Dv2T{2+iG@313xjYMs+%}7+XP=FykJD2}| zBiov4ctcB&?eE-1IzgPznN65edULE>*mfF$wf;tr13CAG9Z5ZH7ynZ`L& z-r*$s@zY3>mELM383QGQN*&+o|0+j6VA?`RdP86GVDbu;>66Z@n6Qc6qb#nyp|&X% z%3H{L4+B%@Lvja!nTfV=q!XK_n$)2W2<68>Zv2#mD)dj?OJ zp7#-Tu~!&>8TK}zIh;y>`$8^vNb2^My_vSX8nB0OG-b0Cj*eI{aWN@mskMa~+7;F9 z#&Fn@TaC&wxTgvQot-U%zl27 zoiY6=VcWaPS?FmeTQ(2(a^+YtIWj78#2b}^^X7gmT=H$CQQ=;8Ol51{ZqSz*ZO{)g z6bD%xR>6W%y;=!}yW4qWwi(Bh(wY_#4s$je90pL>x)BGzcRU&iPnH;S@h zo*+^({K99|3hicMT_OX zvD|yBd8BBKwG6~lgGkZ(j5^ToNrk=^dkN_;wl{`IjTd_-Cq(R(w(Naw+j|rC;6wrZ zBTmHjlE^2tv`VpAPcGVN!TT9MV{|9;+u>j$etyF%Ks>W-|>{@9RqzSg5#H{ zLEt}S25;Li%lGb3!#TKUqU+yc@_8nj!G}(4l?HsZiPRAl!nU|kZ?c8=F3ME5Y%hC| zu}#E-o*Rv1VU>!al5F$;$5eNMy4CO9g~>+}Ytv$h^}+^&)IM@{87#n$Pm%NjR3AW*B_lXYTuPrHetrTlD9Q|+isAb1EzEO@dYXUWB>PJ$Nwvz$A(q?UQC0Ih zuUb+!4d?#!#BO0OC(iJOh#$*!V@u-K^*Rh>c*R91A`Fx(W+lFqel28iG3->4-Ex-H!X?U3+^Z%I1=T4963f%)%wF=JFbrVVcXD z6FM$;ehaHyA8f@X4pR@f+`uw8NR$OAJ#`&Ei=-ZIDzHs?{6LUFnoVnCSsEvGC^ph2rA!PV> z;?f6(VQEyj{(BeHGq^YrF155uC7VkSQw1zkW-hxCNW^8GY-qi=lJg~mg_Xf2v(4rH zd2qQ!Tml1`%Ttto>7%U}Q955@kLkE<)hg?tVoZQ7h0A(az@~`Iga@PaTy2;A@6bo5^?!! z4foOaKXM=4?PPIDU~@Tl4qVt$2m#Ya9sMev$zD-SX_3T1(&MCWn+JiOJ>cbyE&#mig1~rRYpU_h)W^i za=Hh_CAn~Ewvf53UC6oXw`<)eHkVRlcnonVC|tT??@!|L>{BBydw$VzNu*W&>1T2I zmdl$%`{^O?V00?t@)ApY#O3v$IW85j7B%|l*lH^-OV5DI4B|2$hLL$!aNjOmUbQv2 zl!9ET0eXY3oxV$;DVFC9!!iCl|h|8E+9G7H$EiM~ZS#g<6h96K|#=$V+QeShq z(Z+~NjtG}lTBWhgRxIAr)K)w&lk%;oLg z;kcy#*x)klkdDjwQ(=_@P%(11mvA}HYwSA0<Lj;Z0DbET+7PUFcb3rc|cPtqLs7Sl=gCEahhNX3A~wFe~pz^ZqH8w zuowaU*_%E83|8?DkaqNsdI!i@DNOxAKs~)^JXAfs*o`OC;inh4hh2wDetMA+>VYCz z)YFTkxWdzm8Pqt=n;FW1k^H)WdvwD~H2M&Y5=5gN)9_wHf8qWoFesgVF)p>MquZ55 zJ0t4XP_XFRv5_0I<5I%%FDFpv^Lm^HNid@uCCpi_Z<5l$dQw=AYnml^`3nw3C!{vt z4tb*+k?U$f-G9H1_^A`1orT8Ja#D$aH)3!nHxG^?$QmRh{azGIx-?=Y>0#1fGIE*4 zWH1cJHLVqFEKDw9>J=ubFs3wcuf>sF?)Y8%)|qnCyT;d^9ncNh*<;R1_xZn8{nhB@FX?)!CiRKQYc`YhT&63wOh%DPBqjxg z$xAL=$%M&jVKS=$F91HRZ}m=#2oo9)jmR**_=2xN2$!-Q!ciG8$cW1BJvu5mw93;S z7MJ;4tDJw(uOaUsbSRz=LrvY<6WWcVK>LNzekN7FGa6+Q#bPM^ql!gysd&4vjf0LI zUzIyH8oOfQJLp+UbS%l{6ta1gY<6Lr-W+Hvn-KEcBSnOIN8Pr(P5nCN2=rlA*-KcJ zmizGi%2woZL~v=W=Y*}erf&ovbZ1ZAsUD8o3OXH3K9N4WDBnq^eHmk{&seM@Kul)Ba9q<|!7jpN7VJn~r!kjsi6Tro5tCfR z9|1KSq zi@$(LQDU;3R3b5HBusv(N--%SOp^PVNw0Ctq`AGw9{If$lTk1n*R)!&u`n48I}#H= zZdx^yJ3BR#hQy>AG0AB&Imm^^slrUYLlDtBN4{hxMc(G*Op8^!5tDzuvzR801EL9iOEb-iNvI$FxdnPA@5tlq|Yj5a`73*q&x0m4JJKo zCOw%+|6nCy@{z7OJq8*vIln{4qyjO)eF5s9&15|n8Yhj^KXfNzQh5Ac=j;{L4ZsE=LZ63s>VgWZ3VlfF+4bS?odRynQdiAC(It0{ckZSY| z8ezMGaH%c6SBEt{zXVa8uQOsYEqwWRSfp1)>9vO*T2GY`ItRza!pdWmpYZh2d;#$I zY>u;Vo2e&b-PFOnqC0#61s&(ejGT$IpcfqRyZegqi1Us>57wk3RMcsl1JTWN0NcPw zpKREVZcI%nb-FXY9nZB$< znvgFmx9MEJwGX~zAYW42zO0pSd=<8Y(*r}^=&i`JNN@**yuD=<44$MjuM+BBOn&sy zQ!H*N^U`vBvjpkV*K*#iB5<=D%m#{J?aqg~7RD8_Zy&XY^Cp0Sz(~BmKqFn?dw_~W z^>w1!x)a5!3eMO$1ZVd{tW16iaG#}^A7-NaZ2ev`l__|pBk_nH3ui|nv^dXYTU41!$zv+u;OETnbsL?DTO7Ya zLmqX@&sD!K_Qw4g&!ZGQ(GQ^zDqCJXOF2bw}17pps z>5o8C*7W~bXU)1ju$zgx;@1vVGzYUy?@Qb=MEj5O?#|J`nei0Cs^N2%IhT9G0u_s? zr0@40h61OqQ+xsy*OKuXt0rM3BdpFgR$5@u&nxMaUOw3p&zWCPA;f1m0Fr`&PyWOw zbRUQ#_|$=bXQ>U&VU2^U@@2c%G5K?`^k7LyftE9fOFgcnie(|t3k-ivrE4}K8|OI- zDbn>E=Ig+({OSR|T}_KYJ#BaT1URJnt>C)$)}X^Yab!_XIv2TboZfVxM*CEw0PavwZI^TdB97I@dBfODLd~Y0JBYvx9 zPgHuVp@%;12|XkQ<~zD^-}&XglcJSU7$yo8pdd++WjrNCwoN)IN}^?aR!WM7)HX7l zpCeh_NpX`u!%)#FaEfXJr^#cLCcEep{0^%?*ty#OOXKQXYr66NY?%)YqMZ2aBJ=p zOmm)ZkW!d3JS*~$<-*vAkrfSoe?ODJ=oppZUt6?_k)flBVW_^)x`N4D78CDb{??0$ z;07JFS3ANgSx6&6KA0(89mTWQEtoVGSr2DhT)rd2CyC4M zwj82HnoIt&2A7r*E?;Ps$)pnDQbxF>XD%6qOSQ4gJpb12qgMwPJiaoeKW@;4IV2Q zaj9=}Nl1nRNx&t$aG8(03CWk~xVhE&vT2=;%aLtimA_hBT&8W|xU_-=Jl_{ClV#OY zOTN`{tF*;s_e?7;F=V)_2VAC-VZW16bJ^V4;8G~UrLtCOYja52W!2@HOXhXquFkheC7VVvjU8)ffxOgNBMM_PxxQ4w=3$y{AxFjyFDp;h|W z$5!y(r$!B^Q4?u23=gnTHTu&(svbSuOz`D9&_{kJYjOJL49)}$6lj356rp*T+j+i= zLxVWy<3=2>WVIrzpHwp}>@7b7`(whs(2_#r`5e~Py2W^GLgV7YyM{6}`O5HY} z4SJkQi<2I?zt2POUPy>zrvh(1vXBmM0n(4;@2yWbCCZi|FFhscAGM=3PHNQs>CFC% z=UgubRWNfduzQ+iHipa|C9_k-Y?7kkO#1=*zIrSciuh4ktF$GRNbpjKA3KYX<9{I9 z=#{@lk&&p(QDvNiAE;Hu8?>}js|ut>N?h`);v6l-7kSjG;*c!GZ+}Y8c;lcPczQ~4 zmm9$y@mMmnP8>YnLccSkE-IsOBRG#*G))}bh!%7gC^vXMx(|}`SF2|aWEiajLQ9OU zN@X-uFieKP8PVE>v1{HIem>G#Vw6;R(FBF>5kW7q?rc2*7_N0^Vx{o5C}f0!EHO5Z zr1))FtrO?mX7mwCcY@%(<`i&!mp2pj&b`DKMKut85?ObC!L7`7XB(-LIeJiNodsn% zPyBYx{swo;Dw4F3(wI0DqWPmMalm`DkazOTbP9E6_>qGrLOZ8cDFYSb3CQnU8l9Z5 z06*7op5&%ohd5_?cjht-(_^Gg2GZJG4r~IK4~WZ^X3XX6`(ZBCs~KDdtkNNzu2oh* z#o*FdxJ-uyobx7J&S575T;7zgs#j@haTztmic5JiT$#8u5-xQ#mz=aJ569)Nm6}UR zt&+p$asYD-BAb%AEJ7eLetzl4T=FE~xD>&ZYsBR#?@aK`AobCjjo?z7xa@DraoLWk zPx@#KY-%oTBV2}Rm1$5h;!<9?426Y|H?wfLkBWx4{IG$!q(ZkFT)Ns^a+Bf4#HE~Y zDXF=vZD4RYwL-_`?+sy<6gHPNn3fQizpQraWpxvd%Mw_UxOC5NaH$#L(ow4nfr=5A+`^?Jb4dU$`283~hi<9$sm7VPQ93%H z*b`OuSj=lt{*N-tmH*(a>rwtIcBD9^t} z-5;1XL{~eU$Xn{jdbV<_is52quH4>}JYydX^u}-c1UJoSClP^_nkiaF>35zDj$frfp_gP6totX*iwHOdtg*nE?;2H+=VR4PkCS4A!z z4eLntO*1M3WKn+48ccPx+d-RdwJB!v=>v}0R$A?(;9s%s540Uj)f+zXCSaOTzf#B} zRX9D|f>Z6-+R;E2`az(H_8s?-lL7Y%1m*Ljpug0VeTuk6Z0*Hmi3=3iDBmZvm%uv* ztGO=GF}%K(*hMlAAVs|p&0$8{CbH& zVdT^uT-p!4f5Rtu1(oaA-n}%IkpI|U(zD!JeC9r_c`iOvz1sqR8r!okex!^}8Qg;h z8(_B%V;aY;NBI+SHzzD{fDT;`WW_Kr2Gc&JGzm(W^qYQ&1;S&R?6IL!6zcqZe~=zI zv`(0+R9Z5Q=VDLz9_RFZkJqg;3Px6p4SCOrvPW+NH)Y+|f;mLD66!He{YQ~T<3EBS zW7l`oa@q45^@A>yZ$Lf%HA?a;4XjKY$FZ*Gi1OC3U~I z3%94U-zyBF5?g7BhFXc1@hJ%^#)is5P@JYQV^x->#7ETSk^QZwaE#U`b^O@ez_wn< zdjp@Sej9|IG5ReRb4n6)n3Lzbl2p%dqk#X{qp>*^AIR8DR2yTn8-D(3bl{COsO-p0~{P|%Epcamhf-qo?`9EJAZ4G(rhTf`30!yoXF*8(qAf(ODZ3f1G)Lq z+`-8ZacK$qN|B=Z_#@bl?}U;We4i0KO|h1>igXQH+;YJgT@g;r#7|3ANJu}O)_+>x znuO*fbZ{#Ln>!jfjvvq&u;*8YVRt|c?S98r5>Izd>jBiiZNHE7uWmcdhA2QJ!$79?QW!< zhP6H0K6dr~N_-%J8VsicJtDtUCH=svu>R3{cK-ts0qDu*(Es>toe|$PT5TrOkOAXp zSB6Si`Jwce;$0j@jGTIhFU<@{Cn)(*0_0S-8wEwD0R6V0hxKgPPK9C5VK+FTtkyNJ$?OhqxUjcoiFgFGy zBJ>`cI~o`h`OzM!P1I_A8P<7R11MbVZ_{6jcUl-RY$oJObJ*X7Hz3`)7j)vBrSgRT zYVJspEIiignM{P+m)w07&F-!rA_?Jl`T)14zPS&0Zd*~lv;vATq__u)Mz3{a2F{&# zs5HL9Wc3IB3iGcIA=YsVt&o33riRn1aUe`#R;Y|tw88B6w&6RMH_;yJ4T@7I-L|f@ zeO+gCWE%{thTmJZN4;{*DuPvyqMZK^^0>);6<6$@mDw-ce2nkvJ*ava~jR!6~!ssOd5Av zudw-G0NwlnaY#cusz+*39Gt#bjLLrD+iz3A)fWOg&DUx8lUDhfRCvzh#by=ZRuUFM z-mFLwg!QsK}(E%H@JBQivv-N- z4zuDimJC;*rzG8l%TSbY;ZhZ=4IP(c5iX6iN?DuBH7+SmIammJw<3^;%UD?$1oBJ1 zV5%_UlHTU>{5x=|PF${58QDM#b27s-PxK;Ij!=J&E*i66ekyR`5u8p zTuNgb0$k1(=JMtwVJ>~qsfbHIdSn^rJUzsH^lfH~%fZM72Ib3-3&7GMeLP;&dIC-{yx^c9BXXcRv>{zdhiN!Sz6aY-EEQeUf-wz*v9lH$~7 zE}IcZ#3dfLc;J$x3-{4F++rDVdClhXWFEL2CoY#Na9m!!5$3W8bDZYVZ<>zFZmqJ6 zR3dR{C|tI{LdaWKxa|9!xorQ3$I(A^EG{GZTXFfE44)w`4TQ@Vn#;^`2A5k?HJA6b zN;aFzJ}xOvQRcD$fka#ie8yaMpX0d9fyju<<9-&G%X7iyB5~RKA;;wgN`UmyZu6TJ zts`8PYn87^B@&mi!etRGguJf{ml`dZ%hRnKmmRoiF}QqYb7@G1uMw9IgiCYHh4xo< zAD#S4$0fT~NoI3d#pTV(%v`=iry?$iWe#Zcf^)Z8F^kJ3en_CVr}oVOmmqOjS)Su^ zBvUvpNwA*RTxvwPOw}rbNF@@NcZAD$SO|GvA&}tmZbyzw<|7=J1K3(H;?lt8QkD$g zCN4RJOJ&WaO&)_w{1hFR*2WE_8MG@M7RvrD(!48sf0@(Sin9n0*SZ`!!u=!>7s)jv@09G9|a?6G9J}8bo9+X^r{rKq6`%hjgp~ABoQ)X zZlbym8KRN~_y2ycwa!S!uDU7!fmNL0m?u@eBn2zO)bSX{&!Lk*OgkP@KGOE}?unbKf z8?Q*mQj~%#63gjkf@ObHUp|Ks5tjI~kze+{7-m_+EV*^}ZpAWF>Pt(-5+5vnsZv+Q zqs;X6(en?c`Q>p6u0kvW6idel%lgzgL-LsjOZzBG!*nbMq)Txw7AzmYk?_m%PJ*Sr zw&}SSrpug4a-BQ>zayRCP9*7*^AB~sxLiqu`G@+eFG zbS#UddvjJpLed?NLZx3G5G;SL7A%{}r(xMYB+W0!W&q3dJizkC)#8`#?LsWYGg7cz zpNr+gD9cD@$@NPG#Znd$lI~w{B(UVyHvP+G(${TBU#oRY$I_dEXA?_##j+J$qxxlB z>YQQurZy3M zxTq6GlH8Mz|Hrka{iJ_$Z-G>)a!y;!>g0t$RxYFs(?dv)P;_q9uY%l3w;DK8V9Wq_ z(5+5RXYj(*vZ8^d`p5M&^^_l(I*4-X(9|jl`3~*!mu-+zZG);Bmg;4L(n__V)$vP1 zF|`%y`~PpLj+8FTJ%zDXOO^MIN~!kDg|vTK2x$sLr0qK;%_Msj$dK6nJQB(SEV&spWRE~FRd2&jnD_<==oU5wtSBXzXLyr2SQ?nGG zw9G}a1{qcjCX$DcCB-M@70K0tX5d1Dq zb_8e~vg&YNI~~wY?NQouybYY^zL&B&kG?G&2TG)4hzW*DIY+LfE8Jb+R18nvMwR1o zRc26SCA#fH@TT~n4^-m)5I9qY>%#$UYnL-wU+&=fv-VjFyNInVs))ZYL;DPEtu`QSc<*E}{fQB? z{r|odc)EymcSoc7!w@c``Isjo=NF0qErp~MK({HN8M>EJKQ4g!mdXY6++7hM_7)#c zhGkRe(z_@q?luOm&LZ+dZ_+inN~cD=*Q6``UVEwiT#(0|1Njj6W)}ndK`P#)e*_-9 zPan&+5^duYro=ZmRsFfPOf=pSNt|fRzKGfw29&^$~aPd^cXx*-x>4Wd(O4T>s{(|2)dF09jJhcM|nZ zbLkXnp$Orxa@_>Wt42B~&L2`b%g6esxoj{6|4l3%70VwOhqZ&cGqr>I`SHjV*G5^& zrDOS2`XuLlNWl76Du7AqAo9dxy6^Z;^;9gU`=wzy>;sFN4_MaK6u;aXVX09x#V~2-d1t|DsUsNwFS?PdO=eWFl1lNR^+~ka{0Ozl1}F^1%y= zwGK(YP1!`bo6}nMn^C?v@?jER8_q($@Dwc0h9pLHrl+IkI6BILs=_L>UAvL7x^3P) zPi_9& zomzBYcq}{YxO;CA`a1md`(VfaLa>4Y#8opXAnrCr4*dqF2^L_u7xU4mSb~W6{&Z!f zpo|BHvhc0CJtLZz`Vp1;3C>A6J?&`hA;iFATe-H-&!aYWbQEHGX!yj^{JM!7r}$W9oZQ@>*T|8!9Hwbc&i6N5J(q%U#S8H&@oC0eiw)!h_N` z!_z4Td#Bk9jgSF8{s;9w_uK0>9nwmL3i@0A0?NMy{8}dSI!y!7eD1K@ydEYO@EsIVq*^%j>p?S@lkVJbB`q{hotyJ`SxiWs&>EQ*>65oco|` z#k*kJ*m@)bd^ZHfl$pd_VJw={l8o;Q%e8`L~$ zFZQT%N8xmGPF4Zuhr+psLDGF+IMc5*s3_c*%s9%%&#I`!IYf#PWiBpUJaoKcn(fX;)M2zH3CM_2J{e)cVP8uRAJsNJ`SvV4cxecS9hRd4}K+xQmD z|D?q_^&tZD`_TgCCGK|w&YJ@SOoxBd<_;fpPXqJwSb!oPj$S_mGxed!Gu5LkpCL=CX9g*l0RkoqVBjC*ODTwBPe9#Zs+)wo=-O{a7I+l} zG4M=v@Yl-KvnJy0rM%T5-YNxY?)ecBrfCsx1Ld6r=c(Lo*c3~;J92sNj(7_yZ?A~= zjwrY@JZ<6lB|@)q3AH~h0aB>?D5cRw?bCi>_K^?E`EvMMU@uq zl){`EQl5ef|BsW?^hXN1{*<_l<&aP8a`*R@GtF(|UnZ){2Mkf$X&SNaDW9(VF(_{v zZ&jtRI=c5MR{sAwu3S7_bIxO-=7}OMw_Vj!TLxAV2ekLE?1iVWBQK$ewJ}MCp|ei^ zpN7tr3Ktc_7^>S&LobCoWW5xVE*##bq5qNZ5F$f6MXV>hbVHvTlV)hO@hidD$=I2X?(C=V*3#wvbZkwpn;Q*Y^W-f`$Xm&Bw6l6voU#3d9)Mg96C#;`1 z*9w!R+*c`IJfcbuTrS?rk9_jg*9K%r9KW7AqJigS%lnq{?m;2xrb!2^IFoLtVNr7( z4$f62U}R1T&5;=S0A$gn~YZ)xQ%9q~3o3ro5m z4@gxO-Xx9 zFv3CYqrs7rei$7}`Snst$!)DORmvtTesKRAiUGe5i+m}A+Uv~w6%i~$UKEA{F6|Th zW6qLvyX5K_6Y=`W>kkik7sxdgFW=_s>^frmVR-}!3FOhvaUGWCk zQ{8wI3LKf9L?$Uq_fHuv4o8JiKUZm&NXnfeC3n0ls#30n6!ed9RnpCad?_vCQs%vw z9exb~?9|8RA!d&?8Q4|92H10zxP-|})7>T# z)J1i_hOH3v-iblW(po}!@+~9AD=$#E>p^k;GR$?gCG32_rUG&;h09^!`ek;t~t3-nh!scRedzTK1Rvwi7$X;_^@h(XYnN|KCG4t z=Ef*X_Y1(}RWLuuEc_t64jN-1#YKOY76YD0^1a9EIvG2 zRu&Iy|43UrjFyd#2wyWw-a~wCAsKkS&l}>IfC)ha=7)PDFomKlr7r;U5&9{Jco`y+ z?o4o(Q5GLr zQX55m1(P9QiYl0Ex$%SF|Gr0sug_k?H0$x7xi6f8WmyuN@rHC4b2{WA^Bj`nGunMTPu1TznkA*ope z=80cZz{GOF^ogi4>foYu%rXVGMi8*DC zt6*OHIqZaAI-3G!>A=V{JBNi?e!w&>wU~VAuAF`lf#3g7FiUjxTlaU_t)5UhZNd5B zjcJ}4P01zm0}Qri>6x+-n62!h!(ytG3#Lt!rOO3i{*g||*$wmY`@ZmHV$6w?$;6K% ze#IQtIgdSGl>T6({vWHN;lQ6#pAQWMwxPuKO9rvIw_X)37Bb#T>rdW|SU&-4s)Gh9 zrgKGPuF>AFdJ<1E^5Ejc8)dMndJs`5E2rI9{r!&x#n&(>WtwpvRSqM%j)KnlI0qeu zUv)WxaAZ3sJ&N-PRmR;ffA~KwACoTo@DRv;kg`t~mr_}W(Gap%AqZtZqrKG}Rq+nJ z%2$_0;$_dq%t9o$Xzo@~oCiip$5sJDTS{Ltr)`=;`x3$9L@-1VJd5d&4p!At z-|k#AAgZKwqb!-ok~-NqBHf46L1t8I?v@r){3ZeOE4HCAMf-uHJ@&fnXkRiN%&x%z z^C7_;E++2CAAxC$9xZe?0}v z_^ik?T)M4+aFaEs>IG1?NKfYcTZvE>z>_Gx zKKiO@s9x~+BHrqyK>7QIG$@S(O6i<0FA=XSgB&fQmr|h&$c2)hP%z-)`yXUU^-2qc zGEAUcu25!U6OZ-f2`Qr9SVW{i8IlfV(F62KyPTE^rB(!`k8Fb24ZQ>XBd?4?27O;% z>;fnsNH6C6T#;Uxf+B@i_&pAwG|Ved+N11Jp!}G-wl1=&ETrWubHpK+9|@NlJC3GQ zlP-$F^7`OS^~BYx{=38M#7e08%`gY*S3fN3J8)W+TUiIBs;@-#O;r7Ch|u!LkFg@E z8ejJlClpyFyhSch{~>w;be4TZ{WKIEtbd<}PXcGzOQOCml2X+F+&ZcgMOM|O`sEjk z_2nb=vr^S}4b=;89K5O4U!&@OKv#v|IaT#taNGjww+7O0oW(w5iu!@6>KjpgQ&s;8 zM5y(i^!T<4?Coo<7v766P`?tx46N@j>Yqb7!TPP&i~8$UN#iVzl1x#bgZ&ZPDHmCF z4b}5^k0GLBr2e7QvcEl4FT4SGQ>~Aw`Xk@d`qHYt-i@OE?S|s~eK^0CqW<1o^<4Ze zz7LgpKHFC_MUf8+Lv_NRsEbh**x4ty9Yk3QT>xgO^i9qh`MAPIslgZBb#8iCukZUU zy-6OD{hw%lU!IcRAebdZ#3dsjNx`hj3!B2By-hBdWA}zx#vn_oXDTU}1_I_EI1yl~ zs%I`KD4yAPFs)!Zr-PY7$=?!8MFrCh%U}g_2^QrMm=(Pv&-9A29KR?X%yj9W99LG- zgB48i22xCyjubE@FuzMFrcYZ&wS>h~fRb|vW*Q`;vTVjmMZt_t?XK$Ng8Ay6FiW2c zz!Xw26CncoJn$tvlig0h)afEEW;WJUDPWqUgBeN5%{ezMs9-*pO)Ctm-g7SkB%ubhWvbEu1gIf4BeG~en|1k73t4Jlw2wMg^K(SZQdj$lSZGCXrt z1ZHDuohgwEW_gsQ%>`hNOZVZNC`-?L4qw7E7hNS_*6G(|f1^>PfVn&!OixPgKrp`) z5-|KOO^az5W~ot~d8%jRnOaen708n6nLY}puYidum@PPP0M9f&DYN$1zfA-4O!G9) zY`+^|x)Mxp1yd#h(-_@F1m@2>A~3U~EOjmbvs1bjXP0anErl@ zH+}18#k=7${!zRz5SQik#ASK^ePJLDsqx~#LMW<&kcL~DZs6ynxJmCRTqp}zjVk~J z<|}+(i<|nmm&`L6c+<;n)5isGxW+JXMafI>`X9IXzmh0}N7Oy;m*Pd?TkZWjt29rX zeu4Mw4ae4mJg{~GlT#kCJZ0pi*r zF43h{n$Gf(fY+>maWz@BqfLx|?*yos1U1ewT(27b!TU7bTp0uLxVbMJGD_ycTg%L1 z(GAGV_c#SL^BQEvK4%YB?qjz{3p-Asry~!4!NNt3q`MV~DX%z2+QdIG-^a>eh|FEK z!NgwsIV#Ttw>|FHfvT~!mM3Qmc){`h*X-hOG!w5NhUD^9jrd*_zHN#A#ifq#!qEiX z$^HV9n#4!1Mt&p86a9(O%^8eLw5zUUa;jrl+`8d$T;Sv3DN$Bp&0Ne7TLfJS0P!WP zVSzIP7dU7gXnk#(+@&J7P)->E<9z$0fCl^x*ujci{5IAX*3L(fVHJ81{Qe_$4Oj!_ zW6q4yeid2q{SOKQ)v!WsQCnZX(YiFfXI+Qww-g`O76`?2ri(o1jtIhj45<->D{~?I z)ejJ`s>_qp*FvbM5Gn}-mM1f8IE{iCbHuFzCdu|AQD@1 z@0VwFzFJiE$eAPg+=bY)7gf%GFbXE!=BfkN);4yiqX*cIjiiDmP>^(MAYE(F@Ghw2 zmE<%6erv)Ve1MAcO7>CBko1jge6qzpBCjug>O%CRDj=d{=wfFRHq4UlW=SgMuZFT! zZ~-(l-q@Qrk#0*obMYl;c3Tq@B;1yG93eXXR}v4&1I`*H?$@XZiT?VqG0`0lY^yg* zxFyk!3E7#=4pq;SXLw^gb%x$N!%OHmHo1w8W4~2ky>MJ`@#fTPvNjsS9QZp{J?So? zQ*lI~5_sOB8v?fA`ei*^={)3c^4Z~YP_K%d!i+pQD!dU)mk@T@7p{xCf9S}seil4F~&mgAt zQ-6$ZopM6+Tg34uVBpJ&3s|6U9|zLVMCV%R$>7z>cz~&&VEs?u2kt{5jJZ<5Y143I zCX7xYj3&&T2IGFj07kKiBa*mazC4O=zgPhcpWuOh>4B7_TU)i%2(`riOH1BR%XUgg z(^4?hQY_RmJk-*|YWe*IxiurA#V8o!t%Z}*2c$%>g>U?1+PSqp^=-tCP@ zywrzE>)hul^pDY%b6$Z|*i;a-)WzdKO`9f&wyx9`|1@V3C|lQfd<*Zh@2`R>a^Jjk!*{rcz`uN!-7JToNmH<38l5RoiX|jsr-tSv! z0$P#TKLI}DkJyw!74n_ULY_+&du}ZnS@!xGpJv5A8D0VUGj0(dud7cV1IB3BM8)Kh z##AF!U*KGW;W8^(HQ&v}^89y$Y`8Xs8OayY&2Ir>v_Pja)S;gcxZ=IafSnjr72S$& z&To~5JECk#W7rYFs^8<&l=zh_g0(=4=>Nte`YOU5JEzy*9>y6S@*CxyL*F9nvlT}w)GRDk46d>*TilJ}vF*fd2MxUv=uGvFfJAs6D zy-z8Dslpc}zUPQa^N@_&-pGN}Y@Xfa(4#EBrX0^rF-G|2Pf$s>nT2zo!s&NU2xk*> z$4om5r=`MqkFjyL6g9*h58R1otH^!l6Kg7z3>*^ylpnaR^-T|%NO=c4p>hVM%gzwW zF>aLvrqnip@}p91whHyFQe~Cer_|9eByA_Cr2CY${)2(y!`Ypyh2@1OfPU^K^Rwz&27DCBk?wBcJq2yC2I~f~y8!41ba3?xjC^>fnO5D8)%PuYH zPP-Yx7_vRlK_x^^r4M3WSPfL*2W^0Ia7P$h`c(WjVUa66v3-zp0 zn?4h2l2Wx-3pGxukFfCy3m*f8-%qd>wk3e<%u~>%6}Bt2#!QXQ>g z#ht~V5)WLV&Mu@Dp2b^JwQ$fbT3E3`y_Tk2g?_J8}l5hH5O*y70#1$)^r&xw* zf#hPvvx*nXaN5XY^NQd;_7b=QbL$cS54=M!O5W0x6yJD5Usxs9Q3sxvn3e%C}SnF1>DY9+NKlM>>tgOg}#$^4zPBoi)RS(R5yc#j6K z4c4YmQJX@>JyNU2OafA=Ri|XRV@CVp^P`~foq!dz`z}HH5ArC|{>&XS?{`$BZ!+{v z2gb(TkF{1U2bK7%q9UC}34u9=J_E7XA8ALsRm<(dQYh;PYAU{sV0vKwSW}vspn?8Z@vNu z=)D(_N%u{7o(?>8r`Wv5j?+bp_ZqR5^7mnY;RlnQ!9kiZ--nFgWSb zKQwb0lkpu97Je}EF)n+2gDF1EY&wF@Ghg9Ix2@e7=6x{Q&SQlTtRV9kgrOgqj!4Ywta(>cdv@jtq^Wsbs4`|sTk|ea^R5#h?m)tdJBvUi z?(o#S-}{PrU1T-MnM99mG>`tFd0#U*FyAynPT#v)8}AT#`R%>X7P5ql|$KT|S znMc|xw&4tY^CM$%&j$_=09z+;C)SlyY&{g)v`<59pL|JdJuJ3snT+`)Ye(Sq{F8Dp zY5m0}d#eA=bD{ptyg*eN9&35$*7q zU5#SJ^P&p&MQ2y6cw3Ht1LUzqMa15R$J2=B9R8V_^pw+$y<*^8B`F!s?IiuI8qilT z)aQlz2C2Sfbjt<$h9aNU_mDh_zK2Ds>f2U9^bMqfz-b{V8O}WU%8I*E7_&q^J1v_Z$A(zN@6;mip2}9z|aakD-0_ zhKqeQ5CwgCB_+eDNmBKd5A_|VeA<_(`kwk9`gpIRweK@|6n&dTsx7}is?xp>sUUEs zNJ@sYf+Y3D-Iu=z8(n)m;XG~|?GQHJ0V@MD1BWKi_H_Q>Ray;i1>R-Y&P0oPupZLT zAp~aMy+s*uubhs#6+nS|;!~86op~|xXpj9Mv&GDvtzj4zU3W0_O;5%KZj*`#*e-tu z0I|C@^W#1m(ihaDwlWzNKX;TzvHKQ0hJKz01;osEEfwruhQ1js zV%g=?piNO zPTY=wN;0jI2UN-L-NRD815Z%W!76F3O4=|sF!i{8^Sx0Yf$~j;%$mJ>@p(1UD!){O zq7i?QEa(nc02ix<{=>qK_Y3mJ%(3g#jKd6l^FCwa?ngX?jNjV@cjBrN>c%f_6F0sa zRr>lcCh2|wXtZ!KlLK>0S;2P48o`!XigL^YBCar!Z+!vqeCJAX1x}OE>>y2b%~N9x zw?0{(l-GmuvNIbXQY-!oWR96;7H|UvoXuF=<0DI2=Qyau6B!ElQU$!?EGm9rz8FPD z=V8nzldfw)|ItN2U&42lzS)Sg`=|nI*MKuHo1P0jc@hV55HXVxzR6LlyHbah+A>|z z4k>khs!)5BT023guauhilu$e;1ew2$6KaD}rIlKvR93d6tpJsDOIpOOh&Velwl;Lj zJfe-6%Ky=FEXU9{lNlR#f0vUs&L5x>_Y_yRbCU9R5sKhtL z6v{|SzpZglLNDt%TnK4kt0=VQbka4(;wonM}YWGjuErB@+j4C zuW2Fpaem4QDXAz|f=laBCGyA2>1!3`QHH)L%GkJDN2EI=KqZ=5lwaKH6LYY{>xZ$$t?9-o(d<(p;1Zwv~b%^ti0PPhkH7;Ze_ zo@c3>0{4V9H6OVGlmBk1soeL$Js4I{F-2N%Mpy?1F?YeKlpHbh zfYm=h_1`V|+&S1tQg>`cmBV{htE8#8o zs$_=_RGXKDO70OQ`K^>AoyF&`;&dhq8lh|c@^Tcyo6wA!&DtOF)9cbZJVvg-ymbT- z_}zA;rYJQ`srR-^+Wktswn3-?pm0vWsvJs{*_m0f&^vEYPt0__MoTA)p>JLg?QXkL zY*MiMd)fo%kGqQb@xGAs1#{-c7o|;225CaIPe& zbM&Jnt-hh5zE3)dKJn`X`dVX?#p-J(kD{*=9z%V9w-SBVA`1FkNy%_BN$MQ^UG7rH zoyxE_@j(%7C!MG2ZFeH68yR`Ul_@DZw>bbP^0Y3f8P%V1m6C> zVh2_PCMh$6PvBP8-P0Y#{rkYC&A2%;#LQP$tNS-G^i3_s#@!o5t1}%`qKt+2HYEh+ zbDf-5!jcjEmvQI`oc!(Brp!U?j4R4{;Ib$e;89V=&3&ka$h8aXgg8sO#qt(nCx!Sm z5*1=5rN&HM3$dC)tS-9TIowQ+J5xX%>z&b5}I_aeL>1>WOL)q`($5DzX#qQWbWC%}8AiF$AXL*Eo;Y~1Zj<#A^i zsKoBV3hx0*@VyT>cm&?IKJ*!?czLU!lPdVSZ)887XunlZO%+sUEZV0|4>OKKm~U>@ zH%dhpv*mdOuptHw|DHvF_iQq2;$pqdB59a`)QkmiCu_#u_F~sbY?7&6x9KL@^2Tb{ zTMT{EoUw5?M@OSKKqdYyq;@?|34z(lF3b0pV+IcXKH8h?8wx6J*2%YA*88u4(N>N( z@EBH(j;kf(f??|YSCE8rLKbBMMY#xxin2JK;G7JL@*+j~m#A|O>)P{9@Fcogl&5YK zl&5sP_RdOC){HZsxOor!T5-QZvc>i_9>eCh7Yee+C*Gv+hUzq^1dhpp|4dnfTcPo}3GBN(3)3|Gp&E?|J6O`W*ux z^zB7{f*pletXD1A>lN&NB&t7KP)*ESVZmOeU~7wVw-uq_9#>F_fkyqAmlERUg`L#m zz40@Gz}x(>lpoZ7vZgB3%}24&H@n)3Z#E-R)iuBq)V(Ek3oX?fx zTMMc|)?6!VN0xYC1tQf074ZZQymOU$U=ck%-KJ)_h7;h+*{^Q*(3rG&UU5fByZ zADDb3-DlxCf*s1_z_dlH2H2L`*7Iu@eIyH!abu*5=HAXrTtWNJmS zSydJ67DOu8hIj(l0v7B)^#!cQSnP938+RsvO0=_J58ohQZ$U4hVA~4V!w^8Q>zN#w z_3GK?L@a1h6wA&p!7gm$)}ru%jp|JM$GpD%gT}0@$tu ziCwc!3igzUb=y)&-02RU#O!?P*(M71p>-kHS?|*uO)S_lO!mER-vW%l%X-jO&W$$t z&o-jJ)9_IL2jqyEJ@r)oHikH7A^F^^A|+RglCOY{9(k8i0weQ#>?6HLlf8p~p*95G zZVorTsjF{c!FA+jY3Mz%7{GZQi(`o5*oZvphq}xiGo37s8x%)b#^U#=IiTUb2~dgW z@~R)|QUcy1tqT1x9Wd~FOcr7>Nj4kbr5~K;`_Wc?bIkz;UcQ~=eBW~Z*jik2Ez%Uq zd@{$(`nu|p)eL%jwGx=Waq!0bFqx)%y`;p=NEy+I_K@_*&Q^(F7jZ4> zOwxVK3VDk{vNPL66={i9q^GY`uZ?Hun;BY>I#Ws9$qVkpuH?V+HhmB!#N9)vsoLsx zzC)CQU?QE_QBgk4Cg6J`beWkq+?6=^+_XAc|J_VbD zNOfyx3W%BS>nPZL41Lo~#JWYP1n1*HC8}GnYp)lu&Cv`LY&8M97FH7MTqXzRnj}lu zYsoWv7_U#WpuOKpu?&nCfz6gVk#jMbr9a!@vJOP|F%m9@bb6!1LQo$bB9fBSGwv@jG`&&!eV%|hD!2Y{HP%hm=adh3Qdx_?G z%e;}y*_lfbsc2k00nO{R)paj3#QT5A?tcDisIs7_oCB=%&sa*qdLCO82>S7aU*Po! zj{?@Rx_YQCCabPZN|Lm;RwHmr?@ryOu>qodqpmHAa8P z&ng0Q)8*)r#Mo`*3QV7J(noCqh4U&_(3Tcrdc!M2(_dunm|0v)O`p%uH{%!^cUwzC zaZZ3r{Q8d;#3V`x%)RHu>@zwS{zs~palx;n`|EsWL*V+**{ zD-FpXGgT~%%N2&lSd4F4c_)BM+-qUvR~Xl`OZL5g6vk_qvce;Ov?Y4;I94}0HTY4d z2BmHPt?M(~0}9{MyUUx4Q@+7UOVPB(6VNifU+z|D>8?dDgaSL@Gb9+L-?$>5c@5Rk*8F0;ia&V*x z>s(C!lI}h$tB8VafiwlXkOE>Rr-p+4o}q81idgr0orwPfDpAjZ{royXQ$s7$uju^2 z-;c|zxG4#KEy0_Kc!!KJ)6c@_t}tGb>}~;( z?ig?<7XGC^Ye5Ov4?O_If!FeL(S!R#;B5Nr3RTc{Q>fr=a>PtttKeL9vGYa7`rfDW zM9M)ac}!dvTPX+sBQOs~McYn`b`^7DZt|W=X{1Hl^YyU&%Du_*TLxXk@;s#kraXr| z-&^pScxacWk*fc@wco_aSTUf=qGR%ShC+HFyH%@zvC6k1@o4t0;FT>Q>6_;7M%x zQ!(E~2^b%wS$a=XS>SzJf;Q4cyGyb=E@ag;RdwGYQq{G=6V#Ql>WZnl`izacx1;mZ z;cDa?ETarKkY#lGS}CJ3+@JNm!zf88DuvITp!vDFz#o{$)`ewsE4c#WeIh>TsMITK zh00QD${L|sDz)=tp?I$s^4+CW6QzFsNYd&nHCm}!N)=VAic*JG31@kwIw@6Fsi7++ zt%OoLR|s`6DD3~j0W`4~P0Y^x3D&5iI?yic|5nj*`H7)#u4XLue~$ud+?fk1(dev} z%a<{6(xa?BzW2ON`}Z87QQn*^aniXZ&@83YRqB|T$q3)vq|{|f-Kf;$HzlpLQd<`a zb)8bp=LmHTsH9uYn$VsAvNLaK8=A0^T4ScRHKDSa@G4{DZYGh%olC%-82X2rP()3* zLbkxX18n!c`GuoV;CZjh9O{oV%qGpDra2exgw=G;M>}C?ug?m){1g+I=}P^}5d;0S zQfHN#__T2Ts#LSdLUDf$oU`IWaUTs-U8TMy6*n_6BL_4enApUoAQto0s#=t-nu#Cc zNYtV{{hG|)Dp%H`EXU9{2N{d=!88xQzXaPC`vqsf5G54OHr?#zOT|Dt`l^_}wLN?!Ho}+dw7V@8Am7{)}tHWdmWG zx@;SM%pO(eR3&v;f}w9#FgEV)KM6_Le+GA=$#3eiZB4~x)mcBW|Gb=m`96n?<_++3 zgRG`0jAZFQYdVfR$`RHQ8p|WBWi+-qcrVx3&WNp~v3&slp>l-pZJPrmzNvu(l*uQr zNSUlGQCQBmGE#~r15dao_X;(#4k2b|zK5)8C2j4`N$t><}oq;SF@$IN!2Jx__`WK^o3~T9dCKqU_A(;8K$p zkP+uUD{8qGXXu+LlHIK(P@TU)C3>A!lg~C0lb?AzG`T0H>^T34j5K*Kld+#H%PsHR zdNFw(-w4Ld0gRk#@?0calV6udF?q4Z(&V=_mL@OLSem?2V`=gljit$VZWNPyeioYi z9@6l>-WEa|BFfI}2`)8xJsD%BY6UgfW9XZulHEPatv%dB2JXatzpBXv)Z{z%geKoR zp9%_ClYeY1COhBKR`2-@V)7oXh@(CrDD(ZVlxjQ4Bi}^E=g6ZNe?ntv{27g<@qcP8 zjsI6;X?#AYg8PO*@(it1#h3FyzH<&d=>ILS_5_xlSrTb#`52->|6g7$uguUlcM3+g zsWjD>xykyyTyBZu#`k~OqBu2bz^chF>W zlATOw`5R!g#r~E&iskQXEG=K5v9$bSjiu$EYAh}PTw`fD-}?gnAJ7AyHAqOhl`OEE z2`oGF9MaVCK135US9xlAO@=s^EEwIG&fDJyl^A(aEiX<9aktN$(DH}oQbBRJjF$h} zP%M}C-oEz*Ca@6qw~j@>U^`Q*`BAvk+IvzS#opgEmiC_0SlWADV`*=GyiLc8INDoS z9#PWx9)KHtf%moS?BVMK=O5(2ew9Vkn~3mzOtdkWsT+g;xm-D!6neN*Pv9O`$ zJMJt6rY0kNvtOyAO6^kW_*O~Vs?-{#K38grQtOoJuheR#8Y{*7AMraF7F=I~%g(G( zDeTIhA)=URUQVrV$`I%C7#nwgQ0otaN{m0Q)>oi}xO?})(E6udp@Ir<8?Dcy*8jN& zcKP1-D;bzczat2|2RF-1Xcwuls&50ME&5&ZC`G?dV_EdyXe^8Vu*P3^qdpMCdD&~@ zJkK{$5c%cP0NdOCv@0rzWAZ2kaY|!x^4@IdQ;5JnMhvK~y@mQvsYShndRM6f-GzEz zsYkmBwN$BXcje}bn@>KhPMNj76-Q133%-B6Oda__J#plfNK;2nCu)5ESXLbwFvNF! zVvAdy?_uIj0#xF_QFY{SO2GPcTUb^1&!U3ia1cwX3zGwrnIs0U?#lw@q%lz!x}fLu6XYxBGr4h(IUM6 zD5Ku%#Lzd*#ZLDem!xs$4N!^MIqJP8lz@BPI3(kDG1&L}Uf~&}yqq*;Ww^bQ<*;YKOezA+@bu^k*v-V#GC!2uy==LN!!sdUc@&Db)lLzx#3*u6@$Dym?PTU|?=MP|yO%(MEUlYee|wuu_-r6zUMDq+7;< z%TjQUXNTZ^qO6#yZoyShaN8LhckiJj+|LW{#Gs$m7X=mAcuxN@zt#>X&k1qKrbZ0R zu))wQ<6a+fVgKhAfzn;6{x=GBt5VOE5vn67+!JK2pIcjeIJ0qBt&@}-Gf$LKAC6*( zbEJ%oyHDy4-!0%yeD;&V>`e)A_uDr^_imU;1-)S(-P@eWzPBAiI*PKz57h`5zmsf} zE2;jh!=anrB1g>RvHJfkDf(ZKeC~@VIh`W(5hZ_ti%JgE5+ysIgA(7H++B1%bvrRb z*Ep+d8M(4EnXL8Y3^`(EI(1;1aI)$;B>CJEZ-u&kLmN%HPg`AsDJ3vhb4SznPHkjh zu44HGUOs;O6PSlTFw~6r4B7WIm%WJyoZD3D^4EnjN_{*>sN{Z1FnwkSbxx_N(}X&s z)Nhl8I<8ck2Zj1ssfELY`W{r$oo1n~uPFw{fl3WNU00ktzl0k65<~1iFgETE;#LOs zAHbc+IiiL8Bqao9s_aL4*^9;4I$WIv-ZFl96qxgap;?T*A6&RU(kj0}l`p+JoEf=z zg14(#<>gg*Qa|V1izOPA-vge+{Z_eAArv> zWQF*mhFG5WGX=)$)my;Cs(bMN;6su(B$R z#P8%;1^1|eIjh3Kv=E-4Aj>Lft_pr-KHoe2vPfyTiH?Sp)3BW|ad?w8ve_450nH^x z%;d9D{wgjoorvk1%&e;1%=#E+6PHs7B>gl~p{O1jrteS=gVk46j9)86W9 zrTR877Vo)PLE}z6a3`kzpw6vL32}GTlCX(QfoZsp24>SO7c&{>7S0ON*_#CEH>3iu zUJC{$u_r|Ovc#J`y9Mb?rS|OBLy9$0#Z8tN@kR^1WKY-vva{hG#-6Hcz91yI?-8Xv1WjGunrozW4Y?3{2uAg1}p} zK+2-u8=(~w$rYHPiv;PDpz!^-74$F46-cKq49oX#=EnEmmnhO*4Do#`W8?04YQXoY z;7(j&k)m!gsoduw(n^AK6-*@3S(0pSmC2*m0UaM84%pA)V_mr807u>bSTutb%>YEI z-@YVc%yhJ9+9;aklHHy7S*UU;T2j)@vMOs*3ciEKZVq%EZC!=B@czpt7f~g@wh7yB zH#|W}j-w`j&(Jq585_7ob1G~0F)TA!H0}%JgA+=SzThO&)95JdNv3J?C?}a_;xRnQ zbZb3G^&RPV0;iXxWH{py+LKHVt_Y3VH-$z$2$Si@TScq6csV(};2p88<5?C9{n+YH zzS{r8GFK;ac4kLJsvnn;F=h%{6VG2PCcYxs-8s?hWq_#6W2JmwS^PK`!y!~Y855Nc zH$y;oPO@C9$d#SRWYv{Jj+l9oI?zK*Rb4wJpL=m+-e1qsyy-wh^G2wy%+;c+%_+bQ zyz5Sic{u-Rb#+o*Ojcb>$bs{pR#!FEHAC{b^GjrAqDZBUDMH+AHNK^;mC7E2LC&rSd8@th=QBy<22fxm~E=mHN7iP$!l8 z@Ft<;`@z68>nzk^O}kjBLrQ(zQPTD()w!)uUn#YtrBIudYIU7Z8{0_ zT?tk9sbqKCqjT0-?wEj}OBGSjzgG~I9f&4ys>uedw}vf0@CFVBQs24fhyV8lWEK{X zZLxrS;)y(5K#rB5_(U!lv7D5ZWBiFZptAh25(H+)CsN_BClqvXf$6(eBAUs<%}iS( zR3oLjC{9{1A-d@~(3CEd^98y4Bw@=|0kBT{{6XmZSaT}X>; zD?_}men5(>&-aw%+zy_^<@>eBmQg}rs&WDDd*x?~lHR&M@nOv>OdI+RP)TQq;_u+-rplWJR&st%}u$~xV z##n>?m8xZyGB)lm*Bynj;7;7QPYpWau|l|aJRjDVc5x~=0s-{c1||na&wY9Y)u}Tu z2Y`zQLY(Y0n5}p}th)`)PI=^pgV~EmjE7nE;i)$e($IX8ubX>+H z8nhTd>A1;E#(g-f8ouXEW?(vQp&Zi{;?!|2lC9$|lSgq}1w4k1YsiysfmcV)(TU?S zkc!_4w0f#g5589hn>ubPIb$ZjQOEsV03p85V{G8I{?0mXI{it<9VtgMoI0d0a9j;k zHS4%5ai#d0$ktqZ%#qqy)6JgN)h zrZZ|ZWZXVSKDBXfLQ>Lw&#F6enfR{<64ig}s3T@R&9DAj#n3lzGB$ACZ>|4srF-eW zSD7FEI^BGM{|2HWS^o`^NAceRDH>_3|!(o zyq}auI1le9@u<$j_sw0T+gUGB84llfLF{n|O1gus$~l*c56>b}eb|e7V&?ID>cf!? zeUl~H-Ai?P@-C>vhFxk?FG|4qV)QRKxckf{gz2muPrJIK0BBcCSj?Hl01$W=4<-v| z#QBC0$`Q-uDwK;6sZbsyW6b=PSE2mE5ch3JcK3nDLLc5Lx=sKnb!{sPIKDUISuu9| z6%Y}4oA7={I-OBg*CKLdXEIrJT}{TAnP_!Ap}HzDHtycMDAbj}@r+GdEdaZ53E|#^OG?tpaR4sKkt~6j*&q!0$|B_MyIhKAQ^aqa^5S{arwF z57#|`(_ja2dpj{Y0rzhkq{m*iS9^f}mzMnp{yHtqV&G2n+pbRg zyA&kg-o|-U={#2NVCF(c0k}k`W8pf!Gn>L0TJ|ut4+-^18q#EXl6nE9$$_nr(Ekpis z&6pqGfsnpnqo>$-Z}mbYP}3r%Hjh`hIECMrtoF!iawd zulQ!T%&E;sm^A@TFQM4YO&-KwY2%WiEvfjf3z^FG4##PqQre0 z`$KTdP2f%p->T3Zh5pfNA@m2IAautuU-9R2 z0=5#FrL7MR*g+1pvgT11?h8hwg8hyHVrJ~$3U)L@+!rij-8hxRokrkJZ2VHe_MwEh zI}<~jw&%|tC)hr)lHO>cV9zPomfRBZ&3%Lyc#W{{2Jim+W?1KTf-C9nwpj}*wkv0c zb#6NOW9G-d6x$(&cwfs{-0!1~On^$%w%FEZ2)5~PpJJ;e*w(`+VtY-J4bM@b4m|L_ zfI7)rnz>>o92fqmt&Ytx;I&s4Jair z?`{#5*-|)W)-uuj<4w?v^Sk3icT6T1`kTk4_KgRXbU(C$a*7L_?Kg*TuErCb^Z7Y- z&RT}Psl?d0+l(6GP8?L?k}XwkyYtZitkHNgKDR7ftYu$UbkRRFZxN;7yugd1>nI1~ zz-#!s^jpYX^N-2^cB57Kh^lOeNLBeF8Dpl0Re6i594Fb`*$;;*S3N@Wx>%J>D8=`x z>4wD~c`J)O%Aag9-kY+5eG|RSZH*@=`QxnGb%G(j&tR|hD85@`Z+7+)sV}+SBwTqa`r5}FZ z_+1f=c|VBE;leTAmG4ICAsfDbMG3H2cQ|6ck2Ec*Qxt&jU;j`iE@FstQH%}T$~&z0 zTCxC?O8NV2Sj0@>?*LA9^Ib-AQ3z&eat_7oMUJI-13QCEadsWx8+(-I?>UKA(jje9?%cE4cp;D=I0e%&d&woSiufk+wYW1nXO!(ek*KA<9FtyWgPMY87}DQx?2Wvnnf4itjyx zH=qc<8-gMYynV99MRoh!a-F+KbTL_V-9W~e*?U@bZD)vc2#m$KaIVGW#|D~;t{p%^ z^WLMBxT&nV>Y$^Bu18&l|jG4Qv%ATrnt7Lb#MGbfZ z#!8(3uqvBVN?^9LO5yzCgAB|hEMcIz@=B?0v)HP&x?w$0P)7T=r3#vx1`GdRV8kLZ zj!1m3WhMVqSX}Zi(iGpF6c;laepQ!z#1Q*-j1AnbU)sud8%u?i?{(&nJ11zy1(olO zZ==fhmOM)3dmoQsU-$Xt1m?^|6e`~sNy%{Lk<`k!U=JQ~-xahcUiwrkUn9}z@;r%_ z&Wj_YJ^=ws$7M3^Pu@)-UYl1Km_l541zurR_P~6SKb#z0O|HQ7VFb!usVDOZRa>bl zN>x?rkGzsr0TkxHR^_}x;=@glu0E_!J(&NVQXh_Hi2HFE8+RYx4xRWta!`ql>(r(` zln^&%wFk@lq@W#h6{{hu)DZlhOVZ6})iqRgV-Tt8z9(bMl(6cGsJhLP-ED+ws(u=V zwuAK~3Y302UJxpMuP0hAf~`5Im4UZ0A+;Fa|5~n%HZM zHtsgPFVs~~bj<-0>KaQaxCaf*2)f#_;RN1dTs5fX&3%yORkkW`Rh5eosVYn02`U>} zm9 zac2{eU(iT49E=*t7xE~LWE&pCMsm0Ws*UfgMieAJCn*`uMWMz*AVa(be{}Ql3^Rji*+#Zkt7pm>FcH+@(^+GZy=d?4i&;`5J;! z%2+8`Dy7(vP|8E(!1+HbrGiT7Bd;&KP1z#lNgMT^3J}vgw%m9Amtq^Wsyqxi}`%7Bv!oe%jLT4!+rHu%4C&NIa=>c()HebR!V=BGMur# z_a!D9kn+czF^B4QabC%k#x7gYxGMVmC`jD zGCtNJ5-My8OL;s~asJy%=%f;cFxL03QqRtlv-Ic{@~VU;kgy~=e_sku zklIW`_#?YnmLuMly zB;EF)lJ0;X!?@x2T|=k3@;5z&%vyVtW;GK5G^^OS z8^NNc6$ni`Y;#vaQVQBq>1d6j{aU&OcQ9US<9^FTh-^eN{LUjN{JzQIFs|6R)B4+W z^EA(Ud=+jBf%TY(SA#&rpUOz;q`1cl& z7*ofIV0YQic~NtmrJxcQE!4sHW{SrCoN_c&j)Ua*d4Y1&SB|~PannyCqa{3-*kCzu zxhrL~k$U7l^P_OgA;)~nf$wt2F-tjmD#vH!7;8DcP>vnSvFeD(_>COBEe8NoMxGB@ ztnQ`CaRsPErsWu~9Cejr`C*YUiX7!E$DPXYh;ocjj@QX??sc`crE<(uj*`l;njCv9 zM@8lMP&wZDLA2~3$1=-t{vScQRXMIxj_u@_W;qTj$9m=X@_Ui-899bpj+M%>QaO4k z$KGY&=wvx&D#zQ(k@KC%Ab;XY%khwMELD!Xm18YAidv3am4o)dr$2rxGKf2o^P2jj zfpUDI9NEfogd7_!M{(u&PB|(mN0Alac+GO0_*?u@8gbAv7(Z)^T9`$SY|F7lIod17 z@k7EffE;}-#~aGgPdVbsF`OLNS&oUyF-kek9TXY!$l+Oz0m|{Za*R}twdDBwRkgO2 za;#PkS2=zn$3Dw(g>oEKj%f!(%P-_uZaMNOM?yLJDo4JR;CRk*eDjz1tX7W85eJXWR*oj*xXE(7s2t6dBc>d!$WhO7j8cx~%CT>sXlX|d$8y}J9Bq_i zf^rNY$Fce9k4DOIzj9Pnj_1j-$#RrXju(|<{$A1YCOH;Zj#KBv+J(x|LOI?g$5WPL zt8%=q9NYGYjJL_r-*UXE9Fz-xbWn~D$kD=bOj3@O%5m&#k+Gf}6)eX<VyYxEX(0lKo zfJl`AL3$I$2m*qDR6)9eNUu_*iy*xypx_Kmnn)3H-?i4>Cp(!W4EX=|KKFYbKTghG z+527Zs(YU#gL}ZS?j)~Lk0drJi3B21OC*Ym#HS=NT}fPeGjjSO;Qvpq*rxe?P}OZ-EH3*R%K_KuNWlN;_S`o>AQv7K5bme?aV zn%c{*ksIMrT4I6R$kbWim@GFA(guj<7$G;Js5Rglz2(M6d)an!Bc!F4s4F*y_0l)W z%Z*!ja3XW$mm6OX(Kj;6jnw1yjbw7;9yR&A?4v8J{xN&mKjlW~NG)+nZj7_-vR7_w z@1P~t%8hNd#6r2T)rLMrZrre!9Vs^wbkcM5ksE_-PTR|k8MZ0w$&I&cPAkZb^|T#i zT?)vJy0lm28=2(BAGZ3*<;E7aa#mA{rz8r@X%jbIBg=@gE&?trY(#k z)o*+=`>#kb_*})G{7=F#9{cw!k5y03uX@R=uJm@7W4yeIx{p*dWR4`Xn%GJeKY+he zbAjLYY%x$#2V4~QH{n0DnGI!V!4@@?mWHr1#ZW03%C=JtJ;mKk*vw-nlMH=Ir#Up? zB^tuX1%~3u(3^AB&|VsH@X*!s3}gK!HME?D-r=ExGW2w-8v2Ze;*FpQSIJNdIvvB` zYaTfI0RF`EmvXbVy4iUXnh@L`Ew^vVG?8^S&F0%Ze!}kpJNCdd{YkO#BV; zzlHi{KQQo+F(+8e>cV2q-|$g{I<8&#p1p|8`$CC*D`J&IEd53$wnW74=-ECNvGgKV zlNZHoBSb9z0ySHE5!>{ct!8dP|C#oq3L-ImkS&o&B(f}5b7T^Uy+dq?E2o)(YTqe| z$3HQd36T&LnL9+{@+>8BS|mo|v`$IP6^ZF|HbhRlP9(-{wk3v$M0MO@iO)r18`7Pc zqm@XU-=-w`LINi12hY+b+wd-*r;1=cu*p+J$W)CyN{5KVqZvvfw@8GdvZ}>yonobP zYn2j-#1~+kL=Yc%}Sq|q3BDi~% z0yUYZa^@r>yDa*iJbRk!93%Tx0n#8{jIA+NM@43Rfo?L(0MJjrXt(@Z`;%-YRpVQaTnBz{_{X1pL0r5f52 z3q@irHA`gr%_32r)|5OrQY4bYtyyA*NQ{Cpl|*}y_*v^bfF+zsku9L-&ZT&x>lnUg zEkV6na!tsX`ZCeww)RA6Wuo6CcZG~8C=%&9+Y%2>u*!SCQeaX*0&C0x>)Oi>3?yz2 ziC`OAob+Tj|rR{}yKqs)_$j%R75ftUwx>P~7=xxhPrYD17pi{K!wU40R(VnoQr<|G&*f|KT}8FLHv zjl>`RzCGmGxkDv4jMOT+5Awoy*LoHni(KQje)xq+3)P`{3W7k@qMpsg9FeG@!+Whr zWSwA33>JwCx~@%O31=8%vMjuj-TzYw-JY6^_XX24g6gscd;^W}eM}$(Zz7tJ+Ck#2 zvaET<6Prn7%`@8ASw*4&x>9AstH)WhYdUfLdw?mJh~+f*o$AtJTSd@`u;#^nfgk`) z>u*o>rAW+LrX*IggtHo^f@bW%t0X>4Yd@bTtFawi)>#69zYhV1@I8AG{dAc$oAV~s%_YT9vE^B>b!n*%wX2+KQZ6C99`Fo9ZRa1hYuy!`E zenDrF3Tv^TSZQ6F!WZiU;b|Mn0{dHMtPOm*fKLIzm zd}M%p&j4A+02w{~RX{Emf*LPWAT!9?zj#X6rJoqx>$+_IgT@-@9)G9Non~_?JNGcq zt)#uWqOev_bW{rc**T@4yEs{)8!T&=^q{LM=u+rR&{8B?+vqw%*7m~Q2D(%Rx^Ji@ z4QSv%=z59W#_2+GaSt<7n7mMm``1U9yOTP_ZV`!h$pu7Wlt@(5J@HJIaJ&!4*pwJ( zQ6`7C=Q7zK5*S_9>v%;WT?A#aBr3NqnPq54E+w;&%(+ij!s@c>+vu&tpL#YYS!Juu-PR5?Hnm&)zKsBMcAg0F^&L=R|5E&p94Wm1~4$xSi+1DbEo- zcz@pF2R!+0hpn z-OQ1KhzeMipy&co_?s}ZRHxB;ytZQo3W44me1m{No%l8aYq_l3b!bWMGM^q`+*4h+ zLz=xIxYO9UuW+a-+|@O1giIpfy+~&}%KROt$hBW){e?_kft?IX@zT?G5UGyKlmQaK ze8>QQcVgISsaCnHw>+@J1-4V?$JYE_t1X&tp?g+MLZe{U_ko?;fW4fifC_Pj-B&Dq zZ=QmE3Go2f`3%?<1$G{Efq*@tHm$&HPuS0FSJbW7*Zf{<@p27&&j%!{V7K;x-Fr9< zO0eChy#F$=Hw$B#bozNyVE3bnqSzjXD2J0oQ?R?N1GQ)chJ9+Eq9AIQ=L08T|-83Ff+=CpxG(Dw<&6=sn4 zXiocRaPZ!22C#+L(FEj^SE4C=+p%}Wo~5)eoY=<1Ooa0(bhCbB>eA@O_Ir_7i&zzO zyC@_zx(^L>BT*|gZH`w$w@;Yq_7x@~vz3yy?_foR?%7^OH}O*?kwzra+UWM6JGapd zGtm7$#DlKuM7j1GLIJsZQ_y`sSFJr`D<}Rh+X0>0-_`(9x79*Go?Wd3dqWWZ*>{Pi zaJrdVX+5H?15#817`dzgbo+!LK-s=h)srCmOsEwfzw0R0YX@Iq1|MwUrB}XfGq`0B zGk9~1k~l6BCs3utz6pBKnku4?Xm9}b)nEZbc|TV$U;!EYQ;120q{rx*$=azr=&}g9 z+*+c9NR+bCl`ywezZmEe8tBH6djtyFfaq!px>nS;koRrG2ZWGaaw@VGO@4($m zVKVIqpFt4zos5tX3imaj^%aG94lVWtZS8n_APMn`D;P+2C_e%GwGcFv-b^4<3&^2u zJRo;gCy>AFVvwI|Pq@B`LEc1O5|BAekoZuC4RX^U0Y-MN@Jb-vLQwjJ3S=*=4JOaD z_JGXHAPWh|({q$ybpiRd4RUCG!lIbGYk*8+fSf^HPC#=9VzQNh+^s<#*vJHp4!1*P z(oV56^$EoF5|LPjcL;?`ni=TAun@;FXd5t45D|q>qJp7=O01x7qTVXZwAJRz&ucsA zxstAat8oohGd9Ki_+D`}T869NnH`L~sDAHX8(6cu3pDQE29T^`^-YaiwMd&k6ugAJ zVleD9LtZogB*gdH1$HTL}DKG3nX!C z9c!4)Be7N_a#67%i9;gs3_E1C$`p}kJXT386N&TKkt&HkA~90?**Hj`2R>F45(&8< zc6^JS5S+766|#9{k>B*Onz6ae*b-|BtK+(2MEhk{%_{sdA?%)F=#&IpRWoR|Xm9}5m$z{O%oz+A z)5hq04)l%+F_);zCv+9DHlpTdB9fihW!SAOj}9^TiaP!whd4%c?>Q^xe}f51O_Ojgi4fmh0#MaKXfw2J zK%5P<0&x)_rbIvop()$RH6?}pY+7zva)~-wsc)h=%k!L8#V1_ZLgkYV^R&<;c@su1n)O zCna!YojgV5nw;$hr)pMn<2qLJE8Tk@{f6WG*mSL?8)VsPt~b<73N=UZzDZ&|D>3yl z*10MS|Ej~hi7fpZlu=DpCIMF-VAy`eM52TZt`q66ZSXBl!U#YI0EY_FSKz+!6j_{S8M%| z*ph>Tt6b~EI3tIUU|d5d5q^hQsP7o5mfopYS;J7H`YQQx zkjG%uG!1n+`XL)?QZz~0R22=F=LVBd0GI*WgV{pURjkD{rI5Avmb4w|`1g!%#Yaja zW*MWS&mBrIw|vJym&!mlpYj|KQLk7&D7rvktE@d~}DixKrZy@Xyx<}tJy00{MAtLd*jjq1A3&?Mv`;i9( zT_<&d;}AcCU@4pYSaHn$?% zDFc_*AQ8uO2%5zJx`~>CKt`q+)FA}&v~2c9i1qqXCqUl!*J8#vxv2-^oMMD=)hZ^k zgD(9)LJ%1DPu3W>7cek}`(PZz2~5beUKZm8p=X<>r?z0c)x?AGF{&57-z*qE{Xi*` zLokNf7C_mN~V^62cK>5KEK!MiQZbwzrx(*wJ~5*E0NWJy?Fpl8X!Ni`KwH57$3WQ zdVov^;cjcVaMpr4adLp$UvnbAQxL$(OMv(fS{|Q!DncAD`If;(>xN)E0FXPb3PkYx2|%pep}N5SRl{z>@3q=Z)C^~?PqGU3B!gjchY$nyibxWCDR<~2 z=FLw2Pr!d$z~-Gvek}QZ@d{?O61ORe8W3 z^l#b&I`ot4ID0@Ifm*pY-bX}!@fAazk@_j?&?eSsSNg_7?Ac?@<#X%kwr znnix657Z0>)OD2pf?C}tu7-$3r|BAbV?I0Utv5Z+8qK0kJ-LM zwndaBL!AZiD2pDb(4bT6lq3zyXy&aNo# zvxF&b2%N0vIDW4c1wF*QkDBiN+`wJYzZ>ju`kf;BN?O)pq4>wH~Uuoktk{=+V>TsOUe^%@_mh(C<#CAeSC zAHoIeGhO7?%w~VsRt&sSB?Ru4+1VdzQBiVPjq}nnvb`Oru4#L_f^9Eh8B#)ILh<*K z7O@?2QNKvB(U|AAnxe-NpVQOehtI^VmaWb4L+ zH33D4%gV+eiwel=IzvYY$XYhYOR$9vvWo%IUBLr#*86hpmrYsFPx@#p)?7&)3lVyF zCKI}nJb@?&;EcEi)_%E&(6I}c(7D72$D+cT-H9+3H-gNuNdnUt=pX$jP>4VjWr&*imrT<4XjJ(yjmH* z+ACpo2-e&0DXfvQb|C;$t!6nv_YD z2a?Y-rLJPd9Xc#dO=o5%QL&Roc+Pz0E-jU3Lbp~V)+2Qbx)L173f)Wt-TS-^mDHQ$ zmCzj!W38yweL}x5OnT&j4qmr1xch8iS#zQ+a|g>2D&5M7zw)fy1fc_`32pc zk!tNPzu<`Zw6@0!8`Q;^%c=svIR6l=B@iKuwL9c7*aPnuCO?Az+FrQJz?$8_x~(e- z1xWG%BWAc*F_ijy;_3D@TH6sF4y;&+Qs;>#lIMvqmo*V3jq*I7%fcJzn$BfQagQkZ ze=c*sl{x^L^Glx7nmt16lYon#@{C5Pm4ur%p7eyKF0!AFte7rx?Kfkw+e-dV;Q2)O zN+EOKM{4mbSR5(JT?h)PoO&pfSid-jQ4XV{Uqbm{DzpA@xJKE=Y;!tklt8$G(w&O^ zw}T-Jm{XGp$jzS&Omo+PJwu_3G|=^?Zb5OE;+4=H z5oXr6RBM;#wH>_*03G^f^4K>}vSITrI1y`~}HKHL<83#FCoZn%DuL9RRCx)kRg`EEuIWCD6`1Ki(ULaylb3^YVD*RefF!y3l+W0wyjTuEfwaEwNOi^YhFw-*yL1pQo4|48 z!j@38UH=V+J*h6kuBjXePSWfPW;~H`ugk znNW*9{~(Or)UfY;%CJx525ePH&LDZhNzRh9&$-sOQrGP9IwoFNZPw zJ(V=H9r$T7LtUcX>gsrohClmhs1B0WLF`P1QNYnp%Vrc1c=T+iL>!@tTj6QhQ(@_Z z&O_a?G@#x@#A>MNi6?wdn4#trsF6Bw%L>%;Hq`5E8O3TgAE>ve-UB*8jcO^^af<*z zZ6Hu<>ZN}e$1DvZCy|Z!$CH@H>9nsW-sgzKJRBsbe9rxm0#{Un1DGZTusbb+01LQr z`Cf?G-BYcdo!55cM@(uL?uvF2E*zZ_A}(tu*B0sF=<{Pbxo1xy*GTT`KVyByHB@sR z`It363S)^rLz9!N(ueqPDT(0Bn zCHVyQitY;b%(29oV__-SK~<&UWf^uvd4^ra1G|R6ZjK(DRc_1gwc7X5d}o33Hs7E4 zz)oer{-zlTzBpx2=H~9JpO|`27q#@2F%*Z6Zz2F&9UV+URdQPkCNQ;)sqB$iHbD^N zZ|SWu#z0dW<8%WfePE>rZA%rkN#lr7as|G%cU0)<&`m8}QI>v0E-nG+5OBZJ=9<7| z7KyAjxIG9~8{9$-4#0llBYd%W@1_FMugwDnU{OK$Ms2nB{L#!H?He?M^?($A-|SOn zFlL|<{1Ad*a1e@*L{+6s2FN7_$U+9lgH3{gWRp>4@HyK2R0x{ZP_6xR6sOx;ZviCn z43n=egE5!2;5EX!*2P%o3{diiAdkT#$TEWUJbc+EbgzMR6xuLt>8wGq(z-N-FV;)K zQ+BrO=%<&?Ps}Ev5wmWx;@f+)eDZ6KgRur-w5$ld+=WZti&I?ybH` zVx35AK+YF*B{@(Px{C(79(+C}ewXx>&>a+JGSyORmyxyaC%4hX6Lia{auIjwL?VNY z&dnecy2}Q-pST?tbls^4y)<_P1YL#BYVBFWIH$BN33Lf4&RtebAjR*hjAIICqrNc6 z4ZADEI+@GW)S%rHKT5=+hT4m}ics^DBk_E%g z`Oy5l2sVyC3uXNM0fJpgmOh4HVs81Dxe^M#tvYFD6y55i_2~9pe%7rc>;T<1<78Xu zwr?!!wnOXo>kzidrLJ1HFU*v1+();`*a_-{U$CBB`%S5aZj}1@i-!*cHh+(qbn7fj z|BX;oF_%xkrG^)?(W@&CJlj~5ob!7}I`IJsf zX{E=5S;?npe8hk?>FwHp*9|4*t#CK97tWT_;pTN{(zq&&hApeu>@?ahUV6eu#I>U^Wm0v>lmhcZ zop(?+p^l>rtVQs1Q;^%~PG{vED|TCpKGW=G!uc3S_fKS!hyGVQOu;evxC^ zTj|zfk+qt=gM-*z+8~8^f^Om{rkFp^Nj|lRg&gzpLQi$z>?+NA_Hg4bwz#Z0N;f)i zKATu{rUU0WtcM&p&s6&}IzK7M8C#vVD;YBL5sG0sZb&W|7V6;5EKPh|FR)Th>qIKo~nf%?P@Ik(#?DFzzW1MegPz8=Udl|sf+;rsqbrYMc}>`^S? z7y@OqE8Icj30LTdUKAAN;3imHVZDP8@d0&CndgFzp|Y}4c@!K`^B|`om4DkBYLYA5 z;z`97qH4xLP5pssQL~+jjb){#$XcT2jS?iQ)cnv#&BTV93#h^d4O&>!Tg|S* z@%|2YCn<4i0IS&z(X7;*Gn~~NP+du^WeLYh^sU;OImF>VN9Bi_O*qGhn$Zaf5nHpV z%tPNR<&}EKO1(O2HQW44f8j`}`Gt>~*_b=A=9af<(qOqMmYO4k<0yT=@K=9Ub0i{O zskwd_tGR?uEQyFCEa6B(Cq62FWr8wr+Hc4l_&&7Zw09|`iJHA+o_RWdjg^(gfnc%b zB4k8c%@sasmS*lm%@Z_5P&IuX2F((Nhv>LVE=$iwz$zt=4P_;d*Tu}FWOO9c@FWCE z%C35qNHl1tBz_c${UA=@7eb=5;qTD!5pP4$M(Na>AsBRCiKg(~1fCb_hICPD*W$IA zZ*789=(u2l15^rK)~HA1G2&^7(a|Xr+!(@IHqpjTAUY(nb!cS<)PAjldg8r~n>sN; zLvs3{CWz%}X+?>Uib{#G{g~pe$jFM~Is)$ql_xSnXO?g@MdH&fX~*KMW)7(!<+v5& zAW9|gZKzXX9+~}3m`lvlH31=3LG;v6jat%k=nS=q287FX;OZDF^OqCfXwpOhU;Y89 z=4gZLwkehL()-b(!9GRPK*VKThtkF)`EshY9*8&XQ;DGuu1AwKVa9H_9;dpu4s`#a zm=~K*NBt*qO;yyTnjfm7*{~qJw=%8|aq*X@*4c{5eQK7@Kl8XrZ{AVJ^UsgiP2Qy= z0kXsSzHF(BsH(zceptcgGN}`za0P1bQ-RBgys)@QzG@`+f`pV}Lam3M6VJZ}^WuH9 zA=_bb>_u9D7JWF=1gQrkE&^iw{Yx=O+7Xh9Q%RxxpF#AD4d|%me*WJz56NINvSZ_P=U&MRzro&RbHe5d>1Fo&pdn&SNx$;@#438vl6s_&`Pu^ z%D#Jqyvt=hG^$t*pC9K&&|De7Y#h>s;BimZ;%N)5#ZKg0TZ{Q{crr)_cv}m@ z+v-#zp#ae>3;HQ$uZbG}=ztw6Yrh3xN{w(qmqn}5S|r-q=n|SC{k4H^v*AW7sn7&O zM@5|!^ewf0gu<5k%<#7!#Ec`p(V|yCG=kNiXxrhkh8v}}GjvcfJ)%D|9A9fWo#(M; zHrEU{=dM8c$ri1HDz*0vKe<*Rh#ss$tWvu|2n?gVr>ES)`5J1F`BW4P5XOdz8uuJ)6!?UGscgQ z`!vRnQH0&rjDAccf4`RmS3wY7vAU@ya>*SdcVG6wnB2hlyxdD-+$;1{M22OIB?RLs zIF`nEb;~eVNGF@|3Qr#bXEE40Pk2IBu&5RRnpu5U@NI`eD^sAtoCCq$H-4WR>Io5{f zO@-U*NZELgBIRIj2APvu01~|1h1K}Ip$0h!rPMa?#|FsC2FMaYK?XXIe<%bMuBO(0 z7i**O{V={KR0dPJa9JrCYgWNJy`GXUDOlgKv9>iEuIU;pvLiLVlTwl*Lh2YgYzky@ zjubOH;taR8KwVo*Exq|&<}>`chtF1<{ISQ&cu)7bTaU%&Vf?H=)fIDCm}BD-M^$8 zqTNnkPY2zl2lL!JLg_G+=dp&vkA>%Fe9oYBSgCo24h0Myex^(lPzS=pMEgAXpCbI_ zBm)tD@v$~yEHyc(8L-Kp-q@N0P6@= zSojVLij~&&hxMB9luhTNrn2^LX~8#00lLhBt}V6Uq)l;=C~2eXe9NfoxeRnycta`Z zJ}!>82V{~~@`o-$(3K%m)7l$4GBY)i85Fu<-I=?2MU})fmT>%;6!;TiR`5P63GcYV z{$$EaGFskcRh9Sh_iSkPmNI*5a|(CyLa z7PM#X+IY~t*NwUBuKT+YA~C9#=I*=K4elBk=uW5cp!=oBtDu`E%(O#4#LOhZ+Hk_G z)T5~2PfpyptQFTO__uWxJJX>$F?pgLYjXro5^1P6~pa6i=knOSht@8k&X5}6F#`0^B6S_e<> z)HEo;^L}Bu4tx~q6FkKP_HIqtS8bW%{6>Baq5U%cjvC_0ZMEvc6yKnNL=^XhJO=wg zZGjqN#`#eLD)lgX-ta)(L1ihB!^Vnp?C{13OLw#z{WR>-fC5M-;y%Sm}541?w=gtqIduRhu}HT}8a1Emfj8Q;aq- zOrYk{-tc*Arg$$-taZoG5-kp#cmX zrPB%QnsmyhK16X5)d;ZHW8)3j8?Fj$dMh57>d=QMN^wkxE4}eTb>tZf|4tX>NVj!bxQy0*Tmy>({T;NNdJp&D4|4d# zg0e73W`kuBl+@P?O3MsRJUM5N=m3OM;fy-<^~o26@PK=cVgj-sIxt@Qs}>BhwgIv} zgY4Lmsr+7VHU>fvM)(MuKLL5h1Uc3K`4@MbLgOK_ZlH(^2y%iDl)I_|`EPSxd;RZV zlG;7DwYvkO%S`)N^7(TjaRKiTbmvS%e`cVQept{I42q6c@|WNK5@s6clF*LVc63XM zysRAeQ)CO6z9*GDm-YOL$8oP1TaM>k$k=i3w`YAy=me5n^hs&!^8w4McG9efA zoaf_qO!m>r%6aC9MDxqGd%YtP6)42Wy#|ZKP`pF%|B}eSpW49R$cWINatFg7$h{^B zcW1MxwcSm)d>%vg)8%vQc{ar2OO#DEwqmBz|$iqs(AeYg>Fxhey(mtHIi~+LkZ$xD8HcVvYFeUgg1fjur>{Eou z^}kXaE0Dh!Aln-8cb48BDEntHI)mBE|5z;6K2xtaOlBnJ6@xFtPWPLBj1A6YE+|f{>My7dESUVTJ`-- z(cz2YO3N_OA-AnVlVn7mV)$>Z16-Bbq<@S(OFurw4)9>laMcv>LjJB@Sy7>}j;du1 z*$aNhA&Pd@<`>Be-fP7?@6zEk0)o(J6f(2$yo2{K3S%@HEbXez4Sc`kcoi?0Cj4Zj zhK5`W}MkUSG4$5r- z6JsE=juNBYz*gH> z+IQu6C3JrXGxT{HM%Nf?BMVNz>5R@Q@qyHBr52C{=(vLIFCYupAY0)rHpsFD$dMe- z0&*xnO%9Ot0@jvF0&)^{R0CO0|nB~?UMHE1mJ3Dck29VVrQ5UX%NoUmpjhW9GAn5Fmdkp+P1yOU`S| ziFB4b41DSwNk8_fTQ2%VZ~apgriOpNF?Fdbe=)9L9zIhAY9ftweKyB%yW%XntV;76RfBY z)LuIx*P(9f_Xezd32Ll~xF>J3^8ezIg!tZO-I8m%FLBTnaG*p=cAdN-6@n&21m(ljF9 zR5vI2WyXTGI@Jyu>V)W~Ql+NFoD4*rkI2~qg%hjelbWiCr4rC4fRy>J2E)5fy}OE} zc5o#8{g3)g`Bz%&aS(*zqR@~CMpMb6M`6i8qevl!AK^$|oBmr{K0qCu`kox=HF9R~S8r~Px)7~};! zun>@)_8TC#7$933APc?{$iIZ37P@%1!`cY`8I<-_@FzkZ1ZNJ$noh7z((;7_D}4`8 zu=e8IsCuaV2G(!!;7=QTq}pBj4=h@jqu-~8swP-%p1!ZjJoP}CQK@WDZDukD)dGTGyF1sE$5}rE7a5A04$LK z?2Ov;`31%+`E%4Sg_uJ+qbK9F9hvC41U8fuU`g;85LtB~Jq>hO%MKA2(nM@y7nS3t zGM-cDxe=^S9=+*WSBW*=fMYCiZ3~b6ZL(WxeH7V6_&iOrS)yP%`6K&~P#I2*F!^m+ zUfR(E2aQ^tGiVT?&T86}pg-aUK-BqFHG$+iPjD!$eCO!ftWG>l(Y1=KPBeNjQRm?; zL!Bu;>U88JBkGh)MGhIPC-U)~e}&0sbTUKgypN@Uy)B)Xt0p1?6mVPl1!D>AWK{)Y zxQ#J6w`R(PR%wiIp`Eu0yx^M_5(Hns;?Z0{KBDfDK>k>P-6lQKl+Me4NE6ZX0AU?o zgZaEeiIwEPfIKWQBd_LjJxS}+$Q>H1YRX_HUuE6)`5N7)sZ8_crGoCghxoG|HaKKT`s z?sCSBq7=}6LM?~eiW2Mab1z!@Q8`-LLHThL2_YeD-^UdFg-s#Z4X;QAoaQ+GP*Fov zG*F3xsFH2#_(!&qKvlOjMC?$PQXi3Vqb%ED(T^ZQa`*Su z7~b#NQU^rh5FVKbyp}kJvYmO9h6iX72DHq_e#;R%fJkmeH&n4Y+ zcj2WS^J(LQ$ft-*gy;n9i?l;lU%tMu~_LmY(R-&qt+bX-6@Figk$X z?YkuZJ!Hf)@QT=`?(>97^OVl-aNzUyb3!Fnrx`swBj&&6IjzMg>*740GPz2f-wk!B z`^;vjbDx4FDD$y$*hb;il@?o?P-Y^)#fLS87fQ%%^B8Eos+K$=B0g_TNSdWL*fxGW7%z6$$Cf2E-K1VLm z7Wl}pzp}#a&Np35`FQ& zL?D0mg8})D0h!J$t|KF8$lD!pgG`agzjioQ*!o!SO&=6z$b|q?yUYSCj^Dp4&lumO z@=mlKf*>%``J7-}!TKm#6Ty;%iHb92#To|2j4y=|S@E*a(1owTUO*^c@4BWN2ITk{* z2E~n&51zvJ^Cg#rv)Achme#H>YbOIb#cEnX_nYRuphy(9(H${c$Fc^xZ@7;YbR(!< zzBH><1zr9}(4Ww)#)nT4>8bB{SX~8%!D=WrA7HiNR-4s!Wti0vefZL!-)nt{ry0WP z9Lj+@SyeW0Kj58{;NDN39uRjRRzDHWTI-(jabdRTnk_b~J4!RU_?p$zB5@YULeOns zO;pTB80eZA=<)?cN4+%{XP;xWo5IXC{c)YvSQ`|!H4;-YAaz@r1Y`*cRieL`fGlBy zoMJx5sG~uu#Plui%7n&|e25gF>t&3R?=gi$dxT)zNlhy)y`d0etb#z*$@AUKgz>|- zn8?x^<3tF;5$Jib5V?JmVdkk!36dv*zN8U6m)#^30AIj*yHNP~RG){v!D~C#Qc6-i z`shkvy*94yE>97a%z4o^78D`%LabpX%QQ}#5% zEJH9o44$Q~qNlth^c}O~UzSb=pgR5q+&*1F3yMTx8{9OrIt_r+5s^gj3ByxIJP$^2 zAWy9-=yK{U*Xja9jAJ1zr`yPE*a(B*Nwg0{{Htb#+Q^>RUs8spHZq3G5@*{QC7Eou zJ~(O1b6V~3I7P_5WmX9}nwDxyZR7}}f&Yf=7079rY_yTyKcvxD$ULqezg)`Cmi_?w zLeagX1jCD`i`aISaLlKj9;F-fa0QTXp|bkCL%W|uP59CK^4>jqgD^^F9|Qjs)vmLv zC_hSX_z^Wbi;NEW7@h&Wq-tLXui132cF5w>5y(ol!^K&(lJp>mV*2-dY|RQAJ*qXt z78s@RYkSwd{ClPgGt2;5hA48L8G;PNCz%2XSFTD zYx#c^@O-lPR)oJ&?QStvtt^TWtCmzGcCE9+=%`3^(;J9uZ?fg1;fA8XwS9z3DNs)< z0Ps!&e3@Y284LTJPr`pHV(JKG-nCO04kgJuQ^(jlJtbJ~cZRbCWFuH--6Q1W`bn$F-y}0ZsJNGuw zXq$(o8`g8|Z2q=su(*^3vRu5p?;q-!08W+&Mnk1MXB+ zxP6#Y=Z8d*%ZgY{%W&#!T8LTY&kGXn9{gUb7wjOchMTOqG;WnTKQp?EEtEh4VdunS zK6%0Ra+FYZU)S2ZVQlgh-`OVLSdhVu)T#BTNF2jHU%)kotnHA~G&p3OhemgiBN(uN zY4Hys=Aw4D#=N%UDz$Iah@#Y9Mh}Zjc@V88NL~1YkV?lT;}pTvX*^{p(rM&TGAPFv z3b1Y^bq{+#Cu>jpQ_(HcdP6s})1c#$kGIjFw9i$kWX73z`ujhkS^`}z2g=gPksvsk z^3OPz7krl9{5NJH$GfDzaw>W*2K|rk#QM-5Bg(1b$$PWwM}+BQfef~8`?w&eP|dFG zrkrXyXK2x_3(*q?-N+(*5KvHDX0h)0XXoHpSP8y1B^I+aI>N9&r?_)jHJ-h-rYfc@WCYJ?)xvWhF;zUX@YOQZp{DRWc1zk+(`kDjRGrO~AYBLP zC*nvaoYM-IS*Yit06he{0PiA5(%Xp1*et*fA0ft}P$s1iDdAp8>v5p>$j3??p~t;6 z&uE^<8jC_HN~C6-$|jQyC1@Lw)==U&?WTh&;j>+vDg2$&-Az(a;UL=XO&NKiF=0Q` zzxaEHY=JRh`{m`)v$WKhupRPp{BC)h>NnFwBr znC%Zmz*RGnby;tt_|aQth|C$@vD$yiF+TP=G&){JkFSuIBjn{%ymQ28o5$R$5n1`(I_JGqORf81iZrhHY6(i!fP z|D>bP#x?R)0h#|K^&T{THJ;z9j-8+QPiK}@{<9ozOg=*Akd&`}T|g5_Oi#f9O>qB- zwKHn|CM!1(Jt;5#V^&hmYJp%^J@$k=EHOZb$=595NQ@MvgItr> zP2;jIUiVm~y2`kJQXM>y*Ht+#^5hjxMHhL+-IH=3UXeC8)4or)Jp~!3RT!CHD01@p zilV0mMf4PX|9qNAC>nBGuH*I;2^3Wm>txmz|2{KQGz2McQ&NN|JJd-7BFB6?FW&VYK#Vs5WqfnjUn`1l@4z(MY1FNc6^|65(#!5dxvO zi#E`uG|=t9HuUAW8zpwDrdyS}8Q5uWECP4b@4<6_IDv`r`48N3Tg!7WleP5&yq%E8 z;BLHMu)b%;+80!%loQh9l{A$0@S5066%4PDj#6L_ep+=}XxgvMTtlFyLgLU+4^t_1 zS+`K-+?G2#LyfqHdqitmftuciTJak~qi9X8(*mIN(w>Bcn_Six?YIS_GKWmREDI(u7iH_)Nfj^Ar_K=290rP%5UcPfor zHLj~E&nSw&jgjlP#W@~|M~Zc?YH#=*UuOnvC!$05d3~jRkDAS}8*|E$qP0O~ZKyCN zl&RnL0769lES|@jgGVf)!WOg7>usn&eco-JROr7R{UQ}mr@epAc$M(i;=Wout1Ldy z6L43vF}#)flWhN{B{i*j@J^L5c8kPX-N>91i5@6kO5!V#Xr;YzqeyH<5fT+kqfFY~ zwO*?T_0n-l7xhvEQ!ik`J0kR+`c-LIUe;cW{zjooDCoY?{+CfCGTZ19>@d*nG0+X7 zXjlHzlk#Oi-^ZI+LEi^b;%#z1BN8auZg&bNirt|Fp)fe198LF3hgJ76dzotkK|6j&WN9gtSWZP6B>4 z4d=hE2LT*Om!N(Q#BOU*7DjoBj7Nf7A&9~4Zu$o40hl=DDOy~iyr@xPAd`VGBp56lPXkR%<_dgU~tV{Rni)@g6j7SaZqnArCm+XsYUUj57VPMqGO_-RX>Um`G>9=+gP&>r4=knkDeD~3 zH6M=7f2ZbW8Waxp|1Q^olf2>RRIl9D1R+1IUi{zJnSjLTL3Nt1wU`MQy#|xJtl3ng zloEZoRbnOPWMm~K>W*|R&tt7eH!Lo;XD_`^DUlkB6KLv4Db0r%N+f)t5;|r= zV%c(h9wwIkL0yw&f8maSNg1DkNx7@ZotKKpwZ3|)Ny)~0TSdxngOp?-WzOPkw%5|J*^*GlN;+fXL9^$1tj)H~)EOOt=!|eA&zr%ORrHSh zjTQ^GK}1f$-@Y<_C9RAQeh#tEi!a3q0ia$d-%~r`Qh*A>Q9T8$h?%rTco-?Vb(36^ zq63K&+$TkQs4yhsM(mOM@XuUnS<$)w;0`HTp4YM}KGKSYabi{>W}by6g`%rCZbeZS zwNP{f8Rl zNN&azNOaaV$fZV?9{x%o6AQ>CRL}`zf2eB?aWQXG*Y+fUIYOd|-ma zL9Y!mp#gFpS?r~m>?l_3eoC$VGdcu#<2eMdKGH08l>K_iB8a%GK3~u>613%cGc3M5 zU*%Ww<#*J5_;SnCY=9@4gg!jK^}*lT0O@%?WdJdR8IQPW_mZ-FQ9I8^y)8B zjTK&3>iYcvbrBk@^c2x8Z!kK0A9P$KPGDmvKHP{?mqLdRQrPICSVcjXD=4}^ZQ7s0 zOj6zHHpAL*k4GCk?vV&casDSDD8`QrV={}ELMcQ=a2l}6}XKOF?GKO$EPO=TY|sG+j-xyd$>f4;`xlIk|$Ia))2i)VvN zyV?L(OM?TEmI16`Fkk_ROfBf9>b89p)&`Mv)_90a4^jc=O#pUV>=ZnOGTbkVOOmeY7V*&}? z^i3Xg_kVd6bnAqfdYauZtPKx1g~miTRL9{BZtIWa4Dwsb(gc#8i6IQ1QQ}AaN0`@v zRr#m&acIuI0EE`x8wpht>Nu>1jIaqkLuz9G2wD^R5ws>@MT#G%_vb|v=sz=u&qct0 zaK!w&VC2t9(b6L*EbzUnIl!p)sLgN=0obRhJ$6~4YI9Sw6hau7Zr{Z44S7j z&tsK^3KDz+&EN~uJOc#nQS-AV5`g2#m@nhR^~A(^epX9wqsd*4-m{^CioL0@#oXXX=983m;1Z1eEMu?JHju_v z$k^TW7+Wi2^gV7K`%K0vfSu?WGWPh28tbRthgK|lh>Z28^K6>4xs3gd`Vieg#`tri zG*(W=I&Q~UxQtEHagt5OhSFGG8S8sQ&6!ZfCZi9CPAOy652!KzyEZQ8x@j1@(~@;x zMzKcg9b(6I?sQ@7gp5_tT(6R`MKrciy^prU^uEt!EISVBqG!w4SgqfOGUi-}u@N%1 zT4QM~W5+(n*gG;dO~0>_j13)$u?QK9e^jlPQ^xv|Z41cQ5#3lOkumEljHQyX$FyB1 zoHsZ+oGp=iqaUpd0lPjG$azqb@ZOl_TE!V zywd!7YW&@b#7Hu(+UbkCX{uBaQG?S*jD9nIe>};bLP6i z1;`owQE1+fsXInLPFgu+_P(+EBC|$JuofJ~NL1#7?wwK2DI~?%7*>Sqkmpr|djYkz zrv8kt`0)tW4%HHe6ibuXg4i=)IFX5 zWSr{^Y~TMkWAy)}y_}AK_PUZZfV~dzfU?&KYVQ2n>mG%#ve!zI`cL-iff-`i>oZz{ z>{XBF4`#2aiG1yqJb|*;&iHik|A)QWvTyl~uVP68*ee4MD0}TdA@FanD@J^MNmBpG zUM(;~EPD;t@l}@R4`#1FU>)!HY86k}>vg_(ReN!NLFsRoo&J7CKvJ@cl{^udoIgGJ z?IQb%U;e-6P*OAxT_rS!#!6%5u46=nMRSsh6U}yx@ZhoYSt#YRl$grkyCvtdqqNzj z__&Rh2`R`=KBHVV5K4J-efzl+^2lY2_~I40CeV!6PyI>dul}U}&-JGQ`$p|lp8AtY zmzg(^0jM;^Dol?#rj+4I&`~P#S!}}Hu=%P7$v=v`a1Rb>{`URFD5+ z>+80%uz&fr?>z}UKlx7vVjF&k3@~O&jCpmdu|x(KIt`#rkUj838DI@)0NZLA=+6Vn zhtl8>gnX!Stl~I#i^qp7&*590T{q>W(Bvr)rmt`^#+g~Q} zfHHFZF=FJ{2OUv#u&ffrn%;nkQww!JsW zKx})@mx0*%VVn%a&JVqKKzT^hPhk|Kfzq+kKsqB06eg*-dx#(ZC{6Jn?eg-EcRBu7 z(Nin(kAoNu>>oP*DfSD1KyN=;a7Xz`OTKtTKhZhtKlWEy*jN4Me+l*2_C3o3$|%tv zicvyi8RZHd6X>wrMN)AxiXVG$e>DO#82MQGtKqZ+*`pKB?=K&d4VK>ZwL#XulnqYa zri=ezgFx{bYd_yc$BG@V|5qx$hfl8e1=;8P+B*T4B0upQBRL>;JpU{MvEzAz48)G- zxiS#D-jC%00?_uGv?uS!yJ@+loFcD?jI|K@uCV7ixoNxiSH>-{N=zBt}> zy)O;#@{akHH8>EFYmd;q4<-C%n5j@-@z(UcOe@Yad9y7U6a0g}!F{yXSoW858B#-;N{l zutscu+av?A{cXMs#P+vwG7!67^pXMA)oXv)R0ddO8mO!{j^$;5HK&0HJ&=V+$9eAzGyTd0` zZGa~Y(bvBI*G(0NH;{kAOT8Vq?KS1VY53yR3rd6w-${4RH=Yoyz*PT03-?#_pjN%E z+*lr)(>K}AJ{++WP8~lod&KCC;~^6-G9A7*0++!9Bz&PC&r2@;!7sY-i|_t)#;Y@d zK7&1hKAtq8PFQ8P<>D-jMCnc#?f�lot1QL>E1O*ImcOAK4~x7sMmnDcsg%o#4}7 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

y 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

olKXVy@l>#S&LS8wi8hJQ-*Bbyz}fWO6)i!p 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

2j9hbZM} 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 kuIX40+Av2RYaP)4AW=>c*EU{RSTxXU^;%5eKjQ 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

HYaUC+TygO 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⁣zzVlu5 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≺Em3>%=lh#QDfP;6is-!;6b>Hz&Oce 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

ryrrRHdjyr#8AS#zRB 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 B)=pEWYcPtqB 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 z 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 EXPyfI8`bqKXf0OvaqkK>Q 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

yl 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

`V&9+Fhz8R3n(7Sp0IaPo1Z=1pP~&l(_A-+t5XE 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�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 F{5w@Qq}l)g literal 0 HcmV?d00001 diff --git a/WebCrawler/venv/Lib/site-packages/lxml/etree.h b/WebCrawler/venv/Lib/site-packages/lxml/etree.h new file mode 100644 index 0000000..1d19136 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/lxml/etree.h @@ -0,0 +1,224 @@ +/* Generated by Cython 0.29.21 */ + +#ifndef __PYX_HAVE__lxml__etree +#define __PYX_HAVE__lxml__etree + +#include "Python.h" +struct LxmlDocument; +struct LxmlElement; +struct LxmlElementTree; +struct LxmlElementTagMatcher; +struct LxmlElementIterator; +struct LxmlElementBase; +struct LxmlElementClassLookup; +struct LxmlFallbackElementClassLookup; + +/* "lxml/etree.pyx":322 + * + * # type of a function that steps from node to node + * ctypedef public xmlNode* (*_node_to_node_function)(xmlNode*) # <<<<<<<<<<<<<< + * + * + */ +typedef xmlNode *(*_node_to_node_function)(xmlNode *); + +/* "lxml/etree.pyx":338 + * @cython.final + * @cython.freelist(8) + * cdef public class _Document [ type LxmlDocumentType, object LxmlDocument ]: # <<<<<<<<<<<<<< + * u"""Internal base class to reference a libxml document. + * + */ +struct LxmlDocument { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__Document *__pyx_vtab; + int _ns_counter; + PyObject *_prefix_tail; + xmlDoc *_c_doc; + struct __pyx_obj_4lxml_5etree__BaseParser *_parser; +}; + +/* "lxml/etree.pyx":687 + * + * @cython.no_gc_clear + * cdef public class _Element [ type LxmlElementType, object LxmlElement ]: # <<<<<<<<<<<<<< + * u"""Element class. + * + */ +struct LxmlElement { + PyObject_HEAD + struct LxmlDocument *_doc; + xmlNode *_c_node; + PyObject *_tag; +}; + +/* "lxml/etree.pyx":1854 + * + * + * cdef public class _ElementTree [ type LxmlElementTreeType, # <<<<<<<<<<<<<< + * object LxmlElementTree ]: + * cdef _Document _doc + */ +struct LxmlElementTree { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__ElementTree *__pyx_vtab; + struct LxmlDocument *_doc; + struct LxmlElement *_context_node; +}; + +/* "lxml/etree.pyx":2598 + * + * + * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher, # <<<<<<<<<<<<<< + * type LxmlElementTagMatcherType ]: + * """ + */ +struct LxmlElementTagMatcher { + PyObject_HEAD + struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtab; + PyObject *_pystrings; + int _node_type; + char *_href; + char *_name; +}; + +/* "lxml/etree.pyx":2629 + * self._name = NULL + * + * cdef public class _ElementIterator(_ElementTagMatcher) [ # <<<<<<<<<<<<<< + * object LxmlElementIterator, type LxmlElementIteratorType ]: + * """ + */ +struct LxmlElementIterator { + struct LxmlElementTagMatcher __pyx_base; + struct LxmlElement *_node; + _node_to_node_function _next_element; +}; + +/* "src/lxml/classlookup.pxi":6 + * # Custom Element classes + * + * cdef public class ElementBase(_Element) [ type LxmlElementBaseType, # <<<<<<<<<<<<<< + * object LxmlElementBase ]: + * u"""ElementBase(*children, attrib=None, nsmap=None, **_extra) + */ +struct LxmlElementBase { + struct LxmlElement __pyx_base; +}; + +/* "src/lxml/classlookup.pxi":210 + * # Element class lookup + * + * ctypedef public object (*_element_class_lookup_function)(object, _Document, xmlNode*) # <<<<<<<<<<<<<< + * + * # class to store element class lookup functions + */ +typedef PyObject *(*_element_class_lookup_function)(PyObject *, struct LxmlDocument *, xmlNode *); + +/* "src/lxml/classlookup.pxi":213 + * + * # class to store element class lookup functions + * cdef public class ElementClassLookup [ type LxmlElementClassLookupType, # <<<<<<<<<<<<<< + * object LxmlElementClassLookup ]: + * u"""ElementClassLookup(self) + */ +struct LxmlElementClassLookup { + PyObject_HEAD + _element_class_lookup_function _lookup_function; +}; + +/* "src/lxml/classlookup.pxi":221 + * + * + * cdef public class FallbackElementClassLookup(ElementClassLookup) \ # <<<<<<<<<<<<<< + * [ type LxmlFallbackElementClassLookupType, + * object LxmlFallbackElementClassLookup ]: + */ +struct LxmlFallbackElementClassLookup { + struct LxmlElementClassLookup __pyx_base; + struct __pyx_vtabstruct_4lxml_5etree_FallbackElementClassLookup *__pyx_vtab; + struct LxmlElementClassLookup *fallback; + _element_class_lookup_function _fallback_function; +}; + +#ifndef __PYX_HAVE_API__lxml__etree + +#ifndef __PYX_EXTERN_C + #ifdef __cplusplus + #define __PYX_EXTERN_C extern "C" + #else + #define __PYX_EXTERN_C extern + #endif +#endif + +#ifndef DL_IMPORT + #define DL_IMPORT(_T) _T +#endif + +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlDocumentType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTreeType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementTagMatcherType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementIteratorType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementBaseType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlElementClassLookupType; +__PYX_EXTERN_C DL_IMPORT(PyTypeObject) LxmlFallbackElementClassLookupType; + +__PYX_EXTERN_C struct LxmlElement *deepcopyNodeToDocument(struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C struct LxmlElementTree *elementTreeFactory(struct LxmlElement *); +__PYX_EXTERN_C struct LxmlElementTree *newElementTree(struct LxmlElement *, PyObject *); +__PYX_EXTERN_C struct LxmlElementTree *adoptExternalDocument(xmlDoc *, PyObject *, int); +__PYX_EXTERN_C struct LxmlElement *elementFactory(struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C struct LxmlElement *makeElement(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); +__PYX_EXTERN_C struct LxmlElement *makeSubElement(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); +__PYX_EXTERN_C void setElementClassLookupFunction(_element_class_lookup_function, PyObject *); +__PYX_EXTERN_C PyObject *lookupDefaultElementClass(PyObject *, PyObject *, xmlNode *); +__PYX_EXTERN_C PyObject *lookupNamespaceElementClass(PyObject *, PyObject *, xmlNode *); +__PYX_EXTERN_C PyObject *callLookupFallback(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *); +__PYX_EXTERN_C int tagMatches(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C struct LxmlDocument *documentOrRaise(PyObject *); +__PYX_EXTERN_C struct LxmlElement *rootNodeOrRaise(PyObject *); +__PYX_EXTERN_C int hasText(xmlNode *); +__PYX_EXTERN_C int hasTail(xmlNode *); +__PYX_EXTERN_C PyObject *textOf(xmlNode *); +__PYX_EXTERN_C PyObject *tailOf(xmlNode *); +__PYX_EXTERN_C int setNodeText(xmlNode *, PyObject *); +__PYX_EXTERN_C int setTailText(xmlNode *, PyObject *); +__PYX_EXTERN_C PyObject *attributeValue(xmlNode *, xmlAttr *); +__PYX_EXTERN_C PyObject *attributeValueFromNsName(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C PyObject *getAttributeValue(struct LxmlElement *, PyObject *, PyObject *); +__PYX_EXTERN_C PyObject *iterattributes(struct LxmlElement *, int); +__PYX_EXTERN_C PyObject *collectAttributes(xmlNode *, int); +__PYX_EXTERN_C int setAttributeValue(struct LxmlElement *, PyObject *, PyObject *); +__PYX_EXTERN_C int delAttribute(struct LxmlElement *, PyObject *); +__PYX_EXTERN_C int delAttributeFromNsName(xmlNode *, const xmlChar *, const xmlChar *); +__PYX_EXTERN_C int hasChild(xmlNode *); +__PYX_EXTERN_C xmlNode *findChild(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *findChildForwards(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *findChildBackwards(xmlNode *, Py_ssize_t); +__PYX_EXTERN_C xmlNode *nextElement(xmlNode *); +__PYX_EXTERN_C xmlNode *previousElement(xmlNode *); +__PYX_EXTERN_C void appendChild(struct LxmlElement *, struct LxmlElement *); +__PYX_EXTERN_C int appendChildToElement(struct LxmlElement *, struct LxmlElement *); +__PYX_EXTERN_C PyObject *pyunicode(const xmlChar *); +__PYX_EXTERN_C PyObject *utf8(PyObject *); +__PYX_EXTERN_C PyObject *getNsTag(PyObject *); +__PYX_EXTERN_C PyObject *getNsTagWithEmptyNs(PyObject *); +__PYX_EXTERN_C PyObject *namespacedName(xmlNode *); +__PYX_EXTERN_C PyObject *namespacedNameFromNsName(const xmlChar *, const xmlChar *); +__PYX_EXTERN_C void iteratorStoreNext(struct LxmlElementIterator *, struct LxmlElement *); +__PYX_EXTERN_C void initTagMatch(struct LxmlElementTagMatcher *, PyObject *); +__PYX_EXTERN_C xmlNs *findOrBuildNodeNsPrefix(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *); + +#endif /* !__PYX_HAVE_API__lxml__etree */ + +/* WARNING: the interface of the module init function changed in CPython 3.5. */ +/* It now returns a PyModuleDef instance instead of a PyModule instance. */ + +#if PY_MAJOR_VERSION < 3 +PyMODINIT_FUNC initetree(void); +#else +PyMODINIT_FUNC PyInit_etree(void); +#endif + +#endif /* !__PYX_HAVE__lxml__etree */ diff --git a/WebCrawler/venv/Lib/site-packages/lxml/etree_api.h b/WebCrawler/venv/Lib/site-packages/lxml/etree_api.h new file mode 100644 index 0000000..729d217 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/lxml/etree_api.h @@ -0,0 +1,219 @@ +/* Generated by Cython 0.29.21 */ + +#ifndef __PYX_HAVE_API__lxml__etree +#define __PYX_HAVE_API__lxml__etree +#ifdef __MINGW64__ +#define MS_WIN64 +#endif +#include "Python.h" +#include "etree.h" + +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument)(struct LxmlDocument *, xmlNode *) = 0; +#define deepcopyNodeToDocument __pyx_api_f_4lxml_5etree_deepcopyNodeToDocument +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_elementTreeFactory)(struct LxmlElement *) = 0; +#define elementTreeFactory __pyx_api_f_4lxml_5etree_elementTreeFactory +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_newElementTree)(struct LxmlElement *, PyObject *) = 0; +#define newElementTree __pyx_api_f_4lxml_5etree_newElementTree +static struct LxmlElementTree *(*__pyx_api_f_4lxml_5etree_adoptExternalDocument)(xmlDoc *, PyObject *, int) = 0; +#define adoptExternalDocument __pyx_api_f_4lxml_5etree_adoptExternalDocument +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_elementFactory)(struct LxmlDocument *, xmlNode *) = 0; +#define elementFactory __pyx_api_f_4lxml_5etree_elementFactory +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_makeElement)(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *) = 0; +#define makeElement __pyx_api_f_4lxml_5etree_makeElement +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_makeSubElement)(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *) = 0; +#define makeSubElement __pyx_api_f_4lxml_5etree_makeSubElement +static void (*__pyx_api_f_4lxml_5etree_setElementClassLookupFunction)(_element_class_lookup_function, PyObject *) = 0; +#define setElementClassLookupFunction __pyx_api_f_4lxml_5etree_setElementClassLookupFunction +static PyObject *(*__pyx_api_f_4lxml_5etree_lookupDefaultElementClass)(PyObject *, PyObject *, xmlNode *) = 0; +#define lookupDefaultElementClass __pyx_api_f_4lxml_5etree_lookupDefaultElementClass +static PyObject *(*__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass)(PyObject *, PyObject *, xmlNode *) = 0; +#define lookupNamespaceElementClass __pyx_api_f_4lxml_5etree_lookupNamespaceElementClass +static PyObject *(*__pyx_api_f_4lxml_5etree_callLookupFallback)(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *) = 0; +#define callLookupFallback __pyx_api_f_4lxml_5etree_callLookupFallback +static int (*__pyx_api_f_4lxml_5etree_tagMatches)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define tagMatches __pyx_api_f_4lxml_5etree_tagMatches +static struct LxmlDocument *(*__pyx_api_f_4lxml_5etree_documentOrRaise)(PyObject *) = 0; +#define documentOrRaise __pyx_api_f_4lxml_5etree_documentOrRaise +static struct LxmlElement *(*__pyx_api_f_4lxml_5etree_rootNodeOrRaise)(PyObject *) = 0; +#define rootNodeOrRaise __pyx_api_f_4lxml_5etree_rootNodeOrRaise +static int (*__pyx_api_f_4lxml_5etree_hasText)(xmlNode *) = 0; +#define hasText __pyx_api_f_4lxml_5etree_hasText +static int (*__pyx_api_f_4lxml_5etree_hasTail)(xmlNode *) = 0; +#define hasTail __pyx_api_f_4lxml_5etree_hasTail +static PyObject *(*__pyx_api_f_4lxml_5etree_textOf)(xmlNode *) = 0; +#define textOf __pyx_api_f_4lxml_5etree_textOf +static PyObject *(*__pyx_api_f_4lxml_5etree_tailOf)(xmlNode *) = 0; +#define tailOf __pyx_api_f_4lxml_5etree_tailOf +static int (*__pyx_api_f_4lxml_5etree_setNodeText)(xmlNode *, PyObject *) = 0; +#define setNodeText __pyx_api_f_4lxml_5etree_setNodeText +static int (*__pyx_api_f_4lxml_5etree_setTailText)(xmlNode *, PyObject *) = 0; +#define setTailText __pyx_api_f_4lxml_5etree_setTailText +static PyObject *(*__pyx_api_f_4lxml_5etree_attributeValue)(xmlNode *, xmlAttr *) = 0; +#define attributeValue __pyx_api_f_4lxml_5etree_attributeValue +static PyObject *(*__pyx_api_f_4lxml_5etree_attributeValueFromNsName)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define attributeValueFromNsName __pyx_api_f_4lxml_5etree_attributeValueFromNsName +static PyObject *(*__pyx_api_f_4lxml_5etree_getAttributeValue)(struct LxmlElement *, PyObject *, PyObject *) = 0; +#define getAttributeValue __pyx_api_f_4lxml_5etree_getAttributeValue +static PyObject *(*__pyx_api_f_4lxml_5etree_iterattributes)(struct LxmlElement *, int) = 0; +#define iterattributes __pyx_api_f_4lxml_5etree_iterattributes +static PyObject *(*__pyx_api_f_4lxml_5etree_collectAttributes)(xmlNode *, int) = 0; +#define collectAttributes __pyx_api_f_4lxml_5etree_collectAttributes +static int (*__pyx_api_f_4lxml_5etree_setAttributeValue)(struct LxmlElement *, PyObject *, PyObject *) = 0; +#define setAttributeValue __pyx_api_f_4lxml_5etree_setAttributeValue +static int (*__pyx_api_f_4lxml_5etree_delAttribute)(struct LxmlElement *, PyObject *) = 0; +#define delAttribute __pyx_api_f_4lxml_5etree_delAttribute +static int (*__pyx_api_f_4lxml_5etree_delAttributeFromNsName)(xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define delAttributeFromNsName __pyx_api_f_4lxml_5etree_delAttributeFromNsName +static int (*__pyx_api_f_4lxml_5etree_hasChild)(xmlNode *) = 0; +#define hasChild __pyx_api_f_4lxml_5etree_hasChild +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChild)(xmlNode *, Py_ssize_t) = 0; +#define findChild __pyx_api_f_4lxml_5etree_findChild +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChildForwards)(xmlNode *, Py_ssize_t) = 0; +#define findChildForwards __pyx_api_f_4lxml_5etree_findChildForwards +static xmlNode *(*__pyx_api_f_4lxml_5etree_findChildBackwards)(xmlNode *, Py_ssize_t) = 0; +#define findChildBackwards __pyx_api_f_4lxml_5etree_findChildBackwards +static xmlNode *(*__pyx_api_f_4lxml_5etree_nextElement)(xmlNode *) = 0; +#define nextElement __pyx_api_f_4lxml_5etree_nextElement +static xmlNode *(*__pyx_api_f_4lxml_5etree_previousElement)(xmlNode *) = 0; +#define previousElement __pyx_api_f_4lxml_5etree_previousElement +static void (*__pyx_api_f_4lxml_5etree_appendChild)(struct LxmlElement *, struct LxmlElement *) = 0; +#define appendChild __pyx_api_f_4lxml_5etree_appendChild +static int (*__pyx_api_f_4lxml_5etree_appendChildToElement)(struct LxmlElement *, struct LxmlElement *) = 0; +#define appendChildToElement __pyx_api_f_4lxml_5etree_appendChildToElement +static PyObject *(*__pyx_api_f_4lxml_5etree_pyunicode)(const xmlChar *) = 0; +#define pyunicode __pyx_api_f_4lxml_5etree_pyunicode +static PyObject *(*__pyx_api_f_4lxml_5etree_utf8)(PyObject *) = 0; +#define utf8 __pyx_api_f_4lxml_5etree_utf8 +static PyObject *(*__pyx_api_f_4lxml_5etree_getNsTag)(PyObject *) = 0; +#define getNsTag __pyx_api_f_4lxml_5etree_getNsTag +static PyObject *(*__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs)(PyObject *) = 0; +#define getNsTagWithEmptyNs __pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs +static PyObject *(*__pyx_api_f_4lxml_5etree_namespacedName)(xmlNode *) = 0; +#define namespacedName __pyx_api_f_4lxml_5etree_namespacedName +static PyObject *(*__pyx_api_f_4lxml_5etree_namespacedNameFromNsName)(const xmlChar *, const xmlChar *) = 0; +#define namespacedNameFromNsName __pyx_api_f_4lxml_5etree_namespacedNameFromNsName +static void (*__pyx_api_f_4lxml_5etree_iteratorStoreNext)(struct LxmlElementIterator *, struct LxmlElement *) = 0; +#define iteratorStoreNext __pyx_api_f_4lxml_5etree_iteratorStoreNext +static void (*__pyx_api_f_4lxml_5etree_initTagMatch)(struct LxmlElementTagMatcher *, PyObject *) = 0; +#define initTagMatch __pyx_api_f_4lxml_5etree_initTagMatch +static xmlNs *(*__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix)(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *) = 0; +#define findOrBuildNodeNsPrefix __pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix +#if !defined(__Pyx_PyIdentifier_FromString) +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) +#else + #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) +#endif +#endif + +#ifndef __PYX_HAVE_RT_ImportFunction +#define __PYX_HAVE_RT_ImportFunction +static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { + PyObject *d = 0; + PyObject *cobj = 0; + union { + void (*fp)(void); + void *p; + } tmp; + d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); + if (!d) + goto bad; + cobj = PyDict_GetItemString(d, funcname); + if (!cobj) { + PyErr_Format(PyExc_ImportError, + "%.200s does not export expected C function %.200s", + PyModule_GetName(module), funcname); + goto bad; + } +#if PY_VERSION_HEX >= 0x02070000 + if (!PyCapsule_IsValid(cobj, sig)) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); + goto bad; + } + tmp.p = PyCapsule_GetPointer(cobj, sig); +#else + {const char *desc, *s1, *s2; + desc = (const char *)PyCObject_GetDesc(cobj); + if (!desc) + goto bad; + s1 = desc; s2 = sig; + while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } + if (*s1 != *s2) { + PyErr_Format(PyExc_TypeError, + "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", + PyModule_GetName(module), funcname, sig, desc); + goto bad; + } + tmp.p = PyCObject_AsVoidPtr(cobj);} +#endif + *f = tmp.fp; + if (!(*f)) + goto bad; + Py_DECREF(d); + return 0; +bad: + Py_XDECREF(d); + return -1; +} +#endif + + +static int import_lxml__etree(void) { + PyObject *module = 0; + module = PyImport_ImportModule("lxml.etree"); + if (!module) goto bad; + if (__Pyx_ImportFunction(module, "deepcopyNodeToDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_deepcopyNodeToDocument, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "elementTreeFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementTreeFactory, "struct LxmlElementTree *(struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "newElementTree", (void (**)(void))&__pyx_api_f_4lxml_5etree_newElementTree, "struct LxmlElementTree *(struct LxmlElement *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "adoptExternalDocument", (void (**)(void))&__pyx_api_f_4lxml_5etree_adoptExternalDocument, "struct LxmlElementTree *(xmlDoc *, PyObject *, int)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "elementFactory", (void (**)(void))&__pyx_api_f_4lxml_5etree_elementFactory, "struct LxmlElement *(struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "makeElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeElement, "struct LxmlElement *(PyObject *, struct LxmlDocument *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "makeSubElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_makeSubElement, "struct LxmlElement *(struct LxmlElement *, PyObject *, PyObject *, PyObject *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "setElementClassLookupFunction", (void (**)(void))&__pyx_api_f_4lxml_5etree_setElementClassLookupFunction, "void (_element_class_lookup_function, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "lookupDefaultElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupDefaultElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "lookupNamespaceElementClass", (void (**)(void))&__pyx_api_f_4lxml_5etree_lookupNamespaceElementClass, "PyObject *(PyObject *, PyObject *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "callLookupFallback", (void (**)(void))&__pyx_api_f_4lxml_5etree_callLookupFallback, "PyObject *(struct LxmlFallbackElementClassLookup *, struct LxmlDocument *, xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "tagMatches", (void (**)(void))&__pyx_api_f_4lxml_5etree_tagMatches, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "documentOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_documentOrRaise, "struct LxmlDocument *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "rootNodeOrRaise", (void (**)(void))&__pyx_api_f_4lxml_5etree_rootNodeOrRaise, "struct LxmlElement *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "hasText", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasText, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "hasTail", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasTail, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "textOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_textOf, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "tailOf", (void (**)(void))&__pyx_api_f_4lxml_5etree_tailOf, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "setNodeText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setNodeText, "int (xmlNode *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "setTailText", (void (**)(void))&__pyx_api_f_4lxml_5etree_setTailText, "int (xmlNode *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "attributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValue, "PyObject *(xmlNode *, xmlAttr *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "attributeValueFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_attributeValueFromNsName, "PyObject *(xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "getAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_getAttributeValue, "PyObject *(struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "iterattributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_iterattributes, "PyObject *(struct LxmlElement *, int)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "collectAttributes", (void (**)(void))&__pyx_api_f_4lxml_5etree_collectAttributes, "PyObject *(xmlNode *, int)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "setAttributeValue", (void (**)(void))&__pyx_api_f_4lxml_5etree_setAttributeValue, "int (struct LxmlElement *, PyObject *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "delAttribute", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttribute, "int (struct LxmlElement *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "delAttributeFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_delAttributeFromNsName, "int (xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "hasChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_hasChild, "int (xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "findChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChild, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "findChildForwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildForwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "findChildBackwards", (void (**)(void))&__pyx_api_f_4lxml_5etree_findChildBackwards, "xmlNode *(xmlNode *, Py_ssize_t)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "nextElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_nextElement, "xmlNode *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "previousElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_previousElement, "xmlNode *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "appendChild", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChild, "void (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "appendChildToElement", (void (**)(void))&__pyx_api_f_4lxml_5etree_appendChildToElement, "int (struct LxmlElement *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "pyunicode", (void (**)(void))&__pyx_api_f_4lxml_5etree_pyunicode, "PyObject *(const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "utf8", (void (**)(void))&__pyx_api_f_4lxml_5etree_utf8, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "getNsTag", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTag, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "getNsTagWithEmptyNs", (void (**)(void))&__pyx_api_f_4lxml_5etree_getNsTagWithEmptyNs, "PyObject *(PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "namespacedName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedName, "PyObject *(xmlNode *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "namespacedNameFromNsName", (void (**)(void))&__pyx_api_f_4lxml_5etree_namespacedNameFromNsName, "PyObject *(const xmlChar *, const xmlChar *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "iteratorStoreNext", (void (**)(void))&__pyx_api_f_4lxml_5etree_iteratorStoreNext, "void (struct LxmlElementIterator *, struct LxmlElement *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "initTagMatch", (void (**)(void))&__pyx_api_f_4lxml_5etree_initTagMatch, "void (struct LxmlElementTagMatcher *, PyObject *)") < 0) goto bad; + if (__Pyx_ImportFunction(module, "findOrBuildNodeNsPrefix", (void (**)(void))&__pyx_api_f_4lxml_5etree_findOrBuildNodeNsPrefix, "xmlNs *(struct LxmlDocument *, xmlNode *, const xmlChar *, const xmlChar *)") < 0) goto bad; + Py_DECREF(module); module = 0; + return 0; + bad: + Py_XDECREF(module); + return -1; +} + +#endif /* !__PYX_HAVE_API__lxml__etree */ diff --git a/WebCrawler/venv/Lib/site-packages/lxml/html/ElementSoup.py b/WebCrawler/venv/Lib/site-packages/lxml/html/ElementSoup.py new file mode 100644 index 0000000..c35365d --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/lxml/html/ElementSoup.py @@ -0,0 +1,10 @@ +__doc__ = """Legacy interface to the BeautifulSoup HTML parser. +""" + +__all__ = ["parse", "convert_tree"] + +from .soupparser import convert_tree, parse as _parse + +def parse(file, beautifulsoup=None, makeelement=None): + root = _parse(file, beautifulsoup=beautifulsoup, makeelement=makeelement) + return root.getroot() diff --git a/WebCrawler/venv/Lib/site-packages/lxml/html/__init__.py b/WebCrawler/venv/Lib/site-packages/lxml/html/__init__.py new file mode 100644 index 0000000..2139c75 --- /dev/null +++ b/WebCrawler/venv/Lib/site-packages/lxml/html/__init__.py @@ -0,0 +1,1948 @@ +# Copyright (c) 2004 Ian Bicking. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# +# 3. Neither the name of Ian Bicking nor the names of its contributors may +# be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IAN BICKING OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""The ``lxml.html`` tool set for HTML handling. +""" + +from __future__ import absolute_import + +__all__ = [ + 'document_fromstring', 'fragment_fromstring', 'fragments_fromstring', 'fromstring', + 'tostring', 'Element', 'defs', 'open_in_browser', 'submit_form', + 'find_rel_links', 'find_class', 'make_links_absolute', + 'resolve_base_href', 'iterlinks', 'rewrite_links', 'parse'] + + +import copy +import sys +import re +from functools import partial + +try: + from collections.abc import MutableMapping, MutableSet +except ImportError: + from collections import MutableMapping, MutableSet + +from .. import etree +from . import defs +from ._setmixin import SetMixin + +try: + from urlparse import urljoin +except ImportError: + # Python 3 + from urllib.parse import urljoin + +try: + unicode +except NameError: + # Python 3 + unicode = str +try: + basestring +except NameError: + # Python 3 + basestring = (str, bytes) + + +def __fix_docstring(s): + if not s: + return s + if sys.version_info[0] >= 3: + sub = re.compile(r"^(\s*)u'", re.M).sub + else: + sub = re.compile(r"^(\s*)b'", re.M).sub + return sub(r"\1'", s) + + +XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml" + +_rel_links_xpath = etree.XPath("descendant-or-self::a[@rel]|descendant-or-self::x:a[@rel]", + namespaces={'x':XHTML_NAMESPACE}) +_options_xpath = etree.XPath("descendant-or-self::option|descendant-or-self::x:option", + namespaces={'x':XHTML_NAMESPACE}) +_forms_xpath = etree.XPath("descendant-or-self::form|descendant-or-self::x:form", + namespaces={'x':XHTML_NAMESPACE}) +#_class_xpath = etree.XPath(r"descendant-or-self::*[regexp:match(@class, concat('\b', $class_name, '\b'))]", {'regexp': 'http://exslt.org/regular-expressions'}) +_class_xpath = etree.XPath("descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), concat(' ', $class_name, ' '))]") +_id_xpath = etree.XPath("descendant-or-self::*[@id=$id]") +_collect_string_content = etree.XPath("string()") +_iter_css_urls = re.compile(r'url\(('+'["][^"]*["]|'+"['][^']*[']|"+r'[^)]*)\)', re.I).finditer +_iter_css_imports = re.compile(r'@import "(.*?)"').finditer +_label_xpath = etree.XPath("//label[@for=$id]|//x:label[@for=$id]", + namespaces={'x':XHTML_NAMESPACE}) +_archive_re = re.compile(r'[^ ]+') +_parse_meta_refresh_url = re.compile( + r'[^;=]*;\s*(?:url\s*=\s*)?(?P.*)$', re.I).search + + +def _unquote_match(s, pos): + if s[:1] == '"' and s[-1:] == '"' or s[:1] == "'" and s[-1:] == "'": + return s[1:-1], pos+1 + else: + return s,pos + + +def _transform_result(typ, result): + """Convert the result back into the input type. + """ + if issubclass(typ, bytes): + return tostring(result, encoding='utf-8') + elif issubclass(typ, unicode): + return tostring(result, encoding='unicode') + else: + return result + + +def _nons(tag): + if isinstance(tag, basestring): + if tag[0] == '{' and tag[1:len(XHTML_NAMESPACE)+1] == XHTML_NAMESPACE: + return tag.split('}')[-1] + return tag + + +class Classes(MutableSet): + """Provides access to an element's class attribute as a set-like collection. + Usage:: + + >>> el = fromstring('

') + >>> classes = el.classes # or: classes = Classes(el.attrib) + >>> classes |= ['block', 'paragraph'] + >>> el.get('class') + 'hidden large block paragraph' + >>> classes.toggle('hidden') + False + >>> el.get('class') + 'large block paragraph' + >>> classes -= ('some', 'classes', 'block') + >>> el.get('class') + 'large paragraph' + """ + def __init__(self, attributes): + self._attributes = attributes + self._get_class_value = partial(attributes.get, 'class', '') + + def add(self, value): + """ + Add a class. + + This has no effect if the class is already present. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = self._get_class_value().split() + if value in classes: + return + classes.append(value) + self._attributes['class'] = ' '.join(classes) + + def discard(self, value): + """ + Remove a class if it is currently present. + + If the class is not present, do nothing. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = [name for name in self._get_class_value().split() + if name != value] + if classes: + self._attributes['class'] = ' '.join(classes) + elif 'class' in self._attributes: + del self._attributes['class'] + + def remove(self, value): + """ + Remove a class; it must currently be present. + + If the class is not present, raise a KeyError. + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + super(Classes, self).remove(value) + + def __contains__(self, name): + classes = self._get_class_value() + return name in classes and name in classes.split() + + def __iter__(self): + return iter(self._get_class_value().split()) + + def __len__(self): + return len(self._get_class_value().split()) + + # non-standard methods + + def update(self, values): + """ + Add all names from 'values'. + """ + classes = self._get_class_value().split() + extended = False + for value in values: + if value not in classes: + classes.append(value) + extended = True + if extended: + self._attributes['class'] = ' '.join(classes) + + def toggle(self, value): + """ + Add a class name if it isn't there yet, or remove it if it exists. + + Returns true if the class was added (and is now enabled) and + false if it was removed (and is now disabled). + """ + if not value or re.search(r'\s', value): + raise ValueError("Invalid class name: %r" % value) + classes = self._get_class_value().split() + try: + classes.remove(value) + enabled = False + except ValueError: + classes.append(value) + enabled = True + if classes: + self._attributes['class'] = ' '.join(classes) + else: + del self._attributes['class'] + return enabled + + +class HtmlMixin(object): + + def set(self, key, value=None): + """set(self, key, value=None) + + Sets an element attribute. If no value is provided, or if the value is None, + creates a 'boolean' attribute without value, e.g. "
" + for ``form.set('novalidate')``. + """ + super(HtmlElement, self).set(key, value) + + @property + def classes(self): + """ + A set-like wrapper around the 'class' attribute. + """ + return Classes(self.attrib) + + @classes.setter + def classes(self, classes): + assert isinstance(classes, Classes) # only allow "el.classes |= ..." etc. + value = classes._get_class_value() + if value: + self.set('class', value) + elif self.get('class') is not None: + del self.attrib['class'] + + @property + def base_url(self): + """ + Returns the base URL, given when the page was parsed. + + Use with ``urlparse.urljoin(el.base_url, href)`` to get + absolute URLs. + """ + return self.getroottree().docinfo.URL + + @property + def forms(self): + """ + Return a list of all the forms + """ + return _forms_xpath(self) + + @property + def body(self): + """ + Return the element. Can be called from a child element + to get the document's head. + """ + return self.xpath('//body|//x:body', namespaces={'x':XHTML_NAMESPACE})[0] + + @property + def head(self): + """ + Returns the element. Can be called from a child + element to get the document's head. + """ + return self.xpath('//head|//x:head', namespaces={'x':XHTML_NAMESPACE})[0] + + @property + def label(self): + """ + Get or set any
...``; returns a list of elements. + """ + rel = rel.lower() + return [el for el in _rel_links_xpath(self) + if el.get('rel').lower() == rel] + + def find_class(self, class_name): + """ + Find any elements with the given class name. + """ + return _class_xpath(self, class_name=class_name) + + def get_element_by_id(self, id, *default): + """ + Get the first element in a document with the given id. If none is + found, return the default argument if provided or raise KeyError + otherwise. + + Note that there can be more than one element with the same id, + and this isn't uncommon in HTML documents found in the wild. + Browsers return only the first match, and this function does + the same. + """ + try: + # FIXME: should this check for multiple matches? + # browsers just return the first one + return _id_xpath(self, id=id)[0] + except IndexError: + if default: + return default[0] + else: + raise KeyError(id) + + def text_content(self): + """ + Return the text content of the tag (and the text in any children). + """ + return _collect_string_content(self) + + def cssselect(self, expr, translator='html'): + """ + Run the CSS expression on this element and its children, + returning a list of the results. + + Equivalent to lxml.cssselect.CSSSelect(expr, translator='html')(self) + -- note that pre-compiling the expression can provide a substantial + speedup. + """ + # Do the import here to make the dependency optional. + from lxml.cssselect import CSSSelector + return CSSSelector(expr, translator=translator)(self) + + ######################################## + ## Link functions + ######################################## + + def make_links_absolute(self, base_url=None, resolve_base_href=True, + handle_failures=None): + """ + Make all links in the document absolute, given the + ``base_url`` for the document (the full URL where the document + came from), or if no ``base_url`` is given, then the ``.base_url`` + of the document. + + If ``resolve_base_href`` is true, then any ```` + tags in the document are used *and* removed from the document. + If it is false then any such tag is ignored. + + If ``handle_failures`` is None (default), a failure to process + a URL will abort the processing. If set to 'ignore', errors + are ignored. If set to 'discard', failing URLs will be removed. + """ + if base_url is None: + base_url = self.base_url + if base_url is None: + raise TypeError( + "No base_url given, and the document has no base_url") + if resolve_base_href: + self.resolve_base_href() + + if handle_failures == 'ignore': + def link_repl(href): + try: + return urljoin(base_url, href) + except ValueError: + return href + elif handle_failures == 'discard': + def link_repl(href): + try: + return urljoin(base_url, href) + except ValueError: + return None + elif handle_failures is None: + def link_repl(href): + return urljoin(base_url, href) + else: + raise ValueError( + "unexpected value for handle_failures: %r" % handle_failures) + + self.rewrite_links(link_repl) + + def resolve_base_href(self, handle_failures=None): + """ + Find any ```` tag in the document, and apply its + values to all links found in the document. Also remove the + tag once it has been applied. + + If ``handle_failures`` is None (default), a failure to process + a URL will abort the processing. If set to 'ignore', errors + are ignored. If set to 'discard', failing URLs will be removed. + """ + base_href = None + basetags = self.xpath('//base[@href]|//x:base[@href]', + namespaces={'x': XHTML_NAMESPACE}) + for b in basetags: + base_href = b.get('href') + b.drop_tree() + if not base_href: + return + self.make_links_absolute(base_href, resolve_base_href=False, + handle_failures=handle_failures) + + def iterlinks(self): + """ + Yield (element, attribute, link, pos), where attribute may be None + (indicating the link is in the text). ``pos`` is the position + where the link occurs; often 0, but sometimes something else in + the case of links in stylesheets or style tags. + + Note: is *not* taken into account in any way. The + link you get is exactly the link in the document. + + Note: multiple links inside of a single text string or + attribute value are returned in reversed order. This makes it + possible to replace or delete them from the text string value + based on their reported text positions. Otherwise, a + modification at one text position can change the positions of + links reported later on. + """ + link_attrs = defs.link_attrs + for el in self.iter(etree.Element): + attribs = el.attrib + tag = _nons(el.tag) + if tag == 'object': + codebase = None + ## tags have attributes that are relative to + ## codebase + if 'codebase' in attribs: + codebase = el.get('codebase') + yield (el, 'codebase', codebase, 0) + for attrib in ('classid', 'data'): + if attrib in attribs: + value = el.get(attrib) + if codebase is not None: + value = urljoin(codebase, value) + yield (el, attrib, value, 0) + if 'archive' in attribs: + for match in _archive_re.finditer(el.get('archive')): + value = match.group(0) + if codebase is not None: + value = urljoin(codebase, value) + yield (el, 'archive', value, match.start()) + else: + for attrib in link_attrs: + if attrib in attribs: + yield (el, attrib, attribs[attrib], 0) + if tag == 'meta': + http_equiv = attribs.get('http-equiv', '').lower() + if http_equiv == 'refresh': + content = attribs.get('content', '') + match = _parse_meta_refresh_url(content) + url = (match.group('url') if match else content).strip() + # unexpected content means the redirect won't work, but we might + # as well be permissive and return the entire string. + if url: + url, pos = _unquote_match( + url, match.start('url') if match else content.find(url)) + yield (el, 'content', url, pos) + elif tag == 'param': + valuetype = el.get('valuetype') or '' + if valuetype.lower() == 'ref': + ## FIXME: while it's fine we *find* this link, + ## according to the spec we aren't supposed to + ## actually change the value, including resolving + ## it. It can also still be a link, even if it + ## doesn't have a valuetype="ref" (which seems to be the norm) + ## http://www.w3.org/TR/html401/struct/objects.html#adef-valuetype + yield (el, 'value', el.get('value'), 0) + elif tag == 'style' and el.text: + urls = [ + # (start_pos, url) + _unquote_match(match.group(1), match.start(1))[::-1] + for match in _iter_css_urls(el.text) + ] + [ + (match.start(1), match.group(1)) + for match in _iter_css_imports(el.text) + ] + if urls: + # sort by start pos to bring both match sets back into order + # and reverse the list to report correct positions despite + # modifications + urls.sort(reverse=True) + for start, url in urls: + yield (el, None, url, start) + if 'style' in attribs: + urls = list(_iter_css_urls(attribs['style'])) + if urls: + # return in reversed order to simplify in-place modifications + for match in urls[::-1]: + url, start = _unquote_match(match.group(1), match.start(1)) + yield (el, 'style', url, start) + + def rewrite_links(self, link_repl_func, resolve_base_href=True, + base_href=None): + """ + Rewrite all the links in the document. For each link + ``link_repl_func(link)`` will be called, and the return value + will replace the old link. + + Note that links may not be absolute (unless you first called + ``make_links_absolute()``), and may be internal (e.g., + ``'#anchor'``). They can also be values like + ``'mailto:email'`` or ``'javascript:expr'``. + + If you give ``base_href`` then all links passed to + ``link_repl_func()`` will take that into account. + + If the ``link_repl_func`` returns None, the attribute or + tag text will be removed completely. + """ + if base_href is not None: + # FIXME: this can be done in one pass with a wrapper + # around link_repl_func + self.make_links_absolute( + base_href, resolve_base_href=resolve_base_href) + elif resolve_base_href: + self.resolve_base_href() + + for el, attrib, link, pos in self.iterlinks(): + new_link = link_repl_func(link.strip()) + if new_link == link: + continue + if new_link is None: + # Remove the attribute or element content + if attrib is None: + el.text = '' + else: + del el.attrib[attrib] + continue + + if attrib is None: + new = el.text[:pos] + new_link + el.text[pos+len(link):] + el.text = new + else: + cur = el.get(attrib) + if not pos and len(cur) == len(link): + new = new_link # most common case + else: + new = cur[:pos] + new_link + cur[pos+len(link):] + el.set(attrib, new) + + +class _MethodFunc(object): + """ + An object that represents a method on an element as a function; + the function takes either an element or an HTML string. It + returns whatever the function normally returns, or if the function + works in-place (and so returns None) it returns a serialized form + of the resulting document. + """ + def __init__(self, name, copy=False, source_class=HtmlMixin): + self.name = name + self.copy = copy + self.__doc__ = getattr(source_class, self.name).__doc__ + def __call__(self, doc, *args, **kw): + result_type = type(doc) + if isinstance(doc, basestring): + if 'copy' in kw: + raise TypeError( + "The keyword 'copy' can only be used with element inputs to %s, not a string input" % self.name) + doc = fromstring(doc, **kw) + else: + if 'copy' in kw: + make_a_copy = kw.pop('copy') + else: + make_a_copy = self.copy + if make_a_copy: + doc = copy.deepcopy(doc) + meth = getattr(doc, self.name) + result = meth(*args, **kw) + # FIXME: this None test is a bit sloppy + if result is None: + # Then return what we got in + return _transform_result(result_type, doc) + else: + return result + + +find_rel_links = _MethodFunc('find_rel_links', copy=False) +find_class = _MethodFunc('find_class', copy=False) +make_links_absolute = _MethodFunc('make_links_absolute', copy=True) +resolve_base_href = _MethodFunc('resolve_base_href', copy=True) +iterlinks = _MethodFunc('iterlinks', copy=False) +rewrite_links = _MethodFunc('rewrite_links', copy=True) + + +class HtmlComment(etree.CommentBase, HtmlMixin): + pass + + +class HtmlElement(etree.ElementBase, HtmlMixin): + # Override etree.ElementBase.cssselect() and set(), despite the MRO (FIXME: change base order?) + cssselect = HtmlMixin.cssselect + set = HtmlMixin.set + + +class HtmlProcessingInstruction(etree.PIBase, HtmlMixin): + pass + + +class HtmlEntity(etree.EntityBase, HtmlMixin): + pass + + +class HtmlElementClassLookup(etree.CustomElementClassLookup): + """A lookup scheme for HTML Element classes. + + To create a lookup instance with different Element classes, pass a tag + name mapping of Element classes in the ``classes`` keyword argument and/or + a tag name mapping of Mixin classes in the ``mixins`` keyword argument. + The special key '*' denotes a Mixin class that should be mixed into all + Element classes. + """ + _default_element_classes = {} + + def __init__(self, classes=None, mixins=None): + etree.CustomElementClassLookup.__init__(self) + if classes is None: + classes = self._default_element_classes.copy() + if mixins: + mixers = {} + for name, value in mixins: + if name == '*': + for n in classes.keys(): + mixers.setdefault(n, []).append(value) + else: + mixers.setdefault(name, []).append(value) + for name, mix_bases in mixers.items(): + cur = classes.get(name, HtmlElement) + bases = tuple(mix_bases + [cur]) + classes[name] = type(cur.__name__, bases, {}) + self._element_classes = classes + + def lookup(self, node_type, document, namespace, name): + if node_type == 'element': + return self._element_classes.get(name.lower(), HtmlElement) + elif node_type == 'comment': + return HtmlComment + elif node_type == 'PI': + return HtmlProcessingInstruction + elif node_type == 'entity': + return HtmlEntity + # Otherwise normal lookup + return None + + +################################################################################ +# parsing +################################################################################ + +_looks_like_full_html_unicode = re.compile( + unicode(r'^\s*<(?:html|!doctype)'), re.I).match +_looks_like_full_html_bytes = re.compile( + r'^\s*<(?:html|!doctype)'.encode('ascii'), re.I).match + + +def document_fromstring(html, parser=None, ensure_head_body=False, **kw): + if parser is None: + parser = html_parser + value = etree.fromstring(html, parser, **kw) + if value is None: + raise etree.ParserError( + "Document is empty") + if ensure_head_body and value.find('head') is None: + value.insert(0, Element('head')) + if ensure_head_body and value.find('body') is None: + value.append(Element('body')) + return value + + +def fragments_fromstring(html, no_leading_text=False, base_url=None, + parser=None, **kw): + """Parses several HTML elements, returning a list of elements. + + The first item in the list may be a string. + If no_leading_text is true, then it will be an error if there is + leading text, and it will always be a list of only elements. + + base_url will set the document's base_url attribute + (and the tree's docinfo.URL). + """ + if parser is None: + parser = html_parser + # FIXME: check what happens when you give html with a body, head, etc. + if isinstance(html, bytes): + if not _looks_like_full_html_bytes(html): + # can't use %-formatting in early Py3 versions + html = (''.encode('ascii') + html + + ''.encode('ascii')) + else: + if not _looks_like_full_html_unicode(html): + html = '%s' % html + doc = document_fromstring(html, parser=parser, base_url=base_url, **kw) + assert _nons(doc.tag) == 'html' + bodies = [e for e in doc if _nons(e.tag) == 'body'] + assert len(bodies) == 1, ("too many bodies: %r in %r" % (bodies, html)) + body = bodies[0] + elements = [] + if no_leading_text and body.text and body.text.strip(): + raise etree.ParserError( + "There is leading text: %r" % body.text) + if body.text and body.text.strip(): + elements.append(body.text) + elements.extend(body) + # FIXME: removing the reference to the parent artificial document + # would be nice + return elements + + +def fragment_fromstring(html, create_parent=False, base_url=None, + parser=None, **kw): + """ + Parses a single HTML element; it is an error if there is more than + one element, or if anything but whitespace precedes or follows the + element. + + If ``create_parent`` is true (or is a tag name) then a parent node + will be created to encapsulate the HTML in a single element. In this + case, leading or trailing text is also allowed, as are multiple elements + as result of the parsing. + + Passing a ``base_url`` will set the document's ``base_url`` attribute + (and the tree's docinfo.URL). + """ + if parser is None: + parser = html_parser + + accept_leading_text = bool(create_parent) + + elements = fragments_fromstring( + html, parser=parser, no_leading_text=not accept_leading_text, + base_url=base_url, **kw) + + if create_parent: + if not isinstance(create_parent, basestring): + create_parent = 'div' + new_root = Element(create_parent) + if elements: + if isinstance(elements[0], basestring): + new_root.text = elements[0] + del elements[0] + new_root.extend(elements) + return new_root + + if not elements: + raise etree.ParserError('No elements found') + if len(elements) > 1: + raise etree.ParserError( + "Multiple elements found (%s)" + % ', '.join([_element_name(e) for e in elements])) + el = elements[0] + if el.tail and el.tail.strip(): + raise etree.ParserError( + "Element followed by text: %r" % el.tail) + el.tail = None + return el + + +def fromstring(html, base_url=None, parser=None, **kw): + """ + Parse the html, returning a single element/document. + + This tries to minimally parse the chunk of text, without knowing if it + is a fragment or a document. + + base_url will set the document's base_url attribute (and the tree's docinfo.URL) + """ + if parser is None: + parser = html_parser + if isinstance(html, bytes): + is_full_html = _looks_like_full_html_bytes(html) + else: + is_full_html = _looks_like_full_html_unicode(html) + doc = document_fromstring(html, parser=parser, base_url=base_url, **kw) + if is_full_html: + return doc + # otherwise, lets parse it out... + bodies = doc.findall('body') + if not bodies: + bodies = doc.findall('{%s}body' % XHTML_NAMESPACE) + if bodies: + body = bodies[0] + if len(bodies) > 1: + # Somehow there are multiple bodies, which is bad, but just + # smash them into one body + for other_body in bodies[1:]: + if other_body.text: + if len(body): + body[-1].tail = (body[-1].tail or '') + other_body.text + else: + body.text = (body.text or '') + other_body.text + body.extend(other_body) + # We'll ignore tail + # I guess we are ignoring attributes too + other_body.drop_tree() + else: + body = None + heads = doc.findall('head') + if not heads: + heads = doc.findall('{%s}head' % XHTML_NAMESPACE) + if heads: + # Well, we have some sort of structure, so lets keep it all + head = heads[0] + if len(heads) > 1: + for other_head in heads[1:]: + head.extend(other_head) + # We don't care about text or tail in a head + other_head.drop_tree() + return doc + if body is None: + return doc + if (len(body) == 1 and (not body.text or not body.text.strip()) + and (not body[-1].tail or not body[-1].tail.strip())): + # The body has just one element, so it was probably a single + # element passed in + return body[0] + # Now we have a body which represents a bunch of tags which have the + # content that was passed in. We will create a fake container, which + # is the body tag, except implies too much structure. + if _contains_block_level_tag(body): + body.tag = 'div' + else: + body.tag = 'span' + return body + + +def parse(filename_or_url, parser=None, base_url=None, **kw): + """ + Parse a filename, URL, or file-like object into an HTML document + tree. Note: this returns a tree, not an element. Use + ``parse(...).getroot()`` to get the document root. + + You can override the base URL with the ``base_url`` keyword. This + is most useful when parsing from a file-like object. + """ + if parser is None: + parser = html_parser + return etree.parse(filename_or_url, parser, base_url=base_url, **kw) + + +def _contains_block_level_tag(el): + # FIXME: I could do this with XPath, but would that just be + # unnecessarily slow? + for el in el.iter(etree.Element): + if _nons(el.tag) in defs.block_tags: + return True + return False + + +def _element_name(el): + if isinstance(el, etree.CommentBase): + return 'comment' + elif isinstance(el, basestring): + return 'string' + else: + return _nons(el.tag) + + +################################################################################ +# form handling +################################################################################ + +class FormElement(HtmlElement): + """ + Represents a
element. + """ + + @property + def inputs(self): + """ + Returns an accessor for all the input elements in the form. + + See `InputGetter` for more information about the object. + """ + return InputGetter(self) + + @property + def fields(self): + """ + Dictionary-like object that represents all the fields in this + form. You can set values in this dictionary to effect the + form. + """ + return FieldsDict(self.inputs) + + @fields.setter + def fields(self, value): + fields = self.fields + prev_keys = fields.keys() + for key, value in value.items(): + if key in prev_keys: + prev_keys.remove(key) + fields[key] = value + for key in prev_keys: + if key is None: + # Case of an unnamed input; these aren't really + # expressed in form_values() anyway. + continue + fields[key] = None + + def _name(self): + if self.get('name'): + return self.get('name') + elif self.get('id'): + return '#' + self.get('id') + iter_tags = self.body.iter + forms = list(iter_tags('form')) + if not forms: + forms = list(iter_tags('{%s}form' % XHTML_NAMESPACE)) + return str(forms.index(self)) + + def form_values(self): + """ + Return a list of tuples of the field values for the form. + This is suitable to be passed to ``urllib.urlencode()``. + """ + results = [] + for el in self.inputs: + name = el.name + if not name or 'disabled' in el.attrib: + continue + tag = _nons(el.tag) + if tag == 'textarea': + results.append((name, el.value)) + elif tag == 'select': + value = el.value + if el.multiple: + for v in value: + results.append((name, v)) + elif value is not None: + results.append((name, el.value)) + else: + assert tag == 'input', ( + "Unexpected tag: %r" % el) + if el.checkable and not el.checked: + continue + if el.type in ('submit', 'image', 'reset', 'file'): + continue + value = el.value + if value is not None: + results.append((name, el.value)) + return results + + @property + def action(self): + """ + Get/set the form's ``action`` attribute. + """ + base_url = self.base_url + action = self.get('action') + if base_url and action is not None: + return urljoin(base_url, action) + else: + return action + + @action.setter + def action(self, value): + self.set('action', value) + + @action.deleter + def action(self): + attrib = self.attrib + if 'action' in attrib: + del attrib['action'] + + @property + def method(self): + """ + Get/set the form's method. Always returns a capitalized + string, and defaults to ``'GET'`` + """ + return self.get('method', 'GET').upper() + + @method.setter + def method(self, value): + self.set('method', value.upper()) + + +HtmlElementClassLookup._default_element_classes['form'] = FormElement + + +def submit_form(form, extra_values=None, open_http=None): + """ + Helper function to submit a form. Returns a file-like object, as from + ``urllib.urlopen()``. This object also has a ``.geturl()`` function, + which shows the URL if there were any redirects. + + You can use this like:: + + form = doc.forms[0] + form.inputs['foo'].value = 'bar' # etc + response = form.submit() + doc = parse(response) + doc.make_links_absolute(response.geturl()) + + To change the HTTP requester, pass a function as ``open_http`` keyword + argument that opens the URL for you. The function must have the following + signature:: + + open_http(method, URL, values) + + The action is one of 'GET' or 'POST', the URL is the target URL as a + string, and the values are a sequence of ``(name, value)`` tuples with the + form data. + """ + values = form.form_values() + if extra_values: + if hasattr(extra_values, 'items'): + extra_values = extra_values.items() + values.extend(extra_values) + if open_http is None: + open_http = open_http_urllib + if form.action: + url = form.action + else: + url = form.base_url + return open_http(form.method, url, values) + + +def open_http_urllib(method, url, values): + if not url: + raise ValueError("cannot submit, no URL provided") + ## FIXME: should test that it's not a relative URL or something + try: + from urllib import urlencode, urlopen + except ImportError: # Python 3 + from urllib.request import urlopen + from urllib.parse import urlencode + if method == 'GET': + if '?' in url: + url += '&' + else: + url += '?' + url += urlencode(values) + data = None + else: + data = urlencode(values) + if not isinstance(data, bytes): + data = data.encode('ASCII') + return urlopen(url, data) + + +class FieldsDict(MutableMapping): + + def __init__(self, inputs): + self.inputs = inputs + def __getitem__(self, item): + return self.inputs[item].value + def __setitem__(self, item, value): + self.inputs[item].value = value + def __delitem__(self, item): + raise KeyError( + "You cannot remove keys from ElementDict") + def keys(self): + return self.inputs.keys() + def __contains__(self, item): + return item in self.inputs + def __iter__(self): + return iter(self.inputs.keys()) + def __len__(self): + return len(self.inputs) + + def __repr__(self): + return '<%s for form %s>' % ( + self.__class__.__name__, + self.inputs.form._name()) + + +class InputGetter(object): + + """ + An accessor that represents all the input fields in a form. + + You can get fields by name from this, with + ``form.inputs['field_name']``. If there are a set of checkboxes + with the same name, they are returned as a list (a `CheckboxGroup` + which also allows value setting). Radio inputs are handled + similarly. Use ``.keys()`` and ``.items()`` to process all fields + in this way. + + You can also iterate over this to get all input elements. This + won't return the same thing as if you get all the names, as + checkboxes and radio elements are returned individually. + """ + + def __init__(self, form): + self.form = form + + def __repr__(self): + return '<%s for form %s>' % ( + self.__class__.__name__, + self.form._name()) + + ## FIXME: there should be more methods, and it's unclear if this is + ## a dictionary-like object or list-like object + + def __getitem__(self, name): + fields = [field for field in self if field.name == name] + if not fields: + raise KeyError("No input element with the name %r" % name) + + input_type = fields[0].get('type') + if input_type == 'radio' and len(fields) > 1: + group = RadioGroup(fields) + group.name = name + return group + elif input_type == 'checkbox' and len(fields) > 1: + group = CheckboxGroup(fields) + group.name = name + return group + else: + # I don't like throwing away elements like this + return fields[0] + + def __contains__(self, name): + for field in self: + if field.name == name: + return True + return False + + def keys(self): + """ + Returns all unique field names, in document order. + + :return: A list of all unique field names. + """ + names = [] + seen = {None} + for el in self: + name = el.name + if name not in seen: + names.append(name) + seen.add(name) + return names + + def items(self): + """ + Returns all fields with their names, similar to dict.items(). + + :return: A list of (name, field) tuples. + """ + items = [] + seen = set() + for el in self: + name = el.name + if name not in seen: + seen.add(name) + items.append((name, self[name])) + return items + + def __iter__(self): + return self.form.iter('select', 'input', 'textarea') + + def __len__(self): + return sum(1 for _ in self) + + +class InputMixin(object): + """ + Mix-in for all input elements (input, select, and textarea) + """ + @property + def name(self): + """ + Get/set the name of the element + """ + return self.get('name') + + @name.setter + def name(self, value): + self.set('name', value) + + @name.deleter + def name(self): + attrib = self.attrib + if 'name' in attrib: + del attrib['name'] + + def __repr__(self): + type_name = getattr(self, 'type', None) + if type_name: + type_name = ' type=%r' % type_name + else: + type_name = '' + return '<%s %x name=%r%s>' % ( + self.__class__.__name__, id(self), self.name, type_name) + + +class TextareaElement(InputMixin, HtmlElement): + """ + ``

G2_Ss1pDxyNX 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�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 z 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 KD7_PqL3tn^eh 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