From 5d3b2f218b57806efba5b99115aa21a90f863ceb Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Mar 2026 15:42:07 +0700 Subject: [PATCH] first commit --- DuckDuckGo.py | 42 + LICENSE | 674 ++ README.md | 21 + Results.txt | 0 __pycache__/DuckDuckGo.cpython-38.pyc | Bin 0 -> 900 bytes app.py | 19 + .../MarkupSafe-2.1.5.dist-info/INSTALLER | 1 + .../MarkupSafe-2.1.5.dist-info/LICENSE.rst | 28 + .../MarkupSafe-2.1.5.dist-info/METADATA | 93 + .../MarkupSafe-2.1.5.dist-info/RECORD | 14 + .../MarkupSafe-2.1.5.dist-info/WHEEL | 5 + .../MarkupSafe-2.1.5.dist-info/top_level.txt | 1 + .../PySocks-1.7.1.dist-info/INSTALLER | 1 + .../PySocks-1.7.1.dist-info/LICENSE | 22 + .../PySocks-1.7.1.dist-info/METADATA | 321 + .../PySocks-1.7.1.dist-info/RECORD | 10 + .../PySocks-1.7.1.dist-info/WHEEL | 5 + .../PySocks-1.7.1.dist-info/top_level.txt | 2 + .../__pycache__/easy_install.cpython-38.pyc | Bin 0 -> 314 bytes .../__pycache__/socks.cpython-38.pyc | Bin 0 -> 21274 bytes .../__pycache__/sockshandler.cpython-38.pyc | Bin 0 -> 4255 bytes .../typing_extensions.cpython-38.pyc | Bin 0 -> 122526 bytes .../_cffi_backend.cp38-win_amd64.pyd | Bin 0 -> 177664 bytes myenv/Lib/site-packages/attr/__init__.py | 104 + myenv/Lib/site-packages/attr/__init__.pyi | 389 + .../attr/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2363 bytes .../attr/__pycache__/_cmp.cpython-38.pyc | Bin 0 -> 4005 bytes .../attr/__pycache__/_compat.cpython-38.pyc | Bin 0 -> 2419 bytes .../attr/__pycache__/_config.cpython-38.pyc | Bin 0 -> 999 bytes .../attr/__pycache__/_funcs.cpython-38.pyc | Bin 0 -> 10716 bytes .../attr/__pycache__/_make.cpython-38.pyc | Bin 0 -> 69462 bytes .../attr/__pycache__/_next_gen.cpython-38.pyc | Bin 0 -> 23497 bytes .../__pycache__/_version_info.cpython-38.pyc | Bin 0 -> 2316 bytes .../__pycache__/converters.cpython-38.pyc | Bin 0 -> 3725 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 3259 bytes .../attr/__pycache__/filters.cpython-38.pyc | Bin 0 -> 2353 bytes .../attr/__pycache__/setters.cpython-38.pyc | Bin 0 -> 1596 bytes .../__pycache__/validators.cpython-38.pyc | Bin 0 -> 20614 bytes myenv/Lib/site-packages/attr/_cmp.py | 160 + myenv/Lib/site-packages/attr/_cmp.pyi | 13 + myenv/Lib/site-packages/attr/_compat.py | 94 + myenv/Lib/site-packages/attr/_config.py | 31 + myenv/Lib/site-packages/attr/_funcs.py | 468 + myenv/Lib/site-packages/attr/_make.py | 3123 ++++++ myenv/Lib/site-packages/attr/_next_gen.py | 623 ++ .../Lib/site-packages/attr/_typing_compat.pyi | 15 + myenv/Lib/site-packages/attr/_version_info.py | 86 + .../Lib/site-packages/attr/_version_info.pyi | 9 + myenv/Lib/site-packages/attr/converters.py | 162 + myenv/Lib/site-packages/attr/converters.pyi | 19 + myenv/Lib/site-packages/attr/exceptions.py | 95 + myenv/Lib/site-packages/attr/exceptions.pyi | 17 + myenv/Lib/site-packages/attr/filters.py | 72 + myenv/Lib/site-packages/attr/filters.pyi | 6 + myenv/Lib/site-packages/attr/py.typed | 0 myenv/Lib/site-packages/attr/setters.py | 79 + myenv/Lib/site-packages/attr/setters.pyi | 20 + myenv/Lib/site-packages/attr/validators.py | 710 ++ myenv/Lib/site-packages/attr/validators.pyi | 86 + .../attrs-25.3.0.dist-info/INSTALLER | 1 + .../attrs-25.3.0.dist-info/METADATA | 232 + .../attrs-25.3.0.dist-info/RECORD | 55 + .../attrs-25.3.0.dist-info/WHEEL | 4 + .../attrs-25.3.0.dist-info/licenses/LICENSE | 21 + myenv/Lib/site-packages/attrs/__init__.py | 69 + myenv/Lib/site-packages/attrs/__init__.pyi | 263 + .../attrs/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1202 bytes .../__pycache__/converters.cpython-38.pyc | Bin 0 -> 203 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 203 bytes .../attrs/__pycache__/filters.cpython-38.pyc | Bin 0 -> 197 bytes .../attrs/__pycache__/setters.cpython-38.pyc | Bin 0 -> 197 bytes .../__pycache__/validators.cpython-38.pyc | Bin 0 -> 203 bytes myenv/Lib/site-packages/attrs/converters.py | 3 + myenv/Lib/site-packages/attrs/exceptions.py | 3 + myenv/Lib/site-packages/attrs/filters.py | 3 + myenv/Lib/site-packages/attrs/py.typed | 0 myenv/Lib/site-packages/attrs/setters.py | 3 + myenv/Lib/site-packages/attrs/validators.py | 3 + .../beautifulsoup4-4.14.3.dist-info/INSTALLER | 1 + .../beautifulsoup4-4.14.3.dist-info/METADATA | 123 + .../beautifulsoup4-4.14.3.dist-info/RECORD | 37 + .../beautifulsoup4-4.14.3.dist-info/WHEEL | 4 + .../licenses/AUTHORS | 49 + .../licenses/LICENSE | 31 + .../blinker-1.8.2.dist-info/INSTALLER | 1 + .../blinker-1.8.2.dist-info/LICENSE.txt | 20 + .../blinker-1.8.2.dist-info/METADATA | 60 + .../blinker-1.8.2.dist-info/RECORD | 12 + .../blinker-1.8.2.dist-info/WHEEL | 4 + myenv/Lib/site-packages/blinker/__init__.py | 60 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1513 bytes .../__pycache__/_utilities.cpython-38.pyc | Bin 0 -> 2100 bytes .../blinker/__pycache__/base.cpython-38.pyc | Bin 0 -> 20074 bytes myenv/Lib/site-packages/blinker/_utilities.py | 64 + myenv/Lib/site-packages/blinker/base.py | 621 ++ myenv/Lib/site-packages/blinker/py.typed | 0 myenv/Lib/site-packages/bs4/__init__.py | 1174 +++ .../bs4/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 28683 bytes .../__pycache__/_deprecation.cpython-38.pyc | Bin 0 -> 2748 bytes .../bs4/__pycache__/_typing.cpython-38.pyc | Bin 0 -> 3071 bytes .../bs4/__pycache__/_warnings.cpython-38.pyc | Bin 0 -> 5374 bytes .../bs4/__pycache__/css.cpython-38.pyc | Bin 0 -> 12248 bytes .../bs4/__pycache__/dammit.cpython-38.pyc | Bin 0 -> 33688 bytes .../bs4/__pycache__/diagnose.cpython-38.pyc | Bin 0 -> 8735 bytes .../bs4/__pycache__/element.cpython-38.pyc | Bin 0 -> 86635 bytes .../bs4/__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 1503 bytes .../bs4/__pycache__/filter.cpython-38.pyc | Bin 0 -> 21720 bytes .../bs4/__pycache__/formatter.cpython-38.pyc | Bin 0 -> 8409 bytes myenv/Lib/site-packages/bs4/_deprecation.py | 80 + myenv/Lib/site-packages/bs4/_typing.py | 205 + myenv/Lib/site-packages/bs4/_warnings.py | 98 + .../Lib/site-packages/bs4/builder/__init__.py | 848 ++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 22603 bytes .../__pycache__/_html5lib.cpython-38.pyc | Bin 0 -> 15491 bytes .../__pycache__/_htmlparser.cpython-38.pyc | Bin 0 -> 10572 bytes .../builder/__pycache__/_lxml.cpython-38.pyc | Bin 0 -> 12492 bytes .../site-packages/bs4/builder/_html5lib.py | 611 ++ .../site-packages/bs4/builder/_htmlparser.py | 462 + myenv/Lib/site-packages/bs4/builder/_lxml.py | 501 + myenv/Lib/site-packages/bs4/css.py | 339 + myenv/Lib/site-packages/bs4/dammit.py | 1516 +++ myenv/Lib/site-packages/bs4/diagnose.py | 268 + myenv/Lib/site-packages/bs4/element.py | 3211 ++++++ myenv/Lib/site-packages/bs4/exceptions.py | 28 + myenv/Lib/site-packages/bs4/filter.py | 764 ++ myenv/Lib/site-packages/bs4/formatter.py | 276 + myenv/Lib/site-packages/bs4/py.typed | 0 .../certifi-2026.2.25.dist-info/INSTALLER | 1 + .../certifi-2026.2.25.dist-info/METADATA | 78 + .../certifi-2026.2.25.dist-info/RECORD | 14 + .../certifi-2026.2.25.dist-info/WHEEL | 5 + .../licenses/LICENSE | 20 + .../certifi-2026.2.25.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/certifi/__init__.py | 4 + myenv/Lib/site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 286 bytes .../__pycache__/__main__.cpython-38.pyc | Bin 0 -> 422 bytes .../certifi/__pycache__/core.cpython-38.pyc | Bin 0 -> 1395 bytes myenv/Lib/site-packages/certifi/cacert.pem | 4494 +++++++++ myenv/Lib/site-packages/certifi/core.py | 83 + myenv/Lib/site-packages/certifi/py.typed | 0 .../cffi-1.17.1.dist-info/INSTALLER | 1 + .../cffi-1.17.1.dist-info/LICENSE | 26 + .../cffi-1.17.1.dist-info/METADATA | 40 + .../cffi-1.17.1.dist-info/RECORD | 48 + .../site-packages/cffi-1.17.1.dist-info/WHEEL | 5 + .../cffi-1.17.1.dist-info/entry_points.txt | 2 + .../cffi-1.17.1.dist-info/top_level.txt | 2 + myenv/Lib/site-packages/cffi/__init__.py | 14 + .../cffi/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 516 bytes .../__pycache__/_imp_emulation.cpython-38.pyc | Bin 0 -> 2518 bytes .../_shimmed_dist_utils.cpython-38.pyc | Bin 0 -> 1718 bytes .../cffi/__pycache__/api.cpython-38.pyc | Bin 0 -> 34191 bytes .../__pycache__/backend_ctypes.cpython-38.pyc | Bin 0 -> 40046 bytes .../__pycache__/cffi_opcode.cpython-38.pyc | Bin 0 -> 4774 bytes .../__pycache__/commontypes.cpython-38.pyc | Bin 0 -> 2005 bytes .../cffi/__pycache__/cparser.cpython-38.pyc | Bin 0 -> 24044 bytes .../cffi/__pycache__/error.cpython-38.pyc | Bin 0 -> 1511 bytes .../__pycache__/ffiplatform.cpython-38.pyc | Bin 0 -> 3251 bytes .../cffi/__pycache__/lock.cpython-38.pyc | Bin 0 -> 410 bytes .../cffi/__pycache__/model.cpython-38.pyc | Bin 0 -> 19803 bytes .../cffi/__pycache__/pkgconfig.cpython-38.pyc | Bin 0 -> 5184 bytes .../__pycache__/recompiler.cpython-38.pyc | Bin 0 -> 47344 bytes .../__pycache__/setuptools_ext.cpython-38.pyc | Bin 0 -> 7208 bytes .../__pycache__/vengine_cpy.cpython-38.pyc | Bin 0 -> 35907 bytes .../__pycache__/vengine_gen.cpython-38.pyc | Bin 0 -> 21313 bytes .../cffi/__pycache__/verifier.cpython-38.pyc | Bin 0 -> 9206 bytes myenv/Lib/site-packages/cffi/_cffi_errors.h | 149 + myenv/Lib/site-packages/cffi/_cffi_include.h | 389 + myenv/Lib/site-packages/cffi/_embedding.h | 550 + .../Lib/site-packages/cffi/_imp_emulation.py | 83 + .../site-packages/cffi/_shimmed_dist_utils.py | 45 + myenv/Lib/site-packages/cffi/api.py | 967 ++ .../Lib/site-packages/cffi/backend_ctypes.py | 1121 +++ myenv/Lib/site-packages/cffi/cffi_opcode.py | 187 + myenv/Lib/site-packages/cffi/commontypes.py | 82 + myenv/Lib/site-packages/cffi/cparser.py | 1015 ++ myenv/Lib/site-packages/cffi/error.py | 31 + myenv/Lib/site-packages/cffi/ffiplatform.py | 113 + myenv/Lib/site-packages/cffi/lock.py | 30 + myenv/Lib/site-packages/cffi/model.py | 618 ++ myenv/Lib/site-packages/cffi/parse_c_type.h | 181 + myenv/Lib/site-packages/cffi/pkgconfig.py | 121 + myenv/Lib/site-packages/cffi/recompiler.py | 1598 +++ .../Lib/site-packages/cffi/setuptools_ext.py | 216 + myenv/Lib/site-packages/cffi/vengine_cpy.py | 1084 ++ myenv/Lib/site-packages/cffi/vengine_gen.py | 679 ++ myenv/Lib/site-packages/cffi/verifier.py | 306 + .../INSTALLER | 1 + .../LICENSE | 21 + .../METADATA | 763 ++ .../charset_normalizer-3.4.4.dist-info/RECORD | 35 + .../charset_normalizer-3.4.4.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 48 + .../charset_normalizer/__main__.py | 6 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1639 bytes .../__pycache__/__main__.cpython-38.pyc | Bin 0 -> 322 bytes .../__pycache__/api.cpython-38.pyc | Bin 0 -> 11646 bytes .../__pycache__/cd.cpython-38.pyc | Bin 0 -> 9666 bytes .../__pycache__/constant.cpython-38.pyc | Bin 0 -> 31807 bytes .../__pycache__/legacy.cpython-38.pyc | Bin 0 -> 2279 bytes .../__pycache__/md.cpython-38.pyc | Bin 0 -> 16856 bytes .../__pycache__/models.cpython-38.pyc | Bin 0 -> 11997 bytes .../__pycache__/utils.cpython-38.pyc | Bin 0 -> 9153 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 330 bytes .../site-packages/charset_normalizer/api.py | 669 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 8 + .../charset_normalizer/cli/__main__.py | 381 + .../cli/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 331 bytes .../cli/__pycache__/__main__.cpython-38.pyc | Bin 0 -> 9288 bytes .../charset_normalizer/constant.py | 2015 ++++ .../charset_normalizer/legacy.py | 80 + .../charset_normalizer/md.cp38-win_amd64.pyd | Bin 0 -> 10752 bytes .../site-packages/charset_normalizer/md.py | 635 ++ .../md__mypyc.cp38-win_amd64.pyd | Bin 0 -> 121856 bytes .../charset_normalizer/models.py | 360 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 414 + .../charset_normalizer/version.py | 8 + .../click-8.1.8.dist-info/INSTALLER | 1 + .../click-8.1.8.dist-info/LICENSE.txt | 28 + .../click-8.1.8.dist-info/METADATA | 74 + .../click-8.1.8.dist-info/RECORD | 38 + .../site-packages/click-8.1.8.dist-info/WHEEL | 4 + myenv/Lib/site-packages/click/__init__.py | 75 + .../click/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2646 bytes .../click/__pycache__/_compat.cpython-38.pyc | Bin 0 -> 16048 bytes .../__pycache__/_termui_impl.cpython-38.pyc | Bin 0 -> 16267 bytes .../__pycache__/_textwrap.cpython-38.pyc | Bin 0 -> 1513 bytes .../__pycache__/_winconsole.cpython-38.pyc | Bin 0 -> 7794 bytes .../click/__pycache__/core.cpython-38.pyc | Bin 0 -> 90639 bytes .../__pycache__/decorators.cpython-38.pyc | Bin 0 -> 17500 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 10303 bytes .../__pycache__/formatting.cpython-38.pyc | Bin 0 -> 9394 bytes .../click/__pycache__/globals.cpython-38.pyc | Bin 0 -> 2418 bytes .../click/__pycache__/parser.cpython-38.pyc | Bin 0 -> 13629 bytes .../shell_completion.cpython-38.pyc | Bin 0 -> 17102 bytes .../click/__pycache__/termui.cpython-38.pyc | Bin 0 -> 25865 bytes .../click/__pycache__/testing.cpython-38.pyc | Bin 0 -> 14963 bytes .../click/__pycache__/types.cpython-38.pyc | Bin 0 -> 33638 bytes .../click/__pycache__/utils.cpython-38.pyc | Bin 0 -> 18799 bytes myenv/Lib/site-packages/click/_compat.py | 623 ++ myenv/Lib/site-packages/click/_termui_impl.py | 788 ++ myenv/Lib/site-packages/click/_textwrap.py | 49 + myenv/Lib/site-packages/click/_winconsole.py | 279 + myenv/Lib/site-packages/click/core.py | 3047 ++++++ myenv/Lib/site-packages/click/decorators.py | 562 ++ myenv/Lib/site-packages/click/exceptions.py | 296 + myenv/Lib/site-packages/click/formatting.py | 301 + myenv/Lib/site-packages/click/globals.py | 67 + myenv/Lib/site-packages/click/parser.py | 531 + myenv/Lib/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 603 ++ myenv/Lib/site-packages/click/termui.py | 784 ++ myenv/Lib/site-packages/click/testing.py | 483 + myenv/Lib/site-packages/click/types.py | 1093 ++ myenv/Lib/site-packages/click/utils.py | 624 ++ .../colorama-0.4.6.dist-info/INSTALLER | 1 + .../colorama-0.4.6.dist-info/METADATA | 441 + .../colorama-0.4.6.dist-info/RECORD | 31 + .../colorama-0.4.6.dist-info/WHEEL | 5 + .../licenses/LICENSE.txt | 27 + myenv/Lib/site-packages/colorama/__init__.py | 7 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 461 bytes .../colorama/__pycache__/ansi.cpython-38.pyc | Bin 0 -> 3211 bytes .../__pycache__/ansitowin32.cpython-38.pyc | Bin 0 -> 8369 bytes .../__pycache__/initialise.cpython-38.pyc | Bin 0 -> 2258 bytes .../colorama/__pycache__/win32.cpython-38.pyc | Bin 0 -> 4482 bytes .../__pycache__/winterm.cpython-38.pyc | Bin 0 -> 5251 bytes myenv/Lib/site-packages/colorama/ansi.py | 102 + .../Lib/site-packages/colorama/ansitowin32.py | 277 + .../Lib/site-packages/colorama/initialise.py | 121 + .../site-packages/colorama/tests/__init__.py | 1 + .../tests/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 181 bytes .../__pycache__/ansi_test.cpython-38.pyc | Bin 0 -> 2541 bytes .../ansitowin32_test.cpython-38.pyc | Bin 0 -> 11398 bytes .../initialise_test.cpython-38.pyc | Bin 0 -> 6895 bytes .../__pycache__/isatty_test.cpython-38.pyc | Bin 0 -> 2574 bytes .../tests/__pycache__/utils.cpython-38.pyc | Bin 0 -> 1609 bytes .../__pycache__/winterm_test.cpython-38.pyc | Bin 0 -> 3318 bytes .../site-packages/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../colorama/tests/initialise_test.py | 189 + .../colorama/tests/isatty_test.py | 57 + .../Lib/site-packages/colorama/tests/utils.py | 49 + .../colorama/tests/winterm_test.py | 131 + myenv/Lib/site-packages/colorama/win32.py | 180 + myenv/Lib/site-packages/colorama/winterm.py | 195 + myenv/Lib/site-packages/easy_install.py | 5 + .../exceptiongroup-1.3.1.dist-info/INSTALLER | 1 + .../exceptiongroup-1.3.1.dist-info/METADATA | 159 + .../exceptiongroup-1.3.1.dist-info/RECORD | 18 + .../exceptiongroup-1.3.1.dist-info/WHEEL | 4 + .../licenses/LICENSE | 73 + .../site-packages/exceptiongroup/__init__.py | 46 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 907 bytes .../__pycache__/_catch.cpython-38.pyc | Bin 0 -> 3233 bytes .../__pycache__/_exceptions.cpython-38.pyc | Bin 0 -> 9939 bytes .../__pycache__/_formatting.cpython-38.pyc | Bin 0 -> 12025 bytes .../__pycache__/_suppress.cpython-38.pyc | Bin 0 -> 1530 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 660 bytes .../site-packages/exceptiongroup/_catch.py | 138 + .../exceptiongroup/_exceptions.py | 336 + .../exceptiongroup/_formatting.py | 602 ++ .../site-packages/exceptiongroup/_suppress.py | 55 + .../site-packages/exceptiongroup/_version.py | 34 + .../Lib/site-packages/exceptiongroup/py.typed | 0 .../flask-3.0.3.dist-info/INSTALLER | 1 + .../flask-3.0.3.dist-info/LICENSE.txt | 28 + .../flask-3.0.3.dist-info/METADATA | 101 + .../flask-3.0.3.dist-info/RECORD | 57 + .../site-packages/flask-3.0.3.dist-info/WHEEL | 4 + .../flask-3.0.3.dist-info/entry_points.txt | 3 + myenv/Lib/site-packages/flask/__init__.py | 60 + myenv/Lib/site-packages/flask/__main__.py | 3 + .../flask/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2274 bytes .../flask/__pycache__/__main__.cpython-38.pyc | Bin 0 -> 209 bytes .../flask/__pycache__/app.cpython-38.pyc | Bin 0 -> 49226 bytes .../__pycache__/blueprints.cpython-38.pyc | Bin 0 -> 4004 bytes .../flask/__pycache__/cli.cpython-38.pyc | Bin 0 -> 28304 bytes .../flask/__pycache__/config.cpython-38.pyc | Bin 0 -> 13119 bytes .../flask/__pycache__/ctx.cpython-38.pyc | Bin 0 -> 14491 bytes .../__pycache__/debughelpers.cpython-38.pyc | Bin 0 -> 6490 bytes .../flask/__pycache__/globals.cpython-38.pyc | Bin 0 -> 1599 bytes .../flask/__pycache__/helpers.cpython-38.pyc | Bin 0 -> 21192 bytes .../flask/__pycache__/logging.cpython-38.pyc | Bin 0 -> 2508 bytes .../flask/__pycache__/sessions.cpython-38.pyc | Bin 0 -> 13498 bytes .../flask/__pycache__/signals.cpython-38.pyc | Bin 0 -> 807 bytes .../__pycache__/templating.cpython-38.pyc | Bin 0 -> 7010 bytes .../flask/__pycache__/testing.cpython-38.pyc | Bin 0 -> 9495 bytes .../flask/__pycache__/typing.cpython-38.pyc | Bin 0 -> 1831 bytes .../flask/__pycache__/views.cpython-38.pyc | Bin 0 -> 5451 bytes .../flask/__pycache__/wrappers.cpython-38.pyc | Bin 0 -> 5184 bytes myenv/Lib/site-packages/flask/app.py | 1498 +++ myenv/Lib/site-packages/flask/blueprints.py | 129 + myenv/Lib/site-packages/flask/cli.py | 1109 +++ myenv/Lib/site-packages/flask/config.py | 370 + myenv/Lib/site-packages/flask/ctx.py | 449 + myenv/Lib/site-packages/flask/debughelpers.py | 178 + myenv/Lib/site-packages/flask/globals.py | 51 + myenv/Lib/site-packages/flask/helpers.py | 621 ++ .../Lib/site-packages/flask/json/__init__.py | 170 + .../json/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 5927 bytes .../json/__pycache__/provider.cpython-38.pyc | Bin 0 -> 7545 bytes .../flask/json/__pycache__/tag.cpython-38.pyc | Bin 0 -> 11973 bytes .../Lib/site-packages/flask/json/provider.py | 215 + myenv/Lib/site-packages/flask/json/tag.py | 327 + myenv/Lib/site-packages/flask/logging.py | 79 + myenv/Lib/site-packages/flask/py.typed | 0 .../Lib/site-packages/flask/sansio/README.md | 6 + .../sansio/__pycache__/app.cpython-38.pyc | Bin 0 -> 28214 bytes .../__pycache__/blueprints.cpython-38.pyc | Bin 0 -> 22810 bytes .../__pycache__/scaffold.cpython-38.pyc | Bin 0 -> 23890 bytes myenv/Lib/site-packages/flask/sansio/app.py | 964 ++ .../site-packages/flask/sansio/blueprints.py | 632 ++ .../site-packages/flask/sansio/scaffold.py | 801 ++ myenv/Lib/site-packages/flask/sessions.py | 379 + myenv/Lib/site-packages/flask/signals.py | 17 + myenv/Lib/site-packages/flask/templating.py | 219 + myenv/Lib/site-packages/flask/testing.py | 298 + myenv/Lib/site-packages/flask/typing.py | 90 + myenv/Lib/site-packages/flask/views.py | 191 + myenv/Lib/site-packages/flask/wrappers.py | 174 + .../h11-0.16.0.dist-info/INSTALLER | 1 + .../h11-0.16.0.dist-info/METADATA | 202 + .../site-packages/h11-0.16.0.dist-info/RECORD | 29 + .../site-packages/h11-0.16.0.dist-info/WHEEL | 5 + .../h11-0.16.0.dist-info/licenses/LICENSE.txt | 22 + .../h11-0.16.0.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/h11/__init__.py | 62 + .../h11/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 994 bytes .../h11/__pycache__/_abnf.cpython-38.pyc | Bin 0 -> 1181 bytes .../__pycache__/_connection.cpython-38.pyc | Bin 0 -> 16315 bytes .../h11/__pycache__/_events.cpython-38.pyc | Bin 0 -> 10136 bytes .../h11/__pycache__/_headers.cpython-38.pyc | Bin 0 -> 5691 bytes .../h11/__pycache__/_readers.cpython-38.pyc | Bin 0 -> 6360 bytes .../__pycache__/_receivebuffer.cpython-38.pyc | Bin 0 -> 3213 bytes .../h11/__pycache__/_state.cpython-38.pyc | Bin 0 -> 5819 bytes .../h11/__pycache__/_util.cpython-38.pyc | Bin 0 -> 3815 bytes .../h11/__pycache__/_version.cpython-38.pyc | Bin 0 -> 187 bytes .../h11/__pycache__/_writers.cpython-38.pyc | Bin 0 -> 4537 bytes myenv/Lib/site-packages/h11/_abnf.py | 132 + myenv/Lib/site-packages/h11/_connection.py | 659 ++ myenv/Lib/site-packages/h11/_events.py | 369 + myenv/Lib/site-packages/h11/_headers.py | 282 + myenv/Lib/site-packages/h11/_readers.py | 250 + myenv/Lib/site-packages/h11/_receivebuffer.py | 153 + myenv/Lib/site-packages/h11/_state.py | 365 + myenv/Lib/site-packages/h11/_util.py | 135 + myenv/Lib/site-packages/h11/_version.py | 16 + myenv/Lib/site-packages/h11/_writers.py | 145 + myenv/Lib/site-packages/h11/py.typed | 1 + .../idna-3.11.dist-info/INSTALLER | 1 + .../idna-3.11.dist-info/METADATA | 209 + .../site-packages/idna-3.11.dist-info/RECORD | 22 + .../site-packages/idna-3.11.dist-info/WHEEL | 4 + .../idna-3.11.dist-info/licenses/LICENSE.md | 31 + myenv/Lib/site-packages/idna/__init__.py | 45 + .../idna/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 905 bytes .../idna/__pycache__/codec.cpython-38.pyc | Bin 0 -> 3294 bytes .../idna/__pycache__/compat.cpython-38.pyc | Bin 0 -> 753 bytes .../idna/__pycache__/core.cpython-38.pyc | Bin 0 -> 9876 bytes .../idna/__pycache__/idnadata.cpython-38.pyc | Bin 0 -> 42764 bytes .../idna/__pycache__/intranges.cpython-38.pyc | Bin 0 -> 1976 bytes .../__pycache__/package_data.cpython-38.pyc | Bin 0 -> 191 bytes .../idna/__pycache__/uts46data.cpython-38.pyc | Bin 0 -> 188819 bytes myenv/Lib/site-packages/idna/codec.py | 122 + myenv/Lib/site-packages/idna/compat.py | 15 + myenv/Lib/site-packages/idna/core.py | 437 + myenv/Lib/site-packages/idna/idnadata.py | 4309 ++++++++ myenv/Lib/site-packages/idna/intranges.py | 57 + myenv/Lib/site-packages/idna/package_data.py | 1 + myenv/Lib/site-packages/idna/py.typed | 0 myenv/Lib/site-packages/idna/uts46data.py | 8841 +++++++++++++++++ .../INSTALLER | 1 + .../LICENSE | 202 + .../METADATA | 133 + .../importlib_metadata-8.5.0.dist-info/RECORD | 31 + .../importlib_metadata-8.5.0.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../importlib_metadata/__init__.py | 1132 +++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 41882 bytes .../__pycache__/_adapters.cpython-38.pyc | Bin 0 -> 2913 bytes .../__pycache__/_collections.cpython-38.pyc | Bin 0 -> 1565 bytes .../__pycache__/_compat.cpython-38.pyc | Bin 0 -> 1903 bytes .../__pycache__/_functools.cpython-38.pyc | Bin 0 -> 3145 bytes .../__pycache__/_itertools.cpython-38.pyc | Bin 0 -> 5038 bytes .../__pycache__/_meta.cpython-38.pyc | Bin 0 -> 3243 bytes .../__pycache__/_text.cpython-38.pyc | Bin 0 -> 3098 bytes .../__pycache__/diagnose.cpython-38.pyc | Bin 0 -> 853 bytes .../importlib_metadata/_adapters.py | 83 + .../importlib_metadata/_collections.py | 30 + .../importlib_metadata/_compat.py | 56 + .../importlib_metadata/_functools.py | 104 + .../importlib_metadata/_itertools.py | 171 + .../site-packages/importlib_metadata/_meta.py | 75 + .../site-packages/importlib_metadata/_text.py | 99 + .../importlib_metadata/compat/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 202 bytes .../compat/__pycache__/py311.cpython-38.pyc | Bin 0 -> 1038 bytes .../compat/__pycache__/py39.cpython-38.pyc | Bin 0 -> 1197 bytes .../importlib_metadata/compat/py311.py | 22 + .../importlib_metadata/compat/py39.py | 36 + .../importlib_metadata/diagnose.py | 21 + .../site-packages/importlib_metadata/py.typed | 0 .../itsdangerous-2.2.0.dist-info/INSTALLER | 1 + .../itsdangerous-2.2.0.dist-info/LICENSE.txt | 28 + .../itsdangerous-2.2.0.dist-info/METADATA | 60 + .../itsdangerous-2.2.0.dist-info/RECORD | 22 + .../itsdangerous-2.2.0.dist-info/WHEEL | 4 + .../site-packages/itsdangerous/__init__.py | 38 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1455 bytes .../__pycache__/_json.cpython-38.pyc | Bin 0 -> 946 bytes .../__pycache__/encoding.cpython-38.pyc | Bin 0 -> 1893 bytes .../__pycache__/exc.cpython-38.pyc | Bin 0 -> 3337 bytes .../__pycache__/serializer.cpython-38.pyc | Bin 0 -> 11344 bytes .../__pycache__/signer.cpython-38.pyc | Bin 0 -> 8828 bytes .../__pycache__/timed.cpython-38.pyc | Bin 0 -> 6409 bytes .../__pycache__/url_safe.cpython-38.pyc | Bin 0 -> 2837 bytes myenv/Lib/site-packages/itsdangerous/_json.py | 18 + .../site-packages/itsdangerous/encoding.py | 54 + myenv/Lib/site-packages/itsdangerous/exc.py | 106 + myenv/Lib/site-packages/itsdangerous/py.typed | 0 .../site-packages/itsdangerous/serializer.py | 406 + .../Lib/site-packages/itsdangerous/signer.py | 266 + myenv/Lib/site-packages/itsdangerous/timed.py | 228 + .../site-packages/itsdangerous/url_safe.py | 83 + .../jinja2-3.1.6.dist-info/INSTALLER | 1 + .../jinja2-3.1.6.dist-info/METADATA | 84 + .../jinja2-3.1.6.dist-info/RECORD | 57 + .../jinja2-3.1.6.dist-info/WHEEL | 4 + .../jinja2-3.1.6.dist-info/entry_points.txt | 3 + .../licenses/LICENSE.txt | 28 + myenv/Lib/site-packages/jinja2/__init__.py | 38 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1599 bytes .../__pycache__/_identifier.cpython-38.pyc | Bin 0 -> 2074 bytes .../__pycache__/async_utils.cpython-38.pyc | Bin 0 -> 3400 bytes .../jinja2/__pycache__/bccache.cpython-38.pyc | Bin 0 -> 13885 bytes .../__pycache__/compiler.cpython-38.pyc | Bin 0 -> 54929 bytes .../__pycache__/constants.cpython-38.pyc | Bin 0 -> 1535 bytes .../jinja2/__pycache__/debug.cpython-38.pyc | Bin 0 -> 3993 bytes .../__pycache__/defaults.cpython-38.pyc | Bin 0 -> 1337 bytes .../__pycache__/environment.cpython-38.pyc | Bin 0 -> 53217 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 5578 bytes .../jinja2/__pycache__/ext.cpython-38.pyc | Bin 0 -> 25720 bytes .../jinja2/__pycache__/filters.cpython-38.pyc | Bin 0 -> 51521 bytes .../__pycache__/idtracking.cpython-38.pyc | Bin 0 -> 11062 bytes .../jinja2/__pycache__/lexer.cpython-38.pyc | Bin 0 -> 20326 bytes .../jinja2/__pycache__/loaders.cpython-38.pyc | Bin 0 -> 21172 bytes .../jinja2/__pycache__/meta.cpython-38.pyc | Bin 0 -> 3795 bytes .../__pycache__/nativetypes.cpython-38.pyc | Bin 0 -> 4979 bytes .../jinja2/__pycache__/nodes.cpython-38.pyc | Bin 0 -> 40898 bytes .../__pycache__/optimizer.cpython-38.pyc | Bin 0 -> 1924 bytes .../jinja2/__pycache__/parser.cpython-38.pyc | Bin 0 -> 27962 bytes .../jinja2/__pycache__/runtime.cpython-38.pyc | Bin 0 -> 32423 bytes .../jinja2/__pycache__/sandbox.cpython-38.pyc | Bin 0 -> 12196 bytes .../jinja2/__pycache__/tests.cpython-38.pyc | Bin 0 -> 6577 bytes .../jinja2/__pycache__/utils.cpython-38.pyc | Bin 0 -> 24827 bytes .../jinja2/__pycache__/visitor.cpython-38.pyc | Bin 0 -> 3880 bytes myenv/Lib/site-packages/jinja2/_identifier.py | 6 + myenv/Lib/site-packages/jinja2/async_utils.py | 99 + myenv/Lib/site-packages/jinja2/bccache.py | 408 + myenv/Lib/site-packages/jinja2/compiler.py | 1998 ++++ myenv/Lib/site-packages/jinja2/constants.py | 20 + myenv/Lib/site-packages/jinja2/debug.py | 191 + myenv/Lib/site-packages/jinja2/defaults.py | 48 + myenv/Lib/site-packages/jinja2/environment.py | 1672 ++++ myenv/Lib/site-packages/jinja2/exceptions.py | 166 + myenv/Lib/site-packages/jinja2/ext.py | 870 ++ myenv/Lib/site-packages/jinja2/filters.py | 1873 ++++ myenv/Lib/site-packages/jinja2/idtracking.py | 318 + myenv/Lib/site-packages/jinja2/lexer.py | 868 ++ myenv/Lib/site-packages/jinja2/loaders.py | 693 ++ myenv/Lib/site-packages/jinja2/meta.py | 112 + myenv/Lib/site-packages/jinja2/nativetypes.py | 130 + myenv/Lib/site-packages/jinja2/nodes.py | 1206 +++ myenv/Lib/site-packages/jinja2/optimizer.py | 48 + myenv/Lib/site-packages/jinja2/parser.py | 1049 ++ myenv/Lib/site-packages/jinja2/py.typed | 0 myenv/Lib/site-packages/jinja2/runtime.py | 1062 ++ myenv/Lib/site-packages/jinja2/sandbox.py | 436 + myenv/Lib/site-packages/jinja2/tests.py | 256 + myenv/Lib/site-packages/jinja2/utils.py | 766 ++ myenv/Lib/site-packages/jinja2/visitor.py | 92 + .../Lib/site-packages/markupsafe/__init__.py | 332 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 11456 bytes .../__pycache__/_native.cpython-38.pyc | Bin 0 -> 2019 bytes myenv/Lib/site-packages/markupsafe/_native.py | 63 + .../Lib/site-packages/markupsafe/_speedups.c | 320 + .../markupsafe/_speedups.cp38-win_amd64.pyd | Bin 0 -> 15872 bytes .../site-packages/markupsafe/_speedups.pyi | 9 + myenv/Lib/site-packages/markupsafe/py.typed | 0 .../outcome-1.3.0.post0.dist-info/INSTALLER | 1 + .../outcome-1.3.0.post0.dist-info/LICENSE | 3 + .../LICENSE.APACHE2 | 202 + .../outcome-1.3.0.post0.dist-info/LICENSE.MIT | 20 + .../outcome-1.3.0.post0.dist-info/METADATA | 63 + .../outcome-1.3.0.post0.dist-info/RECORD | 17 + .../outcome-1.3.0.post0.dist-info/WHEEL | 6 + .../top_level.txt | 1 + myenv/Lib/site-packages/outcome/__init__.py | 20 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 553 bytes .../outcome/__pycache__/_impl.cpython-38.pyc | Bin 0 -> 6573 bytes .../outcome/__pycache__/_util.cpython-38.pyc | Bin 0 -> 1399 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 348 bytes myenv/Lib/site-packages/outcome/_impl.py | 239 + myenv/Lib/site-packages/outcome/_util.py | 33 + myenv/Lib/site-packages/outcome/_version.py | 7 + myenv/Lib/site-packages/outcome/py.typed | 0 .../pip-19.2.3.dist-info/INSTALLER | 1 + .../pip-19.2.3.dist-info/LICENSE.txt | 20 + .../pip-19.2.3.dist-info/METADATA | 81 + .../site-packages/pip-19.2.3.dist-info/RECORD | 668 ++ .../site-packages/pip-19.2.3.dist-info/WHEEL | 6 + .../pip-19.2.3.dist-info/entry_points.txt | 5 + .../pip-19.2.3.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/pip/__init__.py | 1 + myenv/Lib/site-packages/pip/__main__.py | 19 + .../pip/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 187 bytes .../pip/__pycache__/__main__.cpython-38.pyc | Bin 0 -> 439 bytes .../site-packages/pip/_internal/__init__.py | 77 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1732 bytes .../__pycache__/build_env.cpython-38.pyc | Bin 0 -> 7508 bytes .../__pycache__/cache.cpython-38.pyc | Bin 0 -> 7120 bytes .../__pycache__/configuration.cpython-38.pyc | Bin 0 -> 10671 bytes .../__pycache__/download.cpython-38.pyc | Bin 0 -> 25958 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 12519 bytes .../__pycache__/index.cpython-38.pyc | Bin 0 -> 37759 bytes .../__pycache__/legacy_resolve.cpython-38.pyc | Bin 0 -> 10578 bytes .../__pycache__/locations.cpython-38.pyc | Bin 0 -> 2967 bytes .../__pycache__/pep425tags.cpython-38.pyc | Bin 0 -> 8366 bytes .../__pycache__/pyproject.cpython-38.pyc | Bin 0 -> 3193 bytes .../__pycache__/wheel.cpython-38.pyc | Bin 0 -> 27519 bytes .../site-packages/pip/_internal/build_env.py | 218 + .../Lib/site-packages/pip/_internal/cache.py | 224 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 262 bytes .../__pycache__/autocompletion.cpython-38.pyc | Bin 0 -> 5120 bytes .../__pycache__/base_command.cpython-38.pyc | Bin 0 -> 8295 bytes .../cli/__pycache__/cmdoptions.cpython-38.pyc | Bin 0 -> 20037 bytes .../__pycache__/main_parser.cpython-38.pyc | Bin 0 -> 2200 bytes .../cli/__pycache__/parser.cpython-38.pyc | Bin 0 -> 9003 bytes .../__pycache__/status_codes.cpython-38.pyc | Bin 0 -> 391 bytes .../pip/_internal/cli/autocompletion.py | 152 + .../pip/_internal/cli/base_command.py | 346 + .../pip/_internal/cli/cmdoptions.py | 931 ++ .../pip/_internal/cli/main_parser.py | 98 + .../site-packages/pip/_internal/cli/parser.py | 261 + .../pip/_internal/cli/status_codes.py | 8 + .../pip/_internal/commands/__init__.py | 81 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2581 bytes .../commands/__pycache__/check.cpython-38.pyc | Bin 0 -> 1323 bytes .../__pycache__/completion.cpython-38.pyc | Bin 0 -> 3102 bytes .../__pycache__/configuration.cpython-38.pyc | Bin 0 -> 7166 bytes .../commands/__pycache__/debug.cpython-38.pyc | Bin 0 -> 3374 bytes .../__pycache__/download.cpython-38.pyc | Bin 0 -> 4728 bytes .../__pycache__/freeze.cpython-38.pyc | Bin 0 -> 3021 bytes .../commands/__pycache__/hash.cpython-38.pyc | Bin 0 -> 2071 bytes .../commands/__pycache__/help.cpython-38.pyc | Bin 0 -> 1242 bytes .../__pycache__/install.cpython-38.pyc | Bin 0 -> 13069 bytes .../commands/__pycache__/list.cpython-38.pyc | Bin 0 -> 9010 bytes .../__pycache__/search.cpython-38.pyc | Bin 0 -> 4457 bytes .../commands/__pycache__/show.cpython-38.pyc | Bin 0 -> 5854 bytes .../__pycache__/uninstall.cpython-38.pyc | Bin 0 -> 2704 bytes .../commands/__pycache__/wheel.cpython-38.pyc | Bin 0 -> 4910 bytes .../pip/_internal/commands/check.py | 41 + .../pip/_internal/commands/completion.py | 94 + .../pip/_internal/commands/configuration.py | 258 + .../pip/_internal/commands/debug.py | 114 + .../pip/_internal/commands/download.py | 168 + .../pip/_internal/commands/freeze.py | 101 + .../pip/_internal/commands/hash.py | 57 + .../pip/_internal/commands/help.py | 37 + .../pip/_internal/commands/install.py | 580 ++ .../pip/_internal/commands/list.py | 311 + .../pip/_internal/commands/search.py | 139 + .../pip/_internal/commands/show.py | 168 + .../pip/_internal/commands/uninstall.py | 78 + .../pip/_internal/commands/wheel.py | 181 + .../pip/_internal/configuration.py | 417 + .../pip/_internal/distributions/__init__.py | 23 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 851 bytes .../__pycache__/base.cpython-38.pyc | Bin 0 -> 1646 bytes .../__pycache__/installed.cpython-38.pyc | Bin 0 -> 986 bytes .../__pycache__/source.cpython-38.pyc | Bin 0 -> 3083 bytes .../__pycache__/wheel.cpython-38.pyc | Bin 0 -> 1050 bytes .../pip/_internal/distributions/base.py | 33 + .../pip/_internal/distributions/installed.py | 15 + .../pip/_internal/distributions/source.py | 80 + .../pip/_internal/distributions/wheel.py | 17 + .../site-packages/pip/_internal/download.py | 1177 +++ .../site-packages/pip/_internal/exceptions.py | 305 + .../Lib/site-packages/pip/_internal/index.py | 1508 +++ .../pip/_internal/legacy_resolve.py | 457 + .../site-packages/pip/_internal/locations.py | 142 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 250 bytes .../__pycache__/candidate.cpython-38.pyc | Bin 0 -> 1484 bytes .../__pycache__/format_control.cpython-38.pyc | Bin 0 -> 2278 bytes .../models/__pycache__/index.cpython-38.pyc | Bin 0 -> 1172 bytes .../models/__pycache__/link.cpython-38.pyc | Bin 0 -> 6311 bytes .../__pycache__/search_scope.cpython-38.pyc | Bin 0 -> 3281 bytes .../selection_prefs.cpython-38.pyc | Bin 0 -> 1622 bytes .../__pycache__/target_python.cpython-38.pyc | Bin 0 -> 3226 bytes .../pip/_internal/models/candidate.py | 36 + .../pip/_internal/models/format_control.py | 73 + .../pip/_internal/models/index.py | 31 + .../pip/_internal/models/link.py | 213 + .../pip/_internal/models/search_scope.py | 113 + .../pip/_internal/models/selection_prefs.py | 47 + .../pip/_internal/models/target_python.py | 106 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 186 bytes .../__pycache__/check.cpython-38.pyc | Bin 0 -> 3692 bytes .../__pycache__/freeze.cpython-38.pyc | Bin 0 -> 5756 bytes .../__pycache__/prepare.cpython-38.pyc | Bin 0 -> 5773 bytes .../pip/_internal/operations/check.py | 159 + .../pip/_internal/operations/freeze.py | 253 + .../pip/_internal/operations/prepare.py | 287 + .../site-packages/pip/_internal/pep425tags.py | 384 + .../site-packages/pip/_internal/pyproject.py | 171 + .../pip/_internal/req/__init__.py | 78 + .../req/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1726 bytes .../__pycache__/constructors.cpython-38.pyc | Bin 0 -> 7998 bytes .../req/__pycache__/req_file.cpython-38.pyc | Bin 0 -> 9403 bytes .../__pycache__/req_install.cpython-38.pyc | Bin 0 -> 25756 bytes .../req/__pycache__/req_set.cpython-38.pyc | Bin 0 -> 5719 bytes .../__pycache__/req_tracker.cpython-38.pyc | Bin 0 -> 3251 bytes .../__pycache__/req_uninstall.cpython-38.pyc | Bin 0 -> 17378 bytes .../pip/_internal/req/constructors.py | 349 + .../pip/_internal/req/req_file.py | 399 + .../pip/_internal/req/req_install.py | 1035 ++ .../pip/_internal/req/req_set.py | 193 + .../pip/_internal/req/req_tracker.py | 96 + .../pip/_internal/req/req_uninstall.py | 633 ++ .../pip/_internal/utils/__init__.py | 0 .../utils/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 181 bytes .../utils/__pycache__/appdirs.cpython-38.pyc | Bin 0 -> 8060 bytes .../utils/__pycache__/compat.cpython-38.pyc | Bin 0 -> 6956 bytes .../__pycache__/deprecation.cpython-38.pyc | Bin 0 -> 2852 bytes .../utils/__pycache__/encoding.cpython-38.pyc | Bin 0 -> 1273 bytes .../__pycache__/filesystem.cpython-38.pyc | Bin 0 -> 652 bytes .../utils/__pycache__/glibc.cpython-38.pyc | Bin 0 -> 2283 bytes .../utils/__pycache__/hashes.cpython-38.pyc | Bin 0 -> 4170 bytes .../utils/__pycache__/logging.cpython-38.pyc | Bin 0 -> 9146 bytes .../__pycache__/marker_files.cpython-38.pyc | Bin 0 -> 792 bytes .../utils/__pycache__/misc.cpython-38.pyc | Bin 0 -> 29877 bytes .../utils/__pycache__/models.cpython-38.pyc | Bin 0 -> 1950 bytes .../utils/__pycache__/outdated.cpython-38.pyc | Bin 0 -> 4237 bytes .../__pycache__/packaging.cpython-38.pyc | Bin 0 -> 2634 bytes .../setuptools_build.cpython-38.pyc | Bin 0 -> 1043 bytes .../utils/__pycache__/temp_dir.cpython-38.pyc | Bin 0 -> 4901 bytes .../utils/__pycache__/typing.cpython-38.pyc | Bin 0 -> 1311 bytes .../utils/__pycache__/ui.cpython-38.pyc | Bin 0 -> 11836 bytes .../__pycache__/virtualenv.cpython-38.pyc | Bin 0 -> 904 bytes .../pip/_internal/utils/appdirs.py | 268 + .../pip/_internal/utils/compat.py | 293 + .../pip/_internal/utils/deprecation.py | 100 + .../pip/_internal/utils/encoding.py | 39 + .../pip/_internal/utils/filesystem.py | 30 + .../pip/_internal/utils/glibc.py | 120 + .../pip/_internal/utils/hashes.py | 128 + .../pip/_internal/utils/logging.py | 394 + .../pip/_internal/utils/marker_files.py | 20 + .../site-packages/pip/_internal/utils/misc.py | 1201 +++ .../pip/_internal/utils/models.py | 40 + .../pip/_internal/utils/outdated.py | 178 + .../pip/_internal/utils/packaging.py | 94 + .../pip/_internal/utils/setuptools_build.py | 36 + .../pip/_internal/utils/temp_dir.py | 155 + .../pip/_internal/utils/typing.py | 29 + .../site-packages/pip/_internal/utils/ui.py | 424 + .../pip/_internal/utils/virtualenv.py | 34 + .../pip/_internal/vcs/__init__.py | 12 + .../vcs/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 457 bytes .../vcs/__pycache__/bazaar.cpython-38.pyc | Bin 0 -> 3433 bytes .../vcs/__pycache__/git.cpython-38.pyc | Bin 0 -> 8989 bytes .../vcs/__pycache__/mercurial.cpython-38.pyc | Bin 0 -> 3720 bytes .../vcs/__pycache__/subversion.cpython-38.pyc | Bin 0 -> 8373 bytes .../__pycache__/versioncontrol.cpython-38.pyc | Bin 0 -> 17103 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 101 + .../site-packages/pip/_internal/vcs/git.py | 358 + .../pip/_internal/vcs/mercurial.py | 103 + .../pip/_internal/vcs/subversion.py | 314 + .../pip/_internal/vcs/versioncontrol.py | 600 ++ .../Lib/site-packages/pip/_internal/wheel.py | 1125 +++ .../Lib/site-packages/pip/_vendor/__init__.py | 109 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2852 bytes .../__pycache__/appdirs.cpython-38.pyc | Bin 0 -> 20463 bytes .../_vendor/__pycache__/distro.cpython-38.pyc | Bin 0 -> 36567 bytes .../__pycache__/ipaddress.cpython-38.pyc | Bin 0 -> 64808 bytes .../__pycache__/pyparsing.cpython-38.pyc | Bin 0 -> 220231 bytes .../__pycache__/retrying.cpython-38.pyc | Bin 0 -> 8032 bytes .../_vendor/__pycache__/six.cpython-38.pyc | Bin 0 -> 26422 bytes .../Lib/site-packages/pip/_vendor/appdirs.py | 604 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 539 bytes .../__pycache__/_cmd.cpython-38.pyc | Bin 0 -> 1566 bytes .../__pycache__/adapter.cpython-38.pyc | Bin 0 -> 3065 bytes .../__pycache__/cache.cpython-38.pyc | Bin 0 -> 1772 bytes .../__pycache__/compat.cpython-38.pyc | Bin 0 -> 746 bytes .../__pycache__/controller.cpython-38.pyc | Bin 0 -> 7686 bytes .../__pycache__/filewrapper.cpython-38.pyc | Bin 0 -> 2165 bytes .../__pycache__/heuristics.cpython-38.pyc | Bin 0 -> 4724 bytes .../__pycache__/serialize.cpython-38.pyc | Bin 0 -> 4237 bytes .../__pycache__/wrapper.cpython-38.pyc | Bin 0 -> 655 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-38.pyc | Bin 0 -> 283 bytes .../__pycache__/file_cache.cpython-38.pyc | Bin 0 -> 3281 bytes .../__pycache__/redis_cache.cpython-38.pyc | Bin 0 -> 1555 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 | 367 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 186 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 2 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 246 bytes .../__pycache__/__main__.cpython-38.pyc | Bin 0 -> 249 bytes .../certifi/__pycache__/core.cpython-38.pyc | Bin 0 -> 462 bytes .../pip/_vendor/certifi/cacert.pem | 4618 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 15 + .../pip/_vendor/chardet/__init__.py | 39 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 839 bytes .../__pycache__/big5freq.cpython-38.pyc | Bin 0 -> 27168 bytes .../__pycache__/big5prober.cpython-38.pyc | Bin 0 -> 1123 bytes .../chardistribution.cpython-38.pyc | Bin 0 -> 6209 bytes .../charsetgroupprober.cpython-38.pyc | Bin 0 -> 2240 bytes .../__pycache__/charsetprober.cpython-38.pyc | Bin 0 -> 3472 bytes .../codingstatemachine.cpython-38.pyc | Bin 0 -> 2899 bytes .../chardet/__pycache__/compat.cpython-38.pyc | Bin 0 -> 344 bytes .../__pycache__/cp949prober.cpython-38.pyc | Bin 0 -> 1130 bytes .../chardet/__pycache__/enums.cpython-38.pyc | Bin 0 -> 2637 bytes .../__pycache__/escprober.cpython-38.pyc | Bin 0 -> 2622 bytes .../chardet/__pycache__/escsm.cpython-38.pyc | Bin 0 -> 7463 bytes .../__pycache__/eucjpprober.cpython-38.pyc | Bin 0 -> 2440 bytes .../__pycache__/euckrfreq.cpython-38.pyc | Bin 0 -> 12052 bytes .../__pycache__/euckrprober.cpython-38.pyc | Bin 0 -> 1131 bytes .../__pycache__/euctwfreq.cpython-38.pyc | Bin 0 -> 27172 bytes .../__pycache__/euctwprober.cpython-38.pyc | Bin 0 -> 1131 bytes .../__pycache__/gb2312freq.cpython-38.pyc | Bin 0 -> 19096 bytes .../__pycache__/gb2312prober.cpython-38.pyc | Bin 0 -> 1139 bytes .../__pycache__/hebrewprober.cpython-38.pyc | Bin 0 -> 3012 bytes .../__pycache__/jisfreq.cpython-38.pyc | Bin 0 -> 22124 bytes .../chardet/__pycache__/jpcntx.cpython-38.pyc | Bin 0 -> 37597 bytes .../langbulgarianmodel.cpython-38.pyc | Bin 0 -> 23621 bytes .../langcyrillicmodel.cpython-38.pyc | Bin 0 -> 29085 bytes .../__pycache__/langgreekmodel.cpython-38.pyc | Bin 0 -> 23579 bytes .../langhebrewmodel.cpython-38.pyc | Bin 0 -> 22206 bytes .../langhungarianmodel.cpython-38.pyc | Bin 0 -> 23610 bytes .../__pycache__/langthaimodel.cpython-38.pyc | Bin 0 -> 22185 bytes .../langturkishmodel.cpython-38.pyc | Bin 0 -> 22208 bytes .../__pycache__/latin1prober.cpython-38.pyc | Bin 0 -> 3392 bytes .../mbcharsetprober.cpython-38.pyc | Bin 0 -> 2255 bytes .../mbcsgroupprober.cpython-38.pyc | Bin 0 -> 1120 bytes .../chardet/__pycache__/mbcssm.cpython-38.pyc | Bin 0 -> 16743 bytes .../sbcharsetprober.cpython-38.pyc | Bin 0 -> 3008 bytes .../sbcsgroupprober.cpython-38.pyc | Bin 0 -> 1618 bytes .../__pycache__/sjisprober.cpython-38.pyc | Bin 0 -> 2476 bytes .../universaldetector.cpython-38.pyc | Bin 0 -> 5820 bytes .../__pycache__/utf8prober.cpython-38.pyc | Bin 0 -> 1981 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 428 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-38.pyc | Bin 0 -> 185 bytes .../cli/__pycache__/chardetect.cpython-38.pyc | Bin 0 -> 2686 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-38.pyc | Bin 0 -> 433 bytes .../colorama/__pycache__/ansi.cpython-38.pyc | Bin 0 -> 3218 bytes .../__pycache__/ansitowin32.cpython-38.pyc | Bin 0 -> 7727 bytes .../__pycache__/initialise.cpython-38.pyc | Bin 0 -> 1694 bytes .../colorama/__pycache__/win32.cpython-38.pyc | Bin 0 -> 3970 bytes .../__pycache__/winterm.cpython-38.pyc | Bin 0 -> 4654 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 257 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1054 bytes .../distlib/__pycache__/compat.cpython-38.pyc | Bin 0 -> 32197 bytes .../__pycache__/database.cpython-38.pyc | Bin 0 -> 42094 bytes .../distlib/__pycache__/index.cpython-38.pyc | Bin 0 -> 17401 bytes .../__pycache__/locators.cpython-38.pyc | Bin 0 -> 38299 bytes .../__pycache__/manifest.cpython-38.pyc | Bin 0 -> 10223 bytes .../__pycache__/markers.cpython-38.pyc | Bin 0 -> 4487 bytes .../__pycache__/metadata.cpython-38.pyc | Bin 0 -> 26634 bytes .../__pycache__/resources.cpython-38.pyc | Bin 0 -> 10998 bytes .../__pycache__/scripts.cpython-38.pyc | Bin 0 -> 10780 bytes .../distlib/__pycache__/util.cpython-38.pyc | Bin 0 -> 48131 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 20357 bytes .../distlib/__pycache__/wheel.cpython-38.pyc | Bin 0 -> 25544 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 473 bytes .../_backport/__pycache__/misc.cpython-38.pyc | Bin 0 -> 1084 bytes .../__pycache__/shutil.cpython-38.pyc | Bin 0 -> 21477 bytes .../__pycache__/sysconfig.cpython-38.pyc | Bin 0 -> 15876 bytes .../__pycache__/tarfile.cpython-38.pyc | Bin 0 -> 62733 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 761 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 788 ++ .../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 | 1295 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/metadata.py | 1096 ++ .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/scripts.py | 403 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 92672 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 102912 bytes .../site-packages/pip/_vendor/distlib/util.py | 1760 ++++ .../pip/_vendor/distlib/version.py | 736 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 89088 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1004 ++ myenv/Lib/site-packages/pip/_vendor/distro.py | 1216 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1306 bytes .../__pycache__/_ihatexml.cpython-38.pyc | Bin 0 -> 13778 bytes .../__pycache__/_inputstream.cpython-38.pyc | Bin 0 -> 21930 bytes .../__pycache__/_tokenizer.cpython-38.pyc | Bin 0 -> 39648 bytes .../__pycache__/_utils.cpython-38.pyc | Bin 0 -> 3336 bytes .../__pycache__/constants.cpython-38.pyc | Bin 0 -> 66343 bytes .../__pycache__/html5parser.cpython-38.pyc | Bin 0 -> 95165 bytes .../__pycache__/serializer.cpython-38.pyc | Bin 0 -> 10814 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 + .../pip/_vendor/html5lib/_inputstream.py | 923 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1721 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 14 + .../_trie/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 415 bytes .../_trie/__pycache__/_base.cpython-38.pyc | Bin 0 -> 1594 bytes .../_trie/__pycache__/datrie.cpython-38.pyc | Bin 0 -> 2027 bytes .../_trie/__pycache__/py.cpython-38.pyc | Bin 0 -> 2251 bytes .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 124 + .../pip/_vendor/html5lib/constants.py | 2947 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 190 bytes .../alphabeticalattributes.cpython-38.pyc | Bin 0 -> 1312 bytes .../filters/__pycache__/base.cpython-38.pyc | Bin 0 -> 860 bytes .../inject_meta_charset.cpython-38.pyc | Bin 0 -> 1866 bytes .../filters/__pycache__/lint.cpython-38.pyc | Bin 0 -> 2624 bytes .../__pycache__/optionaltags.cpython-38.pyc | Bin 0 -> 2753 bytes .../__pycache__/sanitizer.cpython-38.pyc | Bin 0 -> 16295 bytes .../__pycache__/whitespace.cpython-38.pyc | Bin 0 -> 1358 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 | 896 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2791 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 929 bytes .../__pycache__/genshi.cpython-38.pyc | Bin 0 -> 1535 bytes .../__pycache__/sax.cpython-38.pyc | Bin 0 -> 1470 bytes .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3314 bytes .../__pycache__/base.cpython-38.pyc | Bin 0 -> 11340 bytes .../__pycache__/dom.cpython-38.pyc | Bin 0 -> 9447 bytes .../__pycache__/etree.cpython-38.pyc | Bin 0 -> 11834 bytes .../__pycache__/etree_lxml.cpython-38.pyc | Bin 0 -> 11802 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 340 + .../html5lib/treebuilders/etree_lxml.py | 366 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3995 bytes .../__pycache__/base.cpython-38.pyc | Bin 0 -> 6995 bytes .../__pycache__/dom.cpython-38.pyc | Bin 0 -> 1724 bytes .../__pycache__/etree.cpython-38.pyc | Bin 0 -> 3509 bytes .../__pycache__/etree_lxml.cpython-38.pyc | Bin 0 -> 6608 bytes .../__pycache__/genshi.cpython-38.pyc | Bin 0 -> 1882 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 130 + .../html5lib/treewalkers/etree_lxml.py | 213 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 2 + .../idna/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 247 bytes .../idna/__pycache__/codec.cpython-38.pyc | Bin 0 -> 2901 bytes .../idna/__pycache__/compat.cpython-38.pyc | Bin 0 -> 619 bytes .../idna/__pycache__/core.cpython-38.pyc | Bin 0 -> 9035 bytes .../idna/__pycache__/idnadata.cpython-38.pyc | Bin 0 -> 21371 bytes .../idna/__pycache__/intranges.cpython-38.pyc | Bin 0 -> 1799 bytes .../__pycache__/package_data.cpython-38.pyc | Bin 0 -> 201 bytes .../idna/__pycache__/uts46data.cpython-38.pyc | Bin 0 -> 174174 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 12 + .../site-packages/pip/_vendor/idna/core.py | 396 + .../pip/_vendor/idna/idnadata.py | 1979 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8205 +++++++++++++++ .../site-packages/pip/_vendor/ipaddress.py | 2419 +++++ .../pip/_vendor/lockfile/__init__.py | 347 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 9794 bytes .../__pycache__/linklockfile.cpython-38.pyc | Bin 0 -> 2302 bytes .../__pycache__/mkdirlockfile.cpython-38.pyc | Bin 0 -> 2670 bytes .../__pycache__/pidlockfile.cpython-38.pyc | Bin 0 -> 4874 bytes .../__pycache__/sqlitelockfile.cpython-38.pyc | Bin 0 -> 3729 bytes .../symlinklockfile.cpython-38.pyc | Bin 0 -> 2191 bytes .../pip/_vendor/lockfile/linklockfile.py | 73 + .../pip/_vendor/lockfile/mkdirlockfile.py | 84 + .../pip/_vendor/lockfile/pidlockfile.py | 190 + .../pip/_vendor/lockfile/sqlitelockfile.py | 156 + .../pip/_vendor/lockfile/symlinklockfile.py | 70 + .../pip/_vendor/msgpack/__init__.py | 65 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2019 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 208 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 1842 bytes .../__pycache__/fallback.cpython-38.pyc | Bin 0 -> 26338 bytes .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../pip/_vendor/msgpack/fallback.py | 1027 ++ .../pip/_vendor/packaging/__about__.py | 27 + .../pip/_vendor/packaging/__init__.py | 26 + .../__pycache__/__about__.cpython-38.pyc | Bin 0 -> 723 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 561 bytes .../__pycache__/_compat.cpython-38.pyc | Bin 0 -> 997 bytes .../__pycache__/_structures.cpython-38.pyc | Bin 0 -> 2779 bytes .../__pycache__/markers.cpython-38.pyc | Bin 0 -> 8904 bytes .../__pycache__/requirements.cpython-38.pyc | Bin 0 -> 4002 bytes .../__pycache__/specifiers.cpython-38.pyc | Bin 0 -> 19753 bytes .../__pycache__/utils.cpython-38.pyc | Bin 0 -> 1454 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 12084 bytes .../pip/_vendor/packaging/_compat.py | 31 + .../pip/_vendor/packaging/_structures.py | 68 + .../pip/_vendor/packaging/markers.py | 296 + .../pip/_vendor/packaging/requirements.py | 138 + .../pip/_vendor/packaging/specifiers.py | 749 ++ .../pip/_vendor/packaging/utils.py | 57 + .../pip/_vendor/packaging/version.py | 420 + .../pip/_vendor/pep517/__init__.py | 4 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 272 bytes .../__pycache__/_in_process.cpython-38.pyc | Bin 0 -> 5530 bytes .../pep517/__pycache__/build.cpython-38.pyc | Bin 0 -> 2786 bytes .../pep517/__pycache__/check.cpython-38.pyc | Bin 0 -> 4755 bytes .../__pycache__/colorlog.cpython-38.pyc | Bin 0 -> 2942 bytes .../pep517/__pycache__/compat.cpython-38.pyc | Bin 0 -> 994 bytes .../__pycache__/envbuild.cpython-38.pyc | Bin 0 -> 4274 bytes .../__pycache__/wrappers.cpython-38.pyc | Bin 0 -> 5534 bytes .../pip/_vendor/pep517/_in_process.py | 207 + .../site-packages/pip/_vendor/pep517/build.py | 108 + .../site-packages/pip/_vendor/pep517/check.py | 202 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 23 + .../pip/_vendor/pep517/envbuild.py | 158 + .../pip/_vendor/pep517/wrappers.py | 163 + .../pip/_vendor/pkg_resources/__init__.py | 3286 ++++++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 100174 bytes .../__pycache__/py31compat.cpython-38.pyc | Bin 0 -> 638 bytes .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/progress/__init__.py | 177 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 5607 bytes .../progress/__pycache__/bar.cpython-38.pyc | Bin 0 -> 2631 bytes .../__pycache__/counter.cpython-38.pyc | Bin 0 -> 1463 bytes .../__pycache__/spinner.cpython-38.pyc | Bin 0 -> 1390 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 | 6493 ++++++++++++ .../pip/_vendor/pytoml/__init__.py | 4 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 366 bytes .../pytoml/__pycache__/core.cpython-38.pyc | Bin 0 -> 943 bytes .../pytoml/__pycache__/parser.cpython-38.pyc | Bin 0 -> 10140 bytes .../pytoml/__pycache__/test.cpython-38.pyc | Bin 0 -> 1245 bytes .../pytoml/__pycache__/utils.cpython-38.pyc | Bin 0 -> 2155 bytes .../pytoml/__pycache__/writer.cpython-38.pyc | Bin 0 -> 3586 bytes .../site-packages/pip/_vendor/pytoml/core.py | 13 + .../pip/_vendor/pytoml/parser.py | 341 + .../site-packages/pip/_vendor/pytoml/test.py | 30 + .../site-packages/pip/_vendor/pytoml/utils.py | 67 + .../pip/_vendor/pytoml/writer.py | 106 + .../pip/_vendor/requests/__init__.py | 133 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3493 bytes .../__pycache__/__version__.cpython-38.pyc | Bin 0 -> 540 bytes .../_internal_utils.cpython-38.pyc | Bin 0 -> 1310 bytes .../__pycache__/adapters.cpython-38.pyc | Bin 0 -> 16973 bytes .../requests/__pycache__/api.cpython-38.pyc | Bin 0 -> 6497 bytes .../requests/__pycache__/auth.cpython-38.pyc | Bin 0 -> 8319 bytes .../requests/__pycache__/certs.cpython-38.pyc | Bin 0 -> 623 bytes .../__pycache__/compat.cpython-38.pyc | Bin 0 -> 1602 bytes .../__pycache__/cookies.cpython-38.pyc | Bin 0 -> 18824 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 5234 bytes .../requests/__pycache__/help.cpython-38.pyc | Bin 0 -> 2720 bytes .../requests/__pycache__/hooks.cpython-38.pyc | Bin 0 -> 982 bytes .../__pycache__/models.cpython-38.pyc | Bin 0 -> 23918 bytes .../__pycache__/packages.cpython-38.pyc | Bin 0 -> 492 bytes .../__pycache__/sessions.cpython-38.pyc | Bin 0 -> 19532 bytes .../__pycache__/status_codes.cpython-38.pyc | Bin 0 -> 4178 bytes .../__pycache__/structures.cpython-38.pyc | Bin 0 -> 4420 bytes .../requests/__pycache__/utils.cpython-38.pyc | Bin 0 -> 22189 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 | 158 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 74 + .../pip/_vendor/requests/cookies.py | 549 + .../pip/_vendor/requests/exceptions.py | 126 + .../pip/_vendor/requests/help.py | 119 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 953 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 770 ++ .../pip/_vendor/requests/status_codes.py | 120 + .../pip/_vendor/requests/structures.py | 103 + .../pip/_vendor/requests/utils.py | 977 ++ .../Lib/site-packages/pip/_vendor/retrying.py | 267 + myenv/Lib/site-packages/pip/_vendor/six.py | 952 ++ .../pip/_vendor/urllib3/__init__.py | 91 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2115 bytes .../__pycache__/_collections.cpython-38.pyc | Bin 0 -> 10765 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 10558 bytes .../__pycache__/connectionpool.cpython-38.pyc | Bin 0 -> 23870 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 10058 bytes .../urllib3/__pycache__/fields.cpython-38.pyc | Bin 0 -> 8123 bytes .../__pycache__/filepost.cpython-38.pyc | Bin 0 -> 2760 bytes .../__pycache__/poolmanager.cpython-38.pyc | Bin 0 -> 12936 bytes .../__pycache__/request.cpython-38.pyc | Bin 0 -> 5614 bytes .../__pycache__/response.cpython-38.pyc | Bin 0 -> 20125 bytes .../pip/_vendor/urllib3/_collections.py | 329 + .../pip/_vendor/urllib3/connection.py | 417 + .../pip/_vendor/urllib3/connectionpool.py | 897 ++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 189 bytes .../_appengine_environ.cpython-38.pyc | Bin 0 -> 1117 bytes .../__pycache__/appengine.cpython-38.pyc | Bin 0 -> 8430 bytes .../__pycache__/ntlmpool.cpython-38.pyc | Bin 0 -> 3256 bytes .../__pycache__/pyopenssl.cpython-38.pyc | Bin 0 -> 14961 bytes .../securetransport.cpython-38.pyc | Bin 0 -> 19889 bytes .../contrib/__pycache__/socks.cpython-38.pyc | Bin 0 -> 5575 bytes .../urllib3/contrib/_appengine_environ.py | 30 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 206 bytes .../__pycache__/bindings.cpython-38.pyc | Bin 0 -> 10361 bytes .../__pycache__/low_level.cpython-38.pyc | Bin 0 -> 7558 bytes .../contrib/_securetransport/bindings.py | 593 ++ .../contrib/_securetransport/low_level.py | 346 + .../pip/_vendor/urllib3/contrib/appengine.py | 289 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 111 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 485 + .../urllib3/contrib/securetransport.py | 853 ++ .../pip/_vendor/urllib3/contrib/socks.py | 205 + .../pip/_vendor/urllib3/exceptions.py | 246 + .../pip/_vendor/urllib3/fields.py | 272 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 303 bytes .../packages/__pycache__/six.cpython-38.pyc | Bin 0 -> 24463 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 200 bytes .../__pycache__/makefile.cpython-38.pyc | Bin 0 -> 1304 bytes .../urllib3/packages/backports/makefile.py | 53 + .../urllib3/packages/rfc3986/__init__.py | 56 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1037 bytes .../rfc3986/__pycache__/_mixin.cpython-38.pyc | Bin 0 -> 10638 bytes .../__pycache__/abnf_regexp.cpython-38.pyc | Bin 0 -> 4141 bytes .../rfc3986/__pycache__/api.cpython-38.pyc | Bin 0 -> 3702 bytes .../__pycache__/builder.cpython-38.pyc | Bin 0 -> 8144 bytes .../rfc3986/__pycache__/compat.cpython-38.pyc | Bin 0 -> 1139 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 4778 bytes .../rfc3986/__pycache__/iri.cpython-38.pyc | Bin 0 -> 4493 bytes .../rfc3986/__pycache__/misc.cpython-38.pyc | Bin 0 -> 2258 bytes .../__pycache__/normalizers.cpython-38.pyc | Bin 0 -> 3571 bytes .../__pycache__/parseresult.cpython-38.pyc | Bin 0 -> 9885 bytes .../rfc3986/__pycache__/uri.cpython-38.pyc | Bin 0 -> 4266 bytes .../__pycache__/validators.cpython-38.pyc | Bin 0 -> 13026 bytes .../urllib3/packages/rfc3986/_mixin.py | 353 + .../urllib3/packages/rfc3986/abnf_regexp.py | 267 + .../_vendor/urllib3/packages/rfc3986/api.py | 106 + .../urllib3/packages/rfc3986/builder.py | 298 + .../urllib3/packages/rfc3986/compat.py | 54 + .../urllib3/packages/rfc3986/exceptions.py | 118 + .../_vendor/urllib3/packages/rfc3986/iri.py | 147 + .../_vendor/urllib3/packages/rfc3986/misc.py | 124 + .../urllib3/packages/rfc3986/normalizers.py | 167 + .../urllib3/packages/rfc3986/parseresult.py | 385 + .../_vendor/urllib3/packages/rfc3986/uri.py | 153 + .../urllib3/packages/rfc3986/validators.py | 450 + .../pip/_vendor/urllib3/packages/six.py | 868 ++ .../packages/ssl_match_hostname/__init__.py | 19 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 544 bytes .../_implementation.cpython-38.pyc | Bin 0 -> 3317 bytes .../ssl_match_hostname/_implementation.py | 156 + .../pip/_vendor/urllib3/poolmanager.py | 455 + .../pip/_vendor/urllib3/request.py | 150 + .../pip/_vendor/urllib3/response.py | 760 ++ .../pip/_vendor/urllib3/util/__init__.py | 56 + .../util/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1009 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 3182 bytes .../util/__pycache__/queue.cpython-38.pyc | Bin 0 -> 1054 bytes .../util/__pycache__/request.cpython-38.pyc | Bin 0 -> 3336 bytes .../util/__pycache__/response.cpython-38.pyc | Bin 0 -> 1979 bytes .../util/__pycache__/retry.cpython-38.pyc | Bin 0 -> 12930 bytes .../util/__pycache__/ssl_.cpython-38.pyc | Bin 0 -> 9808 bytes .../util/__pycache__/timeout.cpython-38.pyc | Bin 0 -> 8810 bytes .../util/__pycache__/url.cpython-38.pyc | Bin 0 -> 7875 bytes .../util/__pycache__/wait.cpython-38.pyc | Bin 0 -> 3103 bytes .../pip/_vendor/urllib3/util/connection.py | 134 + .../pip/_vendor/urllib3/util/queue.py | 21 + .../pip/_vendor/urllib3/util/request.py | 125 + .../pip/_vendor/urllib3/util/response.py | 87 + .../pip/_vendor/urllib3/util/retry.py | 412 + .../pip/_vendor/urllib3/util/ssl_.py | 392 + .../pip/_vendor/urllib3/util/timeout.py | 243 + .../pip/_vendor/urllib3/util/url.py | 289 + .../pip/_vendor/urllib3/util/wait.py | 150 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 9729 bytes .../__pycache__/labels.cpython-38.pyc | Bin 0 -> 3827 bytes .../__pycache__/mklabels.cpython-38.pyc | Bin 0 -> 1923 bytes .../__pycache__/tests.cpython-38.pyc | Bin 0 -> 5089 bytes .../__pycache__/x_user_defined.cpython-38.pyc | Bin 0 -> 2657 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 | 3295 ++++++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 100371 bytes .../__pycache__/py31compat.cpython-38.pyc | Bin 0 -> 633 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 190 bytes .../__pycache__/appdirs.cpython-38.pyc | Bin 0 -> 20543 bytes .../__pycache__/pyparsing.cpython-38.pyc | Bin 0 -> 201667 bytes .../_vendor/__pycache__/six.cpython-38.pyc | Bin 0 -> 24463 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-38.pyc | Bin 0 -> 740 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 578 bytes .../__pycache__/_compat.cpython-38.pyc | Bin 0 -> 1014 bytes .../__pycache__/_structures.cpython-38.pyc | Bin 0 -> 2796 bytes .../__pycache__/markers.cpython-38.pyc | Bin 0 -> 8952 bytes .../__pycache__/requirements.cpython-38.pyc | Bin 0 -> 3911 bytes .../__pycache__/specifiers.cpython-38.pyc | Bin 0 -> 19820 bytes .../__pycache__/utils.cpython-38.pyc | Bin 0 -> 499 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 10667 bytes .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 ++ .../pkg_resources/_vendor/packaging/utils.py | 14 + .../_vendor/packaging/version.py | 393 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2439 bytes .../site-packages/pkg_resources/py31compat.py | 23 + .../pycparser-2.23.dist-info/INSTALLER | 1 + .../pycparser-2.23.dist-info/LICENSE | 27 + .../pycparser-2.23.dist-info/METADATA | 28 + .../pycparser-2.23.dist-info/RECORD | 41 + .../pycparser-2.23.dist-info/WHEEL | 5 + .../pycparser-2.23.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/pycparser/__init__.py | 93 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2591 bytes .../__pycache__/_ast_gen.cpython-38.pyc | Bin 0 -> 10156 bytes .../__pycache__/_build_tables.cpython-38.pyc | Bin 0 -> 583 bytes .../__pycache__/ast_transforms.cpython-38.pyc | Bin 0 -> 3767 bytes .../__pycache__/c_ast.cpython-38.pyc | Bin 0 -> 36699 bytes .../__pycache__/c_generator.cpython-38.pyc | Bin 0 -> 17882 bytes .../__pycache__/c_lexer.cpython-38.pyc | Bin 0 -> 13654 bytes .../__pycache__/c_parser.cpython-38.pyc | Bin 0 -> 66761 bytes .../__pycache__/lextab.cpython-38.pyc | Bin 0 -> 7085 bytes .../__pycache__/plyparser.cpython-38.pyc | Bin 0 -> 4685 bytes .../__pycache__/yacctab.cpython-38.pyc | Bin 0 -> 175665 bytes myenv/Lib/site-packages/pycparser/_ast_gen.py | 336 + .../site-packages/pycparser/_build_tables.py | 40 + myenv/Lib/site-packages/pycparser/_c_ast.cfg | 195 + .../site-packages/pycparser/ast_transforms.py | 164 + myenv/Lib/site-packages/pycparser/c_ast.py | 1125 +++ .../site-packages/pycparser/c_generator.py | 502 + myenv/Lib/site-packages/pycparser/c_lexer.py | 569 ++ myenv/Lib/site-packages/pycparser/c_parser.py | 1973 ++++ myenv/Lib/site-packages/pycparser/lextab.py | 10 + .../site-packages/pycparser/ply/__init__.py | 5 + .../ply/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 230 bytes .../ply/__pycache__/cpp.cpython-38.pyc | Bin 0 -> 16121 bytes .../ply/__pycache__/ctokens.cpython-38.pyc | Bin 0 -> 2285 bytes .../ply/__pycache__/lex.cpython-38.pyc | Bin 0 -> 21442 bytes .../ply/__pycache__/yacc.cpython-38.pyc | Bin 0 -> 53071 bytes .../ply/__pycache__/ygen.cpython-38.pyc | Bin 0 -> 1755 bytes myenv/Lib/site-packages/pycparser/ply/cpp.py | 905 ++ .../site-packages/pycparser/ply/ctokens.py | 133 + myenv/Lib/site-packages/pycparser/ply/lex.py | 1099 ++ myenv/Lib/site-packages/pycparser/ply/yacc.py | 3494 +++++++ myenv/Lib/site-packages/pycparser/ply/ygen.py | 74 + .../Lib/site-packages/pycparser/plyparser.py | 133 + myenv/Lib/site-packages/pycparser/yacctab.py | 374 + .../requests-2.32.4.dist-info/INSTALLER | 1 + .../requests-2.32.4.dist-info/METADATA | 133 + .../requests-2.32.4.dist-info/RECORD | 42 + .../requests-2.32.4.dist-info/WHEEL | 5 + .../licenses/LICENSE | 175 + .../requests-2.32.4.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/requests/__init__.py | 184 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3924 bytes .../__pycache__/__version__.cpython-38.pyc | Bin 0 -> 533 bytes .../_internal_utils.cpython-38.pyc | Bin 0 -> 1630 bytes .../__pycache__/adapters.cpython-38.pyc | Bin 0 -> 22042 bytes .../requests/__pycache__/api.cpython-38.pyc | Bin 0 -> 6750 bytes .../requests/__pycache__/auth.cpython-38.pyc | Bin 0 -> 8331 bytes .../requests/__pycache__/certs.cpython-38.pyc | Bin 0 -> 604 bytes .../__pycache__/compat.cpython-38.pyc | Bin 0 -> 1939 bytes .../__pycache__/cookies.cpython-38.pyc | Bin 0 -> 18837 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 6590 bytes .../requests/__pycache__/help.cpython-38.pyc | Bin 0 -> 2830 bytes .../requests/__pycache__/hooks.cpython-38.pyc | Bin 0 -> 975 bytes .../__pycache__/models.cpython-38.pyc | Bin 0 -> 24384 bytes .../__pycache__/packages.cpython-38.pyc | Bin 0 -> 600 bytes .../__pycache__/sessions.cpython-38.pyc | Bin 0 -> 19820 bytes .../__pycache__/status_codes.cpython-38.pyc | Bin 0 -> 4297 bytes .../__pycache__/structures.cpython-38.pyc | Bin 0 -> 4434 bytes .../requests/__pycache__/utils.cpython-38.pyc | Bin 0 -> 24344 bytes .../Lib/site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + myenv/Lib/site-packages/requests/adapters.py | 719 ++ myenv/Lib/site-packages/requests/api.py | 157 + myenv/Lib/site-packages/requests/auth.py | 314 + myenv/Lib/site-packages/requests/certs.py | 17 + myenv/Lib/site-packages/requests/compat.py | 106 + myenv/Lib/site-packages/requests/cookies.py | 561 ++ .../Lib/site-packages/requests/exceptions.py | 151 + myenv/Lib/site-packages/requests/help.py | 134 + myenv/Lib/site-packages/requests/hooks.py | 33 + myenv/Lib/site-packages/requests/models.py | 1039 ++ myenv/Lib/site-packages/requests/packages.py | 23 + myenv/Lib/site-packages/requests/sessions.py | 831 ++ .../site-packages/requests/status_codes.py | 128 + .../Lib/site-packages/requests/structures.py | 99 + myenv/Lib/site-packages/requests/utils.py | 1086 ++ .../selenium-4.27.1.dist-info/INSTALLER | 1 + .../selenium-4.27.1.dist-info/LICENSE | 202 + .../selenium-4.27.1.dist-info/METADATA | 181 + .../selenium-4.27.1.dist-info/RECORD | 662 ++ .../selenium-4.27.1.dist-info/WHEEL | 4 + myenv/Lib/site-packages/selenium/__init__.py | 19 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 197 bytes .../selenium/__pycache__/types.cpython-38.pyc | Bin 0 -> 397 bytes .../site-packages/selenium/common/__init__.py | 88 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2148 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 12640 bytes .../selenium/common/exceptions.py | 291 + myenv/Lib/site-packages/selenium/py.typed | 0 myenv/Lib/site-packages/selenium/types.py | 25 + .../selenium/webdriver/__init__.py | 79 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1785 bytes .../selenium/webdriver/chrome/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 192 bytes .../chrome/__pycache__/options.cpython-38.pyc | Bin 0 -> 1091 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 1126 bytes .../chrome/__pycache__/service.cpython-38.pyc | Bin 0 -> 1597 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 1501 bytes .../selenium/webdriver/chrome/options.py | 35 + .../webdriver/chrome/remote_connection.py | 42 + .../selenium/webdriver/chrome/service.py | 50 + .../selenium/webdriver/chrome/webdriver.py | 51 + .../selenium/webdriver/chromium/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 194 bytes .../__pycache__/options.cpython-38.pyc | Bin 0 -> 5141 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 2039 bytes .../__pycache__/service.cpython-38.pyc | Bin 0 -> 2027 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 7425 bytes .../selenium/webdriver/chromium/options.py | 153 + .../webdriver/chromium/remote_connection.py | 60 + .../selenium/webdriver/chromium/service.py | 66 + .../selenium/webdriver/chromium/webdriver.py | 193 + .../selenium/webdriver/common/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 192 bytes .../__pycache__/action_chains.cpython-38.pyc | Bin 0 -> 12752 bytes .../common/__pycache__/alert.cpython-38.pyc | Bin 0 -> 2455 bytes .../common/__pycache__/by.cpython-38.pyc | Bin 0 -> 1464 bytes .../desired_capabilities.cpython-38.pyc | Bin 0 -> 1911 bytes .../__pycache__/driver_finder.cpython-38.pyc | Bin 0 -> 2901 bytes .../common/__pycache__/keys.cpython-38.pyc | Bin 0 -> 1761 bytes .../common/__pycache__/log.cpython-38.pyc | Bin 0 -> 5011 bytes .../common/__pycache__/options.cpython-38.pyc | Bin 0 -> 10287 bytes .../print_page_options.cpython-38.pyc | Bin 0 -> 7414 bytes .../common/__pycache__/proxy.cpython-38.pyc | Bin 0 -> 4865 bytes .../selenium_manager.cpython-38.pyc | Bin 0 -> 4066 bytes .../common/__pycache__/service.cpython-38.pyc | Bin 0 -> 7579 bytes .../__pycache__/timeouts.cpython-38.pyc | Bin 0 -> 3045 bytes .../common/__pycache__/utils.cpython-38.pyc | Bin 0 -> 3700 bytes .../virtual_authenticator.cpython-38.pyc | Bin 0 -> 7574 bytes .../common/__pycache__/window.cpython-38.pyc | Bin 0 -> 470 bytes .../webdriver/common/action_chains.py | 380 + .../webdriver/common/actions/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 200 bytes .../__pycache__/action_builder.cpython-38.pyc | Bin 0 -> 4211 bytes .../__pycache__/input_device.cpython-38.pyc | Bin 0 -> 1268 bytes .../__pycache__/interaction.cpython-38.pyc | Bin 0 -> 1394 bytes .../__pycache__/key_actions.cpython-38.pyc | Bin 0 -> 1943 bytes .../__pycache__/key_input.cpython-38.pyc | Bin 0 -> 2156 bytes .../__pycache__/mouse_button.cpython-38.pyc | Bin 0 -> 446 bytes .../pointer_actions.cpython-38.pyc | Bin 0 -> 4227 bytes .../__pycache__/pointer_input.cpython-38.pyc | Bin 0 -> 3099 bytes .../__pycache__/wheel_actions.cpython-38.pyc | Bin 0 -> 1126 bytes .../__pycache__/wheel_input.cpython-38.pyc | Bin 0 -> 2884 bytes .../common/actions/action_builder.py | 103 + .../webdriver/common/actions/input_device.py | 39 + .../webdriver/common/actions/interaction.py | 46 + .../webdriver/common/actions/key_actions.py | 54 + .../webdriver/common/actions/key_input.py | 49 + .../webdriver/common/actions/mouse_button.py | 24 + .../common/actions/pointer_actions.py | 205 + .../webdriver/common/actions/pointer_input.py | 81 + .../webdriver/common/actions/wheel_actions.py | 33 + .../webdriver/common/actions/wheel_input.py | 77 + .../selenium/webdriver/common/alert.py | 80 + .../webdriver/common/bidi/__init__.py | 16 + .../bidi/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 197 bytes .../bidi/__pycache__/cdp.cpython-38.pyc | Bin 0 -> 16889 bytes .../bidi/__pycache__/console.cpython-38.pyc | Bin 0 -> 435 bytes .../bidi/__pycache__/script.cpython-38.pyc | Bin 0 -> 3581 bytes .../bidi/__pycache__/session.cpython-38.pyc | Bin 0 -> 715 bytes .../selenium/webdriver/common/bidi/cdp.py | 509 + .../selenium/webdriver/common/bidi/console.py | 24 + .../selenium/webdriver/common/bidi/script.py | 110 + .../selenium/webdriver/common/bidi/session.py | 46 + .../selenium/webdriver/common/by.py | 51 + .../webdriver/common/desired_capabilities.py | 100 + .../common/devtools/v129/__init__.py | 60 + .../v129/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1972 bytes .../__pycache__/accessibility.cpython-38.pyc | Bin 0 -> 20697 bytes .../v129/__pycache__/animation.cpython-38.pyc | Bin 0 -> 11918 bytes .../v129/__pycache__/audits.cpython-38.pyc | Bin 0 -> 56573 bytes .../v129/__pycache__/autofill.cpython-38.pyc | Bin 0 -> 8755 bytes .../background_service.cpython-38.pyc | Bin 0 -> 6056 bytes .../bluetooth_emulation.cpython-38.pyc | Bin 0 -> 5970 bytes .../v129/__pycache__/browser.cpython-38.pyc | Bin 0 -> 20511 bytes .../__pycache__/cache_storage.cpython-38.pyc | Bin 0 -> 9308 bytes .../v129/__pycache__/cast.cpython-38.pyc | Bin 0 -> 4425 bytes .../v129/__pycache__/console.cpython-38.pyc | Bin 0 -> 2706 bytes .../v129/__pycache__/css.cpython-38.pyc | Bin 0 -> 63972 bytes .../v129/__pycache__/database.cpython-38.pyc | Bin 0 -> 4859 bytes .../v129/__pycache__/debugger.cpython-38.pyc | Bin 0 -> 41636 bytes .../__pycache__/device_access.cpython-38.pyc | Bin 0 -> 4334 bytes .../device_orientation.cpython-38.pyc | Bin 0 -> 1217 bytes .../v129/__pycache__/dom.cpython-38.pyc | Bin 0 -> 58614 bytes .../__pycache__/dom_debugger.cpython-38.pyc | Bin 0 -> 8463 bytes .../__pycache__/dom_snapshot.cpython-38.pyc | Bin 0 -> 30679 bytes .../__pycache__/dom_storage.cpython-38.pyc | Bin 0 -> 6421 bytes .../v129/__pycache__/emulation.cpython-38.pyc | Bin 0 -> 33776 bytes .../event_breakpoints.cpython-38.pyc | Bin 0 -> 1430 bytes .../__pycache__/extensions.cpython-38.pyc | Bin 0 -> 4216 bytes .../v129/__pycache__/fed_cm.cpython-38.pyc | Bin 0 -> 7826 bytes .../v129/__pycache__/fetch.cpython-38.pyc | Bin 0 -> 16865 bytes .../__pycache__/file_system.cpython-38.pyc | Bin 0 -> 4027 bytes .../headless_experimental.cpython-38.pyc | Bin 0 -> 4214 bytes .../__pycache__/heap_profiler.cpython-38.pyc | Bin 0 -> 13504 bytes .../__pycache__/indexed_db.cpython-38.pyc | Bin 0 -> 15024 bytes .../v129/__pycache__/input_.cpython-38.pyc | Bin 0 -> 22743 bytes .../v129/__pycache__/inspector.cpython-38.pyc | Bin 0 -> 2228 bytes .../v129/__pycache__/io.cpython-38.pyc | Bin 0 -> 3291 bytes .../__pycache__/layer_tree.cpython-38.pyc | Bin 0 -> 14060 bytes .../v129/__pycache__/log.cpython-38.pyc | Bin 0 -> 5084 bytes .../v129/__pycache__/media.cpython-38.pyc | Bin 0 -> 9686 bytes .../v129/__pycache__/memory.cpython-38.pyc | Bin 0 -> 7460 bytes .../v129/__pycache__/network.cpython-38.pyc | Bin 0 -> 116231 bytes .../v129/__pycache__/overlay.cpython-38.pyc | Bin 0 -> 37591 bytes .../v129/__pycache__/page.cpython-38.pyc | Bin 0 -> 117694 bytes .../__pycache__/performance.cpython-38.pyc | Bin 0 -> 3400 bytes .../performance_timeline.cpython-38.pyc | Bin 0 -> 6349 bytes .../v129/__pycache__/preload.cpython-38.pyc | Bin 0 -> 21608 bytes .../v129/__pycache__/profiler.cpython-38.pyc | Bin 0 -> 13593 bytes .../v129/__pycache__/pwa.cpython-38.pyc | Bin 0 -> 9559 bytes .../v129/__pycache__/runtime.cpython-38.pyc | Bin 0 -> 48759 bytes .../v129/__pycache__/schema.cpython-38.pyc | Bin 0 -> 1549 bytes .../v129/__pycache__/security.cpython-38.pyc | Bin 0 -> 15237 bytes .../__pycache__/service_worker.cpython-38.pyc | Bin 0 -> 10972 bytes .../v129/__pycache__/storage.cpython-38.pyc | Bin 0 -> 65578 bytes .../__pycache__/system_info.cpython-38.pyc | Bin 0 -> 11422 bytes .../v129/__pycache__/target.cpython-38.pyc | Bin 0 -> 22396 bytes .../v129/__pycache__/tethering.cpython-38.pyc | Bin 0 -> 1621 bytes .../v129/__pycache__/tracing.cpython-38.pyc | Bin 0 -> 12615 bytes .../v129/__pycache__/util.cpython-38.pyc | Bin 0 -> 853 bytes .../v129/__pycache__/web_audio.cpython-38.pyc | Bin 0 -> 17564 bytes .../v129/__pycache__/web_authn.cpython-38.pyc | Bin 0 -> 13283 bytes .../common/devtools/v129/accessibility.py | 647 ++ .../common/devtools/v129/animation.py | 491 + .../webdriver/common/devtools/v129/audits.py | 1532 +++ .../common/devtools/v129/autofill.py | 283 + .../devtools/v129/background_service.py | 213 + .../devtools/v129/bluetooth_emulation.py | 196 + .../webdriver/common/devtools/v129/browser.py | 725 ++ .../common/devtools/v129/cache_storage.py | 309 + .../webdriver/common/devtools/v129/cast.py | 170 + .../webdriver/common/devtools/v129/console.py | 105 + .../webdriver/common/devtools/v129/css.py | 2168 ++++ .../common/devtools/v129/database.py | 162 + .../common/devtools/v129/debugger.py | 1336 +++ .../common/devtools/v129/device_access.py | 139 + .../devtools/v129/device_orientation.py | 43 + .../webdriver/common/devtools/v129/dom.py | 2082 ++++ .../common/devtools/v129/dom_debugger.py | 312 + .../common/devtools/v129/dom_snapshot.py | 870 ++ .../common/devtools/v129/dom_storage.py | 220 + .../common/devtools/v129/emulation.py | 1195 +++ .../common/devtools/v129/event_breakpoints.py | 54 + .../common/devtools/v129/extensions.py | 144 + .../webdriver/common/devtools/v129/fed_cm.py | 281 + .../webdriver/common/devtools/v129/fetch.py | 503 + .../common/devtools/v129/file_system.py | 113 + .../devtools/v129/headless_experimental.py | 104 + .../common/devtools/v129/heap_profiler.py | 395 + .../common/devtools/v129/indexed_db.py | 525 + .../webdriver/common/devtools/v129/input_.py | 699 ++ .../common/devtools/v129/inspector.py | 76 + .../webdriver/common/devtools/v129/io.py | 99 + .../common/devtools/v129/layer_tree.py | 462 + .../webdriver/common/devtools/v129/log.py | 188 + .../webdriver/common/devtools/v129/media.py | 288 + .../webdriver/common/devtools/v129/memory.py | 261 + .../webdriver/common/devtools/v129/network.py | 4023 ++++++++ .../webdriver/common/devtools/v129/overlay.py | 1383 +++ .../webdriver/common/devtools/v129/page.py | 3814 +++++++ .../common/devtools/v129/performance.py | 116 + .../devtools/v129/performance_timeline.py | 198 + .../webdriver/common/devtools/v129/preload.py | 527 + .../common/devtools/v129/profiler.py | 418 + .../webdriver/common/devtools/v129/pwa.py | 260 + .../webdriver/common/devtools/v129/py.typed | 0 .../webdriver/common/devtools/v129/runtime.py | 1583 +++ .../webdriver/common/devtools/v129/schema.py | 48 + .../common/devtools/v129/security.py | 507 + .../common/devtools/v129/service_worker.py | 414 + .../webdriver/common/devtools/v129/storage.py | 2053 ++++ .../common/devtools/v129/system_info.py | 366 + .../webdriver/common/devtools/v129/target.py | 713 ++ .../common/devtools/v129/tethering.py | 63 + .../webdriver/common/devtools/v129/tracing.py | 360 + .../webdriver/common/devtools/v129/util.py | 20 + .../common/devtools/v129/web_audio.py | 603 ++ .../common/devtools/v129/web_authn.py | 528 + .../common/devtools/v130/__init__.py | 60 + .../v130/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1972 bytes .../__pycache__/accessibility.cpython-38.pyc | Bin 0 -> 20697 bytes .../v130/__pycache__/animation.cpython-38.pyc | Bin 0 -> 11918 bytes .../v130/__pycache__/audits.cpython-38.pyc | Bin 0 -> 56674 bytes .../v130/__pycache__/autofill.cpython-38.pyc | Bin 0 -> 8755 bytes .../background_service.cpython-38.pyc | Bin 0 -> 6056 bytes .../bluetooth_emulation.cpython-38.pyc | Bin 0 -> 5970 bytes .../v130/__pycache__/browser.cpython-38.pyc | Bin 0 -> 20559 bytes .../__pycache__/cache_storage.cpython-38.pyc | Bin 0 -> 9308 bytes .../v130/__pycache__/cast.cpython-38.pyc | Bin 0 -> 4425 bytes .../v130/__pycache__/console.cpython-38.pyc | Bin 0 -> 2706 bytes .../v130/__pycache__/css.cpython-38.pyc | Bin 0 -> 63972 bytes .../v130/__pycache__/database.cpython-38.pyc | Bin 0 -> 4859 bytes .../v130/__pycache__/debugger.cpython-38.pyc | Bin 0 -> 41636 bytes .../__pycache__/device_access.cpython-38.pyc | Bin 0 -> 4334 bytes .../device_orientation.cpython-38.pyc | Bin 0 -> 1217 bytes .../v130/__pycache__/dom.cpython-38.pyc | Bin 0 -> 59552 bytes .../__pycache__/dom_debugger.cpython-38.pyc | Bin 0 -> 8463 bytes .../__pycache__/dom_snapshot.cpython-38.pyc | Bin 0 -> 30679 bytes .../__pycache__/dom_storage.cpython-38.pyc | Bin 0 -> 6421 bytes .../v130/__pycache__/emulation.cpython-38.pyc | Bin 0 -> 33776 bytes .../event_breakpoints.cpython-38.pyc | Bin 0 -> 1430 bytes .../__pycache__/extensions.cpython-38.pyc | Bin 0 -> 4216 bytes .../v130/__pycache__/fed_cm.cpython-38.pyc | Bin 0 -> 7826 bytes .../v130/__pycache__/fetch.cpython-38.pyc | Bin 0 -> 16865 bytes .../__pycache__/file_system.cpython-38.pyc | Bin 0 -> 4027 bytes .../headless_experimental.cpython-38.pyc | Bin 0 -> 4214 bytes .../__pycache__/heap_profiler.cpython-38.pyc | Bin 0 -> 13504 bytes .../__pycache__/indexed_db.cpython-38.pyc | Bin 0 -> 15024 bytes .../v130/__pycache__/input_.cpython-38.pyc | Bin 0 -> 22743 bytes .../v130/__pycache__/inspector.cpython-38.pyc | Bin 0 -> 2228 bytes .../v130/__pycache__/io.cpython-38.pyc | Bin 0 -> 3291 bytes .../__pycache__/layer_tree.cpython-38.pyc | Bin 0 -> 14060 bytes .../v130/__pycache__/log.cpython-38.pyc | Bin 0 -> 5084 bytes .../v130/__pycache__/media.cpython-38.pyc | Bin 0 -> 9686 bytes .../v130/__pycache__/memory.cpython-38.pyc | Bin 0 -> 8794 bytes .../v130/__pycache__/network.cpython-38.pyc | Bin 0 -> 116271 bytes .../v130/__pycache__/overlay.cpython-38.pyc | Bin 0 -> 37591 bytes .../v130/__pycache__/page.cpython-38.pyc | Bin 0 -> 118385 bytes .../__pycache__/performance.cpython-38.pyc | Bin 0 -> 3400 bytes .../performance_timeline.cpython-38.pyc | Bin 0 -> 6349 bytes .../v130/__pycache__/preload.cpython-38.pyc | Bin 0 -> 21525 bytes .../v130/__pycache__/profiler.cpython-38.pyc | Bin 0 -> 13593 bytes .../v130/__pycache__/pwa.cpython-38.pyc | Bin 0 -> 9559 bytes .../v130/__pycache__/runtime.cpython-38.pyc | Bin 0 -> 48759 bytes .../v130/__pycache__/schema.cpython-38.pyc | Bin 0 -> 1549 bytes .../v130/__pycache__/security.cpython-38.pyc | Bin 0 -> 15237 bytes .../__pycache__/service_worker.cpython-38.pyc | Bin 0 -> 10972 bytes .../v130/__pycache__/storage.cpython-38.pyc | Bin 0 -> 67085 bytes .../__pycache__/system_info.cpython-38.pyc | Bin 0 -> 11422 bytes .../v130/__pycache__/target.cpython-38.pyc | Bin 0 -> 22396 bytes .../v130/__pycache__/tethering.cpython-38.pyc | Bin 0 -> 1621 bytes .../v130/__pycache__/tracing.cpython-38.pyc | Bin 0 -> 12615 bytes .../v130/__pycache__/util.cpython-38.pyc | Bin 0 -> 853 bytes .../v130/__pycache__/web_audio.cpython-38.pyc | Bin 0 -> 17564 bytes .../v130/__pycache__/web_authn.cpython-38.pyc | Bin 0 -> 13283 bytes .../common/devtools/v130/accessibility.py | 647 ++ .../common/devtools/v130/animation.py | 491 + .../webdriver/common/devtools/v130/audits.py | 1533 +++ .../common/devtools/v130/autofill.py | 283 + .../devtools/v130/background_service.py | 213 + .../devtools/v130/bluetooth_emulation.py | 196 + .../webdriver/common/devtools/v130/browser.py | 726 ++ .../common/devtools/v130/cache_storage.py | 309 + .../webdriver/common/devtools/v130/cast.py | 170 + .../webdriver/common/devtools/v130/console.py | 105 + .../webdriver/common/devtools/v130/css.py | 2168 ++++ .../common/devtools/v130/database.py | 162 + .../common/devtools/v130/debugger.py | 1336 +++ .../common/devtools/v130/device_access.py | 139 + .../devtools/v130/device_orientation.py | 43 + .../webdriver/common/devtools/v130/dom.py | 2115 ++++ .../common/devtools/v130/dom_debugger.py | 312 + .../common/devtools/v130/dom_snapshot.py | 870 ++ .../common/devtools/v130/dom_storage.py | 220 + .../common/devtools/v130/emulation.py | 1195 +++ .../common/devtools/v130/event_breakpoints.py | 54 + .../common/devtools/v130/extensions.py | 144 + .../webdriver/common/devtools/v130/fed_cm.py | 281 + .../webdriver/common/devtools/v130/fetch.py | 503 + .../common/devtools/v130/file_system.py | 113 + .../devtools/v130/headless_experimental.py | 104 + .../common/devtools/v130/heap_profiler.py | 395 + .../common/devtools/v130/indexed_db.py | 525 + .../webdriver/common/devtools/v130/input_.py | 699 ++ .../common/devtools/v130/inspector.py | 76 + .../webdriver/common/devtools/v130/io.py | 99 + .../common/devtools/v130/layer_tree.py | 462 + .../webdriver/common/devtools/v130/log.py | 188 + .../webdriver/common/devtools/v130/media.py | 288 + .../webdriver/common/devtools/v130/memory.py | 303 + .../webdriver/common/devtools/v130/network.py | 4023 ++++++++ .../webdriver/common/devtools/v130/overlay.py | 1383 +++ .../webdriver/common/devtools/v130/page.py | 3837 +++++++ .../common/devtools/v130/performance.py | 116 + .../devtools/v130/performance_timeline.py | 198 + .../webdriver/common/devtools/v130/preload.py | 526 + .../common/devtools/v130/profiler.py | 418 + .../webdriver/common/devtools/v130/pwa.py | 260 + .../webdriver/common/devtools/v130/py.typed | 0 .../webdriver/common/devtools/v130/runtime.py | 1583 +++ .../webdriver/common/devtools/v130/schema.py | 48 + .../common/devtools/v130/security.py | 507 + .../common/devtools/v130/service_worker.py | 414 + .../webdriver/common/devtools/v130/storage.py | 2090 ++++ .../common/devtools/v130/system_info.py | 366 + .../webdriver/common/devtools/v130/target.py | 713 ++ .../common/devtools/v130/tethering.py | 63 + .../webdriver/common/devtools/v130/tracing.py | 360 + .../webdriver/common/devtools/v130/util.py | 20 + .../common/devtools/v130/web_audio.py | 603 ++ .../common/devtools/v130/web_authn.py | 528 + .../common/devtools/v131/__init__.py | 60 + .../v131/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1972 bytes .../__pycache__/accessibility.cpython-38.pyc | Bin 0 -> 20697 bytes .../v131/__pycache__/animation.cpython-38.pyc | Bin 0 -> 11918 bytes .../v131/__pycache__/audits.cpython-38.pyc | Bin 0 -> 56815 bytes .../v131/__pycache__/autofill.cpython-38.pyc | Bin 0 -> 8755 bytes .../background_service.cpython-38.pyc | Bin 0 -> 6056 bytes .../bluetooth_emulation.cpython-38.pyc | Bin 0 -> 5970 bytes .../v131/__pycache__/browser.cpython-38.pyc | Bin 0 -> 20559 bytes .../__pycache__/cache_storage.cpython-38.pyc | Bin 0 -> 9308 bytes .../v131/__pycache__/cast.cpython-38.pyc | Bin 0 -> 4425 bytes .../v131/__pycache__/console.cpython-38.pyc | Bin 0 -> 2706 bytes .../v131/__pycache__/css.cpython-38.pyc | Bin 0 -> 63972 bytes .../v131/__pycache__/database.cpython-38.pyc | Bin 0 -> 4859 bytes .../v131/__pycache__/debugger.cpython-38.pyc | Bin 0 -> 42732 bytes .../__pycache__/device_access.cpython-38.pyc | Bin 0 -> 4334 bytes .../device_orientation.cpython-38.pyc | Bin 0 -> 1217 bytes .../v131/__pycache__/dom.cpython-38.pyc | Bin 0 -> 59552 bytes .../__pycache__/dom_debugger.cpython-38.pyc | Bin 0 -> 8463 bytes .../__pycache__/dom_snapshot.cpython-38.pyc | Bin 0 -> 30679 bytes .../__pycache__/dom_storage.cpython-38.pyc | Bin 0 -> 6421 bytes .../v131/__pycache__/emulation.cpython-38.pyc | Bin 0 -> 33748 bytes .../event_breakpoints.cpython-38.pyc | Bin 0 -> 1430 bytes .../__pycache__/extensions.cpython-38.pyc | Bin 0 -> 4216 bytes .../v131/__pycache__/fed_cm.cpython-38.pyc | Bin 0 -> 7826 bytes .../v131/__pycache__/fetch.cpython-38.pyc | Bin 0 -> 16865 bytes .../__pycache__/file_system.cpython-38.pyc | Bin 0 -> 4027 bytes .../headless_experimental.cpython-38.pyc | Bin 0 -> 4214 bytes .../__pycache__/heap_profiler.cpython-38.pyc | Bin 0 -> 13504 bytes .../__pycache__/indexed_db.cpython-38.pyc | Bin 0 -> 15024 bytes .../v131/__pycache__/input_.cpython-38.pyc | Bin 0 -> 22743 bytes .../v131/__pycache__/inspector.cpython-38.pyc | Bin 0 -> 2228 bytes .../v131/__pycache__/io.cpython-38.pyc | Bin 0 -> 3291 bytes .../__pycache__/layer_tree.cpython-38.pyc | Bin 0 -> 14060 bytes .../v131/__pycache__/log.cpython-38.pyc | Bin 0 -> 5084 bytes .../v131/__pycache__/media.cpython-38.pyc | Bin 0 -> 9686 bytes .../v131/__pycache__/memory.cpython-38.pyc | Bin 0 -> 8794 bytes .../v131/__pycache__/network.cpython-38.pyc | Bin 0 -> 116271 bytes .../v131/__pycache__/overlay.cpython-38.pyc | Bin 0 -> 37567 bytes .../v131/__pycache__/page.cpython-38.pyc | Bin 0 -> 118506 bytes .../__pycache__/performance.cpython-38.pyc | Bin 0 -> 3400 bytes .../performance_timeline.cpython-38.pyc | Bin 0 -> 6349 bytes .../v131/__pycache__/preload.cpython-38.pyc | Bin 0 -> 21646 bytes .../v131/__pycache__/profiler.cpython-38.pyc | Bin 0 -> 13593 bytes .../v131/__pycache__/pwa.cpython-38.pyc | Bin 0 -> 9559 bytes .../v131/__pycache__/runtime.cpython-38.pyc | Bin 0 -> 48759 bytes .../v131/__pycache__/schema.cpython-38.pyc | Bin 0 -> 1549 bytes .../v131/__pycache__/security.cpython-38.pyc | Bin 0 -> 15237 bytes .../__pycache__/service_worker.cpython-38.pyc | Bin 0 -> 10972 bytes .../v131/__pycache__/storage.cpython-38.pyc | Bin 0 -> 67085 bytes .../__pycache__/system_info.cpython-38.pyc | Bin 0 -> 11422 bytes .../v131/__pycache__/target.cpython-38.pyc | Bin 0 -> 22396 bytes .../v131/__pycache__/tethering.cpython-38.pyc | Bin 0 -> 1621 bytes .../v131/__pycache__/tracing.cpython-38.pyc | Bin 0 -> 12615 bytes .../v131/__pycache__/util.cpython-38.pyc | Bin 0 -> 853 bytes .../v131/__pycache__/web_audio.cpython-38.pyc | Bin 0 -> 17564 bytes .../v131/__pycache__/web_authn.cpython-38.pyc | Bin 0 -> 14561 bytes .../common/devtools/v131/accessibility.py | 647 ++ .../common/devtools/v131/animation.py | 491 + .../webdriver/common/devtools/v131/audits.py | 1535 +++ .../common/devtools/v131/autofill.py | 283 + .../devtools/v131/background_service.py | 213 + .../devtools/v131/bluetooth_emulation.py | 196 + .../webdriver/common/devtools/v131/browser.py | 726 ++ .../common/devtools/v131/cache_storage.py | 309 + .../webdriver/common/devtools/v131/cast.py | 170 + .../webdriver/common/devtools/v131/console.py | 105 + .../webdriver/common/devtools/v131/css.py | 2168 ++++ .../common/devtools/v131/database.py | 162 + .../common/devtools/v131/debugger.py | 1361 +++ .../common/devtools/v131/device_access.py | 139 + .../devtools/v131/device_orientation.py | 43 + .../webdriver/common/devtools/v131/dom.py | 2115 ++++ .../common/devtools/v131/dom_debugger.py | 312 + .../common/devtools/v131/dom_snapshot.py | 870 ++ .../common/devtools/v131/dom_storage.py | 220 + .../common/devtools/v131/emulation.py | 1194 +++ .../common/devtools/v131/event_breakpoints.py | 54 + .../common/devtools/v131/extensions.py | 144 + .../webdriver/common/devtools/v131/fed_cm.py | 281 + .../webdriver/common/devtools/v131/fetch.py | 503 + .../common/devtools/v131/file_system.py | 113 + .../devtools/v131/headless_experimental.py | 104 + .../common/devtools/v131/heap_profiler.py | 395 + .../common/devtools/v131/indexed_db.py | 525 + .../webdriver/common/devtools/v131/input_.py | 699 ++ .../common/devtools/v131/inspector.py | 76 + .../webdriver/common/devtools/v131/io.py | 99 + .../common/devtools/v131/layer_tree.py | 462 + .../webdriver/common/devtools/v131/log.py | 188 + .../webdriver/common/devtools/v131/media.py | 288 + .../webdriver/common/devtools/v131/memory.py | 303 + .../webdriver/common/devtools/v131/network.py | 4023 ++++++++ .../webdriver/common/devtools/v131/overlay.py | 1383 +++ .../webdriver/common/devtools/v131/page.py | 3839 +++++++ .../common/devtools/v131/performance.py | 116 + .../devtools/v131/performance_timeline.py | 198 + .../webdriver/common/devtools/v131/preload.py | 528 + .../common/devtools/v131/profiler.py | 418 + .../webdriver/common/devtools/v131/pwa.py | 260 + .../webdriver/common/devtools/v131/py.typed | 0 .../webdriver/common/devtools/v131/runtime.py | 1583 +++ .../webdriver/common/devtools/v131/schema.py | 48 + .../common/devtools/v131/security.py | 507 + .../common/devtools/v131/service_worker.py | 414 + .../webdriver/common/devtools/v131/storage.py | 2090 ++++ .../common/devtools/v131/system_info.py | 366 + .../webdriver/common/devtools/v131/target.py | 713 ++ .../common/devtools/v131/tethering.py | 63 + .../webdriver/common/devtools/v131/tracing.py | 360 + .../webdriver/common/devtools/v131/util.py | 20 + .../common/devtools/v131/web_audio.py | 603 ++ .../common/devtools/v131/web_authn.py | 579 ++ .../webdriver/common/devtools/v85/__init__.py | 51 + .../v85/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1667 bytes .../__pycache__/accessibility.cpython-38.pyc | Bin 0 -> 14605 bytes .../v85/__pycache__/animation.cpython-38.pyc | Bin 0 -> 10231 bytes .../application_cache.cpython-38.pyc | Bin 0 -> 6203 bytes .../v85/__pycache__/audits.cpython-38.pyc | Bin 0 -> 18375 bytes .../background_service.cpython-38.pyc | Bin 0 -> 5981 bytes .../v85/__pycache__/browser.cpython-38.pyc | Bin 0 -> 16651 bytes .../__pycache__/cache_storage.cpython-38.pyc | Bin 0 -> 8621 bytes .../v85/__pycache__/cast.cpython-38.pyc | Bin 0 -> 4144 bytes .../v85/__pycache__/console.cpython-38.pyc | Bin 0 -> 2705 bytes .../v85/__pycache__/css.cpython-38.pyc | Bin 0 -> 39852 bytes .../v85/__pycache__/database.cpython-38.pyc | Bin 0 -> 4858 bytes .../v85/__pycache__/debugger.cpython-38.pyc | Bin 0 -> 36013 bytes .../device_orientation.cpython-38.pyc | Bin 0 -> 1216 bytes .../v85/__pycache__/dom.cpython-38.pyc | Bin 0 -> 47095 bytes .../__pycache__/dom_debugger.cpython-38.pyc | Bin 0 -> 7294 bytes .../__pycache__/dom_snapshot.cpython-38.pyc | Bin 0 -> 28931 bytes .../__pycache__/dom_storage.cpython-38.pyc | Bin 0 -> 5582 bytes .../v85/__pycache__/emulation.cpython-38.pyc | Bin 0 -> 19016 bytes .../v85/__pycache__/fetch.cpython-38.pyc | Bin 0 -> 14016 bytes .../headless_experimental.cpython-38.pyc | Bin 0 -> 4743 bytes .../__pycache__/heap_profiler.cpython-38.pyc | Bin 0 -> 11567 bytes .../v85/__pycache__/indexed_db.cpython-38.pyc | Bin 0 -> 12364 bytes .../v85/__pycache__/input_.cpython-38.pyc | Bin 0 -> 16231 bytes .../v85/__pycache__/inspector.cpython-38.pyc | Bin 0 -> 2227 bytes .../v85/__pycache__/io.cpython-38.pyc | Bin 0 -> 3300 bytes .../v85/__pycache__/layer_tree.cpython-38.pyc | Bin 0 -> 14059 bytes .../v85/__pycache__/log.cpython-38.pyc | Bin 0 -> 4986 bytes .../v85/__pycache__/media.cpython-38.pyc | Bin 0 -> 8211 bytes .../v85/__pycache__/memory.cpython-38.pyc | Bin 0 -> 7459 bytes .../v85/__pycache__/network.cpython-38.pyc | Bin 0 -> 72587 bytes .../v85/__pycache__/overlay.cpython-38.pyc | Bin 0 -> 17872 bytes .../v85/__pycache__/page.cpython-38.pyc | Bin 0 -> 63672 bytes .../__pycache__/performance.cpython-38.pyc | Bin 0 -> 3399 bytes .../v85/__pycache__/profiler.cpython-38.pyc | Bin 0 -> 18712 bytes .../v85/__pycache__/runtime.cpython-38.pyc | Bin 0 -> 42783 bytes .../v85/__pycache__/schema.cpython-38.pyc | Bin 0 -> 1548 bytes .../v85/__pycache__/security.cpython-38.pyc | Bin 0 -> 15236 bytes .../__pycache__/service_worker.cpython-38.pyc | Bin 0 -> 10840 bytes .../v85/__pycache__/storage.cpython-38.pyc | Bin 0 -> 8312 bytes .../__pycache__/system_info.cpython-38.pyc | Bin 0 -> 10979 bytes .../v85/__pycache__/target.cpython-38.pyc | Bin 0 -> 17663 bytes .../v85/__pycache__/tethering.cpython-38.pyc | Bin 0 -> 1620 bytes .../v85/__pycache__/tracing.cpython-38.pyc | Bin 0 -> 10054 bytes .../v85/__pycache__/util.cpython-38.pyc | Bin 0 -> 852 bytes .../v85/__pycache__/web_audio.cpython-38.pyc | Bin 0 -> 17562 bytes .../v85/__pycache__/web_authn.cpython-38.pyc | Bin 0 -> 8100 bytes .../common/devtools/v85/accessibility.py | 455 + .../common/devtools/v85/animation.py | 415 + .../common/devtools/v85/application_cache.py | 205 + .../webdriver/common/devtools/v85/audits.py | 527 + .../common/devtools/v85/background_service.py | 208 + .../webdriver/common/devtools/v85/browser.py | 579 ++ .../common/devtools/v85/cache_storage.py | 287 + .../webdriver/common/devtools/v85/cast.py | 153 + .../webdriver/common/devtools/v85/console.py | 105 + .../webdriver/common/devtools/v85/css.py | 1365 +++ .../webdriver/common/devtools/v85/database.py | 162 + .../webdriver/common/devtools/v85/debugger.py | 1209 +++ .../common/devtools/v85/device_orientation.py | 43 + .../webdriver/common/devtools/v85/dom.py | 1747 ++++ .../common/devtools/v85/dom_debugger.py | 278 + .../common/devtools/v85/dom_snapshot.py | 837 ++ .../common/devtools/v85/dom_storage.py | 201 + .../common/devtools/v85/emulation.py | 658 ++ .../webdriver/common/devtools/v85/fetch.py | 446 + .../devtools/v85/headless_experimental.py | 116 + .../common/devtools/v85/heap_profiler.py | 371 + .../common/devtools/v85/indexed_db.py | 461 + .../webdriver/common/devtools/v85/input_.py | 477 + .../common/devtools/v85/inspector.py | 76 + .../webdriver/common/devtools/v85/io.py | 99 + .../common/devtools/v85/layer_tree.py | 462 + .../webdriver/common/devtools/v85/log.py | 183 + .../webdriver/common/devtools/v85/media.py | 251 + .../webdriver/common/devtools/v85/memory.py | 261 + .../webdriver/common/devtools/v85/network.py | 2640 +++++ .../webdriver/common/devtools/v85/overlay.py | 698 ++ .../webdriver/common/devtools/v85/page.py | 2373 +++++ .../common/devtools/v85/performance.py | 116 + .../webdriver/common/devtools/v85/profiler.py | 596 ++ .../webdriver/common/devtools/v85/py.typed | 0 .../webdriver/common/devtools/v85/runtime.py | 1437 +++ .../webdriver/common/devtools/v85/schema.py | 48 + .../webdriver/common/devtools/v85/security.py | 509 + .../common/devtools/v85/service_worker.py | 409 + .../webdriver/common/devtools/v85/storage.py | 309 + .../common/devtools/v85/system_info.py | 347 + .../webdriver/common/devtools/v85/target.py | 599 ++ .../common/devtools/v85/tethering.py | 63 + .../webdriver/common/devtools/v85/tracing.py | 290 + .../webdriver/common/devtools/v85/util.py | 20 + .../common/devtools/v85/web_audio.py | 603 ++ .../common/devtools/v85/web_authn.py | 318 + .../webdriver/common/driver_finder.py | 99 + .../fedcm/__pycache__/account.cpython-38.pyc | Bin 0 -> 2443 bytes .../fedcm/__pycache__/dialog.cpython-38.pyc | Bin 0 -> 2378 bytes .../webdriver/common/fedcm/account.py | 71 + .../selenium/webdriver/common/fedcm/dialog.py | 64 + .../selenium/webdriver/common/keys.py | 90 + .../webdriver/common/linux/selenium-manager | Bin 0 -> 5511488 bytes .../selenium/webdriver/common/log.py | 152 + .../webdriver/common/macos/selenium-manager | Bin 0 -> 8235888 bytes .../webdriver/common/mutation-listener.js | 55 + .../selenium/webdriver/common/options.py | 536 + .../webdriver/common/print_page_options.py | 421 + .../selenium/webdriver/common/proxy.py | 307 + .../webdriver/common/selenium_manager.py | 140 + .../selenium/webdriver/common/service.py | 244 + .../selenium/webdriver/common/timeouts.py | 142 + .../selenium/webdriver/common/utils.py | 138 + .../webdriver/common/virtual_authenticator.py | 222 + .../selenium/webdriver/common/window.py | 24 + .../common/windows/selenium-manager.exe | Bin 0 -> 3740160 bytes .../selenium/webdriver/edge/__init__.py | 16 + .../edge/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 190 bytes .../edge/__pycache__/options.cpython-38.pyc | Bin 0 -> 1557 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 1118 bytes .../edge/__pycache__/service.cpython-38.pyc | Bin 0 -> 1688 bytes .../edge/__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 1487 bytes .../selenium/webdriver/edge/options.py | 48 + .../webdriver/edge/remote_connection.py | 42 + .../selenium/webdriver/edge/service.py | 55 + .../selenium/webdriver/edge/webdriver.py | 51 + .../selenium/webdriver/firefox/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 193 bytes .../__pycache__/firefox_binary.cpython-38.pyc | Bin 0 -> 6907 bytes .../firefox_profile.cpython-38.pyc | Bin 0 -> 10406 bytes .../__pycache__/options.cpython-38.pyc | Bin 0 -> 4352 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 1489 bytes .../__pycache__/service.cpython-38.pyc | Bin 0 -> 2005 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 7092 bytes .../webdriver/firefox/firefox_binary.py | 231 + .../webdriver/firefox/firefox_profile.py | 328 + .../selenium/webdriver/firefox/options.py | 136 + .../webdriver/firefox/remote_connection.py | 47 + .../selenium/webdriver/firefox/service.py | 64 + .../selenium/webdriver/firefox/webdriver.py | 222 + .../webdriver/firefox/webdriver_prefs.json | 69 + .../selenium/webdriver/ie/__init__.py | 16 + .../ie/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 188 bytes .../ie/__pycache__/options.cpython-38.pyc | Bin 0 -> 6030 bytes .../ie/__pycache__/service.cpython-38.pyc | Bin 0 -> 1891 bytes .../ie/__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 2208 bytes .../selenium/webdriver/ie/options.py | 406 + .../selenium/webdriver/ie/service.py | 66 + .../selenium/webdriver/ie/webdriver.py | 75 + .../selenium/webdriver/remote/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 192 bytes .../bidi_connection.cpython-38.pyc | Bin 0 -> 565 bytes .../__pycache__/client_config.cpython-38.pyc | Bin 0 -> 9413 bytes .../remote/__pycache__/command.cpython-38.pyc | Bin 0 -> 5625 bytes .../__pycache__/errorhandler.cpython-38.pyc | Bin 0 -> 6991 bytes .../remote/__pycache__/fedcm.cpython-38.pyc | Bin 0 -> 2961 bytes .../__pycache__/file_detector.cpython-38.pyc | Bin 0 -> 1788 bytes .../locator_converter.cpython-38.pyc | Bin 0 -> 639 bytes .../remote/__pycache__/mobile.cpython-38.pyc | Bin 0 -> 2783 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 17741 bytes .../__pycache__/script_key.cpython-38.pyc | Bin 0 -> 953 bytes .../__pycache__/shadowroot.cpython-38.pyc | Bin 0 -> 2535 bytes .../__pycache__/switch_to.cpython-38.pyc | Bin 0 -> 4829 bytes .../remote/__pycache__/utils.cpython-38.pyc | Bin 0 -> 580 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 44482 bytes .../__pycache__/webelement.cpython-38.pyc | Bin 0 -> 16319 bytes .../websocket_connection.cpython-38.pyc | Bin 0 -> 4848 bytes .../webdriver/remote/bidi_connection.py | 23 + .../webdriver/remote/client_config.py | 291 + .../selenium/webdriver/remote/command.py | 134 + .../selenium/webdriver/remote/errorhandler.py | 232 + .../selenium/webdriver/remote/fedcm.py | 70 + .../webdriver/remote/file_detector.py | 53 + .../selenium/webdriver/remote/findElements.js | 122 + .../selenium/webdriver/remote/getAttribute.js | 6 + .../selenium/webdriver/remote/isDisplayed.js | 28 + .../webdriver/remote/locator_converter.py | 28 + .../selenium/webdriver/remote/mobile.py | 81 + .../webdriver/remote/remote_connection.py | 489 + .../selenium/webdriver/remote/script_key.py | 33 + .../selenium/webdriver/remote/shadowroot.py | 82 + .../selenium/webdriver/remote/switch_to.py | 152 + .../selenium/webdriver/remote/utils.py | 28 + .../selenium/webdriver/remote/webdriver.py | 1308 +++ .../selenium/webdriver/remote/webelement.py | 443 + .../webdriver/remote/websocket_connection.py | 146 + .../selenium/webdriver/safari/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 192 bytes .../safari/__pycache__/options.cpython-38.pyc | Bin 0 -> 2690 bytes .../__pycache__/permissions.cpython-38.pyc | Bin 0 -> 470 bytes .../remote_connection.cpython-38.pyc | Bin 0 -> 1346 bytes .../safari/__pycache__/service.cpython-38.pyc | Bin 0 -> 2491 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 2899 bytes .../selenium/webdriver/safari/options.py | 115 + .../selenium/webdriver/safari/permissions.py | 23 + .../webdriver/safari/remote_connection.py | 45 + .../selenium/webdriver/safari/service.py | 76 + .../selenium/webdriver/safari/webdriver.py | 108 + .../selenium/webdriver/support/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 193 bytes .../abstract_event_listener.cpython-38.pyc | Bin 0 -> 3496 bytes .../support/__pycache__/color.cpython-38.pyc | Bin 0 -> 10665 bytes .../event_firing_webdriver.cpython-38.pyc | Bin 0 -> 9419 bytes .../support/__pycache__/events.cpython-38.pyc | Bin 0 -> 327 bytes .../expected_conditions.cpython-38.pyc | Bin 0 -> 17745 bytes .../relative_locator.cpython-38.pyc | Bin 0 -> 6562 bytes .../support/__pycache__/select.cpython-38.pyc | Bin 0 -> 8338 bytes .../support/__pycache__/ui.cpython-38.pyc | Bin 0 -> 295 bytes .../support/__pycache__/wait.cpython-38.pyc | Bin 0 -> 4351 bytes .../support/abstract_event_listener.py | 77 + .../selenium/webdriver/support/color.py | 334 + .../support/event_firing_webdriver.py | 231 + .../selenium/webdriver/support/events.py | 19 + .../webdriver/support/expected_conditions.py | 555 ++ .../webdriver/support/relative_locator.py | 192 + .../selenium/webdriver/support/select.py | 243 + .../selenium/webdriver/support/ui.py | 21 + .../selenium/webdriver/support/wait.py | 128 + .../selenium/webdriver/webkitgtk/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 195 bytes .../__pycache__/options.cpython-38.pyc | Bin 0 -> 2319 bytes .../__pycache__/service.cpython-38.pyc | Bin 0 -> 2050 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 1770 bytes .../selenium/webdriver/webkitgtk/options.py | 77 + .../selenium/webdriver/webkitgtk/service.py | 60 + .../selenium/webdriver/webkitgtk/webdriver.py | 60 + .../selenium/webdriver/wpewebkit/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 195 bytes .../__pycache__/options.cpython-38.pyc | Bin 0 -> 1919 bytes .../__pycache__/service.cpython-38.pyc | Bin 0 -> 1824 bytes .../__pycache__/webdriver.cpython-38.pyc | Bin 0 -> 1774 bytes .../selenium/webdriver/wpewebkit/options.py | 64 + .../selenium/webdriver/wpewebkit/service.py | 55 + .../selenium/webdriver/wpewebkit/webdriver.py | 60 + .../setuptools-41.2.0.dist-info/INSTALLER | 1 + .../setuptools-41.2.0.dist-info/LICENSE | 19 + .../setuptools-41.2.0.dist-info/METADATA | 77 + .../setuptools-41.2.0.dist-info/RECORD | 186 + .../setuptools-41.2.0.dist-info/WHEEL | 6 + .../dependency_links.txt | 2 + .../entry_points.txt | 65 + .../setuptools-41.2.0.dist-info/top_level.txt | 3 + .../setuptools-41.2.0.dist-info/zip-safe | 1 + .../Lib/site-packages/setuptools/__init__.py | 228 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 7801 bytes .../_deprecation_warning.cpython-38.pyc | Bin 0 -> 549 bytes .../__pycache__/archive_util.cpython-38.pyc | Bin 0 -> 5161 bytes .../__pycache__/build_meta.cpython-38.pyc | Bin 0 -> 8528 bytes .../__pycache__/config.cpython-38.pyc | Bin 0 -> 17809 bytes .../__pycache__/dep_util.cpython-38.pyc | Bin 0 -> 852 bytes .../__pycache__/depends.cpython-38.pyc | Bin 0 -> 5321 bytes .../__pycache__/dist.cpython-38.pyc | Bin 0 -> 42180 bytes .../__pycache__/extension.cpython-38.pyc | Bin 0 -> 1994 bytes .../__pycache__/glibc.cpython-38.pyc | Bin 0 -> 1563 bytes .../__pycache__/glob.cpython-38.pyc | Bin 0 -> 3766 bytes .../__pycache__/launch.cpython-38.pyc | Bin 0 -> 857 bytes .../__pycache__/lib2to3_ex.cpython-38.pyc | Bin 0 -> 2444 bytes .../__pycache__/monkey.cpython-38.pyc | Bin 0 -> 4677 bytes .../__pycache__/msvc.cpython-38.pyc | Bin 0 -> 34473 bytes .../__pycache__/namespaces.cpython-38.pyc | Bin 0 -> 3649 bytes .../__pycache__/package_index.cpython-38.pyc | Bin 0 -> 32994 bytes .../__pycache__/pep425tags.cpython-38.pyc | Bin 0 -> 7236 bytes .../__pycache__/py27compat.cpython-38.pyc | Bin 0 -> 817 bytes .../__pycache__/py31compat.cpython-38.pyc | Bin 0 -> 1224 bytes .../__pycache__/py33compat.cpython-38.pyc | Bin 0 -> 1441 bytes .../__pycache__/sandbox.cpython-38.pyc | Bin 0 -> 15569 bytes .../__pycache__/site-patch.cpython-38.pyc | Bin 0 -> 1507 bytes .../__pycache__/ssl_support.cpython-38.pyc | Bin 0 -> 6888 bytes .../__pycache__/unicode_utils.cpython-38.pyc | Bin 0 -> 1184 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 325 bytes .../__pycache__/wheel.cpython-38.pyc | Bin 0 -> 7087 bytes .../windows_support.cpython-38.pyc | Bin 0 -> 1022 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 187 bytes .../__pycache__/pyparsing.cpython-38.pyc | Bin 0 -> 201664 bytes .../_vendor/__pycache__/six.cpython-38.pyc | Bin 0 -> 24460 bytes .../setuptools/_vendor/packaging/__about__.py | 21 + .../setuptools/_vendor/packaging/__init__.py | 14 + .../__pycache__/__about__.cpython-38.pyc | Bin 0 -> 737 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 575 bytes .../__pycache__/_compat.cpython-38.pyc | Bin 0 -> 1011 bytes .../__pycache__/_structures.cpython-38.pyc | Bin 0 -> 2793 bytes .../__pycache__/markers.cpython-38.pyc | Bin 0 -> 8946 bytes .../__pycache__/requirements.cpython-38.pyc | Bin 0 -> 3902 bytes .../__pycache__/specifiers.cpython-38.pyc | Bin 0 -> 19817 bytes .../__pycache__/utils.cpython-38.pyc | Bin 0 -> 496 bytes .../__pycache__/version.cpython-38.pyc | Bin 0 -> 10664 bytes .../setuptools/_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../setuptools/_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 ++ .../setuptools/_vendor/packaging/utils.py | 14 + .../setuptools/_vendor/packaging/version.py | 393 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/_vendor/six.py | 868 ++ .../site-packages/setuptools/archive_util.py | 173 + .../site-packages/setuptools/build_meta.py | 257 + myenv/Lib/site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes myenv/Lib/site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes myenv/Lib/site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 18 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 771 bytes .../command/__pycache__/alias.cpython-38.pyc | Bin 0 -> 2425 bytes .../__pycache__/bdist_egg.cpython-38.pyc | Bin 0 -> 14211 bytes .../__pycache__/bdist_rpm.cpython-38.pyc | Bin 0 -> 1817 bytes .../__pycache__/bdist_wininst.cpython-38.pyc | Bin 0 -> 987 bytes .../__pycache__/build_clib.cpython-38.pyc | Bin 0 -> 2470 bytes .../__pycache__/build_ext.cpython-38.pyc | Bin 0 -> 9928 bytes .../__pycache__/build_py.cpython-38.pyc | Bin 0 -> 8674 bytes .../__pycache__/develop.cpython-38.pyc | Bin 0 -> 6534 bytes .../__pycache__/dist_info.cpython-38.pyc | Bin 0 -> 1394 bytes .../__pycache__/easy_install.cpython-38.pyc | Bin 0 -> 65295 bytes .../__pycache__/egg_info.cpython-38.pyc | Bin 0 -> 21797 bytes .../__pycache__/install.cpython-38.pyc | Bin 0 -> 4024 bytes .../install_egg_info.cpython-38.pyc | Bin 0 -> 2436 bytes .../__pycache__/install_lib.cpython-38.pyc | Bin 0 -> 4157 bytes .../install_scripts.cpython-38.pyc | Bin 0 -> 2306 bytes .../__pycache__/py36compat.cpython-38.pyc | Bin 0 -> 4643 bytes .../__pycache__/register.cpython-38.pyc | Bin 0 -> 788 bytes .../command/__pycache__/rotate.cpython-38.pyc | Bin 0 -> 2553 bytes .../__pycache__/saveopts.cpython-38.pyc | Bin 0 -> 922 bytes .../command/__pycache__/sdist.cpython-38.pyc | Bin 0 -> 6840 bytes .../command/__pycache__/setopt.cpython-38.pyc | Bin 0 -> 4570 bytes .../command/__pycache__/test.cpython-38.pyc | Bin 0 -> 8273 bytes .../command/__pycache__/upload.cpython-38.pyc | Bin 0 -> 5236 bytes .../__pycache__/upload_docs.cpython-38.pyc | Bin 0 -> 6173 bytes .../site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/bdist_egg.py | 502 + .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/build_clib.py | 98 + .../setuptools/command/build_ext.py | 327 + .../setuptools/command/build_py.py | 270 + .../setuptools/command/develop.py | 221 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2342 +++++ .../setuptools/command/egg_info.py | 717 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 121 + .../setuptools/command/install_scripts.py | 65 + .../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 | 221 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 271 + .../setuptools/command/upload.py | 196 + .../setuptools/command/upload_docs.py | 206 + myenv/Lib/site-packages/setuptools/config.py | 656 ++ .../Lib/site-packages/setuptools/dep_util.py | 23 + myenv/Lib/site-packages/setuptools/depends.py | 186 + myenv/Lib/site-packages/setuptools/dist.py | 1280 +++ .../Lib/site-packages/setuptools/extension.py | 57 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2440 bytes myenv/Lib/site-packages/setuptools/glibc.py | 86 + myenv/Lib/site-packages/setuptools/glob.py | 174 + myenv/Lib/site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes myenv/Lib/site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes myenv/Lib/site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes myenv/Lib/site-packages/setuptools/launch.py | 35 + .../site-packages/setuptools/lib2to3_ex.py | 62 + myenv/Lib/site-packages/setuptools/monkey.py | 179 + myenv/Lib/site-packages/setuptools/msvc.py | 1301 +++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1136 +++ .../site-packages/setuptools/pep425tags.py | 319 + .../site-packages/setuptools/py27compat.py | 28 + .../site-packages/setuptools/py31compat.py | 32 + .../site-packages/setuptools/py33compat.py | 59 + myenv/Lib/site-packages/setuptools/sandbox.py | 491 + .../setuptools/script (dev).tmpl | 6 + .../Lib/site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/site-patch.py | 74 + .../site-packages/setuptools/ssl_support.py | 260 + .../site-packages/setuptools/unicode_utils.py | 44 + myenv/Lib/site-packages/setuptools/version.py | 6 + myenv/Lib/site-packages/setuptools/wheel.py | 211 + .../setuptools/windows_support.py | 29 + .../sniffio-1.3.1.dist-info/INSTALLER | 1 + .../sniffio-1.3.1.dist-info/LICENSE | 3 + .../sniffio-1.3.1.dist-info/LICENSE.APACHE2 | 202 + .../sniffio-1.3.1.dist-info/LICENSE.MIT | 20 + .../sniffio-1.3.1.dist-info/METADATA | 104 + .../sniffio-1.3.1.dist-info/RECORD | 19 + .../sniffio-1.3.1.dist-info/WHEEL | 5 + .../sniffio-1.3.1.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/sniffio/__init__.py | 17 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 462 bytes .../sniffio/__pycache__/_impl.cpython-38.pyc | Bin 0 -> 2675 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 194 bytes myenv/Lib/site-packages/sniffio/_impl.py | 95 + .../site-packages/sniffio/_tests/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 180 bytes .../__pycache__/test_sniffio.cpython-38.pyc | Bin 0 -> 2004 bytes .../sniffio/_tests/test_sniffio.py | 84 + myenv/Lib/site-packages/sniffio/_version.py | 3 + myenv/Lib/site-packages/sniffio/py.typed | 0 myenv/Lib/site-packages/socks.py | 847 ++ myenv/Lib/site-packages/sockshandler.py | 111 + .../INSTALLER | 1 + .../sortedcontainers-2.4.0.dist-info/LICENSE | 13 + .../sortedcontainers-2.4.0.dist-info/METADATA | 264 + .../sortedcontainers-2.4.0.dist-info/RECORD | 14 + .../sortedcontainers-2.4.0.dist-info/WHEEL | 6 + .../top_level.txt | 1 + .../sortedcontainers/__init__.py | 74 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2311 bytes .../__pycache__/sorteddict.cpython-38.pyc | Bin 0 -> 23176 bytes .../__pycache__/sortedlist.cpython-38.pyc | Bin 0 -> 60480 bytes .../__pycache__/sortedset.cpython-38.pyc | Bin 0 -> 19778 bytes .../sortedcontainers/sorteddict.py | 812 ++ .../sortedcontainers/sortedlist.py | 2646 +++++ .../sortedcontainers/sortedset.py | 733 ++ .../soupsieve-2.7.dist-info/INSTALLER | 1 + .../soupsieve-2.7.dist-info/METADATA | 115 + .../soupsieve-2.7.dist-info/RECORD | 20 + .../soupsieve-2.7.dist-info/WHEEL | 4 + .../licenses/LICENSE.md | 21 + myenv/Lib/site-packages/soupsieve/__init__.py | 168 + myenv/Lib/site-packages/soupsieve/__meta__.py | 197 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 4298 bytes .../__pycache__/__meta__.cpython-38.pyc | Bin 0 -> 5963 bytes .../__pycache__/css_match.cpython-38.pyc | Bin 0 -> 38023 bytes .../__pycache__/css_parser.cpython-38.pyc | Bin 0 -> 29095 bytes .../__pycache__/css_types.cpython-38.pyc | Bin 0 -> 12866 bytes .../__pycache__/pretty.cpython-38.pyc | Bin 0 -> 3710 bytes .../soupsieve/__pycache__/util.cpython-38.pyc | Bin 0 -> 3299 bytes .../Lib/site-packages/soupsieve/css_match.py | 1645 +++ .../Lib/site-packages/soupsieve/css_parser.py | 1318 +++ .../Lib/site-packages/soupsieve/css_types.py | 407 + myenv/Lib/site-packages/soupsieve/pretty.py | 139 + myenv/Lib/site-packages/soupsieve/py.typed | 0 myenv/Lib/site-packages/soupsieve/util.py | 117 + .../trio-0.27.0.dist-info/INSTALLER | 1 + .../trio-0.27.0.dist-info/LICENSE | 3 + .../trio-0.27.0.dist-info/LICENSE.APACHE2 | 202 + .../trio-0.27.0.dist-info/LICENSE.MIT | 22 + .../trio-0.27.0.dist-info/METADATA | 188 + .../trio-0.27.0.dist-info/RECORD | 286 + .../site-packages/trio-0.27.0.dist-info/WHEEL | 5 + .../trio-0.27.0.dist-info/entry_points.txt | 2 + .../trio-0.27.0.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/trio/__init__.py | 138 + myenv/Lib/site-packages/trio/__main__.py | 3 + .../trio/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2996 bytes .../trio/__pycache__/__main__.cpython-38.pyc | Bin 0 -> 226 bytes .../trio/__pycache__/_abc.cpython-38.pyc | Bin 0 -> 28205 bytes .../trio/__pycache__/_channel.cpython-38.pyc | Bin 0 -> 16059 bytes .../__pycache__/_deprecate.cpython-38.pyc | Bin 0 -> 5361 bytes .../trio/__pycache__/_dtls.cpython-38.pyc | Bin 0 -> 31839 bytes .../trio/__pycache__/_file_io.cpython-38.pyc | Bin 0 -> 22282 bytes .../_highlevel_generic.cpython-38.pyc | Bin 0 -> 5309 bytes ...ighlevel_open_tcp_listeners.cpython-38.pyc | Bin 0 -> 7107 bytes .../_highlevel_open_tcp_stream.cpython-38.pyc | Bin 0 -> 7016 bytes ..._highlevel_open_unix_stream.cpython-38.pyc | Bin 0 -> 2073 bytes .../_highlevel_serve_listeners.cpython-38.pyc | Bin 0 -> 4398 bytes .../_highlevel_socket.cpython-38.pyc | Bin 0 -> 8771 bytes .../_highlevel_ssl_helpers.cpython-38.pyc | Bin 0 -> 5935 bytes .../trio/__pycache__/_path.cpython-38.pyc | Bin 0 -> 8308 bytes .../trio/__pycache__/_repl.cpython-38.pyc | Bin 0 -> 2608 bytes .../trio/__pycache__/_signals.cpython-38.pyc | Bin 0 -> 5061 bytes .../trio/__pycache__/_socket.cpython-38.pyc | Bin 0 -> 29127 bytes .../trio/__pycache__/_ssl.cpython-38.pyc | Bin 0 -> 18807 bytes .../__pycache__/_subprocess.cpython-38.pyc | Bin 0 -> 43894 bytes .../trio/__pycache__/_sync.cpython-38.pyc | Bin 0 -> 32084 bytes .../trio/__pycache__/_threads.cpython-38.pyc | Bin 0 -> 21082 bytes .../trio/__pycache__/_timeouts.cpython-38.pyc | Bin 0 -> 6287 bytes .../__pycache__/_unix_pipes.cpython-38.pyc | Bin 0 -> 6033 bytes .../trio/__pycache__/_util.cpython-38.pyc | Bin 0 -> 10369 bytes .../trio/__pycache__/_version.cpython-38.pyc | Bin 0 -> 189 bytes .../_wait_for_object.cpython-38.pyc | Bin 0 -> 1601 bytes .../__pycache__/_windows_pipes.cpython-38.pyc | Bin 0 -> 4515 bytes .../trio/__pycache__/abc.cpython-38.pyc | Bin 0 -> 468 bytes .../__pycache__/from_thread.cpython-38.pyc | Bin 0 -> 527 bytes .../trio/__pycache__/lowlevel.cpython-38.pyc | Bin 0 -> 1960 bytes .../trio/__pycache__/socket.cpython-38.pyc | Bin 0 -> 14269 bytes .../trio/__pycache__/to_thread.cpython-38.pyc | Bin 0 -> 299 bytes myenv/Lib/site-packages/trio/_abc.py | 716 ++ myenv/Lib/site-packages/trio/_channel.py | 444 + .../Lib/site-packages/trio/_core/__init__.py | 87 + .../_core/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 2483 bytes .../__pycache__/_asyncgens.cpython-38.pyc | Bin 0 -> 4581 bytes .../__pycache__/_concat_tb.cpython-38.pyc | Bin 0 -> 2141 bytes .../__pycache__/_entry_queue.cpython-38.pyc | Bin 0 -> 6442 bytes .../__pycache__/_exceptions.cpython-38.pyc | Bin 0 -> 5268 bytes .../_generated_instrumentation.cpython-38.pyc | Bin 0 -> 1698 bytes .../_generated_io_epoll.cpython-38.pyc | Bin 0 -> 3896 bytes .../_generated_io_kqueue.cpython-38.pyc | Bin 0 -> 5154 bytes .../_generated_io_windows.cpython-38.pyc | Bin 0 -> 6132 bytes .../__pycache__/_generated_run.cpython-38.pyc | Bin 0 -> 10176 bytes .../_instrumentation.cpython-38.pyc | Bin 0 -> 3550 bytes .../__pycache__/_io_common.cpython-38.pyc | Bin 0 -> 924 bytes .../__pycache__/_io_epoll.cpython-38.pyc | Bin 0 -> 8383 bytes .../__pycache__/_io_kqueue.cpython-38.pyc | Bin 0 -> 9250 bytes .../__pycache__/_io_windows.cpython-38.pyc | Bin 0 -> 18915 bytes .../trio/_core/__pycache__/_ki.cpython-38.pyc | Bin 0 -> 4963 bytes .../_core/__pycache__/_local.cpython-38.pyc | Bin 0 -> 3245 bytes .../__pycache__/_mock_clock.cpython-38.pyc | Bin 0 -> 6024 bytes .../__pycache__/_parking_lot.cpython-38.pyc | Bin 0 -> 8242 bytes .../_core/__pycache__/_run.cpython-38.pyc | Bin 0 -> 77997 bytes .../__pycache__/_thread_cache.cpython-38.pyc | Bin 0 -> 6713 bytes .../_core/__pycache__/_traps.cpython-38.pyc | Bin 0 -> 11473 bytes .../_unbounded_queue.cpython-38.pyc | Bin 0 -> 5904 bytes .../_wakeup_socketpair.cpython-38.pyc | Bin 0 -> 2526 bytes .../__pycache__/_windows_cffi.cpython-38.pyc | Bin 0 -> 13945 bytes .../site-packages/trio/_core/_asyncgens.py | 216 + .../site-packages/trio/_core/_concat_tb.py | 130 + .../site-packages/trio/_core/_entry_queue.py | 220 + .../site-packages/trio/_core/_exceptions.py | 113 + .../trio/_core/_generated_instrumentation.py | 51 + .../trio/_core/_generated_io_epoll.py | 98 + .../trio/_core/_generated_io_kqueue.py | 156 + .../trio/_core/_generated_io_windows.py | 209 + .../trio/_core/_generated_run.py | 273 + .../trio/_core/_instrumentation.py | 108 + .../site-packages/trio/_core/_io_common.py | 31 + .../Lib/site-packages/trio/_core/_io_epoll.py | 387 + .../site-packages/trio/_core/_io_kqueue.py | 292 + .../site-packages/trio/_core/_io_windows.py | 1025 ++ myenv/Lib/site-packages/trio/_core/_ki.py | 237 + myenv/Lib/site-packages/trio/_core/_local.py | 104 + .../site-packages/trio/_core/_mock_clock.py | 164 + .../site-packages/trio/_core/_parking_lot.py | 317 + myenv/Lib/site-packages/trio/_core/_run.py | 2953 ++++++ .../trio/_core/_tests/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 180 bytes .../__pycache__/test_asyncgen.cpython-38.pyc | Bin 0 -> 9889 bytes .../test_exceptiongroup_gc.cpython-38.pyc | Bin 0 -> 2922 bytes .../test_guest_mode.cpython-38.pyc | Bin 0 -> 21364 bytes .../test_instrumentation.cpython-38.pyc | Bin 0 -> 10131 bytes .../_tests/__pycache__/test_io.cpython-38.pyc | Bin 0 -> 11197 bytes .../_tests/__pycache__/test_ki.cpython-38.pyc | Bin 0 -> 14767 bytes .../__pycache__/test_local.cpython-38.pyc | Bin 0 -> 3675 bytes .../test_mock_clock.cpython-38.pyc | Bin 0 -> 4444 bytes .../test_parking_lot.cpython-38.pyc | Bin 0 -> 8604 bytes .../__pycache__/test_run.cpython-38.pyc | Bin 0 -> 81622 bytes .../test_thread_cache.cpython-38.pyc | Bin 0 -> 7276 bytes .../__pycache__/test_tutil.cpython-38.pyc | Bin 0 -> 630 bytes .../test_unbounded_queue.cpython-38.pyc | Bin 0 -> 4333 bytes .../__pycache__/test_windows.cpython-38.pyc | Bin 0 -> 11985 bytes .../_tests/__pycache__/tutil.cpython-38.pyc | Bin 0 -> 2755 bytes .../trio/_core/_tests/test_asyncgen.py | 333 + .../_core/_tests/test_exceptiongroup_gc.py | 102 + .../trio/_core/_tests/test_guest_mode.py | 666 ++ .../trio/_core/_tests/test_instrumentation.py | 266 + .../trio/_core/_tests/test_io.py | 480 + .../trio/_core/_tests/test_ki.py | 517 + .../trio/_core/_tests/test_local.py | 118 + .../trio/_core/_tests/test_mock_clock.py | 175 + .../trio/_core/_tests/test_parking_lot.py | 384 + .../trio/_core/_tests/test_run.py | 2776 ++++++ .../trio/_core/_tests/test_thread_cache.py | 195 + .../trio/_core/_tests/test_tutil.py | 13 + .../trio/_core/_tests/test_unbounded_queue.py | 154 + .../trio/_core/_tests/test_windows.py | 299 + .../site-packages/trio/_core/_tests/tutil.py | 117 + .../__pycache__/nursery_start.cpython-38.pyc | Bin 0 -> 2551 bytes .../type_tests/__pycache__/run.cpython-38.pyc | Bin 0 -> 1386 bytes .../_core/_tests/type_tests/nursery_start.py | 76 + .../trio/_core/_tests/type_tests/run.py | 48 + .../site-packages/trio/_core/_thread_cache.py | 295 + myenv/Lib/site-packages/trio/_core/_traps.py | 287 + .../trio/_core/_unbounded_queue.py | 163 + .../trio/_core/_wakeup_socketpair.py | 75 + .../site-packages/trio/_core/_windows_cffi.py | 520 + myenv/Lib/site-packages/trio/_deprecate.py | 177 + myenv/Lib/site-packages/trio/_dtls.py | 1403 +++ myenv/Lib/site-packages/trio/_file_io.py | 509 + .../site-packages/trio/_highlevel_generic.py | 129 + .../trio/_highlevel_open_tcp_listeners.py | 251 + .../trio/_highlevel_open_tcp_stream.py | 411 + .../trio/_highlevel_open_unix_stream.py | 65 + .../trio/_highlevel_serve_listeners.py | 147 + .../site-packages/trio/_highlevel_socket.py | 414 + .../trio/_highlevel_ssl_helpers.py | 180 + myenv/Lib/site-packages/trio/_path.py | 264 + myenv/Lib/site-packages/trio/_repl.py | 92 + myenv/Lib/site-packages/trio/_signals.py | 185 + myenv/Lib/site-packages/trio/_socket.py | 1321 +++ myenv/Lib/site-packages/trio/_ssl.py | 951 ++ myenv/Lib/site-packages/trio/_subprocess.py | 1164 +++ .../trio/_subprocess_platform/__init__.py | 123 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 4145 bytes .../__pycache__/kqueue.cpython-38.pyc | Bin 0 -> 1467 bytes .../__pycache__/waitid.cpython-38.pyc | Bin 0 -> 2223 bytes .../__pycache__/windows.cpython-38.pyc | Bin 0 -> 546 bytes .../trio/_subprocess_platform/kqueue.py | 48 + .../trio/_subprocess_platform/waitid.py | 113 + .../trio/_subprocess_platform/windows.py | 11 + myenv/Lib/site-packages/trio/_sync.py | 876 ++ .../Lib/site-packages/trio/_tests/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 174 bytes .../check_type_completeness.cpython-38.pyc | Bin 0 -> 6234 bytes .../module_with_deprecations.cpython-38.pyc | Bin 0 -> 596 bytes .../__pycache__/pytest_plugin.cpython-38.pyc | Bin 0 -> 1781 bytes .../__pycache__/test_abc.cpython-38.pyc | Bin 0 -> 2742 bytes .../__pycache__/test_channel.cpython-38.pyc | Bin 0 -> 11158 bytes .../test_contextvars.cpython-38.pyc | Bin 0 -> 1900 bytes .../__pycache__/test_deprecate.cpython-38.pyc | Bin 0 -> 8623 bytes ...rict_exception_groups_false.cpython-38.pyc | Bin 0 -> 2431 bytes .../__pycache__/test_dtls.cpython-38.pyc | Bin 0 -> 22604 bytes .../__pycache__/test_exports.cpython-38.pyc | Bin 0 -> 12643 bytes .../__pycache__/test_fakenet.cpython-38.pyc | Bin 0 -> 7430 bytes .../__pycache__/test_file_io.cpython-38.pyc | Bin 0 -> 7970 bytes .../test_highlevel_generic.cpython-38.pyc | Bin 0 -> 4026 bytes ...ighlevel_open_tcp_listeners.cpython-38.pyc | Bin 0 -> 11724 bytes ...t_highlevel_open_tcp_stream.cpython-38.pyc | Bin 0 -> 16717 bytes ..._highlevel_open_unix_stream.cpython-38.pyc | Bin 0 -> 2688 bytes ...t_highlevel_serve_listeners.cpython-38.pyc | Bin 0 -> 6661 bytes .../test_highlevel_socket.cpython-38.pyc | Bin 0 -> 8382 bytes .../test_highlevel_ssl_helpers.cpython-38.pyc | Bin 0 -> 3945 bytes .../__pycache__/test_path.cpython-38.pyc | Bin 0 -> 7852 bytes .../__pycache__/test_repl.cpython-38.pyc | Bin 0 -> 5910 bytes .../test_scheduler_determinism.cpython-38.pyc | Bin 0 -> 1885 bytes .../__pycache__/test_signals.cpython-38.pyc | Bin 0 -> 5198 bytes .../__pycache__/test_socket.cpython-38.pyc | Bin 0 -> 29288 bytes .../__pycache__/test_ssl.cpython-38.pyc | Bin 0 -> 33080 bytes .../test_subprocess.cpython-38.pyc | Bin 0 -> 18483 bytes .../__pycache__/test_sync.cpython-38.pyc | Bin 0 -> 16045 bytes .../__pycache__/test_testing.cpython-38.pyc | Bin 0 -> 19088 bytes .../test_testing_raisesgroup.cpython-38.pyc | Bin 0 -> 9514 bytes .../__pycache__/test_threads.cpython-38.pyc | Bin 0 -> 34710 bytes .../__pycache__/test_timeouts.cpython-38.pyc | Bin 0 -> 7168 bytes .../__pycache__/test_tracing.cpython-38.pyc | Bin 0 -> 2199 bytes .../__pycache__/test_trio.cpython-38.pyc | Bin 0 -> 425 bytes .../test_unix_pipes.cpython-38.pyc | Bin 0 -> 7403 bytes .../__pycache__/test_util.cpython-38.pyc | Bin 0 -> 8410 bytes .../test_wait_for_object.cpython-38.pyc | Bin 0 -> 4657 bytes .../test_windows_pipes.cpython-38.pyc | Bin 0 -> 7703 bytes .../trio/_tests/check_type_completeness.py | 246 + .../trio/_tests/module_with_deprecations.py | 24 + .../trio/_tests/pytest_plugin.py | 54 + .../Lib/site-packages/trio/_tests/test_abc.py | 72 + .../site-packages/trio/_tests/test_channel.py | 413 + .../trio/_tests/test_contextvars.py | 56 + .../trio/_tests/test_deprecate.py | 283 + ...deprecate_strict_exception_groups_false.py | 64 + .../site-packages/trio/_tests/test_dtls.py | 900 ++ .../site-packages/trio/_tests/test_exports.py | 574 ++ .../site-packages/trio/_tests/test_fakenet.py | 313 + .../site-packages/trio/_tests/test_file_io.py | 269 + .../trio/_tests/test_highlevel_generic.py | 98 + .../test_highlevel_open_tcp_listeners.py | 410 + .../_tests/test_highlevel_open_tcp_stream.py | 686 ++ .../_tests/test_highlevel_open_unix_stream.py | 86 + .../_tests/test_highlevel_serve_listeners.py | 183 + .../trio/_tests/test_highlevel_socket.py | 330 + .../trio/_tests/test_highlevel_ssl_helpers.py | 166 + .../site-packages/trio/_tests/test_path.py | 275 + .../site-packages/trio/_tests/test_repl.py | 242 + .../trio/_tests/test_scheduler_determinism.py | 47 + .../site-packages/trio/_tests/test_signals.py | 188 + .../site-packages/trio/_tests/test_socket.py | 1173 +++ .../Lib/site-packages/trio/_tests/test_ssl.py | 1366 +++ .../trio/_tests/test_subprocess.py | 696 ++ .../site-packages/trio/_tests/test_sync.py | 655 ++ .../site-packages/trio/_tests/test_testing.py | 684 ++ .../trio/_tests/test_testing_raisesgroup.py | 374 + .../site-packages/trio/_tests/test_threads.py | 1148 +++ .../trio/_tests/test_timeouts.py | 272 + .../site-packages/trio/_tests/test_tracing.py | 66 + .../site-packages/trio/_tests/test_trio.py | 8 + .../trio/_tests/test_unix_pipes.py | 282 + .../site-packages/trio/_tests/test_util.py | 275 + .../trio/_tests/test_wait_for_object.py | 225 + .../trio/_tests/test_windows_pipes.py | 112 + .../trio/_tests/tools/__init__.py | 0 .../tools/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 180 bytes .../test_gen_exports.cpython-38.pyc | Bin 0 -> 4607 bytes .../test_mypy_annotate.cpython-38.pyc | Bin 0 -> 3328 bytes .../trio/_tests/tools/test_gen_exports.py | 176 + .../trio/_tests/tools/test_mypy_annotate.py | 140 + .../__pycache__/check_wraps.cpython-38.pyc | Bin 0 -> 465 bytes .../open_memory_channel.cpython-38.pyc | Bin 0 -> 264 bytes .../__pycache__/path.cpython-38.pyc | Bin 0 -> 4689 bytes .../__pycache__/raisesgroup.cpython-38.pyc | Bin 0 -> 7424 bytes .../__pycache__/task_status.cpython-38.pyc | Bin 0 -> 763 bytes .../trio/_tests/type_tests/check_wraps.py | 9 + .../_tests/type_tests/open_memory_channel.py | 4 + .../trio/_tests/type_tests/path.py | 144 + .../trio/_tests/type_tests/raisesgroup.py | 254 + .../trio/_tests/type_tests/task_status.py | 29 + myenv/Lib/site-packages/trio/_threads.py | 604 ++ myenv/Lib/site-packages/trio/_timeouts.py | 193 + .../Lib/site-packages/trio/_tools/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 174 bytes .../__pycache__/gen_exports.cpython-38.pyc | Bin 0 -> 9522 bytes .../__pycache__/mypy_annotate.cpython-38.pyc | Bin 0 -> 3644 bytes .../site-packages/trio/_tools/gen_exports.py | 412 + .../trio/_tools/mypy_annotate.py | 126 + myenv/Lib/site-packages/trio/_unix_pipes.py | 202 + myenv/Lib/site-packages/trio/_util.py | 409 + myenv/Lib/site-packages/trio/_version.py | 3 + .../site-packages/trio/_wait_for_object.py | 67 + .../Lib/site-packages/trio/_windows_pipes.py | 144 + myenv/Lib/site-packages/trio/abc.py | 23 + myenv/Lib/site-packages/trio/from_thread.py | 13 + myenv/Lib/site-packages/trio/lowlevel.py | 85 + myenv/Lib/site-packages/trio/py.typed | 0 myenv/Lib/site-packages/trio/socket.py | 590 ++ .../site-packages/trio/testing/__init__.py | 39 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1113 bytes .../__pycache__/_check_streams.cpython-38.pyc | Bin 0 -> 15773 bytes .../__pycache__/_checkpoints.cpython-38.pyc | Bin 0 -> 2234 bytes .../__pycache__/_fake_net.cpython-38.pyc | Bin 0 -> 16657 bytes .../_memory_streams.cpython-38.pyc | Bin 0 -> 22074 bytes .../__pycache__/_network.cpython-38.pyc | Bin 0 -> 1249 bytes .../__pycache__/_raises_group.cpython-38.pyc | Bin 0 -> 16626 bytes .../__pycache__/_sequencer.cpython-38.pyc | Bin 0 -> 2943 bytes .../__pycache__/_trio_test.cpython-38.pyc | Bin 0 -> 1900 bytes .../trio/testing/_check_streams.py | 572 ++ .../trio/testing/_checkpoints.py | 69 + .../site-packages/trio/testing/_fake_net.py | 578 ++ .../trio/testing/_memory_streams.py | 626 ++ .../site-packages/trio/testing/_network.py | 36 + .../trio/testing/_raises_group.py | 568 ++ .../site-packages/trio/testing/_sequencer.py | 87 + .../site-packages/trio/testing/_trio_test.py | 50 + myenv/Lib/site-packages/trio/to_thread.py | 4 + .../trio_websocket-0.12.2.dist-info/INSTALLER | 1 + .../trio_websocket-0.12.2.dist-info/LICENSE | 21 + .../trio_websocket-0.12.2.dist-info/METADATA | 123 + .../trio_websocket-0.12.2.dist-info/RECORD | 13 + .../trio_websocket-0.12.2.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../site-packages/trio_websocket/__init__.py | 21 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 712 bytes .../__pycache__/_impl.cpython-38.pyc | Bin 0 -> 59062 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 209 bytes .../Lib/site-packages/trio_websocket/_impl.py | 1805 ++++ .../site-packages/trio_websocket/_version.py | 1 + .../Lib/site-packages/trio_websocket/py.typed | 0 .../INSTALLER | 1 + .../METADATA | 68 + .../typing_extensions-4.13.2.dist-info/RECORD | 7 + .../typing_extensions-4.13.2.dist-info/WHEEL | 4 + .../licenses/LICENSE | 279 + myenv/Lib/site-packages/typing_extensions.py | 4584 +++++++++ .../urllib3-2.2.3.dist-info/INSTALLER | 1 + .../urllib3-2.2.3.dist-info/METADATA | 155 + .../urllib3-2.2.3.dist-info/RECORD | 79 + .../urllib3-2.2.3.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + myenv/Lib/site-packages/urllib3/__init__.py | 211 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 5988 bytes .../_base_connection.cpython-38.pyc | Bin 0 -> 5456 bytes .../__pycache__/_collections.cpython-38.pyc | Bin 0 -> 15754 bytes .../_request_methods.cpython-38.pyc | Bin 0 -> 8930 bytes .../__pycache__/_version.cpython-38.pyc | Bin 0 -> 498 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 23267 bytes .../__pycache__/connectionpool.cpython-38.pyc | Bin 0 -> 28542 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 13577 bytes .../urllib3/__pycache__/fields.cpython-38.pyc | Bin 0 -> 9644 bytes .../__pycache__/filepost.cpython-38.pyc | Bin 0 -> 2313 bytes .../__pycache__/poolmanager.cpython-38.pyc | Bin 0 -> 17778 bytes .../__pycache__/response.cpython-38.pyc | Bin 0 -> 32978 bytes .../site-packages/urllib3/_base_connection.py | 172 + .../Lib/site-packages/urllib3/_collections.py | 483 + .../site-packages/urllib3/_request_methods.py | 278 + myenv/Lib/site-packages/urllib3/_version.py | 16 + myenv/Lib/site-packages/urllib3/connection.py | 1033 ++ .../site-packages/urllib3/connectionpool.py | 1182 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 181 bytes .../__pycache__/pyopenssl.cpython-38.pyc | Bin 0 -> 17148 bytes .../contrib/__pycache__/socks.cpython-38.pyc | Bin 0 -> 6103 bytes .../urllib3/contrib/emscripten/__init__.py | 16 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 714 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 7295 bytes .../__pycache__/fetch.cpython-38.pyc | Bin 0 -> 11820 bytes .../__pycache__/request.cpython-38.pyc | Bin 0 -> 1208 bytes .../__pycache__/response.cpython-38.pyc | Bin 0 -> 7989 bytes .../urllib3/contrib/emscripten/connection.py | 254 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 418 + .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 285 + .../urllib3/contrib/pyopenssl.py | 552 + .../site-packages/urllib3/contrib/socks.py | 228 + myenv/Lib/site-packages/urllib3/exceptions.py | 321 + myenv/Lib/site-packages/urllib3/fields.py | 341 + myenv/Lib/site-packages/urllib3/filepost.py | 89 + .../site-packages/urllib3/http2/__init__.py | 53 + .../http2/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1414 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 10454 bytes .../http2/__pycache__/probe.cpython-38.pyc | Bin 0 -> 2444 bytes .../site-packages/urllib3/http2/connection.py | 356 + .../Lib/site-packages/urllib3/http2/probe.py | 87 + .../Lib/site-packages/urllib3/poolmanager.py | 637 ++ myenv/Lib/site-packages/urllib3/py.typed | 2 + myenv/Lib/site-packages/urllib3/response.py | 1265 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 961 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 3420 bytes .../util/__pycache__/proxy.cpython-38.pyc | Bin 0 -> 1057 bytes .../util/__pycache__/request.cpython-38.pyc | Bin 0 -> 6082 bytes .../util/__pycache__/response.cpython-38.pyc | Bin 0 -> 2315 bytes .../util/__pycache__/retry.cpython-38.pyc | Bin 0 -> 15320 bytes .../util/__pycache__/ssl_.cpython-38.pyc | Bin 0 -> 12067 bytes .../ssl_match_hostname.cpython-38.pyc | Bin 0 -> 3655 bytes .../__pycache__/ssltransport.cpython-38.pyc | Bin 0 -> 9109 bytes .../util/__pycache__/timeout.cpython-38.pyc | Bin 0 -> 9529 bytes .../util/__pycache__/url.cpython-38.pyc | Bin 0 -> 11082 bytes .../util/__pycache__/util.cpython-38.pyc | Bin 0 -> 1238 bytes .../util/__pycache__/wait.cpython-38.pyc | Bin 0 -> 2389 bytes .../site-packages/urllib3/util/connection.py | 137 + myenv/Lib/site-packages/urllib3/util/proxy.py | 43 + .../Lib/site-packages/urllib3/util/request.py | 256 + .../site-packages/urllib3/util/response.py | 101 + myenv/Lib/site-packages/urllib3/util/retry.py | 533 + myenv/Lib/site-packages/urllib3/util/ssl_.py | 513 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 276 + .../Lib/site-packages/urllib3/util/timeout.py | 275 + myenv/Lib/site-packages/urllib3/util/url.py | 471 + myenv/Lib/site-packages/urllib3/util/util.py | 42 + myenv/Lib/site-packages/urllib3/util/wait.py | 124 + myenv/Lib/site-packages/websocket/__init__.py | 26 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1005 bytes .../__pycache__/_abnf.cpython-38.pyc | Bin 0 -> 11213 bytes .../websocket/__pycache__/_app.cpython-38.pyc | Bin 0 -> 19037 bytes .../__pycache__/_cookiejar.cpython-38.pyc | Bin 0 -> 1829 bytes .../__pycache__/_core.cpython-38.pyc | Bin 0 -> 18888 bytes .../__pycache__/_exceptions.cpython-38.pyc | Bin 0 -> 3065 bytes .../__pycache__/_handshake.cpython-38.pyc | Bin 0 -> 5743 bytes .../__pycache__/_http.cpython-38.pyc | Bin 0 -> 8241 bytes .../__pycache__/_logging.cpython-38.pyc | Bin 0 -> 2470 bytes .../__pycache__/_socket.cpython-38.pyc | Bin 0 -> 4107 bytes .../__pycache__/_ssl_compat.cpython-38.pyc | Bin 0 -> 1565 bytes .../websocket/__pycache__/_url.cpython-38.pyc | Bin 0 -> 4390 bytes .../__pycache__/_utils.cpython-38.pyc | Bin 0 -> 3803 bytes .../__pycache__/_wsdump.cpython-38.pyc | Bin 0 -> 6731 bytes myenv/Lib/site-packages/websocket/_abnf.py | 453 + myenv/Lib/site-packages/websocket/_app.py | 677 ++ .../Lib/site-packages/websocket/_cookiejar.py | 75 + myenv/Lib/site-packages/websocket/_core.py | 647 ++ .../site-packages/websocket/_exceptions.py | 94 + .../Lib/site-packages/websocket/_handshake.py | 202 + myenv/Lib/site-packages/websocket/_http.py | 373 + myenv/Lib/site-packages/websocket/_logging.py | 106 + myenv/Lib/site-packages/websocket/_socket.py | 188 + .../site-packages/websocket/_ssl_compat.py | 48 + myenv/Lib/site-packages/websocket/_url.py | 190 + myenv/Lib/site-packages/websocket/_utils.py | 459 + myenv/Lib/site-packages/websocket/_wsdump.py | 244 + myenv/Lib/site-packages/websocket/py.typed | 0 .../site-packages/websocket/tests/__init__.py | 0 .../tests/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 190 bytes .../__pycache__/echo-server.cpython-38.pyc | Bin 0 -> 694 bytes .../__pycache__/test_abnf.cpython-38.pyc | Bin 0 -> 3114 bytes .../tests/__pycache__/test_app.cpython-38.pyc | Bin 0 -> 11246 bytes .../__pycache__/test_cookiejar.cpython-38.pyc | Bin 0 -> 2373 bytes .../__pycache__/test_http.cpython-38.pyc | Bin 0 -> 7207 bytes .../tests/__pycache__/test_url.cpython-38.pyc | Bin 0 -> 8702 bytes .../__pycache__/test_websocket.cpython-38.pyc | Bin 0 -> 14790 bytes .../websocket/tests/data/header01.txt | 6 + .../websocket/tests/data/header02.txt | 6 + .../websocket/tests/data/header03.txt | 8 + .../websocket/tests/echo-server.py | 23 + .../websocket/tests/test_abnf.py | 125 + .../site-packages/websocket/tests/test_app.py | 352 + .../websocket/tests/test_cookiejar.py | 123 + .../websocket/tests/test_http.py | 370 + .../site-packages/websocket/tests/test_url.py | 464 + .../websocket/tests/test_websocket.py | 497 + .../INSTALLER | 1 + .../websocket_client-1.8.0.dist-info/LICENSE | 203 + .../websocket_client-1.8.0.dist-info/METADATA | 184 + .../websocket_client-1.8.0.dist-info/RECORD | 56 + .../websocket_client-1.8.0.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../werkzeug-3.0.6.dist-info/INSTALLER | 1 + .../werkzeug-3.0.6.dist-info/LICENSE.txt | 28 + .../werkzeug-3.0.6.dist-info/METADATA | 99 + .../werkzeug-3.0.6.dist-info/RECORD | 125 + .../werkzeug-3.0.6.dist-info/WHEEL | 4 + myenv/Lib/site-packages/werkzeug/__init__.py | 25 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 923 bytes .../__pycache__/_internal.cpython-38.pyc | Bin 0 -> 6801 bytes .../__pycache__/_reloader.cpython-38.pyc | Bin 0 -> 12704 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 27657 bytes .../__pycache__/formparser.cpython-38.pyc | Bin 0 -> 12409 bytes .../werkzeug/__pycache__/http.cpython-38.pyc | Bin 0 -> 37856 bytes .../werkzeug/__pycache__/local.cpython-38.pyc | Bin 0 -> 20610 bytes .../__pycache__/security.cpython-38.pyc | Bin 0 -> 5339 bytes .../__pycache__/serving.cpython-38.pyc | Bin 0 -> 29705 bytes .../werkzeug/__pycache__/test.cpython-38.pyc | Bin 0 -> 42192 bytes .../__pycache__/testapp.cpython-38.pyc | Bin 0 -> 6563 bytes .../werkzeug/__pycache__/urls.cpython-38.pyc | Bin 0 -> 5754 bytes .../__pycache__/user_agent.cpython-38.pyc | Bin 0 -> 1834 bytes .../werkzeug/__pycache__/utils.cpython-38.pyc | Bin 0 -> 21986 bytes .../werkzeug/__pycache__/wsgi.cpython-38.pyc | Bin 0 -> 19602 bytes myenv/Lib/site-packages/werkzeug/_internal.py | 211 + myenv/Lib/site-packages/werkzeug/_reloader.py | 471 + .../werkzeug/datastructures/__init__.py | 34 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 1555 bytes .../__pycache__/accept.cpython-38.pyc | Bin 0 -> 10640 bytes .../__pycache__/auth.cpython-38.pyc | Bin 0 -> 10409 bytes .../__pycache__/cache_control.cpython-38.pyc | Bin 0 -> 6578 bytes .../__pycache__/csp.cpython-38.pyc | Bin 0 -> 4144 bytes .../__pycache__/etag.cpython-38.pyc | Bin 0 -> 3949 bytes .../__pycache__/file_storage.cpython-38.pyc | Bin 0 -> 6027 bytes .../__pycache__/headers.cpython-38.pyc | Bin 0 -> 17726 bytes .../__pycache__/mixins.cpython-38.pyc | Bin 0 -> 9566 bytes .../__pycache__/range.cpython-38.pyc | Bin 0 -> 6097 bytes .../__pycache__/structures.cpython-38.pyc | Bin 0 -> 36431 bytes .../werkzeug/datastructures/accept.py | 326 + .../werkzeug/datastructures/accept.pyi | 54 + .../werkzeug/datastructures/auth.py | 316 + .../werkzeug/datastructures/cache_control.py | 175 + .../werkzeug/datastructures/cache_control.pyi | 115 + .../werkzeug/datastructures/csp.py | 94 + .../werkzeug/datastructures/csp.pyi | 169 + .../werkzeug/datastructures/etag.py | 95 + .../werkzeug/datastructures/etag.pyi | 30 + .../werkzeug/datastructures/file_storage.py | 196 + .../werkzeug/datastructures/file_storage.pyi | 49 + .../werkzeug/datastructures/headers.py | 515 + .../werkzeug/datastructures/headers.pyi | 109 + .../werkzeug/datastructures/mixins.py | 242 + .../werkzeug/datastructures/mixins.pyi | 97 + .../werkzeug/datastructures/range.py | 180 + .../werkzeug/datastructures/range.pyi | 57 + .../werkzeug/datastructures/structures.py | 1010 ++ .../werkzeug/datastructures/structures.pyi | 206 + .../site-packages/werkzeug/debug/__init__.py | 565 ++ .../debug/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 14656 bytes .../debug/__pycache__/console.cpython-38.pyc | Bin 0 -> 8103 bytes .../debug/__pycache__/repr.cpython-38.pyc | Bin 0 -> 8785 bytes .../debug/__pycache__/tbtools.cpython-38.pyc | Bin 0 -> 11624 bytes .../site-packages/werkzeug/debug/console.py | 219 + .../Lib/site-packages/werkzeug/debug/repr.py | 282 + .../werkzeug/debug/shared/ICON_LICENSE.md | 6 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 344 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/style.css | 150 + .../site-packages/werkzeug/debug/tbtools.py | 450 + .../Lib/site-packages/werkzeug/exceptions.py | 881 ++ .../Lib/site-packages/werkzeug/formparser.py | 430 + myenv/Lib/site-packages/werkzeug/http.py | 1391 +++ myenv/Lib/site-packages/werkzeug/local.py | 653 ++ .../werkzeug/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 186 bytes .../__pycache__/dispatcher.cpython-38.pyc | Bin 0 -> 2782 bytes .../__pycache__/http_proxy.cpython-38.pyc | Bin 0 -> 6813 bytes .../__pycache__/lint.cpython-38.pyc | Bin 0 -> 12818 bytes .../__pycache__/profiler.cpython-38.pyc | Bin 0 -> 5544 bytes .../__pycache__/proxy_fix.cpython-38.pyc | Bin 0 -> 5942 bytes .../__pycache__/shared_data.cpython-38.pyc | Bin 0 -> 9155 bytes .../werkzeug/middleware/dispatcher.py | 81 + .../werkzeug/middleware/http_proxy.py | 236 + .../site-packages/werkzeug/middleware/lint.py | 439 + .../werkzeug/middleware/profiler.py | 155 + .../werkzeug/middleware/proxy_fix.py | 183 + .../werkzeug/middleware/shared_data.py | 283 + myenv/Lib/site-packages/werkzeug/py.typed | 0 .../werkzeug/routing/__init__.py | 134 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 4624 bytes .../__pycache__/converters.cpython-38.pyc | Bin 0 -> 8922 bytes .../__pycache__/exceptions.cpython-38.pyc | Bin 0 -> 5512 bytes .../routing/__pycache__/map.cpython-38.pyc | Bin 0 -> 30655 bytes .../__pycache__/matcher.cpython-38.pyc | Bin 0 -> 5089 bytes .../routing/__pycache__/rules.cpython-38.pyc | Bin 0 -> 27716 bytes .../werkzeug/routing/converters.py | 261 + .../werkzeug/routing/exceptions.py | 152 + .../Lib/site-packages/werkzeug/routing/map.py | 951 ++ .../site-packages/werkzeug/routing/matcher.py | 202 + .../site-packages/werkzeug/routing/rules.py | 928 ++ .../site-packages/werkzeug/sansio/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 182 bytes .../sansio/__pycache__/http.cpython-38.pyc | Bin 0 -> 4064 bytes .../__pycache__/multipart.cpython-38.pyc | Bin 0 -> 7471 bytes .../sansio/__pycache__/request.cpython-38.pyc | Bin 0 -> 17275 bytes .../__pycache__/response.cpython-38.pyc | Bin 0 -> 24319 bytes .../sansio/__pycache__/utils.cpython-38.pyc | Bin 0 -> 4505 bytes .../Lib/site-packages/werkzeug/sansio/http.py | 171 + .../werkzeug/sansio/multipart.py | 323 + .../site-packages/werkzeug/sansio/request.py | 536 + .../site-packages/werkzeug/sansio/response.py | 754 ++ .../site-packages/werkzeug/sansio/utils.py | 159 + myenv/Lib/site-packages/werkzeug/security.py | 163 + myenv/Lib/site-packages/werkzeug/serving.py | 1125 +++ myenv/Lib/site-packages/werkzeug/test.py | 1464 +++ myenv/Lib/site-packages/werkzeug/testapp.py | 194 + myenv/Lib/site-packages/werkzeug/urls.py | 203 + .../Lib/site-packages/werkzeug/user_agent.py | 47 + myenv/Lib/site-packages/werkzeug/utils.py | 691 ++ .../werkzeug/wrappers/__init__.py | 3 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 301 bytes .../__pycache__/request.cpython-38.pyc | Bin 0 -> 21434 bytes .../__pycache__/response.cpython-38.pyc | Bin 0 -> 27958 bytes .../werkzeug/wrappers/request.py | 647 ++ .../werkzeug/wrappers/response.py | 831 ++ myenv/Lib/site-packages/werkzeug/wsgi.py | 595 ++ .../wsproto-1.2.0.dist-info/INSTALLER | 1 + .../wsproto-1.2.0.dist-info/LICENSE | 21 + .../wsproto-1.2.0.dist-info/METADATA | 177 + .../wsproto-1.2.0.dist-info/RECORD | 23 + .../wsproto-1.2.0.dist-info/WHEEL | 5 + .../wsproto-1.2.0.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/wsproto/__init__.py | 94 + .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3245 bytes .../__pycache__/connection.cpython-38.pyc | Bin 0 -> 5063 bytes .../wsproto/__pycache__/events.cpython-38.pyc | Bin 0 -> 9437 bytes .../__pycache__/extensions.cpython-38.pyc | Bin 0 -> 8413 bytes .../__pycache__/frame_protocol.cpython-38.pyc | Bin 0 -> 16281 bytes .../__pycache__/handshake.cpython-38.pyc | Bin 0 -> 11719 bytes .../wsproto/__pycache__/typing.cpython-38.pyc | Bin 0 -> 256 bytes .../__pycache__/utilities.cpython-38.pyc | Bin 0 -> 2996 bytes myenv/Lib/site-packages/wsproto/connection.py | 189 + myenv/Lib/site-packages/wsproto/events.py | 295 + myenv/Lib/site-packages/wsproto/extensions.py | 315 + .../site-packages/wsproto/frame_protocol.py | 673 ++ myenv/Lib/site-packages/wsproto/handshake.py | 491 + myenv/Lib/site-packages/wsproto/py.typed | 1 + myenv/Lib/site-packages/wsproto/typing.py | 3 + myenv/Lib/site-packages/wsproto/utilities.py | 88 + .../zipp-3.20.2.dist-info/INSTALLER | 1 + .../zipp-3.20.2.dist-info/LICENSE | 17 + .../zipp-3.20.2.dist-info/METADATA | 106 + .../zipp-3.20.2.dist-info/RECORD | 16 + .../site-packages/zipp-3.20.2.dist-info/WHEEL | 5 + .../zipp-3.20.2.dist-info/top_level.txt | 1 + myenv/Lib/site-packages/zipp/__init__.py | 452 + .../zipp/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 14339 bytes .../zipp/__pycache__/glob.cpython-38.pyc | Bin 0 -> 4257 bytes .../Lib/site-packages/zipp/compat/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 174 bytes .../compat/__pycache__/overlay.cpython-38.pyc | Bin 0 -> 1143 bytes .../compat/__pycache__/py310.cpython-38.pyc | Bin 0 -> 411 bytes .../Lib/site-packages/zipp/compat/overlay.py | 37 + myenv/Lib/site-packages/zipp/compat/py310.py | 13 + myenv/Lib/site-packages/zipp/glob.py | 114 + myenv/Scripts/Activate.ps1 | 374 + myenv/Scripts/activate | 76 + myenv/Scripts/activate.bat | 33 + myenv/Scripts/deactivate.bat | 21 + myenv/Scripts/easy_install-3.8.exe | Bin 0 -> 103317 bytes myenv/Scripts/easy_install.exe | Bin 0 -> 103317 bytes myenv/Scripts/flask.exe | Bin 0 -> 103295 bytes myenv/Scripts/normalizer.exe | Bin 0 -> 103320 bytes myenv/Scripts/pip.exe | Bin 0 -> 103299 bytes myenv/Scripts/pip3.8.exe | Bin 0 -> 103299 bytes myenv/Scripts/pip3.exe | Bin 0 -> 103299 bytes myenv/Scripts/python.exe | Bin 0 -> 524872 bytes myenv/Scripts/pythonw.exe | Bin 0 -> 523848 bytes myenv/Scripts/wsdump.exe | Bin 0 -> 103303 bytes myenv/pyvenv.cfg | 3 + 2817 files changed, 516548 insertions(+) create mode 100644 DuckDuckGo.py create mode 100644 LICENSE create mode 100644 README.md create mode 100644 Results.txt create mode 100644 __pycache__/DuckDuckGo.cpython-38.pyc create mode 100644 app.py create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/PySocks-1.7.1.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/__pycache__/easy_install.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/__pycache__/socks.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/__pycache__/sockshandler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/__pycache__/typing_extensions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/_cffi_backend.cp38-win_amd64.pyd create mode 100644 myenv/Lib/site-packages/attr/__init__.py create mode 100644 myenv/Lib/site-packages/attr/__init__.pyi create mode 100644 myenv/Lib/site-packages/attr/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_cmp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_config.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_funcs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_make.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_next_gen.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/_version_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/converters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/filters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/setters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/__pycache__/validators.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attr/_cmp.py create mode 100644 myenv/Lib/site-packages/attr/_cmp.pyi create mode 100644 myenv/Lib/site-packages/attr/_compat.py create mode 100644 myenv/Lib/site-packages/attr/_config.py create mode 100644 myenv/Lib/site-packages/attr/_funcs.py create mode 100644 myenv/Lib/site-packages/attr/_make.py create mode 100644 myenv/Lib/site-packages/attr/_next_gen.py create mode 100644 myenv/Lib/site-packages/attr/_typing_compat.pyi create mode 100644 myenv/Lib/site-packages/attr/_version_info.py create mode 100644 myenv/Lib/site-packages/attr/_version_info.pyi create mode 100644 myenv/Lib/site-packages/attr/converters.py create mode 100644 myenv/Lib/site-packages/attr/converters.pyi create mode 100644 myenv/Lib/site-packages/attr/exceptions.py create mode 100644 myenv/Lib/site-packages/attr/exceptions.pyi create mode 100644 myenv/Lib/site-packages/attr/filters.py create mode 100644 myenv/Lib/site-packages/attr/filters.pyi create mode 100644 myenv/Lib/site-packages/attr/py.typed create mode 100644 myenv/Lib/site-packages/attr/setters.py create mode 100644 myenv/Lib/site-packages/attr/setters.pyi create mode 100644 myenv/Lib/site-packages/attr/validators.py create mode 100644 myenv/Lib/site-packages/attr/validators.pyi create mode 100644 myenv/Lib/site-packages/attrs-25.3.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/attrs-25.3.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/attrs-25.3.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/attrs-25.3.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/attrs/__init__.py create mode 100644 myenv/Lib/site-packages/attrs/__init__.pyi create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/converters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/filters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/setters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/__pycache__/validators.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/attrs/converters.py create mode 100644 myenv/Lib/site-packages/attrs/exceptions.py create mode 100644 myenv/Lib/site-packages/attrs/filters.py create mode 100644 myenv/Lib/site-packages/attrs/py.typed create mode 100644 myenv/Lib/site-packages/attrs/setters.py create mode 100644 myenv/Lib/site-packages/attrs/validators.py create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/AUTHORS create mode 100644 myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/blinker-1.8.2.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/blinker-1.8.2.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/blinker-1.8.2.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/blinker-1.8.2.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/blinker-1.8.2.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/blinker/__init__.py create mode 100644 myenv/Lib/site-packages/blinker/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/blinker/__pycache__/_utilities.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/blinker/__pycache__/base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/blinker/_utilities.py create mode 100644 myenv/Lib/site-packages/blinker/base.py create mode 100644 myenv/Lib/site-packages/blinker/py.typed create mode 100644 myenv/Lib/site-packages/bs4/__init__.py create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/_deprecation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/_typing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/_warnings.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/css.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/dammit.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/diagnose.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/element.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/filter.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/__pycache__/formatter.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/_deprecation.py create mode 100644 myenv/Lib/site-packages/bs4/_typing.py create mode 100644 myenv/Lib/site-packages/bs4/_warnings.py create mode 100644 myenv/Lib/site-packages/bs4/builder/__init__.py create mode 100644 myenv/Lib/site-packages/bs4/builder/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/builder/__pycache__/_html5lib.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/builder/__pycache__/_lxml.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/bs4/builder/_html5lib.py create mode 100644 myenv/Lib/site-packages/bs4/builder/_htmlparser.py create mode 100644 myenv/Lib/site-packages/bs4/builder/_lxml.py create mode 100644 myenv/Lib/site-packages/bs4/css.py create mode 100644 myenv/Lib/site-packages/bs4/dammit.py create mode 100644 myenv/Lib/site-packages/bs4/diagnose.py create mode 100644 myenv/Lib/site-packages/bs4/element.py create mode 100644 myenv/Lib/site-packages/bs4/exceptions.py create mode 100644 myenv/Lib/site-packages/bs4/filter.py create mode 100644 myenv/Lib/site-packages/bs4/formatter.py create mode 100644 myenv/Lib/site-packages/bs4/py.typed create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/certifi-2026.2.25.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/certifi/__init__.py create mode 100644 myenv/Lib/site-packages/certifi/__main__.py create mode 100644 myenv/Lib/site-packages/certifi/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/certifi/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/certifi/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/certifi/cacert.pem create mode 100644 myenv/Lib/site-packages/certifi/core.py create mode 100644 myenv/Lib/site-packages/certifi/py.typed create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/cffi-1.17.1.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/cffi/__init__.py create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/_imp_emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/_shimmed_dist_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/api.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/backend_ctypes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/cffi_opcode.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/commontypes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/cparser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/error.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/ffiplatform.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/lock.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/model.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/pkgconfig.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/recompiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/setuptools_ext.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/vengine_cpy.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/vengine_gen.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/__pycache__/verifier.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/cffi/_cffi_errors.h create mode 100644 myenv/Lib/site-packages/cffi/_cffi_include.h create mode 100644 myenv/Lib/site-packages/cffi/_embedding.h create mode 100644 myenv/Lib/site-packages/cffi/_imp_emulation.py create mode 100644 myenv/Lib/site-packages/cffi/_shimmed_dist_utils.py create mode 100644 myenv/Lib/site-packages/cffi/api.py create mode 100644 myenv/Lib/site-packages/cffi/backend_ctypes.py create mode 100644 myenv/Lib/site-packages/cffi/cffi_opcode.py create mode 100644 myenv/Lib/site-packages/cffi/commontypes.py create mode 100644 myenv/Lib/site-packages/cffi/cparser.py create mode 100644 myenv/Lib/site-packages/cffi/error.py create mode 100644 myenv/Lib/site-packages/cffi/ffiplatform.py create mode 100644 myenv/Lib/site-packages/cffi/lock.py create mode 100644 myenv/Lib/site-packages/cffi/model.py create mode 100644 myenv/Lib/site-packages/cffi/parse_c_type.h create mode 100644 myenv/Lib/site-packages/cffi/pkgconfig.py create mode 100644 myenv/Lib/site-packages/cffi/recompiler.py create mode 100644 myenv/Lib/site-packages/cffi/setuptools_ext.py create mode 100644 myenv/Lib/site-packages/cffi/vengine_cpy.py create mode 100644 myenv/Lib/site-packages/cffi/vengine_gen.py create mode 100644 myenv/Lib/site-packages/cffi/verifier.py create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/charset_normalizer-3.4.4.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/charset_normalizer/__init__.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/__main__.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/api.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/cd.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/constant.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/legacy.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/md.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/models.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/api.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/cd.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/cli/__init__.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/cli/__main__.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/charset_normalizer/constant.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/legacy.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/md.cp38-win_amd64.pyd create mode 100644 myenv/Lib/site-packages/charset_normalizer/md.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/md__mypyc.cp38-win_amd64.pyd create mode 100644 myenv/Lib/site-packages/charset_normalizer/models.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/py.typed create mode 100644 myenv/Lib/site-packages/charset_normalizer/utils.py create mode 100644 myenv/Lib/site-packages/charset_normalizer/version.py create mode 100644 myenv/Lib/site-packages/click-8.1.8.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/click-8.1.8.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/click-8.1.8.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/click-8.1.8.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/click-8.1.8.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/click/__init__.py create mode 100644 myenv/Lib/site-packages/click/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/_termui_impl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/_textwrap.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/_winconsole.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/decorators.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/formatting.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/globals.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/shell_completion.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/termui.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/testing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/types.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/click/_compat.py create mode 100644 myenv/Lib/site-packages/click/_termui_impl.py create mode 100644 myenv/Lib/site-packages/click/_textwrap.py create mode 100644 myenv/Lib/site-packages/click/_winconsole.py create mode 100644 myenv/Lib/site-packages/click/core.py create mode 100644 myenv/Lib/site-packages/click/decorators.py create mode 100644 myenv/Lib/site-packages/click/exceptions.py create mode 100644 myenv/Lib/site-packages/click/formatting.py create mode 100644 myenv/Lib/site-packages/click/globals.py create mode 100644 myenv/Lib/site-packages/click/parser.py create mode 100644 myenv/Lib/site-packages/click/py.typed create mode 100644 myenv/Lib/site-packages/click/shell_completion.py create mode 100644 myenv/Lib/site-packages/click/termui.py create mode 100644 myenv/Lib/site-packages/click/testing.py create mode 100644 myenv/Lib/site-packages/click/types.py create mode 100644 myenv/Lib/site-packages/click/utils.py create mode 100644 myenv/Lib/site-packages/colorama-0.4.6.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/colorama-0.4.6.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/colorama-0.4.6.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/colorama-0.4.6.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt create mode 100644 myenv/Lib/site-packages/colorama/__init__.py create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/ansi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/ansitowin32.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/initialise.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/win32.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/__pycache__/winterm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/ansi.py create mode 100644 myenv/Lib/site-packages/colorama/ansitowin32.py create mode 100644 myenv/Lib/site-packages/colorama/initialise.py create mode 100644 myenv/Lib/site-packages/colorama/tests/__init__.py create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/ansi_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/ansitowin32_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/initialise_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/isatty_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/__pycache__/winterm_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/colorama/tests/ansi_test.py create mode 100644 myenv/Lib/site-packages/colorama/tests/ansitowin32_test.py create mode 100644 myenv/Lib/site-packages/colorama/tests/initialise_test.py create mode 100644 myenv/Lib/site-packages/colorama/tests/isatty_test.py create mode 100644 myenv/Lib/site-packages/colorama/tests/utils.py create mode 100644 myenv/Lib/site-packages/colorama/tests/winterm_test.py create mode 100644 myenv/Lib/site-packages/colorama/win32.py create mode 100644 myenv/Lib/site-packages/colorama/winterm.py create mode 100644 myenv/Lib/site-packages/easy_install.py create mode 100644 myenv/Lib/site-packages/exceptiongroup-1.3.1.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/exceptiongroup-1.3.1.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/exceptiongroup-1.3.1.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/exceptiongroup-1.3.1.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/exceptiongroup-1.3.1.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/exceptiongroup/__init__.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/_catch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/_exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/_formatting.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/_suppress.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/exceptiongroup/_catch.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/_exceptions.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/_formatting.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/_suppress.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/_version.py create mode 100644 myenv/Lib/site-packages/exceptiongroup/py.typed create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/flask-3.0.3.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/flask/__init__.py create mode 100644 myenv/Lib/site-packages/flask/__main__.py create mode 100644 myenv/Lib/site-packages/flask/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/app.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/blueprints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/cli.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/config.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/ctx.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/debughelpers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/globals.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/helpers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/logging.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/sessions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/signals.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/templating.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/testing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/typing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/views.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/__pycache__/wrappers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/app.py create mode 100644 myenv/Lib/site-packages/flask/blueprints.py create mode 100644 myenv/Lib/site-packages/flask/cli.py create mode 100644 myenv/Lib/site-packages/flask/config.py create mode 100644 myenv/Lib/site-packages/flask/ctx.py create mode 100644 myenv/Lib/site-packages/flask/debughelpers.py create mode 100644 myenv/Lib/site-packages/flask/globals.py create mode 100644 myenv/Lib/site-packages/flask/helpers.py create mode 100644 myenv/Lib/site-packages/flask/json/__init__.py create mode 100644 myenv/Lib/site-packages/flask/json/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/json/__pycache__/provider.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/json/__pycache__/tag.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/json/provider.py create mode 100644 myenv/Lib/site-packages/flask/json/tag.py create mode 100644 myenv/Lib/site-packages/flask/logging.py create mode 100644 myenv/Lib/site-packages/flask/py.typed create mode 100644 myenv/Lib/site-packages/flask/sansio/README.md create mode 100644 myenv/Lib/site-packages/flask/sansio/__pycache__/app.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/sansio/__pycache__/blueprints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/sansio/__pycache__/scaffold.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/flask/sansio/app.py create mode 100644 myenv/Lib/site-packages/flask/sansio/blueprints.py create mode 100644 myenv/Lib/site-packages/flask/sansio/scaffold.py create mode 100644 myenv/Lib/site-packages/flask/sessions.py create mode 100644 myenv/Lib/site-packages/flask/signals.py create mode 100644 myenv/Lib/site-packages/flask/templating.py create mode 100644 myenv/Lib/site-packages/flask/testing.py create mode 100644 myenv/Lib/site-packages/flask/typing.py create mode 100644 myenv/Lib/site-packages/flask/views.py create mode 100644 myenv/Lib/site-packages/flask/wrappers.py create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/licenses/LICENSE.txt create mode 100644 myenv/Lib/site-packages/h11-0.16.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/h11/__init__.py create mode 100644 myenv/Lib/site-packages/h11/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_abnf.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_events.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_headers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_readers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_receivebuffer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_state.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/__pycache__/_writers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/h11/_abnf.py create mode 100644 myenv/Lib/site-packages/h11/_connection.py create mode 100644 myenv/Lib/site-packages/h11/_events.py create mode 100644 myenv/Lib/site-packages/h11/_headers.py create mode 100644 myenv/Lib/site-packages/h11/_readers.py create mode 100644 myenv/Lib/site-packages/h11/_receivebuffer.py create mode 100644 myenv/Lib/site-packages/h11/_state.py create mode 100644 myenv/Lib/site-packages/h11/_util.py create mode 100644 myenv/Lib/site-packages/h11/_version.py create mode 100644 myenv/Lib/site-packages/h11/_writers.py create mode 100644 myenv/Lib/site-packages/h11/py.typed create mode 100644 myenv/Lib/site-packages/idna-3.11.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/idna-3.11.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/idna-3.11.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/idna-3.11.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/idna-3.11.dist-info/licenses/LICENSE.md create mode 100644 myenv/Lib/site-packages/idna/__init__.py create mode 100644 myenv/Lib/site-packages/idna/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/codec.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/idnadata.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/intranges.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/package_data.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/__pycache__/uts46data.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/idna/codec.py create mode 100644 myenv/Lib/site-packages/idna/compat.py create mode 100644 myenv/Lib/site-packages/idna/core.py create mode 100644 myenv/Lib/site-packages/idna/idnadata.py create mode 100644 myenv/Lib/site-packages/idna/intranges.py create mode 100644 myenv/Lib/site-packages/idna/package_data.py create mode 100644 myenv/Lib/site-packages/idna/py.typed create mode 100644 myenv/Lib/site-packages/idna/uts46data.py create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/importlib_metadata-8.5.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/importlib_metadata/__init__.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_adapters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_collections.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_functools.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_itertools.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_meta.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/_text.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/__pycache__/diagnose.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/_adapters.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_collections.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_compat.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_functools.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_itertools.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_meta.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/_text.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/__init__.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/__pycache__/py311.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/__pycache__/py39.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/py311.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/compat/py39.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/diagnose.py create mode 100644 myenv/Lib/site-packages/importlib_metadata/py.typed create mode 100644 myenv/Lib/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/itsdangerous-2.2.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/itsdangerous-2.2.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/itsdangerous-2.2.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/itsdangerous/__init__.py create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/_json.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/encoding.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/exc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/serializer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/signer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/timed.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/__pycache__/url_safe.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/itsdangerous/_json.py create mode 100644 myenv/Lib/site-packages/itsdangerous/encoding.py create mode 100644 myenv/Lib/site-packages/itsdangerous/exc.py create mode 100644 myenv/Lib/site-packages/itsdangerous/py.typed create mode 100644 myenv/Lib/site-packages/itsdangerous/serializer.py create mode 100644 myenv/Lib/site-packages/itsdangerous/signer.py create mode 100644 myenv/Lib/site-packages/itsdangerous/timed.py create mode 100644 myenv/Lib/site-packages/itsdangerous/url_safe.py create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/jinja2-3.1.6.dist-info/licenses/LICENSE.txt create mode 100644 myenv/Lib/site-packages/jinja2/__init__.py create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/_identifier.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/async_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/bccache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/compiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/constants.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/debug.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/defaults.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/environment.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/ext.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/filters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/idtracking.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/lexer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/loaders.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/meta.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/nativetypes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/nodes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/optimizer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/runtime.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/sandbox.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/tests.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/__pycache__/visitor.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/jinja2/_identifier.py create mode 100644 myenv/Lib/site-packages/jinja2/async_utils.py create mode 100644 myenv/Lib/site-packages/jinja2/bccache.py create mode 100644 myenv/Lib/site-packages/jinja2/compiler.py create mode 100644 myenv/Lib/site-packages/jinja2/constants.py create mode 100644 myenv/Lib/site-packages/jinja2/debug.py create mode 100644 myenv/Lib/site-packages/jinja2/defaults.py create mode 100644 myenv/Lib/site-packages/jinja2/environment.py create mode 100644 myenv/Lib/site-packages/jinja2/exceptions.py create mode 100644 myenv/Lib/site-packages/jinja2/ext.py create mode 100644 myenv/Lib/site-packages/jinja2/filters.py create mode 100644 myenv/Lib/site-packages/jinja2/idtracking.py create mode 100644 myenv/Lib/site-packages/jinja2/lexer.py create mode 100644 myenv/Lib/site-packages/jinja2/loaders.py create mode 100644 myenv/Lib/site-packages/jinja2/meta.py create mode 100644 myenv/Lib/site-packages/jinja2/nativetypes.py create mode 100644 myenv/Lib/site-packages/jinja2/nodes.py create mode 100644 myenv/Lib/site-packages/jinja2/optimizer.py create mode 100644 myenv/Lib/site-packages/jinja2/parser.py create mode 100644 myenv/Lib/site-packages/jinja2/py.typed create mode 100644 myenv/Lib/site-packages/jinja2/runtime.py create mode 100644 myenv/Lib/site-packages/jinja2/sandbox.py create mode 100644 myenv/Lib/site-packages/jinja2/tests.py create mode 100644 myenv/Lib/site-packages/jinja2/utils.py create mode 100644 myenv/Lib/site-packages/jinja2/visitor.py create mode 100644 myenv/Lib/site-packages/markupsafe/__init__.py create mode 100644 myenv/Lib/site-packages/markupsafe/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/markupsafe/__pycache__/_native.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/markupsafe/_native.py create mode 100644 myenv/Lib/site-packages/markupsafe/_speedups.c create mode 100644 myenv/Lib/site-packages/markupsafe/_speedups.cp38-win_amd64.pyd create mode 100644 myenv/Lib/site-packages/markupsafe/_speedups.pyi create mode 100644 myenv/Lib/site-packages/markupsafe/py.typed create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/LICENSE.APACHE2 create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/LICENSE.MIT create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/outcome-1.3.0.post0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/outcome/__init__.py create mode 100644 myenv/Lib/site-packages/outcome/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/outcome/__pycache__/_impl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/outcome/__pycache__/_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/outcome/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/outcome/_impl.py create mode 100644 myenv/Lib/site-packages/outcome/_util.py create mode 100644 myenv/Lib/site-packages/outcome/_version.py create mode 100644 myenv/Lib/site-packages/outcome/py.typed create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/pip-19.2.3.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/pip/__init__.py create mode 100644 myenv/Lib/site-packages/pip/__main__.py create mode 100644 myenv/Lib/site-packages/pip/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/build_env.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/configuration.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/download.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/index.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/legacy_resolve.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/locations.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/pep425tags.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/pyproject.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/__pycache__/wheel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/build_env.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cache.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/base_command.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/main_parser.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/parser.py create mode 100644 myenv/Lib/site-packages/pip/_internal/cli/status_codes.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/check.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/completion.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/debug.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/download.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/hash.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/help.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/install.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/list.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/search.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/show.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/check.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/completion.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/configuration.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/debug.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/download.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/freeze.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/hash.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/help.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/install.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/list.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/search.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/show.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/uninstall.py create mode 100644 myenv/Lib/site-packages/pip/_internal/commands/wheel.py create mode 100644 myenv/Lib/site-packages/pip/_internal/configuration.py create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__pycache__/base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__pycache__/source.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/base.py create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/installed.py create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/source.py create mode 100644 myenv/Lib/site-packages/pip/_internal/distributions/wheel.py create mode 100644 myenv/Lib/site-packages/pip/_internal/download.py create mode 100644 myenv/Lib/site-packages/pip/_internal/exceptions.py create mode 100644 myenv/Lib/site-packages/pip/_internal/index.py create mode 100644 myenv/Lib/site-packages/pip/_internal/legacy_resolve.py create mode 100644 myenv/Lib/site-packages/pip/_internal/locations.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/candidate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/format_control.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/index.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/link.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/__pycache__/target_python.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/models/candidate.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/format_control.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/index.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/link.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/search_scope.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 myenv/Lib/site-packages/pip/_internal/models/target_python.py create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/__pycache__/check.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/check.py create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/freeze.py create mode 100644 myenv/Lib/site-packages/pip/_internal/operations/prepare.py create mode 100644 myenv/Lib/site-packages/pip/_internal/pep425tags.py create mode 100644 myenv/Lib/site-packages/pip/_internal/pyproject.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/constructors.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/req_file.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/req_install.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/req_set.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/req_tracker.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/req/constructors.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/req_file.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/req_install.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/req_set.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/req_tracker.py create mode 100644 myenv/Lib/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/logging.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/marker_files.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/misc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/models.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/outdated.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/typing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/ui.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/appdirs.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/compat.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/deprecation.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/encoding.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/filesystem.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/glibc.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/hashes.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/logging.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/marker_files.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/misc.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/models.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/outdated.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/packaging.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/typing.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/ui.py create mode 100644 myenv/Lib/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/git.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/git.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/subversion.py create mode 100644 myenv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 myenv/Lib/site-packages/pip/_internal/wheel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/appdirs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/distro.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/retrying.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/__pycache__/six.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/appdirs.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 myenv/Lib/site-packages/pip/_vendor/certifi/core.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langcyrillicmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/enums.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/chardet/version.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/win32.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/database.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/index.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/locators.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/markers.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/resources.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/util.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/version.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 myenv/Lib/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/distro.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/codec.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/core.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/intranges.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/package_data.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/ipaddress.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/linklockfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/linklockfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/mkdirlockfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/pidlockfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/sqlitelockfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/lockfile/symlinklockfile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/markers.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/utils.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/packaging/version.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/_in_process.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/build.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/check.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/colorlog.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/envbuild.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/__pycache__/wrappers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/build.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/check.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/bar.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/counter.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/progress/spinner.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pyparsing.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/__pycache__/writer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/core.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/parser.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/test.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/utils.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/pytoml/writer.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/api.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/help.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/models.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/__version__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/adapters.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/api.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/auth.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/certs.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/cookies.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/help.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/hooks.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/models.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/packages.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/sessions.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/structures.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/requests/utils.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/retrying.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/six.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/_mixin.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/abnf_regexp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/api.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/builder.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/iri.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/misc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/normalizers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/parseresult.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/uri.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/__pycache__/validators.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/_mixin.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/abnf_regexp.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/api.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/builder.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/compat.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/exceptions.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/iri.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/misc.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/normalizers.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/parseresult.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/uri.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/rfc3986/validators.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/request.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/response.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 myenv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 myenv/Lib/site-packages/pkg_resources/__init__.py create mode 100644 myenv/Lib/site-packages/pkg_resources/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/__pycache__/py31compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 myenv/Lib/site-packages/pkg_resources/_vendor/six.py create mode 100644 myenv/Lib/site-packages/pkg_resources/extern/__init__.py create mode 100644 myenv/Lib/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pkg_resources/py31compat.py create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/pycparser-2.23.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/pycparser/__init__.py create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/_ast_gen.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/_build_tables.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/ast_transforms.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/c_ast.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/c_generator.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/c_lexer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/c_parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/lextab.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/plyparser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/__pycache__/yacctab.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/_ast_gen.py create mode 100644 myenv/Lib/site-packages/pycparser/_build_tables.py create mode 100644 myenv/Lib/site-packages/pycparser/_c_ast.cfg create mode 100644 myenv/Lib/site-packages/pycparser/ast_transforms.py create mode 100644 myenv/Lib/site-packages/pycparser/c_ast.py create mode 100644 myenv/Lib/site-packages/pycparser/c_generator.py create mode 100644 myenv/Lib/site-packages/pycparser/c_lexer.py create mode 100644 myenv/Lib/site-packages/pycparser/c_parser.py create mode 100644 myenv/Lib/site-packages/pycparser/lextab.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/__init__.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/cpp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/ctokens.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/lex.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/yacc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/__pycache__/ygen.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/pycparser/ply/cpp.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/ctokens.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/lex.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/yacc.py create mode 100644 myenv/Lib/site-packages/pycparser/ply/ygen.py create mode 100644 myenv/Lib/site-packages/pycparser/plyparser.py create mode 100644 myenv/Lib/site-packages/pycparser/yacctab.py create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/requests-2.32.4.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/requests/__init__.py create mode 100644 myenv/Lib/site-packages/requests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/__version__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/_internal_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/adapters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/api.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/auth.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/certs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/cookies.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/help.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/hooks.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/models.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/packages.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/sessions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/status_codes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/requests/__version__.py create mode 100644 myenv/Lib/site-packages/requests/_internal_utils.py create mode 100644 myenv/Lib/site-packages/requests/adapters.py create mode 100644 myenv/Lib/site-packages/requests/api.py create mode 100644 myenv/Lib/site-packages/requests/auth.py create mode 100644 myenv/Lib/site-packages/requests/certs.py create mode 100644 myenv/Lib/site-packages/requests/compat.py create mode 100644 myenv/Lib/site-packages/requests/cookies.py create mode 100644 myenv/Lib/site-packages/requests/exceptions.py create mode 100644 myenv/Lib/site-packages/requests/help.py create mode 100644 myenv/Lib/site-packages/requests/hooks.py create mode 100644 myenv/Lib/site-packages/requests/models.py create mode 100644 myenv/Lib/site-packages/requests/packages.py create mode 100644 myenv/Lib/site-packages/requests/sessions.py create mode 100644 myenv/Lib/site-packages/requests/status_codes.py create mode 100644 myenv/Lib/site-packages/requests/structures.py create mode 100644 myenv/Lib/site-packages/requests/utils.py create mode 100644 myenv/Lib/site-packages/selenium-4.27.1.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/selenium-4.27.1.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/selenium-4.27.1.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/selenium-4.27.1.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/selenium-4.27.1.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/selenium/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/__pycache__/types.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/common/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/common/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/common/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/common/exceptions.py create mode 100644 myenv/Lib/site-packages/selenium/py.typed create mode 100644 myenv/Lib/site-packages/selenium/types.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chrome/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/chromium/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/action_chains.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/alert.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/by.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/desired_capabilities.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/driver_finder.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/keys.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/log.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/print_page_options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/proxy.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/selenium_manager.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/timeouts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/virtual_authenticator.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/__pycache__/window.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/action_chains.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/action_builder.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/input_device.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/interaction.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/key_actions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/key_input.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/mouse_button.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/pointer_actions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/pointer_input.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/wheel_actions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/__pycache__/wheel_input.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/action_builder.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/input_device.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/interaction.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/key_actions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/key_input.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/mouse_button.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/pointer_actions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/pointer_input.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/wheel_actions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/actions/wheel_input.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/alert.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__pycache__/cdp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__pycache__/script.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/__pycache__/session.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/cdp.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/console.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/script.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/bidi/session.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/by.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/desired_capabilities.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/accessibility.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/animation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/audits.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/autofill.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/background_service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/bluetooth_emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/browser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/cache_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/cast.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/css.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/database.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/device_access.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/device_orientation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/dom_debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/dom_snapshot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/dom_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/event_breakpoints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/extensions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/fed_cm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/fetch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/file_system.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/headless_experimental.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/heap_profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/indexed_db.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/input_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/inspector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/layer_tree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/log.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/media.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/memory.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/network.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/overlay.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/page.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/performance.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/performance_timeline.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/preload.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/pwa.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/runtime.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/schema.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/security.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/service_worker.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/system_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/target.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/tethering.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/tracing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/web_audio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/__pycache__/web_authn.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/accessibility.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/animation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/audits.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/autofill.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/background_service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/bluetooth_emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/browser.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/cache_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/cast.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/console.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/css.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/database.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/device_access.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/device_orientation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/dom.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/dom_debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/dom_snapshot.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/dom_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/event_breakpoints.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/extensions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/fed_cm.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/fetch.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/file_system.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/headless_experimental.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/heap_profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/indexed_db.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/input_.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/inspector.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/io.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/layer_tree.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/log.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/media.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/memory.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/network.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/overlay.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/page.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/performance.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/performance_timeline.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/preload.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/pwa.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/py.typed create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/runtime.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/schema.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/security.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/service_worker.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/system_info.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/target.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/tethering.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/tracing.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/util.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/web_audio.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v129/web_authn.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/accessibility.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/animation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/audits.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/autofill.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/background_service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/bluetooth_emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/browser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/cache_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/cast.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/css.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/database.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/device_access.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/device_orientation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/dom_debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/dom_snapshot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/dom_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/event_breakpoints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/extensions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/fed_cm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/fetch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/file_system.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/headless_experimental.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/heap_profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/indexed_db.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/input_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/inspector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/layer_tree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/log.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/media.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/memory.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/network.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/overlay.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/page.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/performance.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/performance_timeline.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/preload.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/pwa.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/runtime.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/schema.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/security.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/service_worker.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/system_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/target.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/tethering.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/tracing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/web_audio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/__pycache__/web_authn.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/accessibility.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/animation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/audits.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/autofill.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/background_service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/bluetooth_emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/browser.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/cache_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/cast.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/console.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/css.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/database.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/device_access.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/device_orientation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/dom.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/dom_debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/dom_snapshot.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/dom_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/event_breakpoints.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/extensions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/fed_cm.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/fetch.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/file_system.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/headless_experimental.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/heap_profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/indexed_db.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/input_.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/inspector.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/io.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/layer_tree.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/log.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/media.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/memory.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/network.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/overlay.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/page.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/performance.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/performance_timeline.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/preload.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/pwa.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/py.typed create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/runtime.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/schema.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/security.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/service_worker.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/system_info.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/target.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/tethering.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/tracing.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/util.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/web_audio.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v130/web_authn.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/accessibility.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/animation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/audits.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/autofill.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/background_service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/bluetooth_emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/browser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/cache_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/cast.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/css.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/database.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/device_access.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/device_orientation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/dom_debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/dom_snapshot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/dom_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/event_breakpoints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/extensions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/fed_cm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/fetch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/file_system.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/headless_experimental.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/heap_profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/indexed_db.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/input_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/inspector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/layer_tree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/log.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/media.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/memory.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/network.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/overlay.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/page.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/performance.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/performance_timeline.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/preload.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/pwa.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/runtime.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/schema.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/security.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/service_worker.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/system_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/target.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/tethering.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/tracing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/web_audio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/__pycache__/web_authn.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/accessibility.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/animation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/audits.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/autofill.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/background_service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/bluetooth_emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/browser.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/cache_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/cast.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/console.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/css.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/database.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/device_access.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/device_orientation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/dom.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/dom_debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/dom_snapshot.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/dom_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/event_breakpoints.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/extensions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/fed_cm.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/fetch.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/file_system.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/headless_experimental.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/heap_profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/indexed_db.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/input_.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/inspector.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/io.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/layer_tree.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/log.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/media.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/memory.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/network.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/overlay.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/page.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/performance.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/performance_timeline.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/preload.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/pwa.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/py.typed create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/runtime.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/schema.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/security.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/service_worker.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/system_info.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/target.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/tethering.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/tracing.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/util.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/web_audio.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v131/web_authn.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/accessibility.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/animation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/application_cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/audits.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/background_service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/browser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/cache_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/cast.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/css.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/database.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/device_orientation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/dom.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/dom_debugger.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/dom_snapshot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/dom_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/emulation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/fetch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/headless_experimental.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/heap_profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/indexed_db.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/input_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/inspector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/layer_tree.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/log.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/media.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/memory.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/network.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/overlay.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/page.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/performance.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/runtime.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/schema.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/security.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/service_worker.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/system_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/target.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/tethering.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/tracing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/web_audio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/__pycache__/web_authn.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/accessibility.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/animation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/application_cache.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/audits.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/background_service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/browser.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/cache_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/cast.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/console.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/css.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/database.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/device_orientation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/dom.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/dom_debugger.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/dom_snapshot.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/dom_storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/emulation.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/fetch.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/headless_experimental.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/heap_profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/indexed_db.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/input_.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/inspector.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/io.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/layer_tree.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/log.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/media.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/memory.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/network.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/overlay.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/page.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/performance.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/profiler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/py.typed create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/runtime.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/schema.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/security.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/service_worker.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/storage.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/system_info.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/target.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/tethering.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/tracing.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/util.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/web_audio.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/devtools/v85/web_authn.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/driver_finder.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/fedcm/__pycache__/account.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/fedcm/__pycache__/dialog.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/fedcm/account.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/fedcm/dialog.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/keys.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/linux/selenium-manager create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/log.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/macos/selenium-manager create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/mutation-listener.js create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/print_page_options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/proxy.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/selenium_manager.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/timeouts.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/utils.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/virtual_authenticator.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/window.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/common/windows/selenium-manager.exe create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/edge/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/firefox_binary.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/firefox_profile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/firefox_binary.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/firefox_profile.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/firefox/webdriver_prefs.json create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/ie/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/bidi_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/client_config.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/command.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/errorhandler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/fedcm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/file_detector.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/locator_converter.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/mobile.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/script_key.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/shadowroot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/switch_to.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/webelement.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/__pycache__/websocket_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/bidi_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/client_config.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/command.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/errorhandler.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/fedcm.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/file_detector.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/findElements.js create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/getAttribute.js create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/isDisplayed.js create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/locator_converter.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/mobile.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/script_key.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/shadowroot.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/switch_to.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/utils.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/webelement.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/remote/websocket_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/permissions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/remote_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/permissions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/remote_connection.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/safari/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/abstract_event_listener.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/color.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/event_firing_webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/events.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/expected_conditions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/relative_locator.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/select.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/ui.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/__pycache__/wait.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/abstract_event_listener.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/color.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/event_firing_webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/events.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/expected_conditions.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/relative_locator.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/select.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/ui.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/support/wait.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/webkitgtk/webdriver.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/__init__.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/__pycache__/options.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/__pycache__/service.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/__pycache__/webdriver.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/options.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/service.py create mode 100644 myenv/Lib/site-packages/selenium/webdriver/wpewebkit/webdriver.py create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/dependency_links.txt create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/setuptools-41.2.0.dist-info/zip-safe create mode 100644 myenv/Lib/site-packages/setuptools/__init__.py create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/archive_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/build_meta.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/config.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/dep_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/depends.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/dist.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/extension.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/glibc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/glob.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/launch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/monkey.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/msvc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/namespaces.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/package_index.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/pep425tags.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/py27compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/py31compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/py33compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/sandbox.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/site-patch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/ssl_support.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/unicode_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/wheel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/__pycache__/windows_support.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_deprecation_warning.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/__init__.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/__pycache__/six.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 myenv/Lib/site-packages/setuptools/_vendor/six.py create mode 100644 myenv/Lib/site-packages/setuptools/archive_util.py create mode 100644 myenv/Lib/site-packages/setuptools/build_meta.py create mode 100644 myenv/Lib/site-packages/setuptools/cli-32.exe create mode 100644 myenv/Lib/site-packages/setuptools/cli-64.exe create mode 100644 myenv/Lib/site-packages/setuptools/cli.exe create mode 100644 myenv/Lib/site-packages/setuptools/command/__init__.py create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/alias.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/build_clib.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/build_ext.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/build_py.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/develop.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/dist_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/easy_install.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/egg_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/install.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/install_lib.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/install_scripts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/py36compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/register.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/rotate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/saveopts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/sdist.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/setopt.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/upload.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/__pycache__/upload_docs.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/command/alias.py create mode 100644 myenv/Lib/site-packages/setuptools/command/bdist_egg.py create mode 100644 myenv/Lib/site-packages/setuptools/command/bdist_rpm.py create mode 100644 myenv/Lib/site-packages/setuptools/command/bdist_wininst.py create mode 100644 myenv/Lib/site-packages/setuptools/command/build_clib.py create mode 100644 myenv/Lib/site-packages/setuptools/command/build_ext.py create mode 100644 myenv/Lib/site-packages/setuptools/command/build_py.py create mode 100644 myenv/Lib/site-packages/setuptools/command/develop.py create mode 100644 myenv/Lib/site-packages/setuptools/command/dist_info.py create mode 100644 myenv/Lib/site-packages/setuptools/command/easy_install.py create mode 100644 myenv/Lib/site-packages/setuptools/command/egg_info.py create mode 100644 myenv/Lib/site-packages/setuptools/command/install.py create mode 100644 myenv/Lib/site-packages/setuptools/command/install_egg_info.py create mode 100644 myenv/Lib/site-packages/setuptools/command/install_lib.py create mode 100644 myenv/Lib/site-packages/setuptools/command/install_scripts.py create mode 100644 myenv/Lib/site-packages/setuptools/command/launcher manifest.xml create mode 100644 myenv/Lib/site-packages/setuptools/command/py36compat.py create mode 100644 myenv/Lib/site-packages/setuptools/command/register.py create mode 100644 myenv/Lib/site-packages/setuptools/command/rotate.py create mode 100644 myenv/Lib/site-packages/setuptools/command/saveopts.py create mode 100644 myenv/Lib/site-packages/setuptools/command/sdist.py create mode 100644 myenv/Lib/site-packages/setuptools/command/setopt.py create mode 100644 myenv/Lib/site-packages/setuptools/command/test.py create mode 100644 myenv/Lib/site-packages/setuptools/command/upload.py create mode 100644 myenv/Lib/site-packages/setuptools/command/upload_docs.py create mode 100644 myenv/Lib/site-packages/setuptools/config.py create mode 100644 myenv/Lib/site-packages/setuptools/dep_util.py create mode 100644 myenv/Lib/site-packages/setuptools/depends.py create mode 100644 myenv/Lib/site-packages/setuptools/dist.py create mode 100644 myenv/Lib/site-packages/setuptools/extension.py create mode 100644 myenv/Lib/site-packages/setuptools/extern/__init__.py create mode 100644 myenv/Lib/site-packages/setuptools/extern/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/setuptools/glibc.py create mode 100644 myenv/Lib/site-packages/setuptools/glob.py create mode 100644 myenv/Lib/site-packages/setuptools/gui-32.exe create mode 100644 myenv/Lib/site-packages/setuptools/gui-64.exe create mode 100644 myenv/Lib/site-packages/setuptools/gui.exe create mode 100644 myenv/Lib/site-packages/setuptools/launch.py create mode 100644 myenv/Lib/site-packages/setuptools/lib2to3_ex.py create mode 100644 myenv/Lib/site-packages/setuptools/monkey.py create mode 100644 myenv/Lib/site-packages/setuptools/msvc.py create mode 100644 myenv/Lib/site-packages/setuptools/namespaces.py create mode 100644 myenv/Lib/site-packages/setuptools/package_index.py create mode 100644 myenv/Lib/site-packages/setuptools/pep425tags.py create mode 100644 myenv/Lib/site-packages/setuptools/py27compat.py create mode 100644 myenv/Lib/site-packages/setuptools/py31compat.py create mode 100644 myenv/Lib/site-packages/setuptools/py33compat.py create mode 100644 myenv/Lib/site-packages/setuptools/sandbox.py create mode 100644 myenv/Lib/site-packages/setuptools/script (dev).tmpl create mode 100644 myenv/Lib/site-packages/setuptools/script.tmpl create mode 100644 myenv/Lib/site-packages/setuptools/site-patch.py create mode 100644 myenv/Lib/site-packages/setuptools/ssl_support.py create mode 100644 myenv/Lib/site-packages/setuptools/unicode_utils.py create mode 100644 myenv/Lib/site-packages/setuptools/version.py create mode 100644 myenv/Lib/site-packages/setuptools/wheel.py create mode 100644 myenv/Lib/site-packages/setuptools/windows_support.py create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/LICENSE.APACHE2 create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/LICENSE.MIT create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/sniffio-1.3.1.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/sniffio/__init__.py create mode 100644 myenv/Lib/site-packages/sniffio/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sniffio/__pycache__/_impl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sniffio/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sniffio/_impl.py create mode 100644 myenv/Lib/site-packages/sniffio/_tests/__init__.py create mode 100644 myenv/Lib/site-packages/sniffio/_tests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sniffio/_tests/__pycache__/test_sniffio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sniffio/_tests/test_sniffio.py create mode 100644 myenv/Lib/site-packages/sniffio/_version.py create mode 100644 myenv/Lib/site-packages/sniffio/py.typed create mode 100644 myenv/Lib/site-packages/socks.py create mode 100644 myenv/Lib/site-packages/sockshandler.py create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/sortedcontainers-2.4.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/sortedcontainers/__init__.py create mode 100644 myenv/Lib/site-packages/sortedcontainers/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sortedcontainers/__pycache__/sorteddict.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sortedcontainers/__pycache__/sortedlist.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sortedcontainers/__pycache__/sortedset.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/sortedcontainers/sorteddict.py create mode 100644 myenv/Lib/site-packages/sortedcontainers/sortedlist.py create mode 100644 myenv/Lib/site-packages/sortedcontainers/sortedset.py create mode 100644 myenv/Lib/site-packages/soupsieve-2.7.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/soupsieve-2.7.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/soupsieve-2.7.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/soupsieve-2.7.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/soupsieve-2.7.dist-info/licenses/LICENSE.md create mode 100644 myenv/Lib/site-packages/soupsieve/__init__.py create mode 100644 myenv/Lib/site-packages/soupsieve/__meta__.py create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/__meta__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/css_match.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/css_parser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/css_types.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/pretty.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/soupsieve/css_match.py create mode 100644 myenv/Lib/site-packages/soupsieve/css_parser.py create mode 100644 myenv/Lib/site-packages/soupsieve/css_types.py create mode 100644 myenv/Lib/site-packages/soupsieve/pretty.py create mode 100644 myenv/Lib/site-packages/soupsieve/py.typed create mode 100644 myenv/Lib/site-packages/soupsieve/util.py create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/LICENSE.APACHE2 create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/LICENSE.MIT create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/trio-0.27.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/trio/__init__.py create mode 100644 myenv/Lib/site-packages/trio/__main__.py create mode 100644 myenv/Lib/site-packages/trio/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/__main__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_abc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_channel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_deprecate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_dtls.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_file_io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_generic.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_open_tcp_listeners.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_open_tcp_stream.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_open_unix_stream.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_serve_listeners.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_highlevel_ssl_helpers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_path.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_repl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_signals.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_ssl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_subprocess.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_sync.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_threads.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_timeouts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_unix_pipes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_wait_for_object.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/_windows_pipes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/abc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/from_thread.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/lowlevel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/__pycache__/to_thread.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_abc.py create mode 100644 myenv/Lib/site-packages/trio/_channel.py create mode 100644 myenv/Lib/site-packages/trio/_core/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_asyncgens.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_concat_tb.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_entry_queue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_generated_instrumentation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_generated_io_epoll.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_generated_io_kqueue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_generated_io_windows.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_generated_run.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_instrumentation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_io_common.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_io_epoll.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_io_kqueue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_io_windows.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_ki.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_local.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_mock_clock.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_parking_lot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_run.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_thread_cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_traps.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_unbounded_queue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_wakeup_socketpair.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/__pycache__/_windows_cffi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_asyncgens.py create mode 100644 myenv/Lib/site-packages/trio/_core/_concat_tb.py create mode 100644 myenv/Lib/site-packages/trio/_core/_entry_queue.py create mode 100644 myenv/Lib/site-packages/trio/_core/_exceptions.py create mode 100644 myenv/Lib/site-packages/trio/_core/_generated_instrumentation.py create mode 100644 myenv/Lib/site-packages/trio/_core/_generated_io_epoll.py create mode 100644 myenv/Lib/site-packages/trio/_core/_generated_io_kqueue.py create mode 100644 myenv/Lib/site-packages/trio/_core/_generated_io_windows.py create mode 100644 myenv/Lib/site-packages/trio/_core/_generated_run.py create mode 100644 myenv/Lib/site-packages/trio/_core/_instrumentation.py create mode 100644 myenv/Lib/site-packages/trio/_core/_io_common.py create mode 100644 myenv/Lib/site-packages/trio/_core/_io_epoll.py create mode 100644 myenv/Lib/site-packages/trio/_core/_io_kqueue.py create mode 100644 myenv/Lib/site-packages/trio/_core/_io_windows.py create mode 100644 myenv/Lib/site-packages/trio/_core/_ki.py create mode 100644 myenv/Lib/site-packages/trio/_core/_local.py create mode 100644 myenv/Lib/site-packages/trio/_core/_mock_clock.py create mode 100644 myenv/Lib/site-packages/trio/_core/_parking_lot.py create mode 100644 myenv/Lib/site-packages/trio/_core/_run.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_asyncgen.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_exceptiongroup_gc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_guest_mode.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_instrumentation.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_ki.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_local.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_mock_clock.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_parking_lot.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_run.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_thread_cache.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_tutil.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_unbounded_queue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/test_windows.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/__pycache__/tutil.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_asyncgen.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_exceptiongroup_gc.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_guest_mode.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_instrumentation.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_io.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_ki.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_local.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_mock_clock.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_parking_lot.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_run.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_thread_cache.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_tutil.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_unbounded_queue.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/test_windows.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/tutil.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/type_tests/__pycache__/nursery_start.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/type_tests/__pycache__/run.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/type_tests/nursery_start.py create mode 100644 myenv/Lib/site-packages/trio/_core/_tests/type_tests/run.py create mode 100644 myenv/Lib/site-packages/trio/_core/_thread_cache.py create mode 100644 myenv/Lib/site-packages/trio/_core/_traps.py create mode 100644 myenv/Lib/site-packages/trio/_core/_unbounded_queue.py create mode 100644 myenv/Lib/site-packages/trio/_core/_wakeup_socketpair.py create mode 100644 myenv/Lib/site-packages/trio/_core/_windows_cffi.py create mode 100644 myenv/Lib/site-packages/trio/_deprecate.py create mode 100644 myenv/Lib/site-packages/trio/_dtls.py create mode 100644 myenv/Lib/site-packages/trio/_file_io.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_generic.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_open_tcp_listeners.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_open_tcp_stream.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_open_unix_stream.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_serve_listeners.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_socket.py create mode 100644 myenv/Lib/site-packages/trio/_highlevel_ssl_helpers.py create mode 100644 myenv/Lib/site-packages/trio/_path.py create mode 100644 myenv/Lib/site-packages/trio/_repl.py create mode 100644 myenv/Lib/site-packages/trio/_signals.py create mode 100644 myenv/Lib/site-packages/trio/_socket.py create mode 100644 myenv/Lib/site-packages/trio/_ssl.py create mode 100644 myenv/Lib/site-packages/trio/_subprocess.py create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/__pycache__/kqueue.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/__pycache__/waitid.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/__pycache__/windows.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/kqueue.py create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/waitid.py create mode 100644 myenv/Lib/site-packages/trio/_subprocess_platform/windows.py create mode 100644 myenv/Lib/site-packages/trio/_sync.py create mode 100644 myenv/Lib/site-packages/trio/_tests/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/check_type_completeness.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/module_with_deprecations.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/pytest_plugin.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_abc.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_channel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_contextvars.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_deprecate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_deprecate_strict_exception_groups_false.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_dtls.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_exports.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_fakenet.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_file_io.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_generic.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_open_tcp_listeners.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_open_tcp_stream.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_open_unix_stream.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_serve_listeners.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_highlevel_ssl_helpers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_path.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_repl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_scheduler_determinism.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_signals.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_ssl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_subprocess.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_sync.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_testing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_testing_raisesgroup.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_threads.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_timeouts.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_tracing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_trio.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_unix_pipes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_wait_for_object.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/__pycache__/test_windows_pipes.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/check_type_completeness.py create mode 100644 myenv/Lib/site-packages/trio/_tests/module_with_deprecations.py create mode 100644 myenv/Lib/site-packages/trio/_tests/pytest_plugin.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_abc.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_channel.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_contextvars.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_deprecate.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_deprecate_strict_exception_groups_false.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_dtls.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_exports.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_fakenet.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_file_io.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_generic.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_open_tcp_listeners.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_open_tcp_stream.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_open_unix_stream.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_serve_listeners.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_socket.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_highlevel_ssl_helpers.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_path.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_repl.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_scheduler_determinism.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_signals.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_socket.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_ssl.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_subprocess.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_sync.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_testing.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_testing_raisesgroup.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_threads.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_timeouts.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_tracing.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_trio.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_unix_pipes.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_util.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_wait_for_object.py create mode 100644 myenv/Lib/site-packages/trio/_tests/test_windows_pipes.py create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/__pycache__/test_gen_exports.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/__pycache__/test_mypy_annotate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/test_gen_exports.py create mode 100644 myenv/Lib/site-packages/trio/_tests/tools/test_mypy_annotate.py create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/__pycache__/check_wraps.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/__pycache__/open_memory_channel.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/__pycache__/path.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/__pycache__/raisesgroup.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/__pycache__/task_status.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/check_wraps.py create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/open_memory_channel.py create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/path.py create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/raisesgroup.py create mode 100644 myenv/Lib/site-packages/trio/_tests/type_tests/task_status.py create mode 100644 myenv/Lib/site-packages/trio/_threads.py create mode 100644 myenv/Lib/site-packages/trio/_timeouts.py create mode 100644 myenv/Lib/site-packages/trio/_tools/__init__.py create mode 100644 myenv/Lib/site-packages/trio/_tools/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tools/__pycache__/gen_exports.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tools/__pycache__/mypy_annotate.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/_tools/gen_exports.py create mode 100644 myenv/Lib/site-packages/trio/_tools/mypy_annotate.py create mode 100644 myenv/Lib/site-packages/trio/_unix_pipes.py create mode 100644 myenv/Lib/site-packages/trio/_util.py create mode 100644 myenv/Lib/site-packages/trio/_version.py create mode 100644 myenv/Lib/site-packages/trio/_wait_for_object.py create mode 100644 myenv/Lib/site-packages/trio/_windows_pipes.py create mode 100644 myenv/Lib/site-packages/trio/abc.py create mode 100644 myenv/Lib/site-packages/trio/from_thread.py create mode 100644 myenv/Lib/site-packages/trio/lowlevel.py create mode 100644 myenv/Lib/site-packages/trio/py.typed create mode 100644 myenv/Lib/site-packages/trio/socket.py create mode 100644 myenv/Lib/site-packages/trio/testing/__init__.py create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_check_streams.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_checkpoints.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_fake_net.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_memory_streams.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_network.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_raises_group.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_sequencer.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/__pycache__/_trio_test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio/testing/_check_streams.py create mode 100644 myenv/Lib/site-packages/trio/testing/_checkpoints.py create mode 100644 myenv/Lib/site-packages/trio/testing/_fake_net.py create mode 100644 myenv/Lib/site-packages/trio/testing/_memory_streams.py create mode 100644 myenv/Lib/site-packages/trio/testing/_network.py create mode 100644 myenv/Lib/site-packages/trio/testing/_raises_group.py create mode 100644 myenv/Lib/site-packages/trio/testing/_sequencer.py create mode 100644 myenv/Lib/site-packages/trio/testing/_trio_test.py create mode 100644 myenv/Lib/site-packages/trio/to_thread.py create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/trio_websocket-0.12.2.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/trio_websocket/__init__.py create mode 100644 myenv/Lib/site-packages/trio_websocket/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio_websocket/__pycache__/_impl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio_websocket/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/trio_websocket/_impl.py create mode 100644 myenv/Lib/site-packages/trio_websocket/_version.py create mode 100644 myenv/Lib/site-packages/trio_websocket/py.typed create mode 100644 myenv/Lib/site-packages/typing_extensions-4.13.2.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/typing_extensions-4.13.2.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/typing_extensions-4.13.2.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/typing_extensions-4.13.2.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/typing_extensions-4.13.2.dist-info/licenses/LICENSE create mode 100644 myenv/Lib/site-packages/typing_extensions.py create mode 100644 myenv/Lib/site-packages/urllib3-2.2.3.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/urllib3-2.2.3.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/urllib3-2.2.3.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/urllib3-2.2.3.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/urllib3-2.2.3.dist-info/licenses/LICENSE.txt create mode 100644 myenv/Lib/site-packages/urllib3/__init__.py create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/_base_connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/_collections.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/_request_methods.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/_version.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/connectionpool.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/fields.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/filepost.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/poolmanager.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/_base_connection.py create mode 100644 myenv/Lib/site-packages/urllib3/_collections.py create mode 100644 myenv/Lib/site-packages/urllib3/_request_methods.py create mode 100644 myenv/Lib/site-packages/urllib3/_version.py create mode 100644 myenv/Lib/site-packages/urllib3/connection.py create mode 100644 myenv/Lib/site-packages/urllib3/connectionpool.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/__init__.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/__pycache__/socks.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__init__.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/connection.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/request.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/emscripten/response.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 myenv/Lib/site-packages/urllib3/contrib/socks.py create mode 100644 myenv/Lib/site-packages/urllib3/exceptions.py create mode 100644 myenv/Lib/site-packages/urllib3/fields.py create mode 100644 myenv/Lib/site-packages/urllib3/filepost.py create mode 100644 myenv/Lib/site-packages/urllib3/http2/__init__.py create mode 100644 myenv/Lib/site-packages/urllib3/http2/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/http2/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/http2/__pycache__/probe.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/http2/connection.py create mode 100644 myenv/Lib/site-packages/urllib3/http2/probe.py create mode 100644 myenv/Lib/site-packages/urllib3/poolmanager.py create mode 100644 myenv/Lib/site-packages/urllib3/py.typed create mode 100644 myenv/Lib/site-packages/urllib3/response.py create mode 100644 myenv/Lib/site-packages/urllib3/util/__init__.py create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/proxy.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/retry.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/ssl_.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/ssltransport.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/timeout.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/url.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/util.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/__pycache__/wait.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/urllib3/util/connection.py create mode 100644 myenv/Lib/site-packages/urllib3/util/proxy.py create mode 100644 myenv/Lib/site-packages/urllib3/util/request.py create mode 100644 myenv/Lib/site-packages/urllib3/util/response.py create mode 100644 myenv/Lib/site-packages/urllib3/util/retry.py create mode 100644 myenv/Lib/site-packages/urllib3/util/ssl_.py create mode 100644 myenv/Lib/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 myenv/Lib/site-packages/urllib3/util/ssltransport.py create mode 100644 myenv/Lib/site-packages/urllib3/util/timeout.py create mode 100644 myenv/Lib/site-packages/urllib3/util/url.py create mode 100644 myenv/Lib/site-packages/urllib3/util/util.py create mode 100644 myenv/Lib/site-packages/urllib3/util/wait.py create mode 100644 myenv/Lib/site-packages/websocket/__init__.py create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_abnf.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_app.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_cookiejar.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_core.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_handshake.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_http.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_logging.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_socket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_ssl_compat.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_url.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/__pycache__/_wsdump.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/_abnf.py create mode 100644 myenv/Lib/site-packages/websocket/_app.py create mode 100644 myenv/Lib/site-packages/websocket/_cookiejar.py create mode 100644 myenv/Lib/site-packages/websocket/_core.py create mode 100644 myenv/Lib/site-packages/websocket/_exceptions.py create mode 100644 myenv/Lib/site-packages/websocket/_handshake.py create mode 100644 myenv/Lib/site-packages/websocket/_http.py create mode 100644 myenv/Lib/site-packages/websocket/_logging.py create mode 100644 myenv/Lib/site-packages/websocket/_socket.py create mode 100644 myenv/Lib/site-packages/websocket/_ssl_compat.py create mode 100644 myenv/Lib/site-packages/websocket/_url.py create mode 100644 myenv/Lib/site-packages/websocket/_utils.py create mode 100644 myenv/Lib/site-packages/websocket/_wsdump.py create mode 100644 myenv/Lib/site-packages/websocket/py.typed create mode 100644 myenv/Lib/site-packages/websocket/tests/__init__.py create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/echo-server.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_abnf.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_app.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_cookiejar.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_http.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_url.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/__pycache__/test_websocket.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/websocket/tests/data/header01.txt create mode 100644 myenv/Lib/site-packages/websocket/tests/data/header02.txt create mode 100644 myenv/Lib/site-packages/websocket/tests/data/header03.txt create mode 100644 myenv/Lib/site-packages/websocket/tests/echo-server.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_abnf.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_app.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_cookiejar.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_http.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_url.py create mode 100644 myenv/Lib/site-packages/websocket/tests/test_websocket.py create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/entry_points.txt create mode 100644 myenv/Lib/site-packages/websocket_client-1.8.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/werkzeug-3.0.6.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/werkzeug-3.0.6.dist-info/LICENSE.txt create mode 100644 myenv/Lib/site-packages/werkzeug-3.0.6.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/werkzeug-3.0.6.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/werkzeug-3.0.6.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/werkzeug/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/_internal.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/_reloader.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/formparser.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/http.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/local.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/security.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/serving.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/test.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/testapp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/urls.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/user_agent.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/__pycache__/wsgi.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/_internal.py create mode 100644 myenv/Lib/site-packages/werkzeug/_reloader.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/auth.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/cache_control.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/range.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/accept.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/accept.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/auth.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/cache_control.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/cache_control.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/csp.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/csp.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/etag.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/etag.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/file_storage.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/file_storage.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/headers.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/headers.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/mixins.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/mixins.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/range.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/range.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/structures.py create mode 100644 myenv/Lib/site-packages/werkzeug/datastructures/structures.pyi create mode 100644 myenv/Lib/site-packages/werkzeug/debug/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/debug/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/debug/__pycache__/console.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/debug/__pycache__/repr.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/debug/console.py create mode 100644 myenv/Lib/site-packages/werkzeug/debug/repr.py create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/ICON_LICENSE.md create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/console.png create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/less.png create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/more.png create mode 100644 myenv/Lib/site-packages/werkzeug/debug/shared/style.css create mode 100644 myenv/Lib/site-packages/werkzeug/debug/tbtools.py create mode 100644 myenv/Lib/site-packages/werkzeug/exceptions.py create mode 100644 myenv/Lib/site-packages/werkzeug/formparser.py create mode 100644 myenv/Lib/site-packages/werkzeug/http.py create mode 100644 myenv/Lib/site-packages/werkzeug/local.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/lint.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/lint.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/profiler.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 myenv/Lib/site-packages/werkzeug/middleware/shared_data.py create mode 100644 myenv/Lib/site-packages/werkzeug/py.typed create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/converters.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/exceptions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/map.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/matcher.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/__pycache__/rules.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/routing/converters.py create mode 100644 myenv/Lib/site-packages/werkzeug/routing/exceptions.py create mode 100644 myenv/Lib/site-packages/werkzeug/routing/map.py create mode 100644 myenv/Lib/site-packages/werkzeug/routing/matcher.py create mode 100644 myenv/Lib/site-packages/werkzeug/routing/rules.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/http.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/__pycache__/utils.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/http.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/multipart.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/request.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/response.py create mode 100644 myenv/Lib/site-packages/werkzeug/sansio/utils.py create mode 100644 myenv/Lib/site-packages/werkzeug/security.py create mode 100644 myenv/Lib/site-packages/werkzeug/serving.py create mode 100644 myenv/Lib/site-packages/werkzeug/test.py create mode 100644 myenv/Lib/site-packages/werkzeug/testapp.py create mode 100644 myenv/Lib/site-packages/werkzeug/urls.py create mode 100644 myenv/Lib/site-packages/werkzeug/user_agent.py create mode 100644 myenv/Lib/site-packages/werkzeug/utils.py create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/__init__.py create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/response.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/request.py create mode 100644 myenv/Lib/site-packages/werkzeug/wrappers/response.py create mode 100644 myenv/Lib/site-packages/werkzeug/wsgi.py create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/wsproto-1.2.0.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/wsproto/__init__.py create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/connection.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/events.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/extensions.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/frame_protocol.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/handshake.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/typing.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/__pycache__/utilities.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/wsproto/connection.py create mode 100644 myenv/Lib/site-packages/wsproto/events.py create mode 100644 myenv/Lib/site-packages/wsproto/extensions.py create mode 100644 myenv/Lib/site-packages/wsproto/frame_protocol.py create mode 100644 myenv/Lib/site-packages/wsproto/handshake.py create mode 100644 myenv/Lib/site-packages/wsproto/py.typed create mode 100644 myenv/Lib/site-packages/wsproto/typing.py create mode 100644 myenv/Lib/site-packages/wsproto/utilities.py create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/INSTALLER create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/LICENSE create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/METADATA create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/RECORD create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/WHEEL create mode 100644 myenv/Lib/site-packages/zipp-3.20.2.dist-info/top_level.txt create mode 100644 myenv/Lib/site-packages/zipp/__init__.py create mode 100644 myenv/Lib/site-packages/zipp/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/zipp/__pycache__/glob.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/zipp/compat/__init__.py create mode 100644 myenv/Lib/site-packages/zipp/compat/__pycache__/__init__.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/zipp/compat/__pycache__/overlay.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/zipp/compat/__pycache__/py310.cpython-38.pyc create mode 100644 myenv/Lib/site-packages/zipp/compat/overlay.py create mode 100644 myenv/Lib/site-packages/zipp/compat/py310.py create mode 100644 myenv/Lib/site-packages/zipp/glob.py create mode 100644 myenv/Scripts/Activate.ps1 create mode 100644 myenv/Scripts/activate create mode 100644 myenv/Scripts/activate.bat create mode 100644 myenv/Scripts/deactivate.bat create mode 100644 myenv/Scripts/easy_install-3.8.exe create mode 100644 myenv/Scripts/easy_install.exe create mode 100644 myenv/Scripts/flask.exe create mode 100644 myenv/Scripts/normalizer.exe create mode 100644 myenv/Scripts/pip.exe create mode 100644 myenv/Scripts/pip3.8.exe create mode 100644 myenv/Scripts/pip3.exe create mode 100644 myenv/Scripts/python.exe create mode 100644 myenv/Scripts/pythonw.exe create mode 100644 myenv/Scripts/wsdump.exe create mode 100644 myenv/pyvenv.cfg diff --git a/DuckDuckGo.py b/DuckDuckGo.py new file mode 100644 index 0000000..fa1cd14 --- /dev/null +++ b/DuckDuckGo.py @@ -0,0 +1,42 @@ +import requests +from bs4 import BeautifulSoup +from urllib.parse import urlparse + +def search_duckduckgo(query): + session = requests.Session() + session.headers.update({ + "User-Agent": "Mozilla/5.0" + }) + + response = session.post( + "https://html.duckduckgo.com/html/", + data={ + "q": query, + "kl": "us-en", + "df": "w" + } + ) + + soup = BeautifulSoup(response.text, "html.parser") + + results = [] + + for a in soup.find_all("a", class_="result__a"): + title = a.get_text(strip=True) + url = a.get("href") + + if not url: + continue + + domain = urlparse(url).netloc.lower() + + # Bỏ .vn + if domain.endswith(".vn"): + continue + + results.append({ + "title": title, + "url": url + }) + + return results \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, 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 +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state 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 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..49a1ed0 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# DuckDuckGo-Scraper +A Simple Python Script To Scrape DuckDuckGo Search Results. +----- +## Prerequisites +1. [Python](https://www.python.org/downloads/) +2. [ChromeDriver](https://chromedriver.chromium.org/downloads) +----- +### Note +``` +1. Check The Version Of The Chrome You Are Using. +2. Make Sure You Use Place The ChromeDriver In The Present Working Directory. +``` +----- +## Usage +```python +# Installing Required Modules.. +pip install selenium + +# Running Scraper File.. +python DuckDuckGo.py +``` diff --git a/Results.txt b/Results.txt new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/DuckDuckGo.cpython-38.pyc b/__pycache__/DuckDuckGo.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0cdca195787a4ea383c3de8b0f10428b49efe6b0 GIT binary patch literal 900 zcmYjP&2AGh5VpO)*(5FH2`INnB=7DfAKrMcdfPZtCoAY%is&-BS^q z`UX8D2M)ZFubg-VBnsngC2DKNGozXL?9X%DZU+cf^!$7L%|hs>aqcbx&Px#a2oyyW zb2Kz3;dnuY1RLAp*1{gzVB6IBf`$&o1JrSUK?OSMVBLPr!d%7EoDb4GgMgn4o`piP z2{t*ms{yAAvJWD!Kq<7sYgFM9&&kT7n35Q;F-G9q)GBK@>RwsYyCfA+PD$o2^)E z+H`Y`#n7tJH3n!OdmS}v|u{2(4a>|EI%vWn$vCm5T(>S5ykaO+Nm>SnH3oHR6g0!13#nXv)czVW!_E|#Z zS*#-MhFJzqr=cCd6zAHLw~%lPnWc#YED1B9y_@$);X^~wG^$m%rs*P#lOISt0QdLP z{k@SPS&rWCcXxJ22TY!-G#ecNokrfI-N8hJ854Ixz3g0XNfwGpH2%-M1O4O^Pzd|j z#RQSRu5DvN2!{Q~zIGceVw3y0g#%*Z8&&`sEKIHgM?8eejw{-5XzN7o-q6(ol6id6 hyZI@@PMuia{*Kx=3.7 +Description-Content-Type: text/x-rst +License-File: LICENSE.rst + +MarkupSafe +========== + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U MarkupSafe + +.. _pip: https://pip.pypa.io/en/stable/getting-started/ + + +Examples +-------- + +.. code-block:: pycon + + >>> from markupsafe import Markup, escape + + >>> # escape replaces special characters and wraps in Markup + >>> escape("") + Markup('<script>alert(document.cookie);</script>') + + >>> # wrap in Markup to mark text "safe" and prevent escaping + >>> Markup("Hello") + Markup('hello') + + >>> escape(Markup("Hello")) + Markup('hello') + + >>> # Markup is a str subclass + >>> # methods and operators escape their arguments + >>> template = Markup("Hello {name}") + >>> template.format(name='"World"') + Markup('Hello "World"') + + +Donate +------ + +The Pallets organization develops and supports MarkupSafe and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +`please donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +- Documentation: https://markupsafe.palletsprojects.com/ +- Changes: https://markupsafe.palletsprojects.com/changes/ +- PyPI Releases: https://pypi.org/project/MarkupSafe/ +- Source Code: https://github.com/pallets/markupsafe/ +- Issue Tracker: https://github.com/pallets/markupsafe/issues/ +- Chat: https://discord.gg/pallets diff --git a/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/RECORD b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/RECORD new file mode 100644 index 0000000..4b72c7c --- /dev/null +++ b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/RECORD @@ -0,0 +1,14 @@ +MarkupSafe-2.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-2.1.5.dist-info/LICENSE.rst,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503 +MarkupSafe-2.1.5.dist-info/METADATA,sha256=icNlaniV7YIQZ1BScCVqNaRtm7MAgfw8d3OBmoSVyAY,3096 +MarkupSafe-2.1.5.dist-info/RECORD,, +MarkupSafe-2.1.5.dist-info/WHEEL,sha256=3SeyPJ5-Us2Ct5GSftUVKtLSlm-bNefW4m5qd0GLzww,100 +MarkupSafe-2.1.5.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=m1ysNeqf55zbEoJtaovca40ivrkEFolPlw5bGoC5Gi4,11290 +markupsafe/__pycache__/__init__.cpython-38.pyc,, +markupsafe/__pycache__/_native.cpython-38.pyc,, +markupsafe/_native.py,sha256=_Q7UsXCOvgdonCgqG3l5asANI6eo50EKnDM-mlwEC5M,1776 +markupsafe/_speedups.c,sha256=n3jzzaJwXcoN8nTFyA53f3vSqsWK2vujI-v6QYifjhQ,7403 +markupsafe/_speedups.cp38-win_amd64.pyd,sha256=SZNUyQtXKMzLDnnjHrCTzUx2gn7cSs9PtqHylpKLgWM,15872 +markupsafe/_speedups.pyi,sha256=f5QtwIOP0eLrxh2v5p6SmaYmlcHIGIfmz0DovaqL0OU,238 +markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL new file mode 100644 index 0000000..f93f57f --- /dev/null +++ b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.42.0) +Root-Is-Purelib: false +Tag: cp38-cp38-win_amd64 + diff --git a/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/myenv/Lib/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/INSTALLER b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/LICENSE b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/LICENSE new file mode 100644 index 0000000..04b6b1f --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/LICENSE @@ -0,0 +1,22 @@ +Copyright 2006 Dan-Haim. 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 Dan Haim nor the names of his contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY DAN HAIM "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 DAN HAIM OR HIS 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, 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 DAMANGE. diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/METADATA b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/METADATA new file mode 100644 index 0000000..ae2ae34 --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/METADATA @@ -0,0 +1,321 @@ +Metadata-Version: 2.1 +Name: PySocks +Version: 1.7.1 +Summary: A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information. +Home-page: https://github.com/Anorov/PySocks +Author: Anorov +Author-email: anorov.vorona@gmail.com +License: BSD +Keywords: socks,proxy +Platform: UNKNOWN +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* +Description-Content-Type: text/markdown + +PySocks +======= + +PySocks lets you send traffic through SOCKS and HTTP proxy servers. It is a modern fork of [SocksiPy](http://socksipy.sourceforge.net/) with bug fixes and extra features. + +Acts as a drop-in replacement to the socket module. Seamlessly configure SOCKS proxies for any socket object by calling `socket_object.set_proxy()`. + +---------------- + +Features +======== + +* SOCKS proxy client for Python 2.7 and 3.4+ +* TCP supported +* UDP mostly supported (issues may occur in some edge cases) +* HTTP proxy client included but not supported or recommended (you should use urllib2's or requests' own HTTP proxy interface) +* urllib2 handler included. `pip install` / `setup.py install` will automatically install the `sockshandler` module. + +Installation +============ + + pip install PySocks + +Or download the tarball / `git clone` and... + + python setup.py install + +These will install both the `socks` and `sockshandler` modules. + +Alternatively, include just `socks.py` in your project. + +-------------------------------------------- + +*Warning:* PySocks/SocksiPy only supports HTTP proxies that use CONNECT tunneling. Certain HTTP proxies may not work with this library. If you wish to use HTTP (not SOCKS) proxies, it is recommended that you rely on your HTTP client's native proxy support (`proxies` dict for `requests`, or `urllib2.ProxyHandler` for `urllib2`) instead. + +-------------------------------------------- + +Usage +===== + +## socks.socksocket ## + + import socks + + s = socks.socksocket() # Same API as socket.socket in the standard lib + + s.set_proxy(socks.SOCKS5, "localhost") # SOCKS4 and SOCKS5 use port 1080 by default + # Or + s.set_proxy(socks.SOCKS4, "localhost", 4444) + # Or + s.set_proxy(socks.HTTP, "5.5.5.5", 8888) + + # Can be treated identical to a regular socket object + s.connect(("www.somesite.com", 80)) + s.sendall("GET / HTTP/1.1 ...") + print s.recv(4096) + +## Monkeypatching ## + +To monkeypatch the entire standard library with a single default proxy: + + import urllib2 + import socket + import socks + + socks.set_default_proxy(socks.SOCKS5, "localhost") + socket.socket = socks.socksocket + + urllib2.urlopen("http://www.somesite.com/") # All requests will pass through the SOCKS proxy + +Note that monkeypatching may not work for all standard modules or for all third party modules, and generally isn't recommended. Monkeypatching is usually an anti-pattern in Python. + +## urllib2 Handler ## + +Example use case with the `sockshandler` urllib2 handler. Note that you must import both `socks` and `sockshandler`, as the handler is its own module separate from PySocks. The module is included in the PyPI package. + + import urllib2 + import socks + from sockshandler import SocksiPyHandler + + opener = urllib2.build_opener(SocksiPyHandler(socks.SOCKS5, "127.0.0.1", 9050)) + print opener.open("http://www.somesite.com/") # All requests made by the opener will pass through the SOCKS proxy + +-------------------------------------------- + +Original SocksiPy README attached below, amended to reflect API changes. + +-------------------------------------------- + +SocksiPy + +A Python SOCKS module. + +(C) 2006 Dan-Haim. All rights reserved. + +See LICENSE file for details. + + +*WHAT IS A SOCKS PROXY?* + +A SOCKS proxy is a proxy server at the TCP level. In other words, it acts as +a tunnel, relaying all traffic going through it without modifying it. +SOCKS proxies can be used to relay traffic using any network protocol that +uses TCP. + +*WHAT IS SOCKSIPY?* + +This Python module allows you to create TCP connections through a SOCKS +proxy without any special effort. +It also supports relaying UDP packets with a SOCKS5 proxy. + +*PROXY COMPATIBILITY* + +SocksiPy is compatible with three different types of proxies: + +1. SOCKS Version 4 (SOCKS4), including the SOCKS4a extension. +2. SOCKS Version 5 (SOCKS5). +3. HTTP Proxies which support tunneling using the CONNECT method. + +*SYSTEM REQUIREMENTS* + +Being written in Python, SocksiPy can run on any platform that has a Python +interpreter and TCP/IP support. +This module has been tested with Python 2.3 and should work with greater versions +just as well. + + +INSTALLATION +------------- + +Simply copy the file "socks.py" to your Python's `lib/site-packages` directory, +and you're ready to go. [Editor's note: it is better to use `python setup.py install` for PySocks] + + +USAGE +------ + +First load the socks module with the command: + + >>> import socks + >>> + +The socks module provides a class called `socksocket`, which is the base to all of the module's functionality. + +The `socksocket` object has the same initialization parameters as the normal socket +object to ensure maximal compatibility, however it should be noted that `socksocket` will only function with family being `AF_INET` and +type being either `SOCK_STREAM` or `SOCK_DGRAM`. +Generally, it is best to initialize the `socksocket` object with no parameters + + >>> s = socks.socksocket() + >>> + +The `socksocket` object has an interface which is very similiar to socket's (in fact +the `socksocket` class is derived from socket) with a few extra methods. +To select the proxy server you would like to use, use the `set_proxy` method, whose +syntax is: + + set_proxy(proxy_type, addr[, port[, rdns[, username[, password]]]]) + +Explanation of the parameters: + +`proxy_type` - The type of the proxy server. This can be one of three possible +choices: `PROXY_TYPE_SOCKS4`, `PROXY_TYPE_SOCKS5` and `PROXY_TYPE_HTTP` for SOCKS4, +SOCKS5 and HTTP servers respectively. `SOCKS4`, `SOCKS5`, and `HTTP` are all aliases, respectively. + +`addr` - The IP address or DNS name of the proxy server. + +`port` - The port of the proxy server. Defaults to 1080 for socks and 8080 for http. + +`rdns` - This is a boolean flag than modifies the behavior regarding DNS resolving. +If it is set to True, DNS resolving will be preformed remotely, on the server. +If it is set to False, DNS resolving will be preformed locally. Please note that +setting this to True with SOCKS4 servers actually use an extension to the protocol, +called SOCKS4a, which may not be supported on all servers (SOCKS5 and http servers +always support DNS). The default is True. + +`username` - For SOCKS5 servers, this allows simple username / password authentication +with the server. For SOCKS4 servers, this parameter will be sent as the userid. +This parameter is ignored if an HTTP server is being used. If it is not provided, +authentication will not be used (servers may accept unauthenticated requests). + +`password` - This parameter is valid only for SOCKS5 servers and specifies the +respective password for the username provided. + +Example of usage: + + >>> s.set_proxy(socks.SOCKS5, "socks.example.com") # uses default port 1080 + >>> s.set_proxy(socks.SOCKS4, "socks.test.com", 1081) + +After the set_proxy method has been called, simply call the connect method with the +traditional parameters to establish a connection through the proxy: + + >>> s.connect(("www.sourceforge.net", 80)) + >>> + +Connection will take a bit longer to allow negotiation with the proxy server. +Please note that calling connect without calling `set_proxy` earlier will connect +without a proxy (just like a regular socket). + +Errors: Any errors in the connection process will trigger exceptions. The exception +may either be generated by the underlying socket layer or may be custom module +exceptions, whose details follow: + +class `ProxyError` - This is a base exception class. It is not raised directly but +rather all other exception classes raised by this module are derived from it. +This allows an easy way to catch all proxy-related errors. It descends from `IOError`. + +All `ProxyError` exceptions have an attribute `socket_err`, which will contain either a +caught `socket.error` exception, or `None` if there wasn't any. + +class `GeneralProxyError` - When thrown, it indicates a problem which does not fall +into another category. + +* `Sent invalid data` - This error means that unexpected data has been received from +the server. The most common reason is that the server specified as the proxy is +not really a SOCKS4/SOCKS5/HTTP proxy, or maybe the proxy type specified is wrong. + +* `Connection closed unexpectedly` - The proxy server unexpectedly closed the connection. +This may indicate that the proxy server is experiencing network or software problems. + +* `Bad proxy type` - This will be raised if the type of the proxy supplied to the +set_proxy function was not one of `SOCKS4`/`SOCKS5`/`HTTP`. + +* `Bad input` - This will be raised if the `connect()` method is called with bad input +parameters. + +class `SOCKS5AuthError` - This indicates that the connection through a SOCKS5 server +failed due to an authentication problem. + +* `Authentication is required` - This will happen if you use a SOCKS5 server which +requires authentication without providing a username / password at all. + +* `All offered authentication methods were rejected` - This will happen if the proxy +requires a special authentication method which is not supported by this module. + +* `Unknown username or invalid password` - Self descriptive. + +class `SOCKS5Error` - This will be raised for SOCKS5 errors which are not related to +authentication. +The parameter is a tuple containing a code, as given by the server, +and a description of the +error. The possible errors, according to the RFC, are: + +* `0x01` - General SOCKS server failure - If for any reason the proxy server is unable to +fulfill your request (internal server error). +* `0x02` - connection not allowed by ruleset - If the address you're trying to connect to +is blacklisted on the server or requires authentication. +* `0x03` - Network unreachable - The target could not be contacted. A router on the network +had replied with a destination net unreachable error. +* `0x04` - Host unreachable - The target could not be contacted. A router on the network +had replied with a destination host unreachable error. +* `0x05` - Connection refused - The target server has actively refused the connection +(the requested port is closed). +* `0x06` - TTL expired - The TTL value of the SYN packet from the proxy to the target server +has expired. This usually means that there are network problems causing the packet +to be caught in a router-to-router "ping-pong". +* `0x07` - Command not supported - For instance if the server does not support UDP. +* `0x08` - Address type not supported - The client has provided an invalid address type. +When using this module, this error should not occur. + +class `SOCKS4Error` - This will be raised for SOCKS4 errors. The parameter is a tuple +containing a code and a description of the error, as given by the server. The +possible error, according to the specification are: + +* `0x5B` - Request rejected or failed - Will be raised in the event of an failure for any +reason other then the two mentioned next. +* `0x5C` - request rejected because SOCKS server cannot connect to identd on the client - +The Socks server had tried an ident lookup on your computer and has failed. In this +case you should run an identd server and/or configure your firewall to allow incoming +connections to local port 113 from the remote server. +* `0x5D` - request rejected because the client program and identd report different user-ids - +The Socks server had performed an ident lookup on your computer and has received a +different userid than the one you have provided. Change your userid (through the +username parameter of the set_proxy method) to match and try again. + +class `HTTPError` - This will be raised for HTTP errors. The message will contain +the HTTP status code and provided error message. + +After establishing the connection, the object behaves like a standard socket. + +Methods like `makefile()` and `settimeout()` should behave just like regular sockets. +Call the `close()` method to close the connection. + +In addition to the `socksocket` class, an additional function worth mentioning is the +`set_default_proxy` function. The parameters are the same as the `set_proxy` method. +This function will set default proxy settings for newly created `socksocket` objects, +in which the proxy settings haven't been changed via the `set_proxy` method. +This is quite useful if you wish to force 3rd party modules to use a SOCKS proxy, +by overriding the socket object. +For example: + + >>> socks.set_default_proxy(socks.SOCKS5, "socks.example.com") + >>> socket.socket = socks.socksocket + >>> urllib.urlopen("http://www.sourceforge.net/") + + +PROBLEMS +--------- + +Please open a GitHub issue at https://github.com/Anorov/PySocks + + diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/RECORD b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/RECORD new file mode 100644 index 0000000..638948d --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/RECORD @@ -0,0 +1,10 @@ +PySocks-1.7.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +PySocks-1.7.1.dist-info/LICENSE,sha256=cCfiFOAU63i3rcwc7aWspxOnn8T2oMUsnaWz5wfm_-k,1401 +PySocks-1.7.1.dist-info/METADATA,sha256=zbQMizjPOOP4DhEiEX24XXjNrYuIxF9UGUpN0uFDB6Y,13235 +PySocks-1.7.1.dist-info/RECORD,, +PySocks-1.7.1.dist-info/WHEEL,sha256=t_MpApv386-8PVts2R6wsTifdIn0vbUDTVv61IbqFC8,92 +PySocks-1.7.1.dist-info/top_level.txt,sha256=TKSOIfCFBoK9EY8FBYbYqC3PWd3--G15ph9n8-QHPDk,19 +__pycache__/socks.cpython-38.pyc,, +__pycache__/sockshandler.cpython-38.pyc,, +socks.py,sha256=xOYn27t9IGrbTBzWsUUuPa0YBuplgiUykzkOB5V5iFY,31086 +sockshandler.py,sha256=2SYGj-pwt1kjgLoZAmyeaEXCeZDWRmfVS_QG6kErGtY,3966 diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/WHEEL b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/WHEEL new file mode 100644 index 0000000..129a673 --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.3) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/top_level.txt b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/top_level.txt new file mode 100644 index 0000000..9476163 --- /dev/null +++ b/myenv/Lib/site-packages/PySocks-1.7.1.dist-info/top_level.txt @@ -0,0 +1,2 @@ +socks +sockshandler diff --git a/myenv/Lib/site-packages/__pycache__/easy_install.cpython-38.pyc b/myenv/Lib/site-packages/__pycache__/easy_install.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7853be6ea1d3416219b47ac2fc9e47cce0a0a7c6 GIT binary patch literal 314 zcmYj~y-LJD6ouy}x2wDLz3si%FTp>@uqhJ4c^H2bmOv$vSl}np90($)BAS*I zBS~KoMk2aL>DKf9U1yT^Q6>xS`zzyHu2fQ4t+^3H44`>!0KNharFe+OxJ;vA0w8P! zFrFB$B|v%TW!t&dTIKUKAeR9O^&hpNf$@Qw?O?y_`*wc9R$exq-ORJuF}rZ?lDC{) u+lnjpAhlzzcG>zrn?cd5qR{NWh;0_+t{>u4ZAGW#84fLetcpmCckvHM?^s>{ literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/__pycache__/socks.cpython-38.pyc b/myenv/Lib/site-packages/__pycache__/socks.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2cd2b53414a748b1eea61778ee1c88927729c28 GIT binary patch literal 21274 zcmbt+d5|2}ectpj_w4L}#X%4RTi}JEfCVTmKnesQEEXUM30kbN3m!vIQ?t{(z$|8G zmalsO?r?^dxRfm0iOeK+BH40uLN&WWqMALkYPpn32 zHC;}xX3Ck>Y&k2b>_)Df!@Fc7zgj34qGu!J5j?XS#c~n9sYY>iv^*NU8!NMJyD?rK zm*0u@E zw)T4awvF;bZr)Cm_m>}b3-~=ye#9NY@4@n;-oxG_-lJ~u8&=uzKIR?roUO;U69^yQ zPHdW+M)?VEY-J2-pDaJ+j=E#-C(4IkO1R_h#QO<%!YgfB<)?AK%bmpir1v!LKaTs| z?jGFlk^3XK-|Ozf{XV%riu;G${kY#R_fxok*gb&z19E>1_m8*-aeq+mkGqe$j{7n9 z5Zd^R`dwExAv-AOA+C{0Z-2_lWlhu1DRYb*ubI_pE!&J^sE?o_3#c zKY=!%a6joz%RW|vM*d(B$Q^>CA!tu`9frG{6s!rX<+ z^K+LM7p~6Fhp7t}=U$n)gx{H$W-iXnA!+*DM&S7uFEiJ|g$tjp%wE0HPChgB?9?-% z*$hhN9SapG13~+_#g?Pio6h{kLaTPucUn#7)q2xy-S(Z0*1EI0?gvi2=?AFXxm|Bo z>P;`GtOc#+9cI4+DoH4k6k3&9xIFvWh3V+`L}ejjqu#FbdXO4GDUmBx0=RQC$8l1RW6PLy4~0UTidiyY2-+ebsBN2VwTY+cj@3sJEJ>WN25_ zbw5nqye+@B?=_aog-YG8^s*Y>hnT75^=6G(K1_V{((I{gSA9?U*XC!B9-qE8v$l4= z8dR@cYSpTZYm46M+O@U%+RE7)Z_XIQcb}Cp+K14O3ft9d($r~mtJ?6-OhpBh%rGkrY_%GGnB-HxWU75A zQ9aDyAqIOHa9+dldy0G#kNp$^HlaA84k9)*!+gbsaTb?<2!WR<8*ZX(x<=V@)2`*( zAV%9wx+#!e(ls#~nJ_o6T5oS$P^zWc(_F&nil>xQYc+!^2FPit`t^FV+Hg21UND81 zE#-Le1WnD=SZVxWoJ(yMm(Nk_7@b5V(J>Jk9aBBt!4g`*(%UjSSQgJFOuUtaVa~Pf zQ_eeGtP5+^$9mB9u`yw4xusUCLCI3PQKWJhe2jsNnglXxnF{Eu9#ksNE52RjHgq7M}!~FxnGC zmC5T8%1MQ2V6(dFRVrbwQdw=e>kY;WmC9S|)kgFN1-h+TrJ^1~S&Gv>(9K?76$$xM zxMWRmQRdR}tcGVpA9m_2F28`Fza}vIW;p(m*Ys4i(QohEhn9K@31!Kv5@Y=i_iO(+ zUc87)dYmy7?|-72C#A~SR_|A{Ib74CXsW<9v^eMR@%|^OE3fPNarGQSxmO12;r;(dJ<~s~p5rL@m4SMA{}a`dr6l@swLF7T%LBFW zzPP}ds;)ZKrW=={ytS4J9Jju_>?suFpaJS= z-Stb>oj1^hJJ%Sz$<7>zsAaf)?9ICJ+8^sLW`_-i#Bbe3hnF^>AT&HM^!BbfFSy-O zH=XsS@~X8PR7culFSjs0gHI*~N>bi38sxU~i;I`Qb=T?&H-~3itE=n->+#pu*aOc! z!m&jUgI2B8a6Dn@`)6ENdA{!i8*AQh@=`|S(JMu^AS%cmsup+1z3-6!-AOYb6Rkgo zH}wy|aTaTQ6Mqy3b|e|uvpmviu$fyT7Ft}uH_WRI2yPHTw^$%it9_gpNT-Z=ky69esY zoEr67J!ou5Nf_wnbMd(WbI*Qt?K)jes_SQ_J#dWsXj+koSu%2r$sb&6L{HF`&E|+qiSh(}@7`mkJytnKf6=N>kZV^#Za$ z0$6LUH7Ok0$Syom)N*z9YDv6i6*-`n}aQ&UqVXSuHYV9Hs%QP(S9)^)4dKuzQ) zV1>FR9M>u=j#Xi55y`k<8Z{6D3=uS*1JCv7ub~UiOF^sTK&@qYHNO$uKyeEJ_)Ar} z&ZVeF%iw2zTmo8As|McnmfDzV@1JY+2vBCy@z=aseYx(rb0xb!b74xiN0bHFRw>=& zfe96A$Wu9vl%t>L1PRMYrHq`Zr~%Yy#>AgJh>(lPOrFFvbrRRiZmyf}2$G;4V)V*-3U%opdL&ox*cd{bM{YP$$OSuC0+yu9IJm?p}qKY(N*K@wHM6MwelN zePF2lFv51j2;1M;-7R!>;YkiT$F`A{EfvGe>h6AbHx0A5KJyx`P64S7cM9(r=x@24NNW%XtI<_Wkrhd!4wszz zGQ<!`in1XW{9U0-MPTkERkRVXPatd2Um)rZ;M zsI4NC2D*$^Edfmab|;6l0(=~7%!G-mPaVbBf>hoF3`wN}@vL4B#-s0SM*$@Y=) zM%#SjO>K|2_g$~nqv6IVkkf5|nStk&#v%QJstSDav@i*4roN_L2F-k_TtEszT5tal?)-$GkMgEnh*wcgkO$f0wJdXPjlK`YEcr-eF8rNH#7 zq0Jxa6F64C(6*b8G$31t_AeK_L7^4a!TN~WSFmUeg6(adCraq3f%<3)OyVNLEuR zd=>mMFgL;XD;A_T`S!uC1s)Avy9v}`1)vtRpp?D`Z+3__ zsK-%IDGke;@J2;Xkr>>e?bd5SI8yPew>&p$F|2joiqs6#T=hYq!Zdou2xJ^#393?l zXx_XX+Dy1(7NzjtLNZ^(moWhphY(VGa$xX!$i!SJz0(SR8hN7@k}g$~_xI6-)Cykw zJ61%wDQHzjo(+vEn7wF^78B9}=p%@b2EY!PApS5BFToDS5Fs@3mBd4$?NhbX!)d5h zyo*7aw-8qf0dNzlv%0Msra9fHt}eONGrx=HKfsk}KT=t(-t_cv_rbF`ozA=7D@9^j zSs2LoeY}ql81**dB^w$CmKX>Qs3G`C25Qi)Wz|}RYK~Y9X@)+cXyA#DJ&7Hwo-2MO zg$p>^vL%BBB<=ldIpe0>G$0&tlU;p#1VKc}5sNQ=TM%j~aG+yUTkB)eDlo*DG-;}yrvUt(I7vV%Wk9vP#5+fw1WfWS%`Qw#N=dD*gC9|;J|ac*Kzyy!ZUDR>TYq8Z#mdFG3yXpzNH<>SYbi)P0PH^RjzzpwvOm$1C zIr)@|qAw`2@G#f!ZkT(88qx(K73vUQCIMzZ42ZG!n55R~7Zm}q{z6L7w>QE_UUMo% zj7IlsUTkYuB9#D)R50TumS&6P>moW}>pHl_{z0}KEuA38JM6Q z&$nuD{}#9)_J3%G|v$p(yO3qOf~lo%OZmAwi9N!>|jx6F1k8=Bg)p z_4O+q$Fs*+sf^liRp?zrN<(AHlpN1lT%sj*0H9zz!CN?f&78!==#92_t|O&fu{uZMaD5Ttt0kCe<;LavoaQ+8jXixO=f?7ZXq(LnL)s&q0I7RDCd-OUW2@1 z=|6M)x#NA2+iOKseeXwa0RX9m?fYDuh3$@}CVH>sCUeo4>vv<}Mr*y{vat@hp{j!~ zLJC8|K-jN>OGP^f+Lm*C>?=H|C5Kg2L^seiz3U+RyOO1(Rgnm>bO4Pls&%j5q+Vxq zWDaKIDJ%!1y8#=h*>XJWJYZu(Aj4>)@99@;nCiY=jUZ*g1F)e59ivV>PL~1wg^O30 z@xXR)iU-<^c2xT%!N%=pjE!Jj_k09m|8eTROyE+%F1%HRc61x$F5As1l6w0LTEO5%i*2s23Q)h=b%f<_jdn&T6kNMo#B+!VAf?4lVcU|tc#GdL;IpH;thgrR8;eoU z-m`J!o{-YelgchP1-_kbzjARE$RCw$AbHdfl;)oHk>7>DjJ4^VWI)N_ERidkhUK4<~D|q@`+f6 zfboaM@gHz`StawM^zkYAiZjeyX;K!q`V!u1WueR1O$M(p_yPke5Gu)lN|2&G&{s4B zjN^(HbvPd>By6I36$!&pEkjN~nG(fNM6lKf-oyLSxK@*UR=YrFirb#*^9;^1m|-9k z<{%at6`{V+a$yC05l_k^7>dfw0=j;2X7NHf2^z0%gf>yKor(_o^&*!%<#Zxx-vv$u zHD>~9bpd*vXn0A)p#BicvW-cbu}SEC?a=|!<$MikCd5}bHbNHPLIev2+h8ju7WLzS z6+p*>RfI(hGB9BgS)^MoNq-uPGtJEb0`jg2?0m7M#~47EquoxAvG zMJyr9B?0qk$HM5VmmBDxULCSdsQl2os2+IX?uz`z^B%2M)n<|mv^qhjVG?>2|X*HFDxFu#T5I`8ZGNr=? z@NzWKee^H0b5vz4H&Jq*s${exd{6yFzWU1yWRLXAjP->K$MvV#SrSLIw`>z zz8x4_;{jY}wUEGO6)1(9Sj*#@3Z=e@-&XRU2;8e8_MAoY7kWFIGk?eF?Rj-p- zYahzd`RHlAfqi+;E$!MlHT?zu4$9oI;8h3DxB|VKiV|M^9Pcf_I^iy8TRq9(xq>u= zlVVWrqzjpNVX>URQdUz$dTD*xueUv!_t3&!XtVL<49#jm|0O0H3K<%7`Wa(yZ7N&bAFxHv@Zu>pP|sKY%CVxwkp2}!ak;Iu~j)Sw4~ zmglf(B1Wh2JWO1Seqb}5%CzVdQ?OhqEbnJS55fSk82%PpY$8L#Y(Fy4+CE?qr@W`> z%q30df(FsUl|~wWrl-0L_JZw)S|UbQAGPVXyO#;O?%cHN;S@5~!owukkIK{s2>wd1 z<@N(w9v5*>%kMwvw|6#I>rM}9Hn;ZRbjrOpXBCc8@R}ab+O!GPAH}#W(f;Lt?amn! z!oE*O!-A9mLZ!;|s{=jWyK}ChG(&ymN>Ac?371eaP(1*sTbM1ttp;^l;tIH+N?`7+ z_Oo+vm3V9hPrfrxC|rHBH9S$0xqX# zFVD?gm|fgK&Ea^Z8P^^0y}!-=a^oif)e4)2a4|6Nwhs*S{GKdBh&1gPu1yYupTTk^ zeZlzXnI6z^0Bcg4f@04Yb`H1AZvF$K{p+2KIt$l{vvAFTS28sx;6;qXAptTgw`J3b z0fU+BqJ(3`aIBbt_1@*oAsj1HXRH;t{_b^@|8vo|5nP)hGvcCTPp_o*L_AieqvsQ-WW>L2OVKXTJT{V${5 zBI|9Q9B5ngZs5tNwDv4gk4frGuSB*t(}6s9N22y5#9<_daVYL++c=($c1C+`!`Pq= zzZjPVgKac!A2frp&X@}`5Gj5m7}+Y~ZUXtogHac5BQUj4nv7UtYrK=kyiEiX!7jl? zCo#LbWp0X{iDeUK0jQDWw@jI*oc@J}|0EXr?)IPR@tXxGJ+UDa86Fy=xDNQZNv{NP zV>~?jx$|&w@)~Z59HEyzX3B@pFDypyr<|CRzvHpKb$J(Qus;eM0m0 zQfR6r(Kke-C9&Rpp|4$T0omc(Xz9_~*uJaepv zmCzJ~V=9~u7c_9z2juTfJdC`kzX6(3e*r=JK-7@o1d#)+)PJ}AEFC3V;=S4%>mBLi zjrZHouD~Rel&8md9&HN-PHb~ALZXU_1N+0x4ZPjpDXPVt1irNZdT{ zmeC+s_iw0QU{gQNfM#51)ov*Dv%IB-uC^KcRlXR}9jRQna^>=sh0p@)Rmb@D5QA?s z=<9eyhs897A}A2CO)iPTS6%hXeD@>KpD-nM4?Hkvvcp)(*SHPXtZ-1ud4}-VuLkRW z85_cS4RLS6U&D5>JQqv5Y%Mk2oq7lv@OQ~M*APi0C(IlaH`~nE1v>}xv|x@|Casy| zgq5)~_8!Ddv-n4*W&SY5_r{nh?@i=H?g^N@=G~Mn&+G}j&sbCm<=z^Dt%Mv_4(ST8 zn%esZxpOq2(Xtw{EXL3_S{Jjp{7YzVhgv@MLCvEH4hcL2fCqN5YaoPYM;(rHyyxAr z2}g>RZod5)X#I8v4r{`NO>ks5reWv5pm`JCrtr3aw-(O&B!l!;22hZ_tzFj;Be&?e zuNf;@?5BJ)-cNb!BplOD!ZGb+C#}9Gb_=8dKqHjoCI#{t8Q{+mKWr|c))8)tp`}G! zqqxR!jc=#GA&YJb);hT&fAi#kkQ$6zfBe3Hzh&C*_864rMWP{6@9(QKV&`D*4Ny7N zus%N#=j=XcPqmE+;)U2_WME;{$T3X2)b;UL;SWOm_DANKmqWYmHmm9vG1ofcZabsweARSOp;F5YR=)Ejdybc=|RBIFAZ2yFy%>d&BI8Q zM5-p2Hb?-NC{s{rlJ`_A(iG}KnAq}{x4?6^O*cnS3uKfO^F2SOj{}JC;S$m->YpQa zhYUsi9R|O_Ku!#RtF9@!MvR%cl zm|*!~3fsijgByBfh(#iSm?e}EpX1!^L4=kwu|Tra355I1jJeNfKRU=D$^Ca2`S);1 zYOum3ze+Btx#J*w4&zlcSa?YEG+4Oawl4w7&bNz!1>Q&vw}AcPY3vtUD@pJ-kRiX= zX8gRH>=xWqH{Tp%T3jinXAZra+{qGn-^xNugYOU!9PmHn#8dE8#?tCrawljbV{T5K z=ixBSRM2N#=xS~*(iO8?dC|!dz-MwU`LfnsvyqN$soxJqTyRw^i6XSxtXt$8XouvS zqoN%?8H_?7EV^UJJsOO=<69GSdDhw?`mhW6GVTQPZNtrZYtrSDqMMN?(DNTk0B%cE zc6Xrds};$C-gJNy;prae`n|ZE6^-;q^hfkb=#dlPvy<)PLk81>Ev4z$Qc~Z+e5$|2 zfXnkm4PIciEVk`4=gz$>tWhs>s#oe?F!&ULw$}KjBeecO8lSBEJ7wnjyA1vwf;pjy z(q7GPiQ{Q4X@DlGIPNQqG#mkEBHLQppv@_)SCKH(zh)q8_U|*+SE~lJr|C$0QvZla zjx#vK;I|n3HiP#VY$Av`?yn&pJIWG``jLv0`X|i(>j=ul$h|cZOX}b9%|B)E<SM zV3$6Usq{fL$z$;gA5?^yyE!OHIg4O$E(wfZ6re~+>M1~D#-6)$ zxtTDFRD*t$kvjcg5?{GLiKo>5j)4;&kp4jUhuz$YU!@b-@--=-sb`SDJ5Pp!h){0q?@d2Li{mnZGoOnIZIW)UULM)8_B7!AlXNTBV3^U)IDwp!xkb93V4cp?IaT(Yaf>iB2MMF zEr38gy~hp6DwIU=frf8Eztr}0Ki3(UN(^mh#(!{dIQIOjI`J3>>o}U((7dx$ zGJUE$!~2`N``W1b_joI;F0_Dwg(=yBbrqNeG*#}Bz|||XS6cO^A~&ViZq;o-U)6k- z$^`rbVO$65T^4nT0gutDXBY@eye}hE|B>&1BnvDTZUn(vMelO?WqTRAcR8;|wjynC zQ3iba#ZJUQ8P_ZGbOema3J$H`mobhG0BIcVuaPaXy$O55njn+AOMA~W3!-YKjN;uC zY`!u4vjDzilCT-++Ft|{)s`U@R;sP$-JC_nnzJ%i1`Kl8LhM6+to9zpm_rLJT>j%| z5S$NzgW=yFEFbKUd!NvEusfuVzy$yp9he~A?*Tgl=GM0+lW;6ZLH+DNcS`&7U~d_X z;UQO+yG!z)5=_yAOJmbbgHhxl|HUq3+)c~QRvyS<6pkR9vRZ0!Ln zPPHcoQl$76jI#~KNmmN8&MgBB8^^C+L$CLW&ISC@{}Y`QY;9QAZgy)Q4|suf7J`R5 zNhsSRZVt~z#9A%}`?nr;^U$mE+ZMJ*4luR}H;X2$?f3A18~9g^bT|KQUj9|%3$O8* zS7PN6DF?PKKxP^N$ca`h^;%^r=$+E4Lmjr}zr}6CNELoW`3_1rh+diMpcV*mzV{N5 z*CXbsG}8Wlk44XFmrrr#q5<1G@&~7)K6VdXK7zFM21+kGJeV|0@6+dJX8xj_2N9bJ zhbbdf4~KAj85VIa3l2j(0FK(Ew1_DlA^L`R@1)kiPC@U85PX;ZUrvWP`1H*i^;wWd zyZ6^FW!qEz64K7Kk6(-d!u}{69nf5d4teohT{{U@{Z6<2 zsO(L~Jr`$`7BIM|r${jJ1l?3TND9{3E-c7kY1ppxs5Z=n6;kokjOce6`x1jLgD)_6 zg@LeO>WP{y{}f{Zf-osZ(KI(DqrD#}C;lYr&++Z+49IZ9-Sby2&MnTIyL6$__b>#` z*Jxc2ldiY4eqHe&8^VdmF(u|rE#=Fxu2^BEZXFij%T~L=fBxWW>aYW>`%T_{p21lL zGYrl#pi){c$jZQW&3J4;PG>8JNwRU>-cEGyRlNRfa%YZ3BD>#)e>Zq> z2BtrE9CJ3^QQ);;iL;7@<5l3=CeXdi56z@-W+H-ARH4WM6~xO)d^5;RLzNtwo(@HT z343f4C5<6nO8g-vp%g>4oft4+qg68mCXio~Z_nZq8PX;)PlF#k`%hxO|5d20a!}NO zY6$4Bi)Y{*<_di17^aZo^~AR_3yJ8Td+e_HF8*vQqH-Hlo~+XM)}bKuPaQjk|0416 zS2$3Mno})x{n#guMQ5CkMG(l1V72jB6pwzQrdPbTd-N-3L1Vg((3F-fAN1{F2vmA z4jq?Jn7+KAJq?m*T(cFs0E*p6^kS#!l%p$$oD zT?CtCZA>G=l>xbmZOParuw$(q>=`=n6Y-D42i@g_2)8NC_W9nNMd+qxw$YqXQ;ixR z9-!dj`pm8TEkiGBdm?6pIyW7k;YagDG%FlAf8oWMtCtol^OvtIE@*3(%x1{9^MPbO zY<3DCda*xf+Kr6IAVE!oKH~!padIqWagP7%gM|*4faqtg^z?lX-JM1v?UnbNj9q5% z7z44=7a1F8Fvj32gFnqcIPC^wZ3gte5Kk4&HGdVi3o=i?d6@E)^@=t{?UZO zpJ#8Us!KJ68HXAU*B+o6n%43INz@PUT02N486#P!1I%L9TZ)7drXiW|zgE{nv*l~A zA(5Nk<2%dW@NuZM0ukb)MhuY8$A$Qw=bg(VL;vO$W-*nQP$Ve+DI`|^9YJ}#FAFsi zIW04E@ADHfY30#@^wim97R&km(*@O#2DaBWK15AB=YhOd5)_2qD!^}6Q4+If_7 zAEqx}mLU>BtHD^xV%f3Nn{dZ@`wWBsz~CP;_+JdjOXS}@JthpKU1K9-cK?f&XqtbR%HntM`vWv z_rCAF=cf}BHi74_Q-2J;nk3|J_~YnPfFF0E#kVOTj5GvB@ylN1h+ptB068uv$=4QUB5Bt_;p=nUELPG6%HfuL+rZeL;X%<}*D?*WpfA zM6UwIW5;tIW_vhWt-xM z`w5)yBrOs3)?2V`jM`R}M8Oj^!jr4nwoxwuUBV5%<8-~mZw28xe9WCl1nWWQb%v{} z)vEm+LaOF#_!>Ssys<4pi)TTkWRL8VftG4}G^P7s&=kyeKx-9E8h+H>k!G*Uyo6VD zNj*tlNXia~u;A10Yl{o3Ph&9P>hj{X`J1cvy50L;;;nue`CezW!8g0B-Jp9d2;&4S zaBcImcsu&+Mtilpqi(mV0!S=p=vz_0ffYs__y)Mi z)xM_-l2#uyDuy&ON611D^2F^XQ7El@58Ow!rN*bjK@SEiRMJ?PCKJeFnG0e!=w5(s zJPm?S4Q@0At)$u1q?RUd*vF}(j{!gKLW?hf-~^aYni_Bt*-C-+8CwlTL03yo*M|^a z93iUK@bmEL;e)!My&gl0e*_|>sg~-gk>*l!%}j|)657_@E~MWpnDcJmm`xGm$49!^x2GFZu zlaY$i-vF&#B$(DV<5%#`i&y<~iM3ZidhFTzNYWezbO_p2pj8n_m1MzNttcfE?Xt>W zxPEdU3ZSnKOC1d8S`EVUBm^1A_$~q;on4ty&Qs0?XaHCezMaV8mhieRqM0WOs^SNr zye#`I?r)4fmXq#@0X>d8vb>3DdAzE)&XX?Z!sig|3QOBQ?_$Q6R@~|(EZPb)$`$Gl zpElel_n$qHIlmLd{D5XeI^hq*$o+FCG#x`5?|t~7x@aYQ#~ACF@oUJOOk?`%!a(~5$|_Kw?qdy_s|jR+ zk82Mf%*EJLVek=j67mgc(^TKpAPd0vn29k*Gx~eT(!bNbrGs3WgVGFutSdZ zzpWUmKoZE)4A2hr4$KqFG85n;EbYQj{0!HR+%I!4dO?RZVQ^@V62Pke(Mfw??suau z539F3Sn0)gs_H|an7Zcym3bDa6$hCEq%QbN@$=DX>ReSF6-Jw_;IU{?Ld!<~{J%Z) zt#bDN;sxZG5hvc zc+ALahyAfc5kEz-ghC~>;-gKhW3sxWoJE8xpsvTE#K|9ainw{z?*u$dq?x_N72E{> z!5Ee@F$8^3o(TLWB%{+U>?sdFfSxQVWe+0_-d-6J>Y<%j>H+MHrRyt2P-*|t>-2c0 znEfbZd^_ux6ls*ZxoDn(dh7X$+gMp%a#e|SOPa_rE@ZAN)Ry=Ys%7pmX)^9d>}dI< zyrd{)-OkFII~wQ}W2`qU@DmhK@IMFSh!UOFEDiiNVQSOor>ACTY?#rYkeY`4F+=C* FzX0M&=QaQU literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/__pycache__/typing_extensions.cpython-38.pyc b/myenv/Lib/site-packages/__pycache__/typing_extensions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..151504ae17e50007a87c391fba957f16bfd66696 GIT binary patch literal 122526 zcmeFad3;<~bq7AXMx({D?AVUuBooJpBu7>fX9JT2+p?X_QH-r@&oSeX?vp%PX5>3h zu{De#;4BW{5K3qRNkC3Wh*{dQwFO$rR$7*pl%<6!bcK`@N*5@l2IAlMd+yt2Bsqc7 zKYqW@PxgEB-hKDo<=k`6J=;C+=C-y>1b?6Jc(PD@JQn#U-h}@&ZZ_g5KeIFvQ4tlL zh*;(~YDMKfX2s+;?*1mMgxn{sr2M9=l>9bXP4b(z((>DEHOp_t%E)hv)hfSjR-62` zTkR^Q;wqt%Dy5oKS~aVTYEiAKO|`2)p~V_x>Q}JE>~Bmm#CMj4eDj; zN_CaGTD@FtRGZXh)vvawt!kUPMqR6}Q`f5-)OK~F8c;W>9qJWor`n|k)y?V_b*s8f z-L5RPTiv1ds8_0-+N<(vNDV8cY&D`r)jm~FV`^MYs7X~+B{ik?E3L|-+FGO>tHWMw zb=sM+C2D#+X)RTE+HGT}jV&8bS z_c8li^@gKyYc)z*W355@8`V*yAI1H7DEEP*3F~}ZcUfJb(x;HpZFLvZ>P@N-J?mBv zs>|`)BYEB|EqDld)>>LK-3{Pv=b-&DVaI(`c|*12``A@yPPHl)7I zKHp8d(7sT;T|II%YOO`ii>!<6i|sbG?r;qKdmbt4t@SuxVqJpsrPigzUOP5>nVp)w z+>VW1W?ykE26(+hJ*r-YTGy+`)H?iLqTZpp@p~!Wd8zeMoHtk-aDJKfGMulpuEhB& z>nfbDwywtc<<`q_-e_&ad6TsX=grn;ocpbQoVQq8q{qOB2jlu-6;ba5%(q%wC%0MK zCa^LBf&iXM(yH`?3L zi^$lu>RtAY_KhPk^(02=S~qo@dJ1V#N!y0B#Mpp(N-amZH`zN*kKoC>F>cq$lULx$ z(uOBnF)tR$ELe;gF@YJf3%GyUXp4GU9UqP1DyrV|Xx!Rq@4}mdhokDf>V4|{>bLhL zHb<AF4mPI|2y25;;Dhu0jruM$Wzic$%`<7mN!vA5`>Z+}X=l4>wxs=u zT8*^TZrX^XeNLT)w6pBn?Cj|gsb^Hu|5U9(`kGMsKJ{nn^XOMW@czcbvDV0g$*CX8 z-2m^bF?;O6lun`LUr=Af+h3H~J?`blvz6%Igf&rIi9BCYe~vtVZjZ~1pR^}IrzUn! zdgUSawa8txijw;;)R&R_%Wm$HT|(~S?vm6vwtHMXV@=spc;^V-*>CN~Sz8+CvQ;j= zPW`3bH0$7Q`dD=APSD5$>MQE2=*vO0<7?{cDEaHsR&6hyov}4mgug08jwP&$T~L3m zzCjGIPX``5Dry(iHy@3wnmY4tj>>*%@7F;EQu^nt)z%|1>s7@Rexuf_)ZeI=pq{ei z>O!t24eB{owW`3AZ>cUktID(MRR4r$cS#xNNf~#ejMrMP#rbvC>x!hI-%;O155J2PkG{PQsn4qOkcxMZ zm+MGWJ#|m)^oZgr(WJkC+=s2hINxpEU7V}Gu}^8Z{lA%Bxw^P8nLzi`uj!+zu8g!N{5Bf&SyPs#Q3a(x6i@n-dm zI{9c6R}uC6-Er$Jz{R$)w^(nvCW17kW2NQU{tdM6A;7k6>>=wRf$+WK5wziJk~1F4 zi5%{V@Q^%9;8{{iNutkh#a#*qT5bI%O8YHbr*WXym?00lB_|)u$ozks^|s>nIpdkp zSKH^~os3GzTW>3NOHD0E!#MEluf%V+->%q#HW}@=N&mN^{~29D?T=WG%v=6Dr2KZZ zRmy+FEq@Wp>5%d}{PG{QA5~kCzF5kCM9SYL<=0UDW7cEymjAqz->J4q`H#8fFF`p= zrTnFS`R}mbp|&CYG%5cvDSr#fZ;>_Poz^>xBXi)>qCuPIi8Rl*CI!&=9>R5>s@Y+v(>ed<6V;D2FXEQ=Sk~HoS(9u zD(;&DfmU4<2xrv|^6ryzcaGXFcTW{Bm)@*K3$beQ?8E2X_Pf;$NLeGjeiC=vad)2F znb||?+p7Nnbw6!AJTgMH=d0_bwx?YfccC2cZ#?_89k-9G>ygqUjR)`m&)k20k-WLJU^aoP;H=WZ7yZ|04W<%U*@L15%lN-^3K)r z4%hz=S|2Pfwa>KAM7}E@jo}Pw>+Xd0LFU7q$;p-eL)M3iq(U#ZJ|tzFFJ-(DPd;pY z7-hW6eixo@lrlD{^HGL@I!C2le;D~bVtu5z5BUF#{QE29-u!6N-r@dh8~Z)v`F$MZ z(^sF)74Hv_hn)B75v-g%c+X#^@wt8GXw*K_eX`}zCOqG&dhSkHACWd*i8e0M9KVlR z9|gQ1O(DlNz8NkV*VkZO`!qj@Xp>(DIYH*nmB<5tx7Y5UVC`_si0xW65Th1PxswRV*E*`L9a&q$BR?RV%Z zVE0+;vqg=3Z^5w}#~mo+PmumO>rZXAY7dTA;>hhI2lrIdJrrc73nSI z>cx5tz51&4)nbR#F{(D8jtv;&uew;VPjWqoTwk-kR{TwQllZ<^zX#q_lFguOZr>u zZ^7Fxb9viN{UyV#f=^w2TLka^E#AFL-u*lK@9=Ij-$jf54t+MIH9xpSr|oZBe{V0E z{Rh_Mj%Sm)2rXMu>a&~1{&DP|}FlWL~E(L~Ad!lVjgS8=tkmgA#W# zkM)nmmEh8&>KXglv46&!haV*ubT?LknDvj+`(DmK#kKQ?)(>(1H|yVU{&(x&aX!sD4d!&#XkM%z|pRi8g{4?ukIRD)GInKYZeu48%)=fA+Z&Ckp z(mKf%VGJ#{K!0%snq@`h3hRaylPhqwRvfv1&k|~Gfu18L;Akb}3K}viDOc#T1ZQBcu zt@9JR99<}m)|z+Zb$)W!ls#N)^Dj5)(Q<8(e|y7$JQEVT?1_PPvDO(}=O=PQ`7*$= zlxb7C6FF#2hHPD~wKJ8y$n7f>opLP&CWN3!Ks!3zu3zK$jv3rpl-e(Vw3l=5@fkZVK$LtEHHD9rND4V{5Me+O7RJTsLq{Ejb|LlpZMUw4G^PtfhC_d3959 z0#k1%aIOHPsk;#^JNV9%80X<~b!jM2e-n`6Qq2i1J8 z4JQp68mT3QY$sn^n)7E3kkiby+%TTk{l##%5l0y&rHCD&9SOE0(PLO~72g%cmC3Pa`q*N8gR)o}|79Kl)yt?&IkQPxtfm2A+J}Fo0#H@4?{?-kdt)cqVlcX}vlR z$4Z^m$XL8J;?7K28U3{Pb^sL`-56*(ZO2m1{}8xf?EK@dZM-F;nJOXUC3h{ zOf#tns)yt@bLBqrz}14XdZL;LIE^M+TBNU4yRt)ipw<&uDDLz7fD2{ zB<5BUJpgsR5z~8E@LI}3B(EdDYiLyiw zvC8iUi6&nRtj_`tcD7IikCF#DAI;{A+36y1my0*ZyOIojnXLP_E=!~+l(WNN6Y&Pt zG=mdd;%4T}42EtRtZCLMW%uRpw6mb!S&)`}B~`8~7s+Jp>~c2r2Jp@s@p85_!rFtE zz=+scXJ6itGM#-Wdk9Qb7Hb4}5Ue*SN+XA!wzH&a$ZKb(N?_So)SX}s@auPtZxx0O zKm=hy{Q9z+oUF@p^-9+bvCM+OZI}~WnLwNU;-rXB59=`1o0*F^!fSAvZ+4EwtC;=O z=sRN7*aPk?U0FXT4Q!kO`D1q`>PJwVU~sJoE17)&^DbVC4^KeM5n(4aE<#TuRzHE) zzQ*Q+CSD7{?G`czpIN*r4FiAqs(zfO`7oI?@{25(%R)MuNRwy+0SvD{2cwyNBeS1^ z`&gC(r|B;EE+Uh|tphRH5SG=?vbglBD3*fAau9&yAOM|n2>?h^QkH%#vp(pHKkNUN zWwB6j4`VJUt|jY}J>=xMl5wdCHs{GJalC8_AO0 z3^8m&T{@p_6ajBeva(0As#LVQ$zAqj*Ik_*z}?)}Swvr7KuCCRs@pX^)Xge;=DxH* z;o0oDSy}h8p!*Q6(eEKc2(vB~nbXYqs-LGvrbXNB{K(wK%-{N(FjTsmZ}e>V723r@ z{l*TWC=lN=NS#LkO^3KjfPA8=GN`F8VXb!xHb^Dj@CLu6{c_4S$S^Wz_wI%CLAgAa z+q*Xl*+>_Lrb)m{cr*wajnq<6vIZywP60frUl{UY`6wOmTLfCJOXT1vbOi%C*b^sv z;Z_F)j8~hCl#obFxM)ZMF{^GLrr5vW5P}g|7K>)0orzR*&YX;UbCQI`iOgb7l8-W+ zZOkyWt#|~IlAy>CA_GE9F2}PBD3nV~z;{qW(1&q)j)beOLRRLp)Gxu!Xygzo+!EPy z{-GFH-56M#m|jzj&SIe$i&F!-KaIOY6+TeBc9K=Fd|-T{mFqVZG3_aqV(s5&Phjw} zBbb7&b|O2hZLET&;)d+V1jW~)_XJDnWCIVVpwGgp zK&hmRK+dMYlff)>6DJC|c7P5BE&+^(p-kV4|)g^(DVVB^&0e zv|ax`Y5-3m9DA~a8LX{Nne=8r;Wi02Us;{;iMm0bNO-Lb<&Z!`N6wZuMXf@;m+_@FMT>&|=&J28|mh34CsWBu!9DxRa0k52#HX99bRGus=T1P$n|`Lp7QJ&zU1H5hLb9 zCekm(Q&1wxyHVHZlpn{*$K{S{bR>F+LrXl48ay^QU1&7ov9i8+wcudF6!)77Mko(_^7ja1{a&DEsP$yZk6`avhd5+EK& zs|l&UrAjhEH4H#REbM7DI)snnTIfwJF##Q-nKYkbB02C{e8Mj3Kj2kL+mm3DXa=A% z9MsjULPQG8b51b*F`TS+5EVmCrt$?{hNHEaW1x7vZ6`AyqL~RMHx5ZlE(hf_$kAjj zcM(U0sKg1EilspyW6@R+%2d1q6OgiXJMLSf=~!h&!!1;i)?Z+=|B|PG zHU{Z!I z0}gDS{DY`eBzBjzgscur4<%1UCJT~q7mDm6+g8^l3i_o}b_fLn1V8 z7S7Wsmjdku`?x107lgTdw7Zd+JXLF?cQR78E{x3Z${$L90?FF+}aVRHxaRE1Jj zhBbq{YhHlZr~eE%S+~lNTKZ&ZGj2eZgkm0!ABt91Q9Fx86%Hpj$K{+DOI}H7%p*rv z`s4_XnNAZaYyN%lNMwtroELV>GyMQ{MxbsXO(%g*#rcBC+2_hzRi z^20!Y0~j2goh$*Q@(_{<$uJ9%(uta7aGicRUL9clP@pay=*`;s;e8&rj#h|XZ==_& zzU%^WnV-Wino`lUGxCyd!JZ8wa0QZAos{*$FAvcaDR0ZwhF|h^kfp|#{dNi{i>2Z^ zADr3lLZ977c-W)U6M3D5p+Ml=(+eR|<~MqAQ00wco;PFnvHUn^+ zqVqN~5)YQP6A!V$T0p!S7LvdMs%WuFq|R*Jue!KvIl=780r+b{Ztl`!mN= zYiMw;1?V9agiBvQoQBne)FYS-wB7neb@%wi1kxk<8cvy9t|whF{Mp zv$=SZ&yAdgRXZMgzCD^cnTliWu9rqZS^~a!3vR*`3see>)OeF#ISL++EY%p;oqdX7GTk=3Vi`seW(eQS93**;25Y$ zG|>4vuU^a3mvE}3gie&fXMU4u?0zi`D_f3M@m3Wn*he@k|J{C17j1@%&*nh_yvx z5Ra&()Ju3;&eLr;)vYMV9Pr=FT#d}4S;wNZOwGa;B`;7T|+^qoVpBPzxkfS1}rv%I5%$5*7c-SK{Oe9JDu47Jbwh z5g=;Zoq=?UEq;_v;V6~jRzGogZ4x_F8W_`}{}DwD4oDjz+$Xr)>JK5UmInUNPo+E@ z$1VT(O9`OKy)JLZg(IdtkbzK^yOKSXR z0=#?@Z(tWAnv)oS3dm}rW{9@Ee?s}v7>sdnovxkXS^vN^!|R|hoXgXPLYzMW(S@;B<@LQh-G@^x zo>$7?W6EgqYLHJLk`tQ&%O>~Iylr$1`tRjMkO`|zbbYqUF?+cI`}Myf-{%6DfjGo6 z(T-?Gtdd;-W`4zWqA0;e9Xml;{wYq4qNs}A57Z0{YSri#P)Q1h08dP72UgU>yiP#m zbnlRcXNRN9G2fA%)EZz!N|1L20Ll$O5639vim(gyo#c+|A2P3gTv4F|PXOK>j;@G2 z5_v3kC|=A!3`RNyVg8ms>0sC%iKygb$OX|grBZH53H=q-RE()Ko;FLKOf`nX+?(hx&RLr`wLfGYUc5=EbRxe5*<-R&HM|w!yyM#boiBnaSY@!;C z9*G^qf978q+^e(k$*f<7eWtNZ*CPBeo-z>0w0oLFvD+%O^fofWYwa0YiO|T4=12J?W5sK<37uqp@11%2#+L>H)Y7 zOwHs-=Up9}C>yPek!W%dKtccAA`KXR%y)%9pw#^gq0ozq2(Uf{X?|HOaWWQbeLfan z_KR3@6=Zs*uaI*)yu|Ht`6hDlDd zyp=|BIrtbGNqH(AUDlG$B%-3`h64m?;B&+o&||I$yVtr!PM=T+7h+0`E^0hH8s}U*G^kZVgsD+VmM?V9~d zF|)DK7O)W%GdVVvsKy_rvMLLuRbn=&633$D4b=qHTupid6#7k7q(E1_VgJ%9xwPcK zb0_h4H36xw;^}srz-xw`9dkJ=nFCb7%j!?@G0e7;x`aN+K!1%%U|z|7A&nMJ6tMNS z{_Qt!*}5gSX>f4oF8zI^Lgo1+A0~wu!=VgTGI(?bUX?<)L#QAu$`Wd$8o;|4?KP|| z5VRBAoG7Jm)gIN0fiZP(#l28xS=4AYsVwvCEn_h(WZ+ef#csut4|O1z1+j)g@5O(& z%aV1QS-9c@(qDFU5{?aEwo=ez&6I)AXyFLGouD$#jZTz?KrCu;BpS}$c;Si04pb=# ze^h5*V=tQoQEYuCdq#YxuhcU1NUucuLF*hO>1mwi^o?UDedEec-W}VmqvKTW#wy?4 zWTZ{kwLlaz#waKX5<`Yu76+OD1$>8AfDUURzXM867=C$K^Z=#O1W38bCMMwWur5r( zFz47%q!8ml5{+ZQunqYLx+Py|Ex?z<*lzK_HP#*2SArABjXQ5LniaSSX=6<7%^uiS zfRc&Q$Sw?saAnYgBT7mYQBGMzVXcWbO4=IGX;9mkNh!FIV2Z!O#}7dqcyE z7kjf;dfmFZXKzRc2wlo#35zFuQtfgtq$p_O@E?8vg^>bQK-c~aF4e;p8Jb)!5V8B| zzf8#-s+9aFCL}bOMSB>7312#(;Q_iNX3JEzsL}y6JdAi|pnLtMmrFo3s8dSCE+-3% zCRS(q`k+aY6GanCm?b|{E=|Dbj2grj$ti`p1rrL?ow`t(E@y3evO%ru>_Z3ll@8Fo zDX0)79e~3hIV4z^rlE%u_2gRCxz>Gml6@H!3p(^a=mIiR-sJr7TYfbDJ+eOIkjrK6;!AyuZOy>wOpHaDb$^^>8*!93;}jMu>y4ZcD{03vVx=om zT1|FZwZPhiC^E2iHLG@D_agYqd6V%*`VGm1LD~GH7|G)X9Ayd~RnpIx#wtN05LViV zURJbdD;$gNBma%mjS)R1W}(eA3t`=ejV0Y2iSbmqw+b28X`-2Eta%j7E7M>Yf@u}M zEh=73J`yv$_WoX{b*ycy-H1)q_y|^R@zqKUm=!q&2vsignlH2jgcJBzz@A$T>=(y0 zqigqO8&GZ({$)Ljv~Z5Hva@Tle(N9biVMA2&^mHEcHT62Q*P7t?Kj=J{kmO)dKs!T zx|b`Mi|nR86KS=kO`H1(Kylc@`j?o5SD2B}lU&ZR7}8mxjEyd~p<9bsR6X&Mmj{Ri zt59$xx)e)YC%DZ{aG#yvK2zX6W6|`b} zZ&6sbsf1UMLiJkOxG8Mql0vAlte=fGZiC#-F6u6xgk>dTBkY83V%ocS+t3r{dnJ29 z1Y%EGqm^ZiZ8iqZI*E}8?(=#N;l}meTk6mS0~mNr%<+Ds?{yM~ft=EfIJ;5aY+N$X zwUmM!M=5NqN#BcedbXLuxs!n+_8`1;8m8{uSUBK9CfjISf(>tB`c2i5_&(YZ8nSQ5>JJ0fx*5Y+i}qo5$i$E} z7{10HnUdClla=u&10Y1o%z`v;TY2Iff$%BN$g#z>R9T$2w1{XvE`er}>(!se$?Bj; zVEQn>O5#G4N=zxQMRt0Dw8k=+7K!I$2^d*1QDP?(Dcr@|F-hpN0xt1nA^~4Q4_NL* zY3NKH_HnxSK7mv&pBnqheGY6?0bYc#@LDGYyu8+FGB_B{r!9J+5Fa6rY&#UIbU4kk z8Bq;E0|9&2O7Pn)Fuy(v^T$D0IWvfy&b20RGL*MvE0$=Jz}UcjS9o^KafVne@=Ds{d5nDW zZva>$9e50Bhd6BAxQN6tY#6xqxHoj^czZMfIXVXI671!%PT0~DvAKihRpeq|-Jqd# zNGL9=&uU2Lyg|W&mDbDXq>iDCkEcuL!>=bXhAWBz&}1e<#O*V9*}#fR0%QvxKO4Kn zoR6_vLf#UcP!d#@HewnbZ6MdcM}Zr@>S!~77;v8%+<1bQ=V}u(tiRBrdu?h)C~zKI3d%Iqx?pkfbF7@r$ku>gDvMLE41AB#YKAK-5l z6j-qRdM6fx%*kUHj{Pe@yW!C#vOOetNbyZ$>9J-w>a9iz;4<`Ta1@X@=)1dr#s1ai z{av_L2@HGEnL7>vm?E4ctydKWroCW0*O z9W0<>%;+`pUV?B9-iyQx?o+o)Uy($-HP#A}mU3766w)={7-r`1U);SZUxW*f3$(GZ zX^fEvvDa6{u*)}YrA4tyucoxsEarp^NrXXhHf?ZQ9agej&ZI>+%CE$Uik2~$<>@33 z8vsP1E^Veo-xN~XTrL=`}vy&NX#$2=i~avB|XaGu@W}C5nv9ueJC^G7c0yj)<||tMo)?`(@hptN}`5k znnj_e!7{(D!hE@5DBpgY3c{WPKT*>t zSs7T_!utyN@@Lr;k|z2xCHOB^H%^2o_gwYkD1Q(qBS1r&jv$EvTUkDzhywk%%hglw zo=Z}z?jTH5d831wtCHhM{o79FFvdDZeykPr;Fa(SS?aX0B*+~p26Q_FZB+46td8wi z9p4^}9EwM&vq~sv*&l%>p1fK${yOBkETU3};;)Y122Iuef!jb!$^$63Wp)wu@t_L0 z!&GR_kD-@0=Jj|s?{i!(!zRX8moM|5g+$t2)6l;NlLOM=*~tTzu2IiZ&x83=>O6`C z`0`Fr)TcwXuy#Qu+`%14rm_P;)HPx!7SD)v&^FO)3I@VyIPk!y*A>)d4^bJ)D7s^W z9G2k3k6k>4;c@KVDZtcN2PDJ%&r0+-frIz6e!qxdkh*j8O&vB{a$DBXV~KY ziBg&TZnuZv4Gs*0u*#cuOU1-bqd%bkL|U?aFGzdeAu+jUTtrmRiL@xz9qa- z0C=JO$(9SF(ECAwQ9j3StKrQm8|Q+?Lm;U)gaP$qPn8hGR~TT;zE>{AnsV?!rFUB% z{S>rO++7MpfGTAlc7s9d;TL1%gKT99fCcoblNx$DxD(c+hsM-+J1dZ7P-NW;NH(}2 z%9^j2;I`HZ)Z+eN5JzZ-KE;P33Zq2NVEqw_XAq%4?L3#2GNV|0#7 z|3;MgZIYwaxQHxSK{w0hr7oAh6s#jQ6P$!2$1j#9;rkr(l){_Px?#Q%{v+Aih@);R zD0lT?%@hN?jg=Ex60VvM9}%%vyn*$(c&F06shEYJZ=^2H94NhHC%y+rt`N}m_ZhN& zIU9h(|Kl}}ejKtSaTye&oq1uN%~7-|NSSNmcn3fL-%wfNMU=R%=*T*TItS+3mq`Bg zMpS5Y6zyJX&8X{_^2xP41#F63$#TRFpUpbcxJbuH{}a(+T-W{ms^B~arBv3wFgQmT zA>-EzP;Oo^rLGHsbh!soiOB(=x_Mp@tok}Yu$GkU`uc^S$^Lf#pFuNAX!gD^G`X`B z0Z4wm@PyleU+(20h@Rm=)D3$AnELr%BvhN+7xeap;L4s~{C@`5vkBK1fu-V7`Rj!$ zSxLHV=5j9&!PLjn&3p!kx_MqCJd=`L4=e;t_IJaJhvph&_rwp9P=rfP+7LcKKDpn9 z}$aYM@eYb1(*4*48l@-_28=Q=(U!YFwLV4rQ^k$tKt)7Ox~9SebljqhhYlxaZ< zf1QNzEEHME`5eLv&tVYpT#jZ8@;hMF+%O2_+X`@>Fv|+k*9dtmN790wA-Ma? z(WW8dq&$Cd7^xp3Uc6!$ z1|!>d;6juWFg@IzrgV?dh!4~;OUz96VhIlMxij_)F+pv?H8?gHptcyRg_Ae}+XXl` zx_nUw0p&kbKyj$`X>3A34s0WZ+UW>IOt@=7T}lBkIbbEGW~OHJ1E>T;Lsw%+RPa)P zrw3g*;F1K#XUfj(Yfr|oyzTW~=*G{cAHA)$8eOT&VNro@C=WL<*4n415Qxjp9njpb zsrAiB1SkJZdT-uYzb9w=C6!%vH)YQ9ww*>#0Z>|;L!MdDuF$JxT>6s zCev){EA1&=1)2?c+w>)-E!3}f^CSa#JFldYrSlas#5y@3k!Wj+z5|(uc@zHQ7;nUJ zssICRyC85)*iNZPg*-dr|M8lWxgUpkx;d~-iD*yfJ&5>^i9yG;PE}f9Org*P-@|O> z%+R)Hh-!t&NfTMh2xAZlM1J8a;MpDi9@n*`_)MGr2iQ!XtOIC`QSZi}ojzGPy{_Gu zO1{hE0QBJv%ZoU5NqNCZxavIs+np?#pu$#G-Vful?#~BfFOnMxn$fyJ&qq=gfv(S3 zd7D%-@Hta!^P`5*TcNUM5HhUDqptkwKZbznj)Rd_>gFC=73impcf?`WrFv?q11+H0 zl+As6HzF%SJ2koPJ;p@(10dg$GZxNg(K z*u3z@P<1QjR%bE|9G}Cf1O)jB^xcHcQGTTj=(QIQUdxJ%;ttDYEFDkBX(syhqFF~c zA{}8?>6(jah$Q01towB#+W11P|Ui58g0+TP^U~^1le`SAlKh(Lj#9`%*Q=M<}-4Vr8K1txo zE1kqVPm*|2b&`!wSfZ#=7zhW(jrI7^=katgPjp_<+j+VkC+wbB6!=w&Gmf=5l;CbH z2Q9GD5H1P!q-#?hy_m1nWe# z3GO^`UP0+DE`9qG*zX-f%C*&$ljN_c`{Bf+60Yk6Y(iYASRP&bwPG3Ahn_A%aepWc z%V!e;r=_cDCp{8<7$(4DiTknYABpCgk3`2ZDh-#ThvYuvv>d^=7+^MdS2c#`t%b-T zY?qN879WF2FasRRAhIxA@L>de1}QBtAtH)1QWMCVQEk|6(58QKU*tXnr{K4=?oL-T zv+c(sY#VYd6Q;DIG2K}NhvODGx5~Lq&h6FIp+y3xkwZ<@rm>Dg9o6R9#nq14PL;t| zS0qMAwZ%7Pib>gmiQ^{ZpuA+uTHNnVgBNJ$CMb;8>_8;>Z)o2Uz6Gy%9jbAIxD3Oqzvt| zXP9!TZT`DUk?NL?RQLIVG0+EKL~fOHX0_!o@#8F9VRUhIHm=&_DvPUjxjLtsz?0S0 zB+lnn7va3-2$_b{^VHb&Ga8GX1*akG5n?OBOWQR{nEf;%D@PW8Vr?;ey$IeA6QFH} zg1snyp)%|Ez|)`GDliT3eHcpSW;XT;m~>$T{XZ^4BxPbTUWp5DgAA4vIJ_Nh+#mx1U^Cti88}|X+XhyOrelVB6>d{Z z$36Ar)#FnG;mY3yW6Gix6*O7)xA}Hq`W!Igsk`WaF%;LU%FBI-baxHFQ?RQy`>K(P zV3@k7H#>4MelPCjmhD45FEjhgosbVIVLNAWrrKUa=QX$}5GJcIp}8Obr0{9(V2Q#ahgnf-Lo4NVJ-;TP4_8Dsp4y zN+wWgdvy#WBH~jjmO6>eL~CCVc>b$%y25oyx|zN2NGiFphC@l981RFhnDLU}nCA+aZi;JodX5Hs zDiA^l3$MM)+}(y*RFZ9Y2!B18UPYL7UG}^%(3O|`Qm+jJ0i=7*Gd@J)go6y|?F5F% z!NNyh%?D4gtqB=NkzrrU`zH7f(eq1BAq!lD2RGfYbyx1jo3`A%eQPZ#%!4uX(Q~Gj zGHMMY`Oze(`J)eKJ+o?eBM1+|ti zFxYAXS<27@jMuC2tY@k5i~11X?Lk5c*c>Lt}5XhR5CN2#+)8qSefb%;YGrw#(HW3@juA&hRj?xze$AT=8EkT!+$0Y;c7(h?`vb z5Aq*!cEXLA|CS};V0V%ZciitSK9dRWm#H1}s+4D~c$e4w$6xA}%pJGB@gE${e3C_O z(<6s-6q+Q@{W#p+gixzZBu=p}Ut$}RQrENQBIID%JG&`r2 z-U99V63#W7%H-fU=-04 z18oM43J#)?dai#_XbpU*psPgfhF;dvS5D+7hgAORL3H&;C?KL=&ukMo$pEnTXi!8N zgkOq5Wt!zl{m0W~gn|;+NHEqCyZ9^>JCp)L9zR6IsqA>A&yGqxmIP~?f+uv-W3g(} za(oPKc?3*59m&&9oV(SJ#u@5KwSf7r;J4NNrNDrDhzD&~LX8LSJ_rp+d!R~@q5Vqi zDZ^g8wVKqkPEsurW;Cfk=cLA(R0n*5eh;Z&WEnCFD^+JupIYKz^Yr0pA$q9U zX$EtisUmtOO8;IpQ*BmDQF;bG;-^)c=~IZU?aPj)z`(a4=4(r?wc3K!Zh3w`)|E}r zOwcCkGJ(F2emFWUH`0JH3&Ix}*BnHQ0iQ+68R8WEfivO$7;!h?o!r=!;!Yz5oV-!Z z2`0izL;O$7&Q$VvJ{#yw1jHfo0{v#Ojez0&MfnNU9v3cd3S%rFi9f?drcm~afQL*8 z+x5ALR$Rut=uCJu&mClC1l@qHTiW9?qNX7dd&MsXVBjKU8mvOWKtdq6nR|0KG&lp9 z>AQmgg4b{9_MtS7x6i>1;7Eh8Fk~_LH#2`SK6GGDY@oYS;MBwH`3+gOvg}paS9Kli z+K>eU)is0P_4t+7aNRXpDygnR4Cr~&4Sp|Kz)*bw6=c37{Nhkv-eXqzJ2y-J8;lV7 zT!BwRgN%!k2Z4iEp*b^Gp)JystGXntNmozys;dNFx);h2lz| zX936s-LG3AsB^IH(11w1?ImUPdtINqZaGALN(w<)b*m$u`T+sM?rDI8k%|Jr1zWH1 z%?>&N!7(i~p(wyKqD(M;KDu;wxryYCWl(`C?y#CGZ(xBCheCc{n`h`n#z-0HGn~9Q zU3>=GxOicXb7PoaS0CKnIPIrOW%<5D04Icqg3A*>Dq`HmuqV%KA~VsnsBbAaGmYI@ zUG^~*G%9V)3AhG6zEH$;*KQLx8Q3nquyWHWX^ zM!Cm<*D+)2AQVuxix>gT*#(`$ zj;%YgmtS_71Zt2#X>d0b(uYmUej7+GLX`vxh=CL9Nhk?0V9^xTC7_VO5)6QJ6tvKu zQ01;5^xui@9mvRc_G0srz1PF8d2&YgR@y-F{b}4?Nr6@z>e*X)lqeQ_^GNVOR$O!x z!U(Vodr?JqvSS7z^o!X``Yyf<$O+nNbVVWJ;3|q_DZL1h&DdV-=aODwsAR*nA#z4T zgZOgN(_$8%TX8^)Kz&7>GK1(AeWQI@-ADF~o}4iKGExz@U*Bm@Y#R)OnaW1LS6N49 zhK=1{;2R8!LA=9sK2XwFn7wcsy^OIY=tzx>J_8lNCg@XUQw$;!&Uvx&ZcZ8#&wd@n z8Tb_Y%BBFkW=gsN^6KG>Ng4nWtDOgH6SA`b&{$iEGThJ3xq~5b!!KfemQBz53R|7zj* zMWpb>SHt_uKKXGD&6%u#;&4xEEzK5?Rjj4V&^Jn*+?ZbL2yiXu;A2*!wIV6zS3?Qt3%VEUk}qhN=UD?`qsIs1Zap`0~S3AKW*LFDqzfpg%tL zT+-kW&m&w^q@UZ(xgnl}(+^p}xi)9M1axE@a5Zon_Xrbz4K3eRn3y~zmxwT|h-xo< zU-)fa&mbO|VHWEsA6$$%Z1TylZkFFeqIcERvidBXQ@-%Cn^9Z&} z8wJAp|D(`!JKdabGT=c7OdtFn3WVFk{4!)RVx?dKUpO;XLdhJ4p6Nhs;H1NV~%E2^-*9LrOut5e>7y`ab?JJq$U^9->G(wBnm68Y6#M5C7 zLp~^to#ruo7h5~rnh%#wq;T7+8={L_t7)AZBO)T$RjUbhg-!o$3SU##ACnTWby}`l zV6j}Ng!i!or)?IS{SiLVZ1QF)*dhemR>Cc3k$cyo;LNu`TYe%Xb<8eyI>(lnl4P1R zSFYLxTgX%ypPB*oQ4;Q5kX&{HO?>9&06Y$WmwC`p#_U!@gQ1TYULe7Fz4<|L$m#)tpl7;`Yi_>ir8b3U8H{mA+&w@tr; z1ZkG1d7AQ*a8vZ_|L-dLS-2u7c!hp0!Uv$-A=|_dg8H3o=Cf#pA-DA=ehIE`Nbr5k z@==~n@^pkJLP>fc-xT2HTslYKJCSh6lW&d2OB&H4^&64TYLn5zq9O6D8X?1G{0kf0 zjl7H%mWi&Eot#T?#npEi;vVp-9qH~>Od9W7-uYq@2X%l#);aqA(tDPu*?>y$pFl9H zqfnR?@sTmcaFDdb(fA>L%nn`w@Pyn(zegz7ko$0gksXkpLi&*L5UVC;Q?8vG!LTrA zVe*0c4uL0wCs@=o`6FnM8=+JPp?rr^xP6fGIi^t&JY_}U7cEHSC9*H1B4lmUIv8#g z>NL+Uq_W!0XTL4_T1`pj1V*F4mL#v|N7GOUa=@zjOi;=Z!b>(GQq zLq!nwyW!e*QIH#CBHVH;-CNB{k0p`8lEB}aHQ(16l#hQ z3&=+_$W0tczh|flGEC?-fH7ESUHwj|xtq7%x@qUu?7DS=utPSqA_c$`9EtH_gcgMu zBGC_{G4EDL!mb728TbfPT3s%v6>f#tP_aS0J^ zyr)m%S^Ir1gKNbuO9*ce=un}FtO(H((T*7h3X{wAunhHMUG_TZImJmIbI^9QgYqVq zIDih8JVKA9PUfk!Dlzm3%k*o{dWE|&bB4yU-2e!(0LbLf*k>0LyUIak3Mzb$%qxM0(7TijR0U`LfZ4MYgfj#5J*A-q5e00v&4f;TvuUv$u^1(b2`V5~q zvhj;cX%8`LO)gf}+Uv;))~u(vF20+mhp~)^PkS9hKt_eD%`P0WSwd{-YXVz3gWtf@ zE3VI~#)>fVFreb;k&tB_t^wj-S7Q0UkCX2jFfJ=*;}S`G`#Mx9{;04@{(?I-Q?bfw zhA!mlV!rYmVrK|VaUfW@<#h3omUq^-Jk(CZ&KxHw8rT`O=rXp5OKuAPV))ieNNl@| zJ@d5yu;Mdfb6P_w4=^9pKo_@3tRH;MxM4i8kA&;wAckhXueKtpGbkaxXgg$M0~Uop@J607 z;HBO`Gn{yW(Ji9-{pdp-x6^`d_}tD2o>rr}UHE${8#>7>d;aAN)mdJ{6i5XLgcFO- zCdt7(7~Rv0kx#)lF-6}*y}pVdAmdHt_27O|5;UY)Tl?1|W;N~(!Lv}ph!h?1Hl&{+ zYB~X)ilKBqD|H(w=ONV7awt|@U4>sELP0f)l=Plz^H|%V=KT*l?MR79*bx{Nw@TzH=6hb*MP_uJ1UDs|W)OKgVUf3hHT%sKn72jHt2M&MNk%z~eD~DC4~cd8gM| zQq5qTmyW09ZfP|$b{c&fVccvQk3SeK-{!PB2%CU@tVg*SNNLO5>n3vzSTLke>dMIe z^@Jb-12I0d*?EHfOT2Lj9o#7%z@YSC%L#NO-f}HGa?kQmSi5_X$!ZhNSC_*o8{HeH zgbcKPAFsZGe8Owv2f9~OxXC*iY#~7;R@tSqGM0&FVrc|< z$^0Ug$oxE((yV8gRfPXYtoc{I7N@`!xc>9A!6&Q488`*OxS3ADDx+HPo0edI@S^d9 zzqISeQCa>5oOYTI-(%%*86+|Fk_jTu;7MGK+9BvasM*0+f9!0CK?aY4Pi{cVi!+Rx z{9cWGDu+c;W)t~=YrTjRT~5Fq3!fw$u~#XSqV6XT&8xznK_ZwajDwi~r>7^$(aXLM zQ+mLA7*jbNDk(8wrDvUn#cCBJm%}OOs9j8#FfFK{3>2QhZ8>d;AYdaOq115R0?0f?NOgX z1Ci;-gU`gRXppWUvn>#pj~(mBA<>K2DQvhyJjgOcQbgH{av{QYJ9Lmr9QmvlLI{4C ztpK($Xqbdt{4x`Wg!;ocd2RnVQmr)i{SelTizvnShuC(m91*xF;mg&hH@4f4`aNe2 zg`bCMcrPv#9A5ZQ$uW3m!>tAD=dAmAK&~>>ZAp6aG5J*BKxLIdwD1O_P2S|#eIf?A zjJ@;zsDLA!UW`5n6gR=ix1ieP?d&p9Ni;wgG-tR?u%&_@D{w&{Q=@W(&kX?kaBKws zJRhf|eiz=555Ul}YxZjhRud`aZ5MaCJjQm>u{8p+8jG}^l<${^bwj{jZ^P9bM>HRQ z*Gl`$q%@nrUWnyC%U=4X)h zINO}Th50liI3v2w`6whBEwp;xuQK{A=2lNK5b)at;*Nk#_aGV9pT)DFIrGBqbI5Z1 z)MIL*#mx;S^)yQ-?JzpDL%iZpX!gwni+h|`LCq6N{!;LO;Y{wb$>>UZb6n(A5|V=q(|~`|SyUzb-pq!!J&S;2=7l2?|j_ zf<|kVU%~F+3aUfgfHT5*{T}(bWDniE7Rch}s8cjZI9ZRWL38uo0_5XQ$d?M;ox|w( zuxwy>7Vbd5Y4)D(%fu(GAHU%y`HlA+&piE3@U0KQ5aHk&YoX?LvQPnB8=&A$mOd{- zch4TbB=~*)B!O(SL+Ixzl80u=+;%w1n6)5`CeCsXEUs8guH=j8%EPlK6Oz- zG3(Y)Qa>)bH<1F;ahKcQ>HR7K9QHb&KgdZ}2YPB$p(PFm911XfAL;YEP(X+(3qgJY zXWy>qR)a`E*2y>>B>hU7)Tk+AU@%U zV0`=-$3}ApIeDpq1w-O7$a8#h1JW};`v`I_AMAm&oOGJ$G%OAV2xbemI8wRUZ>ISW zru)%9^jok_BnS{x^VylYsSFBbrU(gDFmWJZ^z;c=T3Hj64O&mR1$%8m)Q(u(CtNIo zKimTt7=x0qvf?qqQPY5F#K^4o@=A8jaP|Uil zW-S;rL}HL93^cw0IS_S~OeH>7dO4=oHLyQ%CB%9^J;WV*Q(R%(AbKKx3(AI;II*$$ zPPFc37Rdy=O+T=TF+O^;gIqX!jmob#>wY@6H@gkrADLkELs$fE38~dNCH!&h%ep2% zv64|2&gRK}Lo|+)03x}|A(b2HIhDCao6_ypy8F`g@RR{xt4S=RuKLdliO%hv7(de%L|gSP~m1t;i%AnIJjqz+Xbv!6Ig8) zdTmD^SP^`y72w<9=NSNNeh*O4h#rZleP+HQ>JUz?P?L0lo z2f>t)*+NCd|8TZ&BY0#H^<4NkCbZPpzbC4Kx|zXM!e1E}m%yJHa2JDsLNNs&TylL# z5EjfyL1>BTI~f&NK~;e74ZMW9YUD%sAJBa2wKHQaW38Ao_@J9gK&#ybt+s~NmFq)_ z0r|0_AQbHBkr8ZUWXK@Vb~oiehyKW{;_~RTafZjErxNEGi08EVj4#v+B)oN&qHTik zR6IcilrKY6kZmE@vIP#G$!4X2r?(8aaN-hS74M0)Ehy7t6+)B6OX4q)pTpa|1%{5@ zuxxwC1f=NpZtHz^{a0kRFy8{t4SFJ%O9Y5@#8l(C79d}@WI<&wT#nEbube$>FYumC zkRr@euhn}ND9)o$yLY1{gP}>#%>)z_yr&-oE^RZoN$NWwW(s_dAV7UVW6=`GQY$_l zpCUqwN|`n(vk-4!+L=7efu#%g6|LJKW4 z*cXTSkczH~uE6iYiUqF9oC#P&qvj(f5}6^MKOdEO`#6nXD*7$rBPAgb2g#kl$9c5K z&)~V=HTGveSRJ@4ltzofHH(;pkgmXFAVxTRI!^P5V=mAM!M(n8)kLn>NX%ut*2}G7)QB*fNe(FIu4s~u&sFprT_myZiMQ3 zko#k8KtC@!ldCOLj~7H~gL2x0Pc!leqP5|1-5(*p1c#{Tj$kH?gA+2k?5Jj(C>b-j z!8N%CBr}Gx{&4%^b_}0>11>6OF}jxb<=2pY)7|xmNNp`pSa}&}%yLUKU-~7#l9Nx# z>OVzsrW&piCcIf|xbz!{GhE9enCSY8$TVlABQS&qT!jlV%J@<)KT!%P1`5L!(BDUL z1}OM6k%K(u(`qS{1wtb}W}ikS z{pV~SZ^M5`i)_Rp1JSHwEi5i1 z;aSfaHUR7Rg8Vq4Wt4-#WRxoz(!apdTfO$vKn8m-)8@3F@RjxxzFzxngcDU!glvT8 z8@^YCPd1_tNjg&pZM_k?AK=2u#x$BR%-7iFkFm%K`*FBZHV1GF1{x1pW3t@TmLq7x z@Hju910#26;4r37;${5|dmnUM`urFk>}8*Y3Pmfc8=D5X%xjwvWd?3eHA0v#<1>(; zunX@w{xWLMc{Kqucn=|l!pF zioiUuDDrb*)P!fG_)0s60Pc0VK+@bt^>{5g#K4&Pt*Ai%7Ehdb^ihFBUrw^ZtIsDj zU^F9SN@o_TBAebpa}qZ2RvA_npZ~fa9{`y9l(CWcteVodRO1Ns zpU}5JDndXck9N^a)PtbUhXHC4bq|qIs3xsbMAgTXMAdN4r`rj9ZeIIcm5&PDd+&+&Cm?lZA&G4Rm z3e_A(WL_7e4F(f=YfEwtMhahUvQd;okSsf|A&L>HB8=m~&yeAJOO;-C5_)Q*fJDzz z1fuWWMOfa8LIi>Ia<&-XhOGw;OgBPMNaJcN5ct8!GJpFm?K*|#<98!YnpkZ%N5`sXvS^NV**OagY1?8aKth9}6T!->&WX}cmFE?b#?&!@L&4_C+ z^OjMn%>2xoP)A6}sY`e3DjQ$YJR~aD*&Oo>TiAeKP|M--9sWxpo06#+<8Aa@*zzvg znGD4x{)viCW;N0$;W3D>PeQd2<8MCZDI~3YaabL#MUeba!=zp+To zJNa(F9*+5^pLz1Xn}DYN|F=#-{T<@jcjrMi;>xFp2!h;jxbYFqh3Bt2_nP_)$n>+U zb)jkZ*;7~jYn*tZh5jUZd+Lezr)&@oZ{h`%$cKkaJ^j!1zzn7qEBXja2~RD^MwB$> z%rMrp5yvTIBax0?NH${e?&$FYOupNRXpkW#9Zxn$51Op1Fs(i{r(ncZv#dCd@?M;L z!6<7)A6Fzo;MJo^2t+HwsoW+8K`04hya;1>^PrQO#dq9jI6f9FAB0PF9KMB9PMW@j2p1bIUJf$> z%7S5lTT*`;c@cMtW&wOsP|^=mWW<$%i={CrKO8rrQcq&w#InIsDLaCApCD53qJdyw zmgo zj#e)53B^2O*aD^2?R6lM>2I;6zTBn1javw8Px8@+cxn)_e3aGy$`@tQ{eV}pa6W-I zzR8AXaY3m{zRVkq{Q^E;j5qguD$dw-kf=H!Q7xX+fnQyw(tn3WRMz(SMgH$Zs^{4W zmmr_vmkBuk5<-=L_r(fT%=|T0IZ z^Id4M0A?<&3sggaePF(*U^`$`@L`MCPF*1vqZcX~8$=J%g=b0^U{EPw4=4F;+SP|( z)gOW1HpBwMLi-%G@aH}&E&K0g#C#{F3h@6ZLbjo@m?=-2VyxdRE^MS8cFpeMN(kAL zaag=G>`(Ld*}zgbIVr)DMyMa7@nc_Ml$m9xpWifZD<_#N#3F{RM|LB_=+3>Jrj=4m zqk#nl?%ms8D$)}X-y5{|?hTyb0g!nE6QHMf$L+x0y@+%b4%Kpzkx!(RL0RaaX@$7J z2d)9AAJEh5pf#4zOs)kQ{qO@N1jZeP4-&7GteZ^+O@at9h#CC)MLvRvG-_Nk4D11f zO@TY0YqXMAMdxOG{js&xgIa@s!XVJh)rxduUv6M+ge-L`6vSinikppd6Q$8nh-cj+ z8v-jB4)X@ftguB_J8)wM}FvaXyTp?=*RTtOYUsk(*BZLp^oZ#5Rg*2o83 zy4RA?Mua+%u6na;*BVZbDdtMrH8`g!Y>``CA0gg7()Fqlt{w=Mk;@&*9)MIzEVflW znB1N~Wag)=vm>SfLB(}2Wo9>{v^F3Dc(5@9&T#)cNW*=r8!^x1b9#u7=Uz#7ByCQY z2web?ZePXe$svRU0w7^B#~kaM2ZnCL4rVXN&IAp6VQS;yx2SaeuWrd6ZcJsrCv-X1 zd86-k%u^_aC7u!YL}TV*`0)u=%me?+U6`hIula>FP6AK@=mY13Y7!DAbiwSeN7tdn za07Rj;cr`nD{}pw@EQ6bNsKcz2Z8Jm`z`Co_PThz%q=&pSEDxN6y%<`BYh3j9W0pv zu0pC5Ai)kF<>*Tg-Yf4u6k`IEEO^@J8pL;f*qJQ#v3T4f>OdOK=Yw~kgaGhjdl$+Y z5PVmGZ(Kk8#jGy;oY^~DxFALSu5!7Nx%fL4MJ#@ks5hxn4 zAHL>$3O8ntO*JxVb~e#M8bjzP#GkE`@iH(p*e| z!N;$Y;eMTJihHD-76f~R=mL=;t|zMe#(1mis8~5|vn;U^9}mNj7n<9r#SGhKxO36V zh&l5s=mHF)VN?=d%kcb#K|;9Wd(k2B>0~%+7d6F_8M5uB%`T8rv&>&Yr6FaIuXuYo z;VryA%n)9nWw><0^{O?_O@x)sU=-$62ar|e(T_uRPf$kFt%$oDEv}+5iP5`o-GS?v zUV}KlQAGPqP&z_Nd^x4SCCqaImp2 z)Ofvuec^r;$}Rps*naE#u)rRoINp;!WN=}S=$L2ff)?=yNHv>I=0n}j;prVd>NZqp zHn{j$i>v}LA815j##I?l*O>(tQV-@r^@OI#0vmY%KhrI6_#!?Bidn(N`Fg`$HbbFW z0tF-}pufq9C3}Aa9`D7em($T#0Golz;$h>E4I*tMR7)MAkrjZ&ZE>T0`e~FMGUpw` zZ7ppalAIYM_P(20#F!N5LODKW-;nGeV%4GM1o|5^Cz52F81Em3i3@39${>s#cFK!w zuC+5Q>e4iQ8pzdS8W-U~>%g^l3EEsbQ14^yk2-1;wF+sLpxGcU=#dDo!w%za51&O$ z35VW_J0ylqY@9o?5nD%MVlk>t94VV6+7A2_k3zp}uCb#$c~pEFsZyz2waqN-Y!_Ag z;#rGDm+kH54R*wk*@u}Dk7XAT-k|)k(;n#?z|Kfn?=(& zpn!-DGd282tm9wV!pW0FZNLdW8&NAI4n&ki)7X|w)f2ZRn{O8(`jBi_&e$zx!!jh) zR(H!XBvG{pdD~^{@*+UA1GWqW_Q@onxDS#9)`(8qd!-KCPg4|WkS*VSew4yu6 z%~_{8mTa%PS$GVN4E#(bzFb1nF|=c|aRDL&u%(e6-lR&WnAE_D=x+V{7`D2iN!eKJ zB`lgQ{w6dTipI{3TRED4KjNWJtFT{YxA za0>`Njq*_x>+Vf8RS3L4&dS7jGa!X0nI?5}U3r67H`kR@g87A(7A{U?x=y{BvY|1- zsDBQxKgh-qz}O&rsu6b=9dyM1x}lafnx|@nJ*cFTlV= z^8*?+e14U^BbhAoSdA0VXC+*m(sM6fG2R|%ILVaY)_id< ziCJ%B?>LRPueT#o*>DQn@)>o+F`oy+P}N6S_ksgRCGT%}^^w3OPFA{JWPSchf*OQ> z@VQR9YyvS8QxxuBpIAZ~BWNzZxn4*1-3x#+(E4<_8f zpO4COL|g>_JBAM-@XNNx;d|JOp7ou$5pp8J%2PQO=&(xJ5bbo`iz$|d4ecVf((eQd zm+iVs_rZ!U?E@7Sl7hG7Bw)bLGV#HB&>mu7tz z{L+yBFh+I%9pC}t_!LD<-vPr2zDWneNV1xwY2q+~B>X?^y$PIL*InmZdskO4YPDL6 zWyPtq9jjZB+qU9(5w?*mOSXgE)=2HdX~$Hzx>{1VTHW%kYRjsWh_Qng2AhzCu*3nI zK#191CJbaDEW=C!6ZQZB>cfWz3}hxeW(Jr65+$+T_xC?{t*Vyg1enjfHzn2STlb!O z&i`!x^FRO9`=q^JsP{jftt&*vCncy@95|Xb0ZEWA?|lx)8Px!C-j{#`FPnIRDVi-r zuk0Z30aGN5Mz8MIQuTF#ki_6fH}lNFA;AJv?$>%+`c}=eX5K_5*yt&jFEYt1tVbj= zp%jDrY{Av95FpO;jQ3vPE7`9c5H+fO%b99Fy*glhOGG@b*EM^9AKy3F1PupWtIB-|Ve#G_Rh&*(^T4soATDazwiOuszw#6Fl6oW6@?m_m;&= zEdM!T$o0|>nc8Um()zY4ttIbc_TIL|SNXq+cbwj~NP0mBnDLF1 zjo0pTDuSWe7kc}OD|F_n@D3~@?~Ban1o{>xwrQ@Z9&O}83LP6cQclrt-rte8efbH` z{c zK83~&TD6q}=PnEM{T*i;2Bfj+10h}4p6Ei-T#{>R9!b!;@=bT1uZuhd#ST-t*(Dy_(rbClQb@bkyiMUQa-$~OMQ zAR;_mAn`SaM=nrQri6Ovps9ySPPq;Aj+pN}>Y}(f+QBZX14Jf0c3$4fD9WHE2_%4m!dITeZ)rtcd2VIUKjiV z>wKH*A(HcM)w{h^8=Qg-&B&oz`{3xsK9$IqVd}?9Zd2M@uU9(^8!mEHeO0TfKxuNO z)?eyaLh6}4d`&SuT0#s|2K|h{((m@wlPAxJkMef1dXFmkRwYr7*p&^zM!?;mM(`JI zwx{16vq}){<6C>4Bw7{Tn4BG%&p&kZ1DYR7lxW5}F!3yRB2Q#w=uc=)^O7KSXZ$&5 zpf~I;G$cnUJ3Ap-2lCS`I(I4Oyq*VtKcL081s3q;!$vtQ^&jywhgYs0tI!8aVj z*Li65HeU#|ae=16hwYIrp65gqvDBN`r$+YYeg7(BF zqUIn`#n)={W&toto>Y310ztAL!U%n-Nbp8^+SCb_oswO36Y)A|Nn+;mJHm&W37Th| zNW|}SCn1d+)NZZpPC`6K$%;8!tlehbIizw0&g54LpOaAa)xy)xen#_?^CxrO6tOf* z-P``$_s>VnfZj=KZsSUy2v+2o@@(QziiQOm(W3saJ+q^%2QwhmxH@)neE=dQaMNLN z?)csAt)pWmDC6KrnZi zpRl`ZlZ&vcO%sij_bFjitHi3ai7?Ww+^bc!_L_htTd@5v$39rVNZ-4p+qi3u?&E7p z;q2Xvy?Iti|Jjw)d!M=KHvij;1gkLJ3zKip%p44~?`H_M1d}?hFCxjYcx(uxQFD*{ zuE!NyLOlj-ffw*=jnp60dKdZ!*YI8$Dfx0uDj#yjj53|X$`+R-Do>m&Gcb$f^kS)Z zH(K83XMP|)S&&0xG~kTPW46lOCEc98VoE5H^cKXWzKxAkG$*uS@6*7Lfnb|+O5-2h z-ow{O#Au@ujWLaaBkLlEMPm$P8hEl}^{z3B&Uoe0wP4e}d^m(H-PqP%4;<<6kT>~a zu6>&{g20*@CAL>?qsBu)!B`&Zx3`rf0l0wH!n5gD=E5yGV-sK=fa{+OcM$Y8*(k-p z8qfS$FQrPJy%72L)D&^f7npUvx{svxfnR%fS_E~>CiIX(dAuDakF6@WK%irVuEWgC z6lmrS-DZND_}`gbp|^zVhvj21!4k*NXgc5k)wk*(Ft@*IAw4F#8g1#E(xR#@&w360}o9xe9oL{0C@-+s4|TF7?x$Y1$Xbh3sy!oY_g!I z-|%*RLb`W)g_>b)b}cd11{8l>oQD;V%EC$f^O>O!5>qQuBRpz=+pHLk4awo~4b%ru z%g?nqqySEoqy>wP>OAKsr&=(!;cN&2gqOjXG11Ca72qFU6)p^O2Gax$y7-hdFIPgm zI7_HUiaY*fvI5mPO9&SI3E*mp54_Dp@E>3^u(3woXHn{?4#l;p*dnOI@ns4!1YHb| zoSF=45#TK-PT0m^3B(k9u66M!d~jjwFkfXg5_D9wmUf|f=t2OrXJ&N}9Rp=XgUFi9 zB(RuLzV>zq0YwXH%Y#{p!g40oR;=x7Zy%=V2fGDf>=+R5_8q62YZKEud$3D<#>>m2 z3-l)ag#qwrY@|cj&_%M(03-(WIZ5AuAJsCc1Uu=J3o6aLvqg z)S|cX&Czjxp1_=IRkfdIbh0Mtg(|c@KvlG(?4Zu@!C}PNM5C}0qs6QiVBR_}Ezdbx z0XlPobQ{fEp68BlzlncmLwfU(PMvK52HX^2?&XCs)~8g>h>&RdX0sqJ#m!L8alPpW;Y2m%6c*15M+iPbh{RaH)zcm>VNgG?hFi0(2E#~{L!;)8Iw#ju zC{^CrdP%G!x`VK&id|B3u9d8uKxU*~JOF-ZSLOxy`KZqSUBG(4Zqk}<9dy~XkmUly%XOtfS&9j(6@DNcwI`aEe z&x;sIUV4FsLYF;3LC&S%PwGmI^V7+<53c+g>4QGoZ||!8QxFH<6@vA(YXK|{&6hhi{LL`{E^@cuP7UW` zyS;vUSCV{96w-hJp!SD-KvDM5Ul@;$DI_v1^kd|RnIGU*J6R*a?A56H`1*F|HYJLu zg-+vb62-GNLC=~B#$&*-Gbj?DC;I($6E?q3A$voI9!F_DRJqS3H3A&8#Ny&GY&IwU z;ll;o6Uy?#5OG=$NnmiD&p?Ry8#-J=wY!pBkW6;~jxjGeN5E52Ol6KVlpPjmBzshr zQ$Xf06#^PNOIPRRe(?x}z|S#|+un{H6f9;mhX<>$17r;4Sc;kqpfp#g@!2p!5;o_V zopb{C5YZ9fF4)Wd5n#3}TaKvm#$JwWKIoSqIziOVs6>Z<1PU&HAqyjTGz1C_syvpJuQS(PM>Qdgb%u~kJ<~8*p){ipsavnX+mlM>^RIJCGJ#56;4)FaPdV7F2Mv>0@ zrVr~*H{!doggoOL_t{xLghK_e!_E5gq()Mg_q(e1-$&3>LSqQ8wD^JFFGe( z(vDU_-nd}~7Po!$_iMpm_Xg-DmG;IdWD=oJ8@e)v`vq~lvTE>Tq=ffBUN=)s6fem>*nRSKU>or^;}qZpmX|32Bv-Yke1I0b(`e3Iuv6}wJ{DQ8;Gx$FF=A%7r+pj7CZ$g$5u*W zQ4@s9ZYnc*tFk-g0*xtJX9nAc-L^ct4?}p(NP{=K1MNtk(9iSwop$Ra$i#RyQV2 z9JXdfGC69-D%#xEyfrPV)W4>zzh?h7Huyqq#|u`V7MP3b?|>=wLCR?5PMofGc$?OG ze|rq9_V)Yg{OaD|qiX?W?UyRGR6-=$J&LM%U|5!MY@-z(dtGeUS_Qc>t5hC~RlT9D zNA!H{*%nqz)v=1bYcvSU!h!A57u<;u4gMAjV(IF+d{dTiSn;6 z0A*0rT2N|twi%-ZigL0k14!;_>ju4HL#&ZHLc|NyzVvKZb63>lB9lyZS_&iC8s4F6Dx@zx^^J%l_ek*o{@w4s?tuWpSUkixH>u-32 z5s{rf1HAu0M>_BAo~d?5V`<6+!r$)=C)fH{K2nXpLzZBo-P$Qcm^$t_dK^N2v^KwV zbX12RTV?1KMWDajSOo)gm?EOLaJ(oZ%km*}gi+JO_Ce6Vq0&;DA5-l_L?veDZq86d zinDR+_Kt}6Zj!suk%o$jpm@1XEzzkz8FuQrSKg_!Kf$V*q9=)nUSBzB9m-+Rb*!Ck zeE*gBFqO-VSijoo6l9$Ac_HU8ydOx5-3cl1+{&qi*z3_LRePRd*PFOG`O328b!@bb zI5bB+2P!Km7OpcG$Vt5#^`W|4LuDm89>U4_G5ChN3HnA(8!MUVwvTU_(XG`w3*vO8 zEfu8TO5u08DI9Tuk~%84b!o>*UzqP=*o6yDQ0s%I9BC2&ZO0=$=J2PWU@YA3&y@$y zNn{ueV&(B;w3E>n7N%xhY+-8jh03a|4OI6ISvkSvL(vbuN5C+!F^UG^URgz`L-jLnHkcr2Gt_W>kmHd0fbb^@k_-iqy0=Me3OShP_5@U!| z6#^z4K9oH?Me&0UoiIsiz>AI=X@gIDto z$pu0uRy&GP<+ogW(@i%;9;Z}!jB`vaPOk?Y(ZH>))uMiP441G2gW8-A92ownF+D6d zH(|XNp(G;LRmLo@BbR3{3H!C32eKw7_M4bOf2QeWJdpJx$rv$T+XS0=#S<)q8@^N6 zQeu%x2gvlbPA;J41;z48=hxa(irF64qyf{%O{B?{dN|*}Eiv^=<@sMcs|12RjSU(ij-11RWu+$k&T{P#Aa_s6{dtApzR?TX85ZQZS%+ zbv-Id?L-YgzrE{}yn*EFZ3+SLe()kEIVw2>KXiCBKFwLPv(>94+>enUbaN=ly9n&L z_Ut}H;rCMZD?*qeDo(D#)|n@Ui_rAR-420XfDSnMz^GQuD4|5lV8LBNqo#cnLs@Rd zvUDC8HNTwniFtP$@9 zP0=-%wHC;Mt_vgr;UX8vja0Nhwm|fI_PL9k)Dda$f2Q<5`;-Pj1S@FvkD06La)MmS z5V@>KYP0nfslI7F)w?|6+Am6^Z6jENYbL6QT=b4^(=%QYOXS}*nVo&*TDtTt=6~OK3$5_ftTCPZS@7t z0o{3Y=D^CzjL2&KK5(D4>VdY3AAC>oK$;qaYQG%qFyDpH0}swj z=;Y&il2(lc5B!dts-b4F+drW5+#)HeF>jKvkvIK&Zh-Y*uT&*X6j>@A&=fg%2JO$~ z^6MwAB@(zHS{;#11p*aw)0$ruX~r{JvV%$DPf4GZq=DMeKA_ax4eA}h>w|04IVj3h zW`in?NjkfJ z#ouV=n*y^o=%XtuV?n#5>@76#fPou!9R#c|s%K2x(ZiGoZS{4WKy)q@=s{;s;P0zm z5+i|;4+b`P%eHnIjhrzTEGFW1a`rB|_hPQ7f4gedmYqiJ^@cy}`lekIr3*`EWC!+m zx*mDDgYCSFEzuK8A8V%{)O8!1PA1IX9_(|7F!j5G7|!ydKIU{QkUg4JyDY7X(^$3V zko1bbO7th!=`k5of}Es$6LP3bGkc4yxbXss*-%m{_#D}c&x}y*zR81o_kC04_Ivla z(9u^>R=d&iXUPAZYL8JZSWz}E?F1+k4R*?E_5RwP0d`a4vq5h`HtYA=y>&Zf1-&J| zX$TsLAUL02EKK*zD-4_S`#y;?;6>UwprMf&<)3QkM~ zb*dV?k8kZwB$AwIA}C}E&RP(*;tIgbLs@g&(eJn7LlRdhILle=sTUV}&1KOcM6;=S z31i>8>wV6QlsgQqM71wwC(R{DV~4-6U~N7aT4_e&nE>-^!^E4#=K;v(pmUh<8~SNZ zoW4z0Pbe|n=cjb_w33f2c^}D(zFhNiD6h7u+qx`_B(@s39Wg{|?mGzWq;Zl#zUwwUj(+2^k5-q^JZxbSLKi@lPxyYPi2Ge74Q z;vLk7O!PLbNL#WZ#e>27AlL2d)Sic+GAgga;$e_F-!426lc(bjGr z$I;ewe!k#bYJi}6xR$>{DTfpdSy`yX>0U!tC6HB*>$*7Xs!`o%=;>go%pC#d-z_63kO|b=>Nj} zg)*gF)PnWyP`|uJN!tQa=lqVqPN9Ox zO5EH`<7^fGcX$}ZHw3uf9Ixt{WsjFaL%ZhR0S&R=qXO?|mB8xG>8Jcs`a zP?tjB3TdSXerrJ~t-!{JPRE?>T<}|WcAfA(4IT>@nsAzWQFZC-J9ed4*ae@4dc~t1 z{x+avv$3#DMkA|N6|dI9GU1VvR)(K-Txm{i;9Gkql?Xj1;xG{^x0((d`7vPI&gLMM zakma)EaUJ9vN>=p_)u9i-QzeZ`Xu_GU)z3Hu) zvwdg#DY3uagFBFATpIS%RhkR~%>i$jk_Mn2b2t}SZVps&FIX+$Sa}&Id~yr(F(BwM zgxrU-yn$*Fr+KA^f~S8?bf+F%`en}caD{WjX0L;UJH_RlJi|p{Gk-#E2e(jCuc-l* znt3ei`UnpU%(Sgw<@fM*aZAdaCf-a$s?rNM74&Yd_Ypw1pSBL-2c6);E|=UPo*k4E zlV*=O>nt5(`ZjyEq()NBK_W`&H;(+a@SLyTKRm;MqVD=`6Q#b|@6)|w_sG;9q0};V zXY&buic|xfw+o%7-CAHK;A@FwqH%rl&46N!luxdLb#tta6{+z|0y7tjU*&y4<;dG! zV`QhS`Z+ptszenTBUrqFLLQlGGmCF!M1WC{qMt3?RjYR%mW?=J^Uj5|)@Cb<_W%nq zY|F}={*A9|i*GeOEE1kI;fPBYdbnS!c2LPWl2%T3rmeh3T$%dxI`URxnWuY>F5v9L zJLdhE+HkoNt@>6U`hQEabMuPVg$uuI{o#7F54A20oEEvFP|c=y{lLZlDC8jYWtNb5 z43qb{;`u^Op6KLvF2}zi?#f}61*bZn%gHaD{M3!$Ywog)(8*9%IWk|(P~YM|mAyLel?EFBFZ~y69p9XDRc4RksK=N)N1%8GOT>fQWz8 z0ekq?rbq&+H5maNM6cs^4)iaypAp)ZYpv;$g~^f%^qOI^=)_^$9%erU_0?^Mh~zNc zB4Mq`cQqE7*nD@HAxF6e?kJyzZ{$n7myswsXDP8g2{zO${54q0SAk=W8oyc0#idBa zM(Y(T5$TY?qMi|JOiXCU`et!jWcRY;IPQ?(zN0|@SqNZTiBrN)5pP+p1H!Cb`X>w> zW849to(Z_KGcwYEod{Zz-dx1R-zR%_S^bM;dUQp$`r@+%?DB*TUce^Z>v^+hLiTQ) zQK~-HXG;86v8G{yc5d`#;{+a=KR){~Y;d^)AhRK#2c}@`PVK^`B+_6&$$)Ku(ypa6 z=S691moBwA#0$rGe#*HPp)G-PmS7YjQ9eUuuZ3HPsl&|7SgSOCr{^7)Wry20c39UW zYV!9D<28rlp$=ra5R)umIs-JFqtIaLkC4$TMr&A|3YV6b^+i~ge3l#)Ajk2$P(#TP zw!2&qpoGAyjxC%V1;67Q$2#s}f+;Vdil@B`zI`|&VqIN6zH(YT)}67ZI}RV8JvA@m z9>-=4L0hH!R-*mayx`C}2a{uhFPC?OYMwj%cv2yEIqLRTGM8tU&$xMjXA8GjnGkLh z0Ysz#(Tq0UH?AI*RxwNR;euH$)Tyb@`mD)g45q8IM^+xjZ3n+kOXrcl0n0pWZ8&IB zUadw1tIyY0fo*Zp{2G&^-hWGml)FUTJMD_zEkN=I%4 zPj;_+T`+mvD^{6_(xZyH>y!D$wz2AxMO$suI(Fy0h?24EZoGz&9B*Ez){l=}f890X zNo_cSl3C9@;BxyJC9roLW~C)xIm5%*Bek(dOsns%Wx|b{7a}cvP-?g0!r@bgHF#fv z${yhwd6oOXOV!22y#L5V)N2NUUX0#%cq`eQsE6j*(8G_e^_}Bu^oNcfay=SZ=A^y6 z$bv4M32c8V(wMGPrXvEOvC&@yHj3i3TaNArDIKQvsp{)Upt~^m9I*Q)H(WIl0$%KnMtDJ{pU+R!#N6z;j}bbMvqCkvp5V%2PJt7c6LAd$32 zIgfCGZByn%Pvkw*rWXQ_pW>PKue1bY_~WfbBi99hac((ic!$V8$#JTUYxW_P^@I{l zF2}JxtfKGH&(A11t3+cI3#cR-JjN%9h;z}%uT#acP=Q9?S;!Q#gD!*;_7cedOy+k3 z?^{3f*FO3iu06SV)v-b0ksc=kh>Xl!fTU+Qz&3S|$j<&}UOB{$ESi+P6`SN3&Xa^c z+=ya(s96usiUh%zog;BV{n6z)g1UhkM1e{#+))B?L)Y;*$tA~aoFvQh=$UqhKwt&O z=JpK`91kT7*1a}?hvT(95>rV%w7R@3lCwMLV~Tqy!sO(cQ)gyo#$g2j5qR6DP{S$= zVDzr4t8+NvTCHPnA<#_Hy+8w|qfNUvZOYW}FBSJ6$kjGU`Y+2lg7$Q-^IK)yo zYr|pLsd*jY3Rrc_Oj7|9m84H{F)^t1<9Oo~In5H5V=`!H^p7~$ID?hgKuTg z`vWGN%?sua%098F;o`L(TdD6ZLv(yhGx;}|tKOT1>wk+YFtg2X^Sj>00l$*x-=_s* za)uG{zlYK+y%O6cr-oTv+qDKP%5?a1-HFo`>9B-12GL(@%rA$(hfwcYs=DBLTw>UR zoNijsJfP&QN*+}5%}Rb$u-ek&!akB4^zbe41vF=z_hjnH^plw5s@{F@}(+tA0V%t?qFi}K)Cdrbq6-iJWi`03>=QGY_06^RdzPF!|6g| zP=h5H;V}*Mg)N7|QY)d?;^gaM@17U0>jInT^Q z-HW|vm^0=sHC%xSI~b{Dw(aeY$fq*CZLNk( z$LwQc7MAciajz>)WM_^hS7CK!_wBQs%O92?6t_Hr2Fq7~B({_bz+(B@zzGW~!?TJ3 z_H}^MwxwMFAV23nKS;?<^#TyNjQ;`vwe9NEh_UqCf+=%{rch{y;D^odupNZe4^Q<$24%J_b?A%#xjEhD|4rD5+H>Z}j?I*gk>` zBF7?1BQ_hlIp=a)tICpin3QCL4N<^;G16+H0xbFvLx z(bdR^%>Vsbs4FZ_!(wjA1GbLXE-S+BZGQhl40qFwYhbvk@$59g86%*)53?9u=o;2u zoV92R{AQjG3%`i3oZ5Vz0GA5kQO%GIMSJ3C}pt#wsl-`aN zY(S%s9in~I(xnyTl+2T=e7%UIiqmlyu_Vy&vAv{oO@u>aWTY8MX-z=AF3cWVUa5)K z$;Px=n>}W%BTb43iq0*n8&cX6y)ZV)8MAyFIImX6Y_-k*g2OO-Ba$*$Tb;)t{(|c^gn3$?<4wiE2GI<~X$`2IR%SHY;cpMR%<*d>1>R z5tJ?&=*FTlU)sIOkPL{%(RU zfpMk@7Hb8Qer86ylr#sxYC)^H-`TLJAa&3VSoL!!mO#ZzJD9Vu=M`ec4kM=b7SU&& zg<8lDci5Pjkz&M{oA}1CLjI~>{#zmNNsuhRne_SRli78mZG)lQSSh?5(8ICW65sbhaz3hb zt*ynDzX4e|~oY^M5m}wP*741ox7XQJm9>2G}s;F4qb?i-knfjdmN*)%<#3YYK zvVc?peb~$D8RQ8_5Ri`L0vC)XtwzIEl4z4m_xSSY#;%Y#3^%|HfK6lxdB9Hw{B|E8 z9II%OjTc=k_RmtS+n0YqS0-SY7sw&pfebr&Hzpjk9bA&cquRkuiMl8a$w9Or6Ee!!Kr@&Oe2cAzHv!a5%zf zPm0ZT)SK&sviCkORr006S^BM-S?W1iJey5(lv?b4I;SA&Pvu@9D6TPDSRswG$ z#mNzt96L42>y<|D(^*PH{!fWN^%OzXpU&FbsG$3d=loGf2Xy-MZk{0Od3(2id9+Ku zo*-W{Px<{%WpY4N$u@Jqo@wU&7Oa!vHaf*sYr)W2v9*Jiq?XpBNiF!1v-|K1f+CJq z1wpY{SR8(SgPu~tRDEP|W3_Z5&-ELdJp@575~#MgOpx`(;l<6(Vr6p(LlHQN^xu{$ zn#{orv-yPPF`b`60#~}nxKUF~qr@poBP90xt2I)`Nt(2aaoHyCk-@Rica|=!66BBpRT>J>4MCs78UqC>xWh^>MaG&HP}%3 z|F_iVY2q|Cj*a`K^lUjH0_1@CF0HnAEBR|>{(usbben#%P4OS*9%{6gE0fLizvo7) ze+8Z51>%iK8P_e^@FZ--JQ2=tB4tVscnG7Z;Y{O-#0=M_n^5I-y1jE$5q>o5!#;HK zaQcpU_>|MTcYP4#3L{wEv2C2Y@%;5~E3Do0gqcmsggr61@b~;V8k-q&2=*I#Nx? z3(Y7AfPLJ3iI+sigxp2$7Mwb8j%q6ThS0YGN-Hm>f6Y6p?$v5&z_$weqqp-Hq8zqG6$S^&i zko4hg+k%LOYuZvaFakV+*r1&5@xd_|ypzFffi2cHmP>kcOo{EhwnNE7=xGh6%mGtb z?M!mvEIUwX>i47VT}*H4!z2?ueO-^_`qA(o$rUgJ3UZR&%cLE%T&+F4ls(e~lnjmJY6*PZC)Zb^A4 ztuIkpfiem=Vl7tfZxV~_{eos_aeZ~b=#E>fg9PkehvgOS-mQFDSxr^fb9b11eM7T{ zbi{gOV>8S3re=;(N@hYredC+Yy?fvBd0gp$9OP_;zbFS84I7H1Ok17!k@Gmof%gGp zn?Qcj?PBjX_8v|*6DJ|gHVQT=uHo_mx>2T}5uS*U1elvk)4EY*c(*f+nCRf<=ngHR zN$-oKX8)9!*vwO-<`46?CPw}-#^k{v#)FYyKIEF|@5(#`Ysu|!!&=#Yr;?J3x>dSa z(v!KBlc#Pyr|GLDTj0!4Or0C8n5qi?@2%Ytk3D*&D@e5fqzE7#Go*F-5~S+fd^j}Nbca0Nu7Jmng9tzg2CQuR$d)IiSjX^90E|lclA;gG{o#npXl{L z6Xlb!A}0C!djib#7Q6JDL01BH!#_D9zq8`cd;h3+9wTY>h9sf|_Vd1^C+C!WndDr$ z+{oJ`GqX4ECGKH}qs^|>!v-g5vv(W6oHFHG^qwi${DJNnb~5xReCN(n-=(WZNm^ON zlQG~!PXe65enjPbf~1w3#~ja$+)%qQU7rff@96>T=qmMxorPPiHK?EPo}`k)?dbws zcEU-v&!NHOxcsRG?Tyru>e-a;KcC4AzLd$z5Uuo;OiwP8!$hr!#?PQ_ge5ja>HiEv z;O26r9DB+6j11b?_%i2liOse*lJ>rp`J2F@nx~=cMN~StZ&*m3HBP)jt#79>C;e*S zGVjBN$-u7|*Jr$U*qKatEbH)?!%p5i>Z}~YP1u(*JMx?*W~!+C)NxuOtEw2D1G^b! z>J2dy7|mfJ?>*H%a8N(c3>ZvAca8m-E+l*3jX z&S~#kRIu4?zFk+3DoJ8Hn?{=j(UsJd%Dbs3t4hvRxuQS$GKtCOT~FO}${u_uH=25j z{Adhn1FvEueO98st%&}hZjNS7l)SM(^jC$tknnFY_dM)?7i4Ul^={Q&ZKd4H^ESuT zde34J`lQNLum87akt_d5TA1`Qz;nQndQVWf_XQG+5^bH2sGm&uu~}Cem24tu6^~X3 zNR1Dz7(%&4FJ@Z#qq6I@V%oZ^HCjPgKEVGH<{~DlugtA1Rk-a=e7C4KhbSo}9!w5D zG`S%y>8$q-`l(}bi3~Eb=VmUnTv2HS0eeGLkgtdzBPom(wX$1F5%MQT zB(yJGUMMuC&>|DySW0I0ScPP&nX|YiIGbyxuwegfxIbBOf4u9f*|WLjDqSN=E#rN^ zuEdk7eZTlVDENOroQ-#4`<}1nuy)VZdrtI9Y0+yobKb*sTmv}T=WKR)1P2K3SFN|q!60We?2Y};>W*#`Ngc2KU z_8eo___Ya+QPE&(S*h@cAOTtr{rW>!)Ca_eVi-$}PwaCYCUKxsQ4S0U&5BO02_2JI zr%Gf9oKR&v8H*HrbiqRbMCWIWEfsKhYzcnsoC3g~BFdI~VLYKU)viF_Icj5LQ#;ER z9{Di#kq;7x>J}`nxOX^GYMeYUWk~egE^)15`b*9zk8`+foow`ybk-8~^yk*Ky>sqH zQwB2`Z^xTDQm3m(&)hz`(@oDFHLi0V^ zIT}}Xc2zgZ5Ze&LPS66-ds=2%9*%S|7d{apH$K_Nl= z3#`dPxB`3d7LjJyZ^NNUzS(0d@V1Ap<2_*rmGKM0B;@#S;Ej)P%4B=07r`62B4YjK zy!SMV-g|IK1m7B$L`Clhs(BxGe1y9R++lSX?x1{!Jw8Kj@DQbPN_-qz3#3>A8S@Q$?RW9R}suZuzxkt(sA7p`HI z?ez4^;aUg*su|wc=X1~=IGDs82P52ZV0tL@c82qU8kTm3OT4F;VN>4InsMK*#Fm1V zDM|vikc|A-u4ZoJ*xG^}Cj!EJ(%5kzb`r34rd7ytvOP~H0q;9h$1_TvRbmUlw#Dz% zPg@enz0rFo58kCEpglZQl-R{h|B@UXg_B#8J(n3gpONE=Y|fZkL)m_oiIxRRfNhGB z=8P4rlKALQBV1!^K%6tA6PbYKKAZDtcH=a#3fM8>x8_7~SM$&0m{<8+s#zfXT46C; z$<%R-gCCa^uC?;qb&C5vNrG4Ohybu-^avMrjPA!_Od1C@i6gXn0T*!pgFjwfn8LcM zt#5=eKc~J?p#}amUQ;=V1K!H=NwZq*hAIg_u;AH_o#wp?uEo&dn zIoTI7@3vF^c&1S>HN|pcD=P$b^1RMlGSmGtlf$`&3)(bh3w9UkYUpVniccvqAa z`d+;^q|yq@97<0uwZYsPNc8OQ3wkj^QXtm?XGbwrGb#NY6pJSUa>%u=GO5;?{Vy`B*~AQ%uOspHG>)}vC=MbwbD~h|uM2x-z<-y4$8&Z0 z6&m8NlU5Dk7YLf^vGhYjb+ED=XDYAp(=t`0jzsXAdMZ`T;qfQGytOJyui!0m$9xru z>$aR*;2C=ctAJYWMv~WKxt?tno-g>A|6%CBhvm)4_+mxyviOSyxOG2K?d7~$VpicR zU)mMa5SFH4@MQSm8xE*zT zE>+h*p5b~^eSjx}kF$eR)-8`H*W$Xxp|id90emOfUFYuz*#CmrUOL;?EY;UrIfv@Q z)!}AoGxa@|UjAk7Z#dCInY)^$W^r-Et{1Z~n?06VF4bSvRBHzw%e*=Dh7|s&2EJwBeqRUl zo#}^mh5eNAb~cO8U-kk}Nk%%pd9v|(>Diml-i2kfJ5V|?JD=HdH1QmztiA9K$DT`I z5lv&8ftrPvk$^+sdU2?f#>Z*WTj*y4b%`P{#!7;Tcd5)5f$Ybe;x6(E5 zZ&cFTXtwuJEo;8vM|~k|yn(MRYlq^`GIyKlOHy$zskLx~7jP#0gi5pAN(IHt zih8V4kvdhQz(8}q7!~nIj`0@7syBb{#;PVcsSPAppO!+=_j!hTscc0gEk-|a> z4yWAnA`W6VlB-^Mz#4=T%F%#-;v?+J@syo+C|&q!A&*lA{tagEm6egJFY!vnC56SJ z9MD;COfy^0XL|d2lFO744H6%A^BPmKONem+7+cZNM1L=B_)9^~Upa5o@5Fkd$xMHr zMjPfrY@A?+L*t!Oy<_lay-RuOrkqW_r`20lQ&?SVb9_?7BDG$HW{(k3>OAj<1%xWq zS053IdA{GoxAvPPK5E;|A!bum$0b-N4?POA1l1d3z#>coaTng7KbvR!%cC%YTRvDR z2VlU!U-Rm`d9a?YnrMhO`(E}<1XA9kyn$mr`Dztvt-aGP?IVWXbBhqCRkq7#5Uf?# zu}!kcpkPyYK}S0Tdc0M9JXKx)O!jP{-ix|Qp@RAho51kw3QZM<01r5rvr3~5c~P{0 zV)CZ@q-WR8(6G5%-j5rjl{546W0P8WMzM4;6jZ5^U;99nPJaUv!cY~^G}@(q7^$Gw zSK8|iYAxRa2gjIUI-5;Iz>jSYvY;RKz;-?0V*5gM`-3sP{wb90T(Ef|I@cgY?_+Ny z9Hlo4?u#g0Li-@P1EmrR6MM^YH?&p@dG z*`iGNW*?EJrorGs%FkCX(BG5cI4ApfEa+q@5brFHsjtx`U9OMQM=*oNLvK?f&n9)B?UZi%<3~^qU#M{&#^IIm@%)GqZ}aAfGBkg7LMFzh zcxfYimFy_c>x|5`V*TK>xhK5u5F&Y&q%p`Gi(nmV6qrvBj?Xk+_ z%|c`EUE?MSE)&A|7ac>llgU8PP0iSor|Js8TC3yX68{=yZvyxy8*km`2ph}iw3?+h zs=2e>CSq-SjN2i4&!&RY@II3Sp<`^kXVgb`?ZLENNMKQzAkyfHcj@lCNm>Oo!I5x#ri)@! zh0z!0!pQcBQ+l_@v#r|BeLt$QzefdppOWuYDH#kzlDmg(FxP6QxRd;;jbbgJka9kU zWM?>&$z{Hr$!ES?fJ=vjR-13zeR1YYTA`Po9nC`nnJMt)J-au_^kF270?aA!Mm!X$HBVKDo zTI23r(-?PJWkJ6QZxZ-4Ky$Q6ue4R=j#z#jt`S;o{i&ahna}%uIRj zZTo`SterxYfrYc*)UcSBX>!DW1P2B7(xHWk=2bW783m*t7`%A_y-cy$)V?bRb-h9yitJa)Cf*-lgjw{dZ44fW=afl8cTOPPzYKdJpb_K;bDZ!Cw| z#}RCkcrR=`urpV9gG{couX4kqNf*2(e|mB_ht51|hF5`fcKO2-|V;!@Lr^21t$Z&WBgFTeaSwSah9Rde;Uut zZUd1VvM9|q(ALoHweo17VLNK3pRy>#L5MK*$(1Sw(T)RdW(Ji?jF4tM#G3AV5$W)t z81o|%gdG;~`KDPsRQe2tu=~`FvHaa47Kc;_>~GPq7BDtZK*I5e{Eh^JqrYyKC3IBi z@e~1Er>&IBrnpyrIIssXlfy2qeu2D=F>Qku7qLsO{l~D*Oi&b~x-|+_F*Z8OA5lz@ zPoqb;7AX~@o&@;eQ?m*X8n$_CRCmbxHr_U;B0I~xYsB{17^$mweUXBhhy;q^B8F;M z)?)M}>0^5{6P&8k5sK)l#*O-x!K6 zma6^eNlxmp$elhN7Wvy>U9ZESx0`}z@1~x~`O}(QK5dE#m2D=tW?Fa%w-{ zG5g5X9vX&~)1`##sm{WE$82FSn3S%bJb5NmI0xae_4v+r{mcnB3OX#f!>(3L@ZkXA z-Bs1P^_#QZ-SJO2VRgz6&&LjBl_O^=3)M094UfM>QnND5wvu(-X>Qu?e#qq?+pYq( zj|Y&*W72`y1r$W1eo0iXj`pj*Zr9iJnqM(*^ZMoGd%r1J{;KegpXUwZ_+Y)(U~|E( zlWvU?3>D2`?Ps=^iCwCo7skhNYvTvF)xJukDgLQoZ%m~dLw^6m_eIqRqm+cko(g4a zb2aSY!Ys^?Vj&AIc-xQ#n+lcmnZ>Eb?hMNvQq;tKFR58nrU=@>y?kJwqeGNMAaGt% z3*NUcQwA|;!V`oN;5|gAzx=ElkB1OThXf<%9@iXtdqsnMPl1z=@7Flbh#(uG_!D;C=`KE%R_s&3`2i~k^46!1@9REB>5A`Xgg102VSw!2XQ2KIeq z`mElR3>K4-%y4gG^BO=W29fuol_id>22t{1{z{6c=|S*qtrfcRQ8L&vS<_YTp9kP4 z*Yp}*dR6;Az6Q2x4*0)l?W(GVlD7R-9&P_JR?BeI%)ptgsZl4El2DY^f>p-LFrG~T zAbk{+5g;phz4U&b;@hj-#e=_&RXG?{iDF}N(RQzi?!2g)UeD|QJyz4Ys3s&gnok|! z-t71xbn5JIG!vYoTy<0=H}}*CPvys2XI*O(NL0c{Rk7v(JdXj?r%S~l(rhVL%z8}< z>zFv=q+5@Ua)ENRtYgYz>B~lEQRbAmq+Tr43(i93#Y|)OKAB3?POX^#O3tX#l!U`8 zlQE1WIZoP7N4QPQ>Bc^H)SD1V7OAg1MU5^V;fPyAEQzY-lC?GHZG8(ZB$hF|JnsZ41om=e?s?1ls z7t|yZqkUdiA5|iE-A=Q|f=X$?X<@~m{PT}+X+!^K8vp;KapSGTC+q*JO>hzH3Qk>S z+G0Wx(<~Ta9GOBxVh~Rd#Cu=$jLi#N z{<-u#N0#T(W_n&AJYtTZh!{USM;u(#fP1T@ck~l-CP&bjKK$79R|npao9+#N4_4Rl zyF?j7l(D`#%rCs&EDlsRFe4wSURm8(-Sm$1^k8*!bqj}_b=6C%TlqUwy|lWGzw4{7 zs$Rz5;p(faW&UokcVENt=o8h^>gC)Ssa{ciEq^!KjNZhI-foCv_A3mo$uNA$i}>$; z)GE9b!p+lBW>zs~fgL1-L1eRI_;BR}R=R6mEVq(CitB57&RD|7ym^@0 zVo)dg*gf~Fl$s{~9pyU*w^qp8{4n(5q8i`J$_htMQkHo|EO#IJUiD$J#Hm+@{-AP$ z$2_&@mV?fijrG8MkA}mr3`+{ZAeZk$G6wWv$3Zk$f2ntuD>iV)N)Ki(%tytp>eiPG>~#jz>n^;zWs_UQ#HE z*`>&g(3Oy^Hzd&m)xd?5h=%dWGY{7kMi8;lwNUVJ5PG~1JF6V@b?EzSLQJVpOBNaK z{hibBEk56DyO;|L%jRS);wy{sr3c&Z-&uZ3=gar|FFQtJ*nMN8VX1M`OGAqIlIYWj z`7_P?2q-Q*iL#Z3zCZQ}0sbiov*_oFX|=A3twchSWT{9T|CU8v^kedt#Ap<%zHzxsmBE zH@3;uK%mB@vLgIj-rgv0_b0r(mO0CaWS%K^iXV0~;%6BdX9M403RooAVfgk62BYVtlpo$j=5)Arx+v(XpkVLiQmyYTUL))3f#BGI!v zG4FncS|!(&N}&#DjcYELA8&3Znu}F)F1;P+r^Y$|w}L3yuh#FY>Q5ayQ?iC*@?r;o zuw7~6iUeE}Ys{+aHH-O%A6@Hfqb{;P##y*^O zX|~m-NNkLYUcZbJxt8wi7L6S%%JvKIR`j1SPxNk;x1^(x&hqo*EQHCG(F#LXTVA!8 z0n*loRPC9Za8<{ftLdea_y$$Ijl`5xM^I8tYqC>KYIEv^j8j%+IHWZDVp_Hza$Znz zK@#1D=e%l|lJ2uAUT> zTX;niOUjZt)F(OcqejVbKh=M}@tT)~yz4TyA-~tgLdw&RJpy=Pl z^dx?FJU?l3C^2P$*HFak`D;Ks{|BhGGlDO)t6O^?B|ix3e~{bLNixPLv-bZ3556ZD zC26%Z%*rq%fhPR1k7(rB7zKLP9RO;Q8Gu)C0f5_NW2Rl9D*t78*l<=QzHYeYYu5WY zLH9`#?L1Ei-f$GXpI-y=_X+Y6d2^WlyRqWs=p3sp-TM?X)!`Fk5~|s)^&QRnZWU#` z9&k%P0=QzXpF$h2?mF~QcO(X0Q(a%fCsi(lPili=bQ`?~quc1c%bMw<@@gX6p$tdP z>*|H)O;OXB9ZU>tEi&vtSVYKRTYgl;{E(M{#Xj>hFaxESt@Jg;bKsIkfyXIrORsX;LH3L7XF z5bcMlqrIWA6=^j)?1=p+gq?z9g#f1N~UJB#NxEs zim|bb22>p6PsVz)WBYSrxtC$BZ#8f<(`B_J6o^F+vpmN9elchKPVbk<>M+6zR{;y} z9!stLf5yu2L@@y>rG1VbB2+J!xg zgJE2HHdzhQ_~v$oobl@IZ1Nek{;!pY)b;LE@-wPbw5a3XN2^xbnOm#I!ZYr!iII%$ zA2IfSNTo!b_q=}EexRwcQ=pf*0PsskUb`tjlpPwBd0T0)*k4=^r@seYf4bO1ADB4P zsA;uBUw!m9#Din}(CI*D-<2!H{}coH@$AZ#@);nevIZT>uI)puv4iq2woK9Zita{>#euGj3!Y~7MeG;(ECJ;AK}Vyia-a)g4}I7 z?#S*{o5}uXBS-g=^IK#Zd*~-Y-Xlp_xtRrn6a*f$agFF49;{u;8gQudAMr*VMODFk)XBjWjSYz`bY z{Bz9&X-L7Wb&g2LIPBrD#vZ*x4rMkgqqViOyym2HD^jeGChva+p)9otArS^v%c7^j^Wu_!)9> zHHx}s`KnvX@`akj{FC@W8c4vO^q%t2E^?GGb}l{c{X13HjV4sQ z-QmtU*HGq2G*G0$qM?1qWXpK}fx@hnU90*uPd9c}8#T%Rj6GbgP!VQU+0 zXR(USJ*t}KNWISrZK~kd;6@a{!M%DzHfi4bl~1Y zZ{B<8_Cxy*vaZ8wc$`s6q*BQx zKi`888on7amMqec;$koNtH@sp%XA0c%d>c#()(QTJ`xb`z4g*!A7}QWz1Q39(|hOPXavhnP&yg?q~a!9~GrT$%B;q+g27eQWl}G7V#`f4R|Ic-~II=z2}{a=do+@ zkl%7zi4(K{?yvbh*h(qu1!pdGwudi%4VDM%*a@(Ti@uLmo}MV;nc(^b@fOw2e!W{e zD2kkXy+J@&f+CjA}z-q`%ERN|%4tKLjd#I~Y_S zZ1yc~JllsKf_GA1UwzZ!X1o7s?r(ATdG=|0uD6gvsRW*0au%-=KD?iA_B@@!OTL5t zTodmKr@pw5dOB^rGH?_>479i(UkaC12c_xUG|ypArEepT&oN!ceSAp-aGxD$4lu!o zX4k=}+Q&|%C}<|i4L5mqE!lD!g%rdei0yIky$QsM;gj~-;K-ba#7ews1vl0vqR&AI zJz-z6qrnGoY;#exv&+P1qG~vUI@*{t#JTV?5-nDxqlR_#5oDY-L=r|+34tDb(m`3I zOJEJaJ_`FR#i0&CS*T;^A(-c@-(Y_YF6>rM%ZscZ{K90fKA2`<=@g~O6lr>65P}5W z#ha?fbqiE;a<6Asw^LhO=V1mRu>vtov^4}`%2~NeN^oR8X5ZzL1JEqX)mg6!opQvR zrFrx$kVkqF*G!ZZ=Rzaeo;U1;#6E1}j3wKA+tKlOy?&~;`|7L7T$?y`hS*rk6D!`a zt6zV$U-i{N8;;jcE?pk{Xlqbh<$+!Z`vA8BqPmHO!ZgEjaYsmuGffCnrHJQM+1ec3 zf3ST0bvIeitgr!uTc(ZfO;q&5sDx1Pkz)CdvLR>U-%3#-HoHaVyCJ2D+1gbLsMQk>bpO(;9(Rm0g5Dco;6#Wq^i*?Ncy9#4+ z;ukshVF79EKxnf>P;c7mb1Gj_T(B{WaLJCc+g{h`IbTtOqlS=;KSMZ($c7U_Rpkd( zUNJChE32LiH}@XH7ot;Ni3T-lr$)eHt8yr?AVaX7t(u?%A~4J4y*fR}Wumw82qtrK zo<_+X{lPr+7C=;P=EbLhM%Ie~X&r%L)5+OoZ0=OL*-kF|O?DAGY2e8i-khSnn2u_c zonlFR32L^Zgknb_4l# zvH!>{7foWCc_Hn5ni-7>0ctW3W4J!S``#x2`$gXm+YdozdZq>uaZK%`b(%~+5RkHk zjQKOWyshJ7;xcWE<^$dPDPA=BOQIE2W3;WcVkBrqzwA^NIS0nzb*lcpSkGjeT_F2- z2w5saxrwUOVWA{=XHeA@?HyKAhm{}@2~PABZp>pKAZH7^3`gG(?A~W+z>66p<-K23 zpG7AY_0-RW@W^dtdVH%pUwleAH>*Reyoe=foTN>9@Du>HM(&ueAD*w@KJO%1E8Y|Y zlgauBOl6a*=DnTVt(=LX{*7KV!@S#dWfRhbUB9CG%sqgO!Zy9q0|SPLaZBDGQIkzs z;#~ZouGMRSsF?5ttUFb!ivieUeE0FK9pouz5=Ma3q&u8dkp4cNMZclfn{4Pl5h%{) z@rE{%Bi>bHy^Njm@co?C&?`&fQ!!P+D_p1o851(bqD_RkmL$3U^v9DYygLTH?z;L<3vaa z(nM;~M$3nh1y?$6c~)xCAi?9GfA=%>^-c5%(KcUC+%FszHFM|?-l&u7;xOLuHt^<$ z=$#S%ex!+KdGl`fPBi*5&EA_i`8~gpvn;Jm6G`Ktcan3{*;2Fg{N@)@oU;+M}N@sNXC;hV7zy-RYY_*FQdPyX*Bh0PNJzdT&b`hiQKFB%MWEe zEnICrPPs{HPUEkh-WcT+%34JswOXl6ua9mUGZJM#lZt$fw^{>Mqcn#(>eL*nGKt%7 z^3-j2f1s-feFa4|}Ke>O06L z^~0c1@aSn}|AGu=A$)MH;|+ci>%Z^J??2WJXBpIzn>_Ri&88e~>SH4D); zi?G^*53c+}DBf}pdnXk6s=?E0?=u-a!|sLLsD0#@5s>1+zli^@9yvy4xq#B@VotqF z%nxI{u;A*Ydf!o)SIu1Q6JqNeP2V5~of%KR2HY>+#G$jXpZ>hQPA=D*s{PMFE_u{( zO6DXY_ZYz@>g(&n^$qor`o{XEqsnv6(62(?4D%Gm7BL63;Q3_`OdN7Q3 zk;mY%Jh#_}s(pS9AfhTY$W1f;^|u%zJ1*o#{r$LZ9(Z4&I{1FtiJvn{9$(kEBP5ge zmX~l*6`k;}eVr3h`1G+6_D(_3dBiu>vhZ#1i<-Kd7*eQ~Is@u`r;^7>Cf)DH^!qQ! z;Mr1^P~I!>vr#y>#Cb?@RPNxQ*T_v=d(Ab@#_A_Nw(PQZ*n|D9O!u1_ij6is(a?aBGAL3NDO_1-t}8 z8fdX;(V5B|SC9=E35H87;2}j?(HGTYmg!45f;J4Y4870O0(i*XP>qNyu!gTu`0#v% z6Sr3li41j$hzvO{wiPJ?k=Z7eZw5EFD3%!`AIHqh+RK`p1{!krEfES^3ac;uO#W;S z1jiTzM-GDHtOws%?V+9DfhFAmQ| zUi7d{W^qefV$){Uvob$P7%Pj#4XIOr)cIhQ0G=>|*%AcPf!mNOy)Y|DmC3Okfd9M|c8!qx~Ib#eX8sfYf=-tDzOSHpF}WxDcT zKpiY7l@)qpeR$D-Lap@AahRgj(lc=PEmxntKNHJ^Awevk)^}7w?3tXoSNqk5@qyX@ z0`<4w-%QKKZ_rK*@5Gpcb8u_Kk>rFrkAQ5sLsG~QkAp1&KTqdi9R|gZ6qn*a$ikTj zHfxxiPGlOHb{rvG{pzwitefXO3-F2GAs?i0;{zaG*XcWUc-~Py%g|)8;Yq<60EU9j>!dQ zBIq)o+Z41&{bZ3A9ruk~wF&*!fhc0Xz$J1#1;p0 zQB!o;j>tkIX?Y(To$?N&#CE`OBKo)#b)w;kgwn=%vd&<1Q8hTevgGqWV`qN%NLf2Z zAVlYo8q`rWr5+sQtj^(xL{lumTJZbboP-4;_n03i86SlOE-cGUnkqF0;we~+#ut)k z8!$pw0>rSw}bfeBe+e zAsl}n=&C}JudE(B9+n7KIFN+|E(i@cthA2?QzKvixi0Yeb{87s6^6icO_pT2fNY&G z-gHvgW}0jp83bTAws{bV-pzD(*YWxyMr<_4tgFE~Oc+xq@^f-K(C~n{KXJgyF3%I3 zEVeSd-(!zz?BHP%$JJaf#aF0CtTur_+IDBrmPT7lNrKu&W7}rTs^cS$uVQ?TmL7@5_5N=qpH}imB-5Lt0|DA&ff5ks z0y}_clXmABBW3I?BrZ`*wK_b?IIXdd04$R3Kh=wC?d_g5F(O;6PySNS}O5v)p zXAp;sqFo%D#GZdOm)8-)#2D$XBKlqg|O9>D*_N=?-OXvTd16SpV6cCz{6DOpMqe)LryVVg=6si4 z>49OYUs3XhN{rq24Z6BY$rwqi&lf|9+2;MWK(uN1`^wO#1SN=+H>`w-LLdhv zmne~nhqq0M3_H9{O7<$bL&=De4N5jExnIejDY2RUm%93MB|kyed08dL^z*a2;z)Jnd251!jWxDqoC08hUt&&q}(lxrWlffQU@{LL^ zSMnMqWhJjxGOFY}ewvRyylpyUVj z^Cy-3xRTfE-Vf=@4ma28=P&WI)pyrPnY|lh!a3&ncgl5}GW?pZenZJ`D)}uXMLiJF z@BOKM_UP)@mDpM9E4sH){kTO*T0bw*m3WfgHeK!4)#bW6psVe=x?NXeTum1$2NWLN zow@9!WoNE$Qii*gT(A6Z)YXl;`UWLZL-EW2R5~c0#hSWHSG`IG^z>FGZ`RK%bv3SJ zS;>l$LrQK|GOH{*bag~mf29U|tFGRm^UXx zRq{Pbd2kE*)!g~s{QpUf47o-N`72r z{FD;2|F}W-u2b@6C7)Fyg(SkQ#MO^_Dz%ll6Z7@ye8m)z{=EwLm@r9BD*0DR4l9{b za-WiEB@ZZhtC9zme6x~@k{KnlN{%R*Q&LqjujHtb<4P8kEGjvnWJ$?MC8v};q{LHF zQ*tJm7(=Xhv!hUNrIRt*%}c?4&42RL-~C^52TT+7G@kE5zvB76_UmK~Uwb*}%;UMY zr`*1s?Jo@G3t5y_)zCinQm9s0i z>x&*Rnu1(hm!KltKhYDxKe!$UQO*@g77<9a#!EPb?(ZjhLNU|dQ_K}NY^w79mQ9-s z_BZ5cYaBYbEa~B5+qVa|VkN$P#i1=kxgvH$QEv|qLg}b4{40LtVR#O>J{ZmvHx9jR zC{xO2Ucx!G#^_6f$DnpH#4B3QTiN1}rCa*nKri<7?*QtX zn<;K7Zc%L`l+{0ICB9Tx$4K-H7Kex=F_<0RuGSQ@gQcO(LtAvGKRa^m@X>x+xv9U9 z+0tN)GTS!6s@;OXX$#T-gW_|WHIIbbbjoj(cJ41}~NM_Rk zAkd7s4H`Hzve8xyy^UD!)t2jK%B9Z-`PLN3EAAXX{3LyDYIG zt!5t33#>)T<^6uMuKuRNp*T0 zwYF7TZMChf*xKsT3n;ak5FlKXn>W;Y*LLElMQZ`|(fPhV`^-!R^m)GD*YDq-FTFfJ*ujht5Q51P@ z$mF?KEC|e-f8BTIUvf=g_9fR|dtEGW>E(g>@oNKDTpOsLbY9?^>n^+ec)!1QRkrCx z_oRl7+4H@5xxbTdx96S6{fPOuTz{tdy=mTP^V@p8_j~j8Bh7vD^(uG6?YEfc@7;XM z^=EKDX3s72w(=WaaJzYa^6mZSoo?>GcfI$!D0|;x?$5nq_FVOS;7A)Ae7?)R*TeVl zs$Fw(?{@o+3>;M4_ZZ)U3_Qpm|1JL&zZKr4d7|rLpRb2`)cxxVfMp?>|B8LH@|Ci6 zdFnNi`%yVPdF%XQ-&}s3sl~p(>mk(Ir=PcqeW^oqk^Qft#J91`=X-oiv2RfB*|+@8 zJH0puy7%_+BHx2OzolUI(ebg%n_^s#`gs;)jXgV#T&;l5H|zNMmt7LO1b*n?DQ)`J z@%s?J1^)%X+VNg7-xD)~^g8za(U)%BXyn<$ojMX=Q0{4EST=4k$3+B(} zmBEQPSw;TvZRIY%`Z@{N|O7nDbRV7c$vri*c0rPZvRlsTfu-b7qI_?Wj^V(|X ziFx-IEmudG?N0N$>N$>eZCgi#E(4}5(~W^(3KeUd*3)vL!RNSBXg%u7ObIyd<-R%A!PBcM=Y*}LuW$*(y4=nsL!zsto4G8l(p7tg z4wj56ikDM8m?%o0z+G{?x8pVh8M-fh1otHc_ZIhk;=NSbp}4QM%}HKfF{9(z?0-(O z?22cLecks$m>H89-FfFvH3M?LaFVgAS&sWkYI7!&X{g=gBw`HS?R4Dd9k)DVU&O=$ zH8nFYz9`=qeHhGqOM9FnSx<8*>2knM}O9gh1l?K{nziZb@U z9w_p)g3^xej)La_A4q&iHNrd=4 zPk)s>t9Dx3VkJ(Zf_m@%O7;Fj4-UXIuM1q{WQKi>1ju2^`!)U5WbFE1s^Bg)Fe0=3 zLHf?vqbTjv?NWDJGWMmEc)|b$RxauQ@#fb_TwUcjiN#gZA{udot3bvc@rxo~y}LVO zf5?TC9Ag7bLv6+xJ!U9Zj+=@to?{(RZ$>zpCuX!^_sxv`r2)kM-@l|--L}{e$32JP zgc#lhu-aIL+z34v>95jheJyqrW8F*PjNMCP<;jr-+}A`u!Tn1hNZ;!u{X>3TM5*6V z>RH!+*OI@alcCLW9aefCne)E_ST=}9>s2Q{i7&rO>J}B?N&ctUQhXqy})30 zw-7ds#xMJ!KseuYYOpvi;yP^&j7w>p+EyQ8R_x*Ni;$v2cCpziL&8(;L_o#Xhmsi$Bc`BTuu#4H?bI2D<(h3Kr1p zZPFx(u7B|U-JDN(cS4_x zJ%x*m{fuCqP@Z7AGyhCiK@F=h?6x5inj{+{?oKBescMq64MdXuFHx$snMks%F9;61 zn>Dq9uwKT#0FHx4%gxMdoY_(D(uD9eE7ZI%6F=Ye-*Jb4e)1=I+>Flh^Vi+u=$Ekr zhPKoLEZTAXQ>j;gtUGC--W}Jc9<@RTi@_IyKFCFN?an8C{ow@O1VT^B@L>K>JTkit z(E7WRsgU$fg|{>I+l)RvmZ3JZwks>p9I|1a9cTzsJW9aWWf2 znT>N2r-xv;Wv@9dg~GEL^Y0D+8=@YSZM-jyGq*DKVMam^FJkUyr_jrWy{Mb9k26Tn z7!m1anBF7-`%Jz!?lq|FX;4`WCeb2xyU>#K7jM9lv%f%UC(HJ%hk4PD-CQD3)P09O zkX~)w*)-UxJEwBVp^h7_a7s3>$;!!UWNvT6m;N8>Cuv`8aNjFqZvob9_XX4US!try zoe?X%IZ_v@j98N-`N9>^x{YCXd)S(|BQks~9dJX_kAdOB%3SB*nPT9X6n2B1tev#`0b;}r(l22C9k8D;I!tJw&=#-I zIwR>QP{KI63!op({Jpx0`5&u703f77=L6NehiL`kgrV)_uaepSZx>$CijL^StZpxgKzncYS#S&?hHX1;Xy8jNJsyYhP<^Th!A4 zls^5BAx*77#y$lg;m>2Tx8KzmT>s;m6-oOiJ9WoUM&-tuE_ORw+nPo=uv{QLChCSN zLVJRZHE~pn|3?d6<8>#6MiVT&A@&} zrP{Vga(dOguzOKO*uAPU>@ENuH&ut-cS9FrS$sGu;)cQeT1{v4$BqcY!4%BdBpG|I zx@=xIN_?HSKQeYdacuKV)xMagpgy@rc$yH91=7c9KBg#+g1XE=Jr46NXJkAWg!%Ja z36sHSYgMO*VcNH9+rBY>+;&sUST>!(0JNuLul-Up!0tI%s2^5**rt;1tKr$Z9oIgL zN$t3wBj3E)eK60;%rg{DAMk{inZSMB;5;502!w(YtZb!t5cBUr&0FAL7=nkRYlAdcc^U~!{NSs)cwl{xWwy*)! z@bbHvOvt_M@kjA2!zCLtZ`Zc9?zDccW{)zLriX#%^2d5wVJ;ugW!c`H?H?TBxPxES z0L4YEI~}WGa0#~=JDPnsFJq6@Wv0XdvgG|$Z9w30*aA50-I*QM5x&dl{uKT~{6+Yi z%HO5@<%utOBza&|dBhzHmwXO0gk5JA3}LnWK=^5XvfK=>rCE2beWk(wM#nukV}E_O zNV?0BenW9>lTgQCZXHIAbQ#9pq8?7k%*v*rPTkDPC4(JzQpFlI=9Fyl^t@C&g7SN& z9lxcflXgn{t_goOLxhwe#J{l$j6o2oE4zh$tkz%CPy_^xVzNY}07ZHyV;AujAZ~q7 z@6lAFyqE5z%4~rL1!nW&D%_f&gOYX(yG*SFbU}!4Z*xXZrafyS|3>Q8BIehIhi?}t z?bm)R;AEp1Xb?EP1botdH3#(%7=`$+u+00am9+msnP^UQ4>5?Ol#%dRQzs}7XvK$j z0=p5vpLk^HrpXJu>88mB-MRKl1}KjvSDNcQP3puZqRI1ksCk-PT-kKFQ+ILYl9>_r z?D9~73L4@xFGB?#Zml{yfJ5L;LOptpLtQ^0q2P)(mA^sy6CUY9wP5$4lK6Agtvr+&kC**a)pB#Q zw9+WNd$^(Y;A@Ryvs!NP?xR`@Su@18t`<2&xskof`ko)jtxdCXM;n7+<&r&dByH2x^5znW<4o`~h_4cGk(&G)ZJ-G5;7|AdEs?9^Rd z6^vD7p?OX1x&HeFRMK8AZW1()s>wlOkBGZIT(UKF+HERe2C$MU?wb+ULm~3X^)M?; z3+?;!(q@oC%lGA4K9`m~gJnOK`;}MhA&TW$?oB#6uxO!hlYEo?=fRz^@41t%&?0@| zE2%6b&&hgJU_s{XqssHA8oMZ9C}`hi!22X)r@c0;mc1HDb9IqyTjau*9(-4ua$7U@ zpH$8`a#m|E*blqkJmFPPN@Sm?_$R|f_PAW7rQMZU49BVEV|W;G<;hwtf1rXm>2d-* zZVFDap-lzt8KT?+3|%fo!tP7%a~ZqycD>j~&3JF!pGvLtR$>%tqPJp1IJjBcypFo4 zu4lj2jMxUs?qUjMY=a*&jQDphYcuGYkJ8KetsfUnAQ zvDIkfUBH=Ep;JvEhSozc0AM#5e>P+3O#eJf$2>g_v{wTdamo3>`T>i-Ys1hD?Qi!E9kg*pyUzy}G98KD z{6qAw)Tw)Y@#?VKp6T{-QK~3iD$~Xir=435{}% zH%eTZc54-$Z79*p%of}%XTJx{UzGnZRaYNaweSHQ2EMIB_kc=;_xV}w4T157E2;*C z-5sY_#LuR&K&;Xk5^2oo~r4k!eg^uJH( zHAP0O{88oUfyi%O7+q^7zUiq>J@L9ff?^>>@%wp6yhhL(-a1iK*7Jj1(*#D(!}M*to@6EFDI)}Of$!G7P4Md_xQ8^)$AQWw*6Ao_@zOV zAdC0VR5PJf#gE6~J&z0USHm9>uqRE^iWL_`%)V8AO$nVJGB$TM{v48{{cl8B#O-o2 z8^F|SGf%vZfk=qz~XUTB*iumXEMaK!F zc)&gNJa;s1XfUC2KOcCO_b{;E!wEdxJFXGY>x;3RF`+tRFE`WmfA*CHZ|JL!8cWm4!pR z%Nw~Fja~){U&eXqxf9u-ts825#3BqB8*Ht4%YqW`O2H<}-qVjYZX-l_8$7S9FhS!t z^fWVUo1O&BlNY=vf8z-a^je_M@<#93BPta%rJnYl+{2TWwnZvq^mt}it5;8k_it4u zS@xKIypHGc(rIp=MvpVN6nc&P*%NB4i4g)Jv?d3iA1Nz1V5)|mwCAY_8KFn#M%x_# zl>VcBAa*PWl*}Pu?^$}s8ZIbXpf*h0;0j%3TmDL*B<=6yT7HgugU9Zc4S3H66)OvZ zRYGMek@dCk4~Xe&-F&dbS@WWR5%JTs?1Gt%`0HMFiThLjBRu!zd59*_bWUsBKGch15rbM)XXpS$ile5^fE~_Zrc>j(QOD`?^Wm ze==4L#JrGugK}PbxX$sz-jFvvr)FIL>0WEsKYwZ96ia&Dg z;l9uwWRqSHg22uYL7HWXl%6H+A-Oi6Fe5Z?^8oJOUh|@AfGL|Q%vud)hpK_@_U`rC zd&Q_aMm+cb(%xZ$Ps=~|sJ#P#o8UEeZ?3U{-_jUR=HOe72p~F|A8&oO$)menp$niF znEX_4lJ>Y2l znQ>mTpz&tL9pY=(mOf^!a+7}033II@f@mQ)`D{~mBOt`fv6Hz=pJA*a0-&=EAXdiy z0-cpzS*v9V7$@a;Rn#J%nF3e~BPq=kz;u{e?KF2X4R*%wM|!9GIfm0stqKZ(k#6N@ z3~*c^##1Q2D{@-tP1AKQ06VM_Qso#ZSKfZtlz9b|mOFKuW79KsJ5LzVxhxz@evX~V zumB!&BBB7aN_+WVlG<@9d;RrobKiwV|vrG(12g zIqvnU9+RsYFsKu#oo!zI?uA1$KC{%}8C(n!MZMoJ8{wr>h%2uUx);e#K2^OYZ66(U zZPDm3_Y5kG&y~f;*nF>rPwNf9%VxFiiS=zizy?IZ#V!`mirRY zI5p1TYL~&)!+-`njm8oMS0|{GZ0Z66JS)Bz2`x%s5GL|431Q#$>hCiekox~JB?}N% zP#XEja%EAx=dG|jYL}bhc=?<}{;o9Mv-<|7axI+1tn;xs`{wMJ#WO z`nOfVzt)9qrfoTm;JZl6mBCN-Drlb5)ajZ*x^p5r*NLQiTK1-bdWX25(}!mUb|g&u?_yD@<)R1*hXMChMCo>wY5ho zn3Ayu84SD`&8W_!tBn0?5TH?6vaK6yHyNih$h6Ir)Z$4gXF)X*4t@v&ZC=ManIj8^ zLiTx7jwHuof7?IKk^WK8*^rCM+Yxt^;Rkuuhm%ZL1 z`Xv2-#~8@i8ov3>n{w4?Fbop{3KR-9$S~wzqeAN9=rAsw&}hFvr~8vXuTI)Lc`7b zK)#t@)7((0nPStJQM0(hP_!=G#C%Iz&HF0i!>o!Tt9s)c%jWM8Fvs%J9BWy#if4n<9Ex+wjNiif`2}*8c!rP-3!f#SXa6@% zW>v&U)%4DVu)dieBKrjEaK9xD=EWkG zG1BFxf7QJrz>0Ot`6&p9A+NpFIK+nUEFchVTB=kE z(wwyER#rSTpl;H{s?;+Nx0ofX)Ri9?BcK-xje)KN^{iFdIuPxeDH@c=hVAEh*J8u} zzq`%B*;I%C!0=zO$RI#=yg|St zAjIQF_cm`JVBtrzdFw5>6sCJ+`BV2+&xEUz~)Eu@mP2#P+1D4OeVd%(cv&%?w08A zjX8hVT2(RDTGgj~_>Oo_Vz;fE;vZqooj_Of>549fGHkkt(2Cc^Z-owoNH8}eiGN1w zo>#!Ye}-4*XzI|7f#{}hDNf17Udf;3kUIHWib*UM%0oC8kvOir-ZdFNp}lQzLl3L< zzxfFv%?B>P?;vqhA?UmfqZfk~pi0E*}=Xi6}38yLt0^M-kGXGXHVB&dagu)MD1g?uL*?mU`Hj znZw5I|3ksD|L8>mlZlLy{1DBcyKf7$iRZr(h>ws&Vm$`^4=In5&2^ablknaz!*v)& z(Yk(1OQMN>Mi&_gyhtNT+8-Eyg@F~(XO7kfNZ-8wX_kCR(#~c=oC~uV>(c!sgsny_ z?3yss%(rAt*c}h!k`|CUQY&Rz#6vKH&5Rgm0;{3KPNCm9SZ0JFF&w;sVqu$wnwee4 zLcIvWfW(5be*kLyP(U}M&zE5(D-$1M8YtO1r}?IUZ!wgA{(w?l4;~~TM0WB1wYw_W zOaa#nSnwOAmmxZPnwi-iyPNBavLf~ST;E}4Dd}9wiRS*y@tU>VU+LXXGSZ3r3%L(t zX_$12Fd30d*ip5cQdUHPNT^uRIZW7nL5ENF797yKWcmQ1|O|E zm-aXD@8zeL7cI0jCF<5L{*+Kv4Hm@?XZ>LZeRlmuM0YO^I?Z2_ zU!WBqP2l-`c>g)>Lf7|r5=IY(UCeTF)yN{)wRAuQm!9TDK0M5P>|$a|@rpIv0BY)!()ZC~;xkyn^llWdps0_KYJO zI-Ag|&yap&td{G^hV&Z=*(A$uoglJrj1APZO!`MVh6~6cOZuZmzPHD#pngTTt|LAW zx}GwB}A0lvix@{oTp5 z!J4A*U0a-^Q7i68lAEHLc)2Z=u!A;Y*g*(YvCmp3cMJHr62IPA`aUpA53Sl6|b z)vmGd%X8o-CKJl_e{_Aef%oQT`Mqm5en~VruM*i^5_L~uS-kZl>-JqdReUV!mcEf? zogx?sPTb^_EDdUl_jHZ6!`^PMujU zm9gw(^1U@agkkH&BBAU5&pdeyXH5h0KN`px^ND$of5b?o2;EyX2S- zjH@b&;YWI5_fP0=1TYDI9`P5-g%aC*%n(h-UFR^rpzYUYm`uB8QztR)An#kInM|is z_toNGc9Dm$A9;yCm>o8=&}xR57$l#d-sG~+BDt&US&*glsO3Ud;vp|1iu*gweN4MZ z2sp_14O+)6uBtJC3#(-=WcQTKh@ToIvOacsBsub9L`k@AL+pY`a?FuYj^LhU>P*`iI$V(l=c9EK6*4 z&snX%GzDPC2^Fly7%<{}6wP?dydbNU^7Ba#U~5L3JGJqkwMa&L{w)6OV>SPRLP%Rg zT-oXa$sDMN4Ip2Pg{LN5JVHuZgW^)#UHrWug6Fc6Z(zt`84j{q zpFkek8=x;{9CaItq5*OJ@^@d^5@>;54#^H^!OI<@#Ti2 zOzHW0JdekOWUf>75RL^qbxiUl@$GYS9i2^?diU(03F9efvp!vAqIinhtWQ^RZNfI| z(|#_?tyT|X>z%rk)q0n~-iuN|pQJMxhVd0*L!lb^az>4-?_clV_efbEpA7hk1FQn}UgtfA;z2QRod%ZCRWHMTxh10T-8 za}yupnvMBsy~l@@@ZrRe$A_rx5tl{`AI85Ug|#=x7)pJye%xRskcr|X`gVP4gd0(e ziPsjfiSGEaGd{zYtloWNzc>Wg!9ybhH&DzVq0|>2VFp?nKbZX+wQZkT7jF2s)vrg_ zN{TQ-vv~RoGmt-B$v}u4odU{@(HUOE{(YeBdC^N^DJ~UhUsgFHjSJhZ}f|)XiqzKseg`6Serm$NRD?Kx>F&K|e zGe|Cv+jGEgZ5#h?6PEd#Sek~9*uc!D z5Ywb{J)%D2JpY#S{QKeI>myb}inJH^<4E$#465F`?O`g0xwu2AqiQVRWHyI1IiG*W zdH!9^#(~zVp3cx$QSHv&9nR2=&OuvlwV)1W7u;GLA7rgQ@co>G3Y=#Ol*SKt4}5Q4 zpKM-hKCAJy&fe|L(4Njggw2)jKY+KI&nQ*$O1}$5P-hYM>xjE2V?PVUBko(mLQ4w3 z9py1DgItn)D0@~q43vW-Y`tOts&?*iM?&#jtFsQHU94l2{HVS}^fFpg#NR^@{4kaI)S zi~!P>)V0iZ^Rj4h&txdm+8&!+?{13VwV?MBkOq|8tl)w0a7iA_X0wt=ei=_p;iP?X zu2kLrrJgJY60?dCFma|V{LRXna9@eBV0-N4YJUP)@=|(!scsdM0R8I7$rSEj$&FuI zW?nH;yU3^9kub}*Uj0i|Uqj4pli6(IeckPk{eNnoK=v;fi9!{w(}+oDD_AqZ>t!r) zZP+G#8qdoYd{^8u%3+HSy9sKP6ohrl+wg&KyP5iG5X+&)M*jH~IBkTtwjRIsgHiX77*SP!--F>3xs?d3RH}m2`foKM$@E`z)b+k;@an22ZElddk@}eD zB!6V$)XFKE<*-TOLEgwBpO&#-y+mZq>ZYXscB~2|-b=G$c8)Z+Pnim9=BPa!k3-F# zd-&-5yHps%<~bTk`+3sHlZ^c|w-NID-ItJH2w3)C0GxCoYS8S@2SUldVMgjLGazhK z%F1N1kL2MY=FRKyTpH0x7njlka^4ixkh&MJpP*30ZK;w|C}#`yW%o|Te%vtZVw^8I zO9j~hx9Eizvd;yr31OJsJYgnaBe_>W{f+9HLae}0&CHL&rQSspe8q9Ehr(?@RyYqI zoF$BQONvSZhna`DiK3-?Z;F5p>@?;{S687+oz?%}$QPv7Z{`b{3BlyS-v58i7yQO} zE~rp`gYprdPu=mhJOpJK#1V;_$ayHSv)C!9p2C5Q{gN4}N!+*)YMx^xz&VCQyH&fi z_O*1>Q1AYk!U<}VMesYhR%9ya|5Sk)?SW3}HDu>~ob)O*;k&d#_Dsf?W~B_S|1#TE zH`&{>tPsp6F9?m<30^q9+C<~l~`N&&Bp~1{tGdo`s z{G<$l*Eo2Bp^G%av(T=G6QpMm9ozPNLKXflW6<10L?q4hIKNUkOUl4}-#nkK=bCA+ zn%n6HEs!b$vfI*A9QQ0pw#}W^n6axVN&^*4cH*+ zBtf~#gI^KB%j~<@v<}U0^ETkH;Pb06EhY0C2eaE!**I7r+_?M(|AOi-Kn(KGaDp)7 zF&DEnziHp#<@y;O*Z}(-0Sjz^PX0RQ4CqxBiJnw=%Cu%e!z|6^8^R{jc4Yh4qo6oz zPFe$dxyb)7jac=yb6HP9p0Tz21*` zhL{FrqvYD5&+-Mw3Bg2z*+<6qB8k3>x+ea&qEbP0p8X{adJmsO9;RBDgW=@4a6lWq z{UP^~!Cgp)1^6)fURVv5hsieAFqBXHnW7t+VIwH4t=<8>kATzIK>G6n(yWGS+I`@a zETLr7#IyUUv&^thFH}FCK0l`d%z5cIEk~lKSN4p}#WMwqmGXlsNJYT}K#Tv_kf1}( zPX$>i2Rtl|Tke6+$~7DIe+W>1Y%uo63WSyAF~4j)J>FYzwzz(n^^;ec6u+k%s_q)kSh(On5CH-cdXJtkYie> z$>&^=3F4)JR9O|ht?G8tK-#UTJ85(Cjmfyn@7fz%wqq)`bZNjWxr22uKMB zRbcl?Z_EG8*xxn%O60~k`+)J>01|R?RB?0mML?{qsz;7eO8|B#>TJ}1!80&4N!63~ zG{QmQ+))WG4P-e$RQBW(=PS6uMmTqpI9CIme@bp7haWJKEJprHJGmiUXH32wQ*%S| zu=o=Ls(&*hmAoL9lLw;5{y=oIo6$#sDTPrKph1?6Y(9wu9d~nhb_&5Z;A9SId5vJ- z?`t@Zrm>Nr)a((6cq9BrG$H&~ydzUV^8XM81}#OVdxr^0mnm9xFeN4SRmRN4m`Xs7 z9`u%Ph?LCWQP~J}BVX_vFRdedqo(_OLH?@wtKrY#uaQ5){{{ZE4!Zh$FDe(Vuv+fR z%7@f3FXc=`ww!tPhBw=c87oDF&}ummB(b!40oS`u@UEj=_c`9X<|Gt<+p*sDNUmQP z>0KXVX7zW3js5JU+cY3=2bSlaqvG>N%U%lGs429aw4Wq~mZwKdO=btDV!0`4>_cTu)F`kg@7E5iI#O17C$H0~%;#)C z^A94F`1vsS+3Z`FSgDAeFOFr@PiL`lEZ3jP$OmJ@rz_c1tOH9yam>t)96EY1L8{Xw z8b#eJi$@DXSaD}##rd!D+NjDQ2Pq!NMFuB*OM9~VrUi8hMwU6VUD4F`^9;ECJaB|+ z&OtHA10W-V_uHCjP@c8Nzj=O7z;U~xL_FQ`a4AX43k(nJHkcp6{ubS$HwG{n=Bba- zXII20fULg~y-c4ZfsnD!G<7^`krD69)`2<7PWS3ml7f`9A6CTE_0JOgiUd9YP6*_F z-^_@zeqPZ4_Hfd^U(G-7)ct#@?*5=VWJ803XnWcNu{gnlMS7z+X!>_pbl7s6I5otL zf`3j80{=^o)+6@qMuq?MxpYdNCM}t)2)f?|9QaIF3c-Lg{EcwplyKtWa*-9L{I(p4 zJ?#~7Ja_*j+9E`wRqESJaF51Zud((lgLm_{mW)C2=cz@QvRRjKJT`tndqf60ooh|} z9hdRRli|w5ILdAp#*e~ddz_xyvgbDLf66_YVli%uKr0azq)F_^?0*% z`?-NA^#SI!=2S}`GpER`K>wlaB#D7x0*JV}syga^H%JE6X9^ZIIVB6pzt|Wf`L%4q za80v~O1&&wc8qteCTfrJuC+vZwh>+%I7Dp&sKd4V(;RCe<@(3cG`y@|(g z2?A#llc^w}P1Ds{(y%u+iuTI2S|33#)k4XyR4ZxUZeqDmaXt6>5c=G2ThiZ}x;1QI zd)-LbbyUbM7+@ng<>VfK^jQ)2k+;Ovtk*}(dOiD%LKzk_WrTTW_TkZl6-U{cdQhr|C1WszyIZUlV1OKvmn^r|J?tvf75~b$#-&_Iw|}oN6lf$1n-1I#OsfuvbnU?G^$=L4+wOkI;MoC;@f5}81B<&W( zJtY&}NxGncJR4^9w2@lk7xT8D%S+w>RKZ9708=-YrKWhr$OdL+c=j$63I9X}>kKsH zokwemwiB*P`qvHft{b>+I?}t=Hj>*U2`DpyJT+|qEE^gHE)x|$Ojkzt0j49Ga2{Di za1lVXYZ;H^FS7tCiYhx;bCeF|USXJ=w0n-sB)BRTQ}YIgmYLKrcBQdtulf06YMz>F9* zZna#?3+*h3U@DO!I4uw@**GWE{3R!!VFi#dyeW0WW&+LgDW~UOTP;eWKt)y%#dV$F zo(@jMXokDkxD@XZwVp0wGZo1kTs~98W-1a9%c8T3(&frRY>c`^EYgoXGV~;ku;RZX z>9D&0PRQL7em+GQwPbDh`M1NFP0^w4964#NdDp+7Z%8qL-r%k4BkGta?PMs~^(J@l z=Pb;$j6EKo@>v4{r%dKR2wAIhAcWj32&2OSVb%C72y{p1&hza5+!PtQ(e!vwNas4< zOCRZ_Ab|7fbh&`O2ARIzIGer@%Bhj$3x$WbDOI!SaB@H^ou4>+7X`yEscXvcOvN^m zE_YhkJue_c4$$3kP$q8H2GF;-o0o_wjpB{>HG0t~-J7JOJhu-{$y<9!GZV_r@@I}; zB!lvjRa`SBO=z6mexzSuKp)6BS~m9>hegFLsYxJGj5Aw|gVj1_qC)?(#V#z7W$Zf` zt|zrvL^)a^-v|piCDF<`%}wNR_r@YjrC(=gIN^;Isd>A&#Dw%O(`-oEZ<#1P6J`?k zMj{9YW3J~h?a+gx)P~=lMGR{f9!cM*R*8h0)D38>Z{h$knG@^YWaZy)%vYq6`w0Yl z7o}m2vUnAVWVJjl)=m0HNV4hvLGOOX5!w4Yy?g(l?EP}@ez2#Ktd@D)d+D7K_hMpS zZx38BeeYR~z6wHvBkN! zVN5Z!bpF8IoHmPfIUhK4KPc zmI6aE?~@8R9^!9?o)EuIUX!HdxniPkAEePugrzx{aHG+K`}c1w3z%eEYJdqzd70kaBu_DkU>t15o(HGZ90kpNdmc@_Ss3MfdEH#Cnx>9ymilV}J=Op;I&2U(oO z421_8__>(Wl5{bzSuvS0isgffNMZ@gIYI6lD%91%k-D_i@`74T+GFV~-G?VjSY5EE zo38yffM|Gl{_+z7hH{PYP1jIrnG~cixTC>x8njycW=O9sJyvrziCh>CuRKreDeTsl zBZk=Yk4=^c?Q@zxD2k)QsOPf5<#j8m2C>I3BH0d8WpTc{2R1NOJJQ zLwT4Sv@7hE4r0<)GD-2I%OiE0(EUmO+`-&)-5&!Y);EfC)hk-J#cDmow2XR^FW%E? z`KgFbnro?*RMvp}+Tm3HHIeMpWkUqTcFtqkN&X~&oChEP(MLce2M-ejI!1P9e3s)b zDOZFp8=QMbw7}yRVp$=BqLon1oE{XN<P)IDxgI9ZCPZAD7bOts2r;<(cyb(fD?TuJ7{?bt3LHhykW*$(O{PDdqYPGb;n+t^`k4(}vu+4+*r6 z$vuj3TKvC=a}=DjUQKy(TKv&mWb7YMmT*b}tTZ412@^0P_c;^%YphJ&bu`oD^#{d? zq&>UaU)WCfe6EgrTyO(rbYgamT!c_6uivcJ<*Q2P(Y~b>nD^ zJ&Tyj_SIVRa{a$%P0PrblPTNvF5U^X2P{zJ>_$qY{~k_Gtj4}JBizW-*kPKGyTF@9 z2uY9DL12-@RS3JA0!pM|&+r7oLYNRQJBbOEsYRm%@s}D^*UdTiC-0wMP|2}VzbO#wqS-^f z<6RS7^3M_sNqdKa_|ow6a=j2n&$Z8#0m7#bRju~;ShSJXMPoLn(Q1(`YLryczZ!wA zmCbkzSvE>X(wkf-XH+EN)TFL>1+(%(TAO#UX)RXIb&IOtYRci-?u|T@gXb;o&8Vvh zfSdNhv=>b{qxh>y9j5kr^M(|u=fq8J+3^~Y2_jVKs$fAt2QfzK!j&;1f#;AOK)QEH zdxX!RVAgkKp3;tj{Mv!=oAa+p!D7osHcj#|(@QShb6AQ#R963az`9}H>S(8xJS!&sCt=`{mu6;&3CzB0VhbiVfh~h$M~0vmrx;7)?87A(jj^T3 z|AcBRH^R1PxDtGq1baXYhs&PMxfWShbUvkUd%G0aJ_e9}2Y&(Jdv*GO_zOI!4)9b= z;4G*VRrY&RBmJzygqE=m(%)icDjt%we{MrX&1(N?JYrTKr}Ia2_(<;H5hgYYYXX=z zzJVt8gD0yxCkKNJ&p!Qzmt;_D{yD&3$_@&rejiM9ri>5wgN*$>Ga5~~U!f-i9$aGf3CmKP`x zv*{&SdW6FXiY%&iweZ3iYW4-p5zdz~{Ah-IC7e=DNc_)GB0~J;Ih8h1(wUo3=a8+0Ogxj`nwM7i zlx#7Hb?ptcJ5vvwD9AdynovsJ?2(I4POhq$Vm1ioHZug=5FrZ)gir8!*gMB*C05E0 zg=6=E%Fxr*=4wJvQ;G$9Qp%I|4Zz;@29!gkILVWHtt@q{dMv1q(Jvg7qr7yc;g-}( z+srcftsN9K?jcj9Hc~h2Hvk@bx`vjuwTHt_6p5M@b=P5Bvpx9)j+2rd5u-8#d=A5rhFYu{u>~-*-;a5FRPlnw}*n|QTBJbFJd&r z7O^5)nfgMJ=j_2}IwsJZL&UlBW)@2b{6tQfgh2TzG|Lnu$o>r>Fv#HuqHy!qHStm> zaV>I>os>Fe~>iknTphRJ8Lb)l)0Pa;)=Qz`u4Rz-@wMe%x-3^uv(>U0Cg417 zZYk3GlwpZ+gy;P|IJ91@$EODD)0p){u6`&g5p4?M9sRSn9*yy_mD?e9zh8W~L-FCx z_)S_qamV9`mB+3lfN}5w;zt~7Qji`Nil1php;Gs>n*-2fh#}_h`g3=N*Z`$n1I__O z&9f%~8_X26fb}p7&&_Ii+OYM_ck-j8zB!T6H!tVfYWX$)3PE@2)-$247Hud(M;2f) zPF%}AT$IMg3}@^N=%gLM_P;0g<-Cx|q6%zqHKnkHu`GrQCBIZu{AUV@+{-TW*bhNT z>~?w#Wwxj9;5Su|&_V}wOGuZt&3I&pGZ;@H)6K&Br9W5j;O#w#cecmRtXk#ss2!;S62n{`?2%q(ag)xgO>*F(d85JoCccy$D^ah z%rkRl#3RIAIBkqoq?zR?q2!n*>{Mm-@C}n~WF)hM$~whXWj<|-56C9G*1#ol*Ke%s zD&f*Q8v%=d&;s`IlDGyR+0@t-4TNHIWm zR>pc;tBJ&RiHD$Gpi7(5Xnx=V<4K&dN{u#cu~zLf%GlImODW#qmegnj6)*qb%-)y2 z(y8;m4JU}lwxqUw0Y@Sbu?QU^1K&PEtdyq8^obdJh&V_S`4ZSrXHIWPZGB9#7dG=Y zRc6FWDsiStyq1IFAdCjLL%EO?bth(7;Bdo`8^e6T(M=Iw0E2?%SlLBM6Ke`M?(0qh zjh1Mr)J8DNJu66}gGo6(DR?VBKhmrFNS>lWLg)Qv_XnSLLD^j8g!yQYB&N2dD~Ymf zPGWSr(`=gM;%TLTmN{Jg8Eb75rY`Hlz;Pfy<-Rb2pgry@z%1k;TpjI)_`(a`n!v4g zh;e>at+i?#r-fbH_JkzJzpa0ex!SKdeSrzLj^Cdv;=eFlF}PsDzAA&FvnN%vvF(7i z=}W*l*0EljwAYheBAo;*v=&o{jL#0IHm5W_&YRr#BjiYEet=N&Bg~>{;r>e8MzqBj z=A1Uh^oUs6Y9Yvjp|vRJvu?w9pv`lcDkI)!jxaOMKv1(4c%hjmBWucZH!LjSUiYHJ z_RCt-*DG{l7+v-O=mnWDd{A~O!sBd&l1(>otp6_Z|CqEyMxkTn^OM{{iw$`-REA?BisLBgy#{j=MK~taov)vI@MEySudW8zU^W z3ZQZ}(m(VNdu^UlFb1RRfzE1~#Z!du5@Rj0k$Vmn5Exyr4m)E5)N4N^Vib_HoDMP9 z#m8#Xg+Un=M#^MDMUbqJ-_?1j$cmWQtCRrbLd(?#An(M#F3xA=EwP^(xPe{a=^j)! zJDlTn8z-%L@ z{MxQAkgf&8K1`k(J=i5GB>fXG+t>$toC$U~I+O53ye+J_On7dkSdb624@7-bAxn-!h$TNlo9UzJxv!qLA7wz7T{kx$#wy z!$=&m=sAGYUCVC#t^W@3%~1X0lo}nR&Eki71yw?C_0PQWuI1_>=^w}lGIrT;;g!68 z4pqTwC#1PPHY5sX4T^GgXas&fI0`@ev+mx{Si4NKV23KOui)DFZmxeT%|wzDrWr$} zA0tW+G-k8w|1)nWJD9TOsjtbQ3@#dlLg05nUMUo83(iY?;!C3#i13N= z4^lm=ngwM1Q-G(BW9Wl?m1DkXMtk=2PZV1IHv5^7KKmxk)>`)MUP}B^&H?)zt96wR z-y8$ecf+HTv6BAvgyM(_UQDO?SLVXl=kPJv6@u7<9528?UUr5cHfGjSCYJXSJt4|C zXNL?i6A1du!&{u!9At)=#MXR*XJ`{LJTD@@1s_7eMoDZ_V>~%*4Ddcfd74-*>A#7Sky5wcB5s?En?gDo>$Vhx^WrC^Mke*b{~HgQnFg8(#Kr49 zk0xN?3KaBW+!oH23}}0}j$+03Iya#2G=YSTsj^254fg+*tPr*zz5ruCN|*H|_V3~A z5I|s`JT%%LU+cWlH-roDbt}(u_>xu)%8zj}wlhp4AGzY(Vl{HGhmPS;S97`fdmbtP zSE#60S;Z2< z8!Tjzjy_tcZUtla%R-LI+v^k{VUjH|Sscw3PgOGuKKNRrGO+`g3{E%^KtLM%sy({H zUCZDud}#mO0w!r6$`Y`AbwkAqc_!GVLn#hxo!P;;sZ}aAc-lFIh$=Rt-jceo)kD-Q zWFv?gsIp+`T=MFM3QK0QWfr+xne|dQN0~bQdpu&zGTl!y>@-UQ3>ZLmFd6m(MC>+K zvyb7k$GP-hYIl9_^t=M-o9m2JE1^Xajp<}{BwAr`P! zJH;&X74tIwPvg+=eb^!DWmnfGdI&w?>*v{V0N;^)A%hzKm7zr3vJL7s$vROoicyWS zWbmh%;MKOMOR+hILx~3nWeS*RbvlazolzZyp~urySBr4SEt%WcV%+55KaPwdBDw7? zn_@!*|8l@TcsbDftyNAD=e}`%X*%5_2dYUbdLm#jRbkxfw3v^a|JK(H;D6>Fl7;ol zkzLVZx@kig0rihy#niu6h}HeORV8Wv*I5d-l~$P)M#b4wh)D)$v_He7(MKtrR~wVmV#3szhKKi>iN}6lN`X9k3YuwpEQQkF zm37VDU&00%dm4Q)O~Z+ve5aIaAvBaYMNu>k$ch4=;lf_Dz+kfPZVL)>M4z*jrbHH}Np0;_1tbGx577c;XFFke~+wsWCAwV6x$j z@sL~b`I~71v5sjYMV;Sm zt$(B*8Ys~G*OI46#FBGa4A<`#{6`h!D4e10@zcA*OUD_2Hl$Cbc8#(;<(t#M=?49a zMix{qQqk_3p8|;|hC$)}D=oD39*GjHvx|8$n#fucN$<>yOZ2(g?i_h1T=0#?H*1So4_h}Gbc`+s(+4Z?kbMicpg@(5q!xpuMpYH9@;Zzq^^5Q z8YIVjf}d=H+g$%l&p%}*uxGF-!guPE_8a2_!dB*gDakJFr`7k)uwSbA^B(aJsqm~S zv{Qj16n>JzCg1)W#e16Ke^GI7*~b2fX?SC5-C>#;N?93mH?Pw-$j@0oF7nsutFj}S zt`SYth=PnLb`qEwDAr`XoLN&(si?wV^H{Q+$EQl?LA-gRu)CRd3e6{@)1Y-~ zWhEn<&Hj%>H0aD8*T+dTNbgodaWYa?mT_1;NLbcC-Fsy*x%^x&>1nM=`FY89zWPzI zk<;RPynN_He6n0@>~KE+4xT_4_gBh?6N zG}fBb3cORVv+n7cU9UHiQRDqJyoU|>o6j_ChkzXr?muiL3(-n$*#Db9Hj7qh^9tI; z?nQDj2JvOuC_u0AIp=FD6lr=TK#cpLT31KpgfF~qC!xTHrS8`<+dYNEN)B%8d3 zFsYSb4C?AHR7?%JQJj#DxbHgI@Aa}5Rw;P%w6kdz^J_zB`QlUfe%^nyTvWqBr^`=g zWiic<{6<#&@fnItZsK|cwm!zIBAzJet*-!RrztKExUYaG5)Rc?B zN*3W+h%;-SO-(DKws&@XfhCdUCzf$P46G>wNaWqpPsG}dMk()tFJo6oQ+~_06t5xN z>-uL76?DwS#DrnaKr&gXpmIG1mr56XU${ko3iHT-j!_-9;EWcF^xux7XP7}?$l6OuM2$N6Hu zAQDO$Xlz&E54qfgTyBDO9z-!&Yd-2r&Vhl^Nlu!UxQ^xW4LmW@3nM0ySXQ0-&%xqJ z(^O|-Cd@URrGH2u&(izK?g8@l_h$;B+Ya4d@OU!JUdc<(q7sT(WqBqjoZL?*puQRp zA?bew|^Y%+~3KpJ*~c9hLx-4FUsN{QLDnI9d4|T7_OluHA`ePFV^xHJpjIu z2EG#xfKU2h&2quAL=6@;lehQ0c)kK4W@ibu)aPNcYWP0Hm%{&U@Gt#l%ucIC0YnTq zYxQJ4c*6G;=FLeo;tx%(ntQ8L#r2U+VjgzRTwL}DC?#zR=|V{3Z;-~Atfw1dPOfr{ zp|{N};WPraDbH$rHZ#dq`EFaUhfIz=O&Ez-y`Sq{GFrs^(xDWl{c8rO3I7{vJ!zkL zhREAyX4+6nduC$LqcBry8mPeZmEr%7EJh7J3R5lcqF+Hoqu*$;;XbFc;Z5TT#6>n!UUwuWg_TI#JPWAl?zwBRO_YFFDCgkn`zVfOS$5BdG{CVX!W}v0WVMbs#KT)7>tA?b56JZJEt!h7 z5{MnzykwbgNxv}aDif*O9lOeDUa~q9zYNdq4pN+_k;h7H0ICKcHcG)ycLO20v$q(} zli40HEVUhab$!fOj1g2zANZ<=Xx`q$yW8+gsIGHKuhvZ=tD!T|@C*pp z>x&_Nmi*IKpJ?b@*0Zyr)5m`lPdq2icN-os`;hyPukQH%iWJE#_0G^BS$X!}hSv8G zvKi}vwN7Shxa6h1Z#pHLo!OlsE{1M&NEL_g#y3E>Gwt~!k6(DCxHI|A{?ve+@ZmsJ9m{je25MgGu;ubAG z<8i$k@8px7^|F<&=`57L1O)@IVNZO1&I+5tSy{b7p1604`W-!^XZ-J+RzI%FdS=3r z4F_$oo;feTUg*ktP2Nb!Rvf?IG%y>|%oj3{blVxzUAt%(+r)i{ev4?uOwVq2$TylBEOaBV4y>DPJdFTOR8j z+_Ryl)r$Fuk=H5KF-_F&NpmQr`l&DZAUu1$)4s0++iz^L)Bqi7e!pjWjx&1$DPi%U z^=@=qeck58hbK?|j~SBtb!hk}xw5p8KAulG&z8J_@9zQXv$BH+dMC3{11Q-SA~j{` z=i!olwR`G^Z+6@_>l4v!;o-XgvozLY_y%|P@J~IAe5@EF$!QI4!!q*JJwl2YQ|`!< zQNmune@fpv;Ax&q9s-MQ9BO$?lJ2P+cq8HxU2G$MbZ7&nC2%DNjdJQ{WZ0E7BNOI3 z(TLV)-Dg(vJ%$J)<;3b?6#$d8$FqQz6{|U!`hSq2qIxuMAld!sMVg zuWJm=oH?VzoZZZNV6v>o*ObjYCal$KflXWH)qU`P{uP_X**UUl8B6{C`B2z9)4c2m z)1y5~KbAv81yAo+j0M0i=F>_Ay!Zk+_U^$}u?1Jh_Tay-1xKg+X7S+X(w&8u(5LBquhwy@4&w?u!k? zLXlKs=hTnBFtB8X($Jm+9-mS3gS)?fO&&f33s#!c|4*1pOJVMmqarO$J+G}%TI|8BI%in{+M=AJCO251ziE2|PN_^wAEA*q4DmifGh{SlM}EK1mE_;|oU1?A}9!;joxc|jhzCL~Myh7)HKLVP#u{+n(2ORrSCc1p!x%{a{3 z?wuTTa3S^2t<+j?{1eWq)$XmAh>ekH%zBDAjCjp$03Q24?7a(kRMqwHosa|qWH>=(2>jdUeZS}X-tQ?7C$rB!Ywx}G+Iz3P_S$Q& z?Pp$IQamO;{O@{NZhbiKz0d96*FrtC9I{NDYY)RM_@ZAx%#d?IA;gFlg&KQtM5{e1 zxAa~RJN)l#KcUIMLP4y$YT$yo))O`MjF{MYwaw@V_VK|UuPsgRNZwFq7=!?1P;+#dGZH2j8af`T- zdP|oXw@49Ms4H4GLhw-O8leuy1Lq`+JUH4JaH^UCl|oIP!a&V`=$GL$@xu8sC(#y~s0K4`!QLb_-HD+WGz}J zZ7j|?a-xSDdO5sNchh)js9tvNkn*)%2Zy-M14$B9e$O>WBBGG;T^5pX$u( z494v7a?DlEyWkbMuO0tR?wTHm(U%vNf7EhPK>7(wN2b>XkJA3OVCHLX00> z=w7vgW1&*nDLl+>?Ab#cx>37DJy2h6cdPeCS8#?Nb>+k|POWgF>p~6hVQ3(!3#e7s zAzG*PiAR`)LV0g7EGo;ioo8++z;p>y(8 z^dec@Khc}!S_@IebtE66`(~p;I+XFG2{;8IVEKl6E=Xu;6`8f?Y0*HPAexzhO(bW` zraI8io-6v<7GaCQ(oy5{cGz`q+qp+}aW&BV+%J9na?NIKq=Pd~V znN~UkfG%#V+Y0dIpsbRXgMGoK{s>Be!Bg&yYY4$%*z( ztom58ijECAIl+`1S1xo4Q)?U7_NvZX8*E&aioPUk$rcf*s)uz}TU?FAX)+kh*glQB z`dPQg?i*rS7xpAU=hh!T!YxAT`H~JaMHIque+71}I*H!YQv#R^90?&zvrOHSf`S-V zPS_8^d{fe~cIHJ-heL6TkXSdaD5AI+vPXMY>k3~wjGc4U;aT7QYlUIR>DN+}2%~=o zm~5KzNrPPt99fPpVX82gV~{;k{)hO0{XjtG;wJHCLzXFjK)RX4Y|v&H69_Js-ijLq zrs!VSKL>CfMVjqPaJ#z+ivarnXeT^$n{lh8Cr;%6ufP?-u~rp^xS~7ySI*i0vqUnA zBP|c>#ByhO#&YMKZOBatKZ6I09J}-#su;9>x;n4b?E2JohWox_$A*SuS0H9!$V}iBuc3F{L@Z*wHZoT$PAkRfv)G?F1xTOn2) zAF;MWe>fM?EVLcd|Kigty*0;V>>K}z3LcJF@Ee_3#~}QT*;*SPvn>=K6F_CNkczRP zG-eBSa6~1DnhVt>Y9r12#i`IV?tA%F=8)K!PI?IEm0_y1nAz8y&|VF%n_CTo0)z1) z5u@o&yd*8#xOzgy@+%|H6`J!hjEq8c4z<&YH&P-?9$m_mVa@d>$VTAOzNhF3pb-}| zq-Rv~LFE!}#{oYkH5fnDV5e|q;*=jt_gnauQ10}_vTQ>bAsM#Xu3MP4!Us5I^*bk=-%@oj<;kp;@SYmt75eq z-Fp#ZQSh%sWcx_H^wuD(&c&bY$6V=%P56iOY40AR6;!@F#T2%rj&|*|OZkuc*0y4d zwkoocktMb>pkMWnYbv8fSi-k*N}lR+5>YKf#nW|~?Ih-&B>l>zYG`B1gt^ytc(^{vM=9t4W_a=^J)`emz&3YzKDuTUFIsgTkiZKrOK55pzq46cnr3 zLV-e+R(>~vci5_diEPKvT38^;D-iw3$-?4_$hWIl*p~RdlbBs!3kR)vMEZtvF;8tP zcH?wu1fPib1LOWDKbM(8g4*)zk@RX7@zS z4>!=Dx@rUyndalZY0P*l=(?mhKyp;38@Wu3@~He2$s|@#c08I48i6?;AIDVvCg_0> zAQdX#ELKh1cM6)VuHTd`@|M|rig8&}%3nubNn}AXJo9ZF)1~|uN(`=qh0>3t{HwkK zIcW&qq!q9eQH+RTTaa@hN{Uu-EeJ0NP!+C{klsu0foe)@p?eEKlojlpFC<5|MyJ@r z3XUR!$U)!kNV&=q(oTtAr)9YJ#grBeYmd#ocV`9PiKN7=%XscLkrRltnl6#vgL21e z4l8As@-Z1CNc9p_ZyVLy$~}C$=vvjYrE4vwL!H?qikuiViWfW~rpDCDOlz%P7n80f zUCixTou+HS0Hj|HB@Nw-dwIxLZ|pdO82l3PN{51Qq7o!{3}XcR_7ItMpIL8SMH8|S%-maeym`nw&Fh|*%o4J_WqrsIZ^f+VQ~n`v3kSg? zxt(9%)gQv6q+Yz4P8Ri?wQTv)i;5iP_(lRKBD%AYGa4!XjljolER4-BN_0+;W$Xr) zLzqFS63N+;I0m6eM)Zwf?f42vobsRg?J^>nGH?jXE7mL?ATSf8bd>TF8JtRF_sas?%0Q<%oNC3g3B3Z{UI{Sk0?7-j}(GAF0UjX45Weh%$iuR>L%{Q zw5^j`?b01~%WZ=~Kau}-Y{Y|-nf35aq?9i|uuFH@n?AAgcG+#86xdh4%6OZ|jbk#o zV85PPGSGI8*tSCuE|CUrY^?~DrlRb(9Pv7_XwIA?Hpyq0n`L9q87o+2UZW?4PdG;! z1|IXJ4j$iFX&>%ZIv#kD;p*u{9RK~ju!9w%ekM-j<7c$M^T?gs0q$4+&dN;=|UC#@? z(RLoOM6Q<_2QcSD>0^M;h6&=81rnjsts2ZCtBm`r*oqXL5_iW*)5xW9(k8a!c3oI} ztGqX?mN6DI7h*4xMA&D0j|evNtOS^Ox}*icKmME@~9QSflwmNX6PkmNpO6#;aQONRRKR^)lAS+yh!Y zK}*&91V}a@@^Jr*-M!M*zuANQu|U2;-(sGSA?Et>SgkSn#JE01n(iaUZu}(I zT6#D6h2v*@Qz96+n1q~@5adBG+uDA#%nF`-b9MNRf z;|LBE^Q@lXWng~aRCy^Ip^s6k=vS6g zdny&wN{QW@)wGG2ERkTle9D}c{Xik*%$u?6RDGUjk9l=2%GdY|5z`F&TrOC^VUbkr z3E{eD6CcQ8H?|}o99JlgN2yA*w3S)!Ht%p`(;|#ey7c*jy?6W?Vt8$>NLsPW$H&ee z+jSnTHHkXYLoQ>-Upwx5igH>?J%iV*3LV?MLeieHn7n(?J%Uf;YV}Vj(vF@7zPrheA)G&{W5p1(IZF0*73qceqQP+q;?6C zMUSJNGxa;4`bF27@JPZB3hgQ8EW(qSSR{NR;cGXVuvjzKY||!rMq zZT5ksdD8N1B<=5dBsvYOe|BMvl07<~fSht(tB)8?i{HwL>Wezcri*_Wr6idn$@4}m zw2o&TmiXfP!jx`0Eam@!bWp}t^9KSE_y0zq*K6yH3FsM=!JjCEIJ5RO3A7kzf^>^% z3Ds#JhoXxVeTVTqEalFXoEkJIrcr4TQ5CcqB}gWLa_=)VUm4`r4`3ZCZLaH3>^I1z z>m00f$|7tt%X!UUC3_|d2Z?J~>tU4KJ;evo4sqdfFBtwqu#Nj~lVnU;{-Fejei03t zVts{>UT~IymBu=&zcap9u`-3uA=&Q;SXNcU!*F#0HtDrZWt!S~jy+Z2RxY};l_P6&?XjNW9kAtn~ zIa|1qB5~$#W$;k~df~9Fy%}E0K}HU`oZd*qXesC3|7YpE_0=)GmmVGB7XVW zK9c(RHv^`G2|+l;VeI8>W$I1P++GCXi=%@8|A_&A!vjB5=nNgFX41%&siM^pgW|j! zN;r2UX+VsQNe9r+k}o^h6ybW>*J$HzUvfjb2pAuSz^FcaU*|cQ>fdSscU6RwJtV3v zbQ?!Bz@3m{al4Y@JS9a5{2fftD<*}#v##MdM?2FEtGCbP@;}+HNUa%JKm2s|!$byi z?Xkt4|NQvy@(>}FttzY}7(c{pgi50VuyjYvvuokgM0T>u4LR%Z zucf`mYATea1|69~@nS9q-DNg@jp?1+&bF_@fR4#Qb`}n_ZieK*UW;5WSHG}vHZk#A zrWmuXvzne(nFg&?TTpyc#5Nc= zI~+(44TvSnjkdhP`mP@gv#CTen;X4KqS*b$a~R&L23E@cUj6WMXisHgQ1-@u2o~M5 zMa3eTv*#0Q-{T{r7Phs+F5T^=8MT)**uq&&%zhxgqetX2{&Irtao#aJ0fz&I92q&z z$Rmxze?|FSa6_d}YDqtd;dE50-5&P#qR&)ddS!V&U6lLil}O#uGdZ3(gDlS_(Tv97 zmur7zd-?gqu!%zI?g`Q*6)#iZbXiO!nyBYq65%2bb-6V^q7LeC|MI7+BxhmK(E)nL z=bojA`&F45Xu>=n#d)Irz6FxN}nyrV@K#gO%SLtc<$!d=Gy2LaLmLv>LNj#4WncR>ET!jlJrbzrnvtV zl6r%5v(Pl79ln}ZG%j&=!0{DQ7ILnxz*k76=Riugz-#eWq&G7~szc5wnl+J&M^X8E zh>V)(DeB01liO&UD7xz*y%%|H;z|zxbuqnf(i7TiRQ42d=2V(n zb3VErc_e-N-v)@Jw4)NIY5jderFq#sfMBv_XI)A}atM4P=v**%r7(;y+cH=0fv}Bf zDwFs|CH8x)$@&gBJ#WPS;#sa--kFYGu9M|l!(d_x$+Wk`V7)-H z?)4{FtvEHe^S-fT`L8KAGWjfe1|QzZqmW=`EVEWx?CU@&O|y8PX%;`%^^)3|KLh*+ zLVYQN6Z88hWAWVv-T}PD1IMTFKESOw%qZ2hX_>$;_255-412GF6_Q(pl&vp|d+19*FaB zvyYD+qoXoFeu95w-oDUy8gs+0zgTkq0Q$4vav1l)M0{=!oLI-#1Ci#Ik-upE3NH8? z8L|W-&m;Gh=T(yDpJcM#-W1-=&U6Sl z$_V8JJJ|V!csuE3DwZlky^l&t-}t!}fgYd4XFml5(h>~De>HOw8dUVRceU~N`k-D_ z>AbBAS8)f9EUqr#^x`w59gcZmH=}OED)rX7NpfqQk!wYaXSx_=uG1|>l}e7IbaCuV zsO&mM+|r^*gVJwY56hl_1oehUP*VoG3utbVlq@8=Sn>hEE2vdc`Vj3nMUYElcA?0$ zeH-B?!?rBp3OZRDT?VuWG>~R&;)Qc$qV-isKjN6BcLZ8ytl=~{WNB^`Y!C)24Lwlb z)(fHHzIN0OwlfE*>9IjmiAwpeeMdl*`3E>^2P0<%gdYsC!N45Dwa&(m{#Jo=Gh$N# zeWPU1bp+^5KS*-*Jq}1(al4azWqQ9=8(j{Zez1-l8sy5z96T6gcNgOiDd6}9ZI%&o z{$HginLg8-NVmP|MMVJn2AxROCem5Jr~D59qWe1R%SjL^=cn?!z5`;Anq{@Pw7>UV zx~k_-7TNr&w}9Cq<_8DjhnkNvUNX+`Wrro@50g=h467wW-x7+Kt*_s{;USgAvn!2y zq{Q)E+#Sy!0?%d_>kx$^XBRc6;5KOm#;Q{glaSz=O(E$%EXp$a3q;OcG-uNjLa&G3 zPUAuIu_n)2k&6+g!w!v{qoh?mJ|nJ&7YjH{5ynxQTdFbmY2)=l<+VaBcczg{j-S>eb6)n1oUB%h2bf2xsz_Z3Lkq#)?E}>sjkGJ)h7^7@P7Fc6N z&XNPd;?=*17X*{`Cz?T3Vzv(o!=Z`6fs>OL7%MQ-c;fECeJ$yt5bLyk8Cst=d zABw~}n3qGeWqemaV9Flj(eNKc8_OE)BTCNheMJVA^cNc3^RF2c^+#Fx_8LcwsOTPS zW4@Mdrj+!?xPPPU*a;Ikmm*l)k7Arcg~E(}OliEyK)>!0W1@jR1nA{7KRkL7yxqTw zy12`nzA1k`6ij}?*Bap*EN(U=lFX5?s-?^v#`PurbWU;C88-e>*$`UD>-@?tlx5-$ zPIQQJ{hEUGM-pFxrUpLB!FW^v3E`>XVQbW9!GjP?o%6;0YXnEp=4iEM@}Y~<=RWIC z(lFOcJq+I)Wv&!p>{x77QCw$woW$6j;zT&@sAGLi7phm^;*&oTWJT2y{4VUn0eWld7(DT z(wKe51W%9LLm~F9^_AI;-9}res)LRyIx@!LZ(f#}2c?E+E!-J-g`C)vS(^2gatB>t z6;p9o!O?c(Q-cQ68*&!o3(0q==`M~WkCr{y(EsLMfV$A?grDo6Mv5bytj|IAzk;|9)MX(6<73o_+*urlY*Ji(h9 zJR6xQc-Oh79OAbRx(9glN3RO@3r7g%x4Lo5K?`PqT=TWiIZjWJO->PF=8eUyQ68)15zLU$!@N+ zxpcg-i7pmL8MMYKK1$&l#jxPFlCw^BcMFw1p^IjX1qrf@?@b%)))jbtBm6#f>=Ljv zfb?I6%uM>~*0lc3_r!~;3fN*)0iw4&6Bz*1g^XRK&7EF8R={c)8r;FRBYg0PwPv zGT>Qrg$z@*@a_$iHD6DYAvvrKR`CR;0%Cs__xB2c_7>X1Cwf2&r5bZ7SL>Vw+0E5DXQ_-%#gh_Qy@kBns>JdcBwRjv1Cw529;%r z*RCZ4_x_x?(x>2K$w2$<-y~$VmXt8@{65+2{JD63|8DQtCU=YYoW$hveh zQ5%WcgqPb@?M6Q3+}&n)4|3;o{Km&vF*bKqGIVlJPUIm>7Sz2elrFf8A1^OK$Z4}4 z-_({Uo{_goqhZ`4(u#qsFho2pR1d-&BRnX;RC+u%)H|x3w&3zhp6U6ut}h+&M1N7C z9PO`Oo5wK&46M7d3Rp^h)-!F^Gi$AfJ7H$ zpJ7`|rw&es1-zRx4jDJqfs}TzG46 zr*)}s&Sk6)2DEu)2|e8JAX@ynHL+DQ$!e_QUTzu(*7`>jla2W9-PpLR(7N?b z`fGgTjsnU4~y`3Jx(wtbXGcrF| zTA5EXBS#V{j!2w=m|Ex%#7x^_s zc#wr&+k<={D{_Drd7BsMT6^?GL8DpR;C-M1+r50J zXGNaoWid7@a<~^cEGzPCFY>so$kV;Z{#lVDyvVNw4VO|CUgQT^kyT#g=B&u`y~wAt zA}4y04`fA-_abl0iX12+uaIv^R^*{x1 zoiwb0IU~^*T*@F^-orKu#yai{g_jD22pS5nQ-bOi zn4$0?2IHSl6DT|`jd6bu<4&n#2IFbG{>v0jcHxjMi{zR9!SYZjwKMS`l@R<#c%5U5 zP{^RZ!3`SJtvyk{Tojj%?^WVK{efN{u`f}19b)^sqyAd}_mBEs@avt%&+QBq8T?M} zhTj~eWEN>xu2uZbHuwe7_&qLCs&w9Kq(&Li_WalI6V-`v-J2%jm5_NQ!&50aY|VA^ z&((kS9F7hjGaogEHn=`Xf6YN$oS))9vLkU%{5Z744PAT6?KuT(5w{MSF{7T zjo)*qDT2v0qr6Ta%n4cf!@$`T`Fz-5W+-S30aOFY#m6 zEGKj5=4I8MquUukRnT=D!hTSv(D;SK4QC5c(h5|jh|G)dx5}({_&Lf8xXZEk%aUjn z=jG%6>+dt+L4^N!uL+kBp7tvf7E`e3gBq6Wo`UHsPq4KM%9STM*a97UH8f)!c>3+v z5}Rwli{|khuwu>;ITpW|LTaKpi0!ZYP^!TFC}UJ3#|25c$ao~z{K~MB{>pmM>kn*> zVm&wHkVWh_waNY@HWzW0#VA7;e__|5y&QvP+o=B{7sbcmh3vKFwF{3+%geS?^cH%4 zgGA&gxo^al-O|Rc-0R;{tLDqZ?n^ERFpZuubqHxM;`8Gk->EbO0fmk71bxF)$c5@ZV?w=p;TMf3-vosi4Lq7jmb#G=pIqOlu$qk zl6$D5vP9&Kc6q@kyyYUnB}r0DyTIlOEO3D3v}cga%R(}Q2tH-#lv@rHZ^BYTQ{6 z9oR5*%E&o$tmf|mSARqPEUS4kAwduB1Nx0SdqqnDno@VA)jX0{0D-3o-=#C)qD?Osu8i8?{EPT zR1~l$dwvRd<(%jhR`UYFQk7ZLt>&v;&^|6G22~Rjbo%V*HRe#B6v>jvD{_c_o-u3A zG^_b!!luY$2nk@33z%m$qvxWSp;yhenhO-J2dJ@)pm07Hj`9*jH4L3KXZClkW^}Il zxu5%4TWS8xIn=(5Po}IVTp-H@qI&jr?avC&@?7uIk4^PBpefXG_l0ucU#ZBjhXkYWWIC6VI7CQVNJXCLL{TunFho}Yi5lk*l& z?@w}a#0J=lzc4F&eOB1}?)~2Be*2o=v&mPuip!6^{he%oE@L^46F<4HmBQ2G->Y?} z$9~4+GNC8EiiTEt*oRhly)(4j>({I*LWm)0e&LJ@;3G77qSbUFhBXbzw;{CEw2*LP zvIsi_{ImCFgT`u}M-+2OwexPGkkw|_Z!kQ=7G_*=cm9U2iw^5%#0A6OR%>9d{B1H; zm%`ZW*f^{ts!9lA{h-XPkKwtnIQ_!dbN!FcSSI|Wc<=n}C}@GtsWA5%bZrqHceL=h zBZSA5P*y=!S;FGl>IBiaB=h2Qqb;%`#_ zJ@}iQs$z-&scilh5uN*;&aKT~!+z|%4Z_!U6hzAmU!#@o`$qKBlL4b+&m!U{8WA?g z2$M^e5hhiyXq91f09~U%$MeDPJEFd$Q3Euio{~{WBl1i}!u*mSurMa0-qDl!d?KI2 zL;B!jiCE!utbHWC40ga;-cGf4{hxbthl^v^`_@*ywbAqQB^_ZeVeg~?kCaK5l@ zVTZu2)S7rx9WJBT=_&)cHgSA0eVqBSx4Egjpt!G8y#b;|%>6 z&cn zXT?X@I6%Kspey+RKC_9qOC!daRKnYnXPZ>g`4;KNvxwkj4lm&$hg!|Y8DL@c$vy^H zJD;$7;6`bpTmvMGKlwf@b?72Fo~R%HMg%WMXpW~_%`fpz4P_okwh)$EC7f|(NbB~n zjq_MSa1Hp=FrbuOT2%<3NP?K^m%uVPo+;i86Py0Y9St)zZPnmV-3DRdZSNq>uI2b< z(MCHyGM5b;cJkIIek-6O05ykQ8+Hlv!T&d(96nV$yK!3*j*GWDMEA1B9fPgr_YbD> zu$gckZiv$SJ!q}Ox5-;s5~$(Otjr9DW&uhdU_?=sLapyVN}Lfwze81oNyAjrOd1wk zDI#cZ6{%s;K4G20q*urvmm}^?0&RfrBH_YxT@F1cSYhWzkK}KLM|(vnkG_Dv60s+b zmZQC(mgdpN^A7J%`e*^-gUU0wbeBklW6Si` zwF&a&cp_;#wNsWYHe1TF)gSwyU_*tGMSlZ8uzsNkqdy}E9?GU2N!PfmSM)T2RDpCM zQ8R)K3soY$+9VT^bgD_FOnJOX);oG)Mk);rVf@GyR1_m(X_B9~gM$uuBX)qGQCs8(HQbWX8 zJ`1Pox`@x+#8_H0I)bml+Ayh+W;}qzD#sp6yl}HFd~}iOpo|QcQ)Ca9u?5Go19Df-$lOpz z{>J`7N_bxodlb=Ed;uS=>s0P2i}B>BenQ}{rB&s445!5ZZqJ5jaP>3+lG659JEP`due5G5|C@66Hoc8Rfvt3ctl1*%C0!5fzXyM_H@( zuHVV}93Ip4obc5DC)nd6nApF^9!Ha6Z|w1O;%V+Qdpz2_@0Bg4CD?zTBd(_{SfnrP zA+oG2(x0M*bdj#T`ahfzGW>@#{$Ilx;S9yq&hySIS@!)ZKgBC^*@hm}m>g_1p#xxP zoEzyc4iVpJ-pqma+gq#iI=fzO{73Hf8{sE;xNn5xlqvh_%Qb?1!>~xWA*{0R`EW^? zWq8;|tMMzJDAIcJ7h5JH{NWbTT3T|DaJV(NRa*!XMH4%wj2(46-&u{90<1a3&cIMG zr~)IW#h1SChn1yTYlgKg*??#mjL*w$+;M`{^nM|icF4+?^DDw6>o}vgKJjWm*xKf)qDd*?M?oCyfCyJsZ4dDS)3L{Xq$EO>&jqJgc_E+2d7N)@BY(*3a9tp1hezC&Q#RFn8LRS)T2mN`974;H zRjuqtdGgvJ*7yIRykpwpK`h{`roVcez!RMwv9K7ZddtX?o+vzWZ+N(F!hV zF;Pa+ETS$*78!8VVm%1$v0?iO5CE!L>^;Kdn;$Ll_G~wquc{Rj^%q}JO3CdZ-nQ+- zghgv^HQ#Swm3!P}U|IS7NMVgitdX$UdN8}Vl&c!Cs|_?dsc8yr6k-<>20|5LAp=3# z=PHEJhm{jHWuIVRRULMOfkhoA8X|WKSL#=PgDAsxGlh|@D#Jb_EEWFtE-nzN3)^TQ z3ZgWlQH8A}#uWOP$w@U~4;VNq{3}BH-57}8WOf6h3n)Z2V6%m+>22Jp7d zUC776=$P)?xWoCX`mb_9KfR5cQGaQoEcKUcPNgw#(ORG&OKAF@5$PA$0V!y z0Rr|)xTXBN$(D@^U7zXxDrfPs7O(yEjm0be@H%Dj*yl~zfS42rHhwkPYTCuNaIm3E zn2FVN2Q(!b1>)xvkn(?WuQ-v!+Vb{6^?d5!5p>5Cr~J3_NysmzL}=PWc^mB^1`2Zx zP5dYjjTJ}ZYkAmi>-%i8X9)JCpuewLui9!pqF^+%epz>};q>go2%Y4ju@wQuq_Elv zvN8`9CdT(xlkufPHS4}+nOhKcazlAz3$4dT7uW9`7(oZv7u~XeV0py-OIUyL*r|&O z=M9dtG(9X>0d~Y1y8bmI|ggux^eRl#AJ4FG=UM9X^hKhCQaLXRVu!#LFUD z6xH3-mEET*(JIRtdcRW@x8i0`Rr{HrX8fD;(^>nNpN`C$pS;zxJ7?{Ej@paN`|MuU z%(8aqw&(sACIIXc*M8)Qyu%N1m(0q7(sNZDIM@&qNh2YMrgPN-!oX$CRnv*_=BkOB zM&_yuOd6f5s!W=1&sE|M+*lR`47ko!0}MEGl~^9_F;{&_%Ylo|Rb7OY_oe5m*UVR) zt2UUg%opv1yt(QL!iIJK(ZK3lb+3Vib^lCZ&0OUW_U5Xa47AQw^9?jp##IV!=BmjC zLgy;kvJq-BXDfu6tA-IaWuInXb*?(rz%o}IM#!D3WDnWQRYG+ttaBCHuMjqxp_2aSX3 zOexJb*J`$TOs78sv2cb;?8W!1z$t!kl@Nb%{&j{hSOrV z?INC=dAx7!S>Zg0?8Wc-Tkd{q=l8hn9P{3hlXLo4ndj`CIXO){kMX?9<9#dGl?k7o z9nMNCuot`E+W6hg^E0tDVoTP0E<`&070>fLpYnL|12I_h!r|<2R$BQ!$NlyOza_jM z$n?>PR>^xd@O~&0;Aoy}c)a*uWQ9Ak!&zwsw#)r?DdF3B#=&h1;fvnmgExPN=LbB0 zCP-OY0zBKG@i7<3scxPP_k{cZ7#`6c_-|?=}RX9M}#9d_D@ERPl9$r1#If*S4 zJnx@+C)?AVV*4Jf$Uh}=X7gHhVeAfPNBq28%ie;Mz^8Ofie*0BYVY@rIcvJ!*7H|` z*P$K+F>*R7;G34y=rzOdLTRh*XN&hRzelY<+_q)|R zhL@JpJs5K0lH;>YPGnSWHJ>Oi_1EWPl{8Rb{aLVx4t))5R;lHuQ|dt;RJzo6nGCel za&i(Oxux8LF{QQ<2Q;OgWi>x0FO+%)<_-djwUMcX)K!cnw4PS;t$fs6&jRu$fh@^_ zq%K!WMw;tsR`ccZLar1rPGAr04tuVFmAY8Xr@OEfR`c-!dq5T}^*+$R0*dW(PhJ#@ zX$!69ov3i}#5Gi}~}fy1{DRA}?Su-D=(-ut#LU_T|p27BZbOW7_;kXb5YY z-x=sa@c6YrAD0DPWHmd)?U7<3QG!jOw*O!cUUR$5`=+gQVz+OV-Z!CTIWH|IdEcRW z@93%2U~XjIl~(gXE@b{yGpy#`yilE<1a~7_w;Yz0$R9mEXsFD6a4#V;IcpQWndro~ z)FuHg%K|>gYJOUT_LeDiGiF>h<;ppx{u&j%V%GF2b#tx>4GBX0JBXu##bOF?H7}Kn zPRq)uNQ{_-h_j|oo3EKn2SiB{fs7Lb{>UtNpVeGV+#YF8OQ$(4+Mf#ck_doS^TE1X~7qph91)_T{tJvmbR6=3g@neUC}lliL1V z5}w*U;rFu>UhgHGOD~?~CY*=9M-m>Im5_c}YZ5MiF<8x&1~wnqGX=Id3l^duWniJ} zT&r2u4%*`*K#RFo%OP3NJ)>CoeF?*maJrU70>)NbkTMN{`8VZmav9!ZSq!fqWbEKT3vdW>M)!fS@ zVu)!X8!*#Eusc~hNE5-N$|QMdR&vTboVY#8Wa@Ow6wZd=k<)TaRwBy$Kwi6-$ymsA z3(-`#-9pw5Ehh`Suxv=v4>wNT>v)$yYaL~rI+EbntOUO3jor$M&N6j7Em~(f@ntP1 zbOV=D3mFbe_w3cJSPXB5}fzxj8@PS;w=T=O|h`C$~plaei?@@xS!1 zXK^p!3VRn9_bD#!TU1=^EACfp-9mX!@qEQo7C>&}d4Xp)k5@*o{9XmU{-u9CGl#JV zRgROZDK6&N7kZu7W-P;stsyBLLJZf6qJ3n2VXx!-!r$c{?U~%vEccboEl>nj|>1D*CD(hjz%O%7yI}m$VzQ;vDCMrbM5G-!9w1_z` zpwF%ZoQqjPPl2cE>;(U*p%v-lAIrVtA6oh`%&4MKI*i}=_rFoIzy8)OZ!vk|h-u|t zT~){}6NZcE@&cmEGu}}Vj&`w1OMXX8PO>B6Ey)@pYq_gA9iJ@U6AX$akK8ko_u$H0 z=9pyOo}a|TZ)GmCMlw+(6x%~#r@YS*h23xzc7qf5VF!)pq(j5l38t|KVNV@uTyvZk>R?vG;k;H^J93HfxUxh8EsbZZh3WNZ7@2FIo#U7dQ0^EY z78X=HUv}li=i~;5eQe#z(a)5NKsuwm{bjW4IWl@3aZzOPsTuk}w+ww;LibOe-q&p_ zP69RTHmdNIO0y>ZLc4DIN{oJ1TQ`fMNKZcs_v`&eRaRB#=(n{xhfL8-Tw_E$L@bcLJ^nk;97CQu5CxwKXk2_mb%qnj8Z zT1czOk5uJq-P;kl_t_Ae*F(Rb3xpgKN_R~x*n6|bFZJm99YyAnDOd26bp4VSDS=u^ z3IWL4AKZ(5(CU9h*Ev+0U2HOMxyKvXs^mP$+mJg108w&gFtnOES|-->s_x7qtm@7R zZ)@%Yn1`qCqz{w2XSdXwh$FQsKA$B_YEgWqDPRv7%ArS1D4TS@G2jPN_2eA}9GT{3 zLRpH>ti+thoMV!(oX$zsnI!q5?~_$jrW{m{22Pcs!weh>NjVkeDMJqWzYQxuz2ZX*TR14Xmn4?=`Ss z7FSrKDs3RVCuR#wDwg~?$*WB&l%|&wa+RiGP1K`Xbw-**tn+h{XPHExbu=NPKFvn! zAOow4)IJ8bAWBy;n|>d2fM`#Y{$>spsY-PVVJZ!=RulRkRI2v^VpOWx2>jG!C(6~N zoR1+=t!6nT1p>3PQ`DIhvP+n})TE&MsMncvr_qCGLk%E$i=5;s22eYVn9OHq zDE@wEM)Vdr$)4#9KT~rgZ%Wj2aY=J-NRI-&DWCV8s&s*;Qx!fhLnVnFA9I$dZX>+> z%7)!i#puc0G*eQ@d1KiDTRtUp!Ibkt;Tn5LVf4Ui=jGbEbuNGHo!rbqHqE!kAfoS+ z@7#dUnmif^Z1cy&2mB=D|51mNX8!R66Uad3(em;PoE_(@98h(bEY0oX8u>s)3*aJ zJTjDapOA4tfb=UCt|Htf9|jI2MF19C1FDmg{Dq0zLk<={Y3EDuk}pD>NXMB3nM|za zV@(Q`lMgW|kVd~^1?0)epAZ(ly7%<&^Of4E#QYjzBLqIF>5atvFkvGx?>&e6Ob#kL z|IFlokSdnc=G6V(Q^|F}l&ezoG?NOvt2C97qUC(>zVSZUq*rP&Ip8N-ssvt^tG%~g*jQ5T3B9m67?YSl` z()LA!{s(FMR6vZhy?3OJF&V4eeXz+`kuq}krwmb$n!We5AMh12s0987VaR|4{xl)F z18E%IgvD3S1qM*1@+!ifGD5Aj_N7r< ziFP;nF=IXc{avj1(9Zl}?QRan_FFK^FppM`d3f201;su^@SC0_yI%u=Ch+x|VQ)rX z7OmcEe?gT7QIoN{! z4F{0S9XZujO=s7*;Bw5=xRWZloI-NCs*H2Uu3>vkj8!3t(PNp!2L+e+kwpE1%b8+w zx_SneGvsr=tpwW(`(}0$wqiBsl7!psS=Nh^s^AVP%nbG|lLbD;f`Q~OfR+ia)_Gn% z#c+OOZ&TX~prKP6lJ@@eLD}|eS^6Mxg~k0BuGN~J56<{Mkon`pz59zfQ$~L3S=Gq= zEAv|c@G`$;&t;#Q@zZTCd(*_pT$WMjSg!ui#Yg;sdFQ?MKA)i`%JvttluS*R{Mzf1 zp~i32GS|re-5p^uE_Ln_6KdeHjMmO2#+$q3#$}nitmYF4kw)jKBTSm!T!JYYn|=x; z8k>9rq;t{^YDdNl_>T$c{PR8m^3eH5%+dIqWlY^+zUo}_r1=WZ{u3c@uDPGEut2N% z7Y0`6l^+>c*j=;2ntA1V!e(AUJ7A!74w+`4VaJy$v@uW{V<2?CIM+Z>_L&M{=8F>u zo3h!HkXq>6Abg5iFgFM)?%aT33ZP<4jaiL=>O7DjEEQ%;k&tJgw%I@^&zH^(M3yo2 zW5k$3e`ny7zyHd>QQ_MO?U%ntqlULfuK^9=;ayj137$`^ON4nx$MR8_bk`_87Dj_? z7iIaxI-Rdl&#n^${j@RlVMGhl?K(gc6~SZECe(KJnbdhhT+uZ$($yj)saKX3LCn7# z7@=A}3&%SIj+eZdx`{2AlMKg-(nnbZZhd0MV{C(5xlb;8*Iz)3O@MvK+biTV7ys?! zb0eQ!WSnQiSnV!Uo0G7^ZV=mKWx>f@A3dpk%Q3k*hn!`eIN=#t?@tq+UYeWp8-6d$ ziWm5%W6dMs8~IjxJbP`&Wu9+%pENi(=Qf^ac)V}_%nF}KZ}j57_3M6nmEY4(WDo76 z+??aGo((5c<|(;3bv!@f@xDEq72cH<_P(coPc>=&o8KPnx0arsn{(0Gndh+b+?+Vi z3p@p9Wa4YG!cAG>?6eYI;eNY-(YKOkCUkm~M}D8>xx)?1`_pcm#LFXb9-RDsRl#Ke z!!pk=hG4VAbKub2oHKd6Z_~2Ew`PUC@80i2?zdv{9K$0Ui`+*sj?KiW>ethGU2mA+ z0(-gUEQjF{idAj3ogVxoYGYNcJe{GAs*QB+oWwhSWQNC1JdpVAdotIHcjZ`LekvPw z%7hUqb3J8XH(4znm&NU5DfboYRW;myB;!cGc&6<1&#B#Rk23z^T>r!I5udc~PH|J^ zp^1aOlS<*rGuHI>);DBJD($_racB90QhauDCHva}KcDb*dKi9^69dM9;@;p>QJi@C z-oK7hJ#qiXe-^X;%Inlqc6P4273vuSRRZEE|DoT8`bMGdGEf&O)ECh`@~Xy}X54?j z*4@`HA|$}iZ8Kn64fW8CvsiD_7k{V?A1+g7Qm_r)?p{Y%FEMqmi?`UpcH4UecHTtX zveFh9|Cgo46;kc*im_){uA2_X7ktF`i1x45`*%*I^u$Q^Gq{!&|JU+%25*?l%2m>p z(BtK((&I=zaUT#^mbZ3sDULYKZrDlL^@|Tm`DcQ3SHO!!-n(f*k$`Z2w|wDVkcYHd zw+>Qtxk&9-lR>*-wbaLL=SuZ0o%joKpX+sXGIH0N5XBD}RT#m#4F{`n|NAtIxDG6{ z>n4tOFX=iB97B2BXgnr&P1SB`H}E7hSgw~Wi_hDQ^R*3(KUSxMUX~$nu)bmt z_xeQ#WA{;+TN}4?hYyMzc2XJsMg5`Dwc?L2cjVIi-nH>iZc}S?8#ke}g-chZ{ZCns z_XsY{=Pb=d^7&IcwYHwQ+Xgziy?nEtH_1O>X?}kfU|YIj-3G3_IB4#-uC(K`s9tO` zPqf00Ev^j5rrWktunT#}+;LqPc0O&~#b!6efLceCMEHWVed7v|mf5lWku9Fgr_H0f z+g&H&5U`Uw)NoQeH^4*YbGbHU$+f_DRGFI$JF4)FEPDfED=Ukk^8CS0LBT@q=%|`t zJzkJnkdw2tinGMyMVju)vz@o>*b%>+uSLsEEyS?7Ut1_wQ?HyPh*1THDmYZZp$hTo z#lb1T%O|(nbzHGhR3DQ2T;jt!Lrzb-?gA<`yfe7HBR5*ewUQy{?XHKNDMjVmx3?pE z^@fdvonDRa<=P#sg5)wg)f%igL+)>GY^BHB76#);n#;GzS8ji_8{gT6Yv07*E&~&} zhr3|cpIEQFK_5yIu&o*{yuNY}cQ!qj$YG5_{HJ%o=Xm|%D&5q!R!Bx%Cz+Va_pW~N zak+eLd$(tzk~?S(S*<3fvz+atii)G$^F@K&=oPD~wChGe=ql!Yu1?<8kL}OF)`~<) ztZJ-~sqWH3sdDV_ja-UtHOUsD-FQ>+ZY(e*NP$yW4`HYl`yKBdb+AL{O0!>R%q0`# zw2@pKew@%*JXA-kQvOaFoS@Zw8!ZGtwVrkD|$ zd2h*4P75*gpPWl^8CTfjd8L#$*mTn#Pk$dD^!of)raNUt z=$tP;rpE+l{O3ZP zZsAVJV8d2fZ8mPrrAdQdw!$P*Tm|m6uPjzx(qlJ?X~ z5Ur-4@{Jy{Lh4+b&>$r}+4c9pl8o$QU6#r048)_jEWT|$lzn3*8Qm4A>V zNQ;+}nM?$=6*B3D#!K|%xlFnXZO8D?`1DGdbLFJaLK^8 zs6dU;71zdz1m+afU7edVLhe0U#3=J^5{kwBKlr^{%WI*n)Ka9rOe&l}ad(W<5i2;B z)QLYZJW{?x3CdvQ_}DqP5gn2j=_$9b#E?z8r+)6+^UqjhE}rNF7|m2BpC7P-Gm}q= zUJIL(8+LYDO=5u_cCO->@U;`dv1{09Qh`L|k^131bE4Z}O+EG_kc^X75`n}&?LqXG zs`{i0*^KkCDgTHWDtinH#m{F(dC@N2haGX{Sr=l20RRATe3p!NQ9Xs9)C`E9Q(oK#-S@p z`Tfx2Ir~l{F2elkF6%s8<~6%6+{r}uUO^~tGE6vH$UPR|ZL(?js0n)1I@51A3L zekjVRn(~hXtIT}G-K-@YH92&eRAv3{{*hw-9>~N^LTpuH%$iP3vE83N;73xJDqe~tLY}qVpK^mwVH8EPVIrwv7*7D#%Bwwhf$kb#TGW~TvO~^ z!kWz&C9kmKJ7^}{^W7c@r;G?^Rbyx2_VbGJt!g=0L>XmB+WZXW21SSkp;P`ZNMTt2 zHkb833aP0@BpPhEKxIGMd8K@9sAH5gPfntX`y+x4-yNHJ#<2Vhhr3=AVgdXnaJ8{H zgY`_3UY08*xY>^rDDKCWR*L)M4~Vw@ap(#gTgE4o1~ofC=gCU%tNRsx{CA;p-2~Qp zl@q!x@+OhUEb?HrVP&=3$h#{jcEXjk&u?xe1H{t`3D987HpfWPBM#*p5Ib zT~OL7SqcP872&Ri&MLx5zf$bF0$Tr6YIoMGx=6m#W^zGkE1bAQIPo**OL1@$2X5lP zP2$r788&R>U(vR}&t6OU+mtf&6@2d%c{gb)oy65=cBDmN^r}F&$X!=5`feP{riGc1 z#=yX4$<4M`&lP?Q67vzM7fI_sSr4K@pFr4|KUH#JZGJ$V&YBT~2Bxcg-b7JI86V-2 zKu)23dWDoKS<*Yqr1q9ZN#@+rNfeUqdX3Uz9F_)jrL5Xq0*EO?`PsW_l(~T);jQziqLIxOZq*PG>SJl@w>-o(avXrEdt#`qIW{mox4plc53UlCoY4Ox!+9TJe78A)L2T0jiSv*P34)%L$hOT$L#<- z0S3ZRS2Bdu;dZ+nyOC}{?#Q8!6fvPnCiNnfCE(bDGt`} z=o>kizXK!3Gf1zf1Kqg)_x~lCJe%^*0~tfbsnWJV)Yk3X+8jTBf>1jhmwf$08L*FQ z!$H8Y($6PImpvlbn7VSwX=J@Xx=GyMO4iDFrnp%PG=08%hV3X8hg@E~s4F+eX%)&g)R`gbZOZOBq=|ya!T6sA0z!bd>90`XfrwZzX>$ zW5Bt#(vF{(AIfXpkHqoL7$8gEDd!68MS}usdNGSn$*rYRofTYhF1hIX3H_GbU$b@i z<=6GYJNohfABN`!tx@Y(=`3Xrw2HcK3E}tnWhSmQd3{XFqH{}pbg6VCmRgs?T+c(# z2we z$z+fvg4Kk+j|{T!b+?*yLo7C_ur@ZoIPCmMhPCpu$mIen%S)^I6C#yYT_Ebmcv@&V z&We-Ss&+!P)0+6Hc#PKSM6QD6=5Q~ho*5G}r&2IZB%Dq|S*db#Iqeyk_ zT|a|OmQ-$EQy7hV(<&|X@f00%x3DMIZIaziHZsYgxtYX#=&Whn+5iUYD$bedBQ`bSNw#(E3PtR+C2P&da(OzW#1TnxBim937;kh9e@~a77vL{7;(!Sfd8Z#$z0b5C`NZ9Pm@z;Pkl z_vi!L+gc+h3PJ@S6b)D_-YK3B@I_JubB$YNj>rL{2WvLu=cPW0)KX)quZ!8xf$jRnQd`t9cx2cqCDTL}e2N7BhS)Elj%T?2#y(TOr$j8FM*nW&9j%!++` zWjcuy!fWz*WwI{shZ}i!o8nmbs$A82^(09nj7F5<;FOkpC+ZhLXU|LjvMQ+ZKqYk; zBb_SlyZr*Nqi@Y*QzGoVZpR7AJL}GZ)?ZN+5ukz;vst18sEE*~Q4&*;T$J6ox{@iK z%k0a7EqU4<)+Zj|q7A`stHjSFqo4gnaPCa}I=}}_k;X{KSS%d4@x!rbCIaOjg*lBD zc3ulR{s$<=*+5SSBS_B;3E$j>TaprTJXTP%s-K0k)ed7YD3S%Yd`E^~^@h+8uKfV< zxiVTRtlRO=LXDL9#?8I*uxG6f6!^*cxpdh@B&A9;1$kb^$;HOiV+~WhT`!{dYWI9% zohZnt9b4;Q6*lzgOtcS_rpiibs;Kmy3ccSD+~U5ISj0)mHuRR?N-DGLmwa+w?=Yz4 z3Ki36z9v8@=9p9ghWhf3CfuDoSYfTA6M@c2l(B#^>>+&OBm_T|k%5fP(W2*z`>QBK z8O3Jcwc*(MbZ*tkrTiB|>M%1&B?Of%JX>vi>h~s=Z+}u7Y1riA#X&p1IFNO|%ytge zJx$#>f!BP6Z1d~Z#Qo^{1p6cGJXtk*BHZNSMQ8(=Sg)Z`%*swn6uCTukViZDtsHkr z@RD@(KC_*599~8L57DS$?&71V;RLB}+`s%6ZVk6mV?(0g<(D&BS+-TenC_L?&zW6f z52-1{JFn;^6bU~8J*}o+>Sr?^-Teiib8s2_faY*;qG5gEM9S{d$};=W{ZAZ4-K8yexzwn^Oeju%4hHvB{m=h521?KNWq zR@2`lXf)R4f2)e;pA~dovh&)x)mTK23Qu3hPQ}RjMW;;2iT=~hLyv=gY@D!?9a^bQ zGO4Yr86S#Yj8rSkAigjF?@fFdhGuoODmBNp1u9|qME z$2du=yf06)w{Nfi&zv`&VHWr0mC9(_MY+(&^i7#N8dSimFdfuIEvxmh*YqRuN>8i0YTL>oj zm2SI@UpDjTb60~VJ%)*S(V$8YhUsF!=oI{798QgxAs|Gj^n}X9@(3M|>2gwghFjnN znHirY%EbZIB#9rUL6skoBt1VqDcvUSJ3RdD`Ekq7ph3*cjw+*gbNK%}Io@yj{daB0 zO~ZUoZr!Fjca|Hi{Xqq*ite-Aok(!#uPy|OZp#{vARR=4n@ElbKZB zaowhp!dO>QKn!v#?uiYRZgm}y7ruiaMJ05q?W@7{i3IzE0#zxKJbhq^EGKRH@THV0 zq(h65$u*GjTj?$xxrq5^o6-e7Ap?GhVKtH7)c90({JV;UxN+ZY)k4&#FW8f)w~gH| zQ9b#A9{O4>;^7ul;L*M*{~0ng5a4cZhH;NGERlB2ysu_{LVbvq^Z+1V*GR_mHpG(Y#0hRLa29*q1kxmC?@d!gD5f0=n>ZXtM`mQ^ zFwW6IU&lem0YpbyKw3n;oEa#hBch|bQ)WbuLUoY5zyH0~diF;P&Rpj@*Y&>d^`=eM z^Q`Z6uY29={#xt#UB`uAv|imX+@AY&@qH7C+_q6vCg;a?UN}DkMm!7>`RVT``Z%CI z@gq3dj_)v*p9@`B^0~Z>3kW{1kbC#PjpHoqHvzVxiANd|E5Bi_UH=z&=6A|c{_NKz z3{BVlnz6CNAF7f+EF<^a9pu^6fJ5jNb9WdIjzKw7({9!dQ?+2jp(M;=CtF@^vAz9+ zmePj^fl{0z5&&&S+eAV;^2@}-16To^nu|$ATB!To$JLwdmogp}G|H491`pW~5!5}C z>EyA?jmKWeV~PFFbl*{?PpJ9|5dBT z<)E;Usu*g+?t#Yt-O+O7e80i#UnuScUNv)x@idYRF0ujqfmLNFk5tbl{?|mXzM!B3 z47;iMsvhz0bvGE;ANtx1t8~;)V?jP?6v_d;hegfCY3O(VortNr*A+lO=p)^Gp`AC! zIC$gIE2;^;>Q-Te$B7qh5FdginGIRENN*Rm%*)C@rL135b=RtX_50rvf}hYmdxov-9-TAe(@q82l$FUSVIs_UTWo;G znTI|kZ6SL?T{jvGX0Dob5_hT!cteC!>ULDAva+mH40vAtU4XSfX;4dBCDgbao{?Z?4VcQ72-3?71 zGzP%1dhZYzOFV8s?Tkn3eS#t5jcMs#~oV zSbabB=ehTW@IK$(BUIQ1yoyHS`BzO%t)Db!&upKUC^KfBPpfft0%GGVnP(6qJ?($V zXleTuhr;2vZR$Ys>YKHWCrn9PUEaSU|C*a#x>IQ6+?xN)o+tnAF2k(9*J^`0zmr2f z&i=I-Wn-=Ox7-*EDV$CxYHC=G_IM(SU{76S` z)+5cY?5W6}Xj<%CBHocp#@nZ7&DYh?a>sZ^E@%0VJuLzM1-9^-U1zfywc)ka-uqR(=4)P`u3O293H}i^yLEQU7T0%}sDsmVsU!E{ zI98=4tkG5!Pw+rb>ZZ6j{t@lDx7M7{hJm@QiQn%0&K07aH8=0K$--#2Z!a*IM%&T4 ze9`e}H1L|l>*=xtSHjkPy+9aX{~upXb7Dieo<*(Dnzd4M0{2wE2M?epYfg}{x)TTA zM|gxrwV+j9!}PYy!8Z>}c6$yf8#>0?p}WRc8ne=dV>+*I&Hv~^BkgFuI+sHnPRudX z=|@ptBv2vzwWP?65YO2Gx^_`?T*}yn_)z2 zcKyIIu0hX(;=Os|wZ0o9iVT4V0PF8|t1Y%-(dUC=j+afhUwC6}&Bs1RvCgUOe0^&t zPi!w2h=ahxaV;bUhtsz=tE7?7Q;Y*?LtzYq{zTr~i!CK{A(Gg^IJKI41lZ9gGAQwO zEs?$i`pfHvLdJJeoK$+^$eAFew*zpZ>;?=WL4^X1gO!2s2fp3{iNm( zU#AStWK8fFHf;v@muhLMZvLcg6#&SFxq#S%-z6`QcIRb!=HP|EN6n|2em!ycoi!i* za}tpOZ@m@Nu}eTJ`Z&kK1!Ff|L}(u#N|HodV{pyA8)oj`)oQ$ zSIql}{hTJ3O>@YD-4=g2xT?1m_q9=dRYy5RNJo(c+Lp1R_dq`Lzm%pMOo5f<;#vdi z6V5HzKC=?R?hB78pM%{CWaFDCb4*(;aVhsy{tMJ|XtcQ1`;HB8z=P0AluX9k{;5#m zA6mQJEQKfXKl*zPP}LXUW3X8iwVvsR(vk7m{P;Je=GK{{;BI}1a22_w-t+Je$sZE_ z|6-yg-SRv11EA701pvcIL6Oj*T5#dF(NSvyYuq!hdl8 z=;e?x&wMn)RlSIbuy-7KwrP$@y;T>fbAo>suQrSqJ@keXr(#<0oJI10Jl)Wg$o;w_ z_v_oFK*nLerS_uJGVzP*GYl16{HDeUGfS;q^QOOri~jM>eftqPMz*hf_4<8$0u9{Y zs!9{mJ}W@&+3}VlS>}7x!Kt;GCikgnSj)}D9kOxRcr+R|!rz#)Njnp9fsMgYB^@0% z{K4ho$^0U>h=ruPYurMfu6uQbhOF$_R2OtNHHEz7M?+oyCaVR(pA z5o>)8B~8_Ws))MdydHX(q2IVmaD6O)#d&H>URVEep<*g8Q76p-z(bnMTYTolF7sK_ zb@!2(aRH;tteAM$gmQ&GAZv9fWvcFCU-;!^YAN$pqE`5*A6Qh)?lYK<>AF7Gfj_gc zsw;n_r%>TT@O1Z|DW0xnP8Q^SEPsbnyl0PJ_HU*M3jMV^^-SqwsB&-vCzvF*nL^NK z5`rFG{yW$XLFei{Ghj?wmkj$(afphxBtIeRsM}a~fkDjaD_L|j)e{2URNc@7fk?=D z-Vbf1-!nqL->H88M4k>n0_Jo5Jeh>ptCxHmg4Zl>m{)h+MV0*2X6D-Z`}Mo1Wj3`m ztx~bJp7<=Evzn)Oosmunj3a_ig5Cy6&arq2C!!>N22xPcRPZXx+VNt{knUJ9mx1$69&S=E>8d#ZUvKMeNi)EiYJ(Ac zADpP9EUc9~;)&@t=*VD0V)BDaS|>la{Lr3&Z}U8LuQa-bs|+7hW3Dln$X3vtd+L=I z=NzMtw^aV?JB9D7$i!rmsX5MDJi9~tTZUa8k#kRWTgQbhaXF3c6%*H_N$YvYRnw8< zQ*h#`_UF4~=y1aK3KL(^sX*zL=dZmd?4ZGG{WXD#^Oc-6(qNYtRT}_dZ8WXdV2}@5 zAw+0LjUA4oVO*we<5#v*oY3n=Gir8y%CjAtp@Y#B)$H2oqc=ezwd^>baDj$;SVQ9u zOsaL%GGA?edKQ1GW{`XStt@-_rBrB}!}1>4BO>CrR1Hm4PMj_y|2nKkt(Vjja75l3xvUp_gZs@o2outvOBI}s4uIpt#QxudHw=2 zr{ckl>Z_{UvyLo`)!B0vsbP)zjsciVwP|T}B-@Rt`X}nqRNeXPTQZewHX5~+$Ov?P z;YI5&`t*txUAwelc#KK`nLP(T42U=6=omR5PSw5DYTW~0b-gf1TUaWGM?7toBSl+htU0y{fzfM?dS=MVWZJAIi0?Bupg zpImCa8OP&~DnEaN#<*W}D-MS|UAI#+XUjueO|*=yZ(-E79|)zHGV|H##)c`Mow#fW zQyb=QTK0VY)#Kd!&1(fUyNv*oK%euSPHGX##-$31&K-P_6(A(=s}pFr7XAKH&^KWY zlUveM-399YROKO580huR)!=J(ITB!|N?1aPp^7mSq{Av`%jcgB5S9(TeKbB@_la{1 zdYh)}*4Y!s0H@yZ(GSSBy$86{-cs-{KXsc2$$S_H$fp6{RPBnBZSpJKuox+hnVZbsC{Mr1 z?6X*o3GRhbKS21yU}Q%5@pC%b3L*pT^BJg8pjsT@-v>v6Wf;N6y917r`)7(6;DIW% zfOy-)+r4`0)?32cqM5|DXB7)|Y`akpjJWMpJwQ#`(7p((CO`Zt-T4{6Kj-%W=nHeF zslM_UhP8bAd&RO>|C=Uss_skI6Nsz$9q$KMlA|Nn`D*hcYu;PYvGU362^|+^pRL(F zU8&`K@SP;LPu(>A9Amgxa(vB4|AiD3H_t+6Zn!S-ClfEuOw4?cPoZ&q@BnAQzQw3P zwr=KL3rD?pb{6Ui_5gU>OK_OJQFo~G?PBhsoV%ar8R223?!xbVG%gUKq#ve9+W1gONf7hv26DV@q zbyq}oAAHIUZ*QOZkFb%qahVKPVW8c7EHQHvX4HH|_9ZTZxW|+-dw<4!|Im6h1Qjp< zdCf&$-3ic5*T-UOr%rko9q5?cSVR4s4!5bwKG~Uj37nG|__&VA&S`&TK#~2Z?T44< zPK9sK_ZL1?i>j~Yo2%k{0rj-KFF2ej0rcGclWSjV&OJe<`6!H5Eg)Cx+&w&<*&IFA z`$y&jc53ynS|^WbJLBQznzkpG?ZJJ$=97C+lfF*Mtnkk3ECb)Cv_c~_2>h*Dn+{~JL5+Fu*eD8~M=045K>EYoF9%yKOqW8Or zxleaau59Nvx1GN|A(J3iMPjPEqP6CmbMOqG(JU02>Ymv;moJ0unZ+THIf~+y$0|Lx z_dZP>hqxgCM=;XSP>-&t7h835ORbae+Mm9EyiC^V!CdeHF5B#JbDm3k-vJr zf#3$N`N0PAWX*pAQf)u)oNB7=+oQ}+eXIM3#9={9(n9qY1*}rd}ymu#! z(CbeSKq?*(r@)G7#~}9!%?51I`z?MNomS@q?UR3aH#yrUKYE`lFhVc3CrBitoZ?B@ zPs*}AGc?!)!6@FZ@x_#jh*-d_1_MJO2{!54(7tdQ_nBB z^9&IjYj*u#3{a*a+A~C#?BK36pyr>-NfG{VIgv>3Q`Max5h83=&dJLCN(IE1npgru zdgDUXbwHWhr|XW5-ZXi2e@bo}9T|Vh_9PJ`QZ)YcSqyD@$6KcBCX@sh=+6Mc6+5ob z^HIizn`fLGkn_)FIb0Japu2slx(SY)LfG;6VadX&Y%YDrFXK&INa?o&% z^heO`4*Xwt0tZyb*$c_>sWJ6|DfnkHxdGMe(rH_G-08YWMS32n!?OXmTA~D*eReFr zK=18*zVi?G18r6J$N6Jt5yjr*FZ!6Xah;_K_{z=RpK+Jg4V!n~Si7)hHxdf~eqR0) zk+?PiR6C?@vxA72Z8ELz1zh(X%8@zaarblJOwGpfS2mIn4K{<47YL&J zGR>0QT@NVz2QUNSjA2ou$CHWm5B?qeTe2l`+hIs0_Zxg1%1n{~VE`9QQ8H6WU~g+K zh|G`rN%wv-a+E-gFy0HEJ)ur;(FC{NF02S)H_f8-k;ofI@#A#M9VW#sdw#m^7HC|q z0lxkWIU;;xotKVZpl5RI34fIR+)pl zomS7!-u*gP;!x@91_v$1lUNW~W@~G9{SD*Hx9RMX+2$xXiC_O@q!_ld@K)@0?KiWiNUVfpswrz?q9#4jjLhOJbCV3w==1D8{u zH>TPgF0^`{U5i z&5GFfpvh^(A3xi7VAL|!{d9r+!D-{4c*x)OmlAFT#+qFm17lkD(A-(eRVP?;f@Zv! zXdk9O@INjF?*dbDnb@XV1YemkfUCqNh0NY}=@+-$hl^b#GHz@je{WxSt7w{pur?e~rXe;iwJtSEpORt%Q^CP5FH2Cmyki@C!+-K!1Yp4xZ`z zy+7(?Y3F_^OT8o;mH3kib2;!`mjhIQ+q&*gwWLX0-kyVT; z&^S%wvCN*dk!Uwpi<_Tg_BT4e`wEcRLAYBG-Yf_Ygw^XlO%9@b<238`M*7r| zJ6_-Z(pvd*T2SYU3E5J`?VHUoNjh$RN!rPlHVY_*yEr~tI(?=0`80WFqbr*bI}@lb z=wapkFVT}_e0!`7l7pN2)p5aqS$J{=4_Ga6FcJgSksF_vn3^b7N9e<*ZMiia0Jo1D zhIJs>J}%lmvFB}xoBpGMovov$bI)45gVe+P=iU~JeQkiJ>AEk{3OCUt_B~{4pJ@Wi z?}gSLYD?^kfe5kte+}`+f1CFA6V&oMkKeew^$3@swOvlw#BYM%ZhkSJZr(gycQ@2H z*!QY5h^gvI=4-mHheq8hawM)}Y5;{=#eeey7IkW_shy4el@WbuhiYMyc%m6^A0>3v z@`T@2P3@Yv;`meBwM23Jsa@05KH1g{ZajJ#x2a5~HYrOJ51aWN;CGZeD3&1W-n^#! z<~8r_nB2;cwlbux@s7!nhJ9=7<_Yw@oS%A!qdT2+2qUiP&YzKb@=HGz`;)inSwf;)!1kzd3{Et2+2APijoo}$xrZ#}I5m*_D-O6s@}VQ{WBW`M8M%**8^`2T-JW|oarQH}mEMQcKGiRxIT#&DUx~Rdw9LM8C4O~dp&c5!SqTgtK^>bF}kOm~Ov)mOrbl3`gG35&_^MzOroa+biEJ+kN8NqtGE)$yF8x=@~ z0x@6Ub0m3n;Z)uFkopzhA+az~YFkMCgipQNQkxtyEDNdE`cyb4`c^$#yZ|)+0(>!6 z=XNbQ@HxQCdQz|74CDfmJpTD*G^%<*(+DC<{3Qw%$O|7_Q1w)!&M%)yrMR%qHsiIx)6fPI;R( zv)(n6xyUS*vdlV54{O37L(!VS4u%9*eFHN?9V1yyG8g)2U|Z-L=4d7Nxa3-ro4{Hxd+%dKI($wqIuRJtc z#zWkgAHx|P?cj4xpO%x|<9wetcT8^1 zq{`|eb24=3;n`D4&bj}P7U zi$AT19qsot`m0~16~ou=`+@eU6S~VeSGnRR)Mfk!f?Oxt1J<6-TKo{XiYL2bV#le~ zVzOkG=X}6}Y(=$fMfVr327U2m7|#4jfGlzLiyc__mZ0;Vb7)ov49&!a6`9$NuRXmr z*UlAr8sPfY9wvG%m*=*J1%z`A`dAI^F*RWf_0vm7p3 zt1DY@HqbVESwsKCji-WI522&X@!xHn{~78OqZor8thx7c))pGjnf)uf=k(XC zCN~=P{z;;(_Uz{=U2|_2W|RH6IAg?OXPDSqk(jLE%3Yx`e%S6V6dvtbI`=-k;H&c> zObhlTYC|;k0GrC+$=Lw@${32uedyTa2i!!;W2Ee>{0m~#?7qrR z^90rq_gVjRpHYr$_E2HA7q7Zf`-C3)d~)Odzea>P1~-$L2?nh+Ygk&ST9UW^vz#R4`iC<+}36(E&&T( zx-fAa^WmL4<~K+cz|uf|r`YtqiRl^Ff0^c*P<)q~or~sc;w9MZlje5_FFX0#I|O20 z$JtMH)~xymt{y&h0X4-sSN=o#xU!2*mt6TuUR2 zse!Xw7h=4~H0aOCTqu#L3OLp9Q2r4p(V@!xrwD59(L6Um-=9)=utsgcoqTeyy`q3) z?(Mu7{sRTqsJIE#zd$#ouh{K^o7qpn{NF<$ZaHu>)7o@z#l*#fCsDj+wTu#{0AptiZ(x|xw5-2EzmFv7y@$WoE`nv49O}9Lmzmlh# zdkz>}@gM%2>%auDx83%gM2>UDn~=60x?p?3g-o#4$L>({!#FbN-C{ymOZcDJ7dQ<6QIMZ&Z`gt6#QSf zJdy(h`V2!wwlWW!$T0V5KLH`4Nf#-$8~gn{&)b;Dy~M&=LQfWbpPqbu>1Tep_)pO0 zBX?$DBvX8LVX70Y^DAtA2_0OSY(pD;GjFH>&(-rky5}i&aC`rT-rLydJ6~qsjVG4z zysYiz#In7KuSw%DJxxt#@UpDXRHCL87lX>rKd(l_`n>uSuiw)v_{Krqsp=nyKC)l1 zKETnb>c@FM_&NxN?D;g$IIg|akpHV8re?nvlc7? zKsVMvJOC9aFyW-HRf|KgK(UqN@|BPtN+wxm^XZd}` zMbBEg=g{o@r+K-X%hzd8WgsGpL41gajO^~*wAGa(A6Fi$(24mQ+{^5ImWM+x6_wBT z5|h7*KRz<7O>xG|LuS77hHTGq=JI9D{lWYJ)-b4gGM5QS*ABiWa*rdpU_W4I6M5ex zzblUsB}Xm~J|)_svHp=&!VNG})wfG=E&BNwartLl?Unh5ENfw$`mCL0yW1Y1(~o9n zKT`Q#N>}7ZMGihif*S8$3y=b4bbi3J1?F`$yn~W?AD3jRBXRGUqLQr zt^uJ}eta`X%`dY!xPhtaD!rfK@-za~W&JfHm4BuIPwb!Owt>p0CFOxn1bS7->yHW0 z%ksCvI>5yX_Hn=bZ@~?lcgX7A`#P`SwA_W2)$eLEMBHCrw;8KlWigRe^`c5Y8~PoagRAiQn>E{t&3R z?7P5a?yl#vvlAb!`yPTg)4(_a9G@g6cFS{_S$z56xcrF_Sm^Lvf-qp=)Kukj=d*q$ z7Cfii=4&`-V`A!y^PA+7chgII$e(-8b4bsyxzXgT++&X~w3`d^53|zfH_N^GzNhF? zeuO`Iov!;JnK_P@*IJwU7ODH|LTg|8=7TJ8??P}F{wB0xJm_MM+IOj@0@;4)yc0;zC2sbcpxWA>W zwcG(%9oRc66c;xI;o>2I9e_mfLrwT8@yIHxW|d{;OeJRK_u4LS$NZ;&6rKSB7&J@# zg*dS|{(?__N~JH>U6F@QbgZ*(IvzkNB!)V%@`qyw-KrFcE-m|)uIwFUWf#3c*#|*h zwe3g*XJRmEh{o40+q3M^n$Pf+r`Ften{WE%;BczF`KFhLGpV80++!FSmpy8{RLy7F z<~{|LZ@%dlYxs!YL zK_zEU7AD~Ox7iK$Q;FYdu-~N&C0zFV=F@)b%9pQyi-W}T#ffZzJN^k1DRhK6dExba zmBYNM$NMS=cw&8vYHZ}O=Ki0Zlzuyze!j1=y^yqm$H{jzxeRZw!5{`gK3Y@pRATRo zaS2x(5T@vE%osxidPRnDQ@S6<+v^nI1T{>NAhY(<~+zj)#zfOzK0 ziT&|?mEY$TINOYnst6atmk5Yt?9|BG))RaH}S z?y+V#k-Z0N7fi=y#U_35cshsHrAG5zA2h$6FYkyy}zpvY00d0CgmHl<`$Jp~8Qtz&Kh`Jq*(3xvqZs#JN z&Q}BGf@}euY+B!zLqYSs=7}HUZTV>PD={=pPiNlJjO%S@Z}+TM4|L3YI?=novq3m4xZDYwjdrL|&aO=d2)OIOT9>(DWCf5$S8Up)H$g9|v$GQD6Q(>=Z5 z%l7wg?e9O?-+gqDwhKQ6`D*%wLTurwD1AW{b^_D-#BqALrBgtSUwQBwoSDKnWrRu5 z@%$Hvk?<&$OO)U;zn!z?E)Euv`?V|NYz!@y<^~_k0nQNNA~l-Zi0s(8IsXBU_NXRU zHkGmx%O1UHIl$h-<(j#@!~@s=|L6Y$5cvMEC}J$ORG-D>=Tsja=i^WD;aNUh;lmCe zZt!8h53lv%M|^mj5AXEh-9CKKhfnzMr4iTuzxwyrd|2z_&+_3VKD@$*<37CAhj;q$ z8$Nu-hco=RY>@o>5}9sXkod!&N?9=feRXj{EQyAKvN1uln#oAAZ+|FZ%FxA09vC+B@BcOMST7 zhgbM;$cH<9_z53=!H0W%_<|4r-G|5cb$q4|n|!#zhkZWG`0!>Q{;?0gUTjaK8_~ zrwz&HL)rU{{@GCz2b02=hhhsjx!iSgo@H`)$?!#IizLNCt@!^9$yxWI&`0yh> z9P;56K3wg?vwV1>4`=xB<;|}C@B8pOKKzOg@ATnL9}f8NG9R}3@OqCgi~RdMAI|dO zPkUTDXNL9a-vb@K{qq$&CB1}j=U=<`JIlh5|8gH6-v4*Qr~YP!wLf~d3(M<+?JfD~ z?e8C45#KN{mP+=uB!`n@JG!=99Un}`lS7Ky5l_ai8`-vHFy$+9`3HxuO%4tAm6uz5 zNhY01W|UX?8Z%aHW3ScgD(F!{&z5BGHL2k~pP{EH1CR9?8Xp?zrJ}gyb{*&;>YCVw zp>(qn8y3dL4KD9N{XWhGgFc!OfaJX+|dph1WHa0RAUoyU6Q!Lgn*tO7iKb8vd z<1S`Pw!c3$7N=BdJU)`m#7Fw$W69yIVZ1&)nNAOG9p082&b&d^ZP_&4wp@U0%Z^Mc zt*VAn!&@^0@pBi&hetB;1&vFWEJ<6#V}n}mD$j`W_Cmpw%x1{KNCbcy+mOi3C zrSsxiQ@cHbBMM?Y?Om&q=~QfWdqRBH4?m%vD6wRc;{8l=@5u1A3~6v=IG!1? zTF$+oC$mD6KOS@4vsnktMl;zlH?v!^gF~6YVK*5x*3%PWdU`_J3J142IPXYT^$sz= z@zo$*$KW-o6;<(gU#dU8eQYq3YDlMs`WMB=7b-R$&y4MG4{-+G=yHrNw4~H{Z)%jz zjZ&9IsAMDXj-P#TeB9S*z_mJkg_gU2D1LF&e8a-3{vj)OalF313iw_ePwz-KrZasE zwyN+*eE(3DdfGQKoNBNNOHxPrX>}|GWQNJ9DiL5~-LW09Ol%-F5*v;!j3Dr(V`IHyi{hJCwd-B* zjTeoj4Cw1p4^Y#2d_&(50W+!W$moiG%06tIM5z#E@P<=W(UVaygflGUc?byS2?#IxFw#6 z52v;!g-mfqzXh_*de07vGTT0&{Mxj7#**86Tx?HYGLu{p-;(T$nz!y2@`dtmm{YaJ zVz!8_V&CK6lRxT5|IkP>QZ$*&_)G( z1t43tnwOE$Hsfs9kXe~TnHDh7rC#GcCG)+hU)wA zCiQ7oD6TVXEk|roNAA|X@;C4AvZenU^}j*CA*V%9Sm5{V!lb}XK|7&_X3@f(KIh#0LmpAYp9eCr(<8v|Edhqk9ge&U`|j14D;XfAE+(Bj3c z4cHF|hi%6oM0TsS@Lz&k5&spT@o;K8Lu4~5BI-kf>C8EqENz|xa+L5&5d|tPLr>hR zmUVplNOq_%J^}$|sZx2odq)q9;dQAVs3xNedx>9NP`LQW@X!vCz)W&*IR1h0CAPK* z&y8h9M&jF&!#jX*v{2HvQZ$qC2CY+AstD|!^Bjw73|gT!jM8=H@&JBSJ~YC7YUP#G zS765cjE2QR#F~WJD~A?|CJWXE4AJfQKXV|jSIfk#^*NP#kM5q%2D$X@0Lv9 zJ_`FgHQ9W)Q2-~XFf4T@-kSt|tQjLk@w4jV{bM8Bn9RaLiC6?E)(SZAp&>0WK)GeG zuP>$j&em9eR!nEfvMODAZ1h@Z4kK5_v!FRB!K>?t1Sxd}iD$51H6oKypI7XV$m{UcfAwxS(Nt8vT7 z)~qDwAS%``==1EG$G?_VcH6G)!_d$*Ej?nwoaB}rj_8r?e}S8d#a0XJdXa}EGFyAX zhpoMFy0IXwK@cL6nY>qrU-9W-!&iqFq>WiGiC1hPp^%^9 zIazsKTSr^-`nFapdX#inbde;tVCo&st&cmdAT(FhkEmXUtpADpOouihwPB=8l_E#> z4Ke#pS{2`jATYc&2Diq-(f;K{W)K4QJc2@)ALFY26FH&Qs!WTtXy}({u_sxR+eVXP zgK5MT*8rT8<7WhHarDCw+|)39b)f^yuHOJmK1UDXa8|xj8i%!qP?xg(8KuB*7D^M= zivg`rSuEP0Ors&XFU5utdP&?4V*?7Xe?)jEXkJvA5tIyR zIK)Au2r>R4ePr~g$v(ZHz9^ZgqVlT$60`{;;Iw|q$5l2EmbBXxhsF9NkE(`P6!)8_ z>a%=;fe{pKjja4p)?7)hSWHE>jX-~;xiAzgFQD3DvHHH$P<;IT!&laqA)k>9n*g^W zJmvAgP4=m`h52MBP=phARBsV|G8C|$N;o!kQy^B6coFa?o!yd=a;3cLLQATgpMY1P z0J7`~BcFZn6XNjL<1*V*EOFb!wvPl%gwJ%`eUgbrwF2`b!9lsyy&&-v8Vu_pnL$Ma zL+W@_*9*p3z)`<$Oe~G$hNAQW9JG*3g0WS%LMu!7BpE9RO3|X1+O2BW@_(gX zleI#{6o=Ln_uIomlqk7n$fT-hJu9+wAqT*hFK7>tfE1B_ps*TM7f5bv=$h1y?IUBL zjMp|q`4xQNd`YR3#u0x-%xi96H| z|L1e|07faDM~Ef?_==r_(0kAdlj{ZK`gnk{FD#uB!UoP-P^U(I>4g@Zf?F>~0(?MuMDah`)MHM??Fg>y@l^NW|o6`#d0`|<7?j4zdkzwFT z<0!5PkW8QmtS`2_bfdals{iS61A^o6!-;JeU|H}V=tjfxZHrtK0B}SrHq(V}Fs7EH z4rbg;~b}c3$+=|E{b>3hM5w)7Si|Aq(S&%R#l;!nt)Uvm0gy#>$I*F>Wtdf&qcjMgImTh+u6=|3G#2@&34#e$J?SkyLV^=dZuz+ zr=?e*ne6Kc8;TwoN$zuLR=5wZbVsLs3;9D<5NdTjfOzLOt}=N|)2KmJSErSnT?)K?grS zEM>n)#sDwjbX|XBy7Kf5Ve>-(h-Z@5h}yzFz$i)CE{NC593o|d6K9H6QiNyl4ZaSo zq-ej~_y+BzGDlAcbNcOD?NZYl2Ga-y_;GoyeQq2^rlu) zaxAFbLrnDUD~jI5R2ApeM3n9uEu^~$rT0T;!T>G3C?ceXF-GY=BBY10M(I8xq=zv_ z={|z=(Tpa-|0umUg4b=y@zV6-2=Yo(XBmR-RaHfbSYK~spDYv9ZNFU5x6%Zdg6crg zjz_{suyj%UyhV1-o_e*}^hCAwXfIO}4QDNk#m^F*a~YiZGfF1jwy7T5$qLc2{=qRh z6pU?+#OA`rXZwinzuN&#!YbP|y#a=N@4u4Y1w%twLf22nOcXU2^O6u|{vNaCyL`q) z6laU|p%ouA*9<3*8Rd$0-Jp|NkY=xJ=#|wuEw&SZ!|C{2Oh*FA8;cSaHbMi(;ZlvU zfrmXEtLMtoai%cXV{{LCJ1iUd8> z_A%+>owe0iU|*517QDcqs!h@A6^9r{v1zdm!rD=!LGo3QqgWkNR=zKVQv-Hb0o!(L zPwq`dixj4zZG}-}aUY^;sAB~>&qeX=1A{oR$l1Z9K7<%kx(1CvSRL>i<>QI!G9hJ! z(}ERxV6pX5%%s%L*4|!kZ_zAkD=n=MmTW8~Wt~JCK}zN@!>dtD$HL&>9w=T@-^0Ku>xkJJyS^>np@alEjf>tFbZ?Qq5^Wl*`;5 z0)yg33saV9_#r)jq6iMs_Y4k)Rcmy)1Wrn~X%KF-WFNNRm^-$RzjB+iNJXK9IXMy9ovLEu2m;&IaN#O zPe4(h1-XqyAt$Y33(Qaw!;dVnNW+1vmbn6+5}+GsLVbRGRz>e|Y zgpcn6*7lLb-Z#y5kl$aCpQxgFItsoPIxl^M9AW-nimraN*i9OQ5kXQn<*nls4KIbL zwrczYfQs8j(ix1o0f!(88L2!>mRbZEinpMnaRy&stIXi$`{Anuy~FB2sXOL%Fx~|N z>cx^?tR)>SbeU+2=A|LfsB*^MsDw9lMd+4v7GhCms{=G<|CJmG3VI()kuxI-ZY&Xj zDUk74ksFiSNf>j%n?(F9OCQ;$C|`j=0oraK9W*8>)L+baXyKX(%rIDUQmpwfxygG< z_;|@;)VrV;USypcv^{%`=ps4kX^~54HwQvZlxj71ENhCSmVgLS1(`Rhkq}F^q`s{A zH=4Yr>HwpvNp8XZZ~Nb<5g8VBJspzssoUv`;2(zT;9nwDE`3K!E@CT~aMLFo$8sTAT{q)IL(un7n*8HmY7}>`^6+pnA}<09!Cq zyV4EtbnnBYz0I6lVJ611!)CIB+(N2%;HbI{FtIkY3(Gyv5UVl1nu^T2GB`|~xPCxE zSTw0rd?1q|{L4o#;Iz4As6FqSJCFol zggIvYE^r`4^B)Np?0)iiGk)27zZF!&e&*Dc(>)fPf0Jx1Fw^2<%qv%*DXPET)_>5V z`+AD#idOWS>E$9VJbH{Hsw!zmYNWDu{Kn+CHxnwtTok#SMcX{{QO1fF@5JH=0_`c? zq=cyKo^E5e5f(K_nwO@`W*U0z0pSDJ&w?}K(RvwNd>rglZKO(rq=*L#y$gOro>_lW z&mq?Vt<%93LP}Q#m(*B8*KlC7jE)YkzyT6VBD5^6bp3?U&=+UoDhAj&HtusGeV;k- z9Z@bM+pt`!=tg=4UR%M1*4e*EL>7m?Q2O=5D;&C65zkB;OKwOABMDXTyAtcgN3LLk zqdpfI-7FM#s!C9TG{x|8To1l{3N>3%Xf4QPKDj{{gn-J&O=k&kGQ;=bA+%l-a{OT+M z7M@Lu4#pA@O5UwF?Xllv1EEcVu$$&I%|_? zSZW+&v)>#TEjVlTb;J>`-z*!Po4RtiMD)baF>ueJif|4fY(e!eNvA}A?;C()!Q`t>#UzvrZp}&<@v|B*%Z<#&;t|4( znj(mSbrPfE$3nM~qN(P%=j^f$9!1tt0d`Tmu@Pi4F!W}!$a`LlpaP3DSIWYo5^D>m zU^WL;=sO8$F8S3Y;J?@ zy`!tezaqzZUj*Zez2G{SkovKT|)l)v=f{|eNjKeAEfPMl4hZ# z4dspU)n94-byI29qaHtMtFqqgRcP1xfr~Ul5JC7~9}DYIFAG$C%mqH1PgVsMACHV! z<`o~@vXvhBQq?=AAGVn~!?e~%ay5P0GB|7klgXd~gQNK}6kilC@uNRYb~u!LEC9F& ziWCk&Iojex3~9-XB@aNMUxjimr*}9|Hg((UJ$1s$x|7_Bi-{5D__b;6Gq_0FkDXg8 zubh-Z{ZS6fkBX8F53YR-F2kKfvG`!XbHgZx2Cxe9oz)wPA&1IRZKVr;3PM)E3WG~v z`-_-TQM`Bqv!NZ;yR!&WEkB|yI~)5%p+3VM_^-vrFSu;Kw_21GT8bN! zmb2md;>^h6l5__xk9^>ju$lD@!6ArItv{AqA7|0(PXhLZAbxN-o7Ab=-@Jm_u3muslLwRi(weAgt$e7(J4Tjwp6>RMu55>t>&yDjq*ni{BTw>9I9I&J3*1ZbZlf) zGwyyg7mH07s7g7!lMN?tM`)e%$1DhxH`@K+gPp7ZT$~R*(>~Hm33rwV0Bqju=OrEg zP+aUy!&zc5q~%)J5Rw+IjDNVkp31sQ&H#C_gZ&!F3A5~Ex2znV={A?%V$Cg53L6PN zba;i~2*VQfG|3S!s9~^26-MmrH@4PI%jL{f2D?E?-3@>cE2D=ZEe|1;+B5Iigcf!9QXSt3m+fn6HL;}~01PAi4%zH&|g&ZoQ zAGD6r`8q!|-uv0h74Oz!PcKtG)?=Hi^UqY8eo$6AWijaDyf$6DmptT&8n0Jn^+w#p z7t~u;+s(zdmJ~ylaBfvWtHOGBLxXoBqJU7Z%48J$hyLf5O^`8T7 zL&@G$k0`QYx~_Nn6|FnHkD3pr_h04RpQP=PUbf(6Y;YZ1Q6&7StbQQso*C_7Hb%U6 zB65h|xC1BbmDPf?>4$~qq7}aVuu3(5mLbRm#kC62-Wc6W$f(^H;dtf|TuR+t4_Zs= zb0)c!`Oy=2k>Y@Rf6~r+>phwWz3@{QpMM`Rk1p?bh5x=2*Tnai=&_7lSJSRo=r_C` zd?#_zoCX0v_{wj=VVHEiI~{|oAmEYSfN3Phl=_Kc3Ub+x@S7!N4FqJpV_oQX88y+8 zvds`G=0$k(th}gWa7$1hh+qZk5)R(1tg12tR7+tKwXF_YGsJ~83h98C4^D)hGzAy@ zh`2@6izdpuCRCD(LJ@VK-oU?yj!R!4j#KZlKH`|@th$hLp@!`kM;o{AlHaV++eO*~ zIXvV1ZhPs7ZKq-^+`db#9DjiKkTwg;JVcUF+NBSDJvxH0g1x)2&2es?tU5Q(`T5>r ze{Dz-v?X%j?y-aN?lr(rQ`!RxCo!Ujj6FSa!w7G>YoKuMp`a}hrFO~^A7|zku}fiJ z5nV2VWd!3=yaEa61G?Fu2a~s<)6W$2Jz^M+R+V970R{ZYr7flYqyI%W&zM%BCZ@RF z;04;n&g7x6f`(j&O zGf)ose=EXD^l%qBGiUl9N0fRX^MzwSMRdZ}3%kqWk^aSa7Nj`rD<^p}OU^g!HaFbh z&g_R3*V#P%G;iqYj9uQfuGPK9R&{lCi1_$ddv9xA8(a0h4Q-0EFo=J_d6M{+mPGS9 z^HOvr%U)wGT^(KP*0rsUwYtV!5LG0e)CyYsvZe6J-pJ(pV(}N8SBQ^9R@a`TcXX{? z6Wgf2_M{Yx@9EyK&c)l4;+>P3lL#ZHGsSmwHE-ZH38WrnizS*{TG~1Y*0$QkGl}Mo z)mDk`mrv-vtgGEXm{`@mp|iO=Dv(&UZsYny^cqVTAl7#`xA5uGP^sE!=~{bPQH;HJ zw6EV#6leWu*|=_f*Sc7uodPP?+ES7u(c0S9+PtATL?&9>*1spbSpIcgh2E+B<;AbD zMBCa#XWNEmgHKTh6BbcGjKu1$wZ(l)tZC(jo=c;a5?+TBsz@Zdx=Q+C{ST@1qkZlA z4b5xIphEn6+TIscs{X&HXfpKfbVE@^bbjr|q5?-9jLLO(wQgia3+)o=;@7rs5P;p} zB)XeB+BSgu(R1<{|Zn_{$3gE*ClT z^*fN*Ut&7C17aAygyx6`@|v%xox-SHzg2rwE%~h*Q3pD@ZEEz#w`<*rI?_>ucLo@B znx8W8xOXGqK#VYSuncUmZX?)*{&W|Cs}M{5M+Zx+yA&+`9gMK}WlN)W?H$bUVQIX< z$WrvAG*_>U(Bk!E@s3d2Uwe-Tb9ityzrpmxx*cJGy7+vh(-qV7u>kF_)z1^7vA^M+ zQSg4jdEtGzUY8f@vtAPw`fT%K3(Z4I^JPO0qxJ7Jq?iKKd^`;*-nFROe0)?#Sv}SP z#T9zcy*|;kZbQueTEEw~U(wb>gaxkeR`2?dP@2+Ring)tjfOb(*Xr9C;2(>gTs(k? zZRC$@qg#&v*ab!HDuVI5pe&y8E52m>idb&Z26?O3#;t^+aT{CUm;l!w!9@+ZFtpTd z?`lZ#g_c~r;#`WJ3iY@K6&G6UX4e;>T@Y$#zDk#QtlL&}ELzuP%bs)rJW7te*T_P| z9hH;y*!q^95`tt%!XM(n{>#dS5!EH%lfs2Jr)Q? z=;kNJp<6g*#C?^H|< z#o!zi-@Pz)MA=A{-;1b+zQU{H(N5bfSe!|=YH2x+lL;k01 z^eYOZUyw$Ybd5UIgt_^zvkMp{AunmH@^B5hxNuva9cd;ln6&{1dMS5O5kGLmP3as| zhts{#s9lk2aCG-rQe=^2aHm{$*<$B5p8Kvwf0LWZv+6u6v`mb}0Kwc0$IC@o)N_cl zjZW9^|C(sB{-&oET*`2^`~P_ zTLr$VmT;deunB5|WsS=l&*gxCnFf5Pgj-q-K+0X+<7IXHg8AnruB1Nf1VLRT1K-fl zVtJ)f*fdv$yglBcA2d7eQkY9jkER-XT6*x;*1GaN^BK`M^t86EZbo+L(Up#RZ)t67 zk=4BiqTqV-#($e$bN32&bF|xOc3NDowsJip4v5T@j2l7*XA-gdJppu;T^yAj9pPqJ z65YL>mw1(7V^zCuzM}jPp6ckNKtVZ?Dw-MLD zs3+F-Fb-484p+GjQ{!-z!JWm~ z63vr%3@udpC=Ey%2f>Jj5MXJbjvvt!WLPLw<)`zA**vlZPPCwjD|A+%wbMW555S9( zoriL9)duPMwHrHEwXH+J?VQS7IY@w~>UO`EL%0avP{4c7R`0^){L5t&HgKzbgNU4u z8>>1%4UY9}caC@3ipt9q=iTiVNA7lus<_t&7?^`u!^luyj~R9R#bgU*YeH|xx^eU! zsBECw5jz7Q`HmxqohY z3fuG60VuKWv%52pe!7i~!MLr}FMGH63+rFCv-+}QWQ>lzdHp{3s)XyYl`VMmMzja; zMYIbVYb4AQ8Mh7#OT~PGdS%Zo|Jn7dqmQ>eVs)qclz#6?Df zy;y2SL@>UAua?5MF%*S!nMms9df&)f4Wc^GAR~|uB!U_GjSEr{qp$2io0!D zQB`#=XRR4yWHfCEci1_aws>T0u^Ce8FIgCEsYy>(4TuoMWL4Oets!DuVeK4N7^p8j zdOMeJHIE!9)Q(-?hGS8oA%jW5Je6d~I_pfeZY!0Ky%@uA%cJ9TT;u*;9LuOZ$J|n` zO%3g+V&ro95Fm%4w{GW$epA922rHr;a@i4m_OnN?PZt)R{)Syu&y}OEDj=D9U1k?` zlcucEHdt?#VRyCYIeyyQ8P#B>ioNhj_Z^2lx43ZUr~LaLx-kAR7jC}QzfZcb=@Tw| z`A=N<)StU>$)CCKwokio^iCHB`Wfw~z*Wl#AS+O}J%b6K!m2TwtG6c5jxW$J%)>+Z%n1l|`aimRh5f36 zw)H#9PfXaaX7H|GrRgW^Tgs>35Fhrh^7v>UBk!D|{P+3&Ewmfz3HxP;SKImt`)24* zh!6W`Xg9=%eY8A2?5FCBenbASzlQuu(@)rML;esS_TNIhO2%SMe&12N#klBL*q>^N zw>o@$*uTTLd~_`AW99K-UsJyD%VR9?9|gF%o(8@k#0NOv?)w?y0~`Y15ZVp-@ACOW ze8_*Fj}Ltb`2(L3;zRzxcLcbF{0EBQrnHbhU)Il%|8QA+$Un#P33}IW$Umeze79Z+AToxbl2mY+Q{=lz=_>e#FnIS&ZANbA?AMyu2G{lGeg6YwI z#D4g*7!4AoINdweiwiF*v60b1w&WuE>Ld)OCm@%Iw~DY=>jNx)Pl|TjP%B%2sI@N) z8;9VkO-lZeL&?#VRY|*#(rX{!wUBMMq;&okdHm@0_Kxo0NOM(HJ-x6KgWB#l*+|R26p8+Kzjd)Kuj}wZIU|2OY2gyB&+-^~3DS;?Ue( zkJ}hIT#l(WZO>u^8;5O(?vw(TJPwTX;fHNXGAZD^x2&odDjR|GpMe*sQe9rDLPqvx zML0HU@nU>~4WdZ4R8fA_VU;{!G4+-nS#vi>I&4{E?z}}jk`!-c=QA`D!XqE=eDoSl z$3y*eL~sC5$_&eEwvj|rClDH|rk=wamLB}@P&G!tao$uGAsEkg$i+zma>o{9nXW>I zfUKY+kamch4y$*;PuIM(<EQ_2{&>cLlZ&2bQR!N%kGpU93p$ifJ z7bF8|h~9r?{Uy}RS~1W>`V_kk(CaQ-9~`cFBn`S-yIV3iVyp9hQ3(8F{dl_q_kx^e z$T*k=RnWJk+>sxxx1fr274Y>YL+Cif@M;5@?jHnZX$gZM$M*6)MojxxTVoa1f;&UE>A5NOS z3@YJ#uOU0SODI`bEQT#5WK}B`B^w{E5{Y1}ZqTD+BiAC)al7EicCMsBW($tmMq9iO zcUXiH)Vv?J7P`0Hc!QE>(WR*LI4?=uj^YML$w!ujP}OM{SJ;|TJ!8p1RA%J%%^juc z!tq_-epP8Zt3U&XbSzG{dOhKe`YuG^YfK#6MX%Np$%>{gKrnLN>NG9Yg>7OSyF#m{ zi41iV293I`pAQbuXn==Ev9CnRi>MYhO>>x5SuG+!C^-zzQxXcwqy@> zbS%0}-yxyabc?NOuiS8ha0j;?Wh)pdHUNmAtPfY-mzpZP@*jL^aq205F*Xnl6KP}! zOwd{l2l9<~2nbTe-O7Wb=$f=y2vn$V^ldo?^ZpfA>dF0>IBN`m);YWkWGM+{*lKDj zC&jDcsPJIlcvM^{j9go43W##j%*7n{Zj2(Vs71wPIp7$R?L{IxD4uKsZk!E!porrr8(mYOHDjAsq!&jRD?H zGf!n=C$1gw>|dip{X^o~2FlER>i6K~MmO4Tu?q5EM>8 z=pqIU%@+d6%$I{u@Jo%OeW`Msv$s1G)05(A1aiknnoT0!p#9ddTPX;WbbG3iEoAFh zavPTpL9hmgqzlwaGh>)CKvK*M=5W9+t%wLpv)jVN&PTiJk>?1aD-^w+$%f~8U8)bY zyVf_*rz1)PO5yj0qY{i29Ej5vS-*)pfERAwEH>P}gKBfVsi;-0+afjWU}lkHLxFLq zLf@V^q7LIgj3J0`s%Hn*G`Vr;+1o4wanve;pftEU=5!)4y57vBh^Px*>Be-lASS)f zb6;jdX2U7;=t|_1Vf9G}R|NQ|SIHnCxU=5=YKdXirC{nsI*>xAb=+6uWXPwc$mr=N z8miz_`;NRiO>99WsE+bcK;8T2cSgu&I&Qb(6;! zlr~wzK#4$%Q~SQjoQ_ykxp6S4%fq!F(E{-91HmA-RiDiBM$a@tp4*EHfT$94AikxY zFJFM^TvNpX7{8|(b4X9h>eN{t99FPX3=DEyv%iXR1(mdUHh2{;YsZPl5!X*k#(0V^ zS1Tl|G}~vDvBbpyC|UME*ROS+u7P9$7p#m9!nQQT?r%v|8SF&&lSVYe5Mu_R-Bl8| zz|1Tl^~d~a-R!rLem%txq)Fgc&pgVM(hY8u(zomoKR`p;72F~-LPQyyJi5-HNN>by z8nN`_ur5Y>9U2C^1T(FRI*-WQD6a-7&D~|bwu2;#H>YSRV+b-BI}5V4=e8@G)2aeh zsULL*0o5&O3AixD;h@*YM{KpHH-W7XCvfdxl0HU#7u{?(_aMX^ceP9TU<2`jC$S?` zRfQ?Et)^tIi~1gn1GeM(6RnySx6=#M5qzZ?u#0*8&Jd1=Ige~K_d+%=;21e{N3G#S z!*`MVl!uKwNS_`jC4QH0aU0N_Xg?gxRE2#|y^GG{QDxe(QU{+M#sJm5SejJ0nkXODDnr2DLEL89^GGcGH0@)>5FiM36=!c{I z>Y=T?jrP$cmZeXCWIDz?z{L&B?F@^&B;u&NpIyiD>PWY^$#WzEdx^)U#z`v0o2UEO zXu(qjcD$hBGOvV!8jJ5w1@o*k$jaFWs2Ej*w3TR{R#ZvmEtXc;DD8vb3t{2k*y#sE zuJ;}|Y?#sZ9P}Gr_XbgMmDz}jm3^UXdZoz&?mVS1ti*!#=0IV&pml%&5TjMx34euP zQRBM$tOx`s0a#Oz)G}DS-@yO=!7Gho=#!!B8;B4M9wb~&&d-74oISF(+J(z~IPSw1 zeZc~x_O@Ae6@4?4m15GQ;2plOK$n{BQWnPHGzD;_{*JPdg7B@)IoJx}n}bhUsNcj; zxlzU&xGyHn1>-whQ}{xqw(5hn+;)ogPZRK~?7aMT93@O$qB_DSimcpG zm86!^7(P$bfJU&`c>>1YfBpwT3^<+Y*iJU0qDb*ECB7{NdoCX&yU@>#EnT82D2$Pv zzBeh>P*_=D>jFqJlt#n!*9Ke|)Ix{6%4;Gs4KoPo$lz>yG$w`?bsP2)7tQDjqRfDlDz-zw&T3#o zEGe4NAh~}IS>>7{M@n}|tYlM&cOOosERh`qz?x$;`(dq`JY$BuK6Do zv7P*W?SEFpp5*rr|EePPk-I8lU*&h{|5Xud;`cB3eTmW?j>`q`l zdS^wf_PAJVKWP)R_qo5Wh<%)JP0NOk7)}(zlScXM5T~+B?x=9@^S2EX6&of01%#G| zxcN(#M0L2h@mTEcirAgA$up?kZT|Tx2R_7>tK5<$z5QF^4|tcYxv^#4hWVRXnw95; z(zq)WmoJHHw|p;`##z3@C2`%BFLqyX8{L*~PDvc+yZNalPW~gVFB>dhoVXWu6E~(Y zkf^y<9($jE?Z{AOTOaSj0pWs=zwWy0`nE8<*x{xbZhT{z-udm#u0PGiaaXwh6vu6F z`D#nzT)uh4?XRPqao3+0E~8!bC*|G~my@n{2lJ&o#%edshzZYp+%m;A5LYxe=P7P~ z&y3jWw?z3gy-<%Cv8T=<&JX{oznKxsFXnwq+WEA-!23zOkNOO;nX%0jYaD}M&F6#X z{A?!f_ClQXN%3#?Q*rXF*vaco96e!k?UIUPX2gzJI%7%2#;VxHU(Jej|D-bZp3L0X z>J7)nj#)Qj$!V1{VwHVWvC$K`*MvpS#RV$Eyl!^#Z}DuzuWs3_^7IL-)}+^hCIj+UP*{LfR?C0#}I3(2m=HfkjD@L zL_{+{fGUf<5_*(68m{P0CI5*^(0|*_KZ6 zzA4@~7t#F766vzD4!Yp<46+x`A@7AmFI)tj*XsdUnXYZ=c1kZ!Lf*jK>ERS#vRBn- z8tP+5eWs#5iIkO#`ml_OjP^~V2<(R&_M>n$w~u14Q{pKlZyF`kC6W_%WhrP#$~Rxz zE=-{dA?FJr+Y2G<3sH{?bF(5D;W;6_yqY-g{LCcEM4!w;pQItbB-AM(FBzRcv=B6; zmyaD#;34o3cnCan4i746x<|ErT5Q{OxlUDb)%(|u{zV^i|IV`0EXZUQ@}32m%*u7B zKCcn|s7oR@wEQN}?lscq=fpu~W**k7iYe5BxFn2*2le|X<~lPwo>KE>QtFvRUkJ7o z-A|eGrqDF>Irlfm`4Ok|&Q6i5amLd%M!&G$#m3oYq3&hVqHUOyM01L#(;Vn0#zVvr zo*vZoz>`j%`YCi>MLexLn?$QlC)4s1>6CYT1}!djko`%eaklIf$}UTzY~+!RJhF>2 zB6GsCLg_(=8Vhw(DY6OQ;cW(q4w$cP$#Il?Cf+qaK91t+Qpw>Vng`MfAj8FWT6{K{ zE;^lpF)*DHiqrJ8N~CvkI*%*FGk-Kr-EY1&=b3pikEd+(JI0iZCzj!$Aw$&Hzk}!r zkg6}rI42Hf%gn=iQx^}toJtNHlzJO1Zlm5-=p^FloOsww6Q8b&d1;hhG(D0MP72wB ziJtkX==VCbxh$3ZHxS*ko2YfIp;yx_aj1`pN7)BEB^ALwjQ4M9O#kZoaw3I%urY7( z5^o*njd?fb8f~}ou+CzPg~~AIK~Wi5;)KsrjyyqTzL+@XD@&vxc-{srHpY%6&gMuY z2lUnfeRkxgg!TFtCz2N{r3h%4>#vsyeZ%!Nm>fr>O|jS9C$JCJds&w(ahac;e&ywL z*>o}N?**{GbC%7p&7!1;J)9Vd55{>|Zvv2+ZLgj7=J9+0dr>U*g6&q`bjr+~9hn)P z5lRcD`ck~fp7|N^lu>6#o2OFnPNJ;44B2qKuu?fEo?`eiFHfe-;(5qBi!xyYq9ZnH z3oSb4luz7r{o%t8>s?*oB#pLE5sUBZ-mta2&=d%dC)PW}ia# zz3~x!&f@Y;WBk;iKe0$W0czy(RwU7i;|cWXvJ|?k7&aa}Y~N#eNaDe#+kWs8c+EVS z8DcM`e1OuG)2S4G1oD3r-{P)Ed9yIj98V)VWXEwkKp7lAJCSCeO(DmL>12oOIQ{|9 zVotMTt%bJo^(jyR$07e19>Sc2`w91x^?vZil!a?^ouYFz<|>(^bv-|8r_f_Wb03F( zNSWqq+qDUFEo{%F(98JMkawn?GRs(ZST7MSn(eb?CqoBvDBI>FM+EbKC@E<7P4y;1 zKsL5NN2W!l`e2K)lPLRiBF#Mk+j-nhsTha$JO{bjiCzQcZ{Rj_KcJo9A@C4*=o}ub ziA?v{?oOe*VP8IvHNcF#RGN{S8c7aM3vvzAyn^|pnCpo0b4_}x&&|-Q;#5jIl03fV z3iT0X_oE7WeK4N$Qpg;a=}NtFLERjhS2mmG=FOs+%cj2^9nDHNDAG%M()B*D%_fW;@BF#(G#BecdtL?w z@NDlqMs$qx;P}(&SnJKw<5oTcTd3!)c%s)R3w(q;2)ty?2kkcJtLCIxl>V|lC;6s% z?H+widN1UXh_&Dmtj*ZoLdNt1oZk#8-iZ1n@Hobkt2JJ?9p}bpUYdO6e`YJ(+#kB_ z$JzjSI*z13Z+Xp;4&8tqgN|h%iRuQgmy&EtXo@e+#kR&{LqE)mN1rc-j9ldV37%75 zhE3zTB5(7xZD~B7Hxt#fz-&9s#(0^H@iH50+1W)i!fJlOdg>(6tv`p}Z&G=fuWj>^ zQP#yYuXrKN%UeM6Y!{N!4$-UU#rD)eH-Ck5kWXRVr{@!gzOlsd`n=46HE$Z^4BKHz zSI;24MwMrfX*Qa+8s*sWJj$rcX(r?ZS>-`iCOO$wq|l19X>`@;>GbL2sgztaHI(3s z_fGNPIf!lAlkvuLk&LfI3ge+Yd6f-*i&eYL*UIi=eO5Oec0Uz%KZWgnjoI$=b2<37 zUt}JG+a?}^^XJ0e)Fse#jI#ucv(OeBEkF zJmO>HF!rtaV~r5niuW6!=-MSV&X$^pc{YVoi(n^Vv-Eir>*R#GB=Q&8XvsDk?cTz& zLR}C~mU!s?CG!wJ7x6P;FVkR4k{9ABOXevj>pt7zGl{+gZ@g!|J)Z2RXHz_ESELyA z+HRxZc>Z|cJSQG{ZsN0DnMhY+eX$h!g6CbIEhQ1pX=#*lL|J{?NIZ?8{}P{s4(zhi zF36w=>#!u~Kb|!`wrTM+EjJ;|Pn!BzD7KS!qmBLtXrl-1Opd4II@o<{ys>Vu#Orpn z*Z~`wMj18wC<)=|L)jJ7gGz0*%WI>foHt})zSed0i0CNltH$PZtY0w(_Tin1+!J%H zuMe?yM*4MSQJ$D>~ASt;-7i>aDcV7eH#wjdug4Yun}VbUFH8e=nl1 zWgWa`h*`_p3X-VcbPBCRn^SV_5q;)k`@!?zYK(jzTNB90Sl@xq`*|D9skc#G5oE&c zIF9E|To-`8#Bpdw>^0Ai7(d`6>;2$0=Vx1KrCb`i~sWQOO4W(Q~b(!DcW4v$`^JlLE2Z4~!_ zVRKQ&IdQOECLY^NJI%y=!RzjsN7BOl)S=cZ$yl#o%>wz1uUBUAI}N-GC5{hfwB zXQX1zz#I#mF|WIH8(-(Z{Fa9G6Y^g+y~etJVjDmIk|et1G~WGST{jQyoPjp;`!nw& zHu^S5y$h1{B6!$F6ZrUDMJx~c*L)9;wX^ZG5bt^B9p~qG*k0&%0_y2`+(tV=8+l&m zzCDo$J8akE+7SPvV%4Y2W4<=umw7?Lm1(f&$;+_1@u>A+A=;zc>ADomYsru+`feef ztWD1|IpDGFwo%Dy;Du8z$=o)(Xcq40KWG%$cwXKMWcyts?@i+I{twHs8NAM@!}G7OxOB4EH}c%Ke> z2Jg}NFCO95pp$Za9l|?I>3qG@ls+vB@BLtxvuf}*$2Zf<`EpJVf#;SM8@+{m80DGK zqt8>2O=?l1XBxL{0g-Xf8|^l_4Zj~a`xV;a&_2k=Hah`rewt?6hDd+r(AQj$2Xt|E zy8b?rmv8!?E=Rr(1DvrhmZTfp}gKwP=>4Eh5vQAepmQ5$n_4vGQrygpA-xT{#ekc&vD5oQQ}ABI$r9X zBKV}l|5(ttKO*;iM(~Vre{F0#AKb65+XbH$JSq4)!T6gM--UuM!4-lx304U<2sR4# z3ce`#s^FMlVui{-OVB0g7ThK16a0$cQNdopVZjl>Q9(MO@^=VcCb(R1v*2#QO2NAX z9~SHu91{Go;Aug+MU|5wSRwMum+L~oU4pj=-X+*5_>|zV;Aug+Rpp;8=n`BlSR_~> zSTFd1peFc~;PZkn3%)A&p5XLKRo()@T)}mMy96r*{elk*b_)gt!-BsPOq6l_DM7bj zv0#~ConV9DBZB>cKM>p@@-7t26iwQE%Hq~H$(hXgf2zo1WWgWz((1%h_L zvt=s(u;8#@zu-~9dj)F*ZxUQ5m@AkqXcs)QPv!qh!Q+C1g3W>t2;L!BA-F@(Ex1_F zA^7fImH%6UA;BjFzae<9V2$7|!3~0Wf(ry4f`8Z}@)3Mqa8U55;Jt#Cg1ZFQ30@|c zE*K{m@v8h!3I0g%NkL7}FIXYCL$E;b4$+sza-AU%xecEYmX~6yZvnhb5IsM|b9lS@fVEWTs#=FHv9{?)vfw=xmNaYD$!VIU#rSj< zYbD%Ktbd<1o)zH*{o!qu2jEU+RT&>sv>r$P?JKXPpW}XPeJtHpUbjU#0Gf%I)i?>X zl#AKOz5sraQ0h5cx|%o8?%?lwOSfTzT`|!Dj#qb;uEA$tYuNdDo};dGm`se-k4j7?2wJxD}~cJqP5(HV{6uI2boc~Y)Qnnqg^>cIcG^&8b7k&ktW{-SF;HxIlx9E#}M z(R|12x`OM<8?8$>!vjz!p4DKq@aGTc(gAG8HuUV;@fJerN?qxPrjoeb&zP>coSoRcy#_n%@%t?2s_crW=W?n0 zuJW4d0-PkpXUeJu{6=^!N<_CswGvg(2PS=1a?uTuwEwuN7Ro}dukuvxf&Zo-fSU!X z+cL9GP#enBdu%g*r?!^$cva2Kr5-*)RqxkTRb{X<`W7m~-hD^vxlZ5SPxM_Q_jC1a z)1KN}>E3Ali?9!34UU_|t|g*b$Va!Zy3txaE@x%K-qiI^-)$`lSd4O1Un-85q#jT< z7CNNBE~PebKCu57vD*&qtt*KX%F~0fzMw3)nq1Z1nQ+ z`Y53vBpccxRvS@jRw|3OZ5{TV(Nj{=xMAJ2hdtNfJFi8YpFSIv%E#8qqt^l4!6KCog0SML@m3742PpOx|ST=dI{F%lF(`RK6daw?|X>?E)P}i%sLPcpYAx-4hdM zj1w6e^leircd4Oa)zO?G3T2Ury18aNkMIzrzeMG-2H#}YmFE)u9pYpj#5^mLAZ_HH zU=1n4r`tHiyDBDk^Gx!zND2jvcPQ2`tS2&|v&c5-XT}(#<4L(^4GV`_jXJK<&upVF zM$0md1s(->PDi~;*WnY%N~MphxSqOg<%I;%Oumj?&*)0H+N3Egid&*($ZRYVB)y|+ zI8SYcI(6V)v&F_2I7W;v)%RJibkng7j$DXNq7Fu%s!=$9yjG>W^HM1_)ko{FzIMGF z(LulFJ}N&5GlZc+!z>%aD(!%$OAi(dw2t%R-jTYm(nq5wn%}Bg*zEFx^4fhh2Yl?* z+;6JWs#-&*__dVihhEWR(l48<)l5uu5z^V>Z`r2g{f|b=jR8-O8ZoLf=^3NOt7^yV z8!(k#P|o|SaE|VQDtxv1&!!aC=Ibz9!JHQGN3i>&?ZK#2tB<89Z8f%8)#_$ijS2AU zo&TQRbDOK{pw5-LXXo-VF^hDev?DfEwW$Va<8%93xc!Cod%|cHi~-NmuuZ7V=0gYf zVx6Op@tM(U)4Fq&N$*)Xu8?wBysES`?mLr)DzROK@}g^VeJs)AMjh5*qbfZRl?ECG z+sFCnn(yId85OY>vS?QErn%DcgTA`Md_D`W9FlOa*h9Uaui?@#DtY}?x`tPgM882z zS?^@|O|zutSpApRtE$rsBTip8tH`88l#AXuG`I=GsC{x~SY&Lkszy@ea`iPn)>cc;xDr z4!$z!0+bDI1Bl+io%$1jOvZ`_tB48PW$3@!+Pf?tTiIYKzZ|zo9n!SAx_&48nXD~Z zma9^Jkx*P&3v;Khi>NFC!SR!#up=O0$AKF5c&LmDy*7o<-rcBNJFcx?Mf6m{wn}VX zrSI9)+#}`e#E)ii++*0;BKmTYOOkvZCVdZH;hw58EWqQZfK&CQzOtNRQxlTW(tqQe zJT=w(FehOz9A?flsK>rNmAYAc!NwqUq7g0y?5aJl$JQ6MdMCc9t`f@x-qXYnD7=dM z3&(B5vATzR#-r%ks=6A?bnyvD5fN;!!cPKtqI*4IdzCt7qilSRgEI2tAGNalCQZ)e zcC1m(A-Fl*l;a7-#wqhg6m?EnUn>{YHR~`nqplt_oXcgeH2^3o! z=peR!;-QsxtSQ>Qxp@7iwO8c1ly1%?^f50j@dsa;`)cY+4^;0hb#^#o_}B z+OOQR(iBzJfogVPapT0sUvufW#AI*n%N44%vJ%_tixEB%I%DU=9 z2jGPUyBK(y#;S+lo`d&Q;VBm{1N3@*hIH4C5dT5CDjF^=$7-~+w!ETrzpfaiJP0%J zD^oSRTHlP`#MxPR5drV7H81X6%Pw_{|N_V40CN}u+{+{G4W_J2KQhxxnvKe6U2Jk()M4 zr90(*e8;2TKSc`DE>r1#xgX!~#H9PKQ0euO?%l1@jq;t>sC1X)@At>1!e^#YeNV>N?Ha)yRrPoV3zDLsY=Wh%6FLa4Y&zJHY zzlbeA=v3)nlKaEg$L8-@qS6~A-E%{1y8lxuy;0KLB40y4Lb)ovQ__Q${tYct>4j21 z&nvO=*Q9?NML$A2RryB#zIp2Y6O!&4j%}ajQ0bbaleEvc-y!LzBz^Fu*!#nI>V757 z$^Uo$R@EyUQ1=`9Yuqs;>5i{YoF0;NdSv4CQAu}Cl0GKs!N=77M*kb-+ogT}$0yD| zL(-j3Oq`x0>As^Arx!}P_TJFk^aMp(Gf7<4W%Qy3I*t_%m_^kI$dhJ${3Wij@d|Ooh5y46C`+$U?_yzd@wn>vc-%$0L zl;I;LOx8d7qDLi?zrp9Z^!()RI!``p^$R9zuk_D2|7EHkUO^*%g3lNAq)=@mcSi^x86h95QYKA94H`{&XfS_X83> z>G2c1Ny!m=Zk62@G^#aO|7l`patubnzynk{xl{6j@<6n&{uXb97PKwS^s8XJ%Ir#eeS>Sgd7 zi2doh{y8PW|M}SaT^9Ri-1kv&!({gQqh>7k`(z%%E*1UHA!r>}^};t((laLE^9!FO zlXDWjfQ4_tBz%p+huszW-^G*gN%RN8#%Gk?4O-?kBi_iMSol1b$M*AXi8uJhj;Z{- z7QPA#AAVlc^+&Vt`7L~Q<9cyyxs67=6zq^|-;!9qK?`4oTn8THl=aTC|3!mN6?{4G1Psf&dKP`0`s=Xa@fysYbS4o}Rw-daDSq{c~}$2^vG zn8E*X;m4(KE54!Zne!8_@5j~d$?}=3e=^=v?Q>gh)DEh6OY}LH{;Koiv)+jP)4KkU zypJ1Cm-*DVcKnt32O2({9Wd6#M!El|akBmi%6rg|r9wD2Ldnk(|8ZSTI(`abEs1;U zUsn&mKem6|e`SAZ_r#Wmvodr!eA4eTChMP)r&amZ`P6S&&z^6;ghU>}4_J3t`^WXL z$kiA>m#XWK)FUG3oTu!z_4)mL>-X34;hdXKR8NiiOx8amGJdT66TCH6kBodiF0}Sf zG~d|q6OI3WI~2ZI=|M#B!?rf~A%EY%xrZ@&7}*tj{bB3#aosom`&6B(msLwNdB5d3 zG;#W%q(>%64;uI1uI`^~yiC>}qkbNF-nZ6ovipp9_00}{yJP(&R&f~hG0?crCC_VGPt}rmF&?WJ%H`R4muETPzU8Uk9 za_x9aUAzB7p?|hQ5{yVZ&bQUacd$UAqh9cBg-*eMd`0Q1epdcZ{@T#oPrjtTr4mYHJQ#H{^uE*3 ze@S>-_|97R8|B&~-v?U9(`5Z`lxLtLEq1+Zdj?ftO@B9h~vXR z!~X?iEy#y>#$9u9q6WfV;G-ZuD<9wQ(OC)O+dX;?#PRrkkMNr$X$Ujk2^vBe?{(;h zATA5Hz!&h|3KF z4=ltvXo&X#AHNvwL0ALccZuSO0NtNbz7`km84)X0P|ekZ3h5;pt2 zV4oRjOCTTQ$>;)|MwoFw$i4>c1%3;}`QUeNnz~el@!K}-lrVn3rdA2#H){HegbBV} zHh}nEJfqSDSU_hWPyDV$g&?k{2N;qtWA_#6-2XvfI2Y&DfS)mEnaalntd+1I_!5Zw zGz46khkU_r_N&1@IPL?LA)b-_Yt$ob_OrqMHkN^oBA#*fRoD}auoL)I5a*9)AX<|z zZ2`XVS;!4M5#VcAgNMUF!`}wuNzf?b855Qhy^Ap8VhOu|`>s{_`+(mAv8+PCtt*Kf z1?Wd$JBZ`)JVYm8>R9)}z;6{0Il+VHD_XPxvO?Ged|)HKIYl@C+_XvL47^{$_->2d zlyHP`v*KYa0o{Rn86N`$5XN_|WZRefiJ`mRj-^S zw<{ieb4G_jTu-xq4)*2o3}`X<854G5+#<}l160iA0u!&7wg3$u9*o}sm4S!xMbI4x zGrkRa7-77_qT6nea)E}g4#vQZuvg$=d`h9}_*ReXrBVmrZC=1>#I4>BTa9?eQqWTfdx7kOgMDRkc<)Fo1h`&gLihc<#r{14>0rd5(d_T*mmK&HJV;8bpZYp zRE9jmz?%-MI(UKad_mbg`a8@)cjA8VU=Io%194eq-yiG)!-tod`3YkTByn z?^f}QFG-m33@8YG@?)HW*mn7V-?;J*4t+0e>FAypMS7 zU!ntF6}<)SI3ltF8vZ^Q>0#sxe#ZMi#}H=3{w4||%(w>Bh&p?K?|`_@*xy7~gE$_0 zndl^l+Z6_0{3zb*t&fZGvtjnnVfNj@K0F#5VN1c!_y(vBVa7j#zJxGi;$teFF&U&G zo^d{C5MdYaIS|*)?3aW6bsPkp01qSfP0=XAj5D6VnZF2QuN0MlxGi4bfupbs8_=h~ zrR`XgAZ+%d@fzahbz*IXc*a*i6$mqK?ZP-k*bDqiH|9HpsRwqf5As3S>>q=DXIwu3 zyM%bgw?ShFM}XLWMJd-|UI5Pj7IXk%7w{Dj>suIj*}q_XaXfJ8)3B=?1{(e@7;pG4 z>?h(G9|9dk*z9+L{aP44D;VE;7X1z$#)RikAA}iqg6tdPbSy(S2Voy@;q#ay5XOEi zst2(Q{lNRbufo`8Mej+Njzdl_DEr_8o&oXs(e#6;KMVG2(F59zc*b9Xd2}g-$D9#d=+&(t>S~g zGaw$1^cv0>25}gBmgq$Z<9#*NysmV~4_xqu3gbOBosclzWz#>5s(8G|rcb{qJiu2# zr%)ffuO|Cj&|QS_&YHdgV*SK>W?KFqs&06PO}_#0Iuq}$DfMmGCGg|jG+hf~ox%HN zs+Djk0zJ*N(YxT$fGe_ahB?NC8#rZwP3Lz2cdx+N@tZN$fWHUjAxtZ6GzQ{2klRMT z0`a=h>^p;fYODkmfS>VtPzl0e;7bKIsz5jdY}{Z|V-UFII`D8kfiJ;#MSyusJ}k_> zFxW@N?VuCjVZ0wSiZJ6*&=|su-5|%7I32It3f~6^cpx|6&AZSakTZUVp$#|KC>!zEV@xGDr+qQP*bh$6 zfLK?tcbFc&5q?7vZ}w-wel4cognJOrcq^z9Va7j$zJ##ZCk6Yecn$Ov;u){nW20e& zv3HrC0v%Tc*b?0cM-;WYq|@>`eXJ}!Tu}021?l)r{fa{ zI}tYfsbK#V%i%}Dg?PprKm`b6uQ$B`;`!a|XM%lI+;y{!yx?Jc6x4t)<3E8kgc*MX zdJ5qX@Q)xKFJ|8p?2}>_=mdBezX%#dH~@V5R_GhT_}!nzK)S7f--#PR{2XWYLBYN$ z{s@{?ggF;@1H z?T`cR4FGR|KZ@N5oBc?b{ZFu8itmGtf`{>!ph1Kg{{#vm%=qqM8=XQJ-%-&hh}(ia zj`Y~y!G{duHDKi(HX`_nF#DBYe-q0<7bBjL{YB&>Z1x+$J|;5nf*%pYGu{TOK$tQ8 zZX4Z!uoGza+vq`raaI9+0i-`W01w=wWP)#YXa;;mXv`1%R}ep&oBcL*QWy zfPRE9VnKrsIPG57*OJY)LfC<9@}0?;vp&Hfq8z8lzw!!=K!jo@Ld0Hxr)7Go=k z;~#4vPJv|u%sEb3t>io3;J{ibQ1Usi1jlFtZYTS5g!2dfHV%=kmhu;OxlQBcWj71VI2L2kv?F|F#JJ1)X593h~$1}bl z;Sr#-3u)kC+zn#8#Mmg|qrm;WHtGcr```L4i0cpmUe^a*LcAY%FDQtx25binBh1MD zDo#OejO?p|!;I{2g2RmLN5Tt!#(dDj2><`T^N|4b0Bj(CEVuGE;+i0ST0EZ9z|20D z@z{3G-}0692P>U8{fCcgy>`(ROI?fLo?e~KcI~3=#p{;jFJedaRb_iBab(f8iw>99 zE?T)FHEH>t+S>Aidn*q+kwI1MwTlkbR9#(*<3JDYsakv@CBvp>Jz(_hi=?{DlM>>utA_mA~E266`610@5# zfrbHXU}zvTFpB3_aw;F?q-AI>tx)r7^;&>s;=+3YK)8LhJ<>kbKHM8ddA_~|l+)O! zp)4f&;ZFrqw_j_}8Z}Mp)P}U6Hmr?kVQo|!)2PYbl+omD%4y1PayJz=l{9&qDw^t> z{7nr_jZIopXVXwquxYqyq$%7q+BDWg&GzPuW@mFwbAGeCxv;sU+1p&vT;J?(ZfI_7 z)|xw;hnj=U!_6bj;pWliv1V$qw`8<9TXI_RTih*$EhR19mWr187Jo}aOJhs0Ww<5W zGTK6|_Eu+WPOH1Mu+`gI(dut)Xw_OfTZ65`t>Mc=4)=v zqm^hry;nNX3tq^35K^XQ4`iw&8W4F7H-{k22&AcG=@Lm+wD=&$0OZ)&G6Y$MbXktI zxLQkEeXWt!u~s+aGuGySUi%=4MvNRsr?1o5mDAhA0b_Kfy8q0xoC^}VdW!M@SHjQ*Vd5@@Zjf3%+l@}aF>XsaLk8W?C~UDe`f z7N#^iTBf004rohBGq=PA4e+4HH2)M-V+YqW2+n+4Yt-bOpM!uFkH(uA!LrPClMX(AyQ=zV3R+qoF&{-Po;lcXkhU z4|NB1`HXajyGNl7W8Kta?{V~G^f-HRdR#sEJ?@@DXh=zqx2K}Vr)x?>PoSrjH=~zj?dr{k1u5+Hz>0W#D_}|Ld;PE`f!;<~l+NBk zXj`y%7?x#3AMKIeF<2OTpVGh_SepDkH>{1PuLM0-(dUEJ@tZ8dVBZk>akwu8D-=e5 zM*7A?XER`ta{67+U3Y&WEK^CpSMTR~Sf~c*a$~>N-w8_<)NR#he+2#S7|0lK4!CqZ bC>-#>a(M?T2I@s0w1LinLDq>6`S-s8PhiL^ literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__init__.py b/myenv/Lib/site-packages/attr/__init__.py new file mode 100644 index 0000000..5c6e065 --- /dev/null +++ b/myenv/Lib/site-packages/attr/__init__.py @@ -0,0 +1,104 @@ +# SPDX-License-Identifier: MIT + +""" +Classes Without Boilerplate +""" + +from functools import partial +from typing import Callable, Literal, Protocol + +from . import converters, exceptions, filters, setters, validators +from ._cmp import cmp_using +from ._config import get_run_validators, set_run_validators +from ._funcs import asdict, assoc, astuple, has, resolve_types +from ._make import ( + NOTHING, + Attribute, + Converter, + Factory, + _Nothing, + attrib, + attrs, + evolve, + fields, + fields_dict, + make_class, + validate, +) +from ._next_gen import define, field, frozen, mutable +from ._version_info import VersionInfo + + +s = attributes = attrs +ib = attr = attrib +dataclass = partial(attrs, auto_attribs=True) # happy Easter ;) + + +class AttrsInstance(Protocol): + pass + + +NothingType = Literal[_Nothing.NOTHING] + +__all__ = [ + "NOTHING", + "Attribute", + "AttrsInstance", + "Converter", + "Factory", + "NothingType", + "asdict", + "assoc", + "astuple", + "attr", + "attrib", + "attributes", + "attrs", + "cmp_using", + "converters", + "define", + "evolve", + "exceptions", + "field", + "fields", + "fields_dict", + "filters", + "frozen", + "get_run_validators", + "has", + "ib", + "make_class", + "mutable", + "resolve_types", + "s", + "set_run_validators", + "setters", + "validate", + "validators", +] + + +def _make_getattr(mod_name: str) -> Callable: + """ + Create a metadata proxy for packaging information that uses *mod_name* in + its warnings and errors. + """ + + def __getattr__(name: str) -> str: + if name not in ("__version__", "__version_info__"): + msg = f"module {mod_name} has no attribute {name}" + raise AttributeError(msg) + + from importlib.metadata import metadata + + meta = metadata("attrs") + + if name == "__version_info__": + return VersionInfo._from_version_string(meta["version"]) + + return meta["version"] + + return __getattr__ + + +__getattr__ = _make_getattr(__name__) diff --git a/myenv/Lib/site-packages/attr/__init__.pyi b/myenv/Lib/site-packages/attr/__init__.pyi new file mode 100644 index 0000000..133e501 --- /dev/null +++ b/myenv/Lib/site-packages/attr/__init__.pyi @@ -0,0 +1,389 @@ +import enum +import sys + +from typing import ( + Any, + Callable, + Generic, + Literal, + Mapping, + Protocol, + Sequence, + TypeVar, + overload, +) + +# `import X as X` is required to make these public +from . import converters as converters +from . import exceptions as exceptions +from . import filters as filters +from . import setters as setters +from . import validators as validators +from ._cmp import cmp_using as cmp_using +from ._typing_compat import AttrsInstance_ +from ._version_info import VersionInfo +from attrs import ( + define as define, + field as field, + mutable as mutable, + frozen as frozen, + _EqOrderType, + _ValidatorType, + _ConverterType, + _ReprArgType, + _OnSetAttrType, + _OnSetAttrArgType, + _FieldTransformer, + _ValidatorArgType, +) + +if sys.version_info >= (3, 10): + from typing import TypeGuard, TypeAlias +else: + from typing_extensions import TypeGuard, TypeAlias + +if sys.version_info >= (3, 11): + from typing import dataclass_transform +else: + from typing_extensions import dataclass_transform + +__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) + +_FilterType = Callable[["Attribute[_T]", _T], bool] + +# We subclass this here to keep the protocol's qualified name clean. +class AttrsInstance(AttrsInstance_, Protocol): + pass + +_A = TypeVar("_A", bound=type[AttrsInstance]) + +class _Nothing(enum.Enum): + NOTHING = enum.auto() + +NOTHING = _Nothing.NOTHING +NothingType: TypeAlias = Literal[_Nothing.NOTHING] + +# 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: Callable[[Any], _T], + takes_self: Literal[True], +) -> _T: ... +@overload +def Factory( + factory: Callable[[], _T], + takes_self: Literal[False], +) -> _T: ... + +In = TypeVar("In") +Out = TypeVar("Out") + +class Converter(Generic[In, Out]): + @overload + def __init__(self, converter: Callable[[In], Out]) -> None: ... + @overload + def __init__( + self, + converter: Callable[[In, AttrsInstance, Attribute], Out], + *, + takes_self: Literal[True], + takes_field: Literal[True], + ) -> None: ... + @overload + def __init__( + self, + converter: Callable[[In, Attribute], Out], + *, + takes_field: Literal[True], + ) -> None: ... + @overload + def __init__( + self, + converter: Callable[[In, AttrsInstance], Out], + *, + takes_self: Literal[True], + ) -> None: ... + +class Attribute(Generic[_T]): + name: str + default: _T | None + validator: _ValidatorType[_T] | None + repr: _ReprArgType + cmp: _EqOrderType + eq: _EqOrderType + order: _EqOrderType + hash: bool | None + init: bool + converter: Converter | None + metadata: dict[Any, Any] + type: type[_T] | None + kw_only: bool + on_setattr: _OnSetAttrType + alias: str | None + + def evolve(self, **changes: Any) -> "Attribute[Any]": ... + +# 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: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + type: None = ..., + converter: None = ..., + factory: None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., +) -> Any: ... + +# This form catches an explicit None or no default and infers the type from the +# other arguments. +@overload +def attrib( + default: None = ..., + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + type: type[_T] | None = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., +) -> _T: ... + +# This form catches an explicit default argument. +@overload +def attrib( + default: _T, + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + type: type[_T] | None = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., +) -> _T: ... + +# This form covers type=non-Type: e.g. forward references (str), Any +@overload +def attrib( + default: _T | None = ..., + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + type: object = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., +) -> Any: ... +@overload +@dataclass_transform(order_default=True, field_specifiers=(attrib, field)) +def attrs( + maybe_cls: _C, + these: dict[str, Any] | None = ..., + repr_ns: str | None = ..., + repr: bool = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + auto_detect: bool = ..., + collect_by_mro: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., + unsafe_hash: bool | None = ..., +) -> _C: ... +@overload +@dataclass_transform(order_default=True, field_specifiers=(attrib, field)) +def attrs( + maybe_cls: None = ..., + these: dict[str, Any] | None = ..., + repr_ns: str | None = ..., + repr: bool = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + auto_detect: bool = ..., + collect_by_mro: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., + unsafe_hash: bool | None = ..., +) -> Callable[[_C], _C]: ... +def fields(cls: type[AttrsInstance]) -> Any: ... +def fields_dict(cls: type[AttrsInstance]) -> dict[str, Attribute[Any]]: ... +def validate(inst: AttrsInstance) -> None: ... +def resolve_types( + cls: _A, + globalns: dict[str, Any] | None = ..., + localns: dict[str, Any] | None = ..., + attribs: list[Attribute[Any]] | None = ..., + include_extras: bool = ..., +) -> _A: ... + +# 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: list[str] | tuple[str, ...] | dict[str, Any], + bases: tuple[type, ...] = ..., + class_body: dict[str, Any] | None = ..., + repr_ns: str | None = ..., + repr: bool = ..., + cmp: _EqOrderType | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + collect_by_mro: bool = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., +) -> 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 +# XXX: remember to fix attrs.asdict/astuple too! +def asdict( + inst: AttrsInstance, + recurse: bool = ..., + filter: _FilterType[Any] | None = ..., + dict_factory: type[Mapping[Any, Any]] = ..., + retain_collection_types: bool = ..., + value_serializer: Callable[[type, Attribute[Any], Any], Any] | None = ..., + tuple_keys: bool | None = ..., +) -> dict[str, Any]: ... + +# TODO: add support for returning NamedTuple from the mypy plugin +def astuple( + inst: AttrsInstance, + recurse: bool = ..., + filter: _FilterType[Any] | None = ..., + tuple_factory: type[Sequence[Any]] = ..., + retain_collection_types: bool = ..., +) -> tuple[Any, ...]: ... +def has(cls: type) -> TypeGuard[type[AttrsInstance]]: ... +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/myenv/Lib/site-packages/attr/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..285884c86b70d7d851c9f9b29c3962138b922117 GIT binary patch literal 2363 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 X!CgB`r4<+Io&Ww_?|KdIvRC~te*OtZ literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__pycache__/_compat.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/_compat.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6eec288e9b4445eebd989dae57ecc901e45a680 GIT binary patch literal 2419 zcmaJ?&2HO95auo^ijpN;cATU^n}FzVm?mn{7zmmcL5w5_3M7V5$8F83UC`u8rc9B{ z?mCSG_muSBN3ah)^i2x%4S4Oz*B*OlJF}E+$#A+7hcmN3-1+9)*^OqiZb18^^=teK zXn&$H-Apj%i2cfG$Q ze~B**&iTu!6E&jdYr|iDY((?X!fPX1ct!p5+}yu#VE7lKR?-kj3sK@SOtqlUT#&jWZQ_U;)2W1mDMHV!CkmX5F2-AQ}Ql^djKrUDgbsdRgp zaIb}lyw*M*QY#sZ>Fd+!)@GFS9$h2i-s^n1iy*!fcoas-2ID7K1NL zZ{Qsa3&Ariu?#Xqb-H2SeRyOW1UHa?Kt2M*qkZCAkr`Q#xJp!sY zRMzo4DTr}k4CuajV7wwfLDb^z9*Lk13@lX{*n{d$?ZmSV^#)=!#~a6-{Yt}+XrIoN zoAtE27Yhm07yaEKPn8?@+*o~tDN!yEREC~BRfK}AKc38(sP?6CE0c^cMbB)Z-g(*qdN>=sOrc=Qd+CKhdx3#3lR z-kC6;HGc+j3LYU-NjAc0dzAC#{; zW5X=kO;B$z_Ix);COuUsaajoN8e=lalw?d?hR=!*P+UcU)ox1Q*%0SJU?399xI?Up zO&!~5YX6&afprYCpvaCRTA)Fl)}*H6hhHLLp<2K{aQo#w;)Y2erF(VtJE_F?-ch~L z%sv{j6-ch@d92!No{4ejSr7-_4nBmQiMSu9P|=A`!{k&bMGHZntj2IPALFt?7_?4o zB0d4lyHw`U$&*0A?JHj+h6Z3`Ymco8myS&~5c!TY5hY=r_DC`=HA4Y`CNdOyYa ze5AIsl*Pk5;dm(ZmE>EU&CX`gfZ{1(1t>hd%%AIQvfJ!4)_JnA?l-h?>*kDgYsUI? z#=1RYt&~>tS3EpFVL-1U{J(VgBw**2lg`Z|dSu4LN`E?Hi emLGy}i2lJ*ZkP?Ina4lVA`W#dr#iplnEwG?MrH#5 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__pycache__/_config.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/_config.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f919f4c625edb353a2d09f31d8dfcdcbb984d682 GIT binary patch literal 999 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 NNi|6mpYaGl`48XnFr5GZ literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__pycache__/converters.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/converters.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd7b32d4e31a35d46d0c1dd15300abcd462b7a81 GIT binary patch literal 3725 zcma)9O>Y~=8Q$4ll1o~$9LH&$G;s%Nk(z|XN=^$0svAUAqdGt<2er}zA!NDY4yCo1 zyTr`UHU$bOECY29{RKq<=g@buPs#aUH8GvHQSjuAY9-*v$un zJWI!Xq(py|@?M@j7E%kT+Kq1^g0ufEL*HcPTDX&CxsG&_XP-UQGV1AEHhojuzkhJ= z^ZnnL`tJ0usqNX_vGIq=P?)t?^rKO#!=xW(c_vJd4~a~a${L89n$E+cJWqSXYWh_$ zpyr{eKcdsl3rDkaS6=^<(`RIt=fN4vR_x3xX4-w>oU=1`;=c60cFw$sC+}(hVP)dI z>rB|gYV6;2uvf#LKk;R3_xy6Na(B*SqS=JOp0Ma&ya%`odj(Ml0UI3O&fHL3pG2BR zX_`M#Jj!^awM>piT5z57Bf+Ptw)svro6JvHa*5(F3x9Hw^iFsWL~u_DO%%HO*y*+# z_T0gED8OUt2F0HwX-bEatS_V#G4IQK0Es|LM#CW%W)A&{y2X<|Pc%P?l%*DBygZ8UWq-2^%DD3B|$^8nE>fnO%>IsEgA z?Z0xGp7FrQ_(`U;sq_<(#;=&E&qS0fAo1_}yW59fDhP1+#qP%D&klEn!(T@_I{apPl}A zdZc|fB{u4l_H<=_X({|E6>KQ|+ar5TKMEU?mYRBo4&Xtd^FGp=(QoXYxkz&NoIPW9uP#5f zd-#pL`ChqpPrDO#&i?FZ52szgkbL1h1cbys&Q=OK7K$o>+ThG9fvHx^CJ0gh$Ttwt zhWVQS1Q{>IFpYYm%=|KS_|cfRN*HZ%Bp2nL6bh(n>E(Ui>KCBfdTmmdcb60R50sWA zPT8~tK$IDaL>@*8sodsY;1?(W-~rAcDG&`j?_0Kn0`zrla?{eH$qv0^eOA_DW zC;1bBjJGm(yYq1Cc1u9S`6Y5KAly_9B429u|L_P#ErANG0LqpVUxUx;04(}EzWc9F4&e!<0$cn0`R!S=gg7KKtO40>H5jvT7FL0X!dP>+cdj;In+ZRsG zAA<`Ua}sZsoRHqW2{XwT-vcYJyn!=wNhQZrqb5M5)b^ zlFYQEu{KhCfSQYtlIk{_GTTL>Z}4t0@7l{WUDrsdbs*qR?F6Iw)>x?7&Uk4j&z7cJ zi?c0|uryvH%pOV((OravA@ZB6rWS^A-U~xX9H11l z30ag|HWiD1kx)yeDXvj1Bq_xtaa!O$6Tt*`2YEb7#V5A*p(OVGz+GY2eV5t4|M)?$ Iarqbj1^htHrvLx| literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__pycache__/exceptions.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/exceptions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e17b347237edce15ebdf4eb7ecb4ce7a2143719 GIT binary patch literal 3259 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/__pycache__/setters.cpython-38.pyc b/myenv/Lib/site-packages/attr/__pycache__/setters.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7479166d8659ce7549a6c8306f90e2af625847f GIT binary patch literal 1596 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 A1poj5 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attr/_cmp.py b/myenv/Lib/site-packages/attr/_cmp.py new file mode 100644 index 0000000..09bab49 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_cmp.py @@ -0,0 +1,160 @@ +# SPDX-License-Identifier: MIT + + +import functools +import types + +from ._make import __ne__ + + +_operation_names = {"eq": "==", "lt": "<", "le": "<=", "gt": ">", "ge": ">="} + + +def cmp_using( + eq=None, + lt=None, + le=None, + gt=None, + ge=None, + require_same_type=True, + class_name="Comparable", +): + """ + Create a class that can be passed into `attrs.field`'s ``eq``, ``order``, + and ``cmp`` arguments to customize field comparison. + + The resulting class will have a full set of ordering methods if at least + one of ``{lt, le, gt, ge}`` and ``eq`` are provided. + + Args: + eq (typing.Callable | None): + Callable used to evaluate equality of two objects. + + lt (typing.Callable | None): + Callable used to evaluate whether one object is less than another + object. + + le (typing.Callable | None): + Callable used to evaluate whether one object is less than or equal + to another object. + + gt (typing.Callable | None): + Callable used to evaluate whether one object is greater than + another object. + + ge (typing.Callable | None): + Callable used to evaluate whether one object is greater than or + equal to another object. + + require_same_type (bool): + When `True`, equality and ordering methods will return + `NotImplemented` if objects are not of the same type. + + class_name (str | None): Name of class. Defaults to "Comparable". + + See `comparison` for more details. + + .. versionadded:: 21.1.0 + """ + + body = { + "__slots__": ["value"], + "__init__": _make_init(), + "_requirements": [], + "_is_comparable_to": _is_comparable_to, + } + + # Add operations. + num_order_functions = 0 + has_eq_function = False + + if eq is not None: + has_eq_function = True + body["__eq__"] = _make_operator("eq", eq) + body["__ne__"] = __ne__ + + if lt is not None: + num_order_functions += 1 + body["__lt__"] = _make_operator("lt", lt) + + if le is not None: + num_order_functions += 1 + body["__le__"] = _make_operator("le", le) + + if gt is not None: + num_order_functions += 1 + body["__gt__"] = _make_operator("gt", gt) + + if ge is not None: + num_order_functions += 1 + body["__ge__"] = _make_operator("ge", ge) + + type_ = types.new_class( + class_name, (object,), {}, lambda ns: ns.update(body) + ) + + # Add same type requirement. + if require_same_type: + type_._requirements.append(_check_same_type) + + # Add total ordering if at least one operation was defined. + if 0 < num_order_functions < 4: + if not has_eq_function: + # functools.total_ordering requires __eq__ to be defined, + # so raise early error here to keep a nice stack. + msg = "eq must be define is order to complete ordering from lt, le, gt, ge." + raise ValueError(msg) + type_ = functools.total_ordering(type_) + + return type_ + + +def _make_init(): + """ + Create __init__ method. + """ + + def __init__(self, value): + """ + Initialize object with *value*. + """ + self.value = value + + return __init__ + + +def _make_operator(name, func): + """ + Create operator method. + """ + + def method(self, other): + if not self._is_comparable_to(other): + return NotImplemented + + result = func(self.value, other.value) + if result is NotImplemented: + return NotImplemented + + return result + + method.__name__ = f"__{name}__" + method.__doc__ = ( + f"Return a {_operation_names[name]} b. Computed by attrs." + ) + + return method + + +def _is_comparable_to(self, other): + """ + Check whether `other` is comparable to `self`. + """ + return all(func(self, other) for func in self._requirements) + + +def _check_same_type(self, other): + """ + Return True if *self* and *other* are of the same type, False otherwise. + """ + return other.value.__class__ is self.value.__class__ diff --git a/myenv/Lib/site-packages/attr/_cmp.pyi b/myenv/Lib/site-packages/attr/_cmp.pyi new file mode 100644 index 0000000..cc7893b --- /dev/null +++ b/myenv/Lib/site-packages/attr/_cmp.pyi @@ -0,0 +1,13 @@ +from typing import Any, Callable + +_CompareWithType = Callable[[Any, Any], bool] + +def cmp_using( + eq: _CompareWithType | None = ..., + lt: _CompareWithType | None = ..., + le: _CompareWithType | None = ..., + gt: _CompareWithType | None = ..., + ge: _CompareWithType | None = ..., + require_same_type: bool = ..., + class_name: str = ..., +) -> type: ... diff --git a/myenv/Lib/site-packages/attr/_compat.py b/myenv/Lib/site-packages/attr/_compat.py new file mode 100644 index 0000000..22fcd78 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_compat.py @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: MIT + +import inspect +import platform +import sys +import threading + +from collections.abc import Mapping, Sequence # noqa: F401 +from typing import _GenericAlias + + +PYPY = platform.python_implementation() == "PyPy" +PY_3_9_PLUS = sys.version_info[:2] >= (3, 9) +PY_3_10_PLUS = sys.version_info[:2] >= (3, 10) +PY_3_11_PLUS = sys.version_info[:2] >= (3, 11) +PY_3_12_PLUS = sys.version_info[:2] >= (3, 12) +PY_3_13_PLUS = sys.version_info[:2] >= (3, 13) +PY_3_14_PLUS = sys.version_info[:2] >= (3, 14) + + +if PY_3_14_PLUS: # pragma: no cover + import annotationlib + + _get_annotations = annotationlib.get_annotations + +else: + + def _get_annotations(cls): + """ + Get annotations for *cls*. + """ + return cls.__dict__.get("__annotations__", {}) + + +class _AnnotationExtractor: + """ + Extract type annotations from a callable, returning None whenever there + is none. + """ + + __slots__ = ["sig"] + + def __init__(self, callable): + try: + self.sig = inspect.signature(callable) + except (ValueError, TypeError): # inspect failed + self.sig = None + + def get_first_param_type(self): + """ + Return the type annotation of the first argument if it's not empty. + """ + if not self.sig: + return None + + params = list(self.sig.parameters.values()) + if params and params[0].annotation is not inspect.Parameter.empty: + return params[0].annotation + + return None + + def get_return_type(self): + """ + Return the return type if it's not empty. + """ + if ( + self.sig + and self.sig.return_annotation is not inspect.Signature.empty + ): + return self.sig.return_annotation + + return None + + +# Thread-local global to track attrs instances which are already being repr'd. +# This is needed because there is no other (thread-safe) way to pass info +# about the instances that are already being repr'd through the call stack +# in order to ensure we don't perform infinite recursion. +# +# For instance, if an instance contains a dict which contains that instance, +# we need to know that we're already repr'ing the outside instance from within +# the dict's repr() call. +# +# This lives here rather than in _make.py so that the functions in _make.py +# don't have a direct reference to the thread-local in their globals dict. +# If they have such a reference, it breaks cloudpickle. +repr_context = threading.local() + + +def get_generic_base(cl): + """If this is a generic class (A[str]), return the generic base for it.""" + if cl.__class__ is _GenericAlias: + return cl.__origin__ + return None diff --git a/myenv/Lib/site-packages/attr/_config.py b/myenv/Lib/site-packages/attr/_config.py new file mode 100644 index 0000000..4b25772 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_config.py @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: MIT + +__all__ = ["get_run_validators", "set_run_validators"] + +_run_validators = True + + +def set_run_validators(run): + """ + Set whether or not validators are run. By default, they are run. + + .. deprecated:: 21.3.0 It will not be removed, but it also will not be + moved to new ``attrs`` namespace. Use `attrs.validators.set_disabled()` + instead. + """ + if not isinstance(run, bool): + msg = "'run' must be bool." + raise TypeError(msg) + global _run_validators + _run_validators = run + + +def get_run_validators(): + """ + Return whether or not validators are run. + + .. deprecated:: 21.3.0 It will not be removed, but it also will not be + moved to new ``attrs`` namespace. Use `attrs.validators.get_disabled()` + instead. + """ + return _run_validators diff --git a/myenv/Lib/site-packages/attr/_funcs.py b/myenv/Lib/site-packages/attr/_funcs.py new file mode 100644 index 0000000..c39fb8a --- /dev/null +++ b/myenv/Lib/site-packages/attr/_funcs.py @@ -0,0 +1,468 @@ +# SPDX-License-Identifier: MIT + + +import copy + +from ._compat import PY_3_9_PLUS, get_generic_base +from ._make import _OBJ_SETATTR, NOTHING, 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. + + Args: + inst: Instance of an *attrs*-decorated class. + + recurse (bool): Recurse into classes that are also *attrs*-decorated. + + filter (~typing.Callable): + A callable whose return code determines whether an attribute or + element is included (`True`) or dropped (`False`). Is called with + the `attrs.Attribute` as the first argument and the value as the + second argument. + + dict_factory (~typing.Callable): + A callable to produce dictionaries from. For example, to produce + ordered dictionaries instead of normal Python dictionaries, pass in + ``collections.OrderedDict``. + + retain_collection_types (bool): + Do not convert to `list` when encountering an attribute whose type + is `tuple` or `set`. Only meaningful if *recurse* is `True`. + + value_serializer (typing.Callable | None): + 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. + + Returns: + Return type of *dict_factory*. + + Raises: + attrs.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* + .. versionadded:: 21.3.0 + If a dict has a collection for a key, it is serialized as a tuple. + """ + 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, + recurse=True, + filter=filter, + dict_factory=dict_factory, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ) + elif isinstance(v, (tuple, list, set, frozenset)): + cf = v.__class__ if retain_collection_types is True else list + items = [ + _asdict_anything( + i, + is_key=False, + filter=filter, + dict_factory=dict_factory, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ) + for i in v + ] + try: + rv[a.name] = cf(items) + except TypeError: + if not issubclass(cf, tuple): + raise + # Workaround for TypeError: cf.__new__() missing 1 required + # positional argument (which appears, for a namedturle) + rv[a.name] = cf(*items) + elif isinstance(v, dict): + df = dict_factory + rv[a.name] = df( + ( + _asdict_anything( + kk, + is_key=True, + filter=filter, + dict_factory=df, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ), + _asdict_anything( + vv, + is_key=False, + filter=filter, + dict_factory=df, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ), + ) + for kk, vv in v.items() + ) + else: + rv[a.name] = v + else: + rv[a.name] = v + return rv + + +def _asdict_anything( + val, + is_key, + 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, + recurse=True, + filter=filter, + dict_factory=dict_factory, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ) + elif isinstance(val, (tuple, list, set, frozenset)): + if retain_collection_types is True: + cf = val.__class__ + elif is_key: + cf = tuple + else: + cf = list + + rv = cf( + [ + _asdict_anything( + i, + is_key=False, + filter=filter, + dict_factory=dict_factory, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ) + for i in val + ] + ) + elif isinstance(val, dict): + df = dict_factory + rv = df( + ( + _asdict_anything( + kk, + is_key=True, + filter=filter, + dict_factory=df, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ), + _asdict_anything( + vv, + is_key=False, + filter=filter, + dict_factory=df, + retain_collection_types=retain_collection_types, + value_serializer=value_serializer, + ), + ) + for kk, vv in val.items() + ) + 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. + + Args: + inst: Instance of an *attrs*-decorated class. + + recurse (bool): + Recurse into classes that are also *attrs*-decorated. + + filter (~typing.Callable): + A callable whose return code determines whether an attribute or + element is included (`True`) or dropped (`False`). Is called with + the `attrs.Attribute` as the first argument and the value as the + second argument. + + tuple_factory (~typing.Callable): + A callable to produce tuples from. For example, to produce lists + instead of tuples. + + retain_collection_types (bool): + Do not convert to `list` or `dict` when encountering an attribute + which type is `tuple`, `dict` or `set`. Only meaningful if + *recurse* is `True`. + + Returns: + Return type of *tuple_factory* + + Raises: + attrs.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 + items = [ + ( + astuple( + j, + recurse=True, + filter=filter, + tuple_factory=tuple_factory, + retain_collection_types=retain, + ) + if has(j.__class__) + else j + ) + for j in v + ] + try: + rv.append(cf(items)) + except TypeError: + if not issubclass(cf, tuple): + raise + # Workaround for TypeError: cf.__new__() missing 1 required + # positional argument (which appears, for a namedturle) + rv.append(cf(*items)) + 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 v.items() + ) + ) + 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. + + Args: + cls (type): Class to introspect. + + Raises: + TypeError: If *cls* is not a class. + + Returns: + bool: + """ + attrs = getattr(cls, "__attrs_attrs__", None) + if attrs is not None: + return True + + # No attrs, maybe it's a specialized generic (A[str])? + generic_base = get_generic_base(cls) + if generic_base is not None: + generic_attrs = getattr(generic_base, "__attrs_attrs__", None) + if generic_attrs is not None: + # Stick it on here for speed next time. + cls.__attrs_attrs__ = generic_attrs + return generic_attrs is not None + return False + + +def assoc(inst, **changes): + """ + Copy *inst* and apply *changes*. + + This is different from `evolve` that applies the changes to the arguments + that create the new instance. + + `evolve`'s behavior is preferable, but there are `edge cases`_ where it + doesn't work. Therefore `assoc` is deprecated, but will not be removed. + + .. _`edge cases`: https://github.com/python-attrs/attrs/issues/251 + + Args: + inst: Instance of a class with *attrs* attributes. + + changes: Keyword changes in the new copy. + + Returns: + A copy of inst with *changes* incorporated. + + Raises: + attrs.exceptions.AttrsAttributeNotFoundError: + If *attr_name* couldn't be found on *cls*. + + attrs.exceptions.NotAnAttrsClassError: + If *cls* is not an *attrs* class. + + .. deprecated:: 17.1.0 + Use `attrs.evolve` instead if you can. This function will not be + removed du to the slightly different approach compared to + `attrs.evolve`, though. + """ + new = copy.copy(inst) + attrs = fields(inst.__class__) + for k, v in changes.items(): + a = getattr(attrs, k, NOTHING) + if a is NOTHING: + msg = f"{k} is not an attrs attribute on {new.__class__}." + raise AttrsAttributeNotFoundError(msg) + _OBJ_SETATTR(new, k, v) + return new + + +def resolve_types( + cls, globalns=None, localns=None, attribs=None, include_extras=True +): + """ + Resolve any strings and forward annotations in type annotations. + + This is only required if you need concrete types in :class:`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, for example, 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. + + Args: + cls (type): Class to resolve. + + globalns (dict | None): Dictionary containing global variables. + + localns (dict | None): Dictionary containing local variables. + + attribs (list | None): + List of attribs for the given class. This is necessary when calling + from inside a ``field_transformer`` since *cls* is not an *attrs* + class yet. + + include_extras (bool): + Resolve more accurately, if possible. Pass ``include_extras`` to + ``typing.get_hints``, if supported by the typing module. On + supported Python versions (3.9+), this resolves the types more + accurately. + + Raises: + TypeError: If *cls* is not a class. + + attrs.exceptions.NotAnAttrsClassError: + If *cls* is not an *attrs* class and you didn't pass any attribs. + + 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** `attrs.define`. That means the + decorator has to come in the line **before** `attrs.define`. + + .. versionadded:: 20.1.0 + .. versionadded:: 21.1.0 *attribs* + .. versionadded:: 23.1.0 *include_extras* + """ + # Since calling get_type_hints is expensive we cache whether we've + # done it already. + if getattr(cls, "__attrs_types_resolved__", None) != cls: + import typing + + kwargs = {"globalns": globalns, "localns": localns} + + if PY_3_9_PLUS: + kwargs["include_extras"] = include_extras + + hints = typing.get_type_hints(cls, **kwargs) + for field in fields(cls) if attribs is None else attribs: + if field.name in hints: + # Since fields have been frozen we must work around it. + _OBJ_SETATTR(field, "type", hints[field.name]) + # We store the class we resolved so that subclasses know they haven't + # been resolved. + cls.__attrs_types_resolved__ = cls + + # Return the class so you can use it as a decorator too. + return cls diff --git a/myenv/Lib/site-packages/attr/_make.py b/myenv/Lib/site-packages/attr/_make.py new file mode 100644 index 0000000..e84d979 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_make.py @@ -0,0 +1,3123 @@ +# SPDX-License-Identifier: MIT + +from __future__ import annotations + +import abc +import contextlib +import copy +import enum +import inspect +import itertools +import linecache +import sys +import types +import unicodedata + +from collections.abc import Callable, Mapping +from functools import cached_property +from typing import Any, NamedTuple, TypeVar + +# We need to import _compat itself in addition to the _compat members to avoid +# having the thread-local in the globals here. +from . import _compat, _config, setters +from ._compat import ( + PY_3_10_PLUS, + PY_3_11_PLUS, + PY_3_13_PLUS, + _AnnotationExtractor, + _get_annotations, + get_generic_base, +) +from .exceptions import ( + DefaultAlreadySetError, + FrozenInstanceError, + NotAnAttrsClassError, + UnannotatedAttributeError, +) + + +# This is used at least twice, so cache it here. +_OBJ_SETATTR = object.__setattr__ +_INIT_FACTORY_PAT = "__attr_factory_%s" +_CLASSVAR_PREFIXES = ( + "typing.ClassVar", + "t.ClassVar", + "ClassVar", + "typing_extensions.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 = types.MappingProxyType({}) + +# Unique object for unequivocal getattr() defaults. +_SENTINEL = object() + +_DEFAULT_ON_SETATTR = setters.pipe(setters.convert, setters.validate) + + +class _Nothing(enum.Enum): + """ + Sentinel to indicate the lack of a value when `None` is ambiguous. + + If extending attrs, you can use ``typing.Literal[NOTHING]`` to show + that a value may be ``NOTHING``. + + .. versionchanged:: 21.1.0 ``bool(NOTHING)`` is now False. + .. versionchanged:: 22.2.0 ``NOTHING`` is now an ``enum.Enum`` variant. + """ + + NOTHING = enum.auto() + + def __repr__(self): + return "NOTHING" + + def __bool__(self): + return False + + +NOTHING = _Nothing.NOTHING +""" +Sentinel to indicate the lack of a value when `None` is ambiguous. + +When using in 3rd party code, use `attrs.NothingType` for type annotations. +""" + + +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. + """ + + def __reduce__(self, _none_constructor=type(None), _args=()): # noqa: B008 + 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, + alias=None, +): + """ + Create a new field / attribute on a class. + + Identical to `attrs.field`, except it's not keyword-only. + + Consider using `attrs.field` in new code (``attr.ib`` will *never* go away, + though). + + .. warning:: + + Does **nothing** unless the class is also decorated with + `attr.s` (or similar)! + + + .. 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 + .. versionchanged:: 21.1.0 + *eq*, *order*, and *cmp* also accept a custom callable + .. versionchanged:: 21.1.0 *cmp* undeprecated + .. versionadded:: 22.2.0 *alias* + """ + eq, eq_key, order, order_key = _determine_attrib_eq_order( + cmp, eq, order, True + ) + + if hash is not None and hash is not True and hash is not False: + msg = "Invalid value for hash. Must be True, False, or None." + raise TypeError(msg) + + if factory is not None: + if default is not NOTHING: + msg = ( + "The `default` and `factory` arguments are mutually exclusive." + ) + raise ValueError(msg) + if not callable(factory): + msg = "The `factory` argument must be a callable." + raise ValueError(msg) + 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, + eq_key=eq_key, + order=order, + order_key=order_key, + on_setattr=on_setattr, + alias=alias, + ) + + +def _compile_and_eval( + script: str, + globs: dict[str, Any] | None, + locs: Mapping[str, object] | None = None, + filename: str = "", +) -> None: + """ + Evaluate the script with the given global (globs) and local (locs) + variables. + """ + bytecode = compile(script, filename, "exec") + eval(bytecode, globs, locs) + + +def _linecache_and_compile( + script: str, + filename: str, + globs: dict[str, Any] | None, + locals: Mapping[str, object] | None = None, +) -> dict[str, Any]: + """ + Cache the script with _linecache_, compile it and return the _locals_. + """ + + locs = {} if locals is None else locals + + # In order of debuggers like PDB being able to step through the code, + # we add a fake linecache entry. + count = 1 + base_filename = filename + while True: + linecache_tuple = ( + len(script), + None, + script.splitlines(True), + filename, + ) + old_val = linecache.cache.setdefault(filename, linecache_tuple) + if old_val == linecache_tuple: + break + + filename = f"{base_filename[:-1]}-{count}>" + count += 1 + + _compile_and_eval(script, globs, locs, filename) + + return locs + + +def _make_attr_tuple_class(cls_name: str, attr_names: list[str]) -> type: + """ + 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 = f"{cls_name}Attributes" + body = {} + for i, attr_name in enumerate(attr_names): + + def getter(self, i=i): + return self[i] + + body[attr_name] = property(getter) + return type(attr_class_name, (tuple,), body) + + +# Tuple class for extracted attributes from a class definition. +# `base_attrs` is a subset of `attrs`. +class _Attributes(NamedTuple): + attrs: type + base_attrs: list[Attribute] + base_attrs_map: dict[str, type] + + +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. + """ + annot = str(annot) + + # Annotation can be quoted. + if annot.startswith(("'", '"')) and annot.endswith(("'", '"')): + annot = annot[1:-1] + + return annot.startswith(_CLASSVAR_PREFIXES) + + +def _has_own_attribute(cls, attrib_name): + """ + Check whether *cls* defines *attrib_name* (and doesn't just inherit it). + """ + return attrib_name in cls.__dict__ + + +def _collect_base_attrs( + cls, taken_attr_names +) -> tuple[list[Attribute], dict[str, type]]: + """ + 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) # noqa: PLW2901 + 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) # noqa: PLW2901 + 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 +) -> _Attributes: + """ + 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. + + If *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 = list(these.items()) + elif auto_attribs is True: + ca_names = { + name + for name, attr in cd.items() + if attr.__class__ is _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 a.__class__ is not _CountingAttr: + a = attrib(a) + ca_list.append((attr_name, a)) + + unannotated = ca_names - annot_names + if unannotated: + 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 attr.__class__ is _CountingAttr + ), + key=lambda e: e[1].counter, + ) + + fca = Attribute.from_counting_attr + own_attrs = [ + fca(attr_name, ca, 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} + ) + + 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 = base_attrs + own_attrs + + if field_transformer is not None: + attrs = tuple(field_transformer(cls, attrs)) + + # Check attr order after executing the field_transformer. + # 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: + msg = f"No mandatory attributes allowed after an attribute with a default value or factory. Attribute in question: {a!r}" + raise ValueError(msg) + + if had_default is False and a.default is not NOTHING: + had_default = True + + # Resolve default field alias after executing field_transformer. + # This allows field_transformer to differentiate between explicit vs + # default aliases and supply their own defaults. + for a in attrs: + if not a.alias: + # Evolve is very slow, so we hold our nose and do it dirty. + _OBJ_SETATTR.__get__(a)("alias", _default_init_alias_for(a.name)) + + # Create AttrsClass *after* applying the field_transformer since it may + # add or remove attributes! + attr_names = [a.name for a in attrs] + AttrsClass = _make_attr_tuple_class(cls.__name__, attr_names) + + return _Attributes(AttrsClass(attrs), base_attrs, base_attr_map) + + +def _make_cached_property_getattr(cached_properties, original_getattr, cls): + lines = [ + # Wrapped to get `__class__` into closure cell for super() + # (It will be replaced with the newly constructed class after construction). + "def wrapper(_cls):", + " __class__ = _cls", + " def __getattr__(self, item, cached_properties=cached_properties, original_getattr=original_getattr, _cached_setattr_get=_cached_setattr_get):", + " func = cached_properties.get(item)", + " if func is not None:", + " result = func(self)", + " _setter = _cached_setattr_get(self)", + " _setter(item, result)", + " return result", + ] + if original_getattr is not None: + lines.append( + " return original_getattr(self, item)", + ) + else: + lines.extend( + [ + " try:", + " return super().__getattribute__(item)", + " except AttributeError:", + " if not hasattr(super(), '__getattr__'):", + " raise", + " return super().__getattr__(item)", + " original_error = f\"'{self.__class__.__name__}' object has no attribute '{item}'\"", + " raise AttributeError(original_error)", + ] + ) + + lines.extend( + [ + " return __getattr__", + "__getattr__ = wrapper(_cls)", + ] + ) + + unique_filename = _generate_unique_filename(cls, "getattr") + + glob = { + "cached_properties": cached_properties, + "_cached_setattr_get": _OBJ_SETATTR.__get__, + "original_getattr": original_getattr, + } + + return _linecache_and_compile( + "\n".join(lines), unique_filename, glob, locals={"_cls": cls} + )["__getattr__"] + + +def _frozen_setattrs(self, name, value): + """ + Attached to frozen classes as __setattr__. + """ + if isinstance(self, BaseException) and name in ( + "__cause__", + "__context__", + "__traceback__", + "__suppress_context__", + "__notes__", + ): + BaseException.__setattr__(self, name, value) + return + + raise FrozenInstanceError + + +def _frozen_delattrs(self, name): + """ + Attached to frozen classes as __delattr__. + """ + if isinstance(self, BaseException) and name in ("__notes__",): + BaseException.__delattr__(self, name) + return + + raise FrozenInstanceError + + +def evolve(*args, **changes): + """ + Create a new instance, based on the first positional argument with + *changes* applied. + + .. tip:: + + On Python 3.13 and later, you can also use `copy.replace` instead. + + Args: + + inst: + Instance of a class with *attrs* attributes. *inst* must be passed + as a positional argument. + + changes: + Keyword changes in the new copy. + + Returns: + A copy of inst with *changes* incorporated. + + Raises: + TypeError: + If *attr_name* couldn't be found in the class ``__init__``. + + attrs.exceptions.NotAnAttrsClassError: + If *cls* is not an *attrs* class. + + .. versionadded:: 17.1.0 + .. deprecated:: 23.1.0 + It is now deprecated to pass the instance using the keyword argument + *inst*. It will raise a warning until at least April 2024, after which + it will become an error. Always pass the instance as a positional + argument. + .. versionchanged:: 24.1.0 + *inst* can't be passed as a keyword argument anymore. + """ + try: + (inst,) = args + except ValueError: + msg = ( + f"evolve() takes 1 positional argument, but {len(args)} were given" + ) + raise TypeError(msg) from None + + 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 = a.alias + if init_name not in changes: + changes[init_name] = getattr(inst, attr_name) + + return cls(**changes) + + +class _ClassBuilder: + """ + Iteratively build *one* class. + """ + + __slots__ = ( + "_add_method_dunders", + "_attr_names", + "_attrs", + "_base_attr_map", + "_base_names", + "_cache_hash", + "_cls", + "_cls_dict", + "_delete_attribs", + "_frozen", + "_has_custom_setattr", + "_has_post_init", + "_has_pre_init", + "_is_exc", + "_on_setattr", + "_pre_init_has_args", + "_repr_added", + "_script_snippets", + "_slots", + "_weakref_slot", + "_wrote_own_setattr", + ) + + def __init__( + self, + cls: type, + 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 = {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_pre_init = bool(getattr(cls, "__attrs_pre_init__", False)) + self._pre_init_has_args = False + if self._has_pre_init: + # Check if the pre init method has more arguments than just `self` + # We want to pass arguments if pre init expects arguments + pre_init_func = cls.__attrs_pre_init__ + pre_init_signature = inspect.signature(pre_init_func) + self._pre_init_has_args = len(pre_init_signature.parameters) > 1 + 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._wrote_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._wrote_own_setattr = True + elif on_setattr in ( + _DEFAULT_ON_SETATTR, + setters.validate, + setters.convert, + ): + has_validator = has_converter = False + for a in attrs: + if a.validator is not None: + has_validator = True + if a.converter is not None: + has_converter = True + + if has_validator and has_converter: + break + if ( + ( + on_setattr == _DEFAULT_ON_SETATTR + and not (has_validator or has_converter) + ) + or (on_setattr == setters.validate and not has_validator) + or (on_setattr == setters.convert and not has_converter) + ): + # If class-level on_setattr is set to convert + validate, but + # there's no field to convert or validate, pretend like there's + # no on_setattr. + self._on_setattr = None + + if getstate_setstate: + ( + self._cls_dict["__getstate__"], + self._cls_dict["__setstate__"], + ) = self._make_getstate_setstate() + + # tuples of script, globs, hook + self._script_snippets: list[ + tuple[str, dict, Callable[[dict, dict], Any]] + ] = [] + self._repr_added = False + + # We want to only do this check once; in 99.9% of cases these + # exist. + if not hasattr(self._cls, "__module__") or not hasattr( + self._cls, "__qualname__" + ): + self._add_method_dunders = self._add_method_dunders_safe + else: + self._add_method_dunders = self._add_method_dunders_unsafe + + def __repr__(self): + return f"<_ClassBuilder(cls={self._cls.__name__})>" + + def _eval_snippets(self) -> None: + """ + Evaluate any registered snippets in one go. + """ + script = "\n".join([snippet[0] for snippet in self._script_snippets]) + globs = {} + for _, snippet_globs, _ in self._script_snippets: + globs.update(snippet_globs) + + locs = _linecache_and_compile( + script, + _generate_unique_filename(self._cls, "methods"), + globs, + ) + + for _, _, hook in self._script_snippets: + hook(self._cls_dict, locs) + + def build_class(self): + """ + Finalize class based on the accumulated configuration. + + Builder cannot be used after calling this method. + """ + self._eval_snippets() + if self._slots is True: + cls = self._create_slots_class() + else: + cls = self._patch_original_class() + if PY_3_10_PLUS: + cls = abc.update_abstractmethods(cls) + + # The method gets only called if it's not inherited from a base class. + # _has_own_attribute does NOT work properly for classmethods. + if ( + getattr(cls, "__attrs_init_subclass__", None) + and "__attrs_init_subclass__" not in cls.__dict__ + ): + cls.__attrs_init_subclass__() + + return cls + + 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 + ): + # An AttributeError 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. + with contextlib.suppress(AttributeError): + delattr(cls, name) + + # 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._wrote_own_setattr and getattr( + cls, "__attrs_own_setattr__", False + ): + cls.__attrs_own_setattr__ = False + + if not self._has_custom_setattr: + cls.__setattr__ = _OBJ_SETATTR + + return cls + + def _create_slots_class(self): + """ + Build and return a new class with a `__slots__` attribute. + """ + cd = { + k: v + for k, v in self._cls_dict.items() + 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._wrote_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__"] = _OBJ_SETATTR + break + + # Traverse the MRO to collect existing slots + # and check for an existing __weakref__. + existing_slots = {} + 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 + existing_slots.update( + { + name: getattr(base_cls, name) + for name in getattr(base_cls, "__slots__", []) + } + ) + + base_names = set(self._base_names) + + 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__",) + + cached_properties = { + name: cached_prop.func + for name, cached_prop in cd.items() + if isinstance(cached_prop, cached_property) + } + + # Collect methods with a `__class__` reference that are shadowed in the new class. + # To know to update them. + additional_closure_functions_to_update = [] + if cached_properties: + class_annotations = _get_annotations(self._cls) + for name, func in cached_properties.items(): + # Add cached properties to names for slotting. + names += (name,) + # Clear out function from class to avoid clashing. + del cd[name] + additional_closure_functions_to_update.append(func) + annotation = inspect.signature(func).return_annotation + if annotation is not inspect.Parameter.empty: + class_annotations[name] = annotation + + original_getattr = cd.get("__getattr__") + if original_getattr is not None: + additional_closure_functions_to_update.append(original_getattr) + + cd["__getattr__"] = _make_cached_property_getattr( + cached_properties, original_getattr, self._cls + ) + + # 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] + + # There are slots for attributes from current class + # that are defined in parent classes. + # As their descriptors may be overridden by a child class, + # we collect them here and update the class dict + reused_slots = { + slot: slot_descriptor + for slot, slot_descriptor in existing_slots.items() + if slot in slot_names + } + slot_names = [name for name in slot_names if name not in reused_slots] + cd.update(reused_slots) + if self._cache_hash: + slot_names.append(_HASH_CACHE_FIELD) + + cd["__slots__"] = tuple(slot_names) + + cd["__qualname__"] = self._cls.__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 + # . + # 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 itertools.chain( + cls.__dict__.values(), additional_closure_functions_to_update + ): + 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) + elif isinstance(item, property): + # Workaround for property `super()` shortcut (PY3-only). + # There is no universal way for other descriptors. + closure_cells = getattr(item.fget, "__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: # noqa: PERF203 + # ValueError: Cell is empty + pass + else: + if match: + cell.cell_contents = cls + return cls + + def add_repr(self, ns): + script, globs = _make_repr_script(self._attrs, ns) + + def _attach_repr(cls_dict, globs): + cls_dict["__repr__"] = self._add_method_dunders(globs["__repr__"]) + + self._script_snippets.append((script, globs, _attach_repr)) + self._repr_added = True + return self + + def add_str(self): + if not self._repr_added: + msg = "__str__ can only be generated if a __repr__ exists." + raise ValueError(msg) + + 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 {name: 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) + if isinstance(state, tuple): + # Backward compatibility with attrs instances pickled with + # attrs versions before v22.2.0 which stored tuples. + for name, value in zip(state_attr_names, state): + __bound_setattr(name, value) + else: + for name in state_attr_names: + if name in state: + __bound_setattr(name, state[name]) + + # 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): + script, globs = _make_hash_script( + self._cls, + self._attrs, + frozen=self._frozen, + cache_hash=self._cache_hash, + ) + + def attach_hash(cls_dict: dict, locs: dict) -> None: + cls_dict["__hash__"] = self._add_method_dunders(locs["__hash__"]) + + self._script_snippets.append((script, globs, attach_hash)) + + return self + + def add_init(self): + script, globs, annotations = _make_init_script( + self._cls, + self._attrs, + self._has_pre_init, + self._pre_init_has_args, + self._has_post_init, + self._frozen, + self._slots, + self._cache_hash, + self._base_attr_map, + self._is_exc, + self._on_setattr, + attrs_init=False, + ) + + def _attach_init(cls_dict, globs): + init = globs["__init__"] + init.__annotations__ = annotations + cls_dict["__init__"] = self._add_method_dunders(init) + + self._script_snippets.append((script, globs, _attach_init)) + + return self + + def add_replace(self): + self._cls_dict["__replace__"] = self._add_method_dunders( + lambda self, **changes: evolve(self, **changes) + ) + return self + + def add_match_args(self): + self._cls_dict["__match_args__"] = tuple( + field.name + for field in self._attrs + if field.init and not field.kw_only + ) + + def add_attrs_init(self): + script, globs, annotations = _make_init_script( + self._cls, + self._attrs, + self._has_pre_init, + self._pre_init_has_args, + self._has_post_init, + self._frozen, + self._slots, + self._cache_hash, + self._base_attr_map, + self._is_exc, + self._on_setattr, + attrs_init=True, + ) + + def _attach_attrs_init(cls_dict, globs): + init = globs["__attrs_init__"] + init.__annotations__ = annotations + cls_dict["__attrs_init__"] = self._add_method_dunders(init) + + self._script_snippets.append((script, globs, _attach_attrs_init)) + + return self + + def add_eq(self): + cd = self._cls_dict + + script, globs = _make_eq_script(self._attrs) + + def _attach_eq(cls_dict, globs): + cls_dict["__eq__"] = self._add_method_dunders(globs["__eq__"]) + + self._script_snippets.append((script, globs, _attach_eq)) + + cd["__ne__"] = __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): + 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! + msg = "Can't combine custom __setattr__ with on_setattr hooks." + raise ValueError(msg) + + # 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._wrote_own_setattr = True + + return self + + def _add_method_dunders_unsafe(self, method: Callable) -> Callable: + """ + Add __module__ and __qualname__ to a *method*. + """ + method.__module__ = self._cls.__module__ + + method.__qualname__ = f"{self._cls.__qualname__}.{method.__name__}" + + method.__doc__ = ( + f"Method generated by attrs for class {self._cls.__qualname__}." + ) + + return method + + def _add_method_dunders_safe(self, method: Callable) -> Callable: + """ + Add __module__ and __qualname__ to a *method* if possible. + """ + with contextlib.suppress(AttributeError): + method.__module__ = self._cls.__module__ + + with contextlib.suppress(AttributeError): + method.__qualname__ = f"{self._cls.__qualname__}.{method.__name__}" + + with contextlib.suppress(AttributeError): + method.__doc__ = f"Method generated by attrs for class {self._cls.__qualname__}." + + return method + + +def _determine_attrs_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)): + msg = "Don't mix `cmp` with `eq' and `order`." + raise ValueError(msg) + + # cmp takes precedence due to bw-compatibility. + if cmp is not None: + 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: + msg = "`order` can only be True if `eq` is True too." + raise ValueError(msg) + + return eq, order + + +def _determine_attrib_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)): + msg = "Don't mix `cmp` with `eq' and `order`." + raise ValueError(msg) + + def decide_callable_or_boolean(value): + """ + Decide whether a key function is used. + """ + if callable(value): + value, key = True, value + else: + key = None + return value, key + + # cmp takes precedence due to bw-compatibility. + if cmp is not None: + cmp, cmp_key = decide_callable_or_boolean(cmp) + return cmp, cmp_key, cmp, cmp_key + + # If left None, equality is set to the specified default and ordering + # mirrors equality. + if eq is None: + eq, eq_key = default_eq, None + else: + eq, eq_key = decide_callable_or_boolean(eq) + + if order is None: + order, order_key = eq, eq_key + else: + order, order_key = decide_callable_or_boolean(order) + + if eq is False and order is True: + msg = "`order` can only be True if `eq` is True too." + raise ValueError(msg) + + return eq, eq_key, order, order_key + + +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. + """ + 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, + match_args=True, + unsafe_hash=None, +): + r""" + A class decorator that adds :term:`dunder methods` according to the + specified attributes using `attr.ib` or the *these* argument. + + Consider using `attrs.define` / `attrs.frozen` in new code (``attr.s`` will + *never* go away, though). + + Args: + repr_ns (str): + When using nested classes, there was no way in Python 2 to + automatically detect that. This argument allows to set a custom + name for a more meaningful ``repr`` output. This argument is + pointless in Python 3 and is therefore deprecated. + + .. caution:: + Refer to `attrs.define` for the rest of the parameters, but note that they + can have different defaults. + + Notably, leaving *on_setattr* as `None` will **not** add any hooks. + + .. 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* + .. versionchanged:: 21.1.0 + ``init=False`` injects ``__attrs_init__`` + .. versionchanged:: 21.1.0 Support for ``__attrs_pre_init__`` + .. versionchanged:: 21.1.0 *cmp* undeprecated + .. versionadded:: 21.3.0 *match_args* + .. versionadded:: 22.2.0 + *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance). + .. deprecated:: 24.1.0 *repr_ns* + .. versionchanged:: 24.1.0 + Instances are not compared as tuples of attributes anymore, but using a + big ``and`` condition. This is faster and has more correct behavior for + uncomparable values like `math.nan`. + .. versionadded:: 24.1.0 + If a class has an *inherited* classmethod called + ``__attrs_init_subclass__``, it is executed after the class is created. + .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*. + """ + if repr_ns is not None: + import warnings + + warnings.warn( + DeprecationWarning( + "The `repr_ns` argument is deprecated and will be removed in or after August 2025." + ), + stacklevel=2, + ) + + eq_, order_ = _determine_attrs_eq_order(cmp, eq, order, None) + + # unsafe_hash takes precedence due to PEP 681. + if unsafe_hash is not None: + hash = unsafe_hash + + if isinstance(on_setattr, (list, tuple)): + on_setattr = setters.pipe(*on_setattr) + + def wrap(cls): + 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: + msg = "Can't freeze a class with a custom __setattr__." + raise ValueError(msg) + + 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() + + if not frozen: + builder.add_setattr() + + nonlocal hash + if ( + hash is None + and auto_detect is True + and _has_own_attribute(cls, "__hash__") + ): + hash = False + + 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. + msg = "Invalid value for hash. Must be True, False, or None." + raise TypeError(msg) + + if 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: + msg = "Invalid value for cache_hash. To use hash caching, hashing must be either explicitly or implicitly enabled." + raise TypeError(msg) + 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: + msg = "Invalid value for cache_hash. To use hash caching, hashing must be either explicitly or implicitly enabled." + raise TypeError(msg) + builder.make_unhashable() + + if _determine_whether_to_implement( + cls, init, auto_detect, ("__init__",) + ): + builder.add_init() + else: + builder.add_attrs_init() + if cache_hash: + msg = "Invalid value for cache_hash. To use hash caching, init must be True." + raise TypeError(msg) + + if PY_3_13_PLUS and not _has_own_attribute(cls, "__replace__"): + builder.add_replace() + + if ( + PY_3_10_PLUS + and match_args + and not _has_own_attribute(cls, "__match_args__") + ): + builder.add_match_args() + + 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 + + return wrap(maybe_cls) + + +_attrs = attrs +""" +Internal alias so we can use it in functions that take an argument called +*attrs*. +""" + + +def _has_frozen_base_class(cls): + """ + Check whether *cls* has a frozen ancestor by looking at its + __setattr__. + """ + return cls.__setattr__ is _frozen_setattrs + + +def _generate_unique_filename(cls: type, func_name: str) -> str: + """ + Create a "filename" suitable for a function being generated. + """ + return ( + f"" + ) + + +def _make_hash_script( + cls: type, attrs: list[Attribute], frozen: bool, cache_hash: bool +) -> tuple[str, dict]: + attrs = tuple( + a for a in attrs if a.hash is True or (a.hash is None and a.eq is True) + ) + + tab = " " + + type_hash = hash(_generate_unique_filename(cls, "hash")) + # If eq is custom generated, we need to include the functions in globs + globs = {} + + hash_def = "def __hash__(self" + hash_func = "hash((" + closing_braces = "))" + if not cache_hash: + hash_def += "):" + else: + 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 + f" {type_hash},", + ] + ) + + for a in attrs: + if a.eq_key: + cmp_name = f"_{a.name}_key" + globs[cmp_name] = a.eq_key + method_lines.append( + indent + f" {cmp_name}(self.{a.name})," + ) + else: + method_lines.append(indent + f" self.{a.name},") + + method_lines.append(indent + " " + closing_braces) + + if cache_hash: + method_lines.append(tab + f"if self.{_HASH_CACHE_FIELD} is None:") + if frozen: + append_hash_computation_lines( + f"object.__setattr__(self, '{_HASH_CACHE_FIELD}', ", tab * 2 + ) + method_lines.append(tab * 2 + ")") # close __setattr__ + else: + append_hash_computation_lines( + f"self.{_HASH_CACHE_FIELD} = ", tab * 2 + ) + method_lines.append(tab + f"return self.{_HASH_CACHE_FIELD}") + else: + append_hash_computation_lines("return ", tab) + + script = "\n".join(method_lines) + return script, globs + + +def _add_hash(cls: type, attrs: list[Attribute]): + """ + Add a hash method to *cls*. + """ + script, globs = _make_hash_script( + cls, attrs, frozen=False, cache_hash=False + ) + _compile_and_eval( + script, globs, filename=_generate_unique_filename(cls, "__hash__") + ) + cls.__hash__ = globs["__hash__"] + return cls + + +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 + + +def _make_eq_script(attrs: list) -> tuple[str, dict]: + """ + Create __eq__ method for *cls* with *attrs*. + """ + attrs = [a for a in attrs if a.eq] + + lines = [ + "def __eq__(self, other):", + " if other.__class__ is not self.__class__:", + " return NotImplemented", + ] + + globs = {} + if attrs: + lines.append(" return (") + for a in attrs: + if a.eq_key: + cmp_name = f"_{a.name}_key" + # Add the key function to the global namespace + # of the evaluated function. + globs[cmp_name] = a.eq_key + lines.append( + f" {cmp_name}(self.{a.name}) == {cmp_name}(other.{a.name})" + ) + else: + lines.append(f" self.{a.name} == other.{a.name}") + if a is not attrs[-1]: + lines[-1] = f"{lines[-1]} and" + lines.append(" )") + else: + lines.append(" return True") + + script = "\n".join(lines) + + return script, globs + + +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 tuple( + key(value) if key else value + for value, key in ( + (getattr(obj, a.name), a.order_key) for a in 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__ + + script, globs = _make_eq_script(attrs) + _compile_and_eval( + script, globs, filename=_generate_unique_filename(cls, "__eq__") + ) + cls.__eq__ = globs["__eq__"] + cls.__ne__ = __ne__ + + return cls + + +def _make_repr_script(attrs, ns) -> tuple[str, dict]: + """ + Create the source and globs for a __repr__ and return it. + """ + # 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), a.init) + for a in attrs + if a.repr is not False + ) + globs = { + name + "_repr": r for name, r, _ in attr_names_with_reprs if r != repr + } + globs["_compat"] = _compat + globs["AttributeError"] = AttributeError + globs["NOTHING"] = NOTHING + attribute_fragments = [] + for name, r, i in attr_names_with_reprs: + accessor = ( + "self." + name if i else 'getattr(self, "' + name + '", NOTHING)' + ) + fragment = ( + "%s={%s!r}" % (name, accessor) + if r == repr + else "%s={%s_repr(%s)}" % (name, name, accessor) + ) + attribute_fragments.append(fragment) + repr_fragment = ", ".join(attribute_fragments) + + if ns is None: + cls_name_fragment = '{self.__class__.__qualname__.rsplit(">.", 1)[-1]}' + else: + cls_name_fragment = ns + ".{self.__class__.__name__}" + + lines = [ + "def __repr__(self):", + " try:", + " already_repring = _compat.repr_context.already_repring", + " except AttributeError:", + " already_repring = {id(self),}", + " _compat.repr_context.already_repring = already_repring", + " else:", + " if id(self) in already_repring:", + " return '...'", + " else:", + " already_repring.add(id(self))", + " try:", + f" return f'{cls_name_fragment}({repr_fragment})'", + " finally:", + " already_repring.remove(id(self))", + ] + + return "\n".join(lines), globs + + +def _add_repr(cls, ns=None, attrs=None): + """ + Add a repr method to *cls*. + """ + if attrs is None: + attrs = cls.__attrs_attrs__ + + script, globs = _make_repr_script(attrs, ns) + _compile_and_eval( + script, globs, filename=_generate_unique_filename(cls, "__repr__") + ) + cls.__repr__ = globs["__repr__"] + 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). + + Args: + cls (type): Class to introspect. + + Raises: + TypeError: If *cls* is not a class. + + attrs.exceptions.NotAnAttrsClassError: + If *cls* is not an *attrs* class. + + Returns: + tuple (with name accessors) of `attrs.Attribute` + + .. versionchanged:: 16.2.0 Returned tuple allows accessing the fields + by name. + .. versionchanged:: 23.1.0 Add support for generic classes. + """ + generic_base = get_generic_base(cls) + + if generic_base is None and not isinstance(cls, type): + msg = "Passed object must be a class." + raise TypeError(msg) + + attrs = getattr(cls, "__attrs_attrs__", None) + + if attrs is None: + if generic_base is not None: + attrs = getattr(generic_base, "__attrs_attrs__", None) + if attrs is not None: + # Even though this is global state, stick it on here to speed + # it up. We rely on `cls` being cached for this to be + # efficient. + cls.__attrs_attrs__ = attrs + return attrs + msg = f"{cls!r} is not an attrs-decorated class." + raise NotAnAttrsClassError(msg) + + return attrs + + +def fields_dict(cls): + """ + Return an ordered dictionary of *attrs* attributes for a class, whose keys + are the attribute names. + + Args: + cls (type): Class to introspect. + + Raises: + TypeError: If *cls* is not a class. + + attrs.exceptions.NotAnAttrsClassError: + If *cls* is not an *attrs* class. + + Returns: + dict[str, attrs.Attribute]: Dict of attribute name to definition + + .. versionadded:: 18.1.0 + """ + if not isinstance(cls, type): + msg = "Passed object must be a class." + raise TypeError(msg) + attrs = getattr(cls, "__attrs_attrs__", None) + if attrs is None: + msg = f"{cls!r} is not an attrs-decorated class." + raise NotAnAttrsClassError(msg) + return {a.name: a for a in attrs} + + +def validate(inst): + """ + Validate all attributes on *inst* that have a validator. + + Leaves all exceptions through. + + Args: + 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_attr(a_name, base_attr_map): + """ + Check if the attribute name comes from a slot class. + """ + cls = base_attr_map.get(a_name) + return cls and "__slots__" in cls.__dict__ + + +def _make_init_script( + cls, + attrs, + pre_init, + pre_init_has_args, + post_init, + frozen, + slots, + cache_hash, + base_attr_map, + is_exc, + cls_on_setattr, + attrs_init, +) -> tuple[str, dict, dict]: + has_cls_on_setattr = ( + cls_on_setattr is not None and cls_on_setattr is not setters.NO_OP + ) + + if frozen and has_cls_on_setattr: + msg = "Frozen classes can't use on_setattr." + raise ValueError(msg) + + 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: + msg = "Frozen classes can't use on_setattr." + raise ValueError(msg) + + needs_cached_setattr = True + elif has_cls_on_setattr and a.on_setattr is not setters.NO_OP: + needs_cached_setattr = True + + script, globs, annotations = _attrs_to_init_script( + filtered_attrs, + frozen, + slots, + pre_init, + pre_init_has_args, + post_init, + cache_hash, + base_attr_map, + is_exc, + needs_cached_setattr, + has_cls_on_setattr, + "__attrs_init__" if attrs_init else "__init__", + ) + if cls.__module__ in sys.modules: + # This makes typing.get_type_hints(CLS.__init__) resolve string types. + globs.update(sys.modules[cls.__module__].__dict__) + + 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_get"] = _OBJ_SETATTR.__get__ + + return script, globs, annotations + + +def _setattr(attr_name: str, value_var: str, has_on_setattr: bool) -> str: + """ + Use the cached object.setattr to set *attr_name* to *value_var*. + """ + return f"_setattr('{attr_name}', {value_var})" + + +def _setattr_with_converter( + attr_name: str, value_var: str, has_on_setattr: bool, converter: Converter +) -> str: + """ + Use the cached object.setattr to set *attr_name* to *value_var*, but run + its converter first. + """ + return f"_setattr('{attr_name}', {converter._fmt_converter_call(attr_name, value_var)})" + + +def _assign(attr_name: str, value: str, has_on_setattr: bool) -> str: + """ + 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 f"self.{attr_name} = {value}" + + +def _assign_with_converter( + attr_name: str, value_var: str, has_on_setattr: bool, converter: Converter +) -> str: + """ + 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, converter) + + return f"self.{attr_name} = {converter._fmt_converter_call(attr_name, value_var)}" + + +def _determine_setters( + frozen: bool, slots: bool, base_attr_map: dict[str, type] +): + """ + Determine the correct setter functions based on whether a class is frozen + and/or slotted. + """ + if frozen is True: + if slots is True: + return (), _setattr, _setattr_with_converter + + # 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 + + def fmt_setter( + attr_name: str, value_var: str, has_on_setattr: bool + ) -> str: + if _is_slot_attr(attr_name, base_attr_map): + return _setattr(attr_name, value_var, has_on_setattr) + + return f"_inst_dict['{attr_name}'] = {value_var}" + + def fmt_setter_with_converter( + attr_name: str, + value_var: str, + has_on_setattr: bool, + converter: Converter, + ) -> str: + if has_on_setattr or _is_slot_attr(attr_name, base_attr_map): + return _setattr_with_converter( + attr_name, value_var, has_on_setattr, converter + ) + + return f"_inst_dict['{attr_name}'] = {converter._fmt_converter_call(attr_name, value_var)}" + + return ( + ("_inst_dict = self.__dict__",), + fmt_setter, + fmt_setter_with_converter, + ) + + # Not frozen -- we can just assign directly. + return (), _assign, _assign_with_converter + + +def _attrs_to_init_script( + attrs: list[Attribute], + is_frozen: bool, + is_slotted: bool, + call_pre_init: bool, + pre_init_has_args: bool, + call_post_init: bool, + does_cache_hash: bool, + base_attr_map: dict[str, type], + is_exc: bool, + needs_cached_setattr: bool, + has_cls_on_setattr: bool, + method_name: str, +) -> tuple[str, dict, dict]: + """ + Return a script of an initializer for *attrs*, a dict of globals, and + annotations for the initializer. + + The globals are required by the generated script. + """ + lines = ["self.__attrs_pre_init__()"] if call_pre_init else [] + + if needs_cached_setattr: + lines.append( + # Circumvent the __setattr__ descriptor to save one lookup per + # assignment. Note _setattr will be used again below if + # does_cache_hash is True. + "_setattr = _cached_setattr_get(self)" + ) + + extra_lines, fmt_setter, fmt_setter_with_converter = _determine_setters( + is_frozen, is_slotted, base_attr_map + ) + lines.extend(extra_lines) + + 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_cls_on_setattr + ) + # a.alias is set to maybe-mangled attr_name in _ClassBuilder if not + # explicitly provided + arg_name = a.alias + + has_factory = isinstance(a.default, Factory) + maybe_self = "self" if has_factory and a.default.takes_self else "" + + if a.converter is not None and not isinstance(a.converter, Converter): + converter = Converter(a.converter) + else: + converter = a.converter + + if a.init is False: + if has_factory: + init_factory_name = _INIT_FACTORY_PAT % (a.name,) + if converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, + init_factory_name + f"({maybe_self})", + has_on_setattr, + converter, + ) + ) + names_for_globals[converter._get_global_name(a.name)] = ( + converter.converter + ) + else: + lines.append( + fmt_setter( + attr_name, + init_factory_name + f"({maybe_self})", + has_on_setattr, + ) + ) + names_for_globals[init_factory_name] = a.default.factory + elif converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, + f"attr_dict['{attr_name}'].default", + has_on_setattr, + converter, + ) + ) + names_for_globals[converter._get_global_name(a.name)] = ( + converter.converter + ) + else: + lines.append( + fmt_setter( + attr_name, + f"attr_dict['{attr_name}'].default", + has_on_setattr, + ) + ) + elif a.default is not NOTHING and not has_factory: + arg = f"{arg_name}=attr_dict['{attr_name}'].default" + if a.kw_only: + kw_only_args.append(arg) + else: + args.append(arg) + + if converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr, converter + ) + ) + names_for_globals[converter._get_global_name(a.name)] = ( + converter.converter + ) + else: + lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) + + elif has_factory: + arg = f"{arg_name}=NOTHING" + if a.kw_only: + kw_only_args.append(arg) + else: + args.append(arg) + lines.append(f"if {arg_name} is not NOTHING:") + + init_factory_name = _INIT_FACTORY_PAT % (a.name,) + if converter is not None: + lines.append( + " " + + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr, converter + ) + ) + lines.append("else:") + lines.append( + " " + + fmt_setter_with_converter( + attr_name, + init_factory_name + "(" + maybe_self + ")", + has_on_setattr, + converter, + ) + ) + names_for_globals[converter._get_global_name(a.name)] = ( + converter.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 converter is not None: + lines.append( + fmt_setter_with_converter( + attr_name, arg_name, has_on_setattr, converter + ) + ) + names_for_globals[converter._get_global_name(a.name)] = ( + converter.converter + ) + else: + lines.append(fmt_setter(attr_name, arg_name, has_on_setattr)) + + if a.init is True: + if a.type is not None and converter is None: + annotations[arg_name] = a.type + elif converter is not None and converter._first_param_type: + # Use the type from the converter if present. + annotations[arg_name] = converter._first_param_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(f" {val_name}(self, {attr_name}, self.{a.name})") + names_for_globals[val_name] = a.validator + names_for_globals[attr_name] = a + + if call_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 does_cache_hash: + if is_frozen: + if is_slotted: + init_hash_cache = f"_setattr('{_HASH_CACHE_FIELD}', None)" + else: + init_hash_cache = f"_inst_dict['{_HASH_CACHE_FIELD}'] = None" + else: + init_hash_cache = f"self.{_HASH_CACHE_FIELD} = None" + lines.append(init_hash_cache) + + # For exceptions we rely on BaseException.__init__ for proper + # initialization. + if is_exc: + vals = ",".join(f"self.{a.name}" for a in attrs if a.init) + + lines.append(f"BaseException.__init__(self, {vals})") + + args = ", ".join(args) + pre_init_args = args + if kw_only_args: + # leading comma & kw_only args + args += f"{', ' if args else ''}*, {', '.join(kw_only_args)}" + pre_init_kw_only_args = ", ".join( + [ + f"{kw_arg_name}={kw_arg_name}" + # We need to remove the defaults from the kw_only_args. + for kw_arg_name in (kwa.split("=")[0] for kwa in kw_only_args) + ] + ) + pre_init_args += ", " if pre_init_args else "" + pre_init_args += pre_init_kw_only_args + + if call_pre_init and pre_init_has_args: + # If pre init method has arguments, pass same arguments as `__init__`. + lines[0] = f"self.__attrs_pre_init__({pre_init_args})" + + # Python <3.12 doesn't allow backslashes in f-strings. + NL = "\n " + return ( + f"""def {method_name}(self, {args}): + {NL.join(lines) if lines else "pass"} +""", + names_for_globals, + annotations, + ) + + +def _default_init_alias_for(name: str) -> str: + """ + The default __init__ parameter name for a field. + + This performs private-name adjustment via leading-unscore stripping, + and is the default value of Attribute.alias if not provided. + """ + + return name.lstrip("_") + + +class Attribute: + """ + *Read-only* representation of an attribute. + + .. warning:: + + You should never instantiate this class yourself. + + The class has *all* arguments of `attr.ib` (except for ``factory`` which is + only syntactic sugar for ``default=Factory(...)`` plus the following: + + - ``name`` (`str`): The name of the attribute. + - ``alias`` (`str`): The __init__ parameter name of the attribute, after + any explicit overrides and default private-attribute-name handling. + - ``inherited`` (`bool`): Whether or not that attribute has been inherited + from a base class. + - ``eq_key`` and ``order_key`` (`typing.Callable` or `None`): The + callables that are used for comparing and ordering objects by this + attribute, respectively. These are set by passing a callable to + `attr.ib`'s ``eq``, ``order``, or ``cmp`` arguments. See also + :ref:`comparison customization `. + + 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 :ref:`field transformer ` hook receives a list of + them. + - The ``alias`` property exposes the __init__ parameter name of the field, + with any overrides and default private-attribute handling applied. + + + .. 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. + .. versionadded:: 21.1.0 *eq_key* and *order_key* + .. versionadded:: 22.2.0 *alias* + + For the full version history of the fields, see `attr.ib`. + """ + + # These slots must NOT be reordered because we use them later for + # instantiation. + __slots__ = ( # noqa: RUF023 + "name", + "default", + "validator", + "repr", + "eq", + "eq_key", + "order", + "order_key", + "hash", + "init", + "metadata", + "type", + "converter", + "kw_only", + "inherited", + "on_setattr", + "alias", + ) + + 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, + eq_key=None, + order=None, + order_key=None, + on_setattr=None, + alias=None, + ): + eq, eq_key, order, order_key = _determine_attrib_eq_order( + cmp, eq_key or eq, order_key or order, True + ) + + # Cache this descriptor here to speed things up later. + bound_setattr = _OBJ_SETATTR.__get__(self) + + # 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("eq_key", eq_key) + bound_setattr("order", order) + bound_setattr("order_key", order_key) + bound_setattr("hash", hash) + bound_setattr("init", init) + bound_setattr("converter", converter) + bound_setattr( + "metadata", + ( + types.MappingProxyType(dict(metadata)) # Shallow copy + 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) + bound_setattr("alias", alias) + + def __setattr__(self, name, value): + raise FrozenInstanceError + + @classmethod + def from_counting_attr(cls, name: str, ca: _CountingAttr, type=None): + # type holds the annotated value. deal with conflicts: + if type is None: + type = ca.type + elif ca.type is not None: + msg = f"Type annotation and type argument cannot both be present for '{name}'." + raise ValueError(msg) + return cls( + name, + ca._default, + ca._validator, + ca.repr, + None, + ca.hash, + ca.init, + False, + ca.metadata, + type, + ca.converter, + ca.kw_only, + ca.eq, + ca.eq_key, + ca.order, + ca.order_key, + ca.on_setattr, + ca.alias, + ) + + # Don't use attrs.evolve since fields(Attribute) doesn't work + def evolve(self, **changes): + """ + Copy *self* and apply *changes*. + + This works similarly to `attrs.evolve` but that function does not work + with :class:`attrs.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) + for name, value in name_values_pairs: + if name != "metadata": + bound_setattr(name, value) + else: + bound_setattr( + name, + ( + types.MappingProxyType(dict(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, + alias=_default_init_alias_for(name), + ) + 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: + """ + 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__ = ( + "_default", + "_validator", + "alias", + "converter", + "counter", + "eq", + "eq_key", + "hash", + "init", + "kw_only", + "metadata", + "on_setattr", + "order", + "order_key", + "repr", + "type", + ) + __attrs_attrs__ = ( + *tuple( + Attribute( + name=name, + alias=_default_init_alias_for(name), + default=NOTHING, + validator=None, + repr=True, + cmp=None, + hash=True, + init=True, + kw_only=False, + eq=True, + eq_key=None, + order=False, + order_key=None, + inherited=False, + on_setattr=None, + ) + for name in ( + "counter", + "_default", + "repr", + "eq", + "order", + "hash", + "init", + "on_setattr", + "alias", + ) + ), + Attribute( + name="metadata", + alias="metadata", + default=None, + validator=None, + repr=True, + cmp=None, + hash=False, + init=True, + kw_only=False, + eq=True, + eq_key=None, + order=False, + order_key=None, + inherited=False, + on_setattr=None, + ), + ) + cls_counter = 0 + + def __init__( + self, + default, + validator, + repr, + cmp, + hash, + init, + converter, + metadata, + type, + kw_only, + eq, + eq_key, + order, + order_key, + on_setattr, + alias, + ): + _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.eq_key = eq_key + self.order = order + self.order_key = order_key + self.hash = hash + self.init = init + self.metadata = metadata + self.type = type + self.kw_only = kw_only + self.on_setattr = on_setattr + self.alias = alias + + 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)) + + +class Factory: + """ + Stores a factory callable. + + If passed as the default value to `attrs.field`, the factory is used to + generate a new value. + + Args: + factory (typing.Callable): + A callable that takes either none or exactly one mandatory + positional argument depending on *takes_self*. + + takes_self (bool): + Pass the partially initialized instance that is being initialized + as a positional argument. + + .. versionadded:: 17.1.0 *takes_self* + """ + + __slots__ = ("factory", "takes_self") + + def __init__(self, factory, takes_self=False): + self.factory = factory + self.takes_self = takes_self + + def __getstate__(self): + """ + Play nice with pickle. + """ + return tuple(getattr(self, name) for name in self.__slots__) + + def __setstate__(self, state): + """ + Play nice with pickle. + """ + for name, value in zip(self.__slots__, state): + setattr(self, name, value) + + +_f = [ + Attribute( + name=name, + default=NOTHING, + validator=None, + repr=True, + cmp=None, + eq=True, + order=False, + hash=True, + init=True, + inherited=False, + ) + for name in Factory.__slots__ +] + +Factory = _add_hash(_add_eq(_add_repr(Factory, attrs=_f), attrs=_f), attrs=_f) + + +class Converter: + """ + Stores a converter callable. + + Allows for the wrapped converter to take additional arguments. The + arguments are passed in the order they are documented. + + Args: + converter (Callable): A callable that converts the passed value. + + takes_self (bool): + Pass the partially initialized instance that is being initialized + as a positional argument. (default: `False`) + + takes_field (bool): + Pass the field definition (an :class:`Attribute`) into the + converter as a positional argument. (default: `False`) + + .. versionadded:: 24.1.0 + """ + + __slots__ = ( + "__call__", + "_first_param_type", + "_global_name", + "converter", + "takes_field", + "takes_self", + ) + + def __init__(self, converter, *, takes_self=False, takes_field=False): + self.converter = converter + self.takes_self = takes_self + self.takes_field = takes_field + + ex = _AnnotationExtractor(converter) + self._first_param_type = ex.get_first_param_type() + + if not (self.takes_self or self.takes_field): + self.__call__ = lambda value, _, __: self.converter(value) + elif self.takes_self and not self.takes_field: + self.__call__ = lambda value, instance, __: self.converter( + value, instance + ) + elif not self.takes_self and self.takes_field: + self.__call__ = lambda value, __, field: self.converter( + value, field + ) + else: + self.__call__ = lambda value, instance, field: self.converter( + value, instance, field + ) + + rt = ex.get_return_type() + if rt is not None: + self.__call__.__annotations__["return"] = rt + + @staticmethod + def _get_global_name(attr_name: str) -> str: + """ + Return the name that a converter for an attribute name *attr_name* + would have. + """ + return f"__attr_converter_{attr_name}" + + def _fmt_converter_call(self, attr_name: str, value_var: str) -> str: + """ + Return a string that calls the converter for an attribute name + *attr_name* and the value in variable named *value_var* according to + `self.takes_self` and `self.takes_field`. + """ + if not (self.takes_self or self.takes_field): + return f"{self._get_global_name(attr_name)}({value_var})" + + if self.takes_self and self.takes_field: + return f"{self._get_global_name(attr_name)}({value_var}, self, attr_dict['{attr_name}'])" + + if self.takes_self: + return f"{self._get_global_name(attr_name)}({value_var}, self)" + + return f"{self._get_global_name(attr_name)}({value_var}, attr_dict['{attr_name}'])" + + def __getstate__(self): + """ + Return a dict containing only converter and takes_self -- the rest gets + computed when loading. + """ + return { + "converter": self.converter, + "takes_self": self.takes_self, + "takes_field": self.takes_field, + } + + def __setstate__(self, state): + """ + Load instance from state. + """ + self.__init__(**state) + + +_f = [ + Attribute( + name=name, + default=NOTHING, + validator=None, + repr=True, + cmp=None, + eq=True, + order=False, + hash=True, + init=True, + inherited=False, + ) + for name in ("converter", "takes_self", "takes_field") +] + +Converter = _add_hash( + _add_eq(_add_repr(Converter, attrs=_f), attrs=_f), attrs=_f +) + + +def make_class( + name, attrs, bases=(object,), class_body=None, **attributes_arguments +): + r""" + A quick way to create a new class called *name* with *attrs*. + + .. note:: + + ``make_class()`` is a thin wrapper around `attr.s`, not `attrs.define` + which means that it doesn't come with some of the improved defaults. + + For example, if you want the same ``on_setattr`` behavior as in + `attrs.define`, you have to pass the hooks yourself: ``make_class(..., + on_setattr=setters.pipe(setters.convert, setters.validate)`` + + .. warning:: + + It is *your* duty to ensure that the class name and the attribute names + are valid identifiers. ``make_class()`` will *not* validate them for + you. + + Args: + name (str): The name for the new class. + + attrs (list | dict): + A list of names or a dictionary of mappings of names to `attr.ib`\ + s / `attrs.field`\ s. + + 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. + + bases (tuple[type, ...]): Classes that the new class will subclass. + + class_body (dict): + An optional dictionary of class attributes for the new class. + + attributes_arguments: Passed unmodified to `attr.s`. + + Returns: + type: A new class with *attrs*. + + .. versionadded:: 17.1.0 *bases* + .. versionchanged:: 18.1.0 If *attrs* is ordered, the order is retained. + .. versionchanged:: 23.2.0 *class_body* + .. versionchanged:: 25.2.0 Class names can now be unicode. + """ + # Class identifiers are converted into the normal form NFKC while parsing + name = unicodedata.normalize("NFKC", name) + + if isinstance(attrs, dict): + cls_dict = attrs + elif isinstance(attrs, (list, tuple)): + cls_dict = {a: attrib() for a in attrs} + else: + msg = "attrs argument must be a dict or a list." + raise TypeError(msg) + + pre_init = cls_dict.pop("__attrs_pre_init__", None) + post_init = cls_dict.pop("__attrs_post_init__", None) + user_init = cls_dict.pop("__init__", None) + + body = {} + if class_body is not None: + body.update(class_body) + if pre_init is not None: + body["__attrs_pre_init__"] = pre_init + if post_init is not None: + body["__attrs_post_init__"] = post_init + if user_init is not None: + body["__init__"] = user_init + + type_ = types.new_class(name, bases, {}, lambda ns: ns.update(body)) + + # 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). + with contextlib.suppress(AttributeError, ValueError): + type_.__module__ = sys._getframe(1).f_globals.get( + "__name__", "__main__" + ) + + # We do it here for proper warnings with meaningful stacklevel. + cmp = attributes_arguments.pop("cmp", None) + ( + attributes_arguments["eq"], + attributes_arguments["order"], + ) = _determine_attrs_eq_order( + cmp, + attributes_arguments.get("eq"), + attributes_arguments.get("order"), + True, + ) + + cls = _attrs(these=cls_dict, **attributes_arguments)(type_) + # Only add type annotations now or "_attrs()" will complain: + cls.__annotations__ = { + k: v.type for k, v in cls_dict.items() if v.type is not None + } + return cls + + +# These are required by within this module so we define them here and merely +# import into .validators / .converters. + + +@attrs(slots=True, unsafe_hash=True) +class _AndValidator: + """ + 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. + + Args: + validators (~collections.abc.Iterable[typing.Callable]): + 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. + + Type annotations will be inferred from the wrapped converters', if they + have any. + + converters (~collections.abc.Iterable[typing.Callable]): + Arbitrary number of converters. + + .. versionadded:: 20.1.0 + """ + + return_instance = any(isinstance(c, Converter) for c in converters) + + if return_instance: + + def pipe_converter(val, inst, field): + for c in converters: + val = ( + c(val, inst, field) if isinstance(c, Converter) else c(val) + ) + + return val + + else: + + def pipe_converter(val): + for c in converters: + val = c(val) + + return val + + if not converters: + # If the converter list is empty, pipe_converter is the identity. + A = TypeVar("A") + pipe_converter.__annotations__.update({"val": A, "return": A}) + else: + # Get parameter type from first converter. + t = _AnnotationExtractor(converters[0]).get_first_param_type() + if t: + pipe_converter.__annotations__["val"] = t + + last = converters[-1] + if not PY_3_11_PLUS and isinstance(last, Converter): + last = last.__call__ + + # Get return type from last converter. + rt = _AnnotationExtractor(last).get_return_type() + if rt: + pipe_converter.__annotations__["return"] = rt + + if return_instance: + return Converter(pipe_converter, takes_self=True, takes_field=True) + return pipe_converter diff --git a/myenv/Lib/site-packages/attr/_next_gen.py b/myenv/Lib/site-packages/attr/_next_gen.py new file mode 100644 index 0000000..9290664 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_next_gen.py @@ -0,0 +1,623 @@ +# SPDX-License-Identifier: MIT + +""" +These are keyword-only APIs that call `attr.s` and `attr.ib` with different +default values. +""" + +from functools import partial + +from . import setters +from ._funcs import asdict as _asdict +from ._funcs import astuple as _astuple +from ._make import ( + _DEFAULT_ON_SETATTR, + NOTHING, + _frozen_setattrs, + attrib, + attrs, +) +from .exceptions import UnannotatedAttributeError + + +def define( + maybe_cls=None, + *, + these=None, + repr=None, + unsafe_hash=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, + match_args=True, +): + r""" + A class decorator that adds :term:`dunder methods` according to + :term:`fields ` specified using :doc:`type annotations `, + `field()` calls, or the *these* argument. + + Since *attrs* patches or replaces an existing class, you cannot use + `object.__init_subclass__` with *attrs* classes, because it runs too early. + As a replacement, you can define ``__attrs_init_subclass__`` on your class. + It will be called by *attrs* classes that subclass it after they're + created. See also :ref:`init-subclass`. + + Args: + slots (bool): + Create a :term:`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 :term:`glossary entry `. + + auto_detect (bool): + Instead of setting the *init*, *repr*, *eq*, 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 (meaning, it is *not* inherited from some base + class). + + So, for example by implementing ``__eq__`` on a class yourself, + *attrs* will deduce ``eq=False`` and will 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). + + Passing True or False` to *init*, *repr*, *eq*, or *hash* + overrides whatever *auto_detect* would determine. + + auto_exc (bool): + If the class subclasses `BaseException` (which implicitly includes + any subclass of any exception), the following happens to behave + like a well-behaved Python exception class: + + - the values for *eq*, *order*, and *hash* are ignored and the + instances compare and hash by the instance's ids [#]_ , + - 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. + + .. [#] + Note that *attrs* will *not* remove existing implementations of + ``__hash__`` or the equality methods. It just won't add own + ones. + + on_setattr (~typing.Callable | list[~typing.Callable] | None | ~typing.Literal[attrs.setters.NO_OP]): + 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 `attrs.setters.pipe`. + + If left None, the default behavior is to run converters and + validators whenever an attribute is set. + + init (bool): + Create a ``__init__`` method that initializes the *attrs* + attributes. Leading underscores are stripped for the argument name, + unless an alias is set on the attribute. + + .. seealso:: + `init` shows advanced ways to customize the generated + ``__init__`` method, including executing code before and after. + + repr(bool): + Create a ``__repr__`` method with a human readable representation + of *attrs* attributes. + + str (bool): + Create a ``__str__`` method that is identical to ``__repr__``. This + is usually not necessary except for `Exception`\ s. + + eq (bool | None): + If True or None (default), add ``__eq__`` and ``__ne__`` methods + that check two instances for equality. + + .. seealso:: + `comparison` describes how to customize the comparison behavior + going as far comparing NumPy arrays. + + order (bool | None): + If True, add ``__lt__``, ``__le__``, ``__gt__``, and ``__ge__`` + methods that behave like *eq* above and allow instances to be + ordered. + + They compare the instances as if they were tuples of their *attrs* + attributes if and only if the types of both classes are + *identical*. + + If `None` mirror value of *eq*. + + .. seealso:: `comparison` + + unsafe_hash (bool | None): + 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 the + 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 (for example, 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. + + .. seealso:: + + - Our documentation on `hashing`, + - Python's documentation on `object.__hash__`, + - and the `GitHub issue that led to the default \ behavior + `_ for more + details. + + hash (bool | None): + Deprecated alias for *unsafe_hash*. *unsafe_hash* takes precedence. + + cache_hash (bool): + 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. + + frozen (bool): + Make instances immutable after initialization. If someone attempts + to modify a frozen instance, `attrs.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. + + kw_only (bool): + Make all attributes keyword-only in the generated ``__init__`` (if + *init* is False, this parameter is ignored). + + weakref_slot (bool): + Make instances weak-referenceable. This has no effect unless + *slots* is True. + + field_transformer (~typing.Callable | None): + A function that is called with the original class object and all + fields right before *attrs* finalizes the class. You can use this, + for example, to automatically add converters or validators to + fields based on their types. + + .. seealso:: `transform-fields` + + match_args (bool): + If True (default), set ``__match_args__`` on the class to support + :pep:`634` (*Structural Pattern Matching*). It is a tuple of all + non-keyword-only ``__init__`` parameter names on Python 3.10 and + later. Ignored on older Python versions. + + collect_by_mro (bool): + If True, *attrs* collects attributes from base classes correctly + according to the `method resolution order + `_. If False, *attrs* + will mimic the (wrong) behavior of `dataclasses` and :pep:`681`. + + See also `issue #428 + `_. + + getstate_setstate (bool | None): + .. 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 (meaning: not inherited), it is set to False + (this is usually what you want). + + auto_attribs (bool | None): + If True, look at type annotations to determine which attributes to + use, like `dataclasses`. If False, it will only look for explicit + :func:`field` class attributes, like classic *attrs*. + + If left None, it will guess: + + 1. If any attributes are annotated and no unannotated + `attrs.field`\ s are found, it assumes *auto_attribs=True*. + 2. Otherwise it assumes *auto_attribs=False* and tries to collect + `attrs.field`\ s. + + If *attrs* decides to look at type annotations, **all** fields + **must** be annotated. If *attrs* encounters a field that is set to + a :func:`field` / `attr.ib` but lacks a type annotation, an + `attrs.exceptions.UnannotatedAttributeError` is raised. Use + ``field_name: typing.Any = field(...)`` if you don't want to set a + type. + + .. warning:: + + For features that use the attribute name to create decorators + (for example, :ref:`validators `), you still *must* + assign :func:`field` / `attr.ib` to them. Otherwise Python will + either not find the name or try to use the default value to + call, for example, ``validator`` on it. + + Attributes annotated as `typing.ClassVar`, and attributes that are + neither annotated nor set to an `field()` are **ignored**. + + these (dict[str, object]): + A dictionary of name to the (private) return value of `field()` + mappings. This is useful to avoid the definition of your attributes + within the class body because you can't (for example, 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. + + The order is deduced from the order of the attributes inside + *these*. + + Arguably, this is a rather obscure feature. + + .. versionadded:: 20.1.0 + .. versionchanged:: 21.3.0 Converters are also run ``on_setattr``. + .. versionadded:: 22.2.0 + *unsafe_hash* as an alias for *hash* (for :pep:`681` compliance). + .. versionchanged:: 24.1.0 + Instances are not compared as tuples of attributes anymore, but using a + big ``and`` condition. This is faster and has more correct behavior for + uncomparable values like `math.nan`. + .. versionadded:: 24.1.0 + If a class has an *inherited* classmethod called + ``__attrs_init_subclass__``, it is executed after the class is created. + .. deprecated:: 24.1.0 *hash* is deprecated in favor of *unsafe_hash*. + .. versionadded:: 24.3.0 + Unless already present, a ``__replace__`` method is automatically + created for `copy.replace` (Python 3.13+ only). + + .. note:: + + The main differences to the classic `attr.s` are: + + - Automatically detect whether or not *auto_attribs* should be `True` + (c.f. *auto_attribs* parameter). + - Converters and validators run when attributes are set by default -- + if *frozen* is `False`. + - *slots=True* + + Usually, this has only upsides and few visible effects in everyday + programming. But it *can* lead to some surprising behaviors, so + please make sure to read :term:`slotted classes`. + + - *auto_exc=True* + - *auto_detect=True* + - *order=False* + - Some options that were only relevant on Python 2 or were kept around + for backwards-compatibility have been removed. + + """ + + def do_it(cls, auto_attribs): + return attrs( + maybe_cls=cls, + these=these, + repr=repr, + hash=hash, + unsafe_hash=unsafe_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, + match_args=match_args, + ) + + 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 convert & validate on setattr. + if frozen is False and on_setattr is None: + on_setattr = _DEFAULT_ON_SETATTR + + # 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: + msg = "Frozen classes can't use on_setattr (frozen-ness was inherited)." + raise ValueError(msg) + + 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 + + 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, + type=None, + converter=None, + factory=None, + kw_only=False, + eq=None, + order=None, + on_setattr=None, + alias=None, +): + """ + Create a new :term:`field` / :term:`attribute` on a class. + + .. warning:: + + Does **nothing** unless the class is also decorated with + `attrs.define` (or similar)! + + Args: + 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 `attrs.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 `attrs.NOTHING`), a + value *must* be supplied when instantiating; otherwise a + `TypeError` will be raised. + + .. seealso:: `defaults` + + factory (~typing.Callable): + Syntactic sugar for ``default=attr.Factory(factory)``. + + validator (~typing.Callable | list[~typing.Callable]): + Callable that is called by *attrs*-generated ``__init__`` methods + after the instance has been initialized. They receive the + initialized instance, the :func:`~attrs.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 + `attrs.validators.get_disabled` / `attrs.validators.set_disabled`. + + The validator can also be set using decorator notation as shown + below. + + .. seealso:: :ref:`validators` + + repr (bool | ~typing.Callable): + 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, + which means it will be used directly *instead* of calling + ``repr()`` (the default). + + eq (bool | ~typing.Callable): + If True (default), include this attribute in the generated + ``__eq__`` and ``__ne__`` methods that check two instances for + equality. To override how the attribute value is compared, pass a + callable that takes a single value and returns the value to be + compared. + + .. seealso:: `comparison` + + order (bool | ~typing.Callable): + If True (default), include this attributes in the generated + ``__lt__``, ``__le__``, ``__gt__`` and ``__ge__`` methods. To + override how the attribute value is ordered, pass a callable that + takes a single value and returns the value to be ordered. + + .. seealso:: `comparison` + + hash (bool | None): + 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*. + + .. seealso:: `hashing` + + init (bool): + 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. + + .. seealso:: `init` + + converter (typing.Callable | Converter): + A callable that is called by *attrs*-generated ``__init__`` methods + to convert attribute's value to the desired format. + + If a vanilla callable is passed, it is given the passed-in value as + the only positional argument. It is possible to receive additional + arguments by wrapping the callable in a `Converter`. + + Either way, 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. + + .. seealso:: :ref:`converters` + + metadata (dict | None): + An arbitrary mapping, to be used by third-party code. + + .. seealso:: `extending-metadata`. + + type (type): + The type of the attribute. Nowadays, the preferred method to + specify the type is using a variable annotation (see :pep:`526`). + This argument is provided for backwards-compatibility and for usage + with `make_class`. 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 `. + + kw_only (bool): + Make this attribute keyword-only in the generated ``__init__`` (if + ``init`` is False, this parameter is ignored). + + on_setattr (~typing.Callable | list[~typing.Callable] | None | ~typing.Literal[attrs.setters.NO_OP]): + Allows to overwrite the *on_setattr* setting from `attr.s`. If left + None, the *on_setattr* value from `attr.s` is used. Set to + `attrs.setters.NO_OP` to run **no** `setattr` hooks for this + attribute -- regardless of the setting in `define()`. + + alias (str | None): + Override this attribute's parameter name in the generated + ``__init__`` method. If left None, default to ``name`` stripped + of leading underscores. See `private-attributes`. + + .. versionadded:: 20.1.0 + .. versionchanged:: 21.1.0 + *eq*, *order*, and *cmp* also accept a custom callable + .. versionadded:: 22.2.0 *alias* + .. versionadded:: 23.1.0 + The *type* parameter has been re-added; mostly for `attrs.make_class`. + Please note that type checkers ignore this metadata. + + .. seealso:: + + `attr.ib` + """ + return attrib( + default=default, + validator=validator, + repr=repr, + hash=hash, + init=init, + metadata=metadata, + type=type, + converter=converter, + factory=factory, + kw_only=kw_only, + eq=eq, + order=order, + on_setattr=on_setattr, + alias=alias, + ) + + +def asdict(inst, *, recurse=True, filter=None, value_serializer=None): + """ + Same as `attr.asdict`, except that collections types are always retained + and dict is always used as *dict_factory*. + + .. versionadded:: 21.3.0 + """ + return _asdict( + inst=inst, + recurse=recurse, + filter=filter, + value_serializer=value_serializer, + retain_collection_types=True, + ) + + +def astuple(inst, *, recurse=True, filter=None): + """ + Same as `attr.astuple`, except that collections types are always retained + and `tuple` is always used as the *tuple_factory*. + + .. versionadded:: 21.3.0 + """ + return _astuple( + inst=inst, recurse=recurse, filter=filter, retain_collection_types=True + ) diff --git a/myenv/Lib/site-packages/attr/_typing_compat.pyi b/myenv/Lib/site-packages/attr/_typing_compat.pyi new file mode 100644 index 0000000..ca7b71e --- /dev/null +++ b/myenv/Lib/site-packages/attr/_typing_compat.pyi @@ -0,0 +1,15 @@ +from typing import Any, ClassVar, Protocol + +# MYPY is a special constant in mypy which works the same way as `TYPE_CHECKING`. +MYPY = False + +if MYPY: + # A protocol to be able to statically accept an attrs class. + class AttrsInstance_(Protocol): + __attrs_attrs__: ClassVar[Any] + +else: + # For type checkers without plug-in support use an empty protocol that + # will (hopefully) be combined into a union. + class AttrsInstance_(Protocol): + pass diff --git a/myenv/Lib/site-packages/attr/_version_info.py b/myenv/Lib/site-packages/attr/_version_info.py new file mode 100644 index 0000000..51a1312 --- /dev/null +++ b/myenv/Lib/site-packages/attr/_version_info.py @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: MIT + + +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: + """ + 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/myenv/Lib/site-packages/attr/_version_info.pyi b/myenv/Lib/site-packages/attr/_version_info.pyi new file mode 100644 index 0000000..45ced08 --- /dev/null +++ b/myenv/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/myenv/Lib/site-packages/attr/converters.py b/myenv/Lib/site-packages/attr/converters.py new file mode 100644 index 0000000..0a79dee --- /dev/null +++ b/myenv/Lib/site-packages/attr/converters.py @@ -0,0 +1,162 @@ +# SPDX-License-Identifier: MIT + +""" +Commonly useful converters. +""" + +import typing + +from ._compat import _AnnotationExtractor +from ._make import NOTHING, Converter, Factory, pipe + + +__all__ = [ + "default_if_none", + "optional", + "pipe", + "to_bool", +] + + +def optional(converter): + """ + A converter that allows an attribute to be optional. An optional attribute + is one which can be set to `None`. + + Type annotations will be inferred from the wrapped converter's, if it has + any. + + Args: + converter (typing.Callable): + the converter that is used for non-`None` values. + + .. versionadded:: 17.1.0 + """ + + if isinstance(converter, Converter): + + def optional_converter(val, inst, field): + if val is None: + return None + return converter(val, inst, field) + + else: + + def optional_converter(val): + if val is None: + return None + return converter(val) + + xtr = _AnnotationExtractor(converter) + + t = xtr.get_first_param_type() + if t: + optional_converter.__annotations__["val"] = typing.Optional[t] + + rt = xtr.get_return_type() + if rt: + optional_converter.__annotations__["return"] = typing.Optional[rt] + + if isinstance(converter, Converter): + return Converter(optional_converter, takes_self=True, takes_field=True) + + 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*. + + Args: + default: + Value to be used if `None` is passed. Passing an instance of + `attrs.Factory` is supported, however the ``takes_self`` option is + *not*. + + factory (typing.Callable): + A callable that takes no parameters whose result is used if `None` + is passed. + + Raises: + TypeError: If **neither** *default* or *factory* is passed. + + TypeError: If **both** *default* and *factory* are passed. + + ValueError: + If an instance of `attrs.Factory` is passed with + ``takes_self=True``. + + .. versionadded:: 18.2.0 + """ + if default is NOTHING and factory is None: + msg = "Must pass either `default` or `factory`." + raise TypeError(msg) + + if default is not NOTHING and factory is not None: + msg = "Must pass either `default` or `factory` but not both." + raise TypeError(msg) + + if factory is not None: + default = Factory(factory) + + if isinstance(default, Factory): + if default.takes_self: + msg = "`takes_self` is not supported by default_if_none." + raise ValueError(msg) + + 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 + + +def to_bool(val): + """ + Convert "boolean" strings (for example, from environment variables) to real + booleans. + + Values mapping to `True`: + + - ``True`` + - ``"true"`` / ``"t"`` + - ``"yes"`` / ``"y"`` + - ``"on"`` + - ``"1"`` + - ``1`` + + Values mapping to `False`: + + - ``False`` + - ``"false"`` / ``"f"`` + - ``"no"`` / ``"n"`` + - ``"off"`` + - ``"0"`` + - ``0`` + + Raises: + ValueError: For any other value. + + .. versionadded:: 21.3.0 + """ + if isinstance(val, str): + val = val.lower() + + if val in (True, "true", "t", "yes", "y", "on", "1", 1): + return True + if val in (False, "false", "f", "no", "n", "off", "0", 0): + return False + + msg = f"Cannot convert value to bool: {val!r}" + raise ValueError(msg) diff --git a/myenv/Lib/site-packages/attr/converters.pyi b/myenv/Lib/site-packages/attr/converters.pyi new file mode 100644 index 0000000..12bd0c4 --- /dev/null +++ b/myenv/Lib/site-packages/attr/converters.pyi @@ -0,0 +1,19 @@ +from typing import Callable, Any, overload + +from attrs import _ConverterType, _CallableConverterType + +@overload +def pipe(*validators: _CallableConverterType) -> _CallableConverterType: ... +@overload +def pipe(*validators: _ConverterType) -> _ConverterType: ... +@overload +def optional(converter: _CallableConverterType) -> _CallableConverterType: ... +@overload +def optional(converter: _ConverterType) -> _ConverterType: ... +@overload +def default_if_none(default: Any) -> _CallableConverterType: ... +@overload +def default_if_none( + *, factory: Callable[[], Any] +) -> _CallableConverterType: ... +def to_bool(val: str | int | bool) -> bool: ... diff --git a/myenv/Lib/site-packages/attr/exceptions.py b/myenv/Lib/site-packages/attr/exceptions.py new file mode 100644 index 0000000..3b7abb8 --- /dev/null +++ b/myenv/Lib/site-packages/attr/exceptions.py @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: MIT + +from __future__ import annotations + +from typing import ClassVar + + +class FrozenError(AttributeError): + """ + A frozen/immutable instance or attribute have 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: ClassVar[tuple[str]] = [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 when defining the field and is attempted to be reset + using the decorator. + + .. versionadded:: 17.1.0 + """ + + +class UnannotatedAttributeError(RuntimeError): + """ + A class with ``auto_attribs=True`` has a field 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 field 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/myenv/Lib/site-packages/attr/exceptions.pyi b/myenv/Lib/site-packages/attr/exceptions.pyi new file mode 100644 index 0000000..f268011 --- /dev/null +++ b/myenv/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/myenv/Lib/site-packages/attr/filters.py b/myenv/Lib/site-packages/attr/filters.py new file mode 100644 index 0000000..689b170 --- /dev/null +++ b/myenv/Lib/site-packages/attr/filters.py @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: MIT + +""" +Commonly useful filters for `attrs.asdict` and `attrs.astuple`. +""" + +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 isinstance(cls, type)), + frozenset(cls for cls in what if isinstance(cls, str)), + frozenset(cls for cls in what if isinstance(cls, Attribute)), + ) + + +def include(*what): + """ + Create a filter that only allows *what*. + + Args: + what (list[type, str, attrs.Attribute]): + What to include. Can be a type, a name, or an attribute. + + Returns: + Callable: + A callable that can be passed to `attrs.asdict`'s and + `attrs.astuple`'s *filter* argument. + + .. versionchanged:: 23.1.0 Accept strings with field names. + """ + cls, names, attrs = _split_what(what) + + def include_(attribute, value): + return ( + value.__class__ in cls + or attribute.name in names + or attribute in attrs + ) + + return include_ + + +def exclude(*what): + """ + Create a filter that does **not** allow *what*. + + Args: + what (list[type, str, attrs.Attribute]): + What to exclude. Can be a type, a name, or an attribute. + + Returns: + Callable: + A callable that can be passed to `attrs.asdict`'s and + `attrs.astuple`'s *filter* argument. + + .. versionchanged:: 23.3.0 Accept field name string as input argument + """ + cls, names, attrs = _split_what(what) + + def exclude_(attribute, value): + return not ( + value.__class__ in cls + or attribute.name in names + or attribute in attrs + ) + + return exclude_ diff --git a/myenv/Lib/site-packages/attr/filters.pyi b/myenv/Lib/site-packages/attr/filters.pyi new file mode 100644 index 0000000..974abdc --- /dev/null +++ b/myenv/Lib/site-packages/attr/filters.pyi @@ -0,0 +1,6 @@ +from typing import Any + +from . import Attribute, _FilterType + +def include(*what: type | str | Attribute[Any]) -> _FilterType[Any]: ... +def exclude(*what: type | str | Attribute[Any]) -> _FilterType[Any]: ... diff --git a/myenv/Lib/site-packages/attr/py.typed b/myenv/Lib/site-packages/attr/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/myenv/Lib/site-packages/attr/setters.py b/myenv/Lib/site-packages/attr/setters.py new file mode 100644 index 0000000..78b0839 --- /dev/null +++ b/myenv/Lib/site-packages/attr/setters.py @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: MIT + +""" +Commonly used hooks for on_setattr. +""" + +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: + # This can be removed once we drop 3.8 and use attrs.Converter instead. + from ._make import Converter + + if not isinstance(c, Converter): + return c(new_value) + + return c(new_value, instance, attrib) + + return new_value + + +# Sentinel for disabling class-wide *on_setattr* hooks for certain attributes. +# Sphinx's autodata stopped working, so the docstring is inlined in the API +# docs. +NO_OP = object() diff --git a/myenv/Lib/site-packages/attr/setters.pyi b/myenv/Lib/site-packages/attr/setters.pyi new file mode 100644 index 0000000..73abf36 --- /dev/null +++ b/myenv/Lib/site-packages/attr/setters.pyi @@ -0,0 +1,20 @@ +from typing import Any, NewType, NoReturn, TypeVar + +from . import Attribute +from attrs import _OnSetAttrType + +_T = TypeVar("_T") + +def frozen( + instance: Any, attribute: Attribute[Any], 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/myenv/Lib/site-packages/attr/validators.py b/myenv/Lib/site-packages/attr/validators.py new file mode 100644 index 0000000..e7b7552 --- /dev/null +++ b/myenv/Lib/site-packages/attr/validators.py @@ -0,0 +1,710 @@ +# SPDX-License-Identifier: MIT + +""" +Commonly useful validators. +""" + +import operator +import re + +from contextlib import contextmanager +from re import Pattern + +from ._config import get_run_validators, set_run_validators +from ._make import _AndValidator, and_, attrib, attrs +from .converters import default_if_none +from .exceptions import NotCallableError + + +__all__ = [ + "and_", + "deep_iterable", + "deep_mapping", + "disabled", + "ge", + "get_disabled", + "gt", + "in_", + "instance_of", + "is_callable", + "le", + "lt", + "matches_re", + "max_len", + "min_len", + "not_", + "optional", + "or_", + "set_disabled", +] + + +def set_disabled(disabled): + """ + Globally disable or enable running validators. + + By default, they are run. + + Args: + disabled (bool): If `True`, disable running all validators. + + .. warning:: + + This function is not thread-safe! + + .. versionadded:: 21.3.0 + """ + set_run_validators(not disabled) + + +def get_disabled(): + """ + Return a bool indicating whether validators are currently disabled or not. + + Returns: + bool:`True` if validators are currently disabled. + + .. versionadded:: 21.3.0 + """ + return not get_run_validators() + + +@contextmanager +def disabled(): + """ + Context manager that disables running validators within its context. + + .. warning:: + + This context manager is not thread-safe! + + .. versionadded:: 21.3.0 + """ + set_run_validators(False) + try: + yield + finally: + set_run_validators(True) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _InstanceOfValidator: + 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): + msg = f"'{attr.name}' must be {self.type!r} (got {value!r} that is a {value.__class__!r})." + raise TypeError( + msg, + attr, + self.type, + value, + ) + + def __repr__(self): + return f"" + + +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). + + Args: + type (type | tuple[type]): The type to check for. + + Raises: + TypeError: + With a human readable error message, the attribute (of type + `attrs.Attribute`), the expected type, and the value it got. + """ + return _InstanceOfValidator(type) + + +@attrs(repr=False, frozen=True, slots=True) +class _MatchesReValidator: + pattern = 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): + msg = f"'{attr.name}' must match regex {self.pattern.pattern!r} ({value!r} doesn't)" + raise ValueError( + msg, + attr, + self.pattern, + value, + ) + + def __repr__(self): + return f"" + + +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*. + + Args: + regex (str, re.Pattern): + A regex string or precompiled pattern to match against + + flags (int): + Flags that will be passed to the underlying re function (default 0) + + func (typing.Callable): + Which underlying `re` function to call. Valid options are + `re.fullmatch`, `re.search`, and `re.match`; the default `None` + means `re.fullmatch`. For performance reasons, the pattern is + always precompiled using `re.compile`. + + .. versionadded:: 19.2.0 + .. versionchanged:: 21.3.0 *regex* can be a pre-compiled pattern. + """ + valid_funcs = (re.fullmatch, None, re.search, re.match) + if func not in valid_funcs: + msg = "'func' must be one of {}.".format( + ", ".join( + sorted((e and e.__name__) or "None" for e in set(valid_funcs)) + ) + ) + raise ValueError(msg) + + if isinstance(regex, Pattern): + if flags: + msg = "'flags' can only be used with a string pattern; pass flags to re.compile() instead" + raise TypeError(msg) + pattern = regex + else: + pattern = re.compile(regex, flags) + + if func is re.match: + match_func = pattern.match + elif func is re.search: + match_func = pattern.search + else: + match_func = pattern.fullmatch + + return _MatchesReValidator(pattern, match_func) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _OptionalValidator: + validator = attrib() + + def __call__(self, inst, attr, value): + if value is None: + return + + self.validator(inst, attr, value) + + def __repr__(self): + return f"" + + +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. + + Args: + validator + (typing.Callable | tuple[typing.Callable] | list[typing.Callable]): + A validator (or validators) that is used for non-`None` values. + + .. versionadded:: 15.1.0 + .. versionchanged:: 17.1.0 *validator* can be a list of validators. + .. versionchanged:: 23.1.0 *validator* can also be a tuple of validators. + """ + if isinstance(validator, (list, tuple)): + return _OptionalValidator(_AndValidator(validator)) + + return _OptionalValidator(validator) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _InValidator: + options = attrib() + _original_options = attrib(hash=False) + + 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: + msg = f"'{attr.name}' must be in {self._original_options!r} (got {value!r})" + raise ValueError( + msg, + attr, + self._original_options, + value, + ) + + def __repr__(self): + return f"" + + +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``, so *options* has to + support that operation. + + To keep the validator hashable, dicts, lists, and sets are transparently + transformed into a `tuple`. + + Args: + options: Allowed options. + + Raises: + ValueError: + With a human readable error message, the attribute (of type + `attrs.Attribute`), the expected options, and the value it got. + + .. versionadded:: 17.1.0 + .. versionchanged:: 22.1.0 + The ValueError was incomplete until now and only contained the human + readable error message. Now it contains all the information that has + been promised since 17.1.0. + .. versionchanged:: 24.1.0 + *options* that are a list, dict, or a set are now transformed into a + tuple to keep the validator hashable. + """ + repr_options = options + if isinstance(options, (list, dict, set)): + options = tuple(options) + + return _InValidator(options, repr_options) + + +@attrs(repr=False, slots=False, unsafe_hash=True) +class _IsCallableValidator: + 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 `attrs.exceptions.NotCallableError` if the + initializer is called with a value for this particular attribute that is + not callable. + + .. versionadded:: 19.1.0 + + Raises: + attrs.exceptions.NotCallableError: + With a human readable error message containing the attribute + (`attrs.Attribute`) name, and the value it got. + """ + return _IsCallableValidator() + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _DeepIterable: + 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 f" {self.iterable_validator!r}" + ) + return ( + f"" + ) + + +def deep_iterable(member_validator, iterable_validator=None): + """ + A validator that performs deep validation of an iterable. + + Args: + member_validator: Validator to apply to iterable members. + + iterable_validator: + Validator to apply to iterable itself (optional). + + Raises + TypeError: if any sub-validators fail + + .. versionadded:: 19.1.0 + """ + if isinstance(member_validator, (list, tuple)): + member_validator = and_(*member_validator) + return _DeepIterable(member_validator, iterable_validator) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _DeepMapping: + 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 f"" + + +def deep_mapping(key_validator, value_validator, mapping_validator=None): + """ + A validator that performs deep validation of a dictionary. + + Args: + key_validator: Validator to apply to dictionary keys. + + value_validator: Validator to apply to dictionary values. + + 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) + + +@attrs(repr=False, frozen=True, slots=True) +class _NumberValidator: + bound = attrib() + compare_op = attrib() + compare_func = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not self.compare_func(value, self.bound): + msg = f"'{attr.name}' must be {self.compare_op} {self.bound}: {value}" + raise ValueError(msg) + + def __repr__(self): + return f"" + + +def lt(val): + """ + A validator that raises `ValueError` if the initializer is called with a + number larger or equal to *val*. + + The validator uses `operator.lt` to compare the values. + + Args: + val: Exclusive upper bound for values. + + .. versionadded:: 21.3.0 + """ + return _NumberValidator(val, "<", operator.lt) + + +def le(val): + """ + A validator that raises `ValueError` if the initializer is called with a + number greater than *val*. + + The validator uses `operator.le` to compare the values. + + Args: + val: Inclusive upper bound for values. + + .. versionadded:: 21.3.0 + """ + return _NumberValidator(val, "<=", operator.le) + + +def ge(val): + """ + A validator that raises `ValueError` if the initializer is called with a + number smaller than *val*. + + The validator uses `operator.ge` to compare the values. + + Args: + val: Inclusive lower bound for values + + .. versionadded:: 21.3.0 + """ + return _NumberValidator(val, ">=", operator.ge) + + +def gt(val): + """ + A validator that raises `ValueError` if the initializer is called with a + number smaller or equal to *val*. + + The validator uses `operator.ge` to compare the values. + + Args: + val: Exclusive lower bound for values + + .. versionadded:: 21.3.0 + """ + return _NumberValidator(val, ">", operator.gt) + + +@attrs(repr=False, frozen=True, slots=True) +class _MaxLengthValidator: + max_length = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if len(value) > self.max_length: + msg = f"Length of '{attr.name}' must be <= {self.max_length}: {len(value)}" + raise ValueError(msg) + + def __repr__(self): + return f"" + + +def max_len(length): + """ + A validator that raises `ValueError` if the initializer is called + with a string or iterable that is longer than *length*. + + Args: + length (int): Maximum length of the string or iterable + + .. versionadded:: 21.3.0 + """ + return _MaxLengthValidator(length) + + +@attrs(repr=False, frozen=True, slots=True) +class _MinLengthValidator: + min_length = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if len(value) < self.min_length: + msg = f"Length of '{attr.name}' must be >= {self.min_length}: {len(value)}" + raise ValueError(msg) + + def __repr__(self): + return f"" + + +def min_len(length): + """ + A validator that raises `ValueError` if the initializer is called + with a string or iterable that is shorter than *length*. + + Args: + length (int): Minimum length of the string or iterable + + .. versionadded:: 22.1.0 + """ + return _MinLengthValidator(length) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _SubclassOfValidator: + type = attrib() + + def __call__(self, inst, attr, value): + """ + We use a callable class to be able to change the ``__repr__``. + """ + if not issubclass(value, self.type): + msg = f"'{attr.name}' must be a subclass of {self.type!r} (got {value!r})." + raise TypeError( + msg, + attr, + self.type, + value, + ) + + def __repr__(self): + return f"" + + +def _subclass_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 + `issubclass` therefore it's also valid to pass a tuple of types). + + Args: + type (type | tuple[type, ...]): The type(s) to check for. + + Raises: + TypeError: + With a human readable error message, the attribute (of type + `attrs.Attribute`), the expected type, and the value it got. + """ + return _SubclassOfValidator(type) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _NotValidator: + validator = attrib() + msg = attrib( + converter=default_if_none( + "not_ validator child '{validator!r}' " + "did not raise a captured error" + ) + ) + exc_types = attrib( + validator=deep_iterable( + member_validator=_subclass_of(Exception), + iterable_validator=instance_of(tuple), + ), + ) + + def __call__(self, inst, attr, value): + try: + self.validator(inst, attr, value) + except self.exc_types: + pass # suppress error to invert validity + else: + raise ValueError( + self.msg.format( + validator=self.validator, + exc_types=self.exc_types, + ), + attr, + self.validator, + value, + self.exc_types, + ) + + def __repr__(self): + return f"" + + +def not_(validator, *, msg=None, exc_types=(ValueError, TypeError)): + """ + A validator that wraps and logically 'inverts' the validator passed to it. + It will raise a `ValueError` if the provided validator *doesn't* raise a + `ValueError` or `TypeError` (by default), and will suppress the exception + if the provided validator *does*. + + Intended to be used with existing validators to compose logic without + needing to create inverted variants, for example, ``not_(in_(...))``. + + Args: + validator: A validator to be logically inverted. + + msg (str): + Message to raise if validator fails. Formatted with keys + ``exc_types`` and ``validator``. + + exc_types (tuple[type, ...]): + Exception type(s) to capture. Other types raised by child + validators will not be intercepted and pass through. + + Raises: + ValueError: + With a human readable error message, the attribute (of type + `attrs.Attribute`), the validator that failed to raise an + exception, the value it got, and the expected exception types. + + .. versionadded:: 22.2.0 + """ + try: + exc_types = tuple(exc_types) + except TypeError: + exc_types = (exc_types,) + return _NotValidator(validator, msg, exc_types) + + +@attrs(repr=False, slots=True, unsafe_hash=True) +class _OrValidator: + validators = attrib() + + def __call__(self, inst, attr, value): + for v in self.validators: + try: + v(inst, attr, value) + except Exception: # noqa: BLE001, PERF203, S112 + continue + else: + return + + msg = f"None of {self.validators!r} satisfied for value {value!r}" + raise ValueError(msg) + + def __repr__(self): + return f"" + + +def or_(*validators): + """ + A validator that composes multiple validators into one. + + When called on a value, it runs all wrapped validators until one of them is + satisfied. + + Args: + validators (~collections.abc.Iterable[typing.Callable]): + Arbitrary number of validators. + + Raises: + ValueError: + If no validator is satisfied. Raised with a human-readable error + message listing all the wrapped validators and the value that + failed all of them. + + .. versionadded:: 24.1.0 + """ + vals = [] + for v in validators: + vals.extend(v.validators if isinstance(v, _OrValidator) else [v]) + + return _OrValidator(tuple(vals)) diff --git a/myenv/Lib/site-packages/attr/validators.pyi b/myenv/Lib/site-packages/attr/validators.pyi new file mode 100644 index 0000000..a0fdda7 --- /dev/null +++ b/myenv/Lib/site-packages/attr/validators.pyi @@ -0,0 +1,86 @@ +from types import UnionType +from typing import ( + Any, + AnyStr, + Callable, + Container, + ContextManager, + Iterable, + Mapping, + Match, + Pattern, + TypeVar, + overload, +) + +from attrs import _ValidatorType +from attrs import _ValidatorArgType + +_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) + +def set_disabled(run: bool) -> None: ... +def get_disabled() -> bool: ... +def disabled() -> ContextManager[None]: ... + +# 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[_T1 | _T2]: ... +@overload +def instance_of( + type: tuple[type[_T1], type[_T2], type[_T3]], +) -> _ValidatorType[_T1 | _T2 | _T3]: ... +@overload +def instance_of(type: tuple[type, ...]) -> _ValidatorType[Any]: ... +@overload +def instance_of(type: UnionType) -> _ValidatorType[Any]: ... +def optional( + validator: ( + _ValidatorType[_T] + | list[_ValidatorType[_T]] + | tuple[_ValidatorType[_T]] + ), +) -> _ValidatorType[_T | None]: ... +def in_(options: Container[_T]) -> _ValidatorType[_T]: ... +def and_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... +def matches_re( + regex: Pattern[AnyStr] | AnyStr, + flags: int = ..., + func: Callable[[AnyStr, AnyStr, int], Match[AnyStr] | None] | None = ..., +) -> _ValidatorType[AnyStr]: ... +def deep_iterable( + member_validator: _ValidatorArgType[_T], + iterable_validator: _ValidatorType[_I] | None = ..., +) -> _ValidatorType[_I]: ... +def deep_mapping( + key_validator: _ValidatorType[_K], + value_validator: _ValidatorType[_V], + mapping_validator: _ValidatorType[_M] | None = ..., +) -> _ValidatorType[_M]: ... +def is_callable() -> _ValidatorType[_T]: ... +def lt(val: _T) -> _ValidatorType[_T]: ... +def le(val: _T) -> _ValidatorType[_T]: ... +def ge(val: _T) -> _ValidatorType[_T]: ... +def gt(val: _T) -> _ValidatorType[_T]: ... +def max_len(length: int) -> _ValidatorType[_T]: ... +def min_len(length: int) -> _ValidatorType[_T]: ... +def not_( + validator: _ValidatorType[_T], + *, + msg: str | None = None, + exc_types: type[Exception] | Iterable[type[Exception]] = ..., +) -> _ValidatorType[_T]: ... +def or_(*validators: _ValidatorType[_T]) -> _ValidatorType[_T]: ... diff --git a/myenv/Lib/site-packages/attrs-25.3.0.dist-info/INSTALLER b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/Lib/site-packages/attrs-25.3.0.dist-info/METADATA b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/METADATA new file mode 100644 index 0000000..029afee --- /dev/null +++ b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/METADATA @@ -0,0 +1,232 @@ +Metadata-Version: 2.4 +Name: attrs +Version: 25.3.0 +Summary: Classes Without Boilerplate +Project-URL: Documentation, https://www.attrs.org/ +Project-URL: Changelog, https://www.attrs.org/en/stable/changelog.html +Project-URL: GitHub, 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 +Author-email: Hynek Schlawack +License-Expression: MIT +License-File: LICENSE +Keywords: attribute,boilerplate,class +Classifier: Development Status :: 5 - Production/Stable +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Typing :: Typed +Requires-Python: >=3.8 +Provides-Extra: benchmark +Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'benchmark' +Requires-Dist: hypothesis; extra == 'benchmark' +Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'benchmark' +Requires-Dist: pympler; extra == 'benchmark' +Requires-Dist: pytest-codspeed; extra == 'benchmark' +Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'benchmark' +Requires-Dist: pytest-xdist[psutil]; extra == 'benchmark' +Requires-Dist: pytest>=4.3.0; extra == 'benchmark' +Provides-Extra: cov +Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'cov' +Requires-Dist: coverage[toml]>=5.3; extra == 'cov' +Requires-Dist: hypothesis; extra == 'cov' +Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'cov' +Requires-Dist: pympler; extra == 'cov' +Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'cov' +Requires-Dist: pytest-xdist[psutil]; extra == 'cov' +Requires-Dist: pytest>=4.3.0; extra == 'cov' +Provides-Extra: dev +Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'dev' +Requires-Dist: hypothesis; extra == 'dev' +Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'dev' +Requires-Dist: pre-commit-uv; extra == 'dev' +Requires-Dist: pympler; extra == 'dev' +Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'dev' +Requires-Dist: pytest-xdist[psutil]; extra == 'dev' +Requires-Dist: pytest>=4.3.0; extra == 'dev' +Provides-Extra: docs +Requires-Dist: cogapp; extra == 'docs' +Requires-Dist: furo; extra == 'docs' +Requires-Dist: myst-parser; extra == 'docs' +Requires-Dist: sphinx; extra == 'docs' +Requires-Dist: sphinx-notfound-page; extra == 'docs' +Requires-Dist: sphinxcontrib-towncrier; extra == 'docs' +Requires-Dist: towncrier; extra == 'docs' +Provides-Extra: tests +Requires-Dist: cloudpickle; (platform_python_implementation == 'CPython') and extra == 'tests' +Requires-Dist: hypothesis; extra == 'tests' +Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests' +Requires-Dist: pympler; extra == 'tests' +Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests' +Requires-Dist: pytest-xdist[psutil]; extra == 'tests' +Requires-Dist: pytest>=4.3.0; extra == 'tests' +Provides-Extra: tests-mypy +Requires-Dist: mypy>=1.11.1; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests-mypy' +Requires-Dist: pytest-mypy-plugins; (platform_python_implementation == 'CPython' and python_version >= '3.10') and extra == 'tests-mypy' +Description-Content-Type: text/markdown + +

+ + attrs + +

+ + +*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](https://www.attrs.org/en/latest/glossary.html#term-dunder-methods)). +[Trusted by NASA](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#list-of-qualifying-repositories-for-mars-2020-helicopter-contributor-achievement) for Mars missions since 2020! + +Its main goal is to help you to write **concise** and **correct** software without slowing down your code. + + +## Sponsors + +*attrs* would not be possible without our [amazing sponsors](https://github.com/sponsors/hynek). +Especially those generously supporting us at the *The Organization* tier and higher: + + + +

+ + + + + + + + + + + +

+ + + +

+ Please consider joining them to help make attrs’s maintenance more sustainable! +

+ + + +## Example + +*attrs* gives you a class decorator and a way to declaratively define the attributes on that class: + + + +```pycon +>>> from attrs import asdict, define, make_class, Factory + +>>> @define +... class SomeClass: +... a_number: int = 42 +... list_of_numbers: list[int] = 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 + +>>> asdict(sc) +{'a_number': 1, 'list_of_numbers': [1, 2, 3]} + +>>> SomeClass() +SomeClass(a_number=42, list_of_numbers=[]) + +>>> C = 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__`, +- equality-checking methods, +- an initializer, +- and much more, + +*without* writing dull boilerplate code again and again and *without* runtime performance penalties. + +--- + +This example uses *attrs*'s modern APIs that have been introduced in version 20.1.0, and the *attrs* package import name that has been added in version 21.3.0. +The classic APIs (`@attr.s`, `attr.ib`, plus their serious-business aliases) and the `attr` package import name will remain **indefinitely**. + +Check out [*On The Core API Names*](https://www.attrs.org/en/latest/names.html) for an in-depth explanation! + + +### Hate Type Annotations!? + +No problem! +Types are entirely **optional** with *attrs*. +Simply assign `attrs.field()` to the attributes instead of annotating them with types: + +```python +from attrs import define, field + +@define +class SomeClass: + a_number = field(default=42) + list_of_numbers = field(factory=list) +``` + + +## Data Classes + +On the tin, *attrs* might remind you of `dataclasses` (and indeed, `dataclasses` [are a descendant](https://hynek.me/articles/import-attrs/) of *attrs*). +In practice it does a lot more and is more flexible. +For instance, it allows you to define [special handling of NumPy arrays for equality checks](https://www.attrs.org/en/stable/comparison.html#customization), allows more ways to [plug into the initialization process](https://www.attrs.org/en/stable/init.html#hooking-yourself-into-initialization), has a replacement for `__init_subclass__`, and allows for stepping through the generated methods using a debugger. + +For more details, please refer to our [comparison page](https://www.attrs.org/en/stable/why.html#data-classes), but generally speaking, we are more likely to commit crimes against nature to make things work that one would expect to work, but that are quite complicated in practice. + + +## Project Information + +- [**Changelog**](https://www.attrs.org/en/stable/changelog.html) +- [**Documentation**](https://www.attrs.org/) +- [**PyPI**](https://pypi.org/project/attrs/) +- [**Source Code**](https://github.com/python-attrs/attrs) +- [**Contributing**](https://github.com/python-attrs/attrs/blob/main/.github/CONTRIBUTING.md) +- [**Third-party Extensions**](https://github.com/python-attrs/attrs/wiki/Extensions-to-attrs) +- **Get Help**: use the `python-attrs` tag on [Stack Overflow](https://stackoverflow.com/questions/tagged/python-attrs) + + +### *attrs* for Enterprise + +Available as part of the [Tidelift Subscription](https://tidelift.com/?utm_source=lifter&utm_medium=referral&utm_campaign=hynek). + +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. + +## Release Information + +### Changes + +- Restore support for generator-based `field_transformer`s. + [#1417](https://github.com/python-attrs/attrs/issues/1417) + + + +--- + +[Full changelog →](https://www.attrs.org/en/stable/changelog.html) diff --git a/myenv/Lib/site-packages/attrs-25.3.0.dist-info/RECORD b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/RECORD new file mode 100644 index 0000000..9cc9074 --- /dev/null +++ b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/RECORD @@ -0,0 +1,55 @@ +attr/__init__.py,sha256=fOYIvt1eGSqQre4uCS3sJWKZ0mwAuC8UD6qba5OS9_U,2057 +attr/__init__.pyi,sha256=QIXnnHPoucmDWkbpNsWTP-cgJ1bn8le7DjyRa_wYdew,11281 +attr/__pycache__/__init__.cpython-38.pyc,, +attr/__pycache__/_cmp.cpython-38.pyc,, +attr/__pycache__/_compat.cpython-38.pyc,, +attr/__pycache__/_config.cpython-38.pyc,, +attr/__pycache__/_funcs.cpython-38.pyc,, +attr/__pycache__/_make.cpython-38.pyc,, +attr/__pycache__/_next_gen.cpython-38.pyc,, +attr/__pycache__/_version_info.cpython-38.pyc,, +attr/__pycache__/converters.cpython-38.pyc,, +attr/__pycache__/exceptions.cpython-38.pyc,, +attr/__pycache__/filters.cpython-38.pyc,, +attr/__pycache__/setters.cpython-38.pyc,, +attr/__pycache__/validators.cpython-38.pyc,, +attr/_cmp.py,sha256=3Nn1TjxllUYiX_nJoVnEkXoDk0hM1DYKj5DE7GZe4i0,4117 +attr/_cmp.pyi,sha256=U-_RU_UZOyPUEQzXE6RMYQQcjkZRY25wTH99sN0s7MM,368 +attr/_compat.py,sha256=4hlXbWhdDjQCDK6FKF1EgnZ3POiHgtpp54qE0nxaGHg,2704 +attr/_config.py,sha256=dGq3xR6fgZEF6UBt_L0T-eUHIB4i43kRmH0P28sJVw8,843 +attr/_funcs.py,sha256=5-tUKJtp3h5El55EcDl6GWXFp68fT8D8U7uCRN6497I,15854 +attr/_make.py,sha256=lBUPPmxiA1BeHzB6OlHoCEh--tVvM1ozXO8eXOa6g4c,96664 +attr/_next_gen.py,sha256=7FRkbtl_N017SuBhf_Vw3mw2c2pGZhtCGOzadgz7tp4,24395 +attr/_typing_compat.pyi,sha256=XDP54TUn-ZKhD62TOQebmzrwFyomhUCoGRpclb6alRA,469 +attr/_version_info.py,sha256=exSqb3b5E-fMSsgZAlEw9XcLpEgobPORCZpcaEglAM4,2121 +attr/_version_info.pyi,sha256=x_M3L3WuB7r_ULXAWjx959udKQ4HLB8l-hsc1FDGNvk,209 +attr/converters.py,sha256=GlDeOzPeTFgeBBLbj9G57Ez5lAk68uhSALRYJ_exe84,3861 +attr/converters.pyi,sha256=orU2bff-VjQa2kMDyvnMQV73oJT2WRyQuw4ZR1ym1bE,643 +attr/exceptions.py,sha256=HRFq4iybmv7-DcZwyjl6M1euM2YeJVK_hFxuaBGAngI,1977 +attr/exceptions.pyi,sha256=zZq8bCUnKAy9mDtBEw42ZhPhAUIHoTKedDQInJD883M,539 +attr/filters.py,sha256=ZBiKWLp3R0LfCZsq7X11pn9WX8NslS2wXM4jsnLOGc8,1795 +attr/filters.pyi,sha256=3J5BG-dTxltBk1_-RuNRUHrv2qu1v8v4aDNAQ7_mifA,208 +attr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +attr/setters.py,sha256=5-dcT63GQK35ONEzSgfXCkbB7pPkaR-qv15mm4PVSzQ,1617 +attr/setters.pyi,sha256=NnVkaFU1BB4JB8E4JuXyrzTUgvtMpj8p3wBdJY7uix4,584 +attr/validators.py,sha256=WaB1HLAHHqRHWsrv_K9H-sJ7ESil3H3Cmv2d8TtVZx4,20046 +attr/validators.pyi,sha256=s2WhKPqskxbsckJfKk8zOuuB088GfgpyxcCYSNFLqNU,2603 +attrs-25.3.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +attrs-25.3.0.dist-info/METADATA,sha256=W38cREj7s1wqNf1fg4hVwZmL1xh0AdSp4IhtTMROinw,10993 +attrs-25.3.0.dist-info/RECORD,, +attrs-25.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 +attrs-25.3.0.dist-info/licenses/LICENSE,sha256=iCEVyV38KvHutnFPjsbVy8q_Znyv-HKfQkINpj9xTp8,1109 +attrs/__init__.py,sha256=qeQJZ4O08yczSn840v9bYOaZyRE81WsVi-QCrY3krCU,1107 +attrs/__init__.pyi,sha256=nZmInocjM7tHV4AQw0vxO_fo6oJjL_PonlV9zKKW8DY,7931 +attrs/__pycache__/__init__.cpython-38.pyc,, +attrs/__pycache__/converters.cpython-38.pyc,, +attrs/__pycache__/exceptions.cpython-38.pyc,, +attrs/__pycache__/filters.cpython-38.pyc,, +attrs/__pycache__/setters.cpython-38.pyc,, +attrs/__pycache__/validators.cpython-38.pyc,, +attrs/converters.py,sha256=8kQljrVwfSTRu8INwEk8SI0eGrzmWftsT7rM0EqyohM,76 +attrs/exceptions.py,sha256=ACCCmg19-vDFaDPY9vFl199SPXCQMN_bENs4DALjzms,76 +attrs/filters.py,sha256=VOUMZug9uEU6dUuA0dF1jInUK0PL3fLgP0VBS5d-CDE,73 +attrs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +attrs/setters.py,sha256=eL1YidYQV3T2h9_SYIZSZR1FAcHGb1TuCTy0E0Lv2SU,73 +attrs/validators.py,sha256=xcy6wD5TtTkdCG1f4XWbocPSO0faBjk5IfVJfP6SUj0,76 diff --git a/myenv/Lib/site-packages/attrs-25.3.0.dist-info/WHEEL b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/WHEEL new file mode 100644 index 0000000..12228d4 --- /dev/null +++ b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.27.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/myenv/Lib/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000..2bd6453 --- /dev/null +++ b/myenv/Lib/site-packages/attrs-25.3.0.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Hynek Schlawack and the attrs contributors + +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/myenv/Lib/site-packages/attrs/__init__.py b/myenv/Lib/site-packages/attrs/__init__.py new file mode 100644 index 0000000..e8023ff --- /dev/null +++ b/myenv/Lib/site-packages/attrs/__init__.py @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: MIT + +from attr import ( + NOTHING, + Attribute, + AttrsInstance, + Converter, + Factory, + NothingType, + _make_getattr, + assoc, + cmp_using, + define, + evolve, + field, + fields, + fields_dict, + frozen, + has, + make_class, + mutable, + resolve_types, + validate, +) +from attr._next_gen import asdict, astuple + +from . import converters, exceptions, filters, setters, validators + + +__all__ = [ + "NOTHING", + "Attribute", + "AttrsInstance", + "Converter", + "Factory", + "NothingType", + "__author__", + "__copyright__", + "__description__", + "__doc__", + "__email__", + "__license__", + "__title__", + "__url__", + "__version__", + "__version_info__", + "asdict", + "assoc", + "astuple", + "cmp_using", + "converters", + "define", + "evolve", + "exceptions", + "field", + "fields", + "fields_dict", + "filters", + "frozen", + "has", + "make_class", + "mutable", + "resolve_types", + "setters", + "validate", + "validators", +] + +__getattr__ = _make_getattr(__name__) diff --git a/myenv/Lib/site-packages/attrs/__init__.pyi b/myenv/Lib/site-packages/attrs/__init__.pyi new file mode 100644 index 0000000..648fa7a --- /dev/null +++ b/myenv/Lib/site-packages/attrs/__init__.pyi @@ -0,0 +1,263 @@ +import sys + +from typing import ( + Any, + Callable, + Mapping, + Sequence, + overload, + TypeVar, +) + +# Because we need to type our own stuff, we have to make everything from +# attr explicitly public too. +from attr import __author__ as __author__ +from attr import __copyright__ as __copyright__ +from attr import __description__ as __description__ +from attr import __email__ as __email__ +from attr import __license__ as __license__ +from attr import __title__ as __title__ +from attr import __url__ as __url__ +from attr import __version__ as __version__ +from attr import __version_info__ as __version_info__ +from attr import assoc as assoc +from attr import Attribute as Attribute +from attr import AttrsInstance as AttrsInstance +from attr import cmp_using as cmp_using +from attr import converters as converters +from attr import Converter as Converter +from attr import evolve as evolve +from attr import exceptions as exceptions +from attr import Factory as Factory +from attr import fields as fields +from attr import fields_dict as fields_dict +from attr import filters as filters +from attr import has as has +from attr import make_class as make_class +from attr import NOTHING as NOTHING +from attr import resolve_types as resolve_types +from attr import setters as setters +from attr import validate as validate +from attr import validators as validators +from attr import attrib, asdict as asdict, astuple as astuple +from attr import NothingType as NothingType + +if sys.version_info >= (3, 11): + from typing import dataclass_transform +else: + from typing_extensions import dataclass_transform + +_T = TypeVar("_T") +_C = TypeVar("_C", bound=type) + +_EqOrderType = bool | Callable[[Any], Any] +_ValidatorType = Callable[[Any, "Attribute[_T]", _T], Any] +_CallableConverterType = Callable[[Any], Any] +_ConverterType = _CallableConverterType | Converter[Any, Any] +_ReprType = Callable[[Any], str] +_ReprArgType = bool | _ReprType +_OnSetAttrType = Callable[[Any, "Attribute[Any]", Any], Any] +_OnSetAttrArgType = _OnSetAttrType | list[_OnSetAttrType] | setters._NoOpType +_FieldTransformer = Callable[ + [type, list["Attribute[Any]"]], list["Attribute[Any]"] +] +# 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 = _ValidatorType[_T] | Sequence[_ValidatorType[_T]] + +@overload +def field( + *, + default: None = ..., + validator: None = ..., + repr: _ReprArgType = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + converter: None = ..., + factory: None = ..., + kw_only: bool = ..., + eq: bool | None = ..., + order: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., + type: type | None = ..., +) -> Any: ... + +# This form catches an explicit None or no default and infers the type from the +# other arguments. +@overload +def field( + *, + default: None = ..., + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., + type: type | None = ..., +) -> _T: ... + +# This form catches an explicit default argument. +@overload +def field( + *, + default: _T, + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., + type: type | None = ..., +) -> _T: ... + +# This form covers type=non-Type: e.g. forward references (str), Any +@overload +def field( + *, + default: _T | None = ..., + validator: _ValidatorArgType[_T] | None = ..., + repr: _ReprArgType = ..., + hash: bool | None = ..., + init: bool = ..., + metadata: Mapping[Any, Any] | None = ..., + converter: _ConverterType + | list[_ConverterType] + | tuple[_ConverterType] + | None = ..., + factory: Callable[[], _T] | None = ..., + kw_only: bool = ..., + eq: _EqOrderType | None = ..., + order: _EqOrderType | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + alias: str | None = ..., + type: type | None = ..., +) -> Any: ... +@overload +@dataclass_transform(field_specifiers=(attrib, field)) +def define( + maybe_cls: _C, + *, + these: dict[str, Any] | None = ..., + repr: bool = ..., + unsafe_hash: bool | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: bool | None = ..., + order: bool | None = ..., + auto_detect: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., +) -> _C: ... +@overload +@dataclass_transform(field_specifiers=(attrib, field)) +def define( + maybe_cls: None = ..., + *, + these: dict[str, Any] | None = ..., + repr: bool = ..., + unsafe_hash: bool | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: bool | None = ..., + order: bool | None = ..., + auto_detect: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., +) -> Callable[[_C], _C]: ... + +mutable = define + +@overload +@dataclass_transform(frozen_default=True, field_specifiers=(attrib, field)) +def frozen( + maybe_cls: _C, + *, + these: dict[str, Any] | None = ..., + repr: bool = ..., + unsafe_hash: bool | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: bool | None = ..., + order: bool | None = ..., + auto_detect: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., +) -> _C: ... +@overload +@dataclass_transform(frozen_default=True, field_specifiers=(attrib, field)) +def frozen( + maybe_cls: None = ..., + *, + these: dict[str, Any] | None = ..., + repr: bool = ..., + unsafe_hash: bool | None = ..., + hash: bool | None = ..., + init: bool = ..., + slots: bool = ..., + frozen: bool = ..., + weakref_slot: bool = ..., + str: bool = ..., + auto_attribs: bool = ..., + kw_only: bool = ..., + cache_hash: bool = ..., + auto_exc: bool = ..., + eq: bool | None = ..., + order: bool | None = ..., + auto_detect: bool = ..., + getstate_setstate: bool | None = ..., + on_setattr: _OnSetAttrArgType | None = ..., + field_transformer: _FieldTransformer | None = ..., + match_args: bool = ..., +) -> Callable[[_C], _C]: ... diff --git a/myenv/Lib/site-packages/attrs/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/attrs/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48acccf91c63748115a4521a80a0bc6c5aeb16ef GIT binary patch literal 1202 zcmb`F+iDy~5Qb-uvj^=#(rRT%D<5Ln&IV)x4j4iRF$zfxVPmiip;>6!Q!S~Tu9=~` zS4h6iv*aSrk~e64mn*+Qu2MBxlMqO*GQ)gRUDI9lS53Vd40;J&zm0z}FPlm7J1_oz z9ns<|di*;ABv7*n)dV)84{8v4{I&9}mO<&cqB4#UXub zK^s!&Ko@$@hYc9O5JoVDP1u5Mn7|H9VHa+}9_+&b%-|4i!yUK__uwPA4@d9-9>OE| z`20xR)~UYpb4}cZ`O9Sf$$P3WnNMQ6_~G=s=ZkM+_gM(eyj}$z2Wl zmxaC5v2|v&h1jlMKK5_k5=<7z>58{HkBtlEW3LLFS&A4_Tm|*oQaYzShmnDj``Ecu z)_@9nUXN|%t01ZJVO3iFzQ$FyVlVqp0>#uu81Zu1<$t zgF(ZRxE7<$NC~kgrCNoH!bwRTkXcb)J9B;!XgQJ+w9lNW(vTx1N0E`yl~SWJmdw7C z)?_;O`o@x<8A!Eci zV2l}?j4j4CW5Sp*b{L0*#r$4u@<09WR=5rysH9XX{u1zy-2a-EGm0T+dMtB&6=;_7 zn*zDExGt_|#t&PoKP5vM#@-lqNUyj~|!UvGWBMu(J9~ Wo)Q0o@Z)q`pEc{X|K)zyeDo)@e>qtI literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attrs/__pycache__/converters.cpython-38.pyc b/myenv/Lib/site-packages/attrs/__pycache__/converters.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25810c3a0b6fdac03973a84ca840a2273c1ba820 GIT binary patch literal 203 zcmWIL<>g`kg3|&^Gkt*cV-N=!FabFZKwQiNBvKes7;_jx7*d#m88n$+0!0`!8E-La z`Drpn@h6s)6zL`B=ar=vm82FGuVg4<2FinpUjfcmF`>mk(U<^dT?3OC$ASWv#FE4q zpZw&+oS2Z*+=7^b%mUrayyB9?oE+U;^WutpbK|TSkeS6$5@EDnLFFwDo80`A(wtN~ KkR_i%E&%{xUp3eO literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attrs/__pycache__/exceptions.cpython-38.pyc b/myenv/Lib/site-packages/attrs/__pycache__/exceptions.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35f6b58334276815639189b6f4603c48a905e05e GIT binary patch literal 203 zcmWIL<>g`kg3|&^Gkt*cV-N=!FabFZKwQiNBvKes7;_jx7*d#m88n$+0!0`!8E-La z`Drpn@h6s)6zQc_B&QaXWaj4;uVg4<2FinpUjfcmF`>n&Ma3}z&bkIBF^&ZVE{P?H zF+Tapi8(PLsksF)1(^l9nR&$}i8(pCx#qg`kg3|&^Gd+RyV-N=!FabFZKwQiNBvKes7;_jx7*d#m88n$+0!0`!8E-La z`Drpn@g$a%6zQd9=9Hus6|ZC{Vg^criC@0XRxzQ)K+%{0XI%r67{`JFm&B697@z#) z#GIIr)ZBuYg3JQl%)H`~#GD-6T=U|Jd~@Th7?6R*P!ejcUP0w84x8Nkl+v73JCF^Z HL2dv5@gXxS literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attrs/__pycache__/setters.cpython-38.pyc b/myenv/Lib/site-packages/attrs/__pycache__/setters.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b76ed8b9d906c7885489386b2d2cac6796cb84c2 GIT binary patch literal 197 zcmWIL<>g`kg3|&^Gd+RyV-N=!FabFZKwQiNBvKes7;_jx7*d#m88n$+0!0`!8E-La z`Drpn@g$a%6zLVGmXxFx6|ZC{Vg^criC@0XRxzQ)K+%{0XI%r67{`JFm&B697@z#) z#GIIr)ZBuYg3JQl%)H`~#GD-6T=U|Jd~@Th7?6R*P!ejcUP0w84x8Nkl+v73JCF^Z HL2dv5`nxkt literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/attrs/__pycache__/validators.cpython-38.pyc b/myenv/Lib/site-packages/attrs/__pycache__/validators.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6926b6a71e1cb5b75a2f24a73bee19bcc0fd2ddf GIT binary patch literal 203 zcmWIL<>g`kg3|&^Gkt*cV-N=!FabFZKwQiNBvKes7;_jx7*d#m88n$+0!0`!8E-La z`Drpn@h6s)6zP>E=47TMmgE-|uVg4<2FinpUjfcmF`>n&Ma3}z&bkIBF^&ZVE{P?H zF+Tapi8(PLsksF)1(^l9nR&$}i8(pCx#q +License: MIT License +License-File: AUTHORS +License-File: LICENSE +Keywords: HTML,XML,parse,soup +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Topic :: Text Processing :: Markup :: SGML +Classifier: Topic :: Text Processing :: Markup :: XML +Requires-Python: >=3.7.0 +Requires-Dist: soupsieve>=1.6.1 +Requires-Dist: typing-extensions>=4.0.0 +Provides-Extra: cchardet +Requires-Dist: cchardet; extra == 'cchardet' +Provides-Extra: chardet +Requires-Dist: chardet; extra == 'chardet' +Provides-Extra: charset-normalizer +Requires-Dist: charset-normalizer; extra == 'charset-normalizer' +Provides-Extra: html5lib +Requires-Dist: html5lib; extra == 'html5lib' +Provides-Extra: lxml +Requires-Dist: lxml; extra == 'lxml' +Description-Content-Type: text/markdown + +Beautiful Soup is a library that makes it easy to scrape information +from web pages. It sits atop an HTML or XML parser, providing Pythonic +idioms for iterating, searching, and modifying the parse tree. + +# Quick start + +``` +>>> from bs4 import BeautifulSoup +>>> soup = BeautifulSoup("

SomebadHTML") +>>> print(soup.prettify()) + + +

+ Some + + bad + + HTML + + +

+ + +>>> soup.find(string="bad") +'bad' +>>> soup.i +HTML +# +>>> soup = BeautifulSoup("SomebadXML", "xml") +# +>>> print(soup.prettify()) + + + Some + + bad + + XML + + +``` + +To go beyond the basics, [comprehensive documentation is available](https://www.crummy.com/software/BeautifulSoup/bs4/doc/). + +# Links + +* [Homepage](https://www.crummy.com/software/BeautifulSoup/bs4/) +* [Documentation](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) +* [Discussion group](https://groups.google.com/group/beautifulsoup/) +* [Development](https://code.launchpad.net/beautifulsoup/) +* [Bug tracker](https://bugs.launchpad.net/beautifulsoup/) +* [Complete changelog](https://git.launchpad.net/beautifulsoup/tree/CHANGELOG) + +# Note on Python 2 sunsetting + +Beautiful Soup's support for Python 2 was discontinued on December 31, +2020: one year after the sunset date for Python 2 itself. From this +point onward, new Beautiful Soup development will exclusively target +Python 3. The final release of Beautiful Soup 4 to support Python 2 +was 4.9.3. + +# Supporting the project + +If you use Beautiful Soup as part of your professional work, please consider a +[Tidelift subscription](https://tidelift.com/subscription/pkg/pypi-beautifulsoup4?utm_source=pypi-beautifulsoup4&utm_medium=referral&utm_campaign=readme). +This will support many of the free software projects your organization +depends on, not just Beautiful Soup. + +If you use Beautiful Soup for personal projects, the best way to say +thank you is to read +[Tool Safety](https://www.crummy.com/software/BeautifulSoup/zine/), a zine I +wrote about what Beautiful Soup has taught me about software +development. + +# Building the documentation + +The bs4/doc/ directory contains full documentation in Sphinx +format. Run `make html` in that directory to create HTML +documentation. + +# Running the unit tests + +Beautiful Soup supports unit test discovery using Pytest: + +``` +$ pytest +``` + diff --git a/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/RECORD b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/RECORD new file mode 100644 index 0000000..037f885 --- /dev/null +++ b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/RECORD @@ -0,0 +1,37 @@ +beautifulsoup4-4.14.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +beautifulsoup4-4.14.3.dist-info/METADATA,sha256=Ac93vA8Xp9FtgOcKXFM8ESfVdztimUfJ3WUpVlhKtsY,3812 +beautifulsoup4-4.14.3.dist-info/RECORD,, +beautifulsoup4-4.14.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 +beautifulsoup4-4.14.3.dist-info/licenses/AUTHORS,sha256=uYkjiRjh_aweRnF8tAW2PpJJeickE68NmJwd9siry28,2201 +beautifulsoup4-4.14.3.dist-info/licenses/LICENSE,sha256=VbTY1LHlvIbRDvrJG3TIe8t3UmsPW57a-LnNKtxzl7I,1441 +bs4/__init__.py,sha256=E7wiVp7oQK0JhdAYxpehZa8drv3W_sJv5oeTFiBfR5o,44386 +bs4/__pycache__/__init__.cpython-38.pyc,, +bs4/__pycache__/_deprecation.cpython-38.pyc,, +bs4/__pycache__/_typing.cpython-38.pyc,, +bs4/__pycache__/_warnings.cpython-38.pyc,, +bs4/__pycache__/css.cpython-38.pyc,, +bs4/__pycache__/dammit.cpython-38.pyc,, +bs4/__pycache__/diagnose.cpython-38.pyc,, +bs4/__pycache__/element.cpython-38.pyc,, +bs4/__pycache__/exceptions.cpython-38.pyc,, +bs4/__pycache__/filter.cpython-38.pyc,, +bs4/__pycache__/formatter.cpython-38.pyc,, +bs4/_deprecation.py,sha256=niHJCk37APg8KEuFOa57ZXaxLdBmc_2V6uuaJqu7r30,2408 +bs4/_typing.py,sha256=zNcx7R1yCTK8WwtumP28hc7CJ3pMyZXj_VAeYaNXMZA,7549 +bs4/_warnings.py,sha256=ZuOETgcnEbZgw2N0nnNXn6wvtrn2ut7AF0d98bvkMFc,4711 +bs4/builder/__init__.py,sha256=Rl4qjOXvdyyyjayOFqbkgoUoo81IgoyKD-RwWeVK59g,31194 +bs4/builder/__pycache__/__init__.cpython-38.pyc,, +bs4/builder/__pycache__/_html5lib.cpython-38.pyc,, +bs4/builder/__pycache__/_htmlparser.cpython-38.pyc,, +bs4/builder/__pycache__/_lxml.cpython-38.pyc,, +bs4/builder/_html5lib.py,sha256=hL6xUk4_I2i5CMguFoYFlrI26cY4Dut7fOEQrUctHIM,23607 +bs4/builder/_htmlparser.py,sha256=CnULPQV2rm4vLojJABpQ7Xm9diddnEZx2Wcz_VTC1Mg,17445 +bs4/builder/_lxml.py,sha256=ks1e8boA_nOA2oomAhxeudccR6ThbEE-EllFqHRoPLA,18969 +bs4/css.py,sha256=_m_l_4SGWHnY620VJ21j_qQH1RX3p91sYVemgKxaLsM,12713 +bs4/dammit.py,sha256=ZJWa9K32X6N2imFHleqUq0ekf592weU1lvULN_WYWYk,57024 +bs4/diagnose.py,sha256=at98iuxyOrqec4V8iwkTIbNUqBCsq9Lr3fDAQx2129Y,7846 +bs4/element.py,sha256=oXmj7LG_2NpsDK90mq73q0PMK0FjFBIGSeTTJLVwwTc,120237 +bs4/exceptions.py,sha256=Q9FOadNe8QRvzDMaKSXe2Wtl8JK_oAZW7mbFZBVP_GE,951 +bs4/filter.py,sha256=rw8ZNhTDLEJVCEiSifou5tZR_3zBLeuvAyouY82qU_E,29201 +bs4/formatter.py,sha256=uBT0k6W8O5kJ9PCuJYjra97yoUqC-dlM9D_v-oRM0r8,10478 +bs4/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/WHEEL b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/WHEEL new file mode 100644 index 0000000..12228d4 --- /dev/null +++ b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.27.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/AUTHORS b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/AUTHORS new file mode 100644 index 0000000..18926c2 --- /dev/null +++ b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/AUTHORS @@ -0,0 +1,49 @@ +Behold, mortal, the origins of Beautiful Soup... +================================================ + +Leonard Richardson is the primary maintainer. + +Aaron DeVore, Isaac Muse and Chris Papademetrious have made +significant contributions to the code base. + +Mark Pilgrim provided the encoding detection code that forms the base +of UnicodeDammit. + +Thomas Kluyver and Ezio Melotti finished the work of getting Beautiful +Soup 4 working under Python 3. + +Simon Willison wrote soupselect, which was used to make Beautiful Soup +support CSS selectors. Isaac Muse wrote SoupSieve, which made it +possible to _remove_ the CSS selector code from Beautiful Soup. + +Sam Ruby helped with a lot of edge cases. + +Jonathan Ellis was awarded the prestigious Beau Potage D'Or for his +work in solving the nestable tags conundrum. + +An incomplete list of people have contributed patches to Beautiful +Soup: + + Istvan Albert, Andrew Lin, Anthony Baxter, Oliver Beattie, Andrew +Boyko, Tony Chang, Francisco Canas, "Delong", Zephyr Fang, Fuzzy, +Roman Gaufman, Yoni Gilad, Richie Hindle, Toshihiro Kamiya, Peteris +Krumins, Kent Johnson, Marek Kapolka, Andreas Kostyrka, Roel Kramer, +Ben Last, Robert Leftwich, Stefaan Lippens, "liquider", Staffan +Malmgren, Ksenia Marasanova, JP Moins, Adam Monsen, John Nagle, "Jon", +Ed Oskiewicz, Martijn Peters, Greg Phillips, Giles Radford, Stefano +Revera, Arthur Rudolph, Marko Samastur, James Salter, Jouni Seppänen, +Alexander Schmolck, Tim Shirley, Geoffrey Sneddon, Ville Skyttä, +"Vikas", Jens Svalgaard, Andy Theyers, Eric Weiser, Glyn Webster, John +Wiseman, Paul Wright, Danny Yoo + +An incomplete list of people who made suggestions or found bugs or +found ways to break Beautiful Soup: + + Hanno Böck, Matteo Bertini, Chris Curvey, Simon Cusack, Bruce Eckel, + Matt Ernst, Michael Foord, Tom Harris, Bill de hOra, Donald Howes, + Matt Patterson, Scott Roberts, Steve Strassmann, Mike Williams, + warchild at redho dot com, Sami Kuisma, Carlos Rocha, Bob Hutchison, + Joren Mc, Michal Migurski, John Kleven, Tim Heaney, Tripp Lilley, Ed + Summers, Dennis Sutch, Chris Smith, Aaron Swartz, Stuart + Turner, Greg Edwards, Kevin J Kalupson, Nikos Kouremenos, Artur de + Sousa Rocha, Yichun Wei, Per Vognsen diff --git a/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/LICENSE b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/LICENSE new file mode 100644 index 0000000..08e3a9c --- /dev/null +++ b/myenv/Lib/site-packages/beautifulsoup4-4.14.3.dist-info/licenses/LICENSE @@ -0,0 +1,31 @@ +Beautiful Soup is made available under the MIT license: + + Copyright (c) Leonard Richardson + + 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. + +Beautiful Soup incorporates code from the html5lib library, which is +also made available under the MIT license. Copyright (c) James Graham +and other contributors + +Beautiful Soup has an optional dependency on the soupsieve library, +which is also made available under the MIT license. Copyright (c) +Isaac Muse diff --git a/myenv/Lib/site-packages/blinker-1.8.2.dist-info/INSTALLER b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/Lib/site-packages/blinker-1.8.2.dist-info/LICENSE.txt b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..79c9825 --- /dev/null +++ b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright 2010 Jason Kirtland + +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/myenv/Lib/site-packages/blinker-1.8.2.dist-info/METADATA b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/METADATA new file mode 100644 index 0000000..efa45f5 --- /dev/null +++ b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/METADATA @@ -0,0 +1,60 @@ +Metadata-Version: 2.1 +Name: blinker +Version: 1.8.2 +Summary: Fast, simple object-to-object and broadcast signaling +Author: Jason Kirtland +Maintainer-email: Pallets Ecosystem +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://blinker.readthedocs.io +Project-URL: Source, https://github.com/pallets-eco/blinker/ + +# Blinker + +Blinker provides a fast dispatching system that allows any number of +interested parties to subscribe to events, or "signals". + + +## Pallets Community Ecosystem + +> [!IMPORTANT]\ +> This project is part of the Pallets Community Ecosystem. Pallets is the open +> source organization that maintains Flask; Pallets-Eco enables community +> maintenance of related projects. If you are interested in helping maintain +> this project, please reach out on [the Pallets Discord server][discord]. +> +> [discord]: https://discord.gg/pallets + + +## Example + +Signal receivers can subscribe to specific senders or receive signals +sent by any sender. + +```pycon +>>> from blinker import signal +>>> started = signal('round-started') +>>> def each(round): +... print(f"Round {round}") +... +>>> started.connect(each) + +>>> def round_two(round): +... print("This is round two.") +... +>>> started.connect(round_two, sender=2) + +>>> for round in range(1, 4): +... started.send(round) +... +Round 1! +Round 2! +This is round two. +Round 3! +``` + diff --git a/myenv/Lib/site-packages/blinker-1.8.2.dist-info/RECORD b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/RECORD new file mode 100644 index 0000000..487f9e3 --- /dev/null +++ b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/RECORD @@ -0,0 +1,12 @@ +blinker-1.8.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +blinker-1.8.2.dist-info/LICENSE.txt,sha256=nrc6HzhZekqhcCXSrhvjg5Ykx5XphdTw6Xac4p-spGc,1054 +blinker-1.8.2.dist-info/METADATA,sha256=3tEx40hm9IEofyFqDPJsDPE9MAIEhtifapoSp7FqzuA,1633 +blinker-1.8.2.dist-info/RECORD,, +blinker-1.8.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +blinker/__init__.py,sha256=ymyJY_PoTgBzaPgdr4dq-RRsGh7D-sYQIGMNp8Rx4qc,1577 +blinker/__pycache__/__init__.cpython-38.pyc,, +blinker/__pycache__/_utilities.cpython-38.pyc,, +blinker/__pycache__/base.cpython-38.pyc,, +blinker/_utilities.py,sha256=0J7eeXXTUx0Ivf8asfpx0ycVkp0Eqfqnj117x2mYX9E,1675 +blinker/base.py,sha256=nIZJEtXQ8LLZZJrwVp2wQcdfCzDixvAHR9VpSWiyVcQ,22574 +blinker/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/myenv/Lib/site-packages/blinker-1.8.2.dist-info/WHEEL b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/myenv/Lib/site-packages/blinker-1.8.2.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/myenv/Lib/site-packages/blinker/__init__.py b/myenv/Lib/site-packages/blinker/__init__.py new file mode 100644 index 0000000..c93527e --- /dev/null +++ b/myenv/Lib/site-packages/blinker/__init__.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import typing as t + +from .base import ANY +from .base import default_namespace +from .base import NamedSignal +from .base import Namespace +from .base import Signal +from .base import signal + +__all__ = [ + "ANY", + "default_namespace", + "NamedSignal", + "Namespace", + "Signal", + "signal", +] + + +def __getattr__(name: str) -> t.Any: + import warnings + + if name == "__version__": + import importlib.metadata + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " Blinker 1.9.0. Use feature detection or" + " 'importlib.metadata.version(\"blinker\")' instead.", + DeprecationWarning, + stacklevel=2, + ) + return importlib.metadata.version("blinker") + + if name == "receiver_connected": + from .base import _receiver_connected + + warnings.warn( + "The global 'receiver_connected' signal is deprecated and will be" + " removed in Blinker 1.9. Use 'Signal.receiver_connected' and" + " 'Signal.receiver_disconnected' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _receiver_connected + + if name == "WeakNamespace": + from .base import _WeakNamespace + + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _WeakNamespace + + raise AttributeError(name) diff --git a/myenv/Lib/site-packages/blinker/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/blinker/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e67a073d7bdc4a5b43991d66e6d2610e453fa40 GIT binary patch literal 1513 zcmb7E&1)M+6rY)0?XFgmW6Ny_q%BJ>iVj{<@SzDI#C38DCe#U`i(nXO#>z&sAIyv# zENm#LuZ3OHWd!YM?U+X^TK@!w@ z0D3cN)_N24FbP2qd5gDshi~v}V=rm(O}@puZwcS#U!A*2o0CJ-|N6rA*2h(g<#}P4 zNsC+`T;RFW**o|dVq07sv8gmPXPM9?8ws0m00uuy$2pT=Hm$jgc`LW4Yk+d0plVoQ z@2`9-0xOyzDn}bNYnXU1Kk1XowZ~MR5@xFMk!@x9*aG&mZ|C(Pn(HTC4*-ePr zt!;cpPVpXg$#9!c&E;J=l zNT;JB&*2ckl{3e0)2p%B-}ahgSqzzsdRODUXwHQ%zj1xv-kekMe-*Y zONW!0=D{M z4zGgcJ}ZB*(8?V$Ez~A#L~U8lZR{;c^;oGw^&6^XV_h3-t`56Qc!$(Yh<*5J|K0!? zrS#zG{?47`)9rup$GxLstw-x&n#=Mi%KrwJd2Q zy&{GO3~+%S_7!qy4?6_dC(?DNeTAL&9_6I&+R-5S-s2PB8@$VVynkl%0l)I15%syXM}ljA zqi+GNHsU-lbga`NSC4_Wr5MBJJr(ifd!bJXUeWyomDh)379r9e6^g*UEnv)DDUtta4m2Zxjr8N*M3PH5_#b6 zm8!XSIvo|+{Lcq|05lxrmm9-$R>95uTc9d_E1;qQDJ`QZ@!gp0e%}OCFm$6(tXDqNQJIR!6 z{L1_sS`N#!ylZgG zvb*!iY+9%?8;-Ixp9p!mvzbn_RHs6P<*Dp~xsPBfQ#910p4EYM-mAe6SKd|5<02Pt zA%Upi+{IeLuMr6bRkTOs2C(PUyamxzA{!e8fizBI9IBik$ScG0I`Clq1K8eUP>NDAb_)*QHCUg`ujpBsi31%z$WOQY zFbog>-*{_fd`#EPOT_fQ#(Rt%3k}hZv+wb>fjJ=>gA&APtlUJ`y6tCM(?iNKP5{PMlg!cJwPbsq>#UO}?Frt+r7^01fG z?9P&op-6ONL3C5QV{2*2dkZWm&{_h(0i7Q`6xxq{XgpxiPr1l-I!>YOj0*{JDH4(X z0xWP!%t!if2N@S#0qq<0hqQh5vQn^=6Ipdp%DhH%7r2-p?OuUR88yNYo#1x zF`nfBG*Xz;7?o6AbS{ahP}ym&A!7{?Z(udq?oQ*0U@89s^y+$ZJbTmX*^Vs(kj+0$ z!d+;P__Bio=>G@%hlg7}R^Fk%F#8;O5{jXTpoOZ14RsVJlN$8(PKC4$(|~>xh)d8n z5zYl&BGmQ;WokBXds|({%QrWoB#MrKy`m{{*NWTJu2m|OGBAYVJUU02NxwhM*w4s^H{{5rH_d3NvS;Of6O@b13= literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/blinker/__pycache__/base.cpython-38.pyc b/myenv/Lib/site-packages/blinker/__pycache__/base.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc8d16fe1856e7c82529a72100e14269c3b7be08 GIT binary patch literal 20074 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/blinker/_utilities.py b/myenv/Lib/site-packages/blinker/_utilities.py new file mode 100644 index 0000000..000c902 --- /dev/null +++ b/myenv/Lib/site-packages/blinker/_utilities.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import collections.abc as c +import inspect +import typing as t +from weakref import ref +from weakref import WeakMethod + +T = t.TypeVar("T") + + +class Symbol: + """A constant symbol, nicer than ``object()``. Repeated calls return the + same instance. + + >>> Symbol('foo') is Symbol('foo') + True + >>> Symbol('foo') + foo + """ + + symbols: t.ClassVar[dict[str, Symbol]] = {} + + def __new__(cls, name: str) -> Symbol: + if name in cls.symbols: + return cls.symbols[name] + + obj = super().__new__(cls) + cls.symbols[name] = obj + return obj + + def __init__(self, name: str) -> None: + self.name = name + + def __repr__(self) -> str: + return self.name + + def __getnewargs__(self) -> tuple[t.Any, ...]: + return (self.name,) + + +def make_id(obj: object) -> c.Hashable: + """Get a stable identifier for a receiver or sender, to be used as a dict + key or in a set. + """ + if inspect.ismethod(obj): + # The id of a bound method is not stable, but the id of the unbound + # function and instance are. + return id(obj.__func__), id(obj.__self__) + + if isinstance(obj, (str, int)): + # Instances with the same value always compare equal and have the same + # hash, even if the id may change. + return obj + + # Assume other types are not hashable but will always be the same instance. + return id(obj) + + +def make_ref(obj: T, callback: c.Callable[[ref[T]], None] | None = None) -> ref[T]: + if inspect.ismethod(obj): + return WeakMethod(obj, callback) # type: ignore[arg-type, return-value] + + return ref(obj, callback) diff --git a/myenv/Lib/site-packages/blinker/base.py b/myenv/Lib/site-packages/blinker/base.py new file mode 100644 index 0000000..ec494b1 --- /dev/null +++ b/myenv/Lib/site-packages/blinker/base.py @@ -0,0 +1,621 @@ +from __future__ import annotations + +import collections.abc as c +import typing as t +import warnings +import weakref +from collections import defaultdict +from contextlib import AbstractContextManager +from contextlib import contextmanager +from functools import cached_property +from inspect import iscoroutinefunction +from weakref import WeakValueDictionary + +from ._utilities import make_id +from ._utilities import make_ref +from ._utilities import Symbol + +if t.TYPE_CHECKING: + F = t.TypeVar("F", bound=c.Callable[..., t.Any]) + +ANY = Symbol("ANY") +"""Symbol for "any sender".""" + +ANY_ID = 0 + + +class Signal: + """A notification emitter. + + :param doc: The docstring for the signal. + """ + + ANY = ANY + """An alias for the :data:`~blinker.ANY` sender symbol.""" + + set_class: type[set[t.Any]] = set + """The set class to use for tracking connected receivers and senders. + Python's ``set`` is unordered. If receivers must be dispatched in the order + they were connected, an ordered set implementation can be used. + + .. versionadded:: 1.7 + """ + + @cached_property + def receiver_connected(self) -> Signal: + """Emitted at the end of each :meth:`connect` call. + + The signal sender is the signal instance, and the :meth:`connect` + arguments are passed through: ``receiver``, ``sender``, and ``weak``. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver connects.") + + @cached_property + def receiver_disconnected(self) -> Signal: + """Emitted at the end of each :meth:`disconnect` call. + + The sender is the signal instance, and the :meth:`disconnect` arguments + are passed through: ``receiver`` and ``sender``. + + This signal is emitted **only** when :meth:`disconnect` is called + explicitly. This signal cannot be emitted by an automatic disconnect + when a weakly referenced receiver or sender goes out of scope, as the + instance is no longer be available to be used as the sender for this + signal. + + An alternative approach is available by subscribing to + :attr:`receiver_connected` and setting up a custom weakref cleanup + callback on weak receivers and senders. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver disconnects.") + + def __init__(self, doc: str | None = None) -> None: + if doc: + self.__doc__ = doc + + self.receivers: dict[ + t.Any, weakref.ref[c.Callable[..., t.Any]] | c.Callable[..., t.Any] + ] = {} + """The map of connected receivers. Useful to quickly check if any + receivers are connected to the signal: ``if s.receivers:``. The + structure and data is not part of the public API, but checking its + boolean value is. + """ + + self.is_muted: bool = False + self._by_receiver: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._by_sender: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._weak_senders: dict[t.Any, weakref.ref[t.Any]] = {} + + def connect(self, receiver: F, sender: t.Any = ANY, weak: bool = True) -> F: + """Connect ``receiver`` to be called when the signal is sent by + ``sender``. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends. + """ + receiver_id = make_id(receiver) + sender_id = ANY_ID if sender is ANY else make_id(sender) + + if weak: + self.receivers[receiver_id] = make_ref( + receiver, self._make_cleanup_receiver(receiver_id) + ) + else: + self.receivers[receiver_id] = receiver + + self._by_sender[sender_id].add(receiver_id) + self._by_receiver[receiver_id].add(sender_id) + + if sender is not ANY and sender_id not in self._weak_senders: + # store a cleanup for weakref-able senders + try: + self._weak_senders[sender_id] = make_ref( + sender, self._make_cleanup_sender(sender_id) + ) + except TypeError: + pass + + if "receiver_connected" in self.__dict__ and self.receiver_connected.receivers: + try: + self.receiver_connected.send( + self, receiver=receiver, sender=sender, weak=weak + ) + except TypeError: + # TODO no explanation or test for this + self.disconnect(receiver, sender) + raise + + if _receiver_connected.receivers and self is not _receiver_connected: + try: + _receiver_connected.send( + self, receiver_arg=receiver, sender_arg=sender, weak_arg=weak + ) + except TypeError: + self.disconnect(receiver, sender) + raise + + return receiver + + def connect_via(self, sender: t.Any, weak: bool = False) -> c.Callable[[F], F]: + """Connect the decorated function to be called when the signal is sent + by ``sender``. + + The decorated function will be called when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument along + with any extra keyword arguments. + + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends.= + + .. versionadded:: 1.1 + """ + + def decorator(fn: F) -> F: + self.connect(fn, sender, weak) + return fn + + return decorator + + @contextmanager + def connected_to( + self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY + ) -> c.Generator[None, None, None]: + """A context manager that temporarily connects ``receiver`` to the + signal while a ``with`` block executes. When the block exits, the + receiver is disconnected. Useful for tests. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. + + .. versionadded:: 1.1 + """ + self.connect(receiver, sender=sender, weak=False) + + try: + yield None + finally: + self.disconnect(receiver) + + @contextmanager + def muted(self) -> c.Generator[None, None, None]: + """A context manager that temporarily disables the signal. No receivers + will be called if the signal is sent, until the ``with`` block exits. + Useful for tests. + """ + self.is_muted = True + + try: + yield None + finally: + self.is_muted = False + + def temporarily_connected_to( + self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY + ) -> AbstractContextManager[None]: + """Deprecated alias for :meth:`connected_to`. + + .. deprecated:: 1.1 + Renamed to ``connected_to``. Will be removed in Blinker 1.9. + + .. versionadded:: 0.9 + """ + warnings.warn( + "'temporarily_connected_to' is renamed to 'connected_to'. The old name is" + " deprecated and will be removed in Blinker 1.9.", + DeprecationWarning, + stacklevel=2, + ) + return self.connected_to(receiver, sender) + + def send( + self, + sender: t.Any | None = None, + /, + *, + _async_wrapper: c.Callable[ + [c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]]], c.Callable[..., t.Any] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Call all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _async_wrapper: Will be called on any receivers that are async + coroutines to turn them into sync callables. For example, could run + the receiver with an event loop. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionchanged:: 1.7 + Added the ``_async_wrapper`` argument. + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if iscoroutinefunction(receiver): + if _async_wrapper is None: + raise RuntimeError("Cannot send to a coroutine function.") + + result = _async_wrapper(receiver)(sender, **kwargs) + else: + result = receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + async def send_async( + self, + sender: t.Any | None = None, + /, + *, + _sync_wrapper: c.Callable[ + [c.Callable[..., t.Any]], c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Await all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _sync_wrapper: Will be called on any receivers that are sync + callables to turn them into async coroutines. For example, + could call the receiver in a thread. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionadded:: 1.7 + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if not iscoroutinefunction(receiver): + if _sync_wrapper is None: + raise RuntimeError("Cannot send to a non-coroutine function.") + + result = await _sync_wrapper(receiver)(sender, **kwargs) + else: + result = await receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + def has_receivers_for(self, sender: t.Any) -> bool: + """Check if there is at least one receiver that will be called with the + given ``sender``. A receiver connected to :data:`ANY` will always be + called, regardless of sender. Does not check if weakly referenced + receivers are still live. See :meth:`receivers_for` for a stronger + search. + + :param sender: Check for receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + if not self.receivers: + return False + + if self._by_sender[ANY_ID]: + return True + + if sender is ANY: + return False + + return make_id(sender) in self._by_sender + + def receivers_for( + self, sender: t.Any + ) -> c.Generator[c.Callable[..., t.Any], None, None]: + """Yield each receiver to be called for ``sender``, in addition to those + to be called for :data:`ANY`. Weakly referenced receivers that are not + live will be disconnected and skipped. + + :param sender: Yield receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + # TODO: test receivers_for(ANY) + if not self.receivers: + return + + sender_id = make_id(sender) + + if sender_id in self._by_sender: + ids = self._by_sender[ANY_ID] | self._by_sender[sender_id] + else: + ids = self._by_sender[ANY_ID].copy() + + for receiver_id in ids: + receiver = self.receivers.get(receiver_id) + + if receiver is None: + continue + + if isinstance(receiver, weakref.ref): + strong = receiver() + + if strong is None: + self._disconnect(receiver_id, ANY_ID) + continue + + yield strong + else: + yield receiver + + def disconnect(self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY) -> None: + """Disconnect ``receiver`` from being called when the signal is sent by + ``sender``. + + :param receiver: A connected receiver callable. + :param sender: Disconnect from only this sender. By default, disconnect + from all senders. + """ + sender_id: c.Hashable + + if sender is ANY: + sender_id = ANY_ID + else: + sender_id = make_id(sender) + + receiver_id = make_id(receiver) + self._disconnect(receiver_id, sender_id) + + if ( + "receiver_disconnected" in self.__dict__ + and self.receiver_disconnected.receivers + ): + self.receiver_disconnected.send(self, receiver=receiver, sender=sender) + + def _disconnect(self, receiver_id: c.Hashable, sender_id: c.Hashable) -> None: + if sender_id == ANY_ID: + if self._by_receiver.pop(receiver_id, None) is not None: + for bucket in self._by_sender.values(): + bucket.discard(receiver_id) + + self.receivers.pop(receiver_id, None) + else: + self._by_sender[sender_id].discard(receiver_id) + self._by_receiver[receiver_id].discard(sender_id) + + def _make_cleanup_receiver( + self, receiver_id: c.Hashable + ) -> c.Callable[[weakref.ref[c.Callable[..., t.Any]]], None]: + """Create a callback function to disconnect a weakly referenced + receiver when it is garbage collected. + """ + + def cleanup(ref: weakref.ref[c.Callable[..., t.Any]]) -> None: + self._disconnect(receiver_id, ANY_ID) + + return cleanup + + def _make_cleanup_sender( + self, sender_id: c.Hashable + ) -> c.Callable[[weakref.ref[t.Any]], None]: + """Create a callback function to disconnect all receivers for a weakly + referenced sender when it is garbage collected. + """ + assert sender_id != ANY_ID + + def cleanup(ref: weakref.ref[t.Any]) -> None: + self._weak_senders.pop(sender_id, None) + + for receiver_id in self._by_sender.pop(sender_id, ()): + self._by_receiver[receiver_id].discard(sender_id) + + return cleanup + + def _cleanup_bookkeeping(self) -> None: + """Prune unused sender/receiver bookkeeping. Not threadsafe. + + Connecting & disconnecting leaves behind a small amount of bookkeeping + data. Typical workloads using Blinker, for example in most web apps, + Flask, CLI scripts, etc., are not adversely affected by this + bookkeeping. + + With a long-running process performing dynamic signal routing with high + volume, e.g. connecting to function closures, senders are all unique + object instances. Doing all of this over and over may cause memory usage + to grow due to extraneous bookkeeping. (An empty ``set`` for each stale + sender/receiver pair.) + + This method will prune that bookkeeping away, with the caveat that such + pruning is not threadsafe. The risk is that cleanup of a fully + disconnected receiver/sender pair occurs while another thread is + connecting that same pair. If you are in the highly dynamic, unique + receiver/sender situation that has lead you to this method, that failure + mode is perhaps not a big deal for you. + """ + for mapping in (self._by_sender, self._by_receiver): + for ident, bucket in list(mapping.items()): + if not bucket: + mapping.pop(ident, None) + + def _clear_state(self) -> None: + """Disconnect all receivers and senders. Useful for tests.""" + self._weak_senders.clear() + self.receivers.clear() + self._by_sender.clear() + self._by_receiver.clear() + + +_receiver_connected = Signal( + """\ +Sent by a :class:`Signal` after a receiver connects. + +:argument: the Signal that was connected to +:keyword receiver_arg: the connected receiver +:keyword sender_arg: the sender to connect to +:keyword weak_arg: true if the connection to receiver_arg is a weak reference + +.. deprecated:: 1.2 + Individual signals have their own :attr:`~Signal.receiver_connected` and + :attr:`~Signal.receiver_disconnected` signals with a slightly simplified + call signature. This global signal will be removed in Blinker 1.9. +""" +) + + +class NamedSignal(Signal): + """A named generic notification emitter. The name is not used by the signal + itself, but matches the key in the :class:`Namespace` that it belongs to. + + :param name: The name of the signal within the namespace. + :param doc: The docstring for the signal. + """ + + def __init__(self, name: str, doc: str | None = None) -> None: + super().__init__(doc) + + #: The name of this signal. + self.name: str = name + + def __repr__(self) -> str: + base = super().__repr__() + return f"{base[:-1]}; {self.name!r}>" # noqa: E702 + + +if t.TYPE_CHECKING: + + class PNamespaceSignal(t.Protocol): + def __call__(self, name: str, doc: str | None = None) -> NamedSignal: ... + + # Python < 3.9 + _NamespaceBase = dict[str, NamedSignal] # type: ignore[misc] +else: + _NamespaceBase = dict + + +class Namespace(_NamespaceBase): + """A dict mapping names to signals.""" + + def signal(self, name: str, doc: str | None = None) -> NamedSignal: + """Return the :class:`NamedSignal` for the given ``name``, creating it + if required. Repeated calls with the same name return the same signal. + + :param name: The name of the signal. + :param doc: The docstring of the signal. + """ + if name not in self: + self[name] = NamedSignal(name, doc) + + return self[name] + + +class _WeakNamespace(WeakValueDictionary): # type: ignore[type-arg] + """A weak mapping of names to signals. + + Automatically cleans up unused signals when the last reference goes out + of scope. This namespace implementation provides similar behavior to Blinker + <= 1.2. + + .. deprecated:: 1.3 + Will be removed in Blinker 1.9. + + .. versionadded:: 1.3 + """ + + def __init__(self) -> None: + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__() + + def signal(self, name: str, doc: str | None = None) -> NamedSignal: + """Return the :class:`NamedSignal` for the given ``name``, creating it + if required. Repeated calls with the same name return the same signal. + + :param name: The name of the signal. + :param doc: The docstring of the signal. + """ + if name not in self: + self[name] = NamedSignal(name, doc) + + return self[name] # type: ignore[no-any-return] + + +default_namespace: Namespace = Namespace() +"""A default :class:`Namespace` for creating named signals. :func:`signal` +creates a :class:`NamedSignal` in this namespace. +""" + +signal: PNamespaceSignal = default_namespace.signal +"""Return a :class:`NamedSignal` in :data:`default_namespace` with the given +``name``, creating it if required. Repeated calls with the same name return the +same signal. +""" + + +def __getattr__(name: str) -> t.Any: + if name == "receiver_connected": + warnings.warn( + "The global 'receiver_connected' signal is deprecated and will be" + " removed in Blinker 1.9. Use 'Signal.receiver_connected' and" + " 'Signal.receiver_disconnected' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _receiver_connected + + if name == "WeakNamespace": + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _WeakNamespace + + raise AttributeError(name) diff --git a/myenv/Lib/site-packages/blinker/py.typed b/myenv/Lib/site-packages/blinker/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/myenv/Lib/site-packages/bs4/__init__.py b/myenv/Lib/site-packages/bs4/__init__.py new file mode 100644 index 0000000..19b7c0e --- /dev/null +++ b/myenv/Lib/site-packages/bs4/__init__.py @@ -0,0 +1,1174 @@ +"""Beautiful Soup Elixir and Tonic - "The Screen-Scraper's Friend". + +http://www.crummy.com/software/BeautifulSoup/ + +Beautiful Soup uses a pluggable XML or HTML parser to parse a +(possibly invalid) document into a tree representation. Beautiful Soup +provides methods and Pythonic idioms that make it easy to navigate, +search, and modify the parse tree. + +Beautiful Soup works with Python 3.7 and up. It works better if lxml +and/or html5lib is installed, but they are not required. + +For more than you ever wanted to know about Beautiful Soup, see the +documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/ +""" + +__author__ = "Leonard Richardson (leonardr@segfault.org)" +__version__ = "4.14.3" +__copyright__ = "Copyright (c) 2004-2025 Leonard Richardson" +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = [ + "AttributeResemblesVariableWarning", + "BeautifulSoup", + "Comment", + "Declaration", + "ProcessingInstruction", + "ResultSet", + "CSS", + "Script", + "Stylesheet", + "Tag", + "TemplateString", + "ElementFilter", + "UnicodeDammit", + "CData", + "Doctype", + + # Exceptions + "FeatureNotFound", + "ParserRejectedMarkup", + "StopParsing", + + # Warnings + "AttributeResemblesVariableWarning", + "GuessedAtParserWarning", + "MarkupResemblesLocatorWarning", + "UnusualUsageWarning", + "XMLParsedAsHTMLWarning", +] + +from collections import Counter +import io +import sys +import warnings + +# The very first thing we do is give a useful error if someone is +# running this code under Python 2. +if sys.version_info.major < 3: + raise ImportError( + "You are trying to use a Python 3-specific version of Beautiful Soup under Python 2. This will not work. The final version of Beautiful Soup to support Python 2 was 4.9.3." + ) + +from .builder import ( + builder_registry, + TreeBuilder, +) +from .builder._htmlparser import HTMLParserTreeBuilder +from .dammit import UnicodeDammit +from .css import CSS +from ._deprecation import ( + _deprecated, +) +from .element import ( + CData, + Comment, + DEFAULT_OUTPUT_ENCODING, + Declaration, + Doctype, + NavigableString, + PageElement, + ProcessingInstruction, + PYTHON_SPECIFIC_ENCODINGS, + ResultSet, + Script, + Stylesheet, + Tag, + TemplateString, +) +from .formatter import Formatter +from .filter import ( + ElementFilter, + SoupStrainer, +) +from typing import ( + Any, + cast, + Counter as CounterType, + Dict, + Iterator, + List, + Sequence, + Sized, + Optional, + Type, + Union, +) + +from bs4._typing import ( + _Encoding, + _Encodings, + _IncomingMarkup, + _InsertableElement, + _RawAttributeValue, + _RawAttributeValues, + _RawMarkup, +) + +# Import all warnings and exceptions into the main package. +from bs4.exceptions import ( + FeatureNotFound, + ParserRejectedMarkup, + StopParsing, +) +from bs4._warnings import ( + AttributeResemblesVariableWarning, + GuessedAtParserWarning, + MarkupResemblesLocatorWarning, + UnusualUsageWarning, + XMLParsedAsHTMLWarning, +) + + +class BeautifulSoup(Tag): + """A data structure representing a parsed HTML or XML document. + + Most of the methods you'll call on a BeautifulSoup object are inherited from + PageElement or Tag. + + Internally, this class defines the basic interface called by the + tree builders when converting an HTML/XML document into a data + structure. The interface abstracts away the differences between + parsers. To write a new tree builder, you'll need to understand + these methods as a whole. + + These methods will be called by the BeautifulSoup constructor: + * reset() + * feed(markup) + + The tree builder may call these methods from its feed() implementation: + * handle_starttag(name, attrs) # See note about return value + * handle_endtag(name) + * handle_data(data) # Appends to the current data node + * endData(containerClass) # Ends the current data node + + No matter how complicated the underlying parser is, you should be + able to build a tree using 'start tag' events, 'end tag' events, + 'data' events, and "done with data" events. + + If you encounter an empty-element tag (aka a self-closing tag, + like HTML's
tag), call handle_starttag and then + handle_endtag. + """ + + #: Since `BeautifulSoup` subclasses `Tag`, it's possible to treat it as + #: a `Tag` with a `Tag.name`. Hoever, this name makes it clear the + #: `BeautifulSoup` object isn't a real markup tag. + ROOT_TAG_NAME: str = "[document]" + + #: If the end-user gives no indication which tree builder they + #: want, look for one with these features. + DEFAULT_BUILDER_FEATURES: Sequence[str] = ["html", "fast"] + + #: A string containing all ASCII whitespace characters, used in + #: during parsing to detect data chunks that seem 'empty'. + ASCII_SPACES: str = "\x20\x0a\x09\x0c\x0d" + + # FUTURE PYTHON: + element_classes: Dict[Type[PageElement], Type[PageElement]] #: :meta private: + builder: TreeBuilder #: :meta private: + is_xml: bool + known_xml: Optional[bool] + parse_only: Optional[SoupStrainer] #: :meta private: + + # These members are only used while parsing markup. + markup: Optional[_RawMarkup] #: :meta private: + current_data: List[str] #: :meta private: + currentTag: Optional[Tag] #: :meta private: + tagStack: List[Tag] #: :meta private: + open_tag_counter: CounterType[str] #: :meta private: + preserve_whitespace_tag_stack: List[Tag] #: :meta private: + string_container_stack: List[Tag] #: :meta private: + _most_recent_element: Optional[PageElement] #: :meta private: + + #: Beautiful Soup's best guess as to the character encoding of the + #: original document. + original_encoding: Optional[_Encoding] + + #: The character encoding, if any, that was explicitly defined + #: in the original document. This may or may not match + #: `BeautifulSoup.original_encoding`. + declared_html_encoding: Optional[_Encoding] + + #: This is True if the markup that was parsed contains + #: U+FFFD REPLACEMENT_CHARACTER characters which were not present + #: in the original markup. These mark character sequences that + #: could not be represented in Unicode. + contains_replacement_characters: bool + + def __init__( + self, + markup: _IncomingMarkup = "", + features: Optional[Union[str, Sequence[str]]] = None, + builder: Optional[Union[TreeBuilder, Type[TreeBuilder]]] = None, + parse_only: Optional[SoupStrainer] = None, + from_encoding: Optional[_Encoding] = None, + exclude_encodings: Optional[_Encodings] = None, + element_classes: Optional[Dict[Type[PageElement], Type[PageElement]]] = None, + **kwargs: Any, + ): + """Constructor. + + :param markup: A string or a file-like object representing + markup to be parsed. + + :param features: Desirable features of the parser to be + used. This may be the name of a specific parser ("lxml", + "lxml-xml", "html.parser", or "html5lib") or it may be the + type of markup to be used ("html", "html5", "xml"). It's + recommended that you name a specific parser, so that + Beautiful Soup gives you the same results across platforms + and virtual environments. + + :param builder: A TreeBuilder subclass to instantiate (or + instance to use) instead of looking one up based on + `features`. You only need to use this if you've implemented a + custom TreeBuilder. + + :param parse_only: A SoupStrainer. Only parts of the document + matching the SoupStrainer will be considered. This is useful + when parsing part of a document that would otherwise be too + large to fit into memory. + + :param from_encoding: A string indicating the encoding of the + document to be parsed. Pass this in if Beautiful Soup is + guessing wrongly about the document's encoding. + + :param exclude_encodings: A list of strings indicating + encodings known to be wrong. Pass this in if you don't know + the document's encoding but you know Beautiful Soup's guess is + wrong. + + :param element_classes: A dictionary mapping BeautifulSoup + classes like Tag and NavigableString, to other classes you'd + like to be instantiated instead as the parse tree is + built. This is useful for subclassing Tag or NavigableString + to modify default behavior. + + :param kwargs: For backwards compatibility purposes, the + constructor accepts certain keyword arguments used in + Beautiful Soup 3. None of these arguments do anything in + Beautiful Soup 4; they will result in a warning and then be + ignored. + + Apart from this, any keyword arguments passed into the + BeautifulSoup constructor are propagated to the TreeBuilder + constructor. This makes it possible to configure a + TreeBuilder by passing in arguments, not just by saying which + one to use. + """ + if "convertEntities" in kwargs: + del kwargs["convertEntities"] + warnings.warn( + "BS4 does not respect the convertEntities argument to the " + "BeautifulSoup constructor. Entities are always converted " + "to Unicode characters." + ) + + if "markupMassage" in kwargs: + del kwargs["markupMassage"] + warnings.warn( + "BS4 does not respect the markupMassage argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for any necessary markup massage." + ) + + if "smartQuotesTo" in kwargs: + del kwargs["smartQuotesTo"] + warnings.warn( + "BS4 does not respect the smartQuotesTo argument to the " + "BeautifulSoup constructor. Smart quotes are always converted " + "to Unicode characters." + ) + + if "selfClosingTags" in kwargs: + del kwargs["selfClosingTags"] + warnings.warn( + "Beautiful Soup 4 does not respect the selfClosingTags argument to the " + "BeautifulSoup constructor. The tree builder is responsible " + "for understanding self-closing tags." + ) + + if "isHTML" in kwargs: + del kwargs["isHTML"] + warnings.warn( + "Beautiful Soup 4 does not respect the isHTML argument to the " + "BeautifulSoup constructor. Suggest you use " + "features='lxml' for HTML and features='lxml-xml' for " + "XML." + ) + + def deprecated_argument(old_name: str, new_name: str) -> Optional[Any]: + if old_name in kwargs: + warnings.warn( + 'The "%s" argument to the BeautifulSoup constructor ' + 'was renamed to "%s" in Beautiful Soup 4.0.0' + % (old_name, new_name), + DeprecationWarning, + stacklevel=3, + ) + return kwargs.pop(old_name) + return None + + parse_only = parse_only or deprecated_argument("parseOnlyThese", "parse_only") + if parse_only is not None: + # Issue a warning if we can tell in advance that + # parse_only will exclude the entire tree. + if parse_only.excludes_everything: + warnings.warn( + f"The given value for parse_only will exclude everything: {parse_only}", + UserWarning, + stacklevel=3, + ) + + from_encoding = from_encoding or deprecated_argument( + "fromEncoding", "from_encoding" + ) + + if from_encoding and isinstance(markup, str): + warnings.warn( + "You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored." + ) + from_encoding = None + + self.element_classes = element_classes or dict() + + # We need this information to track whether or not the builder + # was specified well enough that we can omit the 'you need to + # specify a parser' warning. + original_builder = builder + original_features = features + + builder_class: Optional[Type[TreeBuilder]] = None + if isinstance(builder, type): + # A builder class was passed in; it needs to be instantiated. + builder_class = builder + builder = None + elif builder is None: + if isinstance(features, str): + features = [features] + if features is None or len(features) == 0: + features = self.DEFAULT_BUILDER_FEATURES + possible_builder_class = builder_registry.lookup(*features) + if possible_builder_class is None: + raise FeatureNotFound( + "Couldn't find a tree builder with the features you " + "requested: %s. Do you need to install a parser library?" + % ",".join(features) + ) + builder_class = possible_builder_class + + # At this point either we have a TreeBuilder instance in + # builder, or we have a builder_class that we can instantiate + # with the remaining **kwargs. + if builder is None: + assert builder_class is not None + builder = builder_class(**kwargs) + if ( + not original_builder + and not ( + original_features == builder.NAME + or ( + isinstance(original_features, str) + and original_features in builder.ALTERNATE_NAMES + ) + ) + and markup + ): + # The user did not tell us which TreeBuilder to use, + # and we had to guess. Issue a warning. + if builder.is_xml: + markup_type = "XML" + else: + markup_type = "HTML" + + # This code adapted from warnings.py so that we get the same line + # of code as our warnings.warn() call gets, even if the answer is wrong + # (as it may be in a multithreading situation). + caller = None + try: + caller = sys._getframe(1) + except ValueError: + pass + if caller: + globals = caller.f_globals + line_number = caller.f_lineno + else: + globals = sys.__dict__ + line_number = 1 + filename = globals.get("__file__") + if filename: + fnl = filename.lower() + if fnl.endswith((".pyc", ".pyo")): + filename = filename[:-1] + if filename: + # If there is no filename at all, the user is most likely in a REPL, + # and the warning is not necessary. + values = dict( + filename=filename, + line_number=line_number, + parser=builder.NAME, + markup_type=markup_type, + ) + warnings.warn( + GuessedAtParserWarning.MESSAGE % values, + GuessedAtParserWarning, + stacklevel=2, + ) + else: + if kwargs: + warnings.warn( + "Keyword arguments to the BeautifulSoup constructor will be ignored. These would normally be passed into the TreeBuilder constructor, but a TreeBuilder instance was passed in as `builder`." + ) + + self.builder = builder + self.is_xml = builder.is_xml + self.known_xml = self.is_xml + self._namespaces = dict() + self.parse_only = parse_only + + if hasattr(markup, "read"): # It's a file-type object. + markup = cast(io.IOBase, markup).read() + elif not isinstance(markup, (bytes, str)) and not hasattr(markup, "__len__"): + raise TypeError( + f"Incoming markup is of an invalid type: {markup!r}. Markup must be a string, a bytestring, or an open filehandle." + ) + elif isinstance(markup, Sized) and len(markup) <= 256 and ( + (isinstance(markup, bytes) and b"<" not in markup and b"\n" not in markup) + or (isinstance(markup, str) and "<" not in markup and "\n" not in markup) + ): + # Issue warnings for a couple beginner problems + # involving passing non-markup to Beautiful Soup. + # Beautiful Soup will still parse the input as markup, + # since that is sometimes the intended behavior. + if not self._markup_is_url(markup): + self._markup_resembles_filename(markup) + + # At this point we know markup is a string or bytestring. If + # it was a file-type object, we've read from it. + markup = cast(_RawMarkup, markup) + + rejections = [] + success = False + for ( + self.markup, + self.original_encoding, + self.declared_html_encoding, + self.contains_replacement_characters, + ) in self.builder.prepare_markup( + markup, from_encoding, exclude_encodings=exclude_encodings + ): + self.reset() + self.builder.initialize_soup(self) + try: + self._feed() + success = True + break + except ParserRejectedMarkup as e: + rejections.append(e) + pass + + if not success: + other_exceptions = [str(e) for e in rejections] + raise ParserRejectedMarkup( + "The markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.\n\nOriginal exception(s) from parser:\n " + + "\n ".join(other_exceptions) + ) + + # Clear out the markup and remove the builder's circular + # reference to this object. + self.markup = None + self.builder.soup = None + + def copy_self(self) -> "BeautifulSoup": + """Create a new BeautifulSoup object with the same TreeBuilder, + but not associated with any markup. + + This is the first step of the deepcopy process. + """ + clone = type(self)("", None, self.builder) + + # Keep track of the encoding of the original document, + # since we won't be parsing it again. + clone.original_encoding = self.original_encoding + return clone + + def __getstate__(self) -> Dict[str, Any]: + # Frequently a tree builder can't be pickled. + d = dict(self.__dict__) + if "builder" in d and d["builder"] is not None and not self.builder.picklable: + d["builder"] = type(self.builder) + # Store the contents as a Unicode string. + d["contents"] = [] + d["markup"] = self.decode() + + # If _most_recent_element is present, it's a Tag object left + # over from initial parse. It might not be picklable and we + # don't need it. + if "_most_recent_element" in d: + del d["_most_recent_element"] + return d + + def __setstate__(self, state: Dict[str, Any]) -> None: + # If necessary, restore the TreeBuilder by looking it up. + self.__dict__ = state + if isinstance(self.builder, type): + self.builder = self.builder() + elif not self.builder: + # We don't know which builder was used to build this + # parse tree, so use a default we know is always available. + self.builder = HTMLParserTreeBuilder() + self.builder.soup = self + self.reset() + self._feed() + + @classmethod + @_deprecated( + replaced_by="nothing (private method, will be removed)", version="4.13.0" + ) + def _decode_markup(cls, markup: _RawMarkup) -> str: + """Ensure `markup` is Unicode so it's safe to send into warnings.warn. + + warnings.warn had this problem back in 2010 but fortunately + not anymore. This has not been used for a long time; I just + noticed that fact while working on 4.13.0. + """ + if isinstance(markup, bytes): + decoded = markup.decode("utf-8", "replace") + else: + decoded = markup + return decoded + + @classmethod + def _markup_is_url(cls, markup: _RawMarkup) -> bool: + """Error-handling method to raise a warning if incoming markup looks + like a URL. + + :param markup: A string of markup. + :return: Whether or not the markup resembled a URL + closely enough to justify issuing a warning. + """ + problem: bool = False + if isinstance(markup, bytes): + problem = ( + any(markup.startswith(prefix) for prefix in (b"http:", b"https:")) + and b" " not in markup + ) + elif isinstance(markup, str): + problem = ( + any(markup.startswith(prefix) for prefix in ("http:", "https:")) + and " " not in markup + ) + else: + return False + + if not problem: + return False + warnings.warn( + MarkupResemblesLocatorWarning.URL_MESSAGE % dict(what="URL"), + MarkupResemblesLocatorWarning, + stacklevel=3, + ) + return True + + @classmethod + def _markup_resembles_filename(cls, markup: _RawMarkup) -> bool: + """Error-handling method to issue a warning if incoming markup + resembles a filename. + + :param markup: A string of markup. + :return: Whether or not the markup resembled a filename + closely enough to justify issuing a warning. + """ + markup_b: bytes + + # We're only checking ASCII characters, so rather than write + # the same tests twice, convert Unicode to a bytestring and + # operate on the bytestring. + if isinstance(markup, str): + markup_b = markup.encode("utf8") + else: + markup_b = markup + + # Step 1: does it end with a common textual file extension? + filelike = False + lower = markup_b.lower() + extensions = [b".html", b".htm", b".xml", b".xhtml", b".txt"] + if any(lower.endswith(ext) for ext in extensions): + filelike = True + if not filelike: + return False + + # Step 2: it _might_ be a file, but there are a few things + # we can look for that aren't very common in filenames. + + # Characters that have special meaning to Unix shells. (< was + # excluded before this method was called.) + # + # Many of these are also reserved characters that cannot + # appear in Windows filenames. + for byte in markup_b: + if byte in b"?*#&;>$|": + return False + + # Two consecutive forward slashes (as seen in a URL) or two + # consecutive spaces (as seen in fixed-width data). + # + # (Paths to Windows network shares contain consecutive + # backslashes, so checking that doesn't seem as helpful.) + if b"//" in markup_b: + return False + if b" " in markup_b: + return False + + # A colon in any position other than position 1 (e.g. after a + # Windows drive letter). + if markup_b.startswith(b":"): + return False + colon_i = markup_b.rfind(b":") + if colon_i not in (-1, 1): + return False + + # Step 3: If it survived all of those checks, it's similar + # enough to a file to justify issuing a warning. + warnings.warn( + MarkupResemblesLocatorWarning.FILENAME_MESSAGE % dict(what="filename"), + MarkupResemblesLocatorWarning, + stacklevel=3, + ) + return True + + def _feed(self) -> None: + """Internal method that parses previously set markup, creating a large + number of Tag and NavigableString objects. + """ + # Convert the document to Unicode. + self.builder.reset() + + if self.markup is not None: + self.builder.feed(self.markup) + # Close out any unfinished strings and close all the open tags. + self.endData() + while ( + self.currentTag is not None and self.currentTag.name != self.ROOT_TAG_NAME + ): + self.popTag() + + def reset(self) -> None: + """Reset this object to a state as though it had never parsed any + markup. + """ + Tag.__init__(self, self, self.builder, self.ROOT_TAG_NAME) + self.hidden = True + self.builder.reset() + self.current_data = [] + self.currentTag = None + self.tagStack = [] + self.open_tag_counter = Counter() + self.preserve_whitespace_tag_stack = [] + self.string_container_stack = [] + self._most_recent_element = None + self.pushTag(self) + + def new_tag( + self, + name: str, + namespace: Optional[str] = None, + nsprefix: Optional[str] = None, + attrs: Optional[_RawAttributeValues] = None, + sourceline: Optional[int] = None, + sourcepos: Optional[int] = None, + string: Optional[str] = None, + **kwattrs: _RawAttributeValue, + ) -> Tag: + """Create a new Tag associated with this BeautifulSoup object. + + :param name: The name of the new Tag. + :param namespace: The URI of the new Tag's XML namespace, if any. + :param prefix: The prefix for the new Tag's XML namespace, if any. + :param attrs: A dictionary of this Tag's attribute values; can + be used instead of ``kwattrs`` for attributes like 'class' + that are reserved words in Python. + :param sourceline: The line number where this tag was + (purportedly) found in its source document. + :param sourcepos: The character position within ``sourceline`` where this + tag was (purportedly) found. + :param string: String content for the new Tag, if any. + :param kwattrs: Keyword arguments for the new Tag's attribute values. + + """ + attr_container = self.builder.attribute_dict_class(**kwattrs) + if attrs is not None: + attr_container.update(attrs) + tag_class = self.element_classes.get(Tag, Tag) + + # Assume that this is either Tag or a subclass of Tag. If not, + # the user brought type-unsafety upon themselves. + tag_class = cast(Type[Tag], tag_class) + tag = tag_class( + None, + self.builder, + name, + namespace, + nsprefix, + attr_container, + sourceline=sourceline, + sourcepos=sourcepos, + ) + + if string is not None: + tag.string = string + return tag + + def string_container( + self, base_class: Optional[Type[NavigableString]] = None + ) -> Type[NavigableString]: + """Find the class that should be instantiated to hold a given kind of + string. + + This may be a built-in Beautiful Soup class or a custom class passed + in to the BeautifulSoup constructor. + """ + container = base_class or NavigableString + + # The user may want us to use some other class (hopefully a + # custom subclass) instead of the one we'd use normally. + container = cast( + Type[NavigableString], self.element_classes.get(container, container) + ) + + # On top of that, we may be inside a tag that needs a special + # container class. + if self.string_container_stack and container is NavigableString: + container = self.builder.string_containers.get( + self.string_container_stack[-1].name, container + ) + return container + + def new_string( + self, s: str, subclass: Optional[Type[NavigableString]] = None + ) -> NavigableString: + """Create a new `NavigableString` associated with this `BeautifulSoup` + object. + + :param s: The string content of the `NavigableString` + :param subclass: The subclass of `NavigableString`, if any, to + use. If a document is being processed, an appropriate + subclass for the current location in the document will + be determined automatically. + """ + container = self.string_container(subclass) + return container(s) + + def insert_before(self, *args: _InsertableElement) -> List[PageElement]: + """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement + it because there is nothing before or after it in the parse tree. + """ + raise NotImplementedError( + "BeautifulSoup objects don't support insert_before()." + ) + + def insert_after(self, *args: _InsertableElement) -> List[PageElement]: + """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement + it because there is nothing before or after it in the parse tree. + """ + raise NotImplementedError("BeautifulSoup objects don't support insert_after().") + + def popTag(self) -> Optional[Tag]: + """Internal method called by _popToTag when a tag is closed. + + :meta private: + """ + if not self.tagStack: + # Nothing to pop. This shouldn't happen. + return None + tag = self.tagStack.pop() + if tag.name in self.open_tag_counter: + self.open_tag_counter[tag.name] -= 1 + if ( + self.preserve_whitespace_tag_stack + and tag == self.preserve_whitespace_tag_stack[-1] + ): + self.preserve_whitespace_tag_stack.pop() + if self.string_container_stack and tag == self.string_container_stack[-1]: + self.string_container_stack.pop() + # print("Pop", tag.name) + if self.tagStack: + self.currentTag = self.tagStack[-1] + return self.currentTag + + def pushTag(self, tag: Tag) -> None: + """Internal method called by handle_starttag when a tag is opened. + + :meta private: + """ + # print("Push", tag.name) + if self.currentTag is not None: + self.currentTag.contents.append(tag) + self.tagStack.append(tag) + self.currentTag = self.tagStack[-1] + if tag.name != self.ROOT_TAG_NAME: + self.open_tag_counter[tag.name] += 1 + if tag.name in self.builder.preserve_whitespace_tags: + self.preserve_whitespace_tag_stack.append(tag) + if tag.name in self.builder.string_containers: + self.string_container_stack.append(tag) + + def endData(self, containerClass: Optional[Type[NavigableString]] = None) -> None: + """Method called by the TreeBuilder when the end of a data segment + occurs. + + :param containerClass: The class to use when incorporating the + data segment into the parse tree. + + :meta private: + """ + if self.current_data: + current_data = "".join(self.current_data) + # If whitespace is not preserved, and this string contains + # nothing but ASCII spaces, replace it with a single space + # or newline. + if not self.preserve_whitespace_tag_stack: + strippable = True + for i in current_data: + if i not in self.ASCII_SPACES: + strippable = False + break + if strippable: + if "\n" in current_data: + current_data = "\n" + else: + current_data = " " + + # Reset the data collector. + self.current_data = [] + + # Should we add this string to the tree at all? + if ( + self.parse_only + and len(self.tagStack) <= 1 + and (not self.parse_only.allow_string_creation(current_data)) + ): + return + + containerClass = self.string_container(containerClass) + o = containerClass(current_data) + self.object_was_parsed(o) + + def object_was_parsed( + self, + o: PageElement, + parent: Optional[Tag] = None, + most_recent_element: Optional[PageElement] = None, + ) -> None: + """Method called by the TreeBuilder to integrate an object into the + parse tree. + + :meta private: + """ + if parent is None: + parent = self.currentTag + assert parent is not None + previous_element: Optional[PageElement] + if most_recent_element is not None: + previous_element = most_recent_element + else: + previous_element = self._most_recent_element + + next_element = previous_sibling = next_sibling = None + if isinstance(o, Tag): + next_element = o.next_element + next_sibling = o.next_sibling + previous_sibling = o.previous_sibling + if previous_element is None: + previous_element = o.previous_element + + fix = parent.next_element is not None + + o.setup(parent, previous_element, next_element, previous_sibling, next_sibling) + + self._most_recent_element = o + parent.contents.append(o) + + # Check if we are inserting into an already parsed node. + if fix: + self._linkage_fixer(parent) + + def _linkage_fixer(self, el: Tag) -> None: + """Make sure linkage of this fragment is sound.""" + + first = el.contents[0] + child = el.contents[-1] + descendant: PageElement = child + + if child is first and el.parent is not None: + # Parent should be linked to first child + el.next_element = child + # We are no longer linked to whatever this element is + prev_el = child.previous_element + if prev_el is not None and prev_el is not el: + prev_el.next_element = None + # First child should be linked to the parent, and no previous siblings. + child.previous_element = el + child.previous_sibling = None + + # We have no sibling as we've been appended as the last. + child.next_sibling = None + + # This index is a tag, dig deeper for a "last descendant" + if isinstance(child, Tag) and child.contents: + # _last_decendant is typed as returning Optional[PageElement], + # but the value can't be None here, because el is a Tag + # which we know has contents. + descendant = cast(PageElement, child._last_descendant(False)) + + # As the final step, link last descendant. It should be linked + # to the parent's next sibling (if found), else walk up the chain + # and find a parent with a sibling. It should have no next sibling. + descendant.next_element = None + descendant.next_sibling = None + + target: Optional[Tag] = el + while True: + if target is None: + break + elif target.next_sibling is not None: + descendant.next_element = target.next_sibling + target.next_sibling.previous_element = child + break + target = target.parent + + def _popToTag( + self, name: str, nsprefix: Optional[str] = None, inclusivePop: bool = True + ) -> Optional[Tag]: + """Pops the tag stack up to and including the most recent + instance of the given tag. + + If there are no open tags with the given name, nothing will be + popped. + + :param name: Pop up to the most recent tag with this name. + :param nsprefix: The namespace prefix that goes with `name`. + :param inclusivePop: It this is false, pops the tag stack up + to but *not* including the most recent instqance of the + given tag. + + :meta private: + """ + # print("Popping to %s" % name) + if name == self.ROOT_TAG_NAME: + # The BeautifulSoup object itself can never be popped. + return None + + most_recently_popped = None + + stack_size = len(self.tagStack) + for i in range(stack_size - 1, 0, -1): + if not self.open_tag_counter.get(name): + break + t = self.tagStack[i] + if name == t.name and nsprefix == t.prefix: + if inclusivePop: + most_recently_popped = self.popTag() + break + most_recently_popped = self.popTag() + + return most_recently_popped + + def handle_starttag( + self, + name: str, + namespace: Optional[str], + nsprefix: Optional[str], + attrs: _RawAttributeValues, + sourceline: Optional[int] = None, + sourcepos: Optional[int] = None, + namespaces: Optional[Dict[str, str]] = None, + ) -> Optional[Tag]: + """Called by the tree builder when a new tag is encountered. + + :param name: Name of the tag. + :param nsprefix: Namespace prefix for the tag. + :param attrs: A dictionary of attribute values. Note that + attribute values are expected to be simple strings; processing + of multi-valued attributes such as "class" comes later. + :param sourceline: The line number where this tag was found in its + source document. + :param sourcepos: The character position within `sourceline` where this + tag was found. + :param namespaces: A dictionary of all namespace prefix mappings + currently in scope in the document. + + If this method returns None, the tag was rejected by an active + `ElementFilter`. You should proceed as if the tag had not occurred + in the document. For instance, if this was a self-closing tag, + don't call handle_endtag. + + :meta private: + """ + # print("Start tag %s: %s" % (name, attrs)) + self.endData() + + if ( + self.parse_only + and len(self.tagStack) <= 1 + and not self.parse_only.allow_tag_creation(nsprefix, name, attrs) + ): + return None + + tag_class = self.element_classes.get(Tag, Tag) + # Assume that this is either Tag or a subclass of Tag. If not, + # the user brought type-unsafety upon themselves. + tag_class = cast(Type[Tag], tag_class) + tag = tag_class( + self, + self.builder, + name, + namespace, + nsprefix, + attrs, + self.currentTag, + self._most_recent_element, + sourceline=sourceline, + sourcepos=sourcepos, + namespaces=namespaces, + ) + if tag is None: + return tag + if self._most_recent_element is not None: + self._most_recent_element.next_element = tag + self._most_recent_element = tag + self.pushTag(tag) + return tag + + def handle_endtag(self, name: str, nsprefix: Optional[str] = None) -> None: + """Called by the tree builder when an ending tag is encountered. + + :param name: Name of the tag. + :param nsprefix: Namespace prefix for the tag. + + :meta private: + """ + # print("End tag: " + name) + self.endData() + self._popToTag(name, nsprefix) + + def handle_data(self, data: str) -> None: + """Called by the tree builder when a chunk of textual data is + encountered. + + :meta private: + """ + self.current_data.append(data) + + def decode( + self, + indent_level: Optional[int] = None, + eventual_encoding: _Encoding = DEFAULT_OUTPUT_ENCODING, + formatter: Union[Formatter, str] = "minimal", + iterator: Optional[Iterator[PageElement]] = None, + **kwargs: Any, + ) -> str: + """Returns a string representation of the parse tree + as a full HTML or XML document. + + :param indent_level: Each line of the rendering will be + indented this many levels. (The ``formatter`` decides what a + 'level' means, in terms of spaces or other characters + output.) This is used internally in recursive calls while + pretty-printing. + :param eventual_encoding: The encoding of the final document. + If this is None, the document will be a Unicode string. + :param formatter: Either a `Formatter` object, or a string naming one of + the standard formatters. + :param iterator: The iterator to use when navigating over the + parse tree. This is only used by `Tag.decode_contents` and + you probably won't need to use it. + """ + if self.is_xml: + # Print the XML declaration + encoding_part = "" + declared_encoding: Optional[str] = eventual_encoding + if eventual_encoding in PYTHON_SPECIFIC_ENCODINGS: + # This is a special Python encoding; it can't actually + # go into an XML document because it means nothing + # outside of Python. + declared_encoding = None + if declared_encoding is not None: + encoding_part = ' encoding="%s"' % declared_encoding + prefix = '\n' % encoding_part + else: + prefix = "" + + # Prior to 4.13.0, the first argument to this method was a + # bool called pretty_print, which gave the method a different + # signature from its superclass implementation, Tag.decode. + # + # The signatures of the two methods now match, but just in + # case someone is still passing a boolean in as the first + # argument to this method (or a keyword argument with the old + # name), we can handle it and put out a DeprecationWarning. + warning: Optional[str] = None + pretty_print: Optional[bool] = None + if isinstance(indent_level, bool): + if indent_level is True: + indent_level = 0 + elif indent_level is False: + indent_level = None + warning = f"As of 4.13.0, the first argument to BeautifulSoup.decode has been changed from bool to int, to match Tag.decode. Pass in a value of {indent_level} instead." + else: + pretty_print = kwargs.pop("pretty_print", None) + assert not kwargs + if pretty_print is not None: + if pretty_print is True: + indent_level = 0 + elif pretty_print is False: + indent_level = None + warning = f"As of 4.13.0, the pretty_print argument to BeautifulSoup.decode has been removed, to match Tag.decode. Pass in a value of indent_level={indent_level} instead." + + if warning: + warnings.warn(warning, DeprecationWarning, stacklevel=2) + elif indent_level is False or pretty_print is False: + indent_level = None + return prefix + super(BeautifulSoup, self).decode( + indent_level, eventual_encoding, formatter, iterator + ) + + +# Aliases to make it easier to get started quickly, e.g. 'from bs4 import _soup' +_s = BeautifulSoup +_soup = BeautifulSoup + + +class BeautifulStoneSoup(BeautifulSoup): + """Deprecated interface to an XML parser.""" + + def __init__(self, *args: Any, **kwargs: Any): + kwargs["features"] = "xml" + warnings.warn( + "The BeautifulStoneSoup class was deprecated in version 4.0.0. Instead of using " + 'it, pass features="xml" into the BeautifulSoup constructor.', + DeprecationWarning, + stacklevel=2, + ) + super(BeautifulStoneSoup, self).__init__(*args, **kwargs) + + +# If this file is run as a script, act as an HTML pretty-printer. +if __name__ == "__main__": + import sys + + soup = BeautifulSoup(sys.stdin) + print((soup.prettify())) diff --git a/myenv/Lib/site-packages/bs4/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f36890a5abd52b914525e0147c44d802d97755a9 GIT binary patch literal 28683 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/_typing.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/_typing.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60967857ad0cbecb186adbd33a45b31642f3f5e5 GIT binary patch literal 3071 zcmaJ@TUXph5|%WY`wTEJTn1y1Z?VUQ0TOa^*lY+US)a8rYar*WJRG5s8c?iTx;3_k zbMln@jJ)nc9`>*759rr@%3sLCdaFuvGtRE&=%ebZs=icrl{l_eOA0*p=0Ch2uPe&G zQ5k=7pnL_d_?Mm9sRo*<1sOA=BB%L!kTtVG&dddQGanSpLQph|LCGuy zWwRVq%t}x-tHFdhp(?D(zlWHNKN(D!Q$fwF1=HqqFk{XHb+aDKnzP`eeyg~;oBdgF zvrPLb^OI`Mu?aTM7FdDJHx$5yhH|Di6tlrHY|+haE2;fV1MV7edEn;FC6Wsu7ugcn zu9IFQ+cL=|l2=GBgPdo}Y=y=#h^r8{!j_4{? zS{{&Pku38=c9qy`z@|B^P)_erKG(>$M7A|{pJr_lcfHR&Aa0$wW#U?p+ZLP$=6-|t z72?-{U+?pq#2dhGnjeyU1LQoM=_bW}MBGh`b8o>oTcqCxz09^i|CsbUsJn3X<|m|o zK>A(KKPCMhoJG_8jO6Ruv;8i6;)z7g z?ArkovF$K-XqA)u_ABok=Q)G`n52AQpR+xm1uRTt@i`M+KRINH%pBS04sLJ!85Z+4 zuuL&kS1~nLH8XCB=`0Js9LqPLG=I^l__AgJ4p4V5BE&QxQ8J654q^>L%t>^5# z>)U+qP0X1Pu#rK^F8{e>#QpRcQRjQ+B*yCt&$%!hJ2Y&^VR2$GFS%gcIOru8QFvDv zov!C6YhG9~;5p^2)z8^!e+02=MBIQFLwJD)^BSk8umbkxbm(EY?92<9Yjk?(NFyZ| z9(UJbnPyI5i(FbwUFJlZ&P*H$nPZ_#e>qFKJaqK29HOkky9=*C#Z?ZK zU)B9z6&OVq%s=CE!18&71%zt@`2A@2Vf$DxF4_mXYa3hboj87ECwBWu|Kv7UI@?l8NXcxPQ-MBR9+-4R=DE9v1KYsEcSIj`)ytdzXa2tX zep73;;2ISyD};M)S+ZnVLF9IQlq;6?L)Z5Emb_)TkppxFPDy6GFyUofNfu!l7g2!g z7Be_wzJlB^<)d}-Sum`@EAV&@rux92CV+W>boN-w6 z)DkYY`^Fd4GhRR@R*hlcs6(8r8t(_6$eH&^!6zXFu-$hjg1x*;2)T^G&p4E~1BE`; zj%a0qPvbb#upPMD3HGKzKWbQG-RY^FI2Ye^LkF88uVYNjf-dzAFPE(SZrWVa2KTPD zZv7EEX?<-AY>2iOQVX8DLJZckaD^Xk6jnb9A9&Mb{UJx5wK30hF>-c{8aj$*h7v90{+jL)^G)-D#8SSS%&7;V(I6M?kAr@8>TPK<_t=Bd8k4LxhhIu%}AB6GcA%81+vOK1IN8 z$3I7Si0}mhepLCN5WYnCGs0I0I|yGR;8%k`LfAw22H_8yl`L$ht?*0Sz4#75Q|j4` zs;(L(O`Wb8dOcUkOu<{p)HC%$C8xbDVE+rV@vM< literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/_warnings.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/_warnings.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e454caa70b81807c1e43f5a078c85effca36194b GIT binary patch literal 5374 zcmb_g-EJGl6{bi^q$#_0(>4W)wwMYLL;@7i0`83w2T~o?5n!o?B_*jqU^CnuQd92k zFf+TN>D%D+zw(+|~9r%E`JC=uo^Gl`f= zo9cArdLdR{`PI-mz~z39o2p!Hz_#iIY`d&Q)yultR9jK)eOQILH|Os@&6RU1I?SF+ z>y-V(&-?06=U1v+L}=%76^ZGUO2u!K%riaA<1>>_#Fca+Gh#%O;JwVmgr~v7mcTD} zO6>28i8TW`h-YG;LP^h3Q+AwU1~*Zm9%?M1Q;}ie(4;Q2d6*g7<9XyiH!79Wl|ky| zB-WwMFzaG`7d{fldkNNsb9kzOa+#3VQpYeriQRT0?KqzV*=(XZuC!ukEP890GINzO5A#75LNDqg~sx%YV+Gdzos1$#hG{Lj3(3wc&jQw}BZ{b~;MsVeoyjIJ3;#sfN zqNwr88O4Hq9eH~Sz`%I2DkePbw&}kh&69z$9Xubh$A+5yME|8Sfs?R(gji+5>d1G( zB*lDPco3ndpvfrGnKmi5BJC)reTcoGl38w*dwkQOdxRMpvI?e^sLvZGM`ve;PmfN& zY|NWMK&Ax2ycGnAiSn5Kz8eIe!*Ru%Mi4|M3<6sP?&me&XMR5jWD5UFGRp_0Q1jQi&*ne-=mvaf+eM16lcO0Lz+jr)U= z01gCr*dMru{b0ey$;<+%l{zj*x7J3z&QHEZQ|fj=-5%gp($td_#H`JKaFH_JE}R^x zf|c^`7=zkqjfg%&@~bAQPG)GF+2#CuG$9WBOh5sWF>t(?bI#d#8Nh~TXbvC zZ2?pN*ET)7i`#u%jsV`=;P%&GRl~aj>hu9_C9Kw|zpDSZa@pW)u!(H2#qB1y8)!EH z!aMVyov>KGP);RKPe=dH8y7K ze2^r8(Bw8$BKGT13X$UC#WPY*=&sDJNI@ilMDaWTT%_H&NEUwsOc$G-a#j4KJJR9X(26(oPpf zWol&X?D11|DV^1l$4WcwQuYC zV)I;^c)C;dLR9}>yly~kb{v@oa#@E8%X5{BCH6lttYihc!S)E99}61XhMz5~4Oc|1 z7KN0!3b!LwdDo)cqjhMFV(=Ol!|f{V&1$3iuj*HpdW5)Eel@fX zaJ}78;unV*Fo#-LE%L?3(rPNZKk=su`Rf8vg+RQvV#%qh&j`vmJs|z7h{ZvciwMRT z70HVv0_7wgpl-p~I0oRk4;M2Fg7Yjahu4L5J@Hhf%5n{afpW~mVa0{Em=vWEB!Uko zp>)cpDV}C0;DoFjdr4RQiZ1^B)#k#dUv3#fD6I8psk8I#9ObS-T*Xoido=~7lx%wgGaR1N_Lv+I7W8l6t$e$D)w)LBLoRACF1Z( zg=3D`%FY&^Ac|ubOR&6Uu0)0Th71W~GV%p)Xn_m{g&F(-uq%b&R(gCR!a1DZHbuU1 zl}?KfIj5Egx|ZCUWqoc*HEI&L*S{F0a8Haj`);TEXeRzkl`35{jz36 zAdx={O~18lxg7C@n1)j#A5MYILwwjs2nYU)E>kc9ut}Z!BuXU{;jB6c?SbXCnGsAR#v2dBM9L(%%V<*H8Us?&4!(<%~$V z_<%r9PCHFL8lps7ex~D33w#jd1U|oaHcK=4vLGgN-qPT88ZmFa@4uvcfTUb;bmFYn M9&F>^d++?{ziybE^8f$< literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/css.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/css.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..849cb9c1068468b5b6b4243bf35b0b428da72358 GIT binary patch literal 12248 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 LT@mX-mD2wJ(yAxk literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/dammit.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/dammit.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..993c635796b7d81c0272b56c6170d4c50cb1fd85 GIT binary patch literal 33688 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 RPmE1i6H^lxCQCW>e*pufkVOCh literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/element.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/element.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db217a685797493478924690d9a91c8805dc85b6 GIT binary patch literal 86635 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
sm-ZunZZ5eXtBHdRQ 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/__pycache__/formatter.cpython-38.pyc b/myenv/Lib/site-packages/bs4/__pycache__/formatter.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7eb4b8ea3cf54a407cf73cb6476b2b73332eaae9 GIT binary patch literal 8409 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/bs4/_deprecation.py b/myenv/Lib/site-packages/bs4/_deprecation.py new file mode 100644 index 0000000..a7b5685 --- /dev/null +++ b/myenv/Lib/site-packages/bs4/_deprecation.py @@ -0,0 +1,80 @@ +"""Helper functions for deprecation. + +This interface is itself unstable and may change without warning. Do +not use these functions yourself, even as a joke. The underscores are +there for a reason. No support will be given. + +In particular, most of this will go away without warning once +Beautiful Soup drops support for Python 3.11, since Python 3.12 +defines a `@typing.deprecated() +decorator. `_ +""" + +import functools +import warnings + +from typing import ( + Any, + Callable, +) + + +def _deprecated_alias(old_name: str, new_name: str, version: str): + """Alias one attribute name to another for backward compatibility + + :meta private: + """ + + @property # type:ignore + def alias(self) -> Any: + ":meta private:" + warnings.warn( + f"Access to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return getattr(self, new_name) + + @alias.setter + def alias(self, value: str) -> None: + ":meta private:" + warnings.warn( + f"Write to deprecated property {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return setattr(self, new_name, value) + + return alias + + +def _deprecated_function_alias( + old_name: str, new_name: str, version: str +) -> Callable[[Any], Any]: + def alias(self, *args: Any, **kwargs: Any) -> Any: + ":meta private:" + warnings.warn( + f"Call to deprecated method {old_name}. (Replaced by {new_name}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return getattr(self, new_name)(*args, **kwargs) + + return alias + + +def _deprecated(replaced_by: str, version: str) -> Callable: + def deprecate(func: Callable) -> Callable: + @functools.wraps(func) + def with_warning(*args: Any, **kwargs: Any) -> Any: + ":meta private:" + warnings.warn( + f"Call to deprecated method {func.__name__}. (Replaced by {replaced_by}) -- Deprecated since version {version}.", + DeprecationWarning, + stacklevel=2, + ) + return func(*args, **kwargs) + + return with_warning + + return deprecate diff --git a/myenv/Lib/site-packages/bs4/_typing.py b/myenv/Lib/site-packages/bs4/_typing.py new file mode 100644 index 0000000..0ab69df --- /dev/null +++ b/myenv/Lib/site-packages/bs4/_typing.py @@ -0,0 +1,205 @@ +# Custom type aliases used throughout Beautiful Soup to improve readability. + +# Notes on improvements to the type system in newer versions of Python +# that can be used once Beautiful Soup drops support for older +# versions: +# +# * ClassVar can be put on class variables now. +# * In 3.10, x|y is an accepted shorthand for Union[x,y]. +# * In 3.10, TypeAlias gains capabilities that can be used to +# improve the tree matching types (I don't remember what, exactly). +# * In 3.9 it's possible to specialize the re.Match type, +# e.g. re.Match[str]. In 3.8 there's a typing.re namespace for this, +# but it's removed in 3.12, so to support the widest possible set of +# versions I'm not using it. + +from typing_extensions import ( + runtime_checkable, + Protocol, + TypeAlias, +) +from typing import ( + Any, + Callable, + Dict, + IO, + Iterable, + Mapping, + Optional, + Pattern, + TYPE_CHECKING, + Union, +) + +if TYPE_CHECKING: + from bs4.element import ( + AttributeValueList, + NamespacedAttribute, + NavigableString, + PageElement, + ResultSet, + Tag, + ) + + +@runtime_checkable +class _RegularExpressionProtocol(Protocol): + """A protocol object which can accept either Python's built-in + `re.Pattern` objects, or the similar ``Regex`` objects defined by the + third-party ``regex`` package. + """ + + def search( + self, string: str, pos: int = ..., endpos: int = ... + ) -> Optional[Any]: ... + + @property + def pattern(self) -> str: ... + + +# Aliases for markup in various stages of processing. +# +#: The rawest form of markup: either a string, bytestring, or an open filehandle. +_IncomingMarkup: TypeAlias = Union[str, bytes, IO[str], IO[bytes]] + +#: Markup that is in memory but has (potentially) yet to be converted +#: to Unicode. +_RawMarkup: TypeAlias = Union[str, bytes] + +# Aliases for character encodings +# + +#: A data encoding. +_Encoding: TypeAlias = str + +#: One or more data encodings. +_Encodings: TypeAlias = Iterable[_Encoding] + +# Aliases for XML namespaces +# + +#: The prefix for an XML namespace. +_NamespacePrefix: TypeAlias = str + +#: The URL of an XML namespace +_NamespaceURL: TypeAlias = str + +#: A mapping of prefixes to namespace URLs. +_NamespaceMapping: TypeAlias = Dict[_NamespacePrefix, _NamespaceURL] + +#: A mapping of namespace URLs to prefixes +_InvertedNamespaceMapping: TypeAlias = Dict[_NamespaceURL, _NamespacePrefix] + +# Aliases for the attribute values associated with HTML/XML tags. +# + +#: The value associated with an HTML or XML attribute. This is the +#: relatively unprocessed value Beautiful Soup expects to come from a +#: `TreeBuilder`. +_RawAttributeValue: TypeAlias = str + +#: A dictionary of names to `_RawAttributeValue` objects. This is how +#: Beautiful Soup expects a `TreeBuilder` to represent a tag's +#: attribute values. +_RawAttributeValues: TypeAlias = ( + "Mapping[Union[str, NamespacedAttribute], _RawAttributeValue]" +) + +#: An attribute value in its final form, as stored in the +# `Tag` class, after it has been processed and (in some cases) +# split into a list of strings. +_AttributeValue: TypeAlias = Union[str, "AttributeValueList"] + +#: A dictionary of names to :py:data:`_AttributeValue` objects. This is what +#: a tag's attributes look like after processing. +_AttributeValues: TypeAlias = Dict[str, _AttributeValue] + +#: The methods that deal with turning :py:data:`_RawAttributeValue` into +#: :py:data:`_AttributeValue` may be called several times, even after the values +#: are already processed (e.g. when cloning a tag), so they need to +#: be able to acommodate both possibilities. +_RawOrProcessedAttributeValues: TypeAlias = Union[_RawAttributeValues, _AttributeValues] + +#: A number of tree manipulation methods can take either a `PageElement` or a +#: normal Python string (which will be converted to a `NavigableString`). +_InsertableElement: TypeAlias = Union["PageElement", str] + +# Aliases to represent the many possibilities for matching bits of a +# parse tree. +# +# This is very complicated because we're applying a formal type system +# to some very DWIM code. The types we end up with will be the types +# of the arguments to the SoupStrainer constructor and (more +# familiarly to Beautiful Soup users) the find* methods. + +#: A function that takes a PageElement and returns a yes-or-no answer. +_PageElementMatchFunction: TypeAlias = Callable[["PageElement"], bool] + +#: A function that takes the raw parsed ingredients of a markup tag +#: and returns a yes-or-no answer. +# Not necessary at the moment. +# _AllowTagCreationFunction:TypeAlias = Callable[[Optional[str], str, Optional[_RawAttributeValues]], bool] + +#: A function that takes the raw parsed ingredients of a markup string node +#: and returns a yes-or-no answer. +# Not necessary at the moment. +# _AllowStringCreationFunction:TypeAlias = Callable[[Optional[str]], bool] + +#: A function that takes a `Tag` and returns a yes-or-no answer. +#: A `TagNameMatchRule` expects this kind of function, if you're +#: going to pass it a function. +_TagMatchFunction: TypeAlias = Callable[["Tag"], bool] + +#: A function that takes a string (or None) and returns a yes-or-no +#: answer. An `AttributeValueMatchRule` expects this kind of function, if +#: you're going to pass it a function. +_NullableStringMatchFunction: TypeAlias = Callable[[Optional[str]], bool] + +#: A function that takes a string and returns a yes-or-no answer. A +# `StringMatchRule` expects this kind of function, if you're going to +# pass it a function. +_StringMatchFunction: TypeAlias = Callable[[str], bool] + +#: Either a tag name, an attribute value or a string can be matched +#: against a string, bytestring, regular expression, or a boolean. +_BaseStrainable: TypeAlias = Union[str, bytes, Pattern[str], bool] + +#: A tag can be matched either with the `_BaseStrainable` options, or +#: using a function that takes the `Tag` as its sole argument. +_BaseStrainableElement: TypeAlias = Union[_BaseStrainable, _TagMatchFunction] + +#: A tag's attribute value can be matched either with the +#: `_BaseStrainable` options, or using a function that takes that +#: value as its sole argument. +_BaseStrainableAttribute: TypeAlias = Union[_BaseStrainable, _NullableStringMatchFunction] + +#: A tag can be matched using either a single criterion or a list of +#: criteria. +_StrainableElement: TypeAlias = Union[ + _BaseStrainableElement, Iterable[_BaseStrainableElement] +] + +#: An attribute value can be matched using either a single criterion +#: or a list of criteria. +_StrainableAttribute: TypeAlias = Union[ + _BaseStrainableAttribute, Iterable[_BaseStrainableAttribute] +] + +#: An string can be matched using the same techniques as +#: an attribute value. +_StrainableString: TypeAlias = _StrainableAttribute + +#: A dictionary may be used to match against multiple attribute vlaues at once. +_StrainableAttributes: TypeAlias = Dict[str, _StrainableAttribute] + +#: Many Beautiful soup methods return a PageElement or an ResultSet of +#: PageElements. A PageElement is either a Tag or a NavigableString. +#: These convenience aliases make it easier for IDE users to see which methods +#: are available on the objects they're dealing with. +_OneElement: TypeAlias = Union["PageElement", "Tag", "NavigableString"] +_AtMostOneElement: TypeAlias = Optional[_OneElement] +_AtMostOneTag: TypeAlias = Optional["Tag"] +_AtMostOneNavigableString: TypeAlias = Optional["NavigableString"] +_QueryResults: TypeAlias = "ResultSet[_OneElement]" +_SomeTags: TypeAlias = "ResultSet[Tag]" +_SomeNavigableStrings: TypeAlias = "ResultSet[NavigableString]" diff --git a/myenv/Lib/site-packages/bs4/_warnings.py b/myenv/Lib/site-packages/bs4/_warnings.py new file mode 100644 index 0000000..4309473 --- /dev/null +++ b/myenv/Lib/site-packages/bs4/_warnings.py @@ -0,0 +1,98 @@ +"""Define some custom warnings.""" + + +class GuessedAtParserWarning(UserWarning): + """The warning issued when BeautifulSoup has to guess what parser to + use -- probably because no parser was specified in the constructor. + """ + + MESSAGE: str = """No parser was explicitly specified, so I'm using the best available %(markup_type)s parser for this system ("%(parser)s"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. + +The code that caused this warning is on line %(line_number)s of the file %(filename)s. To get rid of this warning, pass the additional argument 'features="%(parser)s"' to the BeautifulSoup constructor. +""" + + +class UnusualUsageWarning(UserWarning): + """A superclass for warnings issued when Beautiful Soup sees + something that is typically the result of a mistake in the calling + code, but might be intentional on the part of the user. If it is + in fact intentional, you can filter the individual warning class + to get rid of the warning. If you don't like Beautiful Soup + second-guessing what you are doing, you can filter the + UnusualUsageWarningclass itself and get rid of these entirely. + """ + + +class MarkupResemblesLocatorWarning(UnusualUsageWarning): + """The warning issued when BeautifulSoup is given 'markup' that + actually looks like a resource locator -- a URL or a path to a file + on disk. + """ + + #: :meta private: + GENERIC_MESSAGE: str = """ + +However, if you want to parse some data that happens to look like a %(what)s, then nothing has gone wrong: you are using Beautiful Soup correctly, and this warning is spurious and can be filtered. To make this warning go away, run this code before calling the BeautifulSoup constructor: + + from bs4 import MarkupResemblesLocatorWarning + import warnings + + warnings.filterwarnings("ignore", category=MarkupResemblesLocatorWarning) + """ + + URL_MESSAGE: str = ( + """The input passed in on this line looks more like a URL than HTML or XML. + +If you meant to use Beautiful Soup to parse the web page found at a certain URL, then something has gone wrong. You should use an Python package like 'requests' to fetch the content behind the URL. Once you have the content as a string, you can feed that string into Beautiful Soup.""" + + GENERIC_MESSAGE + ) + + FILENAME_MESSAGE: str = ( + """The input passed in on this line looks more like a filename than HTML or XML. + +If you meant to use Beautiful Soup to parse the contents of a file on disk, then something has gone wrong. You should open the file first, using code like this: + + filehandle = open(your filename) + +You can then feed the open filehandle into Beautiful Soup instead of using the filename.""" + + GENERIC_MESSAGE + ) + + +class AttributeResemblesVariableWarning(UnusualUsageWarning, SyntaxWarning): + """The warning issued when Beautiful Soup suspects a provided + attribute name may actually be the misspelled name of a Beautiful + Soup variable. Generally speaking, this is only used in cases like + "_class" where it's very unlikely the user would be referencing an + XML attribute with that name. + """ + + MESSAGE: str = """%(original)r is an unusual attribute name and is a common misspelling for %(autocorrect)r. + +If you meant %(autocorrect)r, change your code to use it, and this warning will go away. + +If you really did mean to check the %(original)r attribute, this warning is spurious and can be filtered. To make it go away, run this code before creating your BeautifulSoup object: + + from bs4 import AttributeResemblesVariableWarning + import warnings + + warnings.filterwarnings("ignore", category=AttributeResemblesVariableWarning) +""" + + +class XMLParsedAsHTMLWarning(UnusualUsageWarning): + """The warning issued when an HTML parser is used to parse + XML that is not (as far as we can tell) XHTML. + """ + + MESSAGE: str = """It looks like you're using an HTML parser to parse an XML document. + +Assuming this really is an XML document, what you're doing might work, but you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the Python package 'lxml' installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor. + +If you want or need to use an HTML parser on this document, you can make this warning go away by filtering it. To do that, run this code before calling the BeautifulSoup constructor: + + from bs4 import XMLParsedAsHTMLWarning + import warnings + + warnings.filterwarnings("ignore", category=XMLParsedAsHTMLWarning) +""" diff --git a/myenv/Lib/site-packages/bs4/builder/__init__.py b/myenv/Lib/site-packages/bs4/builder/__init__.py new file mode 100644 index 0000000..4aae4d3 --- /dev/null +++ b/myenv/Lib/site-packages/bs4/builder/__init__.py @@ -0,0 +1,848 @@ +from __future__ import annotations + +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +from collections import defaultdict +import re +from types import ModuleType +from typing import ( + Any, + cast, + Dict, + Iterable, + List, + Optional, + Pattern, + Set, + Tuple, + Type, + TYPE_CHECKING, +) +import warnings +import sys +from bs4.element import ( + AttributeDict, + AttributeValueList, + CharsetMetaAttributeValue, + ContentMetaAttributeValue, + RubyParenthesisString, + RubyTextString, + Stylesheet, + Script, + TemplateString, + nonwhitespace_re, +) + +# Exceptions were moved to their own module in 4.13. Import here for +# backwards compatibility. +from bs4.exceptions import ParserRejectedMarkup + +from bs4._typing import ( + _AttributeValues, + _RawAttributeValue, +) + +from bs4._warnings import XMLParsedAsHTMLWarning + +if TYPE_CHECKING: + from bs4 import BeautifulSoup + from bs4.element import ( + NavigableString, + Tag, + ) + from bs4._typing import ( + _AttributeValue, + _Encoding, + _Encodings, + _RawOrProcessedAttributeValues, + _RawMarkup, + ) + +__all__ = [ + "HTMLTreeBuilder", + "SAXTreeBuilder", + "TreeBuilder", + "TreeBuilderRegistry", +] + +# Some useful features for a TreeBuilder to have. +FAST = "fast" +PERMISSIVE = "permissive" +STRICT = "strict" +XML = "xml" +HTML = "html" +HTML_5 = "html5" + +__all__ = [ + "TreeBuilderRegistry", + "TreeBuilder", + "HTMLTreeBuilder", + "DetectsXMLParsedAsHTML", + + "ParserRejectedMarkup", # backwards compatibility only as of 4.13.0 +] + +class TreeBuilderRegistry(object): + """A way of looking up TreeBuilder subclasses by their name or by desired + features. + """ + + builders_for_feature: Dict[str, List[Type[TreeBuilder]]] + builders: List[Type[TreeBuilder]] + + def __init__(self) -> None: + self.builders_for_feature = defaultdict(list) + self.builders = [] + + def register(self, treebuilder_class: type[TreeBuilder]) -> None: + """Register a treebuilder based on its advertised features. + + :param treebuilder_class: A subclass of `TreeBuilder`. its + `TreeBuilder.features` attribute should list its features. + """ + for feature in treebuilder_class.features: + self.builders_for_feature[feature].insert(0, treebuilder_class) + self.builders.insert(0, treebuilder_class) + + def lookup(self, *features: str) -> Optional[Type[TreeBuilder]]: + """Look up a TreeBuilder subclass with the desired features. + + :param features: A list of features to look for. If none are + provided, the most recently registered TreeBuilder subclass + will be used. + :return: A TreeBuilder subclass, or None if there's no + registered subclass with all the requested features. + """ + if len(self.builders) == 0: + # There are no builders at all. + return None + + if len(features) == 0: + # They didn't ask for any features. Give them the most + # recently registered builder. + return self.builders[0] + + # Go down the list of features in order, and eliminate any builders + # that don't match every feature. + feature_list = list(features) + feature_list.reverse() + candidates = None + candidate_set = None + while len(feature_list) > 0: + feature = feature_list.pop() + we_have_the_feature = self.builders_for_feature.get(feature, []) + if len(we_have_the_feature) > 0: + if candidates is None: + candidates = we_have_the_feature + candidate_set = set(candidates) + elif candidate_set is not None: + # Eliminate any candidates that don't have this feature. + candidate_set = candidate_set.intersection(set(we_have_the_feature)) + + # The only valid candidates are the ones in candidate_set. + # Go through the original list of candidates and pick the first one + # that's in candidate_set. + if candidate_set is None or candidates is None: + return None + for candidate in candidates: + if candidate in candidate_set: + return candidate + return None + + +#: The `BeautifulSoup` constructor will take a list of features +#: and use it to look up `TreeBuilder` classes in this registry. +builder_registry: TreeBuilderRegistry = TreeBuilderRegistry() + + +class TreeBuilder(object): + """Turn a textual document into a Beautiful Soup object tree. + + This is an abstract superclass which smooths out the behavior of + different parser libraries into a single, unified interface. + + :param multi_valued_attributes: If this is set to None, the + TreeBuilder will not turn any values for attributes like + 'class' into lists. Setting this to a dictionary will + customize this behavior; look at :py:attr:`bs4.builder.HTMLTreeBuilder.DEFAULT_CDATA_LIST_ATTRIBUTES` + for an example. + + Internally, these are called "CDATA list attributes", but that + probably doesn't make sense to an end-user, so the argument name + is ``multi_valued_attributes``. + + :param preserve_whitespace_tags: A set of tags to treat + the way

 tags are treated in HTML. Tags in this set
+     are immune from pretty-printing; their contents will always be
+     output as-is.
+
+    :param string_containers: A dictionary mapping tag names to
+     the classes that should be instantiated to contain the textual
+     contents of those tags. The default is to use NavigableString
+     for every tag, no matter what the name. You can override the
+     default by changing :py:attr:`DEFAULT_STRING_CONTAINERS`.
+
+    :param store_line_numbers: If the parser keeps track of the line
+     numbers and positions of the original markup, that information
+     will, by default, be stored in each corresponding
+     :py:class:`bs4.element.Tag` object. You can turn this off by
+     passing store_line_numbers=False; then Tag.sourcepos and
+     Tag.sourceline will always be None. If the parser you're using
+     doesn't keep track of this information, then store_line_numbers
+     is irrelevant.
+
+    :param attribute_dict_class: The value of a multi-valued attribute
+      (such as HTML's 'class') willl be stored in an instance of this
+      class.  The default is Beautiful Soup's built-in
+      `AttributeValueList`, which is a normal Python list, and you
+      will probably never need to change it.
+    """
+
+    USE_DEFAULT: Any = object()  #: :meta private:
+
+    def __init__(
+        self,
+        multi_valued_attributes: Dict[str, Set[str]] = USE_DEFAULT,
+        preserve_whitespace_tags: Set[str] = USE_DEFAULT,
+        store_line_numbers: bool = USE_DEFAULT,
+        string_containers: Dict[str, Type[NavigableString]] = USE_DEFAULT,
+        empty_element_tags: Set[str] = USE_DEFAULT,
+        attribute_dict_class: Type[AttributeDict] = AttributeDict,
+        attribute_value_list_class: Type[AttributeValueList] = AttributeValueList,
+    ):
+        self.soup = None
+        if multi_valued_attributes is self.USE_DEFAULT:
+            multi_valued_attributes = self.DEFAULT_CDATA_LIST_ATTRIBUTES
+        self.cdata_list_attributes = multi_valued_attributes
+        if preserve_whitespace_tags is self.USE_DEFAULT:
+            preserve_whitespace_tags = self.DEFAULT_PRESERVE_WHITESPACE_TAGS
+        self.preserve_whitespace_tags = preserve_whitespace_tags
+        if empty_element_tags is self.USE_DEFAULT:
+            self.empty_element_tags = self.DEFAULT_EMPTY_ELEMENT_TAGS
+        else:
+            self.empty_element_tags = empty_element_tags
+        # TODO: store_line_numbers is probably irrelevant now that
+        # the behavior of sourceline and sourcepos has been made consistent
+        # everywhere.
+        if store_line_numbers == self.USE_DEFAULT:
+            store_line_numbers = self.TRACKS_LINE_NUMBERS
+        self.store_line_numbers = store_line_numbers
+        if string_containers == self.USE_DEFAULT:
+            string_containers = self.DEFAULT_STRING_CONTAINERS
+        self.string_containers = string_containers
+        self.attribute_dict_class = attribute_dict_class
+        self.attribute_value_list_class = attribute_value_list_class
+
+    NAME: str = "[Unknown tree builder]"
+    ALTERNATE_NAMES: Iterable[str] = []
+    features: Iterable[str] = []
+
+    is_xml: bool = False
+    picklable: bool = False
+
+    soup: Optional[BeautifulSoup]  #: :meta private:
+
+    #: A tag will be considered an empty-element
+    #: tag when and only when it has no contents.
+    empty_element_tags: Optional[Set[str]] = None  #: :meta private:
+    cdata_list_attributes: Dict[str, Set[str]]  #: :meta private:
+    preserve_whitespace_tags: Set[str]  #: :meta private:
+    string_containers: Dict[str, Type[NavigableString]]  #: :meta private:
+    tracks_line_numbers: bool  #: :meta private:
+
+    #: A value for these tag/attribute combinations is a space- or
+    #: comma-separated list of CDATA, rather than a single CDATA.
+    DEFAULT_CDATA_LIST_ATTRIBUTES: Dict[str, Set[str]] = defaultdict(set)
+
+    #: Whitespace should be preserved inside these tags.
+    DEFAULT_PRESERVE_WHITESPACE_TAGS: Set[str] = set()
+
+    #: The textual contents of tags with these names should be
+    #: instantiated with some class other than `bs4.element.NavigableString`.
+    DEFAULT_STRING_CONTAINERS: Dict[str, Type[bs4.element.NavigableString]] = {} # type:ignore
+
+    #: By default, tags are treated as empty-element tags if they have
+    #: no contents--that is, using XML rules. HTMLTreeBuilder
+    #: defines a different set of DEFAULT_EMPTY_ELEMENT_TAGS based on the
+    #: HTML 4 and HTML5 standards.
+    DEFAULT_EMPTY_ELEMENT_TAGS: Optional[Set[str]] = None
+
+    #: Most parsers don't keep track of line numbers.
+    TRACKS_LINE_NUMBERS: bool = False
+
+    def initialize_soup(self, soup: BeautifulSoup) -> None:
+        """The BeautifulSoup object has been initialized and is now
+        being associated with the TreeBuilder.
+
+        :param soup: A BeautifulSoup object.
+        """
+        self.soup = soup
+
+    def reset(self) -> None:
+        """Do any work necessary to reset the underlying parser
+        for a new document.
+
+        By default, this does nothing.
+        """
+        pass
+
+    def can_be_empty_element(self, tag_name: str) -> bool:
+        """Might a tag with this name be an empty-element tag?
+
+        The final markup may or may not actually present this tag as
+        self-closing.
+
+        For instance: an HTMLBuilder does not consider a 

tag to be + an empty-element tag (it's not in + HTMLBuilder.empty_element_tags). This means an empty

tag + will be presented as "

", not "

" or "

". + + The default implementation has no opinion about which tags are + empty-element tags, so a tag will be presented as an + empty-element tag if and only if it has no children. + "" will become "", and "bar" will + be left alone. + + :param tag_name: The name of a markup tag. + """ + if self.empty_element_tags is None: + return True + return tag_name in self.empty_element_tags + + def feed(self, markup: _RawMarkup) -> None: + """Run incoming markup through some parsing process.""" + raise NotImplementedError() + + def prepare_markup( + self, + markup: _RawMarkup, + user_specified_encoding: Optional[_Encoding] = None, + document_declared_encoding: Optional[_Encoding] = None, + exclude_encodings: Optional[_Encodings] = None, + ) -> Iterable[Tuple[_RawMarkup, Optional[_Encoding], Optional[_Encoding], bool]]: + """Run any preliminary steps necessary to make incoming markup + acceptable to the parser. + + :param markup: The markup that's about to be parsed. + :param user_specified_encoding: The user asked to try this encoding + to convert the markup into a Unicode string. + :param document_declared_encoding: The markup itself claims to be + in this encoding. NOTE: This argument is not used by the + calling code and can probably be removed. + :param exclude_encodings: The user asked *not* to try any of + these encodings. + + :yield: A series of 4-tuples: (markup, encoding, declared encoding, + has undergone character replacement) + + Each 4-tuple represents a strategy that the parser can try + to convert the document to Unicode and parse it. Each + strategy will be tried in turn. + + By default, the only strategy is to parse the markup + as-is. See `LXMLTreeBuilderForXML` and + `HTMLParserTreeBuilder` for implementations that take into + account the quirks of particular parsers. + + :meta private: + + """ + yield markup, None, None, False + + def test_fragment_to_document(self, fragment: str) -> str: + """Wrap an HTML fragment to make it look like a document. + + Different parsers do this differently. For instance, lxml + introduces an empty tag, and html5lib + doesn't. Abstracting this away lets us write simple tests + which run HTML fragments through the parser and compare the + results against other HTML fragments. + + This method should not be used outside of unit tests. + + :param fragment: A fragment of HTML. + :return: A full HTML document. + :meta private: + """ + return fragment + + def set_up_substitutions(self, tag: Tag) -> bool: + """Set up any substitutions that will need to be performed on + a `Tag` when it's output as a string. + + By default, this does nothing. See `HTMLTreeBuilder` for a + case where this is used. + + :return: Whether or not a substitution was performed. + :meta private: + """ + return False + + def _replace_cdata_list_attribute_values( + self, tag_name: str, attrs: _RawOrProcessedAttributeValues + ) -> _AttributeValues: + """When an attribute value is associated with a tag that can + have multiple values for that attribute, convert the string + value to a list of strings. + + Basically, replaces class="foo bar" with class=["foo", "bar"] + + NOTE: This method modifies its input in place. + + :param tag_name: The name of a tag. + :param attrs: A dictionary containing the tag's attributes. + Any appropriate attribute values will be modified in place. + :return: The modified dictionary that was originally passed in. + """ + + # First, cast the attrs dict to _AttributeValues. This might + # not be accurate yet, but it will be by the time this method + # returns. + modified_attrs = cast(_AttributeValues, attrs) + if not modified_attrs or not self.cdata_list_attributes: + # Nothing to do. + return modified_attrs + + # There is at least a possibility that we need to modify one of + # the attribute values. + universal: Set[str] = self.cdata_list_attributes.get("*", set()) + tag_specific = self.cdata_list_attributes.get(tag_name.lower(), None) + for attr in list(modified_attrs.keys()): + modified_value: _AttributeValue + if attr in universal or (tag_specific and attr in tag_specific): + # We have a "class"-type attribute whose string + # value is a whitespace-separated list of + # values. Split it into a list. + original_value: _AttributeValue = modified_attrs[attr] + if isinstance(original_value, _RawAttributeValue): + # This is a _RawAttributeValue (a string) that + # needs to be split and converted to a + # AttributeValueList so it can be an + # _AttributeValue. + modified_value = self.attribute_value_list_class( + nonwhitespace_re.findall(original_value) + ) + else: + # html5lib calls setAttributes twice for the + # same tag when rearranging the parse tree. On + # the second call the attribute value here is + # already a list. This can also happen when a + # Tag object is cloned. If this happens, leave + # the value alone rather than trying to split + # it again. + modified_value = original_value + modified_attrs[attr] = modified_value + return modified_attrs + + +class SAXTreeBuilder(TreeBuilder): + """A Beautiful Soup treebuilder that listens for SAX events. + + This is not currently used for anything, and it will be removed + soon. It was a good idea, but it wasn't properly integrated into the + rest of Beautiful Soup, so there have been long stretches where it + hasn't worked properly. + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + warnings.warn( + "The SAXTreeBuilder class was deprecated in 4.13.0 and will be removed soon thereafter. It is completely untested and probably doesn't work; do not use it.", + DeprecationWarning, + stacklevel=2, + ) + super(SAXTreeBuilder, self).__init__(*args, **kwargs) + + def feed(self, markup: _RawMarkup) -> None: + raise NotImplementedError() + + def close(self) -> None: + pass + + def startElement(self, name: str, attrs: Dict[str, str]) -> None: + attrs = AttributeDict((key[1], value) for key, value in list(attrs.items())) + # print("Start %s, %r" % (name, attrs)) + assert self.soup is not None + self.soup.handle_starttag(name, None, None, attrs) + + def endElement(self, name: str) -> None: + # print("End %s" % name) + assert self.soup is not None + self.soup.handle_endtag(name) + + def startElementNS( + self, nsTuple: Tuple[str, str], nodeName: str, attrs: Dict[str, str] + ) -> None: + # Throw away (ns, nodeName) for now. + self.startElement(nodeName, attrs) + + def endElementNS(self, nsTuple: Tuple[str, str], nodeName: str) -> None: + # Throw away (ns, nodeName) for now. + self.endElement(nodeName) + # handler.endElementNS((ns, node.nodeName), node.nodeName) + + def startPrefixMapping(self, prefix: str, nodeValue: str) -> None: + # Ignore the prefix for now. + pass + + def endPrefixMapping(self, prefix: str) -> None: + # Ignore the prefix for now. + # handler.endPrefixMapping(prefix) + pass + + def characters(self, content: str) -> None: + assert self.soup is not None + self.soup.handle_data(content) + + def startDocument(self) -> None: + pass + + def endDocument(self) -> None: + pass + + +class HTMLTreeBuilder(TreeBuilder): + """This TreeBuilder knows facts about HTML, such as which tags are treated + specially by the HTML standard. + """ + + #: Some HTML tags are defined as having no contents. Beautiful Soup + #: treats these specially. + DEFAULT_EMPTY_ELEMENT_TAGS: Optional[Set[str]] = set( + [ + # These are from HTML5. + "area", + "base", + "br", + "col", + "embed", + "hr", + "img", + "input", + "keygen", + "link", + "menuitem", + "meta", + "param", + "source", + "track", + "wbr", + # These are from earlier versions of HTML and are removed in HTML5. + "basefont", + "bgsound", + "command", + "frame", + "image", + "isindex", + "nextid", + "spacer", + ] + ) + + #: The HTML standard defines these tags as block-level elements. Beautiful + #: Soup does not treat these elements differently from other elements, + #: but it may do so eventually, and this information is available if + #: you need to use it. + DEFAULT_BLOCK_ELEMENTS: Set[str] = set( + [ + "address", + "article", + "aside", + "blockquote", + "canvas", + "dd", + "div", + "dl", + "dt", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hr", + "li", + "main", + "nav", + "noscript", + "ol", + "output", + "p", + "pre", + "section", + "table", + "tfoot", + "ul", + "video", + ] + ) + + #: These HTML tags need special treatment so they can be + #: represented by a string class other than `bs4.element.NavigableString`. + #: + #: For some of these tags, it's because the HTML standard defines + #: an unusual content model for them. I made this list by going + #: through the HTML spec + #: (https://html.spec.whatwg.org/#metadata-content) and looking for + #: "metadata content" elements that can contain strings. + #: + #: The Ruby tags ( and ) are here despite being normal + #: "phrasing content" tags, because the content they contain is + #: qualitatively different from other text in the document, and it + #: can be useful to be able to distinguish it. + #: + #: TODO: Arguably

+

WSGI Information

+

+ This page displays all available information about the WSGI server and + the underlying Python interpreter. +

Python Interpreter

+ + + + + + +
Python Version + %(python_version)s +
Platform + %(platform)s [%(os)s] +
API Version + %(api_version)s +
Byteorder + %(byteorder)s +
Werkzeug Version + %(werkzeug_version)s +
+

WSGI Environment

+ %(wsgi_env)s
+

Installed Eggs

+

+ The following python packages were installed on the system as + Python eggs: +

    %(python_eggs)s
+

System Path

+

+ The following paths are the current contents of the load path. The + following entries are looked up for Python packages. Note that not + all items in this path are folders. Gray and underlined items are + entries pointing to invalid resources or used by custom import hooks + such as the zip importer. +

+ Items with a bright background were expanded for display from a relative + path. If you encounter such paths in the output you might want to check + your setup as relative paths are usually problematic in multithreaded + environments. +

    %(sys_path)s
+
+""" + + +def iter_sys_path() -> t.Iterator[tuple[str, bool, bool]]: + if os.name == "posix": + + def strip(x: str) -> str: + prefix = os.path.expanduser("~") + if x.startswith(prefix): + x = f"~{x[len(prefix) :]}" + return x + + else: + + def strip(x: str) -> str: + return x + + cwd = os.path.abspath(os.getcwd()) + for item in sys.path: + path = os.path.join(cwd, item or os.path.curdir) + yield strip(os.path.normpath(path)), not os.path.isdir(path), path != item + + +@Request.application +def test_app(req: Request) -> Response: + """Simple test application that dumps the environment. You can use + it to check if Werkzeug is working properly: + + .. sourcecode:: pycon + + >>> from werkzeug.serving import run_simple + >>> from werkzeug.testapp import test_app + >>> run_simple('localhost', 3000, test_app) + * Running on http://localhost:3000/ + + The application displays important information from the WSGI environment, + the Python interpreter and the installed libraries. + """ + try: + import pkg_resources + except ImportError: + eggs: t.Iterable[t.Any] = () + else: + eggs = sorted( + pkg_resources.working_set, + key=lambda x: x.project_name.lower(), + ) + python_eggs = [] + for egg in eggs: + try: + version = egg.version + except (ValueError, AttributeError): + version = "unknown" + python_eggs.append( + f"
  • {escape(egg.project_name)} [{escape(version)}]" + ) + + wsgi_env = [] + sorted_environ = sorted(req.environ.items(), key=lambda x: repr(x[0]).lower()) + for key, value in sorted_environ: + value = "".join(wrap(str(escape(repr(value))))) + wsgi_env.append(f"{escape(key)}{value}") + + sys_path = [] + for item, virtual, expanded in iter_sys_path(): + css = [] + if virtual: + css.append("virtual") + if expanded: + css.append("exp") + class_str = f' class="{" ".join(css)}"' if css else "" + sys_path.append(f"{escape(item)}") + + context = { + "python_version": "
    ".join(escape(sys.version).splitlines()), + "platform": escape(sys.platform), + "os": escape(os.name), + "api_version": sys.api_version, + "byteorder": sys.byteorder, + "werkzeug_version": _get_werkzeug_version(), + "python_eggs": "\n".join(python_eggs), + "wsgi_env": "\n".join(wsgi_env), + "sys_path": "\n".join(sys_path), + } + return Response(TEMPLATE % context, mimetype="text/html") + + +_werkzeug_version = "" + + +def _get_werkzeug_version() -> str: + global _werkzeug_version + + if not _werkzeug_version: + _werkzeug_version = importlib.metadata.version("werkzeug") + + return _werkzeug_version + + +if __name__ == "__main__": + from .serving import run_simple + + run_simple("localhost", 5000, test_app, use_reloader=True) diff --git a/myenv/Lib/site-packages/werkzeug/urls.py b/myenv/Lib/site-packages/werkzeug/urls.py new file mode 100644 index 0000000..5bffe39 --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/urls.py @@ -0,0 +1,203 @@ +from __future__ import annotations + +import codecs +import re +import typing as t +import urllib.parse +from urllib.parse import quote +from urllib.parse import unquote +from urllib.parse import urlencode +from urllib.parse import urlsplit +from urllib.parse import urlunsplit + +from .datastructures import iter_multi_items + + +def _codec_error_url_quote(e: UnicodeError) -> tuple[str, int]: + """Used in :func:`uri_to_iri` after unquoting to re-quote any + invalid bytes. + """ + # the docs state that UnicodeError does have these attributes, + # but mypy isn't picking them up + out = quote(e.object[e.start : e.end], safe="") # type: ignore + return out, e.end # type: ignore + + +codecs.register_error("werkzeug.url_quote", _codec_error_url_quote) + + +def _make_unquote_part(name: str, chars: str) -> t.Callable[[str], str]: + """Create a function that unquotes all percent encoded characters except those + given. This allows working with unquoted characters if possible while not changing + the meaning of a given part of a URL. + """ + choices = "|".join(f"{ord(c):02X}" for c in sorted(chars)) + pattern = re.compile(f"((?:%(?:{choices}))+)", re.I) + + def _unquote_partial(value: str) -> str: + parts = iter(pattern.split(value)) + out = [] + + for part in parts: + out.append(unquote(part, "utf-8", "werkzeug.url_quote")) + out.append(next(parts, "")) + + return "".join(out) + + _unquote_partial.__name__ = f"_unquote_{name}" + return _unquote_partial + + +# characters that should remain quoted in URL parts +# based on https://url.spec.whatwg.org/#percent-encoded-bytes +# always keep all controls, space, and % quoted +_always_unsafe = bytes((*range(0x21), 0x25, 0x7F)).decode() +_unquote_fragment = _make_unquote_part("fragment", _always_unsafe) +_unquote_query = _make_unquote_part("query", _always_unsafe + "&=+#") +_unquote_path = _make_unquote_part("path", _always_unsafe + "/?#") +_unquote_user = _make_unquote_part("user", _always_unsafe + ":@/?#") + + +def uri_to_iri(uri: str) -> str: + """Convert a URI to an IRI. All valid UTF-8 characters are unquoted, + leaving all reserved and invalid characters quoted. If the URL has + a domain, it is decoded from Punycode. + + >>> uri_to_iri("http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF") + 'http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF' + + :param uri: The URI to convert. + + .. versionchanged:: 3.0 + Passing a tuple or bytes, and the ``charset`` and ``errors`` parameters, + are removed. + + .. versionchanged:: 2.3 + Which characters remain quoted is specific to each part of the URL. + + .. versionchanged:: 0.15 + All reserved and invalid characters remain quoted. Previously, + only some reserved characters were preserved, and invalid bytes + were replaced instead of left quoted. + + .. versionadded:: 0.6 + """ + parts = urlsplit(uri) + path = _unquote_path(parts.path) + query = _unquote_query(parts.query) + fragment = _unquote_fragment(parts.fragment) + + if parts.hostname: + netloc = _decode_idna(parts.hostname) + else: + netloc = "" + + if ":" in netloc: + netloc = f"[{netloc}]" + + if parts.port: + netloc = f"{netloc}:{parts.port}" + + if parts.username: + auth = _unquote_user(parts.username) + + if parts.password: + password = _unquote_user(parts.password) + auth = f"{auth}:{password}" + + netloc = f"{auth}@{netloc}" + + return urlunsplit((parts.scheme, netloc, path, query, fragment)) + + +def iri_to_uri(iri: str) -> str: + """Convert an IRI to a URI. All non-ASCII and unsafe characters are + quoted. If the URL has a domain, it is encoded to Punycode. + + >>> iri_to_uri('http://\\u2603.net/p\\xe5th?q=\\xe8ry%DF') + 'http://xn--n3h.net/p%C3%A5th?q=%C3%A8ry%DF' + + :param iri: The IRI to convert. + + .. versionchanged:: 3.0 + Passing a tuple or bytes, the ``charset`` and ``errors`` parameters, + and the ``safe_conversion`` parameter, are removed. + + .. versionchanged:: 2.3 + Which characters remain unquoted is specific to each part of the URL. + + .. versionchanged:: 0.15 + All reserved characters remain unquoted. Previously, only some reserved + characters were left unquoted. + + .. versionchanged:: 0.9.6 + The ``safe_conversion`` parameter was added. + + .. versionadded:: 0.6 + """ + parts = urlsplit(iri) + # safe = https://url.spec.whatwg.org/#url-path-segment-string + # as well as percent for things that are already quoted + path = quote(parts.path, safe="%!$&'()*+,/:;=@") + query = quote(parts.query, safe="%!$&'()*+,/:;=?@") + fragment = quote(parts.fragment, safe="%!#$&'()*+,/:;=?@") + + if parts.hostname: + netloc = parts.hostname.encode("idna").decode("ascii") + else: + netloc = "" + + if ":" in netloc: + netloc = f"[{netloc}]" + + if parts.port: + netloc = f"{netloc}:{parts.port}" + + if parts.username: + auth = quote(parts.username, safe="%!$&'()*+,;=") + + if parts.password: + password = quote(parts.password, safe="%!$&'()*+,;=") + auth = f"{auth}:{password}" + + netloc = f"{auth}@{netloc}" + + return urlunsplit((parts.scheme, netloc, path, query, fragment)) + + +# Python < 3.12 +# itms-services was worked around in previous iri_to_uri implementations, but +# we can tell Python directly that it needs to preserve the //. +if "itms-services" not in urllib.parse.uses_netloc: + urllib.parse.uses_netloc.append("itms-services") + + +def _decode_idna(domain: str) -> str: + try: + data = domain.encode("ascii") + except UnicodeEncodeError: + # If the domain is not ASCII, it's decoded already. + return domain + + try: + # Try decoding in one shot. + return data.decode("idna") + except UnicodeDecodeError: + pass + + # Decode each part separately, leaving invalid parts as punycode. + parts = [] + + for part in data.split(b"."): + try: + parts.append(part.decode("idna")) + except UnicodeDecodeError: + parts.append(part.decode("ascii")) + + return ".".join(parts) + + +def _urlencode(query: t.Mapping[str, str] | t.Iterable[tuple[str, str]]) -> str: + items = [x for x in iter_multi_items(query) if x[1] is not None] + # safe = https://url.spec.whatwg.org/#percent-encoded-bytes + return urlencode(items, safe="!$'()*,/:;?@") diff --git a/myenv/Lib/site-packages/werkzeug/user_agent.py b/myenv/Lib/site-packages/werkzeug/user_agent.py new file mode 100644 index 0000000..17e5d3f --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/user_agent.py @@ -0,0 +1,47 @@ +from __future__ import annotations + + +class UserAgent: + """Represents a parsed user agent header value. + + The default implementation does no parsing, only the :attr:`string` + attribute is set. A subclass may parse the string to set the + common attributes or expose other information. Set + :attr:`werkzeug.wrappers.Request.user_agent_class` to use a + subclass. + + :param string: The header value to parse. + + .. versionadded:: 2.0 + This replaces the previous ``useragents`` module, but does not + provide a built-in parser. + """ + + platform: str | None = None + """The OS name, if it could be parsed from the string.""" + + browser: str | None = None + """The browser name, if it could be parsed from the string.""" + + version: str | None = None + """The browser version, if it could be parsed from the string.""" + + language: str | None = None + """The browser language, if it could be parsed from the string.""" + + def __init__(self, string: str) -> None: + self.string: str = string + """The original header value.""" + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.browser}/{self.version}>" + + def __str__(self) -> str: + return self.string + + def __bool__(self) -> bool: + return bool(self.browser) + + def to_header(self) -> str: + """Convert to a header value.""" + return self.string diff --git a/myenv/Lib/site-packages/werkzeug/utils.py b/myenv/Lib/site-packages/werkzeug/utils.py new file mode 100644 index 0000000..59b97b7 --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/utils.py @@ -0,0 +1,691 @@ +from __future__ import annotations + +import io +import mimetypes +import os +import pkgutil +import re +import sys +import typing as t +import unicodedata +from datetime import datetime +from time import time +from urllib.parse import quote +from zlib import adler32 + +from markupsafe import escape + +from ._internal import _DictAccessorProperty +from ._internal import _missing +from ._internal import _TAccessorValue +from .datastructures import Headers +from .exceptions import NotFound +from .exceptions import RequestedRangeNotSatisfiable +from .security import safe_join +from .wsgi import wrap_file + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIEnvironment + + from .wrappers.request import Request + from .wrappers.response import Response + +_T = t.TypeVar("_T") + +_entity_re = re.compile(r"&([^;]+);") +_filename_ascii_strip_re = re.compile(r"[^A-Za-z0-9_.-]") +_windows_device_files = { + "CON", + "PRN", + "AUX", + "NUL", + *(f"COM{i}" for i in range(10)), + *(f"LPT{i}" for i in range(10)), +} + + +class cached_property(property, t.Generic[_T]): + """A :func:`property` that is only evaluated once. Subsequent access + returns the cached value. Setting the property sets the cached + value. Deleting the property clears the cached value, accessing it + again will evaluate it again. + + .. code-block:: python + + class Example: + @cached_property + def value(self): + # calculate something important here + return 42 + + e = Example() + e.value # evaluates + e.value # uses cache + e.value = 16 # sets cache + del e.value # clears cache + + If the class defines ``__slots__``, it must add ``_cache_{name}`` as + a slot. Alternatively, it can add ``__dict__``, but that's usually + not desirable. + + .. versionchanged:: 2.1 + Works with ``__slots__``. + + .. versionchanged:: 2.0 + ``del obj.name`` clears the cached value. + """ + + def __init__( + self, + fget: t.Callable[[t.Any], _T], + name: str | None = None, + doc: str | None = None, + ) -> None: + super().__init__(fget, doc=doc) + self.__name__ = name or fget.__name__ + self.slot_name = f"_cache_{self.__name__}" + self.__module__ = fget.__module__ + + def __set__(self, obj: object, value: _T) -> None: + if hasattr(obj, "__dict__"): + obj.__dict__[self.__name__] = value + else: + setattr(obj, self.slot_name, value) + + def __get__(self, obj: object, type: type = None) -> _T: # type: ignore + if obj is None: + return self # type: ignore + + obj_dict = getattr(obj, "__dict__", None) + + if obj_dict is not None: + value: _T = obj_dict.get(self.__name__, _missing) + else: + value = getattr(obj, self.slot_name, _missing) # type: ignore[arg-type] + + if value is _missing: + value = self.fget(obj) # type: ignore + + if obj_dict is not None: + obj.__dict__[self.__name__] = value + else: + setattr(obj, self.slot_name, value) + + return value + + def __delete__(self, obj: object) -> None: + if hasattr(obj, "__dict__"): + del obj.__dict__[self.__name__] + else: + setattr(obj, self.slot_name, _missing) + + +class environ_property(_DictAccessorProperty[_TAccessorValue]): + """Maps request attributes to environment variables. This works not only + for the Werkzeug request object, but also any other class with an + environ attribute: + + >>> class Test(object): + ... environ = {'key': 'value'} + ... test = environ_property('key') + >>> var = Test() + >>> var.test + 'value' + + If you pass it a second value it's used as default if the key does not + exist, the third one can be a converter that takes a value and converts + it. If it raises :exc:`ValueError` or :exc:`TypeError` the default value + is used. If no default value is provided `None` is used. + + Per default the property is read only. You have to explicitly enable it + by passing ``read_only=False`` to the constructor. + """ + + read_only = True + + def lookup(self, obj: Request) -> WSGIEnvironment: + return obj.environ + + +class header_property(_DictAccessorProperty[_TAccessorValue]): + """Like `environ_property` but for headers.""" + + def lookup(self, obj: Request | Response) -> Headers: + return obj.headers + + +# https://cgit.freedesktop.org/xdg/shared-mime-info/tree/freedesktop.org.xml.in +# https://www.iana.org/assignments/media-types/media-types.xhtml +# Types listed in the XDG mime info that have a charset in the IANA registration. +_charset_mimetypes = { + "application/ecmascript", + "application/javascript", + "application/sql", + "application/xml", + "application/xml-dtd", + "application/xml-external-parsed-entity", +} + + +def get_content_type(mimetype: str, charset: str) -> str: + """Returns the full content type string with charset for a mimetype. + + If the mimetype represents text, the charset parameter will be + appended, otherwise the mimetype is returned unchanged. + + :param mimetype: The mimetype to be used as content type. + :param charset: The charset to be appended for text mimetypes. + :return: The content type. + + .. versionchanged:: 0.15 + Any type that ends with ``+xml`` gets a charset, not just those + that start with ``application/``. Known text types such as + ``application/javascript`` are also given charsets. + """ + if ( + mimetype.startswith("text/") + or mimetype in _charset_mimetypes + or mimetype.endswith("+xml") + ): + mimetype += f"; charset={charset}" + + return mimetype + + +def secure_filename(filename: str) -> str: + r"""Pass it a filename and it will return a secure version of it. This + filename can then safely be stored on a regular file system and passed + to :func:`os.path.join`. The filename returned is an ASCII only string + for maximum portability. + + On windows systems the function also makes sure that the file is not + named after one of the special device files. + + >>> secure_filename("My cool movie.mov") + 'My_cool_movie.mov' + >>> secure_filename("../../../etc/passwd") + 'etc_passwd' + >>> secure_filename('i contain cool \xfcml\xe4uts.txt') + 'i_contain_cool_umlauts.txt' + + The function might return an empty filename. It's your responsibility + to ensure that the filename is unique and that you abort or + generate a random filename if the function returned an empty one. + + .. versionadded:: 0.5 + + :param filename: the filename to secure + """ + filename = unicodedata.normalize("NFKD", filename) + filename = filename.encode("ascii", "ignore").decode("ascii") + + for sep in os.sep, os.path.altsep: + if sep: + filename = filename.replace(sep, " ") + filename = str(_filename_ascii_strip_re.sub("", "_".join(filename.split()))).strip( + "._" + ) + + # on nt a couple of special files are present in each folder. We + # have to ensure that the target file is not such a filename. In + # this case we prepend an underline + if ( + os.name == "nt" + and filename + and filename.split(".")[0].upper() in _windows_device_files + ): + filename = f"_{filename}" + + return filename + + +def redirect( + location: str, code: int = 302, Response: type[Response] | None = None +) -> Response: + """Returns a response object (a WSGI application) that, if called, + redirects the client to the target location. Supported codes are + 301, 302, 303, 305, 307, and 308. 300 is not supported because + it's not a real redirect and 304 because it's the answer for a + request with a request with defined If-Modified-Since headers. + + .. versionadded:: 0.6 + The location can now be a unicode string that is encoded using + the :func:`iri_to_uri` function. + + .. versionadded:: 0.10 + The class used for the Response object can now be passed in. + + :param location: the location the response should redirect to. + :param code: the redirect status code. defaults to 302. + :param class Response: a Response class to use when instantiating a + response. The default is :class:`werkzeug.wrappers.Response` if + unspecified. + """ + if Response is None: + from .wrappers import Response + + html_location = escape(location) + response = Response( # type: ignore[misc] + "\n" + "\n" + "Redirecting...\n" + "

    Redirecting...

    \n" + "

    You should be redirected automatically to the target URL: " + f'{html_location}. If not, click the link.\n', + code, + mimetype="text/html", + ) + response.headers["Location"] = location + return response + + +def append_slash_redirect(environ: WSGIEnvironment, code: int = 308) -> Response: + """Redirect to the current URL with a slash appended. + + If the current URL is ``/user/42``, the redirect URL will be + ``42/``. When joined to the current URL during response + processing or by the browser, this will produce ``/user/42/``. + + The behavior is undefined if the path ends with a slash already. If + called unconditionally on a URL, it may produce a redirect loop. + + :param environ: Use the path and query from this WSGI environment + to produce the redirect URL. + :param code: the status code for the redirect. + + .. versionchanged:: 2.1 + Produce a relative URL that only modifies the last segment. + Relevant when the current path has multiple segments. + + .. versionchanged:: 2.1 + The default status code is 308 instead of 301. This preserves + the request method and body. + """ + tail = environ["PATH_INFO"].rpartition("/")[2] + + if not tail: + new_path = "./" + else: + new_path = f"{tail}/" + + query_string = environ.get("QUERY_STRING") + + if query_string: + new_path = f"{new_path}?{query_string}" + + return redirect(new_path, code) + + +def send_file( + path_or_file: os.PathLike[str] | str | t.IO[bytes], + environ: WSGIEnvironment, + mimetype: str | None = None, + as_attachment: bool = False, + download_name: str | None = None, + conditional: bool = True, + etag: bool | str = True, + last_modified: datetime | int | float | None = None, + max_age: None | (int | t.Callable[[str | None], int | None]) = None, + use_x_sendfile: bool = False, + response_class: type[Response] | None = None, + _root_path: os.PathLike[str] | str | None = None, +) -> Response: + """Send the contents of a file to the client. + + The first argument can be a file path or a file-like object. Paths + are preferred in most cases because Werkzeug can manage the file and + get extra information from the path. Passing a file-like object + requires that the file is opened in binary mode, and is mostly + useful when building a file in memory with :class:`io.BytesIO`. + + Never pass file paths provided by a user. The path is assumed to be + trusted, so a user could craft a path to access a file you didn't + intend. Use :func:`send_from_directory` to safely serve user-provided paths. + + If the WSGI server sets a ``file_wrapper`` in ``environ``, it is + used, otherwise Werkzeug's built-in wrapper is used. Alternatively, + if the HTTP server supports ``X-Sendfile``, ``use_x_sendfile=True`` + will tell the server to send the given path, which is much more + efficient than reading it in Python. + + :param path_or_file: The path to the file to send, relative to the + current working directory if a relative path is given. + Alternatively, a file-like object opened in binary mode. Make + sure the file pointer is seeked to the start of the data. + :param environ: The WSGI environ for the current request. + :param mimetype: The MIME type to send for the file. If not + provided, it will try to detect it from the file name. + :param as_attachment: Indicate to a browser that it should offer to + save the file instead of displaying it. + :param download_name: The default name browsers will use when saving + the file. Defaults to the passed file name. + :param conditional: Enable conditional and range responses based on + request headers. Requires passing a file path and ``environ``. + :param etag: Calculate an ETag for the file, which requires passing + a file path. Can also be a string to use instead. + :param last_modified: The last modified time to send for the file, + in seconds. If not provided, it will try to detect it from the + file path. + :param max_age: How long the client should cache the file, in + seconds. If set, ``Cache-Control`` will be ``public``, otherwise + it will be ``no-cache`` to prefer conditional caching. + :param use_x_sendfile: Set the ``X-Sendfile`` header to let the + server to efficiently send the file. Requires support from the + HTTP server. Requires passing a file path. + :param response_class: Build the response using this class. Defaults + to :class:`~werkzeug.wrappers.Response`. + :param _root_path: Do not use. For internal use only. Use + :func:`send_from_directory` to safely send files under a path. + + .. versionchanged:: 2.0.2 + ``send_file`` only sets a detected ``Content-Encoding`` if + ``as_attachment`` is disabled. + + .. versionadded:: 2.0 + Adapted from Flask's implementation. + + .. versionchanged:: 2.0 + ``download_name`` replaces Flask's ``attachment_filename`` + parameter. If ``as_attachment=False``, it is passed with + ``Content-Disposition: inline`` instead. + + .. versionchanged:: 2.0 + ``max_age`` replaces Flask's ``cache_timeout`` parameter. + ``conditional`` is enabled and ``max_age`` is not set by + default. + + .. versionchanged:: 2.0 + ``etag`` replaces Flask's ``add_etags`` parameter. It can be a + string to use instead of generating one. + + .. versionchanged:: 2.0 + If an encoding is returned when guessing ``mimetype`` from + ``download_name``, set the ``Content-Encoding`` header. + """ + if response_class is None: + from .wrappers import Response + + response_class = Response + + path: str | None = None + file: t.IO[bytes] | None = None + size: int | None = None + mtime: float | None = None + headers = Headers() + + if isinstance(path_or_file, (os.PathLike, str)) or hasattr( + path_or_file, "__fspath__" + ): + path_or_file = t.cast("t.Union[os.PathLike[str], str]", path_or_file) + + # Flask will pass app.root_path, allowing its send_file wrapper + # to not have to deal with paths. + if _root_path is not None: + path = os.path.join(_root_path, path_or_file) + else: + path = os.path.abspath(path_or_file) + + stat = os.stat(path) + size = stat.st_size + mtime = stat.st_mtime + else: + file = path_or_file + + if download_name is None and path is not None: + download_name = os.path.basename(path) + + if mimetype is None: + if download_name is None: + raise TypeError( + "Unable to detect the MIME type because a file name is" + " not available. Either set 'download_name', pass a" + " path instead of a file, or set 'mimetype'." + ) + + mimetype, encoding = mimetypes.guess_type(download_name) + + if mimetype is None: + mimetype = "application/octet-stream" + + # Don't send encoding for attachments, it causes browsers to + # save decompress tar.gz files. + if encoding is not None and not as_attachment: + headers.set("Content-Encoding", encoding) + + if download_name is not None: + try: + download_name.encode("ascii") + except UnicodeEncodeError: + simple = unicodedata.normalize("NFKD", download_name) + simple = simple.encode("ascii", "ignore").decode("ascii") + # safe = RFC 5987 attr-char + quoted = quote(download_name, safe="!#$&+-.^_`|~") + names = {"filename": simple, "filename*": f"UTF-8''{quoted}"} + else: + names = {"filename": download_name} + + value = "attachment" if as_attachment else "inline" + headers.set("Content-Disposition", value, **names) + elif as_attachment: + raise TypeError( + "No name provided for attachment. Either set" + " 'download_name' or pass a path instead of a file." + ) + + if use_x_sendfile and path is not None: + headers["X-Sendfile"] = path + data = None + else: + if file is None: + file = open(path, "rb") # type: ignore + elif isinstance(file, io.BytesIO): + size = file.getbuffer().nbytes + elif isinstance(file, io.TextIOBase): + raise ValueError("Files must be opened in binary mode or use BytesIO.") + + data = wrap_file(environ, file) + + rv = response_class( + data, mimetype=mimetype, headers=headers, direct_passthrough=True + ) + + if size is not None: + rv.content_length = size + + if last_modified is not None: + rv.last_modified = last_modified # type: ignore + elif mtime is not None: + rv.last_modified = mtime # type: ignore + + rv.cache_control.no_cache = True + + # Flask will pass app.get_send_file_max_age, allowing its send_file + # wrapper to not have to deal with paths. + if callable(max_age): + max_age = max_age(path) + + if max_age is not None: + if max_age > 0: + rv.cache_control.no_cache = None + rv.cache_control.public = True + + rv.cache_control.max_age = max_age + rv.expires = int(time() + max_age) # type: ignore + + if isinstance(etag, str): + rv.set_etag(etag) + elif etag and path is not None: + check = adler32(path.encode()) & 0xFFFFFFFF + rv.set_etag(f"{mtime}-{size}-{check}") + + if conditional: + try: + rv = rv.make_conditional(environ, accept_ranges=True, complete_length=size) + except RequestedRangeNotSatisfiable: + if file is not None: + file.close() + + raise + + # Some x-sendfile implementations incorrectly ignore the 304 + # status code and send the file anyway. + if rv.status_code == 304: + rv.headers.pop("x-sendfile", None) + + return rv + + +def send_from_directory( + directory: os.PathLike[str] | str, + path: os.PathLike[str] | str, + environ: WSGIEnvironment, + **kwargs: t.Any, +) -> Response: + """Send a file from within a directory using :func:`send_file`. + + This is a secure way to serve files from a folder, such as static + files or uploads. Uses :func:`~werkzeug.security.safe_join` to + ensure the path coming from the client is not maliciously crafted to + point outside the specified directory. + + If the final path does not point to an existing regular file, + returns a 404 :exc:`~werkzeug.exceptions.NotFound` error. + + :param directory: The directory that ``path`` must be located under. This *must not* + be a value provided by the client, otherwise it becomes insecure. + :param path: The path to the file to send, relative to ``directory``. This is the + part of the path provided by the client, which is checked for security. + :param environ: The WSGI environ for the current request. + :param kwargs: Arguments to pass to :func:`send_file`. + + .. versionadded:: 2.0 + Adapted from Flask's implementation. + """ + path_str = safe_join(os.fspath(directory), os.fspath(path)) + + if path_str is None: + raise NotFound() + + # Flask will pass app.root_path, allowing its send_from_directory + # wrapper to not have to deal with paths. + if "_root_path" in kwargs: + path_str = os.path.join(kwargs["_root_path"], path_str) + + if not os.path.isfile(path_str): + raise NotFound() + + return send_file(path_str, environ, **kwargs) + + +def import_string(import_name: str, silent: bool = False) -> t.Any: + """Imports an object based on a string. This is useful if you want to + use import paths as endpoints or something similar. An import path can + be specified either in dotted notation (``xml.sax.saxutils.escape``) + or with a colon as object delimiter (``xml.sax.saxutils:escape``). + + If `silent` is True the return value will be `None` if the import fails. + + :param import_name: the dotted name for the object to import. + :param silent: if set to `True` import errors are ignored and + `None` is returned instead. + :return: imported object + """ + import_name = import_name.replace(":", ".") + try: + try: + __import__(import_name) + except ImportError: + if "." not in import_name: + raise + else: + return sys.modules[import_name] + + module_name, obj_name = import_name.rsplit(".", 1) + module = __import__(module_name, globals(), locals(), [obj_name]) + try: + return getattr(module, obj_name) + except AttributeError as e: + raise ImportError(e) from None + + except ImportError as e: + if not silent: + raise ImportStringError(import_name, e).with_traceback( + sys.exc_info()[2] + ) from None + + return None + + +def find_modules( + import_path: str, include_packages: bool = False, recursive: bool = False +) -> t.Iterator[str]: + """Finds all the modules below a package. This can be useful to + automatically import all views / controllers so that their metaclasses / + function decorators have a chance to register themselves on the + application. + + Packages are not returned unless `include_packages` is `True`. This can + also recursively list modules but in that case it will import all the + packages to get the correct load path of that module. + + :param import_path: the dotted name for the package to find child modules. + :param include_packages: set to `True` if packages should be returned, too. + :param recursive: set to `True` if recursion should happen. + :return: generator + """ + module = import_string(import_path) + path = getattr(module, "__path__", None) + if path is None: + raise ValueError(f"{import_path!r} is not a package") + basename = f"{module.__name__}." + for _importer, modname, ispkg in pkgutil.iter_modules(path): + modname = basename + modname + if ispkg: + if include_packages: + yield modname + if recursive: + yield from find_modules(modname, include_packages, True) + else: + yield modname + + +class ImportStringError(ImportError): + """Provides information about a failed :func:`import_string` attempt.""" + + #: String in dotted notation that failed to be imported. + import_name: str + #: Wrapped exception. + exception: BaseException + + def __init__(self, import_name: str, exception: BaseException) -> None: + self.import_name = import_name + self.exception = exception + msg = import_name + name = "" + tracked = [] + for part in import_name.replace(":", ".").split("."): + name = f"{name}.{part}" if name else part + imported = import_string(name, silent=True) + if imported: + tracked.append((name, getattr(imported, "__file__", None))) + else: + track = [f"- {n!r} found in {i!r}." for n, i in tracked] + track.append(f"- {name!r} not found.") + track_str = "\n".join(track) + msg = ( + f"import_string() failed for {import_name!r}. Possible reasons" + f" are:\n\n" + "- missing __init__.py in a package;\n" + "- package or module path not included in sys.path;\n" + "- duplicated package or module name taking precedence in" + " sys.path;\n" + "- missing module, class, function or variable;\n\n" + f"Debugged import:\n\n{track_str}\n\n" + f"Original exception:\n\n{type(exception).__name__}: {exception}" + ) + break + + super().__init__(msg) + + def __repr__(self) -> str: + return f"<{type(self).__name__}({self.import_name!r}, {self.exception!r})>" diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/__init__.py b/myenv/Lib/site-packages/werkzeug/wrappers/__init__.py new file mode 100644 index 0000000..b36f228 --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/wrappers/__init__.py @@ -0,0 +1,3 @@ +from .request import Request as Request +from .response import Response as Response +from .response import ResponseStream as ResponseStream diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa2a1e2688e466293e81708602f3f06d187e8476 GIT binary patch literal 301 zcmYk1O-jT-5QV#w3<)yhIm{yB!i9*4GA;*^83!S>gvJ!oOm|XNcM#_Y-ou4g%GQ-v zaAmcBSWvIN2ahUhJ)7+auEo)ddFJ^R&HqZ+oN@a-mR7XV3MXqRBPTX-X`Oy?%AD01 zbG8!YsQ?{_-jiXm?po#+<&B6fcei{e&rHOBu_npgeMv zkK6gNT6-X`uIAOjp*lyr&_Sz3f2Xaw28Rj_R;KeoTU%{6gX=w7bpy27!f>x1|9~`N dT+}qCGofkr@o6khT;C2BPU9OsUZ2XT`~+OBP}l$f literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-38.pyc b/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/request.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d76c18c493d264de2e0a23ce89996df804ab53ab GIT binary patch literal 21434 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 literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/response.cpython-38.pyc b/myenv/Lib/site-packages/werkzeug/wrappers/__pycache__/response.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c1b09a8029f5b14f37f4228f51d80f988305c5d6 GIT binary patch literal 27958 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 RGV;uuDPSVLle7Qg{{`BCXTtyh literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/request.py b/myenv/Lib/site-packages/werkzeug/wrappers/request.py new file mode 100644 index 0000000..344f28b --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/wrappers/request.py @@ -0,0 +1,647 @@ +from __future__ import annotations + +import collections.abc as cabc +import functools +import json +import typing as t +from io import BytesIO + +from .._internal import _wsgi_decoding_dance +from ..datastructures import CombinedMultiDict +from ..datastructures import EnvironHeaders +from ..datastructures import FileStorage +from ..datastructures import ImmutableMultiDict +from ..datastructures import iter_multi_items +from ..datastructures import MultiDict +from ..exceptions import BadRequest +from ..exceptions import UnsupportedMediaType +from ..formparser import default_stream_factory +from ..formparser import FormDataParser +from ..sansio.request import Request as _SansIORequest +from ..utils import cached_property +from ..utils import environ_property +from ..wsgi import _get_server +from ..wsgi import get_input_stream + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +class Request(_SansIORequest): + """Represents an incoming WSGI HTTP request, with headers and body + taken from the WSGI environment. Has properties and methods for + using the functionality defined by various HTTP specs. The data in + requests object is read-only. + + Text data is assumed to use UTF-8 encoding, which should be true for + the vast majority of modern clients. Using an encoding set by the + client is unsafe in Python due to extra encodings it provides, such + as ``zip``. To change the assumed encoding, subclass and replace + :attr:`charset`. + + :param environ: The WSGI environ is generated by the WSGI server and + contains information about the server configuration and client + request. + :param populate_request: Add this request object to the WSGI environ + as ``environ['werkzeug.request']``. Can be useful when + debugging. + :param shallow: Makes reading from :attr:`stream` (and any method + that would read from it) raise a :exc:`RuntimeError`. Useful to + prevent consuming the form data in middleware, which would make + it unavailable to the final application. + + .. versionchanged:: 3.0 + The ``charset``, ``url_charset``, and ``encoding_errors`` parameters + were removed. + + .. versionchanged:: 2.1 + Old ``BaseRequest`` and mixin classes were removed. + + .. versionchanged:: 2.1 + Remove the ``disable_data_descriptor`` attribute. + + .. versionchanged:: 2.0 + Combine ``BaseRequest`` and mixins into a single ``Request`` + class. + + .. versionchanged:: 0.5 + Read-only mode is enforced with immutable classes for all data. + """ + + #: the maximum content length. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: parsing fails because more than the specified value is transmitted + #: a :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: .. versionadded:: 0.5 + max_content_length: int | None = None + + #: the maximum form field size. This is forwarded to the form data + #: parsing function (:func:`parse_form_data`). When set and the + #: :attr:`form` or :attr:`files` attribute is accessed and the + #: data in memory for post data is longer than the specified value a + #: :exc:`~werkzeug.exceptions.RequestEntityTooLarge` exception is raised. + #: + #: .. versionadded:: 0.5 + max_form_memory_size: int | None = None + + #: The maximum number of multipart parts to parse, passed to + #: :attr:`form_data_parser_class`. Parsing form data with more than this + #: many parts will raise :exc:`~.RequestEntityTooLarge`. + #: + #: .. versionadded:: 2.2.3 + max_form_parts = 1000 + + #: The form data parser that should be used. Can be replaced to customize + #: the form date parsing. + form_data_parser_class: type[FormDataParser] = FormDataParser + + #: The WSGI environment containing HTTP headers and information from + #: the WSGI server. + environ: WSGIEnvironment + + #: Set when creating the request object. If ``True``, reading from + #: the request body will cause a ``RuntimeException``. Useful to + #: prevent modifying the stream from middleware. + shallow: bool + + def __init__( + self, + environ: WSGIEnvironment, + populate_request: bool = True, + shallow: bool = False, + ) -> None: + super().__init__( + method=environ.get("REQUEST_METHOD", "GET"), + scheme=environ.get("wsgi.url_scheme", "http"), + server=_get_server(environ), + root_path=_wsgi_decoding_dance(environ.get("SCRIPT_NAME") or ""), + path=_wsgi_decoding_dance(environ.get("PATH_INFO") or ""), + query_string=environ.get("QUERY_STRING", "").encode("latin1"), + headers=EnvironHeaders(environ), + remote_addr=environ.get("REMOTE_ADDR"), + ) + self.environ = environ + self.shallow = shallow + + if populate_request and not shallow: + self.environ["werkzeug.request"] = self + + @classmethod + def from_values(cls, *args: t.Any, **kwargs: t.Any) -> Request: + """Create a new request object based on the values provided. If + environ is given missing values are filled from there. This method is + useful for small scripts when you need to simulate a request from an URL. + Do not use this method for unittesting, there is a full featured client + object (:class:`Client`) that allows to create multipart requests, + support for cookies etc. + + This accepts the same options as the + :class:`~werkzeug.test.EnvironBuilder`. + + .. versionchanged:: 0.5 + This method now accepts the same arguments as + :class:`~werkzeug.test.EnvironBuilder`. Because of this the + `environ` parameter is now called `environ_overrides`. + + :return: request object + """ + from ..test import EnvironBuilder + + builder = EnvironBuilder(*args, **kwargs) + try: + return builder.get_request(cls) + finally: + builder.close() + + @classmethod + def application(cls, f: t.Callable[[Request], WSGIApplication]) -> WSGIApplication: + """Decorate a function as responder that accepts the request as + the last argument. This works like the :func:`responder` + decorator but the function is passed the request object as the + last argument and the request object will be closed + automatically:: + + @Request.application + def my_wsgi_app(request): + return Response('Hello World!') + + As of Werkzeug 0.14 HTTP exceptions are automatically caught and + converted to responses instead of failing. + + :param f: the WSGI callable to decorate + :return: a new WSGI callable + """ + #: return a callable that wraps the -2nd argument with the request + #: and calls the function with all the arguments up to that one and + #: the request. The return value is then called with the latest + #: two arguments. This makes it possible to use this decorator for + #: both standalone WSGI functions as well as bound methods and + #: partially applied functions. + from ..exceptions import HTTPException + + @functools.wraps(f) + def application(*args: t.Any) -> cabc.Iterable[bytes]: + request = cls(args[-2]) + with request: + try: + resp = f(*args[:-2] + (request,)) + except HTTPException as e: + resp = t.cast("WSGIApplication", e.get_response(args[-2])) + return resp(*args[-2:]) + + return t.cast("WSGIApplication", application) + + def _get_file_stream( + self, + total_content_length: int | None, + content_type: str | None, + filename: str | None = None, + content_length: int | None = None, + ) -> t.IO[bytes]: + """Called to get a stream for the file upload. + + This must provide a file-like class with `read()`, `readline()` + and `seek()` methods that is both writeable and readable. + + The default implementation returns a temporary file if the total + content length is higher than 500KB. Because many browsers do not + provide a content length for the files only the total content + length matters. + + :param total_content_length: the total content length of all the + data in the request combined. This value + is guaranteed to be there. + :param content_type: the mimetype of the uploaded file. + :param filename: the filename of the uploaded file. May be `None`. + :param content_length: the length of this file. This value is usually + not provided because webbrowsers do not provide + this value. + """ + return default_stream_factory( + total_content_length=total_content_length, + filename=filename, + content_type=content_type, + content_length=content_length, + ) + + @property + def want_form_data_parsed(self) -> bool: + """``True`` if the request method carries content. By default + this is true if a ``Content-Type`` is sent. + + .. versionadded:: 0.8 + """ + return bool(self.environ.get("CONTENT_TYPE")) + + def make_form_data_parser(self) -> FormDataParser: + """Creates the form data parser. Instantiates the + :attr:`form_data_parser_class` with some parameters. + + .. versionadded:: 0.8 + """ + return self.form_data_parser_class( + stream_factory=self._get_file_stream, + max_form_memory_size=self.max_form_memory_size, + max_content_length=self.max_content_length, + max_form_parts=self.max_form_parts, + cls=self.parameter_storage_class, + ) + + def _load_form_data(self) -> None: + """Method used internally to retrieve submitted data. After calling + this sets `form` and `files` on the request object to multi dicts + filled with the incoming form data. As a matter of fact the input + stream will be empty afterwards. You can also call this method to + force the parsing of the form data. + + .. versionadded:: 0.8 + """ + # abort early if we have already consumed the stream + if "form" in self.__dict__: + return + + if self.want_form_data_parsed: + parser = self.make_form_data_parser() + data = parser.parse( + self._get_stream_for_parsing(), + self.mimetype, + self.content_length, + self.mimetype_params, + ) + else: + data = ( + self.stream, + self.parameter_storage_class(), + self.parameter_storage_class(), + ) + + # inject the values into the instance dict so that we bypass + # our cached_property non-data descriptor. + d = self.__dict__ + d["stream"], d["form"], d["files"] = data + + def _get_stream_for_parsing(self) -> t.IO[bytes]: + """This is the same as accessing :attr:`stream` with the difference + that if it finds cached data from calling :meth:`get_data` first it + will create a new stream out of the cached data. + + .. versionadded:: 0.9.3 + """ + cached_data = getattr(self, "_cached_data", None) + if cached_data is not None: + return BytesIO(cached_data) + return self.stream + + def close(self) -> None: + """Closes associated resources of this request object. This + closes all file handles explicitly. You can also use the request + object in a with statement which will automatically close it. + + .. versionadded:: 0.9 + """ + files = self.__dict__.get("files") + for _key, value in iter_multi_items(files or ()): + value.close() + + def __enter__(self) -> Request: + return self + + def __exit__(self, exc_type, exc_value, tb) -> None: # type: ignore + self.close() + + @cached_property + def stream(self) -> t.IO[bytes]: + """The WSGI input stream, with safety checks. This stream can only be consumed + once. + + Use :meth:`get_data` to get the full data as bytes or text. The :attr:`data` + attribute will contain the full bytes only if they do not represent form data. + The :attr:`form` attribute will contain the parsed form data in that case. + + Unlike :attr:`input_stream`, this stream guards against infinite streams or + reading past :attr:`content_length` or :attr:`max_content_length`. + + If ``max_content_length`` is set, it can be enforced on streams if + ``wsgi.input_terminated`` is set. Otherwise, an empty stream is returned. + + If the limit is reached before the underlying stream is exhausted (such as a + file that is too large, or an infinite stream), the remaining contents of the + stream cannot be read safely. Depending on how the server handles this, clients + may show a "connection reset" failure instead of seeing the 413 response. + + .. versionchanged:: 2.3 + Check ``max_content_length`` preemptively and while reading. + + .. versionchanged:: 0.9 + The stream is always set (but may be consumed) even if form parsing was + accessed first. + """ + if self.shallow: + raise RuntimeError( + "This request was created with 'shallow=True', reading" + " from the input stream is disabled." + ) + + return get_input_stream( + self.environ, max_content_length=self.max_content_length + ) + + input_stream = environ_property[t.IO[bytes]]( + "wsgi.input", + doc="""The raw WSGI input stream, without any safety checks. + + This is dangerous to use. It does not guard against infinite streams or reading + past :attr:`content_length` or :attr:`max_content_length`. + + Use :attr:`stream` instead. + """, + ) + + @cached_property + def data(self) -> bytes: + """The raw data read from :attr:`stream`. Will be empty if the request + represents form data. + + To get the raw data even if it represents form data, use :meth:`get_data`. + """ + return self.get_data(parse_form_data=True) + + @t.overload + def get_data( + self, + cache: bool = True, + as_text: t.Literal[False] = False, + parse_form_data: bool = False, + ) -> bytes: ... + + @t.overload + def get_data( + self, + cache: bool = True, + as_text: t.Literal[True] = ..., + parse_form_data: bool = False, + ) -> str: ... + + def get_data( + self, cache: bool = True, as_text: bool = False, parse_form_data: bool = False + ) -> bytes | str: + """This reads the buffered incoming data from the client into one + bytes object. By default this is cached but that behavior can be + changed by setting `cache` to `False`. + + Usually it's a bad idea to call this method without checking the + content length first as a client could send dozens of megabytes or more + to cause memory problems on the server. + + Note that if the form data was already parsed this method will not + return anything as form data parsing does not cache the data like + this method does. To implicitly invoke form data parsing function + set `parse_form_data` to `True`. When this is done the return value + of this method will be an empty string if the form parser handles + the data. This generally is not necessary as if the whole data is + cached (which is the default) the form parser will used the cached + data to parse the form data. Please be generally aware of checking + the content length first in any case before calling this method + to avoid exhausting server memory. + + If `as_text` is set to `True` the return value will be a decoded + string. + + .. versionadded:: 0.9 + """ + rv = getattr(self, "_cached_data", None) + if rv is None: + if parse_form_data: + self._load_form_data() + rv = self.stream.read() + if cache: + self._cached_data = rv + if as_text: + rv = rv.decode(errors="replace") + return rv + + @cached_property + def form(self) -> ImmutableMultiDict[str, str]: + """The form parameters. By default an + :class:`~werkzeug.datastructures.ImmutableMultiDict` + is returned from this function. This can be changed by setting + :attr:`parameter_storage_class` to a different type. This might + be necessary if the order of the form data is important. + + Please keep in mind that file uploads will not end up here, but instead + in the :attr:`files` attribute. + + .. versionchanged:: 0.9 + + Previous to Werkzeug 0.9 this would only contain form data for POST + and PUT requests. + """ + self._load_form_data() + return self.form + + @cached_property + def values(self) -> CombinedMultiDict[str, str]: + """A :class:`werkzeug.datastructures.CombinedMultiDict` that + combines :attr:`args` and :attr:`form`. + + For GET requests, only ``args`` are present, not ``form``. + + .. versionchanged:: 2.0 + For GET requests, only ``args`` are present, not ``form``. + """ + sources = [self.args] + + if self.method != "GET": + # GET requests can have a body, and some caching proxies + # might not treat that differently than a normal GET + # request, allowing form data to "invisibly" affect the + # cache without indication in the query string / URL. + sources.append(self.form) + + args = [] + + for d in sources: + if not isinstance(d, MultiDict): + d = MultiDict(d) + + args.append(d) + + return CombinedMultiDict(args) + + @cached_property + def files(self) -> ImmutableMultiDict[str, FileStorage]: + """:class:`~werkzeug.datastructures.MultiDict` object containing + all uploaded files. Each key in :attr:`files` is the name from the + ````. Each value in :attr:`files` is a + Werkzeug :class:`~werkzeug.datastructures.FileStorage` object. + + It basically behaves like a standard file object you know from Python, + with the difference that it also has a + :meth:`~werkzeug.datastructures.FileStorage.save` function that can + store the file on the filesystem. + + Note that :attr:`files` will only contain data if the request method was + POST, PUT or PATCH and the ``

    `` that posted to the request had + ``enctype="multipart/form-data"``. It will be empty otherwise. + + See the :class:`~werkzeug.datastructures.MultiDict` / + :class:`~werkzeug.datastructures.FileStorage` documentation for + more details about the used data structure. + """ + self._load_form_data() + return self.files + + @property + def script_root(self) -> str: + """Alias for :attr:`self.root_path`. ``environ["SCRIPT_ROOT"]`` + without a trailing slash. + """ + return self.root_path + + @cached_property + def url_root(self) -> str: + """Alias for :attr:`root_url`. The URL with scheme, host, and + root path. For example, ``https://example.com/app/``. + """ + return self.root_url + + remote_user = environ_property[str]( + "REMOTE_USER", + doc="""If the server supports user authentication, and the + script is protected, this attribute contains the username the + user has authenticated as.""", + ) + is_multithread = environ_property[bool]( + "wsgi.multithread", + doc="""boolean that is `True` if the application is served by a + multithreaded WSGI server.""", + ) + is_multiprocess = environ_property[bool]( + "wsgi.multiprocess", + doc="""boolean that is `True` if the application is served by a + WSGI server that spawns multiple processes.""", + ) + is_run_once = environ_property[bool]( + "wsgi.run_once", + doc="""boolean that is `True` if the application will be + executed only once in a process lifetime. This is the case for + CGI for example, but it's not guaranteed that the execution only + happens one time.""", + ) + + # JSON + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = json + + @property + def json(self) -> t.Any | None: + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :attr:`is_json`). + + Calls :meth:`get_json` with default arguments. + + If the request content type is not ``application/json``, this + will raise a 415 Unsupported Media Type error. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + + .. versionchanged:: 2.1 + Raise a 400 error if the content type is incorrect. + """ + return self.get_json() + + # Cached values for ``(silent=False, silent=True)``. Initialized + # with sentinel values. + _cached_json: tuple[t.Any, t.Any] = (Ellipsis, Ellipsis) + + @t.overload + def get_json( + self, force: bool = ..., silent: t.Literal[False] = ..., cache: bool = ... + ) -> t.Any: ... + + @t.overload + def get_json( + self, force: bool = ..., silent: bool = ..., cache: bool = ... + ) -> t.Any | None: ... + + def get_json( + self, force: bool = False, silent: bool = False, cache: bool = True + ) -> t.Any | None: + """Parse :attr:`data` as JSON. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :attr:`is_json`), or parsing + fails, :meth:`on_json_loading_failed` is called and + its return value is used as the return value. By default this + raises a 415 Unsupported Media Type resp. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence mimetype and parsing errors, and + return ``None`` instead. + :param cache: Store the parsed JSON to return for subsequent + calls. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + + .. versionchanged:: 2.1 + Raise a 400 error if the content type is incorrect. + """ + if cache and self._cached_json[silent] is not Ellipsis: + return self._cached_json[silent] + + if not (force or self.is_json): + if not silent: + return self.on_json_loading_failed(None) + else: + return None + + data = self.get_data(cache=cache) + + try: + rv = self.json_module.loads(data) + except ValueError as e: + if silent: + rv = None + + if cache: + normal_rv, _ = self._cached_json + self._cached_json = (normal_rv, rv) + else: + rv = self.on_json_loading_failed(e) + + if cache: + _, silent_rv = self._cached_json + self._cached_json = (rv, silent_rv) + else: + if cache: + self._cached_json = (rv, rv) + + return rv + + def on_json_loading_failed(self, e: ValueError | None) -> t.Any: + """Called if :meth:`get_json` fails and isn't silenced. + + If this method returns a value, it is used as the return value + for :meth:`get_json`. The default implementation raises + :exc:`~werkzeug.exceptions.BadRequest`. + + :param e: If parsing failed, this is the exception. It will be + ``None`` if the content type wasn't ``application/json``. + + .. versionchanged:: 2.3 + Raise a 415 error instead of 400. + """ + if e is not None: + raise BadRequest(f"Failed to decode JSON object: {e}") + + raise UnsupportedMediaType( + "Did not attempt to load JSON data because the request" + " Content-Type was not 'application/json'." + ) diff --git a/myenv/Lib/site-packages/werkzeug/wrappers/response.py b/myenv/Lib/site-packages/werkzeug/wrappers/response.py new file mode 100644 index 0000000..7f01287 --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/wrappers/response.py @@ -0,0 +1,831 @@ +from __future__ import annotations + +import json +import typing as t +from http import HTTPStatus +from urllib.parse import urljoin + +from .._internal import _get_environ +from ..datastructures import Headers +from ..http import generate_etag +from ..http import http_date +from ..http import is_resource_modified +from ..http import parse_etags +from ..http import parse_range_header +from ..http import remove_entity_headers +from ..sansio.response import Response as _SansIOResponse +from ..urls import iri_to_uri +from ..utils import cached_property +from ..wsgi import _RangeWrapper +from ..wsgi import ClosingIterator +from ..wsgi import get_current_url + +if t.TYPE_CHECKING: + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + from .request import Request + + +def _iter_encoded(iterable: t.Iterable[str | bytes]) -> t.Iterator[bytes]: + for item in iterable: + if isinstance(item, str): + yield item.encode() + else: + yield item + + +class Response(_SansIOResponse): + """Represents an outgoing WSGI HTTP response with body, status, and + headers. Has properties and methods for using the functionality + defined by various HTTP specs. + + The response body is flexible to support different use cases. The + simple form is passing bytes, or a string which will be encoded as + UTF-8. Passing an iterable of bytes or strings makes this a + streaming response. A generator is particularly useful for building + a CSV file in memory or using SSE (Server Sent Events). A file-like + object is also iterable, although the + :func:`~werkzeug.utils.send_file` helper should be used in that + case. + + The response object is itself a WSGI application callable. When + called (:meth:`__call__`) with ``environ`` and ``start_response``, + it will pass its status and headers to ``start_response`` then + return its body as an iterable. + + .. code-block:: python + + from werkzeug.wrappers.response import Response + + def index(): + return Response("Hello, World!") + + def application(environ, start_response): + path = environ.get("PATH_INFO") or "/" + + if path == "/": + response = index() + else: + response = Response("Not Found", status=404) + + return response(environ, start_response) + + :param response: The data for the body of the response. A string or + bytes, or tuple or list of strings or bytes, for a fixed-length + response, or any other iterable of strings or bytes for a + streaming response. Defaults to an empty body. + :param status: The status code for the response. Either an int, in + which case the default status message is added, or a string in + the form ``{code} {message}``, like ``404 Not Found``. Defaults + to 200. + :param headers: A :class:`~werkzeug.datastructures.Headers` object, + or a list of ``(key, value)`` tuples that will be converted to a + ``Headers`` object. + :param mimetype: The mime type (content type without charset or + other parameters) of the response. If the value starts with + ``text/`` (or matches some other special cases), the charset + will be added to create the ``content_type``. + :param content_type: The full content type of the response. + Overrides building the value from ``mimetype``. + :param direct_passthrough: Pass the response body directly through + as the WSGI iterable. This can be used when the body is a binary + file or other iterator of bytes, to skip some unnecessary + checks. Use :func:`~werkzeug.utils.send_file` instead of setting + this manually. + + .. versionchanged:: 2.1 + Old ``BaseResponse`` and mixin classes were removed. + + .. versionchanged:: 2.0 + Combine ``BaseResponse`` and mixins into a single ``Response`` + class. + + .. versionchanged:: 0.5 + The ``direct_passthrough`` parameter was added. + """ + + #: if set to `False` accessing properties on the response object will + #: not try to consume the response iterator and convert it into a list. + #: + #: .. versionadded:: 0.6.2 + #: + #: That attribute was previously called `implicit_seqence_conversion`. + #: (Notice the typo). If you did use this feature, you have to adapt + #: your code to the name change. + implicit_sequence_conversion = True + + #: If a redirect ``Location`` header is a relative URL, make it an + #: absolute URL, including scheme and domain. + #: + #: .. versionchanged:: 2.1 + #: This is disabled by default, so responses will send relative + #: redirects. + #: + #: .. versionadded:: 0.8 + autocorrect_location_header = False + + #: Should this response object automatically set the content-length + #: header if possible? This is true by default. + #: + #: .. versionadded:: 0.8 + automatically_set_content_length = True + + #: The response body to send as the WSGI iterable. A list of strings + #: or bytes represents a fixed-length response, any other iterable + #: is a streaming response. Strings are encoded to bytes as UTF-8. + #: + #: Do not set to a plain string or bytes, that will cause sending + #: the response to be very inefficient as it will iterate one byte + #: at a time. + response: t.Iterable[str] | t.Iterable[bytes] + + def __init__( + self, + response: t.Iterable[bytes] | bytes | t.Iterable[str] | str | None = None, + status: int | str | HTTPStatus | None = None, + headers: t.Mapping[str, str | t.Iterable[str]] + | t.Iterable[tuple[str, str]] + | None = None, + mimetype: str | None = None, + content_type: str | None = None, + direct_passthrough: bool = False, + ) -> None: + super().__init__( + status=status, + headers=headers, + mimetype=mimetype, + content_type=content_type, + ) + + #: Pass the response body directly through as the WSGI iterable. + #: This can be used when the body is a binary file or other + #: iterator of bytes, to skip some unnecessary checks. Use + #: :func:`~werkzeug.utils.send_file` instead of setting this + #: manually. + self.direct_passthrough = direct_passthrough + self._on_close: list[t.Callable[[], t.Any]] = [] + + # we set the response after the headers so that if a class changes + # the charset attribute, the data is set in the correct charset. + if response is None: + self.response = [] + elif isinstance(response, (str, bytes, bytearray)): + self.set_data(response) + else: + self.response = response + + def call_on_close(self, func: t.Callable[[], t.Any]) -> t.Callable[[], t.Any]: + """Adds a function to the internal list of functions that should + be called as part of closing down the response. Since 0.7 this + function also returns the function that was passed so that this + can be used as a decorator. + + .. versionadded:: 0.6 + """ + self._on_close.append(func) + return func + + def __repr__(self) -> str: + if self.is_sequence: + body_info = f"{sum(map(len, self.iter_encoded()))} bytes" + else: + body_info = "streamed" if self.is_streamed else "likely-streamed" + return f"<{type(self).__name__} {body_info} [{self.status}]>" + + @classmethod + def force_type( + cls, response: Response, environ: WSGIEnvironment | None = None + ) -> Response: + """Enforce that the WSGI response is a response object of the current + type. Werkzeug will use the :class:`Response` internally in many + situations like the exceptions. If you call :meth:`get_response` on an + exception you will get back a regular :class:`Response` object, even + if you are using a custom subclass. + + This method can enforce a given response type, and it will also + convert arbitrary WSGI callables into response objects if an environ + is provided:: + + # convert a Werkzeug response object into an instance of the + # MyResponseClass subclass. + response = MyResponseClass.force_type(response) + + # convert any WSGI application into a response object + response = MyResponseClass.force_type(response, environ) + + This is especially useful if you want to post-process responses in + the main dispatcher and use functionality provided by your subclass. + + Keep in mind that this will modify response objects in place if + possible! + + :param response: a response object or wsgi application. + :param environ: a WSGI environment object. + :return: a response object. + """ + if not isinstance(response, Response): + if environ is None: + raise TypeError( + "cannot convert WSGI application into response" + " objects without an environ" + ) + + from ..test import run_wsgi_app + + response = Response(*run_wsgi_app(response, environ)) + + response.__class__ = cls + return response + + @classmethod + def from_app( + cls, app: WSGIApplication, environ: WSGIEnvironment, buffered: bool = False + ) -> Response: + """Create a new response object from an application output. This + works best if you pass it an application that returns a generator all + the time. Sometimes applications may use the `write()` callable + returned by the `start_response` function. This tries to resolve such + edge cases automatically. But if you don't get the expected output + you should set `buffered` to `True` which enforces buffering. + + :param app: the WSGI application to execute. + :param environ: the WSGI environment to execute against. + :param buffered: set to `True` to enforce buffering. + :return: a response object. + """ + from ..test import run_wsgi_app + + return cls(*run_wsgi_app(app, environ, buffered)) + + @t.overload + def get_data(self, as_text: t.Literal[False] = False) -> bytes: ... + + @t.overload + def get_data(self, as_text: t.Literal[True]) -> str: ... + + def get_data(self, as_text: bool = False) -> bytes | str: + """The string representation of the response body. Whenever you call + this property the response iterable is encoded and flattened. This + can lead to unwanted behavior if you stream big data. + + This behavior can be disabled by setting + :attr:`implicit_sequence_conversion` to `False`. + + If `as_text` is set to `True` the return value will be a decoded + string. + + .. versionadded:: 0.9 + """ + self._ensure_sequence() + rv = b"".join(self.iter_encoded()) + + if as_text: + return rv.decode() + + return rv + + def set_data(self, value: bytes | str) -> None: + """Sets a new string as response. The value must be a string or + bytes. If a string is set it's encoded to the charset of the + response (utf-8 by default). + + .. versionadded:: 0.9 + """ + if isinstance(value, str): + value = value.encode() + self.response = [value] + if self.automatically_set_content_length: + self.headers["Content-Length"] = str(len(value)) + + data = property( + get_data, + set_data, + doc="A descriptor that calls :meth:`get_data` and :meth:`set_data`.", + ) + + def calculate_content_length(self) -> int | None: + """Returns the content length if available or `None` otherwise.""" + try: + self._ensure_sequence() + except RuntimeError: + return None + return sum(len(x) for x in self.iter_encoded()) + + def _ensure_sequence(self, mutable: bool = False) -> None: + """This method can be called by methods that need a sequence. If + `mutable` is true, it will also ensure that the response sequence + is a standard Python list. + + .. versionadded:: 0.6 + """ + if self.is_sequence: + # if we need a mutable object, we ensure it's a list. + if mutable and not isinstance(self.response, list): + self.response = list(self.response) # type: ignore + return + if self.direct_passthrough: + raise RuntimeError( + "Attempted implicit sequence conversion but the" + " response object is in direct passthrough mode." + ) + if not self.implicit_sequence_conversion: + raise RuntimeError( + "The response object required the iterable to be a" + " sequence, but the implicit conversion was disabled." + " Call make_sequence() yourself." + ) + self.make_sequence() + + def make_sequence(self) -> None: + """Converts the response iterator in a list. By default this happens + automatically if required. If `implicit_sequence_conversion` is + disabled, this method is not automatically called and some properties + might raise exceptions. This also encodes all the items. + + .. versionadded:: 0.6 + """ + if not self.is_sequence: + # if we consume an iterable we have to ensure that the close + # method of the iterable is called if available when we tear + # down the response + close = getattr(self.response, "close", None) + self.response = list(self.iter_encoded()) + if close is not None: + self.call_on_close(close) + + def iter_encoded(self) -> t.Iterator[bytes]: + """Iter the response encoded with the encoding of the response. + If the response object is invoked as WSGI application the return + value of this method is used as application iterator unless + :attr:`direct_passthrough` was activated. + """ + # Encode in a separate function so that self.response is fetched + # early. This allows us to wrap the response with the return + # value from get_app_iter or iter_encoded. + return _iter_encoded(self.response) + + @property + def is_streamed(self) -> bool: + """If the response is streamed (the response is not an iterable with + a length information) this property is `True`. In this case streamed + means that there is no information about the number of iterations. + This is usually `True` if a generator is passed to the response object. + + This is useful for checking before applying some sort of post + filtering that should not take place for streamed responses. + """ + try: + len(self.response) # type: ignore + except (TypeError, AttributeError): + return True + return False + + @property + def is_sequence(self) -> bool: + """If the iterator is buffered, this property will be `True`. A + response object will consider an iterator to be buffered if the + response attribute is a list or tuple. + + .. versionadded:: 0.6 + """ + return isinstance(self.response, (tuple, list)) + + def close(self) -> None: + """Close the wrapped response if possible. You can also use the object + in a with statement which will automatically close it. + + .. versionadded:: 0.9 + Can now be used in a with statement. + """ + if hasattr(self.response, "close"): + self.response.close() + for func in self._on_close: + func() + + def __enter__(self) -> Response: + return self + + def __exit__(self, exc_type, exc_value, tb): # type: ignore + self.close() + + def freeze(self) -> None: + """Make the response object ready to be pickled. Does the + following: + + * Buffer the response into a list, ignoring + :attr:`implicity_sequence_conversion` and + :attr:`direct_passthrough`. + * Set the ``Content-Length`` header. + * Generate an ``ETag`` header if one is not already set. + + .. versionchanged:: 2.1 + Removed the ``no_etag`` parameter. + + .. versionchanged:: 2.0 + An ``ETag`` header is always added. + + .. versionchanged:: 0.6 + The ``Content-Length`` header is set. + """ + # Always freeze the encoded response body, ignore + # implicit_sequence_conversion and direct_passthrough. + self.response = list(self.iter_encoded()) + self.headers["Content-Length"] = str(sum(map(len, self.response))) + self.add_etag() + + def get_wsgi_headers(self, environ: WSGIEnvironment) -> Headers: + """This is automatically called right before the response is started + and returns headers modified for the given environment. It returns a + copy of the headers from the response with some modifications applied + if necessary. + + For example the location header (if present) is joined with the root + URL of the environment. Also the content length is automatically set + to zero here for certain status codes. + + .. versionchanged:: 0.6 + Previously that function was called `fix_headers` and modified + the response object in place. Also since 0.6, IRIs in location + and content-location headers are handled properly. + + Also starting with 0.6, Werkzeug will attempt to set the content + length if it is able to figure it out on its own. This is the + case if all the strings in the response iterable are already + encoded and the iterable is buffered. + + :param environ: the WSGI environment of the request. + :return: returns a new :class:`~werkzeug.datastructures.Headers` + object. + """ + headers = Headers(self.headers) + location: str | None = None + content_location: str | None = None + content_length: str | int | None = None + status = self.status_code + + # iterate over the headers to find all values in one go. Because + # get_wsgi_headers is used each response that gives us a tiny + # speedup. + for key, value in headers: + ikey = key.lower() + if ikey == "location": + location = value + elif ikey == "content-location": + content_location = value + elif ikey == "content-length": + content_length = value + + if location is not None: + location = iri_to_uri(location) + + if self.autocorrect_location_header: + # Make the location header an absolute URL. + current_url = get_current_url(environ, strip_querystring=True) + current_url = iri_to_uri(current_url) + location = urljoin(current_url, location) + + headers["Location"] = location + + # make sure the content location is a URL + if content_location is not None: + headers["Content-Location"] = iri_to_uri(content_location) + + if 100 <= status < 200 or status == 204: + # Per section 3.3.2 of RFC 7230, "a server MUST NOT send a + # Content-Length header field in any response with a status + # code of 1xx (Informational) or 204 (No Content)." + headers.remove("Content-Length") + elif status == 304: + remove_entity_headers(headers) + + # if we can determine the content length automatically, we + # should try to do that. But only if this does not involve + # flattening the iterator or encoding of strings in the + # response. We however should not do that if we have a 304 + # response. + if ( + self.automatically_set_content_length + and self.is_sequence + and content_length is None + and status not in (204, 304) + and not (100 <= status < 200) + ): + content_length = sum(len(x) for x in self.iter_encoded()) + headers["Content-Length"] = str(content_length) + + return headers + + def get_app_iter(self, environ: WSGIEnvironment) -> t.Iterable[bytes]: + """Returns the application iterator for the given environ. Depending + on the request method and the current status code the return value + might be an empty response rather than the one from the response. + + If the request method is `HEAD` or the status code is in a range + where the HTTP specification requires an empty response, an empty + iterable is returned. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: a response iterable. + """ + status = self.status_code + if ( + environ["REQUEST_METHOD"] == "HEAD" + or 100 <= status < 200 + or status in (204, 304) + ): + iterable: t.Iterable[bytes] = () + elif self.direct_passthrough: + return self.response # type: ignore + else: + iterable = self.iter_encoded() + return ClosingIterator(iterable, self.close) + + def get_wsgi_response( + self, environ: WSGIEnvironment + ) -> tuple[t.Iterable[bytes], str, list[tuple[str, str]]]: + """Returns the final WSGI response as tuple. The first item in + the tuple is the application iterator, the second the status and + the third the list of headers. The response returned is created + specially for the given environment. For example if the request + method in the WSGI environment is ``'HEAD'`` the response will + be empty and only the headers and status code will be present. + + .. versionadded:: 0.6 + + :param environ: the WSGI environment of the request. + :return: an ``(app_iter, status, headers)`` tuple. + """ + headers = self.get_wsgi_headers(environ) + app_iter = self.get_app_iter(environ) + return app_iter, self.status, headers.to_wsgi_list() + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> t.Iterable[bytes]: + """Process this response as WSGI application. + + :param environ: the WSGI environment. + :param start_response: the response callable provided by the WSGI + server. + :return: an application iterator + """ + app_iter, status, headers = self.get_wsgi_response(environ) + start_response(status, headers) + return app_iter + + # JSON + + #: A module or other object that has ``dumps`` and ``loads`` + #: functions that match the API of the built-in :mod:`json` module. + json_module = json + + @property + def json(self) -> t.Any | None: + """The parsed JSON data if :attr:`mimetype` indicates JSON + (:mimetype:`application/json`, see :attr:`is_json`). + + Calls :meth:`get_json` with default arguments. + """ + return self.get_json() + + @t.overload + def get_json(self, force: bool = ..., silent: t.Literal[False] = ...) -> t.Any: ... + + @t.overload + def get_json(self, force: bool = ..., silent: bool = ...) -> t.Any | None: ... + + def get_json(self, force: bool = False, silent: bool = False) -> t.Any | None: + """Parse :attr:`data` as JSON. Useful during testing. + + If the mimetype does not indicate JSON + (:mimetype:`application/json`, see :attr:`is_json`), this + returns ``None``. + + Unlike :meth:`Request.get_json`, the result is not cached. + + :param force: Ignore the mimetype and always try to parse JSON. + :param silent: Silence parsing errors and return ``None`` + instead. + """ + if not (force or self.is_json): + return None + + data = self.get_data() + + try: + return self.json_module.loads(data) + except ValueError: + if not silent: + raise + + return None + + # Stream + + @cached_property + def stream(self) -> ResponseStream: + """The response iterable as write-only stream.""" + return ResponseStream(self) + + def _wrap_range_response(self, start: int, length: int) -> None: + """Wrap existing Response in case of Range Request context.""" + if self.status_code == 206: + self.response = _RangeWrapper(self.response, start, length) # type: ignore + + def _is_range_request_processable(self, environ: WSGIEnvironment) -> bool: + """Return ``True`` if `Range` header is present and if underlying + resource is considered unchanged when compared with `If-Range` header. + """ + return ( + "HTTP_IF_RANGE" not in environ + or not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ignore_if_range=False, + ) + ) and "HTTP_RANGE" in environ + + def _process_range_request( + self, + environ: WSGIEnvironment, + complete_length: int | None, + accept_ranges: bool | str, + ) -> bool: + """Handle Range Request related headers (RFC7233). If `Accept-Ranges` + header is valid, and Range Request is processable, we set the headers + as described by the RFC, and wrap the underlying response in a + RangeWrapper. + + Returns ``True`` if Range Request can be fulfilled, ``False`` otherwise. + + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + + .. versionchanged:: 2.0 + Returns ``False`` if the length is 0. + """ + from ..exceptions import RequestedRangeNotSatisfiable + + if ( + not accept_ranges + or complete_length is None + or complete_length == 0 + or not self._is_range_request_processable(environ) + ): + return False + + if accept_ranges is True: + accept_ranges = "bytes" + + parsed_range = parse_range_header(environ.get("HTTP_RANGE")) + + if parsed_range is None: + raise RequestedRangeNotSatisfiable(complete_length) + + range_tuple = parsed_range.range_for_length(complete_length) + content_range_header = parsed_range.to_content_range_header(complete_length) + + if range_tuple is None or content_range_header is None: + raise RequestedRangeNotSatisfiable(complete_length) + + content_length = range_tuple[1] - range_tuple[0] + self.headers["Content-Length"] = str(content_length) + self.headers["Accept-Ranges"] = accept_ranges + self.content_range = content_range_header # type: ignore + self.status_code = 206 + self._wrap_range_response(range_tuple[0], content_length) + return True + + def make_conditional( + self, + request_or_environ: WSGIEnvironment | Request, + accept_ranges: bool | str = False, + complete_length: int | None = None, + ) -> Response: + """Make the response conditional to the request. This method works + best if an etag was defined for the response already. The `add_etag` + method can be used to do that. If called without etag just the date + header is set. + + This does nothing if the request method in the request or environ is + anything but GET or HEAD. + + For optimal performance when handling range requests, it's recommended + that your response data object implements `seekable`, `seek` and `tell` + methods as described by :py:class:`io.IOBase`. Objects returned by + :meth:`~werkzeug.wsgi.wrap_file` automatically implement those methods. + + It does not remove the body of the response because that's something + the :meth:`__call__` function does for us automatically. + + Returns self so that you can do ``return resp.make_conditional(req)`` + but modifies the object in-place. + + :param request_or_environ: a request object or WSGI environment to be + used to make the response conditional + against. + :param accept_ranges: This parameter dictates the value of + `Accept-Ranges` header. If ``False`` (default), + the header is not set. If ``True``, it will be set + to ``"bytes"``. If it's a string, it will use this + value. + :param complete_length: Will be used only in valid Range Requests. + It will set `Content-Range` complete length + value and compute `Content-Length` real value. + This parameter is mandatory for successful + Range Requests completion. + :raises: :class:`~werkzeug.exceptions.RequestedRangeNotSatisfiable` + if `Range` header could not be parsed or satisfied. + + .. versionchanged:: 2.0 + Range processing is skipped if length is 0 instead of + raising a 416 Range Not Satisfiable error. + """ + environ = _get_environ(request_or_environ) + if environ["REQUEST_METHOD"] in ("GET", "HEAD"): + # if the date is not in the headers, add it now. We however + # will not override an already existing header. Unfortunately + # this header will be overridden by many WSGI servers including + # wsgiref. + if "date" not in self.headers: + self.headers["Date"] = http_date() + is206 = self._process_range_request(environ, complete_length, accept_ranges) + if not is206 and not is_resource_modified( + environ, + self.headers.get("etag"), + None, + self.headers.get("last-modified"), + ): + if parse_etags(environ.get("HTTP_IF_MATCH")): + self.status_code = 412 + else: + self.status_code = 304 + if ( + self.automatically_set_content_length + and "content-length" not in self.headers + ): + length = self.calculate_content_length() + if length is not None: + self.headers["Content-Length"] = str(length) + return self + + def add_etag(self, overwrite: bool = False, weak: bool = False) -> None: + """Add an etag for the current response if there is none yet. + + .. versionchanged:: 2.0 + SHA-1 is used to generate the value. MD5 may not be + available in some environments. + """ + if overwrite or "etag" not in self.headers: + self.set_etag(generate_etag(self.get_data()), weak) + + +class ResponseStream: + """A file descriptor like object used by :meth:`Response.stream` to + represent the body of the stream. It directly pushes into the + response iterable of the response object. + """ + + mode = "wb+" + + def __init__(self, response: Response): + self.response = response + self.closed = False + + def write(self, value: bytes) -> int: + if self.closed: + raise ValueError("I/O operation on closed file") + self.response._ensure_sequence(mutable=True) + self.response.response.append(value) # type: ignore + self.response.headers.pop("Content-Length", None) + return len(value) + + def writelines(self, seq: t.Iterable[bytes]) -> None: + for item in seq: + self.write(item) + + def close(self) -> None: + self.closed = True + + def flush(self) -> None: + if self.closed: + raise ValueError("I/O operation on closed file") + + def isatty(self) -> bool: + if self.closed: + raise ValueError("I/O operation on closed file") + return False + + def tell(self) -> int: + self.response._ensure_sequence() + return sum(map(len, self.response.response)) + + @property + def encoding(self) -> str: + return "utf-8" diff --git a/myenv/Lib/site-packages/werkzeug/wsgi.py b/myenv/Lib/site-packages/werkzeug/wsgi.py new file mode 100644 index 0000000..01d40af --- /dev/null +++ b/myenv/Lib/site-packages/werkzeug/wsgi.py @@ -0,0 +1,595 @@ +from __future__ import annotations + +import io +import typing as t +from functools import partial +from functools import update_wrapper + +from .exceptions import ClientDisconnected +from .exceptions import RequestEntityTooLarge +from .sansio import utils as _sansio_utils +from .sansio.utils import host_is_trusted # noqa: F401 # Imported as part of API + +if t.TYPE_CHECKING: + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + +def responder(f: t.Callable[..., WSGIApplication]) -> WSGIApplication: + """Marks a function as responder. Decorate a function with it and it + will automatically call the return value as WSGI application. + + Example:: + + @responder + def application(environ, start_response): + return Response('Hello World!') + """ + return update_wrapper(lambda *a: f(*a)(*a[-2:]), f) + + +def get_current_url( + environ: WSGIEnvironment, + root_only: bool = False, + strip_querystring: bool = False, + host_only: bool = False, + trusted_hosts: t.Iterable[str] | None = None, +) -> str: + """Recreate the URL for a request from the parts in a WSGI + environment. + + The URL is an IRI, not a URI, so it may contain Unicode characters. + Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII. + + :param environ: The WSGI environment to get the URL parts from. + :param root_only: Only build the root path, don't include the + remaining path or query string. + :param strip_querystring: Don't include the query string. + :param host_only: Only build the scheme and host. + :param trusted_hosts: A list of trusted host names to validate the + host against. + """ + parts = { + "scheme": environ["wsgi.url_scheme"], + "host": get_host(environ, trusted_hosts), + } + + if not host_only: + parts["root_path"] = environ.get("SCRIPT_NAME", "") + + if not root_only: + parts["path"] = environ.get("PATH_INFO", "") + + if not strip_querystring: + parts["query_string"] = environ.get("QUERY_STRING", "").encode("latin1") + + return _sansio_utils.get_current_url(**parts) + + +def _get_server( + environ: WSGIEnvironment, +) -> tuple[str, int | None] | None: + name = environ.get("SERVER_NAME") + + if name is None: + return None + + try: + port: int | None = int(environ.get("SERVER_PORT", None)) + except (TypeError, ValueError): + # unix socket + port = None + + return name, port + + +def get_host( + environ: WSGIEnvironment, trusted_hosts: t.Iterable[str] | None = None +) -> str: + """Return the host for the given WSGI environment. + + The ``Host`` header is preferred, then ``SERVER_NAME`` if it's not + set. The returned host will only contain the port if it is different + than the standard port for the protocol. + + Optionally, verify that the host is trusted using + :func:`host_is_trusted` and raise a + :exc:`~werkzeug.exceptions.SecurityError` if it is not. + + :param environ: A WSGI environment dict. + :param trusted_hosts: A list of trusted host names. + + :return: Host, with port if necessary. + :raise ~werkzeug.exceptions.SecurityError: If the host is not + trusted. + """ + return _sansio_utils.get_host( + environ["wsgi.url_scheme"], + environ.get("HTTP_HOST"), + _get_server(environ), + trusted_hosts, + ) + + +def get_content_length(environ: WSGIEnvironment) -> int | None: + """Return the ``Content-Length`` header value as an int. If the header is not given + or the ``Transfer-Encoding`` header is ``chunked``, ``None`` is returned to indicate + a streaming request. If the value is not an integer, or negative, 0 is returned. + + :param environ: The WSGI environ to get the content length from. + + .. versionadded:: 0.9 + """ + return _sansio_utils.get_content_length( + http_content_length=environ.get("CONTENT_LENGTH"), + http_transfer_encoding=environ.get("HTTP_TRANSFER_ENCODING"), + ) + + +def get_input_stream( + environ: WSGIEnvironment, + safe_fallback: bool = True, + max_content_length: int | None = None, +) -> t.IO[bytes]: + """Return the WSGI input stream, wrapped so that it may be read safely without going + past the ``Content-Length`` header value or ``max_content_length``. + + If ``Content-Length`` exceeds ``max_content_length``, a + :exc:`RequestEntityTooLarge`` ``413 Content Too Large`` error is raised. + + If the WSGI server sets ``environ["wsgi.input_terminated"]``, it indicates that the + server handles terminating the stream, so it is safe to read directly. For example, + a server that knows how to handle chunked requests safely would set this. + + If ``max_content_length`` is set, it can be enforced on streams if + ``wsgi.input_terminated`` is set. Otherwise, an empty stream is returned unless the + user explicitly disables this safe fallback. + + If the limit is reached before the underlying stream is exhausted (such as a file + that is too large, or an infinite stream), the remaining contents of the stream + cannot be read safely. Depending on how the server handles this, clients may show a + "connection reset" failure instead of seeing the 413 response. + + :param environ: The WSGI environ containing the stream. + :param safe_fallback: Return an empty stream when ``Content-Length`` is not set. + Disabling this allows infinite streams, which can be a denial-of-service risk. + :param max_content_length: The maximum length that content-length or streaming + requests may not exceed. + + .. versionchanged:: 2.3.2 + ``max_content_length`` is only applied to streaming requests if the server sets + ``wsgi.input_terminated``. + + .. versionchanged:: 2.3 + Check ``max_content_length`` and raise an error if it is exceeded. + + .. versionadded:: 0.9 + """ + stream = t.cast(t.IO[bytes], environ["wsgi.input"]) + content_length = get_content_length(environ) + + if content_length is not None and max_content_length is not None: + if content_length > max_content_length: + raise RequestEntityTooLarge() + + # A WSGI server can set this to indicate that it terminates the input stream. In + # that case the stream is safe without wrapping, or can enforce a max length. + if "wsgi.input_terminated" in environ: + if max_content_length is not None: + # If this is moved above, it can cause the stream to hang if a read attempt + # is made when the client sends no data. For example, the development server + # does not handle buffering except for chunked encoding. + return t.cast( + t.IO[bytes], LimitedStream(stream, max_content_length, is_max=True) + ) + + return stream + + # No limit given, return an empty stream unless the user explicitly allows the + # potentially infinite stream. An infinite stream is dangerous if it's not expected, + # as it can tie up a worker indefinitely. + if content_length is None: + return io.BytesIO() if safe_fallback else stream + + return t.cast(t.IO[bytes], LimitedStream(stream, content_length)) + + +def get_path_info(environ: WSGIEnvironment) -> str: + """Return ``PATH_INFO`` from the WSGI environment. + + :param environ: WSGI environment to get the path from. + + .. versionchanged:: 3.0 + The ``charset`` and ``errors`` parameters were removed. + + .. versionadded:: 0.9 + """ + path: bytes = environ.get("PATH_INFO", "").encode("latin1") + return path.decode(errors="replace") + + +class ClosingIterator: + """The WSGI specification requires that all middlewares and gateways + respect the `close` callback of the iterable returned by the application. + Because it is useful to add another close action to a returned iterable + and adding a custom iterable is a boring task this class can be used for + that:: + + return ClosingIterator(app(environ, start_response), [cleanup_session, + cleanup_locals]) + + If there is just one close function it can be passed instead of the list. + + A closing iterator is not needed if the application uses response objects + and finishes the processing if the response is started:: + + try: + return response(environ, start_response) + finally: + cleanup_session() + cleanup_locals() + """ + + def __init__( + self, + iterable: t.Iterable[bytes], + callbacks: None + | (t.Callable[[], None] | t.Iterable[t.Callable[[], None]]) = None, + ) -> None: + iterator = iter(iterable) + self._next = t.cast(t.Callable[[], bytes], partial(next, iterator)) + if callbacks is None: + callbacks = [] + elif callable(callbacks): + callbacks = [callbacks] + else: + callbacks = list(callbacks) + iterable_close = getattr(iterable, "close", None) + if iterable_close: + callbacks.insert(0, iterable_close) + self._callbacks = callbacks + + def __iter__(self) -> ClosingIterator: + return self + + def __next__(self) -> bytes: + return self._next() + + def close(self) -> None: + for callback in self._callbacks: + callback() + + +def wrap_file( + environ: WSGIEnvironment, file: t.IO[bytes], buffer_size: int = 8192 +) -> t.Iterable[bytes]: + """Wraps a file. This uses the WSGI server's file wrapper if available + or otherwise the generic :class:`FileWrapper`. + + .. versionadded:: 0.5 + + If the file wrapper from the WSGI server is used it's important to not + iterate over it from inside the application but to pass it through + unchanged. If you want to pass out a file wrapper inside a response + object you have to set :attr:`Response.direct_passthrough` to `True`. + + More information about file wrappers are available in :pep:`333`. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + return environ.get("wsgi.file_wrapper", FileWrapper)( # type: ignore + file, buffer_size + ) + + +class FileWrapper: + """This class can be used to convert a :class:`file`-like object into + an iterable. It yields `buffer_size` blocks until the file is fully + read. + + You should not use this class directly but rather use the + :func:`wrap_file` function that uses the WSGI server's file wrapper + support if it's available. + + .. versionadded:: 0.5 + + If you're using this object together with a :class:`Response` you have + to use the `direct_passthrough` mode. + + :param file: a :class:`file`-like object with a :meth:`~file.read` method. + :param buffer_size: number of bytes for one iteration. + """ + + def __init__(self, file: t.IO[bytes], buffer_size: int = 8192) -> None: + self.file = file + self.buffer_size = buffer_size + + def close(self) -> None: + if hasattr(self.file, "close"): + self.file.close() + + def seekable(self) -> bool: + if hasattr(self.file, "seekable"): + return self.file.seekable() + if hasattr(self.file, "seek"): + return True + return False + + def seek(self, *args: t.Any) -> None: + if hasattr(self.file, "seek"): + self.file.seek(*args) + + def tell(self) -> int | None: + if hasattr(self.file, "tell"): + return self.file.tell() + return None + + def __iter__(self) -> FileWrapper: + return self + + def __next__(self) -> bytes: + data = self.file.read(self.buffer_size) + if data: + return data + raise StopIteration() + + +class _RangeWrapper: + # private for now, but should we make it public in the future ? + + """This class can be used to convert an iterable object into + an iterable that will only yield a piece of the underlying content. + It yields blocks until the underlying stream range is fully read. + The yielded blocks will have a size that can't exceed the original + iterator defined block size, but that can be smaller. + + If you're using this object together with a :class:`Response` you have + to use the `direct_passthrough` mode. + + :param iterable: an iterable object with a :meth:`__next__` method. + :param start_byte: byte from which read will start. + :param byte_range: how many bytes to read. + """ + + def __init__( + self, + iterable: t.Iterable[bytes] | t.IO[bytes], + start_byte: int = 0, + byte_range: int | None = None, + ): + self.iterable = iter(iterable) + self.byte_range = byte_range + self.start_byte = start_byte + self.end_byte = None + + if byte_range is not None: + self.end_byte = start_byte + byte_range + + self.read_length = 0 + self.seekable = hasattr(iterable, "seekable") and iterable.seekable() + self.end_reached = False + + def __iter__(self) -> _RangeWrapper: + return self + + def _next_chunk(self) -> bytes: + try: + chunk = next(self.iterable) + self.read_length += len(chunk) + return chunk + except StopIteration: + self.end_reached = True + raise + + def _first_iteration(self) -> tuple[bytes | None, int]: + chunk = None + if self.seekable: + self.iterable.seek(self.start_byte) # type: ignore + self.read_length = self.iterable.tell() # type: ignore + contextual_read_length = self.read_length + else: + while self.read_length <= self.start_byte: + chunk = self._next_chunk() + if chunk is not None: + chunk = chunk[self.start_byte - self.read_length :] + contextual_read_length = self.start_byte + return chunk, contextual_read_length + + def _next(self) -> bytes: + if self.end_reached: + raise StopIteration() + chunk = None + contextual_read_length = self.read_length + if self.read_length == 0: + chunk, contextual_read_length = self._first_iteration() + if chunk is None: + chunk = self._next_chunk() + if self.end_byte is not None and self.read_length >= self.end_byte: + self.end_reached = True + return chunk[: self.end_byte - contextual_read_length] + return chunk + + def __next__(self) -> bytes: + chunk = self._next() + if chunk: + return chunk + self.end_reached = True + raise StopIteration() + + def close(self) -> None: + if hasattr(self.iterable, "close"): + self.iterable.close() + + +class LimitedStream(io.RawIOBase): + """Wrap a stream so that it doesn't read more than a given limit. This is used to + limit ``wsgi.input`` to the ``Content-Length`` header value or + :attr:`.Request.max_content_length`. + + When attempting to read after the limit has been reached, :meth:`on_exhausted` is + called. When the limit is a maximum, this raises :exc:`.RequestEntityTooLarge`. + + If reading from the stream returns zero bytes or raises an error, + :meth:`on_disconnect` is called, which raises :exc:`.ClientDisconnected`. When the + limit is a maximum and zero bytes were read, no error is raised, since it may be the + end of the stream. + + If the limit is reached before the underlying stream is exhausted (such as a file + that is too large, or an infinite stream), the remaining contents of the stream + cannot be read safely. Depending on how the server handles this, clients may show a + "connection reset" failure instead of seeing the 413 response. + + :param stream: The stream to read from. Must be a readable binary IO object. + :param limit: The limit in bytes to not read past. Should be either the + ``Content-Length`` header value or ``request.max_content_length``. + :param is_max: Whether the given ``limit`` is ``request.max_content_length`` instead + of the ``Content-Length`` header value. This changes how exhausted and + disconnect events are handled. + + .. versionchanged:: 2.3 + Handle ``max_content_length`` differently than ``Content-Length``. + + .. versionchanged:: 2.3 + Implements ``io.RawIOBase`` rather than ``io.IOBase``. + """ + + def __init__(self, stream: t.IO[bytes], limit: int, is_max: bool = False) -> None: + self._stream = stream + self._pos = 0 + self.limit = limit + self._limit_is_max = is_max + + @property + def is_exhausted(self) -> bool: + """Whether the current stream position has reached the limit.""" + return self._pos >= self.limit + + def on_exhausted(self) -> None: + """Called when attempting to read after the limit has been reached. + + The default behavior is to do nothing, unless the limit is a maximum, in which + case it raises :exc:`.RequestEntityTooLarge`. + + .. versionchanged:: 2.3 + Raises ``RequestEntityTooLarge`` if the limit is a maximum. + + .. versionchanged:: 2.3 + Any return value is ignored. + """ + if self._limit_is_max: + raise RequestEntityTooLarge() + + def on_disconnect(self, error: Exception | None = None) -> None: + """Called when an attempted read receives zero bytes before the limit was + reached. This indicates that the client disconnected before sending the full + request body. + + The default behavior is to raise :exc:`.ClientDisconnected`, unless the limit is + a maximum and no error was raised. + + .. versionchanged:: 2.3 + Added the ``error`` parameter. Do nothing if the limit is a maximum and no + error was raised. + + .. versionchanged:: 2.3 + Any return value is ignored. + """ + if not self._limit_is_max or error is not None: + raise ClientDisconnected() + + # If the limit is a maximum, then we may have read zero bytes because the + # streaming body is complete. There's no way to distinguish that from the + # client disconnecting early. + + def exhaust(self) -> bytes: + """Exhaust the stream by reading until the limit is reached or the client + disconnects, returning the remaining data. + + .. versionchanged:: 2.3 + Return the remaining data. + + .. versionchanged:: 2.2.3 + Handle case where wrapped stream returns fewer bytes than requested. + """ + if not self.is_exhausted: + return self.readall() + + return b"" + + def readinto(self, b: bytearray) -> int | None: # type: ignore[override] + size = len(b) + remaining = self.limit - self._pos + + if remaining <= 0: + self.on_exhausted() + return 0 + + if hasattr(self._stream, "readinto"): + # Use stream.readinto if it's available. + if size <= remaining: + # The size fits in the remaining limit, use the buffer directly. + try: + out_size: int | None = self._stream.readinto(b) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + else: + # Use a temp buffer with the remaining limit as the size. + temp_b = bytearray(remaining) + + try: + out_size = self._stream.readinto(temp_b) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + + if out_size: + b[:out_size] = temp_b + else: + # WSGI requires that stream.read is available. + try: + data = self._stream.read(min(size, remaining)) + except (OSError, ValueError) as e: + self.on_disconnect(error=e) + return 0 + + out_size = len(data) + b[:out_size] = data + + if not out_size: + # Read zero bytes from the stream. + self.on_disconnect() + return 0 + + self._pos += out_size + return out_size + + def readall(self) -> bytes: + if self.is_exhausted: + self.on_exhausted() + return b"" + + out = bytearray() + + # The parent implementation uses "while True", which results in an extra read. + while not self.is_exhausted: + data = self.read(1024 * 64) + + # Stream may return empty before a max limit is reached. + if not data: + break + + out.extend(data) + + return bytes(out) + + def tell(self) -> int: + """Return the current stream position. + + .. versionadded:: 0.9 + """ + return self._pos + + def readable(self) -> bool: + return True diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/INSTALLER b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/LICENSE b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/LICENSE new file mode 100644 index 0000000..cc10784 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Benno Rice and contributors + +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. \ No newline at end of file diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/METADATA b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/METADATA new file mode 100644 index 0000000..32e8bdb --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/METADATA @@ -0,0 +1,177 @@ +Metadata-Version: 2.1 +Name: wsproto +Version: 1.2.0 +Summary: WebSockets state-machine based protocol implementation +Home-page: https://github.com/python-hyper/wsproto/ +Author: Benno Rice +Author-email: benno@jeamland.net +License: MIT License +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.7.0 +Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: h11 (<1,>=0.9.0) + +======================================================== +Pure Python, pure state-machine WebSocket implementation +======================================================== + +.. image:: https://github.com/python-hyper/wsproto/workflows/CI/badge.svg + :target: https://github.com/python-hyper/wsproto/actions + :alt: Build Status +.. image:: https://codecov.io/gh/python-hyper/wsproto/branch/main/graph/badge.svg + :target: https://codecov.io/gh/python-hyper/wsproto + :alt: Code Coverage +.. image:: https://readthedocs.org/projects/wsproto/badge/?version=latest + :target: https://wsproto.readthedocs.io/en/latest/ + :alt: Documentation Status +.. image:: https://img.shields.io/badge/chat-join_now-brightgreen.svg + :target: https://gitter.im/python-hyper/community + :alt: Chat community + + +This repository contains a pure-Python implementation of a WebSocket protocol +stack. It's written from the ground up to be embeddable in whatever program you +choose to use, ensuring that you can communicate via WebSockets, as defined in +`RFC6455 `_, regardless of your programming +paradigm. + +This repository does not provide a parsing layer, a network layer, or any rules +about concurrency. Instead, it's a purely in-memory solution, defined in terms +of data actions and WebSocket frames. RFC6455 and Compression Extensions for +WebSocket via `RFC7692 `_ are fully +supported. + +wsproto supports Python 3.6.1 or higher. + +To install it, just run: + +.. code-block:: console + + $ pip install wsproto + + +Usage +===== + +Let's assume you have some form of network socket available. wsproto client +connections automatically generate a HTTP request to initiate the WebSocket +handshake. To create a WebSocket client connection: + +.. code-block:: python + + from wsproto import WSConnection, ConnectionType + from wsproto.events import Request + + ws = WSConnection(ConnectionType.CLIENT) + ws.send(Request(host='echo.websocket.org', target='/')) + +To create a WebSocket server connection: + +.. code-block:: python + + from wsproto.connection import WSConnection, ConnectionType + + ws = WSConnection(ConnectionType.SERVER) + +Every time you send a message, or call a ping, or simply if you receive incoming +data, wsproto might respond with some outgoing data that you have to send: + +.. code-block:: python + + some_socket.send(ws.bytes_to_send()) + +Both connection types need to receive incoming data: + +.. code-block:: python + + ws.receive_data(some_byte_string_of_data) + +And wsproto will issue events if the data contains any WebSocket messages or state changes: + +.. code-block:: python + + for event in ws.events(): + if isinstance(event, Request): + # only client connections get this event + ws.send(AcceptConnection()) + elif isinstance(event, CloseConnection): + # guess nobody wants to talk to us any more... + elif isinstance(event, TextMessage): + print('We got text!', event.data) + elif isinstance(event, BytesMessage): + print('We got bytes!', event.data) + +Take a look at our docs for a `full list of events +`! + +Testing +======= + +It passes the autobahn test suite completely and strictly in both client and +server modes and using permessage-deflate. + +If you want to run the compliance tests, go into the compliance directory and +then to test client mode, in one shell run the Autobahn test server: + +.. code-block:: console + + $ wstest -m fuzzingserver -s ws-fuzzingserver.json + +And in another shell run the test client: + +.. code-block:: console + + $ python test_client.py + +And to test server mode, run the test server: + +.. code-block:: console + + $ python test_server.py + +And in another shell run the Autobahn test client: + +.. code-block:: console + + $ wstest -m fuzzingclient -s ws-fuzzingclient.json + + +Documentation +============= + +Documentation is available at https://wsproto.readthedocs.io/en/latest/. + +Contributing +============ + +``wsproto`` welcomes contributions from anyone! Unlike many other projects we +are happy to accept cosmetic contributions and small contributions, in addition +to large feature requests and changes. + +Before you contribute (either by opening an issue or filing a pull request), +please `read the contribution guidelines`_. + +.. _read the contribution guidelines: http://python-hyper.org/en/latest/contributing.html + +License +======= + +``wsproto`` is made available under the MIT License. For more details, see the +``LICENSE`` file in the repository. + +Authors +======= + +``wsproto`` was created by @jeamland, and is maintained by the python-hyper +community. diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/RECORD b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/RECORD new file mode 100644 index 0000000..148d4ca --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/RECORD @@ -0,0 +1,23 @@ +wsproto-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +wsproto-1.2.0.dist-info/LICENSE,sha256=wDKajb80N7CV9_XPQlfWu4VeBxIMroeGWGBz_3ppmVk,1093 +wsproto-1.2.0.dist-info/METADATA,sha256=V7EI9a-gXS3NLxeYYmWqtf_MkMfepGoTF03IaR-OVwo,5607 +wsproto-1.2.0.dist-info/RECORD,, +wsproto-1.2.0.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92 +wsproto-1.2.0.dist-info/top_level.txt,sha256=BUdIrwL11zET0fkWkYRJ1yZKrEfvDF9DZqjhABOio6Y,8 +wsproto/__init__.py,sha256=zQSIjLjveTHwyhGAfqG_n_cVl54hTkeV6vuad1cnEOE,2887 +wsproto/__pycache__/__init__.cpython-38.pyc,, +wsproto/__pycache__/connection.cpython-38.pyc,, +wsproto/__pycache__/events.cpython-38.pyc,, +wsproto/__pycache__/extensions.cpython-38.pyc,, +wsproto/__pycache__/frame_protocol.cpython-38.pyc,, +wsproto/__pycache__/handshake.cpython-38.pyc,, +wsproto/__pycache__/typing.cpython-38.pyc,, +wsproto/__pycache__/utilities.cpython-38.pyc,, +wsproto/connection.py,sha256=LhsbokxZUmAtMsOFFZ45puZDPyIXNEmq7SanE7swAgE,6813 +wsproto/events.py,sha256=DW7YQ823oK3MjXHqcPvjJzjBGk5UGuMO_rpNnKgmmW8,7979 +wsproto/extensions.py,sha256=VlnojvsC2AO7vbUkw_TOqCgtmHb1dSplXeRwjMfjCo4,11211 +wsproto/frame_protocol.py,sha256=B5p_wRq54gvTihegbJ39RkONrdhtipoYDEiYq95BdAk,23401 +wsproto/handshake.py,sha256=hPqTo15MqOxYlvcNYTo-bIzQJHtRLq8qq2jBdHdz2x8,18036 +wsproto/py.typed,sha256=sow9soTwP9T_gEAQSVh7Gb8855h04Nwmhs2We-JRgZM,7 +wsproto/typing.py,sha256=Ryf6eOhAzfZlHCFELiiayDzNqdXQG7JKccblOqNx6Wo,68 +wsproto/utilities.py,sha256=5qmPXSUhUp2GESgvgIacZ7N4uqd0vBijhVV7t6XTiZw,2816 diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/WHEEL b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/WHEEL new file mode 100644 index 0000000..5bad85f --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/top_level.txt b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..8b7d144 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto-1.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +wsproto diff --git a/myenv/Lib/site-packages/wsproto/__init__.py b/myenv/Lib/site-packages/wsproto/__init__.py new file mode 100644 index 0000000..46fde3f --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/__init__.py @@ -0,0 +1,94 @@ +""" +wsproto +~~~~~~~ + +A WebSocket implementation. +""" +from typing import Generator, Optional, Union + +from .connection import Connection, ConnectionState, ConnectionType +from .events import Event +from .handshake import H11Handshake +from .typing import Headers + +__version__ = "1.2.0" + + +class WSConnection: + """ + Represents the local end of a WebSocket connection to a remote peer. + """ + + def __init__(self, connection_type: ConnectionType) -> None: + """ + Constructor + + :param wsproto.connection.ConnectionType connection_type: Controls + whether the library behaves as a client or as a server. + """ + self.client = connection_type is ConnectionType.CLIENT + self.handshake = H11Handshake(connection_type) + self.connection: Optional[Connection] = None + + @property + def state(self) -> ConnectionState: + """ + :returns: Connection state + :rtype: wsproto.connection.ConnectionState + """ + if self.connection is None: + return self.handshake.state + return self.connection.state + + def initiate_upgrade_connection( + self, headers: Headers, path: Union[bytes, str] + ) -> None: + self.handshake.initiate_upgrade_connection(headers, path) + + def send(self, event: Event) -> bytes: + """ + Generate network data for the specified event. + + When you want to communicate with a WebSocket peer, you should construct + an event and pass it to this method. This method will return the bytes + that you should send to the peer. + + :param wsproto.events.Event event: The event to generate data for + :returns bytes: The data to send to the peer + """ + data = b"" + if self.connection is None: + data += self.handshake.send(event) + self.connection = self.handshake.connection + else: + data += self.connection.send(event) + return data + + def receive_data(self, data: Optional[bytes]) -> None: + """ + Feed network data into the connection instance. + + After calling this method, you should call :meth:`events` to see if the + received data triggered any new events. + + :param bytes data: Data received from remote peer + """ + if self.connection is None: + self.handshake.receive_data(data) + self.connection = self.handshake.connection + else: + self.connection.receive_data(data) + + def events(self) -> Generator[Event, None, None]: + """ + A generator that yields pending events. + + Each event is an instance of a subclass of + :class:`wsproto.events.Event`. + """ + yield from self.handshake.events() + if self.connection is not None: + yield from self.connection.events() + + +__all__ = ("ConnectionType", "WSConnection") diff --git a/myenv/Lib/site-packages/wsproto/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/wsproto/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b835f66d4980ce79195a33ebbc3f963735945cab GIT binary patch literal 3245 zcmaJ@OOG4J5uTnIzJ}ag?!!qGBS|Ol!J9;cWE&7b1crsRA_Z{Ph8_?wSYR|e-CWM@ zywWq&W{FKM(jh>uIqD!Ca_}MlB)?#;Ir*GhfCTxfn;epB!wpWe`c++BUwzg6Y-`K2 zQ2sgmd;G9(S^uKOdU4SB3}1PUN?5)nn6ML;+PFU;k~wm_saHnMBg8Z!4vCnYd-QW%R=Q< z?)}*m&%4i`%hM-$bRjDqr$r)DnN?vG=h?{n2KHHpPThMbGpWKVS9SNxg2uw6ZavE& ze8bEX?(4F0nP^Bw65TR3lQ;fmI4*Kf(T?1=UoCOV?~+I_|R zuIx!q_T^w=-?A{b_r?*P=wt4d+?IVYz}hXbjrNWl%D$engTA5IMc=O6liOHjPaKSp z-aWC8{(WJ?vj_Fy`IFTl=f@sLc`OShOPsUh)l~8%kHUn@Oz?cd!!@@@jq7-oV?@a` zuOu&|R3okE_|UF*Ra(EVt+X&|8qbI6zscSp=NDrgL0`DoptzZbmCBMwq@poIvHP5pCa?)Kw}^%0?CK zaXFRng)$C_PgSU{_^F(RFJ;L?{CJea@EFgPX_ivGT)KhQA0M_=7YFm(M_>Hz!SU0& zZ5Ak^T-}>4L#g&w_P~2?DU*rX!kn)ywU595JU$wqJcIV~*<8ro~AS7q?@$ButXq>Amug`Mr;%5B)P-?<9OO6j6wF@KE5LMmM`o3mrkGjZdr z;xDgBW^e6l_Kw}N^awl05d$k5>M?6=j8JyMzal6aNEWGB@=R8jxw_y2QOhUb3+0%y zkWoB|rQq7S(Tc~U&hsxucsu+J-^n|%V|DK1hL!X zhQ^REGkb7Qju&BB@>uJwrg6zrusjzd{&dyACP{+aMoCNCdU{pKRdT4NVYR*?@}?j& z=~N~YHap))N&2MaNZ%;Nq%roD3+tfb%-mkGan(xGf;C**VwP!tV%1FpnnnL6lsB1y z^pXj1MHAzF4A(BHxfyOh!N?ta98R8eK$YRvHjH?07Fi{2in5_Tb<~YBVh?b3DinE2^S4`qM4`z{Ei>UjP3W*%q zGKsS@;MBmr88{f{V~U6I3xm`Pg0+;A#}h)gF+|Bo#xG%vK|sZ4XHuaVW>>K9(%@OH z8L)^0jh$XJ=ARQ88buS8r|Y+Av(+YggT;b?Hb!32C~D{5NEbg_x}9zytLL!+(3{`d zz;0dFcV_koOUn@|jS72bJpd+;ER7gmG8aAM2;}#-Ya~IN#0a=jeNkZ*egW>0;d9@SV|s*Ay<&EKFq()LsyzxtJv+4}#zivoKkVbb>(S zQ4r|ofO-##>n`55g;dp*>Y%BwB!vgKrRX}TTRKo`2YF0U;#WPYh?9!=qzGL_>{6Vn z74}-vmmKky?!%I9yDoFxVc%v$&$c{f|8LM5?jP(Znu8#s5Yh7S;ja1sjk=BN7vPvJ z^p0ef@fW=njL~`>r=~WKE?)h%(FdvfL4fB_iB~obPCM0b0~m(Zci3BZe`B2YDLpGn S(&e@f>;sBhM6T;>|Nj3MjyC-O literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/wsproto/__pycache__/connection.cpython-38.pyc b/myenv/Lib/site-packages/wsproto/__pycache__/connection.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e60d63fd36c99a2f5938f784f13b273ed6dcada4 GIT binary patch literal 5063 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 Odg^NWr^-(i?SBBa1ODRx literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/wsproto/__pycache__/frame_protocol.cpython-38.pyc b/myenv/Lib/site-packages/wsproto/__pycache__/frame_protocol.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..388a5f6caf8ca644e3e0354a909ad4246b5c8527 GIT binary patch literal 16281 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 N9V5{EVvs8Ym;gMPLDm2O literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/wsproto/__pycache__/utilities.cpython-38.pyc b/myenv/Lib/site-packages/wsproto/__pycache__/utilities.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ff330507b030fbc67cbc0a3b504e1d0a24fe911 GIT binary patch literal 2996 zcmaJ@OK;pp5^i!hoDnr6k0tq;-35U>76U|MDUtkwVMLL%i4j9FR@Q}3Kv3+KhB066 z?y+NIycZkDdG9`q4twzb$Z>xGkGm(I_qM0~sws_S*;&r8*;QSvuE$r^-0gNfhU=fb ze%j zq%)Zp%wpc;ZraJZLD$S3$a{f@c`KOvj`231dBymQIQOy<^gw%j7WAy>fj$qq!@Hon zhMpH~;fdJ;`wA0Hu^<*`#^+w!{2cGSa)L$hTyX)s^We?%1@JD41-|&&;urWuP?zW} zehI6W`4!NYxxK^sSD#1TQ&q}B7uQBQNfVt2<^ApK<$1ei@tJ=x%43}rx$^Ze(mpTz zywLu>NQ?Z?PjWx9b3akKYX4Z0nkcQByE!I( zt7?5OA}*wQYe61#bL)x7wfYRyS8F%7*8j4;wzPF?Wp!!w#^(Cct+kEyrH!@qZX+ii*FWzaM|=95Mtx8|lQU3%flRhBv@JvbzF$2Ez4Hs0q>MJId1JzR4nF_w zUe1#kSy6tJ`+}VI`AGP>@KZAQ8X#~eqby61MzgF2p6BCwI82m}zl;(kxc_u0a-?4P zagpc3K!H{x^$3g520*AH6M9IB2qH!aBt(L@Bp?zOSsCeMKNbE{@QgCV2!Mf2r1`1X zS4I3tXdmpHN0J|#0t`tiUx~_PlCoO0!jKnn7`{tPJ)0wma~Q7RR#eq(%V``akhTa$=!W9a7=%KchSz$RacGsulUk0Z}I0$DCoLP>ngN6u`tH>XmZ& z(F{z3ZWNpe{9xcmTFYdAq{Z#qzM#4ckzrj!_L5%G&3z@cFvWY#mjx023w!_|7=nQfJ>s3>YN+GFB zBzdC45OwA#ksio-tQwIwRy7lbaT+Ogf=7eGOAz=9w?QGZT+cc2gs(ZX+EYkF3SJR^i_tNZt9y98pCsoju#6b_79j>f|!@B3nMet(k zm?xKu301}hZgn3+!d_Tow#k0Fx@W(zUo^(n1YtX5NA|=THz;I}+mLaB)V!EDp)*O%nO+bUdvQ&EqbauP)MrzW1-sl5S>xqBsXc1H65#C zEn1G%!%uz=PT!WF;_+dOC|;Bh6C;WseI2}FV>V$N5!qxf>9ldS-wQ0Yb_(ncZgmyI zAzt`t9>GOGIXki@))D)={g}dpLoiZtk|0|y7jePiFHn$_VAzA@pjjp&7H8e_?xZ+k zsn6b}#F@mq%x2HOP$f?I5Gz@9ocX~W)Bn|7Oio_<5Bc>aZEocIR_*@u>@&Ek=08;S z1MNosF-tCC#G3|J#5sLUaYeY+Y+`A9f-kBg{0uhU5+BHLsXbg@t!DPGuL`s+xNjG# zYK8sblqW^?4vylqZOnrp>`;* zK~&NK12C=P5p<$B7NrhrW6s3(!qkb=QoDFhQC%{tZOvKo7H0h`ra9F5uY)01FjTI7 zR^qsjc&BV4?3v(!L;y6U*LVevU2?ORk@~js=CRnVYQms`h`rzSDN`CF{h|$ zB308IMW#sPC$tM?-Ne}#_t6Bk@6=yccL` None: + self.client = connection_type is ConnectionType.CLIENT + self._events: Deque[Event] = deque() + self._proto = FrameProtocol(self.client, extensions or []) + self._state = ConnectionState.OPEN + self.receive_data(trailing_data) + + @property + def state(self) -> ConnectionState: + return self._state + + def send(self, event: Event) -> bytes: + data = b"" + if isinstance(event, Message) and self.state == ConnectionState.OPEN: + data += self._proto.send_data(event.data, event.message_finished) + elif isinstance(event, Ping) and self.state == ConnectionState.OPEN: + data += self._proto.ping(event.payload) + elif isinstance(event, Pong) and self.state == ConnectionState.OPEN: + data += self._proto.pong(event.payload) + elif isinstance(event, CloseConnection) and self.state in { + ConnectionState.OPEN, + ConnectionState.REMOTE_CLOSING, + }: + data += self._proto.close(event.code, event.reason) + if self.state == ConnectionState.REMOTE_CLOSING: + self._state = ConnectionState.CLOSED + else: + self._state = ConnectionState.LOCAL_CLOSING + else: + raise LocalProtocolError( + f"Event {event} cannot be sent in state {self.state}." + ) + return data + + def receive_data(self, data: Optional[bytes]) -> None: + """ + Pass some received data to the connection for handling. + + A list of events that the remote peer triggered by sending this data can + be retrieved with :meth:`~wsproto.connection.Connection.events`. + + :param data: The data received from the remote peer on the network. + :type data: ``bytes`` + """ + + if data is None: + # "If _The WebSocket Connection is Closed_ and no Close control + # frame was received by the endpoint (such as could occur if the + # underlying transport connection is lost), _The WebSocket + # Connection Close Code_ is considered to be 1006." + self._events.append(CloseConnection(code=CloseReason.ABNORMAL_CLOSURE)) + self._state = ConnectionState.CLOSED + return + + if self.state in (ConnectionState.OPEN, ConnectionState.LOCAL_CLOSING): + self._proto.receive_bytes(data) + elif self.state is ConnectionState.CLOSED: + raise LocalProtocolError("Connection already closed.") + else: + pass # pragma: no cover + + def events(self) -> Generator[Event, None, None]: + """ + Return a generator that provides any events that have been generated + by protocol activity. + + :returns: generator of :class:`Event ` subclasses + """ + while self._events: + yield self._events.popleft() + + try: + for frame in self._proto.received_frames(): + if frame.opcode is Opcode.PING: + assert frame.frame_finished and frame.message_finished + assert isinstance(frame.payload, (bytes, bytearray)) + yield Ping(payload=frame.payload) + + elif frame.opcode is Opcode.PONG: + assert frame.frame_finished and frame.message_finished + assert isinstance(frame.payload, (bytes, bytearray)) + yield Pong(payload=frame.payload) + + elif frame.opcode is Opcode.CLOSE: + assert isinstance(frame.payload, tuple) + code, reason = frame.payload + if self.state is ConnectionState.LOCAL_CLOSING: + self._state = ConnectionState.CLOSED + else: + self._state = ConnectionState.REMOTE_CLOSING + yield CloseConnection(code=code, reason=reason) + + elif frame.opcode is Opcode.TEXT: + assert isinstance(frame.payload, str) + yield TextMessage( + data=frame.payload, + frame_finished=frame.frame_finished, + message_finished=frame.message_finished, + ) + + elif frame.opcode is Opcode.BINARY: + assert isinstance(frame.payload, (bytes, bytearray)) + yield BytesMessage( + data=frame.payload, + frame_finished=frame.frame_finished, + message_finished=frame.message_finished, + ) + + else: + pass # pragma: no cover + except ParseFailed as exc: + yield CloseConnection(code=exc.code, reason=str(exc)) diff --git a/myenv/Lib/site-packages/wsproto/events.py b/myenv/Lib/site-packages/wsproto/events.py new file mode 100644 index 0000000..d758f8a --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/events.py @@ -0,0 +1,295 @@ +""" +wsproto/events +~~~~~~~~~~~~~~ + +Events that result from processing data on a WebSocket connection. +""" +from abc import ABC +from dataclasses import dataclass, field +from typing import Generic, List, Optional, Sequence, TypeVar, Union + +from .extensions import Extension +from .typing import Headers + + +class Event(ABC): + """ + Base class for wsproto events. + """ + + pass # noqa + + +@dataclass(frozen=True) +class Request(Event): + """The beginning of a Websocket connection, the HTTP Upgrade request + + This event is fired when a SERVER connection receives a WebSocket + handshake request (HTTP with upgrade header). + + Fields: + + .. attribute:: host + + (Required) The hostname, or host header value. + + .. attribute:: target + + (Required) The request target (path and query string) + + .. attribute:: extensions + + The proposed extensions. + + .. attribute:: extra_headers + + The additional request headers, excluding extensions, host, subprotocols, + and version headers. + + .. attribute:: subprotocols + + A list of the subprotocols proposed in the request, as a list + of strings. + """ + + host: str + target: str + extensions: Union[Sequence[Extension], Sequence[str]] = field( # type: ignore[assignment] + default_factory=list + ) + extra_headers: Headers = field(default_factory=list) + subprotocols: List[str] = field(default_factory=list) + + +@dataclass(frozen=True) +class AcceptConnection(Event): + """The acceptance of a Websocket upgrade request. + + This event is fired when a CLIENT receives an acceptance response + from a server. It is also used to accept an upgrade request when + acting as a SERVER. + + Fields: + + .. attribute:: extra_headers + + Any additional (non websocket related) headers present in the + acceptance response. + + .. attribute:: subprotocol + + The accepted subprotocol to use. + + """ + + subprotocol: Optional[str] = None + extensions: List[Extension] = field(default_factory=list) + extra_headers: Headers = field(default_factory=list) + + +@dataclass(frozen=True) +class RejectConnection(Event): + """The rejection of a Websocket upgrade request, the HTTP response. + + The ``RejectConnection`` event sends the appropriate HTTP headers to + communicate to the peer that the handshake has been rejected. You may also + send an HTTP body by setting the ``has_body`` attribute to ``True`` and then + sending one or more :class:`RejectData` events after this one. When sending + a response body, the caller should set the ``Content-Length``, + ``Content-Type``, and/or ``Transfer-Encoding`` headers as appropriate. + + When receiving a ``RejectConnection`` event, the ``has_body`` attribute will + in almost all cases be ``True`` (even if the server set it to ``False``) and + will be followed by at least one ``RejectData`` events, even though the data + itself might be just ``b""``. (The only scenario in which the caller + receives a ``RejectConnection`` with ``has_body == False`` is if the peer + violates sends an informational status code (1xx) other than 101.) + + The ``has_body`` attribute should only be used when receiving the event. (It + has ) is False the headers must include a + content-length or transfer encoding. + + Fields: + + .. attribute:: headers (Headers) + + The headers to send with the response. + + .. attribute:: has_body + + This defaults to False, but set to True if there is a body. See + also :class:`~RejectData`. + + .. attribute:: status_code + + The response status code. + + """ + + status_code: int = 400 + headers: Headers = field(default_factory=list) + has_body: bool = False + + +@dataclass(frozen=True) +class RejectData(Event): + """The rejection HTTP response body. + + The caller may send multiple ``RejectData`` events. The final event should + have the ``body_finished`` attribute set to ``True``. + + Fields: + + .. attribute:: body_finished + + True if this is the final chunk of the body data. + + .. attribute:: data (bytes) + + (Required) The raw body data. + + """ + + data: bytes + body_finished: bool = True + + +@dataclass(frozen=True) +class CloseConnection(Event): + + """The end of a Websocket connection, represents a closure frame. + + **wsproto does not automatically send a response to a close event.** To + comply with the RFC you MUST send a close event back to the remote WebSocket + if you have not already sent one. The :meth:`response` method provides a + suitable event for this purpose, and you should check if a response needs + to be sent by checking :func:`wsproto.WSConnection.state`. + + Fields: + + .. attribute:: code + + (Required) The integer close code to indicate why the connection + has closed. + + .. attribute:: reason + + Additional reasoning for why the connection has closed. + + """ + + code: int + reason: Optional[str] = None + + def response(self) -> "CloseConnection": + """Generate an RFC-compliant close frame to send back to the peer.""" + return CloseConnection(code=self.code, reason=self.reason) + + +T = TypeVar("T", bytes, str) + + +@dataclass(frozen=True) +class Message(Event, Generic[T]): + """The websocket data message. + + Fields: + + .. attribute:: data + + (Required) The message data as byte string, can be decoded as UTF-8 for + TEXT messages. This only represents a single chunk of data and + not a full WebSocket message. You need to buffer and + reassemble these chunks to get the full message. + + .. attribute:: frame_finished + + This has no semantic content, but is provided just in case some + weird edge case user wants to be able to reconstruct the + fragmentation pattern of the original stream. + + .. attribute:: message_finished + + True if this frame is the last one of this message, False if + more frames are expected. + + """ + + data: T + frame_finished: bool = True + message_finished: bool = True + + +@dataclass(frozen=True) +class TextMessage(Message[str]): # pylint: disable=unsubscriptable-object + """This event is fired when a data frame with TEXT payload is received. + + Fields: + + .. attribute:: data + + The message data as string, This only represents a single chunk + of data and not a full WebSocket message. You need to buffer + and reassemble these chunks to get the full message. + + """ + + # https://github.com/python/mypy/issues/5744 + data: str + + +@dataclass(frozen=True) +class BytesMessage(Message[bytes]): # pylint: disable=unsubscriptable-object + """This event is fired when a data frame with BINARY payload is + received. + + Fields: + + .. attribute:: data + + The message data as byte string, can be decoded as UTF-8 for + TEXT messages. This only represents a single chunk of data and + not a full WebSocket message. You need to buffer and + reassemble these chunks to get the full message. + """ + + # https://github.com/python/mypy/issues/5744 + data: bytes + + +@dataclass(frozen=True) +class Ping(Event): + """The Ping event can be sent to trigger a ping frame and is fired + when a Ping is received. + + **wsproto does not automatically send a pong response to a ping event.** To + comply with the RFC you MUST send a pong even as soon as is practical. The + :meth:`response` method provides a suitable event for this purpose. + + Fields: + + .. attribute:: payload + + An optional payload to emit with the ping frame. + """ + + payload: bytes = b"" + + def response(self) -> "Pong": + """Generate an RFC-compliant :class:`Pong` response to this ping.""" + return Pong(payload=self.payload) + + +@dataclass(frozen=True) +class Pong(Event): + """The Pong event is fired when a Pong is received. + + Fields: + + .. attribute:: payload + + An optional payload to emit with the pong frame. + + """ + + payload: bytes = b"" diff --git a/myenv/Lib/site-packages/wsproto/extensions.py b/myenv/Lib/site-packages/wsproto/extensions.py new file mode 100644 index 0000000..ea8555d --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/extensions.py @@ -0,0 +1,315 @@ +""" +wsproto/extensions +~~~~~~~~~~~~~~~~~~ + +WebSocket extensions. +""" + +import zlib +from typing import Optional, Tuple, Union + +from .frame_protocol import CloseReason, FrameDecoder, FrameProtocol, Opcode, RsvBits + + +class Extension: + name: str + + def enabled(self) -> bool: + return False + + def offer(self) -> Union[bool, str]: + pass + + def accept(self, offer: str) -> Optional[Union[bool, str]]: + pass + + def finalize(self, offer: str) -> None: + pass + + def frame_inbound_header( + self, + proto: Union[FrameDecoder, FrameProtocol], + opcode: Opcode, + rsv: RsvBits, + payload_length: int, + ) -> Union[CloseReason, RsvBits]: + return RsvBits(False, False, False) + + def frame_inbound_payload_data( + self, proto: Union[FrameDecoder, FrameProtocol], data: bytes + ) -> Union[bytes, CloseReason]: + return data + + def frame_inbound_complete( + self, proto: Union[FrameDecoder, FrameProtocol], fin: bool + ) -> Union[bytes, CloseReason, None]: + pass + + def frame_outbound( + self, + proto: Union[FrameDecoder, FrameProtocol], + opcode: Opcode, + rsv: RsvBits, + data: bytes, + fin: bool, + ) -> Tuple[RsvBits, bytes]: + return (rsv, data) + + +class PerMessageDeflate(Extension): + name = "permessage-deflate" + + DEFAULT_CLIENT_MAX_WINDOW_BITS = 15 + DEFAULT_SERVER_MAX_WINDOW_BITS = 15 + + def __init__( + self, + client_no_context_takeover: bool = False, + client_max_window_bits: Optional[int] = None, + server_no_context_takeover: bool = False, + server_max_window_bits: Optional[int] = None, + ) -> None: + self.client_no_context_takeover = client_no_context_takeover + self.server_no_context_takeover = server_no_context_takeover + self._client_max_window_bits = self.DEFAULT_CLIENT_MAX_WINDOW_BITS + self._server_max_window_bits = self.DEFAULT_SERVER_MAX_WINDOW_BITS + if client_max_window_bits is not None: + self.client_max_window_bits = client_max_window_bits + if server_max_window_bits is not None: + self.server_max_window_bits = server_max_window_bits + + self._compressor: Optional[zlib._Compress] = None # noqa + self._decompressor: Optional[zlib._Decompress] = None # noqa + # This refers to the current frame + self._inbound_is_compressible: Optional[bool] = None + # This refers to the ongoing message (which might span multiple + # frames). Only the first frame in a fragmented message is flagged for + # compression, so this carries that bit forward. + self._inbound_compressed: Optional[bool] = None + + self._enabled = False + + @property + def client_max_window_bits(self) -> int: + return self._client_max_window_bits + + @client_max_window_bits.setter + def client_max_window_bits(self, value: int) -> None: + if value < 9 or value > 15: + raise ValueError("Window size must be between 9 and 15 inclusive") + self._client_max_window_bits = value + + @property + def server_max_window_bits(self) -> int: + return self._server_max_window_bits + + @server_max_window_bits.setter + def server_max_window_bits(self, value: int) -> None: + if value < 9 or value > 15: + raise ValueError("Window size must be between 9 and 15 inclusive") + self._server_max_window_bits = value + + def _compressible_opcode(self, opcode: Opcode) -> bool: + return opcode in (Opcode.TEXT, Opcode.BINARY, Opcode.CONTINUATION) + + def enabled(self) -> bool: + return self._enabled + + def offer(self) -> Union[bool, str]: + parameters = [ + "client_max_window_bits=%d" % self.client_max_window_bits, + "server_max_window_bits=%d" % self.server_max_window_bits, + ] + + if self.client_no_context_takeover: + parameters.append("client_no_context_takeover") + if self.server_no_context_takeover: + parameters.append("server_no_context_takeover") + + return "; ".join(parameters) + + def finalize(self, offer: str) -> None: + bits = [b.strip() for b in offer.split(";")] + for bit in bits[1:]: + if bit.startswith("client_no_context_takeover"): + self.client_no_context_takeover = True + elif bit.startswith("server_no_context_takeover"): + self.server_no_context_takeover = True + elif bit.startswith("client_max_window_bits"): + self.client_max_window_bits = int(bit.split("=", 1)[1].strip()) + elif bit.startswith("server_max_window_bits"): + self.server_max_window_bits = int(bit.split("=", 1)[1].strip()) + + self._enabled = True + + def _parse_params(self, params: str) -> Tuple[Optional[int], Optional[int]]: + client_max_window_bits = None + server_max_window_bits = None + + bits = [b.strip() for b in params.split(";")] + for bit in bits[1:]: + if bit.startswith("client_no_context_takeover"): + self.client_no_context_takeover = True + elif bit.startswith("server_no_context_takeover"): + self.server_no_context_takeover = True + elif bit.startswith("client_max_window_bits"): + if "=" in bit: + client_max_window_bits = int(bit.split("=", 1)[1].strip()) + else: + client_max_window_bits = self.client_max_window_bits + elif bit.startswith("server_max_window_bits"): + if "=" in bit: + server_max_window_bits = int(bit.split("=", 1)[1].strip()) + else: + server_max_window_bits = self.server_max_window_bits + + return client_max_window_bits, server_max_window_bits + + def accept(self, offer: str) -> Union[bool, None, str]: + client_max_window_bits, server_max_window_bits = self._parse_params(offer) + + parameters = [] + + if self.client_no_context_takeover: + parameters.append("client_no_context_takeover") + if self.server_no_context_takeover: + parameters.append("server_no_context_takeover") + try: + if client_max_window_bits is not None: + parameters.append("client_max_window_bits=%d" % client_max_window_bits) + self.client_max_window_bits = client_max_window_bits + if server_max_window_bits is not None: + parameters.append("server_max_window_bits=%d" % server_max_window_bits) + self.server_max_window_bits = server_max_window_bits + except ValueError: + return None + else: + self._enabled = True + return "; ".join(parameters) + + def frame_inbound_header( + self, + proto: Union[FrameDecoder, FrameProtocol], + opcode: Opcode, + rsv: RsvBits, + payload_length: int, + ) -> Union[CloseReason, RsvBits]: + if rsv.rsv1 and opcode.iscontrol(): + return CloseReason.PROTOCOL_ERROR + if rsv.rsv1 and opcode is Opcode.CONTINUATION: + return CloseReason.PROTOCOL_ERROR + + self._inbound_is_compressible = self._compressible_opcode(opcode) + + if self._inbound_compressed is None: + self._inbound_compressed = rsv.rsv1 + if self._inbound_compressed: + assert self._inbound_is_compressible + if proto.client: + bits = self.server_max_window_bits + else: + bits = self.client_max_window_bits + if self._decompressor is None: + self._decompressor = zlib.decompressobj(-int(bits)) + + return RsvBits(True, False, False) + + def frame_inbound_payload_data( + self, proto: Union[FrameDecoder, FrameProtocol], data: bytes + ) -> Union[bytes, CloseReason]: + if not self._inbound_compressed or not self._inbound_is_compressible: + return data + assert self._decompressor is not None + + try: + return self._decompressor.decompress(bytes(data)) + except zlib.error: + return CloseReason.INVALID_FRAME_PAYLOAD_DATA + + def frame_inbound_complete( + self, proto: Union[FrameDecoder, FrameProtocol], fin: bool + ) -> Union[bytes, CloseReason, None]: + if not fin: + return None + if not self._inbound_is_compressible: + self._inbound_compressed = None + return None + if not self._inbound_compressed: + self._inbound_compressed = None + return None + assert self._decompressor is not None + + try: + data = self._decompressor.decompress(b"\x00\x00\xff\xff") + data += self._decompressor.flush() + except zlib.error: + return CloseReason.INVALID_FRAME_PAYLOAD_DATA + + if proto.client: + no_context_takeover = self.server_no_context_takeover + else: + no_context_takeover = self.client_no_context_takeover + + if no_context_takeover: + self._decompressor = None + + self._inbound_compressed = None + + return data + + def frame_outbound( + self, + proto: Union[FrameDecoder, FrameProtocol], + opcode: Opcode, + rsv: RsvBits, + data: bytes, + fin: bool, + ) -> Tuple[RsvBits, bytes]: + if not self._compressible_opcode(opcode): + return (rsv, data) + + if opcode is not Opcode.CONTINUATION: + rsv = RsvBits(True, *rsv[1:]) + + if self._compressor is None: + assert opcode is not Opcode.CONTINUATION + if proto.client: + bits = self.client_max_window_bits + else: + bits = self.server_max_window_bits + self._compressor = zlib.compressobj( + zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -int(bits) + ) + + data = self._compressor.compress(bytes(data)) + + if fin: + data += self._compressor.flush(zlib.Z_SYNC_FLUSH) + data = data[:-4] + + if proto.client: + no_context_takeover = self.client_no_context_takeover + else: + no_context_takeover = self.server_no_context_takeover + + if no_context_takeover: + self._compressor = None + + return (rsv, data) + + def __repr__(self) -> str: + descr = ["client_max_window_bits=%d" % self.client_max_window_bits] + if self.client_no_context_takeover: + descr.append("client_no_context_takeover") + descr.append("server_max_window_bits=%d" % self.server_max_window_bits) + if self.server_no_context_takeover: + descr.append("server_no_context_takeover") + + return "<{} {}>".format(self.__class__.__name__, "; ".join(descr)) + + +#: SUPPORTED_EXTENSIONS maps all supported extension names to their class. +#: This can be used to iterate all supported extensions of wsproto, instantiate +#: new extensions based on their name, or check if a given extension is +#: supported or not. +SUPPORTED_EXTENSIONS = {PerMessageDeflate.name: PerMessageDeflate} diff --git a/myenv/Lib/site-packages/wsproto/frame_protocol.py b/myenv/Lib/site-packages/wsproto/frame_protocol.py new file mode 100644 index 0000000..d13a769 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/frame_protocol.py @@ -0,0 +1,673 @@ +""" +wsproto/frame_protocol +~~~~~~~~~~~~~~~~~~~~~~ + +WebSocket frame protocol implementation. +""" + +import os +import struct +from codecs import getincrementaldecoder, IncrementalDecoder +from enum import IntEnum +from typing import Generator, List, NamedTuple, Optional, Tuple, TYPE_CHECKING, Union + +if TYPE_CHECKING: + from .extensions import Extension # pragma: no cover + + +_XOR_TABLE = [bytes(a ^ b for a in range(256)) for b in range(256)] + + +class XorMaskerSimple: + def __init__(self, masking_key: bytes) -> None: + self._masking_key = masking_key + + def process(self, data: bytes) -> bytes: + if data: + data_array = bytearray(data) + a, b, c, d = (_XOR_TABLE[n] for n in self._masking_key) + data_array[::4] = data_array[::4].translate(a) + data_array[1::4] = data_array[1::4].translate(b) + data_array[2::4] = data_array[2::4].translate(c) + data_array[3::4] = data_array[3::4].translate(d) + + # Rotate the masking key so that the next usage continues + # with the next key element, rather than restarting. + key_rotation = len(data) % 4 + self._masking_key = ( + self._masking_key[key_rotation:] + self._masking_key[:key_rotation] + ) + + return bytes(data_array) + return data + + +class XorMaskerNull: + def process(self, data: bytes) -> bytes: + return data + + +# RFC6455, Section 5.2 - Base Framing Protocol + +# Payload length constants +PAYLOAD_LENGTH_TWO_BYTE = 126 +PAYLOAD_LENGTH_EIGHT_BYTE = 127 +MAX_PAYLOAD_NORMAL = 125 +MAX_PAYLOAD_TWO_BYTE = 2**16 - 1 +MAX_PAYLOAD_EIGHT_BYTE = 2**64 - 1 +MAX_FRAME_PAYLOAD = MAX_PAYLOAD_EIGHT_BYTE + +# MASK and PAYLOAD LEN are packed into a byte +MASK_MASK = 0x80 +PAYLOAD_LEN_MASK = 0x7F + +# FIN, RSV[123] and OPCODE are packed into a single byte +FIN_MASK = 0x80 +RSV1_MASK = 0x40 +RSV2_MASK = 0x20 +RSV3_MASK = 0x10 +OPCODE_MASK = 0x0F + + +class Opcode(IntEnum): + """ + RFC 6455, Section 5.2 - Base Framing Protocol + """ + + #: Continuation frame + CONTINUATION = 0x0 + + #: Text message + TEXT = 0x1 + + #: Binary message + BINARY = 0x2 + + #: Close frame + CLOSE = 0x8 + + #: Ping frame + PING = 0x9 + + #: Pong frame + PONG = 0xA + + def iscontrol(self) -> bool: + return bool(self & 0x08) + + +class CloseReason(IntEnum): + """ + RFC 6455, Section 7.4.1 - Defined Status Codes + """ + + #: indicates a normal closure, meaning that the purpose for + #: which the connection was established has been fulfilled. + NORMAL_CLOSURE = 1000 + + #: indicates that an endpoint is "going away", such as a server + #: going down or a browser having navigated away from a page. + GOING_AWAY = 1001 + + #: indicates that an endpoint is terminating the connection due + #: to a protocol error. + PROTOCOL_ERROR = 1002 + + #: indicates that an endpoint is terminating the connection + #: because it has received a type of data it cannot accept (e.g., an + #: endpoint that understands only text data MAY send this if it + #: receives a binary message). + UNSUPPORTED_DATA = 1003 + + #: Reserved. The specific meaning might be defined in the future. + # DON'T DEFINE THIS: RESERVED_1004 = 1004 + + #: is a reserved value and MUST NOT be set as a status code in a + #: Close control frame by an endpoint. It is designated for use in + #: applications expecting a status code to indicate that no status + #: code was actually present. + NO_STATUS_RCVD = 1005 + + #: is a reserved value and MUST NOT be set as a status code in a + #: Close control frame by an endpoint. It is designated for use in + #: applications expecting a status code to indicate that the + #: connection was closed abnormally, e.g., without sending or + #: receiving a Close control frame. + ABNORMAL_CLOSURE = 1006 + + #: indicates that an endpoint is terminating the connection + #: because it has received data within a message that was not + #: consistent with the type of the message (e.g., non-UTF-8 [RFC3629] + #: data within a text message). + INVALID_FRAME_PAYLOAD_DATA = 1007 + + #: indicates that an endpoint is terminating the connection + #: because it has received a message that violates its policy. This + #: is a generic status code that can be returned when there is no + #: other more suitable status code (e.g., 1003 or 1009) or if there + #: is a need to hide specific details about the policy. + POLICY_VIOLATION = 1008 + + #: indicates that an endpoint is terminating the connection + #: because it has received a message that is too big for it to + #: process. + MESSAGE_TOO_BIG = 1009 + + #: indicates that an endpoint (client) is terminating the + #: connection because it has expected the server to negotiate one or + #: more extension, but the server didn't return them in the response + #: message of the WebSocket handshake. The list of extensions that + #: are needed SHOULD appear in the /reason/ part of the Close frame. + #: Note that this status code is not used by the server, because it + #: can fail the WebSocket handshake instead. + MANDATORY_EXT = 1010 + + #: indicates that a server is terminating the connection because + #: it encountered an unexpected condition that prevented it from + #: fulfilling the request. + INTERNAL_ERROR = 1011 + + #: Server/service is restarting + #: (not part of RFC6455) + SERVICE_RESTART = 1012 + + #: Temporary server condition forced blocking client's request + #: (not part of RFC6455) + TRY_AGAIN_LATER = 1013 + + #: is a reserved value and MUST NOT be set as a status code in a + #: Close control frame by an endpoint. It is designated for use in + #: applications expecting a status code to indicate that the + #: connection was closed due to a failure to perform a TLS handshake + #: (e.g., the server certificate can't be verified). + TLS_HANDSHAKE_FAILED = 1015 + + +# RFC 6455, Section 7.4.1 - Defined Status Codes +LOCAL_ONLY_CLOSE_REASONS = ( + CloseReason.NO_STATUS_RCVD, + CloseReason.ABNORMAL_CLOSURE, + CloseReason.TLS_HANDSHAKE_FAILED, +) + + +# RFC 6455, Section 7.4.2 - Status Code Ranges +MIN_CLOSE_REASON = 1000 +MIN_PROTOCOL_CLOSE_REASON = 1000 +MAX_PROTOCOL_CLOSE_REASON = 2999 +MIN_LIBRARY_CLOSE_REASON = 3000 +MAX_LIBRARY_CLOSE_REASON = 3999 +MIN_PRIVATE_CLOSE_REASON = 4000 +MAX_PRIVATE_CLOSE_REASON = 4999 +MAX_CLOSE_REASON = 4999 + + +NULL_MASK = struct.pack("!I", 0) + + +class ParseFailed(Exception): + def __init__( + self, msg: str, code: CloseReason = CloseReason.PROTOCOL_ERROR + ) -> None: + super().__init__(msg) + self.code = code + + +class RsvBits(NamedTuple): + rsv1: bool + rsv2: bool + rsv3: bool + + +class Header(NamedTuple): + fin: bool + rsv: RsvBits + opcode: Opcode + payload_len: int + masking_key: Optional[bytes] + + +class Frame(NamedTuple): + opcode: Opcode + payload: Union[bytes, str, Tuple[int, str]] + frame_finished: bool + message_finished: bool + + +def _truncate_utf8(data: bytes, nbytes: int) -> bytes: + if len(data) <= nbytes: + return data + + # Truncate + data = data[:nbytes] + # But we might have cut a codepoint in half, in which case we want to + # discard the partial character so the data is at least + # well-formed. This is a little inefficient since it processes the + # whole message twice when in theory we could just peek at the last + # few characters, but since this is only used for close messages (max + # length = 125 bytes) it really doesn't matter. + data = data.decode("utf-8", errors="ignore").encode("utf-8") + return data + + +class Buffer: + def __init__(self, initial_bytes: Optional[bytes] = None) -> None: + self.buffer = bytearray() + self.bytes_used = 0 + if initial_bytes: + self.feed(initial_bytes) + + def feed(self, new_bytes: bytes) -> None: + self.buffer += new_bytes + + def consume_at_most(self, nbytes: int) -> bytes: + if not nbytes: + return bytearray() + + data = self.buffer[self.bytes_used : self.bytes_used + nbytes] + self.bytes_used += len(data) + return data + + def consume_exactly(self, nbytes: int) -> Optional[bytes]: + if len(self.buffer) - self.bytes_used < nbytes: + return None + + return self.consume_at_most(nbytes) + + def commit(self) -> None: + # In CPython 3.4+, del[:n] is amortized O(n), *not* quadratic + del self.buffer[: self.bytes_used] + self.bytes_used = 0 + + def rollback(self) -> None: + self.bytes_used = 0 + + def __len__(self) -> int: + return len(self.buffer) + + +class MessageDecoder: + def __init__(self) -> None: + self.opcode: Optional[Opcode] = None + self.decoder: Optional[IncrementalDecoder] = None + + def process_frame(self, frame: Frame) -> Frame: + assert not frame.opcode.iscontrol() + + if self.opcode is None: + if frame.opcode is Opcode.CONTINUATION: + raise ParseFailed("unexpected CONTINUATION") + self.opcode = frame.opcode + elif frame.opcode is not Opcode.CONTINUATION: + raise ParseFailed("expected CONTINUATION, got %r" % frame.opcode) + + if frame.opcode is Opcode.TEXT: + self.decoder = getincrementaldecoder("utf-8")() + + finished = frame.frame_finished and frame.message_finished + + if self.decoder is None: + data = frame.payload + else: + assert isinstance(frame.payload, (bytes, bytearray)) + try: + data = self.decoder.decode(frame.payload, finished) + except UnicodeDecodeError as exc: + raise ParseFailed(str(exc), CloseReason.INVALID_FRAME_PAYLOAD_DATA) + + frame = Frame(self.opcode, data, frame.frame_finished, finished) + + if finished: + self.opcode = None + self.decoder = None + + return frame + + +class FrameDecoder: + def __init__( + self, client: bool, extensions: Optional[List["Extension"]] = None + ) -> None: + self.client = client + self.extensions = extensions or [] + + self.buffer = Buffer() + + self.header: Optional[Header] = None + self.effective_opcode: Optional[Opcode] = None + self.masker: Union[None, XorMaskerNull, XorMaskerSimple] = None + self.payload_required = 0 + self.payload_consumed = 0 + + def receive_bytes(self, data: bytes) -> None: + self.buffer.feed(data) + + def process_buffer(self) -> Optional[Frame]: + if not self.header: + if not self.parse_header(): + return None + # parse_header() sets these. + assert self.header is not None + assert self.masker is not None + assert self.effective_opcode is not None + + if len(self.buffer) < self.payload_required: + return None + + payload_remaining = self.header.payload_len - self.payload_consumed + payload = self.buffer.consume_at_most(payload_remaining) + if not payload and self.header.payload_len > 0: + return None + self.buffer.commit() + + self.payload_consumed += len(payload) + finished = self.payload_consumed == self.header.payload_len + + payload = self.masker.process(payload) + + for extension in self.extensions: + payload_ = extension.frame_inbound_payload_data(self, payload) + if isinstance(payload_, CloseReason): + raise ParseFailed("error in extension", payload_) + payload = payload_ + + if finished: + final = bytearray() + for extension in self.extensions: + result = extension.frame_inbound_complete(self, self.header.fin) + if isinstance(result, CloseReason): + raise ParseFailed("error in extension", result) + if result is not None: + final += result + payload += final + + frame = Frame(self.effective_opcode, payload, finished, self.header.fin) + + if finished: + self.header = None + self.effective_opcode = None + self.masker = None + else: + self.effective_opcode = Opcode.CONTINUATION + + return frame + + def parse_header(self) -> bool: + data = self.buffer.consume_exactly(2) + if data is None: + self.buffer.rollback() + return False + + fin = bool(data[0] & FIN_MASK) + rsv = RsvBits( + bool(data[0] & RSV1_MASK), + bool(data[0] & RSV2_MASK), + bool(data[0] & RSV3_MASK), + ) + opcode = data[0] & OPCODE_MASK + try: + opcode = Opcode(opcode) + except ValueError: + raise ParseFailed(f"Invalid opcode {opcode:#x}") + + if opcode.iscontrol() and not fin: + raise ParseFailed("Invalid attempt to fragment control frame") + + has_mask = bool(data[1] & MASK_MASK) + payload_len_short = data[1] & PAYLOAD_LEN_MASK + payload_len = self.parse_extended_payload_length(opcode, payload_len_short) + if payload_len is None: + self.buffer.rollback() + return False + + self.extension_processing(opcode, rsv, payload_len) + + if has_mask and self.client: + raise ParseFailed("client received unexpected masked frame") + if not has_mask and not self.client: + raise ParseFailed("server received unexpected unmasked frame") + if has_mask: + masking_key = self.buffer.consume_exactly(4) + if masking_key is None: + self.buffer.rollback() + return False + self.masker = XorMaskerSimple(masking_key) + else: + self.masker = XorMaskerNull() + + self.buffer.commit() + self.header = Header(fin, rsv, opcode, payload_len, None) + self.effective_opcode = self.header.opcode + if self.header.opcode.iscontrol(): + self.payload_required = payload_len + else: + self.payload_required = 0 + self.payload_consumed = 0 + return True + + def parse_extended_payload_length( + self, opcode: Opcode, payload_len: int + ) -> Optional[int]: + if opcode.iscontrol() and payload_len > MAX_PAYLOAD_NORMAL: + raise ParseFailed("Control frame with payload len > 125") + if payload_len == PAYLOAD_LENGTH_TWO_BYTE: + data = self.buffer.consume_exactly(2) + if data is None: + return None + (payload_len,) = struct.unpack("!H", data) + if payload_len <= MAX_PAYLOAD_NORMAL: + raise ParseFailed( + "Payload length used 2 bytes when 1 would have sufficed" + ) + elif payload_len == PAYLOAD_LENGTH_EIGHT_BYTE: + data = self.buffer.consume_exactly(8) + if data is None: + return None + (payload_len,) = struct.unpack("!Q", data) + if payload_len <= MAX_PAYLOAD_TWO_BYTE: + raise ParseFailed( + "Payload length used 8 bytes when 2 would have sufficed" + ) + if payload_len >> 63: + # I'm not sure why this is illegal, but that's what the RFC + # says, so... + raise ParseFailed("8-byte payload length with non-zero MSB") + + return payload_len + + def extension_processing( + self, opcode: Opcode, rsv: RsvBits, payload_len: int + ) -> None: + rsv_used = [False, False, False] + for extension in self.extensions: + result = extension.frame_inbound_header(self, opcode, rsv, payload_len) + if isinstance(result, CloseReason): + raise ParseFailed("error in extension", result) + for bit, used in enumerate(result): + if used: + rsv_used[bit] = True + for expected, found in zip(rsv_used, rsv): + if found and not expected: + raise ParseFailed("Reserved bit set unexpectedly") + + +class FrameProtocol: + def __init__(self, client: bool, extensions: List["Extension"]) -> None: + self.client = client + self.extensions = [ext for ext in extensions if ext.enabled()] + + # Global state + self._frame_decoder = FrameDecoder(self.client, self.extensions) + self._message_decoder = MessageDecoder() + self._parse_more = self._parse_more_gen() + + self._outbound_opcode: Optional[Opcode] = None + + def _process_close(self, frame: Frame) -> Frame: + data = frame.payload + assert isinstance(data, (bytes, bytearray)) + + if not data: + # "If this Close control frame contains no status code, _The + # WebSocket Connection Close Code_ is considered to be 1005" + data = (CloseReason.NO_STATUS_RCVD, "") + elif len(data) == 1: + raise ParseFailed("CLOSE with 1 byte payload") + else: + (code,) = struct.unpack("!H", data[:2]) + if code < MIN_CLOSE_REASON or code > MAX_CLOSE_REASON: + raise ParseFailed("CLOSE with invalid code") + try: + code = CloseReason(code) + except ValueError: + pass + if code in LOCAL_ONLY_CLOSE_REASONS: + raise ParseFailed("remote CLOSE with local-only reason") + if not isinstance(code, CloseReason) and code <= MAX_PROTOCOL_CLOSE_REASON: + raise ParseFailed("CLOSE with unknown reserved code") + try: + reason = data[2:].decode("utf-8") + except UnicodeDecodeError as exc: + raise ParseFailed( + "Error decoding CLOSE reason: " + str(exc), + CloseReason.INVALID_FRAME_PAYLOAD_DATA, + ) + data = (code, reason) + + return Frame(frame.opcode, data, frame.frame_finished, frame.message_finished) + + def _parse_more_gen(self) -> Generator[Optional[Frame], None, None]: + # Consume as much as we can from self._buffer, yielding events, and + # then yield None when we need more data. Or raise ParseFailed. + + # XX FIXME this should probably be refactored so that we never see + # disabled extensions in the first place... + self.extensions = [ext for ext in self.extensions if ext.enabled()] + closed = False + + while not closed: + frame = self._frame_decoder.process_buffer() + + if frame is not None: + if not frame.opcode.iscontrol(): + frame = self._message_decoder.process_frame(frame) + elif frame.opcode == Opcode.CLOSE: + frame = self._process_close(frame) + closed = True + + yield frame + + def receive_bytes(self, data: bytes) -> None: + self._frame_decoder.receive_bytes(data) + + def received_frames(self) -> Generator[Frame, None, None]: + for event in self._parse_more: + if event is None: + break + else: + yield event + + def close(self, code: Optional[int] = None, reason: Optional[str] = None) -> bytes: + payload = bytearray() + if code is CloseReason.NO_STATUS_RCVD: + code = None + if code is None and reason: + raise TypeError("cannot specify a reason without a code") + if code in LOCAL_ONLY_CLOSE_REASONS: + code = CloseReason.NORMAL_CLOSURE + if code is not None: + payload += bytearray(struct.pack("!H", code)) + if reason is not None: + payload += _truncate_utf8( + reason.encode("utf-8"), MAX_PAYLOAD_NORMAL - 2 + ) + + return self._serialize_frame(Opcode.CLOSE, payload) + + def ping(self, payload: bytes = b"") -> bytes: + return self._serialize_frame(Opcode.PING, payload) + + def pong(self, payload: bytes = b"") -> bytes: + return self._serialize_frame(Opcode.PONG, payload) + + def send_data( + self, payload: Union[bytes, bytearray, str] = b"", fin: bool = True + ) -> bytes: + if isinstance(payload, (bytes, bytearray, memoryview)): + opcode = Opcode.BINARY + elif isinstance(payload, str): + opcode = Opcode.TEXT + payload = payload.encode("utf-8") + else: + raise ValueError("Must provide bytes or text") + + if self._outbound_opcode is None: + self._outbound_opcode = opcode + elif self._outbound_opcode is not opcode: + raise TypeError("Data type mismatch inside message") + else: + opcode = Opcode.CONTINUATION + + if fin: + self._outbound_opcode = None + + return self._serialize_frame(opcode, payload, fin) + + def _make_fin_rsv_opcode(self, fin: bool, rsv: RsvBits, opcode: Opcode) -> int: + fin_bits = int(fin) << 7 + rsv_bits = (int(rsv.rsv1) << 6) + (int(rsv.rsv2) << 5) + (int(rsv.rsv3) << 4) + opcode_bits = int(opcode) + + return fin_bits | rsv_bits | opcode_bits + + def _serialize_frame( + self, opcode: Opcode, payload: bytes = b"", fin: bool = True + ) -> bytes: + rsv = RsvBits(False, False, False) + for extension in reversed(self.extensions): + rsv, payload = extension.frame_outbound(self, opcode, rsv, payload, fin) + + fin_rsv_opcode = self._make_fin_rsv_opcode(fin, rsv, opcode) + + payload_length = len(payload) + quad_payload = False + if payload_length <= MAX_PAYLOAD_NORMAL: + first_payload = payload_length + second_payload = None + elif payload_length <= MAX_PAYLOAD_TWO_BYTE: + first_payload = PAYLOAD_LENGTH_TWO_BYTE + second_payload = payload_length + else: + first_payload = PAYLOAD_LENGTH_EIGHT_BYTE + second_payload = payload_length + quad_payload = True + + if self.client: + first_payload |= 1 << 7 + + header = bytearray([fin_rsv_opcode, first_payload]) + if second_payload is not None: + if opcode.iscontrol(): + raise ValueError("payload too long for control frame") + if quad_payload: + header += bytearray(struct.pack("!Q", second_payload)) + else: + header += bytearray(struct.pack("!H", second_payload)) + + if self.client: + # "The masking key is a 32-bit value chosen at random by the + # client. When preparing a masked frame, the client MUST pick a + # fresh masking key from the set of allowed 32-bit values. The + # masking key needs to be unpredictable; thus, the masking key + # MUST be derived from a strong source of entropy, and the masking + # key for a given frame MUST NOT make it simple for a server/proxy + # to predict the masking key for a subsequent frame. The + # unpredictability of the masking key is essential to prevent + # authors of malicious applications from selecting the bytes that + # appear on the wire." + # -- https://tools.ietf.org/html/rfc6455#section-5.3 + masking_key = os.urandom(4) + masker = XorMaskerSimple(masking_key) + return header + masking_key + masker.process(payload) + + return header + payload diff --git a/myenv/Lib/site-packages/wsproto/handshake.py b/myenv/Lib/site-packages/wsproto/handshake.py new file mode 100644 index 0000000..c456939 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/handshake.py @@ -0,0 +1,491 @@ +""" +wsproto/handshake +~~~~~~~~~~~~~~~~~~ + +An implementation of WebSocket handshakes. +""" +from collections import deque +from typing import ( + cast, + Deque, + Dict, + Generator, + Iterable, + List, + Optional, + Sequence, + Union, +) + +import h11 + +from .connection import Connection, ConnectionState, ConnectionType +from .events import AcceptConnection, Event, RejectConnection, RejectData, Request +from .extensions import Extension +from .typing import Headers +from .utilities import ( + generate_accept_token, + generate_nonce, + LocalProtocolError, + normed_header_dict, + RemoteProtocolError, + split_comma_header, +) + +# RFC6455, Section 4.2.1/6 - Reading the Client's Opening Handshake +WEBSOCKET_VERSION = b"13" + + +class H11Handshake: + """A Handshake implementation for HTTP/1.1 connections.""" + + def __init__(self, connection_type: ConnectionType) -> None: + self.client = connection_type is ConnectionType.CLIENT + self._state = ConnectionState.CONNECTING + + if self.client: + self._h11_connection = h11.Connection(h11.CLIENT) + else: + self._h11_connection = h11.Connection(h11.SERVER) + + self._connection: Optional[Connection] = None + self._events: Deque[Event] = deque() + self._initiating_request: Optional[Request] = None + self._nonce: Optional[bytes] = None + + @property + def state(self) -> ConnectionState: + return self._state + + @property + def connection(self) -> Optional[Connection]: + """Return the established connection. + + This will either return the connection or raise a + LocalProtocolError if the connection has not yet been + established. + + :rtype: h11.Connection + """ + return self._connection + + def initiate_upgrade_connection( + self, headers: Headers, path: Union[bytes, str] + ) -> None: + """Initiate an upgrade connection. + + This should be used if the request has already be received and + parsed. + + :param list headers: HTTP headers represented as a list of 2-tuples. + :param str path: A URL path. + """ + if self.client: + raise LocalProtocolError( + "Cannot initiate an upgrade connection when acting as the client" + ) + upgrade_request = h11.Request(method=b"GET", target=path, headers=headers) + h11_client = h11.Connection(h11.CLIENT) + self.receive_data(h11_client.send(upgrade_request)) + + def send(self, event: Event) -> bytes: + """Send an event to the remote. + + This will return the bytes to send based on the event or raise + a LocalProtocolError if the event is not valid given the + state. + + :returns: Data to send to the WebSocket peer. + :rtype: bytes + """ + data = b"" + if isinstance(event, Request): + data += self._initiate_connection(event) + elif isinstance(event, AcceptConnection): + data += self._accept(event) + elif isinstance(event, RejectConnection): + data += self._reject(event) + elif isinstance(event, RejectData): + data += self._send_reject_data(event) + else: + raise LocalProtocolError( + f"Event {event} cannot be sent during the handshake" + ) + return data + + def receive_data(self, data: Optional[bytes]) -> None: + """Receive data from the remote. + + A list of events that the remote peer triggered by sending + this data can be retrieved with :meth:`events`. + + :param bytes data: Data received from the WebSocket peer. + """ + self._h11_connection.receive_data(data or b"") + while True: + try: + event = self._h11_connection.next_event() + except h11.RemoteProtocolError: + raise RemoteProtocolError( + "Bad HTTP message", event_hint=RejectConnection() + ) + if ( + isinstance(event, h11.ConnectionClosed) + or event is h11.NEED_DATA + or event is h11.PAUSED + ): + break + + if self.client: + if isinstance(event, h11.InformationalResponse): + if event.status_code == 101: + self._events.append(self._establish_client_connection(event)) + else: + self._events.append( + RejectConnection( + headers=list(event.headers), + status_code=event.status_code, + has_body=False, + ) + ) + self._state = ConnectionState.CLOSED + elif isinstance(event, h11.Response): + self._state = ConnectionState.REJECTING + self._events.append( + RejectConnection( + headers=list(event.headers), + status_code=event.status_code, + has_body=True, + ) + ) + elif isinstance(event, h11.Data): + self._events.append( + RejectData(data=event.data, body_finished=False) + ) + elif isinstance(event, h11.EndOfMessage): + self._events.append(RejectData(data=b"", body_finished=True)) + self._state = ConnectionState.CLOSED + else: + if isinstance(event, h11.Request): + self._events.append(self._process_connection_request(event)) + + def events(self) -> Generator[Event, None, None]: + """Return a generator that provides any events that have been generated + by protocol activity. + + :returns: a generator that yields H11 events. + """ + while self._events: + yield self._events.popleft() + + # Server mode methods + + def _process_connection_request( # noqa: MC0001 + self, event: h11.Request + ) -> Request: + if event.method != b"GET": + raise RemoteProtocolError( + "Request method must be GET", event_hint=RejectConnection() + ) + connection_tokens = None + extensions: List[str] = [] + host = None + key = None + subprotocols: List[str] = [] + upgrade = b"" + version = None + headers: Headers = [] + for name, value in event.headers: + name = name.lower() + if name == b"connection": + connection_tokens = split_comma_header(value) + elif name == b"host": + host = value.decode("idna") + continue # Skip appending to headers + elif name == b"sec-websocket-extensions": + extensions.extend(split_comma_header(value)) + continue # Skip appending to headers + elif name == b"sec-websocket-key": + key = value + elif name == b"sec-websocket-protocol": + subprotocols.extend(split_comma_header(value)) + continue # Skip appending to headers + elif name == b"sec-websocket-version": + version = value + elif name == b"upgrade": + upgrade = value + headers.append((name, value)) + if connection_tokens is None or not any( + token.lower() == "upgrade" for token in connection_tokens + ): + raise RemoteProtocolError( + "Missing header, 'Connection: Upgrade'", event_hint=RejectConnection() + ) + if version != WEBSOCKET_VERSION: + raise RemoteProtocolError( + "Missing header, 'Sec-WebSocket-Version'", + event_hint=RejectConnection( + headers=[(b"Sec-WebSocket-Version", WEBSOCKET_VERSION)], + status_code=426 if version else 400, + ), + ) + if key is None: + raise RemoteProtocolError( + "Missing header, 'Sec-WebSocket-Key'", event_hint=RejectConnection() + ) + if upgrade.lower() != b"websocket": + raise RemoteProtocolError( + "Missing header, 'Upgrade: WebSocket'", event_hint=RejectConnection() + ) + if host is None: + raise RemoteProtocolError( + "Missing header, 'Host'", event_hint=RejectConnection() + ) + + self._initiating_request = Request( + extensions=extensions, + extra_headers=headers, + host=host, + subprotocols=subprotocols, + target=event.target.decode("ascii"), + ) + return self._initiating_request + + def _accept(self, event: AcceptConnection) -> bytes: + # _accept is always called after _process_connection_request. + assert self._initiating_request is not None + request_headers = normed_header_dict(self._initiating_request.extra_headers) + + nonce = request_headers[b"sec-websocket-key"] + accept_token = generate_accept_token(nonce) + + headers = [ + (b"Upgrade", b"WebSocket"), + (b"Connection", b"Upgrade"), + (b"Sec-WebSocket-Accept", accept_token), + ] + + if event.subprotocol is not None: + if event.subprotocol not in self._initiating_request.subprotocols: + raise LocalProtocolError(f"unexpected subprotocol {event.subprotocol}") + headers.append( + (b"Sec-WebSocket-Protocol", event.subprotocol.encode("ascii")) + ) + + if event.extensions: + accepts = server_extensions_handshake( + cast(Sequence[str], self._initiating_request.extensions), + event.extensions, + ) + if accepts: + headers.append((b"Sec-WebSocket-Extensions", accepts)) + + response = h11.InformationalResponse( + status_code=101, headers=headers + event.extra_headers + ) + self._connection = Connection( + ConnectionType.CLIENT if self.client else ConnectionType.SERVER, + event.extensions, + ) + self._state = ConnectionState.OPEN + return self._h11_connection.send(response) or b"" + + def _reject(self, event: RejectConnection) -> bytes: + if self.state != ConnectionState.CONNECTING: + raise LocalProtocolError( + "Connection cannot be rejected in state %s" % self.state + ) + + headers = list(event.headers) + if not event.has_body: + headers.append((b"content-length", b"0")) + response = h11.Response(status_code=event.status_code, headers=headers) + data = self._h11_connection.send(response) or b"" + self._state = ConnectionState.REJECTING + if not event.has_body: + data += self._h11_connection.send(h11.EndOfMessage()) or b"" + self._state = ConnectionState.CLOSED + return data + + def _send_reject_data(self, event: RejectData) -> bytes: + if self.state != ConnectionState.REJECTING: + raise LocalProtocolError( + f"Cannot send rejection data in state {self.state}" + ) + + data = self._h11_connection.send(h11.Data(data=event.data)) or b"" + if event.body_finished: + data += self._h11_connection.send(h11.EndOfMessage()) or b"" + self._state = ConnectionState.CLOSED + return data + + # Client mode methods + + def _initiate_connection(self, request: Request) -> bytes: + self._initiating_request = request + self._nonce = generate_nonce() + + headers = [ + (b"Host", request.host.encode("idna")), + (b"Upgrade", b"WebSocket"), + (b"Connection", b"Upgrade"), + (b"Sec-WebSocket-Key", self._nonce), + (b"Sec-WebSocket-Version", WEBSOCKET_VERSION), + ] + + if request.subprotocols: + headers.append( + ( + b"Sec-WebSocket-Protocol", + (", ".join(request.subprotocols)).encode("ascii"), + ) + ) + + if request.extensions: + offers: Dict[str, Union[str, bool]] = {} + for e in request.extensions: + assert isinstance(e, Extension) + offers[e.name] = e.offer() + extensions = [] + for name, params in offers.items(): + bname = name.encode("ascii") + if isinstance(params, bool): + if params: + extensions.append(bname) + else: + extensions.append(b"%s; %s" % (bname, params.encode("ascii"))) + if extensions: + headers.append((b"Sec-WebSocket-Extensions", b", ".join(extensions))) + + upgrade = h11.Request( + method=b"GET", + target=request.target.encode("ascii"), + headers=headers + request.extra_headers, + ) + return self._h11_connection.send(upgrade) or b"" + + def _establish_client_connection( + self, event: h11.InformationalResponse + ) -> AcceptConnection: # noqa: MC0001 + # _establish_client_connection is always called after _initiate_connection. + assert self._initiating_request is not None + assert self._nonce is not None + + accept = None + connection_tokens = None + accepts: List[str] = [] + subprotocol = None + upgrade = b"" + headers: Headers = [] + for name, value in event.headers: + name = name.lower() + if name == b"connection": + connection_tokens = split_comma_header(value) + continue # Skip appending to headers + elif name == b"sec-websocket-extensions": + accepts = split_comma_header(value) + continue # Skip appending to headers + elif name == b"sec-websocket-accept": + accept = value + continue # Skip appending to headers + elif name == b"sec-websocket-protocol": + subprotocol = value.decode("ascii") + continue # Skip appending to headers + elif name == b"upgrade": + upgrade = value + continue # Skip appending to headers + headers.append((name, value)) + + if connection_tokens is None or not any( + token.lower() == "upgrade" for token in connection_tokens + ): + raise RemoteProtocolError( + "Missing header, 'Connection: Upgrade'", event_hint=RejectConnection() + ) + if upgrade.lower() != b"websocket": + raise RemoteProtocolError( + "Missing header, 'Upgrade: WebSocket'", event_hint=RejectConnection() + ) + accept_token = generate_accept_token(self._nonce) + if accept != accept_token: + raise RemoteProtocolError("Bad accept token", event_hint=RejectConnection()) + if subprotocol is not None: + if subprotocol not in self._initiating_request.subprotocols: + raise RemoteProtocolError( + f"unrecognized subprotocol {subprotocol}", + event_hint=RejectConnection(), + ) + extensions = client_extensions_handshake( + accepts, cast(Sequence[Extension], self._initiating_request.extensions) + ) + + self._connection = Connection( + ConnectionType.CLIENT if self.client else ConnectionType.SERVER, + extensions, + self._h11_connection.trailing_data[0], + ) + self._state = ConnectionState.OPEN + return AcceptConnection( + extensions=extensions, extra_headers=headers, subprotocol=subprotocol + ) + + def __repr__(self) -> str: + return "{}(client={}, state={})".format( + self.__class__.__name__, self.client, self.state + ) + + +def server_extensions_handshake( + requested: Iterable[str], supported: List[Extension] +) -> Optional[bytes]: + """Agree on the extensions to use returning an appropriate header value. + + This returns None if there are no agreed extensions + """ + accepts: Dict[str, Union[bool, bytes]] = {} + for offer in requested: + name = offer.split(";", 1)[0].strip() + for extension in supported: + if extension.name == name: + accept = extension.accept(offer) + if isinstance(accept, bool): + if accept: + accepts[extension.name] = True + elif accept is not None: + accepts[extension.name] = accept.encode("ascii") + + if accepts: + extensions: List[bytes] = [] + for name, params in accepts.items(): + name_bytes = name.encode("ascii") + if isinstance(params, bool): + assert params + extensions.append(name_bytes) + else: + if params == b"": + extensions.append(b"%s" % (name_bytes)) + else: + extensions.append(b"%s; %s" % (name_bytes, params)) + return b", ".join(extensions) + + return None + + +def client_extensions_handshake( + accepted: Iterable[str], supported: Sequence[Extension] +) -> List[Extension]: + # This raises RemoteProtocolError is the accepted extension is not + # supported. + extensions = [] + for accept in accepted: + name = accept.split(";", 1)[0].strip() + for extension in supported: + if extension.name == name: + extension.finalize(accept) + extensions.append(extension) + break + else: + raise RemoteProtocolError( + f"unrecognized extension {name}", event_hint=RejectConnection() + ) + return extensions diff --git a/myenv/Lib/site-packages/wsproto/py.typed b/myenv/Lib/site-packages/wsproto/py.typed new file mode 100644 index 0000000..f5642f7 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/py.typed @@ -0,0 +1 @@ +Marker diff --git a/myenv/Lib/site-packages/wsproto/typing.py b/myenv/Lib/site-packages/wsproto/typing.py new file mode 100644 index 0000000..a44b27e --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/typing.py @@ -0,0 +1,3 @@ +from typing import List, Tuple + +Headers = List[Tuple[bytes, bytes]] diff --git a/myenv/Lib/site-packages/wsproto/utilities.py b/myenv/Lib/site-packages/wsproto/utilities.py new file mode 100644 index 0000000..7cf53d1 --- /dev/null +++ b/myenv/Lib/site-packages/wsproto/utilities.py @@ -0,0 +1,88 @@ +""" +wsproto/utilities +~~~~~~~~~~~~~~~~~ + +Utility functions that do not belong in a separate module. +""" +import base64 +import hashlib +import os +from typing import Dict, List, Optional, Union + +from h11._headers import Headers as H11Headers + +from .events import Event +from .typing import Headers + +# RFC6455, Section 1.3 - Opening Handshake +ACCEPT_GUID = b"258EAFA5-E914-47DA-95CA-C5AB0DC85B11" + + +class ProtocolError(Exception): + pass + + +class LocalProtocolError(ProtocolError): + """Indicates an error due to local/programming errors. + + This is raised when the connection is asked to do something that + is either incompatible with the state or the websocket standard. + + """ + + pass # noqa + + +class RemoteProtocolError(ProtocolError): + """Indicates an error due to the remote's actions. + + This is raised when processing the bytes from the remote if the + remote has sent data that is incompatible with the websocket + standard. + + .. attribute:: event_hint + + This is a suggested wsproto Event to send to the client based + on the error. It could be None if no hint is available. + + """ + + def __init__(self, message: str, event_hint: Optional[Event] = None) -> None: + self.event_hint = event_hint + super().__init__(message) + + +# Some convenience utilities for working with HTTP headers +def normed_header_dict(h11_headers: Union[Headers, H11Headers]) -> Dict[bytes, bytes]: + # This mangles Set-Cookie headers. But it happens that we don't care about + # any of those, so it's OK. For every other HTTP header, if there are + # multiple instances then you're allowed to join them together with + # commas. + name_to_values: Dict[bytes, List[bytes]] = {} + for name, value in h11_headers: + name_to_values.setdefault(name, []).append(value) + name_to_normed_value = {} + for name, values in name_to_values.items(): + name_to_normed_value[name] = b", ".join(values) + return name_to_normed_value + + +# We use this for parsing the proposed protocol list, and for parsing the +# proposed and accepted extension lists. For the proposed protocol list it's +# fine, because the ABNF is just 1#token. But for the extension lists, it's +# wrong, because those can contain quoted strings, which can in turn contain +# commas. XX FIXME +def split_comma_header(value: bytes) -> List[str]: + return [piece.decode("ascii").strip() for piece in value.split(b",")] + + +def generate_nonce() -> bytes: + # os.urandom may be overkill for this use case, but I don't think this + # is a bottleneck, and better safe than sorry... + return base64.b64encode(os.urandom(16)) + + +def generate_accept_token(token: bytes) -> bytes: + accept_token = token + ACCEPT_GUID + accept_token = hashlib.sha1(accept_token).digest() + return base64.b64encode(accept_token) diff --git a/myenv/Lib/site-packages/zipp-3.20.2.dist-info/INSTALLER b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/myenv/Lib/site-packages/zipp-3.20.2.dist-info/LICENSE b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/LICENSE new file mode 100644 index 0000000..1bb5a44 --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/LICENSE @@ -0,0 +1,17 @@ +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/myenv/Lib/site-packages/zipp-3.20.2.dist-info/METADATA b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/METADATA new file mode 100644 index 0000000..cf6be83 --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/METADATA @@ -0,0 +1,106 @@ +Metadata-Version: 2.1 +Name: zipp +Version: 3.20.2 +Summary: Backport of pathlib-compatible object wrapper for zip files +Author-email: "Jason R. Coombs" +Project-URL: Source, https://github.com/jaraco/zipp +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE +Provides-Extra: check +Requires-Dist: pytest-checkdocs >=2.4 ; extra == 'check' +Requires-Dist: pytest-ruff >=0.2.1 ; (sys_platform != "cygwin") and extra == 'check' +Provides-Extra: cover +Requires-Dist: pytest-cov ; extra == 'cover' +Provides-Extra: doc +Requires-Dist: sphinx >=3.5 ; extra == 'doc' +Requires-Dist: jaraco.packaging >=9.3 ; extra == 'doc' +Requires-Dist: rst.linker >=1.9 ; extra == 'doc' +Requires-Dist: furo ; extra == 'doc' +Requires-Dist: sphinx-lint ; extra == 'doc' +Requires-Dist: jaraco.tidelift >=1.4 ; extra == 'doc' +Provides-Extra: enabler +Requires-Dist: pytest-enabler >=2.2 ; extra == 'enabler' +Provides-Extra: test +Requires-Dist: pytest !=8.1.*,>=6 ; extra == 'test' +Requires-Dist: jaraco.itertools ; extra == 'test' +Requires-Dist: jaraco.functools ; extra == 'test' +Requires-Dist: more-itertools ; extra == 'test' +Requires-Dist: big-O ; extra == 'test' +Requires-Dist: pytest-ignore-flaky ; extra == 'test' +Requires-Dist: jaraco.test ; extra == 'test' +Requires-Dist: importlib-resources ; (python_version < "3.9") and extra == 'test' +Provides-Extra: type +Requires-Dist: pytest-mypy ; extra == 'type' + +.. image:: https://img.shields.io/pypi/v/zipp.svg + :target: https://pypi.org/project/zipp + +.. image:: https://img.shields.io/pypi/pyversions/zipp.svg + +.. image:: https://github.com/jaraco/zipp/actions/workflows/main.yml/badge.svg + :target: https://github.com/jaraco/zipp/actions?query=workflow%3A%22tests%22 + :alt: tests + +.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json + :target: https://github.com/astral-sh/ruff + :alt: Ruff + +.. image:: https://readthedocs.org/projects/zipp/badge/?version=latest +.. :target: https://zipp.readthedocs.io/en/latest/?badge=latest + +.. image:: https://img.shields.io/badge/skeleton-2024-informational + :target: https://blog.jaraco.com/skeleton + +.. image:: https://tidelift.com/badges/package/pypi/zipp + :target: https://tidelift.com/subscription/pkg/pypi-zipp?utm_source=pypi-zipp&utm_medium=readme + + +A pathlib-compatible Zipfile object wrapper. Official backport of the standard library +`Path object `_. + + +Compatibility +============= + +New features are introduced in this third-party library and later merged +into CPython. The following table indicates which versions of this library +were contributed to different versions in the standard library: + +.. list-table:: + :header-rows: 1 + + * - zipp + - stdlib + * - 3.18 + - 3.13 + * - 3.16 + - 3.12 + * - 3.5 + - 3.11 + * - 3.2 + - 3.10 + * - 3.3 ?? + - 3.9 + * - 1.0 + - 3.8 + + +Usage +===== + +Use ``zipp.Path`` in place of ``zipfile.Path`` on any Python. + +For Enterprise +============== + +Available as part of the Tidelift Subscription. + +This project and the maintainers of thousands of other packages are working with Tidelift to deliver one enterprise subscription that covers all of the open source you use. + +`Learn more `_. diff --git a/myenv/Lib/site-packages/zipp-3.20.2.dist-info/RECORD b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/RECORD new file mode 100644 index 0000000..0ddae8b --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/RECORD @@ -0,0 +1,16 @@ +zipp-3.20.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +zipp-3.20.2.dist-info/LICENSE,sha256=htoPAa6uRjSKPD1GUZXcHOzN55956HdppkuNoEsqR0E,1023 +zipp-3.20.2.dist-info/METADATA,sha256=BY9j659m6ayOwffzL5nKNwcZW5S5Ms2LVHQJ4qspY1g,3682 +zipp-3.20.2.dist-info/RECORD,, +zipp-3.20.2.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91 +zipp-3.20.2.dist-info/top_level.txt,sha256=iAbdoSHfaGqBfVb2XuR9JqSQHCoOsOtG6y9C_LSpqFw,5 +zipp/__init__.py,sha256=WFZd5W532NrC0tyPAEqzjk2xifPH7BePG0L2PPihoM0,11831 +zipp/__pycache__/__init__.cpython-38.pyc,, +zipp/__pycache__/glob.cpython-38.pyc,, +zipp/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +zipp/compat/__pycache__/__init__.cpython-38.pyc,, +zipp/compat/__pycache__/overlay.cpython-38.pyc,, +zipp/compat/__pycache__/py310.cpython-38.pyc,, +zipp/compat/overlay.py,sha256=oEIGAnbr8yGjuKTrVSO2ByewPui71uppbX18BLnYTKE,783 +zipp/compat/py310.py,sha256=KS3sidGTSkoGh3biXiCqRzE6RMEGH0sbRQBevWU73dU,256 +zipp/glob.py,sha256=yPjGfHwcJxUn0fld7I-K-ZQSfTaJBBoimCIygU1SZQw,3315 diff --git a/myenv/Lib/site-packages/zipp-3.20.2.dist-info/WHEEL b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/WHEEL new file mode 100644 index 0000000..0fde4dd --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (74.1.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/myenv/Lib/site-packages/zipp-3.20.2.dist-info/top_level.txt b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/top_level.txt new file mode 100644 index 0000000..e82f676 --- /dev/null +++ b/myenv/Lib/site-packages/zipp-3.20.2.dist-info/top_level.txt @@ -0,0 +1 @@ +zipp diff --git a/myenv/Lib/site-packages/zipp/__init__.py b/myenv/Lib/site-packages/zipp/__init__.py new file mode 100644 index 0000000..161a4fb --- /dev/null +++ b/myenv/Lib/site-packages/zipp/__init__.py @@ -0,0 +1,452 @@ +""" +A Path-like interface for zipfiles. + +This codebase is shared between zipfile.Path in the stdlib +and zipp in PyPI. See +https://github.com/python/importlib_metadata/wiki/Development-Methodology +for more detail. +""" + +import io +import posixpath +import zipfile +import itertools +import contextlib +import pathlib +import re +import stat +import sys + +from .compat.py310 import text_encoding +from .glob import Translator + + +__all__ = ['Path'] + + +def _parents(path): + """ + Given a path with elements separated by + posixpath.sep, generate all parents of that path. + + >>> list(_parents('b/d')) + ['b'] + >>> list(_parents('/b/d/')) + ['/b'] + >>> list(_parents('b/d/f/')) + ['b/d', 'b'] + >>> list(_parents('b')) + [] + >>> list(_parents('')) + [] + """ + return itertools.islice(_ancestry(path), 1, None) + + +def _ancestry(path): + """ + Given a path with elements separated by + posixpath.sep, generate all elements of that path. + + >>> list(_ancestry('b/d')) + ['b/d', 'b'] + >>> list(_ancestry('/b/d/')) + ['/b/d', '/b'] + >>> list(_ancestry('b/d/f/')) + ['b/d/f', 'b/d', 'b'] + >>> list(_ancestry('b')) + ['b'] + >>> list(_ancestry('')) + [] + + Multiple separators are treated like a single. + + >>> list(_ancestry('//b//d///f//')) + ['//b//d///f', '//b//d', '//b'] + """ + path = path.rstrip(posixpath.sep) + while path.rstrip(posixpath.sep): + yield path + path, tail = posixpath.split(path) + + +_dedupe = dict.fromkeys +"""Deduplicate an iterable in original order""" + + +def _difference(minuend, subtrahend): + """ + Return items in minuend not in subtrahend, retaining order + with O(1) lookup. + """ + return itertools.filterfalse(set(subtrahend).__contains__, minuend) + + +class InitializedState: + """ + Mix-in to save the initialization state for pickling. + """ + + def __init__(self, *args, **kwargs): + self.__args = args + self.__kwargs = kwargs + super().__init__(*args, **kwargs) + + def __getstate__(self): + return self.__args, self.__kwargs + + def __setstate__(self, state): + args, kwargs = state + super().__init__(*args, **kwargs) + + +class CompleteDirs(InitializedState, zipfile.ZipFile): + """ + A ZipFile subclass that ensures that implied directories + are always included in the namelist. + + >>> list(CompleteDirs._implied_dirs(['foo/bar.txt', 'foo/bar/baz.txt'])) + ['foo/', 'foo/bar/'] + >>> list(CompleteDirs._implied_dirs(['foo/bar.txt', 'foo/bar/baz.txt', 'foo/bar/'])) + ['foo/'] + """ + + @staticmethod + def _implied_dirs(names): + parents = itertools.chain.from_iterable(map(_parents, names)) + as_dirs = (p + posixpath.sep for p in parents) + return _dedupe(_difference(as_dirs, names)) + + def namelist(self): + names = super().namelist() + return names + list(self._implied_dirs(names)) + + def _name_set(self): + return set(self.namelist()) + + def resolve_dir(self, name): + """ + If the name represents a directory, return that name + as a directory (with the trailing slash). + """ + names = self._name_set() + dirname = name + '/' + dir_match = name not in names and dirname in names + return dirname if dir_match else name + + def getinfo(self, name): + """ + Supplement getinfo for implied dirs. + """ + try: + return super().getinfo(name) + except KeyError: + if not name.endswith('/') or name not in self._name_set(): + raise + return zipfile.ZipInfo(filename=name) + + @classmethod + def make(cls, source): + """ + Given a source (filename or zipfile), return an + appropriate CompleteDirs subclass. + """ + if isinstance(source, CompleteDirs): + return source + + if not isinstance(source, zipfile.ZipFile): + return cls(source) + + # Only allow for FastLookup when supplied zipfile is read-only + if 'r' not in source.mode: + cls = CompleteDirs + + source.__class__ = cls + return source + + @classmethod + def inject(cls, zf: zipfile.ZipFile) -> zipfile.ZipFile: + """ + Given a writable zip file zf, inject directory entries for + any directories implied by the presence of children. + """ + for name in cls._implied_dirs(zf.namelist()): + zf.writestr(name, b"") + return zf + + +class FastLookup(CompleteDirs): + """ + ZipFile subclass to ensure implicit + dirs exist and are resolved rapidly. + """ + + def namelist(self): + with contextlib.suppress(AttributeError): + return self.__names + self.__names = super().namelist() + return self.__names + + def _name_set(self): + with contextlib.suppress(AttributeError): + return self.__lookup + self.__lookup = super()._name_set() + return self.__lookup + + +def _extract_text_encoding(encoding=None, *args, **kwargs): + # compute stack level so that the caller of the caller sees any warning. + is_pypy = sys.implementation.name == 'pypy' + stack_level = 3 + is_pypy + return text_encoding(encoding, stack_level), args, kwargs + + +class Path: + """ + A :class:`importlib.resources.abc.Traversable` interface for zip files. + + Implements many of the features users enjoy from + :class:`pathlib.Path`. + + Consider a zip file with this structure:: + + . + ├── a.txt + └── b + ├── c.txt + └── d + └── e.txt + + >>> data = io.BytesIO() + >>> zf = zipfile.ZipFile(data, 'w') + >>> zf.writestr('a.txt', 'content of a') + >>> zf.writestr('b/c.txt', 'content of c') + >>> zf.writestr('b/d/e.txt', 'content of e') + >>> zf.filename = 'mem/abcde.zip' + + Path accepts the zipfile object itself or a filename + + >>> path = Path(zf) + + From there, several path operations are available. + + Directory iteration (including the zip file itself): + + >>> a, b = path.iterdir() + >>> a + Path('mem/abcde.zip', 'a.txt') + >>> b + Path('mem/abcde.zip', 'b/') + + name property: + + >>> b.name + 'b' + + join with divide operator: + + >>> c = b / 'c.txt' + >>> c + Path('mem/abcde.zip', 'b/c.txt') + >>> c.name + 'c.txt' + + Read text: + + >>> c.read_text(encoding='utf-8') + 'content of c' + + existence: + + >>> c.exists() + True + >>> (b / 'missing.txt').exists() + False + + Coercion to string: + + >>> import os + >>> str(c).replace(os.sep, posixpath.sep) + 'mem/abcde.zip/b/c.txt' + + At the root, ``name``, ``filename``, and ``parent`` + resolve to the zipfile. + + >>> str(path) + 'mem/abcde.zip/' + >>> path.name + 'abcde.zip' + >>> path.filename == pathlib.Path('mem/abcde.zip') + True + >>> str(path.parent) + 'mem' + + If the zipfile has no filename, such attributes are not + valid and accessing them will raise an Exception. + + >>> zf.filename = None + >>> path.name + Traceback (most recent call last): + ... + TypeError: ... + + >>> path.filename + Traceback (most recent call last): + ... + TypeError: ... + + >>> path.parent + Traceback (most recent call last): + ... + TypeError: ... + + # workaround python/cpython#106763 + >>> pass + """ + + __repr = "{self.__class__.__name__}({self.root.filename!r}, {self.at!r})" + + def __init__(self, root, at=""): + """ + Construct a Path from a ZipFile or filename. + + Note: When the source is an existing ZipFile object, + its type (__class__) will be mutated to a + specialized type. If the caller wishes to retain the + original type, the caller should either create a + separate ZipFile object or pass a filename. + """ + self.root = FastLookup.make(root) + self.at = at + + def __eq__(self, other): + """ + >>> Path(zipfile.ZipFile(io.BytesIO(), 'w')) == 'foo' + False + """ + if self.__class__ is not other.__class__: + return NotImplemented + return (self.root, self.at) == (other.root, other.at) + + def __hash__(self): + return hash((self.root, self.at)) + + def open(self, mode='r', *args, pwd=None, **kwargs): + """ + Open this entry as text or binary following the semantics + of ``pathlib.Path.open()`` by passing arguments through + to io.TextIOWrapper(). + """ + if self.is_dir(): + raise IsADirectoryError(self) + zip_mode = mode[0] + if not self.exists() and zip_mode == 'r': + raise FileNotFoundError(self) + stream = self.root.open(self.at, zip_mode, pwd=pwd) + if 'b' in mode: + if args or kwargs: + raise ValueError("encoding args invalid for binary operation") + return stream + # Text mode: + encoding, args, kwargs = _extract_text_encoding(*args, **kwargs) + return io.TextIOWrapper(stream, encoding, *args, **kwargs) + + def _base(self): + return pathlib.PurePosixPath(self.at or self.root.filename) + + @property + def name(self): + return self._base().name + + @property + def suffix(self): + return self._base().suffix + + @property + def suffixes(self): + return self._base().suffixes + + @property + def stem(self): + return self._base().stem + + @property + def filename(self): + return pathlib.Path(self.root.filename).joinpath(self.at) + + def read_text(self, *args, **kwargs): + encoding, args, kwargs = _extract_text_encoding(*args, **kwargs) + with self.open('r', encoding, *args, **kwargs) as strm: + return strm.read() + + def read_bytes(self): + with self.open('rb') as strm: + return strm.read() + + def _is_child(self, path): + return posixpath.dirname(path.at.rstrip("/")) == self.at.rstrip("/") + + def _next(self, at): + return self.__class__(self.root, at) + + def is_dir(self): + return not self.at or self.at.endswith("/") + + def is_file(self): + return self.exists() and not self.is_dir() + + def exists(self): + return self.at in self.root._name_set() + + def iterdir(self): + if not self.is_dir(): + raise ValueError("Can't listdir a file") + subs = map(self._next, self.root.namelist()) + return filter(self._is_child, subs) + + def match(self, path_pattern): + return pathlib.PurePosixPath(self.at).match(path_pattern) + + def is_symlink(self): + """ + Return whether this path is a symlink. + """ + info = self.root.getinfo(self.at) + mode = info.external_attr >> 16 + return stat.S_ISLNK(mode) + + def glob(self, pattern): + if not pattern: + raise ValueError(f"Unacceptable pattern: {pattern!r}") + + prefix = re.escape(self.at) + tr = Translator(seps='/') + matches = re.compile(prefix + tr.translate(pattern)).fullmatch + return map(self._next, filter(matches, self.root.namelist())) + + def rglob(self, pattern): + return self.glob(f'**/{pattern}') + + def relative_to(self, other, *extra): + return posixpath.relpath(str(self), str(other.joinpath(*extra))) + + def __str__(self): + return posixpath.join(self.root.filename, self.at) + + def __repr__(self): + return self.__repr.format(self=self) + + def joinpath(self, *other): + next = posixpath.join(self.at, *other) + return self._next(self.root.resolve_dir(next)) + + __truediv__ = joinpath + + @property + def parent(self): + if not self.at: + return self.filename.parent + parent_at = posixpath.dirname(self.at.rstrip('/')) + if parent_at: + parent_at += '/' + return self._next(parent_at) diff --git a/myenv/Lib/site-packages/zipp/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/zipp/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..efff034a1c89a0a2865ad71c17733dddc0b81756 GIT binary patch literal 14339 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 IM^=OV0L85-ivR!s literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/zipp/compat/__init__.py b/myenv/Lib/site-packages/zipp/compat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/myenv/Lib/site-packages/zipp/compat/__pycache__/__init__.cpython-38.pyc b/myenv/Lib/site-packages/zipp/compat/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca24f10a56c5b177b2421aca4c2288c00e09a82c GIT binary patch literal 174 zcmWIL<>g`k0$+=znIQTxh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o11_*(xTqIJKxa zCcs(Oz$C`8pui=uBr(P(KRGccCL}etAf_O*KsPh5xFj(rN4F}wG&jGvASb3Ov!DP% mB16lSNh#3Iroh;J; literal 0 HcmV?d00001 diff --git a/myenv/Lib/site-packages/zipp/compat/__pycache__/overlay.cpython-38.pyc b/myenv/Lib/site-packages/zipp/compat/__pycache__/overlay.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..437b52c4469a90ce3c2ce68fd0c54b1b5d1b5d09 GIT binary patch literal 1143 zcmaJ>OK;Oa5MDo$IHsXcRYF1_t;C_tp%x&7P*tL$f}jYZs*j5aayH&cA3vC+;xW@qO6X2v;bwOoSZ?UNtTszt~zeOMlKJnZ6B zV-%eDgd5xxhHsRs>6_(h`Bu5wzWtJLi`y53+hC1rGs~|-eMq1I#y5x8z8f>+i{UrH z9=p&CT(D7IgC>~c6=?DLEwV$nc|_U`_SGQ7eep>q3g~$xrFX!x5oL;ccp63m$_vkR z_a~vqIVcKekWRBvG&!Xp&?=hHet-VB-=|qZW0r*@I?S^?1)3{%3Lbr(tIW+6Y`bo! z)1kvOiK}>F5=)kO33?T5N~2gNX{J>=xa*>KDOd0M330@KF(w)-1ff^#)f`5b#h@gnF~o9T4!yT=?%`B7P-G-CGV?Q;VgJkwbYXPc zR$*(%MJ>yvfWkgwscIXAtw0QalC*(le-8JydnXD~)jQbRy8o#6Ov>jhW4$*?$VBfL zV%d|C+=?bDV?u15f5_uRNzv2HD^bz!&AY&p)4~Y?9XAN>YIK?{G0t!QL&#e^>mpyY znIO|3DBK{Z3WNKVAo!RwQEAd9Ix0~w2}j@Q5O;8vu^gj37max%o;!<@w67P9AmB-e zo|{$AiD*z*SW?WUieD6^{THR zh@Nzadf@!d2{|8s&LWCN2<-OsRUnMeyLyGBC?+=KRj!z*9_`39 zSzbuK;j(sGdVI{MXLMnBZRmWOOit*P*4J5+(HoU#lHT)DQ!R8ND(IFn*%s?k87=8n zXuU(ON}V-Sx5tN*1KrxaWy7DE<>> from zipp.compat.overlay import zipfile + +in place of ``import zipfile``. + +Relative imports are supported too. + +>>> from zipp.compat.overlay.zipfile import ZipInfo + +The ``zipfile`` object added to ``sys.modules`` needs to be +hashable (#126). + +>>> _ = hash(sys.modules['zipp.compat.overlay.zipfile']) +""" + +import importlib +import sys +import types + +import zipp + + +class HashableNamespace(types.SimpleNamespace): + def __hash__(self): + return hash(tuple(vars(self))) + + +zipfile = HashableNamespace(**vars(importlib.import_module('zipfile'))) +zipfile.Path = zipp.Path +zipfile._path = zipp + +sys.modules[__name__ + '.zipfile'] = zipfile # type: ignore[assignment] diff --git a/myenv/Lib/site-packages/zipp/compat/py310.py b/myenv/Lib/site-packages/zipp/compat/py310.py new file mode 100644 index 0000000..8264a48 --- /dev/null +++ b/myenv/Lib/site-packages/zipp/compat/py310.py @@ -0,0 +1,13 @@ +import sys +import io + + +def _text_encoding(encoding, stacklevel=2, /): # pragma: no cover + return encoding + + +text_encoding = ( + io.text_encoding # type: ignore[unused-ignore, attr-defined] + if sys.version_info > (3, 10) + else _text_encoding +) diff --git a/myenv/Lib/site-packages/zipp/glob.py b/myenv/Lib/site-packages/zipp/glob.py new file mode 100644 index 0000000..4320f1c --- /dev/null +++ b/myenv/Lib/site-packages/zipp/glob.py @@ -0,0 +1,114 @@ +import os +import re + + +_default_seps = os.sep + str(os.altsep) * bool(os.altsep) + + +class Translator: + """ + >>> Translator('xyz') + Traceback (most recent call last): + ... + AssertionError: Invalid separators + + >>> Translator('') + Traceback (most recent call last): + ... + AssertionError: Invalid separators + """ + + seps: str + + def __init__(self, seps: str = _default_seps): + assert seps and set(seps) <= set(_default_seps), "Invalid separators" + self.seps = seps + + def translate(self, pattern): + """ + Given a glob pattern, produce a regex that matches it. + """ + return self.extend(self.match_dirs(self.translate_core(pattern))) + + def extend(self, pattern): + r""" + Extend regex for pattern-wide concerns. + + Apply '(?s:)' to create a non-matching group that + matches newlines (valid on Unix). + + Append '\Z' to imply fullmatch even when match is used. + """ + return rf'(?s:{pattern})\Z' + + def match_dirs(self, pattern): + """ + Ensure that zipfile.Path directory names are matched. + + zipfile.Path directory names always end in a slash. + """ + return rf'{pattern}[/]?' + + def translate_core(self, pattern): + r""" + Given a glob pattern, produce a regex that matches it. + + >>> t = Translator() + >>> t.translate_core('*.txt').replace('\\\\', '') + '[^/]*\\.txt' + >>> t.translate_core('a?txt') + 'a[^/]txt' + >>> t.translate_core('**/*').replace('\\\\', '') + '.*/[^/][^/]*' + """ + self.restrict_rglob(pattern) + return ''.join(map(self.replace, separate(self.star_not_empty(pattern)))) + + def replace(self, match): + """ + Perform the replacements for a match from :func:`separate`. + """ + return match.group('set') or ( + re.escape(match.group(0)) + .replace('\\*\\*', r'.*') + .replace('\\*', rf'[^{re.escape(self.seps)}]*') + .replace('\\?', r'[^/]') + ) + + def restrict_rglob(self, pattern): + """ + Raise ValueError if ** appears in anything but a full path segment. + + >>> Translator().translate('**foo') + Traceback (most recent call last): + ... + ValueError: ** must appear alone in a path segment + """ + seps_pattern = rf'[{re.escape(self.seps)}]+' + segments = re.split(seps_pattern, pattern) + if any('**' in segment and segment != '**' for segment in segments): + raise ValueError("** must appear alone in a path segment") + + def star_not_empty(self, pattern): + """ + Ensure that * will not match an empty segment. + """ + + def handle_segment(match): + segment = match.group(0) + return '?*' if segment == '*' else segment + + not_seps_pattern = rf'[^{re.escape(self.seps)}]+' + return re.sub(not_seps_pattern, handle_segment, pattern) + + +def separate(pattern): + """ + Separate out character sets to avoid translating their contents. + + >>> [m.group(0) for m in separate('*.txt')] + ['*.txt'] + >>> [m.group(0) for m in separate('a[?]txt')] + ['a', '[?]', 'txt'] + """ + return re.finditer(r'([^\[]+)|(?P[\[].*?[\]])|([\[][^\]]*$)', pattern) diff --git a/myenv/Scripts/Activate.ps1 b/myenv/Scripts/Activate.ps1 new file mode 100644 index 0000000..d55ab61 --- /dev/null +++ b/myenv/Scripts/Activate.ps1 @@ -0,0 +1,374 @@ +<# +.Synopsis +Activate a Python virtual environment for the current Powershell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0,1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" + +# SIG # Begin signature block +# MIIaVgYJKoZIhvcNAQcCoIIaRzCCGkMCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD+OCVx/PDssJke +# lhLLB+DoYOXVGOQfEDGSHpBCLzyqjKCCFBgwggPuMIIDV6ADAgECAhB+k+v7fMZO +# WepLmnfUBvw7MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJaQTEVMBMGA1UE +# CBMMV2VzdGVybiBDYXBlMRQwEgYDVQQHEwtEdXJiYW52aWxsZTEPMA0GA1UEChMG +# VGhhd3RlMR0wGwYDVQQLExRUaGF3dGUgQ2VydGlmaWNhdGlvbjEfMB0GA1UEAxMW +# VGhhd3RlIFRpbWVzdGFtcGluZyBDQTAeFw0xMjEyMjEwMDAwMDBaFw0yMDEyMzAy +# MzU5NTlaMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh +# dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD +# QSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsayzSVRLlxwS +# CtgleZEiVypv3LgmxENza8K/LlBa+xTCdo5DASVDtKHiRfTot3vDdMwi17SUAAL3 +# Te2/tLdEJGvNX0U70UTOQxJzF4KLabQry5kerHIbJk1xH7Ex3ftRYQJTpqr1SSwF +# eEWlL4nO55nn/oziVz89xpLcSvh7M+R5CvvwdYhBnP/FA1GZqtdsn5Nph2Upg4XC +# YBTEyMk7FNrAgfAfDXTekiKryvf7dHwn5vdKG3+nw54trorqpuaqJxZ9YfeYcRG8 +# 4lChS+Vd+uUOpyyfqmUg09iW6Mh8pU5IRP8Z4kQHkgvXaISAXWp4ZEXNYEZ+VMET +# fMV58cnBcQIDAQABo4H6MIH3MB0GA1UdDgQWBBRfmvVuXMzMdJrU3X3vP9vsTIAu +# 3TAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0 +# ZS5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHR8EODA2MDSgMqAwhi5odHRw +# Oi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1Ud +# JQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0wGzEZ +# MBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMTANBgkqhkiG9w0BAQUFAAOBgQADCZuP +# ee9/WTCq72i1+uMJHbtPggZdN1+mUp8WjeockglEbvVt61h8MOj5aY0jcwsSb0ep +# rjkR+Cqxm7Aaw47rWZYArc4MTbLQMaYIXCp6/OJ6HVdMqGUY6XlAYiWWbsfHN2qD +# IQiOQerd2Vc/HXdJhyoWBl6mOGoiEqNRGYN+tjCCBKMwggOLoAMCAQICEA7P9DjI +# /r81bgTYapgbGlAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxHTAbBgNV +# BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1l +# IFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIwHhcNMTIxMDE4MDAwMDAwWhcNMjAx +# MjI5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29y +# cG9yYXRpb24xNDAyBgNVBAMTK1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vydmlj +# ZXMgU2lnbmVyIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi +# Yws5RLi7I6dESbsO/6HwYQpTk7CY260sD0rFbv+GPFNVDxXOBD8r/amWltm+YXkL +# W8lMhnbl4ENLIpXuwitDwZ/YaLSOQE/uhTi5EcUj8mRY8BUyb05Xoa6IpALXKh7N +# S+HdY9UXiTJbsF6ZWqidKFAOF+6W22E7RVEdzxJWC5JH/Kuu9mY9R6xwcueS51/N +# ELnEg2SUGb0lgOHo0iKl0LoCeqF3k1tlw+4XdLxBhircCEyMkoyRLZ53RB9o1qh0 +# d9sOWzKLVoszvdljyEmdOsXF6jML0vGjG/SLvtmzV4s73gSneiKyJK4ux3DFvk6D +# Jgj7C72pT5kI4RAocqrNAgMBAAGjggFXMIIBUzAMBgNVHRMBAf8EAjAAMBYGA1Ud +# JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBzBggrBgEFBQcBAQRn +# MGUwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA3 +# BggrBgEFBQcwAoYraHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vdHNzLWNh +# LWcyLmNlcjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vdHMtY3JsLndzLnN5bWFu +# dGVjLmNvbS90c3MtY2EtZzIuY3JsMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBU +# aW1lU3RhbXAtMjA0OC0yMB0GA1UdDgQWBBRGxmmjDkoUHtVM2lJjFz9eNrwN5jAf +# BgNVHSMEGDAWgBRfmvVuXMzMdJrU3X3vP9vsTIAu3TANBgkqhkiG9w0BAQUFAAOC +# AQEAeDu0kSoATPCPYjA3eKOEJwdvGLLeJdyg1JQDqoZOJZ+aQAMc3c7jecshaAba +# tjK0bb/0LCZjM+RJZG0N5sNnDvcFpDVsfIkWxumy37Lp3SDGcQ/NlXTctlzevTcf +# Q3jmeLXNKAQgo6rxS8SIKZEOgNER/N1cdm5PXg5FRkFuDbDqOJqxOtoJcRD8HHm0 +# gHusafT9nLYMFivxf1sJPZtb4hbKE4FtAC44DagpjyzhsvRaqQGvFZwsL0kb2yK7 +# w/54lFHDhrGCiF3wPbRRoXkzKy57udwgCRNx62oZW8/opTBXLIlJP7nPf8m/PiJo +# Y1OavWl0rMUdPH+S4MO8HNgEdTCCBTAwggQYoAMCAQICEAQJGBtf1btmdVNDtW+V +# UAgwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lD +# ZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEkMCIGA1UEAxMbRGln +# aUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAy +# MjEyMDAwMFowcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +# MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hB +# MiBBc3N1cmVkIElEIENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD +# ggEPADCCAQoCggEBAPjTsxx/DhGvZ3cH0wsxSRnP0PtFmbE620T1f+Wondsy13Hq +# dp0FLreP+pJDwKX5idQ3Gde2qvCchqXYJawOeSg6funRZ9PG+yknx9N7I5TkkSOW +# kHeC+aGEI2YSVDNQdLEoJrskacLCUvIUZ4qJRdQtoaPpiCwgla4cSocI3wz14k1g +# GL6qxLKucDFmM3E+rHCiq85/6XzLkqHlOzEcz+ryCuRXu0q16XTmK/5sy350OTYN +# kO/ktU6kqepqCquE86xnTrXE94zRICUj6whkPlKWwfIPEvTFjg/BougsUfdzvL2F +# sWKDc0GCB+Q4i2pzINAPZHM8np+mM6n9Gd8lk9ECAwEAAaOCAc0wggHJMBIGA1Ud +# EwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUF +# BwMDMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGln +# aWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5j +# b20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MIGBBgNVHR8EejB4MDqgOKA2 +# hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290 +# Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRB +# c3N1cmVkSURSb290Q0EuY3JsME8GA1UdIARIMEYwOAYKYIZIAYb9bAACBDAqMCgG +# CCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAoGCGCGSAGG +# /WwDMB0GA1UdDgQWBBRaxLl7KgqjpepxA8Bg+S32ZXUOWDAfBgNVHSMEGDAWgBRF +# 66Kv9JLLgjEtUYunpyGd823IDzANBgkqhkiG9w0BAQsFAAOCAQEAPuwNWiSz8yLR +# FcgsfCUpdqgdXRwtOhrE7zBh134LYP3DPQ/Er4v97yrfIFU3sOH20ZJ1D1G0bqWO +# WuJeJIFOEKTuP3GOYw4TS63XX0R58zYUBor3nEZOXP+QsRsHDpEV+7qvtVHCjSSu +# JMbHJyqhKSgaOnEoAjwukaPAJRHinBRHoXpoaK+bp1wgXNlxsQyPu6j4xRJon89A +# y0BEpRPw5mQMJQhCMrI2iiQC/i9yfhzXSUWW6Fkd6fp0ZGuy62ZD2rOwjNXpDd32 +# ASDOmTFjPQgaGLOBm0/GkxAG/AeB+ova+YJJ92JuoVP6EpQYhS6SkepobEQysmah +# 5xikmmRR7zCCBkcwggUvoAMCAQICEAM+1e2gZdG4yR38+Spsm9gwDQYJKoZIhvcN +# AQELBQAwcjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcG +# A1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBB +# c3N1cmVkIElEIENvZGUgU2lnbmluZyBDQTAeFw0xODEyMTgwMDAwMDBaFw0yMTEy +# MjIxMjAwMDBaMIGDMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTmV3IEhhbXBzaGly +# ZTESMBAGA1UEBxMJV29sZmVib3JvMSMwIQYDVQQKExpQeXRob24gU29mdHdhcmUg +# Rm91bmRhdGlvbjEjMCEGA1UEAxMaUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24w +# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqvaRLsnW5buglHGWx2sRM +# CMpqt+gflMjw9ZJPphvbE+ig/u8dPiJpVfIvkvN7V/ncnDrtKn67nbh8ld/fSodW +# IRbG6bLZFYbSdyJTZ36YyrOOVoBZJk0XS7hFy/IMmiQRXRFQ6ojkIbnM8jdb25Do +# uJSTccJhbqSkfXvsDlPenD8+jw7woSskafVqdqq0ggKr33JLGsxp3/aE8wFF/o11 +# qHt/sc+fWCRJJMCh6PK6oXmH4HSojj4krn5Uu/Prn1VNsBYmxhqSTFnFVZikW/gp +# 5BJLCijQPMy+YRGxPM29UExaG706uIk2D5B8WZ/3rNVO73dxn6vvEyltfJ8g4YqE +# cxpG5nyKG5YjHeAj1YcMVfp8EpHz4eWF2RqIERYixdGjL4RBTIrvNSz4Wo6jaxFi +# 21uzwxMX1gMoVnDI+Of1af6AsZ3k1QRXI28P1BUYES03u/Hztt24lQHwXgPKUSwy +# 1lN+PD9q7oCY6ead4rlRypIm7BHJloY2TvLeqPTq63H4dNOoeCL3vlSnF/KvACqS +# i+hkRYFVKm+S7w9WGQFdwuY17owQeUWJoyiIAMB4qZflEVGQ35WuZgZODjNqPF90 +# d4hjxO8t/jy1N+adAl33yB4lC//TU1TL8XG7CoC5ORp7Pk2XUvE/QKlMeGCHM7gV +# EPiK1PbCpOHiOmiPD1BmewIDAQABo4IBxTCCAcEwHwYDVR0jBBgwFoAUWsS5eyoK +# o6XqcQPAYPkt9mV1DlgwHQYDVR0OBBYEFPwqv37Uvqzzgpykz3siATu4jwfyMA4G +# A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWg +# M6Axhi9odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcx +# LmNybDA1oDOgMYYvaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJl +# ZC1jcy1nMS5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcC +# ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsG +# AQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t +# ME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl +# cnRTSEEyQXNzdXJlZElEQ29kZVNpZ25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADAN +# BgkqhkiG9w0BAQsFAAOCAQEAS3WhLbVfRrGJp8+PJj6+ViqNYq5S79gW5hYgSrqJ +# FFoVps0OGP1EEVAX9omITmaytAQ58APr/qBVIf3WVlYGqDo0R4b1P1JduIA+8n0I +# RYWx2RdSuNtaG8Ke5nuSpS5TkEC6YjVBFuliBkvdQD6JleSaNsaHWWfytSFYjFsF +# gvhKDaeqkHjinsJQViQ+P8xvBTaC8FXaleOPlZqyShm2wAIy/mDjYE2hUuhECL56 +# /qzTs8634m0dEibzuVPK5zzCHSzBM9TCSwpstTVl2P0Kmq3Nee5UTTDnR7Em9FIr +# dW3iD7S+KCkjeo+YN2mR/37gy/LRcw1yqu2HDbRH4+QiUzGCBZQwggWQAgEBMIGG +# MHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsT +# EHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJl +# ZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAM+1e2gZdG4yR38+Spsm9gwDQYJYIZIAWUD +# BAIBBQCggdAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIB +# CzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIKwuMOP9xUoz8IY/qorw +# oGtxknrVrNkjKQ2ycWeqndzkMGQGCisGAQQBgjcCAQwxVjBUoFKAUABCAHUAaQBs +# AHQAOgAgAFIAZQBsAGUAYQBzAGUAXwBtAGEAcwB0AGUAcgBfAHYAMwAuADgALgAy +# AF8AMgAwADIAMAAwADIAMgA1AC4AMAAxMA0GCSqGSIb3DQEBAQUABIICAIxhia1z +# q5Ne1RC0EjQ5Dwxz9WbhsGBoGrqEdFPevbtsrDkGfYjJSn/+lcm513FHHaswZ5Oe +# 4cYOdYx+CGLeQfKI2Ex8X32mHjBJ05x9WgrVjyNaZgmfEGdgjHQJ0HR8S2zslhMK +# OVmXPQ5z/yrp8XKyfcz1YxWv6adLEe5VCF23hQrg0X9kAtXRCHl5sYzIGdiN0ZtU +# qhF/opkiE6RUQbnQNzOdPBHFcmUGXq6QMago4PlajZ9qSV0Jmbz9X3G3m9g7OKUM +# pMfgcOMh6u8+CgTjfUvzNhQpzpMaRuscMbeLtdPt7Vx3O7zHJkV2IahCNnqg3+yr +# nrtuGcHgL2UjNCnByAtTZwl9gu8HbWzhfpM/Yeik7EvnuIJjpawgiTYJCdB4nQiN +# +zAChfqn5EyRJOdKYOD7Le7setZjSz2YhoLu9+ZTqAVIyEQuR+mLr5xZ/NdCtWM5 +# E0lfMACTM811zLBVtWUNDmGrjEsC5YXi0EYro9wxC1C7fr3zio0Riqec6yXGZIXy +# ZlmcpQX08x94wyhXDu6PxPROibzeH1oxPY8gqdz3GBhBVJ1syPwwe5hpq18npiFa +# kaUHnmTh5G66ob8KfrW0pLxFYtm0PC01SJFbneId4Nba37vJRz8ljcMOUGG9V1xB +# wYYv9omIwDcxvej2DriM1+G16VgXgW2i+HSooYICCzCCAgcGCSqGSIb3DQEJBjGC +# AfgwggH0AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENv +# cnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZp +# Y2VzIENBIC0gRzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBdMBgGCSqG +# SIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMDIyNTIzMjcx +# NVowIwYJKoZIhvcNAQkEMRYEFFeoNP35f0GEPRx1lIAvgGS7kQaOMA0GCSqGSIb3 +# DQEBAQUABIIBAEEQv1uOdJtm72308aLHvgJ/ydvSwEQtG/hcLBf9hlBcKtkAF/jL +# hAiMw2ABZ5EYlXkSTREecbS+cNluC0kCG1pei9kkVp+zqk2GxTY1zROE4a5de4f/ +# dgOPpLrSKeu74sbnhGZcaGKP8U2ZpJzq9zVVTGNICgwaZu2meszWkfcisO6GKBYs +# EASTWqWwd89pNI/ZU6Dxjy6JMC3q8dOm/PwmN92/wd8rK2xJuGacIPKlI9KaMBmZ +# 67jWuSAyk3T2xW4u38+mo+JSayoP7Vzksk8mIy5JOA4jjK/5V93psJP0HGZoznu1 +# aiQFqc3z8uRQZZXpD0YXo6Zlkr9fbhoRXPQ= +# SIG # End signature block diff --git a/myenv/Scripts/activate b/myenv/Scripts/activate new file mode 100644 index 0000000..86517e5 --- /dev/null +++ b/myenv/Scripts/activate @@ -0,0 +1,76 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="C:\Users\PC-04\Desktop\DuckDuckGo-Scraper\myenv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/Scripts:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + if [ "x(myenv) " != x ] ; then + PS1="(myenv) ${PS1:-}" + else + if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then + # special case for Aspen magic directories + # see http://www.zetadev.com/software/aspen/ + PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" + else + PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" + fi + fi + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r +fi diff --git a/myenv/Scripts/activate.bat b/myenv/Scripts/activate.bat new file mode 100644 index 0000000..8847d74 --- /dev/null +++ b/myenv/Scripts/activate.bat @@ -0,0 +1,33 @@ +@echo off + +rem This file is UTF-8 encoded, so we need to update the current code page while executing it +for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do ( + set _OLD_CODEPAGE=%%a +) +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" 65001 > nul +) + +set VIRTUAL_ENV=C:\Users\PC-04\Desktop\DuckDuckGo-Scraper\myenv + +if not defined PROMPT set PROMPT=$P$G + +if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT% +if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME% + +set _OLD_VIRTUAL_PROMPT=%PROMPT% +set PROMPT=(myenv) %PROMPT% + +if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME% +set PYTHONHOME= + +if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH% +if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH% + +set PATH=%VIRTUAL_ENV%\Scripts;%PATH% + +:END +if defined _OLD_CODEPAGE ( + "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul + set _OLD_CODEPAGE= +) diff --git a/myenv/Scripts/deactivate.bat b/myenv/Scripts/deactivate.bat new file mode 100644 index 0000000..1205c61 --- /dev/null +++ b/myenv/Scripts/deactivate.bat @@ -0,0 +1,21 @@ +@echo off + +if defined _OLD_VIRTUAL_PROMPT ( + set "PROMPT=%_OLD_VIRTUAL_PROMPT%" +) +set _OLD_VIRTUAL_PROMPT= + +if defined _OLD_VIRTUAL_PYTHONHOME ( + set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" + set _OLD_VIRTUAL_PYTHONHOME= +) + +if defined _OLD_VIRTUAL_PATH ( + set "PATH=%_OLD_VIRTUAL_PATH%" +) + +set _OLD_VIRTUAL_PATH= + +set VIRTUAL_ENV= + +:END diff --git a/myenv/Scripts/easy_install-3.8.exe b/myenv/Scripts/easy_install-3.8.exe new file mode 100644 index 0000000000000000000000000000000000000000..8e5b591513fd6f420352bc826e175692a9eadfa3 GIT binary patch literal 103317 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 CsLGT8 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/easy_install.exe b/myenv/Scripts/easy_install.exe new file mode 100644 index 0000000000000000000000000000000000000000..8e5b591513fd6f420352bc826e175692a9eadfa3 GIT binary patch literal 103317 zcmeFai+@zrx%fTFWXKQ_c2EWah>Q>wjhAS&CJyKf%*Y;@C{|FasAw>yRVyd#5v-_* zJ82nqr=_iJt;e?Zv^~|{Z2M~^pkhLRgqvKv1+j|vJq~KTB|$Fx{XT0?LbRUqIe);* zN3-`{_w}r2J@>Vy_L|imugBvl;D5*Qcv^YNzp(oIzyIkWd*q~bBR&5ZzT>3Uyu^-^ z<}Uum(%_PY+rQp$<88sZ8^86f+l}B&HwPP%-wJ-?Tfyk%R|appebLQlm6Q~f=bHZW zw^tv|OgQ@3!2jQ#SO1vJ_ebBE_gI&D&VB3`>bdZ-{XF;A-S*f4o|y^GWB*X;b8_Vu z<(_rw`PFaKEtWRFID*RK1}f$1QqpZ?;30K$De~&EC+2yk$;;|I&u{1OY|QiQ zXDEaJdh$HCGJxR69?uDbiT{U}9*^g*?ohw9@L9&q%MEhwd4)eRp#A(WNHFAI(BoNn zR>PtjjT=3lF&B_Qo1SX^f0O@*{0oCFXSu~Z&3t$&8SrSHC-5BdFYNKOowdX*sOHFA zJ;fA|@zw|1&M)`n#1@1t=tT9|Nnnq0)dt- z$=edv%kk8erM0PM zI#FJ!r=sOS`{XM?Mqe5Y2?kM)^ueOR?GVQopIXB^hn?}}Sn?0+67-FE3MZN@~)=bS6$o{5C= z;#zcX+-Z+jP&it1IJ--?jPh#T>d>tP^lxqq-q3NZpE5nQqC7Y+GB+|Wa#iGN-8w+O z;e?e*q(7+vVV8#M<7{MqVXFwENrbT}K^9wzfr3rZoLTH?9MS#{uya>IlVDIX4i0tMCNIAYd>kX4;*2R^sZaaMp|VL z+Yef*d#P7(lo8l>kMMZZG^|*U0!LMwH+Dd;=x46K1`;yYgteJInVEeheYzc;<8~yy ze1~2l+M1ZBKIHof$w^-!EX=qcnYAaqPap^}{Z>{x)TCx*P6kJ_U9*$cZm%1i7F-9ax;QlNDnZoBD&YHJ`s%X;n-;s$h!4H z)fOo;RZrbo9&`eayzKF`v}w)Ffb(hD3fa3sycsh1^xX2rvW@2Fa7aEaKCNzhB&grA zFZosVoh^5pPgwund|Wl39A71Sp?o1r+INt3`;jbmOIvbt)~7mE?bvO@No9}B>3db5 z(56q>#9pbq;re599o&~;-Fiv44myE6+Skn~o=$eQaFq2j1vQYagtbk#USuavH5Zi! z+2ZF@*6OC$Vka<;ce8((7JWrF=X`f>&Y{1s>`n8)RA|p}R>`;Hd7hRnhQDf$6Zr3a zNFdTYrKWZWohTJRmd(@Cx0W|Tn1o|Mm_|+l=t7ucOBiC+o~kWQ;6dsp(y{%KwX3B8 zt6K*ebJj6mKDH?`vbFlU@cip2Tq`fF7@=hHl5-R${tS# ze&tqfr1IKNDeMH^QmxMGl0r$h(1UKFYo*X9s!*F-2wK-=&v6U=#4Yp{3hC*R-;=mb zz}Ff3lZU4h_ytu2&F3e8r7jRz5)=a$b0tkKlOb+hs)`iT?;a~C>+8X2Y_vALC*ZOdiM7hIp? z1fF%^IprEWA-(b~QBnDq#}3^)7%LLoJ1q&jVCQb!5Gtfy!F5 zs8MarY=1qdR8empoNSyNv0kuGK3>*4IgYw7^-(fC+wTM(kQGsNlH2u`ea48m7ZmNw z?3A|Bfp!W;T176=t)2ExdT{C2Zqi%Y0EF;@jr{`gWo6o$k<#TT>8zC6Yi zs6!3=CsN$poS!RREX7l@!P}CyZoN_;tvSUQr>z+w>Hp!T7wKk4J{ePz@8mM(s|>?m zA5Be>Od;tD4h_)pzsvm8_}~IUWKW{cdh_DR${B%aHOVd!Qw=Ghc?s z?BAe7q*cq!es`hTFTr~A-V-Mq} z?1$XMVi~u###_(C-_ldp0b*#dZruuUTAPJV2!RMffEU~VFK36(M^ab*$D0NkD zG+pl(3OPKHKC|l+$num#dU1aC_=xqK3^{{116qxYo15}oW<}XI08#6Od4Nb5xzL>= zI;*dl{u>glT?TEP{{XMq5xo467u|dpu%?$FpVmiG=UuhgSABY(XO4XXP=lqW1Ml{# zb<6SJTOl5L+LXq1>!=W}Q1{ZYjWs2P)>u5P#>P34m?d0vf^h` zIlS@$MffTXC9Do+vNm(XZTiaN zks;=mpO`#74w(<8uX*3T7B;BH@hz~1anypSmIC0Pq15%M3-r1UJ^d4Dm9`q`t~Ol| zb@4Kh{+%RLwZ+XXPTV?zl$)NDU;oi#am&&Bb|=yiQn#q@!+h(`mV~!`Am!*6QuvIg z7x)Xo6Z;ef1ukTnCqrU9VeKcIp%CL4QUZcnodAZFiF8RG&;d7)@BnN=#q>V)xYhM$De|f0uvEP{_fXX!SuFC9D zWsH~kfH0o!em!F^Ie~FN&%x|DvY$)rF{+I+>Sdp%CpLd}TDIx0zd`Z#H_U*NjgC$F7CsNi@80u~aJ$cIQV+qZ|W6z&waz{Rb)wU>D$ z1NP4t_Y=}ps?46kyVZgG*4ik2TS~1_vVO|TV2uL$F0^l!QqYQx!D~CVXNT8^HW;IH zvz?ujCp+f@5|RbF)!tFnhU^5Ty+HMwu-bL2WOYTJN2DivkHYJ*_E=g2AWqv!qF#Nz4Q9MKQbxf& z$$RY`XHq3KvsAZMx5-pf$LrS0R`oX9uZIE=qzYq<)!0Q+i_eR3AnCXNS|KGNX14UMskQ-@Lkb3Bi6=R5ze>DKv})<_TGtu2w2Z+E3((UnLn!R zJ;rMy>#^Ru?avUl5+Fq|R#P`Rd9hy6r>!~RqI&aCq@jqv*DNcjH#>qt`pkZn)UT4- zf
    XNM84NA?KShq{f;+4B$#gw_S^y0f5NYc%ztt?9O}apgb3(q-#y??VXGJnv%XM=mgvyyy4E31dQv_gMeHRPFtC(w??p17wq$vF4*0z-HPOC| z%q!i@Cv%yFt>dYfy+i3Kv*=Avjn31}4cI!`{kpRazHIq^K;i7$qJpLa7gHvd*1d77 zE0GSIkLe5|rMLI{%-1Hxt%42uEnDU%tkHRK^D_qt*!=9M;j3jI59`clJ)F4HCauSv zEy<^7Pi=d_8~d>fJ)Xwt_n!)HGkkWWT0wh^jFKhH+z5xx(L`Ckbjd>{pDGKS#_?} zos&mB17C4rjf!d>9DVokW_zi9))#ABI#}b?9jyJV*6&^h@ow=daG#nqz>)~1~; zko+Xx*R2%p_Kxl0d18kWLL_P}{O~&dPgd)xyTjO?bQba~8CumQJrzUC>8%x7^-+$y zjInFrO#|Fz6Fe?+y9h47zlb4(Ha84I?5@hb6t`j?OCQa?n;SvUfZwn4P%J9Cx(EV6 zdkhs4b^AfQi|w~*=84kSlj_!~EG0&{DnWpa&^v**SU| zLr4uVOjt7j);c}^`j;$A zXK5BhKT5%5sXdMnxSKh1Hth){av%U8IVda=;|w-IyL7rD0>?osu-gb(7>{|&>dqG1 zyT=X!MNePe(^MmUC4KhY$VVbR)v`o8>_Z~3TdbhP3R*<@g>IuZsgS^d&^}r4w%QpXrxzPDoi}u}j8Ck+YI7a7V z&i2MjY3{UT{)n|X0sUUASJ-+U*S%=TpSIyez0!{0sP_2=#rEnd+vMX5Wolotg1`Z6B1G zT%9|SS{RHdsXcCesOZpV3F|dMmW6^W*9tR~)k#j)g^v^^tPL2(XGz~bf&=C-XcDj4 zvt@I=hTgtf;bsD54Y^;8#M|x5K>nP#eYKdftWGR)ZPIvHI4vX*bu?iuLYz^;x3V9i z&>)J{!r!b7I<_V|EHHG@-<`)CNQKK1DLr_l>;~asVlwQd`2n4y%zhg)QEseD zc?FF#uL3kFGoW)M(u*+qo+RV%omCdrTE0U8S+Pr4P+76l&Hkgt$$A~;IoQ}iAKK;9 z=jD0K*C*+>?3o|;j_!gTUKfBvkK$!6FCZp`9;8t3jOu%nCrc~irIi4J0>XZdTMMU- zdyCt8Bh`(@@%Dws#@dNN$b80O!=5f9xs{Pv-L;kwikyLNr+qmXi11^*2=ph#QFf%{ zM?%6j1FNa1G1sGVY_A8Fex*|&?+N99sXo+|6y+q=DvX1#rKNDDxn+4|Zqe2h=-E@0 zu`2;ZgOSZGuZ&vlPQcs@+_r!qK5Y#d+M0H4&9*5b?TKomWY1XDzFKP+3KMvg9BY4r zS>%A_d@|K!seSI=A9q6u+nTvo|%0fvAaH2GtMZBiCz>9VVpro$;a@QUmv5b z1L%6=p`XVTCp;_d*@`dL%loo=NmY*)#wB-V#l|*H+F>WhQ$=wtDyq*^@NU2+HB_g_ zvGZV#MVHw>WgfXHP2pAW=^B7&kH3VEyZpj;?=CRw{HSf%<**#*+1V>)om$$K@3F2d z>)YU`c(SNsso&b1!PxDwLZHg+_`j?VDsCz5-QYE*3EO2fgCbp=lexbg+)kCK){{mVx6&MfmABcw25g4J($ zt-H#R*={>0&vPlgtDXyte5bRbFC9Ift#r(cC^kgsg^&s{B%-P3_#xB)Bv(F1R%!?V z2-t67CCV*W1FtMtcD#Ka<|DStHoK6KxyAr7*SofWYH1!DrK__H+N+^2K`T-gvHF$7 z_K1l28M z(XcyWS2h3^*kq0YBw}^TfDe8SDmzCGLS+H3GWs*oK8wsld4|tCl%M>UU5a&SHFh=gNZQ|> zM^efcgl5_^=L)vmIoxgl)!6fRb0@wdrUM2xTSpeSM9ktfWGaR-LRe^(eVTlSI`0^# zTO;btX?IRfYOcg*-=(n67=~2q&+gPMFV@rL`2*~ya;Ty=xc9%v8Zomb)3s*3Anfo(z?eYjhl*Y< z=IUD*V*(@PI#yhyZTrIa;dH5CqBV}TPoue<@_Hh#76=1p#n35L6V#y87}ZrGb*ekU ze3WF2QUS$@(ZSh^;zYCeAp3&x|1;ao>0PlZYzJEev?GO14;Ml{5t2E|eh4LcKslMp z`+&(PUeSexz*9dXRe;LbmXB4-@afLhWQGQkrS&oDE|j_=tYkO9cRG*B&Ovi0xU7t8 zqwNbRmD{SF40l9l_LAO6nQ2^TFFaiqeVf&9UoQy5*7!r15p>y>i!(l&$zqh6Jyk|t zWdGxU$P0B-J!V~*$KBORWmGyn`}*_rg33cS$7uWSbe#iBBFW=~-pVPlwiW0@!0 zWA~!ZDC%)OwAG~^cYTO~oQ<-84XLO{ZZ9hDa%=51;z;m)^BKp%D!4COt=IW}&Ii)M zRr2t*H&sjcQu2+pBS3`u8oeypUA50_6-(^MJBHUh(9etZlMaR+w#Nb{R%Nm|y$7{B zA6@;-DcDF(porZO9I%!QpUCH}SU23Fn{q|-r6}CNV?Quh^cAYw^R5L!>^id9gGFnp z=&?_th!gnndO)7?6`aK$4KWkm7t@-3!PjzS{ZjT*ER%NmRka)Pj;-;Z>}g0V_YQp zYou(qZ|Co7cY$>PU&#WC9BB8+IAQCVJJ@it7O)4rN-G%_K);dUJAsd%;=}SKj$;V) zH(z8cgq?*VpU<~%Y?Yac-I+e;c#MdSpQW1mG!R8@C5vbnOseuW6$VyJqwP=2-am-1DT+UXlc z;_w1bTc^*%8^l#A{L692iQ?zmn|oj41dcu_#;7Hfb64O&03trES4al}lb)89-NJ`C z{Za}ck+|g=D2KiI3A`rK6@&)=yVPmgC}W4;s+gi{{qfW-W%1O~pu`sq)kVX#)}8)Z z>l`am5V!8EuC3^+wO&i$oQXKWo>?oC)tf8Gu4TJ${_piLyT9IJYd-y_X zD>@$u8lkE^HDm9|3Zk-Zm@IS&DQ#%(}I+ zIO~mC8G#!v<^cE{+1VEI(ihy)_OZ5&aQ!>H~dqFsqX9wlJk>ynC~1l-#%>a%-7bvUzlA& zL&=+HBr?Lu)|r{P#^q*aq%n;yPnW*Ong@qzE#twFzD`dYd+#gsGBR6(H6mFNv%0i( zy(6;~@-5-{+MaBIWTE*0 zY4$)3=o)DSf)I{pZEc}!2Ce0XkVuLR8(NrffazMxGB;x1lm zbPB}UoYvzph;u9G=?#~e$$5R@GEXCGn@G<(V)mCVD@|WsYOg3)Lv0qq0NYzD6|K=9 zAyp59?Io;RdWmjb|0 zxNzx-Wm3dC;gEf{T1r%AYCnf}l0~1jpqdjffE9t2-uZ=J;}|WG$YH zf!Hr}lzC#cN&l(5RP4S@2YSFO22y;GheUw2>@NV7MBTFXng<=^oad4Cac(YwgC)uh zbko-R1rUEfO@!zLEND7bN{A!NEFn>lIiinB)J%RSTDNd_NSYW??E6>(k-{&?1xrC4 z!_w+P5fxzUhyW6u$_Ko?7Dbr>VUvQH&!A@Z1l?-!%Xm{QZp#B-!nAUEP{$=8jG?Du zjZWaUe+mP(`klbFyh#VT6VQ2ObxN^r7n_G11f*?t4=RCfrDgJZ)pk3%pT$Z)R4&jV zoDn{>6w>?#)*Z1yBkQ>2bKO|DbtJ9l*$=Ug;A{VYgG-uV2!as)i)Tq1O21u2QAwyU zXAopOE|iG1H!dRWN61H%k6POX?B_cKTqh+&q)A{`4m$Ae&#UHYopm-JKxA{;*E10K z1;%UvauB{SsE#Zni(!d9o4AE@`h>t^%ZaAL{!o!o;k3oQyUhMG8$L=$-ZT40EgRN~ z{^RLrYL8N}6|*&N8WiSB+B)Gy7cv*j6e4z{-PMc<+$> zQwQ=#tNfggZ?AprkTTxEGWbtskb%c7%V-4_1&Q>WQWh-4kRmB~kZT9~d{o7dc#5V2 z-K=SCRa-5tK8ch_0Hvw+(Ld8%(?-b?^20wuFruU>nH5NvMJZPr?`#kHempMg&y`ty ztZ*~na4X9k!R~cpURU9MDy-89g#Vwk=ZlPhNHFr#zz%Wv?Jr1$Rf*G6ofI z;2~E@0}3)Zo-ddZjEfQAGodmQF*fJCKcUX0n!N(NbCp$8yz6xBv4d_4#O-L&eq?LY z*}tre{+@tB;}8X}oWR(>D_ADaG^bySjO#IwQ+C>qvcN3jHX%8G@ARVYc(Q+xk74eI zAl~QnIRxm>*=h9j*Vv(%^?9=EiDeXDg>9V-XRq3)r|&L}q-PI9Y3+!nt}9NYt}Cej z_>X#e`uJW-R~%VYFlnV%1T5#7be zjpfE95ZwC6a+kO@3bC+!XMe&&5w|748oPoOFA%Z>q5AFL(2+%|7asynU9nL^C6=tr z!^r2fhdLTQT@@|AYBPbJL2;g4l|4;+{OY`@_IO(~v|-tpNX4#*)plt*Q6K@Ud4CVu z50=vf!3C=do7FPhh(kdPKFk5S;90vUn8RIfVoO7R3dGkFr!yAW}u8J1DksZlrzERpZJQ!IO^}n&QNr06t+^n7+ z@x~(S;4n{iWiJ-oylf(H_*Enw4x0VrmicKWJtLSc#yB@_*+^OedB4yGA~=A4wgHD> zTCETC_tTeL`YQ_v{Vjw3vI*{j4!?nyjLEr29qdPo7&go*7u|9c!eJb*o2_jiuSb0N z53~vz-?~-^nSCt^F(!mxNt!fLsfQ+RgRU4e1kES(I3qCZq|Jn!D zw0!?11Ss`gRoC*}ufAB%9*43t<@RuJ0) zGH#@kPc8(g=Aom>lRJH5c;^c#qU`^4zjz|v?Q!n`Vni#= zgT97LlVcx2u5b2|)#OMFrPd4xQ51GMfeRSE?7z23kbN1nNG!@FZc>StogjjTP!_x9 zB+&bwg4FfJ(HiKv_MPvk64CNgsuz@>Vw_n$KhKz|JzlLnuIGggE(=ubq|FN^GN8ty zg1Gm&c*XYQrwlB=x-9vup1$P7wMS{7(eICYH>y1AvVx|}ZxPrHr)Q6ma4 z@r`dSfP`d^Z#_;P#jOR%+*x1iD85pc6h~9_{;W53yD=4+GjZCdAb$Jn1y9ki=kj#)^il#(BGqNaIn`gwGtST+ zAEiAW$qVgTHV%?-?!?F{Z^Zjt#GfarwchQaU3UQc_WWv`FPI1YwceNG6$g?}0Jo+O zWNI=}l)euN(2G7OF-AB$ljEOor}l(9wI|%EJt0#|RJ;JV+1#bG(<@H@WSvY4mz7qZ zB4(yNKVI=%vPV#(0cRrwl)Y0eQqLX zDsu9C)+dDiB@PllDofO|MGJ!|QuzB)IFUa22On_k#~DuWrJEEFZI}Hovq-5S^f=z$ z@5uhi*IGW~(d)BdEqShiWxdcCfbeOVSjT1-qXiLIddZKx- zkHL`@@C`Tyhc@s%Ft&m3fx)@oLq}H+u+`{LFxBX!2sRlR9(2_mUM|fY9|5rL_@a3$ zWq|lz6}?988u0f}g1|g-Fy^-zcVcar0AAu`HEz=_a{#P2n$@1<0^PD)z-}?dm^FkL z+urA8b6L`Y{bM8#-re~OmU!*CV*e^==N#e3o=JgQluwU`-hzuJ+H} z@;XURH_B>N5Et#H&5>e!-r;^qGxj&#cUc_xakVfcSn+sst$;yBp1PVO%aQ{2bSa#^ zYyNr{4SYv>$g7#vV;rYjn(|D@Y<+e>%9-~9ZhRJ(iw_*no60%#tmJeCMfO||&gY~| zIRRp1b;Ud6NWD8K-7`cHA*NR_P=v+!r~<_YHd2Q%w&u2J^;JPiI6z-8`L5LMP>IbCbbi z=H{k8c~D{MyQ+c^T~})AV3f#Zrlddt+{C}op*xA+s_fJgZDiwjOA>ABi!v}hWvV1g z&ENhTGXH9~Mgw)-MU?duolW_b)wrF&uHQnZONwYg3+~u(oD`lrMv{5|8=(#mXKfWQ)QJ!CZ{#! z*7-l&1(FW^X}#1w2fP(AQ6Yn(K|~NM`P3D1Wpi8cYQZ<3J%{%3xascK4EJlk`*oiC zwb=bS#r;w-Pd>ZM{aWtk6{#<)Q2|t%J-ADnwH}s)wC`u@c_`WUHPW9}d~K&a5umb4 zmaLL%uVF+d2)`Ulohxlp2ZZKf_9IkW4ac^Tf!#HEWt6Huu!=^7=$t7820b+W4tBUP zo>od^?}qw~k>!mbC8}$iT`a6Cu%5Ks8n@C5`j5R0QAF`D z6^5hmt5gO3%yW-J&rxwdg!yRAe^5}Z-EWUo1HW#+dDm!9@>FfjJanU{i3J@evF#gz zjdw$v;9a#nIZ2=3?(7n6O>L=Cgo*cFda}|M?O&pjfIh=G@>`mnE+yDKLR_`S3;fwL ztl6W{8iNrvPYG{BZ;YWIM^PDXXEP!BP|@J@R_xz9m3N3yiPjgY)C0BjrdMRoh zRBK|N#hR=(r{`lBCXPv@&`#g`{Vqw5t~~h-UU7J|JSWI)m7GUUPT(snupAAb=}I83 zHM4IdccjWKQ@Q;L4-;0ejAE*UWhh0{`~a~AiB=CCZCGO8NL-*^Q<%)pzAXtiz{#CJ z_phX}ZaXTOsY2&jT7DAaHv7}f;rqAh`!9SaLLVo6iI8nPnXo>VY2$-X&&t6*F}cc~ z$UexD%>Ffvr%TS@VXtA+lcc*zHInpOl2*rB-ZV59I;HSmK9i?(`u>F;o5wuej6SGJ z1iIA$ec1cgmxra#gZ9HKLbc}ifkFB*ul?Zl zLTW)7QP3nIMFI$3Vov`hO^~sGj3(zWBi5RQoO0^_ci0gkPmV@0Wx(?vlMZ*tA<2Ke zOcz8yYAvHFh{546Qc#^0txui*C^(2u$_c#i5UE(_-l3nAGStB|1`_BpC(GQydGT*@Rj1%?-R`Oh++QUr5mY#$}KLpeadINX#p z`^7|KXreo<8zm`sy#2NR6fpJ+<-<1x^Sj)_(uae6)riPSe|=4rG0NGX&ZTtZH+}XA z@NIZY%u?a-%72tsvBdV%UlmX&&x|-~tetX8fq>5mYzN}H^*x0OqUuLGU4xwv1CMk6#_RfR>YfvD(}syCLN}&(DhaJQAq1BULg|zCyc}#t5I~K<}k} zPJQPL$5RwdHF$YD+f%f8#yRpeE4s2_CY$L~jC_>k5dWopZZpVR4V$czjbz|CHp*|( znh9hE#!nB4Q;9S0^G?_nyIF-GXwRlRJ@BF=kO)x-!O{15f^3YHQ8kfXq3uVy83i zY>Jy3{h>oEnq$`6aSP+e^dHbDF5-|Qhd-x;z|XG~{pU>u$xm z;Y`?Kwtosq*P;a9{O$n(y{)!Qtw2#%a?abTS0jY=Ur(J8;`~jrP?`*9i_Cs+(kJiO z{t}_moFh1p8|DTO*olUUvn8sy-dPZmfg@DRk2o9krb8f*NBf>mnpM(4#J}5_>90YzPMMyObkxFb;RXjy5!YT3klf^cMJ16@t!(5pz4z(=+w~_NYs(lT(S5 zEVqcnIfGuT>DN#+n*N0ix<^B=MyzZ^n{^-(I*>#P8}zjh0}K?7DKu^z@c-1mT<$^u zY(_eVF{#5qJM7cm8XUsuHNH0>=66gMCMocarhnxQVB$6*^41{+aX1n>oTT#qI*7qI z(l5e5b}r(a8iP8Byu+Tx=FY+3Y>DAy6xX?e zN0E~Shxo*Vz{pZaU=B>lO7xzWV zWM3Fxv1%&r#9e>SnfBB%(&Lq-5}@5>pMC@3@tsM{npxJ|cBf|UKf;|`*+O%6S&(xa z=*guLGhwNVFsk(wy45jBctGC}9zxI$mN<+tne!kG_Se~l?0KIAXa^-`KFlCE1F+40 zG{7{v>>tr@U-yKzV@8}~Fjp7sDBhx=PXrlv|k+1G5T#itqr5ouo zQTGPGoy3(1mzvY|dyK`GTBG;(&LAA+dV0NKvkHCnIarS`wTkzvC8~;;NAi-#* zkx-{G#n}vNF3(ON7A-l3B6#iWac*Wri%JyDRBS{~s5VBwPO~d%*6GMB;jg<$A%HEd zYSE+aT7eMUG$hgg3uVEOTP6Bm70whIo|rUJLf#n+Uze zbp>z+ZB{!??&^%$Gk_L{hxhaUu2if$;yf=BbgxmxNuraS+V16k-HPp6S(YW_Y2GdZ zlSaTZg-#X_us*Wpy6zb(7o6f~zvxKMJSx#qb6m!~bdYhgffTI%2fhh&&&1_?*-IQA z;Ygs?e1H+jd4PaWsd1Q|wU)gk5t{jyj8%$kQ7?pEw(%0j_g8B#V(JM3PZ6!eZf}(- zK{DaS&_V|!T!^bVME$i_vM?NzOWtaqB>=0QthIrv#zd~!9G&CFiguG#_IBQ)sbKar;@ziiE>xu^+K-d! zo~z7`upd<)(0Pyj6{*(+rhGo+DR&yFQb>WsIjPyGp{R%_`&WzsQXz3puAUr|`4bVl zg)>0?kzP+h!rEV4k&M_I&P)=b?mY)RVJZQ~jDw8bb_&#TiI>t?hSEsI5#n`-wB6Qc)`tX} z-UCnCC42A!<}0UW7pw4fbVX&ile5G@>&2+mB_hFhf53vfuo%KZmE8cv48Oy1s1A8V zFp54aXYDpLy#Fyk__u#U;-kz11n!M4m*72rE!RcjelJT@?5fpfJbQD(I^kq&uAbV^ zvrEU+N19&u^wg&R6BE4?+3c0nWDi#!l*_Fhe&A6`SA(%QiwRU-66Cn3OAsuaSufe& z90@AUF4OCJdfV@V;;r8+>pq+=6w5}v5}l{FJ#3WN|E2OKlb3zH%IR$<_&jx&zqh?q zYfh0UOJu%wR8M(Rv&-QB>1WDdy3mguYwP$o*T~jDv2<4H2$Bvju&octf_3z4Y6cm}kTvG{#o# zv7W)wlW%XTV^)w7t@#7NUxXJTk1AK@WygqR8)n9lP>Ncc>?+lD=!n*`iIUpmVr^p$ zK)_o?O?Pp_^?SHWKV-eJW0?K^hAXwl_r%xc<^FMCd^gGAh7>h0m zDz+<&4PSAXM`=?y%t?|dWebL|pYP=|h5cx-9}a{qs6YCD;6JWRG8n&?(^V=tGVyO5 z2;a#UIS^(V;XpX@Tn_Y%dVvFN;zc;n9Q$>g%Q+78?AHf4(DI=iXvrW4`YI3?ezC;< z6SWivlAs>@mwctlGL7>7BXL%zOTJ56$Cwc99b-br+LJ3+I6iml4M&G^p*e2b$@A<> zcoQykI$Y>93Z5;+Cfa9{JjjM7s}IG79>a5-V?%RfkIk1owh)SU?B1$la!Zch9TavQ zuwSNX4uihIYvy>iGD^-Prq(RP=8>@0BF5uK@)0z|%> zieQ{2T4JX?1&SH9W)VPsbt&3Ne<3ceS^fcgyCNYNS3I1nzb|=%RQL#+k)Y5t`FKlx z9K~tPM>iil_4N5Sp<(KE-Fo{WpS^+9sMQU(oK$8@Iyjr0KyQ8{z^J%W!h^D@Zky1e?I{_j=3MUA9#>(UDJ?r%bSHCv zso7RKd{&wHb-x^ibwxoX>bv4J^5op|Qi;c%r>+_pdfD)Ny{?@jww5^GL3|^0pdrR;9Rnc?&k6^F9m9kBTWIx|A)~=vsIw(*b2zF#{AUkTkBd0$u;`I?? zgT5lI!;g1ISKWF}HTG)C#q!^a>^c(B*6)a}ylo-jWTT;(Bdm_TU614$kC<;9O;{gg z7v{bn*qx1px+B_*ZkSUUr&AN|g-a7`YmdxKdH)|)uPl`(v)>0=)#_Dy#Ajf?fyBqO zmi$EObmPyT!_Q+`+UfBzQZ%Ja^ygr z2$w=cyf4MmSLMah3;Uugqm{#B&F>jE4HTe(8X7RJAeypvWzj$~b#!L~Rr;k$O{5XM z^{jzR>Rc#wCQ@hIu{v&rgH)9|7Y-~-B3=73;jgF;=Lk*5VtW^Z6wF@bwER-;E;YOoG1u)wo8!+~l%!JR z1Omkw;S(XNMzh@AS+hYW{ImHPPo_GnDomtJ$CwQU{&nR zgmv4TNX09=ZNj)~t<9o#RP9l>g37IsVC2{C6MC>;R5tDf=OQm;i5MBTQ^xCgq4Q>el>HVAZ zu6i1iEgnd_O48_8fC64G)b0~OIy-rwC!r66cwNky1wiV8&_!()P|%<@^r_*GqYJG2 zGs}DEC}y^oiR}6s=Z+eM;rfyj?0wq@IFa3>UZK>UOymd^`fp1XSg&UP34VM^R^|*6 zv1g69JNbggJbbL`nY;>*G&jy4bRJ)St(-+djzcWK>?MqH=&{gX#DcxOtJfVg9pQ}) zG*PvW12yr%W;5#AbRv^|2>>Ez9AGHv0H*{cyVj(ig%l&abr4Pt{E z#o-V$M^$08U(rU$jBTc*a{+(t&x$iP($zn~RH zHBD5W<8%%$a8VRo=>_}A3TDjdExER7^+%#d^ctJ=(4nQ=e?}emI)?S?EY-gWJUJP1 zMR}>ZS1E{P+O7t+;KyrMsja1=Q|*`kLc6Y7tHyV{z12-os_immdvJW`?p7+TQibcV z$o~CRVUYcJ|8%=pzWsj$3mZR`y$KkF!EZ3u8 z3Fw^ZmxrF34bF{dnq8JZDtBZ_S;EmlE5%M*4PeDii}HyD^;~rgQs0a+Rn>aQ;E>Q( z+lvF9bBzwNjagTY;;W7{%GpL06WOxooi3xQ+cTTk<%rz153nu@?(@xY#qC{PzF!L zRD^M3N}{fff(KT~je%Veb3ZnagTC5Z+UD1Ko41G%mX+JhD6)kjECDxmohG$Ul-lFe zybMVGzW8CwNi{3r_C z!tzItaBFL7-d|(QNGKg5wOiMzo>Co(7r2Swii?20*i@|Y=q}E)`r`bPKYep;MCFaHmnEkV~=7}on zO2aVw=WER`sIO}{>d}9r*35ZRO4n)4f1+BZ0vR}NA(U<=BDzhKLT-ph7C%LMnvU1K zHDc*;Kj+Z*Tq=1gHtg=t^oo<1iOtO%;EmgY?%d{L!4E5G?s?K8eVZzo9{WaH_uh!O zbz&sMB~QxYjy@i;r8@Zm-O?c%h$>ng|BPNR5M1>mP=Zsk&S5X2ulY3)fPuf zod|r%jskg4W`P3s&D!_8R5JU&e$O7W{~NBjZ}xvnQ)kM}{@dMi17`mcqt5JKsx=ov zw$1*eYY#E|muoE@G}L;kjA@S3g_%~aGQ~y<;pLLVZTjwm*&u)r0Gzf}!82RrbVa%G zv=Dn5r9P_I#*WuBchSz%Vw4r&YOSD)2P|C_QP<0$jorDR;0jJF&Z&%~ulQ(XwET+f zF`}BtuGQHB;fKxmk@`GQ7H-_WV~MkEz&SWq%dotF!vDeyJ+u*m`)^E`f3?;A!g*>vcp% z##)^~<_@Yu+xf8pA@-Fx2QYVS=5;EsQ4TZl8l*(4!x_{gP46_)o^fJT8&{4;Iml?0 z6w<5{__b;&7&j&V)h@|z8k*l2Iy324YXLxnwm)$O@)y8@iVA$9T;0Dw zYq^H0sr5TYR?EM%P*CnnmZ^7Bo>3|v6>8xCNFqCm)OTKjjD*25v{uX?`YNh=YRq04q zz?f@%o!Ego!aup$kZZwz(k2U&u6@KkIppk=`@rqqMY-LOJlmT02*v;$Tl9@@iIcKK z#c?KC)dLDa`){-lM1bR;vQr~gUzCZ4<+7pNXx)KY?$6}drdwLT*wVZFBpI+V;aJP= zY>Q;bE}&^fA&W-Pk$wHIRae5Lm{C-!EoK`obh#A#Gi6d>RZv)1%dCTFK-KdU|E^t~ z3nRx7VWmZIkU+iv{FMOpq4FU6ngj46U>wsZuIm6l;zl)p7aOPX_f|299A1|Em7v6k z>;sX;>RXdVutxbV&aQ+qlxFYaZ%|#45n1JurDLQ+qaCp2`DJeRXAEY}Xpe7K?8yG- z<%mYT>@i$7+`y|s9V4r@+fQA@Oi5WBT{RiAl9HJezn5+P`Jz9fXl@NMKSly$?x!aa z7!w6N&(3VoMKyImFdOhy&W+%(Y4gosNf!JqkP$*H(x zm^<)3W;NDyK2Z^>l_;(7nK{j^7&Ib`Vv2DNe=Cg1{5=!TW#i#WtwpX;qy>NGD2k&r zmHE_t$;-&aEduqz%Tgf+ zD=5{;2Qt4TKH-aY?z+A1T_M}-|HkMj?kg^6e1{r2w;r0-S0P|TfXR)9MAkjq0Eqjg z98r9i{0GF708Jsbp!x^Y%i==ZCShjClXw|&*Kz8(8`c{a`Ta-S*c3F4fdg7O9ZuPb z2d-!qWdRL1YQ3J*fXnP9G;anywmvw#3=UO(ENl7F(Dd1Kw)7U=dNpBv5N|(%+I#*S zlCXg5Sin(T-$&^!Q%Y|Pwe$>TD+=xVy-~b|N}pvLld+FQL7yFCzy9O^5bQo)>DX0h zAEYL#;{^LPH`QKytl%Y*2#!Zun59=7 z;)w4gOi7>nwFUWQqA&bZfml%pospjgb z6LYU(1LVq|aet%j{o5#2$H{zSIZhmPou&Ov z9F-E65f*Xd#)QQkW;>)bqzUN5yqv%qs*!o2EPfb6#hUBod-;hhB;Ig2YLfiEdu&7( z_|9QE1nVi-15Be>?nR=e-SHr}zA5{H%)>%EMRQ1fAqJCOINUvN8TJEs;v|qg<-2UN;BT8jIR3<&Xcakn zigBeh@Bj_S^;zj9dB$0K-TMj_I`LiCO663c)Kbnu>v>_SEq_w6NLNVoGLdO|`h=O% zR`MS-Je-E5$+v#aj!2#S8M-$YeRle$zwDm#a3K>OqRhjWWxGl|%CQ)I_eX$st&so` ztK|MoY{VbCEw1D})60N!>;Hv)%>u1wfw(h8LXX;vM19R9j7)+)HD$@ZftU9yI!V&& zY?%NNO;xhai z=7(7X9IZuA@R$xa?1r0LTX|0wg$^bs_J$V{#&17LaTOMbcxyi-bweG-iL|p?-i7Wj zy+v(#d>B{o28GP$PKllN#(6;3dR1JIm;#lL{QFJvaGCABwN4aFZpQYULj2*^mg_wj-DF_Dn* zIAw9jPq2@WAp>}Ruz-D&B)K$RHWqd=q3>>-k_2{Q+c75d;ukwvywtw_XUb64hXWGK z!wQ|6S&Cgws&aN%=$&rmHC3z27c0!=Wd+HTt#EL9kZX&K!1R;kF>?B3c@$3fgnv#j zqkZudjwI2TYyNcG;JhT1)(KQ$sm*2Oc>PeG6D0VKlRtmiC^9KAj@=+A-ZLdgt$rBL zV%n>z;S5IlzBc*dZbdoRaA4q@Th9x~=f@@Fwp*?FtJF+b5kD%M)*R!5C=_3^B$0~y zxkBc!3I`%7FR9L6$PozL`r{+ga_axd!@RS=ueJ2@whrq9ndZatFgFm?l*sSbn?7sf zd&N6VHTX2!tSA1;S5oUV3ohos#nX;QsHujK%fYl&l6HDi%|G*xrO}QjJEp1TAEd!E zWe{3)LrRU-`mu~zY4ThjnNl;sf(D?t%!m{{rQniz4xDr;6r}g_+x$z`v(lX2^djvh zefFj6g@jD>KEe89w%(VVAcXoKWKJ6-(|_wO!sej6HZe~PP<=JxXL$?)Ut zOy^5@+Q8lP34ps0n=7IH5%Xrj;@8=^kxn@%sbs9eL<)!7Mt{|NjiJfOQ3$#3g&&`+ z-QR{{ZP}O%oEYV}eQuR^WufkLYL8b*&NKFngjoW<^Y60;Ylur?#O;(f_c` zg$tO23>j%FE9hZd&i(lQX+dMwwBg1~gw6}J^<8!|US_E=n(9OOdA%tNdsje4%n|LRs_0;s2o{|~xn_+^EUK9p(GqExe zpyjAj<4Vl3pE^RTbz)~)%Sh$lBt7)u(gk`Qc07KG%UOB__Tmrq(C!ArtgZGrc+PSx zzdDgF=sDJ|V&^$q!q;h4elj-9P$n^y2ut3^&&F!JXT5`r1&LURB8h<)o8{YC%<(YN!TEHobLFHhmT|4D#m)Ij~fRn>KEJqU4v~kWNTt zmJFnspYY{UIVj6uKo$$W7^Wt_%BEhA(T0R zo;vKRR(HH=pA$$7dEdpml&&7gTtkBBYSjsZMA2mUN6M6Ly|pUWT_W^qLW{Ca6VIi$ zc;BZqx1H&4D|CkrlW$lyP8m9_50>3+j2Cxq+tX+(imwKdhKyV8r-xp$>s zQ3eGdwm4B2nWpruJqd3+np1c**53KUxDd}%#)Y`ZfL9cALrOytOy0YJ8&Ddw2zU9J z?Nei+Z4IwW58P@q*u9cP_!UOXT7O?6i@(MGCX)k^Cf8OFHoZ$yR+1tNMzg}@{3vPP zE^~jL5(x+78PTc4cS8s=QsK~FZQ_^e`O#}8UFAgn*%;y1o2-{QV|E!S(e&5zQg?TU zSKd9JUk>YuHSaL|sk{3lYf7_)(bUcT(N)lh+HU)z`GTNY%W0V2l_|WXCt2FJ*%K~= zl+?t!4R5UIi1mzncDR*>+ago8Z~-6m*tnLkuL%EF+i#+Pq^ivkj=hez0k`rcyo-$f zPSG0!#f7;2u2T0Plu;oi-D!%vqUx_mFPo-*Mq_VOO9b|F{qwnd&&vU;Y}IMd|M z6!|kw{%GdGaI!fT>fyx0{Tr~$TD!TK&w4&vi0vYq&u`jnUQ3&v)Vz&T+8Hve%(x`N z&%)G97mt{6`gD(1Ow7|g1w77}?(y-MI^8pj$4J!viJ5YiCdNd&?WyWK?dcV}%TEI|9 zmsx4+-Y#A`EHWZj4)#a63E3j*lp2M+pFlx-(QNwgih1cIyYY_$FusbnPEQ&A+p~G) z=h#GF#LOCwTCt7XxG|?wCQEn^3i*oiN^plOGiq(_dKR*VMz&}n>ye7>R{`2B7G>A+ ze;dC|HKje&o}8(i?&0PhqlPvH8f6l_lfJY;nUE9EhBTTa>_~p&cpn^^Eioi!9Gzpc z*u9QAfic%J#xA?_4_N5#LmSL~zY}d@{Pi7Mi7WAUTk z^;czVa<9CSF#3F5wICTEEll**?T=bGoWIfTm9hopel~w5=Tl|ZnOmQFS9t<(Th8{- z0cN@=%ut%r(Bi?-v??R(jxcd<7YC^0ULpF*HHlHFM=g|d$s3w(?iHf198TeO9XwLB z{HpC={NXtjNI{QLZG+Q+@%_swrmig8k&zyO^$ zqmr|x+2)W;4ni)yEDIN{+W5ANqxSyA)ZBe-4@MuUz58bebZKE9D)q-vx>D{He>0A{ z)f>c780xHM(e?o`q}1MLq-w!#xy4(E%Z-cZ?K!DioXvwZ&#=&y$ya1kPR6Ip-fBUQ z>s1Yw=Zm{#UsuW@B;j#y?Ve@f`yRIMrq^c2mc;S^3CH{oI@A!1-x{QIC#5gjPUBNX=z+ds_S^I$afqO%@pY9k zm=R3&9`yJdbUW`-VL2IH4X06z=1XNN!jwuRIhlH{&3!a)aFc%jkhci(m|pNLfw}p5 zuv?oQohiaap9N{Yt$T015KygSD&06d_6a~$s2kp zGhJRd4mHT539WLln^sPJKD0e!bNx)$(um;h>|p8Q;6D0RfGulRcCavN-<`Eo!<>5U zEAOm{M7i!SNH1y8(DR|>LQY-g$*f;*MeL>0x$TdT@^I-Ttc}qAo4XI?t2|tK-Z}Mo z!`mM&J=td;E=4rdpkFMV^CAQ?FP3J?((j@67fT2KOo*;!qj4QCmP(jargVBiD-XdT zS08GMm%JH~oCulnC{}hbpa#lj1b;kUc_ago`ZnDU2G4|g#jO%@5Fwca@qNu%+2-en zX_ZK<%O#XN zi4y6D1kViSRLKc2y`W%ohP4ta5m|FdT{N4vB*+X%s;8?1DMQI;5TEU)`g1y7Zrywh z1?l{h>mxYGZgYODJms3UT*?V^24T)1%qh>f&NffTwci((^|;n^S0(Bqc1iy%-~=YS zijE_xtr#plI-4nR15kTsGj3#3z;rxCCu(M?2IO$y3tq!06+a7Q1@48JMdxsSbfYq*c8U|`-Dro7Ghve)<> zA`iq6u3%NvzKg4ZuSyT;3#sWKbQI|$XHJto(q#JxCwh>*~8t5J+!ETfUEL@TeOrSKeEC3Y@5v2U*R0P?lW93lvTV8%*=V$ zOcnO^Cv$nNkbz5U&t>iXCC>D|&W!L>EiJ`HPCg^gD^B{d|4h3Vwzqqxc?Q90B{gYq zX;0emHh{EyrnI}BnoDCNvZZz9odhmC^6r6ybN51#zfzBCHnVy_=%^ z3C1Z(>qU-|>yn$AqXUx-5{XO&f4RhEuT1jJa8ry7|C}PsW<`;;EGFVM3Z#WBihadMc<<6G@*%9Cr9!R$EBeotc-F83YUyhWaM%%mxqW*P`Oj0;@m0Oahbm5n`*IB43^Bz5@JIp_Pk)c$uG~nxhrNe zFAC(vB}!%~SaTD_Ek)cs;x?3GWr}-~xI5x*3dW@vTwBGpE%0FOaz}Dt7gm6~P6}ym za&Dwi53fIWO4sB@axwMb2I4W_a2x3c^3^p*bZR8sK)6MB z1=<@Z#xxMZ$M!6KV*6yrwFxC!$ygeQr*pZ-N&`W-UM3qakL4r<{-~R$#xzeyd+YXT z4TTn&_Mt7LS=yV)w9lqa?UQHo6Z*CZeIa;W9HgHXCykKnh+C7m?H0F2%B5RKnr|`< znP*C78YmXWq#tXar(_x<-^D#lCG|mXIh!2Jjdku@Dx<(TiO!t{NpWs5h=(I!+H0tD zjX~0!B^v4GTy7jPop}cFIkOE?;GA!enNGez3Y~0&%yTjflJ1N)NR@MvK^8k6jRb{e zPA`M65o_^_i4&H`3BUtgi=;1k?2c!A*W7`#gGMuW@QS!avEYX#q6@Ku68 zWbieDuQT{zD@DhVJ2tL!`+Xc@vc%$H%245%mScC5t ze5k>j1n*~XNAN_0w+bF*@HWBQmgu^Rn9KRp;IV=?89Y(&Hw>O4_;!PP1b^D#Lj_-N z@HD~iHF&z9Ix8 zLLK?#rVudC1oWDy9$dy7myyP0C@$&7rN41O3q-;QHzq~kK!xO}@vNN`RjF2@>| zzZw@GE{VqFkH%#lF2@;{&Bmn)mtMx@VdJtGmpJ3{OYNcuARK>KtLb!|ag>n=$5!JQ zFpe@L;rO9(EEGpecXLKSsGlH*xMb5j&@X$H%USgA9qZ&saHjM+3JOp1c_;Qdm9>gj zVnYpV%IP;^KO=ge`>G`8EQvUX3|n5{;@L~>6Qhp#29qHk7MD3t-|JlCuj|$IjOPRA zb0VFjX887PLRhQM}*Rth*3AxLbf7j+-^fHrS6so`?&j+5%eJXT7 z|E|u9e9c$aO2yC|G3NQ)m7D!&FYxtc;kP@qnU%22a#p-|4^K>c4G=%t||zKUEZS#8wZICg?@^U1vna1%??N8@L5Nw^NtE0NBCr zHvX*awGNIiIRL$xtM*WJ4KvXQ|7o;`FM|{=LY)BJlxavH50w6y9hVpw2TJeCj!OxQ zkO`%z^>{_*CE@we9pU(Wb=%?nxlCcv2}M)3n_xUTJGT4WFS52ZxwmuHq3t7u4j3lu zXalM10K;xn1df{_=j_gf=O%@D?t?=ZZC58odqJ12&WY_{xP@pbX$`@4mfbeB#0zP{ zT=Ua;ZIwi$5_0awNxfS}jaBlImtGka+SQ_*bI-z7r*)MQ##f)Piz!_wxu*!sS4U4{ zi`Dqb*}sH*v93-y*MRd3C;;d@f(hfqB{bx{2^`o7pA{4pXPp+PX*|6y%H0ab><#X! z`-IEvFHjy3{~Y;~FMnp%eG=)PTK7qme?;9UUHr#{Uh<#fcyAU-|1ku1UcHHfx7_O* z@&c0`POCi&Xckc-PR|>sKLA>mVt>%s?-6^2b1zDO&DO3tq9amhUodk^ z$V$Y?6%BZD>~%jy&F5T1oVPwd(s>NQb{TlC)Iu5&ChdxQT~`b z#Ee5*hUEpNnw;&!=Bv9;aNb~w4fM7KGv0Tv?20vewJv4z z4>AKs1UWB!3ihCfHDRu#-^kl07MgE}K3Z8nDa9Gbh9kR2NRvXzmm}MRLoa<)gNp>P zBNSbaMnzt8Ki-@Q(`U{^ZmZ=sBH0M*(G|Ua!7rTw^ocdF(DB3%B@ZFZykHadZrYwK zd9cNuvBiB2a!T;F+|>Pf^_8)-Wvu&}pW!B&F>^D-uQfO0g_`O5T|GV^KKJ-WUt}X{ z9jcQgOf+Q|kyk_DSS|aiKc8v9o7K7E*UT=T$j8p~Z3;zly0cAhk=>X@s;i?{JtCQ) zPivXBO&~f=_U#Vw=`ebV zt!&$aKEcxv&p#KZtJ^J<+|}kPhi!RwsYUPp%LiM_o~E{MS2M&EAkVE{NulNLC%13B zLDq3{HPy*nt1Ewc|EynYD!NzxQPSuA7q$pP$yy8_Se!VC=@LKj zxI*_;To#SjAsTcDB$&~k-z$mi7H5eu!}zai_kUCSZwULJX8e8a{?BUv+rs|6K~O|O z!jI!2?J|f0xlHg-a#c9o7hZg69|E#o zFyUhH3ATokAHyyT$GN35C8N_qZwf%XjEvK(U!stUA?aGo$rZV8NW~j^gCH?`IWx`a zNN!Cew`7v$m-k3+JN;ur$(KkjggHr`-_(NF0R-4>1N00fkFx<{IhSU_1QQ;>JCuC9 z^-1IyHexm|z3U+GSA!g)_Q{=`m`#@8Rk z1xe0|>pP}=iQwTW9|v}lc=t{=4|p%}OPT0(Da%=%)bdI$GeP&03I$Qj1@&2UI~#14 zK#3B_86l|-f{|M8XFm8lzH?^05Y>x~avh#x=s&LoJOn_4?u$&yC|M8jD`%1L69Jq*TBap?^zD57`jVl0QgeVH z`n%2XUr*h)5mzVFeH$4#CK&CxnF~z*{|dJ>)7nk$``mT&_4E= z!$tb`g%Bl9j&NN^FN&xlJ5F3xq7Cj8>389Er5(#`nc%*Rs? z=AVw^bAsLx?7U0!M`v2t<8|Y)f3PWvB|gZZ@C!_ zJU5!qDf51G? zC7{jkWv$I`c264MWoKxz*>-vM0C&wKXHTa`Ds$SVtewF(WP z-ntUJMDbu@3%A~1bbgVdcLc`f(tN3#b0e8)^U}i&zaxDup*K?v0eQw|p@#FYu zKf6;7hlniS3H7!CZju0O0H^D}X^KH{7V9S7JLV79j`3DwUXxwaXrT;?Dv|bwk{>)% zHUQX3aj!U6k{}+R=90l4q2AA#&H2#4E5|a~Z=(W2#GK%kP;w9ANhI0cL&tdP50NmA zyd*i(eLZ@s6+6Ota0QKTX436xdP$R;t%V7iI}S?N)Q$I6n6^mTY#vKGGhOcMnNBF~ z4rlWo-xY9;=i*us)x~Rdqp)F^|1-h*|#>-`( z&{mdw{9n~Y(B21EiLWt zrXSE=d#sIsjaGQSm zQ;sNzv3p=_CfyIotG9OU(bAi%Qt68T>BrNdF~>~h5!l;PQIxZ*4gI#^HZh(1m2_!m zF18uXbfObpn%i{m;#Yn3w<^8u)g`>rq%$+n-Va5S(#sT*=kq|_45vNdA-a&&i&d#d)K00uYlT;@k zkgm8nCxD`ta>KWTPF}8)Yk5&d7$0LW%T|hzqvv{|M9O%` z9ob6?7+kB$npRVm%e(oK?}Jf`z$8}EJ_TGdJF?FhSLf#)0SAfG zQSZneat}=FzDjh?Z;#%5r?e>wuT}yx#!bJQ8eJua_)!vX?top0ldTbFo#YOfx%De* ztWNc`-vN_bzo|I=et@(aE0IfK1LhuFaH|?C{3R<$m?zo!mhEg5SG@+Xm!h>|tD8xS zI`(unwtF}eKyBU3GPCpDu<7?TBUZ7LjBr1(sU=oE z(~A&*$l122u8}PftbesI*vzkfT+dLKMZ!p|HGfpk(6{u_AJH>3stA_dvrGL{#dXb&S-hn}IZ zN&?X{^ap$n(KGbK^|9+XbJU?{2u=0zC^l)}RQ?3_6Dztl;OpJwL}k+|%-Gsu-7Dm~ zf+C3Gp}|s=f4t(MnB2N;|5e39s!r&L zepH9C^hk<_1~8;|Ry?%rM->lkyhbN?M8!kxF}32M^Emy|N%7Fr^kf>J@617phbI1C zQ#`bueg!@Mk&1`TmgaV9kcDZ2@pb33h&~i9s{NM~4{7#k86m0aR5}z7O*D#!0PTv0 zz)?Ij@&6sgL+}5b@$#sOhd9@n@JcO%ra1xtE3<%}x?QLox7L>G}PR3w7C zS-z0yA`*905m|Rs5seV{5)|nPEO)OsP9Um?juD6|qV57wMbt$gs)*#CfoRPsJXjUc z$$U(Yq>5Co=}EiYQ$?>W;38D8)ql5miKc5h{>EZ1ZOZiE7?s5Lfftfj9B_nT zGn3A&e(V}db#5~4YZmmkUO(7 zS-db~+;i*~)hswj7tt1+j>)S$bRp%MCJwG<@JR0!OPBMmtNFxO2qSZDmKa7&PkqmaFWA+JV_oZcuGi1 zl94vaQDWJ9pD87;Fzj@iu>ixRd<$#Pk@q%vYcn@;*gJc3L@K>n(m`lCSiXH8l;*wa z-5|nO=QX6+tZEtMH^`0SW(jyYlDVtTl2h`7dE{X+dIjC02cCy2V%$%#ENwuwLrZrq zp;5FyIqx9r4sK`f$NvnH+|Uad#9q41{p41*+=|bWBP0h_pBGD;pFlcgt4FmY`-&&x z+;Bj@aIu&#Q%u?FG+$i|s)F=w@IO&J=b8RebGGm>Dybh_uF$8xxe%^(Xay67 z%%cLZ!;3E8=?Q78^i3h|+gd#jRcK;b%mLj(&vg6d7$RDu3tCRKvaajNW|O~rHp&o& z$i_z$Vz7a-k%#VJ*~*xwZ!n3(RSui;f;!VE#P_?L{!>J(ba7M8>BYSQ$IE&BF779& zNMv?;X`5EI+iDeF={=&B-?^V~^GRuPnxL>O<8B4|xT%>PTrD?HymjBYu1@o2e7Q7L z)PGO`Zi)Q7flZ~SWUymk4$hv*#&;!J+b&W1J1&%iDbLK5EVa(cIteBw+b_I;-7J zTAkJICq-xV&!Ju2KU8OR7N<5S)al4>J1MR1PrjnRpS%OfqP4o$#Lu*f&K9*F`^30?_iL#z@`qXk0$()ibyN zeyL(RN2VlNceU*D$Q}L)Ot$mxx$xqe`FcXiie`hHOc~}Z!@LuMIoX1Z4lBph;?2EZS9T zr54E4;PkML=`@|9MDA8|4Emnq>5T`uiqi>7Jh|1CFVyPr!(L#0dyv*qQ<{@qX+ zDMFv)-!!X}U|aKS8HDz2(K@FibGm)V>)AfEPV8~PADJN+2iQL)=9c1;hgWW5E4jg{8*ZlGwhF4Eepe=9Kq z*6Upfx7b)#enaB*-ru+QAgQUjP_>d|bme7c86Voop_D{Xcij-dx)pWTo6&zr>o)(E z>3vw2^`}Ocwb5e@^{Sqgs^!#|i(=a)OUvpSCiAha7(7e#S_^qEX}K({*m}>B$vSj) zw~u)r#As{Pba%S44Am5Muc(D2%+)h<>Mtb84@KY`t9`K+Yjn$+5}$J9kp(qbR@j98vjoq&L!PzkWTBWY|1i zDQO6k&?2GDv`F^KkKuoYaC&Li?DSOkibxsHLmWulmc1&q`5U@JAgL@nqd9Q4S9kK} zTWQ0LHt%!yKq&WlZIT-5-mgBfL;dvyY;`eai(tXMVjjU+lAtkJq$DjUr$lVemC1yx z1tN*EJr!}(4@M7mLn!$J+0BxE!qAx(%;%2pPOzakG2h`B$?L-B9?^ll-|E2T31p+- zx(kVhlGo`3rmtbx2sP>+plcA;g8k?D66ng#f%LePnVz9lVSmabmO0|f&U#Mr!b~zQ zMVqluM#bh&zGEcVyT#>qZ%Bm*!ke?2zcY>z{+{|;op!8W`~fA+Yw1eW^R%-xC-=*_ zo0yZjFFSP~$%M6F2e(r>^p80A?GuXSY-kro&FUnKdKXV3#rpg5H!6^<18o$hwXx?B zKpuqV3m3Y&2xW&TtCm5?3_N-4mzsfyxjFAyeD$@ip}xd@^$?L%ES7@@h59Ilvxh}@ zZsZTrpY|?$N*B9jxCY!Gm(OU+@$CiG*`tKgYOOj&iow|!0+G|31%WRpF$v=hOxJZQlb~?+H(B` zb#3$fSsN=z72O>v8)t&lwJmb5Od?gnA0lu0({UD*1D?RywRdMZW-i^06 zsO3t&W;yI((i>)VTz5*(ikKdf2z5Kqc1`z~sdr%+jE&N3(hV!Uu9aXkm>2b-XVtYG z?;pKU`V@ms?d>YdpcHm_i+<6Dyd1X%fjP*iLvz>VGjFlsK|6%rOIb(f@?#;JY z7|+c}_+=f!klF0nBbfLtIGfj^wUqs9(Oil|>KnveXU2pA8Fk}Mz5pdPfgx1j7!*%+ zvmcg$;{m5B7Lmrd!@!uBF80oBqo5k4J3 z#^604ftQFbIe#bz4^jT~-g3sIu*UJRAL}n{-O@4fDloSGyspk2*T`iCZ9kU9@|Z;X zmizB}@zm4qzONnsT_}4@ym|J$ayegdUhz9882>S0`y{d-Loiw7wV%6$^D{+Q;WM&5 zedk2i_Uo(Wnd3D#Uosw{9~+)K{hAdzUfa96-0r&iL59@+RsL+SV+$2%eI! zQvIau&b@Lsm7y|C7ECq1;y;mV1F^V3(pVRLCzyxxMvdIkH-y<#bL`ek5vHbX&FmUi zR~S#XXqc%}XnAwfU!!G;#9Jg*!Hv~y!}*qmtw>E>NCq!rV#Wk5n%w z^BlzBImqT@(?DxI%B#;w4j4%DY$G3zIRSYA@L>Vz2vD7sjKU;o6E;qW1CX zP<`&X#qv5HEArq6@_aqFGtels-C0cEldBP&r_@5wLiFB1=SC4a&yu0&ZNG>5^rPZK zwc3uY!9Su_#wzDIi`usIPTj3Fi`DxMxP6xGb796J9KACG4h=`Sbq_wTv zGfjNj6FZ+9ulqD@%xA&xxQ-Nj7gpmL=IIc?N{aq+A*V&Yqp9+O15qDqROLQ34hOk7 z)R-Zx=IFJ`OA;uf$w)}bPM;Uy3!burRd;rfXMAtj=F2!`E4D!87?1%n&vKI(m4ozoGm(iC)t27g~)>K8J#U5R{0R3Wn^ z&xeKk6%7Gr%xAvUBdIh}vs3cPkbJ^VuSE~X4%_ES8rjb8e?^L`qkTp6+{@NUe_pc0 z`Nb~<@mD#Mskotm-qLC3`;Pl!oDpQ1;E&>C`o3g+e7!H$`9(k{y17hpZt&CNheC%f z+PXL3(Hg0pfC=;;Hqc!r&@aUr{9JnH^}b-2{M1i~vr|r&Tv89nO|O0L z^W9it8wYajSnv(n;4_lIEwxGDNSMrU@ zUp=CQ^Y|Pm{hk;+X%(^W{rZU!8Qa{~`{`{wlh=_;UPgnvPWEgK-!P2bFNBqavrl?v z@y@)}gSSJz?Xe_FQ;#FZ?93p_pCD=_SSo1Fk6rM9${ZE;4=|t;)@_2*a zvR&%Pe_#Ntlq_zZ&N~CgZ~^U0Wy=sKS0;+Es`56mzjdw~VGMXtQ;FCj9;(fQ7l3d-l z|X3DSMkk~HM><_WEOkZ*_gd%YQUE5?T zY2IqV;dd-2s8J~SeuD1X?d!{3$oIL~=tJ%k7~;G&UFsznIbVS4+ezmVQnq~&wCW=j zBrdPPzUrLRp7=iao!No_J=e@D=HO%hXBNs>p`Vk?wa-a%3E}1O*JZoXISo0>6&umu zUH)M$xn;YbZS?N?4(&#n+^Cuf#MLj_j!-AzA1V+%ogRT`==6=R&2z=pGS_?=?S?9S zId+xqYDqi9{Tl5a(UL+aSM0Ku#IQewz$LvFrN@C7trwWb2lu_zw_%8CP$wx`+tDK=*_z4g8b$IWizMpmTCd7xbSna!_{b8bg|Z%-vX`4C7JS~p_CZH4U7 zpqOFHP$u~=$Hz z<=gxGHE4icMbYg^>T^;&I=AL@CSQA>=RHB^Qtdm4+P5@~3GIE}sC%<099FMam968ZSC?n&aZ;4?s zdf7B8>gB3gZy9p*RkQ2gmEww$)=#CkaIS(u+|$zU85)K!!L-37O4c~C)N}Ukl^@T_Se?$CcdYMZ^h?uo`4|0pPTH+}oJ_htw)k6}&}hk0e_}@X>d!}` zJ9EeF&fpwPB%Tb|){yy^mXCr+?InjJQBvQMV zO)kxO`_w~{Gd|F5S1{JO^A|_(-KYo3M=n2-SG?qQ>k++ltfig2Af+fWw3XBMo}F2p z{M)_io~b2S7DZ+vmwu!$dUxOHecBE=JClz&+ zvb}i0{7h$^O{|@}q}E1sv8nP1ag5h}oxF6V+tV~l^lLl$OH2Oi_s^ujZjUgyQXgB` zW?`3s#@%D#XbUG;ILpGt7T#jvgBCVe_>P5NS=dE(=lLCD;RzO=WnqDZ-^tra{2U8+ zTllPn587}~Sopk!Z&~=2g;B@b{46}#!U-0ZSh(22>n*&`!lx|UZegp1YOqN+(ZUlf z9Bbit3(vK1riCRIF0^okg*RKc*20G@eBQ!WEo`#zYYWv7Q;r@MdMq4m;Uo*ESUAVR z1s2v?_zMdkv+yMgn=Jg!!Z=HRkA-Jg=(BL9g=H2lv~ZP$Yb|`p!Y(J8^6SRt&o#E) zDlELg!m$6*VBSDcYOhr6L<847WZ+}h8hB{Dr7gyN*q|f(cMhM@{hnE3muW;k#?!;4 zJY7t=o3dOw-`Z>gi&e4W!=k3EX=;KRuF}Ef7q*X5r>Z=aV;r^nxhhv>sq<8}cJ(Qr zIz!Fp-x;JMDVbl1GXI7t4`nd_JlaiMme_w%zI-)OyN}dv61xC5`FSlAJX@7g(o*u7 z!{2Ig(!X<6rCN9d_wxwt$1fauDq*T{IWz^Y3aGi58vNup3A}=mgnwdRK& zoG|8>uZpl2t9jNwfv|IM3267u=@gMphpVZNQl|V0dP;dw!>7wBb(eC5%VQv$?NFph zm(G;K*o7J9yBFLp^!>LKY!xg|a`9p4%A=bus2&QK-%hI#V&c?4O) zk5I(RA6Zf|(pU;$8?RvIf^)HYLP!sU4jR{3DxBmgD&#|)iv!l=v7*>ptO_2w1BbYS1!<@rUoo5@=H1r zU*agjDZ(iHB@5+>h>VKv5)<1su3LOUcXwh^kDk4fkLjJ#=h(je`X4vIGjP!HgNK}O z;?R>$P8~LU#K^Q!qsNRr<wq=%G7Cy zhG$-I;YG79zGQY`(VXIv(z3bp$}hdFV*Y~4s>`cu{DFmw7B9Kt%B5Fby-a0QR_81( z_ZL)G7MDuv&WD$ZY5Quppj3^3lPYxIk{+}G&M7BEDI5cFkxTer(F8j#H0AixN;u6=hdM)=Mqj~3gcgz8pA(v8BRK0N@d0o8BaWzO8&|S zBIV52Ip%>$txB|8nJ)Q!9d;fyssStFuf&k?OvW1-8>JtXQ|r0d7U=$4uE(~{X^DS1 zd6wf}!QU%vIO#ocx_6oMC0q&q#oAwbtmNq-HyKwv_$=V>63QsKieDA~Bt;XW9G?ZW zhX=|?ElsNPag~wMqeEUs`AymV^lGWSv|iiworJB7^cG;3I!l?vML0p|DK$ErQVVn$g@epDKLG_J;>s6EQZ=bp08MShRnj#+^9dO)eVDH# zFZqS@8`YlQk@-tfJGk8?k1*Y{NM{;$X&-3=<6|f-G?Q|U_=oUExIW=}q_x*0T&6Jn zj#Pt^cDfsCgy}Jwc}TdwN$VHsUSjGcz3oV8c{C3SABW4-LEq8pwD$DE<@sstxrn@u zoa2$()X-rxqei&=KRrL`S<+|!EBT$$o?jI_YItBFX;qV^%sMKd+TlGZ+&4QY7B2tT z_Vj*w`DasdnJXn6e@zEWcsBC&uh!aoSbLha_q6uLA58cZYcI6+KGvRS?Z;aC zy8R|Rr*!o%&D#4}d(-#E|2S*E&DsZ8dn4OGE^v>v7h3y3Yp-fE{)?@>z}mwT=rn7; z!uls#yPT7hU#zvukreqk`%HTIy6?+;K*oeJ-A3o*ChcTKy)2c=KM!9>>8a8q&5SY+ zOjc^bC8iW{c1|hjkI?^ko0+zj)aUAuGUt%5kx4<)yG(PyBL1Ew(GJTchj?b*I*`=k z;DgSoozYIOp`;)qMg@IPenS@oDk?yc!FN$E#l~i27u6*qF)Ak~Ct7}|q>+{c^rRQe zjEPmJrKQa%Kwj?gXcmhtoL9(Csl`=``Na}~mnUOm0kQlO>%V?bz;oEYp^Ss(-{F3T zyZC6CAN#jL9scj&@XJ-lKbQJx|2n5|jq3Opfz0Qp{0qnT{EG(;Yk&Cy{x5TYYkB)W zqvrqb{|&dGz-wF`{~}yJ?O!%bH3!v=r9#wNs};eT3f zJ3=L@4%}caM%RvC?ec5tR;;}CXRB6U7regyh8x%1bo0O6^7DVc^|sr8amU&_@A~Ds zU)_Dry}!QiH}^mA;BO!L-GBUk{lkwu`q<-7Jh@@xQ-65+nP;DC*!2A7EiY`{w*AGI zUf%J_t2-Naz4rPWe|+;#yZ`*w+wZ*l-uq1-{N=+vAAS5+r}>kXPe1$oi`Fl{`rFsv z?A_P)?RVerN7eX$TR?Mk0nASl(EPLO|Ig0#VndzI=*tTi8&qlUkx-wAzB&Rm{$Yo|s-Rqn7y^le&U}RYdg+tzA`1EXA~L z-n@CSu`!FQsuopM9X6knotbknvVSv}@DqysMHQaX>gvjBPx%5*MNwcu@x0RNGdx2? zNf??$nFGsjLQ#1|X^F>Q>8Y$LUEnEQTv{CP7tN{A0&x7NFA$6PmqABQ(E?9V6#+|# zBT{jQG(xA-5w5zlsKirNT{)i^CYj?0$~wqP$$ZdgCXfq9Iu&I}lih&Xth7bG zb(Yebowi=nI%Q+hUsUd&Crw}DFRIqL|7Wu8)SkM&mY$rIId29A4*q;_)YXifk=}n>xoPhr`1UJQ31XR8%g~{7LLX*x@LA zaBzzrlFJeDDXN|ukOr^u3@u&A$WdPADV<;CUvkpl&u-6HXbh#jX1KyQ|(M38WFP z++*UZyEH{LMzFyDx`^)rQC)FSDsC(igz7F;u5K>XjncV##i?Fn-Ky8<#MbUj@r`i} zu~jjJT?$-XB2KCp0 zjZbMfrYgCx7nz2`jYSUe6((EexB`_XUW5RiK)pYHu;-++IFUQ!?O1+Nh^QnO@beG4wl9bC6uRJA5$}=rd zdB%2Ep6Y(B$2O%j9@EgP%GEDk^(%3!e$%?Eezak~DJiYTH1%ri(U4e`zh`g^n0(~dX9Tn?*#bQ`tNyNMRriMYs&1ACnwTHR&&3_;7}p)T{e)&> z`i$(Vj`KgRjw^Xg9XIw-b)0LxO0@Ch3}%w9V~mO$-BHK8y-IzHIW3&`fLN6{mUUTm z2OkOV$!PTV_$YRQQjcN6X(b8&jgCkQ^H0qrPFrK9*t|@6y0n)^+VYHZ*o(!?w_z>- zuf^1d^q_3yOWi=-tCIbgk{FdtnUY5*HRy3wOevM)J+UDEsm8QY8 zIQl((pMG!Jp7x=g`_RsIJZ?xz>Y|dUSJG(ta&+YJ{z@J{yOxvhp9_VckIsWJpSZoo zlHU}Y2W{>qen%b&A# z)TJ@1A^bh_NnJF5BvI}}<$kSOmHrOew(m{b_Z-u``p|f3?eW~i>#p37KvQw+9-+FA zj!SdJMM(Y9EZ<6SJw6@{9!dv!JjV5)i6bzncO1ORcbPGy_mrNkVJ-;Q{pY_`>iCD0 zdfV3B^ubQw+R=vd!r{C8j{b`IHcYGI_#WKct*L8cOha^4RAFR6M4F7b9rWQl3Qx+I z)#uc1YRK5jBZs)kA`kxBn{mg(#?6oMYtkQ>17X5Ee>9%^kT54c-NAEx(z>YuV@uQk z*M;gx`EF-$`LTSLY**@cm~g&*2F9u$)7*^9-Bpij{e>%RpW{fswR54q%!T^Wj~D~Y ze5N`g&6UEq$heupxS0Z77$d7p`R=29YmZpIMuZop-_T!(*Nb>E=P-SS9FAm9?OnFSC{H4V{Q+jZ5*@( zjy5UiarYYhbbqtsL^b?0EJ7XYT5aZ+(5TN4#$x|iczulO?MhSOd53f`S9}*0&-fBQ z#m+AW#H#`RBsHKU5#H#o26TKk?O1)#cdSX~Kz&Y2P$&5Js}oATS0{}9PMzTTTD5;| z8MB24*06o0%R3%AA16KA{4N;;-ineIPlwxGxUKmr9O7{JuXEytR{uIDZs_p;_jBR{ zT%C_a*1M2DW*NCo9xLG)Dm7|qsR-H%iv06tsH?GcmRce`Gm=bozsl0`DSN;Yq2yMb zR-n3?MSA$yWo-0}qH_O)%Ic{I2P#T!-1&rDP+HA0Jgag+O=U%CmcP0phef@g`wz-n zQ&T>7flXmrWk;6kW642^pM|6=oP|0z0@wV?l0Zf21O$NR7R{#`>Nk;-MY7jP;@Xi= zd1QW|!e2gqiNADO<&5%@(yVz!)#~TAM(yFeN?j&tPxY7hkb8-2F;?s%ugwubCsIYB zPp3+laMkKlm2D-2r8epml~qw$6Skd`Gv(ZzyfLFklvGr3*H8(yryzt_sH-p)(c27_ z*= z?nhKvF%>a{2&7d;WL{~}!qUUst4v+1X{l*Tsw9`|58)24dNnF6_v)bkU!tZjn5XGe zlC!v&W6tD4Ly)ynj|zQ`>Kzf8Ta#TnCop$zX>~z$X^k+z2~ku073Y^%`vXN4(-$C9 zDq;RBZh4iJmj$XOAXb(PsG10DQp6{#sEV`A!b|?r#eOwJ+)UJ*#i}JDcL4+_swltW z&?Sa0E-O2v8rtHDJL8%9YX6GaB(Ukq84rBTS z2O>1}3WNjI0>Qmme1Fc880Y2W3m#AX&!=Q1nxB#Gs|#HdDrzLjq6*GaUnDlNG`0)G zrklA|sM?7OU)DL9o;Pit$is7?+Dr*=SV84UuF_+?B_$9V>FjahVtS3?P}+NJ^bD9q zv!Gfkc^Dr&Ekw{@bf9dsaXt*-x)8V>bOD<_{C zO&KtCqa8=YVTSTX=2aGzvY<75QHNh>13yIpv=XzVxVT8 zBsM-!RtBpnb&F7|)2LL!Y4`b6Mb)M4v@MkoooIA^QFXb9Kxe2T<5O~8nIx&yWT}U( zmW(4xy<<3?{=zMC!x46bqxk>N{Avr$Il6F#!}f!A@e{+oM~5;;H#38yhw1Di;l=#x z_b&?kivs_33WWRI=)2z^etW7?uUzbTt?Ug^XkmWhFA6xq{Z01s1!sw>RF8^iIe!()YuGR2?;u4;ZIR3m^Z9;k`Ee z6NKM+_ny0tRUh5$+ux^D3jm1$~4;`c|n?SDTWd z(kGPFDO9?>hcMQ{Gz*7WIMl+y7J4j9u`toXSPR?sntKh7h3{C{XyFbEw_CWy!UhYU zws3=mk6F0h!iOxp-@Txa2J7Ot{zsfB(E!|7L8dx?d!EG)3lXJNX9LoM`J*w4a5 z3){Z2^|r7pAADCQIyYJO-4-@lxZT1A3pZG}-okYjuCcJz!g&@JSeR+yPzya4rdXJ0 zVXTG9!nUtXxmzuCENrrHw}p)sZntoQh3hO_V_~g@;q`dcMVO6%{?GkbHB@7K{auRVBI<37bF53f z1MJ_Ebu#WAVAozqufgU0%|)1W@WsHjm?m(6H?Xjt3BCrn7U9A=aR;XKW3L%p;2?~I z&jilKtm)xWg}`x~;k*Sr6ZmhK!Ia@K;Fp+w;9mnzInKDJ1OIICcYt3FKo-!4Fu?0Q zCVhe92b#L%0nziM(-b%rBW0KdeA2pa05)6Pe>`OyqEw@l4ftD38~9_uH!)E?U1~Sb zJ(P7ncp~sg%rNi`z&~Qv^(G9k%gIX3!aWwa03&s&0**{IWk>^lJPbM$#sOvyCoZ_a zuP|f#Q7_;Em~9L0^44|gNK>z2z!7OmeTsV;@D7a7Z7uMaQJnuf2ATt}#tiG_QnkQ+ zOvwwt+kkOnOc~;V=Z~d*ahLNM(@#}uso=mR$$^d6GmW~#RV?JNSW6FAH%3*mudj+#>9d*0YAXRgSP^| z#3X`$4V-kANiz@lF-Gd^0R3khx(O`tD%Fed0*@PyJGck99`kiymxe=f;9J~>0=rBk zJ~(>BR2oM3q|gVy<=TD$95cz3c`Wb&%)Nx)0DKoC;hTUzKZo|h{Wf5~JX1D-nHZ_B zz?yvciZFiQHyCkm1HN)D?L}Q0fnCot?(x7u7C#fX%;L4cM=|Mye+>8;M(EHA{AGc` z*8xXPq1|zx2NbQ9lGoF~KGTtv;oc888zbeP2fPC#Vb%f{%%qNlsRDkEX^`}RH3;Pd z_XEGR_8n>M}>u|FQH!G>wwplQWx;+f%lb}yzU2nGZ+5By$v|2+>SHA$|`tO$^Z;rPQKvR z10TT%Z65<>RGaW;0uyRDqfMAZ;6zLbxDR+cWkWm-T?HkG_)0X+OjKJZNh7fKH;fnHYk=wZ zW55f5y&r&I!P9^rVSL~Yu-k(uEeDSWo`ey4&H~=>5bcON`U};E7)gH*@blk6U+`97 z%zv2hvB0x1LbptyZ#{G;jKEhgx@^E-K5X!Hz$P&=Mgbpv#PH8!z%w4TJPBO;6m38{ z0qb$fpVWf zaDj3MKyZPpEH3u|j#2avoH0ftOfZ&V*iVarLj?PohAS4i%{o_oA&q)piF~ z0aJjhfB^k7;bQcqZ$FCr?xVOnM{pN8Y#Z*eH#6Qq zygjA@s`VE58TYU~<=^RJu^sk?yO@_j)Uf~1d+{IAVQ+j9dt!%u@mqu^?Qr;}_pn2w zu-*5*i&Iz~_M!NBFqs%`Gw}E5zY!xwsEHFNsu?q8sPgi16$k`Wtpu;F<$tZZ?Y7(0 zZ+`O|wQ=J{)zHwO{`99msRIWNC|SNrC>@ANqIYV65@J-ll}w07?o}UXnWf$ zJMSIz&<-6|{E7Fe_smcm(c^XaojYE=XWEXo{X1(L#14HzKTLnFZNK)G@X)t;ZCglt zYx+wPj`5c8TFLuvxj# zh2sd6bdF?};U210E=(jQ2IIyI2nnAjVmz3?$LC|mjzu3X8c3&3Raabbg)Uo|$JeY` zqaJ+lLG{>Uk7*u%^UXKaM<0FE&gWHfJYYRz==vvPgwwCAx-#@c*>h^yb6-4Hc3Gub zMiZ4i$AjO`wakVSE?f5bH?yArS$5Y)JpJ{3*;OxoG=2K?=gRWN{uVgf(zpR#%ryP;=+bRhM3RshU53zN)T9uPEckRaaf5eib-d{q~A+>d~t+RNdShb^T>o z>Xu5cx}!Q%{bBhT>UXud>KDuBs3&i$Qd@64M>XDanHu_RNDX^Fq(*HGsk66))G058 z)S0h_)T~!RD(elzWp9Pl%lKU8~luTc>{g>tE~kUB7<4di?Rn^;q`w(@(3{H?LRMd>K-Yqj2tp7hX^= zzWAbg<&{^|u3fv-8*jX!-g@gT_3pdxsxLm;tzQ2sq(1oI1I-uB&CTlTFFsKpej8G) zt*vU`zI~ckgsc%Gktr1*dw^+T*C3Z!5A)F3ySKupyy-YDG)i3*nyi+DE?2jOZc>kj z9#(IJc7?}N)rvg|Hxj%A4L2#;-5wQeBzT< zYdP_kB&pDKqg3e5$tv{w%T;L8O{Dp-3VpPzBR-Rlf+*s5A%0il#}S|Lrc#6OkzdBmSX{Kdq-f%x|l|54&UOZ;ubC(oPS zA^u0iZ*7l14DA%>kU}{r{EQTSO$u8`;R8}=O$w>6MupVZlS69nYax}s%2M4{8-`( z1(J#1m-qvTe**D`5&x{DkeWFvq%NNvLXJUNH-*%54~NuSyE@_@JT%NUzs`wIq zz1i9+@8qFF1`ir^!o>Cf-tm)ibF;H2Wu1MtH+%N*p(ma=Wbnj^$IrF_vUBm~e=bON z_UzP?B*4Up9_v3TKPzX_*(9Hne*z4(0Zy1r{Ik81 zK-Q$$eS7xoWBhd)2M_X4$lUhyXD9dS+4G!nI)PMO%Ypb){%ncworHg{p8e0UWy?ER zia`9?XM6L{oir(D((Gd;fj%j{dmj@YAKx!e$|(M##66!}W*>V{fZ0L@@z2W1&z&?W zKPP{{K>_eT@noI;`26fiIr-W76OKDJ*=9iwvrig2JdgTI`dK=QFx6(CnL-i72K{vU zqcZX#aemIE{Qs}La{-U4y7u@WQXUpTZEK*|3_&44At)kml8}IaB2-(XNE-u0K_CeU zAY73|po)q-s(&fe?2*Iw()j3dI~==m@F(^Ah(0)>A4`=>ST-TRC)&JYn5=hH6uNm^1u zFHLcY&i|@+Z%1X5it{NAYBlI|YP(+jQu~X`y<;7fXZ4P#M`D-c-ukAT-!moQmv+7v46irDbly+ zlRI{3*S>DeI;Z#5$&{Yb<@3)^N%{7CT3XNK0bNh6UF!nPkdnseeN(@kKP?5l8_>1> zNwt$WpOPqb?dNY7|KN`lEa{ZfP92bz(m%1QbgkmF&imG<;c1=wCyS4LqfW#BRCk3w z@7O-2t4t;Ov>RXY?UyP=?AxnDmrAFj#+RV`CU-gfZrR7-t^Z+z%fH(Cyn_w$6Sph4 zSTD#ghZBkC@-#+eu&QFY{6J!*c<$(NijU_mz4THSk4(+Dup;)jZ&HuI%u&4p^K()H z4^QhASbq1^K*x=WDdgw+ylR0#iXDgI`I7S&%4-Q=Z><#jvYG!J9q93eDu*rfsa4_ zIPm#rdt7X=fB*i#*I$1fnD-wGtWd1*;#X0AHle8&x{g}tWS4V?YoVL0g>H@(x}|~B z?BT$r5a)3*x{S-LJ)V?yq&f3Op|)>HdDY{|end zPWRuW`xol|2X+5HbbndJI`dHsZB$%sB}O39Wb+ zY}`1eann|@4NpDwSBi%l#l@d;I}r({thzPN^6FtH=kzV0^2DI(2>;uX|daero;3F=w_)IHgXVdUb2n z`f1As4H}>Plg6#iI;BoMK1gU7`}5j0YRBo?goLx|)?)l$#GG`7j!tP-uWsGe+6Oc} z=a)5`=&WuzOUIhOb(5d9Xx2I*p>+%4ulZZGZhdy^)=gVG`kJT()tWYShk?8X`t9Y~ zx=^vQgBt3qYJBdm;dqazWL^xE1rG!*<1CTPwQ^o zx=HgLOdlO4IA=$_UzeS;~=Ld zf-?oD3BU!p){6k|;W6iaAvjBLrg9bS4<0=DrQU1dtTz6Q#P1hmgXc3w$BrGFgP-tn z_;1>@$&@2C;b*H?uXcDVhh*=)_nvLuyxEjfaMy8zRjXEAuduJz z^y$+FWM^lm&YnGcpyFz9Ybj`b=9y=XEhaZ}9x)pqW;e{9Mwbx#AcuGDFcVx4D`*wTdjW^seG_I>u* zX9uNsUun!;Uw-+eeg669dtZL}_E1ojVRRQ4d z0ls=bCLX{aUeWva90Q&XdhqceoXvw|ZXWz+zCRxPpL*)4S(0O%bYcdyJo)64jt2BY z`6fdK$}>5A0Y_{?HthPXTelj3Z6FVN>;v23p68x>&e4DjW&eg8l&dF&ThVm+vvc71Eyuj>3^qAotmS^05VYC%+{<~W0JWkW_C7=43LTPY7W4CPd;t1}oggD{TdDsm&3N4`@p-fJ|6!K!ceB>|-|4pN%`V+!R{XBn{sRZL z%2u%d>NJP{+O=!voqhJ%9TdaQmcKN~!_k1xK?d*@dXNRU^B(!X_10Sscn{CvH~69p z&;s7@9~~|H*evxGv!pF%U6q3GsG33hjiTXcvsR*^`4eVwkD1MWQ?-FZhwiBk^18<1 zFJEsSz~6(Hh3}8YPOt;?bkM^~^a%b}MF)I`=g0`XLI3f)+Os)?1_=L) z-YBP`r@lYgL%4Pk4az55w&()?QCrQzoDV~X0y)!DyN~HY(aT)i(lt1$B$O0 zIsD~|=PAeEL2{Ulo#9)mq62-8mWkIZdic+I)&=gx&qTLDJ7uHL@NcueqM?^)SiU>@ ziX*=NOlR&s0x^xg_~HxGI&&C6g9lGXRWk9kMAPxrS6|tSk1n*oP3dQMk4v;WvyvQQ zL*6s{-8*K#*>2V!8eWUovvj7Lw`Y8k>=~cbTy}sxw~;ocGQe@O3Xphxe~>&kR^{X*B#rLuoMZ1-K;&59;;w|jGYI2s_}4B{HBYIe_UK#h5y$Y&pQ7dd0@Y+2VNf7 z1IOM@z+ZmP*8g>cg(i2irPp@1Lea2LG|~T0(nN!5Y<78+ zJ>!$G=VaLeKB<#@66>?~NiEiyH7m!zvR`Th{)+Esb?DF`PBF?1=)f=1qchM!%tH?? ze8yVq<1)^%-V!s=9?S1+E2nn06{4X;G%OPhkKdJL`}RnAs?k0Wons}FPOQ(O!N(Xa z)|TH~ng93;um4@TbZL$(JYcWj4Q}A>X~Fm7@7dSjH(9G#+h}X2b+SiA!y{9>*zze| zEi4);+w))Klje<0wppWl+RRZYHvQ@p%Nvnuw@w&hZ@s$NpdmWOaP};pM5_va`Fp4T z!e=(PgBLwGfj9O5pS?`*@zL=y@enkk|4+^AVNZyL)uQ3y>qUcX0egl9>=~bQm;5R; z%!P()dfH7RMZ;C8Hg!ZVM+0~gW3WE^7^8#MH?{BRKR$ysm^cDhwrrV&LLnnA_2A_} ze>6K$Ue-3>n{FGXceKZE5Dl`0heX2z5qrib6-?-13v+td{Om-#BQwe7j7hdzMZ=Av zVVY>TUNq1u#~6Q5*o(B3O(E&~97WeLY@gaM1 zMn_vO8rFygXV0PmpXBX%v3$}!If?ey>?FHgG|Uzaw}^&6Nsn&GNOg$flaixijE7|R zYTxny;P3UnYuB#L!2vw=R7eF4$R(PNqtWv9*N5!w4R_n$XQkM>>78s%#Gdg<-kz7p zCqcu42n~Oh9?c$|Y&VZ8rvXG=jG=h@V!=ZBt8dJntEBrJHbUlFf9L5rhJKlunVY~B zd&CB&PMzv#h}N&lv{aS}$M^(n;aKg}r%Nkh4D9)~h&@-j@2K$)_#^v1efl5=yZ`?C zUF=0nqx^tPoH((9hNIDOG?{=8KIvh6(y{DWG|;NxbyXiVf=_zZW`lgEwP?}8($dmQ z&t@2LU2bl!jUPYWX3d)A>{=-w=XZ#Os-gwnvo_$Xh=qtp*$>dL=NFbvutQ&Jzfm;N zt{zb78cro0Rv3W z7TImL-DavO*&TP>;qYO955J*-wSaX3y#m<7Km-01J!CC}M^E3HYFq9D{{yyZ$;5AC z4A}xP2KJ0kx_eT8&_Cw>OS!+BRSLZU{gJNE)4soho`VU?hE3;8|AA++3FG*pi!O3; zkDiBd{uA866&XQ;2R?(}=pOqVVmoAkJz&$$o+Ss?XK&B=q-cBo=c+}-feSpZkJfkY z-1!bY)8q0W%pI|1(=&>uXOc`gEo<4br75;{xPS-oMl?W!2Tun*;{oWD9~bL9h;^_ryrp3i*h2+E4NsF%s(pv{cc=f-l}eUf(zW z!&tK2#mZ5ZU3cAe-+-r{8+Cw9dm37`YGrzM&B=i^1Dz-K@pOPM_@ndC$=-k-d%#Ap z2QL$PbdcD@uRZL&**{BPzE}Pe+d}`PO9gsf>?Q0}6>*y~Wr~vnG~id2TeiW22fNRa z0W^4k2EXrRPf3i8-h(GSIs|QAzxbS(ikMrz6U8p4u5zJ&!Gjpu><@M zpR-3me~7i$$qujqY=Uv|!NUC;jWZ)ACMHR8FI3)Xmyo9BLtUpj&BYI12Z?_?U%{uW ztjysf*_vVto+@_sAbFeg&FKJZ6ny4-fMaODkHS;@|AP-cXr-m4ZVi0kfd|}uA^KxId}SZW7YeJ*r#3X#~E+Klp#y<7|$xH+pbE?)U}isf#64Cvm=2w(iz9 zd=2`I&VfI6fL$UJ^aL4@&*Hpqyk}fwggjW!MepB)H-3{kVRf6s-|H!Tv<^dq2XKQf zbO>9x>86`ZKFe6AqZ_z+;2!)8zKDkYuqOh*9l91RT11X@-_z!#?>ru2!;O)wlEA8&P?{@kOzdb-Vx`XWyH*t*4Fdl1xeCB=n>4X!( zy#oK}brJkMK!b;)$po78Otf3C&@t|THtC)rWcW{nwF8?F@a{FJc z-!q^E{?mIp=sg|u@D%@oEda=d&yWMY6FWs__#$cv)S#dRzH5%-@iWmlN56OYd;M3e z&>TJiN0SNhJ@F58QI`YIE&6AkdB*u&c!0g4@8FLeNFSGI@)OmW!|;cnKL05{QIY?F z2G&mE7yKW3zjIuZ_@4yk;MoVB(>UQ~ z`C44oU3=}JKyCXb@!D&*>-#yMmiKz+j(@nmW@Nk?kzU_^(R^wr*!%JP_)&Q0GrW%1 zNBZq2(&t6+wDP`2q^}w2Ye)J9kv=xkCr0|bNN?qR4f=TD6BHx~j`KOKlXWZcEr32B zF;jbkb*mGglbuFA$-G1?2Z)0*EeBO~KCiuY5M^H0|2?F7W!KNnQ! zDP#ZppxH##diuOlUSlH{OikfD)pmv|H~h-y4yB{v0If}G)vDD|d%JP6>4W$)#hm-) zZ$Hpl@Ui^T>x$0{l_$GKF>tD`KUWZ^cw^7is&P;!BNv*a{4F(a>cubZHG4r>Iej0A z_KB`PQaejNyhw8%#DC%=*)M?u;AnExC3)xGk$Tje(&V_<5g)ElXDQC}e^PJQU* zeP)|Qdo^mkvG{4_71EV^8Uzl+PV7BdAMxv~MfhrBS>hDV@t$^tYE{%cskKq#;rRt> zRMdB<`%`119f^2-9?Kp;d(cen7p`IbWnE*R%e=(V@FYUNi=E0xEPth5Hbl8w>V4G8 z9{x1?Y?bdRVnyqNo1gt4F#-S%0RA0-C#+w)-+kTgn?A_ZCCG=%;Q8>1D!! zx-ZW_klUx`>-CX(FLlOl>R&!wCu3Ptw0})koI40SJTAze7#Lhwf7aYJ*5$ORIg^w3 z^Mk`5g#&d@>gP@$g#)!VYCPy8H7aVI)Cqqt8&TUBkx4A;xbiNU`u^QDtj&POftUlH z5L=f{O>wn8>NDgKY0M2!d!>F%%`aLXd6tD54YfXMOz30lC)}+E{QSg0zP`x1N}T57 zH;)TQn)eWgvQM;vPNbPx1q+WXIn6Da@=K+&N z`)F#nY8CpAZRxwcnezYFV2k)2_66+i;0eA5e(c-znr*s$psN#*pGF_4;gg&8HbI?< zS|4??ya*0VHn6O`jz3g$zxf|NsqjIu#FywGc1X-m4;}#g0Kfx2A%~;2txrDSYNpic zW(WuBrIp%u{2%k*dh4y}_uhN&AZkOzSBqpm9NNDzGWD)15Ebo_AjPRv%>()UVOU z1yg^|^i{6^@~y<%vCOYp#M_C9M0MA?+O&RC!EU+b7Pr3xC;TFI03PrF`M{gKyI!~F z3r5?c)05q^0A3#pC-=4o|B`JV?No5`t*#x$h8{h7v{$}&GIXepnKf+KuxIuCZ5us$ zw95nQ8A+GB@OvM44nN>O`#W?2et>`F#+bTpi*ze`tvzgh4pbNWo$TK216k{-%TQZV zoMn3M+tKa!U*G}25Adig8}MV@!gsJQ)$kVxi0_WpV%dW#{`inuB6SIU&(z4jg2T9R z;~d}d2dsmP?R9{;@C)8nwN4yTUFK@(a;{>eZ!{^-JRNIK6$`J#`?(`Wj(mn14>@{$ z;op!2^);=_ZXV(R_|E(QF&QzM@3mHaDSlq3u@;){=X_bdqeAvwz zgZ# zeXeUxE-EVOt9!Crsto@vwo#9woCu^VTbIE(brP#K`v8V z$8(K|+FLEqK2U9yAA@VrX<|4Z&v=`{m!)an#GZ*9!WM-!=j*vnH6I@bs2?yFwuWB< z&{yuIrE7b_9(YxGNaj9^yzE!M65oU!fh(~Cy1n`FB{nasJT@F2*}t)WWdF)ufxSvQ z?Un8lUesFIlY=|@&%F0f?dxKkz1o8<5YCLjUYxxbxd`@s>^nPY-${;|m@G*gIXHaiN>zvNE$}+SlrP-j$UfZG>Cl!{%Kusev6tM&kt~~*SQr_d)SBDw>o~Zhx*ef zH~&7bKj0Su_1$&HQ+zeDeCx?VdvMx??s@KolP&Cq{oXLQZCv+~FfL#-``C89QotPF8N#RpZ+X&l=k$J$G!|iRZ=z$EIhF zx+){r|F35ExO3aKi|bLpUNG2ge9nYi_kXn29Ibu%eY!I@WB3I9G38`8PEf5|PR6(i znk8ezz?@MN^A8I~CuWV#$cYP17?nJH zxc*eLd)!s&V{$X%dUQ*u82j*>E5?ty;ybf-KI5o}WDiCJ#(bP3?Qh zg@Xr2-u!s{!|_8u@#FpnZe!u*!fl1y3lA0sijs=@6k!EyU{){QxOm&*U5gJcu2T?G z5MR)#pijZzf{_K23T76}FIZNvx?p3$wt`&+2Mg*H@&k`AVYG`IF3!JyZt?u$#l_2t zmlv-tUSGVicysZ#;_bz|ia#wrSR4q|2{jDGgo2^?P`gm4P*SK*Xkch?=*rN@PpayKtv)Qn*ieV0du& z%J9f=c6d@aKRh!$H#|SQIJ_*pJiI!*KD;r!IlL{rJ-jRYY4~6`P*SI)VM$C$uq3{u zT}h{sq>?@*t4p?(94v_`?NmCcbZ+VV(#56AN|%?eFBL6GHT0`a`pJyKNrm}^GYjVz zE-qYFxV&(6;rc?)vt5pBb&47m#S{gL;)~i94J;a5bY;=VqU@qcMfpWDi{=*17e{|= zKXTyz8V8y+9o}W=gk1gK?$GSvZQ7kbbVNq(=t4;3kob>FBoS|bU zXJk$ss-sca<8}Gu@guV`+h$D4s8_$8|0{4+<}YeR+&U9z;#okY<9JDjw%vFW2S z_1jz7lbZ$Gv}zO7KThkOsA`#bc8gyJTL_|V zYFRN#hW?*Do;l-NwiNj_PWqYq(FgrgKotydoY70ZB96n@F);FX9yR1{JL^<=?DgM$ CsLGT8 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/flask.exe b/myenv/Scripts/flask.exe new file mode 100644 index 0000000000000000000000000000000000000000..0ca2fe752a6004982f8cad814de87d43b6b8844d GIT binary patch literal 103295 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 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/pip3.8.exe b/myenv/Scripts/pip3.8.exe new file mode 100644 index 0000000000000000000000000000000000000000..4a6abaa0563fb2b0d07d1f962651c162d4cd3876 GIT binary patch literal 103299 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 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/pip3.exe b/myenv/Scripts/pip3.exe new file mode 100644 index 0000000000000000000000000000000000000000..4a6abaa0563fb2b0d07d1f962651c162d4cd3876 GIT binary patch literal 103299 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 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/python.exe b/myenv/Scripts/python.exe new file mode 100644 index 0000000000000000000000000000000000000000..b1b864047e1a13321dd116e391f26f35c9c95ca4 GIT binary patch literal 524872 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

    a{h~p)IRqH$$2jH@hWB`)9 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�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%0AEz-rmBT&5E*_BIq`DlHy5E^^-L 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

    @ zpJv6J=+Rr7eWP~N`g%95i8c4lqSC%v?Cl$?^2eV^xwgX{%?fVsiG0jyowxRU%Kc3D zTbkKJi+(KJ>(}UBvK{r(MrQf1T;E97T4k&~@NV(|EhuqdW9Q3#wCT;hT{&p5uJv;C zy(VCKKkdhuHzuwcl&r1ay~(oX(_UKKJstb4=+j}YMvH%oF- zZs?#jd2Y+8sW02K9~OK$-8QAWHoX0FM-SfEL0kLVg=4v+buIL&LrdO#XP8#8{>pO& z>-uZYKQ-;fr)PE2cKi{#=!5Npwd%2{TSr%R&>q<}fAOe!sakl`>a9LQnrUl?fAN0a zhpF18?2(HEQ?Xibb1E+mHP_w7C+cvS+P%W!71esS~0CjtB+f2H#qi;(H?5Ab$VuC!DDr2Q@Z=tcs(Hj>-6)9 z1y^d_j_iKNZ{I*|O*W-SU=o%P;7gzb|{iI{kuv?Vyp5<_!TK*k;Iywik5&mP?%PHM*dC z-8r=G#U(GD*Jr-&e7^hL=k)_=_dgx$IIlZ?v3$~R(s_Me z?A}Fp_dBn*;6Grs1^>_Mx2~%D`P*O4>7O<)+iUssoc{gtHx^{QbWXo@S&KHcYtHG( zohve4yY8I6sd#?L3scYO&36vO|8siml(SEEZhua9R2JQ}IryCZ(Yr&Y7S*2BgC6$2 zW#X>0`mdi^?wj+@S^e&P*Z98j)LDJdt!J)kciUM#?&E9m|E#`hM97Y{nP+up-3OMt zbl8`5?Yp_%S-rY)xp$++XZ73eSasya<7f1fers>(^urnbdaX3?+}1OC)tm1{oO({JayX?^Sr}bv`4`b~gp4QL(>*j9FH=fqtnLaD)&j(KH zllLW#JGkPsJ}0(ny=Bg6edMkAjRsCSt;aq!5dTl>WpN+g+_Cd%-D}k1Q(rfQeVGOS zPwTsTSns{_@F~4Z{_Lp7zB{FRJ$~TI9q*sg_gE+V9{DgCAEehzwT>M6bYw{Opu4?m?J?ELVukCIR69rjm^IAc4df3w;WJ~rf(emZ*H zUGJT$)Aimpi_;I*>0d`D-eLK=PVaXC6RCIW^yiMw4t?W=I(^+OmJ^i^*6Ab5pLhPU zs!o4nP34yMjygShRW|bie4V5{qA* zp1RC(&iB|!z4_Ry#-*a5=N>+( zZ+mLt^3k`R)I&acD9nG+N&V$#lMn2jc~YM<-}3&a6Hn^HqONxA7{z%TMUBGcCOyyY_^Bs`a>8 zhqF)UPmb(=)7bPAdTy(r$=e2<(0{DFwPIqA6MAZn<+{^tPUvf2>Yo2f#0lN6X=c`P z-xK=TE*+9{PaM~OjjXDe^6PQ^>HUX4n7Qk?KFNAdr_xW3>vx~N;-f8Z9@i_cvds2< z;kf?X_BJ)yj~v(k$XuTI)t$%nEZ?^gXVR^4&1;LdWBJWZnMX8#Ona7%07(qsDd5ieb_Z}BmGM%LuyFXkN6ANun6$Dd^#(?4DC@&4W8 zkLhQ2=j7E5JEo60@_b_Ze#i8iTYl4aMwesyxXIVF+iW|gNAMrQ=QZB3q7nQzDc3D$ zj_QpzK0WBJBS&?wXAf-Yy#J{F(fsG`-u=x{{nzKOf9l>(j_MOSwAr2Y_E9~e|I1DK zzkF10y=`%y_@|HR)0ahej(hN^ey9J8uUp>%_dd&;^jUsXKQi=_9aH8X)rU9w@#q}| zNAZAI53p<^OOFya)Yf}BfqG3n%OwI}$B1AxHHrudN-oS&r)Y-5!5?<%wE-)QW_vW=rHinTK#FC ziYdkS)ap&jOT)`cYxOZ-Jl^N@4YhjD_RA~M=GE%$E#EGACBIg$SyN(feNC;t>AJg@ zJ~F;mUlTt9|7-OrSyA`DuGQ*4ZFy+n#N=ANV|ZC>OUGJ$;h9#;UvF8fADl3}WKm?T zzPoZ}@D)L|dbrJk|Fyck<$E{yoUGADS1cQF>~M|lsL=cWxxYq#dt}#{$9L7}&6hv% zqTiP_`sC`kv#md@(L4MxEOq2tHTutQ*3Mk=a*cl9^|9G+JX51T8de=+d9+4f_r&cb zc-*;MlWBIK$dU*8mu;}GA`pR#c#oT&bjlO8!pj-TkYIIA|*|a-yYxI!z^QX0# zQlo$J&ABJv7+0hB|2(kqwBa>+{1wS}G}deMux&l@zeazd@{e0?>s+JvNWA*j%r-T8 zyW!8oB*wy>|7!FStL2?Djlet4Tb<{f`V(zmIsM0Rr@ngK!P&V`oO(uprLTUkQ{SIA|CQ%&cj_yxgZx{q1pj+QhsUmW>K~oFBCy>& zr+y}U(YnpEoch^kYrYzjc4fk?rd&?Q}_4rTApfi>b)0_>lGgj|NQ6FOYos8AAcw9W8kL{ z=h$;+@~f)A?unp)WV$B`kNoW6!UcV>IM>iWh>-TxRpOqNx`%c^^6H+S^9$jw?%^Gi zd`lVrko2$afjTAMO1jrczOm%l4iR67?sYCLu zrT-<8ZzK5<$*VJI+qE)PN?yP zKP9iUg_V@l2>mK-Ca@o~v9>s47pKKCHb5HA$LZ9Yz6N6BPg06+9n*aodP6wfV6nl_ zo4V;s^EUXVH?q_H1>(B$fA07O!qJG8a?vq`vq*hN#0do-Q@0`u^OpDalRZrJ?(A;ywFA z`FB0&8{2dfL&(P+Tf^}wIT$5>9dwSqc0hMML_Wk{O8f8Dmk4=r{#7~tZhY-!j@qLp zMcc^+MYk=frsx~uRO^fQcaHzP{8EjGx98{bmPoot+L!B!o8lh^X;aIg`zWMqbfb*! zu8^+H1W#YnAdOXRdlA=Fw>*^m|EuzF%a_uj?*!1DRO%frm2#%541ZVtB0Zz*+afhe zi~1L#HTAWyehL3;>2*P^7x4D~SG6)8cN>P`Zo?%04D?Xmzq$Jq>h0W|>LHZu2`>&m z1}RTR{n2+%=AzX*5a&SDq8+`P`X2jK^mTLbk8TxGPeAvCr$Q&_{!}rj@iOFfTocI6 zn2-8g{aj7t?dVGmm$k^uZ=$wV|h_7EJOIZG~>5(#>@0Q>i_h zb3~dXzBi(7*&6#J6^pUlG`5nxjrYDvOU-?{QA6GOdFlA5O;anU{D?2x7)J?rj9vIh z$>7V=h>S}T(8p;~B2=HGIdu1z#(0vf`X#`o2(?UO{&o1efRM zLiEBmo<+Bt$h*iR)g6uB#gH$_LD1xb=Ab=zNb$#We(Kjk{dvX3d7zlgc~<=-X^Ce^ zi1de`rs$Te_!FHsv%X)Ff!U_vd~6OAl&=ypcu_(T>H;vA$1Z z8=-KdZ(<%my(raLSLjj~ygQA`Emr1#uiUhjSF_3bHE5Orr6N)wNi>`a>9boa8je2` zv3N>Dl!WBaa2lR!kV5>Ok_bs(en}dR|KgI6zEHg+qKq~mJufA8Uff#bmZEY|?J65` z5i1hvDHWfeZhmi~Ekn%%06+h}FlxEZXMvO#a4~=Fs zr1OOcNjgpAoX})S#l6}wY7q5uH2Wec(4MDJ3dUSg>iKi$@W*ii6#+XnV-e#p?flU* zC^Wwkze|nh;v1H<@}Ra!<1B?2KYC-=Xv{7rV17w&6`Y1y=1{z+Y=V5_ow+|2dyVcH zqgxNe-11`op4N(_%k@VN_smq}>k8!1ffc`)F-`>M?l(uE3{)rM;Y#0WtUtG;xW#xv zab8Y5p2Dl06p`{cjDD1ZMHt^`Rw7ni#`&d4RfTfzABnlW*!!hf3283%bTqH>R3lfy zMa(s*H=vnESM-Q8_?{E30I3e?Hd(w*)TB8o%>s_m~X(mWILN*tNlgU8$X|AZ!p>d03L|;Z0`J*~>w>kIx#~r`wMMR7P zkyiZ>^=GqgDH>NrDmS$MW6qCzE`D*Ee^okjeDzljo?588S2Xr$W~npu8l5Bs;@rTkMPe_y{#?dbW?Erf{M+%&glou_p3|ZS2EW*SA+JHKEN~;MAnP zQ*)-~6ckO(o|D@vdFq0^q6OC#X3sC0o}X9T)t;LpBl!kMhJHI?t{9v#n&G-ZNvJRD z>cAa__&NL@MM+CvW`n!3i%(2sWw1-cMH69%H=HD*%y{6pYe81Iz_^c(DX|ZE^{D^@(jl_C( zSMfCZ80|8Iztnnm!ryS%Jun&REEIXEzS57aL^^_xM@8ejXsjRRORy7lO~)JTRoKy7 zLE7=-j%~0r=tMI48$RBT4MT>dzg}d=ve0HQJ?|=#WE(Kvv%*nux61&l{aGrP&Aj62@rnF3jj8weGg}hE6mvVCN1oOt{#Zi&SZHnl3r+TC zq3J>Pi}*kv76`Y%bU(WVAFXSe9&QiIvL;&a0jr4IU>1=P#3GUdSwykbZsC5ht}cdO zinlnZI>7Fq)hNv`(cC%hE6h|hu^7UfAxs6z5IAaH4Do_WlkWV9T@v$(U z6^z9s`7xU%$g7DxJS!~Cn)pC7UzQ4m66rN!fk}Q@JU)jXv!g=R!T6jI@zv+i3!40h z@-{;Gk>4bgpO*_|%V>mhp?;IB_LvU-EZWk^5>VZ!(%0^j<(=r2#`6%sSgR->7Imzn z#eZi{3&SO`dtnM?+D4w21)Y!!NgnBthgtryfh^V$z+!X#SuFApi#)_8HLbQp`m;z! zAd5s@MWQ|;)5EGQ+;0&4B1{Itz&#q#~OP_9tidJ-)Z%Bc46!dOx?>*qV9G<|F<^v zj&wwN`)5RWlYKMfVJo>oPmF%KOp#~$p=d(Jstklm_smH8W$+hZ&~@t=u}(-uYaP-X z{WIi9I1lC~125xFQ+aTqzlHfz++h|LmSf0MfQ1DR&(jJKZ3Q2<^e^_YlWbghRe6(n z4j{fY=9tJAm2tez*pD#pAYX(QFAMWZGo)iKtC258Iv(`gm3Ni)QGknozeON>|`Xb)0e9^9bSZFxfwUnPFE||sTT3K91D2q#O%;Jip zolUDFs=_M~=5oucWO=E$l%EFB%i_(vnle9&U6w_aiO?tul_zsN%HE9RkNOp99}r?; zA%om{vuFZir7+(@Z=MG>sJ|*+E=NQEXv~|+lk%(he;18unA4|m!(m}U&wSnOB_@!? zpx=x^zZrvmGY0)qOj2aEB|4BrqkoJ>{}_$_F*+&28D5RLZXV2yAE5q{0(SF+{p%us%_KNBAl z3B5qOr~bbW@?hp0Oh={H5c0a>W3X&<23;}b!PU2!<5FcY`{!}XxrdRa@TB9H(i4MQ zSeroBW@`j%ncIXlOAcqDU->)zs(sQDe!-em_vLr#kI1^Qt>sn3uD(ya-$&&+CV|G} zXpFH@EY=dvcu$1>i{x2KbxQh|8wtIOU@>2XJFV4?E74b_S(-z)a)&{`hO*|CR9842 z?;2GGIcJLUXHgC-i^>gUQRthZHd)gwErXEn-mGPEFV@nM$eK9u<@&0S${?g2(*`(PHb2K_y!{aHvlXjQM=t}zSQ1Up_PlqEL=WeR3dYfz@P zL9A_ZJZp=OP{ul=tD9CuRPtFR@?{D4W8sca^!JTf_$J8D-;4RL@kz8a3q(1>P>xWP zqcLl?MwC>3dTUWD{j~{U zZ5+*6o7`rsO>!)2V~Jp{9)R+w^pERn2*#LT7P25~O4HB|)tJ;^Ut^A=X&`Hw5zLw<2eGC}t~Qkw)7qPbSzhDw9X_8$x611h zNTm%-ZGqLf68fKhU>iD{Hn%>V+z^Dw~;C z_Qo>v_@N&t1J*-!i`9==G5@e8hcfG?V0%Ec7mNNXB2mrjymvF!2Ig^_FGouwZ`Npq zcN)#V&3-rTV(d#8EBq1~{d!!ValNd+X7lp$VcwXBcx74aeD18upvq<}i*n=ho(9H8 za~&GPH^*3uwj#&bswS0Tc57B>8t*$jjopT@F)jRAi}ZSR%VmZoFnhL%g$<0bu*X~b za-0o5AN=d!>Gve)XAQh;52~G{d7KN&vc}*;&epGjoq^T ztaX%y?LqztoskySpHP#F+S%?#RI#u=eK@yNLOH?3>%80-iAC7qopQTiW*n_hy zt%6vquBX5Ut{>;}qA()Gz|HZndIrO%9dQ5dx71lfEaEhn+ zY5u_1P{Ax3;i3^PIz6JAua{N&N*=~`uiT7w&AezVO|x7k#&p7*+wv$2avFEu#GJbt z9ok>HbGcFejdI{^7ws17z8I{#VzBO__UoaHPAa2FW4i@;FlfEp3u~is8GpJA=Q5d_Gz&f!uKkby&3tQNg(t)fQ2WCJrkFX^STT{U7|iQCqZ3`^{_b( zE;Bh_ZDRkSH<2zBxK9?Gi4pbw52(y7418eH7(|I&??%4qCC?&TFhk)bz+jq zMRQ%+zeq+uK=VLHW6T3Xm~~BX!}}EG_;`7+enH)Zr^~vP<+*J6n)U1d7rio<`~P%< z?_bnwdrC&U{RfD10V7SiMt!PkL*(X=I!$47T;r7-H_*pqV9Y>Yf2QQ zjWRXTX8D@izgfoh^ImPO;`>fnuKH0j_SDBIH-$29f7$2pH7wRe=qs&B!E)cvu!iu?|`j=DZyFi*tZW^?QFq_N@b1Ypge0qrY#Bz2erGf3;4+Yp;|X z6#iAesOr*_-YU0-^i-vxkn6xdJKnm+{8oXi73MpwFyCo~`A(~(=FVo-G4_kf>!}=` z^hW7PCpt?B!#+9AQ!qXn&r<$l<0IESoJph4i9nyj_td3~|7yPYSMDx(syb73Y;3e5v ze>J}r^FPy`hNu4g@ATh15C4s8_kXhQR&~!NV1760Y8dU!;><04li1r(d!jqxcgY5< zGvn*;iF%5A6a2jk)7s?MxSli8VZ5Ay*tfzOCf&Uc`_4;VY$r^LIUXs?Fs^?=Sj*sE z9>UU{JeA*DH+r!$nEZyq@_k>ikEgg1N^WhR@UF+SNE`3-@B-#n``YNC#v+ zc#_e?O3U>r9UR*_Y5t!GTf`E@~Ra3qgL$cwMqzN3CC_?HpeR5kGYvy zGfJ6%@-58%x)=KlW_3$HexJ|CTcZ4MmJr0ElK44-y%n8rZw+K2xUcA&?9WPG^J4eI z?3H1Sym`MZjAU~F`@Iez!mIsWCG&^h@nWySd}NdZou^Uxs4Xa@c%bv@tS6M8Zb0@? zUgDmHxvgA6_OssgVh)%ejcFzs?#z+wi`Blhyc_a&?Nt5zyW!07{1wmj(^H;}`YUPP z2bs?9%yKmA;YDrX5^?ddr{1}R*y|3&oHiYIl4V)M9oLbrJFcl-sCSxcVD4+7^HiMe zG)d=Y!2D*6M>~~IqkN2G;^oG3sq+DqhQdhnIa_hB!Qq2G$Qyl-7mK8GLglVd<>_)z z>HG?V?vpMPuVkXIp}J7%nCr43d&3zRUuVekFjYSdVng+-%B`>=e>{JQR~t!@OA7ra;_jYxwSDOc#{ZGQ#88Z6Xr2MESC)9Cec)JeQ&A&QSyP6@!OwS|(qM zdu}r>x~oR}O*UKx5qCFnuQwwEGROW@y6ff^?(t(xNgl*I<*rcKD>TQW{F#yKO{kbND>oTOSOo4iW9(9QM3w%0P~*kUzzi|fm#6W5 zsMCvOz*sNC@71+lY%a{Q%kX;>;#`e9bTs>=J~qjZ>lz)|w?cd!VXiUxbG7YoIhP5- zy_6i(1J{AeI6F{s=KejbGn5PseTH!n^ED~ z+lLS|ekAV($5~ajzl+Aand^q~s^XLW#Ch*loTq<)^YnM>ou^l$OBZV#ti$PfEKmKc zF+Gakb>B3Mg@1*)t(jNpE9Cp1O>jRB_cQFc>ucs!{K~(=hU|@PK=vQ?%50X&|M8dK zetG>j#vV`z#u2Rh*I*Bb%iDN9D(?hS{g7;F-G#MybQPNN=c&JcGu8%=-qBPMRmbdGL2H%$UpY`vcPd7YyB9Hpc5}6RJFX9|HA+yYZ3e$09f3 zc|0knm^g3N*b?o!D_xF=8n_?n6n%tANBG^#rkGDfVm=kY;=Xdvr$jusUx_xFX&z*bPs2~)t+Q?&mwR3ILyoj${W*)o(02m0oYp% zFBbblG;d3!GRg9ac*V1LVA_t>sl*@ zNtvrTM8{>`Y#_{o<~$qqkDjq`L}49ZkRzTUiL6$2;o-R@RkwWp;JP>H%7@3g;`2n* zALPT^w~E7z#=P-q3vlryrrNmW>7sOzpQd(NA6hq+)1$L}NKS*@r|^;df0-W}at!Tr0W;Odx; z^!!r-)~q&+oBv#VjcnaeA~^8J>r)YsPAZ>dsx`@{#{ zY&XmZb9lbD+myv@68HFBd%M*4(%Cm}e;3`I7SD=C&^?ndx@S`F={ZYS0G|79KuRcuCn&Kh;nk zRhhZFhqOJ(*C-25?tEU=z&_RG>~ndF^WRCcZ2%g<~R%O`d=|`ss|GM|Jr%>kQAUhdBo6kta8Edr7rP|>jk{dl|KANb zXD}a{WXI0{9Tz>X<=Th84bSgfkN3E|U<&84uWqOup32VWv!i1XrlWpye&yAa{S zhDG|Yd(3%I^`cO=ftc>t^TPWET4Il?WpXq0Z-!@-F(8o6KVTdeRNGOg;%f+L56xjk z8rWmQ*f00i=sg)}7I}_f?h}NLH1KW>wdOas?Px#T4{rpW113de@x8l-(lz#P=6svu zRdVVQ(z7MT%Vroa>DjaY^OwR1Txxc)T+uwZycej2>%BnL6rRh`-49;$o(N<7Hmt{s>pz`E@=T<78d}R3 z!}GFqL|HnZEb(IhGE0;NkEMDjO9IN$9%YGlmE|ITc;7)(ZU+{Xk%0PckFy@U*Fct= z`&D{lDyO;Jm({14bDzpiswwfCiTRwD0b z4xpcLKv&R5;$DiYpSg0958DCrm?_S%Fn<@gnE6$_>237OwwfvpN{bS8CSf+0&7uuH-+BBA@0(VJC!>J z{uO%aLwGw6!*g&}Jck*Iz5B+j`5O7&8Q$kcqR+*SOE#D~Q%NBAK~tBDV5a^ME$zjGRrVLBz)pmLV)N#Vghq?_>O}@VLGx$8cb28o-)bhOkg4+E%4{Bc7Dy z&cV!ny$@S=1IjP+W8~}Av#fhjzo$IbZ#mVkxnDB#s=b))&3qF-)&$SUG{K$GCP|?< zL!xtN!yQtkiwe2Eo6hp7%{XwMD;MYf8F*J7Ug$`>IARWN+H2ih-DE?U= zHUXx>)Ia=HxUlDZ*kG71P2oh|Oyw}kCfLG)sjbud+%PA-RR7iXMIY7!=AbzpCAWsw zmCBvV)wF(6dlTfx*yqsuf(}Gs?$#9j2>KGNiCbc?IU)^tY#+kfJ6f{#m^Ze^d#c)7 zupjM=t&Xm0TFKqREi4>m;bYbsuSC^ncX|b577XiPnA^}Jt zFD{1$&S+@d|10-~=E5rehTK*C8uTQlCGB0~-9g3fT^iS%TlMQEgs7o6xIdQf#dV46 zS~2qNsb8Tq&25Qv!IR#Fd$aHrL5YFXw_IxdqROG>tERrx)0{8tcONzpCb^@b&q*?z z?TL-U^uyLb{8%CIs(=^G82}a~RA^nqi*OED7%yk#Y~<51iXtLcK(L2ffJEWg!S~>CjGrB@i~e2 z8NySzoGBvRVu_zl5`2c_4@mzfBsR_v?gr9c~t`Y}G94RqFVva|S@w~*q$s*mR5<5!lBXOj}sS=AME|s`iVwuF(ByN{jEzv2_>nf36 zghZRfM2W*Brc0b5ae>5AiEAW2D)Bjql@j+zJSLGV1O6P5di0~jvl5lNL$-$;iNhr- z_eSiBJjbwt!n}!j#q$d07L6#HF?W2y;=D=B%3w8aeqQmSiP?qoVS$zK#eOHTi9^%J zj~IJp*WAKF_MlgK-b{Cxp$ie}cCs65&np_0w}>pRCw^$r{5jw!u_?q2E}T0r4=fuv zWa7ZI5j~Q4Wb8XHq&MD?UF?`|r+iIfCw<1}IR?)ynm4yFZ?L1daCml6ZedH2OHzVv*Xe2BMagmR8W*%yeMOlol5uv*$kdLXAa^WT~Gw8 z=9GuQ^NWk~iX3UhbEoIwb^NT=hoiV4XTBqE9%AZd88Y8q zSTH@?ktefL>pfHg$Avl zT5>r~7(X;!h5Onk-BCC=+wPcOoCh_b?|HC2WH);5+}ZQ(!|*u}QjeiUj^ag(?IV|o z1yHZ-!U;v!6%^$%w#9csQ9jqI+@TAn=h?|SgzkWnvFoYU8gzchHzTij4z!62Sd{7( z?-BE45$6^UgKUtmwBo#ZsB)GjG&3!)n5%8kbmVwGvRuqskc8^%+=yJ(+F+ZJ4?*X` zk~ztC{Gxe|yg3;KbMgkxBMl*n6?%^-DsU8J7os(fA6+odF&shI3gl==Ue5fPGxLg7 zPL@&}LPteSqL!*jHbN+<=VHW#oE6TUK07ZrZT`G`Em)6M4)wGk zP+sxiVq|K1cHwxmPRN$AO7GEm*$eV6vJbNi$t%orT;z~%D3>YFz@pso_JSfVNA`km zM&Z1Hg~&5wFA68wE6&SfFIxyk7vvP9M_`*tDpYv`b8}H;_zK5I z-lOMcqhH|eyl?A{GEFBno?F0cZiY{KcEP+nm*z0Gm*ki>J!3A_3)KMXH`g*0>aSG) z2D9{e%zI5e(LmP9ZxTeudl8oIji~HA)9gx4i-NYIxTNL?9l@8X$&PCU`Z$(A+z{xf zX!5A(Cf=|ijd9sL%+Lkevy0t5#H-$;2an0NyLyb-6wBzjsKz|eF|*asE6B4TSJ<*< z6zha}dBsEWW@Mv38a;T#5XL4$Ui0S&brl||4}03e)rRsoX#R{D7>J3KqzY(n2$B5Xl%4K2zYJA*?GgSj`V4j;|0^rhCha%TH_e3E+Q?qi>&?;3opcb@#^c}kJ>97x&OxZcpbMt1*%rBTVyKqj?T>G^cN9QlNZsDTEB9j9L z4IVOd*cHP^j2tz3%#~x)#-)$Xm@sit=4AeUxWWIpE&SDEc@k& zLr+X;IR2%N^AO{F85_6fnmsl)ZO^PdNf-P7de@KDrx@$LRORddD^_+AX>giyip!{9Q^|QwFT3E9 z`Jr;>sZAAGc2DV<{ZQ6C`Ey`FJFNg~EGa`-g#Uy84mpeunX9Wh@5oeF#n z>+yWD2Y%8SWdmIWoY;l2)u6M02VtH9ZTya>@f)A?t_2G2>p^7I}6$hjE4!X zgM5184joK1X!`o{_b>xM?*$%)83LNnw-;lhLHh$^VOE2V1K!aa`3Jok_!LYW=of&y zV3I)}0A7IU44NJwiGYa*P1p|R0niD+sW7`h6L#qf`GZab4u&ZQJp}j@Od05E;E{g# zwlioa@aq1kBhXpE9WdKLM-M=nFe^{_vMs>lFwvmv$UX(>fhHUXlL2}Nun@)pns7PH z63{Dw2Vhb`6GmvzQP6}5FomEAuO%KdU9%jmqo|+>e}Qo#KZk(9sn9Lh6ZVEl1l zo#{6li}Hew16~P}0Xhws3sVT1Z~=@1^g`eRFjGMjZh*-JeHhp%4dnt&cOTlol#_qp zJun+UuLW*|sQ|qT=rs;?1UeNsH63*g+72v%sRX?mXv=^;fKCJshp7Uc1{?>o6Lc0Z z8)g^i13-NOWCA)B_%ckw8Pp5#PnbH`$4!K6VQjF^2Yvt(4SFl^TNnm<7w~r&f6#}4 z=V7d%*(AmSVGbdlVBpIzPS9I{KfQ26ZBf(9++1_*8#gt!8s1- z%&E}rt09N8NEbMA8e|Q6G;m}V%0)Er#%#0^&?|u_Vf;bY0aJ2t-52qs0$0Io2VDyM z0%j-ZDqySWkU8jh;7u@x$Pe&!m^#oEz!NYGarViDZssA~bI^0(P#6Y!IB+|R4K!i! z4CI0Afk$9cK|6s9XF_j556Oprn0$*LI|gi903P-U!1XXYL2m&52(uM*>MZCm%mL5~ zfiJ;0L6-wh!JGws7T9(+;sl)l90y|uodLW7W+CVj;IlAUpkDxf15*Ne7cj06G6zlg zAWSLfb-?a(pbwyvf$zYq1zid3RD}8h-5GcfjO{$^fnIYVH^?d;cr%O->`Q_DZ$KNk z;LCOb7cYejVZRILT>|}Ke#{4W5@reLI^d`q>HTJYY&0-pCE7B=5-ur4*+CONcnjJ) zWVjBv8RjhfR{&4kiu}V*9k6^2$_1M62+SeSPT;rqK%YVH0+!r|{s{RYJas?h4|@0m zXqzy{5N9rM>w~CM(1hQ^I1qL(aMwe~6U75Oybe5Q!cC8$zTp2=VBnL`ThPJ4wlF@( za|ZARm=e$>z|Amaptl24o`=ykv1hWwKgwMmQ23-aG@GHzuKo@=u zorhV8dRYtnXeatZ(A$6=zd_zWcLpwn*#)`;xawQPNq&GQU|yy8zhmqVm}GB1<^!L{Y(dzH?;#VI?Vz2&jJ>FL(1f?ZB*6dezzIJ< z4`IIq_|1=y3+#6RpZ^Kv1brA7vJY(seyqTf{ph1$UjgiL0P+N#2%H787IY!-U6^&C zD}i6ZI6&_N9)wv5`VbHo2iOwOgwZg!gH8ZG4YL9C2H=Q;7*9cG0q4OCN7+k&n}0`n zKvw{Ng2@714Gj1f(gGa~91oKZIv4mUOeW~g_ zO&|0Fz|r_tWHjv8;yHk3xTk&qbR2MF1in>?c*=pd;JcL-@P9k7bu_|&jt5SGvBLiY zz@iunI}F+mw8Y|_At+Zl@JE;fh$p|9g{_9kLf8$!6EGX#KOxS-K7n}^ezpVCn_Jj+ z(CdKTz^sEGTMLAPL8QzMd>zIg^futnFr7i;@;hq=lMFfz_$-VS^b5cpF!7*w0`IX| z*Z|P$fIDHfkv;Gf?$ z7B&R59T=W~@`8>4J_wTmdL6KN2MgO3=f`ZocVOaRUkM!85wZe31o#O|75r=m7Im_) z2-w?!$6?|@*8zKWwy?BVj48nRFsvEm0Nf0-1ojoc<1q1{>wrD+j{BYDA2=Uo1L%do zGMLVd{Wxv|ofe9^13F>K@t!Hd=&lGG1X%%7VUj~26JS0}XS~CX@DG@+0q_r;-wk>K zdLi%}%udiO5$y$LFX&QWNO$NJXe;num@S|m0KSl9VSNIj8^8~GAU~kD0`KaHbR+!O zYG6)p$P;ufa8zI91AayW`}Mc5QqTi{jZ&c7h|?dqN5frU*zX1E|Bt!1kIQLW_;+V7 zda+OlSz1coYAJ;%r1Bo35Td9kLMkdnuL!YP3N1nuvIp8z?|9b3UKb{(RSUHH>@AF~=Np+;{EndzdmNxEVZ8bZ`YToTMI%L!Fl0%aOZ69M?4fx zp2M}E{uC%>$(*EI7TzQ_l=Bzd!Xpw#c>&x#m+M7&7&M>9Jf~cw?0oKR%B^8nYtEf= zWq6MiQl1BQF5p^F9ttNf7FEYYmU5JR1hDWeh17Y3wQ`NGKQCLi{P0z-#L`2eF;? zT%!%tp*#%!?8)`Q)!-ST#=V>f$9XYstQ*GgKB?!id2oq0bDsKku!Gd#!ba9Q;)Tb- z={~&Qj&{spHL0SV8W`@&yrP{5IBFAX5%mpVE~&>w+HGdO;Ua5^3hjst@#A~i5vl6W zacM_nB2lBhNUH$G3Kv;VTyc?6fy_VJ5osL6^%c)cB#ERQks-nKnffA?wouNsQ-;Th zKOP7BZsi)`YVZJY!ZUtj59u(D$J%ZKeMtywMIy{639JbP@Ea*%-K&Rve&;@7-BX3* zi9hR)F|;Sfte*~W8_DiPe_%YRpq&KxfLOCm=D{ySwF~0|d+wplp4^YnkjT=G5wsKs9v4O3`fU%Xpm}DNyxW&Spi`1t-xzH_@^@09)z#UhZ z&y0U4j7{S@(jSqdGgxCeMTly3)hQdrNEhWoIB@e z0pEUQEn>b^z|HlHKYj3rJ-+i;uCEG=YT~}5KO#rAGPk)$4B*u^p0DYT$o>NRZO|VL z7%eR==+GaL(w(G*1o|Tj-|$%lA@rvL7V$YRcJ!whrt(>aF7)Rr+{$}@HRw+Wbn40e zDfCC=@ZLO@{y4!DQpK34u`h@#QQ=sHaIh+$(@vWa@C`BNu}18Jyf5NZ?+i(yKO%b#kQTyttSXEoQS?WovL>JDPJcws9mv1YrZp@eSLu()-Ggz) zCkzG*l@^RSRxli=P5&7mWBC17#)a`|f**7^U;0o3{~S(Rj86jGq0fFR^d}S^9Z8$? zCl&_szQ-*36AYJ)VUHgA;{d&lD5pQZaN#&}#L*uss5X(~(jSqxNGScuhHEDASo-4%jV5!A z#4(4jNdon1>5mIsV=gUN&>vSgVkXy*{usdKS=6UL64*XlTJWVm!W?Pg zjwNG4e{$jex%8Xy$b&~gKPqa7=Fl3b;oIM_(MXr~Fz@}!)0EMN>NrX3A$ zX<_t6#)a`Qg0p?NE}X9wbn#_uIY*Jfn>dzuF7VxE<^%PsV4ENJAockLm7p5HwWhvE z{Xph9^+RC_DdhQ1g|Pe`5dPg&K9Vnh46aK#Sh9`&7I2f0f7!cJ-72+5;qzcF=297a{|95v zv8v#c16)hyQX$MdNIB!51No%QcOH6Ap8oXx|KuKEhbhe!>!>J z;)LhIF(;X0xD{MWG=5>dh2caCkAO*W%uhTUs-L1ATm!Bm0v-(e{K*=MtHR##(t?@j z@FGdXQ($BQ*BTdDNEG@rZm@+!Q!asnPBS-fkrpHpuYw28Fc0upsCt&Ufg8ZR#0$4e z@i^G| z4)Y4{0!NTq+yE{nRk$6zMO5)@sC$<_;rj3Zk;S8+R1RZ{%fdCp3U`H%i7{RX$LG>M z{V|58h!*7uu!6YYA~o)D{?rlaL2M`&DSMxF4gW#B3mydvNhmJTof!tp(oWzRd z@GPmv6JZWfqmFM0ucJr;<&iLnNbqF%fDEEe9(+rpD6fK3UvX}@Iehe*vBL}CyfW4S z+!bCU^*lBMc78*fco#UGRN&@t8>zuVU@Zy3MJ{?v`*<#VRL;2!qJ3Ci!TpR^z`^gh z9@No-t4T5L4`;t;Y^h@fr7BsYa3>f~;;54Vt4Ri41Ldl?ez*eEBq_KKoKDnutOE=o z)|899NbK+wSVWxgVkq~4=LLKUTuZ!gSGb?}<5%GmGKe-yV4sg%U&>YCd@=>MhGE14 zkA@$K4qgMtRkLQ|7BGYO(vD7zv@nTy;O6iual*TNqKt&#BF~X1{3@&@6?hdK{F!?k z*Miz#7#~~*cCO{Rh~;o4Q5(vA0Z-I%UU(er@s&D5_<0acAhDF2!7aob4}oV$Fm)2) zV-kfI!WI&XOQ7aA`h%OnJ;Vbyujlm-NyeRE5DCSD;SrLB=fNcnyxzd=;8x;-hrz4F z0q^pi^J?TAaTmCaT*X6R42i&FVLHjhv*4sA<|^lI1p|o<<-t(1nL2}c4uvr-w28+; z#a7l6ybHWf5~!aCCrMZnD4zm{2r@zxt_ANC13VAzl#&rt@K9JFEhG5jB1g-}2v>0< z_?&p*CGc)189|lybD^CA?cgHM^O-UA)Tx3!*)J=X@z;T?h`tu*4o?z0JPzI`3V0s; zO0;mRt}?<}(!^t3p_-D6P=*`BdCKe)Kpi{iLj*huJ|@M~k-#b4IS1SZ`jKSnguqC0 z6_19`NfurK2k|*Zxwyz6QY+Sn-$)5w4@dT-P23EwA_=%Zj380C$XGGB$fqO}FNRel z0++!4?A4{A%^C|Wh$=49l{8UD&bx#h8e7;0aAf5g%?A)smw_oo=@QzqO8k023L|M%3a_AqDpxbyh{W;7k(!i zcoQ5ljWr6_f(wZjZUeWH2-*pO7fBSJ0^gFWcm?b+oq33>z)8dfp90-TEbal1kpw&z zJ|ez&0ci}eIo zhT}*9ZVXqFTKee%_Yr~eNO*%N<5}<{(ZFk9Zwsz9t_mY(GY(vfXxMEI{lS&tIZNgt zo($W_6kM?4`Hk4&!AoU?Oky#d_F)?-z=dTp!c^jmo5Oe#hbO>CM8FH+cT!9{O|ZW` zV@tUPoJPthPl1m}3SI!Ki4JuX92k4jB-VkO962uT4`(cAoN+7YK{9ZW&MO!n+yyRm zVoYeq11dQ)Cb%*zCdPOfY$XP`1g==g{la6NU-dUd6xRA}6~rruY=7 zyqbT*Mb02zxCL}0{&)yXB@)`a3O^88J^H^!M!3F?d5&knBW|n@crofkFdF~+A_!Q{k$C%*RaKAru1CN9ci3?r;g#fMxt_BqY=^Ne!ss?dC;v(l0U)&l- zl2}}%VleXoH-@Ricobs=UlRk|YzxOFI(RnhzLoRAZFcaSxRZ5qB+rR(<}T(K0MCVeBREG~4L&C3cp>b%mpH~}? z=k5w$5jDIFY8+%e!9~s|Mz}RRNzCv#_@21pRd7KR_XTbPcaUH_6ka9~_*K~BFl#uj z0>elYF7i65V$8GPjw76-_*i(4)KZ=Y1EQIST=y`TM_}m( za3PiFXySrL!Qq#gGkES5=FwHI3ocSfV{VJ};d)Yrd%?q`7*Bz1qySgG#yUf?@d!8~ zo#!>&0M?PKxC9Q%V4WF5Ic&R5-*Dju^Cyezg%?8iTZ|j-0XvA3Sm!qPLN@mft_C;c zazEl;u;3oo5*NAt0rvo250^dUxOfzdf5cef39yPN8#4azw|veQ4}bk4>pk;_c;FRKu99_(_7&i-Bn;Pqt4S=6b%m#i z3iS(M1F@jox{CFUxZ)x3A@Sw01@J4W#p_}354?85RiP&-!M$Jsi4^O@dg3A0hmSwf z2ih!z7ps{!95)YsCcbzrl&xXDQQrWzl0@oD;O$S$ZR+Gg=g+MF)bWMAzHsm3T5vI` z!tLPiBo;4*b+y#zvGuUiSK7q&p*_jMU12nd!$n>azZdJn9`&@3tH4JM%-eCC7yM3Q z@j>4yYh+!(m76#&F~B3>719O23eB5YpK+1HS{XN72Y!~&K3)qG+PIE*BJ9%6*l}Eu zTBHUyf*Xh|b-dsqBB4AQE|B80_bIo5rKE)NGPppR{TnEEl93heky^a4ldP~tPL`ih zXb1j5%<))wlUU)|@F_9FyU5E5T@`2_SB6PM2Tz6t?0av6i~QP6R`9^<;dA!<&c#dM z1NI;&!Si4p2@~tUzTIVo1Y8XsC6Rb69MMBoNX8v{vNsT^GUncdmq;z10vD^u3K6&+ zOeAr*Nb6p*LJIB=$M=>Md~qjuf<1aTG=P1^J zyY+cI9to3(0(Fw%)e&4T%0*g_SbszkRm#=I%L;NPj2q<& z@GBWac|E*tO8a;g9B3vhxZs1}5#ozS!_gBN3m$6(k4$E6;L$K-3hkS5Tv$%J;1#gb zRIVMa0H2bpv{MY-rpXEwcockVE-Pf?6|iOoa}qb6DJy&=W;|ATmaLFYtndst-a=N0 z73;ujb2v7h0lyFj>NLUME$KfV1yhJWo(s*bsE_|39*GygMk2vw=d!;6iNy_|3rWC5 z-XsNh9_&7k>pqcn42~lOcp@~J&%J~D!;>TuuZ7}%5z)9BoJnMHR~SgT;K6VoQNbf& z$3o5*7Z$OnfQ>AF55o0@3X7>fiSdL6L>3nrM0D^BSVh!ukt$0F?gej>LAb9iaFNSMB<=vSNHm@+ zawTJei=4lT>nqlQ0i+2Jg=<{6*CsP2Fl`gpVhZyRej&z`OQ7Lq&W&;-XhG_6D;Pwk zQ0MP^jfi`YSOqb!#5(X0DaH$+VK9%U{@?dT8MNi!`=*Hdr^IYy{h_|dBw~(>yiaU! zkyXS6|NA~Lf8XzAdI;B)WOFQ$8Kf8&`HEEGwJ>V8tPn~&vG4ZoEK0abH+>k#@{EN0@Mleo|kgO$z6Ti|m)m znBr=%l$7CFmt}=_B$&rm!A)sA2KR@TNEbW>cDu&Ci7Ue}qK1n+kiq?kN5Riz5MB$% zU*}rj#;}c;ta=X1WI!_x)KTRai|MeM}-aP4EBBXC#v?g?`muY$=>S@Us` z8=tYJ&7=>|qKN+EBKs6G?zk$fBYAi|w0+L8a65R1#NoM6?*-$A>%&7N8;^z$i3MH& z>&O(m9u9uVIz}I~;0#iaTR?xJMjesSL`7@|=82(>$QqK3i&QIN9H=AGm<+;2x{?y= zhzuizxX2`8N1bGNn^@!7u#$Aat6(dU#U)Vv74700a1=4X4d5bDLz^~mEvdj0;XBdA zcHr{Y)WQAXf-{$}G7be2A;z1yJJ+{l{zJkxH&H9u22eF;{R0xRbcxq3|}b z!LwoS5A+jPg$Bd{7x|S;!Rz6gkBlMi3ipu|JQ;SXX8pxg;aZZ2`@_A&ACH8>C)N{O zWDW_zOJLv6oENSJ``2;~7F<(kTgN?u`@#c+H#!PYaKTqz^WZixwSj)(SK-9(JSX7= zEwX~Vgf$a4Zf8C0;8?hhR43suiNpP+d7m~(#8qTE36DGRIS_au94p8BfN^8^oz&t@ zP+g&upfQ{42wD`JO>^bmuKl>3R#iog}17O}=fW)pL~ z4Azoh+^b6`!MQ8%YsX!nTQ}ZgjmN>Cy7L})Tm_CNO}H_fp~7cN%;8>u8%ZtYzVJ_y zhbKV)Ui6MT&vHK)h!5%~Cx|>m zVksAyLdUy0dJxgVT@N8uuu5fxly5Xr(t9wM%|$cw~j zu-p$m5X*6q?})XQ+z)o(!MMo2L%3gtvu`pSMe1>pvq>~AauvzNMFx=yeuppe5V7F* zq9QMnC|qP7ao~54BHxiPTx16+!$tNU%00mE9z}|K$E)!BJ(1!*@Ur}#O{BQr@)TU8 zxYu*lIJqAb_v7`&MT+|am+`Z+NO6y0J6xo==j$L`q`0qVtclzYiu-ov^0SXfaqr4{ zT%@@7rG%eNM2dTA=Hep7Jvqa0k>Xx<=D0|4e>yc@Ux^g=kh8``iuS{u^x*2lUU4Q{f7l46#xJKm#n~V z^2B{-gS)|4s0^<{RagMQ-@dvCyi-J|qMW~Q6+gf@SbV%H4{PW9PP!w|i zcB?4MD+(^+B>LxbuTWW8*(IeVL#+Vz|Dh zhO@Yr0ULZw&|F|WP1i_M!_$kMFdSXo-JB&g&dKb=R$4vBBNbeWjP~3ioy696i?!-#9{3gWXhCuXOhG`sWri|2P^= zX=oUGZSeN|v2n})!`4P={&*aZ^mJa~&3*`*{`oy68=TjBa};MMahnr9qJEXL=YRd< z-~V~4FAo*>p0IG<=qS+zS@;u|DR9yzf~89@t>VAcJ%nielMKBzx(Cs z?cw3RfpfQq)M%Q4}iqX1`qgOiX>gyXhIXgR#avHT# zKj80Y_P?|+YV?RvM$5-K>W+3AOA9NPJLwuZk95*?9BE*nKXT;gm19Ra{_k5ba2&aE zq>=L|-O;0#kJU9WFc_h`+;Qv*U8gZ)oeUfe9LG41GWy@QFk~ zt?xKuwBy*norSU9|9y0g_5Rz1_{XLETc!W=h5T_B{CnPt+swH8h}(~NajX4%h8lC5 zt+I0Ta+&DE&Kv(~*2T-qW1ODeKku*M|8;*2r&oIOXV1{%GLO+)^xxamG-2vF8|(eI z7XLMU^!}#~{14~t| zjnvd|<6~?mXwLrE+A#c|-5oxejh5WqblG9TYlFM1r>3|f{Lf$iwN8y0t}p&iQ^VsQ z8wa^>n7Cnu3)`Zs5VzKup!qBR;=P>xkl0Pin!DL;g65dfOqnqTBMb~ytXMh1X{Dxy ztE1a0Z#M7vQT<;xx3S*;e188f|1lDb)W6T3b#|B4oatRV|17=?=sLrE%DjKyF+X8b9Mj#@bVE z%Pt<7zE*pEP41)HJ>I=Yo%(#A^Me!4Gb6R;4w|}m*l?dZ)x0h(Ic42GOWrrOJ`{c% zEW8bT^ro*cN|1Z}I_Jyl*7Pf09c_)1l|w#c_igB^uvLHD6e)#UDg!&4DgUWDSJclS;j3iHFXgo#nh|6i=Seo?EGY5f(?qmCt^8VYTm9sLf@ zI=d;;_rH3u^64yLqVn=~Nsdq1{n-nuN0&}`ek;ABM!URuyxX#@qe{oBT1#R>4}EtE_p`i~(JGilepCW3b@xFho5`CwT_7|UD?B);F7$Hoo`g-k`>bla`8}`;oCg&H`wfh|#aV-3WuHCnbn^vTBoZ0?s zw`iBXr9rI?M^dCr`}e%s)-wBQ^_%^j0%wol3P_(^xaQ47pJZF7kz7b-6Q#t ztz2wS$CjS!2Sn^j?{Bi}`RU>&w!ol}Tyx$tfu*&+G>%+zL)i zla7jsv9C^2mUT4CmJw%(u{bM!=*ow~q`nykOSIyDxi?bbR+&YHyhi^W8eJY`=Lm!D zYA9?QHBTvP{lbohS+izMZdRKZHEr6@GNC6F)Fox|BTP-hPn|loWl#Osts3?DxhsT0 z+1vVeny4DRD_n{xYBaEs|366e7xCJucrG*+c0K;-mhZ*)i-RBNW%{4XoTMBg)%}Ui z{|B@5|JmGMYtqLdwWc&PsPIbi8voLrm7DJE&AhQH|5*3ehx9*%U6(IwZO>MpQMKSr zWqv0|m9Xp5R@+z23lCnVt#C`LuU{wqZoU0&rZ3Pg7&}q5*NP-z+Pbu&$32xp=8pQ_ z*+EUGF*$tPDGh~_4mG{95_B*7O5aM$D~^|%Y911p@N|uf!Otge{JzVvrdM#qy`g<_ z8m!Jm{&vQEN87Er)nF|9 zYSQpU^S>wd3>0?NKDqGGt6=xcyI;C(6P(@0oYacWonGPVp=sJZaOl_dwM~7E1Dj;q zKmXM?#kMqS>XBz}yN@6ZwkOf@}_`LtWz zyD!&6_57wddiB^r1;=~qt=1R{*=xU$|?P&zB&%7{7{5#z7nUp06ByD}Vb4tp!%UO1Z`VzA?T}+%QeaAG>!he7Q{S zbzSw62Qe)ccYe|sT=4x!!nJNo&e4`X^ld8pRvhr~PE(Ql^~*MSS%*65 zA9^4)SC}-Zdv!lMJzZ(n^m6PirR)Q*dbbXJ zQ#mO=T-Q`rGG$n3@|V9RH?{Q4e^dE-)4BlMBcjj(f8o9JcOERb6e#Xj+?dviRU2R`bRJ-c+uB5XIA6K5# zU-m@L@MV)yNA-iIPx*njB_~z)+YBAh*-VJ&$nk4zUsdbZ;i2EKq^$L{nflE?CJx=b z{dL9nC#haKKi3t#nG(1mE>>N8YgnIx)RtcEa_2V6dPPV)qem8e(B5hqP$smusR#V! zYrmf-$^i#=#w^ZO5B#uN_~6k0T_|MOdN$@h+U`HSZAOfyzETU+J+eu z3%pBy5;h+&?L2vkW7JpK7lA*`RT+|5cRt8hrS*n)@#ducAx=`V!|a=$jSwb0u-uxo zSvvdWveaLS+)b5U8a|X3x*fH-+0piSy>V?*-IVUNGc(UTxi`D<`G&TTYo9HrwrW2u z>e`eldEF!S>7D|YRKJ+=$o-YaWU|hl_>}W{dZ@50bw_FYgQU0bkN&i9mi^g{Lr#n_ zQwesc*mW{~z1M|foj>k1%PypF`htT#w1n9w>?ac$+o$wx3mv--#);u%CI4&t#`&6 z-FKa=*IsH$-x+hc{n?CMIkCTLODz^j>by3-aL z=CGS{hThsgy-(}M0s3w{RqJ=VB)R)8p=Y2*@9z_h*5CSkYoEr3MbWY`_x&x8UYP#D zTg}$)UdDS_-4)mJt;>@RG%j2k-*|Oj+mnsa8$PNBy;7)57%BjSd(OJsY#CO?!7t=avPl=2gy6%r;Dv zJTWWHnI9e}yX5z48(&#^jq5&cZ$SCuLHfMlDD3TH7tWs`I{enPi?pKYm3HfAw(bVC zw)RF2o7e6rZK^Tce=TUK|CWNMU#hnTz6dqFIKI^-CuVnf+O$P6S32y)<2~QzR(^l7 z$@{dv)+TPVx(h3s-p|je3%3s#yUg>>_8EHDE9VR^zwt%w&IBcsZKpQpKb>P2)VpEm z_SnvuYueJX=HF2-ExFxm;>o8wZXcKw$RBr&4hq#6EZMZhboBnR=_}kPpW{W7#&1LG zYmN05m+yZ%^g+J5QhDal8BM2S)JvcHBz7%nZj`U}i|N?tHq3qLWXs`_b(y;kJs)ed zcbkIFyXkkYM0&SAZIfKK3wj?oZtnSaMFD#%D-0*}U3GVvRL%2Cs|v5^Z`5hc3hSBW zy|lVK?M)(oxY64D$5O+wIWn8Zy@}U0`O`nB!gp66tGbm1iF&JM`fKOpUulreYk9J2 z>gqS~*6OcLu4$e%c>0m*p%yo@w4z-*=|69O5IM3^%FU;3ji0g3*OunG_x&#)ShlOy z_HyHx>IZjM9y_Nob9(FeS8II(f_z?mFgs2q9s^{&gB zoz0S$uc>?&89nLf=HS-LP` znAuI+E{8t~`N@Py|0v>^VRZ}zWPi0*M2^{dfh(Yf#v5L{qDTGmG)PA^yOuP>c?F%z4z_X z%q;7PO8e)gruNBn|NObn>H1OHdxO14tdZZVBNg)D_`JFvNg7G}^%TdaHC%S=KiK`5 zQP#;`Q||Q$mJYmptzBPXpSS6RqH`Uy=G;?lxN@rNy|2^fDqMNHOI{;7-DtN*%F96a zZ*#T;1{zN@)4owy>7yHX=|;)J=0;(J1zu9T z@^*kr>%9@-@ylEtN)447W^NrlOR9g>SuH=wIw?~P)2hma8F6O{v=7c5?!93`@YBnk z(m!2(=~0o}UCr26IVW7*{^_a@%ANGL7@aq?b}YJ(e0;}Cd(Y;>fzvZ3uLkBjl%CxA zc4%UJOl9oLTjSeGLn617?!Hpf?N^CeO-s+Yg(KC+o3kD& z>kapA{OigJ!v?QWw|4ZE9~Rj1<&??`8IRvL%BRj$qd7wn-IC&G0Iyyx~@DS z=#jKXR$k!<90lj{Wwh`^Hr5mqPuC z_QJ;xE_h8Hsc5=5aI;0NgY)>%`k5MMWO9NO%Svru3nB5Biq0e*G|bL+^E3U~=p8qZ{L9UJ$08s=v|xe%9&!ff;!RXxz?dbQwC4=(SmwRfJ-+90 z>kWywVh(;DHqfkC`?%fir1DAmf0#*b7e{YPu&uRTChuji)&9)8%t!e?Kbv_5Ns=!2 ziAo>b7SOrv*DZC6b1lY3KFBZs+?HQ9IcBrgV2LntV7k$oMe05MZT0?WesTWk1i8(v zEejsRXn#9rRM*^NpWBVPu9uDl9<8Y{@m{OfC$RJPhGCM5k53w`Yo2JQ?MmMNp!8YF zkO%GZ^OnRMymo(SufQkO<9==pzEj#sa{JkXmR*XW(yB6RQkS@G{!;uw&ZPeI&f1;! zn}3c!GIv@*n!H)1?|AoHPHmf3#ayg@f1vqrOY_|4!%K^jJX@unJvzJpQ{zF`Z_dng z^G&PWU%H>#9WZWgj+Ue@=%?$h5vTa{jZFPl;;rLiWbL$Yei zol>>K{Fti0e78-z_`}9dlLqA*ei^G4G-b_c7&~F1?WR8612?-3?AvE$-%@9_vNwiL z&fQ3FZ5egydSb!O-2uV%&t5nAojKIiWXPK(W89SS-ft48OMhfTxwr4)PBh~!zC>mPNu&E1WS17 zKK!fHTmQ_Tn=Z|BQjDnlTCL;%{;=S2ZQ0@ZonAaJYa3=(eL>=9pwZdEqPc3q$}2Ip zLBl0xb)lwdtr;;fU0>Fi#2RL7YpkzKc`^6?+o9pTe5b4DXvYufkyE<=T>YrMi^?tE zT{lb0jek4t(4Xp)2jqX7yEl|w zI@)gr7HjEu{ale$>h)yyvwWkC*S4hJcs#4F>O`wu?Y*ykyxTU-O495)VSM0()h`aU zs2wP;T$kZD+1SR>(r2sExQ7RYdiJ`jl9HTHSfe2?dW9yDy&A`MM^`wr%(ATo>aZsJFdycI5$emD*8HTdOtO2RpwUt}A8zz|`QN{W%%)fK9eR1~<2xHvIC(>kG~P zZtH^gus2S*{x2?})seHD2O% z+UVus7@ZsU-YqI>JyW~$Q~ip~HzbYEUKZYw=9OgFHs>#mF7xD$TyeY9{><`=Y4p82 zJ10hTuHRcGb4NGxMc)1~O;xd8F{gJ8z3C~@uFiiPAf&awGOSC;d|&+`T`KESw_1xa zLss7pSm3&4qOE$z0^6Wj>jLFIe>{7jbnfT;K@#Vw>kGc!E!tfwAK+a2#pprUixWx@ zdPXszx-HE?mf6qjyVi7fE}DI;Pp`n(qP$BnUiN$KOe40TuN5<^7 z(!38QH~z{w`)uUG4D)Ptha&+qj}|U0J^txSk+#hIsp=73Yf=xUOPOANW;pRcjCyMq zxjomVRpoy(soFbin{i{uFw2aHxVFNqn8VfbEv04q4}PBY!q=y=@z9@5f_dVE*h8g7 zvm5{VzHHgs2cGTxg!?H(dq7;OiTk^AJp;X8*&DpI8r=^Eqw2fw!ml^2}0KCBcxx2g4X{jhPF z;g9k+I~TU4n0+mo;M35YJN(6qmu}wijTaM4wH06IhufCwD+pJHHVxQ3)igx=t$THa z?fPH53VQM!wpUYiT6WOF)3$5|abf-m*z>KI%=A9hGqPiB+b3=fZ0l^wZ`BF|o;}?;`n$0CmXe09 z#Lcp4?tS%A=Zj5tiV1@=r#=ZVvn*S^Q{AWagCx25hV%TE?X@m;fA*UiI{1%L55sGg z(n=NbErr4M_mcf0{iHt){b^Y61$$`=8TmcK2X9@ort;|*xftU&i`KTTTN*I(WLmEt zZ>HDPEmd>-@ZmzslDTi>BNUtVzO+nI8dkPw{V#SGyeGHZi9K?6!O~5~UYyOllkdI7 zWVj^q?Z8IUDmVEr6aP> z-)BGOM8BiU3}a?`4_RHY*YL(LZI4Nzhbvdk3-l^f+`PALsW5NmNvp~ECTVUvha^{< zs{fSovMuQRwB{Mbw-YsID+VP$wk?0M)~PM+Wzu}PhUtlo56cB!{{-j6_$iuQtJI`J?Lcb8kn9g>oP38@!I*!`JWaC_H^v$QFJF~Umx`u1y5sR_BfpOh!N%r zD+KSBkb?lHSy zXS!&lb%SAEuzKb1hITu)cfJ4kd|hh&W)tm?ip$@`ugfsod^G>M)I2$-=GL2^{v6mg zSi@*ZmF@{)THcePmqwQlYMR>8occ0w%{I&an{G~geg3zk=AKGsS8h(%u0OpnIpgEC{cuUXgoXu^KAZz1;6Pxn+g*78Kp?apn}fG58{@7a))J$*y#gF<0+ z-nF(f9@Qa7pEXO;I$vq2FFqpwqBON#Znq4t-bPsdVrdyR;O3X1Rq`sOFVUEKKXRlu4RN=psZmwfxCdwq?2=H=2!_s$KO8Zu(&o+Lv`J>@X zdh4^TKAG?DyVeJN*mA6)a*N5*1u^$NdiqA>^E-#L>V@Sw6DPD68CzFf36-{4@pYuI z({ju_HxtD`(}|fU(gNpS=^r?}d&~Jdm0L0wDmO$*_1yfrcyg*Fn461w$J|fv{Q@M5nuD#<|U?jcX9^&W_io< z>Ls)4JCoE0bau!#_Pkj1F}<{h{jqOFQze_u$7C9McddRsxjJy!>myrFN#+Ge#!qmJ z54xUjVe98@tCzV)zIEo{oWq~z+isRx@1uU~W4|$juj~%L-Z6Xeslb+?c$pxTPlk*A zw}!k*d6w_lyg+j5b$RmQ1k+$<4y(w()TEf?PoK*d1Wvu{b4as&PQ}nyfw>>!HQS#a zD%=+wFX_?cb=tMx4=(!tVRyj3@D;b*kCaUgKfPZst<9-<=Lac%{@_Bo2bFbQTvTe> zMW?hV;MTL2l7>Y;`BjZL_a!ae{r;z(;||8`dF|iw;`@`d%-Jeg3S-xg>n5B@3+!1~ zd@`m-X~ubzx@#Fl#goS$mp^dcq{~sWZ@rg|dys#xXJG2t@Xsas<69$oXs0bGY1S(Z zJCam<_y#|f4ejug7`fhEsBWJAU6Qtkmpzlbo0~_Z#S5{k^WV%mVBcq8XNM4-X94GG zU;gY@J38}RLC&+gwzC`Rdf0pWxoZaK@ZK2p1%aMG<` zebUvn;@qAu_bonsa;sh4{5;fDd3xKZSyEB98(+#Ei)}2{Y@g9HUq8KF{n?9{!&|TQ zQu-29KD=c8*&(mwh2JvO50)HQ72(=4!n=CFn?+08jIDj_<+T+TG~FJeeDqmn`~!Y0 z9e+Z27Ln1#Y^>{XyN%sHBu?P|2w|#%GR%yw*NA|F&`Bw(+{PjdeL+0@_l2OZ%PA@7>O}SI@pB0;gVGrHnj}EA4nV;U;`TMuu8tc~%|G(IK53s0~rBSqD z2r4Rw5=B5!QL-o?859HoK}01dMG++j$=QHJ6G1?t5+sWZIS7(OK_n?TNS2%i7-nv- z0o-o4`<#FO_ulut_x{sR)3ds(s;jGet?sH-YgYeYaeC9o(J|@?9HFR_tTd%TJ zqr6yeJBq*Pa@87NExxSRqQC@{9Kp60U+<-&MUJ9d4Z&g2+*F^!PsBNO8kc5KZV71` zwr!0ToEouS6>OGb$%TI4wngesnyc7a8F=BBZxNt4k&mDMa<6uxEoUmBEv-_5Ypmx+ z&OnZ6(3Ao1@fEu_%&0N_z@-HnKZ{pAZTZWx6wXS^Sg}5pr&2r4 z><`i^E+C;}U1+bV^2PhTxh=UlXk)WF0adDluI*jpj# za@tB=@+7HD-E!NGh z?24IrDF?Q5@AS|>d_k*=hLX$xhx~-$=8v?Aw9GcZG)@A z8AbD_T;|1{ze{JgUX>cJb>O^daP-vCmWQG|9k+EGm(=9+v~QU+mK##jYnw;gkB_o{ zGUgmUNKg7F5W6o(8?)CU#BIyo5>D7uY`0f!t6yJtPn%p7} z@2+7&agQ;XOTnT26;nm^-)A$#sK{$C#tLn{xvQ^5S1wxpBF0Y5-c!$>nFm_{qTAye zbnn05wzm#Kk*t^=m1tRO&~RO_=a+8S;_i0u^qw-t$8;o}=Tlzzy5!Lr_+f@$t~6(L zy{ZiIcnUAcuHayK>FSu@be*JCHjW&QPYAxsbmAPbsZ*3(caCi0^m#>d9zMaoVeu7* z7w(^=^sP(3<5@E1$Uo$}(oE)C_ECm-z9*Yo9hq1^y}#fMcr|+Jx^_FJyPFqUysVd0 z``&buw!6=MqB3H-Zt81V>2jqC5$~F(9!61M&E}HFrE3P|w*#LD*@fnQi>r3LnwKQR zlJl)q_bTVOfLZT;&Wy|Rs)3RXvnfmI+e$@4*QR2mkxmU0MG8es_UPM*?%ui8 zgHbVUF^3lN^nFQI;#hS@<(5L{sheZc=W6@aIIXGOpy%+Za|E)FO3*s0yr6j)^GUcQ zH+qlskdy9JO2N_~ZC8o3(1PVNhCV_ivj@JHe9m0EL^p!^(CD;J_KtJTxNA#STR>;) zL`R~4TmF@xk(7+laGRmQ<$XdC{ix3&`o@WT08?4{Sh4bG7d_6k4&=(8xGH?9uIlg#rjzrI zz+gW`t7bz=fOuq5?y)2o$uWC<;;ux|=zT+bmW)~FrKq~>^ip?vjeJVWZP@(zCyPx- ziJNk;lqEIIT}Aaphn2jd@3$9K=)YE?8y!_2hlJTD&l5RJN)kmRc| z>6YsJh?S*bG~!Nl;mXsF;kOb3In@z%(;{vY;zLRUjik#LV}~atau*$WBqd+*xHs3s zHmB=(Pwdx#zO}DT(t_$KRjB4#X`|)QV=>Qq2k7LNh?2LLO>*X5Pjh#57n^=eVX~_( zO>yRH2!){hh?!?eQZVi9E~lQ>XQ7f)#`O0YzYMg|-@*`GeH56SbidQB$w~jEQ!vhM zVSJnJq3ud~hgqAh(OSJ~Xsr$9a__LXa{V@s=-b2=?K#v;poB!;liha>XICQ9+fo^{ zDI;|8Ef?o$TqWsT%$Hj_B{W^^(lRLKpQXArGP}AIM;EAn)anUq$~En8EUvm+dLlk| zC9++4ZG0PI2BqYhDT(v8*V@Atp7lnA_g2KMov91bz&y7WX6RmC8#~N`x6FE~UwX9c zz%IA0N2dpJYsTnmC*~ILtQ9A12a9CUldn|W_KCFVhjw#*e0K_NF{Fxcbd(0xd6TO{ zbG%m`R$8=%9^dWqiiZ8cVmwL8AUj-{_jT}mXk8Ja9J4UENaM;R@G)_*zs+uVaQ?Wz z_xUDgM^AX$dbnjSCExXVp$ct}(J~v$kp|RUh5&x&y(1pS42DA-7^HT&cTjsQO}FJt zE8mHZRws5nh>hgrY2IS&Ky`#KT&z+{9r{+9-gF(X!;+My-;i{Jm+V(V$4OT_us0>t z%u7!+iL2LcD}7Ky&O{mJdUs9a9Rq;QQw__Hi|{d@g#|w*-lOw<-lC2LD*HMIG7XptCF8FY{`@*Ye~dlPJUX?})7n0cfrAL}9UxuL;IIx(k&dnIFNsdlW1N?D{$ zC5EzQTXA>?Z{f_GvbriA4X%c~wfMaocWFSm`Zko>i-QhzE?Dx$RNh1pBGq>+9>=;u z)d%3Jy4z5l+@Y#XJ!??xoVXX>g$cd~LY5_MA^+t?UALyg%uT`vET&4*tBCOlgF^6IjB z(M|q>I?fJJ%F1XvTF#XlsG#~mb#jZ5z_EemwQw$+wdqGuX_c*a+}g@lQz++0^_oam zLE&JozhiZkP(;J1#H);yy8;6%b?BHe+Y5y&K%>dkR^s@(cqvME#*~&t?UhE|M(cu= zpzIJDSFwTy{Q;g*Ggi4$PYLsdvlvedJxAL(v8!X3(@4^IOX6fVCqKETw!0h2l}bMR z>E-CRRHT+6HGU`C(h`p8%^R+@Er5iPVWj4t5;k) z6y>3xS{26AHAhoe)hZD*p@Nr`1QEA=jy&$Ao+Zu3 z*}~2ohx_35SY=|=X}<9=v-Up8^B=l~9fna6=A5_Fyx;}lTcW=EUGx|BsG*MWxoEGP z`Oh>fmbs;E=ihxkbUy^FU7ROcw!;<}GNDD>yxMJ(p#nsodh026Yx8}o*0!cOH#Orc zQDWTl<^g$){p#wqfkHC36zH2$dUUO<`&RDNB>}pK!W9_&Ge9H(UHwJCiHXcpcorI( z9xbgi?4;rf6@hVK1#`1$g^r#jZk;$WzXp~FjuqQ-i}H}}Y}MjD8hPSN{Lfb@;cBcc zfvq36Y+N4yTyEiuIbQR5w;|QRQ3>XG82eLJLel%qZs_CuNF77fTUF;-)NMrzr;oJX zP_KhsZdNk~CL7)_Xic=%GgufE->Z#3ho3TpEQw@`JeD;n@uTc+;COac@4-v%T>UI} zV+Fe8q$MY5_E5XA7LxF(8c|cK+R~FJvZSc&**Z_;v_F@0*(WZoV77Io%;1!Ysgrta zO=;~4GHb&*dE4*kWBP6#8?Ov`Ttwuh?ZneO|HbNkavKGOB%+^D$A(c~+S8{VItqUm~D?d^oVtSglfmm&X@h5o}zTRK2vP2Hy&;gpcsGehig zl6gA1XBG9;Hs;E*$+@Xq#^mAolR_hjvbkjSR?D7xF+rV!nYu3Ya*qUc1yd-)blr5F zGUQWuN_ID1EAU7kyc4|*S^Yt~jd1HH-M4h+nn}%UwaoK&F%a%Lo z?S#cDw?m88;kKUAUN+sW@_Y7GNneiEQ;WwkF;)?cuwlmr9=EAciKJNU#yff!J1c56c{KwQ!(b%zW_XrO=Tp+a`&= zb~(wE(zvdjSzcb{Ekfme%iTud9<@MjB!;OmIl-8JT1FWEeMeiru5 zPyDM*G_=xfZWL#vueLCHo|4%GDps3w#Kqfk28M!N_H-p?b-=KcVcQpJ`H{*7>BB0T zOJ|m{CX-5deMDzR&|?W9KtVS8?5@bUItIa7BLbL~j9)#Iz@+L0h`6Yq13! zgYRED_0{`4eY8BZQC??+%Bpd;@|gSuA%P*1&yyuiFaWodBofbP(9}RVCA5_qMNj9& zT2?KIvl7GfddHUpbJZqFm}#Z#@jwG~AJWz%CLZiJ1o~ zy>rocY?8&x`{|EJAEFl%1SDTB$!DTozTNUjD6FD2Tw8ub9Ygeh$p4UikE_s5W-%X@ zwMLf8)->(8p3KX8cDWTOw|Pa7WAX-bbNVhf26WI~*nR+W2VS)X8|7Fkvl}G*v@MEh zGF;8Fj`E(aK8(G?ftlCn%B9>h-YA#k#nS9KwBKN6>8tEGIHGr#n@8SL(P{g9c+hOT zlY}Waq+5Aq?-vZM!O*t4&~)yUU2cfz*?DCWsl zd-jqz`kS3>uU)=NmoN>ri-dj94Q7-VdA|oMUGsq*A}u{H>ZT|^$7j5@Gumd5Qw}d# zVOs*3guPT;`gddI6D0$>3hf7~VA#*%#Bz2|+jiY>m5(!ORp&1eCs^x6^v+2$-PATW zpFP)M?>He5lhLQ1J2})c)1hUPajb&M<&YofNnBzp0S<>~ZSYV`brcWY71EvioYe(@41a1&(>_ zbW?e@G;BL0&@xYF_Ng{#7~Vp-VYfq%^Qke14R%01c(Jpq>jX5h4rQo$0IZzz2HxD(+tiBRNm^ zy-Cwmt0#p>!tT4^x$eOpi->|c=lSIA?J?OSe1SIbMuOL~3txFKjv2|fT(r;fZiUf? zQg}7{xs@4|NuT{Nu$L~alB_0;et06rK+f3J?5-G-+8uqm5zdBp&eKPG)!!sl3wp}6 zy{&$Z5-i#AW%_#A)to(?JwO@9U^&FOI3-pMLz%x=wGr)WC6}^WHY>!~R*DxrG=`o4 zjd(?O7vHBir?K=2EsUUE zU+y`Gy&2P>3()v*J&f>N26@R;{NkEX+BN6iXscROr(GN_Jn zjc`wJP)u8HLyha}esA9@x5wjrWSq8R{-;~xOEk969qry0OOsm^P?Whui*g99Ik>l} z9D$Lm;`L0o+G|sj+v6hIt(zpvCMQvqsS^4FDZ3q--$pR$`dXNK=sq1cKXMrdBkZ)9 zkWe(I8r{h|;%^7Vmx@C~5 z-G{f-5^uTwo{p%`W@t_}VX|FtWgZhjir=^QnXNR&=b*nDVkilk{_g43^~Tdm(R{Q^GBzNRnsu)Tc$R#d<0@Rz!#v6B%-vG$#@VyB zgkFf&VmghCM!mCkF4IZ5X+JW|7TuU2iej|~#`8p#a^}NkU9KzoMC|x-7m1UkOt>wX z7|qpURN0W|Y{oO7u+-y@PnwdZN2R8{y<9@Xgb)5cUNBMa7~!ClR^V&;EvvC%vUu!e z**&4E?4|cM9(bnAS-$Dd!@jQdE9$5Yyx+p(vzB{8=9+6t`{*7=H|X!4<@1GMwuSC&_Ad@*b< zmOB+q_kAyE_j1{x(ql7@?li~)5&P?Mmi56fe)mBI;L$icyf9$TQQ2V|@cOvL#J1kg zk{l<9Zahv!;vwnpoXaKZS-K^qsm5mTYNUyDC2n#00QOcT=@ijztn^IUyWNDRMhqzg zZDhIV_x6OiJ)d2k591_B{OqiJw4~^)Sp1c)9c9J1Dbe{jF735;nle(!ulA1`4sIiaV}1&y23KS=G439rI3g*wlr1Z} zaM|3LaeWHYm8>tbOSLZucr~#Whorc~LF#w%kfjCm9BrTJHeA8pekWXh7b;_hT@!;m z2tq`5nfTpjl+-{++56K{=HBnZt^i!wOAWJd4lL!8OL?{KHF}LhxAsP+k@}?%S(Fi=buRtUn~nx8qa;d=zZ^4j!>5FSaL~ z8xe*VY5{4QS5|6Unz-iS6}eo~uz8y_iC)kVV0dtZ#F}0~nxt3~Cu!IjEH84`jTJr_ z3eL(Z%cP$&@PhAS0YD0Z2L$-^DEx%!r|17+;rgScFoVx;19Nk85N5&$B24)~B!npQ z6Cl#!B#5>Y08v(=Al6C{#M_(%FCe_M6NbN)E(($yL_xBn7)W)N0BJ4~;DZwY^=?~0 zqN5Z@ca;K(Zs$Ozn-r*rzh=?kMFqY*69cb3PJuUGry=oClm)1bg2z$T;9ay8sEV}$HE}lJ{R><0A>lTtOLPJa$&R2l$sK%1 zb_M-!EP-e<9*9GbZp8x`2xq?F!P&2PaIPH>&O^8iLA4VPE_LC7W;Y(_K`?;F*Wj^k zFCG~7;ek;<9$f#1hwq2N0~45=4dQ{-03KKl;ejj69bs-gf(Nz`oJR2=JUkpkMMZ(Q zxH$0o^=nXCS_;bIJwU}vPf(fQ3Ca`hfT|>KP?PKpKBjnqx{LtuF)Ijs&h!RtxdEUh zKLj)vMuIOzVc=_N6d0{~47#fl;d_jeL3>pi=&eo!{dH+zu;DcrYAOW7%>@vO!5t`< zAC$!(!ksZZ@Eym400h3{!Q){FP_|$QA(MFc-d#M1nZkn?6L^pW>*J>3cL>Qdcz}kG z2fvq>mxJo+YS7l!2HM-(K~GN)7;G*BBW)F6ti1|+@2Umky^Ub1|1+2x{0gSOwSbwC zF7Ou8m(Szj?+@ca;}RZpLTJL^K^ugQWjyGCFfcFx1_uYh?06rT{XPg5CWpYn)CgFd z9s!t{QGl771k3Z2pcmo}uHeB4gsD{sSUi}Un*$5;(_nFN5iBpvfaRrmu!>m#*p($P z1M3&CIIz6D439Bj4Z8}K*YE&`!y#wM|CofwKnVy+SRaR9+b8;M(tk{tFR_;p1_Ta}2SF9D2^D{6@pt6J>(qFB zti~mT!};?UHmH8eHs%fyQQlt?9-n`UeaDV%MzK2U3=l2AaZr#ub4CW4OmeP2Cem-{ z@%W6RR8%{5?11z-Is^$I0|JNj$pj~(@@5ZyOD{o1MYVH-{s)H*HOdkuleF&!gWu67 zGch3ycHThR{~-dRM#5xTpN)S@kH_0GG0`FnZp5wAZ)gFTON5a`7|6t|PlUg=kH?!p zdPD-woDF&%4UP4I{7HoS>jM0ao`Z>ri5_8)?60GvLEr&HCJA%t4+fY1o*t4z4L}Bh zIbH}g!UADH;IKIx75h8{9-;5)d< zVEtVDp#p>+a`4}1{&(%?K?W(eO+}F;EG!6r>*xgM<{*&0^1pNMo`1|H`S0oBR3oH< zj1(j#r#{>40of};MUvs>()m02H!q0zP&OvQD8Pw~48jgLi(cW8S|Y@PAfyd?^q*25 z8vem^|4&~L`V*m6KaC>!wtq^WjK@oEoQnhp4rT^F1f35uw{V(VLUsd!kOMcehEDt4DF1W&2KojDP=JlvA4q@OdeY-R(Gv*P zsW)h02mV!hob(6%?%$?8zb)Opckgb7y?YsVGcxSn)c@}he_zVLvv)U-loStxwKcg^_=$h@5x=-CPVf^aI7s}(S6t^vMDQ2Ca*_fW zu2SHIlRS9kCQtAeH+WHkPxt6S#+s2iX>+6J_wT7c?! zJ5U>M4JzWDpr6Fl?6&lNaRc!|O+&B`+AXl*WVBa>N&$4!S>}L2u0~&|8-U`aZq^{SA3w2>OEkpfA{a3e_8KtJ{Q->jd#({1O4h#GveP9ptIB! zN^o*yWJFTZ`bew`MWmnl zb3&(GVW!++=Av;KQmCpT-B2KS@l>9zH}YqEG+GFn>s!qnwITjxh_9eR&=V9&CW%1s z3w|KMIyQ6B)+V&@quY?c?sxdtSm>ZRZR)12p{}tm6C#m3;$D>{bo)>I(dgqWED&Ef z81jb+%CxR1Wb9&H*Of;FiU`gO(6IUe>6J*A0gPWbt^eJIf@)b{{*@d5dy+I z{geEuXaRP1qya=p1On)JBj8>s^RP zr)KMK7>0;G|Ip8dp3q`Pc!c4wvFzN5^dUYwHT7rwKlHPqC$z-DSoAHzI8#9a$p26H zf9Pl98~WOjrwBeW&Qx3J(7*8iD}Dg`G2u%+$C%JF^{34+5`PW20>_iQ2y84eWM)a zy@;OROJ4{%e2)ephZE;dIYc2G|I_?eKAXpz?T~Nq{eNM;ZmJUWMA&Bj-7#XPvO3tio!u#aU^K3OaUELsi3PS4K&vm zfq{=%V4yJ{zQeH)c*B?_56J5tCmqHFWkNth+b?+<+JX?WpxswiRt6fH zDnVo0N6^vHv0?jFg0YTTFxL4Ve1~@5_klL>VR#6%^$mcE$vFt~pnPTpltJ6EZV|=- zEkfH5#sl@hI3UFCo1YkfFbFU(zGo1|@{GdRo^_jUmJrLc0%Limp)EHLZ8}06&*}=m z5^TEvd2u}Ol=x4A8X#Oi{;CO2B>lB`qr_8FlAD8DQuA*xJTG!{b8&JAoxJ#agxi7w z$034+C5Ovzo473^C?LSieVqSC{U2tWjDe@;Z7~r+!HYVYmoINhNo2p7JkL;W)jKUF z0x^ywjc{H38Z!8Uejhz0#SyJd z1ca3OQp_(_5yuv`z~mJ^i`fla+t~Ee#S95^8-Zh#>f<`a`Tt^t&l2 zpshnfOiZl<5fCN9_F?=AOjh!+9%+J{oD?FMNJ)um{Vcz|?O|5f1nk6Cqy<=i8qx6& z`R$#YuBxh@Q&Ci8LqxDMGrIw+f2v3HXbqcy93X;&y%W(!J)!ya4{N5Y3hM|?_V%0g zn*#uI2i7YJ2#2lvJ%3y8sd5nBm!+pTaQ*l7_MV>B*RNi;hP8jtZ?ykYGwWY})Bc}u z{?F7K=*k*c8T|5(m^(Mt`5Wl!{#t8bMKFg5^*eu?XlUr@XlW7s{|MwCe z-wQ7T9+J>y#j*)y@P-8hq748r{}ndt5WIg3u)!Y**{2}y2t<79oBI^0pWio!=#ZdC zK-i;1njI&^S|h&mm$rYzRsXy$Dz=t9R}e!tdE0`0R7q-(083RJ_mAUaUgF7OW3y{vCAJnegut;jfD7R z#BV*)S_YpYe-9?VeF0^|qo5l4sOzC$`ZM%Vx4^s|`lpdSO8@u-7#SG>Q&Ur5ZW8WU zrbeM}dIC&OPZRbkGl(x5?orl#&Y1uBn&H&{Px{?H#o654+4V1~an<1E2}ol8qnrj-P%$$zF^OM- zya?r%FgdVOQ}2MQE(%2?37bdw*g(7NnvF6&HT8D5;G>962@7fbkjKHnSXlx3ekn*$ zr}Pc12;~SLB&pESBNVc(SCO8r^FeqS%iY+%os3l80lxoiQy!#mw~sJDp&0Ep%Lz;f zoxW{iV(03xQBIKO8dAQQe&MrOypDg>!RFULf;`d^R}f*~>+N8=PROqy^6aF9i52-+ zPy5*p9YD%ie@zFE9!ARlS;Avk0DhYC2b94@r3|w8D9GxB_pB*=j4SEidZT(?dU zp8Y}lD1+DV86V_cZT{n{pdj=rC<(V9tUp!H4G8yS-^IdvvI+1$Y^po>lI;S{KwBAk zK1Ut`@@x)bBVUHk;b=kISO?n1h7imlAU5)q4I3GG7RMT{3y59p4xi0QOAChUPbffV zJ_U)1iG($&G4n2HFM#(|3xYvYK{y!vTmW9YuLNnIKY*C7e&7x1o{V9^i%|?*PvE^z zXalFhd!jke9?qX$hU*EQuzq}p&$={0d$t*_6+=TqV03g8%#8KJ^jIu&yJ9f^Sr`78RR8(*|0N9|*NPwMjJTBYj{^WsvFtk}^3$<6`#~-)RakHg2Hz_Q zkO?1UKfuDoqD(ker6fPeag_Zq3yaix{Z0xhUS4h?b{0u+O#bv~IhvgmWY9zuWk0iC zFT>A3PfbF6N(}OY^)Q`afQyadu?_x8N`j0#$@i!t$4EWW=2-a%OV33v4R<=%>#pD=R770O z;h~**^i=K`c8m+YI+Nu8#J}p>S3G@l9S&P2ShvJco71N%RAgngOH;|rNs~!YaVy1j z?_l-$TK;@W+p}eDqDqW+r^>)9mZ`?{tJ^V{e2VE}_WQ@4JZVT(v$_{#`n{T4W&7P$ zJ&!YhWEW$~YDbonbi~pMso5ECOxemZ{DGB2dAI5mUi1&DtzL}mOXudanxj#ie!FAt zwAt|hu;qY^9+Se=wcOh`+QipJ1**)Zuys~N#uH*XZr6Dy+h0?wcbDu1mTe)ydDstn zo!N5-C$V)i=Q|Xks5{D)0teoA*oTt1!+LO@8XufHb^AHvMG6KWeS+#0eB-tf7F2>Q zaWD6ySbfOKw_=1VaL%`*xSsFy@qC-fiWExIAXHTl0-H&WK(4YpT8-Wr_=VA^@!Wl3 zWz}vaZ5mZ$q-If#xE6}`>HhQWHXSMTV@+h(cVT6hj2HUQ6V)!?10-u;XAbHyMG0oG zDD0iXPLEz4QL56RBNq023)Mt<2@ATm%TRsXfqcrmd`LtkL!oB3y*E5o+kZTxa8l$= zZiK}{)-9(Rb_jJE=(yhs9&Fm;!Ky{i54>&|LgsOIkxtOw+YSrE3iP+$@Uw1@(IoRq zVq!#iokqrPJM8!yKD!_y9s4f3OJ*v=coJ1%_?tA;eA3O7BBYz-Kkn#3RHFZOgilbx3aZ(j~%X)haiX*6wW-l;;D*7u~$Uptn&nn`5k)dw0%Pymd zmrNW`VQIwA%uZgRlkM^GIed^=J8;)G>--S@JNJY@oYjNs0iWuD9o!D3C#!@V{ozy2gkU4G>&DM_K}BAETzioEK|2!%QyJzW*^}d%pbTS61|EL2QZjx$VyehmMPKH*c#)~r zVY}|cS=$`h4hiGtC$&Zo>jn>`rG!8ZQSYuCdvPK8)4i2=HHPn!5}w}d34CIL0ey`o z+k?&xU>q3P*^kplM7@;}(Y7R-?$5XqROc7{_PIM1ZQ0w#V1>9uHqY*Q!4FesV>1f( zp=?C>N)z`bF530IS=JpHH_ymh^N0M8ezO+-@ZrNn9c4CnIk*8;A^-9Mjai*=b$8#^ zB3p;;yetfrQEUSa6JJQG5{!MFLhf=>=;>Upq*R&lM(rMD@KbvrpOgGWKq;$V}atUXIhvac8i-Wz9-tg*yX!UwX4!;unj72dPcF z)r_X1Qq)rJDs`xoN1C@O7m5B;@4e+6^HTujr z?L718NQoof?~8q^Lln1fy8suj+mJ$ub=(^+&AUh328*KWgs;sgCa_ggzsU2_h`vBq zHq$$|3Yk~rP5K6WajEAYuTUMyR&e0pSS=cJpDaR zO3kM3 zFQs~ys41Nj%}Q_QpwOh)063{W~)prK3tadoUmC%emhu$2q7f&)By#x%ShB_>@ME zmdu)X>V%lgUpbz6KgxB7(3+E|(#a)-6BLj#YY7jRAS;(EXV{cwn=9Y=Ca&7pR&LaQaH za!%yYFw^Qi_UREnx#>?7_x-#=UXqX0*Dl!6%=(VM??__XW)hR`uNPxV*IZ_f{d(C{ z!%J!9Y++8kkx*apPJ=3lh zAYS@Dywc`aUYx!NJ6%AGhIb;;a{d{*{rVZxg^3@@4EWp5#Lj5T%lOuUdvb|&2RLw- z;|C+^HK_9HDK7JJ(Z=r8OX=sml<1>B`8jPDeoMN#!`NU&4I|IaoA=}r9uZM#9saEO z?Rir15#l|eek{t*jY~Dp49+j>Qjx7`&4l*7mXKvT|9xxa>&|!zKTO?Gtr^j4$%85{ zkAD$5F_s_wk&pNWM$;orJGZrPYj#M^t+u%M(~>R?-)28MzE-5FY`%B^BOT>mO`-~= z2;o|stj9A-zb`Jlv1iOu^2IpK)0b`c&SYI_)al?6;tH@(l`(>^kM6P26?xJY`GiiA zqGISYo0{ji_%|ieSHoS(W{)xN>#A(5eNNd$_=bAcCen5uvTX1R_LU7%e%VL*oS16I z$C?_SVUgk3Nc4?mw0MQ*xa*ar^U40y%DfYYaG%VlJ#VqZJRP(<_DILg(9wlsz`c4e z6+bxTCwel0GHlIh)y-eUx#4~a6Z5loryE#4`82_|W{keQb)swdDQ}QQXOA~sfW$Vq z2@;#8to{F)Q#2RD4Dv{?2MeYZ{bwn+CXsnN$hDE7lMBNX>%o=8r< z9Wg2h(`HDdu&WhM<&r;pYuC9YQg>Dp8@MH*-%8E5m+^Vkxza9A_Y%D0!7JMx>mN1P z$hN<>d{y!`v3*n`%dColG>cmVbxWDC8<3Hck9XY(dHLCc0T|6Wwh3oXjh3(qVWb3U z+AQ_dOAqz4j4T?R5ZYk@K3blx{4UGxCP{Q$_GJ1aw?QGyMaiyV^W6F}+tnDM%%OYN ziMCkSmfLZs^xwaXHSFqTyZ+Q~SEat$JINSNfn)G$^C+gRIwF41u(OxVS6}eX1v8y< z-nUuG`7^J>{o5zD9gY<~A%#yfwkT6&UvPsjT)9$rT8Ph4rtt&3LTbJ7`t+bj{Y}xu zr;!Z;fpl#qV@m>E>gLK{$cA*?=1!4GIjEVvDT+Kk3;W1(HZqnz%y9nmw-fM9A*$jn zIzf|1l~2FX`FgS+RtuZYa58u?gqh9v@0RRwFV^EyAp7*~WY7YwyC}JiK>5_Ta^D(V z`qSOI;@Ksfw)%(EFQ=ung}7O@9qtd;C6}8X2}CI@C-}HuBcuK1M7nokVxm=yBap$e z-fE#m{c2B%>zABcbb-v`jCovpjlemdxdROvT(n=+jEC%U`n)alXwH5Ow(fb7(cidl z)z!E3OdF?+$BkY(U0cKu3=u*WRmkt)!QX_-9pgW`_QXHlRR%bcp6yR%K-UHs&5&p_moy4FqxDby4BgK%@udT}b;FKQ%l6$B!ktIOZsz1u$7y~sG}KE#^9 zFDy@v4jLcumaE%OQGLKIC-=kyebIe%^4Q7SDXYC4`lB=63}I)nyUL6`lG#0KB~j1m zfH=NN5P7G(%bjDlQ=kBGP3MKUHKT*_C)g|?> zI9z?Bv#az-&B%5oUflWZTo>}rt22kWkjPJgA>FHccXYlJcE5XUQB-@!9uiZ4^}&Ct z*&|^;+=S__aNaYsnlDk}QWhRJ7^}z9Fz9k~xxG;~m@I*=^tDMC8SPP>6$u5&ulo%! z<5E=^y>b!{7OVQSDKj=y((xIGP7d7g&d7Jh7Vg_bDQWah57H(c7`qZKpvCi)c5Gor zLHDNl+DM!eYL2m3N^@sr*@5^Ywmd%FCikCIv3p(>BKpdf;6(;BR8TcwOrDE2n+%Jd zl(>h7FK^|$?6T-~T70MCp8J^r9P;`0l#OL#??(BBlDTOZHPYTS*!8!$)T@AMJZXr> z08QjvslYW>R1%xujAXV2iGInjqtV=$^bwzegKm^o9K~9r>SZ398jZ6~MJ1ejP=0$< zNBWINnj#0k8}@$dLYJ4m7hV$k1f{q$@v6j|O${?!d~N3bZte^*gTujnhujq36zOG5 zZEGqkPdwrxSzPk;vT579c&U{`YNVV*I^#Kyx5w;+*2I9LJ5R$*u=DMw`uUd(-!Kgt z)$}jz=4*P;4fENAZi?WiY9#jRwt5;{1&gEOa>P5Hc^NO~5<^WeH~?U5ooPi|_n zW{X=BC1uujGb!bo>r|yjwYudqrfwFEO7I$VCb0;`mwlHz?x^nr+vEk$sR_}af zoLkTh;P0w_xn|$S9!A7v(l2<-nc2+)0pO;*iVCHOsAzy=3BHE8Z}6Ec zSEIF0-Dl5zYqrr&K=JifQ-dqFf?WgJ%f#MOQp&w!RE;2ZtrtYoORvxvTn|bn8W$cO zZAIRj|<^Ix*7nL2T_b&XjU}n40 z((;}x^%#|j1v?YKhx19>&vJ2h4Y)~ib-SypYn2$@VikAgevGf$o>CVQbw<7?b!|^$ zL-gBIb?(ipaW%O)@)(y6eduX=5_>V0+A& z`T2QzZ}(?9%#;&iujmpxuLXysP=w`I>X#p_(Dl)|cQN!nCV=eT3IqLz_|UN#YQb+O z;BQ(F$j4xwM38(IJr|(0-M~8xju{&*kIs$ACHL9j0cd6ARcc-t z_EgPu^(1CWPqK-|9J06jU8`RuD~X%k>byRKVvq_56S9c1T8my{YVw0`7XR#_IoN2O z#qGOGzWi~e1wS9}jGvwCH3O%aTidx<#h<^Q7l}T$<>FbJt-5<8V}wvo3_;ilWpZL8 zki$;vr^!OO_ARBFf}(}&gV?*HzAW#pj}RSye$p(SE^9D$Z`c*B3x#5fvBXXyPo3xH zOdKeh58K|D-D2``pJ15uqR+(PSc;RwUG?|xmF_gKw9M>2w}n(~-u;FxW5v~aPd4Tc zlPL64j(uMYW$F}VYnLzDd?NkurXOC^Is+_sd=PQkwZwJD5N|>;RI@ez>iN=?*HU+{ zb*)?o?^MoZ&_F-y-fHVC!OOa{Hvlk$@G?MfNt_oz8?Vxs&(X+CjJ5biKbI^z;C9H{ zlm>mnQP{YW=y>i)Qt1L4lciWER8ugo`E|a`ZD$YlYY6hGD}P{4K0h+%W?6Cjo>`ga zsIJtK_PKMClpn8vY@!IFBFpI)h4GgHdo$w)550&|V{=n1GZoayIDgbQL&L}D)N;r5 z#aJ#4O3xL+Efs=1-j?V-sTEo6CSF_GBV^}MscatJ@$aQa)v>{Hb(~wn7%Ceo`QwE$ zGvQd?%Z9;0d?a4Z8G`HNJI2}KDKE!y{HrfJ}^03XvJS*~9s9B*UkJK@bnyljY<1MjPnj}YfoFAyM;ld?$Li@C1MAp<%3blLO zI#@N?^U_%{+KOtyXg2oQ6MQ*4oIK+qd0g3<9$SsIuAWn?d*=8Nz1Nt?2t2wfig$;v zASzX)QhsG?K<*O~DwF10dT~!PlZdp!>qcL-V~36NwNTmqdQZ#O_G)a=SwrV&pyeOn zRKzZeOB?caZ% zw=qQGG@Gr)d(Zsz5BodJ(_+;;e2y`cJ$S(I&Cgw|v~l)Sfil*O`1&=wi$Y!OiNQBh z-j~hyQ&yC{dYK}A*S+BO@p?@=-=YJOTbb}X!EjpTtIX%FeM1XwO-iTTbfdm!nze;I zA(HW#z#?aCI%@BGX??9rPtTANW&6et2FqZ%H`nybhcZNSDD_t{hcx&^}^Ux zggagG+-9PqIYo`m4mk8th3Tz1P^`Oc{i zR7`0E;q*SDbR20<&aBNwmR=em^DK}_Q_SAlb>97U4Z6^;7Rq`Zs2$hLtK`LQqvxYA zD`=pf3B{?kUoekX>_x|1sUaH*l@Yu55>ClOyYZDhLnMNy+3+7sI;cFPT@$N^Hcm9VD2e z?+sp~+4c70xC2>@3TpWnt8<>^1oi{xwMO!>x4T^Sj{B5XoM<*nU5Jp2H3GY?M1(x9 z4~-9-6etIr}T5%ngZtTb{{WB)qLluhc`?lUA(qj45d9E zbLJS?5xI`*l~T4Qg7GsYyOKy?_eSL_iz^wbZ1o@dNE)g2mAhN$Wz*vw7D#V2oeP@T z&bPpBFe}Y!&tKMk|J)bxq#o;6R5vP5Eq%StGJ6>1L)Edxz}z@OFOo)isrDwNlXuV& z-0W;Z8}I*W?@8clT%!MOyDXJL_ABy|?G}-(vPUF}vP7hfR4RnZEhI{1Pomp?+lvq> zSCo_%M3I!VDU_6=nE#pY_T}o8$K(Cqd;kBNe$#iqd%thyoHOT~IWu$4OxhmA+3%V< zarT{t3;RWOI_4$#-CGuwJGM}17b{0c^J(iiQNp(e%cG$w{)TL}d`L@p;*I%Zhw5Fn zRY{I5=eyjzQ%E{#p!c&C&(9s0D~;=Qc3pbPSaO@!M+XbZ8s>fpEIfyail+E!{WY#< zmNwy$+0a&@p-WqTBWDC%;tW_Jz}JXSA+dDubXva63rvxV*3;P zjNC&1vhs4IU%De>d3~6$(TN8R{roNpR7S0M<50QMpe(VmpK7HuVK-%QOaF@LM@<)( zUe1#ZzHwC8=PJD{?&8Y)Ayw~2^eaft-3u*mIKj!N`>u(!E2WA=vBaMAIDxGz@0JgF zllj2mj@=;ixp-lW*LcR~(e!uWTh|5Lq-&iq{WQQuL2M$QV0=LI)p13RY8MWVTl~RS zXVKFv=uutoRK81V)M!aOq;aU(sOYAgBb+%baecGxjT6_(x7AL!4BlO(dSRfq{jG$d z_at0mZ&{aU+MK*86*of5w7%;8M5EmvLu?z}T4*f&om&r{(U;N2E4%}0hqpur z4GMO6ZNk~!pTVpIHJ#=tntNDB#>IBhx{rGwSzlc;(OYBk7@Nsf^~2V+^dI8GKad?D z+_+jZkMH3LN#ipo;@?j&crIXQJ`_62wC$qeo(hpugLOwc`b#apAhP*tj)bZqXW+Wa z>K1F>tM{yIIlFhYO>9n@nxB-XR?V`eA}tTy$NCu&nNQ96t5WGoHztYN-89>8l9j*l zYK-sF0s4{B-fqvLCtX?pvhwijUY?A7vM2d>_*@ti?&=@2ZnL~&&HWR@Eq;3=TxOr0 zd_gMr;=RHEti*Xw8@@QMS`jqwn3VlgI4Ny=r+v@`T!1>l7*WdIwp)D7~t+ zjib$qDsRjhz%eAw^5qGfq1~-DyB+XMlU;i1;Sk%aOUBHTQr&TID6>UnkBWA}8`a*2 zgfIE|E7+GE5ipQE9Og@Z?G!Rjq@3k^)!@$XHwUy&`3SL0j=dJE6EQT08A5h9Uz^Pg zs~3kHPc=uJd857CHRZf!Yl)gkqN23>oK_*Hk5daG`o!t=Dx0`GZ@LPa(n&H_tA3I%;yTO4g~>Lq`qvV(~pJ zm&kOQ78O5xrog65euq!XPalgOv~}86ReI%x)7rJNj-REkTVacLxb>AmrCUAwX%coX z!fElchUz(GQZwCz_bq6x7-(On7GN$PF!Z>>z!i*%!rSArmJP^{I@RRI=ioB&q(H?Q zf$oL<4P%stnhIzQHy_S~j`7Tj@$znZ(_<6HY!P1C8Z32+-Ls$M%wF;?p1PJI3A>dP z#8~~<^CrG8n|+%gdgkEsKGUox7TUefF5M-ap%C=pu~^O#qDOf_wfudXVdAxMpO!kx zI0EG)d~G7St=XQv%vE^ab8o3zab^yzvLYB>C$}vEm!>9_FOu2a}Toz zE2N+YQ=!D6Uv%$VwPOp;v-g`HZB82gxx93^_#V1bb-imj=j@72TZ5rFoRU9>-(8^V zk#II)sMoudg^@Sb)gpZ*43t%N)JUs4k2S15wpu9fsoG>&x7Dq9`c?LzET`A9PgqHj zr%Vs??a#5k_9Srg1@Dl;9J7*CCzaVx~4(xjnel*-l_J<0_n;*3?N z&*x(tH;l+sL&8qpjrWVENgEn&l7XS>opS3~eX01DceU#(ltNER+PT6y(Z}%Jp9$gf z{udwL=@+X0n_PRG$#h7&Cv1r_83PFddlk(s#Rg%l_@#3{SBAYtbmagO*N1StFZQOtKW%^7Z=p(ZLvTn;GBNO0kf-1 zGNRtwuW%OCIW>Qb@SFH$yXE_^$BB*MyLj=j25Y20sPHL%7qe8n(Gb<9PyC!y*Km2= zpgg6}rsv&jr->a@9_DL|e1+YWHSusJz)mVBi}j@ElJYn~PZ6M9%>JDe3I zIOm&5Sz_XRVZJoz=QKi6%I;cL#hw8(a{!C7FTbmI%^BVO$}v{A-I zY+b9+wVKxD&8dFdUnKw5RC4ioN?vrW>mIY2%FVWc;yHVh;+IX5j+vGqQox13qr@_et|ct%ri7W$+XP+YrWC9zuC@X>*(UbKnC=|w{B z3NK!#$RwTJ(wtkEUozWr-CkW!-&^l>JvKD?OS~F7Bbzx1>amAkfsv>Tv zOrBgUWTo%bGo2XVYCg&BjAe5F>mRZ#tBa1ygf|~QqNdO1uupg$t!`_Y9&7%TBeaRq zzBa9|OjK`PPHr6Q?&0w$QK_$l+fHoBIGlFMnZ7SWnil02ug*bAW>@dcW+~57n4v(}T1Z`zxOCuZ zz}qf-IlMfj9TBtZGACs%*yjYLP{-C>~V`n`_Pk;;eeIQxQmY&%igZm z++wx%!JtERgVPBg*CR(Hp2GP+_&}cA{QLtaM(b|)P+zVWZz}PzrR82>q1*fS+Zihw zPwPARi0E8ioX*$N{)ShG!`dy6^ye%WOm$01CQ7zsglp}u)w)P~x~nE?*x)U5W|X9z zk(f0|UU_V+bz_6Uz%V(pxJmR!-OA=M?H>jDJ|1N+427RD?%wc0;e_5m zMs3mleA7_P(a{-v$8w0xGx4mwGM784_u z9NBS9mKl9`zu&Rzg1zkfbKGCLomK*1h6spnnIQ17^qrF|x==S@tYp$D!hrL6y!X4T z-c=TADFa_>UMn>z(svAJ%hIfa2aP*!n90B6)3PB|HTe%O)@g5lJFOv^zv{76iQA^N zuuv&h%3gabRz!++mt#33y>V~9A#qBTV{dHV^SQ;jylLd%6*HHrg%bOQJX+gafM9nbRNjDhti}aCb>nmSS3n^YS&T!M(~iFC=aE)1*j0|Eqa5yUkyOo;sy6 z`@&℘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 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/wsdump.exe b/myenv/Scripts/wsdump.exe new file mode 100644 index 0000000000000000000000000000000000000000..e358795bf39d056bee756ae319367bd605ddcc9e GIT binary patch literal 103303 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 literal 0 HcmV?d00001 diff --git a/myenv/pyvenv.cfg b/myenv/pyvenv.cfg new file mode 100644 index 0000000..6efb611 --- /dev/null +++ b/myenv/pyvenv.cfg @@ -0,0 +1,3 @@ +home = C:\Users\PC-04\AppData\Local\Programs\Python\Python38 +include-system-site-packages = false +version = 3.8.2

    IRx(&8z)z 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 literal 0 HcmV?d00001 diff --git a/myenv/Scripts/pythonw.exe b/myenv/Scripts/pythonw.exe new file mode 100644 index 0000000000000000000000000000000000000000..4ceb8756c5dc1ea1a72149303e34bec03eb4e5c1 GIT binary patch literal 523848 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⋘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

    =YC#+xtNXRs&il3QSApmGWZgeR_g|#@ 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 C7s*2a literal 0 HcmV?d00001 diff --git a/myenv/Scripts/pip.exe b/myenv/Scripts/pip.exe new file mode 100644 index 0000000000000000000000000000000000000000..4a6abaa0563fb2b0d07d1f962651c162d4cd3876 GIT binary patch literal 103299 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