From 6544a509651c761efa6c23874385df0f364662a5 Mon Sep 17 00:00:00 2001 From: cid Date: Sat, 30 Dec 2023 03:36:43 +0800 Subject: [PATCH] added all files --- bin/activate | 87 + bin/activate.csh | 55 + bin/activate.fish | 103 + bin/activate.nu | 96 + bin/activate.ps1 | 61 + bin/activate_this.py | 36 + bin/normalizer | 8 + bin/pip | 8 + bin/pip-3.12 | 8 + bin/pip3 | 8 + bin/pip3.12 | 8 + bin/python | 1 + bin/python3 | 1 + bin/python3.12 | 1 + lib/.DS_Store | Bin 0 -> 6148 bytes lib/python3.12/.DS_Store | Bin 0 -> 6148 bytes .../__pycache__/_virtualenv.cpython-312.pyc | Bin 0 -> 4277 bytes lib/python3.12/site-packages/_virtualenv.pth | 1 + lib/python3.12/site-packages/_virtualenv.py | 102 + .../beautifulsoup4-4.12.2.dist-info/INSTALLER | 1 + .../beautifulsoup4-4.12.2.dist-info/METADATA | 116 + .../beautifulsoup4-4.12.2.dist-info/RECORD | 71 + .../beautifulsoup4-4.12.2.dist-info/WHEEL | 4 + .../licenses/AUTHORS | 49 + .../licenses/LICENSE | 31 + .../bs4-0.0.1.dist-info/INSTALLER | 1 + .../bs4-0.0.1.dist-info/METADATA | 22 + .../site-packages/bs4-0.0.1.dist-info/RECORD | 6 + .../bs4-0.0.1.dist-info/REQUESTED | 0 .../site-packages/bs4-0.0.1.dist-info/WHEEL | 5 + .../bs4-0.0.1.dist-info/top_level.txt | 1 + lib/python3.12/site-packages/bs4/__init__.py | 840 ++ .../bs4/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 33711 bytes .../bs4/__pycache__/css.cpython-312.pyc | Bin 0 -> 11451 bytes .../bs4/__pycache__/dammit.cpython-312.pyc | Bin 0 -> 37864 bytes .../bs4/__pycache__/diagnose.cpython-312.pyc | Bin 0 -> 11705 bytes .../bs4/__pycache__/element.cpython-312.pyc | Bin 0 -> 92337 bytes .../bs4/__pycache__/formatter.cpython-312.pyc | Bin 0 -> 8467 bytes .../site-packages/bs4/builder/__init__.py | 631 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 23234 bytes .../__pycache__/_html5lib.cpython-312.pyc | Bin 0 -> 21167 bytes .../__pycache__/_htmlparser.cpython-312.pyc | Bin 0 -> 13250 bytes .../builder/__pycache__/_lxml.cpython-312.pyc | Bin 0 -> 15166 bytes .../site-packages/bs4/builder/_html5lib.py | 479 + .../site-packages/bs4/builder/_htmlparser.py | 387 + .../site-packages/bs4/builder/_lxml.py | 386 + lib/python3.12/site-packages/bs4/css.py | 280 + lib/python3.12/site-packages/bs4/dammit.py | 1095 +++ lib/python3.12/site-packages/bs4/diagnose.py | 233 + lib/python3.12/site-packages/bs4/element.py | 2430 +++++ lib/python3.12/site-packages/bs4/formatter.py | 185 + .../site-packages/bs4/tests/__init__.py | 1177 +++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 62078 bytes .../__pycache__/test_builder.cpython-312.pyc | Bin 0 -> 1612 bytes .../test_builder_registry.cpython-312.pyc | Bin 0 -> 7523 bytes .../__pycache__/test_css.cpython-312.pyc | Bin 0 -> 28463 bytes .../__pycache__/test_dammit.cpython-312.pyc | Bin 0 -> 17184 bytes .../__pycache__/test_docs.cpython-312.pyc | Bin 0 -> 592 bytes .../__pycache__/test_element.cpython-312.pyc | Bin 0 -> 3632 bytes .../test_formatter.cpython-312.pyc | Bin 0 -> 4690 bytes .../__pycache__/test_fuzz.cpython-312.pyc | Bin 0 -> 3832 bytes .../__pycache__/test_html5lib.cpython-312.pyc | Bin 0 -> 10857 bytes .../test_htmlparser.cpython-312.pyc | Bin 0 -> 6713 bytes .../__pycache__/test_lxml.cpython-312.pyc | Bin 0 -> 8290 bytes .../test_navigablestring.cpython-312.pyc | Bin 0 -> 7606 bytes .../test_pageelement.cpython-312.pyc | Bin 0 -> 20359 bytes .../__pycache__/test_soup.cpython-312.pyc | Bin 0 -> 28714 bytes .../__pycache__/test_tag.cpython-312.pyc | Bin 0 -> 13570 bytes .../__pycache__/test_tree.cpython-312.pyc | Bin 0 -> 82319 bytes ...mized-bs4_fuzzer-4818336571064320.testcase | 1 + ...mized-bs4_fuzzer-4999465949331456.testcase | 1 + ...mized-bs4_fuzzer-5167584867909632.testcase | Bin 0 -> 19469 bytes ...mized-bs4_fuzzer-5703933063462912.testcase | 2 + ...mized-bs4_fuzzer-5843991618256896.testcase | 1 + ...mized-bs4_fuzzer-5984173902397440.testcase | Bin 0 -> 51495 bytes ...mized-bs4_fuzzer-6124268085182464.testcase | 1 + ...mized-bs4_fuzzer-6241471367348224.testcase | 1 + ...mized-bs4_fuzzer-6450958476902400.testcase | Bin 0 -> 3546 bytes ...mized-bs4_fuzzer-6600557255327744.testcase | Bin 0 -> 124 bytes ...0c8ed8bcd0785b67000fcd5dea1d33f08.testcase | Bin 0 -> 2607 bytes .../site-packages/bs4/tests/test_builder.py | 29 + .../bs4/tests/test_builder_registry.py | 137 + .../site-packages/bs4/tests/test_css.py | 487 + .../site-packages/bs4/tests/test_dammit.py | 370 + .../site-packages/bs4/tests/test_docs.py | 38 + .../site-packages/bs4/tests/test_element.py | 74 + .../site-packages/bs4/tests/test_formatter.py | 113 + .../site-packages/bs4/tests/test_fuzz.py | 91 + .../site-packages/bs4/tests/test_html5lib.py | 224 + .../bs4/tests/test_htmlparser.py | 148 + .../site-packages/bs4/tests/test_lxml.py | 203 + .../bs4/tests/test_navigablestring.py | 144 + .../bs4/tests/test_pageelement.py | 378 + .../site-packages/bs4/tests/test_soup.py | 504 + .../site-packages/bs4/tests/test_tag.py | 221 + .../site-packages/bs4/tests/test_tree.py | 1304 +++ .../certifi-2023.11.17.dist-info/INSTALLER | 1 + .../certifi-2023.11.17.dist-info/LICENSE | 20 + .../certifi-2023.11.17.dist-info/METADATA | 66 + .../certifi-2023.11.17.dist-info/RECORD | 14 + .../certifi-2023.11.17.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../site-packages/certifi/__init__.py | 4 + .../site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 335 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 650 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 2849 bytes .../site-packages/certifi/cacert.pem | 4778 +++++++++ lib/python3.12/site-packages/certifi/core.py | 108 + lib/python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 + .../LICENSE | 21 + .../METADATA | 683 ++ .../charset_normalizer-3.3.2.dist-info/RECORD | 35 + .../charset_normalizer-3.3.2.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 46 + .../charset_normalizer/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1754 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 324 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 17357 bytes .../__pycache__/cd.cpython-312.pyc | Bin 0 -> 13517 bytes .../__pycache__/constant.cpython-312.pyc | Bin 0 -> 38781 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 0 -> 2525 bytes .../__pycache__/md.cpython-312.pyc | Bin 0 -> 24539 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 16629 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 14392 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 351 bytes .../site-packages/charset_normalizer/api.py | 626 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 6 + .../charset_normalizer/cli/__main__.py | 296 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 312 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 10416 bytes .../charset_normalizer/constant.py | 1995 ++++ .../charset_normalizer/legacy.py | 54 + .../md.cpython-312-darwin.so | Bin 0 -> 50117 bytes .../site-packages/charset_normalizer/md.py | 615 ++ .../md__mypyc.cpython-312-darwin.so | Bin 0 -> 232652 bytes .../charset_normalizer/models.py | 340 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 421 + .../charset_normalizer/version.py | 6 + .../idna-3.6.dist-info/INSTALLER | 1 + .../idna-3.6.dist-info/LICENSE.md | 31 + .../site-packages/idna-3.6.dist-info/METADATA | 243 + .../site-packages/idna-3.6.dist-info/RECORD | 22 + .../site-packages/idna-3.6.dist-info/WHEEL | 4 + lib/python3.12/site-packages/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 898 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 5003 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 904 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 16219 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 38378 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2655 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 233 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158865 bytes lib/python3.12/site-packages/idna/codec.py | 118 + lib/python3.12/site-packages/idna/compat.py | 13 + lib/python3.12/site-packages/idna/core.py | 400 + lib/python3.12/site-packages/idna/idnadata.py | 2150 +++++ .../site-packages/idna/intranges.py | 54 + .../site-packages/idna/package_data.py | 2 + lib/python3.12/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8598 ++++++++++++++++ lib/python3.12/site-packages/main.py | 20 + lib/python3.12/site-packages/output.txt | 7120 ++++++++++++++ .../pip-23.2.1.dist-info/AUTHORS.txt | 738 ++ .../pip-23.2.1.dist-info/INSTALLER | 1 + .../pip-23.2.1.dist-info/LICENSE.txt | 20 + .../pip-23.2.1.dist-info/METADATA | 90 + .../site-packages/pip-23.2.1.dist-info/RECORD | 1063 ++ .../site-packages/pip-23.2.1.dist-info/WHEEL | 5 + .../pip-23.2.1.dist-info/entry_points.txt | 4 + .../pip-23.2.1.dist-info/top_level.txt | 1 + .../site-packages/pip-23.2.1.virtualenv | 0 lib/python3.12/site-packages/pip/__init__.py | 13 + lib/python3.12/site-packages/pip/__main__.py | 24 + .../site-packages/pip/__pip-runner__.py | 50 + .../pip/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 715 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 869 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 875 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 0 -> 14319 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 12715 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 0 -> 17427 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 33428 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 0 -> 4997 bytes .../self_outdated_check.cpython-312.pyc | Bin 0 -> 10124 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 0 -> 13721 bytes .../site-packages/pip/_internal/build_env.py | 311 + .../site-packages/pip/_internal/cache.py | 292 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 306 bytes .../autocompletion.cpython-312.pyc | Bin 0 -> 8480 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 0 -> 10466 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 0 -> 30369 bytes .../command_context.cpython-312.pyc | Bin 0 -> 1803 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 0 -> 2326 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 0 -> 4933 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 0 -> 15101 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 0 -> 2645 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 0 -> 18866 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 0 -> 7862 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 403 bytes .../pip/_internal/cli/autocompletion.py | 171 + .../pip/_internal/cli/base_command.py | 236 + .../pip/_internal/cli/cmdoptions.py | 1074 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 79 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 68 + .../pip/_internal/cli/req_command.py | 508 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4030 bytes .../__pycache__/install.cpython-312.pyc | Bin 0 -> 28994 bytes .../pip/_internal/commands/cache.py | 222 + .../pip/_internal/commands/check.py | 54 + .../pip/_internal/commands/completion.py | 121 + .../pip/_internal/commands/configuration.py | 282 + .../pip/_internal/commands/debug.py | 199 + .../pip/_internal/commands/download.py | 147 + .../pip/_internal/commands/freeze.py | 108 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 778 ++ .../pip/_internal/commands/list.py | 368 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 189 + .../pip/_internal/commands/uninstall.py | 113 + .../pip/_internal/commands/wheel.py | 183 + .../pip/_internal/configuration.py | 381 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 969 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 2208 bytes .../__pycache__/installed.cpython-312.pyc | Bin 0 -> 1468 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 0 -> 8055 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 0 -> 2016 bytes .../pip/_internal/distributions/base.py | 39 + .../pip/_internal/distributions/installed.py | 23 + .../pip/_internal/distributions/sdist.py | 150 + .../pip/_internal/distributions/wheel.py | 34 + .../site-packages/pip/_internal/exceptions.py | 733 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 260 bytes .../__pycache__/collector.cpython-312.pyc | Bin 0 -> 21883 bytes .../package_finder.cpython-312.pyc | Bin 0 -> 40796 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 0 -> 9891 bytes .../pip/_internal/index/collector.py | 505 + .../pip/_internal/index/package_finder.py | 1029 ++ .../pip/_internal/index/sources.py | 223 + .../pip/_internal/locations/__init__.py | 467 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 16804 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 0 -> 8039 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 3809 bytes .../pip/_internal/locations/_distutils.py | 173 + .../pip/_internal/locations/_sysconfig.py | 213 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 127 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5828 bytes .../__pycache__/_json.cpython-312.pyc | Bin 0 -> 2903 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 0 -> 35145 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 0 -> 15163 bytes .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 688 ++ .../_internal/metadata/importlib/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 358 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 3361 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 0 -> 13188 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 0 -> 11191 bytes .../_internal/metadata/importlib/_compat.py | 55 + .../_internal/metadata/importlib/_dists.py | 224 + .../pip/_internal/metadata/importlib/_envs.py | 188 + .../pip/_internal/metadata/pkg_resources.py | 270 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 294 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 0 -> 1951 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 0 -> 11250 bytes .../format_control.cpython-312.pyc | Bin 0 -> 4277 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 0 -> 1722 bytes .../installation_report.cpython-312.pyc | Bin 0 -> 2210 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 0 -> 26060 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 0 -> 1197 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 0 -> 5116 bytes .../selection_prefs.cpython-312.pyc | Bin 0 -> 1879 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 0 -> 4468 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 5808 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 237 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 53 + .../pip/_internal/models/link.py | 581 ++ .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 132 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 92 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 282 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 0 -> 22016 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 0 -> 4182 bytes .../__pycache__/download.cpython-312.pyc | Bin 0 -> 8604 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 0 -> 11688 bytes .../__pycache__/session.cpython-312.pyc | Bin 0 -> 18797 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 0 -> 2281 bytes .../pip/_internal/network/auth.py | 561 ++ .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 186 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 519 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 225 bytes .../__pycache__/check.cpython-312.pyc | Bin 0 -> 7607 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 0 -> 25846 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 231 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 0 -> 7147 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 1908 bytes .../metadata_editable.cpython-312.pyc | Bin 0 -> 1942 bytes .../metadata_legacy.cpython-312.pyc | Bin 0 -> 3093 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 1709 bytes .../wheel_editable.cpython-312.pyc | Bin 0 -> 2050 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 0 -> 3957 bytes .../operations/build/build_tracker.py | 124 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 187 + .../pip/_internal/operations/freeze.py | 255 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 294 bytes .../editable_legacy.cpython-312.pyc | Bin 0 -> 1845 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 34041 bytes .../operations/install/editable_legacy.py | 46 + .../pip/_internal/operations/install/wheel.py | 740 ++ .../pip/_internal/operations/prepare.py | 743 ++ .../site-packages/pip/_internal/pyproject.py | 179 + .../pip/_internal/req/__init__.py | 92 + .../req/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3769 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 0 -> 18877 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 0 -> 21264 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 0 -> 35959 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 0 -> 7240 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 0 -> 33128 bytes .../pip/_internal/req/constructors.py | 506 + .../pip/_internal/req/req_file.py | 552 ++ .../pip/_internal/req/req_install.py | 874 ++ .../pip/_internal/req/req_set.py | 119 + .../pip/_internal/req/req_uninstall.py | 650 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 225 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 1213 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../_internal/resolution/legacy/resolver.py | 600 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 236 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 8639 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 0 -> 28019 bytes .../__pycache__/factory.cpython-312.pyc | Bin 0 -> 28541 bytes .../found_candidates.cpython-312.pyc | Bin 0 -> 6236 bytes .../__pycache__/provider.cpython-312.pyc | Bin 0 -> 10406 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 0 -> 4963 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 10462 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 0 -> 11451 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 555 ++ .../resolution/resolvelib/factory.py | 730 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 255 + .../resolution/resolvelib/reporter.py | 80 + .../resolution/resolvelib/requirements.py | 165 + .../resolution/resolvelib/resolver.py | 299 + .../pip/_internal/self_outdated_check.py | 242 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 220 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 0 -> 4561 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 0 -> 1891 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 0 -> 2435 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 0 -> 2238 bytes .../compatibility_tags.cpython-312.pyc | Bin 0 -> 5586 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 0 -> 4211 bytes .../direct_url_helpers.cpython-312.pyc | Bin 0 -> 3578 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 0 -> 2953 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 0 -> 2180 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 0 -> 4018 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 0 -> 7480 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 0 -> 1189 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 0 -> 2367 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 0 -> 7579 bytes .../inject_securetransport.cpython-312.pyc | Bin 0 -> 1233 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13674 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 0 -> 32779 bytes .../utils/__pycache__/models.cpython-312.pyc | Bin 0 -> 2737 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 0 -> 2608 bytes .../setuptools_build.cpython-312.pyc | Bin 0 -> 4572 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 0 -> 8731 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 0 -> 10336 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 0 -> 11131 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 0 -> 2425 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 0 -> 4505 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 6012 bytes .../pip/_internal/utils/_jaraco_text.py | 109 + .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/egg_link.py | 72 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 153 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 151 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 348 + .../site-packages/pip/_internal/utils/misc.py | 735 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 146 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 257 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 136 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 559 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 0 -> 5051 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 0 -> 19152 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 0 -> 7627 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 0 -> 12506 bytes .../versioncontrol.cpython-312.pyc | Bin 0 -> 29124 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 355 + .../site-packages/pip/_vendor/__init__.py | 120 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4685 bytes .../pip/_vendor/cachecontrol/__init__.py | 18 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 804 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 0 -> 5082 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 3268 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 950 bytes .../__pycache__/controller.cpython-312.pyc | Bin 0 -> 14667 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 0 -> 3977 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 0 -> 7297 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 0 -> 881 bytes .../pip/_vendor/cachecontrol/_cmd.py | 61 + .../pip/_vendor/cachecontrol/adapter.py | 137 + .../pip/_vendor/cachecontrol/cache.py | 65 + .../_vendor/cachecontrol/caches/__init__.py | 9 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 401 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 0 -> 7324 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 0 -> 2246 bytes .../_vendor/cachecontrol/caches/file_cache.py | 188 + .../cachecontrol/caches/redis_cache.py | 39 + .../pip/_vendor/cachecontrol/compat.py | 32 + .../pip/_vendor/cachecontrol/controller.py | 439 + .../pip/_vendor/cachecontrol/filewrapper.py | 111 + .../pip/_vendor/cachecontrol/heuristics.py | 139 + .../pip/_vendor/cachecontrol/serialize.py | 190 + .../pip/_vendor/cachecontrol/wrapper.py | 33 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 347 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 2878 bytes .../pip/_vendor/certifi/cacert.pem | 4589 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 108 + .../pip/_vendor/chardet/__init__.py | 115 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4597 bytes .../__pycache__/big5freq.cpython-312.pyc | Bin 0 -> 27228 bytes .../__pycache__/big5prober.cpython-312.pyc | Bin 0 -> 1416 bytes .../chardistribution.cpython-312.pyc | Bin 0 -> 9667 bytes .../charsetgroupprober.cpython-312.pyc | Bin 0 -> 4151 bytes .../__pycache__/charsetprober.cpython-312.pyc | Bin 0 -> 5047 bytes .../codingstatemachine.cpython-312.pyc | Bin 0 -> 3907 bytes .../codingstatemachinedict.cpython-312.pyc | Bin 0 -> 818 bytes .../__pycache__/cp949prober.cpython-312.pyc | Bin 0 -> 1425 bytes .../chardet/__pycache__/enums.cpython-312.pyc | Bin 0 -> 3025 bytes .../__pycache__/escprober.cpython-312.pyc | Bin 0 -> 4595 bytes .../chardet/__pycache__/escsm.cpython-312.pyc | Bin 0 -> 15339 bytes .../__pycache__/eucjpprober.cpython-312.pyc | Bin 0 -> 4403 bytes .../__pycache__/euckrfreq.cpython-312.pyc | Bin 0 -> 12111 bytes .../__pycache__/euckrprober.cpython-312.pyc | Bin 0 -> 1419 bytes .../__pycache__/euctwfreq.cpython-312.pyc | Bin 0 -> 27233 bytes .../__pycache__/euctwprober.cpython-312.pyc | Bin 0 -> 1419 bytes .../__pycache__/gb2312freq.cpython-312.pyc | Bin 0 -> 19155 bytes .../__pycache__/gb2312prober.cpython-312.pyc | Bin 0 -> 1432 bytes .../__pycache__/hebrewprober.cpython-312.pyc | Bin 0 -> 5839 bytes .../__pycache__/jisfreq.cpython-312.pyc | Bin 0 -> 22184 bytes .../__pycache__/johabfreq.cpython-312.pyc | Bin 0 -> 83032 bytes .../__pycache__/johabprober.cpython-312.pyc | Bin 0 -> 1423 bytes .../__pycache__/jpcntx.cpython-312.pyc | Bin 0 -> 39578 bytes .../langbulgarianmodel.cpython-312.pyc | Bin 0 -> 83151 bytes .../langgreekmodel.cpython-312.pyc | Bin 0 -> 77017 bytes .../langhebrewmodel.cpython-312.pyc | Bin 0 -> 77528 bytes .../langrussianmodel.cpython-312.pyc | Bin 0 -> 105280 bytes .../__pycache__/langthaimodel.cpython-312.pyc | Bin 0 -> 77706 bytes .../langturkishmodel.cpython-312.pyc | Bin 0 -> 77545 bytes .../__pycache__/latin1prober.cpython-312.pyc | Bin 0 -> 7031 bytes .../macromanprober.cpython-312.pyc | Bin 0 -> 7211 bytes .../mbcharsetprober.cpython-312.pyc | Bin 0 -> 3923 bytes .../mbcsgroupprober.cpython-312.pyc | Bin 0 -> 1617 bytes .../__pycache__/mbcssm.cpython-312.pyc | Bin 0 -> 38674 bytes .../__pycache__/resultdict.cpython-312.pyc | Bin 0 -> 661 bytes .../sbcharsetprober.cpython-312.pyc | Bin 0 -> 6416 bytes .../sbcsgroupprober.cpython-312.pyc | Bin 0 -> 2386 bytes .../__pycache__/sjisprober.cpython-312.pyc | Bin 0 -> 4515 bytes .../universaldetector.cpython-312.pyc | Bin 0 -> 12295 bytes .../__pycache__/utf1632prober.cpython-312.pyc | Bin 0 -> 10008 bytes .../__pycache__/utf8prober.cpython-312.pyc | Bin 0 -> 3204 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 517 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 261 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 147 + .../pip/_vendor/chardet/cli/__init__.py | 0 .../pip/_vendor/chardet/cli/chardetect.py | 112 + .../pip/_vendor/chardet/codingstatemachine.py | 90 + .../_vendor/chardet/codingstatemachinedict.py | 19 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 85 + .../pip/_vendor/chardet/escprober.py | 102 + .../pip/_vendor/chardet/escsm.py | 261 + .../pip/_vendor/chardet/eucjpprober.py | 102 + .../pip/_vendor/chardet/euckrfreq.py | 196 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 388 + .../pip/_vendor/chardet/euctwprober.py | 47 + .../pip/_vendor/chardet/gb2312freq.py | 284 + .../pip/_vendor/chardet/gb2312prober.py | 47 + .../pip/_vendor/chardet/hebrewprober.py | 316 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/johabfreq.py | 2382 +++++ .../pip/_vendor/chardet/johabprober.py | 47 + .../pip/_vendor/chardet/jpcntx.py | 238 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4397 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5725 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 147 + .../pip/_vendor/chardet/macromanprober.py | 162 + .../pip/_vendor/chardet/mbcharsetprober.py | 95 + .../pip/_vendor/chardet/mbcsgroupprober.py | 57 + .../pip/_vendor/chardet/mbcssm.py | 661 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../pip/_vendor/chardet/metadata/languages.py | 352 + .../pip/_vendor/chardet/resultdict.py | 16 + .../pip/_vendor/chardet/sbcharsetprober.py | 162 + .../pip/_vendor/chardet/sbcsgroupprober.py | 88 + .../pip/_vendor/chardet/sjisprober.py | 105 + .../pip/_vendor/chardet/universaldetector.py | 362 + .../pip/_vendor/chardet/utf1632prober.py | 225 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 7 + .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 277 + .../pip/_vendor/colorama/initialise.py | 121 + .../pip/_vendor/colorama/tests/__init__.py | 1 + .../pip/_vendor/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../_vendor/colorama/tests/initialise_test.py | 189 + .../pip/_vendor/colorama/tests/isatty_test.py | 57 + .../pip/_vendor/colorama/tests/utils.py | 49 + .../_vendor/colorama/tests/winterm_test.py | 131 + .../pip/_vendor/colorama/win32.py | 180 + .../pip/_vendor/colorama/winterm.py | 195 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1288 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 45571 bytes .../__pycache__/resources.cpython-312.pyc | Bin 0 -> 17354 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 0 -> 19619 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 0 -> 87606 bytes .../pip/_vendor/distlib/compat.py | 1116 +++ .../pip/_vendor/distlib/database.py | 1350 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 152 + .../pip/_vendor/distlib/metadata.py | 1076 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 437 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 97792 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 182784 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 108032 bytes .../site-packages/pip/_vendor/distlib/util.py | 1932 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 91648 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 168448 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 101888 bytes .../pip/_vendor/distlib/wheel.py | 1082 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 910 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 16311 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 38411 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2667 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 245 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2151 +++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8600 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1860 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 2054 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 0 -> 8697 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 0 -> 43591 bytes .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1010 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-312.pyc | Bin 0 -> 659 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 495 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 0 -> 12102 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 0 -> 6936 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 0 -> 3270 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 14078 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 6975 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 0 -> 31276 bytes .../__pycache__/tags.cpython-312.pyc | Bin 0 -> 18985 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 5897 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 19968 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pkg_resources/__init__.py | 3361 +++++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 146503 bytes .../pip/_vendor/platformdirs/__init__.py | 566 ++ .../pip/_vendor/platformdirs/__main__.py | 53 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 18058 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 9701 bytes .../__pycache__/macos.cpython-312.pyc | Bin 0 -> 5666 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 340 bytes .../pip/_vendor/platformdirs/android.py | 210 + .../pip/_vendor/platformdirs/api.py | 223 + .../pip/_vendor/platformdirs/macos.py | 91 + .../pip/_vendor/platformdirs/unix.py | 223 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 255 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3518 bytes .../__pycache__/filter.cpython-312.pyc | Bin 0 -> 3262 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 0 -> 38330 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 0 -> 1598 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 0 -> 3426 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 0 -> 4111 bytes .../__pycache__/style.cpython-312.pyc | Bin 0 -> 6702 bytes .../__pycache__/token.cpython-312.pyc | Bin 0 -> 8172 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 0 -> 14011 bytes .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 37966 bytes .../pip/_vendor/pygments/formatter.py | 124 + .../_vendor/pygments/formatters/__init__.py | 158 + .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 989 ++ .../pip/_vendor/pygments/formatters/img.py | 645 ++ .../pip/_vendor/pygments/formatters/irc.py | 154 + .../pip/_vendor/pygments/formatters/latex.py | 521 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 943 ++ .../pip/_vendor/pygments/lexers/__init__.py | 362 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 14682 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 64434 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 ++ .../pip/_vendor/pygments/lexers/python.py | 1198 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 88 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 217 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 103 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4478 bytes .../pip/_vendor/pygments/token.py | 213 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 330 + .../pip/_vendor/pyparsing/__init__.py | 322 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7941 bytes .../__pycache__/actions.cpython-312.pyc | Bin 0 -> 8425 bytes .../__pycache__/common.cpython-312.pyc | Bin 0 -> 13444 bytes .../__pycache__/core.cpython-312.pyc | Bin 0 -> 267738 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 13024 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 0 -> 48531 bytes .../__pycache__/results.cpython-312.pyc | Bin 0 -> 34140 bytes .../__pycache__/testing.cpython-312.pyc | Bin 0 -> 17218 bytes .../__pycache__/unicode.cpython-312.pyc | Bin 0 -> 13214 bytes .../__pycache__/util.cpython-312.pyc | Bin 0 -> 14934 bytes .../pip/_vendor/pyparsing/actions.py | 217 + .../pip/_vendor/pyparsing/common.py | 432 + .../pip/_vendor/pyparsing/core.py | 6115 ++++++++++++ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 ++ .../pip/_vendor/pyparsing/exceptions.py | 299 + .../pip/_vendor/pyparsing/helpers.py | 1100 +++ .../pip/_vendor/pyparsing/results.py | 796 ++ .../pip/_vendor/pyparsing/testing.py | 331 + .../pip/_vendor/pyparsing/unicode.py | 361 + .../pip/_vendor/pyparsing/util.py | 284 + .../pip/_vendor/pyproject_hooks/__init__.py | 23 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 643 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 0 -> 14755 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1110 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5476 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 614 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2051 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 21310 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7234 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13953 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 952 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 1537 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25276 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7077 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1082 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35478 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 802 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27787 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 5989 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5647 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36299 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 50 + .../pip/_vendor/requests/adapters.py | 538 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 315 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 67 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 141 + .../pip/_vendor/requests/help.py | 131 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1034 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 833 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1094 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 664 bytes .../__pycache__/providers.cpython-312.pyc | Bin 0 -> 6881 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 0 -> 2684 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 0 -> 25927 bytes .../__pycache__/structs.cpython-312.pyc | Bin 0 -> 10536 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 230 bytes .../collections_abc.cpython-312.pyc | Bin 0 -> 450 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 547 ++ .../pip/_vendor/resolvelib/structs.py | 170 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 274 + .../rich/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7045 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 0 -> 7851 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 0 -> 206006 bytes .../_emoji_replace.cpython-312.pyc | Bin 0 -> 1759 bytes .../_export_format.cpython-312.pyc | Bin 0 -> 2351 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 0 -> 567 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 0 -> 885 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 0 -> 4177 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 0 -> 1915 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 0 -> 3650 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 0 -> 5190 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 0 -> 754 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 0 -> 6607 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 0 -> 13209 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 0 -> 2390 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 0 -> 1638 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 0 -> 12352 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 0 -> 9136 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 0 -> 11888 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 0 -> 5648 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 0 -> 26555 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 0 -> 1731 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 0 -> 8617 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 0 -> 113814 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 0 -> 2288 bytes .../__pycache__/containers.cpython-312.pyc | Bin 0 -> 9256 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 0 -> 10959 bytes .../default_styles.cpython-312.pyc | Bin 0 -> 10403 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 0 -> 4239 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 0 -> 1875 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 0 -> 3607 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 0 -> 3112 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 0 -> 9928 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 0 -> 5239 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 0 -> 19170 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 0 -> 4924 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13578 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 0 -> 9328 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 0 -> 6406 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 0 -> 7164 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 0 -> 1850 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 0 -> 5344 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 0 -> 12127 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 0 -> 40072 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 0 -> 75105 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 0 -> 10419 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 0 -> 1822 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 0 -> 597 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 0 -> 6656 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 0 -> 3860 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 0 -> 2514 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 0 -> 28191 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 0 -> 6094 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 0 -> 33544 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 0 -> 2169 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 0 -> 39640 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 0 -> 43614 bytes .../terminal_theme.cpython-312.pyc | Bin 0 -> 3378 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 0 -> 58979 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 0 -> 6370 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 0 -> 344 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 0 -> 31574 bytes .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 76 + .../pip/_vendor/rich/_extension.py | 10 + .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 69 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 72 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 56 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 240 + .../site-packages/pip/_vendor/rich/bar.py | 94 + .../site-packages/pip/_vendor/rich/box.py | 517 + .../site-packages/pip/_vendor/rich/cells.py | 154 + .../site-packages/pip/_vendor/rich/color.py | 622 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2633 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 190 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 57 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 443 + .../site-packages/pip/_vendor/rich/live.py | 375 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 246 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 308 + .../site-packages/pip/_vendor/rich/pretty.py | 994 ++ .../pip/_vendor/rich/progress.py | 1702 ++++ .../pip/_vendor/rich/progress_bar.py | 224 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 130 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 739 ++ .../site-packages/pip/_vendor/rich/spinner.py | 137 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 796 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 948 ++ .../site-packages/pip/_vendor/rich/table.py | 1002 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1307 +++ .../site-packages/pip/_vendor/rich/theme.py | 115 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 756 ++ .../site-packages/pip/_vendor/rich/tree.py | 251 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 608 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 27116 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 0 -> 4836 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 0 -> 2345 bytes .../__pycache__/after.cpython-312.pyc | Bin 0 -> 1654 bytes .../__pycache__/before.cpython-312.pyc | Bin 0 -> 1494 bytes .../__pycache__/before_sleep.cpython-312.pyc | Bin 0 -> 2332 bytes .../tenacity/__pycache__/nap.cpython-312.pyc | Bin 0 -> 1442 bytes .../__pycache__/retry.cpython-312.pyc | Bin 0 -> 14311 bytes .../tenacity/__pycache__/stop.cpython-312.pyc | Bin 0 -> 5598 bytes .../tenacity/__pycache__/wait.cpython-312.pyc | Bin 0 -> 12443 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 + .../pip/_vendor/tenacity/_utils.py | 76 + .../pip/_vendor/tenacity/after.py | 51 + .../pip/_vendor/tenacity/before.py | 46 + .../pip/_vendor/tenacity/before_sleep.py | 71 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 272 + .../pip/_vendor/tenacity/stop.py | 103 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 228 + .../pip/_vendor/tomli/__init__.py | 11 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 414 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 0 -> 26957 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 0 -> 3938 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 0 -> 396 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/typing_extensions.py | 3072 ++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3435 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 15961 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 248 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 20437 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 36309 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 13523 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 10443 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 4048 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 20332 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 6385 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 33996 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 572 ++ .../pip/_vendor/urllib3/connectionpool.py | 1132 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 228 bytes .../_appengine_environ.cpython-312.pyc | Bin 0 -> 1878 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 7541 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 921 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 229 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 0 -> 41349 bytes .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 51 + .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 537 + .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1176 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4786 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1582 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 0 -> 1382 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 4213 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 3019 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 21715 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 15133 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5101 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 10797 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11169 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 15825 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 4433 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 271 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 23 + .../pip/_vendor/webencodings/__init__.py | 342 + .../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 + lib/python3.12/site-packages/pip/py.typed | 4 + .../requests-2.31.0.dist-info/INSTALLER | 1 + .../requests-2.31.0.dist-info/LICENSE | 175 + .../requests-2.31.0.dist-info/METADATA | 122 + .../requests-2.31.0.dist-info/RECORD | 43 + .../requests-2.31.0.dist-info/REQUESTED | 0 .../requests-2.31.0.dist-info/WHEEL | 5 + .../requests-2.31.0.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 180 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5353 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 602 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2039 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 21237 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7222 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13941 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 684 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 1756 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25264 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7052 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4345 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1070 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35394 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 1287 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27775 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 5977 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5635 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36275 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + .../site-packages/requests/adapters.py | 538 ++ lib/python3.12/site-packages/requests/api.py | 157 + lib/python3.12/site-packages/requests/auth.py | 315 + .../site-packages/requests/certs.py | 17 + .../site-packages/requests/compat.py | 79 + .../site-packages/requests/cookies.py | 561 ++ .../site-packages/requests/exceptions.py | 141 + lib/python3.12/site-packages/requests/help.py | 134 + .../site-packages/requests/hooks.py | 33 + .../site-packages/requests/models.py | 1034 ++ .../site-packages/requests/packages.py | 28 + .../site-packages/requests/sessions.py | 833 ++ .../site-packages/requests/status_codes.py | 128 + .../site-packages/requests/structures.py | 99 + .../site-packages/requests/utils.py | 1094 +++ .../soupsieve-2.5.dist-info/INSTALLER | 1 + .../soupsieve-2.5.dist-info/METADATA | 116 + .../soupsieve-2.5.dist-info/RECORD | 20 + .../soupsieve-2.5.dist-info/WHEEL | 4 + .../licenses/LICENSE.md | 21 + .../site-packages/soupsieve/__init__.py | 168 + .../site-packages/soupsieve/__meta__.py | 197 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6124 bytes .../__pycache__/__meta__.cpython-312.pyc | Bin 0 -> 8137 bytes .../__pycache__/css_match.cpython-312.pyc | Bin 0 -> 61911 bytes .../__pycache__/css_parser.cpython-312.pyc | Bin 0 -> 49220 bytes .../__pycache__/css_types.cpython-312.pyc | Bin 0 -> 17358 bytes .../__pycache__/pretty.cpython-312.pyc | Bin 0 -> 5077 bytes .../__pycache__/util.cpython-312.pyc | Bin 0 -> 4747 bytes .../site-packages/soupsieve/css_match.py | 1582 +++ .../site-packages/soupsieve/css_parser.py | 1280 +++ .../site-packages/soupsieve/css_types.py | 407 + .../site-packages/soupsieve/pretty.py | 139 + .../site-packages/soupsieve/py.typed | 0 .../site-packages/soupsieve/util.py | 117 + .../urllib3-2.1.0.dist-info/INSTALLER | 1 + .../urllib3-2.1.0.dist-info/METADATA | 152 + .../urllib3-2.1.0.dist-info/RECORD | 62 + .../urllib3-2.1.0.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + .../site-packages/urllib3/__init__.py | 149 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5051 bytes .../_base_connection.cpython-312.pyc | Bin 0 -> 6890 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 22720 bytes .../_request_methods.cpython-312.pyc | Bin 0 -> 8471 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 286 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 31374 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 39668 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 15774 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 12383 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 3536 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 24150 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 46028 bytes .../site-packages/urllib3/_base_connection.py | 172 + .../site-packages/urllib3/_collections.py | 483 + .../site-packages/urllib3/_request_methods.py | 217 + .../site-packages/urllib3/_version.py | 4 + .../site-packages/urllib3/connection.py | 905 ++ .../site-packages/urllib3/connectionpool.py | 1182 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 216 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 26931 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 8185 bytes .../urllib3/contrib/pyopenssl.py | 548 ++ .../site-packages/urllib3/contrib/socks.py | 230 + .../site-packages/urllib3/exceptions.py | 318 + .../site-packages/urllib3/fields.py | 345 + .../site-packages/urllib3/filepost.py | 89 + .../site-packages/urllib3/poolmanager.py | 638 ++ lib/python3.12/site-packages/urllib3/py.typed | 2 + .../site-packages/urllib3/response.py | 1130 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1029 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4772 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1241 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 8060 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 2897 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 20242 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 16661 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5581 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 13630 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11885 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 16253 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 0 -> 2018 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 3464 bytes .../site-packages/urllib3/util/connection.py | 137 + .../site-packages/urllib3/util/proxy.py | 43 + .../site-packages/urllib3/util/request.py | 256 + .../site-packages/urllib3/util/response.py | 101 + .../site-packages/urllib3/util/retry.py | 529 + .../site-packages/urllib3/util/ssl_.py | 514 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 280 + .../site-packages/urllib3/util/timeout.py | 279 + .../site-packages/urllib3/util/url.py | 471 + .../site-packages/urllib3/util/util.py | 42 + .../site-packages/urllib3/util/wait.py | 124 + pyvenv.cfg | 8 + 1172 files changed, 249541 insertions(+) create mode 100644 bin/activate create mode 100644 bin/activate.csh create mode 100644 bin/activate.fish create mode 100644 bin/activate.nu create mode 100644 bin/activate.ps1 create mode 100644 bin/activate_this.py create mode 100755 bin/normalizer create mode 100755 bin/pip create mode 100755 bin/pip-3.12 create mode 100755 bin/pip3 create mode 100755 bin/pip3.12 create mode 120000 bin/python create mode 120000 bin/python3 create mode 120000 bin/python3.12 create mode 100644 lib/.DS_Store create mode 100644 lib/python3.12/.DS_Store create mode 100644 lib/python3.12/site-packages/__pycache__/_virtualenv.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/_virtualenv.pth create mode 100644 lib/python3.12/site-packages/_virtualenv.py create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/AUTHORS create mode 100644 lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/LICENSE create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/REQUESTED create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/bs4-0.0.1.dist-info/top_level.txt create mode 100644 lib/python3.12/site-packages/bs4/__init__.py create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/css.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/dammit.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/builder/__init__.py create mode 100644 lib/python3.12/site-packages/bs4/builder/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/builder/__pycache__/_html5lib.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/builder/__pycache__/_lxml.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/builder/_html5lib.py create mode 100644 lib/python3.12/site-packages/bs4/builder/_htmlparser.py create mode 100644 lib/python3.12/site-packages/bs4/builder/_lxml.py create mode 100644 lib/python3.12/site-packages/bs4/css.py create mode 100644 lib/python3.12/site-packages/bs4/dammit.py create mode 100644 lib/python3.12/site-packages/bs4/diagnose.py create mode 100644 lib/python3.12/site-packages/bs4/element.py create mode 100644 lib/python3.12/site-packages/bs4/formatter.py create mode 100644 lib/python3.12/site-packages/bs4/tests/__init__.py create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_docs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_element.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/__pycache__/test_tree.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase create mode 100644 lib/python3.12/site-packages/bs4/tests/test_builder.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_builder_registry.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_css.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_dammit.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_docs.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_element.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_formatter.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_fuzz.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_html5lib.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_htmlparser.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_lxml.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_navigablestring.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_pageelement.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_soup.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_tag.py create mode 100644 lib/python3.12/site-packages/bs4/tests/test_tree.py create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/LICENSE create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/certifi-2023.11.17.dist-info/top_level.txt create mode 100644 lib/python3.12/site-packages/certifi/__init__.py create mode 100644 lib/python3.12/site-packages/certifi/__main__.py create mode 100644 lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/certifi/cacert.pem create mode 100644 lib/python3.12/site-packages/certifi/core.py create mode 100644 lib/python3.12/site-packages/certifi/py.typed create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt create mode 100644 lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt create mode 100644 lib/python3.12/site-packages/charset_normalizer/__init__.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/__main__.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/api.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/cd.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/cli/__init__.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/cli/__main__.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/charset_normalizer/constant.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/legacy.py create mode 100755 lib/python3.12/site-packages/charset_normalizer/md.cpython-312-darwin.so create mode 100644 lib/python3.12/site-packages/charset_normalizer/md.py create mode 100755 lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-darwin.so create mode 100644 lib/python3.12/site-packages/charset_normalizer/models.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/py.typed create mode 100644 lib/python3.12/site-packages/charset_normalizer/utils.py create mode 100644 lib/python3.12/site-packages/charset_normalizer/version.py create mode 100644 lib/python3.12/site-packages/idna-3.6.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/idna-3.6.dist-info/LICENSE.md create mode 100644 lib/python3.12/site-packages/idna-3.6.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/idna-3.6.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/idna-3.6.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/idna/__init__.py create mode 100644 lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/idna/codec.py create mode 100644 lib/python3.12/site-packages/idna/compat.py create mode 100644 lib/python3.12/site-packages/idna/core.py create mode 100644 lib/python3.12/site-packages/idna/idnadata.py create mode 100644 lib/python3.12/site-packages/idna/intranges.py create mode 100644 lib/python3.12/site-packages/idna/package_data.py create mode 100644 lib/python3.12/site-packages/idna/py.typed create mode 100644 lib/python3.12/site-packages/idna/uts46data.py create mode 100644 lib/python3.12/site-packages/main.py create mode 100644 lib/python3.12/site-packages/output.txt create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/AUTHORS.txt create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/LICENSE.txt create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/entry_points.txt create mode 100644 lib/python3.12/site-packages/pip-23.2.1.dist-info/top_level.txt create mode 100644 lib/python3.12/site-packages/pip-23.2.1.virtualenv create mode 100644 lib/python3.12/site-packages/pip/__init__.py create mode 100644 lib/python3.12/site-packages/pip/__main__.py create mode 100644 lib/python3.12/site-packages/pip/__pip-runner__.py create mode 100644 lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/build_env.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cache.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/base_command.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/command_context.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/main.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/main_parser.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/parser.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/req_command.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/spinners.py create mode 100644 lib/python3.12/site-packages/pip/_internal/cli/status_codes.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/cache.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/check.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/completion.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/configuration.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/debug.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/download.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/freeze.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/hash.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/help.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/index.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/inspect.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/install.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/list.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/search.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/show.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/uninstall.py create mode 100644 lib/python3.12/site-packages/pip/_internal/commands/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/configuration.py create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/base.py create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/installed.py create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/sdist.py create mode 100644 lib/python3.12/site-packages/pip/_internal/distributions/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/exceptions.py create mode 100644 lib/python3.12/site-packages/pip/_internal/index/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/index/collector.py create mode 100644 lib/python3.12/site-packages/pip/_internal/index/package_finder.py create mode 100644 lib/python3.12/site-packages/pip/_internal/index/sources.py create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/_distutils.py create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 lib/python3.12/site-packages/pip/_internal/locations/base.py create mode 100644 lib/python3.12/site-packages/pip/_internal/main.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/_json.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/base.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/models/candidate.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/direct_url.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/format_control.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/index.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/installation_report.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/link.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/scheme.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/search_scope.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/target_python.py create mode 100644 lib/python3.12/site-packages/pip/_internal/models/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/network/auth.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/cache.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/download.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/session.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/utils.py create mode 100644 lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/check.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/freeze.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/operations/prepare.py create mode 100644 lib/python3.12/site-packages/pip/_internal/pyproject.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/req/constructors.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/req_file.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/req_install.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/req_set.py create mode 100644 lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/base.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 lib/python3.12/site-packages/pip/_internal/self_outdated_check.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/_log.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/appdirs.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/compat.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/datetime.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/deprecation.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/egg_link.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/encoding.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/filesystem.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/filetypes.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/glibc.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/hashes.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/logging.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/misc.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/models.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/packaging.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/subprocess.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/unpacking.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/urls.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 lib/python3.12/site-packages/pip/_internal/utils/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/git.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/subversion.py create mode 100644 lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 lib/python3.12/site-packages/pip/_internal/wheel_builder.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 lib/python3.12/site-packages/pip/_vendor/certifi/core.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/enums.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/chardet/version.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/win32.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/compat.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/database.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/index.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/locators.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/markers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/resources.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/util.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/version.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distro/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distro/__main__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/distro/distro.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/codec.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/compat.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/core.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/intranges.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/package_data.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/markers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/tags.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/utils.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/packaging/version.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/console.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/filter.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/style.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/token.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pygments/util.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/__version__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/adapters.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/api.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/auth.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/certs.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/compat.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/cookies.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/help.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/hooks.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/models.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/packages.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/sessions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/structures.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/requests/utils.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__main__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_extension.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_loop.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_pick.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_stack.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_timer.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_windows.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/abc.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/align.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/ansi.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/bar.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/box.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/cells.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/color.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/columns.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/console.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/constrain.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/containers.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/control.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/emoji.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/errors.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/filesize.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/json.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/layout.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/live.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/live_render.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/logging.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/markup.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/measure.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/padding.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/pager.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/palette.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/panel.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/pretty.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/progress.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/prompt.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/protocol.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/region.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/repr.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/rule.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/scope.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/screen.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/segment.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/spinner.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/status.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/style.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/styled.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/syntax.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/table.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/text.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/theme.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/themes.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/traceback.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/rich/tree.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/six.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/after.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/before.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/_re.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/tomli/_types.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/typing_extensions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/request.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/response.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/vendor.txt create mode 100644 lib/python3.12/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 lib/python3.12/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 lib/python3.12/site-packages/pip/py.typed create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/LICENSE create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/REQUESTED create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/requests-2.31.0.dist-info/top_level.txt create mode 100644 lib/python3.12/site-packages/requests/__init__.py create mode 100644 lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/requests/__version__.py create mode 100644 lib/python3.12/site-packages/requests/_internal_utils.py create mode 100644 lib/python3.12/site-packages/requests/adapters.py create mode 100644 lib/python3.12/site-packages/requests/api.py create mode 100644 lib/python3.12/site-packages/requests/auth.py create mode 100644 lib/python3.12/site-packages/requests/certs.py create mode 100644 lib/python3.12/site-packages/requests/compat.py create mode 100644 lib/python3.12/site-packages/requests/cookies.py create mode 100644 lib/python3.12/site-packages/requests/exceptions.py create mode 100644 lib/python3.12/site-packages/requests/help.py create mode 100644 lib/python3.12/site-packages/requests/hooks.py create mode 100644 lib/python3.12/site-packages/requests/models.py create mode 100644 lib/python3.12/site-packages/requests/packages.py create mode 100644 lib/python3.12/site-packages/requests/sessions.py create mode 100644 lib/python3.12/site-packages/requests/status_codes.py create mode 100644 lib/python3.12/site-packages/requests/structures.py create mode 100644 lib/python3.12/site-packages/requests/utils.py create mode 100644 lib/python3.12/site-packages/soupsieve-2.5.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/soupsieve-2.5.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/soupsieve-2.5.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/soupsieve-2.5.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/soupsieve-2.5.dist-info/licenses/LICENSE.md create mode 100644 lib/python3.12/site-packages/soupsieve/__init__.py create mode 100644 lib/python3.12/site-packages/soupsieve/__meta__.py create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/__meta__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/css_match.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/css_parser.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/css_types.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/pretty.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/__pycache__/util.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/soupsieve/css_match.py create mode 100644 lib/python3.12/site-packages/soupsieve/css_parser.py create mode 100644 lib/python3.12/site-packages/soupsieve/css_types.py create mode 100644 lib/python3.12/site-packages/soupsieve/pretty.py create mode 100644 lib/python3.12/site-packages/soupsieve/py.typed create mode 100644 lib/python3.12/site-packages/soupsieve/util.py create mode 100644 lib/python3.12/site-packages/urllib3-2.1.0.dist-info/INSTALLER create mode 100644 lib/python3.12/site-packages/urllib3-2.1.0.dist-info/METADATA create mode 100644 lib/python3.12/site-packages/urllib3-2.1.0.dist-info/RECORD create mode 100644 lib/python3.12/site-packages/urllib3-2.1.0.dist-info/WHEEL create mode 100644 lib/python3.12/site-packages/urllib3-2.1.0.dist-info/licenses/LICENSE.txt create mode 100644 lib/python3.12/site-packages/urllib3/__init__.py create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/_base_connection.py create mode 100644 lib/python3.12/site-packages/urllib3/_collections.py create mode 100644 lib/python3.12/site-packages/urllib3/_request_methods.py create mode 100644 lib/python3.12/site-packages/urllib3/_version.py create mode 100644 lib/python3.12/site-packages/urllib3/connection.py create mode 100644 lib/python3.12/site-packages/urllib3/connectionpool.py create mode 100644 lib/python3.12/site-packages/urllib3/contrib/__init__.py create mode 100644 lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 lib/python3.12/site-packages/urllib3/contrib/socks.py create mode 100644 lib/python3.12/site-packages/urllib3/exceptions.py create mode 100644 lib/python3.12/site-packages/urllib3/fields.py create mode 100644 lib/python3.12/site-packages/urllib3/filepost.py create mode 100644 lib/python3.12/site-packages/urllib3/poolmanager.py create mode 100644 lib/python3.12/site-packages/urllib3/py.typed create mode 100644 lib/python3.12/site-packages/urllib3/response.py create mode 100644 lib/python3.12/site-packages/urllib3/util/__init__.py create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 lib/python3.12/site-packages/urllib3/util/connection.py create mode 100644 lib/python3.12/site-packages/urllib3/util/proxy.py create mode 100644 lib/python3.12/site-packages/urllib3/util/request.py create mode 100644 lib/python3.12/site-packages/urllib3/util/response.py create mode 100644 lib/python3.12/site-packages/urllib3/util/retry.py create mode 100644 lib/python3.12/site-packages/urllib3/util/ssl_.py create mode 100644 lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 lib/python3.12/site-packages/urllib3/util/ssltransport.py create mode 100644 lib/python3.12/site-packages/urllib3/util/timeout.py create mode 100644 lib/python3.12/site-packages/urllib3/util/url.py create mode 100644 lib/python3.12/site-packages/urllib3/util/util.py create mode 100644 lib/python3.12/site-packages/urllib3/util/wait.py create mode 100644 pyvenv.cfg diff --git a/bin/activate b/bin/activate new file mode 100644 index 0000000..4766f26 --- /dev/null +++ b/bin/activate @@ -0,0 +1,87 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + + +if [ "${BASH_SOURCE-}" = "$0" ]; then + echo "You must source this script: \$ source $0" >&2 + exit 33 +fi + +deactivate () { + unset -f pydoc >/dev/null 2>&1 || true + + # reset old environment variables + # ! [ -z ${VAR+_} ] returns true if VAR is declared at all + if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then + PATH="$_OLD_VIRTUAL_PATH" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then + PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # The hash command must be called to get it to forget past + # commands. Without forgetting past commands the $PATH changes + # we made may not be respected + hash -r 2>/dev/null + + if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then + PS1="$_OLD_VIRTUAL_PS1" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV='/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags' +if ([ "$OSTYPE" = "cygwin" ] || [ "$OSTYPE" = "msys" ]) && $(command -v cygpath &> /dev/null) ; then + VIRTUAL_ENV=$(cygpath -u "$VIRTUAL_ENV") +fi +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +if [ "x" != x ] ; then + VIRTUAL_ENV_PROMPT="" +else + VIRTUAL_ENV_PROMPT=$(basename "$VIRTUAL_ENV") +fi +export VIRTUAL_ENV_PROMPT + +# unset PYTHONHOME if set +if ! [ -z "${PYTHONHOME+_}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1-}" + PS1="(${VIRTUAL_ENV_PROMPT}) ${PS1-}" + export PS1 +fi + +# Make sure to unalias pydoc if it's already there +alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true + +pydoc () { + python -m pydoc "$@" +} + +# The hash command must be called to get it to forget past +# commands. Without forgetting past commands the $PATH changes +# we made may not be respected +hash -r 2>/dev/null diff --git a/bin/activate.csh b/bin/activate.csh new file mode 100644 index 0000000..1d9b156 --- /dev/null +++ b/bin/activate.csh @@ -0,0 +1,55 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . + +set newline='\ +' + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH:q" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT:q" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate && unalias pydoc' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV '/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags' + +set _OLD_VIRTUAL_PATH="$PATH:q" +setenv PATH "$VIRTUAL_ENV:q/bin:$PATH:q" + + + +if ('' != "") then + setenv VIRTUAL_ENV_PROMPT '' +else + setenv VIRTUAL_ENV_PROMPT "$VIRTUAL_ENV:t:q" +endif + +if ( $?VIRTUAL_ENV_DISABLE_PROMPT ) then + if ( $VIRTUAL_ENV_DISABLE_PROMPT == "" ) then + set do_prompt = "1" + else + set do_prompt = "0" + endif +else + set do_prompt = "1" +endif + +if ( $do_prompt == "1" ) then + # Could be in a non-interactive environment, + # in which case, $prompt is undefined and we wouldn't + # care about the prompt anyway. + if ( $?prompt ) then + set _OLD_VIRTUAL_PROMPT="$prompt:q" + if ( "$prompt:q" =~ *"$newline:q"* ) then + : + else + set prompt = '('"$VIRTUAL_ENV_PROMPT:q"') '"$prompt:q" + endif + endif +endif + +unset env_name +unset do_prompt + +alias pydoc python -m pydoc + +rehash diff --git a/bin/activate.fish b/bin/activate.fish new file mode 100644 index 0000000..a225b97 --- /dev/null +++ b/bin/activate.fish @@ -0,0 +1,103 @@ +# This file must be used using `source bin/activate.fish` *within a running fish ( http://fishshell.com ) session*. +# Do not run it directly. + +function _bashify_path -d "Converts a fish path to something bash can recognize" + set fishy_path $argv + set bashy_path $fishy_path[1] + for path_part in $fishy_path[2..-1] + set bashy_path "$bashy_path:$path_part" + end + echo $bashy_path +end + +function _fishify_path -d "Converts a bash path to something fish can recognize" + echo $argv | tr ':' '\n' +end + +function deactivate -d 'Exit virtualenv mode and return to the normal environment.' + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + # https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling + if test (echo $FISH_VERSION | head -c 1) -lt 3 + set -gx PATH (_fishify_path "$_OLD_VIRTUAL_PATH") + else + set -gx PATH $_OLD_VIRTUAL_PATH + end + set -e _OLD_VIRTUAL_PATH + end + + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME "$_OLD_VIRTUAL_PYTHONHOME" + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + and functions -q _old_fish_prompt + # Set an empty local `$fish_function_path` to allow the removal of `fish_prompt` using `functions -e`. + set -l fish_function_path + + # Erase virtualenv's `fish_prompt` and restore the original. + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + + if test "$argv[1]" != 'nondestructive' + # Self-destruct! + functions -e pydoc + functions -e deactivate + functions -e _bashify_path + functions -e _fishify_path + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV '/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags' + +# https://github.com/fish-shell/fish-shell/issues/436 altered PATH handling +if test (echo $FISH_VERSION | head -c 1) -lt 3 + set -gx _OLD_VIRTUAL_PATH (_bashify_path $PATH) +else + set -gx _OLD_VIRTUAL_PATH $PATH +end +set -gx PATH "$VIRTUAL_ENV"'/bin' $PATH + +# Prompt override provided? +# If not, just use the environment name. +if test -n '' + set -gx VIRTUAL_ENV_PROMPT '' +else + set -gx VIRTUAL_ENV_PROMPT (basename "$VIRTUAL_ENV") +end + +# Unset `$PYTHONHOME` if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +function pydoc + python -m pydoc $argv +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # Copy the current `fish_prompt` function as `_old_fish_prompt`. + functions -c fish_prompt _old_fish_prompt + + function fish_prompt + # Run the user's prompt first; it might depend on (pipe)status. + set -l prompt (_old_fish_prompt) + + printf '(%s) ' $VIRTUAL_ENV_PROMPT + + string join -- \n $prompt # handle multi-line prompts + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/bin/activate.nu b/bin/activate.nu new file mode 100644 index 0000000..5e89fa3 --- /dev/null +++ b/bin/activate.nu @@ -0,0 +1,96 @@ +# virtualenv activation module +# Activate with `overlay use activate.nu` +# Deactivate with `deactivate`, as usual +# +# To customize the overlay name, you can call `overlay use activate.nu as foo`, +# but then simply `deactivate` won't work because it is just an alias to hide +# the "activate" overlay. You'd need to call `overlay hide foo` manually. + +export-env { + def is-string [x] { + ($x | describe) == 'string' + } + + def has-env [...names] { + $names | each {|n| + $n in $env + } | all {|i| $i == true} + } + + # Emulates a `test -z`, but btter as it handles e.g 'false' + def is-env-true [name: string] { + if (has-env $name) { + # Try to parse 'true', '0', '1', and fail if not convertible + let parsed = (do -i { $env | get $name | into bool }) + if ($parsed | describe) == 'bool' { + $parsed + } else { + not ($env | get -i $name | is-empty) + } + } else { + false + } + } + + let virtual_env = '/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags' + let bin = 'bin' + + let is_windows = ($nu.os-info.family) == 'windows' + let path_name = (if (has-env 'Path') { + 'Path' + } else { + 'PATH' + } + ) + + let venv_path = ([$virtual_env $bin] | path join) + let new_path = ($env | get $path_name | prepend $venv_path) + + # If there is no default prompt, then use the env name instead + let virtual_env_prompt = (if ('' | is-empty) { + ($virtual_env | path basename) + } else { + '' + }) + + let new_env = { + $path_name : $new_path + VIRTUAL_ENV : $virtual_env + VIRTUAL_ENV_PROMPT : $virtual_env_prompt + } + + let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') { + $new_env + } else { + # Creating the new prompt for the session + let virtual_prefix = $'(char lparen)($virtual_env_prompt)(char rparen) ' + + # Back up the old prompt builder + let old_prompt_command = (if (has-env 'PROMPT_COMMAND') { + $env.PROMPT_COMMAND + } else { + '' + }) + + let new_prompt = (if (has-env 'PROMPT_COMMAND') { + if 'closure' in ($old_prompt_command | describe) { + {|| $'($virtual_prefix)(do $old_prompt_command)' } + } else { + {|| $'($virtual_prefix)($old_prompt_command)' } + } + } else { + {|| $'($virtual_prefix)' } + }) + + $new_env | merge { + PROMPT_COMMAND : $new_prompt + VIRTUAL_PREFIX : $virtual_prefix + } + }) + + # Environment variables that will be loaded as the virtual env + load-env $new_env +} + +export alias pydoc = python -m pydoc +export alias deactivate = overlay hide activate diff --git a/bin/activate.ps1 b/bin/activate.ps1 new file mode 100644 index 0000000..47d1853 --- /dev/null +++ b/bin/activate.ps1 @@ -0,0 +1,61 @@ +$script:THIS_PATH = $myinvocation.mycommand.path +$script:BASE_DIR = Split-Path (Resolve-Path "$THIS_PATH/..") -Parent + +function global:deactivate([switch] $NonDestructive) { + if (Test-Path variable:_OLD_VIRTUAL_PATH) { + $env:PATH = $variable:_OLD_VIRTUAL_PATH + Remove-Variable "_OLD_VIRTUAL_PATH" -Scope global + } + + if (Test-Path function:_old_virtual_prompt) { + $function:prompt = $function:_old_virtual_prompt + Remove-Item function:\_old_virtual_prompt + } + + if ($env:VIRTUAL_ENV) { + Remove-Item env:VIRTUAL_ENV -ErrorAction SilentlyContinue + } + + if ($env:VIRTUAL_ENV_PROMPT) { + Remove-Item env:VIRTUAL_ENV_PROMPT -ErrorAction SilentlyContinue + } + + if (!$NonDestructive) { + # Self destruct! + Remove-Item function:deactivate + Remove-Item function:pydoc + } +} + +function global:pydoc { + python -m pydoc $args +} + +# unset irrelevant variables +deactivate -nondestructive + +$VIRTUAL_ENV = $BASE_DIR +$env:VIRTUAL_ENV = $VIRTUAL_ENV + +if ("" -ne "") { + $env:VIRTUAL_ENV_PROMPT = "" +} +else { + $env:VIRTUAL_ENV_PROMPT = $( Split-Path $env:VIRTUAL_ENV -Leaf ) +} + +New-Variable -Scope global -Name _OLD_VIRTUAL_PATH -Value $env:PATH + +$env:PATH = "$env:VIRTUAL_ENV/bin:" + $env:PATH +if (!$env:VIRTUAL_ENV_DISABLE_PROMPT) { + function global:_old_virtual_prompt { + "" + } + $function:_old_virtual_prompt = $function:prompt + + function global:prompt { + # Add the custom prefix to the existing prompt + $previous_prompt_value = & $function:_old_virtual_prompt + ("(" + $env:VIRTUAL_ENV_PROMPT + ") " + $previous_prompt_value) + } +} diff --git a/bin/activate_this.py b/bin/activate_this.py new file mode 100644 index 0000000..7940d5e --- /dev/null +++ b/bin/activate_this.py @@ -0,0 +1,36 @@ +""" +Activate virtualenv for current interpreter: + +Use exec(open(this_file).read(), {'__file__': this_file}). + +This can be used when you must use an existing Python interpreter, not the virtualenv bin/python. +""" # noqa: D415 +from __future__ import annotations + +import os +import site +import sys + +try: + abs_file = os.path.abspath(__file__) +except NameError as exc: + msg = "You must use exec(open(this_file).read(), {'__file__': this_file}))" + raise AssertionError(msg) from exc + +bin_dir = os.path.dirname(abs_file) +base = bin_dir[: -len("bin") - 1] # strip away the bin part from the __file__, plus the path separator + +# prepend bin to PATH (this file is inside the bin directory) +os.environ["PATH"] = os.pathsep.join([bin_dir, *os.environ.get("PATH", "").split(os.pathsep)]) +os.environ["VIRTUAL_ENV"] = base # virtual env is right above bin directory +os.environ["VIRTUAL_ENV_PROMPT"] = "" or os.path.basename(base) # noqa: SIM222 + +# add the virtual environments libraries to the host python import mechanism +prev_length = len(sys.path) +for lib in "../lib/python3.12/site-packages".split(os.pathsep): + path = os.path.realpath(os.path.join(bin_dir, lib)) + site.addsitedir(path.decode("utf-8") if "" else path) +sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length] + +sys.real_prefix = sys.prefix +sys.prefix = base diff --git a/bin/normalizer b/bin/normalizer new file mode 100755 index 0000000..baac25c --- /dev/null +++ b/bin/normalizer @@ -0,0 +1,8 @@ +#!/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/bin/pip b/bin/pip new file mode 100755 index 0000000..908f6ba --- /dev/null +++ b/bin/pip @@ -0,0 +1,8 @@ +#!/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/bin/pip-3.12 b/bin/pip-3.12 new file mode 100755 index 0000000..908f6ba --- /dev/null +++ b/bin/pip-3.12 @@ -0,0 +1,8 @@ +#!/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/bin/pip3 b/bin/pip3 new file mode 100755 index 0000000..908f6ba --- /dev/null +++ b/bin/pip3 @@ -0,0 +1,8 @@ +#!/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/bin/pip3.12 b/bin/pip3.12 new file mode 100755 index 0000000..908f6ba --- /dev/null +++ b/bin/pip3.12 @@ -0,0 +1,8 @@ +#!/Users/edsbinas/PycharmProjects/GoogleSearchWithOutputBodyTags/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/bin/python b/bin/python new file mode 120000 index 0000000..79239b3 --- /dev/null +++ b/bin/python @@ -0,0 +1 @@ +/usr/local/bin/python3.12 \ No newline at end of file diff --git a/bin/python3 b/bin/python3 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/bin/python3 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/bin/python3.12 b/bin/python3.12 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/bin/python3.12 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/lib/.DS_Store b/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ccf63b7a3e8d9970de4cd40f773e9019fbe11590 GIT binary patch literal 6148 zcmeHKJ5EC}5S)b+5i}_&eFCJw1*|AJ0T)1!f+FG}K?=H8aW0OQ*-t_ApbJejE3L;~ z@7VGbZ{Gs2)qcAK769gSM|}A(HQ#ri*hNK*Naq;?UU83GEO9r<{ypH_E4<+oA9(r6 z-@ZTZo`zxP2{I`l1*Cu!kOETRWC~PionN2qL>(jrq`Ni zF&xHu^b*A80b(y46B(gdQi(~mYB4P7jJL|`g=1pUVby$C-E7sNSlrI@TcpE!qDCno z1&$TC%;m!C|AziY|9?!xcDB6 literal 0 HcmV?d00001 diff --git a/lib/python3.12/.DS_Store b/lib/python3.12/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3c8b6a9104e4cbb24ff9307ec4282aff5f9e4bdc GIT binary patch literal 6148 zcmeHK%Sr=55Ukc50wUz-aelyqe=vmj1^$4Vh=_p*8}EDayZkh(AD3kjJj6?=hVGi_ z>6&Hhu)Phy)}OmOUSX@P;E^Cj3|K zhuyHhkIYcj*c#AO+4#0slTUx??XK6XVmt5F-F_ z!E_kcF-s7eCy2dpOk{>;NhK!LYQ(UlGvBJN7mkTZht=?5^<=9F#p3C_zePE$Cn`z- zDKJ&wGPf)5|M&D?=Km>4J1HOq&PoAWY#ugizEbtp*~@vaZS+UF*L>66xDE&a27lO literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/__pycache__/_virtualenv.cpython-312.pyc b/lib/python3.12/site-packages/__pycache__/_virtualenv.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d62b1a894a0dc612cb406aeeadd7d81d79a57166 GIT binary patch literal 4277 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 F{|iV=^C18L literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/_virtualenv.pth b/lib/python3.12/site-packages/_virtualenv.pth new file mode 100644 index 0000000..1c3ff99 --- /dev/null +++ b/lib/python3.12/site-packages/_virtualenv.pth @@ -0,0 +1 @@ +import _virtualenv \ No newline at end of file diff --git a/lib/python3.12/site-packages/_virtualenv.py b/lib/python3.12/site-packages/_virtualenv.py new file mode 100644 index 0000000..17f73b1 --- /dev/null +++ b/lib/python3.12/site-packages/_virtualenv.py @@ -0,0 +1,102 @@ +"""Patches that are applied at runtime to the virtual environment.""" + +from __future__ import annotations + +import os +import sys +from contextlib import suppress + +VIRTUALENV_PATCH_FILE = os.path.join(__file__) + + +def patch_dist(dist): + """ + Distutils allows user to configure some arguments via a configuration file: + https://docs.python.org/3/install/index.html#distutils-configuration-files. + + Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up. + """ # noqa: D205 + # we cannot allow some install config as that would get packages installed outside of the virtual environment + old_parse_config_files = dist.Distribution.parse_config_files + + def parse_config_files(self, *args, **kwargs): + result = old_parse_config_files(self, *args, **kwargs) + install = self.get_option_dict("install") + + if "prefix" in install: # the prefix governs where to install the libraries + install["prefix"] = VIRTUALENV_PATCH_FILE, os.path.abspath(sys.prefix) + for base in ("purelib", "platlib", "headers", "scripts", "data"): + key = f"install_{base}" + if key in install: # do not allow global configs to hijack venv paths + install.pop(key, None) + return result + + dist.Distribution.parse_config_files = parse_config_files + + +# Import hook that patches some modules to ignore configuration values that break package installation in case +# of virtual environments. +_DISTUTILS_PATCH = "distutils.dist", "setuptools.dist" +# https://docs.python.org/3/library/importlib.html#setting-up-an-importer + + +class _Finder: + """A meta path finder that allows patching the imported distutils modules.""" + + fullname = None + + # lock[0] is threading.Lock(), but initialized lazily to avoid importing threading very early at startup, + # because there are gevent-based applications that need to be first to import threading by themselves. + # See https://github.com/pypa/virtualenv/issues/1895 for details. + lock = [] # noqa: RUF012 + + def find_spec(self, fullname, path, target=None): # noqa: ARG002 + if fullname in _DISTUTILS_PATCH and self.fullname is None: + # initialize lock[0] lazily + if len(self.lock) == 0: + import threading + + lock = threading.Lock() + # there is possibility that two threads T1 and T2 are simultaneously running into find_spec, + # observing .lock as empty, and further going into hereby initialization. However due to the GIL, + # list.append() operation is atomic and this way only one of the threads will "win" to put the lock + # - that every thread will use - into .lock[0]. + # https://docs.python.org/3/faq/library.html#what-kinds-of-global-value-mutation-are-thread-safe + self.lock.append(lock) + + from functools import partial + from importlib.util import find_spec + + with self.lock[0]: + self.fullname = fullname + try: + spec = find_spec(fullname, path) + if spec is not None: + # https://www.python.org/dev/peps/pep-0451/#how-loading-will-work + is_new_api = hasattr(spec.loader, "exec_module") + func_name = "exec_module" if is_new_api else "load_module" + old = getattr(spec.loader, func_name) + func = self.exec_module if is_new_api else self.load_module + if old is not func: + with suppress(AttributeError): # C-Extension loaders are r/o such as zipimporter with <3.7 + setattr(spec.loader, func_name, partial(func, old)) + return spec + finally: + self.fullname = None + return None + + @staticmethod + def exec_module(old, module): + old(module) + if module.__name__ in _DISTUTILS_PATCH: + patch_dist(module) + + @staticmethod + def load_module(old, name): + module = old(name) + if module.__name__ in _DISTUTILS_PATCH: + patch_dist(module) + return module + + +sys.meta_path.insert(0, _Finder()) diff --git a/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/INSTALLER b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/METADATA b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/METADATA new file mode 100644 index 0000000..f1d7204 --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/METADATA @@ -0,0 +1,116 @@ +Metadata-Version: 2.1 +Name: beautifulsoup4 +Version: 4.12.2 +Summary: Screen-scraping library +Project-URL: Download, https://www.crummy.com/software/BeautifulSoup/bs4/download/ +Project-URL: Homepage, https://www.crummy.com/software/BeautifulSoup/bs4/ +Author-email: Leonard Richardson +License-Expression: MIT +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.6.0 +Requires-Dist: soupsieve>1.2 +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(text="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://bazaar.launchpad.net/~leonardr/beautifulsoup/bs4/view/head:/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/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/RECORD b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/RECORD new file mode 100644 index 0000000..f2fe510 --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/RECORD @@ -0,0 +1,71 @@ +beautifulsoup4-4.12.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +beautifulsoup4-4.12.2.dist-info/METADATA,sha256=M6TF9wpbgywQQvtehBohLTEr2f8e7cw909PZ3Xsk3N4,3556 +beautifulsoup4-4.12.2.dist-info/RECORD,, +beautifulsoup4-4.12.2.dist-info/WHEEL,sha256=Fd6mP6ydyRguakwUJ05oBE7fh2IPxgtDN9IwHJ9OqJQ,87 +beautifulsoup4-4.12.2.dist-info/licenses/AUTHORS,sha256=uSIdbrBb1sobdXl7VrlUvuvim2dN9kF3MH4Edn0WKGE,2176 +beautifulsoup4-4.12.2.dist-info/licenses/LICENSE,sha256=VbTY1LHlvIbRDvrJG3TIe8t3UmsPW57a-LnNKtxzl7I,1441 +bs4/__init__.py,sha256=4QO9qbbubMeEQw46YDLWEYS1yAebwKYR5l_Se9E_Gxo,33822 +bs4/__pycache__/__init__.cpython-312.pyc,, +bs4/__pycache__/css.cpython-312.pyc,, +bs4/__pycache__/dammit.cpython-312.pyc,, +bs4/__pycache__/diagnose.cpython-312.pyc,, +bs4/__pycache__/element.cpython-312.pyc,, +bs4/__pycache__/formatter.cpython-312.pyc,, +bs4/builder/__init__.py,sha256=KGBl_FgX1KV1wBIshW4EXlWjP3KLcRiF2opZ-zVcyAc,24393 +bs4/builder/__pycache__/__init__.cpython-312.pyc,, +bs4/builder/__pycache__/_html5lib.cpython-312.pyc,, +bs4/builder/__pycache__/_htmlparser.cpython-312.pyc,, +bs4/builder/__pycache__/_lxml.cpython-312.pyc,, +bs4/builder/_html5lib.py,sha256=LnhimXrUdKujKoHHbmzwNk8OBb11YfTRFXUwhZjwqow,19078 +bs4/builder/_htmlparser.py,sha256=2j4Kj0dFi86vD-OblQRaFFCsRXuWb1VdBGJVPxKKEUc,14919 +bs4/builder/_lxml.py,sha256=ik6BFGnxAzV2-21S_Wc-7ZeA174muSA_ZhmpnAe3g0E,14904 +bs4/css.py,sha256=gqGaHRrKeCRF3gDqxzeU0uclOCeSsTpuW9gUaSnJeWc,10077 +bs4/dammit.py,sha256=G0cQfsEqfwJ-FIQMkXgCJwSHMn7t9vPepCrud6fZEKk,41158 +bs4/diagnose.py,sha256=uAwdDugL_67tB-BIwDIFLFbiuzGxP2wQzJJ4_bGYUrA,7195 +bs4/element.py,sha256=R-HP8gtZPFJ71Rl4ieIBct1I9VTErTAD9FW64Jtg6Sc,92716 +bs4/formatter.py,sha256=fE8Xf9SrHvTZcv_zDpgtOGWk3OIWENPoeKcwhuMJnDs,7184 +bs4/tests/__init__.py,sha256=usdUEP_PwnDfhCdx9rQw9HLWRyc4k9goB6ErZT9aAc0,48391 +bs4/tests/__pycache__/__init__.cpython-312.pyc,, +bs4/tests/__pycache__/test_builder.cpython-312.pyc,, +bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc,, +bs4/tests/__pycache__/test_css.cpython-312.pyc,, +bs4/tests/__pycache__/test_dammit.cpython-312.pyc,, +bs4/tests/__pycache__/test_docs.cpython-312.pyc,, +bs4/tests/__pycache__/test_element.cpython-312.pyc,, +bs4/tests/__pycache__/test_formatter.cpython-312.pyc,, +bs4/tests/__pycache__/test_fuzz.cpython-312.pyc,, +bs4/tests/__pycache__/test_html5lib.cpython-312.pyc,, +bs4/tests/__pycache__/test_htmlparser.cpython-312.pyc,, +bs4/tests/__pycache__/test_lxml.cpython-312.pyc,, +bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc,, +bs4/tests/__pycache__/test_pageelement.cpython-312.pyc,, +bs4/tests/__pycache__/test_soup.cpython-312.pyc,, +bs4/tests/__pycache__/test_tag.cpython-312.pyc,, +bs4/tests/__pycache__/test_tree.cpython-312.pyc,, +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase,sha256=Uv_dx4a43TSfoNkjU-jHW2nSXkqHFg4XdAw7SWVObUk,23 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase,sha256=OEyVA0Ej4FxswOElrUNt0In4s4YhrmtaxE_NHGZvGtg,30 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase,sha256=3d8z65o4p7Rur-RmCHoOjzqaYQ8EAtjmiBYTHNyAdl4,19469 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase,sha256=2bq3S8KxZgk8EajLReHD8m4_0Lj_nrkyJAxB_z_U0D0,5 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase,sha256=MZDu31LPLfgu6jP9IZkrlwNes3f_sL8WFP5BChkUKdY,35 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase,sha256=w58r-s6besG5JwPXpnz37W2YTj9-_qxFbk6hiEnKeIQ,51495 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase,sha256=q8rkdMECEXKcqVhOf5zWHkSBTQeOPt0JiLg2TZiPCuk,10380 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase,sha256=QfzoOxKwNuqG-4xIrea6MOQLXhfAAOQJ0r9u-J6kSNs,19 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase,sha256=EItOpSdeD4ewK-qgJ9vtxennwn_huguzXgctrUT7fqE,3546 +bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase,sha256=a2aJTG4FceGSJXsjtxoS8S4jk_8rZsS3aznLkeO2_dY,124 +bs4/tests/fuzz/crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase,sha256=jRFRtCKlP3-3EDLc_iVRTcE6JNymv0rYcVM6qRaPrxI,2607 +bs4/tests/test_builder.py,sha256=nc2JE5EMrEf-p24qhf2R8qAV5PpFiOuNpYCmtmCjlTI,1115 +bs4/tests/test_builder_registry.py,sha256=7WLj2prjSHGphebnrjQuI6JYr03Uy_c9_CkaFSQ9HRo,5114 +bs4/tests/test_css.py,sha256=jCcgIWem3lyPa5AjhAk9S6fWI07hk1rg0v8coD7bEtI,17279 +bs4/tests/test_dammit.py,sha256=MbSmRN6VEP0Rm56-w6Ja0TW8eC-8ZxOJ-wXWVf_hRi8,15451 +bs4/tests/test_docs.py,sha256=xoAxnUfoQ7aRqGImwW_9BJDU8WNMZHIuvWqVepvWXt8,1127 +bs4/tests/test_element.py,sha256=92oRSRoGk8gIXAbAGHErKzocx2MK32TqcQdUJ-dGQMo,2377 +bs4/tests/test_formatter.py,sha256=eTzj91Lmhv90z-WiHjK3sBJZm0hRk0crFY1TZaXstCY,4148 +bs4/tests/test_fuzz.py,sha256=wXfic-J9-sv4C3upnTeZju_PIa9NxktOD_zw3Ek0u9w,3637 +bs4/tests/test_html5lib.py,sha256=2-ipm-_MaPt37WTxEd5DodUTNhS4EbLFKPRaO6XSCW4,8322 +bs4/tests/test_htmlparser.py,sha256=wnngcIlzjEwH21JFfu_mgt6JdpLt0ncJfLcGT7HeGw0,6256 +bs4/tests/test_lxml.py,sha256=nQCmLt7bWk0id7xMumZw--PzEe1xF9PTQn3lvHyNC6I,7635 +bs4/tests/test_navigablestring.py,sha256=RGSgziNf7cZnYdEPsoqL1B2I68TUJp1JmEQVxbh_ryA,5081 +bs4/tests/test_pageelement.py,sha256=VdGjUxx3RhjqmNsJ92ao6VZC_YD7T8mdLkDZjosOYeE,14274 +bs4/tests/test_soup.py,sha256=JmnAPLE1_GXm0wmwEUN7icdvBz9HDch-qoU2mT_TDrs,19877 +bs4/tests/test_tag.py,sha256=f19uie7QehvgvhIqNWfjDRR4TKa-ftm_RRoo6LXZyqk,9016 +bs4/tests/test_tree.py,sha256=n9nTQOzJb3-ZnZ6AkmMdZQ5TYcTUPnqHoVgal0mYXfg,48129 diff --git a/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/WHEEL b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/WHEEL new file mode 100644 index 0000000..9d72767 --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.13.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/AUTHORS b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/AUTHORS new file mode 100644 index 0000000..1f14fe0 --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/AUTHORS @@ -0,0 +1,49 @@ +Behold, mortal, the origins of Beautiful Soup... +================================================ + +Leonard Richardson is the primary maintainer. + +Aaron DeVore and Isaac Muse 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/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/LICENSE b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.dist-info/licenses/LICENSE new file mode 100644 index 0000000..08e3a9c --- /dev/null +++ b/lib/python3.12/site-packages/beautifulsoup4-4.12.2.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/lib/python3.12/site-packages/bs4-0.0.1.dist-info/INSTALLER b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/lib/python3.12/site-packages/bs4-0.0.1.dist-info/METADATA b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/METADATA new file mode 100644 index 0000000..6b09830 --- /dev/null +++ b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/METADATA @@ -0,0 +1,22 @@ +Metadata-Version: 2.1 +Name: bs4 +Version: 0.0.1 +Summary: Screen-scraping library +Home-page: https://pypi.python.org/pypi/beautifulsoup4 +Download-URL: http://www.crummy.com/software/BeautifulSoup/bs4/download/ +Author: Leonard Richardson +Author-email: leonardr@segfault.org +License: MIT +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 3 +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Topic :: Text Processing :: Markup :: XML +Classifier: Topic :: Text Processing :: Markup :: SGML +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Requires-Dist: beautifulsoup4 + +Use `beautifulsoup4 `_ instead. diff --git a/lib/python3.12/site-packages/bs4-0.0.1.dist-info/RECORD b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/RECORD new file mode 100644 index 0000000..328a1a9 --- /dev/null +++ b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/RECORD @@ -0,0 +1,6 @@ +bs4-0.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +bs4-0.0.1.dist-info/METADATA,sha256=SCwUWrze8tyGfm3z5QZsN2lG054itoe_7WOf_aWhhWo,919 +bs4-0.0.1.dist-info/RECORD,, +bs4-0.0.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bs4-0.0.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 +bs4-0.0.1.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 diff --git a/lib/python3.12/site-packages/bs4-0.0.1.dist-info/REQUESTED b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/lib/python3.12/site-packages/bs4-0.0.1.dist-info/WHEEL b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/WHEEL new file mode 100644 index 0000000..98c0d20 --- /dev/null +++ b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.42.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/lib/python3.12/site-packages/bs4-0.0.1.dist-info/top_level.txt b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/top_level.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/python3.12/site-packages/bs4-0.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ + diff --git a/lib/python3.12/site-packages/bs4/__init__.py b/lib/python3.12/site-packages/bs4/__init__.py new file mode 100644 index 0000000..3d2ab09 --- /dev/null +++ b/lib/python3.12/site-packages/bs4/__init__.py @@ -0,0 +1,840 @@ +"""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.6 and up. It works better if lxml +and/or html5lib is installed. + +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.12.2" +__copyright__ = "Copyright (c) 2004-2023 Leonard Richardson" +# Use of this source code is governed by the MIT license. +__license__ = "MIT" + +__all__ = ['BeautifulSoup'] + +from collections import Counter +import os +import re +import sys +import traceback +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, + ParserRejectedMarkup, + XMLParsedAsHTMLWarning, + HTMLParserTreeBuilder +) +from .dammit import UnicodeDammit +from .element import ( + CData, + Comment, + CSS, + DEFAULT_OUTPUT_ENCODING, + Declaration, + Doctype, + NavigableString, + PageElement, + ProcessingInstruction, + PYTHON_SPECIFIC_ENCODINGS, + ResultSet, + Script, + Stylesheet, + SoupStrainer, + Tag, + TemplateString, + ) + +# 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. + """ + +class MarkupResemblesLocatorWarning(UserWarning): + """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. + """ + + +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 .name. This name makes it clear the BeautifulSoup + # object isn't a real markup tag. + ROOT_TAG_NAME = '[document]' + + # If the end-user gives no indication which tree builder they + # want, look for one with these features. + DEFAULT_BUILDER_FEATURES = ['html', 'fast'] + + # A string containing all ASCII whitespace characters, used in + # endData() to detect data chunks that seem 'empty'. + ASCII_SPACES = '\x20\x0a\x09\x0c\x0d' + + NO_PARSER_SPECIFIED_WARNING = "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.\n\nThe 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.\n" + + def __init__(self, markup="", features=None, builder=None, + parse_only=None, from_encoding=None, exclude_encodings=None, + element_classes=None, **kwargs): + """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( + "BS4 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( + "BS4 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, new_name): + if old_name in kwargs: + warnings.warn( + 'The "%s" argument to the BeautifulSoup constructor ' + 'has been renamed to "%s."' % (old_name, new_name), + DeprecationWarning, stacklevel=3 + ) + return kwargs.pop(old_name) + return None + + parse_only = parse_only or deprecated_argument( + "parseOnlyThese", "parse_only") + + 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 + + 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 + builder_class = builder_registry.lookup(*features) + if 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)) + + # 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: + builder = builder_class(**kwargs) + if not original_builder and not ( + original_features == builder.NAME or + 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( + self.NO_PARSER_SPECIFIED_WARNING % 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 = markup.read() + elif len(markup) <= 256 and ( + (isinstance(markup, bytes) and not b'<' in markup) + or (isinstance(markup, str) and 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) + + 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 _clone(self): + """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): + # 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): + # 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() + return state + + + @classmethod + def _decode_markup(cls, markup): + """Ensure `markup` is bytes so it's safe to send into warnings.warn. + + TODO: warnings.warn had this problem back in 2010 but it might not + anymore. + """ + if isinstance(markup, bytes): + decoded = markup.decode('utf-8', 'replace') + else: + decoded = markup + return decoded + + @classmethod + def _markup_is_url(cls, markup): + """Error-handling method to raise a warning if incoming markup looks + like a URL. + + :param markup: A string. + :return: Whether or not the markup resembles a URL + closely enough to justify a warning. + """ + if isinstance(markup, bytes): + space = b' ' + cant_start_with = (b"http:", b"https:") + elif isinstance(markup, str): + space = ' ' + cant_start_with = ("http:", "https:") + else: + return False + + if any(markup.startswith(prefix) for prefix in cant_start_with): + if not space in markup: + warnings.warn( + 'The input looks more like a URL than markup. You may want to use' + ' an HTTP client like requests to get the document behind' + ' the URL, and feed that document to Beautiful Soup.', + MarkupResemblesLocatorWarning, + stacklevel=3 + ) + return True + return False + + @classmethod + def _markup_resembles_filename(cls, markup): + """Error-handling method to raise a warning if incoming markup + resembles a filename. + + :param markup: A bytestring or string. + :return: Whether or not the markup resembles a filename + closely enough to justify a warning. + """ + path_characters = '/\\' + extensions = ['.html', '.htm', '.xml', '.xhtml', '.txt'] + if isinstance(markup, bytes): + path_characters = path_characters.encode("utf8") + extensions = [x.encode('utf8') for x in extensions] + filelike = False + if any(x in markup for x in path_characters): + filelike = True + else: + lower = markup.lower() + if any(lower.endswith(ext) for ext in extensions): + filelike = True + if filelike: + warnings.warn( + 'The input looks more like a filename than markup. You may' + ' want to open this file and pass the filehandle into' + ' Beautiful Soup.', + MarkupResemblesLocatorWarning, stacklevel=3 + ) + return True + return False + + def _feed(self): + """Internal method that parses previously set markup, creating a large + number of Tag and NavigableString objects. + """ + # Convert the document to Unicode. + self.builder.reset() + + self.builder.feed(self.markup) + # Close out any unfinished strings and close all the open tags. + self.endData() + while self.currentTag.name != self.ROOT_TAG_NAME: + self.popTag() + + def reset(self): + """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 = 1 + 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, namespace=None, nsprefix=None, attrs={}, + sourceline=None, sourcepos=None, **kwattrs): + """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 kwattrs: Keyword arguments for the new Tag's attribute values. + + """ + kwattrs.update(attrs) + return self.element_classes.get(Tag, Tag)( + None, self.builder, name, namespace, nsprefix, kwattrs, + sourceline=sourceline, sourcepos=sourcepos + ) + + def string_container(self, base_class=None): + container = base_class or NavigableString + + # There may be a general override of NavigableString. + container = 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, subclass=None): + """Create a new NavigableString associated with this BeautifulSoup + object. + """ + container = self.string_container(subclass) + return container(s) + + def insert_before(self, *args): + """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): + """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): + """Internal method called by _popToTag when a tag is closed.""" + 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): + """Internal method called by handle_starttag when a tag is opened.""" + #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=None): + """Method called by the TreeBuilder when the end of a data segment + occurs. + """ + 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.text or \ + not self.parse_only.search(current_data)): + return + + containerClass = self.string_container(containerClass) + o = containerClass(current_data) + self.object_was_parsed(o) + + def object_was_parsed(self, o, parent=None, most_recent_element=None): + """Method called by the TreeBuilder to integrate an object into the parse tree.""" + if parent is None: + parent = self.currentTag + 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): + """Make sure linkage of this fragment is sound.""" + + first = el.contents[0] + child = el.contents[-1] + descendant = 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: + descendant = 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 = 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, nsprefix=None, inclusivePop=True): + """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. + + """ + #print("Popping to %s" % name) + if name == self.ROOT_TAG_NAME: + # The BeautifulSoup object itself can never be popped. + return + + 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, namespace, nsprefix, attrs, sourceline=None, + sourcepos=None, namespaces=None): + """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. + :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 + SoupStrainer. 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. + """ + # print("Start tag %s: %s" % (name, attrs)) + self.endData() + + if (self.parse_only and len(self.tagStack) <= 1 + and (self.parse_only.text + or not self.parse_only.search_tag(name, attrs))): + return None + + tag = self.element_classes.get(Tag, Tag)( + 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, nsprefix=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. + """ + #print("End tag: " + name) + self.endData() + self._popToTag(name, nsprefix) + + def handle_data(self, data): + """Called by the tree builder when a chunk of textual data is encountered.""" + self.current_data.append(data) + + def decode(self, pretty_print=False, + eventual_encoding=DEFAULT_OUTPUT_ENCODING, + formatter="minimal", iterator=None): + """Returns a string or Unicode representation of the parse tree + as an HTML or XML document. + + :param pretty_print: If this is True, indentation will be used to + make the document more readable. + :param eventual_encoding: The encoding of the final document. + If this is None, the document will be a Unicode string. + """ + if self.is_xml: + # Print the XML declaration + encoding_part = '' + 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. + eventual_encoding = None + if eventual_encoding != None: + encoding_part = ' encoding="%s"' % eventual_encoding + prefix = '\n' % encoding_part + else: + prefix = '' + if not pretty_print: + indent_level = None + else: + indent_level = 0 + 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, **kwargs): + kwargs['features'] = 'xml' + warnings.warn( + 'The BeautifulStoneSoup class is deprecated. Instead of using ' + 'it, pass features="xml" into the BeautifulSoup constructor.', + DeprecationWarning, stacklevel=2 + ) + super(BeautifulStoneSoup, self).__init__(*args, **kwargs) + + +class StopParsing(Exception): + """Exception raised by a TreeBuilder if it's unable to continue parsing.""" + pass + +class FeatureNotFound(ValueError): + """Exception raised by the BeautifulSoup constructor if no parser with the + requested features is found. + """ + pass + + +#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/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc b/lib/python3.12/site-packages/bs4/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9293ea48d046d89d80386d8a64b753335bc1002b GIT binary patch literal 33711 zcmc(I32+=&dS3Tj7|aZ22KNm#4gwew2M>^mGHp zU(cvVa!ocE6=i=Xo3i)DomhI=!f~?G!bv{S^*-7{*H7`HTl7TyQ{|)OQx&5XQ2wOZO{ruMVg8pPI017_@Y7F&nddTEClyHnaF zHeBw(i1Zm_i;>xe@w}w9D>pPoYjijA?2&d)#&T1&`}g%IBQMX*I%l1M#?bQ^_QO(W zCLSK2i3sOoGtPy0V?v+MK5|JC&X38G6z#)LXj+oH72&uXmZD;N zzsq$g9-rPfFmUzi)&4PgW@>7-e=IgNpv1=GS3|NiU{*lo54c?BvsU4ZA}K;hn2yX$ zOoT2*B;lpgr-Ya+d}#!~(;-=rWFa2Y?u3x5XF8@R;fs-3AsoFDiiE|0AjZaKrle>b zF~}Ga;%KQLOVhHXAT|^a$D;j0eyy%)Id&y1qUI?nekmrR1?ceES=>{f!(uo#r3mp$ zp|~&=x-1FdxFCg;S!zf$bR|3yic7sNMGDDdmwMT&Q!z0-j&zI^Ycp#E#wNd7;c862 ztO!@b@k@GT!mj>3tbm#6e&J+X&u~$S$I*_$0~nD@@u|q}Ncf@Kv6F*$A)hS^bs!TzWFclCdl z@Lj;B`Y+CeBd9PaOA}!Q?N+PKGVnhqO-f^!%F`kF^31eag9XA8#36+i$%`R5iY}_v z^q{>lf)#LBD-AZdB`$^XJvtqsNX9y>MzI zc;!)zU3!Jd!HRK5FbXhJ#` zkyweR}^RqIG-LiLVFQ_~TwM6Cg11PI2ZlMrshkCEO&^k#RifaR=k744QG@Za&G@w{!$_y6J)k{(|3mFVaUc%&I zQYWYoqytM#8;Hs!;381#>l1)vE&`>^3KylZ5XD7xJVuLC5p)Pd72znu9AhzktYUIM zD`)sUo9YY(qoFA&7*t)sAkfTAgzi1T;OjG?h@Mgs3}OKWgYR)0Gy*@oJn#b0rZOOj z%0wKT9in5jq?Dt7V!P;kg9l4i`UVGv z%!SY;x)Hi1kLY=WGZ=u;GCY^%JbUr%&3X0_3pDB%{Rqp&60s!AQ8;cF%Ta!X*dbQn zw-UdV_^lGb=8RU0)d*`uFgK&MVlBctq}L(6UhEX>@!KFaAhuE5A~xcwiM6;(Y{Gpr zayH|)MFej;+A6k6f+(OqTZ$X!#kMy}N83`|HGZ`HJQwJetr)J*Z`e3)NDzU*1P!sw z0Lz=yp4Kf*7T5++V!U`zt&C9TlYF(pnIAGFV80YEvsf!oIb8v^DwRIun{ z7isM?%o>_^-SmXTi5Nuo-i50Tkk)CRBwG6mKUB~T6UAJl-0 zA%&O@$~YbZ1X2r7_C>}|u+kYzqtge%IDl&)3s9~&>u{8Hbs)E&1~Wth#fmToOQTuY z+CmqRgf#&k=xRt~VZh6bOR^LN3J30rUj^sK%FwW!f)ZlFRT=;cQdGLCaa?-ydWi#} zag0jn16B;9qTp7dqSlp5SlH&60}Y1IpIAiFhYPDaCz%o3iv=T6FfTb+b04cg5Vq24 zmf}4D^LZSN>CrGjK!X56Be}y0MsHS|drV1A6KICP|0x11A|Ql8bQqD-SS7Ot@LnQN zGde2A*HcU-V`6_HYd2 z!kE!Z;32`+Pe;N)k2JG*iA`;UF<3eQ3@dE@1?5s~CIS%F+Q9gFfC2*%OgJ0&8R8Cv zZZ=>7I^0ccYc!4my3yXe7}k_->UK60G3@PPEDCx}>@+2|>m?W~Z(L)BqhlIt2tHc? z%MhRKle8J6I)t9krNRjcru}F+H3h}+HPDUGuuY$mH;G%qp-U#$+U{WyQjEl#h zXe%XeDm4m`aJ^z6q1RL!G4rZzJfy@EcEMHZDGU8AP(FrRA4p;lq-!+V;W$W@$t!?m zj|nHcr@&*-@X;(>lz_`ZS3=dM`?sLRUZ$jB+BgnAs5mR;rmvXN<2R zU_^Ved>geY0`w|u>7k!sbY|+JBx5Xej87ySY4k(OG@xO$2`MhfVNuJJEw2|N2!u@| z9TLSbF|z1NNS@Gy&hBw3gtaUw2XhA$>_&{ek|(SX($?@Wad^XHP7pNXa^S{|{~K|{ ze%%Re3_tI@!pU{>PLV&z#SNC0n}pC_c!`$x^>k=Ntmb>x&wbC9^Pb&&&;GgZIda}B zG2bis-1nS0@0FVGm45DfrdEjOQckc2?l+usrAga0UMVHrO|n!3WAnZ~GIO@1JtxI0 z`pgu2(k^$$4K|BQ@^Kn>b{To(+Rqtle@-9D=j_Q6)aBy2c&S;Eev{;a*_y0#uB2to zom00p?lIrcTQ1v^);W(@K4*EGQrPTl9sP|<36LTqzMaR1=AvV zlH4T8K?T>GC0=PnO;#Cq+25q)o7|iy>ABtibbJ0MXZ@C!x(x?xp9bamJlkXVzVwESI~I<&y(OTK3mq+~+Ei6_Y!%@y4B4ZW3oKyFFw}EvJV>H2RlvIT;*p&Jz!|3mNPd@R?>XO2aPzf>4RoN zkI8e<+Igp3{n_P;Ek+M`E@{PzX*9|zKF7$Bg>i~ywMv`xD4&L{9Mio=HrKr_s!C6Vq22G!YfsI z`8MOEF0q~R$?cd2k|hhSq*;9_3ye<+xV?I~c(&Mtj(GUIq~NDL7nG~`0TGSnt*}gZF(V_*SJfXc!q}v zjQ3tNQnJ6Xrk)qqIe#wDwj-N~w>+?zFHmI-dm@>&_7za~zK3w9-Ij5)k%x#6>M zbG1l)*+><;#O|UP(8MJPWHm~F4FmI$9U*!uHs-;8qx{+O4lYhw1a@_DvW@3n<`yhB zzI>ItW__8v$|L=yob<-Inq<}FD@IKAH`@;?0r;@yCu?pz(0;G-MrmUf9%C?9bCnAO zLggS~M{-#d7s<+W?E_mDngYW{D#(4p5Xs)ee}dQ3G$MVBRn}$XTyfkiLVuYUBS>_N z%_Hr#R=!z-!A=)Y(|#D^UlrY{cKud*JX5g|Gg4 zPdh2s+cid?wSq8AR$kyxSY(k2SQY-eRCff3SnGUx?ea$)gl9i zQx`1^5ii?M$j@V!3|TGrbRaN`mEx#40u%2=s+cT8|(UKrm}XCvw(% zI4Y9-Z*<4Vq4(Y_#Z89 zvTf5}(iGn#P=U~TFEHmoR~ZvDvEImzW_N2UJO(Qa-)m!&v&6}kp{-&vkzlUa>d_QF zx&0!<5!bP`3GD*uC=A>|9iYY`s-SJzo}hZ&@CtP*nHDvbL71d#GnWq0m!Te*z(|p` z^df8-c!cVVG+F@Xi{VH(j+Hzk!@Mj(1%;-Y1>{QYz?x&yG?x1qbgxjQ374f=7l@Tw|#V*}EZzQJAWe5GUERXNz==6d^#M40Gg-kl96owEXdc zb{=-H=@8k>(JDu0-X0@FJ#-|)gh^Z~FUV^1M+XR{yG!e)*J4~t%HIl0R7^ql0EGdc9;q!x7^=KN| zfiVH#EaD8>3v!y38~uLbIQ2sltCfy-(6b0s@dTZ$Vr|@XE3QD6JgDno-|JV)G&bWj zx(nM};@eMbSYEy_(yS4z;W#-|=%k*U52(jPvdCM5mMj5FR3dwCh+!Y%5rKqQo6trD zmB+t41Le0e5=(sJiEYfw_eI)xo+=PtXEl7G;q#H!_lTzS1+GyNi%)J`e$Fq_ydP%> zvqlmE+d^eDX4(;E#{R_5Ke2^chA+~v^KiK#-7yg)fIKW5x+b%mIOA?Mx6BQP@JW6m zamiW+7@hjZELpLGBSDH3OB+`Z`~rUqqS?F!ip;^!Q3UWw?w8K?orb+VG1UI!j|dDfWbXprgdGK}GDBDG2}^&w zOcMEfyy}9rV(fARhKdM0Hk>-XRa6_@sTD`b>4?~)SoB5RE5kY+n})-IGZqn<9ba|A zV5Z$UG?JuPQMMplmq~V3D@DBwNemiRN6kZYGv`?$>Tx z@o&pi)-p@B>SZ*XSX~UMBB?I+%s67zLp0-<&L^s6d2C}M@-hGm$e%o|M8Uvc8Y*I( z5ZVrdhmj$qnZp>^;EU-*iz1qI>3te6MN+_^UQrBr-uI zd25hWAs7r;5;k~8jIl8G-T#e?AjU8`sO}uYgz8`;Dywd7Y?$TdyR@d{UDT)Fetr{^ zq0`YkxX7cshUL^49&%K|64xXIFalG|0|Ej<0Zq@9g>nnjOhBQ$WR35G1V_dyvm5~r z7j$ZIpt0a0SzKc* zWw4N%gI5s~5>ckC@yHYvP{XWnNs3H^M?3?^Gv>U7)_|?Uy6u5kl<`5@l)$2#u($-~ z*AWL8&P{$0M~8X6vs#gD^qDXO-~SU9TMhKEicQ+-3HMvk2u9vV3o zr04TQ7lOdWXv3_cmIh(N8i%3=i}WjGT0SPrF}hEEuC_fbpqNmffqnu)Sz zxEX3w;4CC5@*(P036LsT!R6=a$$oJbY=G(w>X44s&&UzA!FUF1p?UqVWkg6A=m+W~ zFhzP6)uFwrmdEtTGjW1iBQjStpiWY?WaC@GND;TLz_$+ijxlDx4`vxD)lT(d_QReO-E{xVs1R0pIgjE-uflt3MR!4k;iZi`XXDW^PvN7iroS-Lwz0qHws z!o>0c1ghU`w=sU%o*3n*WqO(>;mM?uRUOPPL{>}m$&^n}na3%~Iv$Ov4(3gus4i`( z0GJiEM45rWq9`gap<-Y@IcS2qqSWDCLmIeX+~~g=IRcbuo?eNXJX~YaAkua!b3nZy zGwYK)=V@MYq}^Q^f6Yp5&x$|rz*F_+>G{*^7E5{HvDI3(6?DeaxHz76cOuWiS6BSq zIavlN%kIz2k}c)QH9bYe?4@F=7Ote-%~aF16~AECWG%0KY_*luJ@z(;Bd8sQPg z*Yu`4_GCOwi;)d0-`SgTtvk5-E+o|Vr2_{to`%IUNZ8t!D*M#IdFtO9U3UDsb+viW zD3#+HPg)*xT-kG$Op}m0{jjzFUhCdp@BFo{lx@}7gyuALtT^j3O`R*w`cK@|3lnd} zSKXZtn>tdbGc^tKCo*MKso(=&{bJ8MM^=43$hf#~!3pBM;%j|p*V47`9K1VpuVZ(n zv30F+Z@O{sg7ZOB?^@HYbknZ8FRe5kLNUIk6<_Crnl0-VzIvE{SW|!N(#=bY*Y4N! zd}_B;2R5wM+O6xHwS4QkpYv3vp82?@BVE(CG>#y3Lapq`RBc(V{ne)Tn(kHYX7_7> zXVdtrdiLXrI*dnE8JTuXbVEs*IP z$h3CdN#0K4?s2KTrDoyyV-Hu|eCzbh)0w)awYt6Oy1gInN!JZMsO$f5$N#Wft7|@W zasC>{4BaeS=eX8at(dm**Q^g~TT-?go=i>it?11tZrz#s<~xnI8*%G>(AfG*duS%> zG7X)G@O|R0SlF|;XVu-FscyXW%FS24{o4HT2W9?+nxB1T@yNZh)(7Q{i^tzNwpzaR z?%;=e{>7mORV|BG-ceSow%t8~=hN#RuBvXWvMXKLwRB~*vOnXmTJsO2{R4L$tNy1R zR@bInnTpy}3C7)9@#d@ZudbE#q|16T<+Y2=EBl^bw{qUV2FH6(^N;MF(&|q+zHA^h za^sc7&eewPcRN>ip3an(t(NxT{j%~mpPPT~#;J_Q|K_RrQ)`}{w5MmeYSq)fZgG@V zqvl(#o35YtWH6g0AN#A^ZqUX_?sG^vruc za@K$U@e3BNt{uy*yk4!U1AAIt|D(qVo~!D4gqP67hBbd%+TXU+w(9SE;II18x*gH~ z^O1`a4k+7!hW?z&p$QE*9=rpMrnPka~Aj2smRHyp6aBj}Ds;HGgGu*lc&quSv#1xH5e zogipL!vU&=xI|T6r~0+n5Jp`gQ#R;@hbwRVdE3Isw_S@n7voDK@4ou>tM~moQ}%Ty z*U`P!zBk>zH)UUSwq|@)DG!rI@+OTYj7{1D+}z5WvSMB`@9Psj$BR6yso<`YxFdIl zuk{z7wn>uv3NEECYgI1(mQfFtP9%Q<(=S@+4*A^$#o^JgQX-d?a)~z9IxC)S2k|bz z#XihNUUd>DLtb(k<52~Va3v0|W(;vbo%akl!aDxD5PY9(75n?%(CJ_#;V z#uV~m-t@t@92_Bd+c@NyL_@(O=A=bwDx;|7I`@gkzfg6n`DXKdPiui=c48A`Bu*yW*6>uHv&* z#IL3XIZe+US2L);`R(}kB&7PFL_o)Fnw zIq86#_xRy}Qv-yv$fK=ZwvOHOc$ET$f*Aw`IM~_L7lH)%<0pbdHti<~B;XnVka$?v z3>;tf0E~`!D{?dP&e2tO0KChc1Gf+S(xKGRpF5Q)ufEmvttOE2rX3*vsiUAz21QtP z)@PiaH(m2C&|~u^iv~<=in`3{C$P^$1AN@fXS!Te!J(tbweWT|sUrhx+Lz7YUy^dS;)Ys#jPl6i>Pj zBTz3^=@he2kWPQ+_8r@qs)W2H*(NCvwwWaO5Ag7HC=RnEc)r*~ z+C@x|Xo0U>O1$4zr~ z9Z#~Iv}jz;C6;8p_(bOir3NE_J(jLnd%&Ie8zzJIF^6E%?P?ni$smBuOl18rK!NO` zVQA8(ST5#hq3uvHr(55tf;}lY;PeE~j4Vv-(|pbM2`^s4UPt)pLN7ub12F*_IFmwO zle*Cwlx|i?q9FN1OEAAeXD~Ctw!n}Hg*H2yEzj1)R6Ih!qR?EjO@s-XFp6 zhojharEf!GJ2;P5x=-BR``#0Gzq;x@vFbjNsjOQ( ze)Aba__J85pW{J*s&{5ug}-wEk((W)xbC)Ho!w~+H|k9O2E7=Y5VMV;GtFx4>jwY4cM&^v)O^! zEJZMzRdmeRqh0g-Bmi` z<4G+2z?Fk19kb{&^Fp)13(Xy}VtD@nNYlh#xmeB6yMGqqWCY!GYtvjrvZ(C~qEVwl zvo&8BmnJL&uLkT1dq3$iVMf3YLg;!Ej{a+UT>M&GwSnaC&Bvnzr3{aD;U));?lVMaH%oR$Kzk?RC(J939B{_KBM>}M5b?PpRsRStDjA|NZ!zy(3ZZnmcew( z;N7p>Z#j@UlNmhpr}fV)zrNUZr{{Lh(w>hRwyxAalX?yTs6xv5fC$Cl(wSB7;HrBt zQ`h$y@!DM!I&U}+`=7NpT* zF{**miGmee2K8YjeFi;X=|%Y8Vz?ePnYcb%-Q}kMMZ1w!o{cl^^7``+uZ6!cILpuS z;5NT{Qr~`S^4;cceV8m|=}I^@qky}G1gkS!*xg5ZIby;?0&|!&QMk5^jMQaM@S4;0 zb~&1};XtV-bd!{g{eEOkVkV;!$ceNkQ+4UvHc_N%V+OCXb7#(s1V@HWFcTlR)z~x= z-{YCSO#!5Enxw{r_C#gDf}twbXl-bU87NUo%Sgq#=4?ni8(@cc2x*!<*QcHJi=B72 z-QKq9?9yXzcr#En$L3>e-uAS&eMwyF+MDj$d(XR`5r79Vh6UFXKv&O+EpMdoG2bg*#%C$sXiEf2Fqa2ud4q(X z*u~PwM9Z%1rYQqxk=F!Sme*v2*ptZ&u~JQy4q9n$L@~-H1z~nU(n%GG7tfJpQp4-I zRu~L=2#Q;#J0|qb_u69V^t zgj7fdPOg-J_rl2H;8NAQO>Z|X$JYji(gQ=Q&cm6ST4r`IR)D@DGEFf1kiw~f%s;*i z^pT{v61u-rO7YE^z5)8(n(6AH-;PWt`)wn=6jsv0$Vbiw4fai#L1PFe2og5lLIC7m zQdE4+*?@^{j74n=#gKVcX_>t5I+;xS)AX8b#>GkaRO=>+ZZlm~>7~ zq56`7fd>x9%!6J#nrPD~z(D~AnUJ4{HWG9v=)?>A2v8K8$~fj2o;7)u^)MG`8D^x& zEF59T{{$Q(JO4l{)zlL_p;mb6YL%Ma7393jc1<(G6bieLZQlht%R+BYUOV)*2}Rno zsbYOZ_X(Tbq{urpfAR|_EeCdo0~RQY%&}8TwR|L@g zh40pV_*AC0ZTaQLcB|h7M}Sh-W<3WHQs4t_14eN|Ts-zSJFveQPuc}d#gC1sfO2xx z>P2}_`B>7DEq#WQ4;DvY#q_VmkR#qUNx9KxXdsxSuPDEo+d?S*1D0X=7+!?3s}ess zbN+AXk>*@2FC<|Kn|}zD%qr@lElZm7j#_GxxqL;tzp#izOa7D>rn{k4Qiuw|qqC~z zUe%6w22!O^tykBtRrRE+de*9X(^b70PxZnqjP2DfBzicHf6d)>&)v2B^zZo6+fKkG z;*RIGXRQt%5qs9^_ND9gF}H(lY5%t6!|**=^AD!|gLlIyq28N1Nt*k5c&%t)LSSKB zbkD$K5I0PC0caLp*^S|IR?s(?G~d^AVVL>EOL;`6V4ug2L4Zu0p|M6;)DYn1KSo=i ziDc8k!}HD9SR(&tBxveKbJ4kIb!o$$sLP*(Y)T^yKW!Jr(sQyw52ULC%RTq2cBM)` z_SG$x|7>!_*|?btrcol!V51H}u31AgN8_g;to-mDW}nv$1Ryh@j^-gnx#tTFojs|! zV_wK>>IJqZfm~nB-EQXifIT!0Ap<@H#zpZk0_>sSW4X(~g zp2e{&uY^QnUZwqciS0Bmel{;)|9tH$?JwQ;zP#dm`R_dw@_m$6;C21k9c3eje#)zO zQ~px~dA;%I4QAO2P3pO6J)8RS;(hN+E6$fT_r*lh53!>DKFR}91^)Qb7ThJ;iX+zI zrCftI5V=-}e4-YooLR>#2k=xJvCF+=vMoY3J`IW2C_MB(qR;w*n@hZiNr#u9!)uc<83*G zih|i6`h%(YsWoqF+S_{H+m^Cs+}=0$&hK4_uhsUZ@#hAK@~?T?(w?@Zj(2OW zt!o*8$HAEllo?;0|LTgfMO$L%iFuhzjQaPaCHA!~#V5CzilZpEViEzSV=KbB{QcfC zfy?X;7HToEkSoSlF>M_!_#)s~yc~1ETN6-nm<#?%br#VO7CWT|Xooy(D$GupH=jEy zU!>+Lvsm*6H8-K=8Z*MY`MjE$?$MTb=E)0IKOPKP4|Z5w!LlWF3N~tLOekBt0S{BW z$UloV$X6&}%b2ZT(%5Lrm@%exPf)!m+A9A~l$$N}2e`{y-oJ~8La9U7#T=mZO$-%S zANW4|-+X5NnH6|>EKUfdYXkS-8T1)ALB}8D3%pi)AdNpa{IP*UG;FXt?b&^IY}K>R#57vY z-RauhY4`3NR6zNcm5)5Tpv3g-*}ULQp7swugQm(KiF`3CP#g^y{4Nuk2%!{QN*B4X zkfHW903n%tQBDygfJ0*V8x?S5fq9f2V`7y{;V4Ku>u@IMoCU`o*~u6UYGT%al8P*N z97UJ?wu+h zR{0q7xzXCJS=Rm~Dk@yry8YofTG{^%=}f30VX^6+yD8JyeCMg#Pc03ubquCE2JbiS zPMw0xL*DAU?^W*3G`B6dGWA;?VJAV$!ceBRZppSL>_`hc?$z$dY}vZ#`naxny#$G$ z;-wat(iW5H+HINcZMQuSySFZSfJE9lQb$)k%_Lt|z4_H|d=(oU;_uGAJ$Juj_lM>8 zI`)yE>bvb*tLwd2*K0oXr|bHcldE+Hu%+W+bK6?;&UEw6yNB*KA5IN_>~C32-uL&W zhS-X4Ps4k3$48zm>rZ1>ini8s*B?n_On!YsTkDqVbWj>13omla_?i_5v)Q7QBbPzY zv%>uXN|HGoIydK-EBTzGoOTu`pMYn+7$Kf3L41)lI_F5*&|<#WDg+j>6kGWsKf}*C z@lFvF927M;HZSQ&mb_0&eOzEiz?BDec^$mFr6?ILwgz)q8mC-=QG*OncxBfzR;p&M zJN3CM6~+%7KOjxuJaV#e>rxrTX(tQhh^)f~)x3e4HM4dj?o zK|PsGFt|BJcdu6MFgeUjXK68Zv*BGj92<@g*Kp2csiqJ7E>%WbJAp#f$|8>1@_(m> z{WS%DOTpjJ3s#h&kRjGUI=Zp%FA0=;fV;XW+L(6!`0xWfTI=3)>t5{Sc=+_e73aZ}2f<2h_i`^;&qHrju42zrW7C~Ow-2RG zWp7%AwbmW!)*W~+<7-{ znLMDr=Em~D0+UNbYto+c22Mc?QhV8jG;7vW$)5D(hI915H)~hYn)Q}4%sO&2>NYau z{L1BsFS4LT)3gNiWKG(#En-h*t#EU8;QTblb$-^GbQD8DU+X9ypIatIspz}ep0m=6 zjPRV}#xwA9>OD;#+F)MR`fAdQKoDcGqm|KN5^156k3ym)7+@0Z@Nq0R#uk4{QEV}> zWo53YoR#knf@;R$->hK2gb0U3Xm}Z2wMY@wK2AGgu%G1;KEt58vYB9!1X9563e^FA zowi00>Cl&_Mqt+wvB`Zg4=JQ*Wl|Fv2VGuy%YDN9yp6GY@MT*RV&irk8n8ulU-RuHL=&f9rJc6VG{7?juG!LC=U3frOVYd1Uyf$#Th{6a()9y(?f2{Vq@IJD zKu34VMO$s!yR_f(%9I1n02yC(>L)Y)YV0~&EALE~cdnFg&urbkw)J3o>%j%rs=qt) z)PV)Zn!h9M?^yK@QdVq-d+p|HspIQDxC(5hyaak|0sn+Xc}e$!sKSeBeLxrBWNG`n zO&kW#m+J(Xw2PL63mPc!$A-HhxNI3*wgWX5<5Eq&INO#i2daScPTH_9ptz5MgS1^l ztzqdcLa$kGIzeSiicxHqTAj4Yew1EhF~6@jXb#5#>TUSUTsLrh2IULbL!=%&8=KY~ z!ALR0Z0&Tc8aWa$`yQQ?MGh~-0TZ2qsgX7mnS3ualx(NFVV2dttbnp|tY;_LVfxS` zlc^FPy3pLwph431qfyb?Yh)l}XYnxQvwlv2Srzn2({xCY8KGNt>8*VN`k^P*P0uTKNj^4f^p(*=t zavxp;Rw5*Y?e*vv+P`_E&CUok=CoyRE0phB!L>YLejEx| zrGzB^6}`mAi&!*EP4#4=HlKen6YdgrB&iA5u?6~tg~7GTE$PZF_uN|^dMd!MtT>xK zsjgeBy3>5S`F=Gp)r0byg~Za(&7WL)eYyR9dEX<>S-Jz9e`W1jWly@YXRWd~UD>-l zvRb(l7-`+l`LXM|0|*Iwj>>M9Er!y50onc7sCLJ3+wm>$(%$9QfA!jX*Y0&Z^>Jlu zX4}B8?tgFp`v+I5dgy&fDeQea*V*&#{>g)H8k);RDn!j0n)@3K z&2hyXK#YaWbbm#tqx^i1I8jtF@V?HVi#!w7cL9MEDW@2^Q%Jv6EN@XXn6w$32*h;@ zb5<#W<|d2mNsE(lhF#e^qb%m~RYbc-qCR*EQic@K%^|jkUQQEVKCr&8w;!U8^SUMJ zWGK5x{;!oMoyAKEnmwZ&L32Ein?#6$E17euIn@@hg<3H2M{+;oQE(0o9nKbF4l%l_ zo?LC&2dtiq{Dy&$3=GV0uOT69!f%w5In)@q&G3UL_8Rj|*zD-C*-@gPx~!+fkK<*M z=Sz}<%>?4;=(9V<{*z4@*Yv{pzv)-PJXL)EKIY;SX zlyrwVxRt_=s$fes?et;9HQPyZ2pHW2{m{+6+GZ_<9TCWmA=D^a!2viBd~pOEsE}FA zd3fTV*T0XY9f_)cf`e`5h7S@-fYTI_O@cV)D~L^COrwQU0nKs>8_Ld0H0VF`yJ7^7 zPUHz~I;SkVEnTw)lZ6UZu@9qw;m(6TU0G($@rrR}$3NheNoiG}ER+8NaiBWvyH(^Q zljE8}>r!)JBpViUCDfz=QfnI`Ia8SbdrBu7C;tHjzemCEQvlwIlm9F3ipbxpuRv#? zXwIi)19biEO>vrPci0aik_@~!C^lndynpf_cw=3=KdPn)-$bIj2h|GEZJ*4g?rTpT^ zTJxTC^B(5zg8*k^_*^L~d4%{<`!kg_sppvatP>}(thl#lcJECcUGr>7d$z24c4j)e zbunG@aD)oKKI5xM>E1#>ZstWi2R(0m3Bi-xK=P7e?-7T01e>rn!rO= z74r6qFTV7Vvum?ngvOQ4#6H|S$y!;|aFL^~V`G2fbH^U1P|idzGin578hzV^yn~4k z&YcAs9;OQ?lNIintZk#5xrQgzt#_Uh67@xw6(!lxIfckLlv_^tvy=b&no~$Sg{3NE zK#r>=*gqS_>1JajWg3^M>s>^Qb|zsliBoQZtZ9ccnhuH_2kQ!LF@_VHXkjK%Y$Z-w z=%WX7c35BR?9Kt(3zR5HUa=x?3A4nMBpulk46{DEN$%%h<$w<^V{YE3#e*w>|6m&& zp%}pE9Q!mBL$Bs$G~?_%^I&y$#-PCrWObe<8Yfy!C|dh682R?(ejIGGcm)|K9tU5K zL*3&LYlu)_F7Y=a&p@idzEQ}7TBXLxa?G$7Dr8_saT%K(?q3BKc_v?uBgJcF%v#z#F5w(scQj`(K|xtQuHV3%LToXG@@&2>O5lct!;Rq^W`^v7PY2oNXS*CjX-Gk}sXXlU8!9>SD_BCP;6b|ob zY=Vl|SN)d#t*PaabluY#Pu)txw&j;UbmFkA`ola+t%x+)@@wJ%gz;BE7bIvFP+M?ZP~C(R(so{;S#sK`cZ?|Uj9h%*sCEk zJIX(`xa_qXR@|-A-Fh91YqVGEakyLG$KsmIINUut;I=nVQH|>Y*S+oT$iJ(=#4ZnR zSgY->jef7aenYU^n;v;>_EG+k$7X*Sp~v3(sL5j=+-MT)T^mRF27Aw=yjkCO9 z?_591bEo*Td}h~E8`f@n<;FSQY43hiWwCdoV;w!2w!NA9_T`c9*_-VIAQWok41;4{ z1`ggJASnD6Ci_05s`*Q!<^9+}o@;@SvM>E=$suZuQz0y}5VeZ^NK^n=%dGqrESh4GO!wgc2S zRq!DD-~^DlZY#@{jFHMc?6Y5f4%M?A|FAsoru#h9I(@C|Z zuE*HY=3Vs)OPy&ajyYR#4t>~l-#Mfq7e`U-K@E^=sm*l=au+7+2nD^=1X4s`VSa4e z{ykd>pmLp~kd@53Jce}h!b|LW(np5f=i{;Iv)U&c6331iCyZ+6ez4Db796LF^FQb) znVBg2>Io)^to`BWjOK_-RBO2CS7uwNV-!41eIWRvE}Y5Oj8E_)>5H^nehEb+ri!(g zX!{evh6K!~3K;F}|b7w;K0gtg`%^^BA2%F&PJ(x`RReBj0!+RBe25TuZ|@7O_v6zN(DxC_`eU z*s&Ns!OA|UplEyCEHOp3$dddT)mBO$OqJ*>0&H=p9;5hhbUdcor$Un;%LJg>rUcT8$<-79 zi2%4MsH1?)5OMXj*e38j9*lpjM2f7FzoyQZC1MQ)(@Qrv=3GvlJ@`v@dy4LA|iCub2EK*ZOB%Df@H%8R!2q&Ij^g zD_OHvrmdB0*7~%yesSoYwfSRLHE4A05jto=dsJiJC~k+%;D#;cht=v<`<4U#%Gjqv!1Bo9F^BC8E5r% z`(v96QH#xwIr@FvVBt#_0*^WTJa*b}KS@QDLhEevq!Rb6^?zpbe(bJWth`fyyZ*kr d$RPA5|fyV!olR?O_Mc+kX8;*B_TJ3I1vs)xN5iKnX~pdyF1I7 z+1P6taH~jlD%upOQo=(Em0A^)7y44c8&7@d3sEXzwtYaQFMV@jP%BWSe*Zah^Lm{N zfrJW1_L-fTbNw&h`Tl?AFWuc44aZME`x*biHck78F8m|q{aBjCkMo+TjcR7hjF)1g zu@3bsJ{pf}hcq*JMl(~q?P5Z;7;Ue|AJlkavnDo;CQVt3$0p@Se&_0JCN9R*ubB3n zhMLLmCtu#K&Qq}|Z94IsHWkaY%^W;ZarwB=UCXX8!!|i9+JfyL8DS1Dal^HR!)lII z8D}GQt;$9$ewwp^YQ1U=F$Z@Xx{=HOiv}B>IdF1MTqT8Y&2yi&S;};B(BkR zGlep3t})y3qyy(P&KWancHrEJa|Y)w-0#G>8|N;Z*WlcZbGF`=>uDsge*KRS;9gc0 z_H>=uW0Q~t)5mpM19O+HvSf`3UDS6l*Jh4Yu9mD~omsAvVK}0aWP48>$!Fy4y~gu3 zOK|iA*?7IX6T+^IPsrZ$hT|~Zb%ixnb2)=UNDy=@m@WCW$iL37SI#!Xakoxe+Liu+fcozkxO_oBK<_3FB3E%Z(^BGm_7_#Piw-cVH+ zdYR-q#P*g-%PhrVQxnM95@ea>CwO;`YpXLU+Q`9LPn606! zMMTG26}xhY#`_j^XhpZ4Y`LsCrjKhU9 z$W3R=s_4$(iMlbNi}DF!6TmowhirSi#7DR;jEQG0cj9=>t=8OqwpoX6ok2j&V72Z} z*p)}}-+p+|v0T2>o2WB5=Ij~-Y~-u;M!Hb2DwbO)%yeO`dH?DjnoADFoVIwM)|H*# z^Y?XI7J7cTl!&iiv#73}?$WyMdav_7sqMltZTIw^n?5^z?xnLYU8r5oZh0@gMRcK!5vURu zq&~V{I*kG<50MhMIT2mAs*A>+HBlRz#F{! zSbkF91gS?QP_jTouy(^9cZ7q1Ilxg^vVpw}?Fnh8fHHFH zK}WK~V6zF}o5Y8W7wlyR)8SQW6!ZsR8RzgDR}>0t0{E}930|s#oG?z981w-3IFbk! zB{y-QHq6(>Mh;TNnwKIwBF#G zPQYRw5I`O-?xq@^#@khwj=b5dbK&b;I8UOD(~DwG`(&NgvHgQ=--X@_Q<9P_VN)(jnp>PEb=4E!aI z7*qg*=0$6oD>_Vgiv!zjK=+~pkyV5(pLzO-lV|(t%;ZHKMjmed=pryv6_`Y*2oHt? zVPw2wU@LIBz=%^55Kv$*=mhLW#x_JX{B2<6Vv8m0y+iCEojm?p1*MZqz=X*?RA97i z*&;*olJ_J(kYiF_#;GY?&>%;7eaaRlHn4HIDXli3gtO)21>43ohg0?-d6(dU zMfjQyOoOyU$B=OARUV1;@&T9zf`mtr(Kp(??!-o1y_u50DmKuQOrTV!k&@zUw5b(4 zWbSe#wTo@SWLZMl+&_hc6K?3HIQnvRS@-l&7pCL6> zmJ4DOaM{oaC=N$p<3;3NP-oPHAh0HaPY4`3b)bZzC4k=w(<0_284}!0g%_cz0(526 znr8<=c$(=A0xljpiljqcee46iqeS^qggNJxEfwqvAIJsMTg~o$!}|tuq!Ta?iEkZp zqFT5;sB@hWL*RiG%Z$Y^OoUlQ$v%8LkTjxVBdT+aiEwZCVJNbh=h2NyrjX=vNrgd~ za26{5A}kX3qi9B&&A2zShL9#~GEVg#M**;TSnGMv2b=y&+5Ql0%-1Gfop^obt=*S5 z4ZVFpLC%4r&5#q_$BCdz$oUO^oY!U(b4XylkN|81TpAC&Ljn?UnWm!^tCozR1(Qb4 z6elzt%X!3XvX}xSrHDyf^yWcWs60}LHylf;1)e69ZRw0b37$zm|gXc;> zll&<}vNzj8RwWoJHBwSJ;sI*VkHR4|P0Q$#aL#9zJ*c?D2)34HuHHrC&{}IQNaAw@zQ~f8yQLyR|EcME9Bx z*Y#aV;k=Yc^<);clux#z$QO{UX^i+eqM;<3H61rXwxZZZ*#rHZ|4U4>eCuoGQS68e z=4FZ$$q&l#`&D-^yfPrqSLR7U`8cl-p^OCNlpsM4n#@(j-zz;;^=Au$xo=?dM&iV; z6if!D^JS912u@yWybvf?TA~k(6lOa4L%yY+#ARUgKDlf61_|*{Yy~*1fILcZt02;A z@CMcT9tw$hs|AtEdEL8@DrWc8)6L8-ib(;!-O*rjH_+`M_GL+>Y5y@wHex>c0#NSL z#I$7?Cwa9O4USumV55U_O|tes2sG$jBIrn7>)E8z zOy^!a`{K4bZ=1rL zcld6lXwmFff(tv=^ohWZmLCpKVjZ1_+;(L)edSmygR`$=7V6f4$=BU&LZ)jB=R;HU z<@_zCj&hN#QKL9=aOAi=FC~(c4oZ6I zpj>=dWwjFOtS)-!8zr*hLZOi<6x7#U_}x_~JYUmG-jnu10sc`ah&7m$pbWbF%tgLn zR5>zwUnn+HL3u7gk)I%vCJ1r`E$~fEz5-OqFv3egMK}KCtNkHFwIE0OaZG^Ers7GQz(#Sm{gJj7j zj*|%6i6JCGj-6O`>{yPS80Rw1>BP>ln@fXmG@g)Mk~q6Ndk(_8Nk}&Necr3?o{2b!si3Of5`LQaY_0W0sWJpF_&*ONz!Ra zk=i9iZkH94V(u~Zn%m8?1m4nP>9w|7nYZ>Nv?n0U+LPFx$bXaCllX6Pd$M9}Pf4aL ztUb2&6iLKlB;5S!sN;F4f)~v6?2^=8$f4;7b?7zHUc_M;2+K6WiU+M_lE+>ysY_%@dv~er zDSZpI&;>?l8bVXGP-+W!*L$Tt%Mt0Qd9QRtp3OhGO1Y{C?zJ>ue4ypE1RQ!IQ zw=YoN=kE0&#HM(<+ygxU#oHNZ>D0OirIsxCQnR?+269>o7;(c=KpQ%g8We-4)=oZ|I+`}_fSU#BN*#@j+^54u&w6X@vm zDFZ#8Z~}PL!1Hog_WP+g&MV$!dr-~(Wgf+Uz}x5cFS~h=F6zBm^&LV||FSJUUw4nE z)#Fw>58mbt9NaY!=pP7d^eKaF?r#4wG^J(zgMov-zU8%b^~?OI`|fE<%9*m6#|pU66ID-LDlUPv#VPA?Cpmyh2vmA+&m zC78Z^GHLl`B$Q^=F$HiPQ)Qo)2Bqiamggna4kR8>O#{ofVsaftP&FTuLg`tm1Kd#g zop<=F*4?q8wo0$d8}}_K-CtQ-wZTP9ZPgtc)(>5`4yk%Q0r$Q;*Y96Sb>#O15OgEH z`%0JW-%v>rbcu7>+9jpy_lK=+f2Y^$GKDP%1HCZOv==LZm7Tb;@zG!Q<$pxb zX~`o&5=iYPNCdND!uV~$m}=3-?K|+e?bh}LNCC5AQLIXWlBgs-VQo)Bs^ml2My>{< zB`zZj@|eM6hu&=K7Sygi7ZZtK@0J>2#64(*{Uz3BB_ z2(lbo&v@h;`U<$TsH!KtMv5~4^RzmW$iEpA-fJ<#J;ot~rpDpVz;S`)j?fY8S}0=^C^inGSqfP(k; zQ@*|~L+^rYM+hluhds{HUw(R`6i;Z}hl@YR&!Q)B_jULB6}P*z)_L1OPalc_O#xzk zPL9rl?pSeqq11Tk+2Zr7b{-)ui3jG+gFc^M)M&2{x>={Mx7XL#Ggw0}z$gtpM_fe` zq{q{qbj|DsjK7ukbVkwXB^tSEimUVLnwWDhr9FaYAa?5D%#I;KhjE0C#ynNlGk;6`l#`(AKK7#mGrIc==b%beFi)o+;cjNZdJRk$JgoZ z@vpBnGI&3-_2+^7gY?^D(mB_*vvn_)O}JlJd}jG)tAnm>zw^^$J&;!*t0Yvz(vYQc zL&?4&(|#AY3cu@$JnYJVs_F@-q?3gc{600{QB)cf!&a!0y?#<~75@<^o?&y3r%!cK zl-b<_eafvUVap-t;$cgV*B=Nc+~e*U@c31_Y1rI(Pz{?@PdE|Hvfta|aXG^2bGlbJ zeNJl(r};511VocT*9|*+e0|*p>^Lyk(dAYBfeu5@2xoB?RK5>G?f6bRVRQ+FR0-JFMKc>CXF)3Ou6&8=ChYE^D)8Ec7dOT+| z?ZVRQzv!P@x^^#`B}ulA~-oeQ7X# z=|toC^y@;oRTIl6HcsX)J88L?TXn(`O_3bgV;h3$RiVnd6Y1lYprZm|RkfqL#+rln z#qT(zjO-K5r_#nt&N<3nG*2|YkajlfT;;k@cJcV0V0IM}XXL+~o_S*R!}pEL=h91_ z=|p3EE&04_+xf-YqDhE-XQAZC;`oen>7^mZ!f8io&`~dDkG&zp|&i}{65=028tCiSN!>nG~QOU4^MRer8y{Z#&j6A94-DWiZ=e#Z0pTPGK; zd(&}aGy~balPxVQoh;orUD_NhZJsLKK2^M9MlvNY9o-pPR6QffsY_4T^qU-h(@}NF zjG(9)De!3di^j8_%X=zs!ZlU0BAB;gG!@n5EPtkDx_nizeAQI>nyE!=DZAR^yGEN& z1TN$ijx|4?HrgC=)lmJOvoDTX5sR!Gi^kKxnE6V<%LQk5PStIjOy4${wC#5@OQq5c zewwkoQDEOvoD#OU`+fefZsllnD;3`mgVXg;5B#SWLfkWX0A?*BA4=9i5 z{<$5oDO3l|J~fdzR5f4cpFi!7kfFZ@1YJK#%FLP0s0n7&OlQ;uGwRM%zEb;g?Q0oR z^^H>*n?@5t={aKw$M2s^TFCS3S+9}CW-8p}tsvKWjd*30X3i(}%1BS1^SXThBd?1L zMxq9JR{7`NmfC`XK+5LMdRfRsdspf$h*x)m%zhyY;$H}?0{Z)K{h9X>OM0I2TmoXe zj_P1W^~CKj-TC~TXB(z!)(0~-{Dm(9(CqFZpw&I^e^oq$%(;shIWL)ilM4m1tI+QF^Xok5bKsR5E;O4?g?p zV!8ae`i*~zSnYCU$3-osdRZ&tQ2_!PH&L6>Zd4i+^w>nz)8FIn^uW4l@q2o@ z!d7lc;S{do4%Q3pS{g>Ia?(&N#=Zrjt#!Edb_RtOEpceRt~P(tpP@khCJ=PB#nOWO z(Ug!a?L@`#bs=aNp5wz&$k)mf_E28&lc|rTj(1M1o61{t(uz@XVabVv~ z4J_|{Xvp1tMk8?QO_V#!;-0`-ZqLqcEIq)i7rSD1x^AS4%Y$dySd)M{LMsY1Pt#hq z$QI#iv9i$R9P|x1kGT7=CSatD%Z3&PoDk=*eN(^1V~`q86LAzLbT)`||7-LUiKrroU#Et@)a?e5qJb!2-}8)j<* z2h_c2O6px8&zsd&;`f7ubLK7MY}uC zi6?BGZRP&|uIq8nh_w>5jsJSrV=)qMHF3suC}A^ks~%pTo4*IKRgJpnJO$y-8WV~C zzjcTFjSah-I_B#WYA1C8qfe*`;OtgkI=e~F*Y}53{@I=|-(@**y<;Kwj+&sOX4+8~ zbkzOVdxs`EQ2w~(OVV=xCj}FW8~7qfyM=5wR&R8pUQE28aYEH06N*^x6{9XhQr!5+ zrdh??)rFy6EG#STfV-C0@;sILl3ulQ35FZW8Oy+$!mz|;G&igr@n}!FP`3~BGnkGs zJ}Hbp|!EO875#qG?ziY%c;7NDvB%wsqO2|Dp+eLNG~wBGfd}(Lzcn)H_xNBtj(bg7zx9)9pucD#s^Wx>Ib1kv zE)_TN?bzKU`q`~$j<9sH*rAoLc$wXp3EG!TWI(_;s-u#eT+NaMR@Tj~>~K;CTk1PH!YLivGCO#C2Sl~Ihi!u$ z;lz#(#n;)

D)Y)LkIqy!a=>4BvQa^)RKmok$&#dLjpj8~_R1*eZ)<=z~5*rJ9Hv zcDe|9iS!W3B0@$%)`V4>G&5-gtbnJm^tm(5Z_MwGay9o+n3rPgIyI&jggG7`?1GOamU zAh>8H!Y)=Vn=xk@!Qi4*oM)P~nv-5KffG+p4^9KL@iA-MWvai~%k9Z<#lg~bl45>P zZnr2FEWTSk35qpt;X2WiM9x+E!d!bYa59!gW6R$ugC*wLgpm~3L73oJM7z>Ql6 zy5ShXE;W4vy$3K1K%3NNzO>RJd{V@sw&8Vy9;$VuUGU}*mtYj}C`j+oR*&jxo%#*^ ztk$x=-sOeK9%Bdwk{%;oFAxnzw3NdpZSJ_0H2fXz^Bw8aZOk6%rh1v&YWF}d6cfG< z2{GKD0}pfte5y+;Uwy5!fmCC0iIdz-)Lw5NMsKXg`TH_90BNDj9gomb5iifUsvjSAxOcLv;8)Vg+_eD&4&vdvP@wALjwua$G3nEZ%P6x{?CR7f`_eZ5|>3W~?VHM&ch_VQ7|Ea5bWyWi&R zQ+!AKHFfnX>$T99&iI)v@zk>~Z^Cds%iGFyRQ6-xxZ7~!7?wJaMtp`7)SO}IsC)?e z$lT9x!Vm;ZrztMARnH4~7*`Bi^w1GY%q?Wt0@r~=&2@lQ@)EIBpFH;-@Bq_-;81{- zJUA2>%kj8}VY-INP3j=CJAdHbAaxi|&v8jc-2Cnn#@Zn*(Bo=$PNi$W+w^M(Wo?N) z5lieQ_X*s-G1kkqdME3Op@pl52m05*w-BZ+>b!6<{PiIW|F~)h(QhAhv2`}E(fDCBZfhj;N;bNRr zd;OFXc@E58<)zW0l*>G;1ls&RcHdHHWuAWYYYcU`E$MS>W?gYG5a{=>S+JOnkMJtV{znq+iy!Yq%IShMHWXKl4?yq}jvU8d5Lc zrHb5LczzmzW|jA@YrUwu;4W|vMmi4}9=MLl?m~mBW?7t-jmTV>96Y`KEJau%@Q|lJ z0gW3yKHp(_>tuYHl?9E9;*D`zBX0%mcJsc$S=Y|zO7I!U}=Mp>G4wa`qWvEaILmL;sKU>Lsy_?FQyBSUEDZkW#jF|jE+{wP}xSS zi@SVIFTLhnuWImKKd*4jvWuZF>q8Uu>OMbS7)fiWKL=(vbrOBG&RwWN^@tZ8#Y=v{ z@E?Mvq9rG(d-YJ}IojDXpv37)*XU{Fpsd$NyuH%t^xT6^Bt-R~6B9nI07rZSJxU}@Tts;E?4ZgGCx|KzJGf8BUEoSm@4)@l`-t2_)jGp}xn><-~4 ziALRyKEj%h$rd?2baV{mH)-YBq-oc+derSSoBISVJtn;aRlrpO-Ov=AdQa-tQ z+fOUDpJ^C(KiBkg#n@N=x?~r)~{aXpS8;g@VNo&zR#IqKof`QRRe$UGJm*8}* zf$aCN@f*5`o{=PB2~QrRSQDH)$qCcYC1Pn}>j1JeXd0BU@cm}%L2h*L^WsKHi%ldI z#9Vv1|ax4FzJt+0rONBdV0zzvhssIZmG z;-{)NT3cerfS>FHWBjyYHJO+2BzsW$(}uFTNKJ&bo#!N_f6$48QmI6&mCJa zU04^y|Ma?0ZV?3xz^Ogt$T^*SGI^}>yrV3XTL|;CFismF8VUy-bR!A z;tcInkCCMRqcR%WYb?KGOK~4E2+jE*l=cA3`5=^RBXd4_tw1L>dJ9q-d@MOa=P5(1 zUb#l*Nnz9oW(0FT#|i?53-bJ>enD#?D4#KtxMun0xx<|D&67fuPci-X-;U;sXddd_ z>-9i-VY`iC>Cndqt*iHXyANVX9ou`@-+~7hAxGk6>>y>sD~g`G2ap4gE5dXLJFwov zTU@3q)`37*&8jQ*BXN^OmyPA05Iql~%GLXckmyl|LBb25s4K8{h&j9==!C#xSw#*F zyn93+GTuwq$)4H6MY8d5Lj_k27)IP_8Zxd2VV}u&>@eA%vW{9IGBOuTXVeBWYRNk* zZ?pm1Qyv{YK0MYiHt=S8MQB0psYLS3%7gLD?s#Aad?Ud_b7dE3emuFhN% z%v^HLz63Tn%Bwt>QT~_YHEk;i+DayEu26+*y5go_#Z4hc_G#Nm+gRI^cRY3n%$|#v zj&3?{FTH3>*Y8^!%&R?PJ#V|7?^_wntUPD0#C;)GZO)+0IcclBP+os##Vc!HUJIil zU0xE3T|R%YQ3Xq{UEoXf@V{es(+8@Xa^;sAGC;pAH>TmwcN~eJ^LrWzdjL7O#Kup! zof{HU@AImKWM!ABHEthPOg<{6!;ltg;jpa8v@t{9U;&IxI>6S$Hz3}oBw*B~Fd3US zSo;3OIVOrN8&~C+G+&Nfj%3_7g|D(HHcpj1`@WotN@v$nrE)5``ox#cNR`H^5|#A% zQn?&MU&d;)uu8_+>u9NjT-h-ts^%35m;f+y!&FeX$kX zgjnxhBl4nApk8yiuhdllCtZh`J!eba`$FA_E$*~LEa?@?0KmAb;=v9gh!H=0B{=9DKI&)b|AvvSAs zPOP7_mt3%?pRhdKJeKiL%Xs$qf$_V?^CtG4D_IrF&Kt`Zt2@y=UT`jZX(+b@>Ip8A z$4n~=~#WbF9TuYie99=5!gsNa+JF!^)f9F#SjbdA*3*{R=?HJoxNBbJ}e z>5~w#bBp#`sr7Nsn;d&0{oa^}B+s`O3ri>|dK${-kf8|a_lg-xTcyDSm(BegdhHf$ z8770bZhC>~j<(#;Y=xvcncg)EJ0|e@z!0ZfV6lRX@OlglWx66j<|oX2FazoK_VLCZ z7#k@-zt`++*lIp+K4cG#v&dIF5BmB&*pN+2yX;vMXK(vUZgy?cYus=NgCTse{>#=7 zc36(HfEd~pX<65@hUglYRxm$r6^0%a@X}rdZJh_>x|dWp7y#pI$v@DK)h}UPF=}3~ zmRQ}-D#x7nP>q#n+8Hk1PQZ(KCzq7ABB6%0{pi#rM9J_ry0HKIu(!v@3oUdddkoCF zNvnrmKiUJXBL^#PQa%+=Ahc9ofsM>lo?{oas;9-jCjGhQ-hI}E9{;RW-*sc?$$Go}KCZDfANyJTR-jlu~OOZ#d#M)e3K zI#+*rhW-q*5cXC1X=y>P2K*Ik(W3|)TGBMvgfqV){tJ?Ozr+>Cq)Sf8UV33k)x`Cm zx_8oEKf3L)!i)LEquVYN6pty-G-5Bv<`-;dlwjqWsq(c`1?xt)zYP)D^@QiVt^7jf z!Y2lTnH9$y-v;LoW|oaMUc^R{Jtqs`DV>RACzp;UhKii9`h-d=pR0MQ=1jubq4Aoj zQfz!!^j7-f=Whrtu6eHSslGF}zP5e5Z))+)llHQZt#r~>8*<(-?OY#puAg$=^jb#H z**Ix0e#=&LAw7SxVCjo{&ZjRAm9LyGUl%N2clNf|yi?^jPdZ9MS>@ANRl%&PsjTWr zd$qnF-DPdr+|q*S%;wE_XT5lEwU3C8NI#MH5P1+JoJ3m>_k>&^1aopKtM)SXg7+9i|Ans*sX z_i0h$qPNnL{3TPNbs+^}Js(_j4Y(Q8Vrw>sT_R4bz0=(~@ijiW5V`z!=nS*h-f6?L zVtK;UZs~?L{j}U}#b0c0XPVHJpd?{UK0!&wntb93S^2q=0-VI04P3G(W!5%z8*Nf= zw_{_v)Sl{$N>(zIOwcSP8#G5*0Gg}hf#xd(poK~iXtA;obdll&Em2BA%an4^ z3S}|q5~UK#wXIB zmD|&}H0yDtUYZTybCjDvbCm|rd}SkOq0$IitZV{Zq%?t+D4Rjclr5kY%2v=NN;9Zl znr-0YN`w1sS9Tz5C({;X7xS5M?on<9y-m3tbg$A5x=*+J-@zNocM$ts<$IvtSN;n0ubKXU=?|Iy zi0O}s@|}L7Od?&7-_|*03jBGdZ!-NU(`hAy@VA(Tnf{FF1%4ktSN;aEf6M$uroUkN zOQydf`mC(HtvsMSqW$}|@*U;Z%HKVajMkryw(|GNKOl#Q@{geZr2I4JzbO9-`fo}U z^pY|IdRch~^xu{L0R4^fThQMrS3rNS`~mbol|O?13B6xBC4>;Nsq z7vl$LF}@3#TLcc{2xtkurOcIq!*~K(fiK1s&?Wd*GUozUCEgXdrTA8Jcn!E(=9YoG zj=4H;^~@~?w}QEq;I3!x25_sGTMcdvb8Eq^W9~+9>zUgC4r32!1HK!XYXpaJ2eb)a zj5?rO@ZHK>Gq`QcZ3nl*DD6(577pJ9?q=q00k@mER&W?^K=0Ecl1)Q#@}<~qSC%z40dG1m?5Aah=DhnPDIu7|l^aD7H;eL(#j zem6LkIX}1na|7V+VeSaHqs$G08)EKWaKp@vfV+>m`@tP!?mgfhVD7!(9%Sx);NH*N z2f&RocO2Y9%smY55#~M!?nBHy3hsna+LJ&Z=I~SCKEm8b!F`Om)8NLKdkoyinR^`E z6U==A+$WiPQt9Tu;|O_*xu?N>in(XNVT=R)G`<+;Kqv6USO@wUd|zPhMR1>G?sMQ? zV(tvMmyNQ19ta~I=oj(Ds0aFGd@qR&`%n)lPPFdC@tUPya@KgjX9F=>Y1~Oe8jXl6dBccl7dBSI3Dm7 zu%}^$0*7F6a)jm*41WkQ9rF7IXwITf6)+>@4B`#s)y_^#$~2c~=gwBAA13&Kwu?@< z0Aq6F)y~mEadpQtSmV9e?Som5zji3O*WFozQ@z}ML&^Sw-mXB+A+H~MBPpD={rL|L zB^<5sQ=nP>04i+=r&alCR;^mOx~49UuW#Ah3DwZ}5O2o!@~1J~Cz}nHK8(n2a$Z91 ziVwR%A(i+HTM$QA@+V*{m&~_p6ELhRFKD^pTEo36pewCpN5N@4ID;o)IPnE-xeFm};fs)y)M4B;cH&CRo`iT~F-xJRHWsl4fey{HbaRM~ zVwm%ZzYF$rCSBu7IyPd?2Ma(outFtYb0b zd(z7s|6cF}a21~YZU)V+BzHX;&tK#?*AVY0iasdp=rk0FbuhRhk;&wLz3Kkfn~n!= z-IVgb-gJgc`(JOm|JS_fSQ8MNPW?EvX^nH^Ae0q8?y}ms)7z=~{Jt)1%Ac(;^z>AV zvzxH>K=`u7{2}373kNt&f0^yQ12slhVhs05?1+LPR#T0HF?I=`s<=cr0%;kMU7imn z6md6IC(3r-f8ex&rPUJv?c5sIf-QfI-C%y5w?~=gYuy8w5;jZN~GmMcF-m9 zos(UZ=9WxbADENj{~Z?lt6T!#-F*>{rnyjJPXpFp;-6jfVT|pyAp0|!%=>VHE8Y^$ ziDjP;-dKkvV}HDB<7TxSa=0aC03T{)$MRTnK+7SANX?H@ShuxP4B*^ITl4s|0PWzG z-Ay;|XlQKOiIY>D#s;g}HdiLLiBXe{wd`;@`+ph6YkznVo{~;<^TXE7dD708*tt)B z_F@bt_V~K7Jk%Xd#;Ghjz{4GwEVekS%Gb@d)^L*0?%_;Ms;pQVCL27wG_}LtgrpB= z_*5_Qa+A4TtYEWIH=Ih_K1tp0pi^_hiAUTjEl0Uh=K57WOZl_I${=y<;c|@bBoBzC zXIg2D^#x&ye-FZj7R;KQ7_OAXP=5UF(1@|(yhE0p%gDR2D72_V{9U$!{$jb7ogXh` z6-;N92eZnbxqT|D7XFS&7xF4Y_RPub>WS{j8@7h*1(QX!m#yaf6hx-N^ToaZruokE zw$kygGp46|LIuvzO^&dOt+2z6P@~BBJZj|3Kn{yT*vvoJgCpMkWUiDUXel!btVR?O# zlPat5t#k)J)SLFws2O(_i`0gaiI+iB7W!UxAe1~n=Rbf&S5x7sF|YThHqjuTI16%{ z^EqTpZekI`COyx0+oggdVQ>&5ay6E%V>!Hgt~fl^n9$((7;T~zFcfp17>!)xY0MmZ zgJOBNvJJ!QhUVk%mWF(}6ziW$A)Zo6c(-)8TjKxZ-GPv804K|m{tgJX$-HmDxKLWhF_Y!4w)C19aRe{Y#R}3 zmT>33g?Jil!WlbTdFN^?9a6=asW($NmNRMG4=3sIVM}1J-vcjOIxN#=;gKtBSry17O?3!IxB0u8<~Ba>pfax`EIZBV-C3rgVID_dG~aohfZx+VmXP@d6O>~) z&Xuyn295dV@WaM=x;R_bI-idUa-YXm5_f);Iho2lkG~0QO?Wo_WPd(`InJWQ793;a z9CDcFsaxT}9WX28v~#s zlb-=C`m)o6t|-L0qG(PSdJ@*;_y7fAPBi+uF@1`upe=rq3YGhg)jYZ1ao48imMyIvbhtnV4jkCs)^W?8U2RRRar@Uhakcs? zWnqgu`&Iocg(No}?ez51{#R|Mh*;F7=fgO{$0G0z=jd$kK**V;#NpHuI_6VR&(O_| zgIv9VMEx9shYIJ6B=PFi`{Ra^6bTZ3!^sWftFS;nn)DW&_qUFBO%~Ri$)2uj3gUlZ z6NZ9Nl6^X(3|M5X#6oU3ju^l#Y5#&6u`3gLWsa^E>j! zHcc0;3*x_HU1%ZBwY*Ti__=LQZJW3szOwM)3*}Tz=hOysY9|8I%WeuTyXm#XQ#s9} zo1>Ow`2XVE$ed}1Gw5)RFPO+XbN!TK4Ro4G#n@uvh%lE52P+(wHp0o}AoRWPUx@3fdX3Ef|AK5z@}uQ%i8Fi2^N*U9>Bk-O?S=* zBet<&MVD9DxZMSrB_Ea55|&-_-9esDv4tDBNw+h{<+kC!ottr@Vq9){T5b;d`)=x? z*nmC^CwKUDII`mkhm{zh#p_5AHN(k6F#M%;z02U%w_fZlk zNI0j9#_6Jnj5RjHjk^tPG47ruV`8bU$Te&U2+JKUE^9ae6JW%L(`gRh+SJz3u%o%5 z6#|BIO?H$M4sK#U7Y=+DMdCBbX1iN|6&DQU&2F+{MrWf8|_TqrgR!LV`R1zXMDlUQF5S#;P@Ag1{*tUcJHj(%ar`$?ME;5g? zhK3gPhah3AxQKcUj@w?osAW71pc3sCi=EtuG2=ZwjcoN>XP z`RLB$JI9t_n@T9VaI}du=$ujeZ{M*>8AVUDPo`JmT#=p3Jb*~6{{SqE6kFH8f$ya&y83)w zVRPN;dJcM!(j8FrbWI%iJ_IHl#8E8Xe!9B;dJcU*g(_~c9dYP&9QpwY-4qM0K;(D73ZHjWeTAsOv@G!xY%#cWb3uzMAuV1fkYl zO+DUjq+BVA|G_Kr29Ep?M3J@ZXx$B)5P8EU4ttd83A(JuuRq}`f~o;mbFA_FjT~#h zO@NjIaDnCruBXU8#qB>xux>fQUIVTm7@%Kd!ZUB;i~_0~$WmWdPnRa(xLEBm>j*f_S0$w@@MurrV~S^+FItG=W1s5Gbmc%po{qzhD__$G4~?V&oceo zkhyZVNbnK|oC(W5W?n|E)iC$@uq@i@7sB##4*4QZ1tTpCKfFZem2udYcsjuBm&39s z`6~?1GJQ2Hi=OorhF={rtzXaF*M`h>%T_S^bz;T6zAZ z>ik?--o;THPBRTLeJd>QVJ6J{_^(G!#uAN1J{$v&MNY-Q6OoU^z$YRfje(~lAB%xg zk<&5ok;oVUF60xD$Bc*vpN@Q7kND10k;jdQV_%6pVMLsYeA3{*5qZ+!&ql^|{@de` zrwsn7$kPV@bmUV8|Eb6`2LDXtS%ZHzLdFIz-M2p-dCuUUi%b~&MC5sce?IaVga1r~ zlw5J`3y~KM{>2E{8btVKBV+{-{O2Ms8T?BTvK)x;Gm)1K{^iK$4gT|yFBtq6B40H4 zFGjv(@L!62+2Fq%dBxygiJUd~vk|g}h)v2YX<+d$kz@2>k*p3 ziZtJdeAD2+8F@|TUq2T4mchR#@@<2EAo9Awzc=!R!9N)Jj={e#@?C>}f8=`x|A7bz z8@})BqmjQd_~Q{$+C=z6kslcR!;v2v{3DSc8TAC3If;6E0bHu%$#kim~d-ZJ>dB4LC7c;sgW|9Iqr!9NlC zxxs%T@;3(m$;jUt{F9N320tG81^CD>jew^kzcTnwMcy{}XCl8g_-7-3XYikn{Jp_H z7x@Q+pNK>Z{`ts18vJJ>|77qlME=>}UyS^V!GAXLuLl3Q$iErjM1E`VXCuEe_*WxW4E`&T-y8f_MO*rs z`15t~=Nm3_Voem+o19I@hyp9GBCYH6JAc9@>@doXn*Qr&Rjx5dosaA`zk z(uYo}gIOg_pm@rA;BVkqM|`;84;SFxmAEqV>NvO)=HbWTAoE6&Mv}1wHE}qJa>Mx} z_zAn=WV#l77F;V+=+wQD1UTHaS){(*!}xhizVBAPZ}!!BW2s;beo`^_>KN1moHYxK zZMm4`&Yw=2?}syod3{f>638qXg(gcru6 z=GI-BgD=jej4wp|*^YF9wrBxkC2wt{UH;6#DFdF6d@2x~)bAgls`euROK{Geek75$TtItP z;|!{^a)}wWtLZG(CGboM_EIGGq8AHs}=9}j}rH+GyF8RqWNE9b7O za?opbPA>ZE6%Tv_XCvWQFh0hNFNmwKS!G8Xq35Dv&0{S#40yBN5Rx7_=wqb=IrG>2lgoW3L zyx`|N=iN6PPKGZPwl3g@D~EDt+X#&as|9l8Q3x_DHY}Fx#nZO(psjqob)sy_Ry%E5 z5wxwCvR#j3yf;)|l4N`J+nE*c-N{&d*=)*Mf}^Zc>G&Lb{D?+CpjRqvlXr#zz{*l1}YBmj(xc!m-AaH;!() zki{F5&u3M>om()r;?&>?3yhXy=IOlpU|#(>M?D?O(KubSGFY_oT=q(2>Z+cu+!CzZ zg7vzLg>Wo7(KNPv+=4^G#s*G}Ok|(QdZ93c-)sv!W*alVl~;Tz5y?>E%mriFA1)d% zpD3HI+8D(D(v8S0qeyprn%I8UJXyBxJbq*jzkjC(FP|=38!TIUc2lsd;k;vG2#Z~J zpG<m%_LNs_K5w? zG-2ZPTVB6Y#|hFzMWq>&N>dP(=3^>N*3^2+yN<{*BG(a7DdI-rvWO%7McAC5CXPr7 zBK^JTVqdh`njOuQDy|EaRO3wa+}dNiW)duAIQyKAFJHYDXZ=kKeBXo<0MBM$w%#gR zt7iI5>DH`wN{g+9@2t04m*PY?+CH5iPBh2%X>c=+G;8*ZGZ~w!3l=#lPb5y}yP^`f zkRx|2D{2OJ(UCiuUlp~2r8kf_wkVoNJYHKKMI;lzFB}3ajoJv{3@HYw1kyB+P5{4@ zNY`f&pQ%M;5y)mx70n^AK#R#GkjKCk%_mR*fMOLAkDp$_U0l&(0{Eo~idaOvQ}89k zmr4aoL-|$uf7ewEVi8!xv|?rht~s_9$GmSe<)?&_(oa-G&BR^=TNbqvi#kYl03(GBn#BQZzsA@gN*{>R4wFE zHq#{FW-WG$fH=4xu@%u~0k>(f+XcjOF30W?@MbOc76Er_uvNe|hUL*c0^`XHVTN}HRby@3AkBDRie$NB{97x2>E0>Y$}wEzdm%=>?)(L$YV(vlP1ZMj!2f|Rq5-XAp+dy!cyu_WbE zNAHa$GJupzMWSQ|ka7fU3?StQq%we%BaqGjQjRjnU;rscFt0ZHf)>=clM9zlt6pquA{NlF%c#Q$P}W1a}EYLXY4r0+P@p*eW0iJ%W1#B%w#} zHUUZK5!@>v2|a@Q1SFwHaKC^g^ayqcNJ5XGTR;+e1Um&Jp-0doAPGH!-2#%(Bj^>7 zgdX6`VF5|#QEab(B=iXS1SFwH@NNM~=n?b_NJ5X`fPf_Q2p$oTgdV{`0ZHhkjvk5L zDp5APGId znVkZX(4*L00+P@pc#D7}^a!>JNJ5X`9sx<{5xh-65_$yp3P?ha;64FK=n>p6APGH! z9RiZjBj^^8gdV|80ZHf)^aw~ok6^ceB=iV+1tg(I@UVa+^a%C}NJ0}XdtDwf8&l$it6$9s7O#D^Ay~YA(ozsAy5Ut*u!wLGa6WzoEVOK8sJ#9i z^G&j~;xZi`cF9Dnn2FQ;+qIC-H-nRS2Y!izHV5LT)Kbag6u;(&eJeQGQH6Pjeg)0f z(?dsQU?-w#rRn>RiPRCHMPgxP=<8Nf2qfvhJruUVpypEp!Yz&c1YtJ{XKD_E9eqBv z7e9M3I2)Q=FCOoUb=!U_0M zc9c{6_*#I1+1N1K0C6R09geac=<%#qx5ENKi!gqO7Ab0$W%-gNLAGEbpPqfp_G_u~ z=Th0vq|~2D$v>0Qz#t-X!7IVTPs`Ku8n1tD#Z$-t8~%(8#&xPE%?oehKC9{{Uh2h6?}y literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc b/lib/python3.12/site-packages/bs4/__pycache__/diagnose.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f914ad0662b5ac5c38ac0a5237efc3537b9a2014 GIT binary patch literal 11705 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc b/lib/python3.12/site-packages/bs4/__pycache__/element.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39d33351e80fc53159751d529bbab0f942537b5a GIT binary patch literal 92337 zcmeFa3v?S-dM1b`2@)UylHmIxkm3sx35t4KFN-26iF#0Ok#4u?cGD26BthcK1yB;v zP&eiFwn1Boskl3$CY_j`b#GH~@3gWrCvmcyO`n})({pBbh7hSGjMeU8Hcn15vzw7c z&nE3Xb7sH)-l~fN2ce0xs5*jFM^CIAR(w8R^fu&X=wMv)jVX4(ft&u$< zZ!JsRfK-nzZyigmMQWWcbt6mNh}3#rYCTJBKx(6|W(_R038~Gx)JB%-Md~J9Y7Sd{INZo?o(MDqvOKnH$R$X6iW~tkdx?OG&d0QvV8x69#-k=l= zSTMs(!&W{EUo=SO0n1C48RPXHes$S+*>J`DqT#a9yCY#f+0*~mG#XxG!q({@9`>IZ zmV0j-6XwpoKCd~Eb9hV{@rOdPlE^#SfAU1~*6|hHUD!GiI@`KCZ2oHBW}JeXhtz4x z2AUc~f2${OdIP``V##!h8qOLe+#d>@2@D59lPUG2 zX<3B7)he96YeYRoDkF3;3w7uuc= z%1W?JmV##jqyAvqbCW~o{mRI5%Gd>YC=_fvGB$Q@SniYk%Fy{20-^J#CPL#Ap+jTR zWWWDhux&VSrfqyObbf4fo3DLqTQCrkTgTA`|2a9>b|$#JO&*p<ix+$8M{sMJ}BFZp!envt%YT+rQ|nTd>uwBF*smIzVyYRZN-eAnyXj ziF>u>N+GTl>c@2|R7=m@bSlQlYf9M0m9cSI2~8%lP#)%**Q6BCb1HuZasTkhSP(Uu7@Zs%ljKC9;=epNF&dzoK{+_&AD0t36Qh!RHZUqn ziTu<@VandBrnU0ypJ{p2`*2=z>_`vo1SLbch2W&x-v4nXV^b_uF2~O zo%e@43Z~M?8BAB)a`0iV<$7>5Q*LDRk4oYx67{cNmKE7E5tNZ(%rm6Oe!yTLha}E z#xTAbG0{2sX2ck=3~D2Rr??aKiI5ZqoHsg~@3!PeV!el&iAxM2i1Hk9LvI)20$_yjzQ$Ny!3_%&E zDZ@w3A^?E9EZX&F&Z7H;#Wy$K*gQKlw{x*@({$%Y1*IR0r0t7^&C{L9`xJ`dTzX^6hF3jSuK9@;?BZoE`y=lrrusO!G;>3MQCU4;NZxZG%-xq zj={lKC;Y?e6Lf_%HZ(ZM+Hsr1K1UUesIo$*E@}W_me&oRm`qmNr#6?hh<%4WP5})K zGc(MV3K{?jbD}{2!k7KS6EY##PM}}lm%fQJ!B8MH5ekfrhWB>>GBC4S1EU`FIS?}= z7Jd)mYX1;$kw+c{>;qms!Et#ga5jKhj?6?1eZ99WN;}n_(2%l?PTT3UgHD9pcmsFQ z6`fwf9~;)!4GGH;o`cdew~VMzYRe=O*f|1x!+>?tf{rg&+jJ6WIJLpydmWy0@~Er? zhLSBLI!FM1iMqrycGlzfjNnaA$bYUW=xL%hql21~l+>5YVEBde@~G#K>_?xSof!7? zjZKVu#wjny7bAYfsI%N2o=W<|p*mDLo12sqO zkS&M{HY`DoO@;&@qH_rF2ozTj;-u#)9*aOs0BVySsQV0@q?r{j%3^agkw2yc&Vh6f z53-7T&5Dnn?W0p0PC@#1DtOkeJ02R45_|?X;522ppI`9y#p#Q)8)v_ny)AU;@BNP^ge^5#FIWADI62MIv9@q>H_fqMWn0-sU zs5tH{jXD{i^?I{1!YZLv>pix{!P&)OJ2J zGQ5}JTHu}i9AR*j)2~NU9AB)d-V@-9aCvj{*CKnpUkz^3@RGOrrLXOMd6PE+3)$)K8w|;(Np7Z3mzwFF6wb#C#AViT9A*u1 zSrfUPM>|gUb@vaR?j}B(#EK*`V_3^;Nn)^s6=EH7FhoXmCSc{{iXb9fyYB4LFxfYd zEl51alp*dax|x3?f7#U#b2ZG3F1mI^t#P|6y8q*%lAC*P?EPMFu6MC$+k#`;$4`gz z#IOwGJ8wWDn_h$UqDDxNkPOlNhD?&<1!AMp4lr?s3z`B)_e_H}k}P|b19*}m9uf8> zkz|z^HIffeipGZ^MLQ%hC8ile$(X{wri?&^)^iG|Cj^|MxK}!G(u+-rY(>7TK-3Gj zuiyV1AQz<0*5+rhR+K# zL&B^!%1J7QQ8rcRV#pCFn1kP1Y~$ngiPC$-4AJN9MFInVYBJ`ut~iU{{^s;Imz{Mn zXWiVc`L5-bXJakTE;=&FSsT*nAii zI2D^qrU6S1sr}lSFlJ@gIZLtvM`z16DeHBErq>wA0p`!usqgIUKB=m6;66{}&X;oJ z{Ie!07b2b$B|%Xqp1C9kduo>Q@U%cK7%0TMHo4#fbuJDRN%^ROTXqi=OHN!t={8V` zzcR^%yK-r(RDd@tq-|0mekB|4B4-s+H_Mv`T68(9 zk=81=4*2lbCUVvwb&I@Zpk0@91Jbt2TL-q`Z#$)<$2>^eA@3O2Dc-C_$}V}=z;66K zgTAcO_2nMiL-i;6cCS>A_U@A!aNdt+jk;$Ca1Yg=$onkrn|1dGaStV+c;12gO}hI- zxQ9AWJnxiR@RcqJ%D{nc$%pe{sSW2N(iWVLLWtAp*se=~ zbI@arfkA~p0@fY~9d}HA366m$1BV{c7_)Jd!znbA_XEKe20`Ts-ifeiR zJ;D{t?6)y#fk=%J!yo{UAB3I<)yYiq__YGiz>LUU$HJTO4wcFdkD6acnJrU$@wS?-|GCzdIXx3wsFXi>UddFB&s?=cENFpfW5jZ; zkoBHTUk84jZ097z2d~+G3?0}fV_ra-qiGNr4TJ)iUWz=-rU!`-q02HPhR}I%|EdO( zG((*E0}H_wuIdvAZQ{Wm%qjl}%`8l~Js#rk_%)xR$>K7+qsW&6V-vwawOIbP_H{N_ zA(M}c$Wj2Br{PJ|65t?%{DfI?G(?|qK$QqU}$-_yAhWyPy)C2wZ`pwH+32LL20h^tbx~WIaOgWdJ(4}fhMbiDo9!(UQCRK3-nltC4G-_{~=Bg92*U#)ltiJ`-*2v)Usr&j@v62 z>`n3Z9nr33M{UeeyX5e#R5jDH^0?i(Y_E#hs}}6dYL4odqx#8mII0#L^>LT`ru~L} z!PPY1^`qmrk1w|zyxVdxzG36LU%&PB$7QRly1P)iec_2P6$0Rt*Vksj^6+nwwvKCyT0GEn z`8B0CG!*p7q*jS*#K;&VN>TMoG-E^CXGwcW{CEZY<9i5FBX7c|5Q8s_|q1y5f8EhBmSJM}WSEQCLbT=poeqk!6twTL%mP~Q}9wn8d04k+1!f#4tvMoJDP(R@&7;v{URyN~qr z^`CwbYE*{1&rqsyC{>9{JYcwHEkppa1>D_59#!w~soUTvnF+jKzGUAVF9KGr0$zT5 z-<$jHyQ-!;K6X_{JMPus@WB2*E zbIyQGFE)kP{j*7Ste+S-{AY6+GeOLJ(a$ZO%cS;~VDw<-58Pq8q|DdH%&(wl1ZA|CQj90}u14yTZ4!pLlnkEIYrNG&<;5->4iqas{F)MGHu$PJeddEUN z$s)QHWlT{)I$>oWPgqIQ8%zOg*aFc4mE;A(Whs5Hdt$^W1@qVde41-;)-C35T(E6i z3!l_)8}Y|1KgSJ54x@Sq#zQ)iy0|XG%b-={U-Ik5oA}Oko5e6``mfD!gE5CMt?gxo z9RVP^sFVT5e`=#HY{L70MVdG;4yBdLB~7uCrg_U^N$W#{F{eCwI9^!x z)`?Hdxc=!Xq374CYK&apsi*Qp+t~~y?JEiCnY5k2b(AOV0BtvewyRu6m*H*8km;OZ z$n-MGClU3A>3Wt0_g5_+sH4`0J0nZEOtgL$uO5*@Y~l}{4*&$zt`Xv*t`l0wtN;y$ zJc>UFI8B}ZVqjDTRE8kp4~=EwG_^;2JbfydX~xKmMPp(FwO8~LfIcw7r^y~q&sk5u zG9mM6gMkI5!HsE}`UM_$N)AJ5PKBA$t7DSBB(q;((xGBJKi? zGX9C-P|EvfRvZ+#fApzWy=>rv1Uo+|$8Nt9y=8Mf}uq^`rR$|$w z4HL{P9is2BgE{e8Uq_BEp$65;RP3-^mvj#?DKE;hM$K~xG0>sN08H*5!Pz_lG|~|1r!U7u ze&rm5=u_lRk)ik`W#6OC_E*T0@s$<=pW(65bAUq>l=8LYOTFQ*K}sUTp{T7R5nJO& zS;I6BOvXx5HMOT)=cK*|oI?N`65oPL3hADeb=J5gckod*h=7h<&C1Je6nML}7$1}wQ_Rn(mkt5BOapgdG zvu<#FYUKy1p-F3;$h?yvxB>ZXUmJe95^Xmhby1gUxT1RT{$$ zX&vcj%oyuJ($ixMfXIBejS2f84bWf!9*9@SoCqa_67t$uBNDk^CdVGelO@c<@@T^B zABA@)%bdstt|6DEM2HQOnDu~ zPqPdTXEgNIGqc7w56nt)?YGX&yKjxf9fkMp`S6yRcQ57pmh3*fyinb>SlGSb=#Cec z-+bxDOHuMxBkSjKQGKkaey)G9Xj9Y{w>jQ+OgrYvqK+loru(&<=C|LuvQ&GJ7@~G) z?xLMDRdGkjvV+ukaFyG4&#~nJ7^HTXE~ECf9H@{GEojzy5+bpAYr)r9%wdn7ClWQL6rHT#_ZrmzHH6eDf`|66y>lL4F(8 z$~2wc#3^BeG9M1IvZRm~pK={1P3xBfAmQ+$yiHlHjA2bv`(;gxURM0$;X*wM;b{j6 zGQNp70T{Uk%wk}OXb!0|xSXj%NIL<@R)UYMTq1qU951e(mEIk>HFCRSp~kmZ+(uK~ z7wwKaikBT#F-O(xSLP<}Ia+C!`*gEh<=Igk&ixZETs?*po8_o#`TA-3X*a8Hqd7_opC{NqVNs4YD>iG&C_j zsfq_AHN(IK6AKgeRBH+|kdj(N6b1yx$rXE>96--ZdNe{wTqwiSJOM?q7HICzgdO4S zL8vj21y!3oDrw@fU01b)2@b)W>ZodB3q1|H^sS?m(==DWXVF~AH{=&C=hejWYG%K_ zn727bkZ)Vw|d62O&{K(~gKh9_t~! zObXfx0-vjkvhBEps|jNvV}~piVSO8J=V=Wl;2W=C|0_pSU#j z>ls>+x%5F&DX>E_UZH*x_qf*83@F0nuf$aE0;|g;G*~{N01S+$DLr9f(R0FjvI2|@ zQC!C^ar3KibzlrM=zt&zKm&r+Y6|M1-=`TK;WcsA!!(UP;2kDVavTN(0yWmyImgH>*6(a?_Ruhak-`~ zR?~LJvRJcY#;%$>mtFNSSN+^e3$AvMx{`|J;!UyQO^d}X;Mz)SmrH%IQeV`u;&5?` z>w=>-u3gWAX6=Z#@7GylQSf#Bf+Tbr??nE3nN)MJIsESqLrNjwhMNQCuz<=l5WW16khy~cU!lQ?G2k0SS`S4W;$ag| z{Z;~D8OqqBaE}0OhN|opDB57rP)!QVvm#X(*Mq8OQVu;U5>%tJe~7eO45vW7$I6AY zOr|#eggm5h7sP@nVi~A4&;!HhH#V9qt5P#y4E;M}E;YU~KeZ_d zyYBPKZ{d|RX#Gtjg;SKn>Gekj2&uy7z!Btx%=bCZUinq;p+j!lBd!$9O zlPwrMgfHsv_pCP>Y#eeUx#+oM{Y;taqxM{en(F32uKuf$>`I`V=;9?9M;)!Zc853kuGMOy*#E| zSsT)tmQ?(z-=?Ll?4@~I4}y@$W|Ttu&#h>kk#ib zm1h7m4o#W<&V(&aHm2>q#3y;8p}9kubmrwY+7GqRj<|`{988ih$hoz zB2V?RR#mC_!Vi)^E)_2ZIl)#%60X#BbJbE1D~aK#s`*0ZvOD&E(2hEhoB{NsvFPiKB!OQQxyogtewnuIE?S(VX z%${GeH_i7fx9p3x>|1C#itMiPW$4eH8|JphoK0Zye~|lL?))>0o*grJ@gmRM?z=^s zNsm@NXS{K8<|xy5afW=uO67)V&XTQ+*phs#Qki-6&HZt2YqSS#W54$tjVsl)@4kHN z<@w!r{I~bTs&_|w9n4@vYu??xq-lH+^(VrAAdQb5TcK5QqA!ct_ zu(!ukGOyHaUas30tK0YC^NV$z3y?(YMc)a|Zhv?Gt^JFo-n({hyunLl)U6bgeSTxp zg2NLpY+NYx-PyUYtvlY-y4Y1!~QPV=vwiS2z1G@p2lr^@k z8zz5O{Q{f=cO8dw={?tWtccvbk6(hPqgUsy#LBmTFKcLHpNu=pmYoeTXTyTCJ-(-N zCTH2z7;`l)xpu|3?O$+U;J2*U>z3_pF?-vBeQ&($B_u98w!|D;mK+_VS8`n9Xd>>Bvv+P}Xd_#-}wDSLDB-nLKMztcHu zc{lG?-lDs4-h9u-*J@>6pZHH%_a)h6FbaTWehBu?0W~aG>huHbpvsWK=4s3z4C-0o zq*50yGhkrBys#y9!jOG%>3dyE_F5occiF7vojuVmJSBBM%v#WOynTH7 z_^kP!ql!F!sx#ZNNcpykh*Xbo1|U`J;~fH+k>C6TMt^BSLE-I!ozoh)WfdJ~I@ z?Sfu`s9oCefqD;V!j#EkrE>wWAcv4BlEuJqueWI(VUySzUOnl*s0KOUSVg7G%|QyB z0!~I-bb^^C!&4GICa|+>Y+ovR>A>XDS-@3qAb7%%Q-Hd{gOhqV6~m}Ni76jVPHkcdvBWk z64~CbPsZ|_xXatO@(YaNMsS}^@HkbO`J@R^?M;;jz0K|GoX?D+SPtiXbVbHNu7V}P zpt=Dmze1_Ro+j+NnZfcgN1#`TS5wym@UN?lNnH<+^5{PkBA~t?13K2TmfWnoQ3)r1 zdqMO7*tNK;Yt?KlIt&ZCG4HVPW3rPs&DAgEH-Uk=U*cJ)?O7~2w%|GzuiWs^kOfoV zaUcv=#q8$yzrN($7I#%HyEevL8<$)Sad*Yd6E{xGxj~S~U|9I}$?21`4Re(+7k-k5 zS08~x>i?c_hy+ayBUH~}mRWRo#F7z@Sbj!4vYrEw6?zX0QN+y7dcBTW)$5qApJv!4 zJN$n>F?I<~K=Jqp+|mzRp`xZQ8n5`z(z2Q_0VJ#3w3TZ~{E#(v_AIp1i5xM;97~X*l3@uIO*r(m zOZBqRKS5weLy$NQLK1};kVGdTiEf4@y3>(_&Y5PVpb)5~y!xRbJEtt#!!d>T{g;*? zB0&CP){iCE#`Q3T@mAAZ<1OF3cge9G_+!RDeSG@xCr*^bQHP#8rIr#=Up<7=O#>DN zWi);u6>UpDpge^;%2`Xm5V5>({8i>$;C~(&$)3PyD09+IQPD6ij)lKSq3uHycmeBR zi24dHl9+ZF8eo(lFi@2{BB%~ZQrE)jsZ-L4lxRKz#YuykDA3aRF|u%gqX5rJzNxT4 zVC0Ei0BvSbdce{4$($d6`zuyPhPuw;(>0OB8}-#hlOmqy(o0+jAVSgyR9;Bc7fCmbwVkn#q5k zf`w}Q_0=o}eE4qq!NH7{mS++y&sw1k&XO3-3m79-6%Z}{0E#+HfQU}ggCGg&!&3nZ_4`6&<7|B)IZbiWMl+PVP(juhfr}}5 zB*V#Hj}E>lAU@4X?gN@66#>>f(T8>5qWdQK#)c3fl`WJ1YnsH2?jjhVd3^O~Y7EouY^KTO;TQjuUSnWuWgVdWgcANWPC)`EV%u?W73-fMA(dZeu&W`2g9N{) zkO%NvgSF*1FWk5=SAEC0Sh6*0k2|Y1c%JK?-+5=phxN;QPQ><{_yqp@oyPd49Z)}# zZyw$3?SSNt3v%o4WoT;bs#{dT`rYE||U{IY>LFIqMgLDd6uqI!) zS~ur>YaaI##ICl7cD=uor9Cj1b9i*(pEHg8GHTAkQD~v%v4oKu|21LFb5V<01)h}#;#5H!RT(#8r&i)*ATJ?U0to+99ovvO`J; zG5ZKRB%<(>?+pM+a|p2dv4v&Q4#~lV#nD@%nn|T|s{h?TZYcSCBRRhyNK0xtIn2RT zH>u{#Rws+*x08gl7{Of9I7lWqW*Ss&gMW_uR4*MJ_yx&2sS%;7b(NkB-nQQ<{?PJA zj^B4YsbLTlLL78W*kiQSkK62W*yaz@lxZC+74l*gPCZ zeZHRhub!@_9^se!^X@9PYAL;|u-PV$N}n2cPD{9dVP>wy#|n`JmYX^&pX-y znYoWJf2;`hpvBf8CdsV1gJ4NxHu#xr9vhApW@6e|^;FJ+QW%wEZomj`Km(V^;(k+U z#(55SAJZFufm6_i6Nf&{Hvh*+N%gA{eme!!#I1OajcOb&P%!wXZJ#Zk%bGXF9G!Pw zU2t@McoJ-WTVU`wGSReNZJ11dPEI%}VAH_UvylNZG5798PW173unc+^C#n@0A z>Ukw%30}gw{ZJ$;s7xEB>4%gf*M1j@&7>ay$K78QF)4xUK3qndpOlu zk^Df2s5N`p-fqIf5!NnA20o#HtOyeNJhrK5;<9fOdD_!D9ExO@n{?LcPgy=dAhivD zs|Rrs!Tr$KwDn6EXntrzuUJHI-?Eg21qi^zB9zY|Kdz_ngK&6!kweO&t=I4*+^i#m zK8`h@AIablyqOS5EnZ;({;=MrV%OZc`_)bJ+5e(wsd~q!WM_mN-zU41*25%Y zCL%tC=uVE9H{(SteVD?J^0zo4t_*EK&Gt!1=1~1RrlzL2|J2j<_HOF!V3C?c zRTS#Gd!?q~-Qioq^U~d#t=jd4yEVJx8@+P}?!54OU;CY}{rJ+|9Vb7{W5a^Cf68Q} zZ*|x^@{L|6V_SukOtt3+X!I+fvF`vQN&8lP~`GUPr)RD_qVlE@L(bGGLm zLcr0kE(p&!j$Ou;e@|VKN1k*XB2kudg!+mcwb@!ie4fZ%I+-ITGm#^}Hpy=$Y=9{K z=`8MiM_b1+C%l9)kg&2yzRFLjNE(|UEqU_1qLE1a9z4j$fQ=p<%*8FjcH2>7!p z!%9h2iu>9MEjpP!JD(M+@nMhPn*%on=CT%xo1%yBJKVHdB<}Lxch${*{XbgGdHIOt z&DO1*Si(Bj(#q+hAD3?A#>QCbp$~WB6g|pHe6QhmtiOL2VRB|d(~;TGY~&LQz~@f+ zrvybaSs#~r5Nv(tV(Hce*Vg+5m9t$~m0Zxcf~9bKZtR&Idgs|W|J|Y{EO_1I`%%U1 ziaVVj7A$)A#@vlFhi@Ij!rqy~@!E!&WB<{F(Wg@JGn4gcp`ol+S8ieD?9s)-hG=#? zAA5$I^GfbxRbBZzr)G?wV7*L1yv*~i^OkeoxLCGn#`;lFS=?QDv-d{t+>Rx;_oLD( ztYUuQzpT1be7AOIysSFzEQ#hnC^a~X{tiC$?pk1pypp)9nE26BJSo8KXF)_RHT=tV zd)H3GAMecRHk<#%WW+fIO%S%*h`-h6aMF;(1ze{ew8ZL~Tf>9^@bnD0XL*d*i)h~` z76P4?&}MYeWm|izod5bvf5y1yIy9>D((G0K9V(y(JXdI^(i9B*Z}BkIf}P^4d79>A zEAnX3&GQO)v?VAi@}1F#dQWt`dLvT5Y58eN&_H7uu`e z%G|5awXF5(f=fBu|3KH}xf;YW?`NHsE_0;$b$T4}s$WD0C^_k!{l8@HY)#Ypa%yMi z8=k1M6EF429@mrQ?)I;0FQV=X?yY?RJ~W?!D~UUY7~>)d-s zUa;-`+=?Z>{k%~j`nRTLY`ww}O?X>N9>t^YqJFC+UPHCvELwKf#+|CJbVvz2|7>=n`>`J zrXvfsO4e)8>(Rldw5h+}+mmT)XJweGfaqlgMWPe!{iP6Wv2B|a(pV?#x(SqUru7Q; z*E@4TMnL;)b(0ac5r=Y#iugLcosG>j`Y}h9RZ6vt6ghOs@M~y81&p{SS2dS2!hX zq%i5FI{gXVGMgMo083e-6sML!ogfPNP$yhzsli0SS!`Ewp59Y429=K}C$kSer>c0B zxF`}I(NeK)k>1sAmH(YG710;8B<Q_2u^_)B^tm%YJei}L4`z?%6S zO9-Nd?CboFiN?y`AQSW9VZP-Y2QrkyAbf?MviVAzq9{dlDxp&uohVAMQcb5Fl#hZw zaLKlhuIMy_zaXh+X)kaK_5v?76ckVOtaSIpx9(guH(7T+JZ-dFOCDAfS{oiT8?y30 zF}bZ9SIxM3Kv$o%7>degYZeQer;dMAf(-}S7E88Fo%*wU_gm+uj>Kyl=g+Mgtk!zS zbo6ePwOoA{R|wQlS3kcaURtwic3U?+*ko{)P96COp{I^6+N-C!9$MU1H&Tl>OdWq{ z$;Wk#p?c$jr958YS+JBowB%STS4--x?$r}Ur?uiiouP6wOMlL2-TF{6S*@)P^Yg9M z4?S+H?_o=swd}!mLrvX$;hnBkL%#J(MwI6&pE|ly+c1CnL(7kmT42RWvU)?2XX^M$ zgZED1he&f;n;yXXzIp1@O5>(GbszTs#Jy^8TXRvfvP}yXcbv|}Y9W*zMR*|2PMuJT z_=!c!Pld$Y4O1sqysdXm{}}1K@X9Ty_sS;UoijgnBiI#n2Nhqnb-_{=r*rwrhK=)E zsh9$!7gkRlTk+J-AG#y08eH_fI@U>X^wfzJYaaD;t?1`k^fT}K29ehA5Zk&JJj~x| zEq#E%NA%cc-Jm|k)dM$6%Mod~dQhU~(}v$>-6-;DX*o#K@@YeD!%*|`tk!+%H*oc^ z&}glDn5CW?>8f!Rrz$>CX?hOfPaMFh>{xvtKWjIe$ALvr zuu0iC=a4#nAXjoqIe2219oRlz?6WhFC+A(LQcKtUq--spCs}0Y1&{8rdWntI9VoK^ z8_hd(8_gF^=6PMp_mL_5FW?0+i52dnp65pcLt_%;TegoDS1Us$4AR1vx^p`s-{6I> zlz)Nt85H6DJfv9TnYgFuh+nyglznFoAbS3}iNNT-wlfE4|8guNR~@*;R-kDMw^=l9 zaFAMM>eLeIxN{cY@{BYq+97z=-$qIbubL^&R%tT!R_0AQl7Y&wJ!<9Sb0^I>8duEX z-wWf3R!xH#R|OFr z+M7oWnN0f}2$h7cTe0k=tNU=r^C$WTPd(rN-1Gf|-MyWsx_Ww#`1qDww6`={GCV5F z6a#@aoE8O*)28u!+c6$8IXHpv>1=C5#Mv6eLcz;}gS3AU`=WT}xjaU(dng*aDC+#! zWhxv|86*S*8yy>M?da?5=|RX%1cM)fHAJU~g1(w*vAyV2WfM+`(sdfam=w4L_$ZV0 z678{*Fir#sR-vEa)P@QOm!|i*TKOL#Yw%g*fY^Y2B}-=H@AV;G*L_zJZ2>*oIaj>s zYN8EG#r;zAvx}~S@Tjrnyq!IreLW}XT9dkqqy?o?MO5L+q~GFMY{`(^oPkZ11DGlu zSWi99!aJ-PeI{SAzDAG;5t)sxT4IADdK*3glx<82oC}QlhsExlm@u@N6BcY^t6kcV z4?{v3fdbSm%XO1c4IBY;5$B>PkSRwO_&STZfn`;E!@0eHdCUm5F&tPvDBhECIxr9j zPsMClYX?EXCR)^7Oe3-VC9gY0S{3b~GVm!s_I(2o1u3AMZxC{$_Hxpr6Y)qbw1Q5A zbsLdK#u7QA5h-&6n_ub*30FO;e*Znq6yjmvvEV{*rt6`ZuD8Oo^^4982pYLoCZVC% z4L{tXFt+JOKuiQ0{_yojjr|Y;ny?OLdmmHV*+jwE!k&j+QAB64Or)~Zi3n_KSH8uH z2i8XL#G@X*?HMqHKV|&U*X)2t2TjK{qKIv9kdIinY;Aw>CqF^MS&%REl}&he%oQ%K zv#Brj6aA^qFuGWXqJPdB`wW^S&hWwr^6MQ<@&^YYQ~)DUh?2p7V}_d@so5 zaRB>F*E=~;Atj~6cO(}%RyUG|;6Q-wn3$0cfzSJNAT7~mPkMTV+;n7e3iu5p9OaBS zn|@Q6sMwgIFmV z!P@|!7Y}1Jg4|gIlMJg+ci**FBD!Mq_+J!yR@`M|`B`>vUUYB%?S4dSDA-1uG;OC% znznOj)sL1y)2VrGdn@j69(tEPEYXVsDcwyw9Pt` zfiW>sh{6IqyA~yjN3?R}u$E69ht!S85l)C02|@=f_#rV|puv7cqDjI(pd-Dv%}nG^ zWIcDf`*6=!5?OuEAI7hWO_eiffii?s8XCnM8J`FZg2|C4*P>DV)B7}PM6Q7vauEb; zxnN_gfJ~0w#e(gKYsL3zp8aynxp7YV!NvD3#+>a7TG-lj49eh=hVCYhZ2Gr-0ovJj zE!|Y<9^1Q*@uzB#L?4f~B&I(naM*MmA-yMwy%IzTv{IvDjE5c$AXpUhvXjQ-AhA0` zia(g-!PvHn3Wk|tGkHb=R~YHS5YXxwTJxVav$dU4_lUX>5`O6lt09BuD{SEu2pX%n_>%9_MNgNW&pQGp2<`^3Q4LvckO85I#x z6-jT-4(wQ=f{A3h*adL4Ml5`PO<__t`~L$l*Nb1|_T?ii8Y?J@><^}qAC9?+(-gp@ zIV6b*%%BOFoo&0@>?IZtJSyfD_MS(0MeHI?@)MVc@F0j#@tAYsbt0Rsq`HG70S^vO z$8$Z{_C>+Y>ubVWtwpAUgU5ASLi;JM2P1z^vn@2URi;`yz*J+KD`G}j=(Z=?5gJjG z38{#d5fVs)ETAPqHv*%>$RhTNrmh05PI*13ZFsK5rjq<|SV;)cxTm+j`*e3-Kg8m}zW&qn)Boag-F?bl%FATYalF9& zfz)7fEa6ouCL5bf(kLstkvlC?4pV%urHCvvojS>&k}?E|HQ=VaMuVdOThSuOYs~He z?kX-@cJGe4cSpP74O0ZW);pWv|6+I1?f}m6*@pMsOHTONRLnKRikcAgF6T<)m#BfAT`Qq#tj@0^TwV~^J8#9Mo4@78!>>08IKSGA*pdt1HM;p^C9?7eL~ z3>hjLTti^QKkO~aXdpOA{nAS(lCHU&&_TCdbUH?-Q*>fR1Lm1e9+*t$%ln_=-X*ft z9!S>@liG^uuD(xQ^9|f-`eBD5-!*kOp68r8{LqqTEm*CwSv?Qk7Hh*p2UK?tvvRE4 zS4*<2TUDiFHng)`S&S=am$P!;c&Y(+y1hD`OJhq4S%4EC) z3+RXvF2a<+me;5~j}HxTo`qptzA3w>nX&tPi*{ZTFfxPlj{XkM88{GPHx!$F*t!FjLUjIEF89h16ZaiLoSRi1_~Px;0pcytJWLR+e# za-pE(dYqJ^gj~P{Kc*F+Y|shO=HaZpw4`e;APCbaZr2hi%O&SNx)-i0pLqv}b4RaK@P@U( z<iWN7_Tjm3c#k;Y&hbn#a!#F?J^@HQ@9gjKN z7Hn-C0gy!%TM)P7M9mn5K{%1{nHBaf>=Ucuvrl1S z+QL6XSyM0#?%AO-aJ!l5xNcy93x3eD8h_w2Djp|RQ15|&K*k3n%1k+Gn8R6o>YlnHYDaYrkcJXt{7zNP= zV(Wnyy2=cMYdSoAM^2s~iCBHA=M{XPnf5*VnejlcGDy`+tFoWc=+vpNa`Q@F0ae+h zRhe>pt}2&(<>ZO=YCY<~!}V&doWUnQGd;Uby=AI5oqAI09q08f(CSS&K3Bc7J2_ep zmv)SLj`pLTKxb54ih4{N*@rFrYFk^w=GNAAYIvS%NT*(X4Qu0hMJbbka(u2D+Ph@n zV624zBOfk8Eva_!^U>0LtOu2|RD+B|PkL5`PW}1{R;PC%fL)A`WIa8r^hsAdU#b1;BSM2Yk;Qim|cYBeNGA&^~HZU!s;vh2WM_Sw3Uf9;z*4EYE<@pK&jCNmpTU&Q;lgO+E(q_#Q-&R`-O8WF4 zJs%2}~GuZ~0H`P$ss zSaD0t(SmI)oMj8ndbr}xmd-sBD{qOpT4t=D!jMopGx63p7HriIvJLsA3wd??y+EwE zE#_#8c7NL=D& z1Js(0Xbn-q#<t9<&(pD^d_5y_$k=aLwZcj7d_zX6@on%wDv#$?)IlIJyFJ|(Spg+ND6M^7) z$jN79#(5>3E;E7cNmR&}j<2 zpb&=UEvKZXYI%M?v=_9nK$Q}I?{Ph#>OO$)CLpIlBSMTlCIulfHu6Botia@OGrJ#% zD#-#Gc6`J%Awf~7#nj-LGD3`_m@{LLsZ_xwSrVbv%#-B`bqt-RQ@e?hp01ltPn?+~ zH$t_WRv*(%B;cr%S&cCvd-f@z1IcdE_8s8hLg+aN{4B|rH2h4sc}E+Ghpi_%+nC;w z1vPIC$_Td}3Je8(lw~76)v7=z$yYM+;yN)P&~P)M9Dh5Cd?&p|y;CUG;Shd%G^K@cuFmAd-*_ozDj-hYqlb```yg z-eBYhW@CO}IdU%izziSoEC%?4*#{g*%hjblkx!WHlwD^{0|k;pF3hyuE_}oC@NGBh zlq%5kohDsZloDskQ@RpDGORpZ7cX;X}hEjX)}Iz^KW4RdJFEJ5qGV)+k;v-Bp;r&;cl;F3K%3StJN0V@00fp z?AOweYL(iNdO$uf@GSlgVl=nvMzaI=+jRGbaKBx5--){J!24a&A!#RmyYYON?)hP9 zH)?-GdIsmC(jJ_9z#?=qEq3_NPHUV1QvvFQx)5xQOkWP|AQW51J%Fqn;J}WDh+s5`lKDaVstnQ>*%5JZ zK@Bk&41?lr?5%DX6!yG`NpWB&Lvk%iJCwpm?vyEFzm|_Zw+(|f?Qz78JK;ze$(k|; z5U^vkE0TrS1*U6Wl;+m*CV!P`q?ab|wJWGqMP0Nsv^`6+Gos|u5NYGtfpisBA>E!i z9W5%vw<@%ElE0|8Xy<4)_955ZV}Ex;a(D1^)MLcxvIBM8s9h(2u{XF)t0k5j(Kr-p zPqDvcb;N;`B9W4ZyIgUXk2}#z5hw17wP&!Rnl7|zcgf$R?;YEnvMKpQyTZ9kZeE;GCavV)-BR z`Gb(;$>_)QaAO&~Pk>3V3X}+>F%p@ya7k-E$d%Dtfxxem>Vl^!hwx>Fy}6i4 zl9wYe>Uw)~p+_NL@v7*Z_P`~ATO@0^t~8!GQ*$l_#wJjce&ElPQqsait=*fH5di98 zI@qT&^?M*Vcx7Z*XDMenx#5YroZj)A0`^ue2ZFNdsmvayl+OrMrt*Vh6UvZG`&95Y z(3NL&0`jRs%MD?C)~d#WUTLxp5v`OD@N#rQ4R4p2Km0isC-Tn-4`h$FUpzBmK(Kiw zS)*5UHAwjw8j`Hdnn4-zk7D=GL1v5A796K{Ae9h=m))=g=^&+SK^4jN9`x)(&b9+= zXXV5GVbQ}W? zay`RSpY{x&pj*v?Zxlk8+PjQBq^G(Dd*o4aM@*>=P!YzJ=mJy= za0a2}15gvoXZ_e-jJg9Ew5KUArhBh&Lo#L?O$bZ@Y>=$~G_O}m3Ft~z?KNX0a6Fq8 zx-AJupvtC>h2uIQR(ygSgD#~)mw20I0nC!<7qkJ?1Y14!lRpW7SIFz6jKLUWa| zrp7Ix)CzGg@Qf8z4l0`|r7(!^$pG6?d5|N@Ac8juGz#r4y9QoM6c1&B@I*a)Hklvz zV5aAT9LN(E>RaU^)nu4Xe@ds9=tNG@iLCPhXb?ve?o8+|K?`dckfnoiqD(jNDL|HR z!%=W>Vtf!o4-gDZupKlL1$=VA{hYb|V9kiqkACtNr~&DC4<@ozj)Q5kS=X`N;ZzMlN}x;5k$ig;+L&3Nx&l>-ZCNhD?11dwYwjY z?qv?;K;!*oqrp)aJrMWQN4xGhs^M@_+qCT267y_{b}c!o<926sA9jjfsP0-U>|Stm z$K7R73)YsD*Wo8WUfFQBa`Sv))UsqNiBC6(Zivg0pV!@^Vwx-KMU1*@oq^u2@+YzI3za zM$hcTs@YiHc*6>pqw?z6=YPX~!}>9z>lD9pJlg$<&EP1CSJ%J$wOe0{cKu54O7%uo zd~pS8k{d6hpS-xu@pkTX?##~F-AlImcu6JIa>ZU4eHN|t?x%J(#JvaTw=v$*MZaG5 zd(Yv0kY&hoFFTrJj^=sylEa64@0R7}u2^%|kNX#!kFl4rif>c#pcr{qtq8)XiyL@BNQyiso#BaE@Mxb*(naCStp3Q`rWdBIQF3G_m8LspA0{0&*=^{+bvbz`S z>b{IKi&Vzl;bu`-qNuOG<20V>^QiGNm3{O{`Yu9}vG3)8BJh1O6IS+R9gbT8H&erRy!?Y)sdW1YDiFDm<9=W(u=ysT>83OB;$eX9mjbIF3c9^WdinLTskWm}l4B z(p@O1yl%OyIaWrG@0IO&umPWZ;4!$0qYeg+DPf8TnCMSkN(Vqfd()4!wN#TGVgm4K zHNv9f4qx_928pcu+00{k#1bkbvPmMSyyj}pmroI|!uUw?z2#yUv}JfH6wvS4tQ@3~ z9YOtc>ywlY8X}cG@KsWWFg(g3%1f$>lm-(7u?COgF>So9GxrOOL0YfOdag`(26;2- zg$$Xn3-SuhO0t`gN|uDQ1F89GNw`I71`L5zq0vdcgH)lpNl7h9-f36JOa4=72e6rn z=dNOD6)-8#89ebTwQRIUvMzEb7U^huCT%eOD}6s@wJv4^kF1@y(p$wTr^RLpJ6MUtPIXZ_9Qy$3@DWq{!XuvhUyqi=Q zF-NIRdB29_a4y4047(jAT=eV623+JY6jXl4GSmM~E^QuIf3xLA%bev0Iq&7nZ~xJO z+Xs+Hv5aQj?^fKZnD6@0iQ6X-n(*c~Z+!Dk{qOmH$A>_H%e8xAwR;%u+83+ahoA+^ z4ToY4hs4FFPFq24)C!m1;#~;rm$Nh4b>C4m(>=TW{nB~&d}y(D`#r}FEDOuox#Dy` z66f@y()tB3n1UIU%Nm*Fs{^kX6$c1rMuLwiX7cYs5k0C}Cxi(GQG+Q7G}{$P2hVz% z{TH$4JxLa4TWPCbl4-=)k-pBGiQN)NJ z)Kh_pcap6cCX|_0Nr5I&2dE`Nz^GWoPY%X>?y7vauz0Gm0BEA~H<(gDl%i#)h7fk< zD}Dhznhs)35AoFwd|9k02Iv@F!j%-nzmtmMGJK&`kU~$f^3X$Qsw&N*Y2y7gU(t0J zTb@C&0GUctTk-g0RTUpV`{8T_binFKW*2?8qh9I#%z8__&et)R*|b=&&V4E7Y`p92n%};>xhuB0Yr)pF zmQE2r%jndvJ}r>!0@g52uCr*C^P>nVjLPvNV$85&%0&1Yww?_9G2wCle*zBbOfDlL z6v`L&LC%M=gyC0$DFh_olBK5jOVP#XRH?d|(0{7y6ixY&z`64{lcPDDaiD2I*^Ea> z(|f4O8tCV+5HLB}pt}Tc>&g`lUFu38%^8l(HK2l&>N57ECA~~l;ed(6@B(idQyWsd zQVJwSh803nOs6;EwbU1+ixe$Xftu4t<`UGX0mE2ol-?H9f;XIy8&j^esIVkvIjIrY9@fi)Tp^$wE4-3xBLSfMF|ozK@y3RxxYK3%`qml;wpJ zNZ>S#S8{}4MGY2FWpFsLP5jmAs|Xe}S8&%}ho#4Hm-}Ykjl5ZZ%;kw%@7s$JPGWG$ z-U=={dLr(0>qBv+ERUdh&frMG#p5JRMp!6!+5t!q@REFlCCdNnx07SmFNQ1m0a?KSGQdgKD>&oboXk(S`P zgVY7~Y5UCKWp{ndT|f8bMR&_RTPwpcsev@8Q5*5M>On&uyFe30!c6p;t=A@Wm3Dwx z^n+Q1@IF&egx!oEU^4~dti4AIFxkRR+x49==dwFm z+sH<LIzUr)KIqC-CgOkr!i;7mr|%90NMqA5%>o<>B#8KkYY1b_|?r`wH^ zd<|)`!SFnC0cJ|gX%~Q}Sd5u8BH{lxRW)*OnsClP!6Uw?vQEFK5*p8CcYDm;9_?PKs9CPq z6sy<-l}Ao>^cZ}OXY$^^aHrzG8(eBcr1Y};HFa})7HfRbQ_01a@uIqUEVgW0aaY9) zN)`(0=Dzu%9Bb-aag}}KbjPckmaAK1)vb%wZ8N#|i%Mp~YVh+o@)uSuI;uX|fRCw* zE)O{l<*yBV&1k_Ks{bUkfQ1a-liBA5XwR5Q8*o9OEPO;gG^ArRz+1zZ^m@T!1f$N| z#iWKPe}>kRd(Hk|$JmNUi_nl@yh6$tlq~6Vh0R{jeL>oFbEaRgOJL~{K7DQhVjZ^pB4WHy78#GZ> z9^IS9yt=DtM(H!64na6Vp1N(RJ{pgnX>y$M(*QDm(@F#kSfpq0;Dw0wtd2{R}+a8fsU#GZ4AI4VnQ zbCQJ7pD>GXPm2j&%EfW$7@LLo$j4&ho8YG zc9gW1tP*)-Wc3U#o?N#Lh=Q4gnW%xi;3#cmCSQBRG-NU&vKin|V2!jeQGak3oi>Q4$|TEF8>jHLn&xgC?pu0CytM4sY!9qRhg*lUe4%{zV*WD= zwrBX1pedjo^hq`)_TYj^9oiG!Z$_^M*w!?%0IjPrJbjv}I0-kXUV=2*bklSZ>zI=3 z3)Jof${;)cn379PrX%?xj|N73b(1QXW23sWP#(g&lSf@s{rddLU{FFm>4ReLPf`1X z8B;=KFcN0efeEIm494#e!pNqJRk+^$9E<^|j4 zNA%xwcyB$ajqH$GU+H&_1o@}_XNUGY2mpgG3C`53{zg==AALw+QOTJT)ok{1A;ZsY z+FWN#rV~ki85^cDp5BI@I+LI=|lXg0$fZL`ihD#=#mbM zG>s-#H~av7ssY)5L#efNVu6~d$0-v%# z8Xy-Y2ZLir%o7edWdC{=QS=B5ZmUuBs2lY9+Jp_-b=E}go}k@TQZtG7!X9(Z!WoHn znOj(Ak6vmCYt44nnoQmbnQ({3LTRC0O?-fVI15$Bu$ig}1m06*pYppjMSm}Slz3cJI1P`$&(KLTlf^>i33b#9 zV1qI2fN7SXwg}>V9Owl{Vc87Ll|`!q3en3*14Y% z0ZJxQdo&EC(R`vUZ=m}!H!FK^5U-k@tEiMhBdd;L$&|Ka)xhoY{$5yTeHNaOCJe zs*-8|DkucQ<>Z~`>*vt}GR%cD*cd7~7x>*)svEJDgocXN5?(R>b*w&-bwYPWjQjAM zDO!&AX&j;k+VD1ha<~?>2bjUv%b-T)W1mD=)jOd9xcb%Lqpzr9`mZ+qVY-NtpMhXF7oNP;9tfbSRhCM1fY zMCwI7DT0-R2lUlIa9d10&}-B|JQqwAv4M!z zW%lU89HAb3T@ne0=oZ@O`2wDh^T?*KrbHvDfyTTLzjjkUQcR{`Qmce9IueZKuLF`w z{<@fIOHHveXQDh0Ai`-(A^p1A1P)C5(2o0|c%hPMn-M9i?1mq)Bj_wAeXB0^S@{?S zWi#?Ea-ge=5rG*Q=F(v1n=Zo}4{td)?bi5dsD0S)LpO~YC5^n~p<=X;bCZV(?oyln z%m8xNl}tfIR2^v@}#Fy=? z6NT#n%HQB#N))@JfBUOn|N7VCSK1o6NFa1vRAyxDhC?)r0HT&UtyEn=Q@yfrkuc-o zvOEl93}@OT9-mlfwolOT)AY64^|*^=y*OSMfOjz|2(&ryO)BR?6Gg0xnT#^5 zsEP9-rnj%Jm!?4!S255td@@4MZ4LK-en+I|<-^ww&lJs9u3s!Ek90)#hA&RtqozP! zvfB#!?0A-w_Cb51taim=KWQ(#ZL=2?LQXEIpLz19S#oY3)WZml*fzZ_^3a^ODduik zEbv{ep018M=L;HVPR*XU(Y702A6(+t7k9c)n$Mh*irSWWLQef$1tPuz3n!tmbbxoEo$*jfY zmPl8SeQ!)=V@k&On689?Z3BFWYDB?+W(%7>IcXxQwtg0@b?k$5&Rw0%8vo~S(KCt+ zk1<~LV^G}=D35`=;n~8=BTbV1&|SWcPt##$9Cd}LDxM}~u0W_ZU4Rs3?O2Fj2N(%e zO3mo&8+Z~cfpDzl?+?)g_!3Gn>koh0O_z6KP~P&CMC8a*^PVR0?df?>v-mbX?^#1G zwon~Lipa(GhP$4A!$ucre0lA)wKv?2x7_(*=W_>N@*)t3&wER6RWwA8zxL=WkIq$e zkfx~$*+#pkE++CzBAZ^`b#2#7ZM>p&F25Cdwn^bs#d65%K~DpcS0M5s7K5J55^f=F z9l!f)W9AZ(hK#d@C6JUCYM-0lRS0G(P#LyGAwdy!RvWXM8f(0OIh4X0qe~Gzr*|oR zAEGW5k}sYDK~S5fcbX+%^Q6+Br%rtytIz~P&V_#Lmk)qQB6e-HIM05sLV3SheFGqL zPShlHINC4j1zHeV)D&MESx=(k@Y1-UjeHg9GISyL;?r8%9yV+DBYs(76^m-rhNmy< zT2nw;iI?v;{Oq)7MoV>0i<)RGpt|W8g~0Y?kew0FzX$!5@*=?JP{6an=ZIhD=w*;p z!`c>zw$EIC=DEq3OXO)wiJJK6?_%8tzl+p_X>H1nFnH2+5|prHR3uhI(^bJ-KQKnE zr=iZ$OKRJdPoTPF0b=SY1RXJ`YAEI@otwgS^quF+VSHhhUta`pK;0np0JlWro?vv6 zt#~(-(H95SDSA<{=m5OhlVf20*{ce?gR0D9BahJDV&IrHPo&N;v&$M?{IGFL&LPN1 z#ay^HhK=E&svb$reQpFI^iu|qYl&TsTPN5h-#L!qcKZ$GE7KJ7QlWPo; zJnBJEZ_9D8WZ;2B(i5_GgP6deKps+tjSKUonXhP8-KL0bA5hMUsA+IHYtG#Tx0!s;^A|5)jJTprbNPXoD#x-v@WD=c#_HwsLg4v4KVa2 zczSuf1daj{aHCvjbVmZCT2o(T0h0;vZWpD=?8%&S&LDt$>03&h;AoM)p-p8I8KDx? z{{fB!q0As^3p!Ds3usK0DYaTZY4(I`A_KJpjTl!-lR5nUq)#84$PNK%O4(u>9j*~Q zo=zJb$Sad|hE&~Yo5rt9W=#OR6XT&GtpI)k?TN6mvL|xhP{$Waf5=E+2Naom9MV1f z2<0;9Hs*0pzZLe**C{``P(`QE-t9m7R`g zT#IzpU!)lxrJv-#nDq7@x&QblQv-FevI}BMz$3~Z&;^9h{^vx$3TE+iv((9G&V7Z-Eu;CGSF6d%Udut@?$H2jd$L#!Byv=ikdX z1Z(4^aMNmxj$Lm+Bym|QB8kfir)4nTg(WZ5FO;v3#T5d#!v;<6u z1%F4}-;t=SjqaE&OH>ACb}Y+|+VY5u3VdZ0fZY+V?6~3W(4G!0aTh*+r_jU_ZU$Umh-p4ebQpl(aDO_@OC>xOIq4C;T*J!xCY$M`y1R( zy0XpW31{U?cL23mEIvw+sU^gwr)?7sttD4JZ7OL&jE$0b_77Y{;PLgEsV-mIE%DQ+ z>&mwglx$a8euw=jU1=V(kJ;bh6fDS6=wDaDXI#h1!7F_T+}C;3_!9val*nr2BQ-p zRls>}5Qblq?*!v3)9r-S7!DuGuK)r7TQTA$vh;V zCb$epV2m3^|YD)q6_!%vM{{uxu*ofa&R5F#d=&iWn-5MELsM#8? z**fJ~EGWBU^JHzD>IN>3w=ycd=6c07b8zql<*ws#McdVF2aOEVJH@W4hDBB zYB~DEsMeTd{@=WE?yZkjcMIpJCw&W~Z{i+#Ql~!ybJg!l*FeOQ&*f=9DDLtEUbv=2svhH@_yj)@&Aa8spSZvV8?( zoJTe?sDwx$hKL7snq|ldM!n_npo2#Cq|Ecfq5K`zZkjb|n*lyMnF$^YLi9e{qyI(~ zs|sI+6Vbx|p`f>~p(Q>d^Tl zt&Wh}7I;zgS^-2qlzc2aUmv+7{?NCS+4uqGrIGD`V zJpx09A7oNy7)pgiQFgRbw$Qh|bV0s;fx!Gr7C$+99$cBp^^sL~LYSq+Iax+-*&3*+ zSZYZk29hG1x&nDZ*!^!PD@ehArmJ#Q9Fx8f678K9t@Ri;7qeU;`9ye_kV{R{fqN%2 zg_IgpmZ`zztL_d)L{!T9c8#2fPeD}v3+hre^n!mR&R`2sl*e&~rC!9Q<=)IMPE^)R z9U<`(LNKuTp5OlY?Z_5)_2KDfz8}Y5K7H+U zH1y)xYmQr0%`=WSkIh$YxK)jkFP^^Uc(1Z48k%qY*nH&!3IB$ef9E1DICJexEP%k& z?GeXfMZ-cxXS||w_Sjs-w(!39N-H8gFS?=~*YXnO5T3i@Ho;|UYJuk+x?v&5 ze*^q4RfiK&k|3PwpmlE|M4YY%4VA zv`i==Si!_Sv8)?>$59w08ECQ<&DV^Rq!=>W#FW3I5nIa3poPxqG!5M@T#uofXUi>% zI%Dnzihs*n)IywNo(+IMD%dNjehSfj3k}`zhVGcRdnqd;D_gt`^ZG=LGIM#y@rB;T zB`r30Fvs_gP~H8eUKcWBihYTNtGn=cn!-#qg{pcq zVKg9#P&EvwJd2J#0^yEa6Af!Iy{3MDs*z8#DM3UfpcV^cU{&-Ki01osbCQs$7_FpV zV?W_t!0lmUMK;||+XP<-p0;0M2~pUjAdzVWbR3xO^ai%T607yV&Yko`0b&}>7CgNc zs;z}ZK!W5pnT3zTtLG%%sPZ0Oh30(IO$X>`ngbe7kfFgb;d!n7dWuHhMwG_r^V!_K zSWX2EvhCB`BO^0o;q7zYZ87(@MfK3d8Q=9XI@l9)_lQwv=DEe!`e>f_x1ut`wws>z2P1*zKC2BLS;XHZ;Zr9UfnyZl-OcUQtzUZ zg|(NAv4kFN9+fjUWD=4cC={7RV!a;x?mLU&@UwR0DN(c_|fblxCuo+sE6rGDpb4UU@N6O0@_tIjOcJLn)rBDNAS}8gKE*y~^;9ssE zOfDBBDwb`MXEV9WZC*_w^mXap52X;gBZL!?yF^veHnSTkLaVyKM0_Bv zShX-&nvGM%`rp%wk3uhu4%OFR@KdRD;s4guFs;N!GmV9scsC3n;Vq!*B6-T_t10`+ zatH%0$Eqh^zMz0Ql@k*u?ci5v;xuFQVu@{lBie$uIqq$qanGK9J8RB+@01JPch5h2 z`Psn=~4T>zZWa}ub*UZ)-Fui3TIRu?zrL(F% z2U+s(J=OuTclH7_b|;5moE!r_m|duT=-EM13ehnd8KFbT9A+NI?k9_BGDj?}hp~nX zr;(LB;p5YzMiB{3Q0lR_sBZ$O6c`YYKPp(&g9P3S`StPq`b1g7%tfLp4MbD65lvBp zUWtxq8>+C8tiLR13TbTa9$>({2Qu>_*B9L0hhV&>a06&IGlB4x8I;NT1&wG1_>YYK z4D>gL5c4or;p*@Jx@{wcra(bSuF`9|AMLdOD9#ma@v9b$X6Y2=?5bP_aG6|{fUdGkvmwpBA zOqv18)cYn726K`dy`yMmbBHQ+VsHoz0u!O3HfVrGWH^J*8KuwAFH}2W7-lDA06I2u z{sPD35+5Vfuhf3Q)!>oXp$)7Ll5UuL;R(2Kirgr_O&=QmP^JeqwNRn-8(sdBq0TnV zu7_3LKap}I4XR9kzN5km<3D0{h&TtLM9L4rRA?Gwl7NM>hf&x^>E}DNdyjTM!OjBl zd=3?iyNKDK{`n3OgC3M*LYZ3tXDWBu)IPS5H$>&=*lg4F+S@iMx8a=v(1P5CL}eYJ zyEIHmKhALjgD6}(?F4i}zGuoMSP!$|Lnjk2;0`RD;4^&#A#jB520jS0hm}Dbs71Pa z|D=makNLjpE#PNk2ZSJq3`mbO;SvgF5TFb--pSej3lQ3mPHy0nsJ|xDn~8cq^&4UoUUiG11u98*BQ#fF(T}|2_5pE5#3=Je_miQ zg%U)29z#i{Jw;{0EIXBT6NcB)N`j3+mWAR<3ZIWw%}R5{8>ey-`4q25kP^XY@66`e zP1ggUPM#hqv1Ze3|Lf}jOin+xcY{db3$ZUfY6KDPuWv+3>3^9XC?%ZFQb+QJdM!8< zY5a+USeL=liI{CX$EsD!Vih#;7+qsS1H(aDw#|Mc*6&gI4s~f-z^_sUq9wXgds8da zm1K%WFjpP~#Sf1B#^u7BiJS;jTv$tsTnGtSRDUANeu3o;WS9J$R5Vo=MG>)wjD7ra zNX#Q~u! zw(_+26?JVJI!bspQ13qf%;%p;6c&H}-b6vsLP2eufQO_kAC|#F?{fz*^0IutV7~k_ z&4E;iN*Z(Z_+S2x-t#6$Q_DWq#$E{VZ4f-nTsZ2W?G5o^vkD=_yRob_C{VoYSRi3D zP>LsXzcI^Nv~tpwA_A`zK2YORDQ}o&g8nisrojKn7c4wjohD>~FQZc!y;0TCCS6GR zb>S%VW64Z4yIG2|mdA#$ahcp~vS1btQ7{_6e41J+&O30f;7ACy?Si)@?roX#u37MI ziF>y|vMemVx^8-1REihYO=TwXiXsoi^BNO{WuHF+hsTBDHSyv#QwNsdJyINbXg;s; z7wlyEneNi=D(QO_cI;QBQesJK7g}-mFm5Z&F0ns@$i6(`(89a>B~1PMg}%?&O#xe((akZN?Z!+`b6T$UH#Tpdr|=?)8s4*Z%jXn$AX(vIFzLtWB_( zczSWu^i%v8qX2Q_xdv=kj%}#JF){0OhB{64sWhO73eL!vt~JfO7MrI=%sZjioGG9E zcs#%NIuI>-W3FB??=YwJjaU)-U#7HBsVwjtYB^?iTOVM1F8DQ2V9-VO(FNrq!kI#g z;o;k+5PPzUU!}(t7;zvw-PCCEcw*cET2G%FgFndX22vxqf#uvl@G4@1Tc)?5A-^yceH!Lsz-TbK@!6pevS6@U?j#iBv;qU= zs1G<{CLrb(-K_~eAau3v=q(VZ4BN=r>H3{Xr2KSqOiccg3iFI`93}bS_c7jDAzG0RwIyQ zs`n76R_c%Y=p70*{EFL_Rq%Z7<=ljO_bqqz%!Z%Jj;w5of$>qEl*ln;71GeI0-mF3 zTR=LlJV^JY0gGW)FFp>@hy5tWN-Jc)2;8e|z=uMf2TBL+5Q=D1!gMK3G1wS5KYb7U z%R(X*V>g|9fp$bB6!u=r9SR+TLwb+Ms>OL=6w=^}IId4o;p4PBM#pODn?m0nqHhdR z{R({}5~EzE6AU@{7X9STBcM9v+q8R|c7H;<@6+zz(e54E{Ri6pIqmMH-A&s47480- zc0a~02^=vvu^=vf3mw`^_hIv_pMJ7mJUh&@oBZF?F^*~@-&uux-PnCd$s_8)CMq(= zD8;lR?P)TL)-0Z`3TZWxne@ARcsS`cP7ItA)Q5yiG4qLYViL~eUumJAYiQR>yG_(a za>x|gk|=$n-D^$^lTV?qW8V-7#lFqPA(~iG{ZAcw6_f ztzNFW4P=`9lJLY_Uc;pWcbtWC;c`p9Tz99gL9V`YSjv&Rmdl-T>$2O8mQ~v2+B+^u zZn%@-kZbN_+vWN@E;~x&SlyiryX?E;a>#x|| zE>mLQ@ zn6u<&Y4wY)n6v0+xnKOo@vSju>9Vs$-g@V_Lwbu4T zU=N}emgN$8GwxC8kF9|Upki6}%7LX;Tk|f2zRmV8J2K>LaP%pwite3lxIVIME0GJ9 z+JS$0>EI%oX`cM{CO?LlqJ4L*6lgtpLmyIiK8$2aQJD(Y@>2}cl;C2V?*pyRXB3Hbhg)^otbcvIMhsVgz1+7Hv*LelF zIp7H*GUmfC-zC>BQvpZeI;fAIc=FOfX{y>Vo0e z9z-5xv^@vMGHD^v&e89k_@y)jpYGGMK;StS=R@;$@e#LvcgQ4s>sN9!_gce&D`-3MiL z>^798MLBIl2|ZWg@;LdU_Mv)GDoGZ>};xnUGzqqdN21=5-xB`18k zcmUJD1II5o{nWXVZuQocA-c6&ui^hmtG6H*B&n-bcCyd+`_nA3BK9dHvP_)dHz<`_oM8KKmHKCq-LrZ=-%o(P-)2B-yH~>fodlh)n@TP&3Ip&N2JZ*Q7P>l z=v6Xlioh-oAYg+a$dgDWf*)O`oGO}TDjKG8MdKwl>t8t*B3Nr4k^6JRw%ga#h8aQq?7&A-46Sj&@J z5*~f&)V#Y68RCk*?V4}u{{AQ4`FQO3!}Gn57}IX1aYiKkT*^Er(PL@^!&So|HED|f#XmTvhfBHfYkdEc71x~}(szi7VW zz%7ITJ^5z+d}SNtgQ99J@Rt)BX<@*}7aF_cjook8&Nc3P*VnsLK(zs%-dBZrxRMQ% z&zCyFqhIVYK||;R84pM=ivE{RV|O=%x$lBLmh!sZmnL8kV`AKjng!WT(@81o={5UOu2bddx9GJt z;X)|J)aWh|rVw*i1H$Cxp%;f{d|xmBqw<)yGv@9TBuO92xK39{?ZHtF7zIudk|yar z3euqWhc@*T=LE_S_hu?***mMlJOKeg9Hi3L+W5YC~!xu5()dMGy{ zjFln`UI2IN5En)|3zl6C&8q+D^P|HCQl;j!2JSLt;v1UPkCPD=@Rh_6Q`Rhq)esI4 zu>i+R{q8tIkuCm{D$E~<6GNqQt8}42gnXHV71fthNcfCkOw2h6_+%I(FcY%?x1ihlF}1OHyR@Xs0IHJqUl7>u5ZlJliism4BTbBBxSG}C;l}pG|!@);O)zyDw~qw zYlGxt$PE6(s~z(>&50ua)c!<8?bPA-a4dLrXnN>XFPH)#i+GA7gD;=`r)OuK-^%(% z*7XO!`|uw>e53sy@aNzjz>17q9h)9|wPntYl!sF82Ff?~%$q%PzV?`>9ex>E4d4~v z#8LJ_+0FblH&I(BWjdTGp7njJ>>FkC729w6$|EB$PhOjxdH8z6cLRSMn6KG~qU5xe zbuBBpc4lI(bjP&3SXv3rzpg2qe{1b}G$#8S*$eG^;_Z9p+V{?_?YU#iDX5P7n#21d z>uy%8xm8gI5UZm3iYZW@aE1Sc; zH*-AU<5wSk;bAP-Rj*ggj(%(68xwCI|I>%R_wan+V=VRDCI61Tf|ufT^9pWW5lw!% z%6@~1H47BR8a=45AE9=J%EE{@Yp9Uj3By2aI`xyT_&^^?|CP2G>@<=rHcdDt;f_eG zbUH(AZi`l{vITYOdK#l*r4+|?jf-)d{go}&HV82`tM$!b-APkrX7ACO)z9cj={eoA zS#RyuyR>Qzj$5<}9DvOd?15H)i>KD_L#vu-udXEvBFe>T&7zzHnppA~3Fg4R*-s`v zatdPw0clGg6NCh6QnQeSs~TCwsBA@Bf|z_TCf z-Vv-zI^iYKhD8fiP&?9eSjNhhvUbI5iuF{bj{bgsV+e%#b&Mbrm1hF~&*<0z+NE*jM~Sxg5>3tO)v_K5$bU8W z9c58vTF!WeX`&j{IPSHeuJ03NUBX#VR!YJ(B@3BqbEIoNr|He{>rLP9_@U$NHS_C_ zfV@&re7Tks_Stv6TZqbRzqUR4^t%=76P5Mh-h{7gsS@O6%DvQxvIw`L?<*y?ywXU< ztB!eu43LQM!gi$F3w$*&GxGKEKN=@enSU*RCS$I2Js=1R#Wnfjn*90P_FDxNk^Qgs z%ont9{QV2tqQ_r5@zoQv`@VJL8%N%5dZ*zp*8cmo^PLYSNV@`h&G#gbsDx+h_00?0 z55@84IfOg{-Xr7%oO?v|0yZ=Dx_;ylO&IwQK?ImFW;Aob-?1X0#(h_ zdg!ix5E*!@I@B%}p9A8pjzNeAK9MU_^ubStC^)=3f_UZ9RVn==YtK)3VU}R7<~QgH z-DA2}#_H_C%2ou___fh!d@8NhW6-*EP~huiSdE2oRBDV&j4Brdl}zGte~q~#tolsu z@VvG_fgp#k;k)9{2%Z4iq1mNGX~&uh(me?RN@O$XfYFSz+9mBn!K4F_UxJ9P#Yrt% zfeGXxqM*6`!=xq|>w{w+vfw(20jBI~XOsEom7&K0tUe6RmduMn8GR3Gu?k`!a-6P> zR=M(uEL`$0nPXinC>E^h;7dWMuwEUXZTfcOeDfZtYs+eo0wUKRb`n|JIlVLLi%!1l z-E^~}2Du+{{Yadm`Fy zQyGgn1yj2gOB!O{27sWv2kqLCXxF@()9_Bdd1~Ib5t+h$wYU8BUz35+TH1KW=FY8B zAK-a)u*_K7H*k|LuwNt%xv;^@VuK6-xV))faUZ?}t z$K30G>?xwe!Moq=nfJ6OJT(iRrW>9ng3dtSir;Y$ka^;s)|qD)*7wBm=jnO-(Pf9- zm$!sBk*BU5!u5g(ULfc0ZZbRuNjs*{;+)J9^2%|*3iF7j(UI=RL6&YdcRxbw?jHOi zM~+N5aunLCYGM5ET(-5r#o;lj5*`pcWO)-jJet;Aw=dhe;IT0-*$OHy9lYbLk&9OL zO7}~0k!UK_dkX*hh9!)*of!p$kD8;4*|jGI1};Diqx3`9z~23-=0#?TxS%kb!(V%(Eya_a8c6@k zUD*AB1bYNN#b&7dCTw2-YY+ONuCt)IU{d?EhZA||hOI50DjOGqt^O2;(57%d+(6>o z)MCQHl(;>OxifKnCa2D$0cTPUjUoV+JBt0K;Je8;(G=&Ta$=&w{F%myT{2m)3iZy_ z%~wwn!JsAS=g^VE11#^#P{bE^HP2+syVfJ_2{xUa)ixcXirkCU_+qx{Kw&JUG2!;{ zEf4eqzQ*70KRqyfVQ>@)oHb68bT=G`OkNCHbTc7RfK9&GHvWpcb3O4aKuk4_kJhiM!v^Jo2HsHxwiX3kH@IOuFFk z87!4foE<=x0%|bv^IW1Ouv>Y6mXq`pdLq|Vk=}arHuBR_qmg5TI=l|ucFFc$UgeVA zmV3btMmS`D%6{8s%YDiYs*s-zs-U7f!Iy3mN(VCUP7ufeEt!ivb7W&ZH9*PcaMeK^ z4bcGJBSrvCFdjVTs0D@i^>ZQul3e;zXQo{B_k~Vb;7M_zKpSO786G+{fCTk@eaZY& z=OM*#fOn{^|Kus54azxq_QH8(q?eLQB&C65j;WM#A8vsaaxBDl-ee{PAj9=mA%-`Z zOTS?7#<~R?u98WO18qWJ6z$ky?tUreKJFt#ZU{Wh?$7$s4I(vEgH-O_J`BW_ng^^tqBzD3!+iy(>0+ zuB<7Sx+VTaUsk#va7&fprWG4~uAC{Ikfg@&smS&f&_JniWx`P=wMS}JZ1`B&48aCA zmlYd6SF)W_L9DWE1+6bwaXX~KSWPFLDO|~>VtIa1jL#G{h%@eT^$b2&x-z7!Flxrf zN+EVrea82&_B{(_@Esp3r6?1*Pc5V5Np(|eS8VjTa;EA&r&JW)ykeuzm7vQbWrv+V zwc+FEOCLKV*<4;|w4}zrb~em88-7V|rSbg`G4-F#!1DP6yWCsq_(5hyuh;PdFMa=C Dp9^Y` literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc b/lib/python3.12/site-packages/bs4/__pycache__/formatter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35b7202803cc8e2009def1ba70b4c59d659f190c GIT binary patch literal 8467 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 kV+zK1^?x33ThTu(y;u5G=l%E*+ 0: + feature = features.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) + else: + # 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: + return None + for candidate in candidates: + if candidate in candidate_set: + return candidate + return None + +# The BeautifulSoup class will take feature lists from developers and use them +# to look up builders in this registry. +builder_registry = TreeBuilderRegistry() + +class TreeBuilder(object): + """Turn a textual document into a Beautiful Soup object tree.""" + + NAME = "[Unknown tree builder]" + ALTERNATE_NAMES = [] + features = [] + + is_xml = False + picklable = False + empty_element_tags = None # A tag will be considered an empty-element + # tag when and only when it has no contents. + + # 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 = defaultdict(list) + + # Whitespace should be preserved inside these tags. + DEFAULT_PRESERVE_WHITESPACE_TAGS = set() + + # The textual contents of tags with these names should be + # instantiated with some class other than NavigableString. + DEFAULT_STRING_CONTAINERS = {} + + USE_DEFAULT = object() + + # Most parsers don't keep track of line numbers. + TRACKS_LINE_NUMBERS = False + + def __init__(self, multi_valued_attributes=USE_DEFAULT, + preserve_whitespace_tags=USE_DEFAULT, + store_line_numbers=USE_DEFAULT, + string_containers=USE_DEFAULT, + ): + """Constructor. + + :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 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 list of tags to treat + the way

 tags are treated in HTML. Tags in this list
+         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 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
+         `Tag` object. You can turn this off by passing
+         store_line_numbers=False. If the parser you're using doesn't 
+         keep track of this information, then setting store_line_numbers=True
+         will do nothing.
+        """
+        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 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
+        
+    def initialize_soup(self, soup):
+        """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):
+        """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):
+        """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): + """Run some incoming markup through some parsing process, + populating the `BeautifulSoup` object in self.soup. + + This method is not implemented in TreeBuilder; it must be + implemented in subclasses. + + :return: None. + """ + raise NotImplementedError() + + def prepare_markup(self, markup, user_specified_encoding=None, + document_declared_encoding=None, exclude_encodings=None): + """Run any preliminary steps necessary to make incoming markup + acceptable to the parser. + + :param markup: Some markup -- probably a bytestring. + :param user_specified_encoding: The user asked to try this encoding. + :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 for converting the + document to Unicode and parsing 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. + """ + yield markup, None, None, False + + def test_fragment_to_document(self, fragment): + """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 tests. + + :param fragment: A string -- fragment of HTML. + :return: A string -- a full HTML document. + """ + return fragment + + def set_up_substitutions(self, tag): + """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. + + :param tag: A `Tag` + :return: Whether or not a substitution was performed. + """ + return False + + def _replace_cdata_list_attribute_values(self, tag_name, attrs): + """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. + """ + if not attrs: + return attrs + if self.cdata_list_attributes: + universal = self.cdata_list_attributes.get('*', []) + tag_specific = self.cdata_list_attributes.get( + tag_name.lower(), None) + for attr in list(attrs.keys()): + 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. + value = attrs[attr] + if isinstance(value, str): + values = nonwhitespace_re.findall(value) + else: + # html5lib sometimes calls setAttributes twice + # for the same tag when rearranging the parse + # tree. On the second call the attribute value + # here is already a list. If this happens, + # leave the value alone rather than trying to + # split it again. + values = value + attrs[attr] = values + return attrs + +class SAXTreeBuilder(TreeBuilder): + """A Beautiful Soup treebuilder that listens for SAX events. + + This is not currently used for anything, but it demonstrates + how a simple TreeBuilder would work. + """ + + def feed(self, markup): + raise NotImplementedError() + + def close(self): + pass + + def startElement(self, name, attrs): + attrs = dict((key[1], value) for key, value in list(attrs.items())) + #print("Start %s, %r" % (name, attrs)) + self.soup.handle_starttag(name, attrs) + + def endElement(self, name): + #print("End %s" % name) + self.soup.handle_endtag(name) + + def startElementNS(self, nsTuple, nodeName, attrs): + # Throw away (ns, nodeName) for now. + self.startElement(nodeName, attrs) + + def endElementNS(self, nsTuple, nodeName): + # Throw away (ns, nodeName) for now. + self.endElement(nodeName) + #handler.endElementNS((ns, node.nodeName), node.nodeName) + + def startPrefixMapping(self, prefix, nodeValue): + # Ignore the prefix for now. + pass + + def endPrefixMapping(self, prefix): + # Ignore the prefix for now. + # handler.endPrefixMapping(prefix) + pass + + def characters(self, content): + self.soup.handle_data(content) + + def startDocument(self): + pass + + def endDocument(self): + pass + + +class HTMLTreeBuilder(TreeBuilder): + """This TreeBuilder knows facts about HTML. + + Such as which tags are empty-element tags. + """ + + empty_element_tags = 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 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. + block_elements = 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 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

 and
+            # 
+
This numeric entity is missing the final semicolon:
+ +
a
+
This document contains (do you see it?)
+
This document ends with That attribute value was bogus
+The doctype is invalid because it contains extra whitespace +
That boolean attribute had no value
+
Here's a nonexistent entity: &#foo; (do you see it?)
+
This document ends before the entity finishes: > +

Paragraphs shouldn't contain block display elements, but this one does:

you see?

+Multiple values for the same attribute. +
Here's a table
+
+
This tag contains nothing but whitespace:
+

This p tag is cut off by

the end of the blockquote tag
+
Here's a nested table:
foo
This table contains bare markup
+ +
This document contains a surprise doctype
+ +
Tag name contains Unicode characters
+ + +""" + + +class SoupTest(object): + + @property + def default_builder(self): + return default_builder + + def soup(self, markup, **kwargs): + """Build a Beautiful Soup object from markup.""" + builder = kwargs.pop('builder', self.default_builder) + return BeautifulSoup(markup, builder=builder, **kwargs) + + def document_for(self, markup, **kwargs): + """Turn an HTML fragment into a document. + + The details depend on the builder. + """ + return self.default_builder(**kwargs).test_fragment_to_document(markup) + + def assert_soup(self, to_parse, compare_parsed_to=None): + """Parse some markup using Beautiful Soup and verify that + the output markup is as expected. + """ + builder = self.default_builder + obj = BeautifulSoup(to_parse, builder=builder) + if compare_parsed_to is None: + compare_parsed_to = to_parse + + # Verify that the documents come out the same. + assert obj.decode() == self.document_for(compare_parsed_to) + + # Also run some checks on the BeautifulSoup object itself: + + # Verify that every tag that was opened was eventually closed. + + # There are no tags in the open tag counter. + assert all(v==0 for v in list(obj.open_tag_counter.values())) + + # The only tag in the tag stack is the one for the root + # document. + assert [obj.ROOT_TAG_NAME] == [x.name for x in obj.tagStack] + + assertSoupEquals = assert_soup + + def assertConnectedness(self, element): + """Ensure that next_element and previous_element are properly + set for all descendants of the given element. + """ + earlier = None + for e in element.descendants: + if earlier: + assert e == earlier.next_element + assert earlier == e.previous_element + earlier = e + + def linkage_validator(self, el, _recursive_call=False): + """Ensure proper linkage throughout the document.""" + descendant = None + # Document element should have no previous element or previous sibling. + # It also shouldn't have a next sibling. + if el.parent is None: + assert el.previous_element is None,\ + "Bad previous_element\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + el, el.previous_element, None + ) + assert el.previous_sibling is None,\ + "Bad previous_sibling\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + el, el.previous_sibling, None + ) + assert el.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT: {}\nEXPECTED: {}".format( + el, el.next_sibling, None + ) + + idx = 0 + child = None + last_child = None + last_idx = len(el.contents) - 1 + for child in el.contents: + descendant = None + + # Parent should link next element to their first child + # That child should have no previous sibling + if idx == 0: + if el.parent is not None: + assert el.next_element is child,\ + "Bad next_element\nNODE: {}\nNEXT: {}\nEXPECTED: {}".format( + el, el.next_element, child + ) + assert child.previous_element is el,\ + "Bad previous_element\nNODE: {}\nPREV: {}\nEXPECTED: {}".format( + child, child.previous_element, el + ) + assert child.previous_sibling is None,\ + "Bad previous_sibling\nNODE: {}\nPREV {}\nEXPECTED: {}".format( + child, child.previous_sibling, None + ) + + # If not the first child, previous index should link as sibling to this index + # Previous element should match the last index or the last bubbled up descendant + else: + assert child.previous_sibling is el.contents[idx - 1],\ + "Bad previous_sibling\nNODE: {}\nPREV {}\nEXPECTED {}".format( + child, child.previous_sibling, el.contents[idx - 1] + ) + assert el.contents[idx - 1].next_sibling is child,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + el.contents[idx - 1], el.contents[idx - 1].next_sibling, child + ) + + if last_child is not None: + assert child.previous_element is last_child,\ + "Bad previous_element\nNODE: {}\nPREV {}\nEXPECTED {}\nCONTENTS {}".format( + child, child.previous_element, last_child, child.parent.contents + ) + assert last_child.next_element is child,\ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + last_child, last_child.next_element, child + ) + + if isinstance(child, Tag) and child.contents: + descendant = self.linkage_validator(child, True) + # A bubbled up descendant should have no next siblings + assert descendant.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + descendant, descendant.next_sibling, None + ) + + # Mark last child as either the bubbled up descendant or the current child + if descendant is not None: + last_child = descendant + else: + last_child = child + + # If last child, there are non next siblings + if idx == last_idx: + assert child.next_sibling is None,\ + "Bad next_sibling\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_sibling, None + ) + idx += 1 + + child = descendant if descendant is not None else child + if child is None: + child = el + + if not _recursive_call and child is not None: + target = el + while True: + if target is None: + assert child.next_element is None, \ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_element, None + ) + break + elif target.next_sibling is not None: + assert child.next_element is target.next_sibling, \ + "Bad next_element\nNODE: {}\nNEXT {}\nEXPECTED {}".format( + child, child.next_element, target.next_sibling + ) + break + target = target.parent + + # We are done, so nothing to return + return None + else: + # Return the child to the recursive caller + return child + + def assert_selects(self, tags, should_match): + """Make sure that the given tags have the correct text. + + This is used in tests that define a bunch of tags, each + containing a single string, and then select certain strings by + some mechanism. + """ + assert [tag.string for tag in tags] == should_match + + def assert_selects_ids(self, tags, should_match): + """Make sure that the given tags have the correct IDs. + + This is used in tests that define a bunch of tags, each + containing a single string, and then select certain strings by + some mechanism. + """ + assert [tag['id'] for tag in tags] == should_match + + +class TreeBuilderSmokeTest(object): + # Tests that are common to HTML and XML tree builders. + + @pytest.mark.parametrize( + "multi_valued_attributes", + [None, {}, dict(b=['class']), {'*': ['notclass']}] + ) + def test_attribute_not_multi_valued(self, multi_valued_attributes): + markup = '' + soup = self.soup(markup, multi_valued_attributes=multi_valued_attributes) + assert soup.a['class'] == 'a b c' + + @pytest.mark.parametrize( + "multi_valued_attributes", [dict(a=['class']), {'*': ['class']}] + ) + def test_attribute_multi_valued(self, multi_valued_attributes): + markup = '' + soup = self.soup( + markup, multi_valued_attributes=multi_valued_attributes + ) + assert soup.a['class'] == ['a', 'b', 'c'] + + def test_invalid_doctype(self): + markup = 'content' + markup = '' + soup = self.soup(markup) + +class HTMLTreeBuilderSmokeTest(TreeBuilderSmokeTest): + + """A basic test of a treebuilder's competence. + + Any HTML treebuilder, present or future, should be able to pass + these tests. With invalid markup, there's room for interpretation, + and different parsers can handle it differently. But with the + markup in these tests, there's not much room for interpretation. + """ + + def test_empty_element_tags(self): + """Verify that all HTML4 and HTML5 empty element (aka void element) tags + are handled correctly. + """ + for name in [ + 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr', + 'spacer', 'frame' + ]: + soup = self.soup("") + new_tag = soup.new_tag(name) + assert new_tag.is_empty_element == True + + def test_special_string_containers(self): + soup = self.soup( + "" + ) + assert isinstance(soup.style.string, Stylesheet) + assert isinstance(soup.script.string, Script) + + soup = self.soup( + "" + ) + assert isinstance(soup.style.string, Stylesheet) + # The contents of the style tag resemble an HTML comment, but + # it's not treated as a comment. + assert soup.style.string == "" + assert isinstance(soup.style.string, Stylesheet) + + def test_pickle_and_unpickle_identity(self): + # Pickling a tree, then unpickling it, yields a tree identical + # to the original. + tree = self.soup("foo") + dumped = pickle.dumps(tree, 2) + loaded = pickle.loads(dumped) + assert loaded.__class__ == BeautifulSoup + assert loaded.decode() == tree.decode() + + def assertDoctypeHandled(self, doctype_fragment): + """Assert that a given doctype string is handled correctly.""" + doctype_str, soup = self._document_with_doctype(doctype_fragment) + + # Make sure a Doctype object was created. + doctype = soup.contents[0] + assert doctype.__class__ == Doctype + assert doctype == doctype_fragment + assert soup.encode("utf8")[:len(doctype_str)] == doctype_str + + # Make sure that the doctype was correctly associated with the + # parse tree and that the rest of the document parsed. + assert soup.p.contents[0] == 'foo' + + def _document_with_doctype(self, doctype_fragment, doctype_string="DOCTYPE"): + """Generate and parse a document with the given doctype.""" + doctype = '' % (doctype_string, doctype_fragment) + markup = doctype + '\n

foo

' + soup = self.soup(markup) + return doctype.encode("utf8"), soup + + def test_normal_doctypes(self): + """Make sure normal, everyday HTML doctypes are handled correctly.""" + self.assertDoctypeHandled("html") + self.assertDoctypeHandled( + 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"') + + def test_empty_doctype(self): + soup = self.soup("") + doctype = soup.contents[0] + assert "" == doctype.strip() + + def test_mixed_case_doctype(self): + # A lowercase or mixed-case doctype becomes a Doctype. + for doctype_fragment in ("doctype", "DocType"): + doctype_str, soup = self._document_with_doctype( + "html", doctype_fragment + ) + + # Make sure a Doctype object was created and that the DOCTYPE + # is uppercase. + doctype = soup.contents[0] + assert doctype.__class__ == Doctype + assert doctype == "html" + assert soup.encode("utf8")[:len(doctype_str)] == b"" + + # Make sure that the doctype was correctly associated with the + # parse tree and that the rest of the document parsed. + assert soup.p.contents[0] == 'foo' + + def test_public_doctype_with_url(self): + doctype = 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"' + self.assertDoctypeHandled(doctype) + + def test_system_doctype(self): + self.assertDoctypeHandled('foo SYSTEM "http://www.example.com/"') + + def test_namespaced_system_doctype(self): + # We can handle a namespaced doctype with a system ID. + self.assertDoctypeHandled('xsl:stylesheet SYSTEM "htmlent.dtd"') + + def test_namespaced_public_doctype(self): + # Test a namespaced doctype with a public id. + self.assertDoctypeHandled('xsl:stylesheet PUBLIC "htmlent.dtd"') + + def test_real_xhtml_document(self): + """A real XHTML document should come out more or less the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + assert soup.encode("utf-8").replace(b"\n", b"") == markup.replace(b"\n", b"") + + # No warning was issued about parsing an XML document as HTML, + # because XHTML is both. + assert w == [] + + + def test_namespaced_html(self): + # When a namespaced XML document is parsed as HTML it should + # be treated as HTML with weird tag names. + markup = b"""content""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + + assert 2 == len(soup.find_all("ns1:foo")) + + # n.b. no "you're parsing XML as HTML" warning was given + # because there was no XML declaration. + assert [] == w + + def test_detect_xml_parsed_as_html(self): + # A warning is issued when parsing an XML document as HTML, + # but basic stuff should still work. + markup = b"""string""" + with warnings.catch_warnings(record=True) as w: + soup = self.soup(markup) + assert soup.tag.string == 'string' + [warning] = w + assert isinstance(warning.message, XMLParsedAsHTMLWarning) + assert str(warning.message) == XMLParsedAsHTMLWarning.MESSAGE + + # NOTE: the warning is not issued if the document appears to + # be XHTML (tested with test_real_xhtml_document in the + # superclass) or if there is no XML declaration (tested with + # test_namespaced_html in the superclass). + + def test_processing_instruction(self): + # We test both Unicode and bytestring to verify that + # process_markup correctly sets processing_instruction_class + # even when the markup is already Unicode and there is no + # need to process anything. + markup = """""" + soup = self.soup(markup) + assert markup == soup.decode() + + markup = b"""""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_deepcopy(self): + """Make sure you can copy the tree builder. + + This is important because the builder is part of a + BeautifulSoup object, and we want to be able to copy that. + """ + copy.deepcopy(self.default_builder) + + def test_p_tag_is_never_empty_element(self): + """A

tag is never designated as an empty-element tag. + + Even if the markup shows it as an empty-element tag, it + shouldn't be presented that way. + """ + soup = self.soup("

") + assert not soup.p.is_empty_element + assert str(soup.p) == "

" + + def test_unclosed_tags_get_closed(self): + """A tag that's not closed by the end of the document should be closed. + + This applies to all tags except empty-element tags. + """ + self.assert_soup("

", "

") + self.assert_soup("", "") + + self.assert_soup("
", "
") + + def test_br_is_always_empty_element_tag(self): + """A
tag is designated as an empty-element tag. + + Some parsers treat

as one
tag, some parsers as + two tags, but it should always be an empty-element tag. + """ + soup = self.soup("

") + assert soup.br.is_empty_element + assert str(soup.br) == "
" + + def test_nested_formatting_elements(self): + self.assert_soup("") + + def test_double_head(self): + html = ''' + + +Ordinary HEAD element test + + + +Hello, world! + + +''' + soup = self.soup(html) + assert "text/javascript" == soup.find('script')['type'] + + def test_comment(self): + # Comments are represented as Comment objects. + markup = "

foobaz

" + self.assert_soup(markup) + + soup = self.soup(markup) + comment = soup.find(string="foobar") + assert comment.__class__ == Comment + + # The comment is properly integrated into the tree. + foo = soup.find(string="foo") + assert comment == foo.next_element + baz = soup.find(string="baz") + assert comment == baz.previous_element + + def test_preserved_whitespace_in_pre_and_textarea(self): + """Whitespace must be preserved in
 and \n"
+        self.assert_soup(pre_markup)
+        self.assert_soup(textarea_markup)
+
+        soup = self.soup(pre_markup)
+        assert soup.pre.prettify() == pre_markup
+
+        soup = self.soup(textarea_markup)
+        assert soup.textarea.prettify() == textarea_markup
+
+        soup = self.soup("")
+        assert soup.textarea.prettify() == "\n"
+
+    def test_nested_inline_elements(self):
+        """Inline elements can be nested indefinitely."""
+        b_tag = "Inside a B tag"
+        self.assert_soup(b_tag)
+
+        nested_b_tag = "

A nested tag

" + self.assert_soup(nested_b_tag) + + double_nested_b_tag = "

A doubly nested tag

" + self.assert_soup(nested_b_tag) + + def test_nested_block_level_elements(self): + """Block elements can be nested.""" + soup = self.soup('

Foo

') + blockquote = soup.blockquote + assert blockquote.p.b.string == 'Foo' + assert blockquote.b.string == 'Foo' + + def test_correctly_nested_tables(self): + """One table can go inside another one.""" + markup = ('' + '' + "') + + self.assert_soup( + markup, + '
Here's another table:" + '' + '' + '
foo
Here\'s another table:' + '
foo
' + '
') + + self.assert_soup( + "" + "" + "
Foo
Bar
Baz
") + + def test_multivalued_attribute_with_whitespace(self): + # Whitespace separating the values of a multi-valued attribute + # should be ignored. + + markup = '
' + soup = self.soup(markup) + assert ['foo', 'bar'] == soup.div['class'] + + # If you search by the literal name of the class it's like the whitespace + # wasn't there. + assert soup.div == soup.find('div', class_="foo bar") + + def test_deeply_nested_multivalued_attribute(self): + # html5lib can set the attributes of the same tag many times + # as it rearranges the tree. This has caused problems with + # multivalued attributes. + markup = '
' + soup = self.soup(markup) + assert ["css"] == soup.div.div['class'] + + def test_multivalued_attribute_on_html(self): + # html5lib uses a different API to set the attributes ot the + # tag. This has caused problems with multivalued + # attributes. + markup = '' + soup = self.soup(markup) + assert ["a", "b"] == soup.html['class'] + + def test_angle_brackets_in_attribute_values_are_escaped(self): + self.assert_soup('', '') + + def test_strings_resembling_character_entity_references(self): + # "&T" and "&p" look like incomplete character entities, but they are + # not. + self.assert_soup( + "

• AT&T is in the s&p 500

", + "

\u2022 AT&T is in the s&p 500

" + ) + + def test_apos_entity(self): + self.assert_soup( + "

Bob's Bar

", + "

Bob's Bar

", + ) + + def test_entities_in_foreign_document_encoding(self): + # “ and ” are invalid numeric entities referencing + # Windows-1252 characters. - references a character common + # to Windows-1252 and Unicode, and ☃ references a + # character only found in Unicode. + # + # All of these entities should be converted to Unicode + # characters. + markup = "

“Hello” -☃

" + soup = self.soup(markup) + assert "“Hello†-☃" == soup.p.string + + def test_entities_in_attributes_converted_to_unicode(self): + expect = '

' + self.assert_soup('

', expect) + self.assert_soup('

', expect) + self.assert_soup('

', expect) + self.assert_soup('

', expect) + + def test_entities_in_text_converted_to_unicode(self): + expect = '

pi\N{LATIN SMALL LETTER N WITH TILDE}ata

' + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + self.assert_soup("

piñata

", expect) + + def test_quot_entity_converted_to_quotation_mark(self): + self.assert_soup("

I said "good day!"

", + '

I said "good day!"

') + + def test_out_of_range_entity(self): + expect = "\N{REPLACEMENT CHARACTER}" + self.assert_soup("�", expect) + self.assert_soup("�", expect) + self.assert_soup("�", expect) + + def test_multipart_strings(self): + "Mostly to prevent a recurrence of a bug in the html5lib treebuilder." + soup = self.soup("

\nfoo

") + assert "p" == soup.h2.string.next_element.name + assert "p" == soup.p.name + self.assertConnectedness(soup) + + def test_empty_element_tags(self): + """Verify consistent handling of empty-element tags, + no matter how they come in through the markup. + """ + self.assert_soup('


', "


") + self.assert_soup('


', "


") + + def test_head_tag_between_head_and_body(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + foo + +""" + soup = self.soup(content) + assert soup.html.body is not None + self.assertConnectedness(soup) + + def test_multiple_copies_of_a_tag(self): + "Prevent recurrence of a bug in the html5lib treebuilder." + content = """ + + + + + +""" + soup = self.soup(content) + self.assertConnectedness(soup.article) + + def test_basic_namespaces(self): + """Parsers don't need to *understand* namespaces, but at the + very least they should not choke on namespaces or lose + data.""" + + markup = b'4' + soup = self.soup(markup) + assert markup == soup.encode() + html = soup.html + assert 'http://www.w3.org/1999/xhtml' == soup.html['xmlns'] + assert 'http://www.w3.org/1998/Math/MathML' == soup.html['xmlns:mathml'] + assert 'http://www.w3.org/2000/svg' == soup.html['xmlns:svg'] + + def test_multivalued_attribute_value_becomes_list(self): + markup = b'' + soup = self.soup(markup) + assert ['foo', 'bar'] == soup.a['class'] + + # + # Generally speaking, tests below this point are more tests of + # Beautiful Soup than tests of the tree builders. But parsers are + # weird, so we run these tests separately for every tree builder + # to detect any differences between them. + # + + def test_can_parse_unicode_document(self): + # A seemingly innocuous document... but it's in Unicode! And + # it contains characters that can't be represented in the + # encoding found in the declaration! The horror! + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert 'Sacr\xe9 bleu!' == soup.body.string + + def test_soupstrainer(self): + """Parsers should be able to work with SoupStrainers.""" + strainer = SoupStrainer("b") + soup = self.soup("A bold statement", + parse_only=strainer) + assert soup.decode() == "bold" + + def test_single_quote_attribute_values_become_double_quotes(self): + self.assert_soup("", + '') + + def test_attribute_values_with_nested_quotes_are_left_alone(self): + text = """a""" + self.assert_soup(text) + + def test_attribute_values_with_double_nested_quotes_get_quoted(self): + text = """a""" + soup = self.soup(text) + soup.foo['attr'] = 'Brawls happen at "Bob\'s Bar"' + self.assert_soup( + soup.foo.decode(), + """a""") + + def test_ampersand_in_attribute_value_gets_escaped(self): + self.assert_soup('', + '') + + self.assert_soup( + 'foo', + 'foo') + + def test_escaped_ampersand_in_attribute_value_is_left_alone(self): + self.assert_soup('') + + def test_entities_in_strings_converted_during_parsing(self): + # Both XML and HTML entities are converted to Unicode characters + # during parsing. + text = "

<<sacré bleu!>>

" + expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

" + self.assert_soup(text, expected) + + def test_smart_quotes_converted_on_the_way_in(self): + # Microsoft smart quotes are converted to Unicode characters during + # parsing. + quote = b"

\x91Foo\x92

" + soup = self.soup(quote) + assert soup.p.string == "\N{LEFT SINGLE QUOTATION MARK}Foo\N{RIGHT SINGLE QUOTATION MARK}" + + def test_non_breaking_spaces_converted_on_the_way_in(self): + soup = self.soup("  ") + assert soup.a.string == "\N{NO-BREAK SPACE}" * 2 + + def test_entities_converted_on_the_way_out(self): + text = "

<<sacré bleu!>>

" + expected = "

<<sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!>>

".encode("utf-8") + soup = self.soup(text) + assert soup.p.encode("utf-8") == expected + + def test_real_iso_8859_document(self): + # Smoke test of interrelated functionality, using an + # easy-to-understand document. + + # Here it is in Unicode. Note that it claims to be in ISO-8859-1. + unicode_html = '

Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!

' + + # That's because we're going to encode it into ISO-8859-1, + # and use that to test. + iso_latin_html = unicode_html.encode("iso-8859-1") + + # Parse the ISO-8859-1 HTML. + soup = self.soup(iso_latin_html) + + # Encode it to UTF-8. + result = soup.encode("utf-8") + + # What do we expect the result to look like? Well, it would + # look like unicode_html, except that the META tag would say + # UTF-8 instead of ISO-8859-1. + expected = unicode_html.replace("ISO-8859-1", "utf-8") + + # And, of course, it would be in UTF-8, not Unicode. + expected = expected.encode("utf-8") + + # Ta-da! + assert result == expected + + def test_real_shift_jis_document(self): + # Smoke test to make sure the parser can handle a document in + # Shift-JIS encoding, without choking. + shift_jis_html = ( + b'
'
+            b'\x82\xb1\x82\xea\x82\xcdShift-JIS\x82\xc5\x83R\x81[\x83f'
+            b'\x83B\x83\x93\x83O\x82\xb3\x82\xea\x82\xbd\x93\xfa\x96{\x8c'
+            b'\xea\x82\xcc\x83t\x83@\x83C\x83\x8b\x82\xc5\x82\xb7\x81B'
+            b'
') + unicode_html = shift_jis_html.decode("shift-jis") + soup = self.soup(unicode_html) + + # Make sure the parse tree is correctly encoded to various + # encodings. + assert soup.encode("utf-8") == unicode_html.encode("utf-8") + assert soup.encode("euc_jp") == unicode_html.encode("euc_jp") + + def test_real_hebrew_document(self): + # A real-world test to make sure we can convert ISO-8859-9 (a + # Hebrew encoding) to UTF-8. + hebrew_document = b'Hebrew (ISO 8859-8) in Visual Directionality

Hebrew (ISO 8859-8) in Visual Directionality

\xed\xe5\xec\xf9' + soup = self.soup( + hebrew_document, from_encoding="iso8859-8") + # Some tree builders call it iso8859-8, others call it iso-8859-9. + # That's not a difference we really care about. + assert soup.original_encoding in ('iso8859-8', 'iso-8859-8') + assert soup.encode('utf-8') == ( + hebrew_document.decode("iso8859-8").encode("utf-8") + ) + + def test_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = ('') + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + '\n%s\n' + '' + 'Shift-JIS markup goes here.') % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find('meta', {'http-equiv': 'Content-type'}) + content = parsed_meta['content'] + assert 'text/html; charset=x-sjis' == content + + # But that value is actually a ContentMetaAttributeValue object. + assert isinstance(content, ContentMetaAttributeValue) + + # And it will take on a value that reflects its current + # encoding. + assert 'text/html; charset=utf8' == content.encode("utf8") + + # For the rest of the story, see TestSubstitutions in + # test_tree.py. + + def test_html5_style_meta_tag_reflects_current_encoding(self): + # Here's the tag saying that a document is + # encoded in Shift-JIS. + meta_tag = ('') + + # Here's a document incorporating that meta tag. + shift_jis_html = ( + '\n%s\n' + '' + 'Shift-JIS markup goes here.') % meta_tag + soup = self.soup(shift_jis_html) + + # Parse the document, and the charset is seemingly unaffected. + parsed_meta = soup.find('meta', id="encoding") + charset = parsed_meta['charset'] + assert 'x-sjis' == charset + + # But that value is actually a CharsetMetaAttributeValue object. + assert isinstance(charset, CharsetMetaAttributeValue) + + # And it will take on a value that reflects its current + # encoding. + assert 'utf8' == charset.encode("utf8") + + def test_python_specific_encodings_not_used_in_charset(self): + # You can encode an HTML document using a Python-specific + # encoding, but that encoding won't be mentioned _inside_ the + # resulting document. Instead, the document will appear to + # have no encoding. + for markup in [ + b'' + b'' + ]: + soup = self.soup(markup) + for encoding in PYTHON_SPECIFIC_ENCODINGS: + if encoding in ( + 'idna', 'mbcs', 'oem', 'undefined', + 'string_escape', 'string-escape' + ): + # For one reason or another, these will raise an + # exception if we actually try to use them, so don't + # bother. + continue + encoded = soup.encode(encoding) + assert b'meta charset=""' in encoded + assert encoding.encode("ascii") not in encoded + + def test_tag_with_no_attributes_can_have_attributes_added(self): + data = self.soup("text") + data.a['foo'] = 'bar' + assert 'text' == data.a.decode() + + def test_closing_tag_with_no_opening_tag(self): + # Without BeautifulSoup.open_tag_counter, the tag will + # cause _popToTag to be called over and over again as we look + # for a tag that wasn't there. The result is that 'text2' + # will show up outside the body of the document. + soup = self.soup("

text1

text2
") + assert "

text1

text2
" == soup.body.decode() + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class XMLTreeBuilderSmokeTest(TreeBuilderSmokeTest): + + def test_pickle_and_unpickle_identity(self): + # Pickling a tree, then unpickling it, yields a tree identical + # to the original. + tree = self.soup("foo") + dumped = pickle.dumps(tree, 2) + loaded = pickle.loads(dumped) + assert loaded.__class__ == BeautifulSoup + assert loaded.decode() == tree.decode() + + def test_docstring_generated(self): + soup = self.soup("") + assert soup.encode() == b'\n' + + def test_xml_declaration(self): + markup = b"""\n""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_python_specific_encodings_not_used_in_xml_declaration(self): + # You can encode an XML document using a Python-specific + # encoding, but that encoding won't be mentioned _inside_ the + # resulting document. + markup = b"""\n""" + soup = self.soup(markup) + for encoding in PYTHON_SPECIFIC_ENCODINGS: + if encoding in ( + 'idna', 'mbcs', 'oem', 'undefined', + 'string_escape', 'string-escape' + ): + # For one reason or another, these will raise an + # exception if we actually try to use them, so don't + # bother. + continue + encoded = soup.encode(encoding) + assert b'' in encoded + assert encoding.encode("ascii") not in encoded + + def test_processing_instruction(self): + markup = b"""\n""" + soup = self.soup(markup) + assert markup == soup.encode("utf8") + + def test_real_xhtml_document(self): + """A real XHTML document should come out *exactly* the same as it went in.""" + markup = b""" + + +Hello. +Goodbye. +""" + soup = self.soup(markup) + assert soup.encode("utf-8") == markup + + def test_nested_namespaces(self): + doc = b""" + + + + + +""" + soup = self.soup(doc) + assert doc == soup.encode() + + def test_formatter_processes_script_tag_for_xml_documents(self): + doc = """ + +""" + soup = BeautifulSoup(doc, "lxml-xml") + # lxml would have stripped this while parsing, but we can add + # it later. + soup.script.string = 'console.log("< < hey > > ");' + encoded = soup.encode() + assert b"< < hey > >" in encoded + + def test_can_parse_unicode_document(self): + markup = 'Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert 'Sacr\xe9 bleu!' == soup.root.string + + def test_can_parse_unicode_document_begining_with_bom(self): + markup = '\N{BYTE ORDER MARK}Sacr\N{LATIN SMALL LETTER E WITH ACUTE} bleu!' + soup = self.soup(markup) + assert 'Sacr\xe9 bleu!' == soup.root.string + + def test_popping_namespaced_tag(self): + markup = 'b2012-07-02T20:33:42Zcd' + soup = self.soup(markup) + assert str(soup.rss) == markup + + def test_docstring_includes_correct_encoding(self): + soup = self.soup("") + assert soup.encode("latin1") == b'\n' + + def test_large_xml_document(self): + """A large XML document should come out the same as it went in.""" + markup = (b'\n' + + b'0' * (2**12) + + b'') + soup = self.soup(markup) + assert soup.encode("utf-8") == markup + + def test_tags_are_empty_element_if_and_only_if_they_are_empty(self): + self.assert_soup("

", "

") + self.assert_soup("

foo

") + + def test_namespaces_are_preserved(self): + markup = 'This tag is in the a namespaceThis tag is in the b namespace' + soup = self.soup(markup) + root = soup.root + assert "http://example.com/" == root['xmlns:a'] + assert "http://example.net/" == root['xmlns:b'] + + def test_closing_namespaced_tag(self): + markup = '

20010504

' + soup = self.soup(markup) + assert str(soup.p) == markup + + def test_namespaced_attributes(self): + markup = '' + soup = self.soup(markup) + assert str(soup.foo) == markup + + def test_namespaced_attributes_xml_namespace(self): + markup = 'bar' + soup = self.soup(markup) + assert str(soup.foo) == markup + + def test_find_by_prefixed_name(self): + doc = """ +foo + bar + baz + +""" + soup = self.soup(doc) + + # There are three tags. + assert 3 == len(soup.find_all('tag')) + + # But two of them are ns1:tag and one of them is ns2:tag. + assert 2 == len(soup.find_all('ns1:tag')) + assert 1 == len(soup.find_all('ns2:tag')) + + assert 1, len(soup.find_all('ns2:tag', key='value')) + assert 3, len(soup.find_all(['ns1:tag', 'ns2:tag'])) + + def test_copy_tag_preserves_namespace(self): + xml = """ +""" + + soup = self.soup(xml) + tag = soup.document + duplicate = copy.copy(tag) + + # The two tags have the same namespace prefix. + assert tag.prefix == duplicate.prefix + + def test_worst_case(self): + """Test the worst case (currently) for linking issues.""" + + soup = self.soup(BAD_DOCUMENT) + self.linkage_validator(soup) + + +class HTML5TreeBuilderSmokeTest(HTMLTreeBuilderSmokeTest): + """Smoke test for a tree builder that supports HTML5.""" + + def test_real_xhtml_document(self): + # Since XHTML is not HTML5, HTML5 parsers are not tested to handle + # XHTML documents in any particular way. + pass + + def test_html_tags_have_namespace(self): + markup = "" + soup = self.soup(markup) + assert "http://www.w3.org/1999/xhtml" == soup.a.namespace + + def test_svg_tags_have_namespace(self): + markup = '' + soup = self.soup(markup) + namespace = "http://www.w3.org/2000/svg" + assert namespace == soup.svg.namespace + assert namespace == soup.circle.namespace + + + def test_mathml_tags_have_namespace(self): + markup = '5' + soup = self.soup(markup) + namespace = 'http://www.w3.org/1998/Math/MathML' + assert namespace == soup.math.namespace + assert namespace == soup.msqrt.namespace + + def test_xml_declaration_becomes_comment(self): + markup = '' + soup = self.soup(markup) + assert isinstance(soup.contents[0], Comment) + assert soup.contents[0] == '?xml version="1.0" encoding="utf-8"?' + assert "html" == soup.contents[0].next_element.name diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71f18ae03b84d3c2873d47e45913c5f51eff438e GIT binary patch literal 62078 zcmeIbdw3kzbtl+wG#UU4?-xO`34$O2;!W@cfK34eL{bls5+KQfEW-^{18A~=hN>C_ z(E=?>awedpjL66d!NiUr$BDsM8`GQJSlRiK*v@8>-O0>!15^OFmH8AWnQxNKe4#*j z9W#II{?5Hs)z#hA4N$Q&k54V}qPyzeTer?R_uO;O>;AjEJeLWdpZ}-Vd|AJ5GW`|( zP(OC%%e}9fO{NlsCC;XxpSPBuwTH$v_hW1!Yr%Yn*7foWGujU(8es5?mySfcm1>MzJb~PVY3w*U&-F@t8A+8qb zuI^`7i*dEYw@<5EH)q{r@@=m%Np`$R_E6=srZ>iCO_!|Cnr6)jcXr^;WYV21*2XQm zhN^LQSiM_U8m>6)3rzbY_h`T?%RbpX7L?o}pB$2#V%Epc4E`;>R)3v2me=F+&V>A9 zGl7BN%yeCLtm5Q^SCW09$9*AhcPJ$JM`l94r@et0Uo7inaB|W&6+)fhR0v;;>huOj zLvz!{&$Tu32KlAuw=V(x3w|si=@yB8%RI)45pyc!Q%=iN$ zdMZt-_l#GX@=uN9EsF+x0dy3U2Ii(h-b;Ow6qE)Zt}{!7-kC-aez$wXEBV|qUU+KU z)wR3#?8(7r&-J-4$$<`88<>0G*@3~n$KBNvp~(OM&?JV$YESy==bq|$?99oO>Z1Rm zr)&3fCwsdGyPxZJv%hW`1M~-{+_Mut48$LDi$R|}wJ+oz@dbiY1w8it}fPG zzBnH5gWz$9HE??af#7Unm$KVGk)EACcHqcWA;J za?3N*(?OshFz24|%I;B40diAUGpZ#t9IPGG|LzL;E`;dSZl<&4jw7xh%vb-FKiH7ot= z-*RxmFT1B^CVi5B)D6n;hvwY4GU=CP5EMY@bC3C_yaAwj(mxsmMmyYHm)xP_)zkjk zJ#Fo+-jKIC@h!aW3CTBh9JCgi?r3iIT>?A;zNXROWOG+DA&k)CRi~)?BF$0vl+zsa0=Powc9%d zO2+#G3?W}aFRYXOV$eMooB@bw{+y^w-=}X%RECtHQ)Qxg@d{u}$6uWA`NtEP2SLIBVD9S$tMEhw%jCyBe#wauhVOmLEFc8cRdD=VbQ{Eut9SQh6T_Mpu z6`Ym4(|qhB!C=4#h{h>s!b>$cAz^BXz^T$y$1hHUJMF_9Ma?PSCBIDTfI{#c?%F*d ztxop?B4Wgc)d}+(FRIKOOcg&?0vSDyhm^ON_JHGi$1(m1b*2(`R9@aa5(ti7aEpF< zI^dmigWVJL$qjBSU+5Wt!*Cgg#Jm#&pt_Jpp_LP$lMvo@8mx81J#xIdt)<%SJzm{f zO+Q-sk2ZGcAS>IeJ&(@>LVl1T2bQwDV*Ijq(iev);~7av0J8*SH7GIwtH35knhNnQ zcFFA*X-H_D)WZ~3b#O&isY6${Enb(+caBf}BiNPrlES7P_@D|>@UtKw2ku2Mj8hc= z2u_U;aYX$b>tZ-~VI~*?wM~0ai*-3oEP_aP6x{^J#=t|+lF+481>`yIMcig&5WmaW zOMH<01v%4D1`Ohk51Fmvd{yB?GlVGmQ{m}yYYZ^ppSl1Dvu^1-jhXXP&itBOy0>NR z0b{gRdpk(K02Yv8BV0DVWsccoUtmn8mhSs6G(RN+In6#%9)VOMH=mm$lue$Kg6B!#Zax(Zjt6`L zKCd)7L1Nq4nb7o1s3$1S0qJscz(3MFJr|k?P91D&ZEMDYXr4En*SF%AP2W(iUABhQy{u{8JZ46HtKU3t`I`A(n+HsFmT*1W zOkjD__C;B!>vB~H?oTtHsevVMJMif^}9~PG1sJ~vn`0TQ6ZGTsEf7fc^@rA4p zgsR1-qr!>hXClIh_Z;{Zah{MW(ZU#Fy|{D3WHA9Y_?G+;&3-_WAaI^&D(N$C{)Pf) z2A}5!XC%lBQ*I`)jA21$Ql5Vb{KHEeh)I1-E@Fi2!^9VCF#G|M`=%jzVI}5Fo|9&i zR`nJTz|rdmj!3ht;0ztPHf$P7G7pg+it=<4GKxxoW*(h!o)x4XpahnKZLTF9c6Q%zfm&Q=638$jMsXukB3TGqEvka{Lqk70>p)LKsHv-6j5)GjW zO4HiRgUa4DYcyz^w_LHzn=f1DZRa&=M1RUhNx2X8IupjSXdBpUJIh3td zBK{JhS;9W(KUe)8|9f7De^B=BsVuf5*+ZUKszae(N>8X&<$W zgDRf~qq=OLx1TRo@5TRKx4e;WL!Ha^_#4exMlEJ`Z5FdB>}Q*Ow;aS`qih*x*uE-h zmeS4<`yc-p?NYoUjj~9*2r?F?HpkKqS>1PO8nfCb#%T~b0h*=#3G9{-c@Y2Z)uMRR zWM)Wz9zefro(Hq1VgIuEhS_X-BgbZ%GygBvSu-e^TJ=lSDC;aSOH)hCd{HJgq|oa9 z?5=SiMCfVB6W*s0Drsw^&@i!qrY^`x-hk|B(ki}$<}!isznK2oxB$ zwMPs4e!@7*D?)*}E+@{4Vh(J!up~=0Xcer zd-u`{U%&Y47guU~SA^cEvo|92{sceRdws8zjgHNSi8bQ$b~+VP#9i zv@6q+@1j3ABgZeI>a+xskOFhstbrDg=?y_NVBPX4c()gODpg1y_h0l)sXMLs4C=>n zn4_y6%hf+VmY@7=b+OD+1{lkN)DiH5AkDs{#j=P~&dK1^6q~l#`pDs`BnnEn`}2U7 zd>Vy9Nefx)1?6i6HPM2a4U;Xqe4+dMLg{*0`QoXys+MR~%Su^GG{0rNZ0FMMwd(e0 zb^A(Ldo;g&y|nD=sgJVJfUmNIU-d)0m*M+2!L1p-t;YDi@*1uya){cP{=QuO2=v)T zD*@IG!xo}h)gP;T`xUB56D{e(`nIO++n`07zMV-O<0tFea0O%IHfUkgw`jj?!yK{W zpF_8DnT=L1buAJdVW?~`XW^X<*0)~MHOuo8wBDdk>%2{5>x%Sc)J}Z~(>3$Uzl%F0 zNGE;f?K38saFdl5euk|KaAP;Z`@C7{-x&9_S{hIbrfi6yiW{NwiEqjpoWXlodrsOOA|lA=hvuj`=jLQr|XIpbl-` z9@1n+RW_C$!`KbxwDb_9;S#lF{O`P7%v0N9u3L>@&iIrumeaH_;#2e1mr?t&W6Cmb zzwDT|&1ccdD>Y%f2Go_|nS?ci7KYEH*^~!PX1iv2zqnywhm>FF$PDi*aqxbpz=7fyQIp zQ!0fiV~i7t_U*FsjqCGv>|?iun-uwo3q3F>O_A~f;*u1c8HdSFT2h?+4nU2()Sq{JO}%F=|@r{**}8kjBnPcnV!UCrj!Q#eV-Xj zc?#QT{4H(L!||qyFcp86VbgG1!ds<0kKT&jF5#tGAFK_*p)vC-=^sJWk0(4KvCca+P_SNqz(Wv=78#8(u*CEhHV8diX^N4vcdu! zbCT|pEDh2zYU}c2TMCoc)TmFw#5KhV6v`TARvRz&Ms?YI17-0AV#2WG8=aA4NYcaD z>IGu1xZoVK`o&8z`{)FW+c6i+_@QC`-O0YwO$Tgi+*uGB>1 zlu`U5?#oBP{h?zjsaSAf3zfU=&0|-OMRKavi%QmtYNJK9k)o!%CTm{ddj9FP{Ik*g zv+KpBiTrIqCHFAXwkj}=Xy!mjpwdEchBU>E?MYX zuh_Bh2nLp4bj|zPCA`v&W7m&Gi}tT?-|_Z|n|bUlm%p=rkhiUEi_qy6eLo)z@e`fN&;WduhF_YOSm; zT2>b+YfbKpp`kUptMxV^QtiuW%FDmjdiC^cC+}W1gB0&RWHIfki|lN_?s{)8s5d8n z;W%h~q3$M6MeQ8UzkR-O8fge}}j{%Gnys6a@h;)=#O zv!VdBLIG$A|Hb28c!4Dm6g+wg zZU^LJQvsRickNuA0B<{1a?@0MaZu+e+Pa=G`*FqWgyiI|nH z5tNC~bA9(VRhPz|Er-iAj-PnL2Jt|yK~v~Kwwd-F_;caFqI}JI!}XSHML4iLzan%- zot+V(^C$Spp7C=Hq8#3y25)pTF9CP8^?xqZFOFWbUh91;dqt>U z4y*_rQD;X)=m75OIqq^RZ4&L4>dX(<<;9%C!=$+#9*((&hbM#LOn|=U4iCRD;|(Zx zoLmqNaYLQtMq`QSMLLWkmd}SwgY2V5vP486k&q#MhKlE?AXPVG3tR*#qMuZJ7XRd4 z6kjxbXwUn|Vz%$PXEiyt-KB3E4y*kk^M=cAKWDzTt;F7EzT0Ff-xIMFZ`iW!<@ZXb z&Gw27(VAuNx>uNG@8l1lZb$J?`=~prdn>r4x566jRnF&V?X)i@} zP17~mMaQ_=ZyvX)`%GABHR}j$xQ2U9<0ojnJ9WL|Y3SXe^$y#wx*Lae*hSXiISXXe zVx6nwz+~`(kF3J6vPtqpA?b3)Ck|`AJaRuIM{@myE!aE~GuOwQaOPlF5|q_8yg!@N z+^7nLnFSkd+DjyTpnf*Ls|}KEwGEV0qLmncXw&g=Q=Pp(e6ov~=r2tMrew{bO=oy- zJ$CFEx3|M-#mk*mk5_{yyGL=MnHqa;nI*!wB%%o0*}Yp9MyN5fS7DpH2D1&iQ7viW z?P69%4MxL&$gm!K;dUbsH*M0YlBVZDJdK$X3!gDBIM#)tH|MU-EtW=(om-e&6`okI z(WQ%5FJ2qJ`qI+A6`?NbtcwVBjF@3^x`5`!cp1VS#fb3F#>+S`^Hp;)ZVFNWF8T3L z24`4XX=suUMa(=Z(fTa~P$WTidlHNipxUw(sOnqnA&Amej4AC4_i6xL&n=8JoV;r_ zkdRlt6=c|~ZAI$I+`D+6qb4UbWJ6FO!P#e|3b&KRni(fhJx4$D=4 zcnAD-;ZHgnl*H#f%AOCGU=s0I`cB{kjk<)6gzn6_~cj+6<@k#C9 z>0LgxeC$rmq4%usjlcJ7gs$`=Kc1tKB>h6=?3ltm)q0EUXiB9tW}y#I$v#S)ZdVkydUu?%H} zSdOw%tU$S4tVCHQZb!L8tU|d{+<|hJxD%yY+=X(t=tfyB?nb#stVUTQ?m@X%tU*~T z?nSvztVOwB+=sGG+>f$etV3xN>royM51?!i8&EcijVPPMCX~%$Gs+gR1!b$)in2{? zLwQg808W12+E`4QIyBTV<H_D#5p1R&xIeC*9(Y*I0P}U9KeAz$Bq;?X};Xn?rf5rI*zNln>hC?uP zE{cfQJvGPuQ*`wjNO>niQ{zS?#Mn#-#?c0y!#BCek`LT8)=Vb$L!>7!Ir3v_a+3>` z=6TB<5E^K|!CYabAbf%-z5-4#KKSIp*@gUf8(25wkpLDkhN^fpGnh*lF&t>H2@vs2 za`ad42j-gGJ>+Xik3;vY2gTokb}jKC#h;Ev%sn}SolBZw@Lfg%E3{!QFjja8Ux*d< znw~!d2|f)o6g7_%2nUwTK0-_|p#GCSqLr2%$^6D4@>hY4+E!-|Pd*)Y)u6ZqhO>6I zq2d7zzR790(JM+k_kQmMulr)qFREASm=hxd677h{nUMn(E{=R32!Lw0>k4BwRPn}a zpeA3;G9tySaKw+q=Ui9)97%dhiyi;k|wY#xVZQR%h;hnb+3rRQXvN)li0(N3{R!JJbcZtw}NyI{U zB-*G!$|rA1R$cEv72C-sgbWuhzc(<<^(XLVVyYT=w}y{oo)>8wo~G&XHXaF?ic9kA zxqT2iNZ|Y!0%zr7&D-@i>(?p|L@N)xJ9I}l8g(B1K&Zgw12+$>RW?K`8{QqeBOHo4 z4}GY1(6CttT$F_q)0*Ip3hqeFp%vBx?>Oao5#eZt$@ljdJ@ZUdrWt-}ALGeqM1F8? zi*NZX@ri0gmT|wtbavQ~HX-9%5U2#nOp^3b_rI7F8Sch=nS+$wAI>9Z_Ysd0-1N63 z_1)q`23glXdLaNlEzV3%%Q1T(=oRHy_V6&<5f2YDuU)C0T4?$=h!}95Lwzg`4r%~r zX_{iR)Ntk7ZbpB+>tU?s!!uLL55I`j9wA`ij?5&OsqJTgx_hKo0h4CC9NJOtS{3RR zY#$Vq-Ke@=wJ0uiuNKrUIMm-`t6cgoSrc|egcH?9cHQD<{RXyz28%Ex#X^Ri~L0o*UsQc&C{__Jtx*^*Wr!1RHaZSW2?U``>; z|0Iq{*wu9#R8R+*wvs+^7A#tI9z&XxQVDNnU5{2He*z=V8m_$*^~wt?q?DuG%q5d+ zi@l20S=p#5N?uYer%E2oE*rDWgvO5c$E+aBTUoJE&5?PSggkY_Cq0aJl)gd*t!yy| zgjsUh?4uv%>05SgGR#*Vt9eGl(T?vJiTg1I8Ou_x$fU0&T2+X(n5*!5dHvH&_!Ps9 zY3b9bx|bN^tLPU-!z%Y$)sbk`k;u{0t5s*B&WeScYl9%vqOu!}*Bh72(ZXst+XkG`dZGn&nkI&+7D%gA`sNp|eqnKJRoJ@}iU##yjoeueff z=?E1Iq_U`PvOqF@`GYNxV&dXvv_NWnOwb9XE}x>$TS z*HpIs#^m+MrS52Ht+Ms4i5Atoo3&EZ9L;UUUU+eArKl#FTeFV!uJd~5;>A_C%j`S) zu66m*)%`~!MaLq?&#n}mjpm-^yXwQ&50kgcQfstm?{dj%QByRx>7yMON-DK!?2_bB zuBkSrv$z-rh6pQpe|YMXu(D4c2`POWBLwQ%L?-+vY|pB=csv8Aw^0>)THZNsHJ^0aMt3|=KN3vWet{OUAhk~R8*ga zp_&08WeF%^FD}m^E_+ga@o+=t_f4#QgI<#yWx>7F*Nar2e&2Z}1Gzld`|a66W)tJr zcX8~zGj`W}C2ZPklZpL*YU`e*ji>Y`8620Jzu-n+$@P9)F= zcT98gk=@YFC+|Fh^m_atSJfF2%Mgk(~dE7=&}`2&?Yso(umP4`v- z%&rr#L{p%k3_U%vDl{R-1KV*ysy<$g4O`>U>J$33KA(iGqCIQ2C8Ia$`n(9zhtdGb zHso#!1d%*~|APIS?jbn^!mmAu%oa!He3V*(ej+6SJ;gIfE<|vBf_<|8zMZ|oJt7tt zqpLc5%!v?Wa$u5U+eXQoXjuKtwvBAF5zCT%$euCkQ?2P_NROFkx#rD=AJ|PQ+sSgq z;|MFmEM%Ve9K%YuH8Z0#X!2DIRKA4n!PIT`!kh)i$GN6$rE7UL(Y%`F-aC2lyfbI- zz5N6&wxphZdbOx#q4&oSfcKJqjW&@-R)sxl*kZz&sqgl|RpH2chyT#?d!9et8+l@I zwG-RMr=rfMXhT_Wt>?AbtJ@Z4f1HQrtmFGKsTpq;cDGu;+iLIb$V#x5Xw&e|P>C6(&T zJFwbmX66T4_|nNm+uM0J^OpRp z8wOvUIxYc%^9$Cs-V8E=1Hi}O)in)Iwcl|r9XDAe9B zA3>9?@oS`p8TW820404HS4njMJ=D39DfAg!Z72U+L9`73% z=swj4>Sh8ib1NeEGDhODER})M8cU2(;f!275?SWDVK9F+EZQp%GZNp#Dv`F~cZk^E zz_U29pEDqKOLlWIlO&dT^!ib@_n25=+YWg3|JaVIm;xoGSF;z&$ilGi?dF@!cMf#l z5qhG|o)3h=Ye%RJxaysK$Jh4tMfdfsuqf$>(D&mUYHdQHaL&e_a_jfX?LE5_=LD@7 zY}@>s__DQ)48=+t+n7`J4O?^HVf`71L82xq#W^R}V3c;9ICo}{MOL`aojJ+lJ5G4y zQoM!nEvB|pbsV&7W6P-|;aj3sgZoLr)p8WnhQ%29Q9x-kEb(8sJ@dk8+$us;@gyDu zs&JVKn^HA&C5y#xZ@;OZleUUKg94D70)5Y<~uHoKS3^G(w?o@^mm517XUB(+YsHZyY7dVfLaBtpAlf((?M_h#PJyldiGX??V` z{{4)))z{Ey^WAMaZJ!aUBn!(eqDdmgdO{VUdbJeO&fe;FL$R&q{^EJG5Z&Y-pHj0p z0@=(rp;7hl0MphXx{uNez~_$8syM;G9e$RH^T^#{)VcwpzJ@C9JI^y{s?I-@=!!BT z%zAa6A@^-v)6JgyS(LL3xybtAjo}6~rQf3BO)9=m#g|YdC^!`RA4{SEj}G>ViGCfM z+W#`N{Tm{Mqj)A}HsVu?xko8H`k=!EQ-?xnt*Cybh%70@uG{I#>n|?)SA>00=e~%r zFLnOXd}Iuny!z4;3l!~&_A;$19y`ZP>%eh3US}=~`?%M-895LJ;I>7cONm(}S#ltb zaCJMObJ0?huxSWpNz%O2(?}M9{T}iU!G(w%VvyEl)HjW+gydqQCoVZYkMCQ7ZRu|S zhp-h!<8T%V%5@gDQQFh{c9hK?Qt}^0l@txn4mPg`m8|_ z1V1Tj_#Rk;np_r)`hmCt^DR;R=&(d!GE-l`9kSJeEl`?AhCCt#c=(ZWK&|fOu6@MI zL$g6fD?C9Y6a-41S#JQW0YN)h1Pr;8x(xpBOQY?Xb{sFZ9`~vugre(1}ZM#&P8O5hTu;Y1j8ot?rNbQn7I;ASngVBD&5?9VLe;I?leB3oJPAzGAv*~)X zA$yd~$lY<%UhKMF;PQYB4!KD$hM)0Xus?G2hbt9-1vvUaBZP#jaPu4ShDmgy*m=4l z(T;=}_+nPvg0CN2M%{FEg9_&ALJ(kK^DOROb#>69cVb!4>{50?ZYlhKQ9IekA(qRi zNvRj!o0*c7YGp)4ucJ5E0}C3lVbWIC(mPJK;;^SWIKWz5cfD@u=(W1l!Uh9}7Hp!S zf%ISXFU~CZSGVm&jJi;|xM!`hKC1b-Y%4UX&=jp~S`nI}&ZdZ9z>GBFoYsgF8{Tx$ zS(-m>I*Bdrp0@=Orbu04hDjeI+km<)PjK5Z8Trn{N081zFk}BZl_qwU22(K3a6d`^ zdX?Fn9ezD8J)@=3hJU?GyG*``kS_8V;x2glL*jtbPdvjt7b!FW72YVy4u-ZIERX#p zrQ9aTm*NC)?!p|FIo%E?E}(`B*aN%}IB06&S+21DNwdMA3;!sGu$Bbh6)uU7MRz@1 zYIxbz57m}7F_FVm^2HDb%EyJge^^4uVP0`gkGXIQk;s&=KgJdVx~W`X{69&<+sNi7 z8X==0U^X1jAPu$0Fm*;glj>8#4`-gdTkQu&a+u_IK)Dd2ou<@TyU#eC4W8!)2sPS1+wGFI>2$EuH6Hlxi*Rf=SM6@TpuA_C|%htHQozEHo5` ztJI2Aw5$rPyfb~Z$bong!3+!1MT~!|3sMHIpm}`2q+rFYFm$Vm&r67H6qa$|%oJiC zkc(Z(q0Y22pnfIMIF@({nMW`LqANgfBc3zJkBp?x$eBy@&vsF}u|`11_j{B^sHNQM zYWA~TcDR{W@p{+-KbN60WqiiAoQaMqG1^B+P^OG5l>K~||0+^s1^vY&qU0JlrGlTm zXk5zNL<48s>L?Lh7bCb2^YKY%eGPS-chEg>N=j0@bp-hH`%7#-94Q@C9b{&Wl z!?Dc#C_~eeL=lhTxezeGCg8Unspwl39tJxoskkwGeHc7RsCaY!>O475uEFn2s9CnJ z2#rx^qjFrlA~F&IZmC`UE)kZ`Q4!*41lJt%BVaiSvOH$lh9 zov5^MHkD!-Naf9(sM0ihgy@sjeJqhSdr|d*135udbrWK&?^-N*yFa$uva6wZRIk&; z&L3H=*V&i-%} zJFS6*eH^bw)F$-(UMbs6Sq8k^C6RV4k|bhCF)NN@2xlpkkV(P8!$nj}4<+W{+nH2L zPdyWUSX6s*ZU*iH7ng>@Co^-JEp_ra!s$5-nu$Gy6ba5*kGhe`FS$0e@P(z~ub015 zzPvBGyKO~ii#prL*j@Z4x(g;fQ2XHupP@^28xneS0NM??ase;30suz^A~g;aKi zz#R@waT|GOW*}#5ED?Cy@N7O4XoH_L6N;`4EQA*a-+uPyvw-c6Ot7_~A4co@8ElOg zSV|qEvvjb05dyMm;PfDbq;b{)L782s4TL(qIMk?9;W&os(1Q#_UP?1HJVKGh$ni&e zrg-WSo~nHqJFsCS=Jp~+E&Nz!m_1-`1jJ$nL`_hQRMaE;#{16RRF?3G!Bm4yK<&s( zAkgXV#<_81w&j8DZn<{aeW;~{UwV5dTz&$?AC1Vsh42E z`NUu?0knF8Beh-}+1Dw%nUFH=3Fq_6u)Qf)jA6x9wA5CC$!02AUDcnXw=7L0ob}v2 z>$yAAyragwK95FQ=U!>n5`tLLCt(#qnCM<2xjn7zM>?6po4y|H#K~pthdOKb96NHb zwUf~t`2qd#%9mN4A71&2yAdZA-Qt1#e5Wyh3I^vu~d4{-B*EBnRYuf)u-%`#^1a+5dSJ{DzoyK=AjkTt^ z^O=M@&~hu!s6{9*j>w9)VzcHJm)H@i$<7c-5ZYT9|JI{VX@sKfJ^lomKaV}>7? z6+V-hc|Sl`H;5ki=5xK^v`)JnsW^E1={wFY9Y5dv!lBz2-*Ij(12}svzjQ>rx0DAnV?c~?= znD0rzeB<)PJI=#8%x`|7`F831&P*u=9#kUQ1JIp;OFr_q)Y8F!o#XIicOzDFH~-1t zTM@5Rt=+GV13B4n+`wiUb*C=h3Db*iuw*<;O&#vbJj=G&&2JE#la{zhg=c-|F$&4# z2?~vu@z8%0*2={98Cqxm;SYa5T!00yMgQpx7uN2%lzc5uU#&9@h4UZ)BugI-jt%3O zym3gQJnz9KK>!9#ZV^-|@R$;rH6&1P!}8c2=b`k}ySQt)_I+ojoNpg6z^7TOG~3x_ z7A?jzz_wk?{!r{#DgMz69 zh9{g2jHnr87f0r)QN+bi-mH-s9K^{_U!$GdA)Mo<&!yEA-pw|7p00^Dj|+MaZ1CFH zQJzc-%Qt)E71yt1Z$Z|iHts}CnB(b-=sr&m`Xziz;E1L1tsgmODk)p!3_Svg6UrI8?; zAn=vyzs7Tlkq;8i=_Mx_C}QCfNe09@N`r=UVuW3GhJmqFQDDAN@dB&ih~!3qhpyx* z$z&%T=^9>cv*_E@TvNYGxT3X!ZO2t@BHK$IzvJ}iXLY3cq4%BLslo<d9&3cI-_6qXROcp&j9 z(w}ZN@ieS|9vEH1s zE<60M&e2JU5?oz_}~EFj0=?#UL%~VfARa3sokn?63*r| zF*Y^JBMy52qjFyVfjs2l6Fo3;ik+xmE`*0r&#p#d}Aht;&I!>%zg?p>NN9YwkNcqesrI2CT+E!|4e9VW@uV3*q4GM%|uuFPU&*iJG;2wQAB9T0OZd< z5Rk#LFofif5xa{sM1b4cKhujw2?7kILDdD#`({QP&rj2|yv7X;e3J4^Q86gD}#9Au;K+a4yvrC+u2k z|N60aj;-xE7~OMlMK~CB9*hVFQ&B=|3$1PU&ZE!=$0a!F7|JKKF@z_sf*K~f8h8+^ zu9hjTif!uZqO1wJ2sSu#U*I{&DCBJbX=>rwCCN=JqkFiv8*+_jBp48ho4UIQr_K25 zM;I-Fw8;0C+_hl&cCio&*yjRs;T&BX;(9K;FB3Xh0!3V4;;0kW5%w?xd9;8rJ><@v zRx5?;Gc!DW-TQqIGu2(b0#IGA0T#j&fVA}^_jkHj3jYN-r zhygx+w1cehBal3EoM)Bf@VQN(_P{-wLBXlIt=9FOhe@|(pbpfexq3$RnY@s`ff-I8 zB|7B(zBq^obna@HI%flNHBu=~<811E9jxvE!d z!+%z*m{tQXe-m%Q9g~Tw6pkWMW(5Og(!nN=F}4!@K@~EfKt1+V3=d?UKcA@6Y@&i5 zj9aAw#ruEbzEpKqQSo)^qdUJbm@_n`f_{UCrIGp8NQZ5TJk7Ai19n z{nC`%OdF;1M@XafOo-rQB31Z6S7?F^@HnD{va~>%NJ$Z}RY9Jc{Jr6}&Fa%b65AMaSLFZ~B=VJH z(sraeQc&zBY~6|@#i>n*Vyhh$5Ft>46(xxm4?TN$edpPa!AqYoCwKvLt>->ONbfN~ zIw71Py%t~6t00s3D=?($8qxq<2SDci_IKz$S?d?$>{WryFq))?A|e{M&R!q9#|nZc zPJI+;LA zPCWFFj8i|_gU2MbPz7IoJw~87TB&_dD zB*x$HBbmweLHep9NRulnq+;aBIf13D=vl~E@%3!+()-T+sbHsfpnvy1k7BDUTAI~~ zSY6U5A;$o1OJv$j0Pfcx4hDab5HUl!l74t)5x;+U<)&1HB|{ZR?TqIeEFg7U`a)!j zvM%Ut^zcZ776!?(=D;_?J(*!FZ=sJp1Y6D(09$15wyW-GC9A?Nt|!GoQ50MfagVGB zBT?r_L>S2c>(AnqH|GiulKCM8&fy|BveizF$kUy?Bz`eN82aAQ_m%)*H@RG5ZW%GX;o-Wg7wiAmdD>Puf9gt zZ{Y1zc4C;LSj#HILiMO!(nn{bNEc?O$jSPKasPaMZgVW#wtneJl8XkY_%k#CGH&4y z$H;Hd1)kBKi%)}8&5f%`YN*;oeiLUhI;6m88$OYF0%%MoT?b8si-+)h5{}4TSM=;! z(dVN@pO1JaR*U@FK5kJ7=Vgbc(Og)31_A8L7v+qlo)R^%67WRi&6H4 zj-MGg+j#Wop<|7$*hYmy(~Z6tX8aeASD)mzp+<_PQ*8jA!1o`naaOlS;&R^du8ofMMJcrVfnMG6&(xPXu;!l ztDURDes;nfVt}__-wq0-(-qLN*u7S?4@XWf=iVM)E%Gcl(WbbHrPw;MT6BQ@&M#dA zv66u~BJ56O-Wsufh~fNHiPd2Hr)M69q^dEkI01s}je62DOJmW_ct73~SJz&^dnS-_ zA_XG6^_6eE@^`QN`+*7nSg7%lGXt;u@vBe1{M@T!ulBt9)~jb<`5oN+{kQJ_@{4c$ z-7A0gYUtI6UOoBh>#zLrE8l*(2Ly}eNhF&svyRUDWk#`Z)0-I`K2KT4X-mnuBk@T! zo^TthKaBc}UZu~aVU#=`htXHOg_^8pvv`~|&CU^B1~C{?LfZ0bpuWm3L+DL;?OItw zw5(zIxz(~`h$2)rl01(&58O~wUoOqB?dyo{>v-?T>OM`0&og5lMO5o@?%Mv&=>E?4 zPOt9Iq`TM1lI$0mZvZE^V4KTQu_kiL ziB{xheUMJj;J^OO-~S|$IPYhJp(z6}$MVLc;H2gg3_aI4-dV?TkMd=m=cI}i1SS7C zQi32*QSl z5pT_jbv<|ca;K(_JqmV8@kTsqI#Smg6?&u2UaG4SG8(MqR!4KImpWH-o7Zv=M{^I~ zo?Xp7u|elAeT1ZgE@U3eH*l6Gc0})Z@Bc)h%4qZEFx<4*Iq@b(s=?UyZXa@ zOeYW59_HF%xa41Il)<$!F8BA(>t};&uk7O88c7HNxbe*(5oUG#q36BHB7?@I)x>P$ zL8RcK^AMY)e}$I|yW(AkbM?Z9)I!t^@MA3!6M;LkkQ*O}_Iy}cB5Budocc<_m ziMR%v0jk)6llnr;%Rv(HBra#r;ik}I4bv?)fD~b4ADa(qQ;Gqhv)r)}WbSk1T&lS2 zKa_cPY~I5Z&6O`;)U>xYm$X4za9Q$>eAv8XXB^}-#C{%GNTN=j0{JkAdb||-rTwDSgptudZ+R8cQG>J=QwobZ2Ci2bo**cNRdlSCbT(-Hgxop0w?s<_ zSI6u)xY6&wrD$wuEn-xAOP}M|O;;t*YAlP54a!ME280JyJ=w~FwM_CvG6dsopOLF&k+AX)u9bj zPTq-Y&h?`0cTHAz;YTKGaUr7JOLnYR?xfQimnK##o3CZ9m(?vl6D@0x=C`kx?Yi;O z^_P}rSIe4j&#shtqWPYW%FxS4Ie17a-z2Gl{@r^8#a8ri#8r*lFt`N|{%3}FjU-^z zT9?505UQI4Z5=J6Osmg)VSW>1V!aZZcdr@b)MuI~TrzVE`Gh_Zi`};jYK98SPw?sRTfd|T@@*Oa) zIj%YuX0GO~3$@EN->kh=`_0B%jo$#HITm#uiwMUuAW-~gB5=znLKI?);`PS-MyDCJ zTDj&0deJHNyG@N~XTCJyx-=~akBL=Pj53!Rw%tw9$JQ`RQo2%7#p*E-gy~(m7CxRC zaho*%1HzM{=~kVABNdOX3XhTIwc|bU5BQ`83EVrk-cewZL$)_Ig>mQU(;~A;iZ)D3t$UEzton;l?pBb?6n*SCsyyr%z+!DhS zQ(smNG9zou&Zu+eV(5J*KeP<%4o=`YdvfsEbA5FuB{B?1&r|U^6tS#f+7aTg(`$5z z4#bkaO2s#+Sf=7VD*g=>e?Y}|s32)jqAiv5CseFb@#j>0K*fKe;)hiHXDa?5D*h`K z|3Jk(D*lm*|BnhA$v{pjTvP~D(1~hNF%_j$lv7bj#SSWVQ?ZANy;SU@qMnLYD%z>& zpn?vxmQGM{l8Qbm&QS3f75!A4qv9zl=wMZ8hzdFfLGn`Jqv8S;lx|N7QE`QeSE=|p zDqf?an%<+53fcoob869sn=*C$Mbk$%huyi6@3OaVly9>i+i+*uTQ&-F?Fa5v+3gJ* z+idn;^G2@KzIVfwZ*ShHvDgo6IL-D)%o`4i{fv3T$;)l_vW@B-6qVWbhs_)A9DCzN zr2`%0JMH^7ikwpsLsRJo%!}Y^F~cJZk4j<723Nt_Pgw!jdBMD zlFte=)p0oNu8n*fid>id;6}OKeqv*r9V6amv3G7bZT7Z}TsykKwI1`vHrAtnCty?< zP^H!0N?o>Z z4qY3SW%iTijiaR)V@nA}(qy%FY`7fuC(QRS#=RWq1n*J&(>{PW``mjCe{Pt3rXjOv z8bYMa7fnMD`A|ZfLunUnC>^35WtQkb=@he2W{XagE-@Qrj_5*}E9Rig6LV2+6Z23C z;x?4|qJXkM%tu)$7N9H=3sDw}MJP+eVw9y~3Cgm$(z>!(*=HVqY!Dgjdw2r-fl2si z6Q41T4E%dG{4}l_TBw))uyiA*O?{@P%l}=U*DT$@3rjbt_%#%X)+ol7!pG78kh^na zIyw12f@w;>PJPo%O#nFVaA7UeQj*}XX*S9=sR~{xhEgPvmk{pJ?BOTtZ1J2a-bDHx z8gj}~&4Vn#xfNM|Tsd!647X&2kU@)eyuQ2_Pa*3YOH8&{ffGKsA(S~uM%+)X2v0_x zPez0%Q=w;5q4yxJ-RTbWh%0v!#8(*g8}OJ-k9^@LbU~cO_Wd^qa145>p5FYNA-L%e zi$3J8!AZSP@rD~Rf-b4{2Lv`66u?%{m*Tc9D6aLJot~jVk5=8x%5_bI`ERzBe8S{w1N=$Iy(8 zWZ~gtM1N4;irr*(=fdfAp$xmps%_X!=5NDpvY=wUw30$fm-erg9-sq54=m3{i%55k zji+W9ynSS)s3V%&f!$=rF!7)5?CLVcmd=--=_v@uhUeg9nr%!T3?Iyl8^hCYKGx5% zr;@S%*Y&CPxN)ftbsZEfxy>}_ViYi(u6e}e2`Er25n zk7d*1*l^TcGqUJ+jZPpLOv=5sW;OP0NH^l7@aw|Sw&BBb7R=O7L z%`mng`#!5qU-)P|j6ksIWWg0yEbfvU2ubuBmySo;L zkhfq3k5il?ieCQ$i3=2E4}SO7f93%_GFM2rZmc-eHH&CimL38af^B{{&!fr z2DPn$fmo#{I>~h2sv4Ww+7)hgA=-A6GZ9cjI|U)^3}BII#J_MA>}_%|;A;v5$M;uv zxw~N6nsa;b9}Z5CDF+F;g}PZmcgV$)74RmYRh}J=>_|DFpB=U-hab;~+6V1UAk2F(E~pzUR>8Jl z{TK$M9g71?^{YZ7bB5W8z=k(-uIAivR?<=G2d*D@tC37lq(2qfqt5n-(4I;Q8W;II zI^QZ6Nf+v1wDn2gD2P`(f#+oAC|blCN#98xQ0$WA0hUxXkBu&+iBDsihwzb%m`ERj zww++k6L_r`$f+yeR^!k9#X;Ny5dXu!`NN+El%;oQYNQJ9+zmQC><|?NX9!YPvT&b~ z;AHsBCqzSPS8hU#vWQwtg{Le(1>Ah@0mwf@7-b(YKa3^$qizxs#1nQ5{Ht9OPCy1H zo02=k(c{&S)nRuMM>|F#D};iQX9TL{_%FHxUBA!M*3#P6*m9(?rERdSrQ_hij`p@8 zR+HVOYH&W82+5vNc2)V&<)4JVfCn*z{7Y9ep6*eV(BH?fV^&--K(BHfVsLtzP^c|f zEK9{^Qlw#{y@WDFr~{*ohORiG;(J`tn!usp zw)=}9`Iv*bM7FY^;LH<=S7gUhXH*v`nQS$6fggvI&ESMBI9ekU(5T*(A>&Mms}Iul zP*2cKaI8*LCoGcdS!DlnE5dV8=W`L^xeV*V&s1LT>ULx2Kkjqmjgf*O&GF&z^EWy% zTyD?bY$@U9TG}zOg+rfR>(lR_Lf}&fddyf*z&6MiGX6jpuk#6X%mXg(4$NiY4S2 zgA9C9;Xh30+e}V}=G0^PhW*H4iX1MKh>X5d;^TO&@Dmwf_er`uOwe^>aJr-;izQ2r zJI;OabQnl;$a1b&akjS=V?%TusBwDN8$2Hhd@} z-K1;QL9{_u5VDq;3TIQa&5Dy18BA-IZOhNz5>|vGQRk7QpAq3m2F>WdjLD!M$DPCt z1`1}TXQV(A(lfzW(5xQa+1%PhhH#zDpry6tPzw^as#XMYW7li{`Efa^#vQKxSDnZ; zAa6zcZ``Px@Nt0QW4*weY^~v{|HIc0zy9Ll*a{Babk;-!?l*1hBKR)@c$uY3p_}t8 zijyX_V$_t#Hp35BPsL6pM0^d6;k$x6Gs((;nC|^Dl#*Diu8) z6c`Ir8gk46>Plw9{|%hRz^=t@Fov*WYrS?S{Lq6#GO>q8^)%mXO!J$YyBr_{w(ye| z|5leOQRiW7990)jJfYeu<3=#imSEqs84lnl-yG7B99I}o8d8(rdn%awYD_X+IY1tbku<*m`hFS z5B4DK79+{zTW!?JeZe=UIvas8k-b41{icmOT3PI5`P zTbSUCMAB}-mrgF)-p;$3x8z$bZ&)pECQQ-cq~r4DHtAyBi7 zsK=}4d@{2z&vs~5QclaWX-KpMYYGG~H^vups%@kX>8FFE9w&8kmo;?6#WNzZShhGb z9q?nl@+Er(?`8`Rjx3mCE>EhEhM-bV5K9`iNoYW(rej1+6r@GeWER>$P1Zt^S2b1x2a%JS6`!VU#H@?sCbu(-=^X=75^(0|2q}mrsDsg;yY9rg;c#sH>mjc03w_C zUo>slSPYfLK7jBjD*~Zh1&C0pW#6(9d{mlkuh}Sd*$-`$TM>}tQi^>WE{pxMXyQPf zd<#OEoOVPhZDX-lR{TUo6vg)A8x82@Ua1ymM9&|^%W5C|W}kZ`!sz3SHj6Tv%c^t6 zDk$9VkWn;HxQzt{vD4^Tn4y=Q$AkkQ=*U3{j>E{YE6+?%2c?kgX5BO;NUJm|Ms2_+ z1~zAs$Qz%>sU>Z!xi2wG?_xL>9#~`GP5dHF8uGrxq@j~bGcd=`vr%j%3p5=7Zph=22xWW=NSP6cuOQ76#VTtJ!bj5Lh{Gja!z%b-{Jy}OlP%jDM<)-;^p`%KzEZi={&a?uQp^eU8;W)IjTGGEu#TY-BfuGc3 zh_qvy%&PQFe?gD8)Z^@nkE(b(bMwqvRdcjT$tA+^_Q=gg)~Z^fRV^9L(7*#Y>--R3 zwkpvjY&)ojq>pH+z?F0fpfFR@w$XbCragp+^?u%&^icdXI#)1(X(BDe!OZfYy4O*1 zMJZ>y)8Z1YIRWX-jU$L;1kW9>Zf$C*PL0iA$J-zclN&80nsL&@R1lMqj#1G{MXIKO z=OVxZ^bvZ>c?aaSI7#PFggu*3(kAV{MC3$EI-yzN6HmPeg@Xkv(Ttgfmg+86JwXaQ%y>@7uaIY*u?7 z2`-4PcG(f4jp*yvdkC)X;%%u#UA;t)iscOB^qNuMl>EG^g;>s+NfLJYBq=DxoGg(M zPN|ILGxR@prbnyjqHv8SUkEYQF&ll4yVlJ%mpE03YL(Q&+A0PgV%e*(T>)^*G`ttF`;t30W?`-?nL|;CB z+P>S|6>%T^kqLkQ@vg7h0gsVIL39&$Q z)nYDRFDhqad*!jacKp0A9|mZ?YjO7MH+?t9(R0Z3-NLGq7Ss3kXZ5sMzt?J}@=#XK W3G4SfW|V(q$v(Nw`bT+Yl>a|*Yccx( literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a78ba43444fde5a251be038e64cc5e59552870e1 GIT binary patch literal 1612 zcmah}&2Jk;6o0c{ahy7hVpE(nG_HeC4aBPgktlVIQdJb8#6-e~))88*cPH`MYp>av zC3WgZP(`YQdMKwzy|i!vlz#%wTxzPS?n0$XoVX=*QKfKU#_NU9reaol`)1zn_h#mO z%+Ik{6xg`>*H?I10{ERz!XXco-aAa$0uxMRLy7+d8`Xu9fVeK&VqGdp2n09}rnCvB zjOA@H;FgpY$|!&ENg;!Lxv5j5!jvQDFvSKX7Zw+mbeCXrp1faNTrdJwAphCE$mUys zp@d8*30SN~_QL|bI`ZtAiB{QBzeU?ZU^B%{*dD;x!K94rPZlwu2cKpAg}Uz6yyok+ z|TQ#g*s@oYkBdm`XoD|bjCN^x{)v4t)-eb#?xeBe@d8hoj<#@zyrTCq4DqrO0 zbnabF$_J=P+M?E+XtqRjP>mY+T4IE9+c`Ztq86aBpBv($-Xf02wE@$CxM_fRui%E^FbeA%@L%F~ z&05ids?q*iHNIl7Tw~LZx|m?9)g7ajQGAJDd&O4*ia+`kN8%`7GIgr^3gdY;B|OeS zVeEP8#{|1X#U?3R4V|bs8 zsP`roI}?lDM6xFeljGNw9R(Qp*e@@toiX)({CM~1^v%;ZPInToJe;1ndHKfWPU6+> zSYqq&*N5+p9p8;JKTkxq$rHZQE*E>`5Ie@T`I-4s;!mgKv%*jzGvr4!t)bVkruk8g zWzzI)t{>90&sakbEDDP(i<2+$-1;L;_Da+-b***mCYZ|~pvNS*aV~gH`+~O0Uh4+^LYA8FG_M_hVkeqI~l#ub-e) zNA^{CP_K$p=2a4Gew6#@JK_i0i{ye^<=qsU^2dQpGO;5fgnotC1DJjQ*~d~6rEeYi J6WFiM{Tqy|ou~i+ literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5683fc5fcf84d38b28f5b962c8267e1a80adfa33 GIT binary patch literal 7523 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_css.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2a9d9e725ce14e7237aa19fc805530779df1df9 GIT binary patch literal 28463 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 Q`_O8#yk!1}<*^3;UpU=HvH$=8 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_dammit.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15c2b5d28b74404efd2126f6f439d94e2527e541 GIT binary patch literal 17184 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_docs.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_docs.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..de301f18a783b0df71529cc055d18955aecff319 GIT binary patch literal 592 zcmYLEO>fgc5MA4AJCGQq5KuuJ%&`Yz@o_{*p>>L-kXW&+O1`W%_SSK6V#~Xca1W?A zB>n)uf#1R@r^0fn#EDy?+{%Tu)hMIgc{A_rKF$0vjJrU@mw#VL3<3C4HQSJHi_K?I zd;<{(0FeSYl42=PA~{l07{D6UK&?>=v>Nq5C+c~7YqUeb-rsfG>Ou!VD4lJ;!%7L7 zrE&l-p7?|^bBc>Oq0~If3Ny+=COF#VZ5%}jOR_mmQBD1=EQSXyt|KI#A;cjobHWXT zW`yA|#gqzCs5nhUpaE)11GT2>3hew zJ-2sg^VZmQM`IrikDPv=8%Lup08elz0Re;q)|N)6s(E3-&IHN*~A6N|T9|mu#BNUv*!+v}nS}^BjjCaZIQ+ zp|7oa@j6#4({5hgG~UdzXpxe)#RD;dBrZJ>X{AV#^b0&)wZPuPOXC_oS}Af^7#JRK4fYe@TKy6*Y&JuQh!sZn;m(W}*lKSkr>h_m#f33>u@1Wa?fzqgLN{}F}gd(lh-oY$cd!3mz zjV&TY5mG6q-a<}6J%Msak2&=p=q1L7pjB_}CAS8MDy5gcnKi}`Ly1&%CEl)Q-n^Ol z{bqje@oRH)1i|zD-*e=PeF*)|e{4KT^vL*|s7F;fm1@u;24 zXo*C`q(t*z9%Aw6jO0yfdPEzy9m0~4=X{y*kl!{iVNyoCuZd?~_F!7V><9=>Unq@=pG&odRvQPdtYmPkq6#xr) zh_=88AE!zo^OMvLaC{)(FgHZPu$e(_73?X~0g*5~*GRjLn=>|)#xj`DqSCe9@p5BZtfrbx0S)%hvlr)>HGT}nU~JqBCxaoWcv!B{*@W6&a~ z6n&H*EgxGxCM*n}ns|bJ#ObG$|M5xZ=k-548j=vNq2g)s#L` zNHNd$3ZCueO8EgoJrfFn+I3?ZuMjN4>`V@71kcqb%qb`tpz`2}32Fjfpuo=vKQ`l# zvmDKG(*<6nXlx_4s4ieE_}NqgEhvzr7|>XleiECi&%T>^)q)(od2jfy$!hk7LA9sO z18(HxM!8n&M+l^@nyc%4;Z`>E4ZZFw1hEt*g>+&v@5=>m{3Bm6S=zSaAH zh67@V4f|n|OS=|XlEek{716pSm7EaQEgck8Miz=Kqees!r1aIE$qW+nZow|VD%o`~ zcM)8Z13in~m6pC)WhHiW{{7{cR#r9f`K&`Pcj(J8y{zghu_Ni0CJ?~-`_7k(RXW`UYE= z(}42Q(FR@o6wuRvXz5skUU51oRF_Z;QW;(}&J9n)^j$FZXMrZ5;Xh@2kk7#XT><56 zi9hWbth9X2$?jPs%dx()+9y7rCHu?C{^eMIS?ynmbuSJ+zPfbvNo%F|(sJxlS-rFp zi!WY(d}Haxlhc(%)$eJnzp9N2)nEd8f*YQI{U*ZzH82dZ9eR?t^LixEz%Ks94Wu{3 zxMI$r7m}o?t7?;SX6>M&4B)_>I}ODnREM|!7SyrHYVj&=T7abjeLk$dKUb-7O-<*{tRJ^Uq~{R|BA|3dV#>aj39h;J=}#`=cm>Yyw->D PAv}P84!=bFEf)C?OscVr literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_formatter.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20f0315a3bb32a3e02b3195a07d293f06db050b4 GIT binary patch literal 4690 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 U3FUdk$`sW;b>attPjh?!1Kj*K4gdfE literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_fuzz.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..648e42b25fea27aae4e612889370e8e52b3a8a45 GIT binary patch literal 3832 zcmb7H-*4N-9Y2zyOv`pu|4P%PS=lv9s??S!iKL{WEs$I?(YJlW_|FzlhJ|B62ErG``3;QY3yy(!g(0NKmFM~bp!xC2BR$2;El zd-whE`To$~XJ%puo-h9UXRMt==$~v6K4O2;dk-c%$U;SAaTZ_Wik$!Ei#)uAnoy4v zBXzMTa)?Jakrla*ED=Zdgn+*|(dH9Tlj9LutJ+kq*flJdorY`L4Jx~sx^mg1n92k< z9pYk3F12O1Y7sz`NnXg=URWm1?+77L?~E!@Nn3uI|5$!5a}jtC?e(s)P|%dS)~ zVM1-1ZQui8iM_s#iLY=K%hUuN`m!ctv6}?M>+exKbS7A59fP6-?z{ui*{+OD3I=s# zim|*|waZnXJT@?T-x|O)a!Vk2v*j`sN3O6Na=GS!DM6mQcHMUU(?f^(`uFj`~+jPzv#WmF)(5TAVds+ zMFB@Pd=L+lBeXFyx@Iejw}f?W50L1u0H}Mx6cs1NIb|IH{@0UpqC@9MKXT4||DvIn zHL(Y}u;)j3&eQyFw5coa@}r#TRYfVE>YEBdzdV1IVD@jW)(fF>X|}1Q|_D5*MPZ)#e457 z7!q)-tA`xa8zWNCYZaSyHUuYAr85dA>|f0K6E1onTh?KtlQ`f zltz@>;S@NuY(?h2ovP3{T5(wVBd^;!~A3ji)5db37oA;W-t0=V;{%{DWI7bT_* ziHR@)36uAU;6*5|RmcP^yl6m9*^VsBFG%WRIFhEYMN4+Wq^aBOa@8dD+d&?psUStI zVw04szk_V^QOkw!df&0yYvwvlK}t!%%~hw7O{Oy`YP)#3X_oJp>zJm%5h*4V^+(?) z$!6PIVBZYVkDI;%olBugzROQ=pc`m^6Is4{syr5HX#NNzxPWYA+ug4}5k+INJ$gAmG zwxDFPg`BD?WAUc-oR(Mfdaj@p^lWAvUOk;rGkRXhYw3JO)zz_hRZS_t#W@|sRuyF= z0vJgA2q?m2ya*UZ^F~;8;gs+R1DoNPuoy@Pgk?M*lU@`zSn4G#TZC97FTujQ=!3(; zxLIo(4FC$Z49h9E>QHAomq#&jHdTV1`EwWmDi=;cMOyr_vRglpmJX%tzLfo5(t1FM zIbb0%&t%3!m98k7mdj{bHj{%;=p@U;q}64`f?R8AN;!|Me5q_H zxx7}=bBdx=%9dtfGi_zF6(v7{!a*Lcfh)#Cp*uj{2p(CgJN1Nk40AKXWrAPvq|oz; zh>uTCgdVNo`Y(9Rp95IvLV9XOU=g8>klJdMzqztnec zJpR?exzyn~egB+(a4!G7R3M8$K4LYdxgWb1{N`edJF|MBjp2$1EbIwwK;v5+RJ}7O zIuMwjb1usd{4t>3f5|I_c)bk>&A@F!oN=$kZYjauW?8VnUSY7+Y_0Hqp4;0i@37UUuST-Rt ze4|WRD6evm)8LSx>~>}c=m_!eR zEbYVp^wRdN^6zCQMX&kHN>p5*0e`uMtV2At^ zBqOY7dJ(3AHw9n^9%%HTy<(;(3;rg(V>b!&v>!xIkbjA!ChdG$gZ(z8Ox)OT% zXZJqp#!z(ni%7n@QzWC~qGss zNffUJYA_8Fk~d+nN@N)1HKvho6aiYCAXPArdr_yvehdUECm9tBTi*;Xq;~=nzeh6g sjdhxSk?IN@$35dGxkzsTaj}1(ndiK~@&Ar}$Z=P<|M(xo-u^NF19#ZP!~g&Q literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..982d51b2491b7d8f6869ae301a0b30c1f808e887 GIT binary patch literal 10857 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 q$ZT8Qa_*6fajG(K_DJes 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_lxml.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f01a5848bf8246a7ead97a795f7e9141d075098 GIT binary patch literal 8290 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abbc50c425d87a5548194a040f61cb0b53fe7eb5 GIT binary patch literal 7606 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4612b38a257f79c373e736bb13b5c3b39a561cb6 GIT binary patch literal 20359 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 literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_soup.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42c914d71ae5d76524697cba4e4d2284da35178f GIT binary patch literal 28714 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

sDzPZ&Rw-AwqakOvucTB zf}`6J$Ow*fSMGK+v2n5{bJ#qZXV=mO{8+Jhi5-_aW~Z}+hdm8Nsp^=Xoy9S zCs$$82GvZmK0iH^)(sK}jRV`wQb4o+eKkgnW9bBq_R0Sp!vG#L{#QVpNgKV!0!#2x zw+t{|H-(H`UZ-hV*@~e)vb%tk4e2KvYYis%WW0<*e?mxMS-=TpVz>rph!#n$N0L@BBoWGMJd2}JX;c5D?)08|ziI2W`JtY*+ zl`pziP#z^;$DcwX8PS4$_ifPsmb`X{b_63UVZF4gP{q8o5fh#{3mb=#!|6v@c_!L- z3CbXPFfN*N`dcFP@=>rPd#qzy2P<^*DMm5NocwDJ=#k>^R(r$-#+q*%k=D zUq3xlnJy2|al#vBJYO$-yKuq3C*|KWFYZaX_sofVR!SrWApZgScoaZF)!?&x zx3bjKDx5qAtcHef1+pBl@{myr^5Blg91z;NEG?n=-*irZedB zfS~QD(`H}Oyy3Xjg-W)g?hJ#u1`X?Se@M-qLI>EKqi@Nd%Iv7CT#p@f-cJP2f`3=a zzhYafBY*wxpigO_gvg7=smYchZ=yU(zJot@atiEFPP=38lGmkgOr_V>>%IX^Sg(7H zsndp2{S5puXTYUa5Sr>ST*uhKiWJ0RO%)QXb#}Hc?z9W6T)#E_T5H()8aJQDi~0tS z$TlDeIcQ<;8u=_}*#sXTw-l5;(QM;_%L*{J@R+J*k{;jBk zjt)GB2p}A84xQL^ym^RbhFy{kwnWZqKlON4pSB}ffXsY(m#zWh5N{)1VBC=)5szKD zV#zoitwmyb-UZ6FM%(&#WKkAlDbH&Hk5&hL>*F&cyoXzx{+ec$_lv;yipuChSR)2(`3H(*5;$-~D~|S+aPY16AET(Q zSbPBgp}>IZlA;RzedN#Z@4*ORnxijKMKUgHwh%3&Sf?BKF#Nw6E6yj=j&!w}25sZb<4oK|$->LhasE?cQ|lzKJe617hgizB|4>Des;|U)@ai!qz8JTc4O6 zd2jri;A=_wS{8f~U+ec>^LjknM_wN(KW}y3?3(Vn zaW4(}rl7^HthYw#(N&-d5C^{%) zT>2_wmOeuUGF}_TZtL16O2J#vO)F|CnYOFIc4#3#etD&BCo&P|{7edEO?5eH1d20I9 zjI^+Ae`?$Q^oA$rz|utj0t~?7_Ouwd)xFTvmTEG#N8`;F#8EHc|2PqM&Nahw_f*RL z6sxf(CGMG(=EZ|4_rW>w;7V?1U;sG`|Hd%DLgC55fJanz%oqUjc?7ej1C+@VZ{r(e z23iBEu=g{77MlQy;QbtEYUf?C{~#p~l+D({p(a6FRQL;mBPqHJjx`%^R!>*Yw0yno z?Y4CFo{3`YWY<8I7PsBnve0lS)o^HDJd|=DVsB`(BpNNMXR~ z=3|QLPT(MUiq(dXN@>yD4Ma?}-Na-^()e;A-Uc(eoa~`&B7f{eU6sAlPogJ+r+Ise z>5e(GNY-O6GVNGUW`!l`Op6S!pu0CIA)5#Dmok$nGp=ab7@LUP$$98*)eh8elh5GW z@Q+g{N&yEP@%*20fq&0c|ClTOG3WU)SH%7m{FoCT*qyxXryP<8#daQt;v#uaVC0qP zc}oQxU$ShE+4$X)7nV8tUH+nD8{aZnwanpX`7EF0`QYS}%N+eKCj}>ejGw|I{VtdJ o`6eofpXCnT%Ws=Jxy<2bd1DD0#0&f^Z`nmvp8qLFzif^DFDVg&fB*mh literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc b/lib/python3.12/site-packages/bs4/tests/__pycache__/test_tag.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49626ac00b169da8109dc259f5b20d776aa3536a GIT binary patch literal 13570 zcmcgzTWlLwdL9lr)JT>zvPECCv7Ip`nW8O`mgS4=P~2R6Svv{ktQET}G-XGekwlv! zwKF3roLF(vrl^!GU>gN0rHdl+Vu8qTfEYzl1brydJ`_d!!XZ=0W%IB=pYrCFvklU){8<+noUkfV=3jbt|rqH-?*Sf&{gCwXJ)2H6irXiQ7Oer zydGZzvcxFNs7q!>S=lw}me~)OQIG5f%E=y}USw>vLG}XWWngEtQRaa*$&Em_$xT3; zG)JE-^QlYxY`f0hjE$Un;#;ngCi(smzvZ=Rs08TyeHsE4y#Ft~HdO zD!;O)+~ax=!)WY9=1*KQH{pW5$Pc;d_VqgSZK(4e#-S}IvlDF9o9gv;cvF@M^06XQ z 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

61nJjmoGCTp93&c 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 Zl)R?%e#)PyoN3v^3%oe

\ No newline at end of file diff --git a/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase b/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase new file mode 100644 index 0000000000000000000000000000000000000000..0fe66dd23fe94a8e451dfb1a84da38ed0984c1f9 GIT binary patch literal 19469 zcmeHP%}&BV5UwW1c<}1c&|0d-m{hN9YYZMVF=z-E6E3Azz?Aa07`*ugp1gb37w}np z1J6Ey_J;^Y+hVrDb~+?vcLObSXLo15`M%w!71Cc4g4b8Y>@_=7*S$g~EsGkt2Bn={ zt2=1kXi~B5P|KmamD`Rb<;p=_zIm%4C&qy-Vu088oOsuGz>Kq!-D0_0%~Ls_F?gfesF!B~xlP=*UCbCH?n*-O%0 z!Q*F>?46hl=N3}p9^s$pfQ;#K?C}VRg&?#Cu4Gl`M+NhN`Lsc{A^94o$;0t3y>S870B{5&zz9DFt<}-BMx(8V;~9 zu^`3{e->4K<9oQkG(Mym>pheEPdQ^GK5fr%nc+{ydd)pa{!emW8I*DurdQ@~y8Kk4 zgV7-WU60=nl>ER&`8c&A8JzU^4}@gt+g^h^gT@rwKLtV<2l@NX63OYId;^?(0~P60 z?9W6QN1A0E6WR+_CBVe3&|S@XJ2R{CP{xr=dJz@rVH;L3n4Q9zrUy|Y_Y}rG!O4js mqyYzMPzM!p)C@wIG(#Cwq{BE*384&|DuI`yvfSgo2>k@d3|T1v literal 0 HcmV?d00001 diff --git a/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase b/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase new file mode 100644 index 0000000..367106c --- /dev/null +++ b/lib/python3.12/site-packages/bs4/tests/fuzz/clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase @@ -0,0 +1,2 @@ + +' + "clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896", + + # b'ñ' + "clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224", + + #
, some ^@ characters, some tags. + "clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744", + + # Nested table + "crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08" + ] + ) + def test_html5lib_parse_errors(self, filename): + markup = self.__markup(filename) + print(BeautifulSoup(markup, 'html5lib').encode()) + + def __markup(self, filename): + if not filename.endswith(self.TESTCASE_SUFFIX): + filename += self.TESTCASE_SUFFIX + this_dir = os.path.split(__file__)[0] + path = os.path.join(this_dir, 'fuzz', filename) + return open(path, 'rb').read() diff --git a/lib/python3.12/site-packages/bs4/tests/test_html5lib.py b/lib/python3.12/site-packages/bs4/tests/test_html5lib.py new file mode 100644 index 0000000..4197720 --- /dev/null +++ b/lib/python3.12/site-packages/bs4/tests/test_html5lib.py @@ -0,0 +1,224 @@ +"""Tests to ensure that the html5lib tree builder generates good trees.""" + +import pytest +import warnings + +from bs4 import BeautifulSoup +from bs4.element import SoupStrainer +from . import ( + HTML5LIB_PRESENT, + HTML5TreeBuilderSmokeTest, + SoupTest, +) + +@pytest.mark.skipif( + not HTML5LIB_PRESENT, + reason="html5lib seems not to be present, not testing its tree builder." +) +class TestHTML5LibBuilder(SoupTest, HTML5TreeBuilderSmokeTest): + """See ``HTML5TreeBuilderSmokeTest``.""" + + @property + def default_builder(self): + from bs4.builder import HTML5TreeBuilder + return HTML5TreeBuilder + + def test_soupstrainer(self): + # The html5lib tree builder does not support SoupStrainers. + strainer = SoupStrainer("b") + markup = "

A bold statement.

" + with warnings.catch_warnings(record=True) as w: + soup = BeautifulSoup(markup, "html5lib", parse_only=strainer) + assert soup.decode() == self.document_for(markup) + + [warning] = w + assert warning.filename == __file__ + assert "the html5lib tree builder doesn't support parse_only" in str(warning.message) + + def test_correctly_nested_tables(self): + """html5lib inserts tags where other parsers don't.""" + markup = ('
' + '' + "') + + self.assert_soup( + markup, + '
Here's another table:" + '' + '' + '
foo
Here\'s another table:' + '
foo
' + '
') + + self.assert_soup( + "" + "" + "
Foo
Bar
Baz
") + + def test_xml_declaration_followed_by_doctype(self): + markup = ''' + + + + + +

foo

+ +''' + soup = self.soup(markup) + # Verify that we can reach the

tag; this means the tree is connected. + assert b"

foo

" == soup.p.encode() + + def test_reparented_markup(self): + markup = '

foo

\n

bar

' + soup = self.soup(markup) + assert "

foo

\n

bar

" == soup.body.decode() + assert 2 == len(soup.find_all('p')) + + + def test_reparented_markup_ends_with_whitespace(self): + markup = '

foo

\n

bar

\n' + soup = self.soup(markup) + assert "

foo

\n

bar

\n" == soup.body.decode() + assert 2 == len(soup.find_all('p')) + + def test_reparented_markup_containing_identical_whitespace_nodes(self): + """Verify that we keep the two whitespace nodes in this + document distinct when reparenting the adjacent tags. + """ + markup = '
' + soup = self.soup(markup) + space1, space2 = soup.find_all(string=' ') + tbody1, tbody2 = soup.find_all('tbody') + assert space1.next_element is tbody1 + assert tbody2.next_element is space2 + + def test_reparented_markup_containing_children(self): + markup = '' + soup = self.soup(markup) + noscript = soup.noscript + assert "target" == noscript.next_element + target = soup.find(string='target') + + # The 'aftermath' string was duplicated; we want the second one. + final_aftermath = soup.find_all(string='aftermath')[-1] + + # The