diff --git a/.gitignore b/.gitignore index f6153d3..f933185 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,8 @@ build/ develop-eggs/ dist/ downloads/ +input/ +output/* eggs/ .eggs/ lib/ @@ -165,4 +167,8 @@ cython_debug/ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. -.idea/ \ No newline at end of file +.idea/ + +# Random inputs and outputs +random_inputs/ +random_outputs/ \ No newline at end of file diff --git a/README.md b/README.md index 59e2721..b2d081c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,33 @@ Text extraction like [PyMuPDF](https://github.com/pymupdf/PyMuPDF), but without # Installation -You'll need python 3.9+ first. Then run `pip install pdftext`. +You'll need python 3.10+ first. Then run `pip install pdftext`. + +# Development + +To set up the development environment: + +1. Clone the repository: +```shell +git clone https://github.com/VikParuchuri/pdftext.git +cd pdftext +``` + +2. Create and activate a virtual environment: +```shell +python -m venv .venv +source .venv/bin/activate # On Windows use `.venv\Scripts\activate` +``` + +3. Install dependencies using UV: +```shell +uv pip install -r requirements-dev.txt +``` + +4. Run tests: +```shell +uv run pytest +``` # Usage @@ -132,12 +158,14 @@ For the alignment score, I extracted the text, then used the rapidfuzz library t ## Running benchmarks -You can run the benchmarks yourself. To do so, you have to first install pdftext manually. The install assumes you have poetry and Python 3.9+ installed. +You can run the benchmarks yourself. To do so, you have to first install pdftext manually. The install assumes you have Python 3.10+ installed. ```shell git clone https://github.com/VikParuchuri/pdftext.git cd pdftext -poetry install +python -m venv .venv +source .venv/bin/activate # On Windows use `.venv\Scripts\activate` +uv pip install -r requirements-dev.txt python benchmark.py # Will download the benchmark pdfs automatically ``` diff --git a/input/reliance_shares.pdf b/input/reliance_shares.pdf new file mode 100644 index 0000000..d3463e2 Binary files /dev/null and b/input/reliance_shares.pdf differ diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..c272707 --- /dev/null +++ b/mypy.ini @@ -0,0 +1,25 @@ +[mypy] +python_version = 3.13 +warn_return_any = True +warn_unused_configs = True +disallow_untyped_defs = True +disallow_incomplete_defs = True +check_untyped_defs = True +ignore_missing_imports = True +# We'll progressively remove these as we fix the errors +disable_error_code = no-redef,misc,no-any-return + +# For third-party libraries without type stubs +[mypy-pypdfium2.*] +ignore_missing_imports = True + +[mypy-pypdfium2] +ignore_missing_imports = True + +# Exclude root level extract_text.py file +[mypy-extract_text] +ignore_errors = True + +# Ignore errors in pdftext.tables +[mypy-pdftext.tables] +ignore_errors = True \ No newline at end of file diff --git a/output/bbox_images/page_1_visualization.png b/output/bbox_images/page_1_visualization.png new file mode 100644 index 0000000..a72d287 Binary files /dev/null and b/output/bbox_images/page_1_visualization.png differ diff --git a/output/reliance_bbox.json b/output/reliance_bbox.json new file mode 100644 index 0000000..d979d4a --- /dev/null +++ b/output/reliance_bbox.json @@ -0,0 +1 @@ +{"pages": [{"page": 0, "bbox": [0.0, 0.0, 792.0, 612.0], "width": 792, "height": 612, "rotation": 0, "blocks": [{"lines": [{"spans": [{"bbox": [345.0, 80.373291015625, 361.56488037109375, 84.70147705078125], "text": "Class X ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 0, "char_end_idx": 7, "url": "", "superscript": false, "subscript": false}, {"bbox": [365.171142578125, 80.373291015625, 381.0287780761719, 84.70147705078125], "text": "(Equity)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 8, "char_end_idx": 15, "url": "", "superscript": false, "subscript": false}, {"bbox": [379.9205017089844, 83.8800048828125, 379.9205017089844, 83.8800048828125], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 16, "char_end_idx": 16, "url": "", "superscript": false, "subscript": false}, {"bbox": [385.1999816894531, 77.61328125, 397.7127990722656, 81.94146728515625], "text": "Class ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 17, "char_end_idx": 22, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.7875671386719, 81.1199951171875, 396.7875671386719, 81.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 23, "char_end_idx": 23, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.7875671386719, 81.1199951171875, 396.7875671386719, 81.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 24, "char_end_idx": 24, "url": "", "superscript": false, "subscript": false}], "bbox": [345.0, 77.61328125, 397.7127990722656, 84.70147705078125]}, {"spans": [{"bbox": [389.5199890136719, 83.13330078125, 392.4068908691406, 87.46148681640625], "text": "Y", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 25, "char_end_idx": 25, "url": "", "superscript": true, "subscript": false}, {"bbox": [390.1869812011719, 86.6400146484375, 390.1869812011719, 86.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 26, "char_end_idx": 26, "url": "", "superscript": false, "subscript": false}, {"bbox": [413.5199890136719, 80.373291015625, 424.0885925292969, 84.70147705078125], "text": "Total", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 27, "char_end_idx": 31, "url": "", "superscript": false, "subscript": false}, {"bbox": [423.1633605957031, 83.8800048828125, 423.1633605957031, 83.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 32, "char_end_idx": 32, "url": "", "superscript": false, "subscript": false}, {"bbox": [423.1633605957031, 83.8800048828125, 423.1633605957031, 83.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 33, "char_end_idx": 33, "url": "", "superscript": false, "subscript": false}], "bbox": [389.5199890136719, 80.373291015625, 424.0885925292969, 87.46148681640625]}], "bbox": [345.0, 77.61328125, 424.0885925292969, 87.46148681640625]}, {"lines": [{"spans": [{"bbox": [665.4000244140625, 69.57330322265625, 693.9955444335938, 73.9014892578125], "text": "Sub category ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 34, "char_end_idx": 46, "url": "", "superscript": false, "subscript": false}, {"bbox": [693.0703125, 73.08001708984375, 693.0703125, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 47, "char_end_idx": 47, "url": "", "superscript": false, "subscript": false}, {"bbox": [693.0703125, 73.08001708984375, 693.0703125, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 48, "char_end_idx": 48, "url": "", "superscript": false, "subscript": false}], "bbox": [665.4000244140625, 69.57330322265625, 693.9955444335938, 73.9014892578125]}, {"spans": [{"bbox": [677.1600341796875, 75.09326171875, 681.1246337890625, 79.42144775390625], "text": "(i)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 49, "char_end_idx": 51, "url": "", "superscript": false, "subscript": false}, {"bbox": [680.016357421875, 78.5999755859375, 680.016357421875, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 52, "char_end_idx": 52, "url": "", "superscript": false, "subscript": false}, {"bbox": [680.016357421875, 78.5999755859375, 680.016357421875, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 53, "char_end_idx": 53, "url": "", "superscript": false, "subscript": false}], "bbox": [677.1600341796875, 75.09326171875, 681.1246337890625, 79.42144775390625]}], "bbox": [665.4000244140625, 69.57330322265625, 693.9955444335938, 79.42144775390625]}, {"lines": [{"spans": [{"bbox": [701.8800048828125, 69.57330322265625, 730.4755249023438, 73.9014892578125], "text": "Sub category ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 54, "char_end_idx": 66, "url": "", "superscript": false, "subscript": false}, {"bbox": [729.55029296875, 73.08001708984375, 729.55029296875, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 67, "char_end_idx": 67, "url": "", "superscript": false, "subscript": false}, {"bbox": [729.55029296875, 73.08001708984375, 729.55029296875, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 68, "char_end_idx": 68, "url": "", "superscript": false, "subscript": false}], "bbox": [701.8800048828125, 69.57330322265625, 730.4755249023438, 73.9014892578125]}, {"spans": [{"bbox": [713.0400390625, 75.09326171875, 718.0867309570312, 79.42144775390625], "text": "(ii)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 69, "char_end_idx": 72, "url": "", "superscript": false, "subscript": false}, {"bbox": [716.9784545898438, 78.5999755859375, 716.9784545898438, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 73, "char_end_idx": 73, "url": "", "superscript": false, "subscript": false}, {"bbox": [716.9784545898438, 78.5999755859375, 716.9784545898438, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 74, "char_end_idx": 74, "url": "", "superscript": false, "subscript": false}], "bbox": [713.0400390625, 75.09326171875, 718.0867309570312, 79.42144775390625]}], "bbox": [701.8800048828125, 69.57330322265625, 730.4755249023438, 79.42144775390625]}, {"lines": [{"spans": [{"bbox": [735.8399658203125, 69.57330322265625, 764.4354858398438, 73.9014892578125], "text": "Sub category ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 75, "char_end_idx": 87, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.51025390625, 73.08001708984375, 763.51025390625, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 88, "char_end_idx": 88, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.51025390625, 73.08001708984375, 763.51025390625, 73.08001708984375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 89, "char_end_idx": 89, "url": "", "superscript": false, "subscript": false}], "bbox": [735.8399658203125, 69.57330322265625, 764.4354858398438, 73.9014892578125]}, {"spans": [{"bbox": [746.52001953125, 75.09326171875, 752.6487426757812, 79.42144775390625], "text": "(iii)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 90, "char_end_idx": 94, "url": "", "superscript": false, "subscript": false}, {"bbox": [751.5404663085938, 78.5999755859375, 751.5404663085938, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 95, "char_end_idx": 95, "url": "", "superscript": false, "subscript": false}, {"bbox": [751.5404663085938, 78.5999755859375, 751.5404663085938, 78.5999755859375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 96, "char_end_idx": 96, "url": "", "superscript": false, "subscript": false}], "bbox": [746.52001953125, 75.09326171875, 752.6487426757812, 79.42144775390625]}], "bbox": [735.8399658203125, 69.57330322265625, 764.4354858398438, 79.42144775390625]}, {"lines": [{"spans": [{"bbox": [34.560001373291016, 96.5732421875, 40.21262741088867, 100.90145874023438], "text": "(A)", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 97, "char_end_idx": 99, "url": "", "superscript": false, "subscript": false}, {"bbox": [39.104339599609375, 100.07998657226562, 39.104339599609375, 100.07998657226562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 100, "char_end_idx": 100, "url": "", "superscript": false, "subscript": false}, {"bbox": [50.63999938964844, 96.5732421875, 104.82469940185547, 100.90145874023438], "text": "Promoter & Promoter Group", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 101, "char_end_idx": 125, "url": "", "superscript": false, "subscript": false}, {"bbox": [148.67999267578125, 96.45330810546875, 149.8832244873047, 100.781494140625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 126, "char_end_idx": 126, "url": "", "superscript": false, "subscript": false}, {"bbox": [152.287109375, 96.45330810546875, 157.07322692871094, 100.781494140625], "text": "47", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 127, "char_end_idx": 128, "url": "", "superscript": false, "subscript": false}, {"bbox": [155.22274780273438, 99.96002197265625, 155.22274780273438, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 129, "char_end_idx": 129, "url": "", "superscript": false, "subscript": false}, {"bbox": [169.67999267578125, 96.45330810546875, 197.30255126953125, 100.781494140625], "text": "332 27 48 048", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 130, "char_end_idx": 142, "url": "", "superscript": false, "subscript": false}, {"bbox": [230.51998901367188, 96.45330810546875, 231.7232208251953, 100.781494140625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 143, "char_end_idx": 143, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.12710571289062, 96.45330810546875, 236.53358459472656, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 144, "char_end_idx": 144, "url": "", "superscript": false, "subscript": false}, {"bbox": [271.6800231933594, 96.45330810546875, 272.8832702636719, 100.781494140625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 145, "char_end_idx": 145, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.2871398925781, 96.45330810546875, 277.693603515625, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 146, "char_end_idx": 146, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.8431396484375, 99.96002197265625, 275.8431396484375, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 147, "char_end_idx": 147, "url": "", "superscript": false, "subscript": false}, {"bbox": [282.1199951171875, 96.45330810546875, 309.7425231933594, 100.781494140625], "text": "332 27 48 048", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 148, "char_end_idx": 160, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.8920593261719, 99.96002197265625, 307.8920593261719, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 161, "char_end_idx": 161, "url": "", "superscript": false, "subscript": false}, {"bbox": [332.2799987792969, 96.45330810546875, 343.0831604003906, 100.781494140625], "text": "50.49", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 162, "char_end_idx": 166, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.2326965332031, 99.96002197265625, 341.2326965332031, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 167, "char_end_idx": 167, "url": "", "superscript": false, "subscript": false}, {"bbox": [347.5199890136719, 96.45330810546875, 381.1587219238281, 100.781494140625], "text": "332 27 48 048.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 168, "char_end_idx": 183, "url": "", "superscript": false, "subscript": false}, {"bbox": [379.3082580566406, 99.96002197265625, 379.3082580566406, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 184, "char_end_idx": 184, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.36004638671875, 96.45330810546875, 398.7665100097656, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 185, "char_end_idx": 185, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.9160461425781, 99.96002197265625, 396.9160461425781, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 186, "char_end_idx": 186, "url": "", "superscript": false, "subscript": false}, {"bbox": [403.1999816894531, 96.45330810546875, 436.8387145996094, 100.781494140625], "text": "332 27 48 048.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 187, "char_end_idx": 202, "url": "", "superscript": false, "subscript": false}, {"bbox": [434.9882507324219, 99.96002197265625, 434.9882507324219, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 203, "char_end_idx": 203, "url": "", "superscript": false, "subscript": false}, {"bbox": [452.0400390625, 96.45330810546875, 462.84320068359375, 100.781494140625], "text": "49.11", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 204, "char_end_idx": 208, "url": "", "superscript": false, "subscript": false}, {"bbox": [460.99273681640625, 99.96002197265625, 460.99273681640625, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 209, "char_end_idx": 209, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.0400390625, 96.45330810546875, 496.4465026855469, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 210, "char_end_idx": 210, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.5960388183594, 99.96002197265625, 494.5960388183594, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 211, "char_end_idx": 211, "url": "", "superscript": false, "subscript": false}, {"bbox": [525.8399658203125, 96.45330810546875, 536.6431884765625, 100.781494140625], "text": "50.49", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 212, "char_end_idx": 216, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.760009765625, 96.45330810546875, 552.9632568359375, 100.781494140625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 217, "char_end_idx": 217, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.3671264648438, 96.45330810546875, 557.7736206054688, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 218, "char_end_idx": 218, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.9231567382812, 99.96002197265625, 555.9231567382812, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 219, "char_end_idx": 219, "url": "", "superscript": false, "subscript": false}, {"bbox": [572.6400146484375, 96.45330810546875, 581.0367431640625, 100.781494140625], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 220, "char_end_idx": 223, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.186279296875, 99.96002197265625, 579.186279296875, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 224, "char_end_idx": 224, "url": "", "superscript": false, "subscript": false}, {"bbox": [593.2799682617188, 96.45330810546875, 595.6864624023438, 100.781494140625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 225, "char_end_idx": 225, "url": "", "superscript": false, "subscript": false}, {"bbox": [593.8359985351562, 99.96002197265625, 593.8359985351562, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 226, "char_end_idx": 226, "url": "", "superscript": false, "subscript": false}, {"bbox": [613.5599975585938, 96.45330810546875, 621.9567260742188, 100.781494140625], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 227, "char_end_idx": 230, "url": "", "superscript": false, "subscript": false}, {"bbox": [620.1062622070312, 99.96002197265625, 620.1062622070312, 99.96002197265625], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 231, "char_end_idx": 231, "url": "", "superscript": false, "subscript": false}, {"bbox": [631.5599975585938, 96.45330810546875, 659.1825561523438, 100.781494140625], "text": "332 27 48 048", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 232, "char_end_idx": 244, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3320922851562, 99.96002197265625, 657.3320922851562, 99.96002197265625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 245, "char_end_idx": 245, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3320922851562, 99.96002197265625, 657.3320922851562, 99.96002197265625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 246, "char_end_idx": 246, "url": "", "superscript": false, "subscript": false}], "bbox": [34.560001373291016, 96.45330810546875, 659.1825561523438, 100.90145874023438]}], "bbox": [34.560001373291016, 96.45330810546875, 659.1825561523438, 100.90145874023438]}, {"lines": [{"spans": [{"bbox": [34.560001373291016, 102.2132568359375, 40.32948684692383, 106.54147338867188], "text": "(B)", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 247, "char_end_idx": 249, "url": "", "superscript": false, "subscript": false}, {"bbox": [39.22119903564453, 105.72000122070312, 39.22119903564453, 105.72000122070312], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 250, "char_end_idx": 250, "url": "", "superscript": false, "subscript": false}, {"bbox": [50.63999938964844, 102.2132568359375, 62.05345916748047, 106.54147338867188], "text": "Public", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 251, "char_end_idx": 256, "url": "", "superscript": false, "subscript": false}, {"bbox": [136.67999267578125, 102.09326171875, 157.10130310058594, 106.42147827148438], "text": " 33 62 867", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 257, "char_end_idx": 266, "url": "", "superscript": false, "subscript": false}, {"bbox": [155.25082397460938, 105.60000610351562, 155.25082397460938, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 267, "char_end_idx": 267, "url": "", "superscript": false, "subscript": false}, {"bbox": [169.67999267578125, 102.09326171875, 197.30255126953125, 106.42147827148438], "text": "325 73 57 847", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 268, "char_end_idx": 280, "url": "", "superscript": false, "subscript": false}, {"bbox": [218.51998901367188, 102.09326171875, 236.53567504882812, 106.42147827148438], "text": " 5 10 725", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 281, "char_end_idx": 289, "url": "", "superscript": false, "subscript": false}, {"bbox": [271.6800231933594, 102.09326171875, 272.8832702636719, 106.42147827148438], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 290, "char_end_idx": 290, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.2871398925781, 102.09326171875, 277.693603515625, 106.42147827148438], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 291, "char_end_idx": 291, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.8431396484375, 105.60000610351562, 275.8431396484375, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 292, "char_end_idx": 292, "url": "", "superscript": false, "subscript": false}, {"bbox": [282.1199951171875, 102.09326171875, 309.7425231933594, 106.42147827148438], "text": "325 78 68 572", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 293, "char_end_idx": 305, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.8920593261719, 105.60000610351562, 307.8920593261719, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 306, "char_end_idx": 306, "url": "", "superscript": false, "subscript": false}, {"bbox": [332.2799987792969, 102.09326171875, 343.0831604003906, 106.42147827148438], "text": "49.51", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 307, "char_end_idx": 311, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.2326965332031, 105.60000610351562, 341.2326965332031, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 312, "char_end_idx": 312, "url": "", "superscript": false, "subscript": false}, {"bbox": [347.5199890136719, 102.09326171875, 381.1587219238281, 106.42147827148438], "text": "325 75 39 465.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 313, "char_end_idx": 328, "url": "", "superscript": false, "subscript": false}, {"bbox": [379.3082580566406, 105.60000610351562, 379.3082580566406, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 329, "char_end_idx": 329, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.36004638671875, 102.09326171875, 398.7665100097656, 106.42147827148438], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 330, "char_end_idx": 330, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.9160461425781, 105.60000610351562, 396.9160461425781, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 331, "char_end_idx": 331, "url": "", "superscript": false, "subscript": false}, {"bbox": [403.1999816894531, 102.09326171875, 436.8387145996094, 106.42147827148438], "text": "325 75 39 465.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 332, "char_end_idx": 347, "url": "", "superscript": false, "subscript": false}, {"bbox": [434.9882507324219, 105.60000610351562, 434.9882507324219, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 348, "char_end_idx": 348, "url": "", "superscript": false, "subscript": false}, {"bbox": [452.0400390625, 102.09326171875, 462.84320068359375, 106.42147827148438], "text": "48.15", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 349, "char_end_idx": 353, "url": "", "superscript": false, "subscript": false}, {"bbox": [460.99273681640625, 105.60000610351562, 460.99273681640625, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 354, "char_end_idx": 354, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.0400390625, 102.09326171875, 496.4465026855469, 106.42147827148438], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 355, "char_end_idx": 355, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.5960388183594, 105.60000610351562, 494.5960388183594, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 356, "char_end_idx": 356, "url": "", "superscript": false, "subscript": false}, {"bbox": [525.8399658203125, 102.09326171875, 536.6431884765625, 106.42147827148438], "text": "49.51", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 357, "char_end_idx": 361, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.760009765625, 102.09326171875, 552.9632568359375, 106.42147827148438], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 362, "char_end_idx": 362, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.3671264648438, 102.09326171875, 557.7736206054688, 106.42147827148438], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 363, "char_end_idx": 363, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.9231567382812, 105.60000610351562, 555.9231567382812, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 364, "char_end_idx": 364, "url": "", "superscript": false, "subscript": false}, {"bbox": [572.6400146484375, 102.09326171875, 581.0367431640625, 106.42147827148438], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 365, "char_end_idx": 368, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.186279296875, 105.60000610351562, 579.186279296875, 105.60000610351562], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 369, "char_end_idx": 369, "url": "", "superscript": false, "subscript": false}, {"bbox": [591.5999755859375, 102.2132568359375, 597.6127319335938, 106.54147338867188], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 370, "char_end_idx": 371, "url": "", "superscript": false, "subscript": false}, {"bbox": [595.392822265625, 105.72000122070312, 595.392822265625, 105.72000122070312], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 372, "char_end_idx": 372, "url": "", "superscript": false, "subscript": false}, {"bbox": [614.760009765625, 102.2132568359375, 620.7727661132812, 106.54147338867188], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 373, "char_end_idx": 374, "url": "", "superscript": false, "subscript": false}, {"bbox": [618.5528564453125, 105.72000122070312, 618.5528564453125, 105.72000122070312], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 375, "char_end_idx": 375, "url": "", "superscript": false, "subscript": false}, {"bbox": [631.5599975585938, 102.09326171875, 659.1825561523438, 106.42147827148438], "text": "320 52 21 186", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 376, "char_end_idx": 388, "url": "", "superscript": false, "subscript": false}, {"bbox": [690.9600219726562, 102.2132568359375, 692.1632690429688, 106.54147338867188], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 389, "char_end_idx": 389, "url": "", "superscript": false, "subscript": false}, {"bbox": [694.567138671875, 102.2132568359375, 696.9736328125, 106.54147338867188], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 390, "char_end_idx": 390, "url": "", "superscript": false, "subscript": false}, {"bbox": [695.1231689453125, 105.72000122070312, 695.1231689453125, 105.72000122070312], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 391, "char_end_idx": 391, "url": "", "superscript": false, "subscript": false}, {"bbox": [729.47998046875, 102.2132568359375, 731.886474609375, 106.54147338867188], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 392, "char_end_idx": 392, "url": "", "superscript": false, "subscript": false}, {"bbox": [730.0360107421875, 105.72000122070312, 730.0360107421875, 105.72000122070312], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 393, "char_end_idx": 393, "url": "", "superscript": false, "subscript": false}, {"bbox": [762.47998046875, 102.2132568359375, 764.886474609375, 106.54147338867188], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 394, "char_end_idx": 394, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.0360107421875, 105.72000122070312, 763.0360107421875, 105.72000122070312], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 395, "char_end_idx": 395, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.0360107421875, 105.72000122070312, 763.0360107421875, 105.72000122070312], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 396, "char_end_idx": 396, "url": "", "superscript": false, "subscript": false}], "bbox": [34.560001373291016, 102.09326171875, 764.886474609375, 106.54147338867188]}, {"spans": [{"bbox": [34.44000244140625, 107.73324584960938, 40.44840621948242, 112.06146240234375], "text": "(C)", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 397, "char_end_idx": 399, "url": "", "superscript": false, "subscript": false}, {"bbox": [39.340118408203125, 111.239990234375, 39.340118408203125, 111.239990234375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 400, "char_end_idx": 400, "url": "", "superscript": false, "subscript": false}, {"bbox": [50.63999938964844, 107.73324584960938, 99.41618347167969, 112.06146240234375], "text": "Non Promoter-Non Public", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 401, "char_end_idx": 423, "url": "", "superscript": false, "subscript": false}, {"bbox": [97.75208282470703, 111.239990234375, 97.75208282470703, 111.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 424, "char_end_idx": 424, "url": "", "superscript": false, "subscript": false}, {"bbox": [97.75208282470703, 111.239990234375, 97.75208282470703, 111.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 425, "char_end_idx": 425, "url": "", "superscript": false, "subscript": false}], "bbox": [34.44000244140625, 107.73324584960938, 99.41618347167969, 112.06146240234375]}], "bbox": [34.44000244140625, 102.09326171875, 764.886474609375, 112.06146240234375]}, {"lines": [{"spans": [{"bbox": [40.31999969482422, 113.13327026367188, 48.70891189575195, 117.46148681640625], "text": "(C1)", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 426, "char_end_idx": 429, "url": "", "superscript": false, "subscript": false}, {"bbox": [47.600624084472656, 116.6400146484375, 47.600624084472656, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 430, "char_end_idx": 430, "url": "", "superscript": false, "subscript": false}, {"bbox": [50.63999938964844, 113.13327026367188, 95.44896697998047, 117.46148681640625], "text": "Shares underlying DRs ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 431, "char_end_idx": 452, "url": "", "superscript": false, "subscript": false}, {"bbox": [154.68710327148438, 113.13327026367188, 157.0935821533203, 117.46148681640625], "text": "1", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 453, "char_end_idx": 453, "url": "", "superscript": false, "subscript": false}, {"bbox": [191.27999877929688, 113.13327026367188, 192.4832305908203, 117.46148681640625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 454, "char_end_idx": 454, "url": "", "superscript": false, "subscript": false}, {"bbox": [194.88711547851562, 113.13327026367188, 197.29359436035156, 117.46148681640625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 455, "char_end_idx": 455, "url": "", "superscript": false, "subscript": false}, {"bbox": [195.443115234375, 116.6400146484375, 195.443115234375, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 456, "char_end_idx": 456, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.1199951171875, 113.13327026367188, 236.52647399902344, 117.46148681640625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 457, "char_end_idx": 457, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.67599487304688, 116.6400146484375, 234.67599487304688, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 458, "char_end_idx": 458, "url": "", "superscript": false, "subscript": false}, {"bbox": [252.48001098632812, 113.13327026367188, 277.7220458984375, 117.46148681640625], "text": "18 53 77 394", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 459, "char_end_idx": 470, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.87158203125, 116.6400146484375, 275.87158203125, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 471, "char_end_idx": 471, "url": "", "superscript": false, "subscript": false}, {"bbox": [284.5199890136719, 113.13327026367188, 309.76202392578125, 117.46148681640625], "text": "18 53 77 394", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 472, "char_end_idx": 483, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.91156005859375, 116.6400146484375, 307.91156005859375, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 484, "char_end_idx": 484, "url": "", "superscript": false, "subscript": false}, {"bbox": [337.20001220703125, 113.13327026367188, 343.2127380371094, 117.46148681640625], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 485, "char_end_idx": 486, "url": "", "superscript": false, "subscript": false}, {"bbox": [340.9928283691406, 116.6400146484375, 340.9928283691406, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 487, "char_end_idx": 487, "url": "", "superscript": false, "subscript": false}, {"bbox": [349.91998291015625, 113.13327026367188, 381.1522521972656, 117.46148681640625], "text": "18 53 77 394.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 488, "char_end_idx": 502, "url": "", "superscript": false, "subscript": false}, {"bbox": [379.3017883300781, 116.6400146484375, 379.3017883300781, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 503, "char_end_idx": 503, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.36004638671875, 113.13327026367188, 398.7665100097656, 117.46148681640625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 504, "char_end_idx": 504, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.9160461425781, 116.6400146484375, 396.9160461425781, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 505, "char_end_idx": 505, "url": "", "superscript": false, "subscript": false}, {"bbox": [405.5999755859375, 113.13327026367188, 436.8322448730469, 117.46148681640625], "text": "18 53 77 394.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 506, "char_end_idx": 520, "url": "", "superscript": false, "subscript": false}, {"bbox": [434.9817810058594, 116.6400146484375, 434.9817810058594, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 521, "char_end_idx": 521, "url": "", "superscript": false, "subscript": false}, {"bbox": [454.4400329589844, 113.13327026367188, 462.83673095703125, 117.46148681640625], "text": "2.74", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 522, "char_end_idx": 525, "url": "", "superscript": false, "subscript": false}, {"bbox": [460.98626708984375, 116.6400146484375, 460.98626708984375, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 526, "char_end_idx": 526, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.0400390625, 113.13327026367188, 496.4465026855469, 117.46148681640625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 527, "char_end_idx": 527, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.5960388183594, 116.6400146484375, 494.5960388183594, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 528, "char_end_idx": 528, "url": "", "superscript": false, "subscript": false}, {"bbox": [530.760009765625, 113.13327026367188, 536.7727661132812, 117.46148681640625], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 529, "char_end_idx": 530, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.760009765625, 113.13327026367188, 552.9632568359375, 117.46148681640625], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 531, "char_end_idx": 531, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.3671264648438, 113.13327026367188, 557.7736206054688, 117.46148681640625], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 532, "char_end_idx": 532, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.9231567382812, 116.6400146484375, 555.9231567382812, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 533, "char_end_idx": 533, "url": "", "superscript": false, "subscript": false}, {"bbox": [572.6400146484375, 113.13327026367188, 581.0367431640625, 117.46148681640625], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 534, "char_end_idx": 537, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.186279296875, 116.6400146484375, 579.186279296875, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 538, "char_end_idx": 538, "url": "", "superscript": false, "subscript": false}, {"bbox": [591.5999755859375, 113.13327026367188, 597.6127319335938, 117.46148681640625], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 539, "char_end_idx": 540, "url": "", "superscript": false, "subscript": false}, {"bbox": [595.392822265625, 116.6400146484375, 595.392822265625, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 541, "char_end_idx": 541, "url": "", "superscript": false, "subscript": false}, {"bbox": [614.760009765625, 113.13327026367188, 620.7727661132812, 117.46148681640625], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 542, "char_end_idx": 543, "url": "", "superscript": false, "subscript": false}, {"bbox": [618.5528564453125, 116.6400146484375, 618.5528564453125, 116.6400146484375], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 544, "char_end_idx": 544, "url": "", "superscript": false, "subscript": false}, {"bbox": [633.9600219726562, 113.13327026367188, 659.2020874023438, 117.46148681640625], "text": "18 53 45 594", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 545, "char_end_idx": 556, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3516235351562, 116.6400146484375, 657.3516235351562, 116.6400146484375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 557, "char_end_idx": 557, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3516235351562, 116.6400146484375, 657.3516235351562, 116.6400146484375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 558, "char_end_idx": 558, "url": "", "superscript": false, "subscript": false}], "bbox": [40.31999969482422, 113.13327026367188, 659.2020874023438, 117.46148681640625]}, {"spans": [{"bbox": [40.31999969482422, 121.29324340820312, 112.25031280517578, 125.6214599609375], "text": "(C2) Shares held by Employee Trusts", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 559, "char_end_idx": 593, "url": "", "superscript": false, "subscript": false}, {"bbox": [151.16079711914062, 123.98977661132812, 152.16079711914062, 124.98977661132812], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 594, "char_end_idx": 594, "url": "", "superscript": false, "subscript": false}, {"bbox": [154.73416137695312, 121.29324340820312, 157.14064025878906, 125.6214599609375], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 595, "char_end_idx": 595, "url": "", "superscript": true, "subscript": false}, {"bbox": [191.3507080078125, 123.98977661132812, 192.3507080078125, 124.98977661132812], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 596, "char_end_idx": 596, "url": "", "superscript": false, "subscript": false}, {"bbox": [194.95785522460938, 121.29324340820312, 197.3643341064453, 125.6214599609375], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 597, "char_end_idx": 597, "url": "", "superscript": true, "subscript": false}, {"bbox": [234.214599609375, 121.29324340820312, 236.62107849121094, 125.6214599609375], "text": " 0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 598, "char_end_idx": 599, "url": "", "superscript": true, "subscript": false}, {"bbox": [271.7400817871094, 123.98977661132812, 272.7400817871094, 124.98977661132812], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 600, "char_end_idx": 600, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.3471984863281, 121.29324340820312, 277.753662109375, 125.6214599609375], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 601, "char_end_idx": 601, "url": "", "superscript": true, "subscript": false}, {"bbox": [303.7200012207031, 118.53326416015625, 304.9232482910156, 122.86148071289062], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 602, "char_end_idx": 602, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.3271179199219, 118.53326416015625, 309.73358154296875, 122.86148071289062], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 603, "char_end_idx": 603, "url": "", "superscript": true, "subscript": false}, {"bbox": [334.6804504394531, 118.53326416015625, 343.10052490234375, 122.86148071289062], "text": " 0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 604, "char_end_idx": 608, "url": "", "superscript": false, "subscript": false}, {"bbox": [369.12945556640625, 121.22979736328125, 370.12945556640625, 122.22979736328125], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 609, "char_end_idx": 609, "url": "", "superscript": false, "subscript": false}, {"bbox": [372.736572265625, 118.53326416015625, 381.1306457519531, 122.86148071289062], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 610, "char_end_idx": 613, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.38238525390625, 118.53326416015625, 398.7888488769531, 122.86148071289062], "text": " 0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 614, "char_end_idx": 615, "url": "", "superscript": true, "subscript": false}, {"bbox": [424.8177490234375, 121.22979736328125, 425.8177490234375, 122.22979736328125], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 616, "char_end_idx": 616, "url": "", "superscript": false, "subscript": false}, {"bbox": [428.42486572265625, 118.53326416015625, 436.8189392089844, 122.86148071289062], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 617, "char_end_idx": 620, "url": "", "superscript": false, "subscript": false}, {"bbox": [454.451171875, 118.53326416015625, 462.8712463378906, 122.86148071289062], "text": " 0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 621, "char_end_idx": 625, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.09405517578125, 118.53326416015625, 496.5005187988281, 122.86148071289062], "text": " 0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 626, "char_end_idx": 627, "url": "", "superscript": false, "subscript": false}, {"bbox": [528.2859497070312, 118.53326416015625, 536.6800537109375, 122.86148071289062], "text": " 0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 628, "char_end_idx": 632, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.8018798828125, 121.22979736328125, 552.8018798828125, 122.22979736328125], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 633, "char_end_idx": 633, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.4090576171875, 118.53326416015625, 557.8155517578125, 122.86148071289062], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 634, "char_end_idx": 634, "url": "", "superscript": true, "subscript": false}, {"bbox": [572.677734375, 118.53326416015625, 581.0977783203125, 122.86148071289062], "text": " 0.00", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 635, "char_end_idx": 639, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.247314453125, 122.04000854492188, 579.247314453125, 122.04000854492188], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 640, "char_end_idx": 640, "url": "", "superscript": false, "subscript": false}, {"bbox": [591.5999755859375, 121.29324340820312, 597.6127319335938, 125.6214599609375], "text": "NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 641, "char_end_idx": 642, "url": "", "superscript": false, "subscript": false}, {"bbox": [614.7662353515625, 121.29324340820312, 620.7789306640625, 125.6214599609375], "text": " NA", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 643, "char_end_idx": 645, "url": "", "superscript": false, "subscript": false}, {"bbox": [653.167724609375, 123.98977661132812, 654.167724609375, 124.98977661132812], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 646, "char_end_idx": 646, "url": "", "superscript": false, "subscript": false}, {"bbox": [656.780029296875, 121.29324340820312, 659.1865234375, 125.6214599609375], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 647, "char_end_idx": 647, "url": "", "superscript": true, "subscript": false}, {"bbox": [657.3360595703125, 124.79998779296875, 657.3360595703125, 124.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 648, "char_end_idx": 648, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3360595703125, 124.79998779296875, 657.3360595703125, 124.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 649, "char_end_idx": 649, "url": "", "superscript": false, "subscript": false}], "bbox": [40.31999969482422, 118.53326416015625, 659.1865234375, 125.6214599609375]}], "bbox": [40.31999969482422, 113.13327026367188, 659.2020874023438, 125.6214599609375]}, {"lines": [{"spans": [{"bbox": [78.95999908447266, 129.81326293945312, 89.5285873413086, 134.1414794921875], "text": "Total", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 650, "char_end_idx": 654, "url": "", "superscript": false, "subscript": false}, {"bbox": [136.67999267578125, 129.81326293945312, 157.10130310058594, 134.1414794921875], "text": " 33 62 915", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 655, "char_end_idx": 664, "url": "", "superscript": false, "subscript": false}, {"bbox": [155.25082397460938, 133.32000732421875, 155.25082397460938, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 665, "char_end_idx": 665, "url": "", "superscript": false, "subscript": false}, {"bbox": [169.67999267578125, 129.81326293945312, 197.30255126953125, 134.1414794921875], "text": "658 01 05 895", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 666, "char_end_idx": 678, "url": "", "superscript": false, "subscript": false}, {"bbox": [218.51998901367188, 129.81326293945312, 236.53567504882812, 134.1414794921875], "text": " 5 10 725", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 679, "char_end_idx": 687, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.68519592285156, 133.32000732421875, 234.68519592285156, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 688, "char_end_idx": 688, "url": "", "superscript": false, "subscript": false}, {"bbox": [252.48001098632812, 129.81326293945312, 277.7220458984375, 134.1414794921875], "text": "18 53 77 394", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 689, "char_end_idx": 700, "url": "", "superscript": false, "subscript": false}, {"bbox": [275.87158203125, 133.32000732421875, 275.87158203125, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 701, "char_end_idx": 701, "url": "", "superscript": false, "subscript": false}, {"bbox": [282.1199951171875, 129.81326293945312, 309.7425231933594, 134.1414794921875], "text": "676 59 94 014", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 702, "char_end_idx": 714, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.8920593261719, 133.32000732421875, 307.8920593261719, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 715, "char_end_idx": 715, "url": "", "superscript": false, "subscript": false}, {"bbox": [329.8800048828125, 129.81326293945312, 343.08966064453125, 134.1414794921875], "text": "100.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 716, "char_end_idx": 721, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.23919677734375, 133.32000732421875, 341.23919677734375, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 722, "char_end_idx": 722, "url": "", "superscript": false, "subscript": false}, {"bbox": [347.5199890136719, 129.81326293945312, 381.1587219238281, 134.1414794921875], "text": "676 56 64 907.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 723, "char_end_idx": 738, "url": "", "superscript": false, "subscript": false}, {"bbox": [379.3082580566406, 133.32000732421875, 379.3082580566406, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 739, "char_end_idx": 739, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.36004638671875, 129.81326293945312, 398.7665100097656, 134.1414794921875], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 740, "char_end_idx": 740, "url": "", "superscript": false, "subscript": false}, {"bbox": [396.9160461425781, 133.32000732421875, 396.9160461425781, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 741, "char_end_idx": 741, "url": "", "superscript": false, "subscript": false}, {"bbox": [403.1999816894531, 129.81326293945312, 436.8387145996094, 134.1414794921875], "text": "676 56 64 907.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 742, "char_end_idx": 757, "url": "", "superscript": false, "subscript": false}, {"bbox": [434.9882507324219, 133.32000732421875, 434.9882507324219, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 758, "char_end_idx": 758, "url": "", "superscript": false, "subscript": false}, {"bbox": [449.6400146484375, 129.81326293945312, 462.84967041015625, 134.1414794921875], "text": "100.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 759, "char_end_idx": 764, "url": "", "superscript": false, "subscript": false}, {"bbox": [460.99920654296875, 133.32000732421875, 460.99920654296875, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 765, "char_end_idx": 765, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.0400390625, 129.81326293945312, 496.4465026855469, 134.1414794921875], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 766, "char_end_idx": 766, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.5960388183594, 133.32000732421875, 494.5960388183594, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 767, "char_end_idx": 767, "url": "", "superscript": false, "subscript": false}, {"bbox": [523.4400634765625, 129.81326293945312, 536.6497192382812, 134.1414794921875], "text": "100.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 768, "char_end_idx": 773, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.760009765625, 129.81326293945312, 552.9632568359375, 134.1414794921875], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 774, "char_end_idx": 774, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.3671264648438, 129.81326293945312, 557.7736206054688, 134.1414794921875], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 775, "char_end_idx": 775, "url": "", "superscript": false, "subscript": false}, {"bbox": [555.9231567382812, 133.32000732421875, 555.9231567382812, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 776, "char_end_idx": 776, "url": "", "superscript": false, "subscript": false}, {"bbox": [572.6400146484375, 129.81326293945312, 581.0367431640625, 134.1414794921875], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 777, "char_end_idx": 780, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.186279296875, 133.32000732421875, 579.186279296875, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 781, "char_end_idx": 781, "url": "", "superscript": false, "subscript": false}, {"bbox": [590.2799682617188, 129.81326293945312, 598.6766967773438, 134.1414794921875], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 782, "char_end_idx": 785, "url": "", "superscript": false, "subscript": false}, {"bbox": [596.8262329101562, 133.32000732421875, 596.8262329101562, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 786, "char_end_idx": 786, "url": "", "superscript": false, "subscript": false}, {"bbox": [613.5599975585938, 129.81326293945312, 621.9567260742188, 134.1414794921875], "text": "0.00", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 787, "char_end_idx": 790, "url": "", "superscript": false, "subscript": false}, {"bbox": [620.1062622070312, 133.32000732421875, 620.1062622070312, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 791, "char_end_idx": 791, "url": "", "superscript": false, "subscript": false}, {"bbox": [631.5599975585938, 129.81326293945312, 659.1825561523438, 134.1414794921875], "text": "671 33 14 828", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 792, "char_end_idx": 804, "url": "", "superscript": false, "subscript": false}, {"bbox": [657.3320922851562, 133.32000732421875, 657.3320922851562, 133.32000732421875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 805, "char_end_idx": 805, "url": "", "superscript": false, "subscript": false}, {"bbox": [694.5599975585938, 129.4532470703125, 696.9664916992188, 133.78146362304688], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 806, "char_end_idx": 806, "url": "", "superscript": false, "subscript": false}, {"bbox": [695.1160278320312, 132.95999145507812, 695.1160278320312, 132.95999145507812], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 807, "char_end_idx": 807, "url": "", "superscript": false, "subscript": false}, {"bbox": [729.47998046875, 129.4532470703125, 731.886474609375, 133.78146362304688], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 808, "char_end_idx": 808, "url": "", "superscript": false, "subscript": false}, {"bbox": [730.0360107421875, 132.95999145507812, 730.0360107421875, 132.95999145507812], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 809, "char_end_idx": 809, "url": "", "superscript": false, "subscript": false}, {"bbox": [762.47998046875, 129.4532470703125, 764.886474609375, 133.78146362304688], "text": "0", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 810, "char_end_idx": 810, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.0360107421875, 132.95999145507812, 763.0360107421875, 132.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 811, "char_end_idx": 811, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.0360107421875, 132.95999145507812, 763.0360107421875, 132.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 812, "char_end_idx": 812, "url": "", "superscript": false, "subscript": false}], "bbox": [78.95999908447266, 129.4532470703125, 764.886474609375, 134.1414794921875]}, {"spans": [{"bbox": [153.24000549316406, 135.33328247070312, 154.4432373046875, 139.6614990234375], "text": " ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 813, "char_end_idx": 813, "url": "", "superscript": false, "subscript": false}, {"bbox": [153.51800537109375, 138.84002685546875, 153.51800537109375, 138.84002685546875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 814, "char_end_idx": 814, "url": "", "superscript": false, "subscript": false}, {"bbox": [153.51800537109375, 138.84002685546875, 153.51800537109375, 138.84002685546875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 815, "char_end_idx": 815, "url": "", "superscript": false, "subscript": false}], "bbox": [153.24000549316406, 135.33328247070312, 154.4432373046875, 139.6614990234375]}, {"spans": [{"bbox": [50.76000213623047, 141.04107666015625, 111.97615051269531, 145.72994995117188], "text": "NA denotes \"Not Applicable\" ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 816, "char_end_idx": 843, "url": "", "superscript": false, "subscript": false}, {"bbox": [110.95063781738281, 144.84002685546875, 110.95063781738281, 144.84002685546875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 844, "char_end_idx": 844, "url": "", "superscript": false, "subscript": false}, {"bbox": [110.95063781738281, 144.84002685546875, 110.95063781738281, 144.84002685546875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 845, "char_end_idx": 845, "url": "", "superscript": false, "subscript": false}], "bbox": [50.76000213623047, 141.04107666015625, 111.97615051269531, 145.72994995117188]}, {"spans": [{"bbox": [31.44000244140625, 146.73324584960938, 44.16923141479492, 151.06146240234375], "text": "Note 1", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 846, "char_end_idx": 851, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 150.239990234375, 42.31875228881836, 150.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 852, "char_end_idx": 852, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 150.239990234375, 42.31875228881836, 150.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 853, "char_end_idx": 853, "url": "", "superscript": false, "subscript": false}], "bbox": [31.44000244140625, 146.73324584960938, 44.16923141479492, 151.06146240234375]}], "bbox": [31.44000244140625, 129.4532470703125, 764.886474609375, 151.06146240234375]}, {"lines": [{"spans": [{"bbox": [31.44000244140625, 164.61325073242188, 44.16923141479492, 168.94146728515625], "text": "Note 2", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 854, "char_end_idx": 859, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 168.1199951171875, 42.31875228881836, 168.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 860, "char_end_idx": 860, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 168.1199951171875, 42.31875228881836, 168.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 861, "char_end_idx": 861, "url": "", "superscript": false, "subscript": false}], "bbox": [31.44000244140625, 164.61325073242188, 44.16923141479492, 168.94146728515625]}, {"spans": [{"bbox": [31.080001831054688, 169.89324951171875, 43.80923080444336, 174.22146606445312], "text": "Note 3", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 862, "char_end_idx": 867, "url": "", "superscript": false, "subscript": false}, {"bbox": [41.9587516784668, 173.39999389648438, 41.9587516784668, 173.39999389648438], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 868, "char_end_idx": 868, "url": "", "superscript": false, "subscript": false}, {"bbox": [50.63999938964844, 170.01327514648438, 385.392333984375, 174.34149169921875], "text": "As the shareholding pattern upload utility on the stock exchanges' websites does not recognise voting rights in fractions, the same have been rounded-off to the nearest full figure.", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 869, "char_end_idx": 1049, "url": "", "superscript": false, "subscript": false}, {"bbox": [384.46710205078125, 173.52001953125, 384.46710205078125, 173.52001953125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1050, "char_end_idx": 1050, "url": "", "superscript": false, "subscript": false}, {"bbox": [384.46710205078125, 173.52001953125, 384.46710205078125, 173.52001953125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1051, "char_end_idx": 1051, "url": "", "superscript": false, "subscript": false}], "bbox": [31.080001831054688, 169.89324951171875, 385.392333984375, 174.34149169921875]}, {"spans": [{"bbox": [31.080001831054688, 175.29324340820312, 43.80923080444336, 179.6214599609375], "text": "Note 4", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1052, "char_end_idx": 1057, "url": "", "superscript": false, "subscript": false}, {"bbox": [41.9587516784668, 178.79998779296875, 41.9587516784668, 178.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1058, "char_end_idx": 1058, "url": "", "superscript": false, "subscript": false}, {"bbox": [41.9587516784668, 178.79998779296875, 41.9587516784668, 178.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1059, "char_end_idx": 1059, "url": "", "superscript": false, "subscript": false}], "bbox": [31.080001831054688, 175.29324340820312, 43.80923080444336, 179.6214599609375]}, {"spans": [{"bbox": [31.080001831054688, 183.4532470703125, 43.80923080444336, 187.78146362304688], "text": "Note 5", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1060, "char_end_idx": 1065, "url": "", "superscript": false, "subscript": false}, {"bbox": [41.9587516784668, 186.95999145507812, 41.9587516784668, 186.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1066, "char_end_idx": 1066, "url": "", "superscript": false, "subscript": false}, {"bbox": [41.9587516784668, 186.95999145507812, 41.9587516784668, 186.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1067, "char_end_idx": 1067, "url": "", "superscript": false, "subscript": false}], "bbox": [31.080001831054688, 183.4532470703125, 43.80923080444336, 187.78146362304688]}], "bbox": [31.080001831054688, 164.61325073242188, 385.392333984375, 187.78146362304688]}, {"lines": [{"spans": [{"bbox": [31.44000244140625, 197.37326049804688, 44.16923141479492, 201.70147705078125], "text": "Note 6", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1068, "char_end_idx": 1073, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 200.8800048828125, 42.31875228881836, 200.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1074, "char_end_idx": 1074, "url": "", "superscript": false, "subscript": false}, {"bbox": [42.31875228881836, 200.8800048828125, 42.31875228881836, 200.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1075, "char_end_idx": 1075, "url": "", "superscript": false, "subscript": false}], "bbox": [31.44000244140625, 197.37326049804688, 44.16923141479492, 201.70147705078125]}], "bbox": [31.44000244140625, 197.37326049804688, 44.16923141479492, 201.70147705078125]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 183.4532470703125, 762.1653442382812, 187.78146362304688], "text": "There is no change in the shareholding of Promoter & Promoter Group. The shareholding percentage of Promoter & Promoter Group as shown in (VIII) (A) has decreased (as compared to the shareholding percentage as on September 30, 2022) because DRs representing 96 48 920 shares have been converted into shares and the shares underlying DRs have gone down as ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1076, "char_end_idx": 1430, "url": "", "superscript": false, "subscript": false}, {"bbox": [761.2401123046875, 186.95999145507812, 761.2401123046875, 186.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1431, "char_end_idx": 1431, "url": "", "superscript": false, "subscript": false}, {"bbox": [761.2401123046875, 186.95999145507812, 761.2401123046875, 186.95999145507812], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1432, "char_end_idx": 1432, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 183.4532470703125, 762.1653442382812, 187.78146362304688]}, {"spans": [{"bbox": [50.63999938964844, 188.73324584960938, 164.54083251953125, 193.06146240234375], "text": "on December 31, 2022 vis-a-vis as on September 30, 2022.", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1433, "char_end_idx": 1488, "url": "", "superscript": false, "subscript": false}, {"bbox": [163.6156005859375, 192.239990234375, 163.6156005859375, 192.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1489, "char_end_idx": 1489, "url": "", "superscript": false, "subscript": false}, {"bbox": [163.6156005859375, 192.239990234375, 163.6156005859375, 192.239990234375], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1490, "char_end_idx": 1490, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 188.73324584960938, 164.54083251953125, 193.06146240234375]}], "bbox": [50.63999938964844, 183.4532470703125, 762.1653442382812, 193.06146240234375]}, {"lines": [{"spans": [{"bbox": [610.6799926757812, 58.29327392578125, 626.0624389648438, 62.6214599609375], "text": "As a % ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1491, "char_end_idx": 1497, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.13720703125, 61.79998779296875, 625.13720703125, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1498, "char_end_idx": 1498, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.13720703125, 61.79998779296875, 625.13720703125, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1499, "char_end_idx": 1499, "url": "", "superscript": false, "subscript": false}], "bbox": [610.6799926757812, 58.29327392578125, 626.0624389648438, 62.6214599609375]}, {"spans": [{"bbox": [610.5599975585938, 63.81329345703125, 626.2860717773438, 68.1414794921875], "text": "of total ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1500, "char_end_idx": 1508, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.36083984375, 67.32000732421875, 625.36083984375, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1509, "char_end_idx": 1509, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.36083984375, 67.32000732421875, 625.36083984375, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1510, "char_end_idx": 1510, "url": "", "superscript": false, "subscript": false}], "bbox": [610.5599975585938, 63.81329345703125, 626.2860717773438, 68.1414794921875]}, {"spans": [{"bbox": [610.6799926757812, 69.333251953125, 626.1766967773438, 73.66143798828125], "text": "Shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1511, "char_end_idx": 1517, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.25146484375, 72.8399658203125, 625.25146484375, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1518, "char_end_idx": 1518, "url": "", "superscript": false, "subscript": false}, {"bbox": [625.25146484375, 72.8399658203125, 625.25146484375, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1519, "char_end_idx": 1519, "url": "", "superscript": false, "subscript": false}], "bbox": [610.6799926757812, 69.333251953125, 626.1766967773438, 73.66143798828125]}, {"spans": [{"bbox": [610.0800170898438, 74.853271484375, 625.4520263671875, 79.18145751953125], "text": "held (b)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1520, "char_end_idx": 1527, "url": "", "superscript": false, "subscript": false}, {"bbox": [624.34375, 78.3599853515625, 624.34375, 78.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1528, "char_end_idx": 1528, "url": "", "superscript": false, "subscript": false}, {"bbox": [624.34375, 78.3599853515625, 624.34375, 78.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1529, "char_end_idx": 1529, "url": "", "superscript": false, "subscript": false}], "bbox": [610.0800170898438, 74.853271484375, 625.4520263671875, 79.18145751953125]}], "bbox": [610.0800170898438, 58.29327392578125, 626.2860717773438, 79.18145751953125]}, {"lines": [{"spans": [{"bbox": [353.8800048828125, 13.1365966796875, 438.1878356933594, 18.546875], "text": "RELIANCE INDUSTRIES LIMITED", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1530, "char_end_idx": 1556, "url": "", "superscript": false, "subscript": false}, {"bbox": [435.0036315917969, 17.52001953125, 435.0036315917969, 17.52001953125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1557, "char_end_idx": 1557, "url": "", "superscript": false, "subscript": false}, {"bbox": [435.0036315917969, 17.52001953125, 435.0036315917969, 17.52001953125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1558, "char_end_idx": 1558, "url": "", "superscript": false, "subscript": false}], "bbox": [353.8800048828125, 13.1365966796875, 438.1878356933594, 18.546875]}, {"spans": [{"bbox": [319.55999755859375, 19.0166015625, 472.5833435058594, 24.4268798828125], "text": "Table I - Summary Statement holding of specified securities", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1559, "char_end_idx": 1617, "url": "", "superscript": false, "subscript": false}, {"bbox": [470.1312561035156, 23.4000244140625, 470.1312561035156, 23.4000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1618, "char_end_idx": 1618, "url": "", "superscript": false, "subscript": false}, {"bbox": [470.1312561035156, 23.4000244140625, 470.1312561035156, 23.4000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1619, "char_end_idx": 1619, "url": "", "superscript": false, "subscript": false}], "bbox": [319.55999755859375, 19.0166015625, 472.5833435058594, 24.4268798828125]}], "bbox": [319.55999755859375, 13.1365966796875, 472.5833435058594, 24.4268798828125]}, {"lines": [{"spans": [{"bbox": [27.960002899169922, 32.2532958984375, 48.027259826660156, 36.58148193359375], "text": "Category ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1620, "char_end_idx": 1628, "url": "", "superscript": false, "subscript": false}, {"bbox": [47.102020263671875, 35.760009765625, 47.102020263671875, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1629, "char_end_idx": 1629, "url": "", "superscript": false, "subscript": false}, {"bbox": [47.102020263671875, 35.760009765625, 47.102020263671875, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1630, "char_end_idx": 1630, "url": "", "superscript": false, "subscript": false}], "bbox": [27.960002899169922, 32.2532958984375, 48.027259826660156, 36.58148193359375]}, {"spans": [{"bbox": [35.400001525878906, 37.7733154296875, 39.364627838134766, 42.10150146484375], "text": "(I)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1631, "char_end_idx": 1633, "url": "", "superscript": false, "subscript": false}, {"bbox": [38.25634002685547, 41.280029296875, 38.25634002685547, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1634, "char_end_idx": 1634, "url": "", "superscript": false, "subscript": false}, {"bbox": [38.25634002685547, 41.280029296875, 38.25634002685547, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1635, "char_end_idx": 1635, "url": "", "superscript": false, "subscript": false}], "bbox": [35.400001525878906, 37.7733154296875, 39.364627838134766, 42.10150146484375]}], "bbox": [27.960002899169922, 32.2532958984375, 48.027259826660156, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [466.67999267578125, 32.2532958984375, 495.7550964355469, 36.58148193359375], "text": "No. of Shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1636, "char_end_idx": 1649, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.8298645019531, 35.760009765625, 494.8298645019531, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1650, "char_end_idx": 1650, "url": "", "superscript": false, "subscript": false}, {"bbox": [494.8298645019531, 35.760009765625, 494.8298645019531, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1651, "char_end_idx": 1651, "url": "", "superscript": false, "subscript": false}], "bbox": [466.67999267578125, 32.2532958984375, 495.7550964355469, 36.58148193359375]}, {"spans": [{"bbox": [469.55999755859375, 37.7733154296875, 492.8673400878906, 42.10150146484375], "text": "Underlying ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1652, "char_end_idx": 1662, "url": "", "superscript": false, "subscript": false}, {"bbox": [491.9421081542969, 41.280029296875, 491.9421081542969, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1663, "char_end_idx": 1663, "url": "", "superscript": false, "subscript": false}, {"bbox": [491.9421081542969, 41.280029296875, 491.9421081542969, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1664, "char_end_idx": 1664, "url": "", "superscript": false, "subscript": false}], "bbox": [469.55999755859375, 37.7733154296875, 492.8673400878906, 42.10150146484375]}, {"spans": [{"bbox": [468.1199951171875, 43.29327392578125, 494.3203125, 47.6214599609375], "text": "Outstanding ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1665, "char_end_idx": 1676, "url": "", "superscript": false, "subscript": false}, {"bbox": [493.39508056640625, 46.79998779296875, 493.39508056640625, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1677, "char_end_idx": 1677, "url": "", "superscript": false, "subscript": false}, {"bbox": [493.39508056640625, 46.79998779296875, 493.39508056640625, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1678, "char_end_idx": 1678, "url": "", "superscript": false, "subscript": false}], "bbox": [468.1199951171875, 43.29327392578125, 494.3203125, 47.6214599609375]}, {"spans": [{"bbox": [469.32000732421875, 48.81329345703125, 493.0861511230469, 53.1414794921875], "text": "convertible ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1679, "char_end_idx": 1690, "url": "", "superscript": false, "subscript": false}, {"bbox": [492.1609191894531, 52.32000732421875, 492.1609191894531, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1691, "char_end_idx": 1691, "url": "", "superscript": false, "subscript": false}, {"bbox": [492.1609191894531, 52.32000732421875, 492.1609191894531, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1692, "char_end_idx": 1692, "url": "", "superscript": false, "subscript": false}], "bbox": [469.32000732421875, 48.81329345703125, 493.0861511230469, 53.1414794921875]}, {"spans": [{"bbox": [470.8799743652344, 54.333251953125, 491.6665954589844, 58.66143798828125], "text": "securities ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1693, "char_end_idx": 1703, "url": "", "superscript": false, "subscript": false}, {"bbox": [490.7413635253906, 57.8399658203125, 490.7413635253906, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1704, "char_end_idx": 1704, "url": "", "superscript": false, "subscript": false}, {"bbox": [490.7413635253906, 57.8399658203125, 490.7413635253906, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1705, "char_end_idx": 1705, "url": "", "superscript": false, "subscript": false}], "bbox": [470.8799743652344, 54.333251953125, 491.6665954589844, 58.66143798828125]}, {"spans": [{"bbox": [470.6400146484375, 59.853271484375, 491.7997131347656, 64.18145751953125], "text": "(including ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1706, "char_end_idx": 1716, "url": "", "superscript": false, "subscript": false}, {"bbox": [490.8744812011719, 63.3599853515625, 490.8744812011719, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1717, "char_end_idx": 1717, "url": "", "superscript": false, "subscript": false}, {"bbox": [490.8744812011719, 63.3599853515625, 490.8744812011719, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1718, "char_end_idx": 1718, "url": "", "superscript": false, "subscript": false}], "bbox": [470.6400146484375, 59.853271484375, 491.7997131347656, 64.18145751953125]}, {"spans": [{"bbox": [467.0400390625, 65.373291015625, 494.283447265625, 69.70147705078125], "text": "Warrants) (X)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1719, "char_end_idx": 1731, "url": "", "superscript": false, "subscript": false}, {"bbox": [493.1751708984375, 68.8800048828125, 493.1751708984375, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1732, "char_end_idx": 1732, "url": "", "superscript": false, "subscript": false}, {"bbox": [493.1751708984375, 68.8800048828125, 493.1751708984375, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1733, "char_end_idx": 1733, "url": "", "superscript": false, "subscript": false}], "bbox": [467.0400390625, 65.373291015625, 494.283447265625, 69.70147705078125]}], "bbox": [466.67999267578125, 32.2532958984375, 495.7550964355469, 69.70147705078125]}, {"lines": [{"spans": [{"bbox": [512.2799682617188, 32.2532958984375, 523.9306030273438, 36.58148193359375], "text": "Total ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1734, "char_end_idx": 1739, "url": "", "superscript": false, "subscript": false}, {"bbox": [523.00537109375, 35.760009765625, 523.00537109375, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1740, "char_end_idx": 1740, "url": "", "superscript": false, "subscript": false}, {"bbox": [523.00537109375, 35.760009765625, 523.00537109375, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1741, "char_end_idx": 1741, "url": "", "superscript": false, "subscript": false}], "bbox": [512.2799682617188, 32.2532958984375, 523.9306030273438, 36.58148193359375]}, {"spans": [{"bbox": [499.67999267578125, 37.7733154296875, 536.4194946289062, 42.10150146484375], "text": "Shareholding , as ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1742, "char_end_idx": 1759, "url": "", "superscript": false, "subscript": false}, {"bbox": [535.4942626953125, 41.280029296875, 535.4942626953125, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1760, "char_end_idx": 1760, "url": "", "superscript": false, "subscript": false}, {"bbox": [535.4942626953125, 41.280029296875, 535.4942626953125, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1761, "char_end_idx": 1761, "url": "", "superscript": false, "subscript": false}], "bbox": [499.67999267578125, 37.7733154296875, 536.4194946289062, 42.10150146484375]}, {"spans": [{"bbox": [499.4400329589844, 43.29327392578125, 536.770751953125, 47.6214599609375], "text": "a % assuming full ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1762, "char_end_idx": 1779, "url": "", "superscript": false, "subscript": false}, {"bbox": [535.8455200195312, 46.79998779296875, 535.8455200195312, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1780, "char_end_idx": 1780, "url": "", "superscript": false, "subscript": false}, {"bbox": [535.8455200195312, 46.79998779296875, 535.8455200195312, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1781, "char_end_idx": 1781, "url": "", "superscript": false, "subscript": false}], "bbox": [499.4400329589844, 43.29327392578125, 536.770751953125, 47.6214599609375]}, {"spans": [{"bbox": [503.5199890136719, 48.81329345703125, 532.5795288085938, 53.1414794921875], "text": "conversion of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1782, "char_end_idx": 1795, "url": "", "superscript": false, "subscript": false}, {"bbox": [531.654296875, 52.32000732421875, 531.654296875, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1796, "char_end_idx": 1796, "url": "", "superscript": false, "subscript": false}, {"bbox": [531.654296875, 52.32000732421875, 531.654296875, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1797, "char_end_idx": 1797, "url": "", "superscript": false, "subscript": false}], "bbox": [503.5199890136719, 48.81329345703125, 532.5795288085938, 53.1414794921875]}, {"spans": [{"bbox": [506.1600036621094, 54.333251953125, 529.9261474609375, 58.66143798828125], "text": "convertible ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1798, "char_end_idx": 1809, "url": "", "superscript": false, "subscript": false}, {"bbox": [529.0009155273438, 57.8399658203125, 529.0009155273438, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1810, "char_end_idx": 1810, "url": "", "superscript": false, "subscript": false}, {"bbox": [529.0009155273438, 57.8399658203125, 529.0009155273438, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1811, "char_end_idx": 1811, "url": "", "superscript": false, "subscript": false}], "bbox": [506.1600036621094, 54.333251953125, 529.9261474609375, 58.66143798828125]}, {"spans": [{"bbox": [502.08001708984375, 59.853271484375, 534.036865234375, 64.18145751953125], "text": "securities (as a ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1812, "char_end_idx": 1828, "url": "", "superscript": false, "subscript": false}, {"bbox": [533.1116333007812, 63.3599853515625, 533.1116333007812, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1829, "char_end_idx": 1829, "url": "", "superscript": false, "subscript": false}, {"bbox": [533.1116333007812, 63.3599853515625, 533.1116333007812, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1830, "char_end_idx": 1830, "url": "", "superscript": false, "subscript": false}], "bbox": [502.08001708984375, 59.853271484375, 534.036865234375, 64.18145751953125]}, {"spans": [{"bbox": [503.27996826171875, 65.373291015625, 532.9402465820312, 69.70147705078125], "text": "percentage of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1831, "char_end_idx": 1844, "url": "", "superscript": false, "subscript": false}, {"bbox": [532.0150146484375, 68.8800048828125, 532.0150146484375, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1845, "char_end_idx": 1845, "url": "", "superscript": false, "subscript": false}, {"bbox": [532.0150146484375, 68.8800048828125, 532.0150146484375, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1846, "char_end_idx": 1846, "url": "", "superscript": false, "subscript": false}], "bbox": [503.27996826171875, 65.373291015625, 532.9402465820312, 69.70147705078125]}, {"spans": [{"bbox": [504.239990234375, 70.893310546875, 531.862548828125, 75.22149658203125], "text": "diluted share ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1847, "char_end_idx": 1860, "url": "", "superscript": false, "subscript": false}, {"bbox": [530.9373168945312, 74.4000244140625, 530.9373168945312, 74.4000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1861, "char_end_idx": 1861, "url": "", "superscript": false, "subscript": false}, {"bbox": [530.9373168945312, 74.4000244140625, 530.9373168945312, 74.4000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1862, "char_end_idx": 1862, "url": "", "superscript": false, "subscript": false}], "bbox": [504.239990234375, 70.893310546875, 531.862548828125, 75.22149658203125]}, {"spans": [{"bbox": [504.5999755859375, 76.41326904296875, 531.5196533203125, 80.741455078125], "text": "capital) (XI)= ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1863, "char_end_idx": 1877, "url": "", "superscript": false, "subscript": false}, {"bbox": [530.5944213867188, 79.91998291015625, 530.5944213867188, 79.91998291015625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1878, "char_end_idx": 1878, "url": "", "superscript": false, "subscript": false}, {"bbox": [530.5944213867188, 79.91998291015625, 530.5944213867188, 79.91998291015625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1879, "char_end_idx": 1879, "url": "", "superscript": false, "subscript": false}], "bbox": [504.5999755859375, 76.41326904296875, 531.5196533203125, 80.741455078125]}, {"spans": [{"bbox": [498.96002197265625, 81.93328857421875, 537.15380859375, 86.261474609375], "text": "(VII)+(X) As a % of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1880, "char_end_idx": 1899, "url": "", "superscript": false, "subscript": false}, {"bbox": [536.2285766601562, 85.44000244140625, 536.2285766601562, 85.44000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1900, "char_end_idx": 1900, "url": "", "superscript": false, "subscript": false}, {"bbox": [536.2285766601562, 85.44000244140625, 536.2285766601562, 85.44000244140625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1901, "char_end_idx": 1901, "url": "", "superscript": false, "subscript": false}], "bbox": [498.96002197265625, 81.93328857421875, 537.15380859375, 86.261474609375]}, {"spans": [{"bbox": [507.72003173828125, 87.45330810546875, 527.3025512695312, 91.781494140625], "text": "(A+B+C2)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1902, "char_end_idx": 1909, "url": "", "superscript": false, "subscript": false}, {"bbox": [526.1942749023438, 90.96002197265625, 526.1942749023438, 90.96002197265625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1910, "char_end_idx": 1910, "url": "", "superscript": false, "subscript": false}, {"bbox": [526.1942749023438, 90.96002197265625, 526.1942749023438, 90.96002197265625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1911, "char_end_idx": 1911, "url": "", "superscript": false, "subscript": false}], "bbox": [507.72003173828125, 87.45330810546875, 527.3025512695312, 91.781494140625]}], "bbox": [498.96002197265625, 32.2532958984375, 537.15380859375, 91.781494140625]}, {"lines": [{"spans": [{"bbox": [544.6799926757812, 58.29327392578125, 552.8585815429688, 62.6214599609375], "text": "No. ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1912, "char_end_idx": 1915, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.933349609375, 61.79998779296875, 551.933349609375, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1916, "char_end_idx": 1916, "url": "", "superscript": false, "subscript": false}, {"bbox": [551.933349609375, 61.79998779296875, 551.933349609375, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1917, "char_end_idx": 1917, "url": "", "superscript": false, "subscript": false}], "bbox": [544.6799926757812, 58.29327392578125, 552.8585815429688, 62.6214599609375]}, {"spans": [{"bbox": [545.52001953125, 63.81329345703125, 550.9129638671875, 68.1414794921875], "text": "(a)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1918, "char_end_idx": 1920, "url": "", "superscript": false, "subscript": false}, {"bbox": [549.8046875, 67.32000732421875, 549.8046875, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1921, "char_end_idx": 1921, "url": "", "superscript": false, "subscript": false}, {"bbox": [549.8046875, 67.32000732421875, 549.8046875, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1922, "char_end_idx": 1922, "url": "", "superscript": false, "subscript": false}], "bbox": [545.52001953125, 63.81329345703125, 550.9129638671875, 68.1414794921875]}], "bbox": [544.6799926757812, 58.29327392578125, 552.8585815429688, 68.1414794921875]}, {"lines": [{"spans": [{"bbox": [199.32000732421875, 32.2532958984375, 236.464599609375, 36.58148193359375], "text": "No. of Partly paid-\n", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1923, "char_end_idx": 1941, "url": "", "superscript": false, "subscript": false}], "bbox": [199.32000732421875, 32.2532958984375, 236.464599609375, 36.58148193359375]}, {"spans": [{"bbox": [201.0, 37.7733154296875, 235.95884704589844, 42.10150146484375], "text": "up equity shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1942, "char_end_idx": 1958, "url": "", "superscript": false, "subscript": false}, {"bbox": [235.0336151123047, 41.280029296875, 235.0336151123047, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1959, "char_end_idx": 1959, "url": "", "superscript": false, "subscript": false}, {"bbox": [235.0336151123047, 41.280029296875, 235.0336151123047, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1960, "char_end_idx": 1960, "url": "", "superscript": false, "subscript": false}], "bbox": [201.0, 37.7733154296875, 235.95884704589844, 42.10150146484375]}, {"spans": [{"bbox": [204.1199951171875, 43.29327392578125, 213.96664428710938, 47.6214599609375], "text": "held ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1961, "char_end_idx": 1965, "url": "", "superscript": false, "subscript": false}, {"bbox": [225.98951721191406, 43.29327392578125, 231.75900268554688, 47.6214599609375], "text": "(V)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1966, "char_end_idx": 1968, "url": "", "superscript": false, "subscript": false}, {"bbox": [230.6507110595703, 46.79998779296875, 230.6507110595703, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1969, "char_end_idx": 1969, "url": "", "superscript": false, "subscript": false}, {"bbox": [230.6507110595703, 46.79998779296875, 230.6507110595703, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1970, "char_end_idx": 1970, "url": "", "superscript": false, "subscript": false}], "bbox": [204.1199951171875, 43.29327392578125, 231.75900268554688, 47.6214599609375]}], "bbox": [199.32000732421875, 32.2532958984375, 236.464599609375, 47.6214599609375]}, {"lines": [{"spans": [{"bbox": [162.0, 32.2532958984375, 195.5236053466797, 36.58148193359375], "text": "No. of fully paid ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1971, "char_end_idx": 1988, "url": "", "superscript": false, "subscript": false}, {"bbox": [194.59837341308594, 35.760009765625, 194.59837341308594, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1989, "char_end_idx": 1989, "url": "", "superscript": false, "subscript": false}, {"bbox": [194.59837341308594, 35.760009765625, 194.59837341308594, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 1990, "char_end_idx": 1990, "url": "", "superscript": false, "subscript": false}], "bbox": [162.0, 32.2532958984375, 195.5236053466797, 36.58148193359375]}, {"spans": [{"bbox": [161.27999877929688, 37.7733154296875, 196.2388458251953, 42.10150146484375], "text": "up equity shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 1991, "char_end_idx": 2007, "url": "", "superscript": false, "subscript": false}, {"bbox": [195.31361389160156, 41.280029296875, 195.31361389160156, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2008, "char_end_idx": 2008, "url": "", "superscript": false, "subscript": false}, {"bbox": [195.31361389160156, 41.280029296875, 195.31361389160156, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2009, "char_end_idx": 2009, "url": "", "superscript": false, "subscript": false}], "bbox": [161.27999877929688, 37.7733154296875, 196.2388458251953, 42.10150146484375]}, {"spans": [{"bbox": [173.8800048828125, 43.29327392578125, 183.72665405273438, 47.6214599609375], "text": "held ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2010, "char_end_idx": 2014, "url": "", "superscript": false, "subscript": false}, {"bbox": [182.80142211914062, 46.79998779296875, 182.80142211914062, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2015, "char_end_idx": 2015, "url": "", "superscript": false, "subscript": false}, {"bbox": [182.80142211914062, 46.79998779296875, 182.80142211914062, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2016, "char_end_idx": 2016, "url": "", "superscript": false, "subscript": false}], "bbox": [173.8800048828125, 43.29327392578125, 183.72665405273438, 47.6214599609375]}, {"spans": [{"bbox": [174.72000122070312, 48.81329345703125, 181.571533203125, 53.1414794921875], "text": "(IV)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2017, "char_end_idx": 2020, "url": "", "superscript": false, "subscript": false}, {"bbox": [180.46324157714844, 52.32000732421875, 180.46324157714844, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2021, "char_end_idx": 2021, "url": "", "superscript": false, "subscript": false}, {"bbox": [180.46324157714844, 52.32000732421875, 180.46324157714844, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2022, "char_end_idx": 2022, "url": "", "superscript": false, "subscript": false}], "bbox": [174.72000122070312, 48.81329345703125, 181.571533203125, 53.1414794921875]}], "bbox": [161.27999877929688, 32.2532958984375, 196.2388458251953, 53.1414794921875]}, {"lines": [{"spans": [{"bbox": [131.16000366210938, 32.2532958984375, 147.00726318359375, 36.58148193359375], "text": "Nos. of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2023, "char_end_idx": 2030, "url": "", "superscript": false, "subscript": false}, {"bbox": [146.08203125, 35.760009765625, 146.08203125, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2031, "char_end_idx": 2031, "url": "", "superscript": false, "subscript": false}, {"bbox": [146.08203125, 35.760009765625, 146.08203125, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2032, "char_end_idx": 2032, "url": "", "superscript": false, "subscript": false}], "bbox": [131.16000366210938, 32.2532958984375, 147.00726318359375, 36.58148193359375]}, {"spans": [{"bbox": [121.44000244140625, 37.7733154296875, 155.44317626953125, 42.10150146484375], "text": "shareholders (III)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2033, "char_end_idx": 2050, "url": "", "superscript": false, "subscript": false}, {"bbox": [154.3348846435547, 41.280029296875, 154.3348846435547, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2051, "char_end_idx": 2051, "url": "", "superscript": false, "subscript": false}, {"bbox": [154.3348846435547, 41.280029296875, 154.3348846435547, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2052, "char_end_idx": 2052, "url": "", "superscript": false, "subscript": false}], "bbox": [121.44000244140625, 37.7733154296875, 155.44317626953125, 42.10150146484375]}], "bbox": [121.44000244140625, 32.2532958984375, 155.44317626953125, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [313.79998779296875, 32.2532958984375, 342.16180419921875, 36.58148193359375], "text": "Shareholding ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2053, "char_end_idx": 2065, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.236572265625, 35.760009765625, 341.236572265625, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2066, "char_end_idx": 2066, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.236572265625, 35.760009765625, 341.236572265625, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2067, "char_end_idx": 2067, "url": "", "superscript": false, "subscript": false}], "bbox": [313.79998779296875, 32.2532958984375, 342.16180419921875, 36.58148193359375]}, {"spans": [{"bbox": [312.7200012207031, 37.7733154296875, 343.3463439941406, 42.10150146484375], "text": "as a % of total ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2068, "char_end_idx": 2083, "url": "", "superscript": false, "subscript": false}, {"bbox": [342.4211120605469, 41.280029296875, 342.4211120605469, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2084, "char_end_idx": 2084, "url": "", "superscript": false, "subscript": false}, {"bbox": [342.4211120605469, 41.280029296875, 342.4211120605469, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2085, "char_end_idx": 2085, "url": "", "superscript": false, "subscript": false}], "bbox": [312.7200012207031, 37.7733154296875, 343.3463439941406, 42.10150146484375]}, {"spans": [{"bbox": [314.0400085449219, 43.29327392578125, 341.9092712402344, 47.6214599609375], "text": "no. of shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2086, "char_end_idx": 2099, "url": "", "superscript": false, "subscript": false}, {"bbox": [340.9840393066406, 46.79998779296875, 340.9840393066406, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2100, "char_end_idx": 2100, "url": "", "superscript": false, "subscript": false}, {"bbox": [340.9840393066406, 46.79998779296875, 340.9840393066406, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2101, "char_end_idx": 2101, "url": "", "superscript": false, "subscript": false}], "bbox": [314.0400085449219, 43.29327392578125, 341.9092712402344, 47.6214599609375]}, {"spans": [{"bbox": [313.20001220703125, 48.81329345703125, 342.85943603515625, 53.1414794921875], "text": "(calculated as ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2102, "char_end_idx": 2116, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.9342041015625, 52.32000732421875, 341.9342041015625, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2117, "char_end_idx": 2117, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.9342041015625, 52.32000732421875, 341.9342041015625, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2118, "char_end_idx": 2118, "url": "", "superscript": false, "subscript": false}], "bbox": [313.20001220703125, 48.81329345703125, 342.85943603515625, 53.1414794921875]}, {"spans": [{"bbox": [316.6800231933594, 54.333251953125, 339.2611083984375, 58.66143798828125], "text": "per SCRR, ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2119, "char_end_idx": 2128, "url": "", "superscript": false, "subscript": false}, {"bbox": [338.33587646484375, 57.8399658203125, 338.33587646484375, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2129, "char_end_idx": 2129, "url": "", "superscript": false, "subscript": false}, {"bbox": [338.33587646484375, 57.8399658203125, 338.33587646484375, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2130, "char_end_idx": 2130, "url": "", "superscript": false, "subscript": false}], "bbox": [316.6800231933594, 54.333251953125, 339.2611083984375, 58.66143798828125]}, {"spans": [{"bbox": [311.6399841308594, 59.853271484375, 344.297119140625, 64.18145751953125], "text": "1957) (VIII) As a ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2131, "char_end_idx": 2148, "url": "", "superscript": false, "subscript": false}, {"bbox": [343.37188720703125, 63.3599853515625, 343.37188720703125, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2149, "char_end_idx": 2149, "url": "", "superscript": false, "subscript": false}, {"bbox": [343.37188720703125, 63.3599853515625, 343.37188720703125, 63.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2150, "char_end_idx": 2150, "url": "", "superscript": false, "subscript": false}], "bbox": [311.6399841308594, 59.853271484375, 344.297119140625, 64.18145751953125]}, {"spans": [{"bbox": [312.3599853515625, 65.373291015625, 342.5015563964844, 69.70147705078125], "text": "% of (A+B+C2)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2151, "char_end_idx": 2163, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.3932800292969, 68.8800048828125, 341.3932800292969, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2164, "char_end_idx": 2164, "url": "", "superscript": false, "subscript": false}, {"bbox": [341.3932800292969, 68.8800048828125, 341.3932800292969, 68.8800048828125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2165, "char_end_idx": 2165, "url": "", "superscript": false, "subscript": false}], "bbox": [312.3599853515625, 65.373291015625, 342.5015563964844, 69.70147705078125]}], "bbox": [311.6399841308594, 32.2532958984375, 344.297119140625, 69.70147705078125]}, {"lines": [{"spans": [{"bbox": [284.5199890136719, 32.2532958984375, 306.0233459472656, 36.58148193359375], "text": "Total nos. ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2166, "char_end_idx": 2176, "url": "", "superscript": false, "subscript": false}, {"bbox": [305.0981140136719, 35.760009765625, 305.0981140136719, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2177, "char_end_idx": 2177, "url": "", "superscript": false, "subscript": false}, {"bbox": [305.0981140136719, 35.760009765625, 305.0981140136719, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2178, "char_end_idx": 2178, "url": "", "superscript": false, "subscript": false}], "bbox": [284.5199890136719, 32.2532958984375, 306.0233459472656, 36.58148193359375]}, {"spans": [{"bbox": [282.9599914550781, 37.7733154296875, 307.6913146972656, 42.10150146484375], "text": "shares held ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2179, "char_end_idx": 2190, "url": "", "superscript": false, "subscript": false}, {"bbox": [306.7660827636719, 41.280029296875, 306.7660827636719, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2191, "char_end_idx": 2191, "url": "", "superscript": false, "subscript": false}, {"bbox": [306.7660827636719, 41.280029296875, 306.7660827636719, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2192, "char_end_idx": 2192, "url": "", "superscript": false, "subscript": false}], "bbox": [282.9599914550781, 37.7733154296875, 307.6913146972656, 42.10150146484375]}, {"spans": [{"bbox": [290.760009765625, 43.29327392578125, 299.8968505859375, 47.6214599609375], "text": "(VII) ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2193, "char_end_idx": 2198, "url": "", "superscript": false, "subscript": false}, {"bbox": [298.97161865234375, 46.79998779296875, 298.97161865234375, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2199, "char_end_idx": 2199, "url": "", "superscript": false, "subscript": false}, {"bbox": [298.97161865234375, 46.79998779296875, 298.97161865234375, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2200, "char_end_idx": 2200, "url": "", "superscript": false, "subscript": false}], "bbox": [290.760009765625, 43.29327392578125, 299.8968505859375, 47.6214599609375]}, {"spans": [{"bbox": [281.15997314453125, 48.81329345703125, 308.18524169921875, 53.1414794921875], "text": "=(IV)+(V)+(VI)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2201, "char_end_idx": 2214, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.07696533203125, 52.32000732421875, 307.07696533203125, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2215, "char_end_idx": 2215, "url": "", "superscript": false, "subscript": false}, {"bbox": [307.07696533203125, 52.32000732421875, 307.07696533203125, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2216, "char_end_idx": 2216, "url": "", "superscript": false, "subscript": false}], "bbox": [281.15997314453125, 48.81329345703125, 308.18524169921875, 53.1414794921875]}], "bbox": [281.15997314453125, 32.2532958984375, 308.18524169921875, 53.1414794921875]}, {"lines": [{"spans": [{"bbox": [244.4399871826172, 32.2532958984375, 272.93511962890625, 36.58148193359375], "text": "No. of shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2217, "char_end_idx": 2230, "url": "", "superscript": false, "subscript": false}, {"bbox": [272.0098876953125, 35.760009765625, 272.0098876953125, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2231, "char_end_idx": 2231, "url": "", "superscript": false, "subscript": false}, {"bbox": [272.0098876953125, 35.760009765625, 272.0098876953125, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2232, "char_end_idx": 2232, "url": "", "superscript": false, "subscript": false}], "bbox": [244.4399871826172, 32.2532958984375, 272.93511962890625, 36.58148193359375]}, {"spans": [{"bbox": [247.32000732421875, 37.7733154296875, 270.00408935546875, 42.10150146484375], "text": "underlying ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2233, "char_end_idx": 2243, "url": "", "superscript": false, "subscript": false}, {"bbox": [269.078857421875, 41.280029296875, 269.078857421875, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2244, "char_end_idx": 2244, "url": "", "superscript": false, "subscript": false}, {"bbox": [269.078857421875, 41.280029296875, 269.078857421875, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2245, "char_end_idx": 2245, "url": "", "superscript": false, "subscript": false}], "bbox": [247.32000732421875, 37.7733154296875, 270.00408935546875, 42.10150146484375]}, {"spans": [{"bbox": [246.95999145507812, 43.29327392578125, 270.50970458984375, 47.6214599609375], "text": "Depository ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2246, "char_end_idx": 2256, "url": "", "superscript": false, "subscript": false}, {"bbox": [269.58447265625, 46.79998779296875, 269.58447265625, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2257, "char_end_idx": 2257, "url": "", "superscript": false, "subscript": false}, {"bbox": [269.58447265625, 46.79998779296875, 269.58447265625, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2258, "char_end_idx": 2258, "url": "", "superscript": false, "subscript": false}], "bbox": [246.95999145507812, 43.29327392578125, 270.50970458984375, 47.6214599609375]}, {"spans": [{"bbox": [249.239990234375, 48.81329345703125, 268.2174072265625, 53.1414794921875], "text": "Receipts ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2259, "char_end_idx": 2267, "url": "", "superscript": false, "subscript": false}, {"bbox": [267.29217529296875, 52.32000732421875, 267.29217529296875, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2268, "char_end_idx": 2268, "url": "", "superscript": false, "subscript": false}, {"bbox": [267.29217529296875, 52.32000732421875, 267.29217529296875, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2269, "char_end_idx": 2269, "url": "", "superscript": false, "subscript": false}], "bbox": [249.239990234375, 48.81329345703125, 268.2174072265625, 53.1414794921875]}, {"spans": [{"bbox": [254.63998413085938, 54.333251953125, 262.69476318359375, 58.66143798828125], "text": "(VI) ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2270, "char_end_idx": 2274, "url": "", "superscript": false, "subscript": false}, {"bbox": [261.76953125, 57.8399658203125, 261.76953125, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2275, "char_end_idx": 2275, "url": "", "superscript": false, "subscript": false}, {"bbox": [261.76953125, 57.8399658203125, 261.76953125, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2276, "char_end_idx": 2276, "url": "", "superscript": false, "subscript": false}], "bbox": [254.63998413085938, 54.333251953125, 262.69476318359375, 58.66143798828125]}], "bbox": [244.4399871826172, 32.2532958984375, 272.93511962890625, 58.66143798828125]}, {"lines": [{"spans": [{"bbox": [540.7200317382812, 32.2532958984375, 580.0252685546875, 36.58148193359375], "text": "Number of Locked ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2277, "char_end_idx": 2293, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.1000366210938, 35.760009765625, 579.1000366210938, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2294, "char_end_idx": 2294, "url": "", "superscript": false, "subscript": false}, {"bbox": [579.1000366210938, 35.760009765625, 579.1000366210938, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2295, "char_end_idx": 2295, "url": "", "superscript": false, "subscript": false}], "bbox": [540.7200317382812, 32.2532958984375, 580.0252685546875, 36.58148193359375]}, {"spans": [{"bbox": [546.5999755859375, 37.7733154296875, 572.99853515625, 42.10150146484375], "text": "in shares(XII)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2296, "char_end_idx": 2309, "url": "", "superscript": false, "subscript": false}, {"bbox": [571.8902587890625, 41.280029296875, 571.8902587890625, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2310, "char_end_idx": 2310, "url": "", "superscript": false, "subscript": false}, {"bbox": [571.8902587890625, 41.280029296875, 571.8902587890625, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2311, "char_end_idx": 2311, "url": "", "superscript": false, "subscript": false}], "bbox": [546.5999755859375, 37.7733154296875, 572.99853515625, 42.10150146484375]}], "bbox": [540.7200317382812, 32.2532958984375, 580.0252685546875, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 197.25326538085938, 454.33099365234375, 201.58148193359375], "text": "As per information furnished by the Promoter and Promoter Group, there are 51 members forming part of Promoter and Promoter Group of the Company, of which 4 promoter group entities do not hold any shares. ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2312, "char_end_idx": 2516, "url": "", "superscript": false, "subscript": false}, {"bbox": [453.40576171875, 200.760009765625, 453.40576171875, 200.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2517, "char_end_idx": 2517, "url": "", "superscript": false, "subscript": false}, {"bbox": [453.40576171875, 200.760009765625, 453.40576171875, 200.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2518, "char_end_idx": 2518, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 197.25326538085938, 454.33099365234375, 201.58148193359375]}], "bbox": [50.63999938964844, 197.25326538085938, 454.33099365234375, 201.58148193359375]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 164.61325073242188, 235.36309814453125, 168.94146728515625], "text": "Voting Rights on shares are in proportion to the amount paid\u2013up on the face value of such shares.", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2519, "char_end_idx": 2615, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.4378662109375, 168.1199951171875, 234.4378662109375, 168.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2616, "char_end_idx": 2616, "url": "", "superscript": false, "subscript": false}, {"bbox": [234.4378662109375, 168.1199951171875, 234.4378662109375, 168.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2617, "char_end_idx": 2617, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 164.61325073242188, 235.36309814453125, 168.94146728515625]}], "bbox": [50.63999938964844, 164.61325073242188, 235.36309814453125, 168.94146728515625]}, {"lines": [{"spans": [{"bbox": [683.6400146484375, 32.2532958984375, 743.8114624023438, 36.58148193359375], "text": "Sub-categorization of shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2618, "char_end_idx": 2646, "url": "", "superscript": false, "subscript": false}, {"bbox": [742.88623046875, 35.760009765625, 742.88623046875, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2647, "char_end_idx": 2647, "url": "", "superscript": false, "subscript": false}, {"bbox": [742.88623046875, 35.760009765625, 742.88623046875, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2648, "char_end_idx": 2648, "url": "", "superscript": false, "subscript": false}], "bbox": [683.6400146484375, 32.2532958984375, 743.8114624023438, 36.58148193359375]}, {"spans": [{"bbox": [708.8399658203125, 37.7733154296875, 717.496337890625, 42.10150146484375], "text": "(XV)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2649, "char_end_idx": 2652, "url": "", "superscript": false, "subscript": false}, {"bbox": [716.3880615234375, 41.280029296875, 716.3880615234375, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2653, "char_end_idx": 2653, "url": "", "superscript": false, "subscript": false}, {"bbox": [716.3880615234375, 41.280029296875, 716.3880615234375, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2654, "char_end_idx": 2654, "url": "", "superscript": false, "subscript": false}], "bbox": [708.8399658203125, 37.7733154296875, 717.496337890625, 42.10150146484375]}], "bbox": [683.6400146484375, 32.2532958984375, 743.8114624023438, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [677.760009765625, 58.29327392578125, 749.226318359375, 62.6214599609375], "text": "Shareholding (No. of shares) under", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2655, "char_end_idx": 2688, "url": "", "superscript": false, "subscript": false}, {"bbox": [747.931640625, 61.79998779296875, 747.931640625, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2689, "char_end_idx": 2689, "url": "", "superscript": false, "subscript": false}, {"bbox": [747.931640625, 61.79998779296875, 747.931640625, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 2690, "char_end_idx": 2690, "url": "", "superscript": false, "subscript": false}], "bbox": [677.760009765625, 58.29327392578125, 749.226318359375, 62.6214599609375]}], "bbox": [677.760009765625, 58.29327392578125, 749.226318359375, 62.6214599609375]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 146.61325073242188, 761.2945556640625, 150.94146728515625], "text": "Voting Rights under Category \"Public\" includes 59 32 423 fully paid-up equity shares held in the Unclaimed Suspense Account and 3 61 74 477 fully paid-up equity shares held by Investor Education and Protection Fund (IEPF) Authority on which voting rights are frozen. Shares under Category \"Public\" also include (i) 2 94 979 partly paid-up equity shares on which First Call as ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 2691, "char_end_idx": 3066, "url": "", "superscript": false, "subscript": false}, {"bbox": [760.3693237304688, 150.1199951171875, 760.3693237304688, 150.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3067, "char_end_idx": 3067, "url": "", "superscript": false, "subscript": false}, {"bbox": [760.3693237304688, 150.1199951171875, 760.3693237304688, 150.1199951171875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3068, "char_end_idx": 3068, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 146.61325073242188, 761.2945556640625, 150.94146728515625]}], "bbox": [50.63999938964844, 146.61325073242188, 761.2945556640625, 150.94146728515625]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 151.89324951171875, 764.650634765625, 156.22146606445312], "text": "well as Second and Final Call has not been paid and accordingly, voting rights in respect of these shares can only be exercised upon payment of First Call and Second and Final Call; (ii) 2 15 746 partly paid-up equity shares on which Second and Final Call has not been paid and accordingly, voting rights in respect of these shares can only be exercised upon payment of Second ", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3069, "char_end_idx": 3445, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.7254028320312, 155.39999389648438, 763.7254028320312, 155.39999389648438], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3446, "char_end_idx": 3446, "url": "", "superscript": false, "subscript": false}, {"bbox": [763.7254028320312, 155.39999389648438, 763.7254028320312, 155.39999389648438], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3447, "char_end_idx": 3447, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 151.89324951171875, 764.650634765625, 156.22146606445312]}, {"spans": [{"bbox": [50.63999938964844, 157.17324829101562, 490.624755859375, 161.50146484375], "text": "and Final Call. The fully paid up equity shares under Category \"Public\" include 2 725 shares for which the call money has been received by the Company but corporate action for credit of shares was pending as on December 31, 2022.", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3448, "char_end_idx": 3676, "url": "", "superscript": false, "subscript": false}, {"bbox": [489.69952392578125, 160.67999267578125, 489.69952392578125, 160.67999267578125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3677, "char_end_idx": 3677, "url": "", "superscript": false, "subscript": false}, {"bbox": [489.69952392578125, 160.67999267578125, 489.69952392578125, 160.67999267578125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3678, "char_end_idx": 3678, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 157.17324829101562, 490.624755859375, 161.50146484375]}], "bbox": [50.63999938964844, 151.89324951171875, 764.650634765625, 161.50146484375]}, {"lines": [{"spans": [{"bbox": [59.279998779296875, 32.2532958984375, 110.33195495605469, 36.58148193359375], "text": "Category of shareholder ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3679, "char_end_idx": 3702, "url": "", "superscript": false, "subscript": false}, {"bbox": [109.4067153930664, 35.760009765625, 109.4067153930664, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3703, "char_end_idx": 3703, "url": "", "superscript": false, "subscript": false}, {"bbox": [109.4067153930664, 35.760009765625, 109.4067153930664, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3704, "char_end_idx": 3704, "url": "", "superscript": false, "subscript": false}], "bbox": [59.279998779296875, 32.2532958984375, 110.33195495605469, 36.58148193359375]}, {"spans": [{"bbox": [81.72000122070312, 37.7733154296875, 86.76667785644531, 42.10150146484375], "text": "(II)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3705, "char_end_idx": 3708, "url": "", "superscript": false, "subscript": false}, {"bbox": [85.65838623046875, 41.280029296875, 85.65838623046875, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3709, "char_end_idx": 3709, "url": "", "superscript": false, "subscript": false}, {"bbox": [85.65838623046875, 41.280029296875, 85.65838623046875, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3710, "char_end_idx": 3710, "url": "", "superscript": false, "subscript": false}], "bbox": [81.72000122070312, 37.7733154296875, 86.76667785644531, 42.10150146484375]}], "bbox": [59.279998779296875, 32.2532958984375, 110.33195495605469, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [560.52001953125, 58.29327392578125, 581.2737426757812, 62.6214599609375], "text": "As a % of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3711, "char_end_idx": 3720, "url": "", "superscript": false, "subscript": false}, {"bbox": [580.3485107421875, 61.79998779296875, 580.3485107421875, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3721, "char_end_idx": 3721, "url": "", "superscript": false, "subscript": false}, {"bbox": [580.3485107421875, 61.79998779296875, 580.3485107421875, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3722, "char_end_idx": 3722, "url": "", "superscript": false, "subscript": false}], "bbox": [560.52001953125, 58.29327392578125, 581.2737426757812, 62.6214599609375]}, {"spans": [{"bbox": [565.800048828125, 63.81329345703125, 576.1219482421875, 68.1414794921875], "text": "total ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3723, "char_end_idx": 3728, "url": "", "superscript": false, "subscript": false}, {"bbox": [575.1967163085938, 67.32000732421875, 575.1967163085938, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3729, "char_end_idx": 3729, "url": "", "superscript": false, "subscript": false}, {"bbox": [575.1967163085938, 67.32000732421875, 575.1967163085938, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3730, "char_end_idx": 3730, "url": "", "superscript": false, "subscript": false}], "bbox": [565.800048828125, 63.81329345703125, 576.1219482421875, 68.1414794921875]}, {"spans": [{"bbox": [563.1600341796875, 69.333251953125, 578.65673828125, 73.66143798828125], "text": "Shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3731, "char_end_idx": 3737, "url": "", "superscript": false, "subscript": false}, {"bbox": [577.7315063476562, 72.8399658203125, 577.7315063476562, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3738, "char_end_idx": 3738, "url": "", "superscript": false, "subscript": false}, {"bbox": [577.7315063476562, 72.8399658203125, 577.7315063476562, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3739, "char_end_idx": 3739, "url": "", "superscript": false, "subscript": false}], "bbox": [563.1600341796875, 69.333251953125, 578.65673828125, 73.66143798828125]}, {"spans": [{"bbox": [562.6799926757812, 74.853271484375, 578.052001953125, 79.18145751953125], "text": "held (b)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3740, "char_end_idx": 3747, "url": "", "superscript": false, "subscript": false}, {"bbox": [576.9437255859375, 78.3599853515625, 576.9437255859375, 78.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3748, "char_end_idx": 3748, "url": "", "superscript": false, "subscript": false}, {"bbox": [576.9437255859375, 78.3599853515625, 576.9437255859375, 78.3599853515625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3749, "char_end_idx": 3749, "url": "", "superscript": false, "subscript": false}], "bbox": [562.6799926757812, 74.853271484375, 578.052001953125, 79.18145751953125]}], "bbox": [560.52001953125, 58.29327392578125, 581.2737426757812, 79.18145751953125]}, {"lines": [{"spans": [{"bbox": [440.6400146484375, 58.29327392578125, 462.01007080078125, 62.6214599609375], "text": "Total as a ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3750, "char_end_idx": 3760, "url": "", "superscript": false, "subscript": false}, {"bbox": [461.0848388671875, 61.79998779296875, 461.0848388671875, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3761, "char_end_idx": 3761, "url": "", "superscript": false, "subscript": false}, {"bbox": [461.0848388671875, 61.79998779296875, 461.0848388671875, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3762, "char_end_idx": 3762, "url": "", "superscript": false, "subscript": false}], "bbox": [440.6400146484375, 58.29327392578125, 462.01007080078125, 62.6214599609375]}, {"spans": [{"bbox": [446.0400390625, 63.81329345703125, 456.6311340332031, 68.1414794921875], "text": "% of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3763, "char_end_idx": 3767, "url": "", "superscript": false, "subscript": false}, {"bbox": [455.7059020996094, 67.32000732421875, 455.7059020996094, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3768, "char_end_idx": 3768, "url": "", "superscript": false, "subscript": false}, {"bbox": [455.7059020996094, 67.32000732421875, 455.7059020996094, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3769, "char_end_idx": 3769, "url": "", "superscript": false, "subscript": false}], "bbox": [446.0400390625, 63.81329345703125, 456.6311340332031, 68.1414794921875]}, {"spans": [{"bbox": [442.1999816894531, 69.333251953125, 459.4019775390625, 73.66143798828125], "text": "(A+B+C)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3770, "char_end_idx": 3776, "url": "", "superscript": false, "subscript": false}, {"bbox": [458.293701171875, 72.8399658203125, 458.293701171875, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3777, "char_end_idx": 3777, "url": "", "superscript": false, "subscript": false}, {"bbox": [458.293701171875, 72.8399658203125, 458.293701171875, 72.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3778, "char_end_idx": 3778, "url": "", "superscript": false, "subscript": false}], "bbox": [442.1999816894531, 69.333251953125, 459.4019775390625, 73.66143798828125]}], "bbox": [440.6400146484375, 58.29327392578125, 462.01007080078125, 73.66143798828125]}, {"lines": [{"spans": [{"bbox": [346.91998291015625, 32.2532958984375, 462.2188415527344, 36.58148193359375], "text": "Number of Voting Rights held in each class of securities ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3779, "char_end_idx": 3835, "url": "", "superscript": false, "subscript": false}, {"bbox": [461.2936096191406, 35.760009765625, 461.2936096191406, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3836, "char_end_idx": 3836, "url": "", "superscript": false, "subscript": false}, {"bbox": [461.2936096191406, 35.760009765625, 461.2936096191406, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3837, "char_end_idx": 3837, "url": "", "superscript": false, "subscript": false}], "bbox": [346.91998291015625, 32.2532958984375, 462.2188415527344, 36.58148193359375]}, {"spans": [{"bbox": [400.55999755859375, 37.7733154296875, 407.4115295410156, 42.10150146484375], "text": "(IX)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3838, "char_end_idx": 3841, "url": "", "superscript": false, "subscript": false}, {"bbox": [406.3032531738281, 41.280029296875, 406.3032531738281, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3842, "char_end_idx": 3842, "url": "", "superscript": false, "subscript": false}, {"bbox": [406.3032531738281, 41.280029296875, 406.3032531738281, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3843, "char_end_idx": 3843, "url": "", "superscript": false, "subscript": false}], "bbox": [400.55999755859375, 37.7733154296875, 407.4115295410156, 42.10150146484375]}], "bbox": [346.91998291015625, 32.2532958984375, 462.2188415527344, 42.10150146484375]}, {"lines": [{"spans": [{"bbox": [633.47998046875, 32.2532958984375, 656.4229125976562, 36.58148193359375], "text": "Number of ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3844, "char_end_idx": 3853, "url": "", "superscript": false, "subscript": false}, {"bbox": [655.4976806640625, 35.760009765625, 655.4976806640625, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3854, "char_end_idx": 3854, "url": "", "superscript": false, "subscript": false}, {"bbox": [655.4976806640625, 35.760009765625, 655.4976806640625, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3855, "char_end_idx": 3855, "url": "", "superscript": false, "subscript": false}], "bbox": [633.47998046875, 32.2532958984375, 656.4229125976562, 36.58148193359375]}, {"spans": [{"bbox": [630.5999755859375, 37.7733154296875, 659.187744140625, 42.10150146484375], "text": "equity shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3856, "char_end_idx": 3869, "url": "", "superscript": false, "subscript": false}, {"bbox": [658.2625122070312, 41.280029296875, 658.2625122070312, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3870, "char_end_idx": 3870, "url": "", "superscript": false, "subscript": false}, {"bbox": [658.2625122070312, 41.280029296875, 658.2625122070312, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3871, "char_end_idx": 3871, "url": "", "superscript": false, "subscript": false}], "bbox": [630.5999755859375, 37.7733154296875, 659.187744140625, 42.10150146484375]}, {"spans": [{"bbox": [637.5599975585938, 43.29327392578125, 652.2022705078125, 47.6214599609375], "text": "held in ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3872, "char_end_idx": 3879, "url": "", "superscript": false, "subscript": false}, {"bbox": [651.2770385742188, 46.79998779296875, 651.2770385742188, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3880, "char_end_idx": 3880, "url": "", "superscript": false, "subscript": false}, {"bbox": [651.2770385742188, 46.79998779296875, 651.2770385742188, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3881, "char_end_idx": 3881, "url": "", "superscript": false, "subscript": false}], "bbox": [637.5599975585938, 43.29327392578125, 652.2022705078125, 47.6214599609375]}, {"spans": [{"bbox": [630.5999755859375, 48.81329345703125, 657.9766845703125, 53.1414794921875], "text": "dematerialize", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3882, "char_end_idx": 3894, "url": "", "superscript": false, "subscript": false}, {"bbox": [656.126220703125, 52.32000732421875, 656.126220703125, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3895, "char_end_idx": 3895, "url": "", "superscript": false, "subscript": false}, {"bbox": [656.126220703125, 52.32000732421875, 656.126220703125, 52.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3896, "char_end_idx": 3896, "url": "", "superscript": false, "subscript": false}], "bbox": [630.5999755859375, 48.81329345703125, 657.9766845703125, 53.1414794921875]}, {"spans": [{"bbox": [632.0400390625, 54.333251953125, 656.6614379882812, 58.66143798828125], "text": "d form (XIV)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3897, "char_end_idx": 3908, "url": "", "superscript": false, "subscript": false}, {"bbox": [655.5531616210938, 57.8399658203125, 655.5531616210938, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3909, "char_end_idx": 3909, "url": "", "superscript": false, "subscript": false}, {"bbox": [655.5531616210938, 57.8399658203125, 655.5531616210938, 57.8399658203125], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3910, "char_end_idx": 3910, "url": "", "superscript": false, "subscript": false}], "bbox": [632.0400390625, 54.333251953125, 656.6614379882812, 58.66143798828125]}], "bbox": [630.5999755859375, 32.2532958984375, 659.187744140625, 58.66143798828125]}, {"lines": [{"spans": [{"bbox": [586.6799926757812, 32.2532958984375, 625.113525390625, 36.58148193359375], "text": "Number of Shares ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3911, "char_end_idx": 3927, "url": "", "superscript": false, "subscript": false}, {"bbox": [624.1882934570312, 35.760009765625, 624.1882934570312, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3928, "char_end_idx": 3928, "url": "", "superscript": false, "subscript": false}, {"bbox": [624.1882934570312, 35.760009765625, 624.1882934570312, 35.760009765625], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3929, "char_end_idx": 3929, "url": "", "superscript": false, "subscript": false}], "bbox": [586.6799926757812, 32.2532958984375, 625.113525390625, 36.58148193359375]}, {"spans": [{"bbox": [583.6799926757812, 37.7733154296875, 627.9834594726562, 42.10150146484375], "text": "pledged or otherwise ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3930, "char_end_idx": 3950, "url": "", "superscript": false, "subscript": false}, {"bbox": [627.0582275390625, 41.280029296875, 627.0582275390625, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3951, "char_end_idx": 3951, "url": "", "superscript": false, "subscript": false}, {"bbox": [627.0582275390625, 41.280029296875, 627.0582275390625, 41.280029296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3952, "char_end_idx": 3952, "url": "", "superscript": false, "subscript": false}], "bbox": [583.6799926757812, 37.7733154296875, 627.9834594726562, 42.10150146484375]}, {"spans": [{"bbox": [588.0, 43.29327392578125, 622.582275390625, 47.6214599609375], "text": "encumbered(XIII)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3953, "char_end_idx": 3968, "url": "", "superscript": false, "subscript": false}, {"bbox": [621.4739990234375, 46.79998779296875, 621.4739990234375, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3969, "char_end_idx": 3969, "url": "", "superscript": false, "subscript": false}, {"bbox": [621.4739990234375, 46.79998779296875, 621.4739990234375, 46.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3970, "char_end_idx": 3970, "url": "", "superscript": false, "subscript": false}], "bbox": [588.0, 43.29327392578125, 622.582275390625, 47.6214599609375]}], "bbox": [583.6799926757812, 32.2532958984375, 627.9834594726562, 47.6214599609375]}, {"lines": [{"spans": [{"bbox": [365.6399841308594, 58.29327392578125, 416.2270812988281, 62.6214599609375], "text": "Number of Voting Rights", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3971, "char_end_idx": 3993, "url": "", "superscript": false, "subscript": false}, {"bbox": [414.3766174316406, 61.79998779296875, 414.3766174316406, 61.79998779296875], "text": " ", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3994, "char_end_idx": 3994, "url": "", "superscript": false, "subscript": false}, {"bbox": [591.0, 58.29327392578125, 599.1785888671875, 62.6214599609375], "text": "No. ", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 3995, "char_end_idx": 3998, "url": "", "superscript": false, "subscript": false}, {"bbox": [598.2533569335938, 61.79998779296875, 598.2533569335938, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 3999, "char_end_idx": 3999, "url": "", "superscript": false, "subscript": false}, {"bbox": [598.2533569335938, 61.79998779296875, 598.2533569335938, 61.79998779296875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 4000, "char_end_idx": 4000, "url": "", "superscript": false, "subscript": false}], "bbox": [365.6399841308594, 58.29327392578125, 599.1785888671875, 62.6214599609375]}, {"spans": [{"bbox": [591.8399658203125, 63.81329345703125, 597.23291015625, 68.1414794921875], "text": "(a)", "rotation": 0.0, "font": {"name": "AAAAAB+Arial-BoldMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 4001, "char_end_idx": 4003, "url": "", "superscript": false, "subscript": false}, {"bbox": [596.1246337890625, 67.32000732421875, 596.1246337890625, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 4004, "char_end_idx": 4004, "url": "", "superscript": false, "subscript": false}, {"bbox": [596.1246337890625, 67.32000732421875, 596.1246337890625, 67.32000732421875], "text": "\n", "rotation": 0.0, "font": {"name": "", "flags": 0, "color": [], "size": 1.0, "weight": -1}, "char_start_idx": 4005, "char_end_idx": 4005, "url": "", "superscript": false, "subscript": false}], "bbox": [591.8399658203125, 63.81329345703125, 597.23291015625, 68.1414794921875]}], "bbox": [365.6399841308594, 58.29327392578125, 599.1785888671875, 68.1414794921875]}, {"lines": [{"spans": [{"bbox": [50.63999938964844, 175.41323852539062, 500.30841064453125, 179.741455078125], "text": "The aggregate voting rights (before rounding-off) of: (i) Promoter and Promoter Group are 332 27 48 048.00, (ii) Public shareholders are 325 75 39 464.75 and (iii) Non-Promoter Non-Public (Shares underlying GDRs) are 18 53 77 394.00.", "rotation": 0.0, "font": {"name": "AAAAAC+ArialMT", "flags": 524292, "color": [255, 255, 255, 255], "size": 1.0, "weight": 0}, "char_start_idx": 4006, "char_end_idx": 4238, "url": "", "superscript": false, "subscript": false}], "bbox": [50.63999938964844, 175.41323852539062, 500.30841064453125, 179.741455078125]}], "bbox": [50.63999938964844, 175.41323852539062, 500.30841064453125, 179.741455078125]}], "scale": 2, "page_image": "iVBORw0KGgoAAAANSUhEUgAABjAAAATICAIAAAA9Wxv0AAEAAElEQVR4nOzdd1wUx+M4/L0CB0fvIL0rCAhSVOwoUuxGUUGKEhtqCBZs0cTEFkVAghFRVOwdFQXFDmJBKdIRKUfv5RoHV54/5vfZZ797x4mIYJJ5/+FL7uZ2p8/c3O4sQSAQIBAEQRAEQRAEQRAEQRA0WIhDHQEIgiAIgiAIgiAIgiDovwUuSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRAEQRAEQRAEQYMKLkhBEARBEARBEARBEARBgwouSEEQBEEQBEEQBEEQBEGDCi5IQRAEQRDUf3w+PywszN7e3t7e3sHBYdKkSZs2baqtrW1qalq6dKk9ho+PT1lZmb+//4YNGzgcDnqEx48fT5o0KTk5Gfx54sQJJyen6OhoPp+PIEhLS4uPj8+SJUsaGhoQBHn79u306dNTUlIQBKmpqVm7dq2+vr6WltYPP/yQn5/P5/P//PNP7EknTZqUnp4ufK709PTJkycfOHCAx+Px+fy//vpr/vz5NTU16MednJzmz59/7949Pp8P0rJp0yYej4cgyKNHjyZNmpSSksLlck+dOjVq1ChlZWVra+uYmJiOjo7Vq1djI+Dg4HDlypX09PRJkyaBV8aOHbt48eK0tDQ+n//bb7/NnTu3t2gLH5/L5aJpefPmzdSpU69cuYItC/SA+/fvt7e3X7p0aUtLC5/PDw8Pt7e3X7hwYX19/YIFC3bu3Hn27FkHBwfsSTds2FBdXS1caiUlJeBFBweH8ePHr127tqSk5NvWKgiCIAiC/gPIQx0BCIIgCIL+2aqqqkpKStzd3eXk5Gpqav7666/Ozs6dO3cWFBTQ6fQpU6aAYPr6+giCFBYWqqiogJUdoLW1NTs7u7W1FUGQlpaWs2fPZmRkCASChQsXqqur9/T0FBYWfvjwYfjw4b/88gudTv/w4UNLS0tra+vy5cszMjIWLVokKSl58eLFlStX3rhxA0TGw8NDVlYWQRBpaWkFBQXhc/H5/MzMzMLCwnHjxo0fP76mpiY/P5/D4aAfJ5PJb9688fb2jouLGzNmTEFBQVdXl0AgQA/S0tKSlpa2devWUaNGzZ8//+HDh6GhoRoaGqamplwu98OHD/n5+TNmzFBVVVVTU2tvb8/JybG1tTU2Nmaz2Y8ePcrLy7tz505lZWVeXh6ah7hoCx9fV1fXw8MDpIVOp2dnZ4N1OkAgEKAHpNFoWVlZlZWVxcXFVlZWiYmJmZmZLBaLw+Hk5+dLSUmNHz/e1ta2sbHx4cOHo0aNsrCwMDY25nK5IksNvDh58uTW1tZLly69fv361q1b4C0IgiAIgqD+gQtSEARBEAR9LQUFhV9//XXEiBH19fWenp6lpaUsFgtBEBsbm+PHj5PJ/2++0djYKP44b968KSoqmjRpUnZ2dlpa2vz588HrXC43NjbWzc0NDfn8+fPXr1/v3r07JCQEQZDRo0dnZGQwmUwEQRQVFX/77Tdzc/PPRrupqenAgQMXLlzAvoh+vKioaM6cOWfOnBkzZozIj9fX13d3d8+ePXvt2rULFiw4duyYhITExo0b+Xz+nj17aDTa1q1bHR0dEQS5f/8+gUBYsmTJypUr+Xz+xo0bL168WFdXJ/K86CuXL1/GHR+siPWRioqKQCDIzMxUUFAoLy/X19cnEAjou25ubm5ubqmpqS9fvpw7d+6WLVsQBKmtrUWESg19MSYmhkwmnz17dv369YmJiUFBQX2PDARBEARBEA5ckIIgCIIg6Gt1dnb+8ccfsrKylZWVhYWFGzZsAFf6vHz50sXFBUEQAoEwe/bspUuXijkIl8u9deuWsrJyaGjo+vXrb9y44enpCd5ydHSsqqo6ePCgv78/eKWoqIhMJtva2oI//fz8/Pz8wF1+zc3Nvr6+UlJSCIIYGRn9+eefampqwqeTkpKyt7dPTU09f/68yPgYGBiYmJhUVFT0FuFx48YNHz48ODj48OHD48ePX7Zsmaura2+BBQLB5cuXMzMz6XT6o0ePjIyMDA0NsQGEo/1FxxemqqqqoKDw8uVLBQUFPp9vYWFBo9H68kFcqS1atAj7rq2trZycHLgOC4IgCIIgqN/gghQEQRAEQV+Lw+G8e/eupqZGQkLit99+W7t2bUdHB4IgUlJSWlpaBAKBQCAoKiqKP0hZWdmzZ88cHBxGjRrl6OiYmppaXFysrq6OIIiVldWMGTMiIiKUlZVBYOxuSjgkEklTU5NKpSIIoq6ujl7pg0MgELy9vfl8/tGjR+3s7IQDEIlEEonE5XJB/NGrk8B/CASCnp5eYmLi5cuXHz58mJSUdPv27b/++gtdMsMRCARlZWUFBQUtLS0LFiw4cOCAhoaG+Gh/0fGFSUpKOjg4PH36VCAQ6Orqamlp9XFBSnypkclkAoHQ09PTx2hAEARBEASJBBekIAiCIAj6Wmpqardu3aqsrAwICHj48KGfnx94ffTo0efPn+/jLXuPHj2qrKwsLS29dOkSgiAkEikxMXH58uUIghAIhFWrVj18+PDcuXMkEglBEFNT0+7u7ry8vClTpvD5/AMHDiQnJ0dFRSEIoqSk9Oeff/bllj0lJaWtW7cuXbr0zp07urq6uHfb2trq6uo0NDRIJJKkpCSHw+nu7iaTyWBHdrBxVWpq6vbt29evX19YWDhz5sz79+8vW7YMe2ccikgkbt++3dPTc8mSJampqRUVFbgzCke7t+ODHPgsAoFgZ2d34cIFGo22bNkyIrGvj7LBlRq4ZQ9VVVXFZDJxl3dBEARBEAR9KbggBUEQBEHQACAQCDNmzFi/fv0ff/wRFRW1cuVKBEFoNNqpU6fAUoisrKyDgwOCILW1tWfPngUX2piamoKPs9nshIQEQ0PDzZs3y8jIsNnsw4cP3759e/bs2SCApqbm1q1b/f392Ww2giBTpkwZNWrU77//XlVVhSBIXFzciBEjwDVHLBbr5s2bqqqqIFYTJ040MzPrLdpTp0719vY+duwY+gr4uKKi4osXL4qKivbt26egoKCnp/f06dMTJ06MGDHi/PnzVCpVR0cnNzc3Pj6exWL5+vq+ffu2paUFXFgkJpe0tbX37du3aNGiXbt2YR+QJzLaXV1d4o8vEAgyMjJiY2MRBCGRSBMmTMCdztzcXEVFhUajjRkz5t27d2IL8P+HKzVwXyR4kclkXrx4UV5eHt1bHYIgCIIgqH/gghQEQRAEQQODSCSuXr366dOnJ0+etLe3RxDk/fv379+/B+/q6OhcvXoVQZCcnJy1a9ciCEIgEJYtWzZz5kwEQSoqKjIzM5cvX758+XIikcjn86uqqo4cOYJdRnF3d//hhx/Alk8aGhpnzpz55ZdfYmNjeTze5MmT9+/fD+7va21t3b59O/gIiUSKjY0VsyAlKSkZHBz89OnT7u5u8Ar4OIlEGjZsWGho6IoVKygUypYtW0pLS0NCQgQCgby8/NatW21tbYcPH56ZmRkXFxcfH08mk6dMmfLTTz+ByIvJpXHjxq1du3bfvn0nT57EblIuHO2FCxeKPD72aOfPnwcZQqFQTp8+jTuXhoaGubk5i8WysrLq+4IUrtQuXrwIXszMzJSQkLC2tj527Bi6excEQRAEQVD/EL7ocS0QBEEQBEH/TVwul0ajMZlMXV1d7M5Kra2ttbW1KioqWlpa3+K83/r4EARBEARBQwIuSEEQBEEQBEEQBEEQBEGDqq/bW0IQBEEQBEEQBEEQBEHQgIALUhAEQRAEQRAEQRAEQdCgggtSEARBEDSomEzm6tWr7TEcHBxwD1wDUlJSXFxc0tPT0VeampqWLl3622+/iTl+fX39ggULdu7cKT4aXC731KlTo0aNUlZWtra2jomJ4XK5/UvRt9DU1PTTTz/p6+urqam5urq+fv0aQZDu7u4HDx60tLSI/EhDQ8ODBw/Ebyj+Nd6/f5+bm4v+yefz9+/fv2jRooaGBjGf4vP5f/755w8//IB9sbGxccmSJb///ntqaqqLi8vjx48HJIZFRUVTp04dNmzY4cOHB+SAKGwq0LP8+uuvn62NfD7/wIEDCxcuFJ9LAxtDtJ4MbPZCEARBEDSw4IIUBEEQBA0qEolkamo6atQoIpFYWFiop6dna2urpqYmHLK1tTUnJ6e9vR19paenp7CwsLKyUszxORxOfn5+eXm5+GikpaVt3bpVTU0tODhYXl4+NDT04cOH/UrQwOPz+UePHj179uyMGTMCAwMLCgrWrVtXW1t76NChNWvWtLW1CX+kra1tyZIlsbGx32hzzPT09FmzZmVmZmJfpNFo+fn56OP5elNVVZWfn499hcvlFhQUVFZWKigoWFtbY7dI/xqpqamZmZkbNmyYO3fugBwQS1dX18LCAnuW2bNnm5ub6+vri/8gjUYrKCjgcDgDHiWRMeTz+Wg9GdjshSAIgiBoYMEFKQiCIAgaVFJSUhs3bjxx4oSHh4ecnNzWrVtPnDgxderU9vb24OBgAwMDPT29VatWgeuAeDze+fPnR44cOXbs2CdPnmCPk5KSMm7cOH19/ZUrV/bj8pP6+vru7u7Zs2fv2LEjJibG29tbIBA0Njb6+PgcPnyYz+c/ePDA09PzzZs3O3fuDAwMXL58uYmJyU8//XT48GELC4tp06YVFBTU1NQsWLBg165dU6ZMGTly5LFjxwIDA42NjYODgxkMhnCKHj9+PHv27B9//NHGxmbr1q2zZs3Ky8tDEOTUqVPz58//9OkTiJtAIKisrFRWVg4MDNy/f/+RI0ecnZ3fvn174cKFurq6DRs2VFRUxMfHW1tba2lpTZ069fXr1+fOncvKynr+/PnOnTuZTObBgwfNzMwsLCyio6O5XG5SUhJIqaWlpaur67lz5yZPnmxpaXnhwgUEQWg0mo+Pj66u7tSpU1++fMnn8w8fPuzn57dmzRpjY+M5c+ZkZGRERkY2NzcfOHAgMTERm41dXV179uwxNTWdM2cOiH9hYaGXl5eent6YMWNu3bqFvWKrsrLSy8vL2Ng4JCSks7MTQRAGg1FcXNzZ2Zmamjp37txdu3bZ2NjY2dnduHEDQZAnT55MmDDBwsJi06ZNs2fPfv78OXooPp9/48aNcePG6enpLVq0qLi4+NWrV1FRUWw2+86dO42NjWj09u3bZ2ZmpqOjs3Tp0srKyoaGBm9v79DQ0GnTpllYWBw9erS7uxuXAwiCNDU1rVu3zsDAwNLS8tixY1wut66urrS0FHuWhoaG8vLy2trarq4uXIZ3dXXt3bvXzMxs+vTphYWFuFXCpKSksWPHamlpjR07Njk5WbgIhCPQ3d198OBBX1/fpqam2trahQsXHjt2rL6+fsmSJevWrbO3t9+zZ09NTU1paen79+/RelJaWgqyVziGFRUVS5Ys0dHRMTMz279/f1dX15e2IAiCIAiCvhJckIIgCIKg78KLFy+ePHmydu1ab2/vq1evPnv2DEEQNptdX18fFBTEYDA2bdpUX18PApeWlq5fv55Kpf7000/Jycl//vnnl96qNm7cuOHDhwcHBxsZGe3bt2/WrFnu7u4cDicrKwssrDQ3N79586a9vb2wsPDq1ataWlrjxo2Ljo5OSUlZunRpZmbm2bNn2Wx2RkbGlStX5s2bRyKRNm3aJC8vP2HChPj4+NevXwunqLm5+eHDhykpKSNGjLC1tc3IyEhJSeno6Lh8+XJXV5eGhgaIG4lEWrBgQUdHx4QJE0CwoKAgGxsbIyMjKpU6bty4zs7OM2fOODo6/vbbb+Xl5SdPnjQ0NFRSUtLW1h49evSNGzcOHDjg6ek5ffr03377LSUlpbGxMTk5ubCwcOnSpRkZGb/88susWbMkJSUjIyOrqqp++eWXFy9ehISEIAgSHBxcX1//6dOnq1ev8vl8b2/vp0+fJiQkWFhYUCgUW1tbPT09bDbW1NSQyWRfX9/nz59funSppaVlzZo1ubm527ZtGzZs2Nq1a9PS0kBILpe7d+/eJ0+eLF++XF5evra2FkGQlpaWjIyM5ubm1tbWx48fP3369Mcff2QymZGRkR8+fNiwYQObzd6wYcPr168fPXrU3NyMnjc1NTUoKEhLS2vr1q0fPnxYs2aNhIQEiOTYsWPRnHzz5k1UVBRYjCsqKrp16xaLxXr//v25c+dmzJhhZ2e3e/fue/fu4XKgpqbm4MGD165dW7NmjbOz8549e9LS0srLy7OystTV1dGzKCgo5OTklJaWXr9+HZfhiYmJhw4dGjt2rJubW1FRETbHWltb9+7dS6VSDx8+rKamFhcX19DQ8NkIpKamlpaWZmdnd3d3d3V1ZWZmVlZWdnV1vX//Pj4+XklJydLSsrKyMisrS1VVFa0nXV1dIHtxMXzw4MHp06dfvny5c+fOuXPn3rhx48OHD1/UfCAIgiAI+npwQQqCIAiCvguenp5RUVHgMiI2m81kMhEEkZaW3rBhw5o1awIDA6uqqioqKkDg7Ozsurq6SZMm2draWlpavnr1SuSNbEBra2t8fPzff/99/fp1FosFXtTT00tMTIyIiLC2tk5KSvrhhx/i4+Oxn8Je1WJqarp+/XpPT09ZWdkff/wxICBAW1u7tbUVQRACgeDh4bF27dpRo0bp6+sHBwfPnTuXSCR2dnaKTBGZTN61a9fly5fd3NysrKxSUlJycnIKCwvBwdEzzpkz5+nTpyEhIRQKBSypsFisUaNGycnJLV682NraOjY21tzcPDExsaWlpaOjw8nJSVNT09jYePbs2S9evJCXlx83btz48eOlpaXT0tL4fL6MjMyPP/7o7e2trq4+bdq0n376ydHRkclkVldXv3371srKatSoUZMnT6bRaIWFhQiCaGtrh4aGBgQEaGhoMJnMiRMnUiiUGTNmWFtbY3NJR0dn8+bNPj4+6urqzc3NOTk5eXl5oMh+++03EomEbmDU2tqanZ09YcKEzZs3b926FbewBXJm9erVa9assbe3ZzKZhYWFtbW1K1euXL169YYNGygUChoSXL8mISHx22+/rV27dv369bm5uUwmc8KECVQqdeHChcbGxiCkvLw8mUy+dOnSixcvfv7558DAQCKRSCAQ3N3dQ0JCtm3bJisr+/TpU1wOZGRkpKenOzk5BQcH//XXX58+fZo8eTI4oLGxMXoWAwMDEJlnz55hMzw1NfXNmzcKCgrbtm37+eefXVxcsMmUlJRUVlZ+8+bN6dOnx44d++eff3I4nL5HQJirq+u9e/cWLFgA/tTX10friZycnMgYpqenKykpNTU1HTt2jMPhhIeH29vb93Z8CIIgCIK+EbggBUEQBEHfhZMnT86dO7ekpMTJyUlaWppAICAIQiAQwH+oVKpAIODxeCBwd3c3l8t99OjRsWPHZGVlx40bB4KJVF1d/csvvwQHB4eFhdHpdPDixYsXd+3aNXfu3Lt37758+VJDQ+P+/fs8Ho9AIICz9PT0oGtSFApFQkKCSCRKSEhISUkRCAQikQjeJRAIMjIyCIIQiURpaWkQDEEQgUAgMkUUCgVsmKWgoDBz5szc3Nzz589TKBTsikNHR8euXbvu3bv3+++/v379Ojo6urq6OiMjAw2Ql5c3Y8aMK1euDB8+fNiwYbi0s9lsOp1+/vz5q1evOjk5GRoaIghCIpFAzAkEApVKBa8gCMLj8Xp6ekpLS48dO5abm+vq6gpWMSgUCplMJhKJaEpFQnOGQCAIBAIOh8Pn86WlpREEkZSUJJPJ6L1gfD6fx+ORSCQikUgmkyUkJHCHIpFI4IMSEhKgrAUCAchMcHxs4K6uLjKZLCUlBeoGn88XuZWVra3tlStX3N3dMzIyli9fvm7dOrCXE5lMJhAIII3d3d24HJCWlu7p6SGTySQSSVJSEpSvGLgMNzAw6OnpAckkEAggkihZWdnjx49v2rSJTqfv2bPHzc3t48ePn40AKDg+n8/n87lcLroBP4FA0NTUJJPJXxRDQ0PDlStXxsTE6OnpXbhwwc3N7eLFi+KPAEEQBEHQgIMLUhAEQRA09Ph8fmZmppKS0pYtW7S0tHp6esAteGw2+8aNG0VFRffu3VNRUdHR0QHhjY2NFRQU7Ozs9uzZgyAImUzGXl6EY21tXVlZyeFwXr16hd7M1dXVFR8fv3PnzsePHyckJLS0tGhpaUlKSlIolLKysvLy8ufPn3/NE+t6SxGBQAArQQiCTJs2jUwmx8fHOzg4mJiYoJ+lUCjFxcWHDx+OiIh4/Pjxw4cPyWSyiooKiUTicrktLS1FRUUtLS0BAQHTp09ns9kCgQCskbHZ7I6ODmtrazKZvGzZsoCAgMbGRjU1NbCsI5KioqKhoaGiouLu3butra07OjpUVFTAW9g1ILAk1NbWhl5iJpKZmZmamtq1a9dKSkquXr3a2dnp5OQE3lJSUjIxMcnMzHz58mVycnJVVZX4DDQyMtLQ0Dh37tyNGzdiYmKwmxwRicTRo0e3t7dfvXoVnEhbW9vc3Fz4II8ePdq2bdukSZOePHkyZswYcJubQCB48eJFRkZGUlJSe3u7ra0tLgcMDAzMzMw+fPjw5s2bU6dO6ejo3L59u7d4EolEXIZraGhYW1u3tbXduXPn3bt32MdEIggCdndqb2+/ffv25s2b29raeDxeXyIgIyPT2tr66dOn1NRU7PWAwqtRaD0BS6vCMVRWVj58+PDly5f37t176dIlGRkZ9NpDCIIgCIIGDVyQgiAIgqChRyQSPTw8Ojs7J0yYcO/ePUVFxbKyMj6fLycnV1VVZW1t/fz5840bN+rq6oLwo0ePDgoKOnnypKWlZVZW1owZMyQlJb/ojAsXLgwICLh27dq0adN27drl6Oj4008/aWhouLu7p6amWltbV1dXgwt2BjZF2DAmJiZjxowhEAgzZ87E3pImJSX1yy+/jBgxYuvWrdOnT79///7atWtdXFxGjhzZ0dExZ84cCoUyfPjw9evXr169Wk1Nrb6+XiAQWFhYPHjwwNvbe8GCBWPGjFm8ePHs2bPl5OQcHR3FxFNeXn779u0tLS3W1tZ//vmnk5MTmslY+vr6mpqamzZt+vvvv8UczdjYeM+ePR8+fBg+fPjBgwfXrVvn4eEB3qJQKJs3b5aWlp46dWp0dLSmpqb4DNTX19+zZw+NRlu3bp2cnJy0tDR2WW3OnDkBAQH79u0bPnx4UVHR/v37he8BRBDE1tZ22LBhK1asMDAw+Pjx46pVqxQUFMDFXB4eHiEhIXPmzPHy8sLlgLGx8ZYtW+Tk5CZMmLBmzZqpU6dOmjRJTFR9fX1xGT5v3rxZs2aFhobOnj1bWVkZu7Snrq4+ceLEs2fPDhs27M8//1y0aJGzs/NnIzBlyhQPDw+BQDBt2rQTJ06gi4bCiEQiWk/KyspExnDs2LGurq40Gs3W1tbNzc3Y2HjhwoXiiwOCIAiCoAFH+EZPR4YgCIIg6Eu1tLQwGAxdXV3s0gOfz6+rq5ORkRF+en1ra2tTU5O+vj7urqi+a21tra2tVVFR0dLSQl+sqqqSkJD47IpJX4hMEYrFYvn7++fk5CQlJRkZGeHe5fP51dXV4OPgNjrkfw8H1NHR6e7urqmp0dbWRtPO5XJpNJqioqKysjL4rEAg6O3UOBwOp6KiQlVVVcxKB4PBqK+v19HR+Wxuizlad3d3U1OTpqYmeplYb+rq6g4fPmxqarp8+fKLFy+GhoZevHgRtx9THytATU1NR0eHvr6+jIxMZWWlm5sbWIXs6ekZNmxYb3Hu7u4uLy+nUqkiV+hwhDOcz+c3NDTIy8uLvOOvo6OjqqpKTU0NvWSvLxFoa2tra2vT19f/bO6h9QQtfeEYdnd3V1RUkMnkvhwQgiAIgqABBxekIAiCIAgaAmlpaatWrfr06dOWLVt+/fXXviwb/afQ6fSAgIC7d+9qaWk1NTWNGTPm8uXLYPutr4EuSEVGRsI8hyAIgiBoCMEFKQiCIAiChgB4+p6Kisr48eOx9+tBqK6urvT09KqqKnV19QkTJojZJqzvuru7c3NzlZWVwV7vEARBEARBQwUuSEEQBEEQBEEQBEEQBEGDCl6qDUEQBEEQBEEQBEEQBA0quCAFQRAEQRAEQRAEQRAEDSq4IAVBEARBEARBEARBEAQNKrggBUEQBEEQBEEQBEEQBA0quCAFQRAEQRAEQRAEQRAEDSq4IAVBEARBEARBEARBEAQNKrggBUEQBEEQBEEQBEEQBA0quCAFQRAEQRAEQRAEQRAEDSq4IAVBEARBEARBEARBEAQNKrggBUEQBEEQBEEQBEEQBA0q8lBHQIRbt269fv2aw+EMdUQgCIIgCIIgCIIgCIL+qezt7X18fIY6FqJ9jwtSz58/v3btGpn8HcVNIBDw+XwSiTTUEYFE4/F4/5HS4fP5CIIQif+haxv/U4VLIBAIBMJQR2RQCQQCgUDwz63S/5rR4T/Yt0D/Yv+agYPH4xGJxP/OuAA7ItR/c0rwWf/oFvFPn/BA/1w8Ho/NZsMFqS9DJpMrKyuHOhb/v8rKyn379sXExAx1RCDRZsyY8eDBg6GOxWCIiYlRV1efN2/eUEdk8Li5uSUnJw91LAbD9u3bFyxYMHr06KGOyKB69+7drVu39u7dO9QR6ad/zejwH+xboH+xf82sYN68eRcuXKBSqUMdkUGSnJxcVFQUHBw81BEZenv37p04ceKECROGOiLfl5UrV+7cuVNPT2+oI9IfL168SEtL2759+1BHBPrPGT16NIvFGupY9Aqu0UIQBEEQBEEQBEEQBEGD6p+0INXY2Hjz5s07d+60t7cPdVy+WH5+/sWLF1++fMnlckUGAFcpf1Pt7e23b99++fKlyHdra2uzs7N5PN4XHVP8p1gsVkZGRkdHB/iTx+Pl5OTU1NR80SkGWX19fUZGBtjCrKioqLS09CsPWFpaevXq1bKysoGInThfH3NcVHk8Xmpq6p07d9ASBOrq6rKzs+l0OrZwvwg4AlptwKEYDIaYj7BYrDdv3jQ1NSEI0tTU9P79++7u7i86KS45fD4/Ly/v+fPnqamp+fn5n635fD4ffKSiouKLzovGf2DbQn5+fnFxMYIgHA7n3bt3LS0tX3oEMTWTyWT2u3C/BR6Pl52d/ex/0tPT6XS6cDDhXvRriuwrdXR03L1798qVK+Bq3/5lqfhPCaeusrIyNzeXwWAMVPH1u5pVVVV9+PDhSwcUFK61NjY2vn79mslkgphkZGTU1tYKf4rP5+MamngsFuvVq1doJ8DlcnurMF80PooJ3FuRgao7gNW1LxHG9cNfY8CHOVw5flGxijnmVw4iwpMoXDPv3zxqqFRUVDx//hx0qs+fP6fRaH384ADWnD7qd9nx+fwPHz5UVVX1+9S4QsdOtAbq7H2ZAgnrd56AAeJLT4cl3BDKysouXbp0//59cNihbQjfybD1T4ErO5yvzJP++aKh8Cu7o3/QTPhfTvD9+emnn/T09HAvpqamGhsbm5mZ6enpjR49urS0FBcgPT3d29u7rq7uW0SpoqJi5cqV/fssl8s9cOCAioqKjY2NkpLS2rVr2Ww2NgCPxzty5Mju3bt5PN5ARFY0Ho+3c+dOAwODAwcOiAwQGRk5YcKElpaWLzqs+E/l5uZaWlo+e/YM/NnW1jZlypTw8PAvOkVfuLq6DtShYmJiZGVlz5w5w+Vy/f39165d+zXl0tzc7OzsPG7cuJSUlAGJ3vHjx2/evCnyra+MuXBUnz59qqOj4+vrS6PRsCGjo6MnTJiQlpaGLdwvcu7cuYULF7a1tYE/X758aWlpmZmZKTLwjBkzBAJBQUGBtrb2smXLmEzmlStX7O3ta2pqvuikuOSw2eyZM2cqKirq6OhIS0sHBAQwGAyRH0RbKJPJnDVr1i+//PJF5wWKioqmT5/++vVr8KfItrBt27Z379715WgcDmf27NlmZmaFhYUVFRW2tra3b9/+oviIr5nZ2dkjRozoX+F+qYyMjO3bt4sP09bWtmDBAl1dXUlJSQ0NDTs7O1xt6a0XZbPZ/S6yPhI5OtTX10+ZMsXQ0NDCwkJXVzctLa1/WSr+U8Kp27Nnj7u7e2ZmJray9ZFw3/I11ezPP/90cXHp7Oz8ojigcK317du3BgYGV65cEQgEL168MDIywtVbtAIUFBT0Pe0FBQU6Ojqampr6+vqysrKLFy9uaWlZsWJFWFgYLiRupBM/3xAzLPZWZKDz4XA4Is/eD30Z0EFP/qWDvrABH+YE/+swHzx4sGLFiocPH+L6z74QnhV85SAiPIkSbub9m0eJN3fuXCaTOYAHBHg8XlhYmKGhoZycnJycnJGRUXR0NC5Mc3MzyH/c6wNVc0RKSkoSniX2u+w6OzunT5++f//+/kVGuNBPnTplaWlZWVk5gGfvbQr0xx9/vHjxordP9TtP3r59a2lp+aUDBEo4Tx4/fqytrW1jY6OtrT1jxoyWlpZv0RBQP/74o5j8/36GLZGeP3++d+/e/h3/WxAuO1yA/uXJV34l78tQiJ4C94Xii3w/M+FBYGdn5+PjM9Sx6NV3uocUDovFCgsLc3BwOHnyZHNz8+7duysrK6WkpA4cOFBSUuLo6BgYGPj3338/fPgwPj5+xYoVUVFRWVlZc+bM8fX1LSgoCA8PV1JSkpOTGz9+/IQJE+Li4pKSkoyNjTdu3Mjj8U6cOMHj8bq7uyUkJNasWUOlUqOion744YdRo0YNSOQLCgpOnTp14MCBwMDAxMTEhISE1tbWkpKSv/76i8PhLF26dPjw4bGxsWQyecqUKcrKyuHh4RwOZ/369Q4ODteuXbt+/Tq47fPHH38kEAjh4eElJSUeHh7Lly9/+vRpWlpac3OzmpqaoqLiunXr3r9///Dhw+DgYCUlJQRBqqqq0PCjRo1KTEyUlJQ0NDQEEaPT6REREWlpaaampqGhoQiCdHZ27t69u7GxMSQkREdHB83ejRs3vnr1Cpxr9uzZTCbz8uXLJiYmGzduxH3Kycnp2bNnMTExfD5/zZo1qqqq4Fw5OTnh4eGSkpLgl4r29vaIiAhQRl5eXn///TeLxaqtrd2+ffv3cFs4m80OCwsbP348+go2URMnTkxISDh79qyEhERQUNCUKVOwn+3q6kIr2M8//5yUlATycNiwYYMf866urjNnzqC1XVdXFxceTdeqVatKSkqwUW1razt79iybzdbS0nr37t2lS5fWrVuXmJjY2NiIPcLz588zMjJwdY/D4YCpbXZ2tomJSXBwMIPBwFYnbW1tW1tbIpF46dKl69evq6mp9fT09CWBCQkJM2fORP/E1vDly5dLSUlhA2PfnTdvHpocRUVFNIyvr++RI0dOnz69f//+srKyZ8+e3b9/X1VVdfPmzfLy8qBzYLPZKSkpEhIS48aNQxCkqalp27ZtK1euxPUVDx48SE9PZzAY7e3tISEhJiYmJ06cQI+moqLi6OioqKiIawtfo7S0NDw8fPPmzeBPbN0TLu7P1szCwsJDhw7V1dW5u7uPHTuWz+ffvHkzMjLS3d19+fLlqampaJc1d+7c6Oho0GaDgoJu3LgB2rKPj09iYmJvTeNrKCoqXr9+vayszNPT89dff/Xy8kL+b6tUUlJCe1GBQIBGdc6cOdjjVFVVxcbGKioqpqenu7m5+fv7p6WloQcZPXo0tksUbi99V1FRAarfxIkT//jjj+rq6uHDh2Oz1Nvb+9SpU8KVTVFRccaMGSD+69evl5aWxhVEbW0tWquXLl0KTtfW1hYeHv7x40cOhyMQCGRlZR0dHdls9q5du9DELlu27NatW9gBpY+dLa6aPXjwICcnB+0NtLW18/LyGhsbORzOpEmT7ty5M3r06A0bNiAI0tLSEhISwuPxNm7cOHz48Bs3bqADR2ZmJhhQ5s2b5+bmhnyutVpYWFhYWCQnJ8+dO/fJkydaWlq2trYiK8DIkSMdHR2pVGp4eDiZTH7//r2qquqWLVvq6+uxM4Hp06eD5FCp1MOHD8+aNev06dO///57XV2dlZWVnp7ehw8fsOERzEi3cuXKs2fPgvmGh4fHkSNHQKtZtWoVhUIBh8UOi+bm5uh4t2jRIpFFBl4kEolWVlZaWlq4yKurqyMIwuPxsHkIfutCO1USiRQVFZWamjp69GiRQzOCIHw+/86dO2fPnpWVld20aRM4KYfDiYqKQquioaEhthUwGAy0W0ATKL4z4fP52CFy4sSJ2GiDbhON59u3b7HVydDQMD09vbm5ecKECY6Ojq9evbp58yaDwdiyZQvoP3Nzc9E5kqWlZT8aLG4QwdaiyZMn4wKLn0QJN3Okb/OoefPmaWtrf2VCvhKRSAwJCfnpp5+WLVsmISERFxdHIpFwg8j9+/dB/quoqJw+fRpNyCBETyRs2XE4nCNHjpiamk6ePDkiImLMmDFZWVlkMvnt27fW1tYUCuXVq1eBgYHOzs4Igrx7927x4sXDhw//+eefaTQamvO2trZRUVG4+Se2SsjJyeEKXRiuChUVFR0+fLihoWHJkiUeHh4gTGJiYlpa2tq1a1+/fo22BVVV1atXr37RFEh8nlRXVx87diwgIKCrq+vSpUseHh5JSUmSkpI5OTlz5sx5+/ZtV1fXjh07EATp6ek5ffr0oUOHvLy8FixYkJ+fj+aJpqYmOhht3LhRUlLys3ny9u1bLS2tGzdutLS0REdHNzQ0IP36QtHa2irc2/TP4Axb2PayYsUKkZPM75xw2WVkZGDzis/nY/PE0tISfJBOp2N7chaLNYBfyeXk5EaMGKGgoBASEtLW1oYgiJ2d3fz580Wews7OztbWVkJCAltLjY2NcZM98Ki0Lxq8lJWV+zFtG5L+/F/gn3HLXltbW3l5+dixY2VkZPT19c+cOTN16tRXr17xeLxFixZduXLl/fv3Ojo6cnJyJiYmkZGR9+7dc3V1DQsLS0hI2LhxI4PB0NPT+/vvv/Pz88+ePXv06NHZs2cXFxeDkSkuLi4jI8PIyOj58+cpKSkvX768f/++vLz8QEW+rKyMz+c7ODggCDJz5syTJ08qKiqmpKQ4ODhYWFiEhYVxuVxlZWVtbW0pKakNGzYQiUQdHZ2QkJDk5OQdO3bY2NiUl5efPn26uro6JCSkpKRk1qxZkZGRZ86cycvLi4qK4nA4mpqaZ86c+fjxY3x8PI1Gk5OTQxCEyWRiwz99+lRDQ0NDQwMdQh4/fnzhwgUvLy8ej5eeno4gSH19vbGxcUdHB2hLaPampaWh56qrq9u5c6ezs3NOTs7Bgwf5fD72Uzk5OWvXrjUyMjIyMlqzZk1JSQmCIAwGY9OmTQwGY8SIEbW1tXw+Pzw8HC2j5OTk5OTkM2fOaGhogJgPOVNTUy6Xe/ToUXB/ZV5eHjZRT5482bdv38iRI+3t7R8+fAjuIkFhK9jGjRs1NDRkZWXNzMzAEuEgxxxX23FRxaYrKCiIz+djo0qhUAwMDGRkZCwsLEpLS5OTk8GdMk+fPkW/PiEIIiUlJVz3uFzugwcPrly5MnHixEuXLsXGxmJba1paWmFhYVJS0qtXr0AN5/F4uLiJJC8vb2trC6Z6CIKwWCxci8AGxtX/a9euockBEyygoKAgOjr62rVrCgoKHR0d2dnZS5YsqampiY2NbWhoAJ2DoaEhaKGampoIgkhLSz99+lS4rygoKDh+/Liurm5bW9umTZvy8/OxR2tpaUlISCgtLcW2hX4WM4IgCEIgEMaPH5+cnPz48WPwivjiFl8z+Xx+ZGRkXV2dl5dXdnZ2TU0Nk8ns7u42Nzc/cuRIYWEhtsuqqqoCbVZdXf3cuXNoW75y5YqYpjGwcK2yoaEBlJGCggI2qvX19dhPtba2gq9VRkZGhw4dSklJwR4kLi4O1yX22/Dhwx0dHb28vCZOnCgjIzNt2jQEQbBZmp6eLrKyKSoqhoSEoKNAc3Mz9lMFBQXYWn3u3DlwupiYmGvXrrm4uIAfZtva2hISEj59+oRN7N27d7EDSh/XQ4WrWUFBAdobPHnyJCsr69SpUyYmJi9evDhx4oS1tXVMTExubi6CIGBxp6WlZdOmTSkpKdiB48OHD2BA0dDQQPrQWmVkZDw8PN68eVNQUPDs2bPp06fX1NSIrAAUCiUhIaG2tjYlJeXChQv29vY3btwQngmgCeRwOAcPHpw7d+6+ffusrKxUVVUfP3786tUr4fDoSBcTEzNs2DAw34iKikJbTXl5OXpYNHB4eHhYWBjaRtBsxBUZeJHL5T5+/DgrKwsb+YcPH4J3X758ic3Dly9fYjvVkydPXrp0adGiRdnZ2WAzb+zQDG5nyMrKCg0NdXBwUFFRiY2NBd+Bq6qqsFURnBq0AnDJj3ACxXcmdXV12H7g0aNH2GifOHECG09sdXr69Glubi6oGKAcJSUlqVSqubk5h8NJSEgoKSnBzpGuX7/+pQ0WN4gUFRVhaxGot6jPTqJENvO+zKNwk71+JOQbwQ0iKioqIP9zc3OxCRmSuOHKjsfjpaSkfPjwgcVi3bt3r6ioKDEx8cGDB5aWlocOHaqqqqJQKGFhYQiCCASC2tpaFxeXS5cuHT16FJvz6FiGzj9xI0tzczOu0HFw4V+/fg2GeFdX1/Pnz4P7gN68ebNp0yYLC4uKigpsW3jz5s0XTYE+myeg529oaKitrU1ISKioqIiLi2MymUQicevWrQYGBq9fv7527RqCIAwGg0QiWVpabt269cmTJ9g8KSwsBIORjo4O+A7/2Txxc3NjMpkjR47cuHHj1KlTTU1NkS//QnHgwIGIiAiR3emXGpxhC/m/7eWXX34ZNmyY8CTzOydcdrg+WSAQYPME3S0BN+IM7FdyLS2tZ8+eFRcXjxkzRkNDIyEhoaOjQ+QpzMzMioqKkpKSsrOzsbX0zZs32PkP+py0Lxq82Gx2P6Zt309//s/yz1iQIpFIZDIZ9NddXV3Pnj1ramoyNDSsr6//9ddfGxoa+Hy+ubm5kpKSnZ1dTk4Ol8vNysoCmw7U1dUtWrTIz8/PwsKCz+enpaU5OzsvX77cz8+voKCgtbVVQUFh165dQUFBLi4uycnJ9+/fHz169ABepyMpKSkQCNhsNoIgtbW1YCw3MzO7ffv2qVOnWCyWqqqqpqammZmZjIxMRUVFY2NjRUVFbW1tZmYmlUr19fVdtmyZgoJCa2trYWGhn59fYGCgk5MTuHnbxsYmLCzMy8tLWVn59u3bWVlZnp6eYAhpbGzEhi8sLDQ0NDQwMLCzswMRMzc3l5WVDQ4OLi0tBT/AGhsbe3t729vbs1gsPT09NHu7urrQc/F4PDqdnpeXx2azc3JyOBwO9lM5OTlkMnnlypWrVq0iEolgGyM6nV5fX79kyRJfX19wmUB2djZaRnl5eUQi0dvbe/fu3YOzavNZqqqqGzduvHXr1rt37xAEyc3NxSaqqqrKzs4uIiLiwoULGhoaILcBMIPHVjBNTU1lZWVHR0ctLa1Bjjmfz3/58iU2MriLm3DpEggE2KhSqdRRo0YpKipOnDgRTSN2KQowNzcXrnsIghCJRE9Pz4CAgDFjxuTm5mJbK6hOCIJUVVXJy8v7+/t7e3v3ZS2SRCKtXLmSy+WePn1aIBA0NzcLtwgUrv5nZGSgycH+7FZaWnr//n1tbe3o6OgRI0aoqKjs378/IyMD3FcLOocNGzZoaWmZmZmZmJggCCIjIzN16lSRfYWFhYWfn5+Xl1dVVRWBQMAdDRHVFmJjY2fMmBESEiJyUyTxxo0b5+7uHhYW1tbWJlz3sMX92ZpJJBLHjx//7t27HTt2kMlkaWlpWVnZRYsWzZgxg0gk8vl8bJfF5XJBm922bVtxcTHalsvLy3trGgMOV3ubmppAL2ppaYmLKu6DcnJyixcvdnd3J5PJeXl52IP09PTgusR+k5KS2rdv37NnzxYtWhQfH3/gwAGw4ItmqbS0tMjKNmnSpMrKSnQUqKurw36qtrYWW6tfvXqFIAifz8/Pz3d2dvb393d3d8c+DBub2PLycuyA0ve0YKsZ9nW0N7CwsFiyZIment60adNmzpwpLS0NxjtLS0vQHKqrqzMzM3EDBxhQbG1tkb611smTJ3O53HPnztXX17u6uubn54usAPr6+iA8gUCYPn26l5eXtrZ2U1MTdiaATQWRSDQyMqqrq1NWVo6MjAQ509XVJRweHek4HI6JiYmSktLYsWMnTJiAthoZGRn0sGhgBoORlZWFtpEPHz6ILzLhyKP7ehQWFmLzUENDA+1UmUxmVlaWg4ODr69vYmLi4sWLkf87oIOG8PHjRwqF4u3tHRER8ddff0lISCAIoqysjK2KZmZmaCvQ1NTEdgsggZ/tTBQVFbH9wMePH9FoZ2dnZ2Rk4OKJq06gYowYMQJBED09PXl5eUdHRzBAtLa2YudIoJv6ogaLG0SKioqwtSgvLw8b+LOTKJHNvC/zKHV19a9MyLcgXLIqKiog/0eOHCk8gg8yXNmBF9HbPRAEIRKJ7u7ubm5uWlpaCxcuHDt2LNhTiUAgzJw5MyAgwMHBISsrC5vzNBoNN//EjSzNzc24QsfBhX/79m1lZeWCBQvWr19///59U1NTPp9/+/ZtHo/n4OCAa8JFRUVfNAXqS56Af/l8PviPoqKil5eXo6Ojubm5t7e3gYEB6E8UFRV9fHz8/f2lpKRyc3OxeVJfXw8Go2XLlhGJxL7kiYGBQWJi4oULF4yMjDZt2gSWgb70C8WHDx9Gjx4tsjvth0EYtnDtpaSkRF9fX3iS+Z0TWXYAmlfYPHn+/Pn8+fPnz5//5MkTbE8+sF/Jvb29CQSClJSUs7Pzy5cvZ82aFRwcLPIUTk5OoJYWFBTgvn5i5z+g1n3p4EUikfoxbftO+vN/nH/GgpSqqqqTk9P169efP39+8eJFb2/vR48ehYWFSUlJ3b17V1dXl0AggCkdmUxWVFQ0MzNbt25dYGDg5MmTZWRk8vPzKyoqwP7Bmpqa1dXVnZ2dZWVl8vLy0tLSZDJZSkqKSCR6eHhkZ2enpKRgv1d/vZEjRyooKJw8eTInJ+e3335bvXp1RkbGwYMHV6xYcejQIdBtgeUAaWlpOTk5V1fXlStXrly50szMjMVilZWV5efnM5lMKSkpWVnZ8vLyjo6Ompoa0HgoFAqZTFZRUZk2bdrx48cRBAFX5iMIQqVShcNjcTicNWvW3L59W1JSElxTQyKRiEQigUAQCAQRERHY7EXPJS8vr6ysHBAQ4Ofn5+vrS6FQ0E8hCAJu16qvr6+tre3u7gaXrUpKSkpJSVVVVbW3t7e0tBCJRGwZTZw4EcQW9CnfAwKB4O7uPmXKlJKSErBMg00UuB3m3r178+bNi46Ozs/PRze9IxAIuAo2yI9qxsYcEartBAIBuz8fLl3Kysq9HZZMJrPZbDab3dDQgFuTkpeXF657CIIIBIKKiorOzs6GhgYlJSVcawVh5OTk2Gx2U1NTbW1tH7cI1dHRCQ4OLi4u7u7uBp0+toZjtzb8bP0HZs+eff/+/bi4uLFjxyYlJSUmJp4/f37WrFlofwJuAwQtFM3k3vqKhoaGlpaWmpoaKpX68uVL3NEQUW3Byspq3rx5EydO7MdPahISEsHBweDbuHDdwxb3Z2sml8uVkZGJjY09fPjwkydP0tLSCAQCaJIEAqG2thbXZYEclpSUxLZlJycnbNP4phv542qviooKKKPKykrhqGIRiUQSiQSGDHl5eexBZGRksF1iZWVlv3fKfPDgwcSJE9va2oKCgiwsLEDDwWZpamqqyMqGGwW0tbWxn8KNAuCSPbD0WVdXR6fTwU1DvSUWO6D0PS3YaoaI6g1A/08gEMhkMnZtpbGxsbm5uaamRkZGRllZGTdwgAEFhOxLazUxMRk1alRMTIyent7IkSN7qwDYj4Djg4jhZgLY1C1cuDA+Ph7cVgw6IpHhsSMd+BfXapKSktDDooFx4x24KUxMkQlHHk0UdvD18fH5+++/0U6VSCSqqKjU19fT6fTo6OjExERchAEFBQUOh9Pc3Pzs2bMjR46AxD569AhbFbETg4iICElJSVwCP9uZsFgsbD/Q1dWFRnvZsmVgHQ2Np3B1wlYMdGoHUCgUbOtQV1fHNtg+7uiMHUQUFRVxgyB2J93PVkvhZo7NdjHzKFwz719CBpxwycrIyBAIBLDblPAIPviwZQcaF51O7+zsRGc1JBIJwfR74EWBQFBWVtbR0dHY2KiqqorNeQMDA+T/zj9xHQu67wQWj8draWmpq6trbGwEbQoNr6GhISUlVV1dXVNTs2fPnk+fPhGJxOXLl1taWh4/fhz0hGg3qKam9qVTIPF5QiQSeTwei8VqampCF+NA0ohEInaOzWKxaDRaU1NTT0+PiooKNk+GDRuGznz6kid8Pn/Hjh2+vr52dnaBgYFSUlJgDehLv1B4e3srKyuL7E77YRCGLeH28g9ahwJElp1wXmHzRFdXd+bMmZ6enlpaWmhPfvv27YH9Sg6i193dvW3bNhKJtH//fmlpaZGnQAl//cTOf0CYLx28qqur+zFt+07683+c72UJQDwymbxz505ra+vZs2dv3bp1xYoVs2bNGjVqVHJyMtjPr6WlRVtbu7q6etu2bT4+PpmZmR4eHsnJyebm5kFBQSdPnly+fDmfzyeRSMuXL+/o6LCwsDh+/HhISIiysjJaWW1sbExMTFRUVLDfq7+erq5uZGRkfn6+k5NTWlravn37rK2tDQ0Nt23bFh0dDS4INDY2vnDhwrNnzxYvXvz777/7+Pg0NTW5uLhMnz79hx9+uHDhgoSEhKqq6vr166OioiwtLTkcTmBgIDg+GGbc3Nz4fP7YsWO1tbXB6xoaGtjwK1asEM7VY8eO+fr6ZmVlgSVk7Ls2NjbY7EXP5eLiYmhouGjRoj179sjJyeFWkcaNG+fi4jJ79ux58+Z5eHiAnxGUlJR8fX337t07Z84cFotFJBJXrFiBlpGKigryv/n990NKSmrTpk3ggmRnZ2dsoiZNmvTq1avFixefPHlyzJgxPT09AQEB2dnZCIKAmQe2gomczQxOzAkEQkBAADYyDAYDjapwusBdpSLZ2dlVV1ePHz8ed0cDgiAi6x6Qmpo6atSoyspKb29vXGsFARwdHW1sbNzc3I4cOQLmkX2xYMECDw8PAoGgpqaGaxG3bt3asGEDmJvi6j/aXsQwNjZms9kLFiwoKChoaWnh8XiE/wEt9Pz58yBkb31Fa2urp6fngQMHfH19bW1tcUdDhNoCgiBjxoxZvXr13Llz+zeVMTMzCw4OplAownUPW9yfrZlkMrm9vT0oKCg0NJRKpVpbW2PflZeXx3VZCIIQCAQSiYRty8OGDcM2DR0dnX6kqI9wtXf8+PGgjJKTk4Wj2hs7OzvsQezt7bFd4r1799Dq9KWmTJni4uIyd+5cDQ2N4uLi5cuX42q4rq6uyMqmp6eHHQVwvxLjRoGAgAAEQQgEgo+Pz6dPn2xsbNDWLTKx2AHli7pctJohYnsDHDqdPmvWrMOHD/v5+c2dO1d44ECHj760VgqF4unpiSCIh4eHnJxcbxXg9u3bwp+Vl5fHzgSE025ubh4aGnr79m1ws5usrKz48MOGDauurt6+fXtTUxPaasaMGSN8agKB4O/vj7YR0O76WGQ4uMHXzs4O7VTb2tr8/Pyqq6stLS2PHj3a27gzbtw4R0dHDw+PJUuWCAQCcIWUoaEhtioSCAS0FXh6ejKZTFwCP9uZSEtLY/uB+fPno9FWUFAICAjAxlNkdUIrBpVKVVBQ2Lp166dPnxAEUVdXx7YOBQUFbIPt+5o+Oog4ODjgBsHt27fHxcWBYJ+dRAk3c9yMqLd5FK6Z9zshA0u4ZA0MDBQUFLZv366lpSWckCGBlh2FQhk3btyJEycWLlwIrm3pDYFAeP/+va2tbU1NzcqVK7E5D65LwjZwXMcCtqDC+fjxo52d3bBhw+zs7NTU1LDhPT09V6xY8eeffzo4OGRnZ4OrrkxMTDZs2PDw4UMFBQVsE54wYUI/pkBi8mTYsGH6+vpLly6NjIwUf0ASiXTw4EFPT097e/uZM2fiBh3ct33xeUIkEletWsVkMg0MDCZOnDhy5Ejhvdj68oVCUVGRTqeL706/yLcetoTbyz9o6yhAZNkJ5xU2T6ysrJYvX75ixYq1a9eiPbmamtqAfyVHEKS6uvru3buvX782MzObNm2ayFNs2bIF3Hvu6OiIraUit4H+0sELvTcT6OO07Tvpz/95Bmx79IEj8il7IjU0NGCfWAcuTxAIBEwms7KyksPh0On00NDQw4cPZ2Rk2NjYxMfHCwQCLpdLo9HodDr2UFwut7S0dMKECWBbNdyJvuYpeyKBdVz0RFwut7q6GqSlubkZPJggNzc3ICAAXL4xcuRI8GBBBoNBo9F6enqwR2Oz2Xfv3jUyMkpOTsadSGR4bDTKysp6ezYBLntRILZinrnQ2NgIVtax2trasE+KQcuot4N8kQF8yl5vcImqra2tqakR+Rg7kRVsoIh5yp5In42MyMIS1tbWJrKeiKx7DAbDzc3t999/x1YhkdWJx+M1NzdzuVwxpwZP2euN+Bou/l1hnZ2dra2twq9jW2hvfcWRI0emTJlSXV2NHqG3o+HaAqrvT9nrjfji/mxlaG9vLysr6+rqEn4L12Vh4dqymKYhUl+estcbbO1Fy0hMVD97EPFdokhiRoeGhoby8vLeerneqocAMwqIJLJWd3V19XY0QOSAgtX3vqW33kAYWCsB///swPGlrVXQSwUQDiZyJiBGX8Kj8w0xrQYlcrz7bJEJw+UhrlPt6uoqLy8XmQMoHo9XU1PT3NyMfRFXFXGtQGQCP9uZYPsBXLRx8RRfnRgMBq4/wbYOMQ2277MC8YPgZ6ul+Gbe2zxK0OeEfKOn7PUGV7Jo/otJyMAS+ZQ9kXg8Xn19vfimh2ppaUFDiu9gBX2eF/UWvq2tjUaj9TY/xLYF8VMg8U/ZE6mrq6uPwx+Xy21sbERDfmWecLnciooKMUfo4xeKvnSn4p+y15tvNGx96YT/e3vKnkBU2QnnFTZPULiefAC/kvemt1Og+tJyv2jwwunjtK0fM8lBAJ+y9w3hbs5E/6RSqWBjF0lJSSsrq7CwsOjo6MmTJ7u6uiIIQiKRhDe9b2xsXLVqlZSUVGBg4CDcOwYeXo7+SSKR0KtLwBVDCILo6+srKSn99NNPEhISK1euBFtjyMjICN9Z/fTp0y1btsyZMwf7YDhAZHhsNMQ8OqS3e1+xsRVJTU1N+EXcTwdoGf1T4BIlZk8okRVsqHw2MiILS1hvv/yIrHskEsnc3FxbWxtbhURWJ3CnSV8i0BvxNVz8u8J628cBW+d76ys0NTXBY0FkZWXFH+3b/Ywmvrg/WxkUFBR6210I12Vh4dry4GyXBmBrL7aMeovqZw8ivkv8UuK3DxCzaYj4RiGyVoO7CcR8SuSA0j99r8BUKhW9JP6zA8eXtlak9wqAIysrKzwTEKMv4dHCFdNqUCLHu88WmTBcGnEVDDyJQvwRiESi8CNfcVUR1wpEJvCznQm2H8BFGxdP8dVJuFZgW8eANFjxg+Bnq6X4Zi7m3QFPyIDAlSya/O9wMxQikdj3rh67KcFnZx19nBf1Fl5RUbG3Wo1rC18/BcKhUCh9zBMSiYSN9lfmCYlEEj+m9PELRV+60/75RsPWdzXh7x/hshPOK2yeoHA9+QB+Je9Nb6dA9aXlftHghdPHadv305//g/yzF6T6wtvb29vb+7PBtLS0Hj16NAjx6Ts5ObmwsDDwlBDx3N3d3d3dByFKEIQjsu5JSUlFREQMRXQGQ299xZIlS5YsWTL48YGgvuj7gPKv1MeZQL/DQxAEQRAkBhxYod78M/aQgiAIgiAIgiAIgiAIgv41/rVXSJWWliooKNTX15PJZIFAYGZm9k2fQf6PwOFwPn36JC0t3d7ebmhoWFJSoqioKCkp+dmL/P/pmExmQUGBmZnZF10JDJ7MLScn11v+1NXVNTQ0WFlZgc0jKysrOzs7LS0tv+iWT1AompqapaWlJiYmNTU14OmzMjIyPT09GhoaQ7VLIovFys/P/6JMq62tbWxsRDPkH4TP5xcUFMjKyva9LXy2enyfeDxeXl6eqqpqb1eh42q1mBcHX/8acj8Ohav8n820gQKe6zd+/HgVFZXi4mIGgzF69Ggx4UtLSzMzM+3t7Y2MjMArfD6/7/3Pd1Ks/3pNTU2dnZ1SUlL19fVEIpFMJltaWvb09OTk5MjLy/P5fDg/GSp1dXW1tbVWVlaSkpL5+fkUCsXExERkSDqdXlRUNGLECPSObCyRI0g/hpU+6ujoePHiBYvFGjNmjL6+fv9GXvF9IC7yaB9IJBK/206j7x3aQA0lTU1N7e3t4InyaKNWUVFhsVjfeiInfoYmvrriDMgAx+fzEQT5mknR4IxH/6mZ7T9daWlpV1cXnU63traWkZEpKipis9lgrARftZqamj59+kShUAwNDf9xO8pDOP/OK6SKioqCg4Pr6uo2b94cExPz22+/PXz4cKgjNfSuXLkSERFx/fr1NWvWvH//ftmyZSkpKRs2bKitrR3qqH1bpaWlfn5+fX+YEdDV1bV169a4uDgw0ArDPtMNQZD4+PjQ0FDxT3sRBgqltLR02bJlL1++3Lx5c3R0NKi39+7d27dvX/+eOv/1qqqqduzY8ebNm8DAwJSUlL585Pr16/1+KtnQ4nK5ERERN2/efPXqlY+PT319/Wc/8tnq8X2i0+k///zztWvXeguAq9XA48eP9+3bR6fTv30ExelfQ+7HocrKyrDPo/xspg2IlpaWtWvXnj9/PjQ0tL29/dChQ+IzvKWlxd/fPzIysqysDEEQPp8fHh6+Z88e4QrZW60WWdbQwOrq6tq+ffurV6+uXr0aFBT05MmTmTNnvnjxIi4uzsvLi0ajwfnJELp169aqVataWlq6u7t37Nhx5MiR3vpz8EyAjx8/iny3u7sb+3g+AB1WBjbODQ0N8+bN++mnn/bs2TNhwoSXL1/2b+QV3wfiUoT2gd/JWCBS3+M2IEMJaNpv3rx5/fo1tlGXlZUNwkQON0jhiK+uOF85wKFDD4vF+ppJ0eBUrf/UzPYfDXyRp9FoAQEBhw4dysrKmjNnzv3795OSkpYsWUKj0fh8/rFjx4KDg+/cuTOE35WggfLv/FHu5s2bmpqaYJM2CoUyYcKEc+fOTZ06VUpKaqijNmTa29svX77s7+9fU1ODvqivr08mk5OSkoSfZ/yPxufzExISzp49KyEhERQUpKyszOfzb968GRkZ6e7u7u3tferUqfv376uqqm7evFleXv7EiRM8Hk9RUXHGjBl//fUXh8NZv369tbU1giBFRUV+fn5qamrbtm3r6uoKDw8vKSnx8PBYvnw5OFd7e3tERMTHjx/BQ3Z4PN7Vq1cvX75sYmKycePGzMzMtLS05ubmGTNm5Ofnp6WlmZqahoaGgh310EIBj9/GcXFxCQoKKi4utrCwEJ/eysrK2NjYgICArq6uS5cuzZ07NyEhQUZGJisra+HChQsWLAAXTYCogm7d19eXzWZHRkbm5uY6OTkJBIJZs2bFx8ejB/nhhx8cHR1fvXp18+ZNBoNRWVnZ3t6+bt269+/fP3z4MDg4WElJCZfPCIJ0dnbu3r27sbExJCRER0fnwIEDJSUljo6OGzdufPXqFciKefPmaWtrh4eHg3y2tLSMiIjA5Yx4Dx48yMnJWbduXWJiYmNjo7Gx8evXrxkMRnt7e0hIiKWlJQiWm5uLnsXR0fH27dvnz5+3tbXlcDg+Pj737t0zNTWdPHlyRETEhAkTrKysVFRU/v7774cPHx46dIhMJq9evZpKpUZFRf3www/gCbKFhYWHDh2qq6tzd3dftmwZrnrk5+eDyrN06dK5c+dGR0ezWKza2tqgoKAbN26AbPfx8UlMTERzbMqUKX2t05+DqwPz589PSEhQVFRMT093c3Pz9/fPz88PDw+XlJQED13GZo6trW1UVBSIrY6ODo/HCwsLGz9+vKur64kTJ2RkZLS1tW1tbVNTU7OysthsNo1GW79+vbm5eXh4+KdPn0aPHk0gEIKCggb86bYD0pAdHR2xB0HzHHuo5cuXFxQUoBmC/qqck5ODzbS+4HA4J06cQGNlaGgoXL1xYUBXw2AwuFzu9OnTHzx48OTJExKJhHvudVdXV1xcXFJSkrGx8c8//5yUlAQaF9ijOjc3NzY2lkwmT5kyxcjICO2pFixYAGp1fHz84sWLDx06hDbJgSomSIzMzMzi4uIdO3bcunULQZD58+e/fv16zZo1TCbzxx9/nDZtWklJCZyffD+qqqpOnTqF9pzLli27efPm9evX1dTUwMPFsT2npqYm6HNkZGT4fH53d/fevXvt7OxAzyklJWVpaWlgYPDo0aP09PSB6jkrKiqqqqrCw8MnTpz4xx9/VFdXI30beWfPns1kMtHJCSLUB6ampsbExPD5/DVr1qCdD64PBGNBQ0PDkSNHsLl069at69evjx49msVi/fjjjyIfWfPs2TN0iFy4cOGdO3cGdigUGTd/f38ymTwgQwlurlJVVQWatqqq6sOHD9FGjeu3+z6REw8M8ei8ztzcHLyOrZAODg5Xr17FVtcPHz6Eh4crKSnJycmNHz/ewcEBOwnEzQpQz549Q2vC2LFj0enB9u3bQcmCGgiGGHt7ezD0jB07Fvm/k6L6+nrhaUZ5ebmKioqXlxeBQLh+/fr69evT0tI6OjqMjY1tbW0/ffoUHR0NZlmrVq0qKSlBj4DLWBRuZltaWnr48GFpaWkVFZUxY8YQCATsdHHOnDmfndnS6XRsQSP9al9UKvVLZ7YQFvgi7+rqGhwc/Mcff9y6dUtHR2f16tU0Gi0mJubNmzcKCgpPnz6dNm3a7Nmz169f//VNDBpa/8IrpJhMZmpqqp2dHXoN/MiRIz9+/IhdiPkP+vTpU319/YgRI7AvSkpKWlpaPn36lMvlDlXEvoW6urp9+/aNHDnS3t7+4cOHbDabyWR2d3ebm5sfOXIkPT09Ozt7yZIlNTU1sbGxDQ0NcXFxGRkZioqKISEhRCJRR0cnJCSkvr5eIBDQaLRx48bdvn379u3bISEhJSUls2bNioyMPHPmDDjXmTNnrl275uLiQqPRBALBq1evdu7c6ezsnJOTc/DgwQ8fPkRFRXE4nIqKigsXLnh5efF4vPT0dPBZkYWC0tHRkZCQyMzM/Gx6W1tbExISGhoaamtrExISqqurz5w5U1FRYWFhsW3btvfv3yP/+xXr3r17rq6uYWFhKSkpcXFx586dmzZt2o0bN5KTk5uamnAHSUhIkJSUpFKp5ubmioqKZ86c+fjxY3x8PI1GA0+awOUzh8Opr683Njbu6OgAIzGPx1u0aNGVK1fS0tLy8vJAVkhJSW3YsAHN5+vXrwvnjHgFBQXJyckcDicjI+Pp06f5+fnHjx/X1dVta2vbtGkT+IWttbUVe5bHjx+HhoaOHDmyvr7+9OnTDQ0NKSkpHz58YLFY9+7dKykpefz4cUFBgY6Ojpyc3MiRI589e5aSkvLy5cv79+/Ly8uDDIyMjKyrq/Py8srOzq6oqMBWjzt37qSkpDg4OFhYWISFhVVVVSUnJ585c0ZdXf3cuXNotl+5cgWbY0wmsy/p7QvhOnD69OmSkhIjI6NDhw7l5eVt2rSJwWCMGDGitraWyWRiMweNrYaGhpSUFJFIbGtrO3nyZHl5+alTpyQkJIqLi5OSkvLy8o4dO6amptbQ0BAZGfn333/fuHFj6tSply9ffvDgAZj+DqwBacg5OTki8xx7qOzsbGyGNDc3IwjCYDCwmdbHOIPb7tBYpaSkCFdvXBjwe7Kmpua4cePOnz8/derUxMTERYsW4VYozp49e/To0dmzZxcXF2/cuFFDQ0NWVtbMzExJSQlBECUlJWVlZW1tbXl5eWxPdfXqVVCrzczMXr9+jW2SA1VMkBivX79WUlLS1NQEf8rIyISGhnZ2dmpra69atYpIJML5yXeltbUV23PevXt3x44dNjY2PB6PyWR2dHRgO4rCwkLQ52hraxMIBAkJiZaWFrTnJBKJT58+zcrKKigoGMCec/jw4Y6Ojl5eXhMnTpSRkZk2bRqCIH0Zeevq6rCTEz6fj+0DHz58uHbtWiMjIyMjozVr1uTl5SEI0tXVhesDCwsLk5KSGhoaROZSeXn56dOnRS7fs1gs7BDZW7f8NUTGrbKyEhmgoQQ3V0GbtqysLK5RY2PV94mceK2trdh5XUFBAYIgnZ2d2AqZnJyMra50On3jxo0MBkNPT+/vv/8GS1fobCQhIUHkAJeXl4etCVlZWej0AEz8mEwmdoh59OgRGHo0NDSwk6IbN26InGbo6OhUVVUlJCTcvXv32LFjaWlpZ86c6erqKi4uvn//flRUFDrLysrKwh5B5KXruJntnTt3Nm/e3NTUZGZmFhMTk5eXh5sutrS0fHZm+/jxY9yo3Y/2JXLoh/oI+0Xe29vb2tq6qqpq+/btKioq5ubmVlZWSUlJOTk5dXV1bm5uenp6A9LEoKH1L1yQotPpHR0d2OcvKikp9fT0tLa2DmGshlxjYyORSMQ9sZJIJKqrqzc1NX3pjWbfOUVFRTs7u4iIiAsXLmhoaJBIJFlZ2UWLFs2YMYNIJIJfTvbv35+RkcFmswUCgYKCwq5duyZNmlRZWdnY2FhRUVFbW1tVVUUgEFxcXH744QctLa36+vrCwkI/P7/AwEAnJ6eXL18iCCIQCIqKipydnf39/d3d3QkEQnFxMZ1Oz8vLY7PZOTk5HA7HxsYmLCzM3d1dVlY2ODi4tLQUfVKpyEJBSUtLy8jI1NXV9SXJAoEAQRA+nw/+Iy8vv2zZMn9/f2lpaXBHT09PT3Z2NpfLzcrKYrFYWVlZubm5jo6OAQEBM2fOBFMo3EEQBNHT05OXl3d0dJw0aZKysvLt27ezsrI8PT3Baq9wPhsbG3t7e9vb27NYLD09vfr6+l9//bWhoQFssgCyQl1dvaKiAs1naWlp4ZzpIzSeFhYWfn5+Xl5eVVVVYDZcX1+PPcu7d+8oFIq/v7+Pjw96q7ngf8CfZDLZ3NxcSUnJ1dXVxcUlOTn5/v37o0ePBj8JEonE8ePHv3v3bseOHWQyWUZGBls9OByOmZnZ7du3T506xWKxuFwukUj09vbetm1bcXExmu3l5eXYHBvYjWNwxScnJ7d48WJ3d3cymdzY2FhfX79kyRJfX9/hw4fT6XRs5tBoNBDb3bt3U6lUAoHg6upaWlqakJBAIBDGjRuHnsLU1HTZsmVOTk5MJjMvL8/R0dHPz8/Dw+OL9k3ruwFpyB0dHSLzHHuompoabIaA2TmdTsdmWh/jrKKigo2VmZmZcPXGhQHlRaFQdu/e/eLFC2NjYyKRmJmZOW7cuC1btoCP8Hi8tLQ0Z2fn5cuX+/n5FRQUaGpqKisrOzo6gkcUa2tra2pqmpmZycvLY3uqt2/fglrt5ORkbGyMa5LQN8Xn86urq5WUlLDXwL57966tra2ioqKoqAiB85MhBfYYRf8Ee8Rge87y8nJ5eXl/f39vb285ObmWlhZsR1FfXw/6HG9vbwKBQCAQZs6cifac2As6BrDnlJKS2rdv37NnzxYtWhQfH3/gwAE+n9+XkZfH42EnJ0wmE9sH5uXlkcnklStXgiWV/Px8BEG6urp66wNxuUSlUn19fZctW9bb1jwUCgU7RMrIyHy7oRAbN5ADAzKUYOcqqqqq2KaNa9RYXzSREw87rwNXxrW2tmIrZGZmJra60un0urq6RYsW+fn5WVhY8Pl87CQwIyNDZOHm5uZia0JBQQE6PQA/fjQ2NmKHmPz8fDD0mJiYYCdFdXV1IqcZv/32m7u7+8uXL9PT001MTO7cudPU1OTs7IwgCGg16CyLyWRijwDWFnFwM9u3b99WVVUtXrzY19cXvVgewLZ08TNbc3Nz3Kjdj/alo6PT75kthP0iX15eXlJSwmAwXr58yefzqVSqh4fH27dvL168qKura2VlNYBNDBpC/8IFKUlJSQqFgr3kp7u7m0QiUanUIYzVkAPJF761m8PhUKnUAb/XZmixWCxHR8d79+7NmzcvOjq6urqaQCCAmR+BQEhNTU1MTDx//vysWbMIBAKCIGQyWUpKSlpaWk5OztXVdeXKlStXrgS3fIIZKvjxU1ZWtry8vKOjo6amBnwJRBBEWVm5rq6OTqeD+YGcnJyysnJAQICfn5+vry+FQqFQKGQymcPhrFmz5vbt25KSkkePHu3u7kZ6LxSAz+dzudzelquwiEQij8djsVhNTU3gyODugObm5u7ubnCBD5lMVlRUNDMzW7duXWBg4NSpU9XU1BobGzs6Oj59+iQQCIQPAhIOskhFRWXatGnHjx9HEMTJyUlkPjc3N5NIJCKRSCAQBAJBRESElJTU3bt3dXV1wUFAVuDyWV1dXThnxCOTyWw2m81mNzQ0gElGQ0NDS0tLTU0NlUoF15XgzmJqatrd3d3U1FRRUcFkMkF9oNPpnZ2d2K0BQDyJRKKHh0d2dnZKSgo6R+FyuTIyMrGxsYcPH37y5AnY9gWtHi0tLQcPHlyxYsWhQ4coFAo4GmhZ2Gx3cnLC5hhYKxwQwsVHJBJJJBIoQQqFIiUlVVVV1d7e3tLSIiEhgc0csAUplUpFvx1ZW1urqKgcPXrUwcFBR0cHPQuJRAJFjCAIWFisrq7Oz8//RhtpDUhDVldXF5nn2ENRKBTsR8DerpKSkthM62Ock5KSsLES2fBxYbAfZzKZ165dmzlz5ps3bwICAsDljSCSmpqa1dXVnZ2dZWVl8vLywiMakUgUCARUKhXXU4FTgDsxcU0S+tZkZWWxl8CAO0NXrVpla2u7Z88esHsRnJ8MFSUlpdbW1tLS0rq6uurqalVVVeT/9pyysrJsNrupqam2tpbD4eA6imHDhoE+Bz2gra3tt+45Hzx4MHHixLa2tqCgIAsLi4aGBnD8z4688vLy2MkJ+O0B7QPl5eXBNc61tbXd3d0gK0DqRPaB2FySl5dnsVhlZWX5+fnYa51qampycnLA3i6VlZXYIZLNZn+joRAXN/DKQA0laGceFRUlLS2NvYsT26ixken7RO6zsPM6GRkZBEFwFdLY2BhXXWVkZPLz8ysqKmpqaohEInY2MnnyZJGFq6ysjK0JYFEAOz0QHmLA0APeRSdFZDK5t2mGo6NjTU0NjUbz9vZOTk5WVVU1MzNDEASMX+gs682bN9gjGBoaCucJbmY7ZcoUGRmZ6urq5uZmcEWV8HQR+dzMFjdqc7ncfrQvEon0pTNbCIV+kWcwGHv37h02bNiWLVtOnjwJLgWYOHEil8u9ePHijBkzFBQUBrCJQUPoX7ggpaCgYGRkVF5ejr4CfsdAr5n/b9LX16dQKLhLXnk8XmlpqaWlpcg9jP65pKWlX716tXjx4pMnT44ZM0ZDQwP7rq6uLpvNXrBgQUFBQUtLC4/HA4OTnp7e4sWLf//9dx8fn6amJrCOg5KXl1+/fn1UVJSlpSWHwwkMDEQQhEAgLFy48NOnTzY2NmB3ycmTJxsaGi5atGjPnj1ycnJgCAdPVjp27Jivr29WVpa7uztYARRZKKi2tjYGg4HuFCCGrq6uvr7+0qVLIyMjwWxAIBD88ccfHh4etra24MZ+Eom0YsWKzMxMDw+P5ORkdXV1cD3RqFGjHj16hCCItrY27iAIglCpVAUFha1btxYVFbm5ufH5/LFjx6KPYsHlM+4hFzY2NsnJycuWLWMymeh0h0gk4vJZQUFBOGfEs7Ozq66uHj9+fG5uLniltbXV09PzwIEDvr6+4Mco3FkmTJgwevRoT0/PXbt28Xg8SUnJcePGnThxYuHChdjLA7W1taurq7ds2WJubm5iYqKiooLOUchkcnt7e1BQUGhoKJVKdXBwwEaJSqUaGhpu27YtOjoa3A6AIAiBQMBl+7Bhw7A5hv3G8pWE6wCWsrKyr6/v3r1758yZw2KxlJSUsJkDBnLsCoWioqK7uzudTvf09BT5ZBkCgeDn58disSZOnAh++fwWCxwD0pDV1dU/m+daWlrYj4A9pJSUlLCZ1sc4g68EaKwIBIJw9caFwf58kpqaiiDIlClT1NXVb9y4gc6xiETi8uXLOzo6LCwsjh8/HhISAr4xoggEgrGx8YULF5KTk3E9FajVW7dutbS0FG6S0LcD7shrbm4G9xHzeLyIiAh1dfWtW7fu3r27tLT0+PHjNBoNzk+GyqRJk2xsbFxcXExMTPh8PrrfImrUqFE2NjZubm5HjhwhkUiamprYjgJcJ4vt+pSUlL51zzllyhQXF5e5c+dqaGgUFxcvX74cF+feRl4XFxfs5AQXPTs7OxcXl9mzZ8+bN8/DwwNMG2RkZPrSB9rZ2U2fPv2HH364cOGChIQEmqKrV6/+/PPPDAYD5Ax2iORyud9oKBRpQIYS7FzFw8PDxsamubm5rq5u79692EZ96tQp7MU4fZ/IfRZ2XmdjY4MgiLq6OjaGU6dOxVZXFRWVoKCgkydPLl++nM/n42YjpqamIgvX2dkZWxPAhX7YWqqhoYEbYsDQc/78eWxslZWVe5tmGBgYWFhYGBgYuLi4KCkpTZo0CX23o6MDnWW5u7uLmZMDwony8fE5dOiQm5sbWKsVni4in5vZ4qbruMv3+ti+KBTKl85sIRT6Rf7ixYsvX77ctWvXpk2bRo4cuWfPntbWViMjIwcHB0VFRXDD8gA2MWgoCb4/P/30k56e3tcc4ebNm/Pnz6fT6QKBgMfjbdmyZffu3Twer98HrKioWLly5ddEachxudygoKAjR45gX6yvr58xY8bz58+HKlYDxdXVVfjF2trampoakeXe2dnZ2toq8lBghtHbiRgMBo1G6+npwb7Y1dWFPRqXywUXMuA+y+FwysrK2trasCGFCwWVnJzs6enZ0tKCffH48eM3b94UDgwurQeJzczMtLS0fP78eUNDAy75TCazsrIS7L8uEAjYbHZjY+OePXtcXV3pdDr2INgk19TUMJnMu3fvGhkZJScn404tJp8bGhrABfDCsPksnDNYM2bMEH6xra0NDX/kyJEpU6ZUV1cLlyn2LDwer6Gh4cWLFyNGjHj79i2Px6uvr+/q6hKOc2NjY2lp6YQJEzZu3IhLV3t7e1lZmfCnQCqEcw/AZXtvObZt27Z3796JyoM+EVl8WG1tbUwmE/1TTFVvbW3dtm2bo6Mj2ElNpPPnz69du/bDhw9+fn5LlizBNYq+y8jI2L59u5gAA9KQxRykt48AuEwTJjw64GIlsnr3FvOioqLKykqBQMBgMF69etXc3Ix9l8vl0mg0MLQJAz0PaHG4ngpcQigQ2yR761ugr0Gj0aZPn95bux6Q+QkkkshZgTAej1dTU1NeXt5bD8bj8Zqbm7lcLvrKIPecc+fOFe6CGhoaysvL0TFF+F2Rzby3yQmqsbERXEiC9dk+EDzT7f79+3FxcSNHjiwtLQWvZ2dnh4aGosOl8BApsltOSkoKDw8Xc7p++/qhBNuZi2/aKJETuT76448/Xrx4Af4vZl6Hm+eg1ZVOp4eGhh4+fDgjI8PGxiY+Pl4gNBvprXBF1gQs7BCDHXpwxM+oRcLNsoSP8OOPP4JREoVLVGtra01NzZQpUw4dOiT4v9NFbPzFzGzFT0r72L5EHuT58+d79+7tPfXQ/4P9Ii/e1zSx/xQ7OzsfH5+hjkWv/p1P2Zs+fXpWVhaNRrOwsGhvbycSib6+vt9ol5N/ChKJtGrVquvXrzOZTHCtL4IgZWVlzs7O6DUg/zLoXXXCxFzbid19TJiMjAyaeyhwXx76J4lEQn9pwZKUlMRdciyyUAA+n19aWhoYGKisrCwmPtg4oD/6UalUKysrJSUl4RvXqVQq9vE3UlJSUlJSOjo6w4cPJxKJ2IPgkpyUlLRly5Y5c+aMHz8eF0BMPou5cx6bz8I581nYq7E0NTVHjBihoKCAPhxN5FnAjmn19fXW1taysrJEIlE4sSDOdXV1q1atkpKSCgwMxPUbCgoKve2RISkpKfKAiFC2i8mxryGy+LBwl7D1VtX5fP7Bgwfv3bu3Y8cOMQccNWrUxYsXZ82apa+vv3fv3oHdBARrQBpyX/JcZIbgMq0vcLESWb17izn6K5+MjIzwQ4VIJJKYh/Vgex5cT4W2RLiZxSDT1dX18fEpLi4ePXq08LtwfjLkiEQieE6lmAC4nuF76DnFN+Te3u1tcoJSU1MTfvGzfaC+vr6SktJPP/0kISGBbneAIIiEhMTq1avR2ZHwEPmNhsLefP1Qgu3MxTdt4EsncmKImdfh5jnon7KyslZWVmFhYdHR0ZMnT3Z1dUWEZiO9Fa7ImoCFHWLE1CvxM2qRcLOsvhwBlyiwt9fw4cNBiYtMo/iZrfhJaR/bVz9mthAK+0VeTLABbGLQ0CIIMFeWfieCg4Nv3bolcvu6oVJZWblv376YmJihjggk2owZMx48eDDUsRgMMTEx6urq8+bNG+qIDB43N7fk5OShjsVg2L59+4IFC8TMbv+V3r17d+vWrb179w51RPrpXzM6/Af7Fuhf7F8zK5g3b96FCxf+O7uMJScnFxUVBQcHD3VEht7evXsnTpw4YcKEoY7I92XlypU7d+7ErkD9g7x48SItLW379u1DHRHoP2f06NEWFhbnzp0b6oiIBn+UgyAIgiAIgiAIgiAIggbVv/OWPQiC+ofP5+fn58vJyYFHouCwWKz8/HwzMzNwQTWPx8vLy1NVVRV/F8AgqK2tbWxstLKyErmPbF1dXUNDA/puZWVlZ2enpaXlgN8mU1payuVy29vbraysZGRkOBzOhw8fJCUlFRQURObnQOHz+WA3ViKRqKamZmpqKjIf+g6XY/8gHA7n06dPPT09RCIRFHFTU9OnT59UVFQYDIahoWFJSYmioqKkpOQ3LZGvV1pampmZaW9vb2RkhHuLyWQWFBSgzRCCoC/F4XBevXpVW1traWlpZWUlcizg8/lfOUbQ6fSioiJzc3MajSYrK/vt+hwGg/H8+XNDQ0OwT0VmZqazszN2J4GBBUacvqeovb39+fPnqqqqzs7OuINQqVQWi/VNMwf6UgwGo7CwcMSIEcLbIPQFdmbY1NTU3t7e1dWFIIilpWVPT09OTo6KigqLxZKWlmaz2TIyMhQKpbGxUVJSUltbux/3yPedmImicJXGThS/tMJDEPSl4BVSEAT9/7q6urZu3RoXFyfycdRlZWUBAQHgeYIIgtDp9J9//vnatWuDGkVRrl+/vmHDho6ODpHv3rp1C/tufHx8aGgo9uF6AwLcZVBQULBkyZJ79+4hCPL27dvFixenpaVt2LChtrZ2YE+H1d3dvW3btrlz5y5dunT06NG+vr7t7e1fc8DHjx/v27fv8ePHPj4+vT0F8vt05cqViIiIpKSkJUuW0Gg0Pp9/7Nix4ODgS5curVmz5v3798uWLUtJSfnWJfKVWlpa/P39IyMjRT4NvbS01M/PD22GEAR9kcbGxiVLlixcuPDw4cOTJ0/etm0bh8PBBuDz+eHh4Xv27MGNgy0tLYGBgSkpKX08Edjtu6ioKCIi4ubNmwOWgP+Lz+cfOnTo5MmTQUFBpaWlly9fTktL+6aPTuZyuX1PEZ/PDwsLCw4OTktLw77e3d29ffv2kydPbt++PS4u7tvEFOqPwsLCgICA/Pz8/n0cnRl2dXVt3779zZs3r1+/njlz5osXL+Li4ry8vMrKyjZv3hwdHb158+aYmJirV6+uWbPm+vXr+/bt4/F4A5sWLDETRVAbsfUQO1H8ogoPQVA/wCukIAjCKyoq8vPzU1NT27ZtW319fXh4OIfDWb9+PfpzWU5OTnh4uKSk5Pfz8PjOzs7du3c3NjaGhISYm5tHRERkZWXNmTPH19cXBGhvb4+IiPj48SN4FMuAR+DmzZuampouLi4WFhbJyclz58598uSJlpbW7NmzHz9+nJSUtGLFigE/KZavr294ePjz588DAgIeP37s4uKCZoKXl1dMTIxAIMjOzjYxMQkODqZQKHFxcUlJScbGxhs3blRUVIyIiEhLSzM1NQ0NDdXW1h4xYsTp06cfP34cHx8fFBR09uxZNDCPxztx4gSPx+vu7paQkFizZg2VSo2Kivrhhx9GjRr1TdMoXnt7++XLl/39/U1NTWNjY9+8eaOgoPD06dNp06Zhd/jW19cnk8nfukQePXqUnp7OZrNpNNr69etHjRqFzXDc3uRdXV3ouz///HNSUlJJSYmjoyO63XJhYeGhQ4fq6urc3d3Hjh3L5/Nv3rwZGRnp7u7u7e196tSp+/fvq6qqbt68WV5eHpSOoqLiihUrjh07BuqAj49PYmLi2bNnJSQkgoKCpkyZ8u3SDkHfs8uXL+fl5T18+NDW1vbq1aubN2+eNm1abm6uqanp5MmTIyIidHV1Y2NjyWTypEmT2tra0FZTUlJy8+ZNBoNhamp69+5dtNEpKSnFxsYqKiqmp6e7ubktW7bs5s2b169fV1NT6+npIRAIVlZWWlpa4eHhZDL5/fv3qqqqW7ZsAWOrkpKSnJzc+PHjp0+f3pfIP3v27K+//uJwOEuXLvXy8iISiQKBoLa2duLEiY8ePSopKXn27Nnu3bux13ZxOJwTJ06gsR05cmRCQgKaKE1NTbRv8ff3P3nyJJoPY8aMycrKIpPJb9++tba2plAor169CgwMnDZtWt9TlJWVlZiYKCkpqaOjc+TIEfTg48aN+1YF/B8D5jagn1+8eHFMTAy2UFpbWw8fPtzQ0LBkyZIxY8bExcUFBAR0dXVdunTJw8MjKSlJUlIyJydnzpw5b9++7erq2rFjB4IgPT09p0+fPnTokJeX14IFC/Lz89F5oKampsghxtfXFwRDZ4aZmZnFxcU7duxQVVV9+PDhmjVrmEzmjz/+KPy8DgRBJk6c+MsvvxQXF4vfxPor9TZRXLRoEQjQ1tYWHh6OmygSiUSRFR4+JASCBgq8QgqCoP9DIBDQaLRx48bdvn37xo0bGzZsIBKJOjo6ISEhzc3NCIIwGIxNmzYxGIwRI0Z8P5eZ1NfXGxsbd3R0hIeHh4WF3bt3z9XVNSwsDP01+8yZM9euXXNxcaHRaAO+IMVkMlNTU+3s7BQUFDw8PN68eVNQUPDs2bPp06draWlZWlo+ffqUy+UO7ElFGjlypLa2NpgXopnw8OHDBw8eXLlyZeLEiZcuXYqNjT179uzRo0dnz55dXFz8888/37t378KFC15eXjweLz09vbCw8PHjx5qamnJycmZmZvHx8djANBotLi4uIyPDyMjo+fPnKSkpL1++vH//vry8/CAkUIxPnz7V19ePGDHC3NzcysoqKSkpJyenrq7Ozc0N+/VMUlJyEEqkoKDg2LFjampqDQ0NkZGRp0+fxuYhk8nEBsYWx8aNGzU0NGRlZc3MzJSUlBAE4fP5kZGRdXV1Xl5e2dnZ4GHV3d3d5ubmR44cSU9Pz87OXrJkSU1NTWxsbENDAyidYcOG/fXXX2gduHLlyr59+0aOHGlvb//w4UNcBCDoP4LH43348MHc3Bx873VycpKRkSkqKkpJSfnw4QOLxbp3715zc7OysrK2tjaJRMK2GhUVFSqVam5u3tLSgm10zc3Np0+fLikpMTIyOnTo0N27d3fs2GFjY8Pj8ZhMJo/He/z4cVZWVkpKyoULF+zt7W/cuJGQkLBx40YGg6Gnp/f333/38WoUFouVkpLi4OBgYWERFhYGLl8lkUjz5s27e/eugYFBYWGhubk5+rBOoLKyEhvbmpoaNFEPHjw4fPgw2reUlpZi86GoqCgxMfHBgweWlpaHDh2qqqqiUChhYWFcLrfvKVJVVdXQ0NDQ0NDV1cUe/NOnTwNdtv9F4Go+tJ9/8OABtlBu374NZmuurq7nz5//8OFDQkJCQ0NDbW1tQkJCRUVFXFwck8kkEolbt241MDB4/fo1uOadwWCQSCRLS8utW7c+efIEOw8sLCwUOcQkJCTgZoavX79WUlLS1NSUlZUNDQ3t7OzU1tZetWqVyDthtbS0JCQkMjMzv2l29TZRfPz4MQgQExMjPFEUWeEfPnz4TaMKQf8pcEEKgqD/g0AguLi4/PDDD1paWnV1dRUVFY2NjRUVFbW1tWCSQafT6+vrlyxZ4uvrO3z48KGO7/9jbGzs7e1tb2/PYDCysrK4XG5WVhaLxcrJyUEQRCAQFBUVOTs7+/v7u7u7EwiEgT07nU7v6OgAzyeePHkyl8s9d+5cfX29q6srmUxWV1dvamoa8JsEReLz+Vwul0gkZmdno5mQm5tLJBI9PT0DAgLGjBmTk5OTlpbm7Oy8fPlyPz+/goICFRUVWVnZ4ODg0tJS8KMfkUg0MTFRUlKyt7dPT0/HBm5tbVVQUNi1a1dQUJCLi0tycvL9+/dHjx495E+9aWxsJBKJcnJyVCrVw8Pj7du3Fy9e1NXVtbKywgYjEomDUyKmpqbLli1zcnIC65XYPGxsbESD8Xg8XHFoamoqKys7OjqCp1YTicTx48e/e/dux44dZDJZWlpaVlZ20aJFM2bMIBKJ0tLSKioq+/fvz8jIYLPZAoEAlM7ixYtzcnLQOlBeXm5nZxcREXHhwgUNDY3+PWwegv7pCAQCmUzu6ekB69FcLpfH44Eb3AT/A75Fm5mZ2draYlvNiBEj5OXlHR0dDQwMcI1OTk5u8eLF7u7uZDK5vLxcXl7e39/f29tbTk4Oe+rp06d7eXmBvXXq6uoWLVrk5+fX90tCKBSKmZnZ7du3T506xWKx0CV1Dw+PJ0+e/PLLL2/evDE1NZ02bdrs2bPRFR8VFRVsbBUUFNBEaWpqYvsWcCUpmg8IghCJRHd3dzc3Ny0trYULF44dO7a7u/uLUqSrq2toaGhgYACun8UeHPp6PT09uLEeWyiNjY2VlZULFixYv379/fv39fX1Qc7z+XzwH0VFRS8vL0dHR3Nzc29vbwMDAwaDAV738fHx9/eXkpLKzc3FzgPr6+tFDjEZGRnYmSGfz6+urlZSUgKN6927d21tbRUVFUVFRSITIiUlJSMjU1dX902zq7eJ4ocPH5D/baIqZqKIzVuQURAEDQi4IAVBEB7Y8RFM3OXk5FxdXVeuXLly5UqwebmkpKSUlFRVVVV7e/v3c8seiUQiEokEAoFIJCoqKpqZma1bty4wMHDq1KkggLKycl1dHZ1Or66uHvCzS0pKUigU8PXAxMRk1KhRMTExenp6I0eORBCEw+FQqVRJSckBPy8Wm82uqam5c+dOXV2dvb09NhMmTZokEAgqKio6OzsbGhpUVVU1NTWrq6s7OzvLysrk5eVJJNKaNWtu374tKSl59OhRkBAwGyMQCLjA0tLSZDJZSkqKSCR6eHhkZ2enpKR4enoO+RoHeDI62PZl4sSJXC734sWLM2bMEN78e3BKhEQigWqJIIiGhgY2DwkEQkZGBtjMQjiHcY9453K5MjIysbGxhw8ffvLkSVpaGqjn4LOpqamJiYnnz5+fNWsWKDJQOmQyGVsHnJycHB0d7927N2/evOjoaJG7U0HQvx6RSHR2ds7Ly7t9+zadTo+Pj+/p6QH7mtPp9M7OTtAqwa1wLBYL22qqq6tBE0tKSsI1OiKRSCKRCAQCgUCQlZVls9lNTU21tbW43alAJwnGVhkZmfz8/IqKipqamj5GvrKy8uDBgytWrDh06JDwnuW3b982MzMD/b+0tPT79+/B67jYYhP1119/MRgMtG9JSUnB5QPyv/kAmkDcSfueItBr4Q4OfSVcPz958mQEUygkEklKSqq6urqmpmbPnj3V1dU8Ho/FYjU1NYGFRXQoIRKJ2AuXWCwWjUZramrq6elRUVHBzgOHDRsmcoiZPHkybmYoKyvb09ODIEhubm54ePiqVatsbW337Nkjct4oEAi4XC52Afdb6G2iCPKNQCCoqKiInyiieQsXVSFoAMEFKQiCeqWsrLx48eLff//dx8enqakJ7CGlpKTk6+u7d+/eOXPmsFisoY4jHoFA8Pf3z8zM9PDwSE5OVlVVBS8uXLjw06dPNjY232I3aAUFBSMjo/LycgRBKBSKp6cngiAeHh5ycnI8Hq+0tNTS0vKb7jIrEAhiY2MNDAx2794dFBQ0derUFStWoJkALt1KTU0dNWpUZWWlj4/P8uXLOzo6LCwsjh8/HhISoq6ufuzYMV9f36ysLPAjP4IgWlpa1dXVW7du9fb2xgZWVlYG37sQBLGxsTExMVFRUXFycvp2qesjfX19CoUCbmMxMjJycHBQVFScNm0aLtjglAgWqJPYPGQwGOjzAYhEIq44QKVFkcnk9vb2oKCg0NBQKpVqbW2NfVdXV5fNZi9YsAA8aZHH44HSIZFI2DowbNiwV69eLV68+OTJk2PGjNHR0RmctEPQ92bBggXe3t6rVq0Cez/98ssvTk5O48aNO3HixMKFC8GFk8bGxhcuXLh58ya21ZiamiooKGzdupVIJOIaHfb4o0aNsrGxcXNzO3LkSG8PKpWXlw8KCjp58uTy5cv5fH4fL9pVUlIyNDTctm1bdHQ0m83GXqNRX1//6NEjLy8vQ0PD169f19TUoE+/NTY2xsZWQkICTdTYsWNJJBLat4wfPx6XD3332RRJSUn1++BQb3D9PBjrUXJycitWrPjzzz8dHByys7MtLCz09fWXLl0aGRkp/hG6JBLp4MGDnp6e9vb2M2fOxM4DZWRkRA4xpqam2JkhkUgcOXJkc3NzXV3d3r171dXVt27dunv37tLS0lOnTgmv5rS3tzMYDNzdpt9ObxNFHx+fbzdRhCCoV4Lvz08//aSnpzfUsfg/KioqVq5cOdSxgHrl6uo61FEYJMePH7958+YgnxRMKXAvtrW1MZnMQTj7jBkz+vEpJpNZWVkJtqVEdXV1tba2DlC88G7evDl//nw6nY57vb6+fsaMGc+fP//sEbZt2/bu3bsBjBKaCQwGw83N7ffff29oaAA3mAgEAi6XS6PR0AhzOJyysrK2tjbsERoaGlpaWoQDo0coLS2dMGEC2Om8f5HMyMjYvn17/z6Lw+Vyg4KCjhw5Ij5Y30ukL/o+OojMwz6+KxAI2tvby8rKurq6hN/q7OzsrWLjGkJtbW1NTY3IwhqSvgWCvpHPzgpwDYrH49XX16N/crnc6upq0FtiWw2DwQD/F9PowNGam5u5XG5vAeh0emho6OHDhzMyMmxsbOLj43sLOXfuXOxQy+Fw6uvrhZtwc3NzVlYWj8cDm2QVFRVh3xWOLTZR2KzA5UPf9SVFfTl4UlJSeHj4l579X+mPP/548eJFX0KKnPCg2traaDQaKOuuri6R9UcYl8ttbGxEQ4qcBwqfGjszpNFo06dP7+OsJjk52dPTE8w3xPvxxx8rKyv7cszPGvyJ4vPnz/fu3fuNDg5BYtjZ2fn4+Ax1LHoFd5GAIOgzcL+5AYqKioMekS9ApVKFtzSiUCjCtzkMlOnTp2dlZdFoNNyGIGVlZc7OzkNyARGaCXw+39zcXFtbG/tQGBKJhH3Wm6SkpKGhIe4IaHhcYKCxsXHVqlVSUlKBgYEitykdZCQSadWqVdevX2cymdjH6uEMVYmIzMM+vosgiIKCgvC9h4CY2xxwDQFsSgVBEK5BEYlEDQ0N9E8SiYReYYRtNTIyMqBvEX9vEZFIFDluomRlZa2srMLCwqKjoydPnuzq6trHaEtKSmLjiQIbRYH/43bNExlbbKKwWYHLh77rS4r6fXBIPJETHpSioiI6YaNQKH0sAhKJpKamhv7ZW33GnRo7M9TV1fXx8SkuLh49erT4c/H5/NLS0sDAQGVl5b7EbaAM/kQRgiCR4IIUBEHQAJCVld2zZ4/w62PHjh07duzgxwdLSkoqIiJiwA+rpaX16NGjAT/s17CyshL+MobzPZQIBEH/cd7e3t7e3kMdi4H070sR9JV8fX37EoxIJAYFBX3ryEAQ9N0a+t+0IQiCIAiCIAiCIAiCoP8UeIUUBEEicDicT58+SUtLt7e3gy2uLS0tiURiU1PTp0+fKBSKoaHhd37X3n8Wi8XKycnp7u4mEonKysrm5uZf9Py7urq6hoYGKysr8ZueDqZ+18ampqampiY6na6rqzts2DAEQYqLi+l0upSU1PDhw0VmS2lpKdi/H3sKFRUVBoOhrq7e09NjYGDQxwibmJiIeZBfX/K5f2VRWVnZ2dkJ4t/3T0EQNFBYLFZ+fv6wYcNqa2tHjBgBngfC5/MLCgpkZWX70od8b0CKzMzMertxWLzS0tLMzEx7e3sjI6MBjxsEId944BM5FoNGoaOjU11d3e+mAUEQAq+QgiBIpCtXrkRERFy/fn3NmjU3btxYsmQJjUbj8/nHjh0LDg6+c+fOvn37cI8Wgr4TlZWVixYtWrx48bJly8aMGbNs2TLsw5g+6/Hjx/v27aPT6dgXW1paAgMDU1JSBjqyfdL32shgMJ49ewaeKd7V1bV9+/aXL1/u2rXrl19+4XK5bW1tK1euPH/+/J49ex4+fAgOXllZ+erVK/DxoqKi4ODg27dv405x6dKlNWvW5OXlbdiwoba2to8RFh/m1q1bGzZsEP/4c5FhPlsW8fHxoaGh8DlWEDTI0LZZVVW1Y8eOhw8fBgQE5Ofng3e7u7u3b98eFxc3tJHsH5CioqKifny2paXF398/MjKyrKxswCMGQcDXDHyvXr3y8fEBj+gVSeS8qKysLCAg4NGjR/1uGhAEAfAKKQiC8Nrb2y9fvuzv719TU4MgyIQJE86dO/fmzRsFBYWnT59OmzZt9uzZ69evLy4uxm3gDX0nqFTq4cOHZ82adfr06d9//72mpqa7uzs8PJzD4axfv97R0fHOnTtnz56VlZXdtGmTvr5+REREVlbWnDlzfH19tbW1bW1tnz9/npmZyWAw2tvbQ0JC0tLSbt68yWAwDAwMLl++nJaWZmpqGhoaKn4f7n7g8/knTpx4+/atQCBAEMTW1tbb27vvtbG6unrTpk0nT54cNWpUZmZmcXHxjh07WCxWbGxsVVVVdXV1bW3tb7/9lpeXd+7cualTp0pJST169OjWrVtXr16lUqk3b97U1NRcsGDBtWvXsKcA2xiDa82SkpJWrFghJglo8+FwOIcPH05NTR09evTGjRtZLNaBAwdKSkocHR03btwIAtPp9OPHj6Nh3r59m5OTs27dusTExMbGRhCmtrZ29+7d6AevX78OykJXV/fy5ctowdHp9PDw8I8fP4JnBqHxefbs2V9//cXhcJYuXbpw4UJQ9BISEkFBQVOmTBnY4oOgfwo+n4/tBm1sbJ49exYTE8Pn89esWTNu3Ljo6Ggymfz+/XtVVdU5c+YkJSWtWrWKSqVGRUVNnTr12bNnaNNLSUlJS0trbm6mUCigbW7ZssXR0VFOTq6np+f06dOHDh3y8vLy9PQEp87NzUV74zFjxgxIcuh0elRUFNqTMBiM8PDwkpISDw+P5cuXp6Wlpaens9lsGo22YsWK9PR0JyenqVOnxsXFSUhI2NraRkZGgvhoamqeOHGCx+PJy8ubmJhcvHgR9BVmZmaOjo6KiopicmnLli3oczDQYKtWrSopKQHdF7hMFYIGUFtbG3bg4/F4V69evXz5somJycaNG1+/fv3hw4fGxkYOhzNp0qQ7d+6MHj16w4YNLS0t6HAcGBj4999/P3z4MD4+fsWKFVFRUaBpe3l5/f333ywWq7a2dvLkyba2tnw+Pyoq6v79+6qqqps3bwaXYklLSzs6OnZ3d4eEhLS1tSEIYmdnt2zZMuy06ouuUoeg/yB4hRQEQXifPn2qr68fMWIE+NPY2NjKyiopKSknJ6eurs7NzU1PT09CQiIzM3No4wn1hsPhHDx4cO7cufv27bOysqJQKBs2bCASiTo6OiEhISkpKaGhoQ4ODioqKidOnDh06NC9e/dcXV3DwsJSUlIKCwuTkpJyc3OPHz+uq6vb1ta2adMmJSUlKpVqbm7+9u3bCxcueHl58Xi89PT0bxF5JSUl7f9RUVEpKyvrS2189+7dkSNHgoODy8vLN2/evH///vT0dCUlJU1NzSlTpnA4nFevXj19+lRbW9vGxmbkyJEfP37MyclZvXr18ePHs7KyfHx87t69m5qaamdnZ2lpiTsFmHdKSUlZWlo+ffqUy+WKiT/afE6ePHnp0qVFixZlZ2c/ePAAXIe1aNGiK1eupKWlgcDnzp3DhikoKEhOTuZwOBkZGU+fPgXrShkZGdgPamtrU6lUMzOz06dPYwsuJibm2rVrLi4uNBoNXZBisVgpKSkODg4WFhZhYWE5OTn79u0bOXKkvb39w4cPmUzmtyhBCPr+ZWVlod1gbGzs+/fv165da2RkZGRktGbNmuzs7JSUlAsXLtjb29+4cePDhw/Pnj1LSkpKS0tLTEy8efMmtunl5eVFRUVxOBxjY2PQT3I4nISEhJaWFgaDQSKRLC0tt27dCkZMNpuN7Y3FXJTxRbC9ze3bt0NCQkpKSmbNmhUZGXnmzJmCgoJjx46pqak1NDScOHGira3t77//Li8vP3HiBJfLDQ4ORuNTWFgYFxeXkZEhKyv7559/on1FTU1NQkJCenq6mFxCLzvNy8tDgwUFBfH5fFlZWTMzMyUlpQFJLAShcAPfq1evdu7c6ezsnJOTc+DAgczMzFOnTpmYmLx48eLEiRPW1tYxMTG5ubnY4fj9+/c6OjpycnImJiaRkZFo005OTk5OTj5z5oyGhkZ1dXVSUlJpaWl2dvaSJUtqampiY2P5fD6CIHQ6PSEhobOzc8yYMRoaGgkJCWCNDNtFDHUmQdD3Di5IQRCE19jYSCQS0QdFU6lUDw+Pt2/fXrx4UVdX18rKSlpaWkZGpq6ubmjjCfWGSCQaGRnV1dUpKytHRkayWKyKiorGxsaKiora2tq3b99SKBRvb++IiIgjR47k5eVxudysrCyw+RR6EAsLCz8/Py8vr6qqKnV1dXl5eUdHRzs7O1lZ2eDg4NLSUvTH8IH16dOnt/9TUlLS0NDQx9pobGxsbW0tIyNjZWVlYmJSU1OjpKQkISFhZmZmbW19/fr1R48eubq6KikpKSkp9fT0MJnMUaNGGRkZKSgojB49mkqldnR0qKioCJ8CzVV1dfWmpibxNwWA5kOlUrOyshwcHHx9fRMTExcvXmxoaFhfX//rr782NDR0dXUhCCIQCHJzc7Fh0INgL3HS19fHfnD48OHy8vJ2dnZFRUVowWVlZeXn5zs7O/v7+7u7uxMIBPBZCoViZmZ2+/btU6dOsVgsGRkZOzu7iIiICxcuaGhowJ9tof+sjx8/ot3gX3/9VVJSQiaTV65cuWrVKiKRWFBQQCAQpk+f7uXlpa2tTSAQZsyYcffu3evXr48ZM6aiogLXZ9rY2ISFhXl6eoJ+Eu2vFBUVfXx8/P39paSkKisrEQRhMBjY3hi8+JV4PB62t5k0aVJhYaGfn19gYKCTk9PLly8RBDE1NV22bJmTkxObzfbw8Pj06dOFCxdIJJKxsTE2PvX19QoKCrt27QoMDBw9ejSurygrKxOTS+i94bm5udhgAoFAWVnZ0dFRS0vr6xMLQSgej4cb+MA2kXl5eWw2Oycnh8PhWFhYLFmyRE9Pb9q0aTNnzpSWlmaz2djhmM/nm5ubKykp2dnZ5eTkoE07Ly+PSCR6e3vv3r2bSqUiCKKsrKyiorJ///6MjAw2m40dpmVlZZ2dnV++fDlr1qygoKDs7GyR0yoIgkSCk1EIgvDA0At+/AEmTpx4+PDhixcv7t69W0FBgcFgcLlcdM4NfW8kJCQWLlxoZmY2f/78AwcOBAcHy8nJubq6jhgxwsbGxtDQkMPhNDc3l5eXv3v3TkZGxszMbN26dYaGhlOnTn337h04SENDQ0tLS01NDZVKlZKSAmscHA5nzZo1RkZGhw8fPnr0qLOzs5h9u/uBSCQ6OjoqKyuDqZ6hoSGFQkH6UBsVFBTmzJljbm7+5MkTX19fa2vr3NxccNeblJSUp6fnzz//LCcnN336dARBuru7SSSShobG1KlTJSQkmEzmzz//3NXVRaFQwNVPuFOgp+ZwOFQqVXySQfMRCAQqKipgcnzhwgUdHZ0rV65ISUndvXvXx8cHXTBSVlaurKwEYfT19clkMpvNZrPZDQ0NIAcEAkF0dDT2gwCRSFRUVJSSkkILrrGx8ePHj3Q6vbq6Go1MZWXlwYMHN27cSCQSjx49ymazHR0dly5d+uTJk+jo6BkzZqCXnkHQf4qCggLaDWZmZhobG3M4nPr6eh6P193draKigiAIWIUBLW7mzJnx8fEcDicuLu7ChQvS0tJo03v+/DmFQiGTySAk9iwsFotGo5FIpJ6eHvDgBTKZjOuNvz4tBAIB29vIy8vLysqWl5d3dHTU1NSMHj0aQRASiUQikcDFnqNGjdLV1Y2Kivrxxx/19PSw8Rk2bBiZTJaSkmKxWNi+AmxGLi8vLyaX0O/nysrK2GDKyspfn0YIEgZqPnbgk5OTU1ZWDggI+PjxI5FILC8vJxKJoGGCFoogCI/HCwsLw42qCIKQyWTsqDpu3LiXL19SqVR0l/RHjx4lJiaeP38+LCxMuKVv27aNRCLt379fUVERNzoPesZA0D8MvEIKgiA8fX19CoWCvZXAyMjIwcFBUVFx2rRpCIK0tbUxGAxzc/OhiyP0eebm5qGhobdv387Pz1+8ePHvv//u4+PT1NQ0depUR0dHDw+PJUuWEAiElStXZmZmenh4JCcnq6qqoh9vbW319PQ8cOCAr6+vgYGBgoLC1q1bKysrjx075uvrm5WV5e7uPrCrUcC0adNWr169Zs2aNWvWuLm5gTWpPtZGMzOzZ8+eWVtbE4nEkSNHNjc3g11Ix48fr66ubmNjA3Y9q66uBnfzIQji5+cHNpBSUFAwMjIqLy8XPgXA4/FKS0stLS0lJCTExB80n8bGRj8/v+rqaktLy6NHj6qpqY0aNSo5OXnZsmVMJrOlpQVBEAKBsHjxYjSMqqqqnZ1ddXX1+PHjc3Nz0QNaWVlhPygnJ6egoLBjxw4XFxe04NTV1X18fD59+mRjY5OdnY1+VklJydDQcNu2bdHR0Ww2m8vlvnr1avHixSdPnhwzZoyOjs6AFBkE/eOMGzcO7QYFAsGUKVNcXFxmz549b948Dw+PsWPH4sJbWlra2dmBrZRWrFgh3GeCCzlBP/np0yfwIolEOnjwoKenp729vb29PYIgCgoK2N5YXl7+69NCJBKxvY2pqen69eujoqIsLS05HE5gYCAuvKys7Ny5c6WkpGbNmmVgYICNj4yMDPh+Li0tje0rNDQ0EAQZOXKk+FwCnJ2dscEcHBy+Po0QJIxIJOIGvsmTJxsaGi5atGjPnj1ycnIin7hHIBBww7G2tnZ1dfW2bdt8fHzQpg3WW7ELT4aGhmw2e8GCBQUFBS0tLdgH+xQUFNy9e/f169dmZmbTp08X2UVAENQrwffnp59+0tPTG+pY/B8VFRUrV64c6lhAvXJ1dR3qKAyS48eP37x581ufhcvlBgUFHTlypLcAycnJnp6eLS0t3zomAoFgxowZg3CW78G2bdvevXv37Y7f3NxcV1cH/s/j8Wpqapqbm8GfTCazsrIS7AkKHDlyZMqUKdXV1a2treAVBoNRU1PD4/E4HE5ZWVlbW9uAxCojI2P79u1iAvS7NtJotOnTpwtnKY/H27Jly+7du3k8Hu6tmzdvzp8/n06nizxRfX39jBkznj9/jn1ReHTARrirq6u8vBxc2y8QCBoaGtD/o3Bh2trahPMW90G0LHAF19XVhZYXCr1UAX2ltrYWfBwbbHD6FggaHH2ZFeC6QYFA0NjYCC5O/CzhPhNA2yb6CpfLbWxsxDU3bG8s3ty5c5lMZl9C4noSBoNBo9F6enr68tne4iOyr+hjLvU9M7GSkpLCw8O/9FP/Sn/88ceLFy+GOhbfnR9//LGyshL7Cm7g43K51dXVnZ2d4o+DG1XBJeGC3ps20NnZKTzIiiTyOM+fP9+7d29fPg5BA8vOzs7Hx2eoY9EreMseBEF4JBJp1apV169fZzKZ4PliWHw+v7S0NDAwEF6H/88Cfu4DiEQi9oFHVCpVT08PG1hTU3PEiBEKCgqysrLgFRkZGVAZJCUlB+Q2kz7qd23U1dX18fEpLi4Gd6yg2tvbiUSir6+v8G+n06dPz8rKotFoIh8fWVZW5uzs7OTk9EURNjAwQN8SuesWhULBhgH39eDgPoiWBa7gKBQKuMMRS1JSElzdgII7uUAQItQNIgiipqbWx88K95kA2jZRJBJJ+LDY3nig4HoS4ZiI0Vt8RPYVfcylvmcmBH0N3MBHIpG0tbU/+yncqIr+2VvTBvq+VYX440AQhAUXpCAIEsHKygrdyxmHSCQGBQUNcnygQbZkyZIlS5YMdSz+n37XRl9fX+EXlZWV9+/fLzK8rKzsnj17ejva2LFje7tFBUdMhCEIgiAIgiAIAuAeUhAEQRAEQRAEQRAEQdCggldIQRAE/ec0NTU1NTXR6XRdXV1w00pxcXFXVxeCIHJycj09PRoaGiLvHYMGTVlZ2Zs3bxQUFCZOnAhunGxsbExLSyOTyRMnTlRUVKyvry8uLkYQhEwm6+np6erqgidMd3d3E4lEZWVlc3Nz8AAsCIK+qbq6uoaGBisrKxKJhCAIi8XKz883MzPDPqPzXwMkVlFRsbOz09LS8r+QZOgfpLKyEtRMcFd+e3v78+fPVVVVnZ2d+33M0tJSSUnJmpoafX39YcOGNTU1ffz4UU9Pr7a2ViAQUKlUcLqmpqZPnz6pq6sTiUTs/bMQBIkHp6oQBEH/LV1dXdu3b3d0dLx+/bqOjk5MTAydTl+5cqWdnV1BQcGoUaM0NDTq6+v3798PvmlAg+/Jkye+vr6qqqrNzc0jR468ePFiQUGBv78/iUTq6upSU1O7cuXK48ePg4OD1dTUeDweg8E4ePDgxIkTFy1axOVyKRRKS0vLzJkzY2Nj0V3AIAj6Rh4/fnznzp0DBw7s27fPy8tLT09vx44dv//++2e3nPsHefXqVXR09OHDh0FiR44c+eLFi1u3boFddcrKygICAqKjoydNmjTUMYX+0+Lj41+9enXt2jUZGRk+nx8WFnb+/PnVq1f3e0GqqKho06ZN+/btO3r0aENDQ1xc3ObNm9vb27dv37569epJkyalp6cnJibq6ekdO3YsKSnpt99+i46OPn78OG6LOgiCegMXpCAIgv5bMjMzi4uLd+zYwWKxYmNjq6qqqqura2trt27dWlhYiCCIi4tLUFBQcXGxyL29oX6orKyMjY2VkZHJyspauHDh3Llzb926dfnyZRMTk40bN7LZ7BMnTvB4PEVFxY0bN0pKSr59+1ZLS+vGjRstLS3R0dEVFRVhYWEODg4nT55sbm7evXt3ZWUlgiDm5ub37t1TVVX19vZ+8ODBuHHjqFTq4cOHZ82adfr06d9//72mpsbc3HyoUw9B3y8+n5+QkHD27FkJCYmgoKCJEyfeuHEDbZtUKjUqKio1NXX06NHr1q27ePGiqanp5MmTIyIinJ2dMzMzWSxWbW3t5MmTbW1tExMTb968yWAwtmzZ4ujoKCcnd/XqVeyhIiIi0tLSTE1NQ0NDdXV1v12i6HQ6Gu2NGzdKS0vHxcUlJSUZGxtv3LgRQZDY2FhFRcX09HQ3Nzc5ObmampqgoKDs7Oz79+9Pnz49Li6Ow+GsX7/e1tY2KiqKxWKVl5d3dnampqbGx8fb2dnZ2try+fyWlpaQkBAejweOiSAIj8fDJhn3OAUI+nba2trCw8M/fvwIHmwHXszKykpMTARPYqmqqgoPDy8pKfHw8Fi+fPnTp0/T0tKam5sdHBwqKyslJSVzcnLmzJnz9u3brq6uHTt2oJc43bx5U1NT08LCYtu2bQsXLvTy8qqvrz9//jz4scfOzu7x48fgcuanT59OmzbN2dk5JiYmKSlpxYoVQ5UbEPTPAveQgiAI+m95/fq1kpKSpqbmlClTOBzOq1evnj59qq2tje7DraOjIyEhkZmZObTx/DdpbW09c+ZMRUUFmNTGxcXt3LnT2dk5Jyfn4MGD4EfXjIwMHR0dcJOdm5sbk8kcOXLkxo0bp06dqqKiUl5ePnbsWBkZGX19/TNnzkydOhVBEBqN9uOPP86ePTs1NXXChAlkMpnD4Rw8eHDu3Ln79u2zsrLS1NQc6qRD0Hetrq5u3759I0eOtLe3f/jw4aNHj7Bt88SJE5cuXVq0aFF2dnZycnJKSsqHDx9YLNa9e/eKioqSk5PPnDmjoaFRXV2dlJSkpqZGpVLNzc05HE5CQgLuUCkpKRcuXPDy8uLxeOnp6d80USdPnkSj/eDBg7Nnzx49enT27NnFxcU///xzTU3N6dOnS0pKjIyMDh06xGKxTp8+XVRUdObMmdLS0h07dhCJRB0dnZCQkKqqKpDGYcOG6enpycnJmZmZFRUVJSUlcbncuro6KyurlpaWTZs2MZlMBEHy8vKwSebz+d80mRCEiomJuXbtmouLC41GQxekVFVVNTQ0NDQ0NDU1Q0JCSkpKZs2aFRkZeebMmby8vKioKA6HQyAQ4uLimEwmkUjcunWrgYHB69evr127Bo7AZDJTU1Pt7OzIZLK1tfWqVauys7O9vb3HjRsHAujo6FhZWSUlJeXk5NTV1bm5uYE7+J4+fcrlcocmLyDonwYuSEEQBP2H8Pn86upqJSUlCQkJMzMza2vr69evP3r0yNXVVUlJCYSRlpaWkZGpq6sb2qj+y8jLyy9btszf319aWvrdu3d0Oj0vL4/NZufk5LBYLAUFhV27di1btgxse2FgYJCYmHjhwgUjI6NNmzalp6eTyWTwla+rq+vZs2dNTU3I/x4snZeXt3jx4rVr1yIIQiQSjYyM6urqlJWVIyMj4X4uECSeoqKinZ1dRETEhQsXNDQ0Pn78iLbN7OzsjIwMBwcHX1/fxMTEhQsXIggi+B8EQYhEore39+7du6lUKoIgpqam8vLy4NooBEEqKyuxzVxHR0dWVjY4OLi0tBT3yPmBxePxsrKysNFOS0tzdnZevny5n59fQUFBa2urnJzc4sWL3d3dyWSyubm5mpra5cuXMzIyxo4dS6PRGhsbKyoqamtraTQaSOPvv/8+atQoJSUlJycn0EchCGJpaenn5+fl5VVdXd3R0SGcZDqd/u2SCUEoHo+Xn5/v7Ozs7+/v7u5OIBDA67q6uoaGhgYGBsOGDSssLPTz8wsMDHRycnr58iWCIDY2NmFhYWZmZoqKil5eXo6Ojubm5t7e3gYGBgwGAxyBTqd3dHSoqKggCMJgMF6/fs3j8d68edPe3g4CSElJeXh4vH379uLFi7q6ulZWVkQiUV1dvampic1mD0FeQNA/ELxlD4Ig6L9FVla2oaEBQRApKSlPT8+ff/5ZTk5u+vTpaAA+n8/lcsF3KmigsNlsGo0mJSXV3d2trKysrKwcEBDw8eNHMpksLS1NJpOlpKRASD6fv2PHjpycnCtXrqipqT158oTP5zs5OV2/fn3cuHGfPn365Zdfjhw5giCIqqrqL7/8Mnbs2NDQ0P+PvbOMi6oJG/7Zs8sukksKgiCgICUqCCphg6LYgkGYmCgGCthiISoIt92Kt1iomBiISiigSEh37tKxsMHG+2Ge57z7LHEjDc7/Az/2nIlr6ppz5sx1zcSJE/X19YWEhJYsWaKpqblw4cKTJ0/6+vpmZWVJSkqqqKj8p4QPHz68fPly99YCZABRW1vbZ1c8f//+3c6QjY2NxsbGy5cvDwsLO3/+/Pr167GxiaLor1+/wBIVWK5CUbS+vr6urg6svyAIIiIigi3Q4HA47E0Y3OIf5ng8fuPGjerq6qdPn/b39zc1NSUSiV1bakwMGRmZ9PR0IPbQoUMVFBQSExPr6upycnIkJCQGDRqEoigej+dwODgcTlJS0sbG5ujRozo6OiYmJuLi4paWltra2gYGBsBqCZSRv2iAsrKyioqK4uJiUVFREonUvMgdc2AXGRn59u3bTldDR+ByuTQaTUJColdyFyA7OzskJAT7UNRHYDKZXC530KBBvSXA79+/N2zYIDCjgT4PhmpRUVHzWCIiImJiYrm5ubW1tcXFxYaGhgiCkEgksCUZh8OBUYyiKDacAUQikUQigb1O9+7di46O9vHxCQgIuHjx4qxZs0AYCwuL06dP//vvvwcPHgQqkclkioiItDjAf/z4MXPmzC6pCgik/YBji/oscEEKAoFA/iJQFNXT0/v+/Xt9fT2ZTDYzM5OXl9fU1OR3F1VdXU2j0aDvoa6Fx+MdPXq0oqJi6tSpa9eu/f37t62tLYlE8vX1xePx/K+yKIquX7/eyclp2LBhOBxu5syZ06ZNmzp1qqen59y5c0kk0oYNG2xsbAIDA0H4xYsXh4WFeXt7nzp1ClzR0tLas2fPnj17Jk+efPv2bTMzs7179/6nhLa2tgsWLOim4kMGHjNnzuythYP/xMrKqp0hBw0aFB0dvW/fPhRFp02btnDhwvDwcGxsrlq1ytHRUVdXV0xM7ObNmxMnTjx9+vTbt2+xvQ/8yzRiYmKSkpLu7u5Hjx5FEMTQ0DA+Ph5LikQiXbhwoaysjMPhHDp0qJtWoxAEQVHUyckJE/v27durV69etWqVjo6OkJDQ6dOnpaWlBaJYWVmdP3/eyspq7NixS5cu9fLyQlF06dKl4LMEKKOSklJRUdHu3buNjIxArPr6ehsbm8rKykOHDoF1E4Eid+xYDFNTU1dX187UQIdpaGhwcHAIDg7uldwFOHbsmIWFhbm5eW8L8n8IDg6uqKhwdnbuLQGcnZ1lZWUFLqIoam9vb29vb2BgICMj09xWffDgwS4uLu7u7r6+vhoaGmvXrn3+/DmI2HZ2kpKS6urqubm5SUlJZ8+edXR0dHFxYbPZAQEBSkpKIIy6uvq4ceM+f/48ffp0BEE4HE5WVpaurq6QkFDzBA0NDT09PTtWdgikw4BF2L4Lr++xbds2FRWV3pbi/5CXl+fs7NzbUkBaxdLSsrdF6CEuXboUHBzc21L0KFZWVr0tQg/h4eERFxfXAxkVFBTMmDGjjbzevn07e/bsysrKHhAmNjbW09OzBzLqJto5O/z8+VNXV/fz589UKpXD4fB4PDabXVRUVFdX11oUNpudl5dXWlraGfE4HM7Vq1fv3bv3nyH/Qt0C6SR9WTn/6VNBSUlJcXFxi2OTwWDk5ubS6XQej8fhcCgUCoPBaC0dGo2GpdM8KSaTmZOTU11d3X7B5s+f39DQ8EdlaS42kKSgoKC+vr49cSsqKlrUPFQqVWBeaGhoECjOf2q2tnnz5o2vr2/H4nYeGo22YMGC3spdgKNHj3758qW3pRDkyZMnly9f7kUB1q1bl5+f3+ItBoNRVVXVRlwajVZQUNDU1PRHOQYHBy9cuLCdY4fH41EoFCsrq8+fPze/9fnz52PHjv1R7hBIlzB27Fh7e/velqJV4A4pCAQC+bsYOnSovb19enp6ix9MuFxuVlbW2rVrm39Fh3QYERERfX19KSkpzHcMHo/Hvq+2CB6PV1VV7WS+PB5PR0fHwMCgk+n0DBQKpbCwcNSoUSQSKS0tjUAgDB8+vD0RaTRaamqqtrZ2x0yEEATJysr6+fOnkZGRuro6k8n89evX0KFDwaHd6enpLBZLV1e3xW/ppaWlVCpVX1+/PZtBkpOTKyoqUBQVFhbW0tKSlJRsMXpDQ0NKSoqmpia/QRyXy/3Pj/m9C4fDSUpKwlyrEIlEfX39dlr+/lE1dgeKiorY/wJjk0QiYedtoSja9slxoqKioqKirSUFTvvqKpnbhl9sIEn7z/UDHnOa09z1lYiICPCfxZ9R25qtC2lsbExKSlJXV5eTkysvLy8oKNDX1+/yrWepqaksFktPT++POieXy42JiaHT6ebm5iiKgtMV+buZAMDVfXV19aRJkzppCdthRdp5ysrKsrOz9fT0/tTkPz8//9evX2ZmZsDalEajdWBDB4lEAqajrSEwPNvJjBkz4uPjCwoK2nnucE5OjqmpqYmJyZ9m1OXU1tZ++fKlsbFx/PjxqqqqJSUlZWVlf6pmW5yPMLhcbkpKipiYGKZt8vPz6+rq1NTUUlNTW4vVnPLy8rq6OlFR0U523Zqams+fP8vKypqamjYX9ffv3+Li4vyK8U+hUql0Or0DKYBqae1BAgIrBQKBQP46HB0dly9f3uItFEU3b948f/78npVogKOlpXX//n3sHMMeA4/HT5w4sQOP4L1CSEjI1KlTg4KCOByOt7e3r69vO0/pSk1NXbVqVfvdBglQWVm5cuXKc+fO5eTkIAjCYrEOHDiwf/9+NptdXV3t7OyMWUdiREdH29vbUyiUjx8/Hj9+vD3Om1ks1t69e+fPn+/k5GRtbW1sbJyYmNhi9KysLCcnp1+/foGfXC7X19f3yJEjffzMsvr6+qNHjzo6OlpZWS1dutTFxSUrK0sgDFZvAtefPn26detWzDETBNIe8vPzFy1atHPnzsbGxk+fPm3YsKGioqJrsygtLbW3t587d25qauofRfzy5Yu7u/uxY8cePHiQnJx86dIl4K6oNb5+/bp8+fInT57U1dV1TuSOK9JOwuVyjx8/Pnny5Hv37v1RxMrKyk2bNgUGBu7Zs6empsbHx6dPucMXExM7cuRIO1ejEASZMGHC/v37214a6wGoVOqCBQu2bdt25MgRc3PzyMjIx48fd0DNCsxHArBYLE9Pzxs3bmBX7ty5s2fPnszMzL1796alpbUnCwaD4enpGR0d3cmuy+Vyz5w54+rqGhER0WIu7u7uN27c6MxwKCgo2Lp1a0lJyZ9GBNUC/dy3BtwhBYFAIBAIpE9Ap9PPnDljZmYGfubn51+/fn3VqlUMBuP+/fvW1tZv3rwhEokJCQnz5s2LiYlhMBjAPVZTU9PNmzd9fHzs7OwWLVr0+/dvX19fJpPp4uKioKBw5coVDodDJpN37twJNlCEh4dfvnyZy+WuX78+IyMjIyPD2NgYbIkSFxe3tra+evVqYWFhUVFRSUnJrFmziouLfX19MzIyrK2tFy1adPHixXfv3t25c2fs2LFjxoz5+vVrfHw88Fvv4uKipaXl6+ubnZ1taGiIw+E2b94MMsXhcCtWrAgICMjMzJw9e3ZcXJyamtqYMWNQFA0KCnr8+LGhoWFjY6OpqSmXyw0ODj537tysWbMMDQ2vXr1KIBBMTEzi4uLAVos9e/a0f8NLz0Amkx8/fpyTkzN79uxDhw7Z2dkhCFJYWNhivRkaGl68eJHJZC5fvhyExGAymVeuXHn9+rWsrKybm5uampqfn59AqQXCjBo1qnfKDOkDPHv2bM6cOdhPbGhv3Lhx8uTJnUw8MjISLHK9fv1aT08vNTXVx8entLR01qxZ69evB4sOxcXFJ0+eBDpk586dZDIZQZCKigplZWV5efmSkpKUlJQZM2bIycnxp8w/NBYsWHD79m06na6oqAiidxIBRcpgMG7duvXmzRsNDY2dO3d2k+ooLCz8/Pmzurr606dPly1bVlJS0s66otFobDZ7xowZoaGhYWFheDx+/Pjx3SHhX0VeXh7oYxYWFkePHgW+3uvq6g4ePFhWVrZjxw5lZWX+tqipqcEmSisrq3/++QdMoIMGDeKfj1avXv3161dsiGEtVV1d7evrm5mZyWQyeTyemJiYsbExnU4/cOAAmUyOioqaOXOmg4PD06dPsZlu3bp1wDn9z58/09PT9+7d++7dO4Gui/zXiOa/Ky4u/vLlS/6NqPwD1sHBAUGQtLQ0JycnOTk5Dw+P379/g2IuX758/vz558+fb2xsLCkp2bx585MnT+Lj4+fNm+fo6JiZmcmfCIFAePPmzZo1axAEYTKZ58+fHzFixOTJk/38/MzMzH79+kUgEH78+CErK7t7924hISH+agHrrVjK79+/j4iIqKioWLBgwV/u6h7ukIJAIBAIpGtIT08vLi4G/1Op1OTkZCaTiSAIk8ksLi4uKCigUCgsFqu0tLSgoKCgoAB4rsnLyxNIJysrKy0t7du3bw0NDSB6bGxsZmZmTExMUVFRTExMVVVVUlJSampqSkoKOACIn9TU1ISEBA6H0+0F7mpGjBjBZrP9/f1Boaqqqp49e0alUktKSp49e5aXl3fjxo2GhgYURd3d3YcNG/bt27dHjx4hCEKj0fB4vK6urru7e1hY2NatW1EUVVZW3rFjR2pq6o0bN2JjY5WVlcEmheTk5E2bNqmrq6urq2/evJnL5YqJiWlqamIHWk2ZMoXJZEZHR3/69ElJSWn48OE7duzIyMiwsbE5d+7cw4cPlZWVxcXFNTU109LS3rx5k5ycfOHCBTk5OSqVeu7cuYsXLz558gR86Q0NDW1qagLJ8ni89+/fL168eOXKlQiC6Ovrp6amvnnzJjo6eu/evQYGBrm5uTdv3qytrW1oaGCxWFpaWmfPnm1oaJCWllZSUsrJybl3756dnR2w7umVBvojGhoaWqw3VVXVjx8/jhs3TkdH58yZMwIbpoDxzrJly4qLi69evfr+/fvmpRYI08kNIOXl5dnZ2aWlpb9+/Wp71LQdpr6+PjY2tqysLDY2tr/s9uJyucnJyUAFcblc/p/tISsrq7KysvvE+08kJCTGjBlz+vRpcHRsWloaNrQ3btyYlJTUmcSZTObTp0+nTp26fPnykJCQ8vLyc+fOlZaW2tnZ/fr1Kzc3FwSLjo7mcDi2trYPHjzAtmYYGxuz2ey0tLShQ4dmZ2fPnj2bP2WBofHo0aNhw4aJiorq6Oh0icmhgCK9ffu2v7//3Llz09PTt2/fDqaVLic8PJzH43l6emZlZf348aP9daWgoDBx4sTAwMCpU6e+fPnS1tYWO3MW0mFGjhxpbGxsZ2dnYWEhKioKHK5TKBQNDY3a2lqwys/fFuXl5WCiJJPJO3bswCbQiooK/vno3bt3/EMsOTkZZHf58uVHjx5NmzatoKCAx+NVV1c/e/YsOzv75s2bGRkZ6urqPj4+L1684J/pMNXx7ds3KSkp4IpeoOvyT9bNR7TA3YqKisGDBw8ePBgsSHG5XP5OmJeXx+PxCgoKJk6c+Pz585CQkPfv32PTUGFh4du3b2/duiUvL3/37t1Xr15ZWlqeOXMmNDSUP5HS0lJdXd1Pnz4B8dhs9vv37xMTExsbG1+9epWeng4mLCMjoydPnrx7946/Wrhc7j///IOl/P79++Tk5ICAACaT2bYl+N8AXJCCQCAQCKQLiI2NnTt37sOHDxEEefjw4ejRo01NTW1tbSsrK588eaKurq6qqmphYfH9+3cLCwtVVVVVVdWxY8d++PBBYAd4Wlqaq6trSkrKsmXLXr16hSBITEzM0qVLP3786ODg8PLlSwcHh8jISDc3t8uXLx8+fPjdu3f8YnTYxqQvICsru3PnzqdPn8bFxYErPB4PQRAulwv+IZPJdnZ2xsbGWlpaK1asGDZsGI1GA9ft7e1XrlwpLCyclJSUl5dXVlaWl5dXUlJCoVAkJSUPHDjg4OAA3DckJSURCARnZ+f169ejKMrj8aSlpY2NjTEPL5qamqNGjXr8+PGHDx8sLS2bmppSU1OdnJzWrl1rYmISExOjpaUlJSVlYmKC+YMYMWKEg4ODiYlJQ0NDcnKysbExMM0TcBghLy9PIpHy8/N9fHzGjRsHLhYWFoqIiDg6Ojo4OACPG2JiYra2tlZWViiKSkpKKigoaGpqTp48WUxMzNXVNSsrq7k3nz5IWVlZi/VmamqqpaX1/Pnz69evNzY2CqyoysjIyMjInDhxIjY2lk6na2pqNi+1QBjQNzoGZi3SHuvLtk0Lk5KSVq1aFRkZ2X5blV6HzWb7+fk9fvwYmIWyWCw/P792HjMHNFV1dXV3C9kGeDze2dmZzWbfvHmTx+MBvzPY0MbeljtGRkZGVFQUg8EoLy9PT0//9u2bmZlZXFzc3r17CQQCZgqtpqZGoVAOHTpEpVKxs9VVVFSCgoJevHiRlJRkbGy8Z88eMzOzJ0+egLsCQyM2Nnb06NFkMtnCwqJLTL34FSmXy42MjDQ1NV29erWTk1NKSkpZWVnnsxCgsbHx2bNnOBwuPT29qanp2bNnEydObGddkUikgwcPfvnyRUNDA0XRnz9/Tpw4cffu3V0u5F+FsLDw8ePHwZmhd+7cOXnyJJfL1dDQWLFihZGRUWNjo4qKikBbgIly0qRJ+fn52ARaWlrKPx8lJyfzDzFgKQ/cM5mamq5cuXLWrFn8Z4+Ki4svXbp01qxZBAIhNzdXYKYDcYuKiqSkpMChhALPAAKTtcCIFrhbUVGhpqY2bNiwsWPHIgiCoqjAgMXhcNOmTVu8eLGioiKTydTU1OSfhlAUXbFihYeHR3p6OpvNjo+PB17q+BMRFxeXl5cvLy/nN77DPHMjCILD4WbMmGFnZ6ekpFRXV8dfLQiCJCYmYiknJCQgCGJgYHDmzJkxY8Z0b2/o88AFKQgEAoFAOsuHDx+WLFkCvtKzWKwHDx44Ojp++fIlLS3ty5cv6enps2fPTk5Ofvfu3bhx496/f//7928nJ6fFixfb2NiAHeBYUsHBwQoKCtOmTdPR0Xn79i2LxQoLC1NUVNTS0hLIlEQimZub3717F3uyR/6vjQmCIKmpqatXr541a5a/vz/YroUgSHFxsYuLi5WV1f79+zEv1H0BHA43a9asKVOmZGRk8Hg8FEU5HE5jY2N5eTmLxQIBwBIPiqL8az2NjY0FBQXl5eVNTU0yMjLi4uKWlpbOzs7Ozs5DhgwhEAj8n9ylpaWZTCaFQikpKWGxWM399wsLC8+ePfvjx485OTkzZswQERERExPLzc2tra0tLi5WVFTkf+AG4PF4PB4PRJKXl8/LyysqKvr9+zf/5h0cDmdgYHDt2jUrK6vDhw8Dl1UIgpDJ5MbGxpycnN+/f4PNC1gxQUZg1YzJZG7cuPH58+dEItHf3x9USF+mtXorKiry9vZes2aNj49P89fvN2/evHz5MjAw0MbGBofDtVhqgTCdERJYi5iZmSkpKQHryyNHjnh4eKxYseLbt29cLvfZs2cLFixwcHAA7w8IgoSFhZ06daqxsfHhw4f//PNPU1PT/fv3Fy1adOfOnaamJhEREWNjYxEREV9f34CAgJUrV+7atausrCwxMXHVqlU7duw4ePDg+/fvOyMzhsDoTkpKWr16dYuSh4aG8suck5Pj6em5Z8+eU6dOaWtroyh69erV4ODgyMhIfX19NTU1gaSCg4PnzZu3ePHiT58+YbkDTaWoqBgQEACMWRITE+vr6728vKysrLZs2VJYWAhCMplM/jBdUnYMZWVlV1dXcPgAmUwWGNp/tOFLAKB+mUxmbW2thITEo0ePiETi1atXT58+HRYWBpQ2h8M5c+aMsLDwixcvhg4dKtAbU1JSMjMzdXR0KisrFyxYAHQy0tLQ6FwdCMKvSBEEUVBQAEcf5uTkSEhI4HC4Lt/El5yc/PPnT1lZ2fT09KFDh75//76hoeGP6qqhoeHRo0dz5sz5/v37qlWrfvz40YXi/YWEhoZaWFhUV1dv3rxZR0cHPJyASQqHw/F4PD8/P4G2ABPloEGD+CdQJSUl/vlIQkKCf4jJysqC6zIyMqWlpfX19cA2EANFUTwej8PhQFyBmQ4gJiaG7SMWeAYQmKzFxMT4u67AXSAMBpvNFhUVxToh+HQHHLrjcLjKysrm05CIiAiRSCSTyZqamlu2bFm7di3YX8bfk5lMJgiG/O9MXV9fX1dXh0kFNmKDSuavFhwOJykpiaU8depUBEFIJFLb3uX+EuCCFAQCgUAgnUVOTu7SpUvguxwejyeTyT9//gwNDa2srCwoKEhNTQ0NDTU2Nj5z5gyHwxk2bFhZWVlmZqarqyuZTObfAd7Q0PD169exY8dKSkpaW1t///49JSUlPDx8xowZEhISzfPV09PLzMzE7AQ7Y2PSRxAWFt61axfYcj906FBVVdXly5efO3eu7YOB8Hi8t7f37NmzjYyM5syZs3TpUi8vL3t7+/LycvBdlP/lx9TUdNq0aXPnzl2wYIG1tTW2U4kfMzMzeXl5AwMDHR2dwYMHu7i4BAQE6OrqMpnMtWvXKikpFRUV7d69G3uMxsDhcE5OTo2NjRYWFgUFBeDpnz/AoEGD3N3dWSyWr68vuGJsbDxjxozFixffu3cPfCUWSFBDQ+PevXuvXr26cOGCo6NjfHz8rFmzuvw0sS6ntXo7e/asioqKh4fH+fPn6XQ62OOGoaGhQafTFy1alJKSUllZicPhmpdaIExzq9X2g1mLAPNJAevLuLi4PXv2jBs3TkZG5urVq6C509LS3r59CwxpP3369P37d2CHwuFwGhoa6urqnj17VlJSwm+78ezZs507d9JoNBUVlYsXL3bYAT8/AgYp8fHx/Jaq79+/55c8ISGBX2YqlQrMcxQVFcPDw/Pz84FZqJyc3MePH6OioviTSkhIOH78uJ6enpGR0bt378CbJKapiouLe9jEsjmLFi2ytrbG4XDjxo0TGNoCHpfbT1VV1YsXL5YvX/748eNHjx65u7t/+/YtPT198+bNe/bsERERAd5zcDjc6NGj37596+Dg0NDQwG/AyOFwgoKCpk+fPnLkSBqN9vr1a3V1dXCr+dDoknrgB1OkOBxu1apVtbW1Ojo6ly5d2rFjB41GW7VqVWtuqjsAl8t99eqVgoJCYGDgo0ePgCuib9++tb+uEAT5+vUrgiBTpkyRl5d/8uTJn57TBxFgypQp06ZNmz9//uDBg9PT01evXi2wXdfAwECgLcBEqaKiIjCB8scaO3Ys/xCbMGECiGhvb5+dnW1gYNBGvxo7diz/TId9btHT06uoqMB2p/I/AwhM1goKCvxdV+CuwMl6BAKhpqYG64QCE72IiIiamho2DWGfgvB4/Jo1a37+/Gltbf327VsFBQWBRLKysnR1dcFMLSwsPHHixCtXrixZsqS5w3IURfmrBTwbYCljy2fw3D0E4dtm1nfYtm2biopKb0vxf8jLy3N2du5tKSCtYmlp2dsi9BCXLl0KDg7ubSl6FCsrq94WoYfw8PCIi4vrbSl6mtjYWE9Pz96WouPwzw7V1dVTpkw5e/Ysj8dLSUlZvHjxlClTlJSUAgICXrx48enTp8ePH6urq3/+/LmpqWnNmjW7d+/mcDg8Hs/f39/S0rKuro7H45WWlk6YMCEoKIjH4yUnJ2tqau7YsWPkyJFRUVE/f/7U1NS8ePGipqZmSEiIlZXV7t27f/36NWrUqJiYGCBDYmLisGHDli5dumbNGllZ2ZCQkLt378rKyg4ZMmTdunXAuQOPx4uLi1uwYIGysjL47M/rw7qFwWBQKBRQUW3DZrPLysqwkBUVFaWlpW2ELysro1Kp7ZeERqMVFBQ0NTWBn1QqtbKyssWQgYGBmzZtSkxMdHJyWrZsGRalNYCp1+vXr2/cuKGnp5eVlSUQgM1mFxUV0el0JpOZk5NTXV3dfrG7j3Yq5xbrDXzWbq1Z6+rqqqqqsJ8tllogjADtfCrgcDjbt293cnJis9nnz583Nzc/fvy4mZlZWVmZp6fn3Llz79y5o6+vD5yP8Hg8EMbLy2vKlClVVVU7d+5cuHBhYGCggYFBfn7+p0+fRo4c+fDhQ11d3bdv31pbW+/bt6+srMzU1PTo0aO6uroPHz6sqqqaNGmSr69ve8Tj8Xjz589vaGho7S7/6P7w4cOwYcNsbGxsbW1VVVWPHDnCL/nZs2f5ZY6KitLU1Pz06ROdTrexsdm7d++iRYu2bt3a0NBgY2OzYcMG/qQ+ffq0bt06ERERPT09X19fBoPB49NUFRUVbm5uI0eOFBMTW7NmTVJSkqGhobi4+PTp08PCwkDuAmHYbHZrJXrz5k37K6c1/nRoY9BotAULFrQdpqamJicnB1QCBjgMXiAkWP6rr6/n8XjA9x9wbMyfHf/QEODo0aNfvnz54zK0ApvNLigoAMJ0hidPnly+fLmdgdtfVzweLy0tLT8/n8fj0Wi06OjoioqKFtNct24dCNYf+fz587Fjx3oyRyqVmpubK9Dx+O+22Ba8/5pAWxxiDAajDZ3Ma32mKygomDFjRhsPwG2P6LbvttgJAW1MQw0NDfn5+Vi9YYlQKBQrK6vPnz9jITkcDoVCaTF9gEC1CKTcY4wdO9be3r6HM20/cJMYBAKBQCBdTGpq6rRp0/T09FavXi0vLx8YGGhmZqalpQX2y5SWliYmJh44cAB8GePfAU4kEkkkEtjxMXz48NGjR1++fNnU1BQ8vTXPiMVi4fF4ERER8BOzMWGz2WCxac6cOVevXqXT6fv37zcyMnJ2dua3m7C3t++kxVN3QyKR2unvE4/H859jJSMj03Z4gUOv/hNRUVH+b8VteHEaPXr0v//+a2Njo6qqeuzYsf/ckK+qqiolJbVt2zYhISFnZ2dVVVWBAHg8XklJCfyPnR/UX2it3tpoVoHNEfynJrUWpsOIiYkBYxYMfutLSUlJJpNZUVGRm5v78+dPzLCFTqfT6XTwFiQhIUGn08vLy0tKSjCrWABmuwE8mPz+/Xv48OHYfsZOghmkgNE9bNgwYGijra1tYGCgpqbGLzmXy+WXGflf8xwsNWAWionNn5S8vLyxsfHy5cvDwsLOnz9vZWWlra2NaSrMfPLMmTOYiaW6uvrp06f9/f1NTU2JRKJAmC4pfhv86dD+IyQlJTH3NxgtagMikWhkZAT+V1JSwoYwhsDQ6FbweHzPn8vZ/rpCEASzSRcVFYWn7HUVbXsbbONu2xNoi0OMRCK17QGttZlu6NCh9vb26enphoaG7c+unXdb7IQAIpHY2jQkIiICTgAUSCQnJ8fU1NTExAS7haJo248oAtUikDIEABekIBAIBALpYkRERA4dOlRdXW1vbz9z5kwqlbpv3z4Gg7FmzRpDQ8Pfv3+zWCzwUMLhcPh3gEtKSqqrqwPbOhKJNHv27FevXllbW7f2+g28gYLjaTAbE29vb+AUxsfHZ8SIEZcuXQJWhPx2EydPnkxKSmpuNwHpPLq6usAbfTsRFxc/c+bMmTNnuk8kSIsAa5Hv37+35st8/PjxxsbGwDn9rl27wKqxgYHB+fPnzczMJCQk1NXVJ0yYYGBgMHPmTFVV1dYMSyUkJDZv3uzp6fn8+XMul9slizLAIGXfvn1gdAOnuV5eXiiKgj2Sr1+/xiQ3MTE5d+4cJjPyv+Y5IClgFnrlyhU9PT0EQSQlJYHNDkhKXl4+Ojp63759KIpOmzZNWVkZ4dNU06ZNA+aTZDJZXV0dmFiCvYqHDh0SMLEEYdhsdtsWuBAIZODRxkzn6OjY8/J0gAkTJgArRUjXAhekIBAIBALpAshkclhYGPh/5syZ6enpdDodLBW5uLg4ODhgh/uOGzcOc4JQUVGRl5e3fPlysCMDj8fPmTMnMDCQRqOJiYk5OjpiD2pjxoxJT09HEGTDhg0IgtjY2HC5XA8PD3NzcykpKQRBpKWlv3z5gsmzbt26devWIQiydevWqqqqIUOGgM90KIru3r175cqVEhIS8HRtyF/OhAkTrl27lp2dvWnTpk2bNiEI4uHhgSCIl5cXCHD79m0KhUIikcCWgS1btiAIAk4fJ5PJIExQUFB1dTWZTAbrLEuWLEEQxMrKCtz9+vUrjUY7evTo9u3bJ02atHbt2uZ+9DvGqlWrFi5ciI3uMWPGrF+/vqmpCagdAckFZMbOqwoJCUEQhMPhbNmyRUZGxtnZGVznT+r69evAfkdBQUFAU7m6uoKjo4AWQhAkOjq6uLhYSkoKy2vChAkCYSAQCAQCAUA3WhAIBAKBdD2SkpLgXQ5AJpNb3NfdfAf4jBkzdHV1CwoK/jOLmpoaFEUdHR3bdoopKSmppqYmsJdeXl4erkZBehgajfbq1auUlBQEQWpqasLCwgRs3ATIysp6+PAhdhxhd4BZi7QWAEXRIUOGCBiwkMlkbLUFhJGRkWlj14+YmJi+vv69e/dsbW3Hjh1raWnZFbIjSLPRLSMjg6kdAckFZBYAmIXy6wT+pBAEUVRUHDJkCL+qwTSVuLg4/0oTMLEUyEsgTNdSXl6enZ3Nf4XBYKSkpHTG230nae64ncvldubIvw6QlZUlsAGWSqX2mADNB+8fObMvLS399esXh8PpBtEgEEjfAi5IQSAQCATSa0yYMGH//v38q0ViYmJHjhzR0dH5z7jS0tInTpzATm6CQPoyXC7Xx8fn2rVrmzdvzsrKCgoKioiIaH6qIEZlZeXKlSvPnTvXrQtSCII4OjouX768W7NAEGTFihU/f/7Mycm5ceNGO92i9XHar6m6FQaD4enpGR0dzX+xqanp8OHD4KD3bqKysnLt2rXv378XuM7lcn19fY8cOSKw/sJisTp85F8HSEtLc3V1ra6u5r9YUFCwdevWkpKS7s5dYPC2VicIgkRHR9vb21MoFIHrT58+3bp1a21tbXeLCoFAeh24IAWBQCAQCAQC6V54PF5JSYmFhYWIiEhGRkZ4ePiSJUsENveFh4cvW7bMzs4uLCzs0aNHGRkZUlJSQ4YM6S2ZIX2fnz9/pqenm5mZhYeHL1682MbG5v79+6Kioubm5nfv3mUwGN2U7+PHj4ODg4ExI9Zvw8PDk5KSrl69Ghwc/PHjx4CAgFmzZjk4OCQmJnaTGK0RHBysoKCgqKjIL4Ouri6BQHjz5k2XZ8dgMC5cuGBjY+Pq6pqfny8weLE6+fr1a2Fh4Y4dO+bMmXPhwgUqlXrx4sV3797duXPn48ePWPP90V4qCATS34ELUhAIBAKBdA35+fnPnz8HVhLp6ek/fvxoIzCHw/n69WtISAj/R2DMyILJZH7//r01w73k5OTw8PAvX778+PGjtTcuJpMZHh5+//597Hg+JpOZmJgI0kxPT6+pqelIISGQDoHH4xcsWPDixYthw4alpqZqaWlh52oBkpOTN23apK6urq6uvnnzZi6XKyYmpqmp2SWmXkwmMyYmBmzESElJiYuLY7FY9fX1MTEx3bQLo0WrsfLy8qSkpOjoaLBLpby8PCoqikKh9K59WWt04bpA91lffvv2TUpKSkJC4v379+PGjdPR0Tlz5gyFQtHT08vMzOyqMw2bo6SkJCIioqWllZeXh/XbjRs3UqlUaWlpJSUlDofz69evZcuWFRcXX716tScXWRoaGr5+/Tp27Nji4mJ+GYhEoq6u7qdPn7q8s92+fdvf33/u3Lnp6ek7d+4cPHgw/+CVkpICdSIhIbFjx46MjAwbG5tz5849fPhQWVlZXFxcVVX148eP/M3XteJBIJC+DFyQgkAgEAikC6isrNy0aVNgYOCePXtqamp8fHxaO7oL8PXr1+XLlz958qSurg5c4Tey+Pjxo6Wlpaura2NjI7ibn58fHR3N4XBYLNbevXvnz5/v5OQ0Y8aMyZMnFxYWIghCo9HCw8PB23VZWdmSJUuWL19+7NixiRMnPnz4sLCw0NLSctKkSQYGBpcuXXr16tXx48ehhw5IT2JtbR0WFrZ///7v37+PGDFi+vTpc+fOxbz/JCUlEQgEZ2fn9evXoyjK4/GkpaWNjY0VFRU7n3VjY+Pu3bsvXbpUXl6+bt26+fPnp6env3//ftWqVeXl5Z1MvEXrreZWY8C47Pv37/7+/vb29mAh4+DBgwwGo7vty/6UNmysOkD3WV9yuVxw0ihY/nj+/Pn169cbGxuBA/WmpqaqqqquzRFj5MiREhISxsbGeXl5/P22vLxcQUFBU1PT0NBQRkbmxIkTsbGxdDqdx+N1kyTNqa+vr62tlflfMBlwOJy8vHx5eTmdTu/C7DgcTkREhKmp6erVq52cnFJSUhQUFPgHr5KSEqgTCQmJ1NRUJyentWvXmpiYxMTEaGlpSUlJmZqaamlp8TdfF4oHgUD6OPCUPQgEAoFAugAajcZms2fMmBEaGhoWFobH48ePH88fgMFg3Lhx482bNxoaGmvWrLl9+zadTldUVMS8/wIji2HDhrHZ7KdPn8rLyycmJiYnJxsbGyMI8uHDh6dPnz58+JBAIOBwuBUrVgQEBHz//n3lypV5eXlDhw4tKiratWvXtWvXRo8e/eTJk4yMjPfv348YMeL48eO5ubny8vJKSko3b9709fV99+7d3r17t23blp6e3usuYCB/G8+fP9fU1CwtLTUyMsrPz//x44eGhgaCINLS0kwmk0KhgFXXrjqKDiApKamrq5uYmJiZmVlaWsrhcBITEzMyMlRUVKSlpQMCAl6/fi0rK+vm5iYhIXHlyhUOhyMmJiYkJMRisUpKSlavXn337t2MjAxjY+OdO3fGxcVFRUXR6fSCggIXF5eEhITg4GAajUYikW7dulVaWjpr1qz169cDq7GpU6cCZ+HAuGzv3r3GxsZLliyxs7OjUCiBgYHDhg0TCPlH5OfnX716VVRUND4+fsmSJYsWLfr9+7evry+TyXRxcVFQUADFIZPJs2fP9vf3p1KpwL4sJSUFC6akpHT16lUymRwVFTVz5swxY8ZcvXqVQCCYmpqmpaVhlaOrq/vo0aPHjx8bGho2NjauW7eutrYWSwTTePy6bvv27W/evAFV1x3Wl2JiYlQqNT8/39vbe+fOnSiK+vv7IwjCYrHweLyIiEiX5wjA4XA4HA5p1m9lZGTAcuqbN29evnwZGBh45swZELLHIBKJJBKJzWY3l4HJZIqIiBCJxC7MDofDKSgoJCYm1tXV5eTkSEhINK92UCciIiJiYmK5ubm1tbXFxcWGhoZAqqKiIoHmg0Agfw9whxQEAoFAIF2AgoLCxIkTAwMDp06d+vLlS1tbW4F3S36jhv379w8ZMkRUVFRHRwe8G2BGFgQCIScn59u3b7t27VJQUAgJCSktLd2wYcOlS5fi4+Pt7e0/fvzI4/GCg4PHjRu3ZMkSHR0dPT29s2fPurq65ubmurm5HTt2LCEhQV1dXU1NjUgkHjp0aM+ePZMnT/73338JBEJCQsLEiROHDRsmJCT08+fPXqotyF8KhUL58OGDnZ2dmprat2/fiouLlZSUwC1TU9Np06bNnTt3wYIF1tbW48aN68J8URQFm1k+ffo0bNgwCwuLyMjIhISE0aNHl5WV8Zs1UanUGzduxMbGDh48+P3797du3Ro8eHBKSgqHw7G1tX3w4EFERERKSsqFCxfk5OSoVOq5c+cUFBREREQ0NTVv3rxZWlpqZ2f369ev3NxcAasxYFymoKAwatSo9evX//r1a8WKFRMnTkQQpDP2ZVVVVbdu3crLy9PR0fHw8AgLC9u6dSuKosrKyjt27EhNTQXFkZGR8fDwoNFolpaWgYGBP3784A+WkZFx8+bNjIwMdXV1Hx+fxsbGFu3Ovn//vnfvXgMDg9zc3Js3b+bk5PAngllatW3A1YWgKKqnp1dRUSEkJKSmpubh4XH+/Hk6nU6j0cDOKf6DArsWcXFxSUlJd3d3aWlp/n5rZmamoaFx79699PR0Op2+aNGilJSUysrKntz1Iykpqa6unpubq6GhwS8Dk8nMysrS1dVt4zCBDoCi6OrVq2tra3V0dC5durRjxw5ZWVn+ADgcDtTJ27dvXVxcAgICdHV1mUzm2rVrlZSUioqKzp49q6Kiwt98XSgeBALp48AdUhAIBAKBdAEkEungwYMHDx58+/ZtfHz8z58/9+/fb2ZmdurUKeT/GjWIi4sfOXLE2tqaTCZbWFiAI/YwIwsEQT58+AAOMicQCK9fv16xYsXo0aOrq6sbGhoMDQ3l5ORwOJyhoaGjo2NeXt7FixdfvnypoaExatSolJQUfX19TU3N8vJyJpPZ1NSEIEh8fDyJRNLR0cnNzV27dq2Wltb69evxeLyoqGhpaWnvVhrkb0NISGjv3r26urq6urpaWlpEIhHzJCUmJnbhwoXDhw/zeDx5eXkEQeLi4rowa11d3YaGhsePH0+bNm3kyJHnzp1rampycHCQk5MDZk1FRUXq6uo8Hk9SUvLAgQOGhoaPHz9esWLFwYMH4+PjQ0JCDh06VFdXB7y2jRgxwsHBobKyMjk5efjw4RISEiYmJpqamtu3b09MTJw9e7aoqChmNaahoYEZlwkJCdFotG/fvnE4nO/fv9fU1MjIyPCH7EDRJCQkHBwclJWVnzx5kpCQkJeXJy4uXl9fX1JSQqFQQHGGDRsWEBBw4MCBJUuWuLi4pKSk8AcrLS0VFxdfunQpj8d79eqVpKSkgoKCkpKSoaFhWFgYVjl5eXkiIiKOjo4FBQWRkZGVlZX8ieTn5ysoKDTXdQIGXF3LhAkTrl27VllZ+fTp0+rqajk5ORRFuVzu7du3zc3Nu3wJDENeXv79+/e1tbUKCgrjxo3j77dHjx7dsmWLjIyMu7s7MB4EUUJCQrpJGAHwePycOXMCAwNdXV0TExMxGahUal5e3vLlywUOE+g82trakZGRJSUlwHwS+b+DF0VRrE6EhYXnz59fVVWlqKhIIBA0NTUTExMJBIKYmBjWfAiC6OjobNq0qWuFhEAgfRO4IAWBQCAQSJfR0NDw6NEjGxubwMDAVatWBQUFgevNjRrAOhQGZmRRX1//7NkzBQWF3NxccXHx1NTU+Pj4DRs2CAkJNTQ0bN++nUAgIAiioKBgZmampKR048aN4uJiBwcHLS2tsLAwR0fH0aNHCwkJPXnyJCgoSE9Pb9u2bQYGBl5eXuvWrUMQZOHChfn5+SoqKmw2W1xcHBMgJiYmLy+v52oK0s/pmONh4NQG/K+vr988gJycXKfEah0VFRVJScnk5OR9+/apq6tXVlYSCARtbe3mZk0EAgHb3igiIsLj8c6cOSMsLPzixQt7e3sQBo/H4/F48PIMrLc4HI6oqOjVq1fpdPr+/fuNjIzGjBnDbzUGjMsQBLl37150dLSPj09AQMDFixc9PT07aV8GjAeFhYWBqaO4uLilpaW2traBgcGQIUNAcQBFRUXFxcXXr183NzfnD6akpISiKB6P53A4oIAt2p2RyeTGxsacnJz09PSGhgYSicSfiJqaGtI+A64uZOjQofb29unp6YaGhoMHDwYXa2pqUBR1dHTs8pUXfkRFRUVFRcH//P0Wj8eDfX8dMMDsKmbMmBEfH19QUMBvlJ2Tk2NqampiYtIdOeLx+KFDh7ZxF9sLyV9vCIKAVTwEQbDmG8Dk5eX5+vr2thSQvw7webLPAhekIBAIBALpMr5+/YogyJQpU969e/fkyRNsxQcYNaxatUpHR0dISOj06dMCC1KYkUV8fHxmZualS5esrKwYDIa9vf3jx4+XL1/u5OS0bNkyERERFovF4/GuX79+8+ZNISGhiRMnLly4EEEQTU3N8PBw8O5nbW2dn59/7NixysrKadOm7d279/3791+/fmWxWGFhYbNnz/b19aXRaPzHnMnKyg5sf1LJycmNjY3AIVe3wmKxHj16tGLFiu7OqHfpxZftjiEjIwPMu/T09OTk5DQ0NISEhJSUlGpra4FZE5lMVldXBysymNMf8P/o0aNPnjyZlJTU0NAAzsHkB1hv7d27187O7uLFi3g8nkwmjx8/Pjs7G7MaA8Zl379///bt29mzZx0dHV1cXNhsdkBAwJQpU8rKyjpjX8bj8Y4ePVpRUTF16tS5c+eWlpZ6eXmhKLp06VJRUVFQBHl5+TVr1hw+fNjHx2f8+PEbN25cunQpfzD+BIGN1ZUrV8TFxfkrx8TEZMaMGYsXLwZ6TFFRkT8RCQkJpCVdJ2DA1eU4OjoKXJGWlj5x4kS3ZtrHERMTO3LkiMDFCRMmTJgwoVfkgQDExMQG9jxbVlYWExMzZ86c3haky+ixJ4dupVuX5jsPXJCCQCAQCKTLUFNTO3jwoKSkpI+PT1JS0ogRI7BbzY0a5s2bh93lN7LIzc0FF4WFhR8/fgz+JxAIYG8UkUh8/vx586xRFAXJgjDbtm3btm0bdlddXd3JyQn7GRoaSiaTDQwM+ANYWVl1ugL6Lg0NDRUVFT1QxoaGhps3bw7sykQQpN9958fj8Tdu3MB+grVjBEEmTJjAb9aEIEhycjL4Bzv5bvfu3StXrpSQkMCW4bZu3YogiJeXF/iJWW+5uLhUVVUNGTJESEjo3r17/FZjwLhMWFg4PT0dXHFzc3Nzc+NyuR4eHp2xLwPWjiNHjpSVlUVR1NPTc/369U1NTWCFCyvOhg0bli5dWl9fD/ZDtRYM/NOi3VlycjKLxQoMDKRQKGfPniWTyQKJANo24IJA/lpkZWUH9tSQmpr68+fPgVTGHnty6FY8PT17W4S2gAtSEAgEAoF0GdieI1FRUYFT9pD/Mmpo0ciiO+ByuVlZWWvXru3ag8wgEAwmk5mdnT18+HAikZiamspisfT09PB4vECwxsbGhIQEFouFoujgwYOHDx/e4ofcsrKyiIgIAoFgYWEhLCyck5OjqakJ1me7BH7b1dbADItaBLNCkpSUlJSURBCkqqpKwGqM37iMP24n7ctERET09fWlpKT4JcTsIgUgk8nYsZ5tBENasTtTVVWVkpLatm2bkJCQs7Ozqqpqa4m0rev6KTk5Od+/f5eUlLSwsBATEyspKSkrK9PX12/esf9Camtrv3z50tjYOH78eFVVVVg5HYPD4cTExGRnZ2tqahoaGgrUHo1GS01N1dbWxj4+9SMGUtEGUln6An16+xYEAoFAIH8PwMiiB/bzoyi6efPm+fPnd3dGkL+WBw8e+Pn5IQhSWlpqb28/d+7c1NRUcItGo4WHh9fW1iIIkp+fb2tru3TpUnt7e0NDw127drHZbC6XGxMTk5OTA8JHRERMnDjRw8PDxcVl+vTp6enphw8fxvYu9VmA1Zi6ujr/RUdHx+XLl7cnZPvR0tK6f/9+iw65uhxxcfEzZ85kZGT8/v1727ZtXbgm2PcJCwuzsLDw9vZ2dnZevHhxVVXV48ePt27dCnryXw6VSl2wYMG2bduOHDlibm4eGRkJK6cDcDicw4cPz5s3z8/Pb+bMmadOneJyufwBUlNTV61a9fv37z9KNjo62t7evmNe/7qKgVS0gVSWPsJfNJFAIBAIBAKBQLqbmpqaoKCglStXEonEyMjIiooKBEFev36tp6eHIEhRUdGuXbuuXbs2evRoBEFEREROnz5tY2Nz7Nix9+/f19fXi4uLnzx5ctKkSdu2bWtsbDxz5sy4ceOuXbtWUVFx8ODByspKc3Pzu3fvTp06td/5sYL0X2JiYhQVFZ88eVJZWXn+/Hngn76uru7gwYNlZWU7duxQVlY+efJkRkaGsbHxzp07o6OjIyIiKioq5s6d29DQEBQUNHz48J07d1ZVVfn4+JSWls6aNWv9+vUCzgT7KXl5eYWFhb6+vhYWFkePHi0qKkI6VDkiIiJ+fn4REREjRozYs2fPwNtk1zaNjY1RUVHLly/39va+d+9eVlZWenr6vXv3Vq1axWAw7t+/b2Zm1tTUdPPmTR8fHzs7u0WLFoFtlfX19QEBAV+/fjU0NNy5c2djYyNW22vXrr148eK7d+/u3LmzZs2agICA+Pj4efPmOTo6pqSk+Pr6SklJiYuLm5mZmZub37hx482bNxoaGjt37uRwOFeuXOFwOCwWS0hIaOPGjSIiIgEBAYsXLwaq+68tWleVJSEh4Z9//mEymcuXL585cyZWFktLS39/fyaT6eLiMn78+MTERP6yjBw50tfXNyMjw9raevXq1Z8+fQJDSU5Ojkwmb9my5cePH+/evXN1de2+M0a7HLhDCgKBQCAQCATSZWRnZ1MoFG1tbSaT+fTp06lTpy5fvjwkJKS8vPzs2bPAS5qbm9uJEyc4HA6dTt+1a9fo0aP9/PwWLFiQlJS0dOnSmJiY27dvr127NiUlJTc3d8KECaKioqqqqrdu3Zo6daqenl5mZmZxcXFvF7QvUl9fHxsbW1dXl5ycnJOTk5yc/KenZ3I4nISEhNaqt6Sk5NevXxwOpwtk7VfMnDmzoaFBT09v586dU6dOBf4BKRSKhoZGbW0tWEbhcDi2trYPHjyIiIhITk4OCAhgMpmlpaX79u0zNTVNSEg4efKkn59faWmpnZ3dr1+/MHeB/Z2RI0caGxvb2dlZWFiIiopOnz4d+fPK8fb2fv/+/b179+zs7DgcTlRUVG8Xq6cRFxdfvHjxrVu31NXVw8LClixZwmAwnj17RqVSS0pKnj17RqPRaDQaHo/X1dV1d3f/8eMHiHjt2rX79+/b2tr++vUrNDQ0Ojoaq+0fP34oKyuLi4sPHz783Llzr169srS0PHPmzLNnz3bu3Emj0VRUVC5evPj79+/bt2/7+/vPnTs3PT19+/btBQUFN27ciI2NVVdX//z58/v37yMjI1+/fg3OLvibi9YlZQkJCXn//v24ceN0dHTOnDlTXV0NyqKoqOjq6oqiqLKy8o4dOzIyMvjL8vPnT3DRxsbm3Llzt27dwoaSgoLCrVu3MjMz79y5U1BQ0B479L4DXJCCQCAQCAQCgXQZZWVlKIqKi4tnZGRERUUxGIzy8vL09PSoqCgNDY1Ro0aJiorq6+tramricDgikWhra+vu7j5//vzr1683NDQYGRnJyMioqqqOGTNGVFSUQCA0NDQgCMJgMMLDw8vLy6WkpJqamqqqqnq7oH2RpKSkVatWpaWl+fn5PXr0yNPTk9+VO6Bt25D6+vrt27c/evSoxbt/rSnWsGHDXr58ee/ePXV19V27dn38+BFBEA0NjRUrVhgZGTU2NqqoqFAolEOHDlGpVAaDgSCIgYHBmTNnOBxOfX19cnIynU5PTEw0NDSMi4vbu3cvgUAQONyw/yIsLHz8+PHw8HBbW9s7d+6cPHmSy+X+aeUkJCQoKyuLiYm5urpmZWW17bVtQMLlcufNmxcdHX348OHi4uL169dXVlbyeDxwC/xDJpPt7e1XrlwpLCwM1po5HE58fPy4ceMcHR1fvny5dOlSNTU1rLa5XK6WlpaUlNTYsWMTEhLYbHZ8fHxjY2NsbGxpaamtra2Tk5OOjg6Xy42IiDA1NV29erWTk1NKSkpVVZWkpOSBAwc2b948bdq0t2/fvn792tDQUEVF5S8vWpeUxd7eXlNT8/nz59evX29sbCQQCKAsKioq+fn5ZWVleXl5JSUlv3//5i8L8E7l5OS0du1aExOTyMhI5H+Hkp2dnbS09PPnz+Pj42fPnt2/7Kn7k6wQCAQCgUAgkD6OiIgIgiBcLvft27csFovJZLLZbAkJiadPn165ckVLSyssLMzR0XH06NGpqakoimppaVlYWFRWVr57905aWnrXrl0xMTGTJk3avHkzm802MTF5/PjxxIkTs7Oz9+/ff/bsWXV1dTweD3KBADgczsOHDx8/fiwnJ9fU1ITD4fT19RUUFMAbS2hoaEJCwpYtW16+fJmfn5+YmNiibUhCQoKvry+RSKysrMRSrq+v57eiQjpkijV48OBeq5qugMvl7t27NyEh4cGDB3JycmFhYdXV1QiC4PF4FEVxOByPx/Pz8xMWFn7x4oW9vT0Oh0MQhEQiEQgECQkJaWnpVatWZWZm4nA4CQmJq1ev0un0/fv3GxkZOTs793bhuoDQ0FAXF5dLly5t3rw5OjqaSqUqKSn9aeUQCAQ8Hr9x40Z1dfXTp0/7+/ubmpoSicTeLlzPQaFQZs+ePXPmzP3799fU1Fy/fp3FYnE4nMbGxvLychaLhSBIY2NjQUEBHo9vamoCBxTgcDgZGZn09PT6+vp79+4pKys/ePCAv7ZBhRMIBDKZLCwsvGXLFjU1tbFjx4aHh//+/Xv48OFgO6SCgkJiYmJdXV1OTo6EhMSgQYMIBIKwsDCKotbW1kFBQRwO59y5cx1b6RhIReuSspBIpLNnz+7cuRNFUX9/fxAAQRBhYWFxcXFLS0ttbW0DA4MRI0aIiopiZSESiWJiYrm5ubW1tcXFxeB8DDCUxMXFp0+ffunSpSFDhpiYmHSgjXoRuEMKAoFAIBAIBNJlqKqqkkikjIyMFy9eLF++/PHjx48ePXJ3d4+KisrIyNDU1AwPDx81ahQI3NjY6OjoOHTo0H379i1evFhfX59AIAQGBm7cuBFBEAKBsG/fvlGjRs2dO9fd3X3NmjU2NjZFRUVSUlIKCgq9Wsq+RWxs7N69ew0MDDgcTkNDA4fD+fjxY0JCAribkpLy9u1bJpMZGxsbGRmppKTUom3Irl27aDSatrZ2SUkJlvLHjx8FrKg6YIol4PS334Gi6Pr16xsaGoYNG2ZhYaGnpzd58mSBMAYGBm/fvnVwcGhoaMBW9FAUnTZtmpqamq2t7ZEjR8hkcn19/ebNm/fs2SMiItL8JNZ+ypQpU6ZNmzZ//vzBgwenp6evXr1a4MjI9lSOuLg4iUS6cOGCo6NjfHz8rFmz/qrVKARBhgwZsnnz5itXrkhKSh4+fNjBwcHIyEhVVXX58uXnzp0DR7nh8Xhvb+/Zs2cbGRkZGxsjCIKiqJOTU1FRka6urr+/v5yc3OjRo/lrW0lJqaioyMPDw97e/ufPn9bW1m/fvtXS0tq8efO1a9dWr17N5XLxePzq1atra2t1dHQuXbq0Y8cOaWlpbMXHwMBg+PDhMjIyHV7pGEhF65KyqKioqKmpeXh4nD9/nk6n02g0UBZ/f/9FixZ5eXnZ29uXl5cPHz6cvywSEhIuLi4BAQG6urpMJnPt2rVAJBRFURSdOXMml8udMGECOCC1HwF3SEEgEAgEAoFAuoyhQ4eOGTMmNTX1y5cv2MV169atW7cO/I8dhq2trQ38HwvAv/tJUVHx5s2bN2/eBD+5XO63b9/Mzc37kcfWHiAvL09CQmLlypU5OTkRERGtBePxeHg8XlNTE7MNkZCQqK+vB7YhFAplw4YNkydPDg4OxqJoaWkBKyoTExNbW1sqlQpMsSoqKpKSkjBTrLq6On5TrMePH/ObYtXX10tKSvZERXQbo0aNiouLKyoqIpFIYDF069atW7duRRDEy8sLhFm7dq2EhATma9/NzQ1BEHFx8efPn1MoFAkJCeDYZeHChVVVVUOGDBkYHs0RBBEXF79x48bJkycbGxuHDBlCJBInT57cscqJjo4uLi6WkpIC+0r+NtauXbts2TIKhSIvLw8qJCQkpKamRk5ODqzxLV68mMPhVFVVycjIYKt+o0ePBnZqCgoKwsLCEydOXLlyJX9tJyYmEggEaWnphISEiooKBQUFFouVkpKyffv2SZMmrV27VlpaWltbOzIysqSkREpKCqjo5ORkBEE4HE5ZWRmDwZg6dWpntjoOpKJ1SVkmT55cXV2NRdHR0cHKsmXLlqamJgUFBRqNJlCWFStWzJ8/v6qqSlFRkUAguLm5gaHEYDDKysoGDRpkbW0tsBzc94ELUhAIBAKBQCCQLgOPx69fv/7x48cNDQ1d7iWnpqYGRVFHR8d+98zdrUhISNDp9PLy8pKSEiaTKXCXQCDQ6XQ6nU6lUnk8Xmu2IcLCwoWFhTU1Nfwme0wmk9+KytzcvAOmWNgSZL8Gj8erqqq2EaA1t0d4PJ5/z4KkpGR/X55rkba9PrWzcohEopqaWhdL1q8QFRXV0NDAfpJIJIG1EjweLycnJxCLRCINGzYM+ylQ29hPERER4CmJSCTq6+ufOXPm/PnzkydPtrS0BCk3P9mwrKxs/fr1wsLCa9eu7aTWHUhF63xZiESiQBSsLDIyMuAfMTGx5mURFRVtPrF++vRp9+7d8+bNMzMz+6OC9AXgghQEAoFAIBAIpCvR19fX19fvjpSlpaVPnDjRHSn3ayZOnGhgYDBz5kxVVVVgM8LP2LFjT506ZWZmJiEhoa6uLmAbgqLo0qVL1dXVHR0djxw5cu3atcbGRiwugUC4cOFCWVkZh8M5dOgQ2AaFYWBgcPr06aSkpOamWPfu3bO1tSWRSL6+vs1FgkAgvcuKFStWrFjxn8EUFRU/fPjQA/J0IQOpaO0sy6xZs2bNmtUD8nQHcEEKAoFAIBAIBALpx5DJ5KCgoOrqajKZDFZ/QkJC+AMkJSWBYOBnc9sQBEFcXFwcHByIRCK/yaSenp6AFVXHTLEgEAgEAmkOXJCCQCAQCAQCgUD6NyiKYoYezRHwyNPcNqTFYIC2rajaaYrVr2loaEhJSdHU1GzR1K60tJRKperr64OlwPr6+rS0NG1tbcxQsby8vKamhk6nS0lJYXZD6enpgwcPHgCekkpKSsrKyrDi88PlclNSUsTExDAzpfz8/Lq6Ol1dXcxCKisrS1JSsrS0dEBWTm9RXl5eV1cnIiJCpVLl5eVZLBa/1Vv/BQwlJpMpJiZGIpGoVCqRSBwyZEi/6yrNCyIrK1tRUTGQGqv9QPN7CAQCgUAgEAgEAmmZrKwsJyenX79+tXj36dOnW7dura2tBT+TkpKA8yzwk8FgeHp6hoeH79q16969e1isV69eHT9+nMPhdLPs3c7jx4/5i88Pi8Xy9PS8ceMGduXOnTt79uyh0+ngZ1pamqura3Fx8UCtnF4BdLno6OiPHz8eP348LS1t69at/Edn9lNAuSIjI/38/IKDg0Hpnj592u+6SosFAX1+wDTWHwEXpCAQCAQCgUAgEAikVbhcbnBw8MKFC69evcpisR4+fLhw4cLdu3dTqVQQgMPh3L9/f9GiRXfu3GlqasIi/vz5Mz09fcKECQiCxMXFLV269NChQ7W1tdOmTYuKikpPT++d8nQpdXV1Bw8etLOz+/79e01NzaFDh+bNm3fjxg02mw0CVFdXHzhwYNmyZfHx8TweD4sYHBysoKAAXMUP1MrpeUCXMzMzU1JSGjNmjL6+PoFAePPmTW/L1Vmwcunr66upqYHS9ceu0mJBwOm0A6ax/gi4IAWBQCAQCAQCgfxFNDY2xsbGtrirBbubmZmZl5cncCsrK6ugoCA6Ohp8wy8vL4+KiioqKoqJicnIyGgefsDQ0NDAYrG0tLTOnj375MmTffv2mZqaJiQkeHt7c7lcBEF+/vy5d+9eAwMDDofT0NCARfz27ZuUlNTgwYN5PF5JScm0adPu379/7do1ZWVlISGhnz9/9l6ZugwKhaKhoVFbW+vr63vmzJlXr15ZWlqeOXPm48ePIMDly5cfPXo0bdq0goICbEGqoaHh69evY8eOJRAIA7hyeh7Q5RQUFFJTU9+8eYPD4XR1dT99+oStD/ZTQLlkZWU/fvwYHx8PSicrK9vvukqLBfn9+/dAaqw/Ai5IQSAQCAQCgUAgfxGFhYV79+79/v372rVr379/L3A3Jydn1apVYWFhAsYjwMCqpqbG39/f3t4+Ly9v06ZNBw8ezMzMdHBweP/+/QA2NhETE7O1tbWyskJRNC0trb6+Pjk5mU6nJyQkMJlMBEEKCwslJCRWrly5YsUKzI87l8stKiqSkpISEhLC4XBz5sxZtWrVuHHjfv/+PWjQIFFR0dLS0l4tVtegoaGxYsUKIyMjGo0WHx/PZrPj4+MbGxsTExMRBOFyub9//zY1NV25cuWsWbNwOByIVV9fX1tbC7yYDeDK6WH4uxy4gqKovLx8eXk5ZinZH2leLoCwsHD/6iqtFQQwMBrrT4FOzSEQCAQCgfzV/P79OyEhQVVV1cTEhMVi/f79uzXvxRBIn6W+vj4gIODr16+GhoY7d+5MSEj4559/mEzm8uXL7ezs3r9/HxUVRaPRampqduzYQSaTjY2No6Ojg4ODaTTaiBEjXrx48fr1a1lZWTc3N+BwetiwYcB4ZM2aNSALYGClo6Pj4eGxZMkSOzs7CoUSGBgIvHerqqqC8Do6OtevXwdeXaSkpNzc3BQVFXuxZroEHA6HoiiPx8PhcGJiYtLS0sBRFIFAqK+vRxBEXFycTqeXl5eXlJSAJSqAmJgYMOvj8Xg5OTm1tbVlZWWjR4/mcrlsNntgHEGIx+NRFAVVJCEhISoqumXLFjU1NQsLi9jYWBwOJyMjk5mZWV9fX1RUhMUiEokkEgnsBBnAldPzYF0Og8lkioiIEInE3hKpS2heLgRB+mNXabEgGAOjsf4IuEMKAoFAIBDIXwqHw/H29p40adKpU6dsbGy2bduWmpq6atWq1rwXQyB9lmvXrt2/f9/W1vbXr18hISHv378fN26cjo7OmTNnKBRKSkrKpUuXhg4dWl1dvWvXrqKiomfPnhGJRBERES0trcrKyl+/fi1btqy4uPjq1avABo1IJPIbj/AbWI0aNWr9+vW/fv1asWLFxIkTgQBYeCKRqPS/KCgoEAgD7fu3iYmJmpqara3tkSNHxMXFwfqdsbGxgYHBzJkzz549i503h6Konp5eRUVFfX09Dof78ePHmDFjiouLly1bVl1dTaPRtLS0erUoXQwOh1u5cuXPnz+tra3fvn0rKysLLtrb22dnZxsYGPCrVklJSXV19dzcXBBmwFdOz8Df5cAVDoeTlZWlq6vb4pac/kLzcgFqa2v7V1dprSCAgdFYf8pAmyEgEAgEAoFA2klKSsr169dPnjy5du3aly9fPnv2DPOqEx4ejm0wWbJkSUhIyO3bt4WEhDZv3mxkZOTn5xcRETFixIg9e/ZgR5VDIL0Fh8OJj48fN26co6PjqlWrOBxOYGDg5cuXMzIy5OXlwYqSjo6Ok5OToqKil5dXTU0NgiAqKioSEhLGxsbDhg2TkZE5ceJEUVGRuro68PIDjEdiYmLodLq4uDi/gRWNRvv27RuHwwFOrIEMWPjS0tLY2FiQqaysLIPB6KVa6TIMDAxSUlLA/8nJyQiCmJqaUigUCQkJsDVj06ZNCIIEBQVVV1eTyWRsQQpBkAkTJly7dq2srOzdu3cIglRVVYmKipJIpNDQUDKZbGBg0Avl6VK2bt26detWBEG8vLzAlYSEhIqKCgUFBSKRGBISgl1sbGyUkpLCIuLx+Dlz5gQGBuJwuIFaOb0C6HLZ2dmbNm3atGkTlUrNy8tbvnw5WDntv4ByFRcXY51q06ZN/bGrtFgQBEHc3NwGTGP9EX9RUSEQCAQCgUD4ycnJ4XK548aNQxBkzpw5165dk5eXRxCEwWDwbzBJSEg4fvy4np6ekZHRu3fvXr16de/ePTs7Ow6HExUV1duFgEAQYBVFoVDq6+vPnz9/8+ZNb2/vNWvW+Pj4kEgkEIZKpVZWVhYXF4uIiICLOBwOOPR58+bNy5cvAwMDbWxsMBc/yP81HuE3sLp37150dLSPj09ubu7FixfBjiosvJqa2vz58xcsWLBgwYJZs2b1L2uadoLH45WUlASKhqKojIwM/2oUgiBDhw61t7fHTgGTlpYmkUhcLjcrK2vt2rXS0tI9J3RPISIioqKiImBzRCKR+FejADNmzNDV1S0oKAA//4bK6QEEulxOTo6pqamJiUnvStV5BMqFIEg/7SrNC4IxYBrrj4A7pCAQCAQCgfylEIlEHo8HvIeWlJTk5OSIiIggCCIkJKSpqYltMBEVFR07dqyfn5+6uvqaNWu0tbXFxMRcXV1NTExsbW17uxAQCIKiqJOTk6Ojo66urpiYWEBAgJqamoeHh4qKCp1Op9FoCIJUVVXNnj27urr6wIED4P1NREREUlLS3d3dw8ODTqcvWrSITCarq6sD908CxiOYgVVSUtLZs2cdHR1dXFzYbHZAQICSkhJ/eG1tbV1d3V6tj76Fo6OjwBUURTdv3twrwvQpxMTEjhw5InARVk7n4e9yEyZMmDBhQi8K04UIDKX+21Wa6wTAQGqs9gMXpCAQCAQCgfyl6OnpSUpKXrt2bdCgQRcuXIiMjDx9+jSCIFQq1dvbe+fOnSiK+vv70+l0Y2Pj5cuXh4WFnT9/XkVFZePGjerq6qdPn/b39zc1Nf2r/I9C+iajR4+OjY0tLS1VUFAQFhaePHlydXW1nJwcMP0IDQ3V0dG5e/euiIgI2KgCTM9mzJhRW1uroKBgY2PDZrOxPSzJyckCxiOYgZWrqyv2bd/Nzc3NzQ1BkFWrVlGpVF9f37/N2AQCgUAgnQEuSEEgEAgEAvn/MJnM6Ojo0tLScePGDR8+vLS0lEql6uvrC9ihtE1DQ0NiYqKqquqQIUPKy8szMzN1dHTIZHLb+WZnZ4uKiubl5QEXNng8XldXt+2t+G2Ll56ePnjw4DbyHTp06Llz53bv3m1iYqKhoXHixAllZWUEQcTFxfk3mLDZ7Ojo6H379qEoOm3aNCUlpWPHjpWVlXE4nEOHDvXAahSHw0lKSsKc9RCJRH19/eaWUFwuV2AtgMvlpqSkiImJDRs2rLuFhPQ6JBIJa2gikTh48GDsloKCgra2tqSkJDgRD0NUVFRUVBRBkObdqbnxyIwZM+Lj4wsKCnR0dJrn/ncam0AgEAikM8AFKQgEAoFAIP9DWVnZ2rVr4+LipKWly8rK/vnnn4qKiqCgoGfPnv2pjwZ/f38qlXrjxg03N7eampqgoKC2wz948CAiIkJPT8/d3R1s6xAREQkICJg6dWobsT5+/BgSEnLy5Mnjx4/b2dnNmDGD/+6rV68oFMqJEyfaWE0zNzePjo7mvwJ2jlhaWvJvMBk3blxpaSmPx1NQUEBRNDo6uri4WEpKqu1Vtq6ivr7+6NGjMTExVCpVSkpKSUnp2rVrY8aMwQJwudxz587V1tYeOHCAf02KxWJ5enqOHj26uV0M5K9i2bJly5Yt+6MozY1HWjSwaiM8BAKBQCBtAxekIBAIBAKB/A9PnjzJyMh4//79iBEjjh8/npubC3wqMZnMgICA169fy8rKurm5qamp8R8zR6PRfHx8SktLZ82atX79ehKJJCoq6uHhsWTJEjs7OwqFEhgYCA7nag2wYrVy5cqKigodHZ0XL14oKiqCW2lpaadPnx40aJCMjMz48eNxOFxCQsKWLVtevnxZVlamra09ZsyYly9fBgcH02i0/Pz8mpqaLVu2/Pjx4927d9OnT/fw8EhPT29xQ0fbCGwwQRAEEwncVVNT+9M0OwyZTH78+HFOTs7s2bMPHTpkZ2eHIEh4ePjly5e5XO7GjRulpKSuXr1KIBCmTJnC4/Gw8wHnzZvXY0JCIBAIBAKB/BHQxhsCgUAgEAiCIAiXy01KSlJXV1dTUyMSiYcOHdqzZw/YW1RYWPjr169ly5YVFxdfvXr1/fv32DFzERER586dKy0ttbOz+/XrV25uLkht1KhR69ev//Xr14oVKyZOnNh21tnZ2RQKRVtbG0GQjIyMWbNmGRkZ2djYZGRkuLm5lZeXAxfjycnJKSkpb9++ZTKZsbGxnz59SklJefPmjZycnIiIiJaWFplMvnXrVmZm5p07dwoKCjQ1NYWEhH7+/NndVdfzJCcnb9q0SV1dXV1dfePGjVQqVVpaWklJSVJSkv98QAqF0tuSQrqMrKystLS0b9++NTQ0IAgCRkFmZmZMTExVVVVSUlJqampKSgo4CK/F6AUFBdHR0SUlJQiClJeXR0VFZWRk5OXlCYRkMpnfv3/Hzj5rPzQa7dWrVykpKQiC1NTUhIWFMZnMNsLX1NQ8f/48MjLyTzOCQCAQyMAALkhBIBAIBAL5H0gkEpPJbGpqQhAkPj4evFgiCCItLS0jI3PixInY2Fg6na6pqQmOmcvKylJQUDAzM4uLi9u7dy+BQAD+aBAEodFo375943A4379/x5wftUZZWRmKosCLjYKCgouLy549ezZu3MjlcgsLC5cuXQqOD+OPAvxMAUaMGCEhIWFsbDxp0iRpaennz5/Hx8fPnj1bXFxcVFS0tLS062qor5CUlEQgEJydndevX4+iaHl5uYKCgqampq6urqam5vPnz69fv97Y2Nja2gSk35GWlubq6pqSkrJs2bJXr14hCBITE7N06dKPHz86ODhERka6ubldvnz58OHD7969A1Hy8/Ojo6PBkXkgek1Njb+/v729fV5e3qZNmw4ePJifn79161awRIXx8eNHS0tLV1fXxsbG9kvI5XJ9fHyuXbu2efPmrKysoKCgiIgIcEJfa+HPnDnj6uoaERHRkRqBQCAQSP8HLkhBIBAIBAJBEARBUXTSpEkZGRlBQUGRkZHr1q07c+YMeJv98OHDy5cvAwMDbWxscDgck8ncuHHj8+fPiUSin58fkUi8evXq6dOnw8LC3rx5A1K7d+9edHS0j49Pbm7uxYsXuVxuG1kDw0AQRkRExNjY2MzMbOzYscDjclFRUUVFBdjsQyAQ6HQ6nU6nUqnYmhQOh8PhcAiCyMjITJ8+/dKlSwiCmJiYcLlcNpvd3Fvzf8JkMmNiYnJycoBUycnJycnJbRehh5GWlmYymRQKpaSkhMViycjIoCjK4/Hy8/O9vb3XrFnj4+NDIpF6W0xIlxEcHKygoDBt2jQdHZ23b9+yWKywsDBFRUUtLS0sDIlEMjc3v3v3LoPBQBDkw4cPx44dA3uUQHQdHR0PD4/i4mI7O7uYmJgDBw6YmpoSCARs2CIIwmaznz59Ki8vn5iYCLp9cHDwvHnzFi9e/OnTJyxYeHj44sWLbWxs7t+/D4YGj8crKSmxsLAQERHJyMgIDw9fsmSJgJf98PDwZcuW2dnZhYeHx8fHv3z5soetXyEQCATSp4ALUhAIBAKBQP4Ha2vrXbt2HTt2zNLScsiQIXv37gUme2pqanQ6fdGiRSkpKZWVlTgc7sKFC46OjmAjUkNDw+bNm/fs2SMiIjJ+/HgEQZKSks6ePevo6Oji4rJx48YrV64IOA4XQFVVlUQigSWn5OTkUaNGDRkyRFlZ+f379/b29j4+PjNnzqRSqQiCjB07tqioyMzMLCkpCYsuJiYmKSnp7u6elpY2c+ZMLpc7YcIEJSWl6upqGo3G/8beTnA43J07d+zs7IqLi3/8+DF//vxv3771qcPsTU1Np02bNnfu3AULFlhbW5uZmWloaNy7d+/t27fgfMDz58/T6XRg2wXp7zQ0NHz9+nXs2LGSkpLW1tbfv39PSUkJDw+fMWOGhIQEf0g9Pb3MzMyEhIQNGzZcunQpPj7e3t7+xYsXIDqBQBCwpRUWFtbV1f306RO2mS4nJ+fbt2+7du1SUFAICQkpLi4+fvy4np6ekZHRu3fvQI9qbGxsbhmKx+MXLFjw4sWLYcOGpaamamlpCQw9ATvTioqKwYMHDx48GC5IQSAQyF8LdGoOgUAgEAjkfyASidu2bdu2bRt2ZdOmTZs2bUIQJDExkc1mS0lJgesCx8wtXLiwqqpqyJAhYFeOvr5+eno6COnm5ubm5tZ2vkOHDh0zZsz379+3b98OsuNn6dKldDrd3t4eQRBTU1OwFIUdb+fi4oIgyPv372tra8lkclhY2KBBg6ytrVEUTUlJIZPJBgYGHaiH7du3L1q06MKFC7m5uQYGBsCPeO+irq6empoK/hcTE7tw4cLhw4d5PJ68vDyCIEePHt2yZYuMjIyzszP/+YAhISG9KTSkK6ivr6+trQUnA0yePNnf3//u3bsUCsXS0lJgnVRKSqqpqamhoWH06NHV1dUNDQ2GhoYiIiJYdAFbWhkZGXl5+ZiYGDqdDvYSfvjwoby8PDs7m0AgvH79euXKlWPHjvXz81NXV1+zZg2BQEAQhEQiAbduGRkZ8vLy2GKWtbW1tbU1hULZunXr3Llzp0+fLiYm5uvrq6GhgfDZmfJ4vJCQkIqKCjU1tYaGhrFjx/ZwfUIgEAikj9CHvvVBIBAIBALps4iLi2OrUcj/HjOHrQpJSkqqqal12EYMj8evX7++pqamxR09UlJSEhISI0eOBOfckclkLF8MUVHRIUOGfP78effu3fPmzTMzM+NyuVlZWWvXrpWWlu6ASBoaGtu3b79w4UJUVJS7u3sH7P56ADk5ObAahSAIHo9XUlISFhYG5wP2qf1ckE5CJBJJJBJY9xk+fPjo0aMvX76soqKip6cnEJLFYuHx+MGDB2/YsMHS0lJdXX379u1jxozBoje3pWUymSIiIkQiEUGQ+vr6Z8+eKSgo5ObmiouLFxcXf/jwwdjY+NWrVwsWLDh//jywY23bMvT58+eampqlpaVGRkaDBg368eMHuC5gZyorK9vd9QaBQCCQPg7cIQWBQCAQCKT30dfX19fXb+0u2BD0n4nMmjVr1qxZ2M/Nmzd3RqS5c+fevHlz1KhRhoaGnUkHAukkkpKS6urq4AhLEok0e/bsV69eWVtbN18nLSoqkpKSUlBQQBDEyclp2bJlIiIiJBIJROe3pWWz2QEBARYWFllZWbq6usD7eHx8fGZm5qVLl6ysrBgMhr29/evXr+Xk5Pbt24ei6LRp05SVlREEkZKSApahKioqdDqdRqNhAlAolA8fPhw4cCA9Pf3FixdcLldJSQncwuxMEQRZunSpqanps2fPeqL6IBAIBNJXgQtSEAgEAoFAIC0gJCREJBKxcwMhkN4Cj8fPmTMnMDCQRqOJiYk5Ojo6OjqCW2PGjAHmsTY2Nlwu18PDw9zcHGxmJBAIwMIOi+7q6ipgS0ulUvPy8pYvXw621FlYWIBlLwRBhIWFHz9+DP4vLS3l8XgKCgogmJSU1NOnT/ktQzGEhIT27t2rq6urq6urpaVFJBIxT1LN7UwvXrzYvRUHgUAgkL4NXJCCQCAQCAQCgUD6NDNmzIiPjy8oKNDR0WktTE1NDYqijo6OzQ02W4uek5NjampqYmLSdu7AWpYfYBnaPKSMjAxwVoUgSIt7HuXk5NrOCwKBQCB/D3BBCgKBQCAQCKQFxMTE3r1719tSQCAIgiBiYmJHjhxpO4y0tPSJEyf+KPqECRMmTJjQBfJBIBAIBPLnQIeXEAgEAoFAIBAIBAKBQCCQHgXukIJAIBAIBAKBQAYgTCYzOzt7+PDhRCIxNTWVxWLp6enh8XiBYI2NjQkJCSwWC0XRwYMHDx8+vMVTGsvKyiIiIggEgoWFBZlM5nK5eXl5jY2NI0eOZLPZOTk5mpqawGsVBAKBQCDtAc4ZEAgEAoFAIBDIAOTBgwcRERH//PNPaWmpvb19RUXFq1ev9PT0EASh0WhxcXFjxoyRlJTMz8+3tbVls9lEIrGqqmrdunWnTp1CUTQuLk5WVlZdXR1BkIiIiJUrV+LxeAaDIScnd+/evZs3b166dInH41lbW585c+bw4cNOTk7W1ta9XWgIBAKB9BugyR4EAoFAIBAIBDLQqKmpCQoKmj59OpFIjIyMrKioQBDk9evX4G5RUdGuXbuwM/VERESuXLmSn5/v7u7+8+fP+vp6Lpd78uTJFy9eIAjS2Nh45syZcePG/fz588uXL3p6er9//y4rK7tz505gYOCvX7/q6urMzc3v3r3LYDB6q7wQCAQC6XfAHVIQCAQCgUAgEMhAIzs7m0KhaGtrM5nMp0+fTp06VUFBISQkZNWqVXfv3n337l1ubq6bm9vUqVNtbGzodPquXbv2799fXFy8b9++pKQkf3//mJiYvLy8pKSkDRs25Obmrl69WlRUVFRU9NatWwiCLFy4kMlk7tu3T0NDQ1FRUU9P79atW8XFxRoaGr1ddAgEAoH0D+AOKQgEAoFAIBAIZKBRVlaGoqi4uHhGRkZUVBSDwSgvL09PT4+KitLQ0Bg1apSoqKi+vr6mpiYOhyMSiba2tu7u7vPnz79+/XpDQ4ORkZGMjIyqquqYMWNERUUJBEJDQwOCIAwGIzw8vLy8nMFgHDx48MuXL97e3pKSklJSUk1NTVVVVb1dbggEAoH0G+AOKQgEAoFAIBAIZKAhIiKCIAiXy3379i2LxWIymWw2W0JC4unTp1euXNHS0goLC3N0dBw9enRqaiqKolpaWhYWFpWVle/evZOWlt61a1dMTMykSZM2b97MZrNNTEweP348ceLE7Ozs/fv3nz59OiMj48GDBwcPHqyrq2tsbGSxWHg8HmQKgUAgEEh7gAtSEAgEAoFAIBDIQENVVZVEImVkZLx48WL58uXe3t4oil69etXHxycjI0NHRyc8PBxbP2psbHR0dMThcBISEqtXr9bX1ycQCIGBgeDUPAKBsG/fPk9Pz7lz55JIpA0bNujo6Ozbty8vL2/VqlVDhgwJDQ0tKiqSkpJSUFDo1UJDIBAIpD8BF6QgEAgEAoFAIJCBxtChQ8eMGZOamvrlyxfs4rp169atWwf+FxMTA/9oa2sXFRU1T4F/u5OiouLNmzdv3ryJXcnOzsb+53K5d+/eNTc3l5KS6tpSQCAQCGQAA31IQSAQCAQCgUAgAw08Hr9+/fqamhrg+6lbqampQVHU0dERReHLBQQCgUDaC9whBYFAIBAIBAKBDED09fX19fV7ICNpaekTJ070QEYQCAQCGUjAjxgQCAQCgUAgEAgEAoFAIJAeBS5IQSAQCAQCgUAgEAgEAoFAehS4IAWBQCAQCAQCgUAgEAgEAulR4IIUBAKBQCAQCAQCgUAgEAikR4ELUhAIBAKBQCAQCAQCgUAgkB4Fx+PxelsGQVxdXR8/fjxu3LjeFuT/w2azaTQamUzubUEgLVNZWSkjI9PbUvQEDQ0NKIoOGjSotwXpOf6exq2rqxMWFiYSib0tSI/CYrEYDIaEhERvC9JBBszs8DfoFjqdzuVyRUVFuzsjLpdbU1MjLS3d3Rn1Ln1ZOfdl2f6IqqoqMpmMon/L92MGg8Fms8XExHol9z41cuvr64lEIolE6m1B/g89pkVbo6amRkxMjEDol8fEM5lMFoslLi7e24J0I01NTY2NjZKSkr0tSJfR632+S/j06dPw4cPj4uJ6W5CW6bvjubKysrdF+P9wuVwGg8HhcHpbEEjLNDQ09LYIPQSLxcLhcI2Njb0tSM/x9zQug8Gg0+n99DGrw7DZbDab3dTU1NuCdJABMzv8DbqlqamJx+MxGIzuzojH4zU2NvbBD35dS19Wzn1Ztj+ioaGBy+XicLjeFqSHaGpq4nK5TCazV3LvUyOXwWAQCIS+9kjQY1q0NRobG5uamvrpEi144GGxWL0tSLfTp97iu4Re7PNdAuh7vS1Fq/QtNYeBx+O/fPnS21L8f/Lz848fP3758uXeFgTSMlZWVqGhob0tRU9w+fJleXn5BQsW9LYgPcfMmTPfvn3b21L0BJ6enosWLTI0NOxtQXqUuLi4p0+fHjt2oVJPLwABAABJREFUrLcF6SADZnb4G3RLcHBwRUWFs7Nzd2fU0NDg4OAQHBzc3Rn1Ln1ZOQ+Yp4IFCxbcu3dPRESktwXpId6+fZuWlubq6torufepkXvs2DELCwtzc/PeFuT/0GNatDWcnZ337dunoqLSWwJ0hi9fvkRERHh6eva2IJC/DkNDQx0dnd6WolX65QJz21RWVqalpYH/U1JSysrKEASpqan5/ft35xOnUqlfvnz5/PlzTExMbW1t5xNsD2w2G2TKv7TJYDC+ffv2+fPniIiIgoKCnpEEQZCGhob3798HBQVlZ2f3WKZ/GxwOJysrC5gyFRcXFxQUFBQUlJeXd20uDAYjMTER+4hRVlaWmJgIPktyudz09PTk5GSB1XQqlRoXF1dbW8vhcCgUChCspKREIFhtbW1eXh5IJzc3NyMjg8vl8georq5OTEzk34vxn1EGJM3r4W+AxWIlJydTqdT/DMnfJ5He7qKFhYVVVVVtROldqqurCwsLCwsLwcTUWtfCdAuCIAwGIzk5GRSqbQRqPisrKzs7GxS/sbExPj5eYA7ib522ldh/1mrzi1gUJpPZYkfij9L+ztZ52tkrOqN4kf9t6IKCgsLCQhqNxh8M69UIglRVVTXvAB1QvAJRerLn88uWk5OTm5vbPEx5eXl1dTX2Mz8/vwcE62769byAjXcqlcrlclsbgB1TRN1Ez/TqFptVoH66qel7Ug0K0GKJBC52VanbmKdaVK38F9t+YOiOeQoCgfDTR3dIdRgOh3P9+vVJkyYhCFJQUODs7GxmZnbs2DEikfjw4UMHB4fhw4d3Jv3Q0NBbt25NnDixvr4+ISHh3LlzBgYGHUuKy+UeP3586tSpEydObDvkrVu3YmNj2Wx2Xl6ek5MTuFhUVLRr164JEyYQCITY2NjFixdv2LChY5IgCFJaWnr69Ol9+/ZJSUm1ESwlJWXXrl2jRo2SkpK6efPmypUrly1b1uFMIa3x/PlzX1/fBw8eFBUVnT9/nsVi5ebmqqur37hxo6uyoFAorq6uioqK2dnZbm5uLBbLz89PQ0OjoqLCx8fn0qVLubm5JBKJQCCcPn0aGE6/ffv2n3/+0dXVTU5O3rt3b3BwcHFxcX19fUFBwcOHD0eOHAlSZjKZ+/bt4/F4fn5+AQEBMTExRCJRRUXl4MGDYOd5QkLC4cOHlZSUqqurz549Ky8v/59RBiTN66G3JeoJ6uvrd+/ejcPhgAazsLBoLeTHjx+xPunr65uYmNiLXTQvL8/BwcHNzW3OnDnnzp3jj9Iz9dY2TCbTxcWlvr5eVFTUxsZGR0enta6F6RYcDrdt2zZZWdmKiorNmzeDSbNF+Bvi9OnTV65cycrK4vF4enp6K1as2L59+9ChQ7OzsxcuXAimJzab7eXlhbXO0qVLb9y4wa/EhIWFQcpt1CpoiKtXr4aFheHxeH19/V27duHxeCyKubn5tm3bJCUlc3NzN23aZG1tDdLkj7J+/XoPD4/2dLbOIyBqa8E6qXi9vb2joqLCw8M5HM7Pnz89PT1XrVoFUsZ6tb+/f0xMzNGjR0eMGFFQUODv76+kpIR0SPEKRHn+/LlAc3RffWKynT171tvbOykpSVxcXEtLa+fOnVi+BQUFmzZt2rBhw5w5cxAEefXqVUBAQJ/dsdVO+vu8EBgYePfu3SFDhowYMWLDhg1eXl4tDsAOKKJuop0jt5O02KwCs6GkpGR3NH3759wup8VSC1wsLS3tklK3MU9t37792LFjAqpVYJ7y8PDw9/dv8YGhO+YpCAQiwEB72UtNTS0tLQWLRBERESYmJsXFxfn5+erq6gYGBiEhIa6urp0xPMbhcObm5uAl5MCBA9+/fy8rK0tISMDhcFZWVsHBwU1NTStWrFBTUwsKCmpsbMzPz589e3ZERISwsPDq1asJBMKDBw+Sk5OnT5+urKz8/PnzoqIibW3t1NTU4OBgZWXllStXxsbGggSdnZ2B37vGxkYymYzH4wVezpWVld3d3WVkZD5+/Hj79u1JkyaFhobW1NTY2NgkJCSAXKysrD5//gwW742MjFgs1u/fvx0cHLS0tL58+fLy5Us1NTV7e/u3b9++evVKR0fHysrq9u3bNBrN0dGRRCKFhITU1NTY2dlpa2uz2ezz588vX77c3t4eQZC5c+fGxMTk5OSAMEuWLCkvL8cSjIiIkJGRMTY2Dg4O1tDQSEhIqK2tLS4utre3HzVqVKfaeKCTnZ0dHBwMvLEaGxsbGxuXlJTs3LnT09MTe5HrPHQ63d7e3tra+vz58wkJCbq6usePH1dXV9+yZUtWVpasrOzWrVsRBHFxcaFQKBoaGlwut7q6+sCBA0ZGRkeOHMnNzT19+jSbzT506ND8+fOxmRtBkBcvXhQUFGhqajY1NSUnJ2/btk1KSurQoUO1tbUyMjJcLvfly5dLliyxs7M7dOhQVFTU/Pnz247SVUXuU7RYD70tVE8QHx8vJCR09uzZjx8/vnjxwszMrLWQKIpifbK4uJj/Zw930ZkzZ167dm3QoEE4HK55lJ6otf+iurpaWFjY29tbUVERQZATJ0602LX4dUt0dPSwYcNOnDgRFRX15MkTU1PT1hLnr/nc3FwdHR0XF5f8/Hx/f/+ioiIbGxt7e/svX74EBQXZ29vj8XgajcbfOsrKyrdv326uxBgMRhu1KiMjU1VVFRUVdezYMVFR0T179pSUlMjJyWFRSkpKeDze0aNHg4ODY2JiZs6ciaKoQJQPHz60s7N1kuaituYUuZOKNyEhwdnZ2dnZ+fXr12Qy2dbWFksZ69UIgiQmJlpYWLi6um7atCkrK0tJSakDilcgSmhoqEAZhw4d2k31yV+ckpKSlJQUPz8/YWFhNze3goICNTU1BEFyc3OPHTuGLU49f/78yZMn/d2urb/PC1wut6CgYM+ePZaWlgQC4cuXLwIDEDx+d0wRdQftH7mdobVm5Z8NQ0JCJCUlu6Ppm8+5PeN9qcVSC1yMiIhITU3tklK3MU9VVFQ0V60C81RTU1OLDwxdPk91Ue1CIAONgWayFx8fP3ToUGFhYQaD8fnz5/nz52tpaX348AFBEF1d3ZSUlE5uCuXxePn5+aGhoQ8ePPj+/bumpuaPHz+ysrIsLS2PHj2qq6trYWHh6emZl5f37NkzLpc7cuRId3d3CwuLzMzM0NDQf/75Jzs7e/Xq1ffv38/OzjYxMVm2bFlWVlZAQICjoyOKomfPno2Njc3KylqyZAn2aDV8+PA7d+7U1dUtXryYX5i6urpPnz69ePHi33//VVdXr66ufvHihbW19evXr7FcXr169fPnz/Dw8Llz5/r5+dHpdE1NzQsXLkRERJw/f97e3r6hoeHYsWOmpqYmJiZTp07dv3//yJEjZ86c6eXllZqa+uLFizlz5qiqqiIIUlVVVVpaamhoyOVyKRQKiUSaMWNGWVkZCEOhUPgTTEhIADZ9P378KCgoePbsGYFAmDt37vHjxykUSmeaYGDT2Nh47dq1RYsW8R/a9e+//xoZGenp6XVhRmpqatOnT/fw8Lh9+7aFhcWUKVMGDRq0ePFiFos1ZswYFxcXGRmZz58/k0ikwYMHIwiCouiyZcuMjY3z8/MTExN1dXURBImLiysoKFiyZAmWbFpa2pcvX5YuXYrH40kkkpWV1bZt2xwdHU1NTcHmOx6PV1ZWpqCggKKovLx8SUnJf0YZkDSvh96WqIegUCgyMjIoiiooKFRVVbXhJJK/Tw4fPrwXu2hwcLC0tLSRkRGCIH2zi1IolF+/fm3fvt3S0vLFixctdi0B3UIkEplMJofDqa+vLywsbGdD6OvrL168+NOnT05OTsbGxuPHj3d0dGSxWK9evRo1ahRYHSCTyc1bp7kS+89araur43K5kpKS4uLieDy+urqaP4qGhoaUlNTs2bOvXbtmY2MDXrEEouTm5razs3WS5qK2FrJLFG9NTc39+/dXr16NHfrD36sRBJk2bVpoaOj06dMZDMbo0aORDilegSh5eXntLGPn4ZcNfIdjMplMJrO0tBQzdVRTU7ty5YqBgQHw9j1v3rxTp071kfHYYfr7vACM786fP29jY3Pw4MHCwsLmA7DDiqg7aP/I7QytNSv/bFhZWVlaWtodTd/+ObdrabHUzS92VYdvY54aMmRIc9Xa4jzV/IGhO+YpCATSnIE2NsDiNIIgqampMTExN27ciImJefbsWW1trZiYWFNTk4DPhQ5QVFT0/fv3wsJCLy8vCwsLFEXHjx+Px+OFhYUtLS2nTp2qqKiYm5srJSU1ffp0bW1tPT09ExMTVVXVxsbGzMzM+fPn6+npzZo1KzExEUEQFEVTUlLS0tK8vLzCwsJKS0u5XO748eNVVFTAk+WPHz+uXbt248aN3Nzcbdu23b17F5Okvr7+x48fCQkJs2bN2r17N4qiGhoaenp6+fn5WC4JCQkIgkybNm3UqFEjRoywsLDQ0tJis9mpqakTJkwYPXr04sWLKRRKQ0MDDoerrKxMSkoKDAz8559/qqurq6urNTQ0Ro8eDZbG8Hg8DocDx0PcuXPHw8PD0dERQRAQJicnhz9BgTlPUVFx9uzZ48ePJ5PJmJMLSHMePnxIp9PFxMRqamoKCgq4XC6VSv358+e8efO6PC9hYWEvL6+1a9deu3aNzWarq6vfu3ePRCK9ffuWy+U+fPjw33//3b9/P//py2lpaTt37nRwcBg9ejSXy3316pWlpSV2tmtjY2NAQICBgUF1dXV5eXlGRsaLFy9OnjwJFkCLi4sFBODxeGw2+4+iDEh4PN7f85iCw+HAAUY8Hg+Hw7Vt9cPfJwV+9lgXpVKpISEhBgYG5eXlRUVFJSUlfbCLamtrv3nz5uHDh15eXg8ePMCOLOTvWgK6xdTUFI/HL126NCgoiEQitd0DBRpi3rx5169ff/v2bX5+Po1GO3DggJCQ0MqVK7HwAq3TXImlpKS0s1a5XC7oMLm5ufxRIiMjwbrMypUrHz58yH/KIRYFRdH2d7bOw59vG8E6qXgRBImNjRUXFx8zZgy4K9CrqVTqo0ePLC0tHz58KCYm9vnzZwEBOqB4sY7UzjJ2BoHi4PH4WbNmbd68ed++fQwGQ0hIqJvy7Wv0x3lBWFj40qVLz58/DwoKysjIKC4ubj4AO6OIuoke6NUY/M0qMBtiByl2bdP/0ZzbTbRYIoGLnS91G/NUi6pV4GLzB4ZunacgEAg//Wy2+0+IRCLYA/Xu3bslS5bs37/f29tbTEwsLi4OHCXbSX2Hw+FMTU0PHDiwe/fu8ePHg9TweLyoqCiTyayrq6PRaHV1dZKSkpjex+YYFEVFRUXB/qCioiLwyYLH45HJZDMzs3v37vn5+c2fP59AIPBPGPn5+YqKijNmzFi9evW7d+/AhnyAkpLSrl279u3bt3jxYmzNiEAgNM8FSxArPplMplKpHA6nrKyMQCCQSCQEQYSFhdXV1c+ePXv79u1169bJycmBRSgsiqam5ps3b4SEhHbv3n3s2DGw4xqEkZKS4k9QWFiYTqez2ezy8nIul0uj0aqrq+vr6+l0Ov/eH4gAIiIiHA7nwYMHWVlZkZGRXC43NTVVSkpq2LBhXZtRdHT0P//8QyAQ9PX16+vrL168GBkZSSaThw8fXl5efvPmzTdv3pw/f15dXR2LkpiY6O7uvmPHDnAOV3V1dV5e3vjx47EATU1NysrK8fHxHz58SE5O/vXrF4fD0dHRGTly5KBBg8CXbRwOp6ioWFRUBPbZDR48+D+jDEgE6kFZWbm3JeohFBUVKyoq2Gx2cXGxvLx8a6+XXC730qVL/H1S4GePdVF5eXklJaWnT58mJSVFRUUVFhb2wS6akJAA9uTicDghISEFBYXmXUtAt1RXV1tZWT1+/NjW1lZDQ6M1c2CBhsjPz/fy8qqoqNDQ0BAREaFQKG5uboqKikeOHMG29HK5XIHWaa7EuFzuf9aqpKQkiqLV1dXgE7S4uDh/lKysrKFDhyopKRkZGZWXlwNHtgJRgD+R/+xsnUcg3zasfjqveLlcbnR09MSJE4lEIggg0KtTUlKKi4tHjx6toKCgo6MD/M13QPEKRNHQ0GhnGTuJQHGSkpLIZPK///7r5eU1bNgwsJFhoNLf54Wamprbt28DX854PF5eXr75AOyYIuom2j9yO0Nrzco/Gw4ePFhJSak7mr6dc26X02Kpm1/skg7f9jxVW1vbXLU2n6eaPzB00zwFgUCaM9B8SI0cOfLr16/l5eU/fvzYt28f0DJWVlbPnz9ftGiRrKxsN803Q4cOnT59+urVq/F4/PTp0/n9lWCgKLpy5cpDhw5dvnxZQUHh8OHDN2/e9PPz8/b2/vTpEzCc3rBhg8CSmampaVBQkK2tLZ1OnzFjxt27dw0MDNqYs/F4PH8uXl5e9+/fbx5s+vTpERERNjY2eDx+165dgwcPrqmpefLkyaxZs9avXy8kJGRkZDR16lSBlLdt27Zv3745c+aIioqWl5cvXbqUP8HPnz9jCQoLCx84cCA0NJRGo6EoSqPRPD09cTjcrFmzRowY8Ye1+xdha2tra2tLoVDc3d2XLVtGIBDy8/OVlZW73Le3urr6hQsX4uLigCdRERGREydOKCgo0On0TZs2bdy4UUJCwsHBQVZW9uTJkyoqKmw2+/Tp0+np6UeOHEFRdOvWrcOHD8fhcLKysliakpKSHh4eCIK8efPm8+fPCxcuzM7OXr9+vbCwsLKyMlhLRVHUxsbGw8MjNDSURCLt2rULbHtuI8qARKAeethxRi8yevTooKAgJyen+vr6AwcOtPaFAEVRbW1trE96e3vn5ub2YhflcrkHDhwwMTExNDTU1dXlj9Llx192ABUVFT8/v8jIyLKyss2bNw8bNoy/a33+/PnDhw+HDh3i1y14PP727dtBQUF1dXWHDh1qZ0McP3784cOHGzduxOPxenp6wKx75MiRb968mTBhwv79+wkEQm5urq+vL3/rNFdienp6Z86caaNWEQSRkpKaMmXKzp07CQTC1KlTJ0+ePHXqVCyKkZHR9u3bV61aVVFR4eTkFBsbC8rIH2Xq1KkfPnz4z87WeQREBXXVYsjOK15LS8vi4uLp06djaQr06ilTpiAI4u3t/ejRo8rKSm9vb+QPFS8wZnFzcxOIwmKx+MvYTZXZvDg+Pj53797lcDjz5s1DURTI1k8PfW+b/j4vSEhINDU1gedYXV1dGxubuLg4bAB+/fq1w4qom2j/yO0MzZsV6ORdu3bxz4aioqLd0fTtnHO7HIFST5gwwdvbW0dHh/+iubm5hoZG50vd9jxFIBAEpiQVFZXm8xSDwRB4YOjyeaq/O7mDQLoRXt9j27ZtKioqHYtbUVHh4uIC3Mjxw+FwfH19Q0JCOpZsXl6es7Nzx+J2HjabXVJSwmQyeTwe+Nu7VFdXl5SUcDicdoavq6tbvXp1ZmZm94lkaWnZfYn3KS5duhQcHNwlSXE4nNLSUjqdDn7S6fTS0tL2N2s7oVKpzccjnU4vKipis9ntiWJlZdW1IvUdBOrBw8MjLi6ud0XqATgcTlFREY1GAz9jY2M9PT1bDCnQJ/tmF+3d2QEDfADHarVt+QFNTU3FxcUMBgP8bEO3CNR8ZWVlVVVV18n+P7TYEBUVFWVlZS2GZ7PZ+fn5NTU1bUQR6GxPnjy5fPlyl0rdcr40Gm3BggUtBusZxUuj0fLy8gQeGP5I8bYYRaA5ekw5U6nU6urqP4rSf58KBOp8/vz5DQ0NvSvSH1FRUUGlUsH/AgOwRQQU0Zs3b3x9fbtbSH7aOXI7SYujT6B+BMIcPXr0y5cvnc+6Pa3Qfv5Ii7ZYaoGL7Zmt+Fm3bl1+fn6LefX9eerz58/Hjh3rcqkgkP9k7Nix9vb2vS1Fqwy0HVIyMjKzZs2KjY2dO3cu/3UwOwps+ekv4PF4cHYSgiDYLv1ehEwm/5HZHR6PV1NTA1aBkL4DcHKJ/RQWFu6Oj94tHuIrLCwMTiJvf5QBSdv1MFBBUbSdpRbok7CLtgEejx8yZAj2sz1di0Ag8EdpA4Ga76aNxi3WahvnbOLx+Ba3yfBHaX9n6zztPBK0ZxSvqKgo5vKcP68/7dUCUXrr2NM+OOK6j/4+L/zpAGy/IuomeqZXt9isAvXTTU3fk2pQgBZLJHCxq0rdv+YpCATCz//4uutTuLq6Pn78uGvPFOskdDo9JycHHHAD6YPExcWBIy0GPIWFhUQicWD70RDg72ncjIyMwYMHYw41/xJqa2upVGr/Nc8cMLPD36BbqFQqi8UaOnRod2fEZrOTkpIwv+MDlb6snPuybH9EfHw8doTl30B5eXlDQ0OX+81sJ31q5GZnZ0tLS/e1syN7TIu2xu/fv9XV1QcNGtRbAnSGqqqqmpoafi+BAw8Oh8NisfppA7VIU1MTj8frCztCOkNhYeHYsWP5z0brU/TRHVJ4PB6cktBHyM/PP378+OXLl3tbEEjLWFlZ9akO031cvnxZXl4eeLf9S5g5c+Zf0rienp6LFi0yNDTsbUF6lLi4uKdPnx47dqy3BekgA2Z2+Bt0S3BwcEVFhbOzc3dn1NDQ4ODgEBwc3N0Z9S59WTkPmKeCBQsW3Lt37+/xPvP27du0tDRXV9deyb1Pjdxjx45ZWFiYm5v3tiD/hx7Toq3h7Oy8b9++frrt6MuXLxEREZ6enr0tSDeSmpp65coVX1/f3haky+j1Pt8l9PGXiz66INUZKisry8vLyWRyeno6OP1NS0sLj8cnJSWNHDmyk0d4UKnU9PR0Ho83aNAgLS0tgb0M9fX1paWl2Kf++vp6KpU6aNAgAoEwsD87/51wudycnBwcDqempoaiKIPByMjIUFJSEti7W1hYWFdXp6WlRSAQGhsb09PTZWRk+KdSLpebn5/f1NQ0fPhwFEXZbHZ6erq4uLiKigqDwaisrAQnxQ4aNEhOTq4L5RcQmEqlFhYWjhgxQlJSEsuXRCLJyckBL5jV1dXABwEYViIiIvzFx8pSVlbGYrHweLyUlFRdXR2LxUIQhEAgyMvLY16Nq6qqioqKhg8fjj1k19bWVldXDx06tLy8vMUovQsoO4IgEhIS/KOewWCUl5eDT4UsFisjI0NOTg4b7M2bj78D8NeVrKzs32PT2ryiWqOsrIxCoWhpaYHK6UAX5R9ZWLL19fXZ2dlqamqSkpICow8EaLsboyiamZnZ1NQ0cuTIPtI/ARwOJzc3V0VFhUgkVlZWUiiU4cOH8/er5t2YvwO3AX9DcLlc/uI3T5PD4QiM4vr6+ubDR0B/crncvLw88FMg98LCQlFRUWB/wa9OWxuVubm5WIO2v7N1Hv582wjWecXbot4QGCwtdgDkfzUt2H7CPxBazBrkXlhYiOnqdpaxS8BEbXGQAsrLywkEgpSUVGvy90cE6rw/go1ZBoORlZU1ZMgQfvupDiuibqJnenWLzSqgoLqw6SkUCo1GGz58OIIglZWVdXV1QLVSKJSampoWT17qJhgMRmZmppaWFpFIZDKZOTk5Ghoa4Ej0zMzMkSNHdtXDTxvzFNJSKwsoDQRBms/szdNBECQ/P19VVVUgd+xiG4/0XVLMPsgAUFkC9ORM1330r1L0oYfpLoHD4Vy/fn3SpElfv359+PChsbFxYWEhiqIBAQG/f//OyspavHhxZ9IPDQ29devWxIkT6+vrExISzp07Z2BggN39/fv37du3//nnH7C5Oikp6d69e3PnzhUXF4cLUgMMDodz7NixrKwsHo+np6fn4OCwY8cORUXF7OxsNzc37IvW3bt3nz17Ji0tTSKRtm/f7u7uPnTo0Ozs7IULFzo5OSEIwuVyz507FxMTQyQSVVRUdu3atX//fjqdXlFRsWjRIk1NzfPnz7NYrNzcXHV19Rs3bnSV/BQKxdXVFRO4oaHhn3/+0dXVTU5O9vHxiYqKunv37pAhQ0aMGOHm5iYuLs7lch89ehQeHs7hcH7+/Onu7l5cXIwV383NDei79PT0devWKSsri4mJrVy58tmzZ8XFxfX19QUFBQ8fPgTPQN++fTt69OiIESMKCgr8/f2VlJSYTOa+fft4PN7BgwdPnz7dPErvwmQyXVxc6uvrRUVFbWxsli1bhl338vKi0+lnz56tr6/fvXs3DocrKiratWuXhYUFgiCJiYn8zXf06NE9e/ZgHcDY2BirK1dX1z5lpNx9tFhRLfLx40c/Pz8NDY2KigpfX98fP378aRetq6vDRtbBgwfB02RKSsrevXtVVVWzs7O9vb1DQ0Obh2mjG//777+PHj3Kzc0lkUgEAuH06dM9V3f/xfPnz319fR88eJCamnrq1Cltbe26uroTJ06A2ad5N+bvwG0ky98QPj4+ly5dwop/7NixrVu3CgyNmpoa/lEcGBh46tQpgTAC+nP79u3e3t5JSUni4uJaWlo7d+7EDJTy8vIcHBzc3Nzmzp3Lr069vLxaHJVXr14NCwvD4/H6+vrr16/38PBoT2frPPz57tq1q7VgnVS8np6e48ePb643BAZLYmJi8w6AIAimaf39/dPS0rCB4OPjExERIZA1giAJCQmHDx9WUlKqrq4+e/bs8+fP+cvYrUZkmKh+fn4BAQHNBymCIAUFBZs2bdqwYcOcOXMCAwOby98fEajz/ug8Cxuz48aN27Ztm6ysLDhTctKkSUgnFFE30c6R20labFaB2VBSUrILm/7169c+Pj7BwcHa2tpfvnz5/v378ePHeTzeiRMnwLsJ5pq2u8nPz1+8eLG7u/uqVavKysqOHj16+vRpRUXF0NDQAwcOeHt7W1tbdz6XNuap06dP//vvv811F7/S2L59u5+fH38UUVFRNpvt5eUlcPHVq1cBAQECuy+xi20/0tvb23e+pH2NAaCyBBDQCf3UXLrflWKgLUilpqaWlpYaGBgkJSVNmTLF09OzrKxs27ZtFRUVZmZmp06dmjZtWmfssXE4nLm5+cGDBxEEOXDgwPfv34uKimRkZIyNjYODg1ksVmVl5fHjx0VFRcFyA0Z+fv7NmzfZbLajo2P/9ZYCwWAymTo6Oi4uLvn5+f7+/jU1Nfb29tbW1ufPn09ISAALUlVVVZ8/fz516pS8vHxMTExZWZmNjY29vf2XL1+CgoLs7e3xeHxTU1NycvK2bdukpKQOHTr09etXISGhU6dOUanUoqIiY2NjY2PjkpKSnTt3enp6dnJ/Hz90Oh0TOD4+Xk5O7sCBA0ZGRkeOHPnx40dBQcGePXssLS2xR38URZ2dnZ2dnV+/fk0mk+fOnfv582es+AwGA3wYycvLmzZtmoeHBxDVzMyMzWYfOnRo/vz52NJSYmKihYWFq6vrpk2bsrKylJSUXrx4UVBQoKmpKSMjc/r06eZRepfq6mphYWFvb29FRUXsOwOLxTp+/HheXp6ysjKCIPHx8UJCQmfPnv348eOLFy/MzMxQFBVovvr6ev4OICMjw19XfwnNK6q1kCiKHj9+XF1dfcuWLYWFhdXV1X/URRcsWODm5oaNrNraWhkZGS6XGxISsnTp0gULFsTHx6Moyj/6QBikzW6srKwsKyu7detWBEFcXFwoFEof2SSVnZ0dHBwsIyPD4XBevHjh4uJibW3t7e0dHh5uZ2eHNOvGAh24DfgbIisri7/4GRkZzYeGwCiWl5dvHkZAf+bm5qakpPj5+QkLC7u5uRUUFICP+QwG49q1a4MGDcLhcALqtKqqqnmyVVVVUVFRx44dExUV3bNnz4cPH9rZ2TqJQL4lJSWt+dPtpOK1tbX98uVLc73B30YFBQUtdgAEQTBNKzAQhISEmmfN5XJfvny5ZMkSOzu7Q4cOhYaGCpSxW/ezYKIKTJHYIM3NzT127Bh4yOZyuc3l748I1HlUVNT8+fN7W6g/g3/MRkdHDxs27MSJE1FRUU+ePDE1NQUbGzumiLqD9o/cztBas/LPhiEhIZKSkl3Y9DgcTlJS0tfX18/PD7uYm5tbU1MzatSoz58/L126tFOl+hMGDx5879698ePHi4mJgSssFuvTp0+2trbv3r2bPn16573ztDFPpaWlNdddAkqjpqZGYGbX0NCg0WgCF5OTk588eSKwD+j58+fYxbYf6TtZxj7IAFBZAjTXCb3oLq3D9MdS9INNXH9EfHz80KFDhYWFeTzegwcPFi5cuHDhwqFDhw4dOlRRUZHH4+Xk5HQmfR6Pl5+fHxoa+uDBg+/fv2tqaiYlJWVnZyMI8uPHj4qKiuLiYnNzcx6Pd/bsWS6XiyDI79+/k5OTDx48qK2tPXHixC7c5ALpRURERBYvXvzp0ycnJydjY2MdHZ3p06d7eHjcvn0b+w5fU1OTnZ29d+/eZcuWffv2zdDQ0NHRkcVivXr1CvNRSiKRrKystm3b5ujoaGpqWlNTExcXt3r1amdnZzqdDtL5999/jYyMunYHjZqaGibw5MmTly1bZmxsnJ+fn5iYOHz48OTk5PPnz9vY2Bw8eJDJZGKxampq7t+/v3r1ajk5Of7iY9NzZmbm27dvV6xYsWTJkry8PARB4uLiCgoKlixZgiUybdq00NDQ6dOnMxiM0aNHp6WlffnyZenSpdj6ffMovQuFQvn169f27dstLS1fvnwJLhKJxMOHDzs4OID3HwqFIiMjA87PqqqqYjAYWHSs+QwMDPg7QE5OjkBd/Q20UVECTJkyZdCgQYsXL2axWJqamn/aRaWlpflHFvgOwePxsrKyAgMDV6xYce7cOXFx8eZhkDa7MZlMdnFxkZGR+fz5M4lE6iNbXxsbG69du7Zo0SIymYzD4UgkUmNjI4/Hq6ysLC4uBmEEurFAB24D/oYYM2YMf/G5XG7zoQHAaqzF4SOgP8F+FiaTyWQyS0tLKysrQbDg4GBpaWngmlpAnVZVVTVPtq6ujsvlSkpKiouL4/H43Nzcdna2TiKQb3V1dWshO6l4RUVFm3dO5P+20YgRI1rsAPyaVmAg8Hi85lnzeLyysjIFBQUUReXl5fPy8tpZxs7DL6rAFIkNUjU1tStXrhgYGOBwOAaD0VrV9S8E6rykpKS3Jfpj+McsMNHicDj19fWFhYVgAHZYEXUH7R+5naG1ZuWfDSsrK0tLS7u26a2srPB4/MOHD7Er4eHh2traCxYs+PDhQ2NjY+ezaCdDhw5dtGiRn58f9libmZlZW1trb29fXl6ekZHR+SzamKeEhYWbt7KA0hg0aFDzmb35dD9v3rxTp04JbGvgv9ieR/qBxABQWQL0jE7obvpjKQbaglRJSQmwBMbhcPPmzbt06dL58+czMzOjo6MJBIKYmFhZWVknsygqKvr+/XthYaGXl1dzEwATExNzc3MbG5uSkhJM+9BoNC6XO2PGDGtr65MnT3ZSAEjfYd68edevX3/79m1+fr6wsLCXl9fatWuvXbvGZrMRBOHxeHg8/ujRo4GBgampqVlZWTQa7cCBA0JCQitXrgQpVFVVvXjx4uTJkxcuXIiIiKioqFBTU7t169aBAweCgoKYTCaVSv358+e8efO6XHgBgdPS0nbu3Ong4GBiYnLp0qXnz58HBQVlZGSkpKRgUWJjY8XFxbEDaPiLD644Ojp+/PjxyZMnhoaGz58/53K5r169srS05Hcc8+jRI0tLy4cPH4qJib179y4gIMDAwKC6urq8vLy8vLx5lF5HW1v7zZs3Dx8+9PLyCgoKamhoaB4Gh/ufE0uBqxdscU2g+fg7gEBd9VhxepfWKqpF1NXV7927RyKRwPb4P+qiAiMLey1nsVi2traPHj3S19d//Phxi2Ha7sZcLvfhw4f//vvv/v37se+9vcvDhw/pdLqYmFhNTU1RUdHy5cuDgoIcHR0zMjKwL8/t6catwd8Q/MU3NDRsMU3+GmsjX0yBMJnMWbNmbd68ed++fQwGQ0hICEGQlJSUkJAQAwOD8vLyoqIiBoPBr06FhIRaS5bL5YI+hqJo+ztb5+HPt41gnVS8rekNrI3evXtnb28v0AEaGxsFNC3/QAgLC2stawCPxwOFamcZO4OAqBkZGS0OUn6EhYXblr8/gtV5P0JgzI4bNw6Pxy9dujQoKIhEIoHidEYRdRM90Ksx+JtVYDbE4XDNw3QGEom0bdu2Z8+ega/mNBrt1atX0dHRt27d+v79e1JSUuezaCc4HG7BggV4PD44OBgU+cOHDykpKSdPnkxPT3/16lWX5NLaPCUqKoo0a+XmSqPFmf1Pp/v/fKTvkpL2TfqjymqNntQJ3Uf/KkU/EPGPAH7ywP/CwsLy8vLa2tpycnLl5eU8Ho/JZHZyXygOhzM1NT1w4MDu3bvHjx+PoiiBQKDT6Ww2G7xLl5eX0+l0KpUqLCyM5SUkJAS+EZWUlMAFqYFBZWWll5dXRUWFhoaGiIjI169f//nnHwKBoK+vT6PRwIKUhITE4MGDuVwuDocD/cTNzU1RUfHIkSPYlqK6ujoOh6OjozNy5MhBgwaJiIiAo1JB18LhcKmpqVJSUl1+BHJ0dDS/wPHx8e7u7jt27FiwYEFNTc3t27erqqoQBMHj8fyenqOjoydOnAhcJvMXv76+HgQIDg5OTEzE5K+urs7Lyxs/fjyWL4/HKy4uHj16tIKCgo6ODtioHx8f/+HDh+Tk5NTU1OZRep2EhIRnz55h7Yg9NfKjqKhYUVHBZrOLi4vl5eXBGzWCIPzNV19fj3UAYWFhgbrqwQL1Jq1VlABcLvfSpUuRkZFkMnn48OGVlZWJiYl/1EUFRhbYdMPvMxuPx7NYrOZh2u7GXC735s2bb968OX/+fN85uVlERITD4Tx48CArKysyMrK6uvro0aN37tzR19fX0NAAYdrTjZsj0BDl5eX8xW8tTf4aazGMgAKpqqoik8n//vuvl5fXsGHDwNdpLperpKT09OnTpKSkqKgoDofDr04zMjKaJyspKYmiaHV1Nfg8CPyJ/Gdn6zwC+bZh9dNJxdu8czZvo8rKytraWoEO0NTUxK9p09LS+AcCk8lsnjUOh1NUVCwqKuJyucCApZ1l7CQCov769av5IBWgtarrdwjUea9YsXUGgTFbUFBgZWX1+PFjW1tbDQ0NYGTaMUXUTbR/5HaG1pqVfzYcPHiwkpJSlze9pqbmokWLrl+/3tTUlJSUNGjQoJMnT+7fv3/ZsmUCe1q7G2Fh4W3btr18+bK0tLS2tvb79+/Aq+axY8e+f//eyb0Cbc9TLbaygNJAEKT5zN6B6f4/H+k7U8w+SH9XWc3pGZ3Q3fTHUgy0t6CRI0d+/foVLArevXv38+fPTU1NI0aMmDJlSl1dXUNDQ/MTfDqJubn5gQMHQkNDaTTaqFGj8vPzHRwcuFyuh4cHMNlDEIRMJltZWa1fv55IJPYdQyRIZyCTyUQicePGjXg8Xk9Pz8LCYu/evXFxccB5J3jwkpOTs7S03LFjx6BBg3R0dJKTk1+8eDFy5Mg3b95MmDBh//79BAJBWVlZV1d3/fr1wsLCysrK8+fPT0pKcnR0rK+v37JlC5FIzM/PV1ZW7vIFC3V19QsXLgCBN2zYEBAQkJ6efuTIERRFN2/e3NTUtGHDBhRFdXV1MUdOXC63uLh4+vTpzYs/YsQIBEFQFFVTUzty5MiQIUNoNNrp06crKytxOJysrCyWLx6Pnz9/vre396NHjyorK729vYFLtTdv3nz+/NnCwiIrK0sgSq+joqLi5+cXGRlZVla2efPmFo8RGT16dFBQkJOTU319/YEDB7A3Iv7mCwkJ4e8A5ubm/HXVo0XqPVqrKAFQFNXW1j5x4oSCggKdTj927NihQ4f+qIsKjCzQzVAUXbJkiaen54cPH+h0ure3N4vFah6mjW6cm5vr6+srISHh4OAgKyvbRz4w2Nra2traUigUd3f3ZcuWpaen7969W1paWkpKyszM7PPnzx8+fNiwYcN/duPmCDTEpk2bNm7ciBV/x44dnz59ap4mf421OHwEFIi2tnZoaOjdu3c5HM68efMUFBQQBNHT0ztz5gyXyz1w4ICJiYm+vj6/Oh0/fry7uzuWbGxs7IcPHw4dOjRlypSdO3cSCISpU6dOnTr1w4cP/9nZOo+UlBR/vqCuWgzZScXbvHM2byNvb+/s7Gz+DoAgiKSkpIeHB/K/mnby5Mny8vL8A+H+/ftY1tLS0i4uLm5ubjY2Nh4eHqGhoSQSadeuXSwWi7+M3VSZAqIuXLgwOzsbG6TAiMbNzY3/yCoJCYkWq67fgaIof52bmpr2tkR/hsCYVVFR8fX1DQoKqqurA/50OqyIuon2j9zO0LxZgU7etWsX/2woKira5U2PouiiRYs+fvzY1NQUGhpqbm6ura2NIMj8+fPd3d27JIv2o6Wl5ezsfPny5eTkZCKRaG5uLiIiMmTIkKCgoMjIyAULFnQ45bbnqZMnTwq0MtJMaZBIJIGZXUVFpfl0/58n5f3nI32Hy9g36e8qqznNdUJvS9QR+mUpeH2Pbdu2qaiodCxuRUWFi4tLSUlJ81uRkZEHDx5samrqQLJ5ef+PvfOOayLpH/+mQei9gyIiRVSwYgMVPMUKiP0Qe73H07vTs52eCli4s5zdO+tZEFQUFZUiTUARVJDeO4QSCCQQEpLN74/5fffZZxOQHpB5/+HLLLMzn5lPmc/uzs4Wbtq0qXMiQXqBWbNmSaVdJpNZW1sL/i8UCisqKrhcLqFMXV1dRUVF2/VUVlZiRisUCsvLyxsaGiSWvHLlCljz3HVaExhQU1NTWVnZdg347mM0NjaWlpYKBII2TuRwOIWFhTwerz1yzp49uz3FehTwDBN8fL01hEJhaWlp22UIEMZq3759iYmJXRK0P0AYqISEhP3790ssyeVyKyoqhEKhxL+2x0TxnoXR3NxcXFyMmZ/EMu0xY0DfnB3YbLb40LVtxm3EljYU0R7XaK0MIYBUVlbW1dW1UY/of8Npa9XW1NRUVVWB/xOM7fHjx1evXm27iU6Db5fD4bi6ukos1vXAK9E4CTqSaAAECI4gsWkul4tvC99HUS8GZ4lOSoAgv7Sygq5DGHMXF5fGxkbpitRpWlpaysrKmpub8QfbDhqvXr06c+ZMbwj3f7TTc7sIQa0AQoAilPHy8oqOju4JYbpCj0bR9rBx48aioiLx419NGPCxCzv41XjbCdpI6aOiory9vbu9RelCsNv09PSdO3dKV6QuQrAWqdt85yD0YsyYMe7u7lKUp22+tRVSGhoac+bMSUhIWLhwIf64UCj88uXLsmXLBs6rMZBeAL8MEuxMKV5GVVX1q/Xgv5NKJpN753O8rQkMAF8yahuJq0Dl5eW/+sxTQUEBvNXfX6BQKPr6+m2XIZPJBgYGHaq2PWP17dH+gaLT6V00UYlfIJaVlcV/cERimf6uGkVFRfENL9pjxhJpQxHtqbO1MoQA0p7PRePDaWvV4g2jE17ZadpjkEh3BF6JxknQkUQDIEBwBIlN0+l0/AC2s4/dTntsQ1qydTuEMe/XUKlUcSftdCDqIXrHciSqlRCgviXV9z6dSBh6SPVSSemlyLdnt9/GbNK/evH/d9TrU+zcufPRo0fTp0+XtiD/hcPhpKWl2draSlsQiGTevHnj6OgobSl6g5ycHDqd3ve/39mNhIeHOzg4SFuK3iApKcnIyKh/TSFdh8lklpSU2NjYSFuQTvLNzA4DIbaABUHgFeMeRSAQxMbGTps2racbki59OTh/M1lBVFTUlClTBs7DVLCcRFrvXfYpz01NTdXW1m7P3djepNeiaGvEx8ePGDGifz3UxKisrKyuru7er2b3Nerr63NycsCnNr8NpG7z3UJSUtLo0aPv3LkjbUEk00dnODKZfPbsWWlL8V9KSkrOnj176tQpaQsCkcySJUv6lMH0HLdv39bU1Jw3b560Bek9li5dOkCU6+XltWDBAmtra2kL0qskJSUFBQUdOHBA2oJ0km9mdhgIseXFixe1tbUeHh493VBjY+O2bdu++cDVl4PzN5MVeHh4+Pj49OsFmx3izZs3OTk5W7ZskUrrfcpzT58+PWnSpEmTJklbkP+h16Joa/z8888///xzP90/Oy4uLj4+/qeffpK2ID1Idnb2v//+6+XlJW1Bug2p23y3MGvWLGmL0BZ99IZUV3Y1zs7OVlFR0dHRYbFYMTExCILY2dmpqKjk5+fT6fTOrRNubGyk0+mampoMBoPD4ZiamiIIwmQyGxoa2rNLemVlZVZWlkgkkpOTMzc3753v2feEqCUlJTIyMuATSAiCFBcXy8jI1NfXm5ub90QX2o+MjEyf2ga751BUVFRWVh4gnQUMHOXKy8urqqoOkM5iqKqqysvL999eY7ODtAXpKgMhtigrK/P5/F7oo5ycnKys7Lc9mEjfDs59WbYOAQxp4NyQUlFRUVRUlJbu+pTnKigo9MGUoNeiaGvQ6XR1dfW+NiztRFVVVUFBoZ8K306qq6vl5OS+pT5K3ea7hT7+kcf++nHc1qioqLh165asrGxiYuLy5csTEhLi4uKWL1+enZ3d3Nx8/fr15ubmrtT/8uXLBQsWZGRkIAgSHR199epV7FN6bRAcHHz48OHQ0NB79+45OzsnJyd3WgAURb28vOLi4qQiqq+vb0hICPbz/v37r1+/jo2N7Xg/IBAIBAKBQCAQCAQCgQxc+ugKqU7z8uVLMzMzOp1++fLlrVu3Ojs7Iwjy6NGjioqKKVOmcLncT58+TZ48udP1k0gkFRWVM2fOYAt6URSNjo5+8eLFkCFD3N3dP378mJ+fn5GRMXLkyBUrVsjKyoKz7Ozsfv/9dwRBDh06FB8fX1VVlZycTCKRZs+eHRAQ0NLS8v333w8ZMuTBgwdNTU1FRUXz5s2LiYmh0+nr1q2jUql+fn6pqakzZ840NDQMDAwsLS21tLTMyMgICAgwNDRcs2ZNQkICqHDTpk1KSkoSRW1sbHz48CGoZ/bs2VFRUV8V9e3bt2CHeBqN9uTJEwRBkpOTU1NTJ0yYAMYWIzIyMjAw0NTU1MPDAwgAgUAgEAgEAoFAIBAIBCKRb2qFlEAgSEpKGj58OIvFqqurwzaNW7x48bRp06hUqpmZWUJCQhdbmT17NoVC8ff3Bz/fvXt38eJFd3f3xsZGb2/vxMTEt2/frlu3Ljg4OD4+HpQRiURFRUXBwcF+fn7x8fFmZmYfP37Mzc2dNWuWl5eXlZWVvb39/v37CwsLnz59iqKohYXF3r177e3tc3JygoODL1y4kJeXt27dOl9f37y8PFtb2xUrVuTm5p4/f97Dw4NMJp8+fTohISE3N3fJkiX4dd14UUUiEb6eoKCgT58+fVVUY2PjmJgYNpvN5XJjY2NRFC0rK1u5cuXz589DQ0OR/9sA8uPHjxcuXHB3d+dwOEFBQV0cYQgEAoFAIBAIBAKBQCDfNt/UDanGxsaGhgZ1dXUajUalUltaWsDxpqYm8Kaeurp6VVVVF1uRlZXdsWPH06dP8/LyEARJT0+fNGmSjY3N4sWLGQwGn893cHCwtLQcMmQIm83GziotLY2Pjy8pKfH09LS3tyeTyRMnTqRQKHQ6fdasWQ4ODnp6egUFBWpqajNnzrS0tBwxYoStre3gwYObmppycnJcXFxGjBgxZ86cL1++IAhCJpPT09MzMzM9PT3Dw8MrKipQFJ04caK+vj5YGnb79m0URfGioiiam5uL1QPexfuqqITVZDQazdXV1draesaMGWlpadjxnJwca2vr0aNH79mzZ/ny5V0cYQgEAoFAIBAIBAKBQCDfNt/UK3sUCoVMJvN4PFVVVWNj4+joaAsLC4FAcPToUR0dnZ9++onH43XLp3PNzMzc3NyOHTs2d+5cNTW1/Px8oVBYVVVFpVKpVCqZ/P9v84lEIvAfEok0ZcqUQ4cOYX8C0iooKPB4vIaGBhRFGxoaVFRUSCQShUJBcHuPkclkBQUFBoOBIEhpaamGhgaTyRSJRKqqqlOnTj116lR5eXlaWlpKSgrovp2dnaWlpZ6eHlj0hInq5OREqKe5ufmrorLZbJFIxOfzBQJBfX29UCgsLy8H66QMDAwqKirAWUpKSrW1tSiKRkREVFRUuLu7d32QIRAIBAKBQCAQCAQCgXyrfFMrpOTl5Q0MDAoLCykUytatW4OCghYuXLhgwQIGg/H999+jKFpQUGBpadn1hshkspubm62trUAgmDlzZlNT04IFC7y9vVevXi0jI9P+eoyMjGbOnLlu3boVK1aMHj3awsJCYltr1qy5du3a/Pnzs7OzXV1dtbW1z549O3z4cAqF4uLism3bNqFQCO4fkclka2trR0fH4cOHE0RFUXT16tX4etojoYKCwtixY3fs2HHo0CGRSEQmk589e+bs7FxSUjJ37lysmL29PYIgLi4uV65csbGxaf8IQCAQCAQCgUAgEAgEAhmAfFMrpMhk8qxZsyIjI52cnIYMGfLkyRMGg0GlUrW1tREEqaurKy8vX7FiRVeaWLt2LfiPvLz8rVu3wP/Pnz+PFZg2bRr4z7Fjx7CDq1atItTz66+/gv+sX79+/fr12PHr168jCGJqampra4sgyJ49e8DxwMBArMxvv/0G/oPtVo4gyMKFC9sjKr6en3/++auiksnkH3/88ccff8SO7Nq1C/v/3r17EQTZsGEDgiBnzpxBIBAIBAKBQCAQCAQCgUDawTe1QgpBEFtbW3V19cLCQgRByGSyvr4+uBuFIEhSUtLUqVONjIykKR8EAoFAIBAIBAKBQCAQyICHhG0e1HfYuXPno0ePrKyspC3If+FyuQUFBdh7cJC+xsePH8eOHSttKXqDkpISGRkZHR0daQvSewwc5ebk5Ojo6CgrK0tbkF6lvr6+qqpq2LBh0hakk3wzs8NAiC2VlZUtLS2GhoY93ZBAIEhNTf3mX2Dvy8G5L8vWIT5//jxq1Ciwu+hAoKamprGxcfDgwVJpvU95bn5+vpqampqamrQF+R96LYq2RlpamomJiZycnLQE6Aq1tbUsFsvExETagvQgjY2NDAZj6NCh0hak26iurhYIBHp6etIWpEuUlpaOGTPmzp070hZEMn30lT0KhRIcHCxtKf5LUVHRsWPHrl69Km1BIJKZPXt2nzKYnuPq1ava2trt3ALs28DJyen169fSlqI32L9/v5ub27dxEdV+EhMTnzx54u3tLW1BOsk3MzsMhNgSEBBQU1OzadOmnm6osbFx1apVAQEBPd2QdOnLwfmbyQpcXV3v3bsnLy8vbUF6idevX2dmZu7cuVMqrfcpz/X29ra3t7ezs5O2IP9Dr0XR1ti0adNvv/02aNAgaQnQFaKjo2NiYvbv3y9tQSADjj5+cdFHb0j1KOAByPDhw2VkZPLy8j5+/GhoaGhra4s9gCoqKho8eDCLxSorKxNfqFVSUvLu3TslJSU7OztFRcWysjIqldoLT5X5fH5BQYG5ubnEv7LZ7MrKSlNTU+xIOwVrbm5OSkri8Xg0Gs3U1BS84Zienl5dXY0gCJ1Ot7CwUFFR6b5+QDpMc3NzdXX1wHnbtKCgoKWlxdTUFP9Vym+Surq6kpISU1PTXrvYAMENQRAURYuKigjj3NzczGQyhUKhrKyslpYWgiD5+fkkEmnIkCGgjFAorK6u5vP5CIJQqVQNDY26ujrsp7a2NvYZ06qqKgaDYW5uLisri6JoYWEhqAf8VSgUFhQUDBo0qENfgUAQpLq6mkqlqqmpSZQfRdGqqio+n0+hUDQ1NWk0GkF+BEHq6uo4HI5IJCKRSMrKylwutxPyIwhSUlKioKCgrq7ecSX0Ns3NzTk5Oebm5jIyMjweLz8/f+jQoTIyMgwGg8ViSfyYxlfBDInH4+Xk5GhpaeHnGoIh8fn87OxsAwMDDQ0NUIBgSMrKyuArrgiCyMnJAdtDEARFUbwG22lI+AACmiaI10N0OnB1r1Wrqam1tLTgfyoqKoJieKtGEITJZDIYDFNTU/ATkWTVhBglleCMomhOTk5LS4uFhQXmoYQugz72I69sg96fF3qH1gJRU1NTTk6OhYUFZoe9TO9YtUS1EgJUN6qewWBwOBxwUcBkMhsaGkDY7ErY7xxS1HsXEx4MLLAQTgHFxOvproQHAhk4DMQbUm/evMnPzx81atSlS5dev35tb2///PlzPz+/48ePy8vLBwUFnT9//vXr1zIyMv7+/qtWrcLf5YmPjz9y5IiDgwODwbh169bly5f9/Py0tLTEty3vdmpqanx8fMCu5+KkpKTcu3fv4sWL2JHU1FQlJaWvZuGlpaW7du2aNGmSSCRKSEhYt26du7u7j4+PSCQyMjJiMpkZGRmXL1/ulq8TQjoBj8fz9PTkcrmnT5+Wtiy9wT///BMeHk6hUEaOHLlr165v+D2F5OTkI0eOGBgY1NXVnT59GtvtrufAghuKon/99deHDx9kZGQGDRr0+++/g8u8u3fv3rlzR19ff9iwYT///PO5c+dyc3NFItGIESN2795NJpNZLNaff/5ZVlbGZrOLi4uvXr36+PFj7Ke/vz9Ic9+8eXP27NmhQ4fW1NT88ccf165dS0lJUVJSMjc3/+WXXygUSmBg4JkzZ/z8/PT19dsvf3Fx8bZt27Zs2TJ37lyJ8mdlZW3cuNHQ0FBRUXH79u2BgYEE+VEUffjwYWRkpFAo/PTp048//lhUVNQJ+QsLC1etWrV7927xr0n0QYqKihYvXrx37961a9dWVVV5eXn9+eef2trax48fBxNHRxeiY4ZUV1e3Y8cOFRWVgoKCbdu2YZ9exRuSh4fHb7/9pqenl5eXt3v3bvC0n2BIv/32W1BQEHjoYmJicuPGDTqdLhQKvb29MQ3+9NNPJ0+e/Koh4QPI5s2b9+3bRyKRwDQHvgbbQxACV/tP7Har3rt3r1AoxH7u378ffOEEb9Vnzpz58uWLj4+PpaVlQ0PD8ePHdXR0xK2aEKMCAwN7PzgLBAJPT8+CggJZWVkqlfrnn38qKCgQugz62L+8sjV6f17oNSQGIj09veDg4EOHDp08eRL/7eZeo9Oe2yEkqpXNZv/6669YgFJRUelG1b98+fKPP/4ICAiwtLSMjo6Oj48/duyYSCTqdNjvNNLSe9cTHlAPPrDgT9m9e7eSkhKhnp9++unChQvdkvBAIAOKAXdDqqmp6fXr1xs3bszKygoNDb148aKRkRGbzb516xaLxQoNDX38+DF4NCEvL29tbf3s2TP8yuGsrCwrKytw5NGjR42NjQiCfPnyZffu3VZWVkuXLg0PDw8ODtbQ0Fi/fn1LS8uzZ89YLJarq2tycvKnT58cHR3nzp1bWlp648YNLpe7cuVK8KZ6U1PT/fv3Fy5cSKPRnjx54uDgEBwcXFlZiSDIhg0bOBzOrVu3aDRac3MzgiDl5eU3b97kcDgeHh6ysrKgCTMzM6FQeO3atdmzZxsYGPj5+TU2Npqamt6+fZvNZhcUFCxatGjSpEkhISGhoaHm5uYaGhpubm6gU4aGhnv37tXQ0EhPT9+/f/+MGTNkZWWXLl3q6OgoFAp/+OGHlJQUeXl5gsyQXoDP5x87dqywsFCKr+v3JrW1tXFxcd7e3goKCnv27CkvL/9W14WhKPrixYslS5YsW7bs8OHDcXFxLi4uPdpiYGAgFtxaWlpSU1N37NihpqZ2+PDh+vp6DQ0NFEWLi4v37Nkza9YsKpXa1NQ0fPjw7du3FxUVnTt3rrm5WV5eXkND488//xQIBIcPH3ZxcZk0adKkSZOwn9hDVzKZfOzYMRMTk//85z9JSUnp6elnz56l0+m7d+8uLi5GUTQgIABbLNNOCgoKvL29wTWwRPkRBCksLHR0dNy3bx+dTpcoP5lM3rRp06ZNm16+fKmqqrpu3ToFBYWOyq+np3ft2jU5OTkSidSdGupJdHR07t27N3HiRGyxTEFBAYvFGjVqVFRU1PLly9tfFd6QysvLRSKRl5dXQEDAhw8fnJycwP0RvCEVFBS4u7vPnTv34sWLycnJ4IYUwZCWLl26dOnS8vLyX375Zf/+/XQ6HUEQHo+H12BBQcFXDYkQQMLCwmg02unTp9+8efP8+fOpU6d255jiEA9c7Vyk0xNWvXz5cgUFBezn0qVLQVt4qy4uLn7+/Pn27dvnzp178uTJyMhIZ2dnglUTYlRwcLBUgjOHw9HU1ASf+t2+fTvYmoTQ5aVLlzY3N/c7rxSn9+eFXkY8EPH5/IiIiKVLl4aEhMycObOXl5B02nM7RGtq/fz5Mxagnj17pqKi0o2qJ5FIKioqZ86cwX+Pu9Nhv4v0vt67JeFBEAQfWAingIYIB4uLi7sl4YFABhrf+Bsx4pSWlrLZbCMjo8LCQg0NDXC7WklJafv27fr6+s7Ozj4+PtgOglZWVunp6U1NTdjps2bNqqysHD9+/NatW/X19Q0MDFAUraio8PDwCAkJ8fPzCwkJ2bFjB51Ov379OoPBeP78+fz580NDQ7Ozs7ds2RIYGBgSEnL58mVjY+MFCxYEBwfzeDwEQfh8fkxMDJvN5nK5sbGx1dXVvr6+jo6OMjIy58+f9/T0nDhxoomJSWVlZX19/YEDBywsLJycnDw9PTMyMkATurq6ZDK5pqYmLCysrKwM/Judnf306VMKhYI9er17966Hh0dqampERIT44BgZGcnJyZWWloIQvGvXrvXr11dUVIwdO1ZcZkgvICMjc+TIkVWrVmGT37dNQ0MDiqIqKipKSkoUCqWurk7aEvUUIpGoqqoKuK22tnZ5eXlPt4gPbrKysrNnz96xY4eHh8eUKVPAwebm5tTU1IsXLy5YsOD333+nUCiLFy+OiIhYvXr1hAkT8G8QJCYmFhcXL1myROJPBEFmzJghJye3ePFiPp8PVpjyeDwej1dRUVFWVnbt2jU3NzdVVdUOyT9kyJC///7b2tqaRCJJlB9BkJycnNevX3///fdLliypqqpqTX4Wi+Xr6wvuRnVUfiaTGRAQoK6uPm7cuA7JL12MjIzc3NzOnj3L5XLBkcjISEtLS1dX17CwMPwc91XwhjR06FA1NbV58+Zdu3ZtwYIF2PsLeEPS19efOXPmvn37bt++TVijRBj5+/fvjxs3bsSIEeCnvLw8XoPgWXTbhkQIIAUFBRoaGmQyWVdXt7a2FjzR6Qk6Hbh6zqoJP5H/tephw4bJyso2NTWJRCImk1lWViZu1YQYVVhYKJXgrKqqun37dg0NjaioKFlZWfyib3wf+6NXitP780IvIx6IcnJy6uvr3d3dq6urs7Oze1me3kk5WlMrg8HAAhSTyayoqOhe1c+ePZtCofj7+2NHOh32u0jv6727Eh58YCGcAi6FCAfBi+ddT3ggkIHGgLshxWQyqVSqvLw8nU4XiUQgdiAIwmKxUBQlFFZUVAR7MWBHKBTK5cuX37x5M3PmzMOHD799+5ZMJn/33XdWVlZDhw5VUlKaMGGCj49PaGgoWDw1dOjQkSNHfv78+d27dwcPHiwpKSkrK7Ozs/vnn39Onz5taWlJo9EkymlhYWFrazty5Mja2loKhTJjxgwnJydTU9Pq6uqUlJS7d+9euHChrq6urq5u6NChNjY2dDqdRCI5ODh8+PDh7du3Q4YMAWmompqao6Pj8OHD5eXl09LSxo4da21tvWjRIolf8hIKhSiKysjI0Gi0adOmTZkypbq6evfu3UOHDm2PzBBIt4CiKPj65ze/hxRAJBL1ck9ra2ufP39+4sSJS5cuxcTElJWVIQhCp9OvXLkSGBj44MGD7Ozs9PR0BEGcnZ2vX7/++vXroqIicC6KokFBQbNmzQJbyxF+YpiYmNy7d09WVvbz589z5sz54Ycffvvtt+bm5vDwcC6Xq6ioyGKxwMPD7pIfQRAPD483b948fvx47NixgYGBEuVHECQhIUFJSWn06NGdkL+4uPjZs2fW1tbV1dXg3n0n5O99SCSSq6srhUIJCAgQiUSNjY1BQUHv3r27detWfHx8SkpK56pNTEwENwXWrFnj7+8P5lNxQ6LT6Z6enhs2bLh27ZpAIADnEka+srLy06dPzs7OhCYwDfJ4vHYaEj6AgP+AnYZ6+hWzLgaubrRq8Z8AzKpDQkLc3d0fPHjg4eGRnZ3NZDLbtmosRkklOKMo6u/vf//+/YMHD2IrLBBcH9PT0/ujV7ZN788LvQAhECEIEhYWlp6efuLEiaysrKCgIKlI1ZtWjVcriUTCByhscV93qV5WVnbHjh1Pnz7Ny8tDEITD4XRL2O8E0tV7pxMeQmBBEET8FEI9tbW13Z7wQCADgW9ttvsqNBpNIBAIBAJzc3MWi5WVlYUgSEVFxerVqz99+kQo3NLSgqIofmK4fPnylStXVFVV3dzcxowZAx6nYAU+fPgQGRnp5eXl4eEBjlAoFDKZrKOjs3nz5ocPH+7fv3/8+PEyMjJ+fn579uy5du1acXExKCYSifh8PpvNrq+vB3WCyQkI3NDQwGazGxoa5OTkTExMTp8+ffv27Y0bN2ppaVEoFGwaA1uwP3nyZMaMGUAqEomEiaeqqlpdXS0UChkMhsSM7cuXLyKRaPDgwRQKZdiwYa6urj/99NOxY8fA58AJMkMg3Y6KigqZTK6rqwPPLfv73rRtQCKR9PT0SktLURRlMBi9/EpmQ0ODUCgcPny4hYWFnJwck8lEEITFYt2+fbu2thZBEAqF0tDQ4OnpWVNTM3ToUHl5eTabDc6tq6srLCycOHGixJ8IgqAoeuXKldjYWFVVVVNT06qqKlVV1fv373t6ehobG+vq6gqFQj8/v9zc3NjY2M7lZxLlBwvjv3z5giAImUxubm6WKD+Kou/evZs8eTJ4R6Cj8qurqxsYGDx58iQlJSUuLg4MV7+ATqfv2LHjxYsXFRUVGRkZcnJyJ06cOHjw4IoVK168eNE5RVRUVBgZGRkYGIwbN666uho8MSYYUkpKyoULF6hU6siRIzkcDnZDijDyGRkZampqxsbGWOVMJhOvwdra2q8aEiGAgP2SBAJBWVmZtrZ2zz1K6ZbA1Y1WTfiJiFk1k8msr6/38vL6999/R44caWhoKG7VhBgFXpTr/eCMoujNmzdfvXp18eJF/LfS8X1EUbSfeiUB6c4LvQM+ENXX18fHx3t5ee3Zs8fb2zs+Pr6qqqo3hemdlKM1terp6WEBSkdHx8DAoNtVb2Zm5ubmdv369ZaWlpSUFELY75Ym2okU9d7phIcQWAoKCvCngGsrQj1CobDbEx4IZCAwIN4DwmNoaIiiKJPJ1NfXX7169ZYtWwwNDSsqKhYtWkR4loggSFlZmaamprq6Ovascu3atfv373d0dCSTyWPHjnV0dMzPz8fK6+rqpqam7tmzh8/nKysrg9BDJpPXrFlz8ODBO3fuKCkpeXt7Z2dnb9iwQVZW1traWldXF0EQBQWFsWPHgjecwdMDDEVFxXHjxq1btw7cddLT05s3b97mzZtpNNq4ceMcHBzwhUE9AQEBI0aMiI+PJ3TH0dExNDTUxcWFy+WOGjUKO56RkbFkyRIKhUKn0w8ePIifkqdPnx4cHPz333+PGjWKIDME0u2oqanNmDHjl19+oVKpDg4O37ClkcnkBQsW7Nu3Lzg4WFZWdsqUKb3ZuqGhoZWV1ebNm+l0uqGhoZmZGYIgysrKLS0tW7ZsIZPJVlZW48ePf//+/datWykUyogRI4YNGwbOZTKZJBJJU1NT4k/QNUtLy+PHj+vq6nK53GPHjvn6+t65c0coFDo7O69evRpBEAaDsXfv3hUrVnTuXVSJ8pPJ5CFDhhw9elRfX5/D4Zw8edLf319cfhRFy8rKZs6c2Tn5p0+fPn36dBRFDx06ZGtrq6+vj1+l0scxNzfftGnTlStXIiIi7OzswKcqXFxc9u7dCx7/dpSpU6c+fvx47dq1NTU1q1evBq85EAxp+vTpBw4cSExMrKmp+eGHH8D+UIjYyBcVFRkaGuLtQVVVVUZGBtOgpaVlcHBwa4YUGxsbFhZ2+PBhfABxcHAICwtbvXo1m80+dOhQzy1/EA9c2Jsp7acbrZrwExGz6pMnT+bl5f3666/q6upqamru7u5KSkqYVVOp1O3bt+/evRsfo3bt2sXn83s/OBcUFJw5c0ZZWXnVqlWampq7du26efPm7t279fX1sT6OGDHi1KlTeK/sHdm6HenOC70GCERXr15NTU2VkZGxs7OTl5fX19d/8OBBbGysnJxcr0nSLZ77VcTVGhUVFRYWtmvXrgcPHmABSkFBodtVTyaT3dzc3rx509LSEhwcTAj73dJE+2lb766urj3UbqcTHkJgMTc3DwwMxE4Bm04S6hkxYkRYWFj3JjwQyIBA1PfYsWPHoEGDeqhyoVDo4+Pz8uVL8LO5ubmgoIDNZksseebMmWfPnolEosLCwk2bNvWQSN3LzZs3L126JPFPaWlpgYGBQqHwxo0bJ0+e7GXBepRZs2ZJW4Re4sqVK2DN8zdMTU1NVVUV9nP27NlSFKZH4XK5paWlAoEA/Ny3b19iYmKvtV5ZWQk2pcZTU1NTWVmJ/WQymbW1tZ2onMvlVlRUCIVCrK26ujqJJRMSEvbv39+JJiTK39jYiB/SXpC/H80ObdO52CIQCIqKilgsFuE43pCEQmFFRQWXy+2EVAQNtqEIfNNYABEKhaWlpRwOB/x8/Pjx1atXOyFGe8C3y+FwXF1dO1FJb1o1m83G/2ztFHzT/Sg499+sgDDmLi4ujY2N0hWpN3n16tWZM2d6s8Vu8dyvQlArgBCgCGW8vLyio6N7Qpiu0KNRtD1s3LixqKioo2d1V8JDOEXiwTbmqaioKG9v7/aLDYF0F2PGjHF3d5e2FK3SR2/WikQisAdTTzB//vxnz57Z2trKysoiCKKlpYUgiHhz4L02W1vbxsbGpqamlpaWnhOpu7h9+/bbt289PT0liionJ/fy5ctr166pqqru2bOn73en/QgEgm+pO23A4/Gam5u/7c6CNRRYH79t5aqqqmLvz/L5fC6X22udBdvMEZojDD4Ikp0TSUlJCXvaLLEtAJfL5fP5nWiitTrxQ9oL8veX2eGrdDq2gO8HtW1ISkpKQqGwE5UTNNiGIlprGuwmC342NzfzeLweUha+3cbGxs4Frt60ahKJhP/ZGvim+1Fw7suyfRX8mIOOiP537fw3TI86qUS6xXPbA16t+IPI/8YraaUE7aT3FUSgpaWlqampowJ0V8JDOEXiwbYTHuy9dQgEgkHqg5Pczp07Hz16NGHCBGkL8l+ampqysrLE3+mD9BFiY2O/1cXtBAoKCmRlZfvvKwmdYOAoNy0tTV9fH/u61gChrq6uvLwc7H/XH/lmZoeBEFvKysr4fP6QIUN6uiGBQJCYmIjfm+ybpC8H574sW4d4//79uHHjBs7LPpWVlWw2G3zetPfpU56bmZmpqamJf6O8L9BrUbQ1Pn/+bG5ujv/GaD+ipqbG0NDw/v370hYEMuAYO3bs8OHD79y5I21BJNNHZzjwLQZpS/FfioqKjh07dvXqVWkLApHM7Nmz+5TB9BxXr17V1tbuuZft+yBOTk4DRLn79+93c3MbO3astAXpVRITE588eeLt7S1tQTrJNzM7DITYEhAQUFNTs2nTpp5uqLGxcdWqVd984OrLwfmbyQpcXV3v3bvXTy+/O8Hr168zMzN37twpldb7lOd6e3vb29vb2dlJW5D/odeiaGts2rTpt99+GzRokLQE6ArR0dExMTHSlgIC6XMMuK/sQSAQCATSafh8fmpqamVlpbQFaQuJQhIO9ouOtEFr8hcUFGRnZ4OPivRmH/Ht9kckyl9XV/fly5empqY2ygxw2bodQr/6NX3NSSXSO5YzEGIyBAKBdI4+ukIKAoFAIJC+BpvN/vXXX0kkUmlp6a5du+zt7aUtkQQkCkk4OHr06L7fkTZoTRH//PNPeHg4hUIZOXLk5s2b9+3b1zt9xLe7a9eunmuohyDIT6FQEARJTk4+cuSIgYFBXV3d6dOnAwMDxcsMcNm6HUK/tLW1pS1R5+lrTiqR3vHcgRCTIRAIpNPAFVIQCAQCgbSLz58/02i0c+fO/fDDD8+fP++byzEkCkk4+PHjx77fkTaQ2Mfa2tq4uDhvb+9Tp05lZGSEhYX1Th8J7ZaXl/dQQz2ERPlRFH3x4sWSJUv++usvExOT4OBgqfSxL8vW7RD6FRcXJ22JukSfclKJ9JrnDoSYDIFAIJ0G3pCCQCAQCKRdMBgMDQ0NMpmsq6tbW1sr/smkvoBEIQkHS0pK+n5H2kBiHxsaGlAUVVFRUVJSolAoBQUFvdNHQrt1dXU91FAPIVF+kUhUVVWlq6tLJpO1tbULCwul0se+LFu3Q+hX/72zBuhTTiqRXvPcgRCTIRAIpNPAG1IQCAQCgbQLEun/f5pWJBKRSKS++WaQRCHFD/b9jrRBG4pAURT8iUwm92Yf8e32aEM9RBvyi0QicFBafezLsvUQWL/6L33QSSXSC5YzEGIyBAKBdJr+PdtBIBAIBNJr6Onp1dTUCASCsrIybW1tGo0mbYkkIFFIwkFDQ8O+35E2kNhHFRUVMplcV1cHFj4MHTq0d/pIaFddXb2HGuohJMpPIpH09PRKS0tRFGUwGEOHDpVKH/uybN0OoV+GhobSlqhL9CknlUivee5AiMkQCATSaQbipuYCgSA1NXX48OEyMjJ5eXkfP340NDS0tbWlUCgoiubk5LS0tFhYWHA4nLKyMisrK8LpJSUl7969U1JSsrOzU1RULCsro1KpOjo6XREJtDt48GA6nS7+1+LiYjqdDva25PP5BQUF5ubmmDAyMjJttN7c3JyUlASW/pJIpEGDBg0ZMuSr8rDZ7MrKSlNT0072B0Hq6+tTU1NbWlrATzU1NWtr607XNpDh8/nZ2dlaWlpdtLF+REFBQUtLi6mpaX9/PvxVBqByAf1XxTY2Ng8ePFi9ejWbzT506FDflJ8g5Nu3b8PCwnbt2oU/OHz4cH9//z7ekTaQ2MfDhw/PmDHjl19+oVKpDg4ODg4OYWFhvdBHNTU1fLu6urpcLreH2uoJCPKTyeTt27fv3r17wYIF+/btCw4OlpWV3bVrF5/Px/dRKrJpa2ufPHly+PDhfUG2bodMJuP7NWXKFGlL1CX6lJNKpNc8t/djMoPB4HA4II1nMpkNDQ0g+WcwGCwWy8LCons61g6am5tzcnLMzc1lZGR4PF5+fv7QoUNlZGSamppycnIsLCxkZWV7TZjeZ8CmeRBIhxiIN6TevHmTn58/atSoS5cuvX792t7e/vnz535+fp6enqdOnSooKJCVlaVSqUePHvX391+1ahX+vkx8fPyRI0ccHBwYDMatW7cuX77s5+enpaW1atWqrojU2Njo4+Ozb98+ifeA7t+/b2Rk9P333yMIUlNT4+Pjc/36dfAnX19fPT29NlovKyvbvXu3ra0tnU4nkUj29vbtuSGVkpJy7969ixcvdrZDCIvFioyMLCws/Pjx4+zZs4cNG/bVG1Ioih47dszBwWHy5Mmdbvcbo1980qt7kfhBpW+SAahcQL/+HpmiouK5c+cqKipUVVUVFBSkLY5kxIWcNm0agiCEg32/I23QWh89PDzmzZuHoqiWlhbSi30ktNvvIMh//vx5cNzf35/JZOrq6lIoFGn1kdDunj17+o5s3Y6VlRW+X9IWp0v0NSeVSO9YTu/H5JcvX/7xxx8BAQGWlpbR0dHx8fHHjh0TiUTHjx8HGb6enl7X+9UeioqKFi9evHfv3rVr11ZVVXl5ef355596enrBwcGHDh06efLk3Llze0eS3mfApnkQSEcZcDekmpqaXr9+vXHjxqysrNDQ0IsXLxoZGbHZ7Fu3bpWVlWlqav74448Igmzfvr2hocHa2vrZs2c7d+7ETs/KyrKysgJHHj161NjYiCDIly9fdu/ebWVltXTp0vDw8ODgYA0NjfXr17e0tDx79ozFYrm6uiYnJ3/69MnR0XHu3LmlpaU3btzgcrkrV660sbEBNbe0tDx69Ki6utrNzW3y5MlxcXEBAQGGhoZr1qwBBbKzs2/dukWj0Qg7HSYnJ6empk6YMMHa2joqKmrVqlVsNvvp06fr168HBQwMDPbs2YPNteHh4QUFBdnZ2ePGjePz+WlpaatWrZKTk3v9+nVFRYWioiJ2YmNjo5+fX2pq6syZM83NzSMjI7HK3d3d/fz8sB5VVlbevHmTw+F4eHhYWloiCDJ48OADBw4kJCRcvHjx4MGD8vLyoaGhycnJLS0tSkpKS5cupdFoT548Wb58+b179758+WJvb29mZhYYGFhaWqqoqPj48WPC+AxMwEdYTp8+/ebNm+fPn0+dOlXaEvUs2CdvFBQU9uzZU15ebmRkJG2heoqBplyAuIqlLVGHIZPJBgYG0pbiK0gUknCwX3SkDVqTX0ND46tlegJ8u/0RifLT6XT8AEqrj31Ztm6H0K9+TV9zUon0juX0ckwmkUgqKipnzpw5e/YsdrCgoIDFYo0aNSoqKmr58uXd0lB70NHRuXfv3sSJExUVFcERPp8fERGxdOnSkJCQmTNnysjI9JowvcnATPMgkE7Qz1bpd53S0lI2m21kZFRYWKihoaGvr48giJKS0vbt2y0tLbdv366hoREVFSUrK6ujo2NlZZWent7U1ISdPmvWrMrKyvHjx2/dulVfX9/AwABF0YqKCg8Pj5CQED8/v5CQkB07dtDp9OvXrzMYjOfPn8+fPz80NDQ7O3vLli2BgYEhISGXL182NjZesGBBcHAwj8cDNTc0NCgqKs6ZM+fs2bMJCQnnz5/38PAgk8mnT59GUbSxsdHT03PixIkmJiaVlZWYPCiKlpWVrVy58vnz558+fXr79m1eXl5MTExJSQlWpqSk5OjRo7t27dq3b9+XL18+ffoUGRm5cOHCs2fPcrlcMzOzS5cuMRiMe/fuzZo1S05ODrQoEokuXLiQl5e3bt06X1/f+Ph4fOVXr17FehQYGHjgwAELCwsnJydPT08GgyFx5D9+/Jibmzt//vwPHz6w2WwulxsbGxsREZGUlLR9+/a0tDQ5OTlbW9tly5bdv39ffHwGJv3ik17dSH//WFWHGGjKBQwoFUMgEAgEIhVmz55NoVD8/f2xI5GRkZaWlq6urmFhYfhLm57GyMjIzc0NXHSAIzk5OfX19e7u7tXV1dnZ2b0mSS8zMNM8CKQTDLgVUkwmk0qlysvL0+l0kUgkFArBomgWi6WsrIwgyKNHj/z9/X18fBQVFRUVFVtaWjgcDnY6hUK5fPkyj8cLDQ09fPjw77//TiaTv/vuOysrq6FDhyopKU2YMMHHxycvL2/MmDEIggwdOnTkyJFnzpxhMBhZWVkNDQ1lZWV2dnbe3t46Ojpr167Fti1UV1efNWuWsrKyvLx8enp6Zmamp6dnS0uLlpaWkZFRfX09hUKZMWNGU1PTu3fvMHloNJqrq6u1tfWMGTOKi4ttbGyio6Nzc3PnzZuHldHQ0Fi4cKGSkhKZTDY0NCSTyY6OjqNGjRo2bJi9vT2TyYyPj0cQZMKECRMnTtTS0jp27FhTUxPY1mrz5s0jRoyYM2dOXl7eqFGjQOVOTk43btzAepSZmZmSksJisahUKofDAR8tFh95Mpk8ceJEIyMj/IvxVlZW169f37hx4/z58zU1NUkkEpVKlTg+A5N+8Umvbucb+1hSawxM5QIGiIohEAgEApEKsrKyO3bs2Lt3L1iYw+FwgoKCUBTNyspKTExMSUmxtbXtHUlIJJKrq2tKSkpAQACY+sPCwtLT00+cOJGVlRUUFDRixIjekaSXGchpHgTSIQbcDSkajSYQCAQCgbm5OYvFysrKGjlyZEVFxZYtWw4cOJCSkhITE3Px4kWw+VxLSwuKotglE4qily9fVlBQ+Omnn9zc3BISEsDjfazAhw8famtrjx079urVq9TUVARBKBQKmUzW0dFxdnZeunRpVFSUqqpqVVWVn59fWVnZsWPHRo0aZWxsjCAIiUTC6lFVVZ06deqpU6fKy8vT0tKSk5PpdLpAIGhoaOByuQ0NDVh3hEJheXk5WCdlYGBgY2Pj5eWlrKyM37BJXl7exsYG/3o8FhPxV4M1NTXNzc1VVVV0Ol1GRoZEIikoKIDlTqWlpRoaGlOmTAGV29jY4HvU0tKSlJR08uRJHR2d169ft/FdGAqFAr5ry+fzBQJBfX19Y2Pjr7/+Ct7vCwkJIZFIQqFQRkZGfHwGJnp6elFRUQPnqyvYJ28EAkG//lhSexhoygWIq7g/vrUHgUAgEEgfx8zMzM3N7dixY3Pnzk1JSZGTkzt48KCsrOyDBw9evHgxfvz4XnsmRKfTd+zYsX79ehqNVl9fHx8f7+XlNWzYsJycnKtXr1ZVVYEPN31jDMw0DwLpBAPuhpShoSGKokwmU19ff/Xq1Vu2bDE0NKyoqFi0aJGqquqZM2eUlZVXrVqlqal54sQJsKuUurp6WVkZgiBkMnnt2rX79+93dHQkk8ljx451dHTMz8/HKtfV1U1NTd2zZw+fz1dWVkZRFJy1Zs2agwcP3rlzR0lJydvbOzs7e8OGDbKystbW1hIXE02fPj0iIsLFxQVBkC1btpDJZFVV1ZkzZ65bt45EIuFLksnkZ8+evXnzxtDQcOPGjeAtGDMzMzU1NaxMVlbWsmXLqFQq2NRcTk5O4shkZGS4u7sLhcJ9+/aJRCIg9uHDh69evaqrq+vp6ammpgYq19DQwPfI09Nz3rx5mzdvptFo48aNa3t7QgUFhbFjx+7YsUNNTU0kEtFoNB8fHxRF5eTkxo4dm5ube+7cuTlz5vz5559tjM/AoV980qsbEf/kjbQl6kEGmnIB4iqGN6QgEAgEAul2yGSym5vbmzdvWlpagoOD7ezswDavLi4ue/fuLS0tHTRoUK8JY25uvmnTpqtXr6ampsrIyNjZ2cnLy+vr6z948CA2NtbV1bXXJOk1BmaaB4F0BlHfY8eOHYMGDeqhyoVCoY+Pz8uXL8HP5ubmgoICNpstseSZM2eePXsmEokKCws3bdrUQyJ1I1wud8eOHZ8/f+7oiR8+fNi6datAIOiJynuBWbNmSVuEnkIoFJaWlnI4HPDzypUrYM3zN0xNTU1VVRX2c/bs2VIUpkchKHffvn2JiYnSFal3wKs4ISFh//790pWnK/SX2eGrDITY8vjx46tXr/ZCQxwOx9XVtRcaki59OTh/M1mBi4tLY2OjtKXoPV69enXmzBlptd6nPNfLyys6OlraUhDptSjaGhs3biwqKpKiAB2CkOZFRUV5e3tLVyTIwGTMmDHu7u7SlqJVBtzNWjKZvHTp0qysLLBbtqysrLGxMfbdBzyVlZUikcjBwaHXZewk9fX1u3bt0tHR6cTL2IqKim2/GdeVyiFdAXx1pT9+l73TaGho9PdPd7eTAahcwMBRMQQCgUAgkIHJgE3zIJAOMeBe2UMQZPDgwTt37vxqMT09vZ9++qnnxek2VFRULly40LlzLS0twTrenqgcAoFAIBAIBAKBQCAQCATPgFshBYFAIBAIBAKBQCAQCAQCkS7whhQEAoFAIBAIBAKBQCAQCKRXgTekIBAIBAKBQCAQCAQCgUAgvUof3UMKRdEzZ85IW4r/Ultb++XLlz4lEgRPYWHhANFOXFycoqJiYWGhtAXpPQaOcj98+NDc3BwdHS1tQXqVkpKSfh1dv5nZYSDEli9fvjQ2NjY2NvZ0QzweLzc39xuwirbpy8G5L8vWIXJzc8+fPy8jIyNtQXqJjIwM8A1WqbTepzw3NjaWwWAkJiZKW5D/odeiaGukpKRcu3ZNTU1NWgJ0hby8vIKCgj5iYJABRUtLi7RFaIs+ekMKQZDhw4dLW4T/UllZ+fHjxz4lEgSPoqLiANFOQUGBqqrqAOksYOAoNz4+3sTEZNiwYdIWpFehUqkVFRX9V8XfzOwwEGJLbW1tQ0NDL/SxublZSUnp2x5MpG8H574sW4dQUlKysLCg0+nSFqSXaGpqIpPJ0tJdn/Lc5OTkwYMH9xFhMHotiraGqqrqsGHDtLW1pSVAVxAKhRwOp6/ptHupqqr68OHD/PnzpS1It5GamtrU1DRhwgRpC9IlyOQ+/VZcH70hRSaTZ8+eLW0p/ktRUVFsbGyfEgmC5/Tp0wNEO4WFhdra2gOks4AzZ84MkP5GRUVNmjRp7Nix0hakV9HQ0GAwGP1Xxd/M7DAQYktjY2NNTU0v9LGxsfH27dvf9mAifTs4fzNZwZUrV7777jt5eXlpC9JLiEQiBQUFaemuT3luYmKira2tnZ2dtAX5H3otirbG48ePp02bNmjQIGkJ0BXk5OT4fH4fMbAeIiMj49OnT99SH6Vu893C/v37pS1CW/Tpu2UQCAQCgUAgEAgEAoFA+hpMJjMpKampqUnagnQPKIrm5eVlZWWhKCptWTpPv+sFvCH1bVJfXx8bGxv5fyQnJ0ssJm6mTU1NCQkJ9fX1PS9jvwdF0ezs7OzsbDCMTU1NSUlJlZWVhGIMBiMlJYXP5yMIwuPxvnz5UlxcjC8gFAqzs7MLCgqwI9XV1ampqaBaFotVUlJSUlJSW1vb7fJnZWWBdlEUraysLC4uLikpaW5uFgqFGRkZaWlpQqEQfwph1uHxeElJSRwOp7UyPB6vrKysuLiYwWDgq6qoqEhMTMROrKysTE1N5fF4bZwiXVrTAl5TPB4vOTmZwWBgf21qaiopKSkuLi4uLq6urkb+1wAIY94LvcDrS6KKCYNPsHBwVkVFBehReXk5j8fD/xQIBFhVlZWVmBmIWziKotXV1UDjbdDU1JScnAzGvLa2FgxmSUkJ6ALes7BqCWZMaBeTDbM3QH19PSHofdXUxU/pffBSEcxP3BrbWUYimCIIBiAQCPBhBN8QwZDEyyCSNEgYVYIG8QmWuHOJl+lQH7tI+5M//Gh0wqqR//ULDPGDPB6vuroaLw/B8jEjF1crdgreEXo6wc3KyiorK2t/u70pW2/S767uOhqIpOWkEuk1y5GoVkLfu0X1fWrMJfaIcLC7DL6NeQqRNIkTMhzxhAfw1dmfkE2hKJqfn5+amgrabWxs/PjxIxbZvj0+fvxoa2s7derUhQsXVlVVSVucbuDChQtjx44dP368p6dn37kM6Sj9rxeivseOHTsGDRokbSn+h8LCwk2bNklbig7w/v17GxsbbW1tGRkZIyOj5cuXEwoIhcLTp0///vvvQqEQfzwlJcXKyioyMrIXhe0GZs2a1cstCgSCAwcOqKioKCsrHzx4sKSkZPr06aqqqgYGBmFhYVgxPz8/HR0dFRWVZcuWZWRk2Nvbq6qqqqqqXr58GRTgcrk//PADOOjj4yMUCplM5pIlS2bPns3hcAQCwcqVK0kkEolE8vDwEAgEV65cCQgI6Lr8oF0VFRU1NbUrV67k5eUNHToUQRBZWdl79+7t2rXLyMjI2Nh4y5Ytzc3N4JTExMShQ4cqKCg4OjpWVlYKBILz588bGxt/+vQJq5ZQ5t69e2Ar1mHDhhUUFIAyQUFBRkZGFhYW48aNy83N9fPz09XVVVZWXrhwYU1Njfgps2fP7np/u4K4FsBxvKZYLJarq6uCgoKBgUFERAQocP/+fWwn2u+++45gAPgxf/DggUgk2rdvX2JiYs/1AtNXS0uLRBXjBz83Nxdv4aDX+fn5pqamoEc6OjpPnz7F/0xISAD1hISEGBgYqKiozJgxo6CggGDhIpHo4cOHhoaGoaGhIpEoISFh//794gLn5OSMHz9eRUXF3Nz806dP33//PYlEQhCEQqH8+eefeM9is9ngFPyQ/vvvv+LtikQigr2BTo0ePfrXX3/FynzV1PGnSGt2wEtFMD+J1vjVMq3FFrwigoKC8BqPiYnBhxHsFLwhZWZmSiwjrkGCIsRj419//aWioqKkpHT48OG7d+/inQuzAXwZJpNJ6OPjx4+vXr3aE+rAtysQCDgcjqurq3gxfOC9dOlSR636wYMHeHUkJyeL6wgcbG5u3rp1q62tbWVlJTbgeMvHG/mHDx8kOjLBEQh9FHVrcP7w4YOZmdnp06fb0257yvR+VtAtEPolEolcXFwaGxulLVerdDQQib7mpK9evTpz5kyvyd9Oz+0i4moVicVk8TJeXl7R0dEdaqhzY94h2h9FJfaacFBimbbZuHFjUVER4WAb81RCQoL4JE7I4Xk8nnjCI/pf8wZHCPMUIZvicDh79uwB9SxfvjwzM3PKlCnm5uZGRkZ+fn4ikSgqKsrb27s93ewXCIXCgwcPOjg4xMfHW1paPn36VCQSpaen79y5U9qidZKampqpU6ceO3bs77//HjNmTGlpqagnM4ceQmIvxowZ4+7uLm3RWgWukPo2sbW1/fz58+nTp01NTaOjo319fREEiYyMXLFixbJlyyIjI1NSUv7555+AgIA3b96cP39+zpw5q1at+vLli7QF7zdwuVwlJaVnz57t2bMnJiaGwWDY29vHx8ebm5vHx8eDMvX19X///ff69evfv39vZ2dXUFBgYGDw8eNHd3f3kJAQ8PCksLAwKirK39/f29vb19c3OTl58eLF4eHhIpEI1FBRUXH69On09PSTJ09SKJTukj8pKSk0NPTRo0d37txRV1cvKipSUVF58+bNly9f7OzsPn78ePDgwePHj3/58oXFYiEIgqJoYGDg4MGDw8PDy8vLY2NjDx486OnpiX+WLl4mKytr3rx5qampISEhhoaGoMzHjx/HjRsXGBgoEonS09P9/Pw8PDyio6MzMzOjo6PFT5E6ErXAYDDwmkpKSkpLS3v58uXEiRP9/f3BE7YFCxakpaVFR0fb2tpu3LixpqYGbwAFBQXYmM+bN69Hu4CiKF5fbDZboorxg6+hoYG3cPB40MjIKDQ0NC0tbfXq1YsXL3Z0dMT/HDFiBGiOw+Hs37//xYsXFRUV7969w1t4RUVFVlaWl5fXVx+HPnz4UEZGJikpaefOneByPTMz8/LlyxMnTpw5cybes7BPh5SUlGBDOnz4cEK7CILw+Xy8vcXExDQ1NXl7e2dkZODHqm1TFz+l9yEolGB+nz59ErfG9pSRCF4Rurq6eI0LBAJ8GMGeM+MNqbq6WrwMITa2tLSIjyohNqanpz98+HDPnj2nTp169uzZ+PHj8c6lqKiIIAiTycSXCQ8Pb2cfuwih3TbWHeADr6ampo+PT4eset68eXh1YNWKH3z48CG4/gE/CZYfHR2NN/KSkhJxRyY4QnBwcDv72AnCwsKWLFkC1he3p93elK03IfTr3bt30pboK3QiEEnLSSXSfs/tCq2pFT9cfn5+T58+7brqJaYiUhlzib0Wn167y+DbmKeGDx8unq8Scvjq6mrxhIdg3oik2Z+QTRUWFlZVVf377793795NSkr6+PFjY2Pjo0ePwC2bb2D9JgGRSFRYWKivr29gYCAvLw8SrX4Nm82ura01NjY2MDAAD5ulLVFn6I+9gDekBgqpqanbtm0zMTExMTHZunVrZWWlurq6gYGBUChMSkpasWJFWVnZP//88+2Fyx5CUVFxz549hYWF586dW7Zs2bhx4/bt23fs2LGysrIFCxaAMuBGxqtXr1xcXLhcrqOj4/3796lUanJy8uTJk6lUKoIgdDqdTCaHhIR8/PixqqqKzWb/+OOPP/zwA/gaQk1NTVFR0YEDBxwcHCIiIrpR/tLS0vr6+l9//fXo0aNaWlrFxcXgGnLNmjWNjY3Lli07cuTIL7/8Mm/ePC0tLUTSrDN58uTLly+rqKhgdRLKlJeXZ2RkBAcHT5gw4dSpU+A9ETKZ7OzsnJWVNXPmTC0trYkTJ6qqqn769Ck4OJjJZBYXF4ufInUkaoFGo+E1VVFRQaFQDA0NDQwMysrKwMWkoqKiiYlJWFiYlZXVwoULp06dijeA0tJSbMxLS0t7uhd4fampqYmrGEVR/ODTaDS8hYMTqVSqsbFxVVVVTk7Ozp07FRUV8T+x70C5uro6ODhs27bN2tp61KhReAsvKSk5duyYra2tkZFRG9IKhcLc3NyysrJ58+a9fftWS0tLV1dXQ0MjICBg69atampqeM9SUFAAZxUWFmJDymKx8O0ymUwEQSgUCt7eSkpK7t+/X15e7ujoiDX9VVMXP0Uq4KUimF9paam4NbanjDgERejp6eE1Xl1djQ8jwBcIhlRYWChehhAbFRQUxEeVEBvBC7NYgtXS0oJ3LnAKIQkrKChoTx+7TvuTP0Lg1dfX75BVFxUVEfxCXEdaWlqpqalXr151d3en0WigEnHLxxt5VVWVuCMTHKG4uLjnElwtLa0rV66MGTOmne32pmy9SX+8uutoIJKWk0qkdy7bWlMrYbjy8/O7rnqJqYhUxlxir8UPdovBtz1P0el08XyVkMMbGBiIJzzI/5o3Imn2J2RTlpaWN27cmD17dnR09NChQ6dNm2ZhYTFnzpyYmJhFixb18c+cdQ4SiYQ9+QALfr8NQKf6e4/6US++Qd+ASCQlJYVKpW7atGnz5s1kMrm6ulpXV9fMzGzs2LEaGhrHjx9PSEjgcrlYWIG0hxkzZmzfvv3atWvFxcU0Gu2nn36ysLC4dOkSeJwiEolQFB0xYsSPP/74zz//pKSkFBQUrF271tzcfPPmzaCGQYMG/fbbbwkJCfn5+TIyMhoaGi4uLtirKGpqakePHo2Pj1++fPmlS5e6cRspkUgkFApXr149cuTIkydPmpubX79+/cOHD0Kh8MaNG/7+/itXrty2bVtgYCD26jt+1qFQKPPnz9fV1SVUS5iZPDw8goKC/v3335cvX378+BFBEBRFnz59qqOjc/LkybKystjY2F27dqmqqr5+/ZpOp1MoFPFTpI5ELRA0BcI9WHcKXu4Dx4uLi4ODg5cvXy4rK4sgCN4ARo8ejY25r69vj94LJpPJeH3V1tY+fPhQXMXig4+3cFBGIBDcvXt36tSpJiYm4j8xDAwMvL2909LSMjIy8BYeHBz8+fNnU1NTDoeTnJzcxjopkUikoKBw6NChzMxMsMbzzZs3fD7/u+++E/cscAp+SKOiovbv34+1C9a1USgUvL1VVlaeO3du/PjxjY2N+fn57TH11NRUiaf0MgSFEswPZL0Ea2xPGYkQFIHXOCGMYLts4A0pLy9PvAxBg0+ePBEfVUJsxNaHYgkWwbkIMiP/95Hj9vSxu/hq8ic+Yh2y6gcPHqAoSvAL5H91dOvWLS8vLy0tLQqFUltbm5aWhohZPoVCIcRqiY6ML9P+PnYCa2vriRMndqjdXpOtl+lfV3edCEQY0nJSifS05UhUq3ja0HXVt5aKAHp5zFvrNf5gdxl8G/MUwUrxEDIcwk/CiRJnf/Fsqrm5+ffff4+Ojj558iTYTMrLy2vkyJH379/vH1v5dAQSiWRsbFxWVpaTk8Nms/vIaw1dQVlZWUNDIycnJzs7W1lZWU1NTdoSdYb+2At4Q2qgoK6uzuPxGAxGeXk5n8/X0NAgk8kikejVq1cvXry4e/fuggUL+n7203eorKx0c3OLi4sbNmxYQ0NDcHCws7MzlUrV1tYuLS0FW9Kqqqrq6+traWlZW1tTqVQGg7Fx40YEQRYtWlRUVARuQDQ2NhYUFBw5cmT27NmampoaGhr4VnJycm7fvs1msxUUFMhkcjcqyMjISE1NbciQIcOGDePxeKGhoUFBQbKysjIyMnw+v7q6evTo0ba2tmw2GzwzbM+sQyijrq5+9+7d1NRUZWVlTHiRSJSfnz948OBp06YpKiqCVVSOjo5Hjx6Vl5fX1tYWP0XqtEcLenp64Bkd6B1Y/oYgyKdPn0gkEngFpqqqCjOAgoKC169fY2Peyz1taGgQV3FDQwN+8Ovq6vAWjj06rqioAO91YkvD8D8RBEFR9MiRI7/99pupqSmFQikqKsIsXENDg0KhyMjI3L17l8FgBAcHt7YvOIVCGTZsmIKCwqhRozQ0NMAO5WFhYaNGjdLU1CR4FnA3FEVDQkKwIW1paZHoWXh7U1dXV1dXDwoKSk1NTUhIyMrKQr5m6o2NjeKnSB2C+YGlr9jP6urqpKQkbW3tNspgFktAXBF4jePDCJ/PB9k2wZB0dHTEyxA0CMIFYVQJsdHIyIiQYOGdq6KiIikpSUFBAV/GxMSkPX3sOu1P/ggjxufzO2TVFArF1NQUrw5xHTU1NcnKyhYXFz979qysrCw8PBzMNXjLNzY2Jhg5Xq3g2yYNDQ34MkOHDu2dBJfggIR2VVRUUlNTi4qKpCJbT9Pfr+7aE4ik5aQS6Z3LNnG1gnhFiMkmJiZdVz1BBVIcc0Kv9fX1xT3X0NCwWwy+7XlK4imEHD4vL09iwoNH4uxPyKaYTObJkyf9/Py2bt3a0NBQUFBAJpOnTp1qbm5eUlLSywsAewEymbx48eLq6urvvvtu+PDhkydPlrZEXUVdXd3Dw+P06dMHDx5csWKFjo6OtCXqDP2yF21tMCUl4Kbm3cXdu3eHDx8OdoZms9lbt27V1tbW1tb+8ccf2Wz23r171dXV9+/fb2xsPHjwYGtra1dX148fP8JNzduDQCA4duyYoqKivLz83r17i4uLFyxYQKPRDA0Nnz17hhULCAjQ1dWVkZHZsGHDlStXsAU18+bNA+vRWlpa9u3bJysrq66ufuPGDXCWl5eXk5MTh8Opra1dtmwZjUbT0tLy9fUVtb7xcEfhcrk///wznU5XV1e/ffv2hw8fLCwsqFTq+PHjU1NTjxw5oqOjo6Wl9cMPPwA5RSLRly9frKysqFSqi4tLbW2tSCSKjY21srLCb2qOL1NTU3Pu3DkVFRVZWdlt27Zh27KGhYUNGzZMR0fH1tY2Jyfn1atXOjo6MjIy69atq6+vFz9F6puai2sBA9NUQ0ODh4cHjUYzMTF5//49VsDHx2f+/PlgDG/duoU3gLdv32JjnpmZKerhTc1FOH21tLSIq1goFOIHv6GhAW/h2MbnHz58sLa2xnZTJvwEREVFmZiYUKnUGTNm5OTkiFs42Ba07U3N8/Lypk6dSqVSx4wZk5aW1tDQMGvWrPPnz4O/4j0L2/6ZYMbi7YpEIry9gRMFAsH333+P39T8q6aOP0WKswMmFcH8CD8vXrxoZ2dXWFjYRhlR67GFoAi8xglhBJQnGBKTyRQvI5KkQYIixGPjP//8o6KioqCgcOrUKaFQiHcu0Ecmk4kvw2KxCH3sua1JCbK1sak5fjQ6atWZmZkEdUjUETh47969KVOmYPsEEyyfYOR4tWLfNiGUIfRR1K3Bua6ubsaMGWBT8zbabWxsXLBgwcGDB78qWz/d1Fw8+PTxTc1FHQxEX3XSXt7UvJ2e20UIapUYk8VV34lNzTs35h2i/VEU36Py8nKJnive668icVPzNuYpgPgkjs9wGhsbJSY8Ek8kzFP4bOrLly/YIlN9ff3w8PC5c+fq6OgYGBh8k5uaA7hcbnFxMbYTfL/e1BxQU1OD32K/321qDiD0oo9vag5vSLWLfnpDSpyqqirMOgUCQWlpKZfLbWhoaOc00GeRVupZW1vLZDLB/8GHZrHbNxiNjY1VVVVtVAJOZLFYrf21vLy8oaEB/OyuG1IAJpOJ1dzc3FxaWsrj8bA/VVRUEMoTZh2JEMrU1dUxGAzxMkVFRVhbLBYL3xbhFKnfkBKJaaG1MqWlpRwOp/3VEsa8p29IEZCoYsLg4y28Q3C53IqKCpCxtW3hrd2QEolEAoGgoqKipaVF4l8lehZ+SFtrl2Bvrcn/VVMH9JHZgWB+Eq2x7TJtxJa2FYEPIxgEQ5JYphOxkZBgSQRfhtDHHk0r8e22fVkrcTQAX7VqUSvqaFtHAILldyKeE8a/54Jz2+22p0w/vSElEutX378hhac9gUjUppP28g0pUUc8tytIdDdC3wllOnFDSrxOjDbGvEN0KIpK7DXhYPtnW4DEG1Ki9sVAAoQMp9MJj8RsCiAUCsvKyrBZ7Ju8IUXgG7ghRaCf3pAi0MdvSEl4CV/q7Ny58+HDh31kP2OAqP9vTPBtg6LoN7lZoDgD0BShcr9t+nuv+7v8GN9MR9qg1/oIEqxvPnD15eDcl2XrECiKSnFzpd5HuoGoT3lu34zJUpdK6gJ0hX4tfDv59vr4bfSIxWKZmJhkZ2dLWxDJ9Orb2u3ku+++U1NTAxsoQCAQCAQCgUAgEAgEAoFAOkpiYqKVlZW0pWiVvrhCCgKBQCAQCAQCgUAgEAgE8g3TJ1alQiAQCAQCgUAgEAgEAoFABg7whhQEAoFAIBAIBAKBQCAQCKRXgTekIBAIBAKBQCAQCAQCgUAgvQq8IQWBQCAQCAQCgUAgEAgEAulV4A0pCAQCgUAgEAgEAoFAIBBIrwJvSEEgEAgEAoFAIBAIBAKBQHoVeEMKAoFAIBAIBAKBQCAQCATSq8AbUhAIBAKBQCAQCAQCgUAgkF6FKm0BJHDnzp23b982NTVJWxAIBAKBQCAQCAQCgUAgkP7KlClTtm7dKm0pJNMXb0h9/Pjx5cuXurq60hYEAoFAIBAIBAKBQCAQCKRfwuVy1dTUpC1Fq/TFG1IIglAolMTERGlLAYFAIBAIBAKBQCAQCATSLxk7diyLxZK2FK0C95CCQCAQCAQCgUAgEAgEAoH0KvCGVMdgMBgbN258//49giAoiv7999+vX78G/z916tThw4cFAoHEEyMjI//++28URTvUXGVlZVRUVDvPio2N/e2333777beYmJjjx49fuHABnJiYmHjixAnx8klJSVlZWfgjX+0FnubmZm9v78zMzMDAwLt377ZdOCAgwNfXF/uZnZ3t5eVF2Casurp69+7dFy5cOHfu3Fdbh0AgEAgEAoFAIBAIBNJ/6aOv7PVZmpubY2Nji4qKfH191dTUCgoK6HQ6giClpaXR0dHNzc2ZmZkjRowQP7GqqqqgoKCjzb1///7NmzdTp05tT2E2m11UVCQSiRoaGrKzs8PCwqytre3s7FgsVnZ2NqEwiqL//vvvlClTzM3NsYNf7QUeoVCYmZnJZrPt7e2/esusvLy8sbER+9nY2JiZmSkUCgki5eXlycnJ8fn89vQXAoFAIBAIBAKBQCAQSD8F3pDqMMOGDZOXl798+fLevXuxgzExMaampurq6q9evcLfysnLy9u9e3ddXR2CIOPHj+fxeOfOnXv58iWJRHJ3d58wYcLPP/+srKxcWVk5f/78X3/9NTg4+MyZMzweb8SIEXv37g0MDIyNjX3+/LmiouKJEycEAoGVlZWXl9fnz599fHz4fL65ufnx48dVVVURBBk+fPiSJUvAf+h0+rx5806fPj18+HAgSXNz859//hkWFiYUCj08PCZMmBAZGZmRkWFjYzN06FCJvbh69eqTJ0+oVKpAIDh8+LCiouKOHTtUVFRYLNaiRYs8PDzAWf7+/nV1dStXrty/f39paamqqurx48dJJNKBAwfq6up4PN7Ro0dFItHz588jIiJIJNKRI0doNBo4NywsDOvXoUOHVqxYoa+v39F1ZBAIBAKBQCAQCAQCgUD6F/CVvQ5DpVJ//PHHt2/fxsTEgCPNzc1v3ryZNWuWk5PTu3fvqqqqwHEURW/duuXg4BAWFvbdd9+hKPr+/fvPnz/7+vpevXr15cuXhYWFJBLp9OnTN27cSEhISE9P/+eff44fPx4eHi4nJ/fq1StnZ+fZs2dPmTLlypUrhw4dCggIkJGRefz48evXrx0cHAIDA52cnHg8Hmhu0KBBCxcuXLhwoZGREYIg3333nZGR0aVLl8D7d2/fvk1PT3/+/Pn9+/dfvHhBIpGmT5++YcMG7G6UeC9QFDU2Ng4ICNi+ffs///zD4/EoFMqpU6fu3r0bERGBrboSiUQCgeDWrVsjR44MDw/fvHlzUVFRUVHRhg0bwsPDN27c+OrVKxRFLS0tAwMDt2zZcvXqVbAGqra2Ft+voKCgJUuWTJkyxc7Orhf1CYFAIBAIBAKBQCAQCKS3gSukOsOgQYM2btx4+vRpAwMDBEEyMjJiYmIyMjLIZHJRUVFMTMyiRYsQBBGJRAwGw97enkKhjBgxIiEhobS0NCUl5T//+Q+CIIqKiiiKamtrq6mpNTQ0yMjIsFgsCoUyaNAgKpU6atSo7OxsXV1dBEFYLFZBQYGPj4+MjAyCIBMmTFizZo23t7etre2kSZPGjx8vUUgajfbTTz9t3rwZ/CwvLx8yZIiCgoK8vLympmZlZSWhvHgvyGTy6NGjZWRkhg4dymazuVyusbGxvr4+hUJRUVGprq7Gn15WVjZv3jwymTxnzhwEQVJTU0+dOnXhwoXa2tpx48aRSCRra2tZWdlhw4ZxOBwul4sgSH19PaFf3akkCAQCgUAgEAgEAoFAIH0VuEKqM5BIpAULFgwePDgwMFAkEgUHB69cuTImJiYmJubo0aPPnj0Dq5ZIJJKenl5mZiaKorm5uc3Nzbq6usOHD79x48b169fHjx+voqJCIpGwapWVlYVCYXl5uUAgSE1NNTIyIpFIKIoqKSkZGRkdOHDg0aNHS5YsMTAwSEpK+vXXXz99+oSiaHR0dGtyDhkyZNOmTdevX+dyuTo6OkVFRU1NTZWVlUwmU1tbG0EQkUiEFZbYi/T0dIFAkJOTo6KiIi8vX1ZWVlVVVVlZWV9fD26WYejq6ubk5KAoevfu3bNnz/71119Tp059/vz54sWLURQViUQZGRl8Pj8nJ0dZWVleXh5BEEK/wMIuCAQCgUAgEAgEAoFAIN88cIVUJ5GVlf3555/j4uLYbPb79+/37NlDJpMRBJk+ffqdO3dSU1PHjh1LJpPXrl27a9euhw8f8ni86dOnT5kyJSYmZs6cOTIyMk5OTioqKvg6tbS0Vq9evWPHDpFIZG5u7ubmVlpa+v79+6dPn27YsOHXX3+lUCiGhobHjx/ncDjbt2+nUql6enpTpkxpQ84FCxa8efOmurra3t4+NjbWycmJRCItX758xIgRJiYmf/7559ChQ0ePHs1kMsV7oaenFxcXN2fOHBqN5u3tTaPRqqqqNm7cyOVyV61aZWpqirVCJpPXrFnz66+/zpgxQ1NT8/jx4xoaGleuXAkNDUUQREFBQSQSpaamOjk5KSgoeHl5gV2iNDU1Cf3qCU1BIBAIBAKBQCAQCAQC6WuQ8Gtk+gg7d+588uRJUVGRtAUZ6Fy5cqW+vn7Pnj3gZ2pq6okTJy5evEi4jwaBQCAQCAQCgUAgEAikrzF27Njhw4ffuXNH2oJIBq6QgrTKli1b8D9HjBhx9+5daQkDgUAgEAgEAoFAIBAI5JsB7iEFgUAgEAgEAoFAIBAIBALpVfr3CqmMjAxtbW0NDQ0EQfLy8tTU1NTV1TtUQ3Nzc3V1dTu30+bxeDk5OcOGDZOVlUUQhMViVVVVmZmZiZcsKyujUqk6OjpfrTM9PR18ro5Op1tYWCgpKeXk5Jibm+PLcDgcBoOB37OpKxQUFKiqqqqpqbVdTCAQJCQklJSUjBs3zsTERLwAiqJgw6muU11dXV1djaKooaFhZmYmj8cDXxscNGgQvphQKMzJyTE2NqbT6QiCsNnsyspKXV1dwuBgtZmamtLpdBRFxYcUD6hH4vDW1tY2NDQYGxt/tQsoilZVVfH5fAqFoqmpSaPRCgsLSSTSkCFD8MWqqqoYDIa5ubmsrCwQrKWlxcLCgkr9H0+sr6+vq6szNjYmlGlubs7OzjYwMAA2D2AymZGRkaNHj8bUBAbKwMCgtX61AcF022ktnQCz6vYYUne5QBuOCQbNwsIC/MSrvu3WURRtamr6qnjNzc0FBQXDhg2jUqk8Hi8/P3/o0KHg+5LiiNvkV81YHD6fX1BQgD+lpKTk3bt3SkpKdnZ2ioqK7a+q6zAYDBaLhQ1v70MYDRRF8/PzgYfizY/NZufl5Q0ZMgR7MbmoqGjw4MFYgbq6Og6HIxKJSCSSmpoaGEbMYfEtYgfxpygrK3O5XD6fjyAIlUrV1tYGvi8QCKKjo2k02pQpUzB5iouLaTRafX19R8eNYLE958UdMsvu8uI26mnDiwnTh0QKCgoUFBTAFz96gubm5qSkpObmZgRBSCTSoEGDsAmiczpqf6bxVQgOUllZmZWVJRKJ5OTkzM3Nu/iefjuDJCAjI6Oqqgr4i4GBQXtOIczU4LMwZmZmRUVF+vr6GRkZ+DHX09NLSkrCpxlVVVXg4zMIgigqKg4aNKi6utrKygrfRFNTEzAtkP6J0x5ddGjWayfABwcPHgwMW9w7OmEkHdIXXowezV0xJEbLrtPY2Pj27duGhoaJEycOGjSoG53rq7TT/VksVkxMDIIgdnZ2El2yG+0qOzubTCYLBAJjY2OCv+CLSUzL5eTkCEOH1SZxLmsjCcfz1emmuLiYTqdLDOBtJ/MgYgwaNKi2tpZMJtPpdH19fYmtEzJ2FEXFU/2SkhIFBQXsahRfRigUVldX4xMAgUCQm5urr6/f0avX9ve9NQjj2f7rnU7QIW/qTdcjQAin4pJIlI0wg5iYmNTW1rYz7rV9rd3pJLA/0o9XSAkEggMHDuzcubOpqUkoFF68ePHdu3f4AiiKenl5xcXFtVYDj8fz9PQ8c+ZMO1sUCoWnTp16+/Yt+Hn37t3nz59LbDE1NTUvL689Ffr4+Ny4cSM0NPTWrVvOzs4pKSmxsbGEYhkZGadPnxYKhe3pVNugKPr3338nJia2Xayurm7z5s03b94sKiravHnzgwcPCAVevXp1/vx54H5dJzIy8ujRowcOHEhISNi1a9eLFy+CgoLWrVt35coVfDEOh3PixInS0lLwMyUl5cyZMzU1NQS9Y7UVFxcjCNLS0iI+pHhAPRL/FBsbe/PmzfZ0ISsra/Hixb/++uvvv/+ekZHh7e29d+9eLy8vHx8foDgEQd68ebN+/fobN26sX7++oqLiyJEj3t7ef/311/bt2xsbG7GqeDzeb7/99ueff/L5fHyZ/Pz8NWvW3Lx5c+3atZgRoih65syZ8PBwvC7YbPaJEyfa6Fcb4E23ndbSOYDi2mlIeBfoCn5+fiEhIRL/BAYN+4lXvbiNYQD509LSvipeWVnZkSNH6urqEARhMBhHjhxhMpmtFRbX3VfNWJyamhofHx/sZ3x8/ObNm4uLi4Ed1tbWdqi2riAUCo8fP75t27aKiopuqbCiouKXX34Bg9lO8KMhFAq9vLyOHj16+PDhP/74AzO/9PR0Dw+PW7duubu7Z2ZmIggSFBS0efNmrBIURR8+fLhnz57du3c7ODg8fPgQwTks3oyxgwKBAH/Kv//+++eff+7Zs2fbtm1OTk65ubmgfGRk5JkzZ5qbm/GXE/fv33/+/DneLNvfWcxie9SLgVm2Ux3d5cVt1NOGFxOmD3FQFP3nn3/Cw8M7IVI75+WysrLdu3e/ePEiLCwsLCwM035HdYQNeDszjfZACBfBwcGHDx8ODQ29d++es7NzcnJy25K0UTMIklVVVa1FUTxCofCPP/64du0aGKKMjIz2CE+Yqd+8efPu3Ts2m33kyJHPnz8Txry0tJSQZrx58+bQoUOgwPv370Uikb+/P6YdbEDc3d3fvHlDaBpTfRuTC0aHZr120tjY6OPjgxm2+GzVHsHwdEhfGBJnqG7MXfFIjJZdpK6ubsuWLREREUVFRevWrYuNje3ouHWadrp/YmLi8uXLExIS4uLili9fnp2dTSjQjXYlFArPnDnz119/nThxoqioqKNpOSEu4WuTGLfbmax+NQu6f/8++JKSOG0n8yBiNDQ0vHv3rrm5+fr16+AWNoZAIBDP2AUCgXiqX1hYCL5Xjp2IL8NkMvEJQFxcnIeHx6VLl7Zs2RIVFfXVERAHc6s2+t4ahPFs//VOJ0hNTc3JyWlnBOg11xOHEE7FZ1iJshFmkPLy8taCJ2HG/Oq1dqeTwP5I/14hpaSklJub6+/vv2rVKnCksbHRz88vNTV15syZhoaGgYGBpaWlJiYmISEhnz59cnR0nDt3LoVCQRCEz+cfO3assLDQ0NCwnc3Jy8s7Ojq+efPGwcGBzWZ/+vRp586dElucOXOmrKzs7du32Wx2QUHBokWLJk2aFBISEhoaam5urqGh4ebmBuqUlZVdunSpo6OjUCj84YcfUlNTEQRBURRfGNy2P378OIqidnZ2oInBgwe/fPnyy5cv9vb2rq6u4IZ9UFCQhobGhAkTAgIChg4d+uXLF0yAUaNG3bp1q7y8vKysDEEQHo/n5+cHxsTBwcHX17eysnL48OGurq4Igjx58kRFRcXHx4dKpc6dOzcuLo7H44WGhgYHB2toaCxbtuzx48eZmZn29vZcLjcgIMDQ0HDNmjXKysp4sZ2cnLCRmT17dnh4eHJycl1dnb6+/saNG9ls9tOnT9evX48giIGBwdixYxsaGhQVFQ0NDffu3auhofHmzZvbt2/r6urq6uqCHhkaGgoEAj8/v6ampqVLl+JV09TUdP/+/ZSUFCcnJz09PVCbsrIyVqCwsDA4OLiyshJBkA0bNqiqqmLllZSUCENnbm5eUlISGhpKo9Hk5OQQBImLi8O6WV9ff+PGDS6Xu3LlShsbG6x+R0fHffv20en04uLi9PT0s2fP0un03bt3FxcXg4cnZDL52LFjJiYm//nPf3JzczU1NX/88UcEQbZv385gMIYOHQqqev78eXFxsZmZGYfDwZcpLi52d3efO3fuxYsXk5OT7ezsEAT59OnT69evTU1NY2JiampqgPwGBgagKqFQeO3atdmzZxsYGPj5+Y0ZM8bc3JzH4/n6+tbX15eVlbm7u1tZWb169QpoFqgDQRA2m423FvwgL1y4kEajPXnyZPDgwXl5eZmZmVOmTHFxcQFuRRgrCoUC6jE2Np46dWphYSE2yGCpCDAkU1NTBoOxatUqvFUUFRVh44wgCOYCGzZskJeXv3PnTnp6+vjx4xctWvTo0SNgvba2tjdv3uRwOB4eHoMHD7537x7BQRAE+fLly+7du62srFasWMFkMrHyenp6wPVev36NVz1GeHh4fn5+RkbGyJEjV6xYISsry2azgfwaGhp48TQ0NDDnwgKOOCUlJc+ePWvDJlksFtZNEDF4PN6DBw+ampqKiormzZsXExNDp9PXrVtHp9PxLebl5d26dYtGo+GTqqysLCsrq507dyII8ujRo5qamoCAAEyby5cvx4Zr7ty5Dx8+xCxk1KhReJ2yWCy8K2VlZQUGBhoYGIAIILHjBQUFLBZr1KhRUVFRy5cvx3vr7Nmzo6OjAwMDTU1NPTw8mEzmv//+29LS8v3339NotLi4uO+//z4lJaWgoEBZWRkbfz6fHxQUNHz48LVr15LJZKFQiLfhnJwcvKaKiooIo8Hj8YYPH759+/aioqJz5841NzfLy8ujKPrs2bPly5e7urp+/vxZVlY2MDDw8ePH8vLy2BiSyeRNmzZt2rTp5cuXqqqqIAphDotXLnaQcMq6desUFBQEAsHhw4ddXFzAU6/a2to7d+5UVFRUVFTcuXMH6zJWW2hoKIVCcXBw+PDhQ1VV1fz58wlePGrUqIyMjLt373I4HDc3N/AQuz1e7ODg8Pr164qKCkVFxfXr12MPafEaV1ZWDg4ODgkJMTMzMzQ0JJPJ+FkGQZDXr18HBQVpa2urq6uvXr0a78VNTU2YXRkaGrbmxStXrnz79m1ycjKJRFqwYMHDhw+BV1paWkZERGAGpqWlBcRrzd0mT57chhfjp4+qqirCkEr09AkTJiQkJLi7u1dXV7948WLu3LkSI4yZmRmYlwcNGhQSEkKY9Ugk0qZNm4BTGxgY7NmzB+sIXkfNzc3Xrl3DVLNu3brIyEjMNUpLSzH95uXlAfsHj/ELCwsxr6HT6Xj3BAU66iAIgpBIJDs7u99//x1BkEOHDsXExCQkJIAwO3r0aKy5d+/eAUlmz559+/ZtTGtFRUU3b94UCASLFi3Cgjzyvxna9OnTHz58iKUo2PeCZWRkli5d6uTkBH62kdVMmjRJXNFNTU2vX7/euHEj1hfCmOfm5hLSjJkzZ06cOPHo0aPYDQ5ra+tnz57t3LkTHOHz+REREUuXLg0JCZk5c2ZoaCgmEo1GA6o3NDTETy4VFRXYKMnIyDx79ozFYk2dOhWb9WRkZMzNzQkWiFflkCFDHjx4QBifL1++ZGVlubq63rhxY+zYsUZGRo8fP25paXn06FF1dbWbmxvQOD7GoiiKF0xWVhb8dd68edra2vfu3Zs4cWJ5efmLFy+GDBni7OyM1xdh1ispKbl165aampqSktKmTZuw6JScnCwUChUVFTudu+Inu9bmdEtLS3y0ZDAYZ8+eZbFYS5YsAe45ZMiQlStX+vr6JiYmikQiDQ2NHTt2REREYFNSVFQUYRLHjKS6urqxsXHHjh36+vqTJ08GNxfw45afn485oKGhIVDosmXL6urq2kgOxeMt3j2VlJTwIbq8vBzrrKysLNaEpaVlc3Pz5cuXt27d6uzsjCDIo0ePKioqtLW1sUFbsGCBxLScSqXeunWLwWAMGjTI1tbW1NQUc8Bp06aBzF9TU5NKpeITMBKJNGLECLA0g0QidS4tx4KAu7s7vjbwV/yEBWwAn/KNGjUqOjoa6NTd3R2/HKyNZB5FUR6Ph4+ia9aswYcI/IUPlqIQIoaZmRmXy/306ROYTQCEbBxk7OXl5YRUX09P79q1a3Jyclg3CWUaGxvBYyqQANTU1BgbGx8/fjwuLu7x48dTpkzBvy3x5s0bfI7NZrPFfURRURG4lY6OTnV19fXr1wmJdBuVgKyytemSEHiTk5Px+QYoQxhPkHmqqqpqaGisWLECb/kGBgaFhYWBgYFFRUUJCQmLFi3CX5UgCIKf6LvF9bolnBIs2cPDgyAbFkPwM0hhYSEWGEkkkpOTk7+/P5Dt8+fP+Ny17Wtt7IoMDz5Urly58t27d+IJUj+lH6+QQhCERqNt3br16dOn4Gk2iqIXLlzIy8tbt26dr69vXl6era3tihUr/P39s7Ozt2zZEhgYGBYWBs6VkZE5cuTIqlWrCG9LtY2dnV1xcTGDwUhJSVFUVBw2bJjEFouLi7Ozs58+fUqhUObOnfvXX399+PDh7t27Hh4eqampERERWIUgB921axdYNTNq1KjY2FjxwuXl5fb29rKyshEREaCJpKSkpKSk7du3p6WlgaVACIKkpKSAu7kfP34sLi7GC3DlyhUmk+ni4lJcXIyi6NWrV7ExCQ4Ofv78uaGhob29PRjGjIyMMWPGgJGxsrLauHFjTk5OSEjIjh07wKXv9OnTnZyc+Hz++fPnPTw8yGTy6dOn379/j4kdHh6OH5mgoKCPHz/m5uYuX748Pj4+Ly8vJiampKQEiD158uTdu3d7enpqaWk1NDREREQ8f/78/v37JiYm6enpWI8YDEZ9fb2ioqKDg4OXlxdYYFJdXf3u3bvr169nZ2dv2LAhKChIS0sL1Karq4sgCJ/Pj42Nra6u9vX1dXR0lJGRuXbtGr48EAM/dOHh4Xfu3AFXVlwuNyEhAevmqVOnLl26ZGxsvGDBguDgYB6PB7qQk5Pz+vXr77//fsmSJWAZCI/H4/F4FRUV2EKYGTNmyMnJLV68mM/njx49evv27RoaGlFRUbKystj6z8zMzOjo6OXLl1MoFFVVVXyZcePGzZw5c9++fbdv3waaQhDExsZm2rRpa9asYTAY+IECfyWTyTU1NWFhYWVlZWFhYaqqqmBAnj59SqVSFy5ceOzYsbdv32KavX79OhgHgrWA2vh8fkxMDBiT2NjYz58/R0VFbdq06dWrV9gTA8JYXbx4Ecwc/v7+paWl+EHOzs5OSkpycHBwcnKaOHHi27dv8VaBoujly5excebz+ZgL/PPPP0+fPhUKhbt27QoNDY2JiQHWa2Njc+DAAQsLCycnJ09Pz4CAAHEHQVG0oqLCw8MjJCQkLCwMXx7kN/Hx8XjVg7OAjX369Ont27fr1q0LDg6Oj49HEERJSQnIP2zYMLx4eOfCAo44TCazbZvEdzM2NjY2NhboDkVRCwuLvXv32tvb5+TkhIaG4lt8+vSpp6fnxIkTTUxMQKcAs2bNqqysHD9+/NatW/X19TU1NfHajIiIwIYrLy8PbyHguSvm5pWVlZjYZ86c+fvvv93d3dXU1OLi4lrreGRkpKWlpaura1hYWFNTE76nT548uXDhgru7O4fD8fPz279/v5WVlb29/f79+1NTU8FqheLi4s+fP+PHX0lJydbW1sXFBUz/GRkZeBtOTEzESoaFhYmPhry8/OLFiyMiIlavXj1hwgRwy0kkEuXm5t69e/f777//66+/ZGRknJ2dfXx8xF+jYLFYvr6+4NYS3mGxAuIH8acgCJKYmFhcXLxkyRLwV3V19YULF86ZM2fIkCH4LmMVysvLP3z4sLGx8cmTJyABInhxfn7+jRs3HB0dnZ2dz507l5OT8+7du/Z4cXV19b1792bNmiUnJ3f69GlQDO/Fp0+fjouLu3PnzqZNmzIyMmJiYgizTGxsrL29va2t7eLFi2NjYwmxHW9XlZWVrXnx+/fvwQQxe/Zsb29vzCuTk5PxBoYNSGvuFhkZ2ZoXIwiCnz64XC5hSDHwlpaXlxcZGVlUVBQdHZ2fn99ahJGTk7O1tV22bNm9e/fEZ70lS5ZgtzVLSkqOHj26a9euffv2ffnyBa8jgmo+fvyIucbjx4/x+h05ciSw/4yMjC9fvuC9Ji0tDR9VQKMddRDgDkVFRcHBwX5+fvHx8YMHDwZhdtSoUfjmzMzMbG1tHRwcDh48iI1Mbm7u77//bmlpOXnyZH9/fxAkNTU14+Li8FnBs2fP8CkK1jSfz7958+auXbt+//334uLiNrIaiYouLS1ls9n4fRgIY44gCCHNoFAoMTExv/766+7du0HGZWVllZ6e3tTUBGrIycmpr68H9yWzs7PxIsnKyoKUjE6nY5NLaGgoIZQ9f/58/vz5srKy2Kw3YsQIggXW1dXhzyosLBQfH3l5+ZCQkPz8/Dt37oSFhSUmJpaUlICHeXPmzDl79qx4RlRVVYUJ9v79ewRB6HQ6g8GIiooqLi6OiIjIzs6+ePGiu7t7Y2PjuXPnQHanqalJmPXCwsK8vLxsbW11dXXv37+PDS8w8gULFiQmJnY6d23PnA4SGyxampiYgFFlMBiY/MePH1+1atWpU6eGDx8OwiZ+ShKfxDFMTEymTp3q5OTk6uqanZ09btw4fLYQERFBCLCg6ZqamraTQ/F4i3dPvPuz2Wx8ZzMyMkAT4IVxFotVV1c3YsQIIO3ixYunTZuGH7S0tDRgV4S0/PLly7W1tc7Ozr6+vvn5+QQHBOM8c+ZMQgJGJpN/+OGHTZs27d69m0wmdzQtT0tLS01NxYLArVu38LUhCNLY2Igfz/r6epFIhE/5oqKiMJ16e3uD+4NfTeaZTKZAIMAPOCFESExRsIgBfIdKpZqZmSUkJODNg5CNg4wdXCLhU/2AgAB1dfVx48ZhJ4qXQXAJgIyMDI/HEwqFbDa7pKSEsCyLkGNL9JHly5cDt5KTk5OXlyfose1KQFbZ2nQpHnixfAO7xMCP55MnT44ePWpnZ2dkZOTn50ew/LS0NIFAYGtru3LlSi6XS7gqqaiowE/03eJ63RJOCZZ848YNvGwgnALwMwgwJBAY3dzcbt++jclma2uL5a5fvda+fv26+IJHvAaDgoIkJkj9lP69QgpBkCFDhri5uZ09e5ZGo4GXmTdv3jxixIg5c+aAzEMkEsXHxzMYjKysrIaGBsxLO4eRkZGJicn79+9TU1OnT59OoVDEW8QesqmpqTk6OiopKcnLy6elpY0dO9ba2nrRokX49X40Gm3SpEk6OjrXrl3bt28feH1XvPDw4cMnT57c1NT05s0bEolEJpOtrKyuX7++cePG+fPn43cUwoMJQKfTc3Nz161bN378+BkzZhDGpLS0VFVVddKkSVg98vLy4CVnBEEEAgGXyzU1NZ0wYYKPj09eXt6YMWPIZDKJREpPT8/MzPT09GxpadHS0kpKSsLEfvXqFX5kkpOTaTTaxIkTR44cOWbMmOjo6Nzc3Hnz5onLzGazP378qKCgMGfOnLlz5547dw7/Vz09PWdnZ0NDw4cPH2IxEUXRrKysJUuWjBw58sKFC63pzsLCwtbWlsVivX37tqqqCisfFxeHLa8FlJSUjBkzxsbGxsXFJT4+ntBNJyenU6dO6ejorF27lkajgVM8PDzWrVunqKh44sSJuLi4OXPm/PDDD3p6es3NzVgZBEFMTEzu3bu3a9eu169fg0cc/v7+Pj4+YCeapqam8+fPjxkzpq6uDuyEpaWlRSjj6ek5ZMiQa9eunT59mkqlAmNobQ0OiURycHC4efOmrKzskCFDsNvnenp68+bNMzQ0vHv3LolEwmtWUVFRKBTiraW2tnbv3r2NjY3Y4wIAjUZzdna2sLCwt7dPSUmZM2cOgiD4sdLQ0BAIBFu2bBk1apSDg4PE1fXAkNTU1GxsbPBWQSaT7ezsvL29wThTqVTMBSIiImbNmnX79u0jR47k5uY2NzcD6xUKhSkpKSwWi0qlcjgcDQ2NiooKgoOQyeTvvvvOyspq6NCh4AYZVh5s5ZaVlYVXPUFUBwcHS0vLIUOGsNlsvPzI/3podna2eMAhkUgkEkkkEmE/v2qT+G5iiYKamtrMmTNZLNaIESNsbW1jYmKamprw7pyRkUGhUGbMmNHU1IRfNkyhUC5fvgwevxw+fPjnn3/G9w4fT9TV1fEWEhcXh7d/Ho+HiR0VFWVmZrZ169bx48dv27bN399fvOMcDicoKAg4aWJiYlJSEt5bHzx4YG1tPXr06LFjx6anp4Ney8vLP336FL+uhzD+TU1NYDzBnwjRCSTHoGRpaanE0UAQxNnZedCgQV5eXnPmzAFJP5/PX7p06apVq44fP/7q1asNGzZIcCoESUhIUFJSGj16tLjD6ujoSDyInYIgCIqiQUFBs2bNwj/1JZPJmC2JM2rUqJaWlpiYmOrq6jFjxoCDeB1VVVW5uro+fvy4sLCwvr5eIBCgKNoeL0YQZMKECRMnTtTS0jp27BibzVZRUSFEvJSUlFGjRllaWjo7O0tMelrzYoJdqaiotObFXC6XTCZPnDiRTqenpaU1NDQAr2xpacEMbPv27ViLrbkbsJnWvBg/fSgqKooPqbilgan27du3nz9/BsucJUYYTU1N4N0SZz38risaGhoLFy5UUlIik8m6urp4HREiZE5ODuYaCIKAR+hAvyiKYvbPYrFkZGQwryktLcXcE3sdo3MOUlpaGh8fLy8v7+npaW5u/vDhw0mTJvF4PEJzJBKJyWTiY2l2djaKot999526uvrcuXMfPHgARAXbc2Djk5qaqqqqiuVIWLsUCsXOzm7cuHE0Gk08t8GnVRIVzWQyqVSqvLw8djsJP+ZgmR4hzQgMDDQzM3NzcyOTyUBZwDw4HA6YdsPCwtLT00+cOJGVlRUUFEQQCczC+MmlsLAQP0plZWVDhw61sbEBd5mBv4waNer27dt4C6yoqMCfVVBQgO8saMvIyEheXj46OnrkyJHgCnbMmDEMBmPWrFnKysqgGCEjOn36tJWVFRCsvr4es3B/f38+n29paVlWVjZp0iQbGxtlZeXDhw+bmZlhgQjvCyUlJSQSacaMGTweD/96EfBcIyMjMpnc6dy1PXN6VVUVeMqIRUswqjdv3sTL39LSAu6ynThx4scff8RPSRIncQCPx1u1atUPP/yQmJh45cqVkpISRUVFTKF8Pp8QYEHT9+7d+2pySAA/6ZeVlWHu39DQgO9sXV0daAJcrNJoNCqV2tLSAippamoik8niIZSQlqurq4tEom3bto0dO3bmzJniDqiiojJp0iTQUPem5RwOBx8ECBUqKCgQxhMsycRSvuzsbLxO6+vr8VsstZY4ib/ZhA8R7969k3gxiEUM7Cx1dfWcnBzChlwoihKycV1dXXyqX1xc/OzZs40bNz548KC0tLS5uZlOpxPK0Gg0fAJgZ2cXHh6+fPlyRUVFWVlZwhRAyLHd3d3FfQRMPeBEBQUFcT22UQnIKglRNDIy0t/fX0tLC0tWMS1j+UZhYaGurq5QKCRkniQSadKkSeBWlLgVgTmLSqWKX5Woq6vjJ/q8vLyuu153hVOCJZ8+fRqTDYRTAH4GAW/8gcBobGw8bdo0zLBlZWXxuetXr7XF95nFez2NRpOYIPVT+v0NKRKJ5ObmFhsbGx4e7uTkpKCgAAJiaWmphoYGuButo6Pj7Oy8dOnSqKioLu4bB3KOf//9F0GQTZs2USgU8Rbx15xYfFFVVc3LyxMKhQwGA38XnEKhDBs2DDjJsWPHwHvU4oXx1yog8W1sbPz1118HDx584MCB4OBgsFaWSqVyuVyBQAB29cYEAJvpVlZWCgQCsF0ofkxoNNqnT58wUclkMliluWzZMgUFhZCQkH///XfOnDlv374FyyXAe4VAzqlTp546daq8vDwtLa2pqenz589AbB6PRxgZDocD7pvMmDHDy8tLWVnZ2tpafIQNDAx27dqFpSmEHnE4HCaTCd72wnZlJpFISkpKNTU1QqHw0qVL9vb2EmvGjyG+PHizD9+QgYEB+GtNTQ2fz8d3MyUlRUZGxs/Pr6ys7NixY6NGjQJbjwcEBFhYWEyePBm0AlYRNzU1/fbbb+BZCtgmwMrKasqUKaamptXV1Tdv3oyJibl48SK2PKqlpcXQ0PDz589gCXdaWlpBQQFWBtxx37Zt28iRIz98+CAQCPCL+wgDhR0HO7M+efIEe/sAQRCQ7qioqICVyWlpaXjNEqzFxsZm3rx5AoFg0KBBIpGIz+cLBIL6+nqhUFhRUYGiaFlZGUgTCSbx5cuXyMjIiooKgUDAYDBQFMULCV6RwyBYBYqi+HFev349pj7wzvzo0aPPnz//yy+/YHYuJydnYmJy8uRJHR2d169fq6ioiDsIgrtfLCMjgy8P3nNUU1PLyMjAVC9uQuA/hKkab10kEkliwFFQUEBRlMViaWtrg9eF5OTk2rBJ8W5i1g78CH/zAt9iS0tLZmZmQ0MDl8ttaGgABcCKMwUFhZ9++snNzS0hIYHNZuO1iY8nb968wVuIrq4u3s1B2gRab2lpmTZt2k8//eTr63vhwgWJHU9JSZGTkzt48KCsrOyDBw9evnypqKiI9RRBkNraWhRFIyIiUlJSeDxeQ0MDiqLglVs+ny8UCplMJtBFa+P/7NmzyMhIvA1jJel0ukAgIIwGk8m8dOnSpk2bhg4dKi8vD65M8PuSUiiU1m7yoij67t27yZMny8jIcLlcvMNmZGTo6OgQvDgjI0NLSws7BUGQurq6wsLC1atXi1dOoVDwXcbWzyspKY0bN+769evjx4/HVmzhddTY2Hj+/PnffvtNQUHht99+Q/4vKn7VixEEqampaW5urqqqotPpYCNPQmDn8/k5OTmgHiCVxFCDSIrteLtqaWlpw4tB9wlerK6uPmHCBGBg586du3z5ctvuRqVSP3361JoX46cPAwMD8SHFwFva9OnTT5w4oaqqamNj01qECQkJAVlma7Mehry8vI2NDcjCURTFR1rQHKYaJSUlzDW+fPkSFRWF6Rdv/7KysnivAbddwOBgxTrqIGBgp0yZcujQIVASvGtDJpMVFBQIzYFK8CNjbGwMnvk3Nzf/+++/2C65hPFRV1evqKgQf1BBoVBMTU0nTpwIfraW1SCthGsajSYQCAQCgcQxRxCktraWkGYgCKKtrW1ra4vV3NLSgl2Oslis+Ph4Ly+vYcOG5eTkXL16ddSoUQSRwFDjR5UwShQKhXC7WdypCWOroqKC7yymbisrq6dPn7q7uwcHB5eXly9duvTVq1f4YoSMqLy8XPxVjpEjR966dSswMHDPnj3FxcX5+flCobCqqopKpRLupOBnzJaWFrDkgbBrGGbknctdwaZ+X53TxbfXAKOqpqaWm5uLyZ+UlPTgwYM//vhDTU2NMCWFhoa2NokkJib+/fffFy9enDJlSnV1dXR0tKKiIla4srLyxo0beAcETX81OaRQKIR4ix8QvPubmpriO6ugoIC3GVVVVWNj4+joaAsLC4FAcPToUS0trby8PPEMgZCDhYeHV1dXCwSC8vJyS0tLggOWlZWBPnZ7Wg6WCGBBYO/evfgKCwsLfXx88OMpEonwo+fk5FRZWYnplPAlitYSp4qKCk1NTfyA40NES0uLxBRFPGLweDzCqzMoiopn7ODqAEv11dXVDQwMnjx5kpKS0tzc7OzsrK+vTyijo6ODTwDq6+tnz5793XffvXz5Mj4+ntBNfI6tra0t0UeQ/3MrcIq4HtuuBBGLosOGDXNzc5OXl4+KiiJoGcs3wLImwuTL5/PT09MbGhoEAgGLxRK3fExU8auSpqYm/EQ/bNiwrrted4VTgiXLyMhIfLiOn0GwLagoFArhWmb37t14M27ntTbeJPAa5HK5EhOkfkq/vyGFIIi8vPzOnTsTExPJZPKaNWsOHz589epVXV3dI0eO3Lx589y5c9u3bz979uydO3eUlJS8vb272Jy1tTWDwRg/fry2trbEFs+ePWttbU34iJWjo2NoaKiLiwuXy8Xev8Uzffr04ODg69evt12YRCJpa2ufPXt2165dYBtdOTk58AQVQRA7O7tDhw4FBwdzOBxCgrJq1aqDBw/+888/lZWVCxcuXLNmzcGDB8GY7NmzhyCMo6Pju3fv5s2bp6WlxWQyPT09wZt6e/bs4fP5ysrKurq6Fy5csLa2plAoLi4uCIJs2bLlu+++e/PmDSb2qlWrsJHx9PS8c+cOqNzc3JxCoZiZmbXni0KEHrW0tBw+fFgoFM6fPx/LTkgk0vfff3/w4MHbt2+bmZlJ/CYgYQzx5WfPnk1oaP78+REREQsWLGhoaJg2bdr06dMjIiKwbjY0NGzYsEFWVtba2hp7XjdkyJCjR4/q6+tzOJyTJ0/6+vreuXNHKBQ6OztjZSwtLY8fP66rq8vlcrdt27Z161ZlZeVVq1ZpamqeOHFi0KBBKioq+/btQxDk1atXUVFRRkZGP/74I1bml19+iY+PT0xMrKmp+eGHHwhTV2uqV1BQGDt2bEBAALbYG0EQDoezf/9+Eok0Z84cW1vb0NBQTLPAqgnWAvarQlF07NixO3bsUFNTE4lE4DZcWFiYnp4etpaEMFbr168/fPiwr69vSUnJ/Pnz8UKC17z19fXPnTs3ZcqUiRMn4q2CTCazWCxsnPFXDiQSaeTIkU+ePPnw4UN5eTmHwwHHwQOczZs302i0cePGDRs27Pfffyc4CB41NTV8ebBfwPTp08PDwzHVt21ImPwE8fDOhQUcLS0tR0fHjRs3GhkZlZaW/uc//wFvb7Vmk611UxwQhbAWPT09Z86cuW7dOvz1D5lMXrt27f79+x0dHclk8tixY+fOnVtdXY1pk0aj+fj4gOGysbF5+vQpZiErVqw4evQoplO8dVEolOjo6EuXLpFIpPXr1w8dOpTQcbA9gZ2dHdj+w8XFZe/evdu3b7906RLo6c8///zHH3+4uLiAm1ZKSkrr1q2jUChgC543b94sXryYTCYTsmR5eXkWi3Xx4sUDBw6QyWSwmwPehvFaFh8NVVVVGRmZrVu3UiiUESNGDBs2DAzRkiVL9u/fHxYWxuVyT506JXG0QWI3c+ZMBEEIDgtepBU/iD8FQRAmk0kikTQ1NcUrNzMzEwgEErtsb29/8+bNX375BX9bGdMRuN728fFRUVFpbGzk8XjiMV+iFyMIkpGR4e7uLhQK9+3bB14dInjxzJkz3717t3jxYjabbWtrKx5qlJWVgTp++eUXQmzH25WlpSWWqBHMG1utQPDi6dOn4w1MfMQI7gbmsta8GD99mJqaCoVCwpBKZPjw4SiKWltbDxs2rI0Ik5ube/78+W3btp0/f1581sPIyspatmwZWNxqb2+P19H8+fPxqrG3tw8LCwOu8dNPP6Wnp2P6pVKpYMDl5OS0tLSAhQOvGTJkiPjT6Y46SBsYGRnhmxs7duzff//9+PHjOXPmYCMzd+7c2bNnb968WUZGZsmSJViQJORLe/bsSUtL+2qLrU1tSCuKNjQ0RFGUyWRid0kIY75s2bKvNlpWVqapqQkuWT9//iwjI2NnZycvL6+vr//gwQM5ObmHDx8CkSgUCkjJrK2tsfs+mpqa+FEyNjbGbx6MzXoEpyaMbWufVRozZsytW7dGjx6dkZFRVlZGeLSDiM0mEp/CKikpWVtbh4WFWVlZmZmZRUVFLViwgEKh7Nq1i0QiXb16VXxtmqampr29/erVqxUUFAjLizA6l7u2c04XX2gDmDlzJib/li1bfHx8mpqa9uzZo6CgsHDhwps3b0pM/lks1vbt23fv3g3WxE2cOPHdu3cLFiyg0+lgGg0ODsYKKygoEAIsOP7V5BAkYPh4ix8QgvvjO+vg4IAvTKFQtm7dunPnzhcvXoAbKzt37nzy5Ak+hAK7IqTlq1atOnTo0PXr18vKypycnPAOuHv37pSUFFB/t6flqqqq+CBAqEFVVVV8wsKnfIsWLfL29sZsEr98iTCGBFOXlZXFDzghREjMzbCIAX6iKFpQUGBpaYmPNgUFBWfOnCFk7DQaLTU1FUv1p0+fPn36dBRFDx06ZGtrC3ZzI5TR1dXNzs7GEgCw1/CDBw8aGhoOHz5MiG/4HHvdunV8Pl/cRzC3AimWuB6/WglhiAwMDMDTWTKZjNcyPt/AUiZC5jl//vxt27bJyMg0NTVJtHwg6uXLlwlXJbKysviJHr+BZqddr7vCKcGSwbsU7YdwLWNiYoLPXb96rQ3u/WEQQmVzc/OnT5/aSJD6GaK+x44dO8BT3G+JtLS0wMBAoVB448aNkydPdmPhnqO2traoqKilpaWd5dspNpfL3bFjx+fPn7tHyj5DY2NjaWmpQCAAPysrK+vq6ghluFxuRUWFUCjsXBPgWQeXy+3QWTdv3rx06RL2s6GhYd26dTk5OZ2TAePUqVP//vtve0oKhcK9e/eGhIS0UeZbtQoCHA4nLy+Pw+FIW5C26C4L6eMwmcza2lrCQbDwnsfjSUWkNkhLS/vhhx/AujZR9+now4cPW7duxaJW2zx79uzQoUNtFOhfXkwYUsi3Afh48cuXL7tSw5kzZ549e9aNUkmkf1lgQ0PD3bt3WSxWenr6mjVrJJbpI7nrt4pQKCwrK6usrGz/Kc+fP09NTeVyuVu3bo2NjW2tWP8K3d0LIWLU1tbu2LGjuLi4nadLTPXbX6alpQV80UL8T+3PsTHE9diJSsTpUL4BXkRtuwzhqmSA09Fr7U4zZswYd3f3nm6l0/TvTc37EZqamqGhoYsXL46JiRF/XNCVwj2HmpraoEGD2r/pe3vErq+v37Vrl46ODn7BzreBvLy8gYEB9lRWW1ubcG8bQRDwSnnbD+TbAGw7Qlgb1TbXr18PDw8HX2YBUCiUIUOGEPbx7QR6enoSV3lIxMjICP/RQwLfsFUQUFBQMDExwa+N6oN0l4X0cdTV1cWfBsvKyhoZGYm/ty9dkpKSDh486Orqii287S4dKSoqYm9UfRU1NbU2Pkrbv7xYfEgh3wZkMnnp0qVZWVnYs/SOAi74CUtUup1+Z4Hy8vL19fVr1649cODA4sWLJZbpI7nrtwqZTNbX18evcPwq6urqR44cWblypaGhIWGzPIz+Fbq7HULESEpKmjp1Kv6rCG0jMdVvfxkqlaqvry9xKu9Qjo20oseOViKRDuUbNBoN2/1AIuJXJQOcjl5rf6v899XTvgNYiVpUVCRtQSAQCAQCgUAgEAgEAoFA+iVjx44dPny4+E4CfQS4QgoCgUAgEAgEAoFAIBAIBNKrwBtS3UxxcXFFRUVmZmaHzmpsbHz9+rW/v39xcXHXZaitrS0sLOzQKQUFBdhnU3g8Hvj2Z2Rk5Nu3b2tqarKysto4VygUEvrLYrFevHjx4sUL/Ecx8YXZbHZubi44Aj5RjP/yYBfBvjYC2urGmgmt4Ieli2PeXQAxOBwONrwSwY9/5wAbGbS/vESR2lkJYah7FMJXw/AwmczHjx/n5+fjD3Z0HNrgq1rrfVqzkx71LED7R6Mn/KiHaKd1dTQCE8jLy/P394+LixMKhYQ/AYUWFxeDb7q1Ez6fjxcARdGPHz/ev38/MTFRvIlO0FENEuTJyMiIioqKjIyMiorKzc39qkuKd7+LI8ZkMtPT07OysoDR5ufnl5eX4wuA789KnNyxleB1dXUlJSUlJSXYpAk+VVZcXFxcXFxeXg4+AiUUCnNzc8EX5QQCQVpaWudyBhRFOzcLEIa357wPiwBteI14YamAHxNxSVqTrXuzPoJTtAd80tL1rE8gELx7987f358wRQIIiXHPZX0IgpSUlHTXpCwOXtddHPPuAojR01kf+M5ah2qQmLn1wayvDQQCQXh4+Nu3b/EG1o3Rpg9mfeKujdGjnoV0ROk94Ue9D8G6pJ5ZSR14Q6qbuX///vPnz0+cONH+U+rq6rZs2RIREVFUVLRu3Tr811g6R2xs7M2bN9tfHkXRv//+OzExEfwsLy/fvXv38+fPw8LCIiIiysvL2xaJzWbj+5uYmLh8+fKEhIS4uLjly5dnZ2eLF05JSTlz5gw40tjY6OPjg319qYu8evXq/PnzwL05HM6JEye6q2YCLS0t+GHp4ph3F0CMmpqad+/etVEMP/4dAnysPS4uLjU1NS8vr/0nShTJz88vJCQE/L+iouKXX36RGD0JQ91z4I2HAIqiZ86cCQ8Px2YOMA74LnSRjIyM06dPd8s81F20Zic96lmAr9owoIf8qCdov3W1PwJjdoj9vHTp0k8//VRcXHz58uWff/65qakJXx4o9P79+6Ghoe2XvKamxsfHB2vir7/+OnXqFJPJPHny5J9//tn+elrrQkc1iJdHKBT+8ccf165dCwsLCwsLy8jI+Gpowne/6yMmFAqvX7/OZDJjY2OB0TY3N1+/fh272C4vL1+9evWdO3e2b99++/Zt/LlBQUGbN29GEITH423fvv0///nPnj17Xr58Cf7KYrH+/PPPPXv2bNu2zcnJCVy3BAYGrl27tqamprGx8eeffz579uyOHTvu3r3b/tFD/s8Uk5OTOzEL4Ie3R70PDGYbXoNHusETPwuIBy6JsnV71od3inaCT1q6mPXV1dVt3rz55s2bRUVFmzdvfvDgAaE8ITHuuawPQRBfX9/umpTFwdt/F8e8uwBi9FzWh/zfCFdVVbVnUsaQmLnhnYUwf3313J6gjcwTQZDIyMgzZ840NzeTyWRM2m6MNn0w6yO4Np4e9SykI0rvCT/qCTpkXVLPrKTOQN9Dq0OwWKxHjx4tXrw4JSWloKDg+++/f/DgwdixYz98+PDp0ydHR0eJX6XNyMi4e/cuh8Nxc3MbN27cvXv3vnz5Ym9v7+rqCvYwq66ubmxs3LFjh76+/uTJk4VCIY/H8/Pzw+osLS29efOmQCDw8PAwMDDw8/NLTU0Fn0WPiorKz8/PyMgYOXLksmXLIiIiQkNDaTSanJycRAEGDRoUHBwMbnJv2LBBSUnp1q1b5eXlZWVleJnBF2HBtzN5PF5iYmJhYSH+xPr6eqxO/Md9m5ubL1++vHXrVrBf3aNHjyoqKrS1te/cuZOenj5+/HiJQ9TS0vLo0aPq6mo3NzfwgisovHLlysrKyhs3bnC53JUrV9rY2AB5Hjx4wGazCwoKFi1aNGnSpOjo6BcvXgwZMsTZ2fnx48eZmZn29vajR49GEEQgEPj5+TU1NS1dutTa2rq8vPzmzZscDsfDw8PS0jIuLi4gIMDQ0HDNmjWfPn3CRnLFihVg9743b97k5eVlZmZOmTLFxcWFzWZjsrm5uSH/91X7ro+5UCh89epVcHCwhobG+vXrNTQ07t+/n5KS4uTkNHv27Ojo6MDAQFNTUw8PDyaT+e+//7a0tHz//fcyMjLPnj1jsVhLliwpKirCi9HS0nL79m38KIWEhISGhpqbm2toaOjp6QmFwmvXrs2ePRtY1JgxY8zNzYEweXl5MTEx7u7u1dXVL168WLFiBWZyhoaGgYGBpaWlM2fOBB+sba0JMD7Nzc13796trKzU1NSUl5fncDi3bt1iMBiDBg2ytbVFEOTLly+7d++2srLi8/lBQUHDhw93cHC4desWXuMAggWCT+rm5+eDEXB1dU1OTsa7DGY2qqqqr1+/rqioUFRUXL9+vYKCgkTnWrRoEcF4GhsbsY5raGi8fv3a1NQUGEZGRgYYB0NDQ6wLK1asYDKZmIENHjwY7+xVVVV42wOdKioqwuREEKS2tvb48eMoihJcbMKECWAYhw8fbmtr21oTIJ40NTVhxjNz5szg4GDMrnJycsSNHN9NQkgxNjZuzU4InoV3JWzzTry7sdnslJSU77//3s/PD6gbK5+QkJCcnEwikdzd3Z8/fw4kB63gx8fGxgbfCoVCEfejvLy8uLi477//HoRoJSUlvP+WlJRgvkOn08XNqbCwEG8qKioqmFe6u7tHRkZi46CtrZ2Xl1dTU0Oj0caPH//q1aspU6bMnz+fwWBgXZaTk8OaWL58OcG6CgsLMWE4HA7euiRGYMzUFy5c+PHjR6B0MzMzYIeWlpZqampZWVmhoaEXL140MjJis9m3bt1isVhFRUWYIYnvmkmIPAQLKSoqunXrFo1Gw26voCialpa2cuXK+fPnu7m5RUVFERRtaWkZGRkpMV4Rxrw9kfCr8iAIIiMjs3TpUicnJ/AzODiYz+fjQ9PEiRPxdeK7Lz5iTCYzPDxcYuFXr14ZGhqOHDkSfzAjI6OiomLUqFE5OTngiJmZGZfL/fTp0+TJkxEEqa6uXrBggbu7e3R09IMHD9zd3cGHLwIDAx8/fgw+Z15XV0en00+ePKmnp4d98kJDQ+PPP/8UCASHDx92cXGxsLDIy8sLCAjQ0NBAEOTTp080Gs3Hx6eyshK7sG/DgNevX5+ZmZmcnMzj8bKysvLz81VUVCR6N4/H8/X1ra+vLysrc3d3t7KyEh89MFYE3YHIs3DhQhqN9uTJk8GDB+O9D/vch0QvNjY2njp1amFhoYaGxoQJEwICApSVlblcLvAaU1NTBoOxatUqNpv99OlTIEYbwVNeXh6bqRctWvTo0aN2Bs82giEImBKTQCaTWVFRAWaBSZMmEYKwuro6XjYQasSzPsLIyMjIYDV89913MTExIMlxd3f/+PHjV52CxWLhc5WnT5/iZ2qJSctXsz78qBISuSdPnqioqPj4+FCp1Llz58bFxfF4vNDQUIl+BMBnfba2tngbQ1G0K1kfgiDJycmpqakTJkxwdnYmzLz4YIUP0a3NAmQyGZ+Rgvqzs7O7PuaEWGdkZISPnLW1tRLT/mnTpvn6+gJ7trKyIogRHh6Ot42SkpJbt26pqakpKSmNGDGijawPWOy8efO0tbXv3btnY2OTmJgIWpw8eTLmhm03sWnTJgSX9Q0bNgxBEBRF8Zkhgsv6rK2twfylqKj4+PHjjmZ9y5Ytq6urw1ymvr6+taxPXV29NecqLy8HmefatWvBfQHMtObNm3fnzp2KigoSiYTgsr4lS5bgPRpBELyBRUREBAYGGhgYrFmzRllZGZ9tghjYxcBFaEJLSwuMFd54SktLW7sAAWOI7yYhpMyZMwdBkNDQUAqF4uDg8OHDh6qqqvnz53/Vs0AB/NXr+PHjfX19ly9fXlhYmJ+fP2PGDKy8rKwspsTKykog+bJly4AptpY5m5ubi/tR2/NOc3Mz5jvTp09/+PAh5pVTpkwBArcx32VmZmLjkJKSIhQK2876TExM8JEqOzsbb134+WX8+PF465KYWRHy6q5kVv0CuEKqA8jLy6ekpICo5Ofnl5ubGx0d/ejRo+zs7C1btgQGBoaFhRFOaWxsvHHjhqOjo7Oz87lz5wIDA5OSkrZv345faW9iYjJ16lQnJydXV9fs7Oxx48ZdvXoVq/PZs2e///67paXl5MmTr1+/fuHChby8vHXr1vn6+gYFBX369Ont27fr1q0LDg6+efPmnTt3Vq9ezWazuVyuRAFycnJ8fX0dHR1lZGSuXbt25coVJpPp4uJSXFyMfwhZXl7u6em5a9euK1eusNns2NjY6upq7MRLly7h66ytrcVOZLFYdXV12CceFi9ePG3atKdPnwqFwl27doWGhkq8X9vQ0KCoqDhnzpyzZ8/iC8fFxV2+fNnY2HjBggXBwcHgExh8Pv/p06cUCmXu3Ll//fXXu3fvLl686O7u3tjYeO7cuenTpzs5OVlbW4Oa6+vrFRUVHRwcvLy8srOzDxw4YGFh4eTk5OnpCZ75eHh4kMnk06dPJyYmYiMZHx8PTv/8+XNUVNSmTZtevXoVEhKCly02NjY2NjY+Pr5bxjwjIyMkJGTHjh10Ov369ev//PNPdnb2hg0bgoKCnjx5cuHCBXd3dw6H4+fnt3//fisrK3t7+/3796empj5//nz+/PlVVVV4Maqrq+Pi4vCj9OHDh7t373p4eKSmpkZERCAIQiaTa2pqwsLCysrKwsLC8F8AAYGvqKgoOjq6tLQUb3J5eXm2trYrVqwoLi7Ozs5uuwkEQXg83vPnzw0NDU1MTN69e3f16tXa2lpnZ2dfX9/CwkIURSsqKjw8PEJCQhQVFW1tbRcuXHj16lVxjRMs8Nq1a6D+qqoqMAKhoaGYy4SEhODNpqys7N69e7NmzZKTkzt9+vTly5clOpe/v7+DgwNmPCiK4jteXl4+bdq0NWvWgG+vmJubg3Gg0+lYF8LCwvAGFhAQgDl7Wloa/k8MBgM0gZeTz+eXl5fb29vLyspevHgRb0IVFRVgGG1sbFprAosn169fx4zn9evXeLsSN3JCNwkhJT09vTU7wXsWwZWAVdfX1+NFVVFRiY6OPnr0aExMDIfDwZdPSEjIzc1dsmTJgwcPMMk/ffpEcP/Y2Fj8WZcuXRL3o8rKyvfv34tEouLi4s+fP+P99/Hjx3jfSUtLEzen6upqvKmkpaVho3fnzp2qqipsHFpaWu7fvz9lypTs7Oy7d++6uLjcvn2boOWMjAysiQcPHuCtq66uDi+MlpYW3rokRmDM1AsKCjCly8nJATsEnwsE1/Mg41RSUtq+fbuKigrekMTfoSZEHryFhIWFeXp6Tpw40cTEBFuoT6VSPTw8Tpw4YW9vf/Xq1cmTJxMUHRwc3Fq8Iox5eyLhV+UB8eHmzZu7du36/fffi4uL09LSCKGJUCd+phMfsfr6+tYKq6uri38f8/Pnz0ZGRmQyGcSod+/eUalUMzOzhIQEUMDa2trDwwPccB81ahR2X8bZ2dnHxwcojsFgJCUl/fTTT7NmzXrx4gW+/sTExOLi4iVLljQ1NV27ds3NzQ34YElJSWJi4rp16zZt2oRNPW0Y8PXr14GjrVq1atasWU5OTqamphK9G8ywVCp14cKFx44de/v2Lb6SlJSUvLw8ibrj8/kxMTFgDoqNjSXMnqBMQkIC5sWnTp26ePEiuCbx9/cvLS0FlSMI8vHjx+zs7KSkJOA1EydOfPv2LXhSUlJS0nbw/Oeff/AzdUxMTDuDZ9vBEARMiUkglUrFZoHIyMh3797hg3BJSQleNjAO4lkffmROnz6NzwEePnyIJTne3t7tcQpCroJ3B4lJi8SYQ5hzW0vkUBTNyMgYM2YMuKlnZWW1cePGnJyc1vwIgM/68B567dq1S5cudSXrQ1G0rKxs5cqVz58/f/r0KV7phCQQH6JbmwUCAgKwXr9//z4tLe3Lly/dMuaEuJSQkIBFzkePHrWW9j979gzYs7W1NV4MEHzwFhsWFubl5WVra6urq3v//n2kzayPTqczGIyoqKji4uLw8PCHDx9iLUZHRwM31NTU/GoTCC7rmzBhQmxsLCEzxGd9tbW1tra2y5Ytu3//fieyvpqaGnwwwZsNIeuLj49vzbnAw1EXFxfwJABvWpcuXZo3b96cOXNmzJiB4LI+ZWVlzKPPnz+Pt6jk5OS///7b3d1dTU0tLi4OfykHLg+7HrgITYAx+fjxI2Y8jx8/buMCBJTHd5MQUoBry8vLP3z4sLGx8cmTJ9hzsjY8C+S0CILgu/z582cSieTp6Xn27NlBgwYRXA8osba2FpP8+fPnsbGxERERrWXOL1++FPejNuad169fE3wH75XY6W3Md3Q6HRsHLpf71ayvpKQE34S9vT1mXYT55d27dwsXLsSsSzyzIswI+PjQicyqXwBXSHUAGRkZGxub2NjYlpYWbW3tyMhIbW3t9PT0ysrKrKyshoYGkCrhUVBQcHV1ffz4cWFhYX19vamp6cOHDzdu3Dh//nzwrABBEB6Pt2rVqh9++CExMfHKlStFRUU5OTkMBgPUmZmZiaLod999p66uPnPmzG3btm3evHnEiBFz5sxJTk6Wk5NzcHCwtLQcMmRITk7OmDFjbGxsXFxcsFsqBAEEAoGFhYWtrS2LxXr79m1ZWdm6devGjx8/Y8YM7MEsgiCqqqoLFixQVVVVUVHBHqpjJ8bGxuLrbGlpwU6k0WhUKhU70tTURCaTZ82adfv27SNHjuTm5uITIAx1dfVZs2YpKyvLy8vjC/N4PDs7O29vbx0dnbVr19JoNFBeTU3N0dFRSUlJXl4+PT190qRJNjY2ysrKhw8fNjMzA/ebAXp6es7OzoaGhg8fPvzy5UtKSgqLxaJSqRwO5+PHj5mZmZ6eni0tLVpaWiYmJthIstlsrDvOzs4WFhb29vYpKSnu7u6EjmRlZXXLmJuamk6YMMHHxycvL8/Gxqa6unrp0qUjR468cOHCgwcPrK2tR48ePXbs2PT09JiYmFmzZsnLyz99+rSsrGzo0KE2NjZ3794VFwM/SmlpaWPHjrW2tl60aBG4NiCRSA4ODjdv3pSVlR0yZAj2mAVBEA2N/8feewZEkWwB2z2RIQxRkiAiIFEBRQkGJK2IgIA5ICrm3eXqXjGsOa/L7qpr2jUCiiIGJIhkCRJERCWOkvMwDHkGBoaZ5vtR79tvfT2IGO7udW8/vyZUOHXqnFPV1dXVKmZmZs+ePXv9+rW3t3dYWBhmckVFRQiCYGKPXAVmS3Z2dt3d3WKx+N27dxs3brSysnJxcSGRSGQy+ZtvvjEzM9PX1+/t7SWRSBQKZdgel7RA7Ed9ff3JkyefOXMGc5mmpia4ECqVam1tbWtrq6qqevz48Xfv3nV0dEg61/z58+/evYsZj0gkqqiogBsOxAP/kkgkID/cBHBBhRmYiooKm80Gzo6iKPxXa2urhoYGmUzGyWlqajpjxoy+vr60tDSciwE1isXi91UB4glQ8pIlS4Dx9Pf3d3d3A7uaOnUqWEKCjRzXTFxI6evre5+dwJ6Vm5sLu5JAIJCVleVyubCoAwMD4OI5JCSkvLwcTj9+/HhbW1stLa2KigpM8vz8fBKJBOsHzqWiojI0NLR582bJ2AUD+29eXh6dTsd8p7GxcVhzwkzl5MmT6urqmFdOnTrVzc0tNDQU6EFJScnIyMjOzu7FixeqqqqmpqZMJrO1tRVucmdnJ1wFmUzGrIvNZsPCVFdXk8lkzLqQ90Rg4Oxjxoy5ffs26PQxY8YAOwQJGAzG0NCQWCwGRXV1dcnLy+NiEU5FcOTBWUhjYyOFQnF0dOzr68Oe1BCLxRMnTkxPT6+trY2IiNi2bduvv/4Kt/rNmzfvi1ewzkcTCUcjD4IgIGhMmzaNRqNhoyocmnBl0ul0LK+kxvT09ODEsK7Apk4czc3NYD0LRllZuaKiAkVR0C4+n3/06FEajbZ27dphDdXExCQ+Pl5VVRVcJzg6OoKVLxRF4+Li5s6dq6CgAPaNysnJdXV11dfXDw4OTpgw4cqVK/n5+cHBwbNnzwaXDSMYMIPBsLW1Ba+XBqY4gne7u7tra2uHhYWRSCRcj4BzrLC+6+jo2LNnT29vL9gVi4EbPcGN97KyMtiLRSLRli1bzM3NnZychvVi4DVKSkqWlpaZmZmVlZXu7u7g9xGCJzyL6O/vH2XwHDkYgoApOQnU0NBgMpnYKMDn88FJKHAog2UD7cLN+hoaGsaPHw9rhsPhrFy5EpRw9epVeJIjLy//QafATbpgdxh20oKMYtY3wkRORkYGnGsG1CgQCEZwOsxHsFkfLrG9vf1PP/30ybM+Go3m4+NjYWHh6Oj48uVLuNPLy8tHCNFYCbAT+fr6Pnr0CG51T0/PF9E5rtUVFRVY5KypqUlLSxt22l9SUqKgoGBnZzc4OCgpBplMxmyjoaGBRCI5OjoODAyADRcjzPpAxnv37gmFQkNDw6qqqi1btmCOoK+vj2l45CowW7KzswNuhZsZwlOmnp4eEolEpVI/YdZnaWl5+/ZteCIxb9683377TXLWd/LkyVevXr3PuWpqasB0DpSMMy3wOBUWLbHRFvPoyMhI2KIGBwcNDQ23bt06ffr0b7/99t69e9i8FFwefn7ggqsICAgAYsPGgyBITk7OsBcgmA5xzYRDCp/PRxDE3Nx8cHAwKyuLy+Vi4+AIngXmtGKxOC8vD56K+/n5+fj4uLq6ampq4lwPdOKDBw8wyXk8XlZWlpmZ2fXr14edOb9+/XrY2AUDjzuFhYXV1dWw7ygqKmJeiWUZYbwzNzcPDQ0FenBycvrgrI/L5cKOD4wH2I/k+GJqaopZl+TMysfHBzbv0tLSz5lZfRUQC1Ifh5WV1f79+83NzfX19e/du/f999/39vZ6e3svXbo0IyNDWVk5Li4OTl9bWxsUFLR//35ZWdn9+/f39vbu2rVr/Pjx+/btS0xMXLp0KYIgL1++vHLlysWLF2fOnMnlcjMyMtTV1b28vECZYrG4pKSEx+P19/eHhITIysqCpejGxkYVFRUQLkFdsrKybW1tYEshNjnACYD83xke+FdeXp7D4YhEotbWVnglVUZGxtLSEmzexlZnsIydnZ1wmUNDQ1hGRUVFXV3dzMxMY2NjkUh09OhRVVXVqqqqKVOmnD9/fseOHcOu12JRHjykjSUWiUQMBiMiIqKpqenkyZPm5ua6urpwegRBlJSUKisrxWJxa2srlUrFDWZ8Pr+9vR1s/ldTU9PT0/v555/V1dUTEhL6+vpmzZr122+/NTc3l5aWslgsrEysRWKxmM1mg9sCampqsGygIUpKSiwW6/N1HhMTk56efvLkyfj4+OLiYiaTCbry0qVLCIJ0dHSgKJqWllZcXDwwMNDT04OiaE9PD5PJpFAoYL4uKQasJUVFxaqqKnBKLra728zMDEGQR48ebd++HRe2HBwcTp06paioaGlp+ejRI9jk2tvbMf18sAo4DYlEkpGR4XK5IpGoubkZbKPD1YuiKJ1Ol+xxnAXCJkehUMhkMuwyioqKra2tWCHr169va2vr7+9vbW2VlpZWVFRcsmSJpHPdvHkTrotCoeB8DYzTcLuAGFgT6HQ6bGAKCgqYszOZTPgvbW1tycaCpwNAA8EqEuxiQI3S0tLvqwLEExKJBBuPQCAoLy8HdlVSUgJLC4SXbCYcUkCaYe0E9iwNDQ3YlcBWapyoqqqqN2/etLCwePTokbW1NZy+uLgYmDEsubKy8tDQEKwfDw8PLFdxcXFGRoakH1EoFKFQKBaL29vbwQfMfzU0NJqbm2HfGdacMFNhMBgpKSmYV5aUlOD0AAwPVimDwYCbLC8vP2wVCILIysrCjgzfqQYMG4GBluBBJCkpCbNDBEGMjIy6urrevXs3efJkNpu9ZcuW9evX37hxY9hYDYAjD85CGAyGSCTq6ekRCAQ9PT3gx66urm3btu3YscPGxgbc9MZ1tFAozMvLe1+8+qhIOBp5gFoMDAxsbW3hdsGhSbJMDEmN2draVlVVDZt4WOh0Ou7YKQRBBgYGsEt6Ho+3a9cuQ0PDgIAAyUcmAYWFhYWFhevXrweXZ5iKOjs7a2tr16xZgyCIjIyMWCwGu3Kys7PNzc2Bo5HJZDjLCAYMdIWr+n3e3dnZqaCgAJ49LC0thQshkUhw31laWrq7u4tEIh0dnaGhIaFQKBKJwB0I2PtAyYqKipgXFxUVpaens9lskUjU0tKCoiiVShUIBCKRiMvlampqwnI6OjoeP35cXl4e28H6vuCJm0WgKDrK4DmaYIhITAL/9a9/VVVVwQOZZCiDzR6Am/VlZmZaWFjA8Q0cSQZKGBgY4HK52CSHSqWO7BRisXhYDYB/h50tIB+a9UmWiWUkk8ngKctly5bJysomJSXdvHnTzc3t2bNnI/jR+zy0uLh42DnA6Gd9YrG4ubkZMzy403V1dUcTojEnotPpZ86cmTZtGtxqKSmpL6JzXFxiMpnYTA8kHnbar6ys3NTUBOx52HgIT0gGBwfBzhHsFJsRZn2TJ08OCQmJjo4ODAzkcDiwI+BSjlwF8qGZIc5ZxGLxJ8z6SCQSHExwZgPP+hgMhqqq6vucS19fH24azrRwC6nwrA9IRaVSYYtSVla2trb+4YcfwsPDL1y4AM9LlZWVkS8RuOAqzp0798cffyAIAhtPUVFRRkbGsBcgmA5xzYRDCkjDZDKnTZt2/fr16dOng228yIieBea0JBIJ1+S0tDRlZeWCggInJyc4vaysLDbrwyQH70OAZzi4mXNfXx/23BzmRxQK5X3jjrq6OmzJysrKbDZbco1mhPEO1oO8vPwHZ31jx46FjR9GcnyBk0nOrGDzLi0tRVG0sLDwk2dWXwXEgtTHoaenNzQ0NHHiRF1d3bt3706dOlVfX//AgQO3bt1iMpknTpzApVdUVFRVVQ0KClJQUOjt7RWLxUFBQSiKSktLg5VsBEFsbW1zc3M9PT0ZDAaTyTx27JhYLIbLdHV13bx5M51OX7JkiZub2+HDhy9fvqyhoXHs2LHw8HCsrsmTJ+fk5Hh6evb09MyZM2dYAcBuWACJRFq9evWBAweuXr3K4XAWLFgwSiWA+I6VCa8+UCiUrVu3bt++/fHjx4ODg+rq6tu3b3/06NGjR49evHjR3NyMu6rHQSKRJk+ejCUGhW/YsEFKSsrCwgKb1MK4uLhkZGR4enpSKJTAwEASiXT58uWZM2c6ODggCDI4OHj48GGxWOzh4WFnZ1dTU7N582YajTZt2rRvv/325cuX3t7eCIJs2bJl2AiComhkZGRKSoqmpqa/v79QKMQ1xMHB4enTp5+vc319/ebm5t27dwuFQnl5+c2bNx85ciQ0NNTQ0PDf//73L7/84u3tLS0tfeDAASaT6e/vT6FQXFxcdHV1wR2PYcWAcXZ2Tk5O9vb2FggE2JlfsrKyVlZWkZGRkyZNSktLS09PP3ToEHb/B0VRCwsLRUXFtWvXYiZ35MiR4ODgs2fPWlhYyMnJfbAKGDKZ7Ovre/DgwevXrzc1NWFnvgCkpaW7urr++OMPQ0PDkXt82JLXrl0LuwzYjw0KUVFRYbFYvr6+YrH4xx9/lJWVfZ9zjR079ty5c8B4KBQK3PDDhw9jW3xBP6qpqQE9YLcZlZSU3N3dMQObOHHioUOHgLM7OztLS0tjf4EDOMhkcldXFywnVr6UlNSwLgbu5AxbBYgnZDJ51apVBw4cAMazYMGC9PR0zK7U1NRwqsM1ExdSJO0E+xH2rOXLlx89ehTnSjhRe3t7+Xz+xYsX9+3bx+fzKRQKLj1O8smTJ5NIJFg/Xl5eZWVlWC4/Pz9JPzI0NBSJRIsXLyaTyRYWFrD/Hjt2TFlZGfOdCRMmZGVlSdoSbCp0Ov327duY9oCSgR5w72oAqKmpwU3+5ptv4H9h6xo3bpyLiwsmjKmp6TBm/R7AyUFYp1dWVp49e9bIyEhdXX3s2LFr1qzZsmWLtrY2m80GpyTExsYOG4sAuMgDW4iSkhIQEr6WVlFR2bhx4969e8GP/v7+uI7+/vvv8/Lyho1XsM5HGQk/KM9owJUJL/9JamzGjBnPnj3DEmPzORRFf/rpJ3Nzc7BDB8PY2Bj3DiYURWtqakxMTIBhg0dsjI2N4+Pj7ezsDhw4ILkspaOjc/bsWfBg5nfffYfdvG1vbyeRSGPGjEEQZOnSpUuXLm1padmzZw94bCQmJgaczvb9999jF04jGDC4IkL+rykqKCgg7/FuPp8PutjNzc3GxiY5ORnuETKZjOu72bNng4ZbWVlt27ZNSUlpaGgI9j5w0gqCIA4ODmlpaZgXr1+//vDhw+Hh4Q0NDR4eHrNnzz548GBiYiKfzwdHyWBeY2trS6FQDA0NwdXRCMETN4vAphwfDJ6jCYaIxCTQ0tISd4g+iUTChTLJQiRnfdra2rBmfH19sRK2bdsWFBSETXIKCgqwcoZ1ivdpAOuCkWcLwzJymc7Ozrm5ue7u7qqqqu3t7ceOHQO3Eod1OklwHtrZ2fk5sz4ymRwTE5OamqqtrX348GElJSWs0+fNmzdCiMbAnGj37t1FRUVYq8E6naKi4hfROa7Vs2bNevr0KYichw4dAvNAyWn/zp07i4uLEQTR1NQcOR6OGTPG3t5+zZo1srKy2Aoj7O8cDuf48eN79uzR0tJCEITJZFpYWKSkpJibmzMYDNgRKioqzp07B3vZCFXgGGFmCOZR586dc3Nz+/XXXz9q1odIBJOenp73zfpMTU2zsrKGdS5PT8+uri4wMyGTyTjTgg8kwWZ94KgsADhrArMoBweHzMzMS5cukUik9evXS14efn7gwlUB0tjb26ekpADj+eGHH8rKykYY9BEJD4JDCoa9vX1wcPCOHTuwi6MRPAub08JT8U2bNt25c+fEiRO5ubnh4eFwK5ycnCQlDwwMfP78OTzDwc2cv/322/z8fJwfAZN+37gzdepUzJJ3795dWloq2dIRxjsURSX1AIOb9YGhEENeXh6zLsnx5fnz51hKyZkVzrwdHR2x+PAJM6uvg6H/PrZt2wZutRF8pYjFYvBu179bkM/lt99+u3nz5t8txRegtLQ0OjpaLBbfuHHj559/xn4PDg6+dOnS0NBQVVXVlStXxGLxF68CJjY2tqSkRCAQbN26NTs7+5Pr+ihevHixdetWkUj011T3jwSzk6+Lj/XfD5rKV6GH/v7+mpoaHo/3dwvy1TBKjT1+/DgjIwP3Y1tbW0BAQHNzM/ZLR0fHtm3b6uvrP0oGkUjU1NTE5/NHnwXcr+7p6cF++bRYh7Pqnp4ef3//ioqKjypEktF7n1gs3rNnT1JS0ghpBALBtm3bXr9+/ZlSEfzn6OjoqKurGxwc/LsF+Sz+MROGnp6esLCwrq6usrKytWvXYr9j/t7f33/x4kU2m/3Fq4AZzczwi/OP6cS/kdLS0u++++6rm0h87Kzvg+PdV6qHYZk6daqvr+/fLcV7+ZoeLyT4WiCTyWPHjpXcjvHVoampCe5Of+2MGTMmOTl58eLFWVlZS5YsAT9ev3796dOn4H2IGhoaq1ev/pznjYetAoeysvKRI0dWrlypra2NO5/lP4ecnBy8A5zgY4Ht5OviY/13ZFP5WvQgJSWlq6uL28BIMAKj1NisWbPAe3lgVFRU3NzcsCPMEQR58+bNrFmzsPPpRwmFQhk7dqzkoekjQCaTNTU1mUwm9ssnxDpJq6ZQKBMmTMAOsv1kPsr7xo0bJy8v/75/u7u7AwMD1dXV4W1cBP9tKCkpgRPK/m5BPot/zIRBRkamu7t73bp1+/btW7x4MfgR9ncqlbpq1arR70gaZRU4RjMz/OL8Yzrx7+LNmzcHDhzw8fH56iYSHzvrG3m8+3r18DXy/46f+O8BPORVV1f3dwtCQEBAQEBAQEBAQEBAQEBA8FViZWVlamp669atv1uQ4fm6b2X8d9LR0dHT04Mtz7NYrNbW1qGhIRKJpKWlJS0tTaVS1dXV35e9vr6ewWBg24tEIlF+fn5DQ8O0adP09PSGTdzf3w9nQRCkrq6utrYWrDaCJ59pNJqBgcEIYotEoszMTBqNNnPmTGynTH19PY1G6+7uNjY2/igloChaUVFhZGQ0rE6+IHw+v6WlxcDAAHul0WgSf3ExJBllk0fuXwRBRtOuUcLlcrlcLoqi2trab9++HRgYoFAoOjo6Ojo6cDKxWFxRUaGrq8tgMLCv2traONVhpRkYGDAYDFyPS8Lj8TgczrDKFwqFNTU178sLSh4cHDQ2NsbuvnZ2doLHW8CZ7jIyMnAa8C+CIPLy8uCoFBxNTU0ju+EoaW9vT09PnzJlyrB99z5gOxxWbyOI95k2/L6I8WX5WPU2NDTQ6fTP747RM3o11tTUKCoqgpNrRikn6NPx48cDDxqBrq4u8PD/7NmzhzXULwvOtSX5gtHmPwGKon19faPsuE/zzREAIR28SXZkGygrKysvL3dxccHdVv0rB6AvQk1Njby8fFtb2wiB/YtTWlra1tYGXlVhYGDw+Qb5seGltbW1paXFyMgIu23O5XKpVCp2uC9GX1/fu3fvVFRUwBgqFArLy8tVVVVBXRwOp6GhYeLEicC1cV8JCAgICAgIAP+9U8+vl+zs7ODgYPBZLBb/8ssv165dS0lJSUlJYbFYJSUluCMwcdy5cyc5ORl87uzs3Lx5c3BwcF1d3ebNm+/evTtsYjgLoLq6OiUl5dSpU7/88ktKSkpmZubp06fFYvEI9aanp585cwZ+rQwoPzY29tSpU6NvPmBwcBB+Syusky9LW1tbbm5ufHz8+fPnP/hCARaL9UE9fClG0+QP9u8o2zVK0tPTjx49um/fvvz8/MDAwMePH8fFxfn7+//5559wMj6ff+rUqcbGRvCVx+OdOnUK6HnY0urr6xGJHpekuLj4zJkzw/7V1tYWFBQ07F8ikejIkSMnTpz4/fffAwICent7EQRBUfT+/fu7d+/euXOnk5PT3bt34TQdHR0BAQHff//97t27nzx5MmyxERERSUlJI0g7GlAUPXPmzNOnTz+2g2A7HFZvkuKBN7Dk5OR8pg2/L2J8WT5WveHh4Z/fHR+FpD0PC4qiV65cefnyJfj6QTnZbPaOHTsaGxuDgoIwD3ofL1++XL58eX5+fk5OzvLly4c9KP3LgnNtHF822rwPoCL4lUyjBIjX2to6yo77NN8cARDSS0pKKioqgDMOm6y1tXXv3r1NTU2S28//ygHo8wHG//z585ED+5dFLBafOnUqJCQkPj5+165d33333cgvQhkNHxVeUlNTwbsp169fz+VyEQSpr69ft26dpBKam5vXrFlz69atgICA0NBQHo+3bdu2S5cubdy4MTMzMyEhYf369ffv31+5cmVZWRnu62e2iICAgICA4J8EsUPq4+jq6rp161ZZWdn06dNXrlyZk5NTXV3NYrEmT568bNmytLS05ORkGo0G3scMoNPpS5cuxd4plpiYKBQKwfSlpqZm4cKFtra28fHxiYmJKioq2EsTAI8ePVJQUAgKCqJSqfPnz8/JyRkYGEhOTh42MYyjo6Ojo+Pp06dpNFpAQEB+fn5aWtpPP/2EouiGDRtUVFQiIiJevXrl7Ow8f/58CoXS0dFx69YtNps9MDBw7dq1BQsW0Gi0R48eYQUmJydTKBQnJ6cXL160trZ6eHggCJKamlpVVfX27duZM2d6e3uXl5eHhYXx+fxFixbZ2NggCIKiaEJCAk4nVVVVOTk5q1atKi4urqmpYTKZcCHYe6lzcnIiIyO1tbXXrl1LoVBCQkKam5t1dXWtrKzevHmDSejk5CQQCB4+fPj27Vs6nW5kZIQTsq6u7saNGwKBYOXKlQiCdHR0YHqQkZHBenPhwoUPHjzgcDimpqY2NjbBwcF8Pt/Pz2/8+PG3b98uKiqyt7f38fEBO3Ti4uJUVFTAq4719fWLioqw3rSzs4ObPDAwgKnayckpPDwcVOHj4/PB/l22bBlol729vbq6OiaSkZFRUlJScnKykZGRioqKj49PZmbm48ePJ0yY4Ovr++LFi8LCQrFYLCsr6+XlpaWlFRERMXXqVCMjIy0tLSsrq56eHjk5OW1t7T179qioqKSmpoaGhtrb2xcUFIBOKSkpEYlEERERfX19S5cuHT9+PGYGfX19d+7cKS4unjdvnqamJigNPvtjYGDg7t27mDamTJmCpQdnncCqMzExodFoISEhNBoNvEgO7nTwXh4+nz9mzJh//etfCIIEBAS0tLTo6+uTyeRNmzZt2rTpyZMnioqKbm5ukZGRWJry8nIGg/Hzzz9ramrCq6tpaWnR0dFaWlpr165FEKSoqGjnzp1mZmYrVqyorq7GTFdbWzsmJqarq2vZsmWdnZ2YPN3d3ZghgTdAvXr1KiEhwcDAgEajpaen47qARCJt2rRJVlb20aNHBgYG6urqt2/fXrduXXl5+YsXLzA7XL16NRCvrq4uODhYJBL5+fnhxJOSkmKxWNHR0Y2NjUuWLIFtGEEQzDBMTEwku8nFxSUxMXGEiPH06dOampry8vJp06YJhcLS0tLVq1cbGRnBRlVQUIAFuhUrVrS3t2OVNjY2SkaGEdQ7bdo0SYdCEKSwsLCkpMTa2trLywu83h4LUBwOB6tOWlo6MTGRw+EgCLJhw4axY8ciCFJdXT1sl9HpdEwPrq6uz58/x/4Ctnrt2jV3d3c1NbXbt29bWVkVFBRglfb19YGY09TUBKsLk3PevHnh4eGurq6wiyUkJMTFxenp6QmFwgcPHnC53EWLFs2YMUPSsPv7+//444+tW7eC4zwePHjAZrPpdPrNmzcHBwdXrVo1YcKEu3fv9vX11dXVubu7Z2VlMRgMf3//ly9fjhB1Ye/r6+uT7BrYteXk5LBQXFZWlpqaCqLNlClTcAYJ2lhSUuLi4uLq6vr06VNg4YaGhmw2GxOmoaEBk59Op4NOWbx4cW1tLWaBKSkpcXFxpqamrq6uoaGhONNlsVhYc+zt7TEZFi5cCIIh2F7U29uLyePg4HD//n2s1eCYp9H4JohI6enp0dHRBgYGS5cujY6OBvFZXV0d6y95eXncKFZbWwuc0cTEBOyaqa2tBQ1fsWJFeno6i8WysbEB+2s+cwAyMTGBA5eqqiqKopIhBbw5G1MyiqK4YDUwMBAeHt7d3d3U1OTr62tubt7c3Pw+t2IymTjjBz2IJZCXlw8JCWlpadHR0bGxsbGwsEAQRCwWwzMZSRlgRWEWjus4BEEYDMaqVascHBz6+vq+//77p0+fTps2DVYIbJnjx4/HYoWzs/P9+/clXWaE8CI5KJPJ5JMnT+rp6X3//ffgmPkTJ05g0xIYLpfr6enp6+ubmZl59+5dHR0dGo12+vTp1NTUmJiYKVOmHDx4cNq0aUePHi0oKKBSqdjX169ff9SLNQkICAgICP7ZEDukPo6oqCixWBwYGJicnPz8+fNXr149e/bM398/MTExODj41q1ba9as4fF4AoEAyyIUCoODgwMDAw8dOlRfX19aWlpeXh4VFUWhUObPn//777+zWKykpKRt27YxGIzr16/D75lmsVhTp04F12xmZmYbN26sqKgYNvEHaW5utre3l5KSunr16uXLl8vLy7ds2RIdHZ2SkoIgiLKy8oIFC9zc3Ozs7LKyskAT4FuCMjIy9+/f7+3tffToEbaP/fXr1xkZGZs2bYqPj4+Jiblx44azs7OXl9e5c+fYbHZ2dnZeXp6kTjgczvPnz4eGhurr61+/fg0Xgt3GzM/PP3/+vJ+fH5lM/u233y5evAiuNu/du1dXVwdLyOVy37x54+TkNG/evEmTJuGERFH0jz/+0NXV9fT0BEuBsB7g3szKyoqNjdXW1ra0tNy3b5+xsfG8efOOHTsWGRn55s2bgICA0tJSsBUIQZDi4mKwza2goKC+vh7uTVyTYVUnJiaCKuzt7UfTvxEREQ4ODvPmzdPV1YVFio+PDwsL8/PzKykpSUtLy83NvXjxoq+vb29v74kTJ/Lz8ysrK5ctW9bT05OSktLU1JSSkgKugWfMmLFz585jx46pqqr29PSkpaXFxsbeuXNHT0+vo6MD65SioqLu7m45OTknJ6fjx4+DixAul5ubm3v9+vXy8vINGzbExcWpqqqC0sChmEKhMDs7WygUwtqA0zc0NOBUV15efuzYMVtbWz09PQ6HA3f66dOngW0rKioGBASoqKhkZGRISUnBj110dXWFh4f7+/traWnBaVAUffPmzQ8//DB37tzHjx+DxGw2+8qVK76+vkpKSjk5OSiKstlsPz+/pKSktLQ02HQrKipiY2M9PDza2tpgI7x06RJmSOBNupaWlnPmzFm7dm1jY6NkFyxZskRGRoZMJvf396emphYUFNy8ebOsrCw+Pp5MJsN2mJ2dzePxDh06ZGJiMmPGjBs3bsDigVfDGhkZ2djYgNe9Y3nPnz8PG0ZLSwtoLKz2hISEkSPGq1ev0tPTFyxYcPbsWYFAYGhoeOnSpaysLLhFL1++xAJdamoqXKlAIJCMDCOoNzo6WtKhUBRtampauXJlbGxscnIy7DXR0dFwdSwWKzw83NnZmU6nX7t2DWRvbW2V7LLTp09fvXoV00NkZCT8F4fDKSgoaGlpycjIqK+vB9f8cFT8888/29vbvb296+vr4ZiMyZment7W1oZzMXt7exsbG3d3dx6PJycn5+bmdvbs2WENu6urq7OzEzukefHixebm5nv37jUzM7O3t9+7d29tbW1UVBSKosbGxnv27LG3t6+oqEhOTh456sLeN2zQhl27rKwM8/q3b9+CKAoWF2CDvH79+oULF6qqqvz9/cPDw+Pi4goKCoCFs1gsTJiHDx/C8peUlIBOEQgEsAXOmjXLxsbGycnpwIEDONPt7e2Fm1NbW4vJcO/ePSDemDFjcnJyYHliYmLgVoNmjsY3QRS6cOGCr68vn8+PjY0F8VlOTg7ur9zcXDikl5aWikQi4IxgNaqzsxNr+P79+62srGxtbdetW0en0z9/ACosLIQDF4Igw4aUxsZGTMnXrl2TDFYgMlOp1AULFpw8ebK8vHwEt4KNHwR2LpcLJ7h8+XJHR4eXl1d4eHhtbS3QOTyTGVYGWFGYheM6DkZGRsbExOT169ewqJWVlXCoxI2ww7rMCOEFNygjCOLo6CgtLb148WKhUGhgYDBhwoQrV65YWFiAt3HDWFhY+Pn5CYXCuLg4c3NzLperoqJCJpM1NDQ6Ozt9fHysra3r6uqKiorAOj721czMTLKxBAQEBAQE/7MQO6Q+jrlz54aGhh45cqSyslIgEJDJZCcnJxMTkwkTJlRUVEydOtXS0tLb2zsvLw/LQqFQZs+ePW3aNBqNpqKiAn5UUlJydnZmMpkyMjIGBgbW1tZBQUFVVVVTp06l0+lYXhkZGaFQCD6LRCKBQDBC4pExNTWdMWNGX19fampqeXl5S0vLu3fvenp6wDIBgiBkMplMJkvOugDm5uaDg4NZWVlcLhd7PxqNRvPy8jI2NgYzPx8fn4cPH9bW1nZ3d4tEIgRB3r17N6xOYOBCiouL3dzcEAQpKyt7+/btsWPHBgcHVVRURCLRli1bzM3NnZychj1RAkhubm4eGhoKC0kmk2fPnn3ixAl1dfV169ZRqVRMD2lpaXBv9vf3Kyoq2tnZicXi4uLirq4uKpXK5/NVVFTYbPbGjRs9PDyw7sMB9ybc5Nzc3Ly8PEzVjY2NoAqsnA/2L2gXl8uFRcrPz7eysrKwsFi4cGFSUlJZWZmdnZ2lpaW8vPzhw4dlZGRsbW11dXVdXFyCg4OlpKQmTJigqqqKk5nH4xUUFMjKyrq5uc2fP//Nmzfwv5qaml5eXtra2vfv38csBEXRd+/eLVmyZPLkyRcuXBhWFbA2GAwGnD4nJwccl4PR2dlJoVAcHR37+vpyc3PhTldVVRUIBOCdUyiKPnjw4N69e0FBQfCZLPn5+UwmE+zmgNNoaWnFx8erqqqCpTpHR0dZWVllZWVDQ8OtW7dOnz49ICCgqqrqm2++MTMz09fXFwqFONPV19e3tLS8ffs2LM+8efN+++03YEg0Gg1BEBKJRCaTKRTKsF2Ancw1derUixcvCoVCOzu758+fc7lcW1tbzA4TEhIQBGlra0NR9JtvvlFWVp4/f/7p06cx8bq7u0FdoDoE8uXIyEjYMFpbWzU0NMRiMaz2/v7+7u7uESIGmUx2dnY2NzefOHGivb19e3t7Xl4ei8WCWyQvL48FuqamJrhSVVVVychAJpPfp14DA4P79+/jHIpGo/n4+FhYWDg6OhYXFxcWFmJe8/btW7i6zs5OY2NjGxubrq4ueMVcsstUVFQ4HM7KlSuBHkJDQ+HeHBgYIJFITk5O9+7dEwqFRkZGRUVFHA4HVFpbW1tZWenv7z99+nRHR0cs5sByslgsJycnnIsBhyWRSMrKynPnzpWXl5eRkRnWsMFRRIODg6Dkvr6+2tpaOp0+d+5cGRmZqKiompoaJSUlFxeXrq6uSZMm2djYZGVl9ff3jxx14Vg0bNCGXRtbwcR6DYv/sEG6uLh8++23mzdvnjRpkpubW2FhIY1GAxYuJSWFCZOXlwfL39TUBDpFJBJJxrT29nZJ05WVlYWb09raCjvF3bt3gXjgiC5MnpKSEkVFRazVQP5R+mZFRYWFhcWUKVOsrKy6u7szMjLs7Oxyc3Ph/iopKcGNYrAzIggCtrZhDW9oaAAJkC8xAA0ODsKB630hZe3atTIyMpiS7e3tf/rpJzhYga53d3fX1tYOCwsrLCx8n1s9e/asqalJ0vixBJmZmY2NjRs3brSysnJxccFsBjd4ScqAUxSwcFzH4RAKhYODg7Co5eXlmFW4urr6+flhsaKpqel9LvO+8CI5KCMIoqend/v27cDAwISEhPe9OwzA5/OPHj1Ko9HWrl0bFxcHHtIEJxtSKJS3b9/u3bt39erVYIMY7isBAQEBAQEBgFiQ+gjEYvHx48enTJly/vz5HTt2gBvd2HRNVla2ra1NLBa3tbVhqwwIglAoFAMDA1tbW7goeDobExOTnp5+8uTJ+Pj4kpISLA2ZTAZPNi1btkxWVjYpKenmzZtubm7Pnj2TTPxBsIsNEomkrq7u5eW1dOnSjIwMZWVlOBmFQhkaGhIKhSKRCFwJA5hM5rRp065fvz59+nTsaE+xWMxms8HtRyqVGhQUtH//fllZ2f3794OZmZKSEovFwumEQqEIhUKxWNze3g4+YIVgL6BVVFScNWvWb7/91tzcXFRUlJ6ezmazRSJRS0uLqanpsBIOKySKonQ6PSIioqmp6eTJk+vXr8f0AA7lgXsTdIq0tLSent7PP/+srq6ekJCgoKCwa9eu8ePH79u3LzExcenSpQiCUKlUgUAgEonAqd5wb8JNHhwchFVNo9FevXqFpRx9/+JE6unpKS8vF4vFLS0t/f39SkpKlZWVYrG4tbWVSqVSqVTwfAG4Dfvo0aPt27dLruJpaWkFBgZis3Bcp/D5/Pb2dnl5eYFAgJ3ASiKRmEwmMPJLly7Z29uDzRQ4MG3g0oMn+2DVTZo0SSQS9fT0CASCnp4euNNLS0vB0zEoigYHB4MNO/D2KBRFc3NzZ8yYAbYhwGnAUznr168nkUhUKhV0d19fn7W19Q8//BAeHn7u3LmJEydiOuFwODdu3IBNl0KhkEgkWJ7i4mLYkMzNzeHj6t/XBYDx48cPDg6+fv3az8/v999/nzZtmpKSEm7xl8FgiMViHo/X399/8+ZNOp0u2WUk0v95KSqWl0qlwoahra0tqXaBQFBeXj5yxMCkxSpVVFSsrq6GW4T9RafT4UqNjIwkIwNcFE69vb29kg4lFoubm5tBENDU1IS9ZnBw8M2bN1h18vLyWPPhM3qG7bLs7GxMD2KxGLYusGNo8uTJISEh0dHRO3fubG1t9fb2BpUqKipWVlZyOByRSASWRUAtsJxaWlojuBgcE4Y1bEVFRV1d3czMTGNjY5FIBC5rBwYGenp6UBTt6elRUFAAl7WgNKzkkaMuXO+wQRvn2rDXw/LDBhkSEiIrKwtWrxobG1VUVPh8PhAMF72bm5sx+ZlMJuiUYQc4BoMhabq1tbVwc+h0OuwUmMeRSCRYHmVlZTab/b6jr0f2TSaTCR52S0tLq6qqAtrD9ZdQKAS+AI9imDMiCCIrKwt3HPwI8+cPQMrKynDg+uOPP5DhQkpeXh6m5PcFK7DwpKCgIBAI1NTU4Fpgt0IQRF5eXtL44QSysrJcLlckEjU3N2O7/OCOHlYGnKKAhY9wZnl7e3thYeGKFSvKy8sxUXV1dWHLhGOFlJTU69evh3WZ94UX3KAMjs0yMzObOXOmgYFBe3v7+2RDEITH4+3atcvQ0DAgIIBKpWpqamZkZIhEoqamJjU1NRaLdfjw4cDAwFmzZiEIUlRUdPDgQewrAQEBAQEBAQaxIPURkEikyZMnP3r06MWLF83NzTweD/538uTJOTk5np6ePT09c+bMGX2x+vr6zc3Nu3fvFgqF8vLy4NEPgLOzc25urru7u6qqant7+7Fjx8CTXJKJURT9+eefTU1NPT09P9iKtWvXHjhw4NatW0wm88SJE/C/srKyVlZW27ZtU1JSwp3Jam9vHxwcvGPHDnj2FhkZmZKSoqmpuWvXrvLy8qCgIAUFhd7eXvCAnoODw9OnT3E6MTQ0FIlEixcvJpPJFhYWcCHgTByQMS0tzdvbG0GQLVu2rF+//vDhw+Hh4Q0NDfPnz5eUcOzYsefOnZs5cyZOSDKZ3NXVtWHDBikpKQsLC/guKK43sZNTwW3kzZs302i0adOmTZw48dChQyiKSktLW1lZgTSzZ88+ePBgYmIin8/HzadxTYZVvXv3blxffLB/NTQ0Lly4YGdnB4u0devW58+fe3t7CwQCc3NzFxeXjIwMT09PCoUSGBiI7UQDXRkZGYldMIwA3ClGRkaDg4OHDx8Wi8UeHh7YO6pIJNKqVasOHDgQGhpqaGj4wXdX4dK7urriVDdmzBgXFxd/f39w8YDrdKDYmpqaM2fOyMvLr169esyYMadOnQK7G8DVhYuLi2Saf//732lpadnZ2a2trd999x249y4lJZWZmXnp0iUSibR+/fqamhpMTllZWVVVVcx0wdMlkvL09PRghoStnALe1wUAGRkZIyOjgoICKysrsVg8ZcoUyRNJNDU1XV1dN2/eTKfTlyxZAg7TxSlTTU3t7NmzmzZtwn6Uk5OzsbHBDGP+/PkIgpDJZFjtCxYsSE9PHza8jICLi0tWVhbWooKCAuwvJSUl2Brnz58vGRlgcOoVi8VBQUE4hyKTyTExMampqdra2mDnBeY1x44dg6v75ptvRhAb12W+vr6YHrZv3/7rr7/irIvJZFpYWKSkpEyePFlGRgaOiqtXrz5w4MDVq1c5HM6CBQuGlVPSxeTl5bu6uq5evQoHz2ENm0KhbN26dfv27Y8fPwYr16dOnQIvGaBQKC4uLu97sekHoy6MZNfAru3k5BQfH4+FYiyKOjg44AzSzc3t8OHDly9f1tDQOHbsGPbaYFiYY8eOKSsrY/Lr6uqCLWy4AU5OTq6rq+vhw4dubm4401VUVIRNRV5eHpYBiAeeilq7di0mz+7du0tLS99nEiP7pr29fUpKire3t7S09L///W/wTByuv5ycnNLT03GjGHBGIyMjdXX1cePGgTgGGj5x4kSs/M8fgBwcHODABdJIhhQ9Pb2bN29iSu7s7JQMVnw+f+/evSQSyc3NbcaMGbW1tcO6FYlEgo0fxFgYMpns6+t78ODB69evNzU1Yedj4tLTj4oAAMqXSURBVDpaUgacot5n4Xw+f/fu3QoKCiKRaPny5R4eHj09PbCpwFbh4eGBue2PP/44bIEjhBfcoEwmk01MTH766ScNDQ2BQPDzzz/D/4JZlrm5ubu7O4IgMTExsbGxxsbG8fHxdnZ2P/zwA4Ig4NHOvXv3nj59+t27d0ePHiWTyd999939+/exr99//31paeloZmsEBAQEBAT/C5AkXwTzt7N9+/ZHjx7V1dX93YL8t9DZ2cnj8caOHYsdAPy3UFZWdunSpVOnTmGPTZ0+fVpVVRU7lfnTGH0hKIru27fPyclphItSSSH/+/nY/i0rK6usrPTw8AgNDeVyubt27XpfypCQEIFAsHXr1i8n7NeBWCzmcDgKCgrgoT+C/yhfo9N9KT7TxVAUbWlpoVKpampqo8zyUVH3P901X2QIIPgL4PF427dv//HHH8Gp8J8JOCReX1//3//+t6+v74wZMz6/zP8e+vv7u7q61NTUJFfY4+LimEwmduAUDnB2nqKiIjHuEBAQEBD8V2FlZWVqaordUPxvgzjU/CtASUlJR0fn712NevPmzYEDB3x8fOALG01NzTFjxnxmyR9VyLhx4+AHIkYj5H8/H9u/Y8aMSU5OXrx4cVZW1pIlS96X7Pr160+fPgXv8Ppfg0KhjB07lrgq+Av4Sp3ui/D5LkYmk8eOHTv61SjkYwLmX9A1X2QIIPgLoFAoEyZMwM62/0yUlZWPHDmycuVKbW1t7HiyfwwMBkNDQ2PY/Z6zZs3C3gYoCZlM1tLSIsYdAgICAgKCj4LYIUVAQEBAQEBAQEBAQEBAQEDwT4PYIUVAQEBAQEBAQEBAQEBAQEBAQPD/IBakCAgICAgICAgICAgICAgICAj+UogFKQICAgICAgICAgICAgICAgKCvxRiQYqAgICAgICAgICAgICAgICA4C+FWJAiICAgICAgICAgICAgICAgIPhL+boXpFgsVnt7O/hcVVXV0dHxUdn7+vpev35dX18/+iwlJSUDAwPgc1dXV3l5+bDJmpqaOBzOaAosKyvLyMjIyMjIy8vr7u5GUfTdu3e4NHw+v7KycvRCjp7Ry/mlGLaB//11oSj6n+uFzwfX0o6Ojtra2v90df39/SMna29vf/jwYXV19Zeql8fjfVoXlJWVRUVF8fn80Wf5YBtHqQQCAgICAgICAgICAgKCYfmKF6REItG+ffu2b9/e19cnFosvXryYm5sLJ0BR9Pjx4zk5OcNmb25uXrNmza1btwICAkJDQ0dZ6W+//fbs2TPwOSwsLDY2dtgaS0pKqqqqPliaWCwOCgq6ceNGcnJySEiIl5dXcXFxdnY2LhmLxTp9+rRYLP5goz6WiIiIpKSkL1LUKBkcHJRs4BeHzWbv2LGjtbV1lHWB9J2dncP+Gx8ff/78+dLSUqwX/hpGlgoGp9Xs7Ozg4OD/nEiNjY1BQUGNjY0jpERR9MyZM0+fPkVR9EvVXlxcfObMmY/N1draunfv3qampqGhodHn6u3tHbmNH0xAQEBAQEBAQEBAQEBAMALUv1uAz4LJZFZWVt67d2/16tXgl97e3oiIiJKSEhcXF21t7ejo6MbGRj09vaSkpFevXjk7O8+fP59CoSAIwuVyPT09fX19MzMz79696+vrC34fGWdn59TUVCcnJx6P9+rVq+3btw9bo4uLi5SUVGhoKI/Hq6mpWbhwoZ2dXVJSUnJyspGRkYqKyqJFi0CBUlJSS5cudXZ2FovF3333XUlJCYIgKIrCiXV0dDo6On766ScURWfPng2qGD9+/JMnT4qKiuzt7X18fKhUKq75Dg4O9+/fxwSYOXMmqDEtLS06OlpLS2vt2rUIghQVFe3cudPMzGzFihXV1dVhYWF8Pn/RokXa2toxMTFdXV3Lli3r7OyMjIzU1tZeu3Ztd3f3jRs3BALBypUrLS0tQZksFgvLaG1tHRYWxuFwTE1NbWxsgoOD+Xy+n5+fiYkJpsba2trExESwOWvDhg1jx44FPyYkJLDZbDk5ufXr1xcUFBQWFpJIpFWrVj158gQ0ytXVNT09vaqq6u3btzNnzvT29m5oaLh58+bg4OCqVavodDqQmUajxcXFTZw4kUqloiiamZn5+PHjCRMm+Pr6dnZ2SladkJAQFxdnamrq6OgYFhYGSjM2NkYQhMfjPXz48O3btyoqKlgvbNiwAUEQyaZ1dXXdunWrrKxs+vTpixYtioqK6uvrq6urc3d3z8rKYjAY/v7+TCYTlicrK0tFRcXa2joyMlJfX7+oqAjrsvLyciDVunXryGRyamoq3PDy8nJM5zY2NsBsEhISkpOTaTSatLQ0znTj4uKwiuTl5aurqzFVKysrY/2CKZPBYLxPUXp6ekKh8MGDB1wud9GiRTNmzMjJycEsRFFREUGQV69eJSQkGBgY9Pf3nz9/Huhk5cqVHA4nODhYJBL5+fmNHz8+IiIC55hPnjxhMpmzZ8/Ozs5ub28nk8mJiYkqKirr16+XbIiJiUl3dzeuarghK1asSE9PZ7FYNjY2UlJSCIL09fXdvn0bOI6rq+u9e/cWLFhAo9EePXrk7++fnp4eHR1tYGDg4+MzODgItxGX18XFBU5gY2MTHx+Pifr27VtgvWvWrHny5AnWxszMTMz7VFVVPxhwCAgICAgICAgICAgI/ql8xTukEASh0Whbt26Niop6+/YtgiAoil64cKGqqsrf3z88PLyqqsrGxmbFihX37t0rLy/fsmVLdHR0SkoKyGthYeHn5ycUCuPi4szNzUezGoUgyOzZs+vr61taWoqLi+Xk5CZOnDhsjfX19eXl5VFRURQKZf78+b///vuLFy/CwsL8/PxKSkrS0tKwAvv7+69duxYYGLh+/Xo2m21ubp6dnS2ZuLm52d7eXkpKKi0tDVTx5s2bN2/eBAQElJaWgqcOcc2PiYmBBQDVsdnsK1eu+Pr6Kikp5eTkoCjKZrP9/PySkpLS0tJu3Ljh7Ozs5eV17ty5ioqK2NhYDw+Ptra28+fP+/n5kcnk33777dKlS7q6up6enomJieDpxd7eXjgjm82OjY3V1ta2tLTct2+fsbHxvHnzjh071tLSgiCIUCjMzs7mcrnh4eHOzs50Ov3atWtANi6Xe/v27blz50pLS58+fTo/P7+ysnLRokXBwcFYo+Li4l6/fp2RkbFp06b4+PiHDx/u3bvXzMzM3t5+7969JSUlQGYvLy8bG5t58+bl5ubm5uZevHjR19e3t7f3xIkTLS0tklXb29vb2Ng4ODjs378fK62pqQlBECaT6eTkNG/evIkTJ2K9cP78ecmmIQgSFRUlFosDAwOTk5Ozs7OjoqJQFDU2Nt6zZ4+9vX1FRUVycjJOnsLCQrCZrqCgoL6+Hu4yIJW3tzeZTEYQBG54TEwMTufZ2dl5eXm3bt1as2YNj8cTCAQ40y0uLsYqKi8vh1UNNjF1dnbCyiwtLX2fotzd3Xk8npycnJub29mzZ/Pz8zELwUqztLScM2fO2rVrX758ienk6dOnhw4dMjExmTFjxo0bNy5fvizpmDIyMg8fPuzr63vw4EFbW1tSUtK2bdsYDMb169dByXBD0tLSJKuGG7J//34rKytbW9t169bR6XQEQdLS0jDHqa6uzsrKAurKzs4uKCi4cOGCr68vn89PTEzs6enB2ghkg/M2NDTACVgsFiwqsN4lS5aEhYVhbYyIiIC9bzQBh4CAgICAgICAgICA4J/K171DCkGQCRMmLFq06OzZszQaTSwWV1RUbN68edKkSW5ubkVFRQiCDA0N5eXltbS0vHv3rqenp6GhAcvL5/OPHj1Ko9HAXqHRMG7cOD09vefPn5eUlDg4OFAoFMkawfIBgiBKSkrOzs5MJlNGRqa0tNTKysrCwmLhwoXwU3I0Gs3Ozk5dXf3atWs//vijrq4ugiCSiU1NTWfMmNHX15eamkoikchkspmZ2fXr1zdu3Ojh4aGiooIgiEgkgoUpKSlRVFTEBADVKSsrGxoabt26dfr06QEBAVVVVd98842ZmZm+vr5QKPTx8Xn48GFtbW13d7dIJNLX17e0tLx9+/bbt2+PHTs2ODioqqo6b9683377TV1dfd26dTQaDUEQWVlZOOPg4KCioqKdnZ1YLC4uLu7q6qJSqXw+v7W1VUNDA2u4sbGxjY1NV1cX/KyZtbW1ra2tqqrqyZMnJ0yYYGtrO3bs2KqqKqxRhYWFcnJyXl5exsbG9vb2eXl5dDp97ty5MjIyUVFRTU1NQOaGhgYSiUQikRAEKSsrs7Ozs7S0lJeXP3z4MJ/Pl6yaTCaTSCQOhwOXVlVVpaWlhf0L90JkZOSwTZs7d25oaOiRI0cqKysFAoGSkpKLi0tXV9ekSZNsbGyysrL6+/tx8jAYDNjAYJsB9YKqgalgDa+oqMB1FoIg7969mzp1qqWlpbe3d2pq6t69e7FT1SZOnCgUCuGKYFXzeDwFBQU2mw03v7Gx8X2KIpFIysrKc+fOlZeXl5GRKSsrgy1EIBDIysoCK6VQKLBOOBwOiqLffPONsrKyq6urn5+fpGMCk8vJyeHxeG5ubnQ6PSgoqKqqaurUqZL+WFdXJ1k1riGwMSAIAjuOkpISXFpFRYWFhcWUKVOsrKx4PN6zZ8+wNkrmVVZWhpVgYGBgbW2NicpgMGxtbbW0tPLz87E2dnd3w94n2RwCAgICAgICAgICAoL/Hb76BSkSibRo0aLs7OynT5/OmzdPVlYWbFdpbGxUUVEBR56rq6t7eXktXbo0IyMDezqJx+Pt2rXL0NAwICAAPO82Gshk8jfffHPz5k0EQTZt2kShUCRrxI6qAdfk4LOiomJVVZVYLG5paYEPQqZQKBMnTgRrECdPngRH5EgmxtZEQLFDQ0O9vb27du0aP378vn37EhMTly5dihNGWVmZzWZjAgD6+vqsra1/+OGH8PDwc+fOTZw4EUvA4XBu3Lixf/9+WVnZ/fv3Dw0NUSgUEomkqKg4a9as3377rbm5ubi4mE6nR0RENDU1nTx50tzcXFdXt7a2NigoCM4IGi4tLa2np/fzzz+rq6snJCRoa2vjNAlaBJ/s09bW1t/f39raymAwaDQahUKR1HB/fz+bzUZRtKmpSUNDo7m5uaenB0XRnp4eJpMJZIYrUlJSqqysFIvFra2tVCpVSkpq2KoRBJGVlR0YGMBKw57/kpSZSqVKNk0sFh8/fnzKlCnnz5/fsWMHiqIkEgnsvINFwsnDYDAEAoFIJOJyuSALrsswxGIx1nAqlYrTOSiZxWKJxeK2tjYajbZnzx7sxCsajfbHH39gFWlqasKqBotiuOYzmcz3KQqRsG3MQkpLS+GnBXE6oVKpYrGYx+P19/eHhIQM65iKiorm5uZ//vnn7Nmznz17lp6efvLkyfj4ePA0K1A+1hAtLS3JqnENkZeXhyWHHSc9PX1oaEgoFIpEou7ubiaT2dHRgaJoWlpadXW1ZF/AebGlYfBXTEwMTlRginAbqVSqjo4O5n1//PHHsB1NQEBAQEBAQEBAQEDwv8DX/cgeQEZGZvv27XJycmQyee3atdeuXfPw8CgvL/fx8VFTUzt37pynp+ft27c9PT0vX74sJycHcsXExMTGxsbFxc2fP//QoUNgj8losLCwaGlpGTdunJqaGoVCkazx7NmzPB4Pl8vZ2bmjo8Pb2xt7+gmHg4MD2H8xcmISiQSq6O7uDgoK2rp1q0AgsLKyQhAEJ4ynp6dkLVJSUpmZmatWrYqLi5s7dy78l6ysrKqqalBQ0OnTp3t7e7GXCYKNYN7e3t9+++3Q0FBPT8+GDRtOnjxpYWEBtgUpKirCGbHlNk1NTXd3982bNy9ZsqSwsBDbZjICLBbL19c3KChozZo1YJVQUsMoit6/f9/Ly6umpsbPz8/FxcXf33/FihVTpkwB+8sQBJGXl+/q6rp69erQ0JCLi0tfX5+np+eJEyfWrFmD25EEp4+KinJycsJKMzU1Bf+OHTsWPCqIpZeTk5NsGolEmjx58qNHjwIDA5ubm9/3TjecPM7Ozvfv31+1alVTUxNu+QNIdfHiRfAkGtxwHx8fWOfgAT0HB4f+/n5PT0+w0sFkMhX/L7KysrNnz4YrglUNDlcaN24crMwJEya8T1FAsdiPsIWIxWK4FTid0Gg0V1fXzZs3b9myZdy4cWvXrpV0TARB5syZ09jYOGfOHH19/ebm5t27dyclJfH5fKAHuCFTpkyRrBrXkIkTJ8JNoNFomOPMmDHDyspq27ZtBw8eHBoasre3RxDE29v7zz//NDc3l2w+nBc7QA2AExXoB0QkrI1KSkqw92VkZBw4cOCvPCafgICAgICAgICAgIDgvwfSR7156q9h+/btjx49qqur+7sF+ZKUlZVVVlZ6eHiEhoZyudxdu3Z9qcT/GPLz84ODg8+fPz/yeV6nT59WVVXFjrH/3+ELNnyUqiYgICAgICAgICAgICD4erGysjI1Nb1169bfLcjw/BN2SH0VjBkzJjk5efHixVlZWUuWLPmCif8xyMnJYVucRkBTU3PMmDH/eXH+6/iCDR+lqgkICAgICAgICAgICAgI/kMQO6QICAgICAgICAgICAgICAgI/mkQO6QICAgICAgICAgICAgICAgICAj+H1/xglRLS0tlZSX43N7eXlNTI5kGnII8LCiKVlZWVlVVjZDmfZSVlbW2to6cBkXRd+/ewS/U+yBNTU0cDuejJBkhC4/Hw/SDIEhNTU17e/u7d+8+qvy/DLFY/Pbt21Emrqmp6ezsHCFBU1NTc3Pz27dvQS98vngoivL5fFifX4RP6HFMno+1rg8yMDCAvcnug4D+GlaAT9Z5R0dHbW3tJ2T8W/gbTWvYqkdvSyOkLCsri4qKet95/JJifBGn+GQv+Fg+U9qGhoa/Rk5JRnaNkeMh6NO6urqHDx9WV1ePssb/RIT5WCStEQxq9fX12PgrEomePn2amJhYXl7+N4lJQEBAQEBAQEDw6XzFC1JPnjzx9PRksVgIgmRmZl6+fBm3tBQfH3/+/Plh15vA2+iPHj16+PDhX3755aPWpOrr6zdt2nT69On3vR6LzWbv2LGjsbExKCiosbFx9CVHREQkJSWNPv3IWYqLi8+cOQM+oyh65cqV58+fZ2dnf1T5kqAoevz48ZycHNDMkReGRg+Pxzt16tQoBbhy5crLly9HkK2kpKS4uPjUqVODg4PZ2dmfKSowpNLS0hE6XZLRVPoJPQ7o7e39WOv6IGw2e//+/aNMzOfzT506NawAn6zz7Ozs4ODg0af/IJg9fMEyMUAzP7MQYFqtra25ubmfWTVsSyM3vKSkpKqqSvL31tbWvXv3NjU1jeY57k+THAazkE/2go+FxWJ9lAvjCA8P/2vklGQE1xghHiL/t08bGhouXLjw9OlT7H2dI5jHJ49fnwlOqmGtEQxqd+7cSU5OBr+kp6efOXOmtbU1Ly/vLxOVgICAgICAgIDgS0H9uwX4dEgkkoKCwpkzZ86ePQt+QVE0MzPz8ePHEyZM8PLyevjw4du3b+3t7QUCQWRkpLa29tq1axUVFREEGRgYMDU1DQgIqKurO3fuXH9/v4yMzCjrzcrKsrGxaWpqqqur09PTS0tLi46O1tLSWrt2raqqKoIgCQkJcXFxenp6QqHwwYMHXC530aJFM2bMyMnJwYmBIAicHUGQoqKinTt3mpmZLV26FNz4VVFRWb9+/eDgYExMTFdXl4+PT2Fh4atXr5ydnefPnw9nWbZsWV5eHmi+r68vKJ/H44WEhDQ3Nzc1NYFfamtrExMTwa3+DRs2yMvLh4SEtLS06Ojo2NjYWFhYgDQJCQlsNltOTm79+vVkMvnWrVtlZWXTp0+3tLSMjo5ubGycNGlSXFycqampq6traGgon8/38/OTkpICcs6aNauqqgqrZezYsQiCVFVV5eTkrFq1qri4uKamhslkVlVVvX37dubMmQ4ODrge9PX1HRoawupduXLl4OAgri0IgsTFxamoqFhbW0dGRtJoNCCbi4sLk8nE0oAeUVNTU1ZWXrNmDY/Hi4qKWr9+PYIgvb29ERERJSUlLi4urq6uGRkZ1dXVLBZr8uTJK1askJKS4vF4wJBUVFQ6Ojp++uknFEU3bNigoqISERGBdQR4XV1dXd2NGzcEAsHKlStfv34N9OPo6BgWFjY4OLhq1SpjY+O6urrg4GCRSOTn5wfEY7FYycnJ69atAzI3NzcHBwcDfY4ZMyYsLGz58uW1tbXV1dVaWlrR0dEGBgY+Pj6Dg4OYddnY2MTHx2PWIhaL4S7u6+sLCQlRUlJiMpmbNm2Cyx8/fvzt27eLiors7e3t7e3Nzc2BSEVFRe/evfPx8blx44aVldW4ceOePHkyd+5cLOPYsWNFIlFERERfX9/SpUsnTpyIlQPMEugcZx4mJiaS/oKiaEJCQnJyMo1Gk5aWxvUIqAXTc2ZmJi47zp4VFBSw7Nra2sAeTExMlJSU+vv7w8LCOByOqampjY0N1hYTE5P09HSgWD8/v/b29ps3b4L+MjQ0TEpKSk5ONjIyUlFRsbKywuoCrzvs6+vDGu7j49Pa2goXCxLcuXPH3d1dTU3t9u3blpaWL1++BOLNmDEDmJaBgQGCIE+fPoVtr6GhAe41BEEw+SdOnAj0BssGhwILCwvQcDk5uYcPHwKDtLS0xDyCzWZfvnwZdk8URR88eMBisWxsbJ49e1ZWVkYikebMmfPo0SM+n79o0SJ7e3vMdBcuXAhLDneZg4PD/fv3eTxeTU3NwoULp0yZAuuHSv1/Iw5mISiKYpKvWLGioKBg5DhJo9GwsLBo0aKoqKi+vr66ujp3d/esrCwGg+Hv76+goDBsvIVdWEZGBivH1tY2Pz/f19eXy+U+fvx49erVkt6NIEhhYWFJSYm1tbWXl5dYLIbTcDgcrOulpaVhmwTRr7q6GsTGJUuWgFpAlMvKysIimL6+flFREaY9Ozs72DUGBgbgGoFf4+Ih8AhgwCtWrEhPT2exWFpaWrm5uYaGhlJSUiDgAPPQ0dFJSkrCfA00c/TjF871cCGxvLw8LCwMGI+1tTXmeurq6lg5dDodMw9DQ0PMWxUUFIA1AvtZuHAhjUZ79OiRsbEx3NKOjo5bt26x2WwSiTQ0NITzCAaDgSlWT0/v1atXkgJghkFAQEBAQEBAQPC38BXvkEIQBMyh7927B77m5uZevHjR19e3t7f33LlzDg4O8+bNEwqF58+f9/PzI5PJp0+fBreIZWRkFi9enJaWtmbNGmtr69GvRvX392dkZHh7exsZGaWkpLDZ7CtXrvj6+iopKWG3du3t7W1sbNzd3Xk8npycnJub29mzZ/Pz8yXFwGVHUZTNZvv5+SUlJYFdA9u2bWMwGNevX29paYmNjfXw8EhOTi4vL9+yZUt0dHRKSgqc5fr161jzT5w4ATYC/Pnnn+3t7d7e3vX19UKhMDs7m8vlhoeHOzs70+n0a9euXb58uaOjw8vLKzw8HHsqhMvl3r59e+7cudLS0qdPn46MjBSLxYGBgcnJyZ2dnTY2NitWrHBzc7OxsXFycjpw4ICxsfG8efOOHTvGYrGAnFJSUnAtoFgOh/P8+fOhoaH6+vrXr1+/fv06IyNj06ZN8fHxT58+xfXgiRMn4HqfP38OtwXb1FZcXAy2exQUFEhJSQHZ6uvrwSOcoMmgRxYvXpydnV1VVZWVldXQ0IAgCIqiFy5cqKqq8vf3Dw8Pj4uLe/Xq1bNnz/z9/RMTE8EtdyaT6eTkNG/evIkTJzY3N9vb20tJSV29evXy5ctwR4DS/vjjD11dXU9Pz8TERBsbGxsbGwcHh/3795uZmdnb2+/du/fdu3eHDh0yMTGZMWPGjRs3EASprq4+evSora0tWI3q7u7et28fps/BwUESiXTs2LGzZ8+SSKQLFy74+vry+fzExMSenh7MulgsFmwtHA4HU/758+ePHz9uY2OjoaFx584dXPmRkZFv3rwJCAgoLS3t7e09evQo0KqMjExSUlJ1dfWtW7dSUlJevnz57t07OCOHw+nu7paTk3Nycjp+/DhcTlVVFaZznHkUFhZK+kteXt6tW7fAQmFfXx+uR2A9R0RESGaH7fnKlStw9qqqKmAPSkpKCIIMDAzExsZqa2tbWlrCbUlMTMQUGxERsXfvXqy/Hj9+HBYW5ufnV1JSkpaWhvOd7OzstLQ0rOGlpaVwsS0tLQiCMBiMlpaWjIyM+vr6p0+f3r9/HxMvMzMTmNaYMWNyc3Nh20tJSYF7DbQUk9/a2jo7O/vFixewbHAo6OjosLGxWbZs2Z07dzCDHBgYAOWUlpaWlJTg3JNMJru7u9va2q5bt66oqKiystLd3R2k8fLyOnfuXG1tLWa69+7dwyTPycmBdR4TExMVFUWhUObPn//777/D+qmvr4djKbAQb29vEAmB5CEhIR+Mk1FRUVhYyM7OjoqKQlHU2Nh4z5499vb2FRUVycnJw8ZbBEFgF4bLqaioSE9Pr6ury8zMbG5ulvRu4OBNTU0rV66MjY1NTk6G00RHR8Ndz2KxJKNfa2sriI0tLS1wlCssLMQiWH19Paw92DUEAgFOqmHjYWdnJ2bA+/fvt7KysrW1/fHHHx0dHdeuXTtu3DgEQYyMjIB53L59G/a1jx2/JIcSTLzHjx/fuHEDMx42mw1MV05ODi4nNTUVMw9paWnMWzFrXL58+fPnz0HzJXcFKisrL1iwwM3NzcDAIDc3F+cR8NBQX18/rACf8MA+AQEBAQEBAQHBF+Qr3iGFIIiUlNS2bdv27Nkza9YsBEHKysrs7OwsLS3l5eUPHz5saGhIIpHKysrevn0Lru1VVVUFAoGsrCzI7uXlpaOjc/z4cTc3t/Hjx4+mRhaL9eLFC6FQ2N7eLhKJvL29DQ0Nt27dOn369ICAAJCGTCaTSCQSiaSsrDx37lx5eXkZGZlhxVBWVoazV1VVffPNN2ZmZvr6+kwm09raOigoqKqqaurUqQiC6OvrT548+cyZMy0tLe/evevp6WloaCCTyVgWFosFN7+3txeck+Xv7z99+nRHR0cy+f+sPxobG9vY2HR1dWVmZjY2Nm7cuNHKysrFxYVEImEttba2trW1VVVVPXnypK+v76NHj44cOVJZWSkQCEgkEplMBs1sb28vLi7u6uqiUql8Pr+zs1NfX9/S0vL169dYLe97solGo3l5eRkbG9vb25eVlUn24Jo1a2JiYkC94PwXybbgALLhfgSiKikpWVpaZmZmgottBEFEIlFFRcXmzZsnTZrk5uZWWFgoLS3t5ORkYmIyYcIEHo8HZ0cQxNTUdMaMGX19fampqeXl5XBHgGSzZ88+ceKEurr6unXrpKSkSCQSh8Oh0+lz586VkZGJiop68+YNiqLffPONsrLy/Pnzf/nll6tXr7q4uJiZmYG6uFwurM+2tjY/Pz8fHx9XV1cymWxhYTFlyhQrKysej/fs2TPMugwMDHDWgik/OjqaRCI5OjoODAxkZGTgyldRUWGz2Rs3bvTw8AC7bADjxo2TkZHJzMycPHlyQ0NDf3+/vr5+cnIylpHL5Wpqanp5eWlra9+/f19WVhYrR1lZGVMazjwGBwcl/eXdu3dTp061tLT09vbOzs6Ge+T169fv3r3jcDhAz93d3ZLZJe0Zy15UVAQkwVIqKira2dmJxWJYqjdv3mCKLSsry8rKwvorOzvbysrKwsJi4cKF4HEtrC6whGpmZnb9+nXQcBRF4WJbW1s1NDTIZLKTk9O9e/eEQqGhoWFVVdWWLVswe9PX18ecDqQEttfQ0AD3Gk5+0FOlpaWwbHAo6OnpIZFIVCoVNkgajQY7haR7YoGLTCbb2toaGxsvWrTo4cOHtbW13d3dra2tsOnevXsXSI6iKNxlJSUlioqKzs7OTCZTRkYG1g9sYLjq4CD2wTipoKAQGhqKhSMlJSUXF5eurq5JkybZ2NhkZWX19/e/L+xjLpyWljZ37lysHDqdbmZm9uzZs9evXy9cuPDy5cs47wbxysfHx8LCwtHRsbi4uLCwEEvz9u1bXBgcNvqB2BgcHAxHOQaDAatFSUkJ0x7sGrm5uXl5eViNtbW1cDzs6OjYs2dPb2+vvb09HHCAIYFwje3zAmofGhrCRT8PDw8ssI9m/IKt6NmzZ+/evcPE43K5Pj4+mPEMDg4C083NzYXL0dfXx+LGmDFj4OiNiYGMCCawpEfgUg4rADwfICAgICAgICAg+Ov5uhekEAQxNDRctGjRyZMn58+fr6SkVF1dLRaLW1tbqVQquABTVFScNWvWb7/91tzcDG7DIgjS3t5+6dKlTZs26evry8jIYEsPHyQpKWnJkiXLly8fGBg4dOhQTk6OtbX1Dz/8EB4efu7cuT/++ANODE+vhxWjr68Pzj5x4kQs/YsXLzo6Ok6ePBkfHw+OmqZQKGQyWV1d3cvLa+nSpRkZGcrKysnJyVgWOTk5DoeDNZ9Op5NIJHl5eQ6HIxKJwPUkSInN4BEEkZWV5XK5IpGoubl50qRJmPBtbW39/f2tra10Ov3MmTPTpk07f/78jh07UBQFFzMgGYPB0NPT+/nnn9XV1RMSEmRlZSkUCigcqwVLTKFQhEKhWCxub28HH9hsNth3MGbMmJqaGiUlpcrKStAEMpl89uxZa2trUO/Q0NCwbaFSqQKBQCQScblcnGySODo6Hj9+XF5eHjyZSKFQZGVlwU6WxsZGFRWV/v5+TJ+S5WAtIpFIuI5AEARFUTqdHhER0dTUdPLkyZ07dwL1DgwM9PT0oCja09MzZswYsVjM4/H6+/tv3rxJp9MPHjzIYrHu3bu3bt06BEGkpaVhfWpra6elpSkrKxcUFGhoaHR0dKAompaWVl1dDVtXTExMeno6bC2YqFQqta+vD2wx6OzsxJWvoKCwa9eu8ePH79u3LzExcenSpaBAKSkpMzOzqKgoX1/fxMTE5ubm+fPnwxm1tLT4fH57e7u8vLxAIKDRaFg5qampmMZw5qGsrCzpL0pKSiwWSywWt7W1iUQiXI9oaGh4e3sDPVOpVB0dHUl3w9kznL29vR3uR6A0nBKEQmFeXh5QbHFxMdxfenp6XC5XLBa3tLSAA55xVt3b24s1nMlk4voOVDp58uSQkJDo6OjAwEAOhwOLh1s8xb7S6fTBwUGs13Dyg8+KiopVVVU42eCUYrEYNkhzc3NdXV1JYx7WXygUSm1tbVBQ0P79+2VlZffv30+n02HTxYoikUiwzpWVldlsNiYJrB/YwHBg6WVlZUeOk2fPnqVQKFOmTIHDEVhqgRcvho23cKvBiUVwOQ4ODqdOnVJUVLSwsJD0bgRBxGJxc3MziFeamppwmsHBwTdv3mBdLy8vP6x6QWyEoxyVSmUwGLgIhmkDdo3BwUG4RkVFxcrKSiweWlpauru7i0QieXl52IDl5eWHVThY68E5C84aPzh+If9/14PFEwgEsPEMDQ2B0nDliMVizDySkpIkozeFQhkaGhIKhSKRqLu7e9i2wJ0Oe4SysrKkYt/XEAICAgICAgICgr+Fr35BikwmL1q0KDU1VSQSubi4PHv2zNPTk0KhBAYGkkiky5cvW1hYUCgU8GDIli1bwAxbUVGRTqdv3bqVQqFMmjQJnMkyGgoKCvbv36+np4cgiKura2Jiopyc3KVLl0gkEjiTCEEQeXn5rq6uq1evwnNrBweHtLQ0nBhSUlKZmZlYdvhFgRoaGiUlJbt37xYKhfLy8mD9hUwmr1279sCBA7du3WIymSdOnIBls7CwyM3NxZpPo9FIJNLq1asPHDhw9epVDofj4uIiqT1fX9+DBw9ev369qalp3rx52F8sFsvX11csFu/evbuoqOjRo0cvXrxobm7m8/lqampnz549ceJEV1fXw4cP3dzcNm/eTKPRpk2b5uTkNIL2DA0NRSLR4sWLwWYfFEUjIyNTUlI0NTV37dqVn5/v4uKSkZEBmvDvf//77du3WL29vb1wWxYsWADKnD179sGDBxMTE/l8PoVCAbJZWFjAj2GCHrl48eKOHTsoFIqhoSF4hotCoaxdu/bw4cOXL1/W0NA4duxYeHi4pNhjx449d+4cvL+DRCJJdgSZTO7q6tqwYYOUlJSFhYWenl5XV1dUVJSTk5O/vz+FQnFxcZkzZ05TU9PmzZvpdDo4SkZaWnrr1q27d++2s7MzNjbW1NR0d3fH9GlsbHznzp0TJ07k5ua+fPlSSkrK29tbWlo6MDDw+fPnmDz6+vrNzc04a8HabmlpuWbNGllZWR6Phyt/4sSJhw4dQlFUWlraysoKbvXUqVNDQkKmTJnCYrGamprAFS+WcebMmYODg4cPHxaLxR4eHvr6+vv27QPlgG1oQOc483BwcIANHlTk4ODw9OlTT0/Pnp6eOXPm4HqEy+Viet6/f39MTAwuO86e4exHjhwJDg4+e/askZGRuro6lgynhO+//z4vLw8o9sCBA0wmE+svPz+//fv3e3t7CwQC7IAtGBqNFhQUBBru7OwsLS2NFQvO0kIQhMlkWlhYpKSkmJubMxgMuHUVFRU40wKMGTPG3t4e6zXJehEEcXZ2Tk5OHlY2EomkpqZ27tw5Nze3X3/9FRikhobGsOW8D0VFRVVV1aCgIAUFhd7eXnl5eVdXV8x0MafA6Xz37t2lpaXD6mfKlCk//fSTubk52J+IeSW8KDBp0iTQF8h74uS6detaW1vhcDSs8MPGW5yKJk+ejJXD4/EcHR1RFLWwsFBQUBg2zJLJ5JiYmNTUVG1tbbCrFEtz7Ngx2KK++eabERQLR7nAwEAGg4FFMJyckq4BS4WLh7Nnz0YQBEVRFxcXzICHHdqAeZw/f/7bb789f/48Zo3g39GPX7gyYfF2794NGw/2tj5cOVJSUnD8qaysxHmrjIyMlZXVtm3blJSUPnjWPs4j4KEBExgnQFtb27Fjx3bu3KmjozNy4QQEBAQEBAQEBP8JRtpO8nexffv2R48e1dXV/acr6ujoAPer/9MV/TcDztbV19f/97//7evrO2PGDARB8vPzg4ODz58/jz3l8Z/g9OnTqqqq4HDov4b+/v49e/asXbsWPuD5nw2Px4uJifHw8Ghubg4KCvqyr7H7x1NWVlZZWenh4REaGsrlcnft2vXX1DuaXvu7ZPsc4uLimEymvb393y0IwT+Qr9EjCAgICAgICAj+01hZWZmamt66devvFmR4/qcXpAgICAgICAgICAgICAgICAj+kfyXL0h93W/ZIyAgICAgICAgICAgICAgICD46iAWpAgICAgICAgICAgICAgICAgI/lK+4kPNW1pa+Hy+gYEBgiDt7e09PT0TJkzApUFRVPL4VZiGhgbwWvHR1CgWi0tKSrCXXtHpdBUVFUVFRfi85K8IcPR1RUWFkZHR6HM1NTVRqVS4yXw+v6WlBXQEVvL71N7e3s7lcmVlZel0+vv01t7enp6ePmXKFHB4/H8UoVBYU1OjpaWFa8LoKSsrKy8vnzJlysuXL1VUVAwNDceOHTtsSpFIlJmZSaPRZs6cCetHJBKVlJTo6Oh0dHSQyWQGg4GVwOFw3r17NzQ0JC0tbWRkpKCg8AkSfnGA0jCz+VuERFG0sLCQxWLp6upaW1tTqX9dKOvv7y8vL9fS0gKHkbe2tra0tBgZGUlJSaEoWlFRMTg4aGxsDIvE4XAaGhomTpwoJyfH5XKFQiGCIFQqVU1NDU7W3d3d2dkJXmDX0dHR2NhoYGAAH8/f2dnZ0NAA/4hlQVG0rq5ucHDQwMAAti5clpqaGsk0ANgOpaWlSSRSa2ursbExg8EACUpLS9va2kgkkrKyMq6BCILweDw2m21oaAi+1tfX0+n07u7uD4YXyQDyQUbIIhaLKyoqjI2NwVecrX5xUBQFr7ycMGECmUzu6+t79+6diooKOCS7s7MTHLsuLy8P/KK/v7+9vV0sFiMIIi0traqqKpkGkbCx/v7+ysrKsWPH4oYqsVhcU1Ojo6NDp9NFItG7d++YTCZ2PjdsTpJVq6iotLa2CoVCCoUyZswYKSmpUTZZUqXt7e0cDodCoYBAOqzxjGa8HpaRre4/AYvFUlNTA5qvqqpSUlIazQyhv7//zZs3AwMDFApFR0cHd0o6MEtdXV2gEB6Px+FwpKWlcYMpTHl5uYKCgpyc3LNnz3p6emxtbXV0dD7BWT6ZmpoaRUXFYQ/ZxHkZ8pFe3Nvbm5OT097ePn36dH19fUx1NBrNwMBATU0NQZCysjIul4sgCIPBMDY2xg0rXV1dTU1NZmZmn9PAurq68ePHIwgyMDBQUVGhqqoK9wXmL1JSUqqqqkKhEHZJoAQ4mMvLy3d3d8OuDZLhQoSkL8NeDH4BdWHy4L4SEBAQEBD8w/iKF6SePHnyyy+/REZGmpiYZGZm5uXlnTx5Er7Kio+PLy8vDwgIeN/iSG1t7erVq3fu3Im9sm1kBgcH8/PzKyoqkpKSbGxsdHR0BAKBoaHhX3ksNw4URU+ePOnk5AQOIx89QDmbNm3Kzs7+qKu1kpISJpMJT4xYLBZ8AvoIaheLxdevX58zZ05MTIympuawekNR9MyZM52dnRYWFh/Vok+jra0tKCjowIEDubm5nzDLb21t3bt3r7Ozc3Z2dl9fn4eHx/Xr13fu3IldhsGkp6f//vvv//rXv3CaSU1Nra6uVlRUzM3NtbKyun37NlZCYmJiSEjIjBkzeDxeYWHh77///slq+WRTkQQo7fr16+DrXy8kn8//8ccfu7q6pk6dmpCQcPfu3VOnTsELN/85Wlpatm/frqmpWVVVtXPnTqFQePbsWX19/ba2tl9++eXPP/+sqamRkpKiUqm//vqrrKwsgiAJCQkXLlwwMzMrKSnZt29fZGRkU1MTj8err6+/d+8edlE3MDCwf//+oaGhc+fOvXjx4vjx4xMnTqyvrz937pyWlhaCIIWFhUeOHNHS0urs7Dx9+rSamhqW5ezZs+fPn3/x4gWdTtfR0Tl06BC4bsdliY6Ofvr0KYVCmTx5cmBgIO6VBbAdqqmpMZnMmpqaysrKxYsXIwgiFotPnTpFpVK1tLSqq6tpNNqFCxeYTCaWvbS0NDQ09MKFC6DYO3fuaGhooCj6wfCCCyCjYYQsPB7v1KlTISEh4CvOVr8sYrH4xIkTlZWVQ0NDkyZNWrVq1Q8//DBu3LiqqqqFCxcuX748ICCAx+PJysp6enquWLECQZCioqKLFy+CNR09Pb0//vhDMg3OxgwMDLZt2zZmzJi2trbvvvtuzpw5mADR0dFnzpyJiIhQUFD48ccfBQJBW1vbokWLfH19YXMCAQdX9a5du77//nttbW05Obnt27dPmjRplK3GqRREdTs7u4qKCicnp2GNBxnFeP0+DY9sdR8Fm83+9ddf9+/fP8KbTEQi0b59+2RlZS9fviwlJXXx4kVnZ2fwXsiRaWxsDAwMtLOzo1Kp+fn5ixcv3rJlC/Yvn88/derU/v37wShTXFx8+/btBQsW4AZTWNSQkJBNmzYFBgaOHTt2zJgxV65cOXLkCJ1O/wveN4IgCIqiV65ccXJyGvaVkTgvQxCkra1tlGNoWVlZYGCgubm5kpJScHDw2rVrp0+fDlQ3NDSUn5/v7+/v6+sbFBQ0NDQ0bty49vZ2Fov1xx9/mJiYYIXQ6fR79+6tXr36k9fm4uLizp8/n5CQ0NnZuW3bNgUFhZqamm+//RZ7O2pYWNitW7fGjh07ceJE8LpVzCXBGy27urp+/fVXLJjv378/Li4O868bN24wGAxciPD19f3hhx9wvox5MbgRxePxdu3aRSKRgEVNmTIF/kq8EYKAgICA4J/HV7wgRSKRFBQUzpw5c/bsWfALiqKZmZngtXFeXl4PHz58+/atvb29QCCIjIzU1tZeu3atoqIiSNzf33/t2jVwL3eUNTIYjA0bNvD5fDabvWXLFktLy9OnTxcVFe3cudPMzGzFihXt7e3BwcF8Pt/Pzw+bPHV1dd26dausrGz69OkrV65sbGwMCQlRUlJiMpmbNm2qrKzEvrq4uMTExHR1dS1btqyzsxOTmUqlhoSEtLS06Ojo2NjYjB8/HivQ0tIyOjq6sbFRT08vKSnp1atXzs7O8+fPB7PVJ0+eMJnM2bNnZ2dnd3R0MJlMnHJsbW0RBKmtrU1MTORwOAiCbNiwoa+vD5YQtCI5ObmwsJBEIunp6TGZTFjsKVOmdHR0/PTTTyiKLl++HJQ8ffr00tLSoqIie3t7Hx8fcHnMYrHYbLaFhUVGRkZhYWFJSYm1tbWXl1drayumt97e3oSEBAMDA7FYfOPGjZKSEhcXlzlz5oSHh3M4HFNTUxsbG0klY+K5urpGRkYODg6uWrVKR0fnzp07CxYsoNFojx490tXVra6uZrFYkydPXrFiRV1dXUhICI1Gw15J/vTpUzhBQ0ODpB5gG1u5cuWDBw9YLJaWllZubq6hoaGxsfGzZ89evXoF1lPgxO7u7rdu3WKz2SQSKTExcezYsZMnT0YQpK+vLyEhYePGjaB8Q0NDgUCAlUAikWbPnn3o0CEEQQ4ePJiXl9fa2gpaumrVqidPngD9ODg43L9/v6+vr66uzt3dPSsri8Fg+Pv7U6nUiIgIkEZbWxuYiomJCYvFwqwrPz8fFLhp0yYmkykWi+Pj4xMTE1VUVNavX19RUTGy0iSFzMrKys/PB501ZcqUmzdvgu5gMBhJSUltbW00Gm369Onx8fEzZ8708PCor6/H0ojFYkl7dnJywnrfx8cHGLZQKLx27ZqUlBSfzw8LC+NyucnJyZKV4mxg/PjxVVVVb9++nTlzpre3N3ATXJPfvn0LFLJmzZonT57gfEogEPj6+s6fP//ixYuFhYVmZmYnT57U09P7/vvvKysrx4wZ869//QtBkICAgJaWFn19fRRFOzs7Dx48OG3atKNHj9bU1Pz6668ikejw4cPe3t7wFoPY2Nj6+nqwwwg4zvbt27/99tvKykotLS0URR8/frxkyZJly5YdPnw4JyfH29sbyzI4OFhSUrJt2zYlJaXDhw93d3erqKjgsiQmJubk5Jw4cUJWVnb37t3Nzc3jxo3DasfZIWDWrFlBQUHOzs7gAp7BYKxatcrBwYHL5W7evLm8vPz169eYbk1NTdvb20+ePCkrK7tmzRq4nPT09OjoaAMDAz8/P7CaUFdXd+PGDYFAsHLlSgRBsACyYcMGGRkZLL4tXLjwwYMHko6Py6KgoIDZuY2NDai0vLwcttWcnBxJm583b969e/eAGNibN1ksVlhYGJ/PX7Rokba29rAxGYwjAwMDpqamAQEBdXV1586da2xs9PT09PX1zczMvHv3rouLC4PB+PnnnzU1NbGVF2tra2tr6+bm5h07duzdu1cgEEimwdkYl8vV1dX96aefcnJyHj58OHPmTBBOq6qqIiMjwX6NV69e0Wi0oKAgDofT2NiIM6dhq25oaHB2dv7xxx/h1fNPcH8Q1c3NzSsqKkYwnpHHa19f34KCArgubMcWzupycnJYLFZXV9eSJUu4XC6cvaampry8fNq0aUKhsLS0dPXq1UZGRnAVCQkJcXFxpqamrq6uoaGhwJYmTJgQFhYGhxcwwIH1DiBDb28vZmAg2PJ4vJqamoULF86cORNrsra29p49e1RUVFJTU0NDQzU0NDQ0NKytrYHZiESiiIiIvr6+pUuXwoqqq6sLDg4WiUR+fn5Yfz158sTQ0FAoFPb29m7btm3s2LEzZswAu29gy+/u7sZs1draGmuIuro6Zqt0Ov327du4sTguLk5FRQXIpq+vX1RUhLXI3Nw8JCSkubm5qakJGHlERAQuFIONRcnJyRQKxcnJ6cWLF8XFxXQ6/YNjqEgkunjx4sqVK319fREEWbBgwYsXL2DVlZWV7d2719HRUUpKaunSpc7OzmKx+LvvvisuLpaRkcGChqWlpYWFRUxMzPbt24HjjN5tEQSJjo5++PAhuIfR3Nw8NDR0/PjxyMjIFy9ezJs3j0wmoyhaX1+/e/fuuXPnUqnUmpoa2CXBgpSKigoczJcuXbp06VLMv4Bb4UJEZmYmzpfr6uowLwa8fv2aRqOdPn06NTU1NjYWRVH466xZsz64jEtAQEBAQPB18XUPbK6urhQK5d69e+Brbm7uxYsXfX19e3t7z5075+DgMG/ePKFQeP78eT8/PzKZfPr0afCcGoIgkZGRysrK06ZN+xwBUBRls9l+fn5JSUkpKSn79u0zNjaeN2/esWPHWlpaQJqoqCixWBwYGJicnJySknL8+HEbGxsNDY07d+50dXXBX1tbW2NjYz08PNra2mCZ//jjj46ODi8vr/Dw8NraWrjAzs5OGxubFStW3Lt3r7y8fMuWLdHR0SkpKaBqGRmZhw8f9vX1PXjwoLa2VlI5xsbG2dnZXC43PDzc2dmZTqefP38eFglraUFBQWVl5ZIlS6qqqoqKinBpmpub7e3tpaSkwsPDnZyc5s2b197e/ubNm4CAgNLS0vr6elDI69evx40bx2AwUBRtampauXJlbGxsVFQUrDcNDY05c+b4+flFRUVVVVX5+/uHh4fHxMTExsZqa2tbWloOq2Qg3ty5c48fP25mZmZvb793797a2tqsrCwejycQCLKzs1+9evXs2TN/f//ExMSUlJRjx47Z2trq6elxOBwul5ubm4tLMKweYBv76aef5s2bZ2tr++OPPzo6Oq5du3bChAmGhob5+fmSiS9duuTu7u7m5ubo6KikpAT2ziAI0tjYyOPxxo0bB2SgUqlwCUNDQ3V1dYmJiREREXl5eYaGhqClixYtCg4OhvUTFRWFoqixsfGePXvs7e0rKioSExMvXLiApamqqgKmUllZCVtXfn4+6FkwO2exWElJSdu2bWMwGNevX3/58uX7lIbpBCfk+PHjQWeZm5vv3bsX647S0tI7d+7MnDmzvLw8LCzM29s7NDS0pKQETiMnJydpz4mJiaBAcHMYRdHXr19Pnz5dSkqqu7uby+XOmzePwWAMWynOBl6/fp2RkbFp06b4+PikpCQgP67JmELCwsIkfWrChAkuLi4//vhjaGiovb29o6OjtLT04sWLhULhlClTAgICVFRUMjIypKSkwMYHMpm8YsUKa2vrurq6oqIi8IzJy5cv6+vrlyxZgunw7du3mZmZy5cvB8tezs7OiYmJLi4u/f39YKFkaGiotbVVQ0ODTCarqak1NzfDWaSkpFxdXbdt2+bn5zdz5kywBIDLUltbi6KogoICk8mkUCjYo8fD2mFpaWlVVZWmpubQ0FB1dTVIIxKJCgoK4uPjg4ODURRVUlKCdYsgSFNT0+zZs4eGhkCkFYlE2dnZBQUFFy5c8PX15fP5cXFxoAf/+OMPXV1dT0/PxMREoVCIBZCrV6/C8S0rK2tYx29ra8OyXL58GbbzxMREBEG6urpgW83Pz5e0+UWLFoWGhmJiDAwMIAjS29t748YNZ2dnLy+vc+fOVVRUDBuTwTgiIyOzePHitLS0NWvWWFtb29ra+vn5CYXCuLg4c3NzLpf75s2bH374Ye7cuY8fP4a1fefOnWnTpk2aNKmlpUUyDc7G6HT6wMCAWCzm8XgNDQ1gMaivr+/atWuLFi0C19gNDQ0vX7709/fftGmTQCDAmdOwVVdUVCQkJKxatWrJkiW1tbXD+sJo3B9EdTKZDIaS9xkPMuJ4feLECbiuvLw8LBfO6hAEAT3S0tKCy56enr5gwYKzZ8+CncuXLl3KysqC08ycOdPGxsbJyenAgQOYLdXX18PhBUEQGo22devWqKiot2/fAnOFDQwEWwqFMn/+/N9//x3WbU9PT1paWmxs7J07d/T09MrKyqqqqhAEKSgoaGlp6e7ulpOTc3JyOn78eHt7O4IgpaWlJSUlhw4dMjExmTFjxo0bN7Amv3nzxtTUVE9Pb9asWfPmzfPx8QFrbQg02l68eBG2VTabDRoiJycH22pqaqrkWFxcXIzJVl9fD7fozz//bG9v9/b2rq+vR1H08uXLkqEY3C+RkZG5f/9+b2/vo0ePBALBaMbQjo4ONpttZWWFomhLS4uUlBRuB9a4ceOkpaUbGxvBLcPAwMD169eDLHDQGBgYMDMzKysr6+vr+1i3RRDEy8srKCgIxEl9fX0lJSV3d/dr1655enqC5Z7+/v6SkpKLFy96enoeOnRo7NixsEvCAuOCOeZf4CsuRDCZTNiXOzo6YC8GtLS0qKiokMlkDQ2Njo6OhoYG+Cu8FkxAQEBAQPDP4CveIYUgiJSU1LZt2/bs2TNr1iwEQcrKyuzs7CwtLeXl5Q8fPmxoaEgikcrKyt6+fXvs2LHBwUFVVVWBQCArK1tWVhYTE7Nx48a7d++Cqc+wz1h9EDKZ/M0335iZmenr6zc2NhYXF3d1dVGpVD6fDy4FEQSZO3duaGjokSNHKisrm5qaSCSSo6PjwMBARkYG2C+DfUUQRF9f39LS8vbt25jMysrKQ0ND3377rZWVlYuLC4lEggsUCAQkEmloaCgvL6+lpeXdu3c9PT0NDQ1APFBUTk4Oj8cTi8WSysEaYmxsbGNj09XVFR0djRMJayk4w4JMJnd1deHSmJqazpgxo6+vLy0tjUwmk0gkMzOz4ODgjRs3enh4YHf/mpubwaZ0Go3m4+NjYWHh6Oj48uVLWG9cLhfMCCsqKjZv3jxp0iQ3N7eSkhIFBQU7OzuxWDyskoF4FAqFwWDMnTtXRkYmKiqqpqYG11lOTk4mJiYTJkxobGykUCiOjo59fX25ubmSCRoaGuA2pqen37t3T1VVVUlJCVZjb28viUQik8lkMhlc+ykrK1dUVIBTtHAG2d/fD5RjbW2NSdXe3k6lUuHHzeASEARpbGzMy8uTkZE5duyYtbX1ixcvbG1tx44dW1VVBetHUVHRxcWlq6tr0qRJNjY2WVlZfX19sA6LiopAG3EeMX78eNCzoHYDAwNra+ugoKCqqqqpU6eCK6gRlAaAhTQyMrp//76dnd3AwACdTse6o7Gx0cjIyM7O7sWLF6qqqqampkwms7m5GU4DztrA2XNjY6OioqKdnR1mSDQabXBwEEGQrKyshw8fFhUV7d27F6TBVYqzARqN5uXlZWxsbG9vX1xc7ObmJtlkBoNha2urpaWVn58v6VMIgjAYjGPHjk2YMOHatWunT5/W09O7fft2YGBgQkIC2NFz7969oKAgOTk5LMvbt2/37t27evVqS0tLFEXj4uLmzp2LnYrS19d3/vz5qVOndnZ2crlcDodz//79uXPnrlmz5vDhwxkZGbhnioeGhkQiEZylvLw8Njb21KlT8vLyv/zyi5eXF7z7CWQB5oSi6NDQELAEOIGkHSIIQqVS5eTkWltbwVeRSMRisfh8vpqa2vnz5yWfnLKxsZk9e/bYsWN/+ukn7OiiiooKCwuLKVOmWFlZgV/IZPLs2bNPnDihrq6+bt06KpUKBxA4vvX394NuxTl+Z2cnliUlJaWpqQn2haGhIXCkEWarw9q8rq7unDlzMDFoNBqCILKysj4+Pg8fPqytre3u7haJRJIxGRtHQHO8vLx0dHSOHz/u5uamoqJy9OhRGo22du1aCoUSHx+vqqoKVl4cHR1BFg6H8+rVq6NHjyIIYmJiMmwa2MYOHTr09OnT5cuXy8nJSUlJgY4DG7vk5OS6urrq6+sHBwcnTJhw5cqV/Pz8q1evMhiM6dOnA9vgcrnYQ2Fw1X5+fv7+/nJycqdOnYqOjt62bdunuT8W1XHgjAf50HgtLy+P1VVTU/PkyZPe3t7Vq1fjrK6pqQn0SHBwMC67s7Ozubn5xIkT7e3t29vb8/LyWCyWZLhub2/HjTi48IIgyIQJExYtWnT27FkajQbOS8IFW2dnZyaTKSMjgw0Nnp6ePB6voKBAVlbWzc1t/vz5586dgxWiqanp5eWlra19//597FYKn89HUfSbb75RVlbGHhbr7e3t6elRVlYeGBhYvXr1d9999/Llyz///LOhocHNzQ12FthWBwcHQUNyc3NhW9XX12ez2bixGIeSkhJoEYPBqKys9Pf3nz59uqOj4/tCMTj/yNzcfHBwMCsri8vlOjk5lZWVjTCGgoooFAqJRBKJREKh8ObNmwUFBe3t7X/++ScmiVgsRlGUTqfTaDQ7Ozt1dfVr1679+OOP+vr6cNCg0WhycnKDg4N8Pl9OTu4T3Bbj5cuXXV1d4eHhCQkJ9+7ds7S0BBOJP//8U1lZube3d8uWLWVlZVOmTIHDPthohgvmsH/BYCHi2LFjFAoF82WwkId5Mbh5AEZABEGGhoZIJBKFQsF9HbYHCQgICAgIvl6+7gUpBEEMDQ0XLVp08uTJ+fPnKykpVVdXi8Xi1tZWKpUKLjAUFRVnzZr122+/NTc3l5aWSktLIwiCoqiWltajR4+Ki4v7+/u9vLzedxD1B8Gu6+h0up6e3s8//6yurp6QkKCtrY0giFgsPn78+JQpU86fP79jxw46nT44OAj2FHR2dsrIyMBfkf87XYNlLioqevr0KZfLFYlEzc3NJiYmcIEoioJ1JXV1dS8vr6VLl2ZkZGCHZSoqKpqbm//555+zZ88GF9g45cCtAOVQqdS+vj5YJAxsJiQlJYUTG8uO0dvbu2vXrvHjx+/bty8xMRE8pECn08H9TLFY3NzcDPZJaWhoSOqNTCbLysqCWXtjY6OysnJTUxOZTJaWlpZMjIknKys7MDDQ09ODoiiY0A8NDQmFQpFI1N3dDXcWg8EQiUQ9PT0CgaCnp2fY3oTbOHHixEWLFsnIyNTW1r558wZTo+RJwAMDA9ixu0pKSpWVlVhi7MhSGBqNJhKJRCLRsCWQSKSZM2cePHgQXj6gUCigsbB+2Gw26CCsI3A6VFFRaW9vHxoawnlEcXExPMeNiYlJT08/efJkfHx8SUnJaJSGE7K7uxss0uG6A2zMAWmwMmVkZOA0ioqKkvZMo9FevXqFZSGTyTNmzAgODl62bJm7u7urq+v3338PxJCsFGcDYrGYzWZjhve+JgM3HNancnNzCwoKvv3228mTJ+fl5f3xxx+WlpYzZ840MDDgcrnBwcFgUwZ8LkxRUdHBgwcDAwPBdXhnZ2dtbS38UNvg4KC2tvbr16/BYzJlZWVNTU0eHh4aGhqmpqZgUwOJRNLU1GxsbAQ7C8zNzXt7e7EswCZNTU3l5OSkpaXb29vHjRuHyzJ58uTKysrOzk6RSISiKO6cZkk7RBBkaGgILPBhBgAengJfeTwezr+4XK5AIOBwOAwGAzMqJpPZ0dGBomhaWhqbzfb19QUXnBEREU1NTSdPnly/fj0WQFAUlYxvko4vLy+PZSGRSDhfaG5ulpOTg211WJvHiWFubq6rq1tbWxsUFLR//35ZWVlwBpNkTMbGkfb29kuXLm3atElfX19GRqalpeXUqVOGhoYBAQFUKvXFixeFhYXr168nkUhUKhVzTBaLpaSkBBbsCgsLJdPANvbixYv29nZXV9dvvvnmyZMneXl54N6JjIyMWCyOiIiorKzMzs42NzcHIgG1aGlpYbbBYrEwa8SqRlE0MjLS2Nh4xowZZDIZCzif4P5YVMeBMx7ACOM1lUrF6pKVlXV3dxeJRGBHLWx1TU1NoEdw0ZVKpWImh5WjqKgIVwHCNYPBgG1JS0sL2BgsJ4lEWrRoUXZ29tOnT+fNmycZbLH02NAgLS2tpaUVGBiILfpQqVSBQCASibhcLoqifD6/vb1dXl4erEFgfgf2y/T399+8eXPPnj0IgoA4OTAw8PLlyytXrly8eHHmzJlcLjczMxOBRtvu7m6crYKG4GxVLBZLjsU42TANkEgkeXl5DocjEolaW1uHhoZGCMVMJnPatGnXr1+fPn26vLw8Tvm4MRTrEUNDw/j4eFNT0127dlVWVu7btw/WfFFR0dDQ0Pjx4ykUysSJE8Ey2cmTJy9fvozzVgR6fcpHuS0ONps9btw4LS2tadOm5ebmDgwMyMjIdHV1hYaGrlmzRkpKikKhFBcXZ2dnYy4pEomAy+CCOezaAMkQAfuygoIC7MXTpk0jk8mampoZGRkikaipqUlNTU1bWzsnJwf7ipu5ERAQEBAQ/AP46hekyGTyokWLUlNTRSKRi4vLs2fPPD09KRRKYGAgiUS6fPmyhYUFhULx9vZGEGTLli1g+jJp0qTffvsNRdGDBw/a2Nh88moUDNj1vXnzZhqNNm3aNHC3k0QiTZ48+dGjRy9evGhubpaSkrK3t1+zZo2srCx4QAb+ihXl4OCQlpaGybx69eqDBw9ev369qalp7ty5cIHgvvG5c+cCAgLOnj1769YtJpN54sQJrKg5c+bcvn17zpw5urq6GRkZOOVMmTIF1wp5eXlLS0tJkWCUlZWHFRswduzYc+fO6ejoPHr0CEVRaWlpbGcEOGIJTCJjYmJSU1O1tbUPHz6spKSE6c3V1RVBEAqFsnbt2sOHD1++fFlDQ2Pnzp3FxcUIgmhqakoqGWPcuHEuLi7+/v4UCsXFxcXKysrKygocrAPuMcKdBVK+7wSxMWPGwG3U0tICB0ubmJjk5ORgasRNcFEUrampMTExAWbm4uIC67yjowOk+fXXX83MzMBBudra2iiKgic4JEt4Hzj97N69u7S0FJeGTCbDaY4cORIcHHz27Nmff/4Zti5cRfr6+s3Nzbt37xYKhfLy8uCFR6NUGg5cd0yYMCErKwuXRlNTE05jZmYmac+7d+/G5XJxcSkvL1+8eLGamho4M8XMzCwmJkayUpwNgOvwlJQUTU3NDRs2DNtksFIDtHfgwAGcT+np6V26dOnly5fgVFoZGZmffvpJQ0NDIBB8++23W7dulZeXX7169ZgxY06dOqWjoyMSiX799dd3794dPXqUTCb/61//MjAwIJFIY8aMwZoDTqRGECQ+Pj4jI8PR0RFBkJ9//vn+/fvt7e0///wzkMfT0/PHH39MTEyUkpIKDAwEz5uALAsXLgQ75hgMhra2tqKiYkBAwM6dO3FZhELhjh07qFSqk5MTiUQKCAjYs2cPMGycHQJ6enp6e3vf9zY0WVlZnH/V1dWtXr0aRdEff/wxPT0dJLO3t09JSfH29paWlgYHjYFdlhs2bJCSkrKwsIB3beACJnj9HCLh+PBjPjg7DwwMLCkpwewK2CouomKrorAYYIFSUVFRVVU1KChIQUGht7cXPMf3vhIUFRXpdPrWrVspFMqkSZNYLFZsbKyxsXF8fLydnd3GjRvPnj2bnZ3d2toKTAUUVVdXp62tDS5odXR0JNPgbExBQSE0NPTu3bs9PT2HDx8GVYMDa1paWvbs2bNixQp5efmYmBg/Pz8ej/f999+DrX/ANuzt7TMyMlJSUg4fPgxXPWHChKNHj44dO5bP5//666/D+sJo3B+L6jjzGNZ4RhivCwoKsGQMBgMc0wNOTRoWXHSFs8NpsrKysDTq6updXV0PHz50c3PDbAk+BApGRkZm+/btL1++xBkYLthiQ0NlZSWuhNmzZx88eDAxMZHP55PJ5MHBwcOHD4vFYg8PD+xWiqKioqur6+bNm+l0OvbYl4yMjJaWVm1trYuLS25urqenJ4PBYDKZx44dg9f+wNvfMFvFHubC2aqUlNShQ4dwYzFONqxMEom0evXqAwcOXL16lcPhLFiwAA6DkqHY3t4+ODh4x44dkgMWbgwFP1IolG3btu3fv9/Dw0NWVpbL5S5fvhxBEBaLtWTJErA16cCBA/ByuYODQ2Ji4pUrV8zNzWFvLSgoGDNmDEj5UW6LY9asWQ8fPly3bl1bW9uaNWuAD8rLyw8ODoIsZmZmDg4O+/btw1wS21Df3t4OB3PYv7D+hUOEkZHRnj17MF+ePHny8uXLMS/Ozs5OSUkJDAy8e/fumjVreDzewYMHTU1N7927h3199uwZ8GViqxQBAQEBwT+Hof8+tm3bpqOj83dL8R+hp6cnLCysq6urrKxs7dq1uK/vyxUbG1tSUiIQCLZu3Zqdnf1XSvjJaYalra0tICAAnCH6X86ntbGjo2Pbtm319fWjr0gsFgcFBT158uSTS/ifpb+/v76+vr+/f/RZfvvtt5s3b35mvWCblUAgAF8FAgGbzRaLxZ9ZLA4+n19bWzswMAD/KBAIGhsbRSLRsFk4HI6kc+GytLW1gY0P/f39Fy9eZLPZ4HecHQKys7MPHTo0ODj4RVr0T6W9vb2jo2PYv8C+Bj6fP0L2YdPgbGxwcLCpqWlkUwfbTnt6ekYveW9v7wjmNEreF9UJ4/kcMjIyjhw58pld8xdQWlr63Xffgc2SOEYeQzs7O5ubmz85bIrF4jNnzsTExHxadhwikaiurq6rqwv3e1tbG4fDwWqEXfKjgEPEKH25sbERiwm4rwQEBAQEBB/L1KlTfX19/24p3stXv0Pq60JGRqa7u3vdunUIgqxfvx739X25lJWVwdx02rRpU6dO/Ssl/OQ0w6KiouLm5pafn487E+e/kE9r45s3b2bNmoU7vmdkyGTy0qVLHz165OTkJCUl9Qkl/M8iJSX1sYrS1NSEj4/9NMD5sthXBoMBf/1SyMrKSh53wmAwwHaMYYH3s7wvC/w80apVq7BzrHB2iCCIWCwuKipatmwZfMOfQBLcw48wFArlg9tvh02DszEqlfrBcsDDPh8S9v+HjIwM7tSwT2DYqE4Yz2diY2NTVFRUW1urr6//d8vyXt68eXPs2LFvv/0WPi8PY+QxVFFR8XNCMVgncnJy+uQSYCgUCnaKIgy8eRPnkh8FHCJG6ctw0MZ9JSAgICAg+Ifxf05P/K9i+/btjx49qqur+7sFISAgICAgICAgICAgICAgIPgqsbKyMjU1vXXr1t8tyPCMdE4NAQEBAQEBAQEBAQEBAQEBAQHBF4dYkCIgICAgICAgICAgICAgICAg+EshFqQICAgICAgICAgICAgICAgICP5SiAUpAgICAgICAgICAgICAgICAoK/FGJBioCAgICAgICAgICAgICAgIDgL4VYkCIgICAgICAgICAgICAgICAg+Euh/t0CfDotLS18Pt/AwABBkPb29p6engkTJuDSoChKJg+/6Nbf39/e3i4Wi6WkpFRVVd+XDEYsFpeUlHR2doKvdDpdRUVFUVFRXV39Y4VHUbSiosLIyOhjM0rS1NREpVI/QYZPK+1jq/sE8fh8fktLC+hZHGKxuKKiwtjYGHzt6Ojo6emh0WifpoGysrLy8nIXFxc5OTkOh/Pu3buhoSFpaWkjIyMFBYWPLQ3HCLaHIRKJcnJyhoaGZs6cSaX+P2csLS1ta2sjkUjKysrGxsbwX/85ent7c3Jy2tvbp0+frq+v//kF1tXV1dbWDg0NIQhCIpHU1NRoNNqw3TosI5jB+wBuNX78eAaDIflvfX09g8FQU1NDEEQoFNbU1GhpaX1sFV+K0ZjHBxGJRJmZmTQabebMmWQy+Yvb8Gjo7Ox89uyZkZERHM36+/vfvHkzMDBAoVB0dHR0dHQ+s5ZRqquhoSEvL09KSmr27NmKioqfWeno+QRbxTHyiCASiUpKSuh0+pgxY4ABi0SiiooKRUXF3t5eXV3diooKHR2d+vr68ePHl5eXGxsbwy7Q3t7O5XKNjY37+vpA/JSSkurq6mpqajIzM4MFeJ/vjABwpS8yln2QmpoaRUVFJSUl8BWoxdTUlE6n/wW1jxJJhXzQev+CUXWELDwej8PhYNYLlNzX1/cF5xVfEQ0NDbm5uUwmc/bs2XJycl+wWDqdPnp9tra2trS0GBkZSUlJIQhSU1MzODhoYGAgaUh9fX3v3r1TUVEBYVYoFJaXl6uqqoK6OBxOQ0PDxIkTwXCAfZWTkysuLoYDxcdK+MmAcQpBECaTaWJiwmAwsJGLQqGMHz9+3Lhx/2kZRgZF0b6+vo8N6f39/ZWVlWPHjlVWVkYQhMfjVVVVTZgwATcQi8XimpoaHR0dOp3e0dHR2NhoYGAgIyPzvnJwPdjZ2dnQ0IDLgvH5I9EXKecvs6XPBx5TPudi6ktpfjSACx9dXV34x79gEPlkcAM3DO6aDvkYTYILJTKZrK6uDmLjKCPJX9n2ERhBLf+bfMU7pJ48eeLp6clisRAEyczMvHz5MoqicIL4+Pjz58/jfsQICwtbuXLl7t27L1682NvbO5oaBwcH8/Pz4+Pjf/jhh7t376anp4eFhSUlJX2C8IODg9nZ2Z+QUZKIiIhPk2FYSkpKqqqqJH9HUfT48eM5OTkfW90niMdisU6fPi0WiyX/4vF4p06dwr5mZ2cHBwe/T+aRaW1t3bt3b1NTE1gxSUxMPHz4cHJy8u3bt728vAoLCz+2QJiRbQ8jJCTk9u3bN2/evH37NvajWCw+depUSEhIUlLSyZMn169fz+PxPlkSNpu9Y8cObBX1fZSVlS1ZsiQ1NbWuru7bb78NDw//5BoxqqurU1JSTp069csvv6SkpGRmZr6vW4dlBDN4H729vUFBQY2NjcP+e+fOneTkZPC5ra0tKCiora0tNzd39OV/KUZpHh8kPT39zJkz/f394CrlC9ow5u8jJ+vr69u9e/ebN2/27Nnz9u1b7PfGxsbAwMDHjx/HxcX5+/v/+eefnywJMmp13bp1a+PGjdXV1dnZ2StWrCgvL/+cSj+KT7BVHCOPCKmpqbm5uc+ePTt37hzQQ0lJyalTp3Jzc0+fPt3a2nrkyJHS0tIjR45wOJzS0tLHjx9jecVi8fXr17u7uxEESUxM9PX1TU1NRRCETqffu3evsrISJBvZd0YAuNLH5voEUBS9cuXKy5cvsV+AWv6rVqMQCYWMYL1YcP4LRtURshQXF585cwZ8xpT8aaPqZzLKsPOfIy8vb/PmzfX19ampqevXr+/o6Bgh8SjHVkB4ePjouwzUfuPGjfXr13O53KtXr+7du/fo0aO//PILLsg0NzevWbPm1q1bAQEBoaGhPB5v27Ztly5d2rhxY2ZmZkJCwvr16+/fv79y5cqysjL467t373CB4qMk/BzAOJWUlHTp0iUPD4/S0tLk5GQwcsXGxq5cuTI0NPQvEON9AIdtbW39qLkBm8328/O7dOnSli1bMjIyysrK/Pz8QkJCfH194ZERQZDo6Oh169a1tbU9f/7cz88vODh49erVTU1Nw5aD68HCwsL169dfvXp106ZNra2tkmJ8/kj0Rcr5y2zpg4wcUnBjimTQG72PfynNjwZw4QM+/5WXZp+G5MANg7umQxBklNNy7EIpPj5+165d3333HZ/PH2Uk+cvaPgIjq+V/k694hxSJRFJQUDhz5szZs2fBLyiKZmZmPn78eMKECV5eXg8fPnz79q29vb1AIIiMjNTW1l67di24bY6iaH19/e7du+fOnTv67ScMBmPDhg18Pp/NZm/ZssXS0vL06dNFRUU7d+40MzNbsWJFe3t7cHAwn8/38/OTkpKKiYnp6upatmxZZ2cnTgBAX1/f7du3i4qK7O3tfXx8gCRPnz6trq5msViTJ09esWIFm82+efPm4ODgqlWrsFXkurq64OBgkUjk5+eHIAgsQ3V1dVhYGJ/PX7RokY6OTmJiIofDQRBkw4YN8vLyISEhLS0tOjo6NjY2qqqqmLQmJiaYVEKhEMxsampqFi5cOHPmTARBWCxWdHR0Y2Ojtrb2+5qMFZKWlhYdHa2lpbV27doRxLO2tg4LC+NwOKampurq6piKEATp6Oj46aefUBTdsGGDgoJCRERESUmJi4uLjY0N6L6EhITk5GQajSYtLS0ps52dXVJSUnJyspGRkYqKyqJFi4BgtbW1QJkrVqxIT09nsVg2NjbgDiSJRJo9e/ahQ4cQBDl48GBeXl5ra2thYSGJRHJ1dY2MjARdMGHChLt37/b19dXV1bm7u2dlZTEYDH9/fyqVigk5Y8aMYW0vPz8fFLhp0yYmkwkMQFFRkUKh4IyQwWCsWrXKwcGBy+Vu3rw5JyeHxWJ1dXUtWbKEy+UCC/f19S0oKKipqSkvL582bZpQKCwtLV29erWRkRHmBb6+vgkJCXFxcaampq6urqGhoZLGaWJiIhKJLl68uHLlSl9fXwRBFixY8OLFi+rqapAGV2lWVpaKioq1tXVkZKS+vn5hYWF3d3dTU5Ovr6+5uTncCkdHR0dHx9OnT9NotICAgPz8/LS0NKxbVVRUIiIiXr165ezsPH/+fAqFAgz7xo0bAoFg5cqVODOQkZG5detWWVnZ9OnTV65c+ezZM6BMT0/P+/fvg3Zpa2sPDg4+ePCAy+UuWrTIwsIC6xRXV1cgVXl5eUhICI1G6+/vB7/gPK6hoSEkJERJSYnJZG7atAmkSU1Nraqqevv27cyZM729vTkczrCezuFwoqOjDQwM/Pz8eDwelkZaWhrzxOXLlwPzmDlzZktLS2JiooqKyvr167W0tGCj9fDwkNQPHOLc3d1v3brFZrNJJBIWEmEbzsrKys/PB/41ZcoULIwwGIykpKS2tjYajTZ9+vT4+PiZM2d6eHjU19djacRiMfB3PT29pKQkIIaTk1N4eDgo0MfHB8gjEAjGjx9fUVGBs2Ftbe09e/aoqKikpqaGhoaOGzeOxWKRSKRVq1Y9efIEdIqDg8P9+/e/iDfV1tY+fPjw3LlzhoaGCIJERUVxudy6ujqQBq7U1dU1ISEBs2F5efnq6mo2my0nJ7d+/XpwUxpEPCxSTZs2TTJQj2CrcMjS1NSsrKz08fG5ceOGlZXVuHHjnjx5oqOjA5scCEEIggwMDNy9excXe/v6+hISEjZu3Ein0/fv39/a2qqhoZGammpnZycrKys5Ts2aNSsoKMjZ2RnceWOxWGw228LCQigUpqWlLV26NCkpycXFRUZGxsLCIiYmZvv27WBBE/YdU1NT2N04HA7WWEtLy2FdKScnBx7m0tPTgS8sXbo0OjpaMs4zmcz4+HjM/lEUhauAS6NQKCEhIc3NzdhlG6wWsVg8QjmSI6aWlhYcFjIyMiSjqLS0dEJCAmYVZDJ52OCzZs2aJ0+eYE5aVVWFiy08Hg9Y76xZs3g8HhZFwWYHLDijKAqPkgUFBZIThlGOqtra2sNOPHBZ4HkFJipOybhR1cLCAp4/WFhYgCEVVpSsrCwctZ4+fQoU5evrGxsbW1xcPG/ePFdX1+fPn2OCvXr1CvMFCwsLEHbGjh0bGxuLKbyxsRGOyc3NzZKzDthh7e3tYXWpqqrigicYPSV98N27d2ZmZtu3b0cQ5MGDB729vXCLnJ2d7927h413BQUFoPtWrlx5//59LM2wMQ1BkMLCwpKSEmtray8vL7FYjBUrGVfJZPLJkyf19PS+//77srKynJycEydOyMrK7t69u7m5Gb7tz+VyPT09fX19MzMz7969q6OjQ6PRTp8+nZqaGhMTM2XKlIMHD06bNu3o0aMFBQVUKhX7+vr1a1ygwEnY2toKKxn2IDU1NcwdvL29IyMjFyxYQKPRHj16tHz5cjhU4grBjVNkMvn69evXr1+fMmXKzJkzjxw5QiaT79+/n5KSsnDhwrt37+JCbnJysqTf4TrF0NBw2FklnU5/n2DDjs5gg8Zo5gaA3NxcXV3dn376KScn58GDB2pqasuXL/fx8Xn9+jUW3hEEqaqqioyMVFFRAf5ob2+/ffv2b7/9trKyUktLS7Kc6dOnwz1YX1+/ZMmSZcuWHT58OCcnx9vbe+SRCJ41LVy48MGDB0AzNjY2WPPHjx8vObrhyunu7sacS0tLKysry9fXF0wL58+fP+x1xAi2BMf2rq4u+CJl7NixIDs2fPj5+bW3t8OzFyz9qlWr0tLS3N3d1dTUbt++bWVlVVBQgPMpOTk5yZnM/Pnz+/r6JMcUyaBXXl4OfNzR0TEsLEzyQuyLa76rqwsea3JycjALXLZsWVpaGnzhg/y1l2Y4JwICx8XFwbOpmpoarDeZTCas5IGBAcmgN378eODaFArFycnpxYsXxcXFdDp9NK6HXSj19fV9//33T58+JZFIo4kkI7Sdz+eD7bHZ2dldXV1KSkqSY3FlZSUmzIYNG+BhpbOzE7bnYS9zcENtb2/vCNPF6OhoOp2OmxMio5igfo18xTukEARxdXWlUCj37t0DX3Nzcy9evOjr69vb23vu3DkHB4d58+YJhcLz58/7+fmRyeTTp0+DG5X9/f0lJSUXL1709PQ8dOjQwMDApwmAoii4oZGUlJSSkrJv3z5jY+N58+YdO3aMxWLFxsZ6eHi0tbVJCiAUCrOzs9PS0t68eRMQEFBaWlpfXw/KfPXq1bNnz/z9/RMTE1NSUvbu3WtmZmZvbw+28yAIwuPxDh06ZGJiMmPGjBs3bsAypKWl3bhxw9nZ2cvL69y5cxUVFeHh4c7OznQ6/dq1a5cvX+7o6PDy8goPDy8tLYWlbWlpAbWXlpaWl5dHRUVRKJT58+f//vvv4HcjIyMbG5sVK1YwGIz3NRkUwmazr1y54uvrq6SklJOTM4J4bDY7NjZWW1tbTk4Op6Lm5mZ7e3spKanLly9fuHChqqrK398/PDw8MTERQZC8vLxbt26tWbOGx+MJBAJJmV+8eBEWFubn51dSUpKWlgaa0NnZiSlz//79VlZWtra269atAzfYh4aG6urqEhMTIyIi8vLyDA0NCwoKKisr586de/z4cawLamtro6KiUBQ1Njbes2ePvb19RUVFYmIiLGRmZqaTk5Ok7eXn51dWVi5ZsgTba21gYHDz5s2enp7FixfDdiUSiQoKCuLj44ODg4HBAFtqaWnBLPzEiRMvX75MT09fsGDB2bNnBQKBoaHhpUuXsrKy4DQzZ860sbFxcnI6cOCApHGCwaCjo4PNZltZWaEo2tLSIiUl9c0337S2tg5baWFhIbiJBKZHUVFRVCp1wYIFJ0+exKzofWDdevXq1cuXL5eXl2/ZsiU6OjolJQV40x9//KGrq+vp6ZmYmCgUCuH0UVFRYrE4MDAwOTn5+fPnoHdcXV1PnDiBtYvD4fT09MjJybm5uZ05cwbulLi4OARBent7jx07Zmtrq6enx+FwuFxubm4uzuOOHz9uY2OjoaFx584dTPLXr19nZGRs2rQpPj7+0aNHw3p6R0fHhQsXfH19+Xz+/fv3cWkwT7x79y4wDzqdnpSUtG3bNgaDcf369efPn8NGK6kf5P8f4i5duuTu7u7m5ubo6Aj+xdnw+PHjgX+Zm5vDYaS0tPTOnTszZ84sLy8PCwvz9vYODQ0tKSmB08jJyQF/v3fvHiZGYmIiKNDe3h7USKPRdHR0/v3vf/v4+OC2WPf09KSlpcXGxt65c0dPT6+wsLCysnLRokXBwcFYp8TExHwpb6qoqFBQUNDV1RUKhXV1dRYWFiYmJsBIcJXGxcUVFxdjNlxeXn779u25c+dKS0tj8bm3txeOVNHR0bhAPYKt4kLWixcvkpKSqqurb926lZKS8vLly7q6Otjk/r/2/jvMivLgH//PFtiFpQoICEZApYqgKEUFpdoDSuxgQY2aJ0aTGHtBUVSuBI0NzSMqKlHEghJFBFQQCyoa6tL7Ll0WWHZh2T38/pjf51zne3ZBNHqreV6vP7xAptxzt5nzPjNzZsyYkTgjlJSUlJ9716xZs3379oMPPrhJkyaNGjX64osvtmzZMn/+/B49elQ4yho2bLhnz55ly5Yluu7BBx+cnZ29ePHirVu3Rh8kotvH2rRpM3/+/KKiokSTRWPn4YcfTh5un3zySfLBRqfLgoKC5KH0xRdfpLROYiyMHz++wnl+3rx5if7/9NNPP/HEE4ldfPzxx8lLPvHEE5s3b+7Xr9+qVasStxolqiU3N3dv24mKmnzGHDlyZMq08NVXX5WfRdetW5fcK15//fXyk88555zz4osvJkbHuHHjkiskKmT16tWj3ltUVJQ8i0ZfpHfr1q1Tp07Rp8rEWfK5554rf8Gw/2fVxYsXV3jhUVpamlhl0qRJyYN948aNsVjsySefTK7k8mfV5OuHFStWRAe4cePG5IoaMWJE8qyVqKiXX3550aJFV1xxxdtvv/36668nF+zLL79MjIUtW7ZE086HH36YqPCUOXnr1q3lrzpSBuy8efOSq6v85BmdPVPGYCwW69Onz/r164899thrrrnmoIMOatSoUfI8PHHixOTzXatWraLm+9///d+UZVLmtEmTJsXj8by8vAsvvHD8+PGTJk1K2WzKvNq9e/cqVar85je/KSkpqVu3bjwer1mzZvXq1TMyMlJu1mjXrt3FF19cUlLy9ttvH3nkkRs3bqxTp056enqDBg22bNly1llndezYceXKlbNnz44+1yX+2qZNm5SJIrmE48aNS67kJUuWJF9zpkwO06dPj67EUq5p93aRmaxt27b5+fk7d+6cOnXqjTfeeO21144YMeK0006bNm1a+WvjCsddSqOsWrWqwtlmypQpeytYhWfnunXr7ue1QaRy5cq7du0qKyvbvn376tWro3PrRRdd9Pe//z1xC2dRUdHTTz/dv3//6JNtz549J06c2KtXr507dyai8+TtrFmzpl+/fokma926dfRtRHp6+oEHHpifn7/vM1HKVdP06dOjmmnfvn3y4b/++uvlqzqWdLX2+OOPJw+ueDz+4Ycfrly5ctq0acuWLauwiffRl6Ib0BLtsn79+uQPKYmGTpw+xowZk3L1klj+hRdeWLdu3dSpU1etWhVFLeXH1Pnnn1/+Smby5Mkp01203/KTXjRFn3TSSbfffnvKB7EfqeZTLnSTe+Czzz6b/MEnWj7kR7PkQZQocMrVVHJrplRyhZPecccdF4vFqlatOnbs2B07drzxxhvFxcXfaehFq7dq1WrBggV79uzZn5lkH8e+e/fu1157raio6NVXX121alX5c3FBQUFyYVJOK+vWrUv50F3+Mj65WkpLS/d9ubh8+fLy14TfeoH6C/VLDdIiWVlZ11133c0333zCCSfEYrH58+d36dKlffv2NWrUGDx4cPPmzdPS0ubPn79gwYIhQ4bs3r27Xr16xcXFOTk52dnZTz755AEHHLBjx46rr756/vz5Rx111PcoQHp6eu/evdu0aXPooYeuWbNmzpw5BQUFmZmZhYWFW7ZsOfTQQ9u3bz969OjyBYhWb9OmzciRI6+88sozzjgj+s4k2maPHj1atWrVtGnTVatWVa5cuU+fPlWrVh03btzSpUsbNWq0adOmeDzeu3fvAw444LTTThs+fHiiDCUlJWedddZrr722YsWKrVu3lpaWtmzZslOnTgUFBdOmTVuzZs2VV17ZoUOHXr16bd++Pbm00XkucVy1a9fu2bNn9erVE9FJWlpaWlpaenr6Pg452sgBBxzQvHnza6655thjj7322muXLl26t+Lt3r27Vq1aXbp0+fTTT5OraNeuXa1btz7uuOOKioomT56cl5d31VVXHXHEEaeeeurcuXP37NmzcOHCo48+un379v369UtcSiaXed68eR06dGjXrt3ZZ5+duDNz7dq1yZW5evXq6KASR71mzZoZM2ZUrVp1yJAhHTt2/Pzzzzt37pyRkZGdnZ1Ya/ny5bVr1+7Vq1dBQcERRxzRqVOn6dOnR29mSRRy1qxZhx56aPm+d8ghh3Tu3DnxPp2ZM2c+/fTTzzzzzGOPPXbdddcdf/zxAwcOjP6ptLQ0Nze3sLDwwAMPfPTRR/Py8qK+9Oyzzyb38Bo1avTs2fPII488/PDDu3Xrtnnz5hkzZuTm5iYvs2PHjrS0tM2bN1fYOaMoPSMjIy0trbS0tKSk5Pnnn585c+bmzZvvvffeCnea8oqZhg0bnn766Y0bN37xxRdXrFiR3IvKSzTrlClTFi1atG7duoULF27btm316tVRz+/atet9991Xv379yy67LDMzM7H8Bx980KdPn1GjRt19991LliwpLi5OT0/v3Llzdnb2vHnztm3bFh3Xxo0bDzjggD59+tSoUSP6BJ7cKBkZGVu3bs3IyOjevXtRUVHiruDkERf1iu7du+/atWvq1KmJkleqVKlv374tW7bs1q1b9B1O+cp89dVX27Vrd9RRR3Xo0GHJkiVPPPFE8jKJkfjxxx+np6enpaUddthhHTt2HDZs2NKlS48++ujkTvvuu+/OmDEjpX5i5aa46GG9vfXhFi1ajB07tkuXLrt27Uru+WvWrGnRokWXLl0+//zzevXqtW7dunr16vn5+cnLLFu2LC0tbc+ePcnFWLNmTTRgE5PVP/7xj127dg0dOvSll1568803b7nllsSXh9u3b585c2ZOTs6pp5562mmnPfbYY507dz7ooIOWLl2aPJxr1ar1g4ymzMzMsrKyKMt++OGH58+f36FDhzp16pTfadQTkrtlx44dO3fuXK9evaFDh27fvr1mzZo5OTnJM9Vhhx02duzY5Il6H301ZcpauHBhlSpVpk2b1rZt29WrV+/cufPYY49dsGBBosulPJBbfu7dvHlzZmZm1apVMzIyevfuPWXKlOzs7Dp16jRr1mz58uXlR1lmZma1atUSD3Tk5+dHXztPnjx5/vz5DzzwwMKFC99+++0jjjiiWrVqu3fvLiwsjN6Vkxg7VatWTR5uu3btSj7YSpUqxWKx9evXJw+llNaZN29eYixs3bp16tSp5ef5Ro0aJff/bt263X///dEuFi1alFiyTp06e/bsueqqq4499tju3bsn3qGTqJaUcZS8naioyWfMXr16/e53v0vuDFWqVCk/i6b0igEDBrzxxhspk08UDiZGR25ubvm5JeoqUe9NHrlbt2494IADon+KTqyJs2Rubm75C4b9P6uWlpZWeOHRrFmzxCorVqxIHux5eXnxeHzJkiWDBg1KqeREb8zKylq4cGHi+iF5zklU1L333rtw4cJvvvkm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kSPz8vL69OmTXNrTTjtt30cX/Uraww8/3K5du+iNDOUPOdpIVlbWtGnTnnjiibS0tMsvvzz5O/yU4iWion1UUXp6+qWXXjp48OCnnnqqQYMGN9xww9y5c0866aT333//zDPP3LZt24knnli+tD179pw0aVK/fv2Ki4sTLzY6+OCDkyvz8MMP3/chV7hWhV0lpZBDhgxZvHjxI488UmHfSzj++ONffvnlc889t7i4uHfv3i+88EK7du32/RNXvXr1mjp1aqKHz5w5s8Jlpk+fnlimfv36BQUFr7322qmnnlq+c0YyMjKuu+6622+//Ywzzog+dZx//vl722l2dvadd945ceLEwsLC9PT0wsLCW2+9NS0t7dRTTz300EMffPDB1q1bn3nmmfuu1bS0tEsvvfSOO+544YUXqlevft9990XVWFBQcMUVV2RlZbVr1y45y0hLS2vbtu0bb7zx+eef5+fnJ77Qjr4aTRxX165d99Eoo0aNiu7HGTRoUPJHhWR169bt1q3bJZdckpOTk3zrSjwef/311ydPntywYcMhQ4bUqVOnfGV269Zt8uTJ/fr1q1Klyh133FGzZs3EMr17907ey0EHHfTII49ccskl+fn5N910U0lJSY0aNbp37z5lypREpy1fP+XbYt/v3E1I6cNNmzadPn16yjINGzZMXqZNmzYHHnjgI488cu211z788MNRMW666abkVTIyMvr373/XXXeNGTMm+kXIf/3rX4lX0lQoIyMjuVFuuummefPmpSzz/UZTNDncfffd1atXLy4uTktLu+WWW6JvXFN2OmTIkFWrViX6cPv27XNzcwcMGFBWVnbLLbdEAW6tWrWSZ6qysrKUiXoffbV8+fPy8p577rmjjjoqNzc3Ly8v8ZqM/dS4ceN4PL558+bod5datmz57rvvduzYcW/Lb9u2bceOHYnfnG3ZsuVHH300c+bMypUrd+3atWrVqgcddNDLL7/88ccfH3jggXXr1k35iBsrN9yiuTpxsNF34IkOEw2llDm8e/fu77//fjQW/vSnP0WPTaUsc/jhhz///POJ/r9ly5bELvr27Tt//vzEkhdffPEdd9zxv//7v+vXr4/uI0iulkMPPTR5HCVvJ1HU5DPmqaeemtw6e/sBh0SvuOmmm2bPnl1+8okaOjFIhwwZUuHcEg32W2+9taioKDFyo686a9SoUVBQ8Pjjjyd/TXXEEUfMmDEjpZ/v/1k1cdLfx1k15bqiSZMmM2bMGDhwYPlKTki5fjjllFPKV9Qtt9ySk5NTftZKT0+/6KKL7rjjjlGjRjVv3vz666//61//WmHBosuMRx55pHPnzokKz8rKSp6TU+b86KojZcBGr4tKVFe08W89e6anp1922WW33nprz54909PTO3To0Lt378MOOyxxRLfcckvy+e7II48sKCgYMWLExRdffNdddyWWqbA7paenv/XWW1OmTGncuHF0o1lisynzanp6eqtWre6///4GDRoUFxc/+OCDdevW/fOf/5yZmdmjR48DDzzw/vvvP/LII08//fRYLPbWW2+NHz++ZcuWEyZM6NKlyx//+MdYLBY91HPrrbcOHz584cKF99xzT3p6+v/8z/+MHTs28dc//OEPXbp0SZ4okks4ePDg2rVrJ1dyYgT179+/du3aidbZvXt3hw4drrvuutq1a+/Zsyf5mrZnz55VqlQpf5EZj8dffvnlTz/9tLS0tFWrVvfcc8+7774b/VP9+vWvuuqqJ5544rbbbvvrX/9a4bVxyrhLaZTEDwSn9P+srKy77rqrwoJVeHYuf6PB3q4NIllZWaNGjXr55Ze3bds2ePDgtLS0W2+9dfLkycXFxX/729+iZc4999xzzz133bp1N99880UXXZSbm/vggw+OHTt28+bNDz74YPnt3H777ckt+Ic//OHMM8+85ZZbJk6cmJWVFb1NZv+vmgoLC6P/nzKCDj/88ETNVPgxJPoh8sTgKi4ujl57165du8MPP7zCzxH76Eu/+93vvvzyy72dxyMpl1LVq1ff29VL9erV27VrN3ny5LZt21atWrX8mEpMKclXMvfdd9++p7uEaIoeN25cjx49Uj6I/Rg1v7cL3Ujbtm0/+eSTlA8+IT+aJQ+iRFfp2rVr8tVUciWkVHLysE2Z9KJGf/bZZ//85z+X7xJ7G3qFhYU33XRTzZo1S0tLzz///C5duqxcuTL6p/2ZSSo89uLi4hNPPHH06NEnnnhi06ZNy59DDz744OTClP98lFwDFX7MKV8t+7hcTP6WN+FbL1B/qfb8/Fx33XW/+tWvAuxo06ZN69evD7Cjn4nx48fPnTu3uLj4mmuu+fjjj3/q4vyI5s2b9+abb5aVlT3zzDMPPvjgT12cvYq+bd61a9eePXui//60tmzZkp+fX1ZWtp/Lb9u2bdCgQYsXL/5RSxXStm3bXnzxxYKCgvnz51966aWJ//+3v/3t+eef/1F3/UvptCmi3+jds2dPWVlZaWnpT1uY6Ea2LVu27P8qn3/++TXXXPOTl3wfoquNd955Zz+X//jjj++6667du3dHf920adO1116bn59ffrMPPfTQW2+99UOWNaDvWi3fyc+/V4RX4fVDgIra25wcXsjzXXFx8dq1axPn4k2bNkV3GezZs+df//rX1KlT97ZiWVnZmjVrCgsLv3UXKRPFL1SwRvnWfrh79+68vLydO3dGf925c+eqVav2fV1XWFi4YsWKlGVStpOiuLh4zZo1pib+y8ybN+9//ud/ogflUvx8TgE/t8J8V0cfffSAAQN+6lLs1S/+Dqn/xC/6Ycvv4YADDrj77rtLS0uPOeaYo48++qcuzo+obt26I0aMiH4HIXp08ecpIyMjkX//HH68vFatWt/62F2yjIyMpk2bJv+IzC9d1apVt27dGj0+mfhqPRaLNWzY8DvVzPfwS+m0KXJycqKX4v0nDz7/UNLT0/f9FrPyqlWr1qRJkx+nOD+M9PT0c88994033ujRo8e3jrWysrLZs2efd955iQf66tSpc+qpp37xxRcp3wNHX8bs7c3oP3/fqVq+q59/rwivwuuHABW1tzk5vJDnu+zs7OSpLPli9YQTTojellKh9PT06Pfa9q38RPELFaxRvrUfZmZmJt/9mpWVlfx7iBVKnD33sZ0U2dnZ+9O+8Avy73//e8iQIb/73e8qnNl+PqeAn1th/sv8/x89/Vm5/vrr33jjjcStdwAAAAB8Jx06dGjduvULL7zwUxekYj/9d9r/fdavXz9t2rRp06Z9/fXXiWdx/xNlZWULFizY/03t3Llz9uzZmzdvTv4/iR/qShaPxxcuXDh37tzS0tLo/yxfvjz6RZVYLFZUVPT1118n3raY8tcKN7X/B5WisLBwyZIl33v1/bF69epXXnllwoQJiSe6f6jNJn7ke39s2LBh9uzZiTd9JFd4ipQK37Jly+zZsxO/0b5+/fovv/xy69atsYraEQAAAH7Oftk36/48TZw48bnnnjvuuOPWr1+/fPnyv//9723atPlPNlhYWPjAAw/cfvvthx122LcuvG7duuuvv75hw4ZLly79y1/+0rVr1127dg0ZMqS4uHj48OHJS5aWlg4ZMmT58uVZWVmZmZl//etf//nPf77//vsZGRlt27a98MIL//SnPx188MFLly49++yze/fufd111yX+eskll6Tsd/fu3R9//HGLFi2+3zFu2rTp008/3Z8D/H5mzJhx99139+jRY926dc8999yIESPKv8o3Ye3atX/9619vv/322rVrf+uWX3rppYYNGw4cOHB/ijFlypSHH3740EMP3bRp00MPPTRu3LhEhd9www3JvxqWn5+fXOHt27e/++67GzVqtGXLluHDh3/11VePPfZYmzZt5s6de//997/22mvJ7Vj+JnAAAAD4WRFIfTc7duwYM2bM3Llze/XqdfLJJ0+dOnXZsmW5ublt27a94IILoufY09LSunbtetddd6Wnp48cOXLkyJH33nvvq6+++tVXX/Xs2fO0007btWvXP//5zzlz5pxyyiknn3zyZ5999vrrrzdu3PjSSy/96quvoltmjjnmmJKSknnz5g0cOPCggw4qLS0dM2ZMUVHRueee265du08++SSxyhdffDFr1qy0tLTf/va30S9MDRgw4LTTTnv88cdnzZrVqVOnoUOHrlixovxv7hYWFtatW/cPf/hDLBa79tprFyxY8Mknn9x33305OTk33XTT/PnzzzzzzAEDBkybNu3ll19u27Zt8l8HDBiQkZHxzjvvVK9evWvXrh9//HH0Y39FRUWjR4+ePXt2t27dzjrrrOj1BGVlZRMmTJg4cWKdOnUuv/zy6Ln6oqKif/7zn6effvqBBx44evToX/3qV7FYbOXKlc8880xxcfGFF16Y+L2G3NzcF198sbCwsH///sccc0z57e9PoyxcuLBNmzbXX399LBZ79dVXox+SePbZZwsLCy+++OIqVaq8++67a9eurVat2uWXX/7uu+++/fbbrVu3Pvnkk0eNGhUt06xZs5dffrmoqGjlypWnn3769OnTs7OzBw0aFIvFZs2aNXfu3I4dO/bt23fDhg2JzTZt2vTFF19cv35969atzzrrrFgslp6ePnTo0GbNmv3+97+fP39+coXn5+cnv3Fg48aNiQp/6aWXVq1adc4555x33nmDBw+ePn36rl277rzzzmOOOeaee+757LPPkttx3bp1iR+aAQAAgJ8nj+x9B/F4/LHHHlu6dOmgQYNeeumlt99++6uvvvroo48GDRo0ceLEGTNmlF+lbdu2+fn5jz322KJFi66++uo333xz8uTJI0eOXLRo0RVXXPH222+//vrrjz766MUXX5yenj58+PAvv/zyww8//PWvf/3www8XFxc3b978iSeeKCsr27p1a7Vq1Xr06HHvvfdOmDAheZUvvvhiyZIl55xzTvRL0k2bNu3Vq9ctt9wyatSobt26Va5c+e677x44cGD5V1fWqlXr2muvrVOnztSpU7OysrKzs+PxeM2aNatXrx69bPviiy8uKSl5++23jzzyyKOPPjr5r9G9PFWrVn3ttdeKiopeffXVSpUqffzxxx988MG///3va6+9dt68eYlnzXJzc997773rrrsuOzt75MiR0eNp2dnZ69atmzp16qpVqz744IOSkpJPPvlkxIgRTZo0OfPMMydOnBg91LZjx45nnnmmZ8+effv2feSRR958882U7e9no/Tp02f9+vXHHnvsNddcc9BBB1WrVu22225r2bLlKaecMmTIkNzc3NGjR/fp06dKlSrDhw8/4YQTOnXq1KNHjzvuuCOxzOrVq8eNGxePx1u2bHnzzTd369Zt8eLFkyZNisfjeXl5F1544fjx48eNG5e82VWrVo0fP75x48bdunWLitG9e/cqVar85je/KSkpqVu3bnKFb9myJbl12rVrl6jwtm3bbtq0qUGDBunp6QceeOC6desuuOCCjh07rly5cvbs2R07dkxux/r16/9wXR4AAAB+FO6Q+g5KS0sXL1581VVXHXHEEaeeeuqsWbOqVKnSo0ePVq1aNW3adPv27RWukpaWNnPmzE2bNi1cuHDbtm0rV65cuHDhOeec07Zt28cee2zUqFELFiwYMmTI7t2769Wr16xZs549ex555JGHH354t27dNm/eHEUqDRs27Nu3b+PGjceOHfvpp58mr3LIIYd07tw5usMokp2dPWTIkKZNmz799NPDhw/fx6+oxOPxV1999ZVXXhk2bFj0I1nxeDx6z316enphYeE999xTqVKlSy+9NBaLpfw1Fou1b99+9OjRn3zyyfbt29u2bfv666+3adNm5MiRV1555RlnnLFr166bb755x44dUXoybNiwpUuXHn300R9++OGrr75ar169Ll26vPvuuyUlJa1atapZs2Z0Z9l9991Xv379yy67rFKlSrFYLCcn56yzznrttddWrFixdevWww47bOzYsdH2o9+d2c9GycjIGDFixK5duyZNmjR48ODLL798zpw5BQUFmZmZhYWFW7Zs6dixY+fOnevVqzd06NCioqK0tLTNmzcnL7Nx48batWv36tWroKDgiCOO6NSp0/Tp03fu3FmpUqWzzjqrXbt23bt3//LLL1NWqVWrVpcuXZJ/IqdZs2ajR4++4YYbpk6dmlLhKa2TqPBLLrkk8bNre/bsiZZcsGDBrbfeOnDgwPbt2ye34z5+fwcAAAB+JgRS30FGRkZOTs66detisdiaNWvq1Kmzc+fORI5Q/vcKy8rKPvjgg9atW3/zzTf9+/c/99xzp06dWqtWreXLl2/atKmsrCy6++mEE07429/+lp+fP2/evNzc3MSLhJITisLCws2bN9eoUaO4uLhBgwbJq8yZMyf53UOffvrpzJkzf/e737Vt2/bzzz8vLS3dWyAVj8efffbZ6dOnP/744/Xr19+yZUt6evqWLVtKS0vj8XjlypX/8pe/NG/e/Nprr83MzNy+ffuNN96Y+Gu0hVq1ah155JFPPvlk165do9ct7dix48YbbzzkkENuu+22+vXrn3766aWlpfPmzZsxY8bQoUMnTJgwd+7cww8/vH///lWrVj388MNff/31N99886abbkpLS9uzZ0/lypXHjBmTl5c3dOjQI488skmTJitWrBg2bNjtt9+ek5Nz++23J29/4sSJ55577v40SjweHzFiRE5Ozh//+Mf+/ft/8cUXO3fubNas2YMPPli/fv133323Ro0amzZt2rlz54YNG7Kzs6On/LKzs5OXOeigg9LS0qKqTktLS27l/Pz86D6pBg0aJK/SqFGjtLS0RGHi8fg//vGPNm3aHH/88YcddlhUzkSFp7zTKrnC09PTGzZsuGbNmng8vm7dui5dusyePfvOO++84YYbTjjhhJR23O/uDAAAAD8ZgdR3kJGRcemllw4ePPipp55q0KDBkCFDXnrppfKLxePxl19++dNPPy0tLW3VqtU999yTl5d3xx13vPDCC9WrV7/vvvsuuuiiO+64Y9SoUc2bN7/++uv/+te/9uvXLxaLXX311eVvk4ns3r178ODBZWVlZ5xxxvnnn3/PPffsbZVmzZo98cQTX3755aZNm/7nf/4nOzs7+V8/+OCDDz/8MHq/1fLlyx966KEaNWoMHDiwbt26DzzwQPfu3f/85z9nZmb26NFjxowZ48ePb9my5YQJE7p06XLooYcm//WOO+6IYqkTTzxx9OjRJ554YrT9SpUqDRs2LB6PV6lS5fjjj49eZlSjRo033njjpptuKikpqVGjRsOGDRMvS2rXrt3kyZPbtGkzf/78tLS0goKCK664Iisrq127dg0aNIjFYrVq1apXr96wYcNq1qy5Y8eOsrKyxPY7dOiwn42Snp5+2WWX3XrrrT179kxPT+/QocNvfvObzMzMq666qlKlSsccc0zv3r1zc3MHDBhQVlZ2yy231KtXr6Cg4LXXXjv11FMTy3Tt2rXCpklPT3/rrbemTJnSuHHjwYMH165dO7HK8ccfn7Jkq1at7r///gYNGhQXFz/44IN169ZNVHhaWtq111578803N2rUKBaLvfXWW8kVfvbZZ99xxx0TJ07Mysrq1KnTn//854ULF95zzz3p6ennnHNOcjsOHTp0zJgxrVu3PvPMMyssMAAAAPzk0srf1/OTu/766994442VK1f+1AX5pYrH4xs2bKhVq1ZKGhWLxZYtWzZlypTLL798b8nX5s2b4/F4vXr1fvxi/ox88cUXzz777KOPPpp8r9mPZOfOnQUFBQceeGDUBIkK37Vr18iRI88+++woiatwxc2bNzdo0CBAIQEAAPil69ChQ+vWrV944YWfuiAVc4fUf6H09PS9hRoNGjQYOHDg3tKoWCyW/Laj/zuqVavWpEmTMPvKzs5Obp1EhWdmZl500UU1a9bcx4rRzVMAAADwSyeQ+r8l+iU+UrRq1apVq1Y/bRkyMjL2kUYBAADAf5O93ikDAAAAAD8GgRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAE9csOpHJzczdv3hz9eenSpd988813Wr20tHTevHmrVq36rvudP3/+hg0bvutaFSosLFyyZEn57Y8bN66wsPDH2HiFNm/e/Nprry1btuxbl8zLy1u/fv2+/09533zzzYoVK6I/l5WVLViwYOfOnfteJR6P70/5169fP23atKlTp37++edbt279ltKHUlJSsnDhwsRff5JCxuPxr7/++p///Ocnn3xSWlr6A255f1r8B7Fly5bVq1evXr06UWk7d+5cvXr1D7Lx1atXf++j+B4j9AevtHg8vrd/Si7ezp07P/vss6lTp06fPv17zHXfab/77+cwQGKx2OrVq1999dXx48cXFBT8sFtO6SH7OZtFli5d+sorr3zyySdlZWU/bKm+k32fFFIO5zudF7Zu3Zo4HfwXS27079QBIilj5LvuOvHnfTTE9u3bk4u0fPnyLVu2fL89JvuuRwoA/F/2Cw6kSktLb7vttuuvv76oqKisrOzxxx//9NNPkxeIx+P33nvvJ598UuHqO3bs+NOf/vTwww9fd911L7744v7vd9WqVb/97W+HDx/+g3xa2LRpU0qxN2zYcOutt+bl5e3Zs+f7bTNx4OU3vrflH3rooffff39/PmrOnTt36dKlyf9nzJgx77333r7X+vjjj5999tnoz4WFhQ888MCaNWv2sfyECRMeffTRefPmfWs9T5w4cfDgwZMmTRo9enTfvn1nzZr1rYewN/vuMN/Jpk2bhg0b9hMWsrCw8Lrrrhs+fPj69euffPLJP/3pT0VFRd97pym73p8W/8/t2rXr2muv/f3vf3/TTTe988470f8ZMmTIQw899INs/6WXXvp+R/H9Rmj5gfOfiAZIhQM2pXhr1qy54YYb/vWvf7399tuDBg168sknf6T9fic/+QCJxWIvvPDClVdeuWzZso8//viCCy5YtGjR995pipQm2P/ZLB6PP/HEE3/84x9XrVo1YsSIH2TYfj/felLIzc1NPpz9Py/s2rXr9ttv/+tf//qDJJspZf6hJvD/XNToGzZs+PTTT5P/vP9bSBkj33XXierdx3Q9Z86cxHQaj8f/8Y9/fPnll99jjylS+gYAwD5k/tQF+I9Ur159yZIlr7zyysCBA6P/s2PHjjFjxsydO7dXr16NGzd+880316xZ06xZs/fee++rr77q2bPnaaedlpGREYvFvvrqq0qVKg0bNmz9+vX7DkdSTJ8+vVOnTnl5eStXrmzWrNkHH3zw5ptvNmrU6NJLL61Xr14sFluxYsW77767du3aatWqXX755Tk5OWPGjEns/f333581a1ZaWtpvf/vb6tWrR9t8//33ly1blpub26ZNm+3bt+fm5nbq1Km0tPSZZ56JjuXEE0986aWX1q9ff/jhhxcXFxcVFa1cufL000+fPn16dnb2oEGD9uzZ88ILL8yfP//YY49t3759dODXXHNNSp2cdNJJY8eO3b59+/Lly88+++zjjz8+qop33333sMMOmz59+qZNmzp27Pj66683a9bsq6++SuwxsUpU4OSjjsVis2fP/stf/tKmTZsLLrhg8+bNzz77bGFh4cUXX9yiRYt333130qRJlSpVqlKlSqIOS0tLx4wZU1RUdO65527YsCEjI6NHjx6ff/75hg0bzjjjjO3bt7/22msLFiyoU6fON998c//998fj8SuuuKJOnTrJNRm1Y1paWteuXe+6665YLHbnnXfOmDFjw4YNUQ2ffPLJr7/++u7duy+66KKmTZu+/PLL5estMzOzfIdp1apVbm7u66+/3rhx40svvfSLL75IbrKysrIJEyZMnDixTp06l19++eLFi6O2a9u27QUXXLBy5crnnnuuUqVKybeApRRy+vTpX3zxxfr161u3bn3UUUc9//zzUSGzs7Pfe++9TZs2VapU6dhjj50wYcLxxx9/xhlnrFq1KrFMWVlZ+V7do0ePqHu0bt36rLPOisVi77zzTklJydNPP52VlVVYWPjiiy9u3Lhx0qRJ5XdaqVKlTz755KKLLpozZ87y5curV6++dOnSBQsWHH/88f369YsqOZKbmxvtunHjxntr8aysrLfeequgoOC8887bsmVLog5r1aoVi8VSqm737t37WHjLli3Z2dkPPvhgw4YN09PTS0pKhg4dumLFisaNGyeKtGLFigprbPfu3Ymu0rNnz7Fjx5Zv+lgsNmvWrLlz53bs2LFv375lZWWJVZLrs1atWskDPB6Pv/rqq9EIXbt27UMPPRRVY5MmTV588cX169fXrVs3LS2tfJFisVhJScmoUaMSQ6ldu3bPPffcunXrfvWrX3Xq1Kldu3blZ4/09PTEuL7wwgs/+uijWbNm7dq1a+HChcuWLevWrdtRRx0VrRU16AUXXPDhhx9GxcvKyopqqXHjxjfffHOdOnWmTJkyatSogw8+ODc3Ny0t7aKLLnrnnXeSZ4Z9D5DjjjsuGpjdunUrLi7ezwFSVlY2ceLE6B6NK664orCw8AcfIMXFxd867adMvCtWrHjttdceeeSR5s2bx2KxcePGbdy4ceXKldEyyTXTtWvXMWPG/PrXv65UqdIbb7zRo0eP5AY64IADYrFYPB6fNm3av/71r6ZNm1544YWJHpKVlfWdZrOFCxdOmjTp8ccfP/jgg7dv3/7cc8998803n3/+ebTlAQMGbNmypXwN9O7de8yYMVu3bs3LyxswYMCRRx6Zm5v74osvFhYW9u/f/1e/+lWi/gcOHDhlypSTTz65UaNGY8aMOfroo1u0aJE8mhJVXVhYGJ0UsrKy4vH4G2+8cdhhh9WvX3/06NGXXXbZokWLPv/88+TDibawcuXKZ599trS09OKLL045LyR64/jx41etWhVVe2TKlCnJc06ipX6kCTwej7/33nuTJk1q0aJFnTp1atSoUb7RTz755HfffbdOnTrR2bBGjRrLli1LafRYLJafn5+Y+qpUqZKo5/PPPz9q9MMOO6y4uDjx51gstmvXruR2X7NmzTPPPFNcXHzhhRe2b98+2uyiRYsSYyS5aw0YMKBmzZrRRl5++eXETNKlS5fEMn379k0M0mhySG6I8847b8aMGYmtRf8a9bT8/Py8vLxEoxQUFCTPPJ988kniNNelS5fp06cPHDhw+/bt48aNu/zyy6OmTxxILBZL7htVq1ZNbOrss89+9dVXo6HdqVOnRO0dcsgho0ePnj17drdu3c4666zMzF/2pSkAsP9+wXdIxWKxSpUqXXPNNePGjVuwYEEsFovH44899tjSpUsHDRr00ksvLV26tFOnThdccMErr7yyaNGiq6+++s0335w8eXK07urVq7/88stBgwb99re/LS4u3s897ty5c+rUqf369WvRosXkyZPXrl37j3/8Y8CAAbVr1058Mbtx48bRo0f36dOnSpUqw4cPHzFiRPLeZ86cuWTJknPOOadq1arRwp9++ulXX3310UcfDRo0aNKkSQ0bNuzcufMll1zyj3/8I3Esb7311vjx4xs3btyxY8dx48bF4/GWLVvefPPN3bp1W7x48aRJk8aNG1dWVnbDDTdMmjRpy5Yt0YGXlJR88sknyXXy1ltvjRs3LiMj47TTTvv73/8eFbh9+/YnnnjipZdeum7duuhb7pkzZ65atSp5j4lV5s2bN3PmzOSjjsfja9euvfjii997773JkyffdtttLVu2POWUU4YMGfLOO++88MILl1xyyfbt25MreevWrdWqVevRo8e9995bXFw8duzYHTt2vPHGG9GHlurVq/fo0eOUU045/PDD8/Pzu3XrlpWV9b//+79PPfVU+Xbcs2fPypUrJ06cOGbMmBkzZjRv3jyq4T59+tx7771t2rTp1q3brbfeumLFivL1NnHixAo7zJIlSx599NGLL744PT19+PDhX3zxRXKT5ebmvvfee9ddd112dvbIkSO//PLLqO0mTpw4efLkIUOGdO7cuVmzZslPSaQU8pBDDonq9sgjj7z11lsThZw3b94///nP448/ftGiRS+++GK/fv1GjRo1d+7c5GWqVatWvldPnDgx2mC3bt1i/+9hvWOPPTYrK2vr1q0bN2485ZRTsrOzK9zp3LlzP/vssz179qxaterrr7/++uuvp06d+tvf/nbChAkp36u3aNEi2nV2dvbeWjw3N3f8+PFnnHHGpk2bkusw+ro+perWrVu3j4XXrVv373//+49//GOfPn3+9a9/Va5c+e677x44cGDyZ5WNGzeWr7HVq1cnd5WJEydWOGTi8XheXt6FF144fvz4SZMmpawS1VXz5s1TBnh6evrpp5/euXPns846a/DgwYlqXL58ebRKs2bNKizSvHnzFi1alDyUnnrqqW+++aZv374vvfRS4gmmlNnj9ddfT4zrzz77LOrbAwcO7NOnzymnnBJlWFu2bEk06O23396hQ4fOnTtfdtlllStXjra5bdu2Dz74YPz48f/85z+bNWs2a9asJUuW9O/f/9lnn02ZGfY9QKZNmxYNzJKSkv0fIOvXr3/ppZd69uxZuXLlRx999AcfICtXrtyfaT9l4l28eHHNmjWbNGlSUlKycuXKdu3atWrVKlompWbGjx8/ffr0aAb7+OOPUxoo6quffvrp448/PmDAgB07dtx///2nnHJKogm+02y2YsWKOnXqHHTQQdE0eO21165cuTKx5fvuu2/dunXla2DZsmXjxo3LzMz89a9/PXTo0GXLlj3zzDM9e/bs27fvI488snjx4kT9jxo1atOmTZMnT87Ly5s8eXKU/EaSe9Gtt95ar1696KRw8MEHp6en79y5c8qUKTNnznz++efnz58/YcKE9PT05MOZN2/e3Llz77rrrlatWh133HHPPPNM8nnhs88+i/ayYMGCadOmnX/++clJd8qc82NP4J9//vmLL7548cUXz50794MPPqiw0d9+++05c+YkzoaLFi0q3+hbt25NmfoS9fzyyy9HjV63bt1///vfiT9/+umnye3+3nvvjRgxokmTJmeeeebEiRN37doVi8UKCgqSx0hy17rvvvui245KSkqSZ5LkZR555JGTTjopMTlEp4NEQ4wcObL81p588snNmzf369dv1apVifuqkq8oPvvss8QlysSJE5csWfLRRx8tXbp0+vTp0QPU8Xg8+UBKSkqS+0bypqZPnx4N7fbt2yfX3uuvv/7vf//72muv/X5vUQAAfrl+8V9DNW3atH///g8//HClSpXKysoWL1581VVXHXHEEaeeeurs2bNjsdiePXtmzJixbt26hQsXbtu2LfECmrKysqZNm/7jH//44osvnn322a5duya+wt2H3Nzczz//vKSkZPPmzaWlpf369WvevPk111xz7LHHXnvttYnFOnbs2Llz53r16t17770LFy785ptvEntPT0/v3Lnzr371q+TNpqen9+jRo1WrVk2bNi0qKkpLS0s5lrlz59asWbNLly516tSpXbt2r169CgoKjjjiiE6dOk2fPn3nzp19+vQZNWrU3XffvWTJkuLi4rS0tPT09FgsFo/HU7ZTq1atnj17Vq9ePbo6j8Vi0cLJnxAitWrVSuwxeZWcnJzko166dGnv3r3btGlz6KGHrlmzZs6cOQUFBZmZmYWFhV9//fXRRx/dvn37fv36zZgxI7Hlhg0b9u3bt3HjxmPHjq1Wrdru3bunT5++cePGo48+OlEhaWlpsVisdevWxx13XFFR0ZQpUxYtWlS+HWOx2Jo1a2bMmFG1atUhQ4Z07Njx888/79y5c0ZGRnZ2dp8+fapWrTpu3Ljly5eXr7eioqLyHSY9PX3+/PkLFiwYMmTI7t2769Wrd8ghhyQ32WGHHdaxY8dhw4YtXbr06KOPjpK1qO3WrFmTkZHRvXv3oqKilKczkgvZokWLsWPHdunSZdeuXZUrV04Ucs2aNS1atOjSpcvnn39er1691q1bV69ePT8/P3mZZcuWpaWlpfTqNWvWJBor2l2lSpV2794di8WmT5/+2muvzZ49+9Zbb42WSdlp8rfi0Yp9+/Zt2bJlt27d5syZc+qppyb+KS0tLeoq6enpe2vxLVu2HHrooe3btx89enRyHRYXF+fk5KRUXSwW28fCrVq1mjBhQr169aKPW927d8/JySk/JMvX2K5du5IrJy8vr8IhU6lSpbPOOqtdu3bdu3efM2fOrFmzytfnIYccUn6AR51zw4YNydW4fPnyaJWtW7eWL1LiHV6JoZSVlbVw4cIrr7yyQ4cOvXr1inp7yuwxdOjQAQMGvPHGG4lxnZg9MjMzE6usXbs2uSSrV6+OWiqxwe3bt8+cOTMnJ+fUU0897bTTHnvssc6dOx900EFLly5NmRn2PUBmzZp16KGHpqWlfacBEovFWrZs2alTp4KCgrfeeusHHyA7d+7cn2k/ZeLNzMwsKyuLx+P5+fkPP/zw/PnzO3ToUKdOnQprJuXZzOQG2r59e82aNefPn9+lS5f27dvXqFFj8ODBO3bsSG6C/Z/NsrOz9+zZU1ZWFs3GBQUFc+fOTd5yYWFhhb2rYcOGp59+euPGjV988cUNGzacddZZr7322ooVK7Zu3VpaWpqo/48//vi000579tlns7KymjZtGt3SW2EvWrZsWfJJ4eijj3788cdLSkq6dOny2Wefbdy4sXPnzonD+eCDD6pXr15YWBiPx3v37n3AAQecdtppw4cPT8wS0XvBioqKHn300aOPPnrLli0bN27cuHFj/fr1y885UUv9eBP4vHnzOnTo0K5du7PPPvu9996LdpfS6LNmzUo5IZZv9I0bN6ZMfcn1nGj05A4Qj8dTpqauXbved9999evXv+yyyypVqhSLxdavX588RlK61tatW6P7s5JPyinLNG/ePHn4J0/Xubm5KR01Ho8vWbJk0KBBxx57bPfu3aPLhlgslnJFkXyJEovF2rdvP23atCVLlpx++unRLpIPJDMzM7lvJG9q586d0TxZVlaWXHt16tRZu3btlVdeecYZZyTOYgDA/wW/+EAqLS2tf//+H3/88fvvv3/KKafk5OSsW7cuFoutWbOmTp060SvP69ev37dv33PPPXfq1KmJm+0bNWoUPUSWnp6e/Olu3957771zzjnn/PPP37Vr11133fXJJ5907Njxj3/840svvfTII4+MGDEiWmzTpk07d+7csGFDlSpVatWqdc455yT2PmHChPLRT1SM6A/Rh5+MjIzkYznggAPy8vKiZdLS0hJPq0WrRO/OOOqoox599NE///nP8Xg8yiyiZVK2s3bt2sS+UmRmZhYXF5eWlm7cuDHaSGKPyauUlJQkH/Xhhx+e+NfKlSs3a9bswQcfrF+//rvvvltUVDRnzpyysrJNmzaVlJQktlBYWLh58+YaNWoUFxc3atTomGOOGTly5LHHHlu7du3y1RIdZlpaWoXtmJaWdvzxx995553JJYxqb9euXdu2bYvH49u2batZs2b5ektPTy/fYfbs2VOrVq0TTjjhb3/7W35+/rx58+bMmZPcZG+99daHH344dOjQCRMmzJ07N7ntsrOzS0tLt23bVlxcvG3btsQqKYXcunVrVKUphaxevXpGRka0TGKbVatWTV6mVq1aUfmTa6NSpUpfffVVYpX09PTjjjvu2WefPe+8804//fSTTz7597//faIdU3Zao0aNkpKSsrKyzZs3R39Yu3ZtdPdQgwYNUpoj0a/21uI5OTkZGRlpaWkpdRiNtfJVt4+FZ82aNWvWrMsvvzwtLW0fI7R8jaV0laysrK+//jql6WOxWFlZWX5+fnSkDRs2rLA+i4qKKhzg5dsl6mBRGcoXKbkCE2MqJydn48aNpaWl+fn5RxxxRGKZxOxRuXLlhx566JhjjkmM62jjKdss36ApCzRq1OiGG25I/piXkZFRfoZZu3bttw6QqPDfY4BE26xUqdKOHTt+2AGSciB7m/ZTJt5WrVoVFhZ+9dVXxx133COPPPLiiy/m5uZWWDN169bNy8srKSkpLS2NgpVEA2VnZ2dnZ8disdq1ay9ZsqSsrGzDhg2ZmZl7+27jW2ezFi1aFBQULFy4sG3btmvXrr366quPO+64b775JnnLFfauKBCpWbNmcXHxjh07Hn300dtvvz0nJ+f2229P3u+ePXvatGkTi8XeeOON66+/PnkLKVWdfPNULBY75JBDdu/e/fXXX1988cV///vfjznmmNq1aydnLlHjlpWVbd++fefOnc8//3zlypVT+v/u3bsbN2789ddfR0+H5ebmRoFUypyzcePGH3UCr1Wr1tKlS8vKytatWxc9N1q+0evUqVNUVJQ4GzZs2LB8o1epUiV56qtRo0ZyPVfYAVLavVatWhs2bBgzZkxeXt7QoUOPPPLIJk2aVKtWLfkkktK1ol3H/r8n5ZRlomArpeNFf6hWrdr69esTS1auXDktLa1GjRrr168vLS3dsGFDNMmUlZWlXFHE/r+XKN27d7/33ntr1KgR3YcVj8crV66cOJDoWeNEBlf+4iQ9PT2l9mrWrHnjjTcecsght91228SJE88999wKKxAA+O/zy35kL1K1atXrr7++WrVq6enpl1566dNPP33GGWcsWrTorLPOOvDAAx955JEzzzxz9OjRZ5555lNPPVWtWrVorY4dO2ZmZl588cX33ntv3759E4+37MPmzZtnzpx5xhlnNGvWrFWrVieffPLEiRM//PDDiy666O233+7Tp09iydzc3AEDBgwbNuzSSy+94ooryu/9W2VkZCQfS/QOmn1o27btG2+8ccMNN+Tn5xcWFh544IEPP/zw5s2bU+rkzDPP3MdGunbtOnbs2IsuuigRflUoMzNz2rRp5Y86FovVrl379NNPv+qqq84555xZs2b17t17586dZ5555ogRI5Kv0Xfv3j148OABAwZ06tTpsMMO69at28qVK7t165bY6UEHHfT2229//fXXiVXS0tIuvfTS/a/Jgw8+uFevXoMGDbrggguOOuqoli1bll+mwg7z8MMPt27dOiMjo1+/fr/73e/KyspSquLQQw/Nz8+/6aab3nvvvcLCwuTjir7DHzRo0O9///v9+c3HlEJGXz6naNiwYfIybdq0Kd+ry9861KtXr+OPP/43v/nN+eef37t374yMjOiDaPmdnnzyyaWlpb/5zW/GjRtXuXLleDw+duzYvn37Ll++/LTTTrv//vvffvvtaMW0tLSofrZv3558yMktnvi8dNJJJ5Wvw5SqSzweUuHCv/rVrz744INBgwbdc889icdt9kfUrPuonMRib731Vt++fVevXn3GGWdUuEpWVtbeunqjRo2+tYPtu5ADBgx4/PHHL7jggpkzZyb3scTscckll7Rv3z4xrpOrPRog06ZNi5Vr0MMPP3x/CpAyw1Q4M5QfINF+K1WqtP8DJPnd1dWqVfvBB0jKgex72k9o0KDBDTfccPfdd//mN785/fTTX3755dNOO63CDZ533nkdOnS47rrr7rzzzmiwJzdQlD316tWrqKjozDPPvO+++y655JLk9+XFvstsdtBBB11yySVXX331eeedd95553Xv3v2KK65I3nJifKUoLCy89dZbL7roomOOOaZ9+/b16tUbNmzY8OHDd+zYET0IlpCTk9OhQ4cdO3YcccQRH3zwwV133RU1UEpVt27dOnmtqlWrtmjRIjMzs0OHDmVlZUcddVSFd9SefPLJV1111dVXX92oUaPyhaxZs+Ytt9zy2GOPXXnlld27d4+eL47FYslzTuJM9+NN4D179vzmm2/69ev39NNPJ/5n+V6UcjYs3+jRXWnlp75EUyYaPfHnlHavUaNGQUHBFVdcMXTo0Hbt2kVfACQm/GiMpHStCqfBlGWaNm2amBxStGvXLqU7paWlDRw4cOTIkf379//iiy+ixdLS0pKvKJJnnkiLFi0yMjKaN28efYeUnp6efCDJ2XfKphK/O5lSe9WrVx82bNg111xTXFx81FFHPfjgg+PHjy9ffgDgv0/a9/4ptx/P9ddf/8Ybb6xcufLH3lE8Hl+/fn21atUSLxf/QUTPAD766KMV3glFefPnz3/iiSceeOCB/Q/s2B+7du3asGHDgQceuD+Po0aGDx9er169xK8EvP3229WrV098dAysrKxs/fr1NWvW3Fuo9IsWvVr40EMP/dOf/jRgwIDjjjsuZvYIKx6PR/e8pNwQtA8BGmjXrl1r166tW7fufs6H27dvv/7662+55Zbotdnf6rnnnisuLr7mmmuWLVs2ZcqU6H6W/6zI/5GUOefHNn/+/CVLlpxxxhmjRo3auHHjjTfe+K2rGJUpdu7cefPNN1966aWJF7EDAD9bHTp0aN269QsvvPBTF6Riv/hH9v4T6enpDRs2/ME3W61atSZNmvzgm/1v9e9//3vIkCG/+93vpFE/uKysrIMPPvg7rdKwYcPkD+cnnHDCT9guGRkZ0Que/ysdcMABd999d2lp6THHHJN4e5rZI6T09PTyz6XuW4AGysrK+k67yMjIaNq06X6GziNHjpw6deoDDzwQi8UaNGgwcODAnzaNipWbc35sdevWHTFixHPPPVe7du3okcZvZVQmi97m3qhRo+QHjQEAvp//03dIAQAAAPxX+pnfIfXf8A4pAAAAAH5BBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAgq86cuQMXKysp++9vf/tSlAAAAAPhFWrlyZeXKlX/qUuzVzzGQql+/fpMmTT766KOfuiAAAAAAv0i7du2Kx+M/dSn2Km3Pnj0/dRkAAAAA+D/EO6QAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIISSAEAAAAQlEAKAAAAgKAEUgAAAAAEJZACAAAAICiBFAAAAABBCaQAAAAACEogBQAAAEBQAikAAAAAghJIAQAAABCUQAoAAACAoARSAAAAAAQlkAIAAAAgKIEUAAAAAEEJpAAAAAAISiAFAAAAQFACKQAAAACCEkgBAAAAEJRACgAAAICgBFIAAAAABCWQAgAAACAogRQAAAAAQQmkAAAAAAhKIAUAAABAUAIpAAAAAIL6/wE5NfU2KOzWzAAAAABJRU5ErkJggg==", "refs": null, "images": [[25.559999465942383, 95.51995849609375, 766.0800170898438, 205.68002319335938], [49.44000244140625, 31.44000244140625, 628.5599975585938, 95.1600341796875], [24.720001220703125, 30.719970703125, 766.3200073242188, 205.92001342773438], [25.440000534057617, 30.719970703125, 766.3200073242188, 205.92001342773438]]}]} \ No newline at end of file diff --git a/pdftext/__init__.py b/pdftext/__init__.py new file mode 100644 index 0000000..879cd59 --- /dev/null +++ b/pdftext/__init__.py @@ -0,0 +1 @@ +"""pdftext package.""" \ No newline at end of file diff --git a/pdftext/extraction.py b/pdftext/extraction.py index 9c4e01d..bea37e3 100644 --- a/pdftext/extraction.py +++ b/pdftext/extraction.py @@ -3,37 +3,49 @@ from concurrent.futures import ProcessPoolExecutor from functools import partial from itertools import repeat -from typing import List +from typing import List, Optional, Any, Union, cast import pypdfium2 as pdfium from pdftext.pdf.links import add_links_and_refs from pdftext.pdf.pages import get_pages -from pdftext.postprocessing import handle_hyphens, merge_text, postprocess_text, sort_blocks -from pdftext.schema import Pages, TableInputs, Tables +from pdftext.postprocessing import ( + handle_hyphens, + merge_text, + postprocess_text, + sort_blocks, +) +from pdftext.schema import Bbox, Pages, Span, TableInputs, Tables from pdftext.settings import settings from pdftext.tables import table_cell_text +# Define global variable used in worker processes +pdf_doc: Any = None -def _load_pdf(pdf, flatten_pdf): - pdf = pdfium.PdfDocument(pdf) + +def _load_pdf(pdf: str, flatten_pdf: bool) -> Any: + pdf_doc = pdfium.PdfDocument(pdf) # Must be called on the parent pdf, before the page was retrieved if flatten_pdf: - pdf.init_forms() + pdf_doc.init_forms() - return pdf + return pdf_doc -def _get_page_range(page_range, flatten_pdf=False, quote_loosebox=True) -> Pages: +def _get_page_range( + page_range: List[int], flatten_pdf: bool = False, quote_loosebox: bool = True +) -> Pages: + global pdf_doc + # Convert list to range for get_pages return get_pages(pdf_doc, page_range, flatten_pdf, quote_loosebox) -def worker_shutdown(pdf_doc): +def worker_shutdown(pdf_doc: Any) -> None: pdf_doc.close() -def worker_init(pdf_path, flatten_pdf): +def worker_init(pdf_path: str, flatten_pdf: bool) -> None: global pdf_doc pdf_doc = _load_pdf(pdf_path, flatten_pdf) @@ -41,66 +53,113 @@ def worker_init(pdf_path, flatten_pdf): atexit.register(partial(worker_shutdown, pdf_doc)) -def _get_pages(pdf_path, page_range=None, flatten_pdf=False, quote_loosebox=True, workers=None) -> Pages: +def _get_pages( + pdf_path: str, + page_range: Optional[List[int]] = None, + flatten_pdf: bool = False, + quote_loosebox: bool = True, + workers: Optional[int] = None, +) -> Pages: pdf_doc = _load_pdf(pdf_path, flatten_pdf) if page_range is None: - page_range = range(len(pdf_doc)) + page_range_obj = list(range(len(pdf_doc))) + else: + page_range_obj = page_range if workers is not None: - workers = min(workers, len(page_range) // settings.WORKER_PAGE_THRESHOLD) # It's inefficient to have too many workers, since we batch in inference + workers = min( + workers, len(page_range_obj) // settings.WORKER_PAGE_THRESHOLD + ) # It's inefficient to have too many workers, since we batch in inference if workers is None or workers <= 1: - pages = get_pages(pdf_doc, page_range, flatten_pdf, quote_loosebox) + pages = get_pages(pdf_doc, page_range_obj, flatten_pdf, quote_loosebox) pdf_doc.close() return pages pdf_doc.close() - page_range = list(page_range) - - pages_per_worker = math.ceil(len(page_range) / workers) - page_range_chunks = [page_range[i * pages_per_worker:(i + 1) * pages_per_worker] for i in range(workers)] - with ProcessPoolExecutor(max_workers=workers, initializer=worker_init, initargs=(pdf_path, flatten_pdf)) as executor: - pages = list(executor.map(_get_page_range, page_range_chunks, repeat(flatten_pdf), repeat(quote_loosebox))) - - ordered_pages = [page for sublist in pages for page in sublist] + pages_per_worker = math.ceil(len(page_range_obj) / workers) + page_range_chunks = [ + page_range_obj[i * pages_per_worker : (i + 1) * pages_per_worker] + for i in range(workers) + ] + + with ProcessPoolExecutor( + max_workers=workers, initializer=worker_init, initargs=(pdf_path, flatten_pdf) + ) as executor: + pages_lists = list( + executor.map( + _get_page_range, + page_range_chunks, + repeat(flatten_pdf), + repeat(quote_loosebox), + ) + ) + + ordered_pages = [page for sublist in pages_lists for page in sublist] return ordered_pages -def plain_text_output(pdf_path, sort=False, hyphens=False, page_range=None, flatten_pdf=False, workers=None) -> str: - text = paginated_plain_text_output(pdf_path, sort=sort, hyphens=hyphens, page_range=page_range, workers=workers, flatten_pdf=flatten_pdf) +def plain_text_output( + pdf_path: str, + sort: bool = False, + hyphens: bool = False, + page_range: Optional[List[int]] = None, + flatten_pdf: bool = False, + workers: Optional[int] = None, +) -> str: + text = paginated_plain_text_output( + pdf_path, + sort=sort, + hyphens=hyphens, + page_range=page_range, + workers=workers, + flatten_pdf=flatten_pdf, + ) return "\n".join(text) -def paginated_plain_text_output(pdf_path, sort=False, hyphens=False, page_range=None, flatten_pdf=False, workers=None) -> List[str]: - pages: Pages = _get_pages(pdf_path, page_range, workers=workers, flatten_pdf=flatten_pdf) +def paginated_plain_text_output( + pdf_path: str, + sort: bool = False, + hyphens: bool = False, + page_range: Optional[List[int]] = None, + flatten_pdf: bool = False, + workers: Optional[int] = None, +) -> List[str]: + pages: Pages = _get_pages( + pdf_path, page_range, workers=workers, flatten_pdf=flatten_pdf + ) text = [] for page in pages: text.append(merge_text(page, sort=sort, hyphens=hyphens).strip()) return text -def _process_span(span, page_width, page_height, keep_chars): - span["bbox"] = span["bbox"].bbox +def _process_span( + span: Span, page_width: int, page_height: int, keep_chars: bool +) -> None: span["text"] = handle_hyphens(postprocess_text(span["text"]), keep_hyphens=True) if not keep_chars: del span["chars"] - else: - for char in span["chars"]: - char["bbox"] = char["bbox"].bbox - def dictionary_output( - pdf_path, - sort=False, - page_range=None, - keep_chars=False, - flatten_pdf=False, - quote_loosebox=True, - disable_links=False, - workers=None + pdf_path: str, + sort: bool = False, + page_range: Optional[List[int]] = None, + keep_chars: bool = False, + flatten_pdf: bool = False, + quote_loosebox: bool = True, + disable_links: bool = False, + workers: Optional[int] = None, ) -> Pages: - pages: Pages = _get_pages(pdf_path, page_range, workers=workers, flatten_pdf=flatten_pdf, quote_loosebox=quote_loosebox) + pages: Pages = _get_pages( + pdf_path, + page_range, + workers=workers, + flatten_pdf=flatten_pdf, + quote_loosebox=quote_loosebox, + ) if not disable_links: pdf = _load_pdf(pdf_path, False) @@ -113,12 +172,10 @@ def dictionary_output( for k in list(block.keys()): if k not in ["lines", "bbox"]: del block[k] - block["bbox"] = block["bbox"].bbox for line in block["lines"]: for k in list(line.keys()): if k not in ["spans", "bbox"]: del line[k] - line["bbox"] = line["bbox"].bbox for span in line["spans"]: _process_span(span, page_width, page_height, keep_chars) @@ -127,29 +184,48 @@ def dictionary_output( if page["rotation"] == 90 or page["rotation"] == 270: page["width"], page["height"] = page["height"], page["width"] - page["bbox"] = [page["bbox"][2], page["bbox"][3], page["bbox"][0], page["bbox"][1]] + + # Create a new Bbox instance from the list of floats + bbox_list = [ + page["bbox"][2], + page["bbox"][3], + page["bbox"][0], + page["bbox"][1], + ] + page["bbox"] = Bbox(bbox_list) return pages def table_output( pdf_path: str, table_inputs: TableInputs, - page_range=None, - flatten_pdf=False, - quote_loosebox=True, - workers=None, - pages: Pages | None = None + page_range: Optional[List[int]] = None, + flatten_pdf: bool = False, + quote_loosebox: bool = True, + workers: Optional[int] = None, + pages: Optional[Pages] = None, ) -> List[Tables]: # Extract pages if they don't exist - if not pages: - pages: Pages = dictionary_output(pdf_path, page_range=page_range, flatten_pdf=flatten_pdf, quote_loosebox=quote_loosebox, workers=workers, keep_chars=True) - - assert len(pages) == len(table_inputs), "Number of pages and table inputs must match" + if pages is None: + pages = dictionary_output( + pdf_path, + page_range=page_range, + flatten_pdf=flatten_pdf, + quote_loosebox=quote_loosebox, + workers=workers, + keep_chars=True, + ) + + assert len(pages) == len( + table_inputs + ), "Number of pages and table inputs must match" # Extract table cells per page out_tables = [] for page, table_input in zip(pages, table_inputs): tables = table_cell_text(table_input["tables"], page, table_input["img_size"]) - assert len(tables) == len(table_input["tables"]), "Number of tables and table inputs must match" + assert len(tables) == len( + table_input["tables"] + ), "Number of tables and table inputs must match" out_tables.append(tables) return out_tables diff --git a/pdftext/pdf/chars.py b/pdftext/pdf/chars.py index 2a06a1d..5011913 100644 --- a/pdftext/pdf/chars.py +++ b/pdftext/pdf/chars.py @@ -1,13 +1,20 @@ +import ctypes import math +from typing import Optional import pypdfium2 as pdfium import pypdfium2.raw as pdfium_c +from pypdfium2.raw import c_uint -from pdftext.pdf.utils import get_fontname +from pdftext.pdf.utils import get_fontname, transform_bbox from pdftext.schema import Bbox, Char, Chars, Spans, Span - -def get_chars(textpage: pdfium.PdfTextPage, page_bbox: list[float], page_rotation: int, quote_loosebox=True) -> Chars: +def get_chars( + textpage: pdfium.PdfTextPage, + page_bbox: list[float], + page_rotation: int, + quote_loosebox: bool = True, +) -> Chars: chars: Chars = [] x_start, y_start, x_end, y_end = page_bbox @@ -21,22 +28,27 @@ def get_chars(textpage: pdfium.PdfTextPage, page_bbox: list[float], page_rotatio loosebox = (rotation == 0) and (text != "'" or quote_loosebox) char_box = textpage.get_charbox(i, loose=loosebox) - cx_start, cy_start, cx_end, cy_end = char_box - - cx_start -= x_start - cx_end -= x_start - cy_start -= y_start - cy_end -= y_start - ty_start = page_height - cy_start - ty_end = page_height - cy_end - - bbox_coords = [min(cx_start, cx_end), min(ty_start, ty_end), max(cx_start, cx_end), max(ty_start, ty_end)] - bbox = Bbox(bbox_coords).rotate(page_width, page_height, page_rotation) + bbox = transform_bbox(page_bbox, page_rotation, char_box) fontname, fontflag = get_fontname(textpage, i) fontsize = pdfium_c.FPDFText_GetFontSize(textpage, i) fontweight = pdfium_c.FPDFText_GetFontWeight(textpage, i) + fontcolor = [c_uint()]*4 # r, g, b, a + is_fillcolor = round( + pdfium_c.FPDFText_GetFillColor( + textpage, + i, + ctypes.byref(fontcolor[0]), + ctypes.byref(fontcolor[1]), + ctypes.byref(fontcolor[2]), + ctypes.byref(fontcolor[3]), + ) + ) + if is_fillcolor: + fontcolor = [color.value for color in fontcolor] + else: + fontcolor = [] char_dict: Char = { "bbox": bbox, @@ -45,32 +57,39 @@ def get_chars(textpage: pdfium.PdfTextPage, page_bbox: list[float], page_rotatio "font": { "name": fontname, "flags": fontflag, + "color": fontcolor, "size": fontsize, "weight": fontweight, }, - "char_idx": i + "char_idx": i, } chars.append(char_dict) + # TODO: If required, add a deduplication step here through intersection of bboxes + return chars def deduplicate_chars(chars: Chars) -> Chars: # we first construct words from the chars and then deduplicate them words: Spans = [] - word: Span = None - - def word_break(): - words.append({ - "bbox": char["bbox"], - "text": char["char"], - "rotation": char["rotation"], - "font": char["font"], - "char_start_idx": char["char_idx"], - "char_end_idx": char["char_idx"], - "chars": [char], - "url": '', - }) + word: Optional[Span] = None + + def word_break() -> None: + words.append( + { + "bbox": char["bbox"], + "text": char["char"], + "rotation": int(char["rotation"]), + "font": char["font"], + "char_start_idx": char["char_idx"], + "char_end_idx": char["char_idx"], + "chars": [char], + "url": "", + "superscript": False, + "subscript": False, + } + ) for char in chars: if words: @@ -81,7 +100,7 @@ def word_break(): continue # we also break on hyphenation - if any(word['text'].endswith(x) for x in ['\n', ' ', '\x02']): + if any(word["text"].endswith(x) for x in ["\n", " ", "\x02"]): word_break() continue @@ -92,14 +111,14 @@ def word_break(): word_break() continue - if char['rotation'] != word['rotation']: + if char["rotation"] != word["rotation"]: word_break() continue - word['text'] += char['char'] - word['char_end_idx'] = char['char_idx'] - word['bbox'] = word['bbox'].merge(char['bbox']) - word['chars'].append(char) + word["text"] += char["char"] + word["char_end_idx"] = char["char_idx"] + word["bbox"] = word["bbox"].merge(char["bbox"]) + word["chars"].append(char) # deduplicate words - use tuple keys instead of strings seen = set() @@ -116,4 +135,4 @@ def word_break(): seen.add(key) deduped.append(word) - return [char for word in deduped for char in word['chars']] + return [char for word in deduped for char in word["chars"]] diff --git a/pdftext/pdf/links.py b/pdftext/pdf/links.py index c8f5232..6b0d2a1 100644 --- a/pdftext/pdf/links.py +++ b/pdftext/pdf/links.py @@ -1,6 +1,6 @@ import ctypes import math -from typing import Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple import pypdfium2 as pdfium import pypdfium2.raw as pdfium_c @@ -9,7 +9,7 @@ from pdftext.schema import Bbox, Link, Page, PageReference, Pages, Span -def _get_dest_position(dest) -> Optional[Tuple[float, float]]: +def _get_dest_position(dest: Any) -> Optional[Tuple[float, float]]: has_x = ctypes.c_int() has_y = ctypes.c_int() has_zoom = ctypes.c_int() @@ -26,7 +26,7 @@ def _get_dest_position(dest) -> Optional[Tuple[float, float]]: return None -def _rect_to_scaled_bbox(rect, page_bbox, page_rotation) -> List[float]: +def _rect_to_scaled_bbox(rect: List[float], page_bbox: List[float], page_rotation: int) -> List[float]: page_width = math.ceil(abs(page_bbox[2] - page_bbox[0])) page_height = math.ceil(abs(page_bbox[1] - page_bbox[3])) @@ -44,7 +44,7 @@ def _rect_to_scaled_bbox(rect, page_bbox, page_rotation) -> List[float]: return Bbox(bbox).rotate(page_width, page_height, page_rotation).bbox -def _xy_to_scaled_pos(x, y, page_bbox, page_rotation, expand_by=1) -> List[float]: +def _xy_to_scaled_pos(x: float, y: float, page_bbox: List[float], page_rotation: int, expand_by: float = 1.0) -> List[float]: return _rect_to_scaled_bbox([x - expand_by, y - expand_by, x + expand_by, y + expand_by], page_bbox, page_rotation)[:2] @@ -61,13 +61,6 @@ def get_links(page_idx: int, pdf: pdfium.PdfDocument) -> List[Link]: annot_count = pdfium_c.FPDFPage_GetAnnotCount(page) for i in range(annot_count): - link: Link = { - 'page': page_idx, - 'bbox': None, - 'dest_page': None, - 'dest_pos': None, - 'url': None, - } annot = pdfium_c.FPDFPage_GetAnnot(page, i) if pdfium_c.FPDFAnnot_GetSubtype(annot) != pdfium_c.FPDF_ANNOT_LINK: continue @@ -77,11 +70,19 @@ def get_links(page_idx: int, pdf: pdfium.PdfDocument) -> List[Link]: if not success: continue - link['bbox'] = _rect_to_scaled_bbox( + link_bbox = _rect_to_scaled_bbox( [fs_rect.left, fs_rect.top, fs_rect.right, fs_rect.bottom], page_bbox, page_rotation ) + link: Link = { + 'page': page_idx, + 'bbox': link_bbox, + 'dest_page': None, + 'dest_pos': None, + 'url': None, + } + link_obj = pdfium_c.FPDFAnnot_GetLink(annot) dest = pdfium_c.FPDFLink_GetDest(pdf, link_obj) @@ -122,7 +123,7 @@ def get_links(page_idx: int, pdf: pdfium.PdfDocument) -> List[Link]: return urls -def merge_links(page: Page, pdf: pdfium.PdfDocument, refs: PageReference): +def merge_links(page: Page, pdf: pdfium.PdfDocument, refs: PageReference) -> None: """ Merges links with spans. Some spans can also have multiple links associated with them. We break up the spans and reconstruct them taking the links into account. @@ -176,12 +177,12 @@ def merge_links(page: Page, pdf: pdfium.PdfDocument, refs: PageReference): line['spans'] = spans -def _reconstruct_spans(orig_span: dict, links: List[Link]) -> List[Span]: +def _reconstruct_spans(orig_span: Span, links: List[Link]) -> List[Span]: """ Reconstructs the spans by breaking them up into smaller spans based on the links. """ spans: List[Span] = [] - span: Span = None + span: Optional[Span] = None link_bboxes = [Bbox(link['bbox']) for link in links] for char in orig_span['chars']: @@ -195,21 +196,23 @@ def _reconstruct_spans(orig_span: dict, links: List[Link]) -> List[Span]: if area > 0: intersections.append((area, links[i])) - current_url = '' + current_url: Optional[str] = None if intersections: intersections.sort(key=lambda x: x[0], reverse=True) current_url = intersections[0][1]['url'] - if not span or current_url != span['url']: + if not span or (current_url or '') != span['url']: span = { "bbox": char_bbox, "text": char["char"], - "rotation": char["rotation"], + "rotation": int(char["rotation"]), "font": char["font"], "char_start_idx": char["char_idx"], "char_end_idx": char["char_idx"], "chars": [char], - "url": current_url, + "url": current_url or '', + "superscript": False, + "subscript": False, } spans.append(span) else: @@ -221,7 +224,7 @@ def _reconstruct_spans(orig_span: dict, links: List[Link]) -> List[Span]: return spans -def add_links_and_refs(pages: Pages, pdf_doc: pdfium.PdfDocument): +def add_links_and_refs(pages: Pages, pdf_doc: pdfium.PdfDocument) -> None: refs = PageReference() for page in pages: diff --git a/pdftext/pdf/pages.py b/pdftext/pdf/pages.py index c478df1..4d4bb46 100644 --- a/pdftext/pdf/pages.py +++ b/pdftext/pdf/pages.py @@ -2,26 +2,46 @@ import math import statistics -from typing import List +from typing import Optional, cast import unicodedata +import io import pypdfium2 as pdfium from pdftext.pdf.chars import get_chars, deduplicate_chars -from pdftext.pdf.utils import flatten -from pdftext.schema import Blocks, Chars, Line, Lines, Pages, Span, Spans - - -def is_math_symbol(char): +from pdftext.pdf.utils import ( + Bbox, + flatten, + transform_bbox, + remove_wrong_bboxes, +) +from pdftext.schema import ( + Blocks, + Chars, + Line, + Lines, + Pages, + Span, + Spans, + Block, + Page, +) +import base64 + + +def is_math_symbol(char: str) -> bool: if len(char) != 1: return False category = unicodedata.category(char) - return category == 'Sm' + return category == "Sm" -def assign_scripts(lines: Lines, height_threshold: float = 0.8, line_distance_threshold: float = 0.1): + +def assign_scripts( + lines: Lines, height_threshold: float = 0.8, line_distance_threshold: float = 0.1 +) -> None: for line in lines: - prev_span = None + prev_span: Optional[Span] = None if len(line["spans"]) < 2: continue @@ -30,56 +50,104 @@ def assign_scripts(lines: Lines, height_threshold: float = 0.8, line_distance_th continue for i, span in enumerate(line["spans"]): - is_first = i == 0 or not prev_span["text"].strip() - is_last = i == len(line["spans"]) - 1 or not line["spans"][i + 1]["text"].strip() + is_first = i == 0 or not (prev_span and prev_span["text"].strip()) + is_last = ( + i == len(line["spans"]) - 1 or not line["spans"][i + 1]["text"].strip() + ) span_height = span["bbox"].height span_top = span["bbox"].y_start span_bottom = span["bbox"].y_end - line_fullheight = span_height / max(1, line["bbox"].height) <= height_threshold - next_fullheight = is_last or span_height / max(1, line["spans"][i + 1]["bbox"].height) <= height_threshold - prev_fullheight = is_first or span_height / max(1, prev_span["bbox"].height) <= height_threshold - - above = any([span_top < (s["bbox"].y_start - s["bbox"].height * line_distance_threshold) for j, s in enumerate(line["spans"]) if j != i]) - prev_above = is_first or span_top < prev_span["bbox"].y_start + line_fullheight = ( + span_height / max(1, line["bbox"].height) <= height_threshold + ) + next_fullheight = ( + is_last + or span_height / max(1, line["spans"][i + 1]["bbox"].height) + <= height_threshold + ) + prev_fullheight = ( + is_first + or not prev_span + or (span_height / max(1, prev_span["bbox"].height) <= height_threshold) + ) + + above = any( + [ + span_top + < (s["bbox"].y_start - s["bbox"].height * line_distance_threshold) + for j, s in enumerate(line["spans"]) + if j != i + ] + ) + prev_above = ( + is_first or not prev_span or span_top < prev_span["bbox"].y_start + ) next_above = is_last or span_top < line["spans"][i + 1]["bbox"].y_start - below = any([span_bottom > (s["bbox"].y_end + s["bbox"].height * line_distance_threshold) for j, s in enumerate(line["spans"]) if j != i]) - prev_below = is_first or span_bottom > prev_span["bbox"].y_end + below = any( + [ + span_bottom + > (s["bbox"].y_end + s["bbox"].height * line_distance_threshold) + for j, s in enumerate(line["spans"]) + if j != i + ] + ) + prev_below = ( + is_first or not prev_span or span_bottom > prev_span["bbox"].y_end + ) next_below = is_last or span_bottom > line["spans"][i + 1]["bbox"].y_end span_text = span["text"].strip() - span_text_okay = all([ - (len(span_text) == 1 or span_text.isdigit()), # Ensure that the span text is a single char or a number - span_text.isalnum() or is_math_symbol(span_text) # Ensure that the span text is an alphanumeric or a math symbol - ]) - - if all([ - (prev_fullheight or next_fullheight), - (prev_above or next_above), - above, - line_fullheight, - span_text_okay - ]): + span_text_okay = all( + [ + ( + len(span_text) == 1 or span_text.isdigit() + ), # Ensure that the span text is a single char or a number + span_text.isalnum() + or is_math_symbol( + span_text + ), # Ensure that the span text is an alphanumeric or a math symbol + ] + ) + + if all( + [ + (prev_fullheight or next_fullheight), + (prev_above or next_above), + above, + line_fullheight, + span_text_okay, + ] + ): span["superscript"] = True - elif all([ - (prev_fullheight or next_fullheight), - (prev_below or next_below), - below, - line_fullheight, - span_text_okay - ]): + elif all( + [ + (prev_fullheight or next_fullheight), + (prev_below or next_below), + below, + line_fullheight, + span_text_okay, + ] + ): span["subscript"] = True prev_span = span -def get_spans(chars: Chars, superscript_height_threshold: float = 0.8, line_distance_threshold: float = 0.1) -> Spans: +def get_spans( + chars: Chars, + image_bboxes: list[Bbox], + superscript_height_threshold: float = 0.8, + line_distance_threshold: float = 0.1, +) -> Spans: spans: Spans = [] - span: Span = None + avg_char_width: Optional[float] = None + sum_char_widths = 0.0 - def span_break(): - spans.append({ + def span_break() -> None: + nonlocal spans, sum_char_widths + new_span_dict = { "bbox": char["bbox"], "text": char["char"], "rotation": char["rotation"], @@ -87,80 +155,131 @@ def span_break(): "char_start_idx": char["char_idx"], "char_end_idx": char["char_idx"], "chars": [char], - "url": '', - }) + "url": "", + "superscript": False, + "subscript": False, + } + spans.append(Span(new_span_dict)) + sum_char_widths = char["bbox"].width for char in chars: - if spans: - span = spans[-1] + current_span = spans[-1] if spans else None - if not span: + if not current_span: span_break() continue - # we break on any change in font info - if any(char['font'][k] != span['font'][k] for k in ['name', 'flags', 'size', 'weight']): + if any( + char["font"][k] != current_span["font"][k] + for k in ["name", "flags", "size", "weight", "color"] + ): span_break() continue - if char['rotation'] != span['rotation']: + if char["rotation"] != current_span["rotation"]: span_break() continue - # we break on hyphenation or newline - if span['text'].endswith("\x02") or span['text'].endswith("\n"): + if current_span["text"].endswith("\x02") or current_span["text"].endswith("\n"): span_break() continue - # Character is likely a superscript - if all([ - char["bbox"][1] < (span["bbox"][1] - span["bbox"].height * line_distance_threshold), # char top is above span - char["bbox"][3] < (span["bbox"].height * superscript_height_threshold) + span["bbox"][1], # char bottom is not full line height - char["bbox"][0] > span["bbox"][2], # char is to the right of the span - ]): + if all( + [ + char["bbox"].y_start + < ( + current_span["bbox"].y_start + - current_span["bbox"].height * line_distance_threshold + ), + char["bbox"].y_end + < (current_span["bbox"].height * superscript_height_threshold) + + current_span["bbox"].y_start, + char["bbox"].x_start > current_span["bbox"].x_end, + ] + ): span_break() continue - span['text'] += char['char'] - span['char_end_idx'] = char['char_idx'] - span['bbox'] = span['bbox'].merge(char['bbox']) - span['chars'].append(char) - - return spans + if len(current_span["chars"]) > 0: + prev_char_bbox = current_span["chars"][-1]["bbox"] + for char_in_current_span in current_span["chars"][::-1]: + if char_in_current_span["char"].strip(): + prev_char_bbox = char_in_current_span["bbox"] + break + avg_char_width = sum_char_widths / len(current_span["chars"]) + # Used to be 1.5 * avg_char_width reduced it to avg_char_width + if char["bbox"].horizontal_distance(prev_char_bbox) > avg_char_width: + span_break() + continue + + if char["bbox"].overlap_y(prev_char_bbox) == 0: + span_break() + continue + + if char["bbox"].overlap_y(current_span["bbox"]) < 0.1 * min( + char["bbox"].height, current_span["bbox"].height + ): + span_break() + continue + + for image_bbox in image_bboxes: + if ( + image_bbox.intersection_area(current_span["bbox"]) == 0 + and image_bbox.intersection_area(char["bbox"]) == 0 + and image_bbox.intersection_area( + current_span["bbox"].merge(char["bbox"]) + ) + > 0 + ): + span_break() + continue + + current_span["text"] += char["char"] + current_span["char_end_idx"] = char["char_idx"] + current_span["bbox"] = current_span["bbox"].merge(char["bbox"]) + current_span["chars"].append(char) + sum_char_widths += char["bbox"].width + + filtered_spans = [span for span in spans if span["text"].strip() != ""] + return filtered_spans def get_lines(spans: Spans) -> Lines: lines: Lines = [] - line: Line = None + current_line: Optional[Line] = None - def line_break(): - lines.append({"spans": [span], "bbox": span["bbox"], "rotation": span["rotation"]}) + def line_break() -> None: + nonlocal lines + lines.append( + {"spans": [span], "bbox": span["bbox"], "rotation": span["rotation"]} + ) for span in spans: - if lines: - line = lines[-1] + current_line = lines[-1] if lines else None - if not line: + if not current_line: line_break() continue # we break if the previous span ends with a linebreak - last_text = line["spans"][-1]["text"] + last_text = current_line["spans"][-1]["text"] if any(last_text.endswith(suffix) for suffix in ["\n", "\x02"]): line_break() continue - if span["rotation"] != line["rotation"] and abs(span["rotation"] - line["rotation"]) >= 45: + if ( + span["rotation"] != current_line["rotation"] + and abs(span["rotation"] - current_line["rotation"]) >= 45 + ): line_break() continue - # sometimes pdfium doesn't inject a linebreak, so we check the span positions - if span["bbox"].y_start > line["bbox"].y_end: + if span["bbox"].y_start > current_line["bbox"].y_end: line_break() continue - line["spans"].append(span) - line["bbox"] = line["bbox"].merge(span["bbox"]) + current_line["spans"].append(span) + current_line["bbox"] = current_line["bbox"].merge(span["bbox"]) return lines @@ -169,41 +288,45 @@ def get_blocks(lines: Lines) -> Blocks: if not lines: return [] - x_diffs = [] - y_diffs = [] + x_diffs: list[float] = [] + y_diffs: list[float] = [] for i in range(len(lines) - 1): - prev_center = lines[i]["bbox"].center - curr_center = lines[i + 1]["bbox"].center + prev_bbox = lines[i]["bbox"] + curr_bbox = lines[i + 1]["bbox"] + prev_center = prev_bbox.center + curr_center = curr_bbox.center x_diffs.append(abs(curr_center[0] - prev_center[0])) y_diffs.append(abs(curr_center[1] - prev_center[1])) - median_x_gap = 0.1 - if x_diffs: - median_x_gap = statistics.median(x_diffs) or median_x_gap - median_y_gap = 0.1 - if y_diffs: - median_y_gap = statistics.median(y_diffs) or median_y_gap + median_x_gap = statistics.median(x_diffs) if x_diffs else 0.1 + median_y_gap = statistics.median(y_diffs) if y_diffs else 0.1 tolerance_factor = 1.5 allowed_x_gap = median_x_gap * tolerance_factor allowed_y_gap = median_y_gap * tolerance_factor - def block_merge(): + def block_merge() -> None: + nonlocal current_block, line + block: Block = cast(Block, current_block) block["lines"].append(line) block["bbox"] = block["bbox"].merge(line["bbox"]) blocks: Blocks = [] for line in lines: - if not blocks: - # First block - blocks.append({"lines": [line], "bbox": line["bbox"], "rotation": line["rotation"]}) + current_block = blocks[-1] if blocks else None + + if not current_block: + blocks.append( + {"lines": [line], "bbox": line["bbox"], "rotation": line["rotation"]} + ) continue - block = blocks[-1] - last_line = block["lines"][-1] + last_line = cast(Block, current_block)["lines"][-1] + last_bbox = last_line["bbox"] + current_bbox = line["bbox"] - last_center = last_line["bbox"].center - current_center = line["bbox"].center + last_center = last_bbox.center + current_center = current_bbox.center x_diff = abs(current_center[0] - last_center[0]) y_diff = abs(current_center[1] - last_center[1]) @@ -215,7 +338,11 @@ def block_merge(): # we make an exception for the first line w.r.t the x diff, because the first line is usually indented line_x_indented_start = last_line["bbox"].x_start > line["bbox"].x_start - if len(block["lines"]) == 1 and line_x_indented_start and y_diff <= allowed_y_gap: + if ( + len(cast(Block, current_block)["lines"]) == 1 + and line_x_indented_start + and y_diff <= allowed_y_gap + ): block_merge() continue @@ -226,31 +353,35 @@ def block_merge(): continue # if the y diff is very small, and you see a line continuation, we merge (can happen with inline math between text spans) - if y_diff < allowed_y_gap * 0.2 and last_line["bbox"].x_end > line["bbox"].x_start: + if ( + y_diff < allowed_y_gap * 0.2 + and last_line["bbox"].x_end > line["bbox"].x_start + ): block_merge() continue - # we also merge when we see the current line intersecting the previous block - if block["bbox"].intersection_pct(line["bbox"]) > 0: + if cast(Block, current_block)["bbox"].intersection_pct(line["bbox"]) > 0: block_merge() continue - blocks.append({"lines": [line], "bbox": line["bbox"]}) + blocks.append( + {"lines": [line], "bbox": line["bbox"], "rotation": line["rotation"]} + ) - # we do one last pass of merging overlapping blocks in the PDF reading order - merged_blocks = [] - for i in range(len(blocks)): - if not merged_blocks: - merged_blocks.append(blocks[i]) - continue + merged_blocks: Blocks = [] + if not blocks: + return [] + merged_blocks.append(blocks[0]) + for i in range(1, len(blocks)): prev_block = merged_blocks[-1] curr_block = blocks[i] if prev_block["bbox"].intersection_pct(curr_block["bbox"]) > 0: merged_blocks[-1] = { "lines": prev_block["lines"] + curr_block["lines"], - "bbox": prev_block["bbox"].merge(curr_block["bbox"]) + "bbox": prev_block["bbox"].merge(curr_block["bbox"]), + "rotation": prev_block["rotation"], } else: merged_blocks.append(curr_block) @@ -258,46 +389,131 @@ def block_merge(): return merged_blocks +def get_image_bboxes( + page: pdfium.PdfPage, page_bbox_list: list[float], page_rotation: int +) -> list[Bbox]: + + objects = list(page.get_objects()) + + text_bboxes: list[Bbox] = [] + non_text_objects = [] + + for obj in objects: + if obj.type in (0, 5): + continue + + if obj.type in (2, 3, 4): + non_text_objects.append(obj) + continue + + text_bboxes.append(transform_bbox(page_bbox_list, page_rotation, obj.get_pos())) + + for obj in objects: + if obj.type not in (0, 5): + continue + + obj_bbox = transform_bbox(page_bbox_list, page_rotation, obj.get_pos()) + overlaps_with_text = any( + text_bbox and obj_bbox.intersection_area(text_bbox) > 0 + for text_bbox in text_bboxes + ) + + if not overlaps_with_text: + non_text_objects.append(obj) + continue + + non_text_bboxes: list[Bbox] = [ + transform_bbox(page_bbox_list, page_rotation, obj.get_pos()) + for obj in non_text_objects + ] + + filtered_non_text_bboxes: list[Optional[Bbox]] = remove_wrong_bboxes( + non_text_bboxes, page_bbox_list, page + ) + valid_non_text_bboxes: list[Bbox] = [ + bbox for bbox in filtered_non_text_bboxes if bbox is not None + ] + + return valid_non_text_bboxes + + def get_pages( pdf: pdfium.PdfDocument, - page_range: range, + page_range: list[int], flatten_pdf: bool = True, - quote_loosebox: bool =True, + quote_loosebox: bool = True, superscript_height_threshold: float = 0.7, line_distance_threshold: float = 0.1, + page_scale: int = 2, ) -> Pages: pages: Pages = [] for page_idx in page_range: - page = pdf.get_page(page_idx) + page_obj = pdf.get_page(page_idx) if flatten_pdf: - flatten(page) - page = pdf.get_page(page_idx) + flatten(page_obj) + page_obj = pdf.get_page(page_idx) - textpage = page.get_textpage() + textpage = page_obj.get_textpage() - page_bbox: List[float] = page.get_bbox() - page_width = math.ceil(abs(page_bbox[2] - page_bbox[0])) - page_height = math.ceil(abs(page_bbox[1] - page_bbox[3])) + page_bbox_list: list[float] = page_obj.get_bbox() + page_width = math.ceil(abs(page_bbox_list[2] - page_bbox_list[0])) + page_height = math.ceil(abs(page_bbox_list[1] - page_bbox_list[3])) + + page_bbox: Bbox = Bbox(bbox=page_bbox_list) page_rotation = 0 try: - page_rotation = page.get_rotation() - except: + page_rotation = page_obj.get_rotation() + except Exception: pass - chars = deduplicate_chars(get_chars(textpage, page_bbox, page_rotation, quote_loosebox)) - spans = get_spans(chars, superscript_height_threshold=superscript_height_threshold, line_distance_threshold=line_distance_threshold) + image_bboxes = get_image_bboxes(page_obj, page_bbox_list, page_rotation) + + chars = deduplicate_chars( + get_chars(textpage, page_bbox_list, page_rotation, quote_loosebox) + ) + spans = get_spans( + chars, + image_bboxes, + superscript_height_threshold=superscript_height_threshold, + line_distance_threshold=line_distance_threshold, + ) lines = get_lines(spans) - assign_scripts(lines, height_threshold=superscript_height_threshold, line_distance_threshold=line_distance_threshold) + assign_scripts( + lines, + height_threshold=superscript_height_threshold, + line_distance_threshold=line_distance_threshold, + ) blocks = get_blocks(lines) + img_render = page_obj.render(scale=page_scale) + pil_image = img_render.to_pil() - pages.append({ + bytes_arr = io.BytesIO() + img_base64 = "" + try: + pil_image.save(bytes_arr, format="PNG") + bytes_arr.seek(0) + img_base64 = base64.b64encode(bytes_arr.getvalue()).decode("utf-8") + except Exception as e: + print(f"Error processing image for page {page_idx}: {e}") + finally: + bytes_arr.close() + if "pil_image" in locals() and pil_image: + pil_image.close() + + page_data: Page = { "page": page_idx, "bbox": page_bbox, "width": page_width, "height": page_height, "rotation": page_rotation, - "blocks": blocks - }) + "blocks": blocks, + "scale": page_scale, + "page_image": img_base64, + "refs": None, + "images": image_bboxes, + } + pages.append(page_data) + return pages diff --git a/pdftext/pdf/utils.py b/pdftext/pdf/utils.py index 0412c39..36b3c00 100644 --- a/pdftext/pdf/utils.py +++ b/pdftext/pdf/utils.py @@ -1,9 +1,11 @@ from ctypes import byref, c_int, create_string_buffer -from typing import List +import math +from typing import List, Tuple, Optional import numpy as np import pypdfium2 as pdfium import pypdfium2.raw as pdfium_c +from pdftext.schema import Bbox LINE_BREAKS = ["\n", "\u000D", "\u000A"] TABS = ["\t", "\u0009", "\x09"] @@ -11,13 +13,122 @@ WHITESPACE_CHARS = ["\n", "\r", "\f", "\t", " "] -def flatten(page, flag=pdfium_c.FLAT_NORMALDISPLAY): +def get_page_properties( + page_bbox: list[float], + page: pdfium.PdfPage, + rotate: bool = False, +) -> Tuple[int, int, int, bool]: + + x_start, y_start, x_end, y_end = page_bbox + + page_width = math.ceil(abs(x_end - x_start)) + page_height = math.ceil(abs(y_end - y_start)) + + page_rotation = 0 + try: + page_rotation = page.get_rotation() + except: + pass + + + # This is done to deliberately use in the situations where we don't want to make this transformation + # Ideally everywhere we compute the page properties, we should use this function + if rotate: + if page_rotation == 90 or page_rotation == 270: + page_width, page_height = page_height, page_width + + mediabox = page.get_mediabox() + + bl_origin = mediabox[0] == 0 and mediabox[1] == 0 + + return page_width, page_height, page_rotation, bl_origin + +def remove_wrong_bboxes( + transformed_bboxes: list[Bbox], + page_bbox: list[float], + page: pdfium.PdfPage, + # page_idx: int, +) -> List[Optional[Bbox]]: + + _, _, page_rotation, _ = get_page_properties(page_bbox, page, rotate=True) + + # get_pos -> get_bbox. Hopefully correct. + transformed_page_bbox = transform_bbox(page_bbox, page_rotation, page.get_bbox()) + + correct_bboxes: List[Optional[Bbox]] = [] + for box_objs in transformed_bboxes: + if box_objs: + new_pos = [0.0] * 4 + new_pos[0] = max(box_objs[0], transformed_page_bbox[0]) + new_pos[1] = max(box_objs[1], transformed_page_bbox[1]) + new_pos[2] = min(box_objs[2], transformed_page_bbox[2]) + new_pos[3] = min(box_objs[3], transformed_page_bbox[3]) + + correct_bboxes.append(Bbox(new_pos)) + else: + correct_bboxes.append(None) + continue + + correct_bboxes = [ + None if (box_objs is None or (box_objs[0] > box_objs[2]) or (box_objs[1] > box_objs[3])) else box_objs + for box_objs in correct_bboxes + ] + + correct_bboxes = [ + box_obj if ( + box_obj is not None and + box_obj[0] >= transformed_page_bbox[0] and + box_obj[1] >= transformed_page_bbox[1] and + box_obj[2] <= transformed_page_bbox[2] and + box_obj[3] <= transformed_page_bbox[3] + ) + else None + for box_obj in correct_bboxes + ] + + return correct_bboxes + + +def transform_bbox( + page_bbox: list[float], + page_rotation: int, + bbox: tuple[float, float, float, float], +) -> Bbox: + """ + Transform pdfium bbox to device bbox + """ + x_start, y_start, x_end, y_end = page_bbox + + page_width = math.ceil(abs(x_end - x_start)) + page_height = math.ceil(abs(y_end - y_start)) + + cx_start, cy_start, cx_end, cy_end = bbox + + cx_start -= x_start + cx_end -= x_start + cy_start -= y_start + cy_end -= y_start + + ty_start = page_height - cy_start + ty_end = page_height - cy_end + + bbox_coords = [ + min(cx_start, cx_end), + min(ty_start, ty_end), + max(cx_start, cx_end), + max(ty_start, ty_end), + ] + + return Bbox(bbox_coords).rotate(page_width, page_height, page_rotation) + + +def flatten(page: pdfium.PdfPage, flag: int = pdfium_c.FLAT_NORMALDISPLAY) -> None: rc = pdfium_c.FPDFPage_Flatten(page, flag) if rc == pdfium_c.FLATTEN_FAIL: raise pdfium.PdfiumError("Failed to flatten annotations / form fields.") -def get_fontname(textpage, i): +def get_fontname(textpage: pdfium.PdfTextPage, i: int) -> Tuple[str, int]: font_name_str = "" flags = 0 try: @@ -42,16 +153,16 @@ def matrix_intersection_area(boxes1: List[List[float]], boxes2: List[List[float] if len(boxes1) == 0 or len(boxes2) == 0: return np.zeros((len(boxes1), len(boxes2))) - boxes1 = np.array(boxes1) - boxes2 = np.array(boxes2) + boxes1_np = np.array(boxes1) + boxes2_np = np.array(boxes2) - boxes1 = boxes1[:, np.newaxis, :] # Shape: (N, 1, 4) - boxes2 = boxes2[np.newaxis, :, :] # Shape: (1, M, 4) + boxes1_np = boxes1_np[:, np.newaxis, :] # Shape: (N, 1, 4) + boxes2_np = boxes2_np[np.newaxis, :, :] # Shape: (1, M, 4) - min_x = np.maximum(boxes1[..., 0], boxes2[..., 0]) # Shape: (N, M) - min_y = np.maximum(boxes1[..., 1], boxes2[..., 1]) - max_x = np.minimum(boxes1[..., 2], boxes2[..., 2]) - max_y = np.minimum(boxes1[..., 3], boxes2[..., 3]) + min_x = np.maximum(boxes1_np[..., 0], boxes2_np[..., 0]) # Shape: (N, M) + min_y = np.maximum(boxes1_np[..., 1], boxes2_np[..., 1]) + max_x = np.minimum(boxes1_np[..., 2], boxes2_np[..., 2]) + max_y = np.minimum(boxes1_np[..., 3], boxes2_np[..., 3]) width = np.maximum(0, max_x - min_x) height = np.maximum(0, max_y - min_y) diff --git a/pdftext/postprocessing.py b/pdftext/postprocessing.py index 4174149..fc12d62 100644 --- a/pdftext/postprocessing.py +++ b/pdftext/postprocessing.py @@ -1,8 +1,8 @@ import unicodedata -from typing import List +from typing import List, Dict from pdftext.pdf.utils import LINE_BREAKS, SPACES, TABS, WHITESPACE_CHARS -from pdftext.schema import Page +from pdftext.schema import Page, Block LIGATURES = { "ff": "ff", @@ -23,12 +23,13 @@ def postprocess_text(text: str) -> str: for old, new in REPLACEMENTS.items(): text = text.replace(old, new) text = replace_special_chars(text) + text = fix_unicode_surrogate_pairs(text) text = replace_control_chars(text) text = replace_ligatures(text) return text -def handle_hyphens(text: str, keep_hyphens=False) -> str: +def handle_hyphens(text: str, keep_hyphens: bool = False) -> str: if keep_hyphens: text = text.replace(HYPHEN_CHAR, "-\n") elif len(text) == 0: @@ -64,7 +65,15 @@ def replace_special_chars(text: str) -> str: def replace_control_chars(text: str) -> str: - return "".join(char for char in text if (unicodedata.category(char)[0] != "C" or char == HYPHEN_CHAR or char in WHITESPACE_CHARS)) + return "".join( + char + for char in text + if ( + unicodedata.category(char)[0] != "C" + or char == HYPHEN_CHAR + or char in WHITESPACE_CHARS + ) + ) def replace_ligatures(text: str) -> str: @@ -73,9 +82,9 @@ def replace_ligatures(text: str) -> str: return text -def sort_blocks(blocks: List, tolerance=1.25) -> List: +def sort_blocks(blocks: List[Block], tolerance: float = 1.25) -> List[Block]: # Sort blocks into best guess reading order - vertical_groups = {} + vertical_groups: Dict[float, List[Block]] = {} for block in blocks: group_key = round(block["bbox"][1] / tolerance) * tolerance if group_key not in vertical_groups: @@ -92,7 +101,7 @@ def sort_blocks(blocks: List, tolerance=1.25) -> List: return sorted_page_blocks -def merge_text(page: Page, sort=False, hyphens=False) -> str: +def merge_text(page: Page, sort: bool = False, hyphens: bool = False) -> str: text = "" if sort: page["blocks"] = sort_blocks(page["blocks"]) @@ -111,3 +120,53 @@ def merge_text(page: Page, sort=False, hyphens=False) -> str: text += block_text text = handle_hyphens(text, keep_hyphens=hyphens) return text + + +def fix_unicode_surrogate_pairs(text: str) -> str: + """ + Fix Unicode surrogate pairs while preserving mathematical symbols. + + Surrogate pairs are UTF-16 artifacts that shouldn't appear in UTF-8. + This function converts them to proper Unicode characters. + """ + if not text: + return "" + + try: + # Test if the text is already valid UTF-8 + text.encode("utf-8") + return text + except UnicodeEncodeError: + # Handle surrogate pairs by converting them to proper Unicode + result = [] + i = 0 + while i < len(text): + char = text[i] + code = ord(char) + + # High surrogate followed by low surrogate = valid pair + if ( + 0xD800 <= code <= 0xDBFF + and i + 1 < len(text) + and 0xDC00 <= ord(text[i + 1]) <= 0xDFFF + ): + + high = code - 0xD800 + low = ord(text[i + 1]) - 0xDC00 + unicode_point = 0x10000 + (high << 10) + low + + try: + result.append(chr(unicode_point)) + i += 2 + continue + except ValueError: + pass + + # Replace lone surrogates with replacement character + if 0xD800 <= code <= 0xDFFF: + result.append("\ufffd") + else: + result.append(char) + i += 1 + + return "".join(result) diff --git a/pdftext/schema.py b/pdftext/schema.py index 736b856..d720ca2 100644 --- a/pdftext/schema.py +++ b/pdftext/schema.py @@ -5,7 +5,7 @@ class Bbox: - def __init__(self, bbox: List[float], ensure_nonzero_area=False): + def __init__(self, bbox: List[float], ensure_nonzero_area: bool = False) -> None: if ensure_nonzero_area: bbox = list(bbox) bbox[2] = max(bbox[0], bbox[2] + 1) @@ -13,48 +13,57 @@ def __init__(self, bbox: List[float], ensure_nonzero_area=False): self.bbox = bbox self.ensure_nonzero_area = ensure_nonzero_area - def __getitem__(self, item): + def __getitem__(self, item: int) -> float: return self.bbox[item] - def __repr__(self): + def __repr__(self) -> str: return f"Bbox({self.bbox})" @property - def height(self): + def height(self) -> float: return self.bbox[3] - self.bbox[1] @property - def width(self): + def width(self) -> float: return self.bbox[2] - self.bbox[0] @property - def area(self): + def area(self) -> float: return self.width * self.height @property - def center(self): + def center(self) -> List[float]: return [(self.bbox[0] + self.bbox[2]) / 2, (self.bbox[1] + self.bbox[3]) / 2] @property - def size(self): + def size(self) -> List[float]: return [self.width, self.height] @property - def x_start(self): + def x_start(self) -> float: return self.bbox[0] @property - def y_start(self): + def y_start(self) -> float: return self.bbox[1] @property - def x_end(self): + def x_end(self) -> float: return self.bbox[2] @property - def y_end(self): + def y_end(self) -> float: return self.bbox[3] + def inside(self, other: Bbox) -> bool: + # Check if the self bounding box is entirely contained within the other bounding box. + return ( + self.x_start >= other.x_start + and self.x_end <= other.x_end + and self.y_start >= other.y_start + and self.y_end <= other.y_end + ) + def merge(self, other: Bbox) -> Bbox: self_bbox = self.bbox other_bbox = other.bbox @@ -65,18 +74,43 @@ def merge(self, other: Bbox) -> Bbox: max(self_bbox[3], other_bbox[3]) ]) - def overlap_x(self, other: Bbox): - return max(0, min(self.bbox[2], other.bbox[2]) - max(self.bbox[0], other.bbox[0])) + def overlap_x(self, other: Bbox) -> float: + return max( + 0, min(self.bbox[2], other.bbox[2]) - max(self.bbox[0], other.bbox[0]) + ) + + def overlap_y(self, other: Bbox) -> float: + return max( + 0, min(self.bbox[3], other.bbox[3]) - max(self.bbox[1], other.bbox[1]) + ) + + def horizontal_distance(self, other: Bbox) -> float: + x1, y1, x2, y2 = self.bbox + i1, j1, i2, j2 = other.bbox + + if x1 < i1: + return i1 - x1 + elif i2 < x1: + return x1 - i2 + + return 0 - def overlap_y(self, other: Bbox): - return max(0, min(self.bbox[3], other.bbox[3]) - max(self.bbox[1], other.bbox[1])) + def intersection_score(self, other: Bbox) -> float: + intersection_area = self.intersection_area(other) + if self.area == 0 or other.area == 0: + if self.inside(other) or other.inside(self): + return 1.0 + else: + return 0.0 + else: + return intersection_area / min(self.area, other.area) - def intersection_area(self, other: Bbox): + def intersection_area(self, other: Bbox) -> float: return self.overlap_x(other) * self.overlap_y(other) - def intersection_pct(self, other: Bbox): + def intersection_pct(self, other: Bbox) -> float: if self.area == 0: - return 0 + return 0.0 intersection = self.intersection_area(other) return intersection / self.area @@ -106,12 +140,12 @@ def rotate(self, page_width: float, page_height: float, rotation: int) -> Bbox: new_y_max = page_width - x_min # Ensure that x_min < x_max and y_min < y_max - rotated_bbox = ( + rotated_bbox = [ min(new_x_min, new_x_max), min(new_y_min, new_y_max), max(new_x_min, new_x_max), - max(new_y_min, new_y_max) - ) + max(new_y_min, new_y_max), + ] return Bbox(rotated_bbox) @@ -122,7 +156,7 @@ def rescale(self, img_size: List[int], page: Page) -> Bbox: self.bbox[0] * w_scale, self.bbox[1] * h_scale, self.bbox[2] * w_scale, - self.bbox[3] * h_scale + self.bbox[3] * h_scale, ] return Bbox(new_bbox) @@ -168,7 +202,10 @@ class Page(TypedDict): height: int blocks: List[Block] rotation: int - refs: List[Reference] + refs: Optional[List[Reference]] + scale: int + page_image: str + images: List[Bbox] class TableCell(TypedDict): @@ -196,16 +233,16 @@ class Reference: coord: List[float] @property - def ref(self): + def ref(self) -> str: return f"page-{self.page}-{self.idx}" @property - def url(self): + def url(self) -> str: return f"#{self.ref}" class PageReference: - def __init__(self): + def __init__(self) -> None: self.page_ref_map: Dict[int, List[Reference]] = {} def get_refs(self, page: int) -> List[Reference]: diff --git a/pdftext/scripts/__init__.py b/pdftext/scripts/__init__.py new file mode 100644 index 0000000..25f13e2 --- /dev/null +++ b/pdftext/scripts/__init__.py @@ -0,0 +1 @@ +"""pdftext.scripts package.""" \ No newline at end of file diff --git a/pdftext/scripts/extract_text.py b/pdftext/scripts/extract_text.py index cb8dd38..4c89e32 100644 --- a/pdftext/scripts/extract_text.py +++ b/pdftext/scripts/extract_text.py @@ -1,50 +1,107 @@ import json from pathlib import Path -from typing import List +from typing import List, Any import click import pypdfium2 as pdfium from pdftext.extraction import plain_text_output, dictionary_output +from pdftext.schema import Pages, Bbox + + +# Helper function to serialize Bbox objects for JSON +def json_serializer(obj: Any) -> Any: + if isinstance(obj, Bbox): + return obj.bbox + raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable") + def parse_range_str(range_str: str) -> List[int]: range_lst = range_str.split(",") - page_lst = [] + page_lst: List[int] = [] for i in range_lst: if "-" in i: start, end = i.split("-") - page_lst += list(range(int(start), int(end) + 1)) + page_lst.extend(list(range(int(start), int(end) + 1))) else: page_lst.append(int(i)) - page_lst = sorted(list(set(page_lst))) # Deduplicate page numbers and sort in order + # Deduplicate page numbers and sort in order + page_lst = sorted(list(set(page_lst))) return page_lst + @click.command(help="Extract plain text or JSON from PDF.") @click.argument("pdf_path", type=click.Path(exists=True)) -@click.option("--out_path", type=click.Path(exists=False), help="Path to the output text file, defaults to stdout") -@click.option("--json", is_flag=True, help="Output json instead of plain text", default=False) -@click.option("--sort", is_flag=True, help="Attempt to sort the text by reading order", default=False) -@click.option("--keep_hyphens", is_flag=True, help="Keep hyphens in words", default=False) -@click.option("--page_range", type=str, help="Page numbers or ranges to extract, comma separated like 1,2-4,10", default=None) -@click.option("--flatten_pdf", is_flag=True, help="Flatten form fields and annotations into page contents", default=False) -@click.option("--keep_chars", is_flag=True, help="Keep character level information", default=False) -@click.option("--workers", type=int, help="Number of workers to use for parallel processing", default=None) +@click.option( + "--out_path", + type=click.Path(exists=False), + help="Path to the output text file, defaults to stdout" +) +@click.option( + "--json", + is_flag=True, + help="Output json instead of plain text", + default=False +) +@click.option( + "--sort", + is_flag=True, + help="Attempt to sort the text by reading order", + default=False +) +@click.option( + "--keep_hyphens", + is_flag=True, + help="Keep hyphens in words", + default=False +) +@click.option( + "--page_range", + type=str, + help="Page numbers or ranges to extract, comma separated like 1,2-4,10", + default=None +) +@click.option( + "--flatten_pdf", + is_flag=True, + help="Flatten form fields and annotations into page contents", + default=False +) +@click.option( + "--keep_chars", + is_flag=True, + help="Keep character level information", + default=False +) +@click.option( + "--workers", + type=int, + help="Number of workers to use for parallel processing", + default=None +) def extract_text_cli( pdf_path: Path, out_path: Path | None, - **kwargs -): - pages = None + **kwargs: Any +) -> None: + pages: List[int] | None = None if kwargs["page_range"] is not None: - pdf_doc = pdfium.PdfDocument(pdf_path) + pdf_doc = pdfium.PdfDocument(str(pdf_path)) pages = parse_range_str(kwargs["page_range"]) doc_len = len(pdf_doc) pdf_doc.close() - assert all(0 <= p <= doc_len for p in pages), "Invalid page number(s) provided" + # Ensure page numbers are 1-based for user input validation + invalid_pages = [p for p in pages if not (1 <= p <= doc_len)] + if invalid_pages: + raise click.BadParameter( + f"Invalid page number(s) provided: {invalid_pages}. " + f"Document has {doc_len} pages." + ) + output_text: str = "" if kwargs["json"]: - text = dictionary_output( - pdf_path, + dict_result: Pages = dictionary_output( + str(pdf_path), sort=kwargs["sort"], page_range=pages, flatten_pdf=kwargs["flatten_pdf"], @@ -52,10 +109,13 @@ def extract_text_cli( workers=kwargs["workers"], disable_links=True ) - text = json.dumps(text, ensure_ascii=False, indent=2) + # Convert Pydantic model to dict for JSON serialization + # output_text = json.dumps(dict_result.model_dump()) + # Use the custom serializer for Bbox objects + output_text = json.dumps(dict_result, default=json_serializer) else: - text = plain_text_output( - pdf_path, + output_text = plain_text_output( + str(pdf_path), sort=kwargs["sort"], hyphens=kwargs["keep_hyphens"], page_range=pages, @@ -64,7 +124,7 @@ def extract_text_cli( ) if out_path is None: - print(text) + print(output_text) else: - with open(out_path, "w+", encoding="utf-8") as f: - f.write(text) \ No newline at end of file + with open(str(out_path), "w+", encoding="utf-8") as f: + f.write(output_text) \ No newline at end of file diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 01b26a5..0000000 --- a/poetry.lock +++ /dev/null @@ -1,2116 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "aiohappyeyeballs" -version = "2.4.6" -description = "Happy Eyeballs for asyncio" -optional = false -python-versions = ">=3.9" -files = [ - {file = "aiohappyeyeballs-2.4.6-py3-none-any.whl", hash = "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1"}, - {file = "aiohappyeyeballs-2.4.6.tar.gz", hash = "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0"}, -] - -[[package]] -name = "aiohttp" -version = "3.11.12" -description = "Async http client/server framework (asyncio)" -optional = false -python-versions = ">=3.9" -files = [ - {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, - {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, - {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, - {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, - {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, - {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, - {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, - {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, - {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, - {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, - {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, - {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, - {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, - {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, - {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, - {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, - {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, - {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, - {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, - {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, - {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, - {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, - {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, - {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, - {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, - {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, - {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, - {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, - {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, - {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, - {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, - {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, - {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, - {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, - {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, - {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, - {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, - {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, - {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, - {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, - {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, - {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, - {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, - {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, - {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, - {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, - {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, - {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, - {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, - {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, - {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, - {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, - {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, - {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, - {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, - {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, -] - -[package.dependencies] -aiohappyeyeballs = ">=2.3.0" -aiosignal = ">=1.1.2" -async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""} -attrs = ">=17.3.0" -frozenlist = ">=1.1.1" -multidict = ">=4.5,<7.0" -propcache = ">=0.2.0" -yarl = ">=1.17.0,<2.0" - -[package.extras] -speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] - -[[package]] -name = "aiosignal" -version = "1.3.2" -description = "aiosignal: a list of registered asynchronous callbacks" -optional = false -python-versions = ">=3.9" -files = [ - {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, - {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, -] - -[package.dependencies] -frozenlist = ">=1.1.0" - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "async-timeout" -version = "5.0.1" -description = "Timeout context manager for asyncio programs" -optional = false -python-versions = ">=3.8" -files = [ - {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, - {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, -] - -[[package]] -name = "attrs" -version = "25.1.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.8" -files = [ - {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, - {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, -] - -[package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] - -[[package]] -name = "certifi" -version = "2025.1.31" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, -] - -[[package]] -name = "cffi" -version = "1.17.1" -description = "Foreign Function Interface for Python calling C code." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, - {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, - {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, - {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, - {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, - {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, - {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, - {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, - {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, - {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, - {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, - {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, - {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, - {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, - {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, - {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, - {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, - {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, - {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, - {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, - {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, - {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, - {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, - {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, - {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, - {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, - {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, - {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, - {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, - {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, - {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, -] - -[package.dependencies] -pycparser = "*" - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.7" -files = [ - {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, - {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, - {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, -] - -[[package]] -name = "click" -version = "8.1.8" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, - {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "cryptography" -version = "44.0.1" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = "!=3.9.0,!=3.9.1,>=3.7" -files = [ - {file = "cryptography-44.0.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf688f615c29bfe9dfc44312ca470989279f0e94bb9f631f85e3459af8efc009"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd7c7e2d71d908dc0f8d2027e1604102140d84b155e658c20e8ad1304317691f"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:887143b9ff6bad2b7570da75a7fe8bbf5f65276365ac259a5d2d5147a73775f2"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:322eb03ecc62784536bc173f1483e76747aafeb69c8728df48537eb431cd1911"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:21377472ca4ada2906bc313168c9dc7b1d7ca417b63c1c3011d0c74b7de9ae69"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df978682c1504fc93b3209de21aeabf2375cb1571d4e61907b3e7a2540e83026"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:eb3889330f2a4a148abead555399ec9a32b13b7c8ba969b72d8e500eb7ef84cd"}, - {file = "cryptography-44.0.1-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:8e6a85a93d0642bd774460a86513c5d9d80b5c002ca9693e63f6e540f1815ed0"}, - {file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6f76fdd6fd048576a04c5210d53aa04ca34d2ed63336d4abd306d0cbe298fddf"}, - {file = "cryptography-44.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6c8acf6f3d1f47acb2248ec3ea261171a671f3d9428e34ad0357148d492c7864"}, - {file = "cryptography-44.0.1-cp37-abi3-win32.whl", hash = "sha256:24979e9f2040c953a94bf3c6782e67795a4c260734e5264dceea65c8f4bae64a"}, - {file = "cryptography-44.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:fd0ee90072861e276b0ff08bd627abec29e32a53b2be44e41dbcdf87cbee2b00"}, - {file = "cryptography-44.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:a2d8a7045e1ab9b9f803f0d9531ead85f90c5f2859e653b61497228b18452008"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8272f257cf1cbd3f2e120f14c68bff2b6bdfcc157fafdee84a1b795efd72862"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e8d181e90a777b63f3f0caa836844a1182f1f265687fac2115fcf245f5fbec3"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:436df4f203482f41aad60ed1813811ac4ab102765ecae7a2bbb1dbb66dcff5a7"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4f422e8c6a28cf8b7f883eb790695d6d45b0c385a2583073f3cec434cc705e1a"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:72198e2b5925155497a5a3e8c216c7fb3e64c16ccee11f0e7da272fa93b35c4c"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2a46a89ad3e6176223b632056f321bc7de36b9f9b93b2cc1cccf935a3849dc62"}, - {file = "cryptography-44.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:53f23339864b617a3dfc2b0ac8d5c432625c80014c25caac9082314e9de56f41"}, - {file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:888fcc3fce0c888785a4876ca55f9f43787f4c5c1cc1e2e0da71ad481ff82c5b"}, - {file = "cryptography-44.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00918d859aa4e57db8299607086f793fa7813ae2ff5a4637e318a25ef82730f7"}, - {file = "cryptography-44.0.1-cp39-abi3-win32.whl", hash = "sha256:9b336599e2cb77b1008cb2ac264b290803ec5e8e89d618a5e978ff5eb6f715d9"}, - {file = "cryptography-44.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:e403f7f766ded778ecdb790da786b418a9f2394f36e8cc8b796cc056ab05f44f"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1f9a92144fa0c877117e9748c74501bea842f93d21ee00b0cf922846d9d0b183"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:610a83540765a8d8ce0f351ce42e26e53e1f774a6efb71eb1b41eb01d01c3d12"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fed5cd6102bb4eb843e3315d2bf25fede494509bddadb81e03a859c1bc17b83"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:f4daefc971c2d1f82f03097dc6f216744a6cd2ac0f04c68fb935ea2ba2a0d420"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94f99f2b943b354a5b6307d7e8d19f5c423a794462bde2bf310c770ba052b1c4"}, - {file = "cryptography-44.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d9c5b9f698a83c8bd71e0f4d3f9f839ef244798e5ffe96febfa9714717db7af7"}, - {file = "cryptography-44.0.1.tar.gz", hash = "sha256:f51f5705ab27898afda1aaa430f34ad90dc117421057782022edf0600bec5f14"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0)"] -docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] -nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2)"] -pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] -sdist = ["build (>=1.0.0)"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi (>=2024)", "cryptography-vectors (==44.0.1)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] -test-randomorder = ["pytest-randomly"] - -[[package]] -name = "datasets" -version = "2.21.0" -description = "HuggingFace community-driven open-source library of datasets" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "datasets-2.21.0-py3-none-any.whl", hash = "sha256:25e4e097110ce28824b746a107727ada94024cba11db8bc588d468414692b65a"}, - {file = "datasets-2.21.0.tar.gz", hash = "sha256:998f85a8460f1bd982e5bd058f8a0808eef424249e3df1e8cdd594ccd0dc8ba2"}, -] - -[package.dependencies] -aiohttp = "*" -dill = ">=0.3.0,<0.3.9" -filelock = "*" -fsspec = {version = ">=2023.1.0,<=2024.6.1", extras = ["http"]} -huggingface-hub = ">=0.21.2" -multiprocess = "*" -numpy = ">=1.17" -packaging = "*" -pandas = "*" -pyarrow = ">=15.0.0" -pyyaml = ">=5.1" -requests = ">=2.32.2" -tqdm = ">=4.66.3" -xxhash = "*" - -[package.extras] -apache-beam = ["apache-beam (>=2.26.0)"] -audio = ["librosa", "soundfile (>=0.12.1)", "soxr (>=0.4.0)"] -benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"] -dev = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.8.0.post1)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0)", "sqlalchemy", "tensorflow (>=2.16.0)", "tensorflow (>=2.6.0)", "tensorflow (>=2.6.0)", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "transformers (>=4.42.0)", "typing-extensions (>=4.6.1)", "zstandard"] -docs = ["s3fs", "tensorflow (>=2.6.0)", "torch", "transformers"] -jax = ["jax (>=0.3.14)", "jaxlib (>=0.3.14)"] -metrics-tests = ["Werkzeug (>=1.0.1)", "accelerate", "bert-score (>=0.3.6)", "jiwer", "langdetect", "mauve-text", "nltk (<3.8.2)", "requests-file (>=1.5.1)", "rouge-score", "sacrebleu", "sacremoses", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "spacy (>=3.0.0)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "typer (<0.5.0)"] -quality = ["ruff (>=0.3.0)"] -s3 = ["s3fs"] -tensorflow = ["tensorflow (>=2.6.0)"] -tensorflow-gpu = ["tensorflow (>=2.6.0)"] -tests = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.8.0.post1)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0)", "sqlalchemy", "tensorflow (>=2.16.0)", "tensorflow (>=2.6.0)", "tiktoken", "torch (>=2.0.0)", "transformers (>=4.42.0)", "typing-extensions (>=4.6.1)", "zstandard"] -tests-numpy2 = ["Pillow (>=9.4.0)", "absl-py", "decorator", "elasticsearch (<8.0.0)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "moto[server]", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "soxr (>=0.4.0)", "sqlalchemy", "tiktoken", "torch (>=2.0.0)", "typing-extensions (>=4.6.1)", "zstandard"] -torch = ["torch"] -vision = ["Pillow (>=9.4.0)"] - -[[package]] -name = "dill" -version = "0.3.8" -description = "serialize all of Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] -profile = ["gprof2dot (>=2022.7.29)"] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "filelock" -version = "3.17.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.9" -files = [ - {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, - {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2)"] - -[[package]] -name = "frozenlist" -version = "1.5.0" -description = "A list-like structure which implements collections.abc.MutableSequence" -optional = false -python-versions = ">=3.8" -files = [ - {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, - {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, - {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, - {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, - {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, - {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, - {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, - {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, - {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, - {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, - {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, - {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, - {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, - {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, - {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, - {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, - {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, - {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, - {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, - {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, - {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, - {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, - {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, - {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, - {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, - {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, - {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, - {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, - {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, - {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, - {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, - {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, - {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, - {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, - {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, - {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, - {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, - {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, - {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, - {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, - {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, - {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, - {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, - {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, - {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, - {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, - {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, - {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, - {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, - {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, - {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, - {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, - {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, - {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, - {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, - {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, - {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, - {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, - {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, - {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, - {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, - {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, - {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, - {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, - {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, - {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, - {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, - {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, - {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, - {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, - {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, - {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, - {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, - {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, - {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, - {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, - {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, - {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, - {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, - {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, - {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, - {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, - {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, - {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, -] - -[[package]] -name = "fsspec" -version = "2024.6.1" -description = "File-system specification" -optional = false -python-versions = ">=3.8" -files = [ - {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"}, - {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"}, -] - -[package.dependencies] -aiohttp = {version = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1", optional = true, markers = "extra == \"http\""} - -[package.extras] -abfs = ["adlfs"] -adl = ["adlfs"] -arrow = ["pyarrow (>=1)"] -dask = ["dask", "distributed"] -dev = ["pre-commit", "ruff"] -doc = ["numpydoc", "sphinx", "sphinx-design", "sphinx-rtd-theme", "yarl"] -dropbox = ["dropbox", "dropboxdrivefs", "requests"] -full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] -fuse = ["fusepy"] -gcs = ["gcsfs"] -git = ["pygit2"] -github = ["requests"] -gs = ["gcsfs"] -gui = ["panel"] -hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] -libarchive = ["libarchive-c"] -oci = ["ocifs"] -s3 = ["s3fs"] -sftp = ["paramiko"] -smb = ["smbprotocol"] -ssh = ["paramiko"] -test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] -test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] -test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] -tqdm = ["tqdm"] - -[[package]] -name = "huggingface-hub" -version = "0.28.1" -description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "huggingface_hub-0.28.1-py3-none-any.whl", hash = "sha256:aa6b9a3ffdae939b72c464dbb0d7f99f56e649b55c3d52406f49e0a5a620c0a7"}, - {file = "huggingface_hub-0.28.1.tar.gz", hash = "sha256:893471090c98e3b6efbdfdacafe4052b20b84d59866fb6f54c33d9af18c303ae"}, -] - -[package.dependencies] -filelock = "*" -fsspec = ">=2023.5.0" -packaging = ">=20.9" -pyyaml = ">=5.1" -requests = "*" -tqdm = ">=4.42.1" -typing-extensions = ">=3.7.4.3" - -[package.extras] -all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] -cli = ["InquirerPy (==0.3.4)"] -dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] -fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] -hf-transfer = ["hf-transfer (>=0.1.4)"] -inference = ["aiohttp"] -quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.9.0)"] -tensorflow = ["graphviz", "pydot", "tensorflow"] -tensorflow-testing = ["keras (<3.0)", "tensorflow"] -testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] -torch = ["safetensors[torch]", "torch"] -typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "multidict" -version = "6.1.0" -description = "multidict implementation" -optional = false -python-versions = ">=3.8" -files = [ - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, - {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, - {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, - {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, - {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, - {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, - {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, - {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, - {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, - {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, - {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, - {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, - {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, - {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, - {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, - {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, - {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, - {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, - {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, - {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, - {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, - {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, - {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, - {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, - {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, - {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, - {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, - {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, - {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, - {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, - {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, - {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, - {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, -] - -[package.dependencies] -typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} - -[[package]] -name = "multiprocess" -version = "0.70.16" -description = "better multiprocessing and multithreading in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "multiprocess-0.70.16-pp310-pypy310_pp73-macosx_10_13_x86_64.whl", hash = "sha256:476887be10e2f59ff183c006af746cb6f1fd0eadcfd4ef49e605cbe2659920ee"}, - {file = "multiprocess-0.70.16-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d951bed82c8f73929ac82c61f01a7b5ce8f3e5ef40f5b52553b4f547ce2b08ec"}, - {file = "multiprocess-0.70.16-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37b55f71c07e2d741374998c043b9520b626a8dddc8b3129222ca4f1a06ef67a"}, - {file = "multiprocess-0.70.16-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba8c31889abf4511c7308a8c52bb4a30b9d590e7f58523302ba00237702ca054"}, - {file = "multiprocess-0.70.16-pp39-pypy39_pp73-macosx_10_13_x86_64.whl", hash = "sha256:0dfd078c306e08d46d7a8d06fb120313d87aa43af60d66da43ffff40b44d2f41"}, - {file = "multiprocess-0.70.16-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e7b9d0f307cd9bd50851afaac0dba2cb6c44449efff697df7c7645f7d3f2be3a"}, - {file = "multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02"}, - {file = "multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a"}, - {file = "multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e"}, - {file = "multiprocess-0.70.16-py38-none-any.whl", hash = "sha256:a71d82033454891091a226dfc319d0cfa8019a4e888ef9ca910372a446de4435"}, - {file = "multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3"}, - {file = "multiprocess-0.70.16.tar.gz", hash = "sha256:161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1"}, -] - -[package.dependencies] -dill = ">=0.3.8" - -[[package]] -name = "numpy" -version = "2.2.3" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.10" -files = [ - {file = "numpy-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cbc6472e01952d3d1b2772b720428f8b90e2deea8344e854df22b0618e9cce71"}, - {file = "numpy-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdfe0c22692a30cd830c0755746473ae66c4a8f2e7bd508b35fb3b6a0813d787"}, - {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:e37242f5324ffd9f7ba5acf96d774f9276aa62a966c0bad8dae692deebec7716"}, - {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95172a21038c9b423e68be78fd0be6e1b97674cde269b76fe269a5dfa6fadf0b"}, - {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5b47c440210c5d1d67e1cf434124e0b5c395eee1f5806fdd89b553ed1acd0a3"}, - {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0391ea3622f5c51a2e29708877d56e3d276827ac5447d7f45e9bc4ade8923c52"}, - {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f6b3dfc7661f8842babd8ea07e9897fe3d9b69a1d7e5fbb743e4160f9387833b"}, - {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ad78ce7f18ce4e7df1b2ea4019b5817a2f6a8a16e34ff2775f646adce0a5027"}, - {file = "numpy-2.2.3-cp310-cp310-win32.whl", hash = "sha256:5ebeb7ef54a7be11044c33a17b2624abe4307a75893c001a4800857956b41094"}, - {file = "numpy-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:596140185c7fa113563c67c2e894eabe0daea18cf8e33851738c19f70ce86aeb"}, - {file = "numpy-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:16372619ee728ed67a2a606a614f56d3eabc5b86f8b615c79d01957062826ca8"}, - {file = "numpy-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5521a06a3148686d9269c53b09f7d399a5725c47bbb5b35747e1cb76326b714b"}, - {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7c8dde0ca2f77828815fd1aedfdf52e59071a5bae30dac3b4da2a335c672149a"}, - {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:77974aba6c1bc26e3c205c2214f0d5b4305bdc719268b93e768ddb17e3fdd636"}, - {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d42f9c36d06440e34226e8bd65ff065ca0963aeecada587b937011efa02cdc9d"}, - {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2712c5179f40af9ddc8f6727f2bd910ea0eb50206daea75f58ddd9fa3f715bb"}, - {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c8b0451d2ec95010d1db8ca733afc41f659f425b7f608af569711097fd6014e2"}, - {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9b4a8148c57ecac25a16b0e11798cbe88edf5237b0df99973687dd866f05e1b"}, - {file = "numpy-2.2.3-cp311-cp311-win32.whl", hash = "sha256:1f45315b2dc58d8a3e7754fe4e38b6fce132dab284a92851e41b2b344f6441c5"}, - {file = "numpy-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f48ba6f6c13e5e49f3d3efb1b51c8193215c42ac82610a04624906a9270be6f"}, - {file = "numpy-2.2.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12c045f43b1d2915eca6b880a7f4a256f59d62df4f044788c8ba67709412128d"}, - {file = "numpy-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:87eed225fd415bbae787f93a457af7f5990b92a334e346f72070bf569b9c9c95"}, - {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:712a64103d97c404e87d4d7c47fb0c7ff9acccc625ca2002848e0d53288b90ea"}, - {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a5ae282abe60a2db0fd407072aff4599c279bcd6e9a2475500fc35b00a57c532"}, - {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5266de33d4c3420973cf9ae3b98b54a2a6d53a559310e3236c4b2b06b9c07d4e"}, - {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b787adbf04b0db1967798dba8da1af07e387908ed1553a0d6e74c084d1ceafe"}, - {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:34c1b7e83f94f3b564b35f480f5652a47007dd91f7c839f404d03279cc8dd021"}, - {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d8335b5f1b6e2bce120d55fb17064b0262ff29b459e8493d1785c18ae2553b8"}, - {file = "numpy-2.2.3-cp312-cp312-win32.whl", hash = "sha256:4d9828d25fb246bedd31e04c9e75714a4087211ac348cb39c8c5f99dbb6683fe"}, - {file = "numpy-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:83807d445817326b4bcdaaaf8e8e9f1753da04341eceec705c001ff342002e5d"}, - {file = "numpy-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bfdb06b395385ea9b91bf55c1adf1b297c9fdb531552845ff1d3ea6e40d5aba"}, - {file = "numpy-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23c9f4edbf4c065fddb10a4f6e8b6a244342d95966a48820c614891e5059bb50"}, - {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a0c03b6be48aaf92525cccf393265e02773be8fd9551a2f9adbe7db1fa2b60f1"}, - {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:2376e317111daa0a6739e50f7ee2a6353f768489102308b0d98fcf4a04f7f3b5"}, - {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fb62fe3d206d72fe1cfe31c4a1106ad2b136fcc1606093aeab314f02930fdf2"}, - {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52659ad2534427dffcc36aac76bebdd02b67e3b7a619ac67543bc9bfe6b7cdb1"}, - {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b416af7d0ed3271cad0f0a0d0bee0911ed7eba23e66f8424d9f3dfcdcae1304"}, - {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1402da8e0f435991983d0a9708b779f95a8c98c6b18a171b9f1be09005e64d9d"}, - {file = "numpy-2.2.3-cp313-cp313-win32.whl", hash = "sha256:136553f123ee2951bfcfbc264acd34a2fc2f29d7cdf610ce7daf672b6fbaa693"}, - {file = "numpy-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5b732c8beef1d7bc2d9e476dbba20aaff6167bf205ad9aa8d30913859e82884b"}, - {file = "numpy-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:435e7a933b9fda8126130b046975a968cc2d833b505475e588339e09f7672890"}, - {file = "numpy-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7678556eeb0152cbd1522b684dcd215250885993dd00adb93679ec3c0e6e091c"}, - {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2e8da03bd561504d9b20e7a12340870dfc206c64ea59b4cfee9fceb95070ee94"}, - {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:c9aa4496fd0e17e3843399f533d62857cef5900facf93e735ef65aa4bbc90ef0"}, - {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4ca91d61a4bf61b0f2228f24bbfa6a9facd5f8af03759fe2a655c50ae2c6610"}, - {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deaa09cd492e24fd9b15296844c0ad1b3c976da7907e1c1ed3a0ad21dded6f76"}, - {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:246535e2f7496b7ac85deffe932896a3577be7af8fb7eebe7146444680297e9a"}, - {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:daf43a3d1ea699402c5a850e5313680ac355b4adc9770cd5cfc2940e7861f1bf"}, - {file = "numpy-2.2.3-cp313-cp313t-win32.whl", hash = "sha256:cf802eef1f0134afb81fef94020351be4fe1d6681aadf9c5e862af6602af64ef"}, - {file = "numpy-2.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:aee2512827ceb6d7f517c8b85aa5d3923afe8fc7a57d028cffcd522f1c6fd082"}, - {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3c2ec8a0f51d60f1e9c0c5ab116b7fc104b165ada3f6c58abf881cb2eb16044d"}, - {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:ed2cf9ed4e8ebc3b754d398cba12f24359f018b416c380f577bbae112ca52fc9"}, - {file = "numpy-2.2.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39261798d208c3095ae4f7bc8eaeb3481ea8c6e03dc48028057d3cbdbdb8937e"}, - {file = "numpy-2.2.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:783145835458e60fa97afac25d511d00a1eca94d4a8f3ace9fe2043003c678e4"}, - {file = "numpy-2.2.3.tar.gz", hash = "sha256:dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020"}, -] - -[[package]] -name = "packaging" -version = "24.2" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, -] - -[[package]] -name = "pandas" -version = "2.2.3" -description = "Powerful data structures for data analysis, time series, and statistics" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, - {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, - {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, - {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, - {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, - {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, - {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, - {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, - {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, - {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, - {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, - {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, - {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, - {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, -] - -[package.dependencies] -numpy = [ - {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, -] -python-dateutil = ">=2.8.2" -pytz = ">=2020.1" -tzdata = ">=2022.7" - -[package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] -consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] -test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] - -[[package]] -name = "pdfminer-six" -version = "20231228" -description = "PDF parser and analyzer" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pdfminer.six-20231228-py3-none-any.whl", hash = "sha256:e8d3c3310e6fbc1fe414090123ab01351634b4ecb021232206c4c9a8ca3e3b8f"}, - {file = "pdfminer.six-20231228.tar.gz", hash = "sha256:6004da3ad1a7a4d45930cb950393df89b068e73be365a6ff64a838d37bcb08c4"}, -] - -[package.dependencies] -charset-normalizer = ">=2.0.0" -cryptography = ">=36.0.0" - -[package.extras] -dev = ["black", "mypy (==0.931)", "nox", "pytest"] -docs = ["sphinx", "sphinx-argparse"] -image = ["Pillow"] - -[[package]] -name = "pdfplumber" -version = "0.11.5" -description = "Plumb a PDF for detailed information about each char, rectangle, and line." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pdfplumber-0.11.5-py3-none-any.whl", hash = "sha256:a6e0921a57e0ef7356001a0fd811250b0e37a0b42630a922ee48f55cdd534070"}, - {file = "pdfplumber-0.11.5.tar.gz", hash = "sha256:dadd81b62a0b23e078cdd89de26e013850d4daf5690fcf46dec396b07e6737d6"}, -] - -[package.dependencies] -"pdfminer.six" = "20231228" -Pillow = ">=9.1" -pypdfium2 = ">=4.18.0" - -[[package]] -name = "pillow" -version = "10.4.0" -description = "Python Imaging Library (Fork)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, - {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, - {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] -fpx = ["olefile"] -mic = ["olefile"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] -xmp = ["defusedxml"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "propcache" -version = "0.2.1" -description = "Accelerated property cache" -optional = false -python-versions = ">=3.9" -files = [ - {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, - {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, - {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, - {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, - {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, - {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, - {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, - {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, - {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, - {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, - {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, - {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, - {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, - {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, - {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, -] - -[[package]] -name = "pyarrow" -version = "19.0.0" -description = "Python library for Apache Arrow" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pyarrow-19.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c318eda14f6627966997a7d8c374a87d084a94e4e38e9abbe97395c215830e0c"}, - {file = "pyarrow-19.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:62ef8360ff256e960f57ce0299090fb86423afed5e46f18f1225f960e05aae3d"}, - {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2795064647add0f16563e57e3d294dbfc067b723f0fd82ecd80af56dad15f503"}, - {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a218670b26fb1bc74796458d97bcab072765f9b524f95b2fccad70158feb8b17"}, - {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:66732e39eaa2247996a6b04c8aa33e3503d351831424cdf8d2e9a0582ac54b34"}, - {file = "pyarrow-19.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e675a3ad4732b92d72e4d24009707e923cab76b0d088e5054914f11a797ebe44"}, - {file = "pyarrow-19.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:f094742275586cdd6b1a03655ccff3b24b2610c3af76f810356c4c71d24a2a6c"}, - {file = "pyarrow-19.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:8e3a839bf36ec03b4315dc924d36dcde5444a50066f1c10f8290293c0427b46a"}, - {file = "pyarrow-19.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:ce42275097512d9e4e4a39aade58ef2b3798a93aa3026566b7892177c266f735"}, - {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9348a0137568c45601b031a8d118275069435f151cbb77e6a08a27e8125f59d4"}, - {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0144a712d990d60f7f42b7a31f0acaccf4c1e43e957f7b1ad58150d6f639c1"}, - {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2a1a109dfda558eb011e5f6385837daffd920d54ca00669f7a11132d0b1e6042"}, - {file = "pyarrow-19.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:be686bf625aa7b9bada18defb3a3ea3981c1099697239788ff111d87f04cd263"}, - {file = "pyarrow-19.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:239ca66d9a05844bdf5af128861af525e14df3c9591bcc05bac25918e650d3a2"}, - {file = "pyarrow-19.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a7bbe7109ab6198688b7079cbad5a8c22de4d47c4880d8e4847520a83b0d1b68"}, - {file = "pyarrow-19.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:4624c89d6f777c580e8732c27bb8e77fd1433b89707f17c04af7635dd9638351"}, - {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b6d3ce4288793350dc2d08d1e184fd70631ea22a4ff9ea5c4ff182130249d9b"}, - {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:450a7d27e840e4d9a384b5c77199d489b401529e75a3b7a3799d4cd7957f2f9c"}, - {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a08e2a8a039a3f72afb67a6668180f09fddaa38fe0d21f13212b4aba4b5d2451"}, - {file = "pyarrow-19.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f43f5aef2a13d4d56adadae5720d1fed4c1356c993eda8b59dace4b5983843c1"}, - {file = "pyarrow-19.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:2f672f5364b2d7829ef7c94be199bb88bf5661dd485e21d2d37de12ccb78a136"}, - {file = "pyarrow-19.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:cf3bf0ce511b833f7bc5f5bb3127ba731e97222023a444b7359f3a22e2a3b463"}, - {file = "pyarrow-19.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:4d8b0c0de0a73df1f1bf439af1b60f273d719d70648e898bc077547649bb8352"}, - {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92aff08e23d281c69835e4a47b80569242a504095ef6a6223c1f6bb8883431d"}, - {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3b78eff5968a1889a0f3bc81ca57e1e19b75f664d9c61a42a604bf9d8402aae"}, - {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:b34d3bde38eba66190b215bae441646330f8e9da05c29e4b5dd3e41bde701098"}, - {file = "pyarrow-19.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5418d4d0fab3a0ed497bad21d17a7973aad336d66ad4932a3f5f7480d4ca0c04"}, - {file = "pyarrow-19.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e82c3d5e44e969c217827b780ed8faf7ac4c53f934ae9238872e749fa531f7c9"}, - {file = "pyarrow-19.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:f208c3b58a6df3b239e0bb130e13bc7487ed14f39a9ff357b6415e3f6339b560"}, - {file = "pyarrow-19.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:c751c1c93955b7a84c06794df46f1cec93e18610dcd5ab7d08e89a81df70a849"}, - {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b903afaa5df66d50fc38672ad095806443b05f202c792694f3a604ead7c6ea6e"}, - {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a22a4bc0937856263df8b94f2f2781b33dd7f876f787ed746608e06902d691a5"}, - {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:5e8a28b918e2e878c918f6d89137386c06fe577cd08d73a6be8dafb317dc2d73"}, - {file = "pyarrow-19.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:29cd86c8001a94f768f79440bf83fee23963af5e7bc68ce3a7e5f120e17edf89"}, - {file = "pyarrow-19.0.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:c0423393e4a07ff6fea08feb44153302dd261d0551cc3b538ea7a5dc853af43a"}, - {file = "pyarrow-19.0.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:718947fb6d82409013a74b176bf93e0f49ef952d8a2ecd068fecd192a97885b7"}, - {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c1c162c4660e0978411a4761f91113dde8da3433683efa473501254563dcbe8"}, - {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c73268cf557e688efb60f1ccbc7376f7e18cd8e2acae9e663e98b194c40c1a2d"}, - {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:edfe6d3916e915ada9acc4e48f6dafca7efdbad2e6283db6fd9385a1b23055f1"}, - {file = "pyarrow-19.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:da410b70a7ab8eb524112f037a7a35da7128b33d484f7671a264a4c224ac131d"}, - {file = "pyarrow-19.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:597360ffc71fc8cceea1aec1fb60cb510571a744fffc87db33d551d5de919bec"}, - {file = "pyarrow-19.0.0.tar.gz", hash = "sha256:8d47c691765cf497aaeed4954d226568563f1b3b74ff61139f2d77876717084b"}, -] - -[package.extras] -test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"] - -[[package]] -name = "pycparser" -version = "2.22" -description = "C parser in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, - {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, -] - -[[package]] -name = "pydantic" -version = "2.10.6" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, - {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.27.2" -typing-extensions = ">=4.12.2" - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] - -[[package]] -name = "pydantic-core" -version = "2.27.2" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, - {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pydantic-settings" -version = "2.7.1" -description = "Settings management using Pydantic" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_settings-2.7.1-py3-none-any.whl", hash = "sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd"}, - {file = "pydantic_settings-2.7.1.tar.gz", hash = "sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93"}, -] - -[package.dependencies] -pydantic = ">=2.7.0" -python-dotenv = ">=0.21.0" - -[package.extras] -azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] -toml = ["tomli (>=2.0.1)"] -yaml = ["pyyaml (>=6.0.1)"] - -[[package]] -name = "pymupdf" -version = "1.25.3" -description = "A high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents." -optional = false -python-versions = ">=3.9" -files = [ - {file = "pymupdf-1.25.3-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:96878e1b748f9c2011aecb2028c5f96b5a347a9a91169130ad0133053d97915e"}, - {file = "pymupdf-1.25.3-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:6ef753005b72ebfd23470f72f7e30f61e21b0b5e748045ec5b8f89e6e3068d62"}, - {file = "pymupdf-1.25.3-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46d90c4f9e62d1856e8db4b9f04a202ff4a7f086a816af73abdc86adb7f5e25a"}, - {file = "pymupdf-1.25.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5de51efdbe4d486b6c1111c84e8a231cbfb426f3d6ff31ab530ad70e6f39756"}, - {file = "pymupdf-1.25.3-cp39-abi3-win32.whl", hash = "sha256:bca72e6089f985d800596e22973f79cc08af6cbff1d93e5bda9248326a03857c"}, - {file = "pymupdf-1.25.3-cp39-abi3-win_amd64.whl", hash = "sha256:4fb357438c9129fbf939b5af85323434df64e36759c399c376b62ad6da95498c"}, - {file = "pymupdf-1.25.3.tar.gz", hash = "sha256:b640187c64c5ac5d97505a92e836da299da79c2f689f3f94a67a37a493492193"}, -] - -[[package]] -name = "pypdfium2" -version = "4.30.0" -description = "Python bindings to PDFium" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pypdfium2-4.30.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b33ceded0b6ff5b2b93bc1fe0ad4b71aa6b7e7bd5875f1ca0cdfb6ba6ac01aab"}, - {file = "pypdfium2-4.30.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4e55689f4b06e2d2406203e771f78789bd4f190731b5d57383d05cf611d829de"}, - {file = "pypdfium2-4.30.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6e50f5ce7f65a40a33d7c9edc39f23140c57e37144c2d6d9e9262a2a854854"}, - {file = "pypdfium2-4.30.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3d0dd3ecaffd0b6dbda3da663220e705cb563918249bda26058c6036752ba3a2"}, - {file = "pypdfium2-4.30.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc3bf29b0db8c76cdfaac1ec1cde8edf211a7de7390fbf8934ad2aa9b4d6dfad"}, - {file = "pypdfium2-4.30.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1f78d2189e0ddf9ac2b7a9b9bd4f0c66f54d1389ff6c17e9fd9dc034d06eb3f"}, - {file = "pypdfium2-4.30.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:5eda3641a2da7a7a0b2f4dbd71d706401a656fea521b6b6faa0675b15d31a163"}, - {file = "pypdfium2-4.30.0-py3-none-musllinux_1_1_i686.whl", hash = "sha256:0dfa61421b5eb68e1188b0b2231e7ba35735aef2d867d86e48ee6cab6975195e"}, - {file = "pypdfium2-4.30.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:f33bd79e7a09d5f7acca3b0b69ff6c8a488869a7fab48fdf400fec6e20b9c8be"}, - {file = "pypdfium2-4.30.0-py3-none-win32.whl", hash = "sha256:ee2410f15d576d976c2ab2558c93d392a25fb9f6635e8dd0a8a3a5241b275e0e"}, - {file = "pypdfium2-4.30.0-py3-none-win_amd64.whl", hash = "sha256:90dbb2ac07be53219f56be09961eb95cf2473f834d01a42d901d13ccfad64b4c"}, - {file = "pypdfium2-4.30.0-py3-none-win_arm64.whl", hash = "sha256:119b2969a6d6b1e8d55e99caaf05290294f2d0fe49c12a3f17102d01c441bd29"}, - {file = "pypdfium2-4.30.0.tar.gz", hash = "sha256:48b5b7e5566665bc1015b9d69c1ebabe21f6aee468b509531c3c8318eeee2e16"}, -] - -[[package]] -name = "pytest" -version = "8.3.4" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-dotenv" -version = "1.0.1" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "pytz" -version = "2025.1" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2025.1-py2.py3-none-any.whl", hash = "sha256:89dd22dca55b46eac6eda23b2d72721bf1bdfef212645d81513ef5d03038de57"}, - {file = "pytz-2025.1.tar.gz", hash = "sha256:c2db42be2a2518b28e65f9207c4d05e6ff547d1efa4086469ef855e4ab70178e"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "rapidfuzz" -version = "3.12.1" -description = "rapid fuzzy string matching" -optional = false -python-versions = ">=3.9" -files = [ - {file = "rapidfuzz-3.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbb7ea2fd786e6d66f225ef6eef1728832314f47e82fee877cb2a793ebda9579"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ae41361de05762c1eaa3955e5355de7c4c6f30d1ef1ea23d29bf738a35809ab"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc3c39e0317e7f68ba01bac056e210dd13c7a0abf823e7b6a5fe7e451ddfc496"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69f2520296f1ae1165b724a3aad28c56fd0ac7dd2e4cff101a5d986e840f02d4"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34dcbf5a7daecebc242f72e2500665f0bde9dd11b779246c6d64d106a7d57c99"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:773ab37fccf6e0513891f8eb4393961ddd1053c6eb7e62eaa876e94668fc6d31"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ecf0e6de84c0bc2c0f48bc03ba23cef2c5f1245db7b26bc860c11c6fd7a097c"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4dc2ebad4adb29d84a661f6a42494df48ad2b72993ff43fad2b9794804f91e45"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8389d98b9f54cb4f8a95f1fa34bf0ceee639e919807bb931ca479c7a5f2930bf"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:165bcdecbfed9978962da1d3ec9c191b2ff9f1ccc2668fbaf0613a975b9aa326"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:129d536740ab0048c1a06ccff73c683f282a2347c68069affae8dbc423a37c50"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b67e390261ffe98ec86c771b89425a78b60ccb610c3b5874660216fcdbded4b"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-win32.whl", hash = "sha256:a66520180d3426b9dc2f8d312f38e19bc1fc5601f374bae5c916f53fa3534a7d"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:82260b20bc7a76556cecb0c063c87dad19246a570425d38f8107b8404ca3ac97"}, - {file = "rapidfuzz-3.12.1-cp310-cp310-win_arm64.whl", hash = "sha256:3a860d103bbb25c69c2e995fdf4fac8cb9f77fb69ec0a00469d7fd87ff148f46"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6d9afad7b16d01c9e8929b6a205a18163c7e61b6cd9bcf9c81be77d5afc1067a"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb424ae7240f2d2f7d8dda66a61ebf603f74d92f109452c63b0dbf400204a437"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42149e6d13bd6d06437d2a954dae2184dadbbdec0fdb82dafe92860d99f80519"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:760ac95d788f2964b73da01e0bdffbe1bf2ad8273d0437565ce9092ae6ad1fbc"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cf27e8e4bf7bf9d92ef04f3d2b769e91c3f30ba99208c29f5b41e77271a2614"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00ceb8ff3c44ab0d6014106c71709c85dee9feedd6890eff77c814aa3798952b"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b61c558574fbc093d85940c3264c08c2b857b8916f8e8f222e7b86b0bb7d12"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:346a2d8f17224e99f9ef988606c83d809d5917d17ad00207237e0965e54f9730"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d60d1db1b7e470e71ae096b6456e20ec56b52bde6198e2dbbc5e6769fa6797dc"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2477da227e266f9c712f11393182c69a99d3c8007ea27f68c5afc3faf401cc43"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8499c7d963ddea8adb6cffac2861ee39a1053e22ca8a5ee9de1197f8dc0275a5"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:12802e5c4d8ae104fb6efeeb436098325ce0dca33b461c46e8df015c84fbef26"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-win32.whl", hash = "sha256:e1061311d07e7cdcffa92c9b50c2ab4192907e70ca01b2e8e1c0b6b4495faa37"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6e4ed63e204daa863a802eec09feea5448617981ba5d150f843ad8e3ae071a4"}, - {file = "rapidfuzz-3.12.1-cp311-cp311-win_arm64.whl", hash = "sha256:920733a28c3af47870835d59ca9879579f66238f10de91d2b4b3f809d1ebfc5b"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f6235b57ae3faa3f85cb3f90c9fee49b21bd671b76e90fc99e8ca2bdf0b5e4a3"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af4585e5812632c357fee5ab781c29f00cd06bea58f8882ff244cc4906ba6c9e"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5942dc4460e5030c5f9e1d4c9383de2f3564a2503fe25e13e89021bcbfea2f44"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b31ab59e1a0df5afc21f3109b6cfd77b34040dbf54f1bad3989f885cfae1e60"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97c885a7a480b21164f57a706418c9bbc9a496ec6da087e554424358cadde445"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d844c0587d969ce36fbf4b7cbf0860380ffeafc9ac5e17a7cbe8abf528d07bb"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93c95dce8917bf428064c64024de43ffd34ec5949dd4425780c72bd41f9d969"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:834f6113d538af358f39296604a1953e55f8eeffc20cb4caf82250edbb8bf679"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a940aa71a7f37d7f0daac186066bf6668d4d3b7e7ef464cb50bc7ba89eae1f51"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ec9eaf73501c9a7de2c6938cb3050392e2ee0c5ca3921482acf01476b85a7226"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3c5ec360694ac14bfaeb6aea95737cf1a6cf805b5fe8ea7fd28814706c7fa838"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6b5e176524653ac46f1802bdd273a4b44a5f8d0054ed5013a8e8a4b72f254599"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-win32.whl", hash = "sha256:6f463c6f1c42ec90e45d12a6379e18eddd5cdf74138804d8215619b6f4d31cea"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:b894fa2b30cd6498a29e5c470cb01c6ea898540b7e048a0342775a5000531334"}, - {file = "rapidfuzz-3.12.1-cp312-cp312-win_arm64.whl", hash = "sha256:43bb17056c5d1332f517b888c4e57846c4b5f936ed304917eeb5c9ac85d940d4"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:97f824c15bc6933a31d6e3cbfa90188ba0e5043cf2b6dd342c2b90ee8b3fd47c"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a973b3f5cabf931029a3ae4a0f72e3222e53d412ea85fc37ddc49e1774f00fbf"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df7880e012228722dec1be02b9ef3898ed023388b8a24d6fa8213d7581932510"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c78582f50e75e6c2bc38c791ed291cb89cf26a3148c47860c1a04d6e5379c8e"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d7d9e6a04d8344b0198c96394c28874086888d0a2b2f605f30d1b27b9377b7d"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5620001fd4d6644a2f56880388179cc8f3767670f0670160fcb97c3b46c828af"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0666ab4c52e500af7ba5cc17389f5d15c0cdad06412c80312088519fdc25686d"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:27b4d440fa50b50c515a91a01ee17e8ede719dca06eef4c0cccf1a111a4cfad3"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:83dccfd5a754f2a0e8555b23dde31f0f7920601bfa807aa76829391ea81e7c67"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b572b634740e047c53743ed27a1bb3b4f93cf4abbac258cd7af377b2c4a9ba5b"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7fa7b81fb52902d5f78dac42b3d6c835a6633b01ddf9b202a3ca8443be4b2d6a"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b1d4fbff980cb6baef4ee675963c081f7b5d6580a105d6a4962b20f1f880e1fb"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-win32.whl", hash = "sha256:3fe8da12ea77271097b303fa7624cfaf5afd90261002314e3b0047d36f4afd8d"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:6f7e92fc7d2a7f02e1e01fe4f539324dfab80f27cb70a30dd63a95445566946b"}, - {file = "rapidfuzz-3.12.1-cp313-cp313-win_arm64.whl", hash = "sha256:e31be53d7f4905a6a038296d8b773a79da9ee9f0cd19af9490c5c5a22e37d2e5"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bef5c91d5db776523530073cda5b2a276283258d2f86764be4a008c83caf7acd"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:841e0c2a5fbe8fc8b9b1a56e924c871899932c0ece7fbd970aa1c32bfd12d4bf"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:046fc67f3885d94693a2151dd913aaf08b10931639cbb953dfeef3151cb1027c"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4d2d39b2e76c17f92edd6d384dc21fa020871c73251cdfa017149358937a41d"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5857dda85165b986c26a474b22907db6b93932c99397c818bcdec96340a76d5"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c26cd1b9969ea70dbf0dbda3d2b54ab4b2e683d0fd0f17282169a19563efeb1"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf56ea4edd69005786e6c80a9049d95003aeb5798803e7a2906194e7a3cb6472"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fbe7580b5fb2db8ebd53819171ff671124237a55ada3f64d20fc9a149d133960"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:018506a53c3b20dcbda8c93d4484b9eb1764c93d5ea16be103cf6b0d8b11d860"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:325c9c71b737fcd32e2a4e634c430c07dd3d374cfe134eded3fe46e4c6f9bf5d"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:930756639643e3aa02d3136b6fec74e5b9370a24f8796e1065cd8a857a6a6c50"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0acbd27543b158cb915fde03877383816a9e83257832818f1e803bac9b394900"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-win32.whl", hash = "sha256:80ff9283c54d7d29b2d954181e137deee89bec62f4a54675d8b6dbb6b15d3e03"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:fd37e53f0ed239d0cec27b250cec958982a8ba252ce64aa5e6052de3a82fa8db"}, - {file = "rapidfuzz-3.12.1-cp39-cp39-win_arm64.whl", hash = "sha256:4a4422e4f73a579755ab60abccb3ff148b5c224b3c7454a13ca217dfbad54da6"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b7cba636c32a6fc3a402d1cb2c70c6c9f8e6319380aaf15559db09d868a23e56"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b79286738a43e8df8420c4b30a92712dec6247430b130f8e015c3a78b6d61ac2"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dc1937198e7ff67e217e60bfa339f05da268d91bb15fec710452d11fe2fdf60"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b85817a57cf8db32dd5d2d66ccfba656d299b09eaf86234295f89f91be1a0db2"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04283c6f3e79f13a784f844cd5b1df4f518ad0f70c789aea733d106c26e1b4fb"}, - {file = "rapidfuzz-3.12.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a718f740553aad5f4daef790191511da9c6eae893ee1fc2677627e4b624ae2db"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cbdf145c7e4ebf2e81c794ed7a582c4acad19e886d5ad6676086369bd6760753"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0d03ad14a26a477be221fddc002954ae68a9e2402b9d85433f2d0a6af01aa2bb"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1187aeae9c89e838d2a0a2b954b4052e4897e5f62e5794ef42527bf039d469e"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd47dfb1bca9673a48b923b3d988b7668ee8efd0562027f58b0f2b7abf27144c"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187cdb402e223264eebed2fe671e367e636a499a7a9c82090b8d4b75aa416c2a"}, - {file = "rapidfuzz-3.12.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6899b41bf6c30282179f77096c1939f1454836440a8ab05b48ebf7026a3b590"}, - {file = "rapidfuzz-3.12.1.tar.gz", hash = "sha256:6a98bbca18b4a37adddf2d8201856441c26e9c981d8895491b5bc857b5f780eb"}, -] - -[package.extras] -all = ["numpy"] - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "six" -version = "1.17.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, -] - -[[package]] -name = "tabulate" -version = "0.9.0" -description = "Pretty-print tabular data" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, - {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, -] - -[package.extras] -widechars = ["wcwidth"] - -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -description = "Fast, Extensible Progress Meter" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, - {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] -discord = ["requests"] -notebook = ["ipywidgets (>=6)"] -slack = ["slack-sdk"] -telegram = ["requests"] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "tzdata" -version = "2025.1" -description = "Provider of IANA time zone data" -optional = false -python-versions = ">=2" -files = [ - {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, - {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.9" -files = [ - {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, - {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "xxhash" -version = "3.5.0" -description = "Python binding for xxHash" -optional = false -python-versions = ">=3.7" -files = [ - {file = "xxhash-3.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ece616532c499ee9afbb83078b1b952beffef121d989841f7f4b3dc5ac0fd212"}, - {file = "xxhash-3.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3171f693dbc2cef6477054a665dc255d996646b4023fe56cb4db80e26f4cc520"}, - {file = "xxhash-3.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5d3e570ef46adaf93fc81b44aca6002b5a4d8ca11bd0580c07eac537f36680"}, - {file = "xxhash-3.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cb29a034301e2982df8b1fe6328a84f4b676106a13e9135a0d7e0c3e9f806da"}, - {file = "xxhash-3.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0d307d27099bb0cbeea7260eb39ed4fdb99c5542e21e94bb6fd29e49c57a23"}, - {file = "xxhash-3.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0342aafd421795d740e514bc9858ebddfc705a75a8c5046ac56d85fe97bf196"}, - {file = "xxhash-3.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dbbd9892c5ebffeca1ed620cf0ade13eb55a0d8c84e0751a6653adc6ac40d0c"}, - {file = "xxhash-3.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4cc2d67fdb4d057730c75a64c5923abfa17775ae234a71b0200346bfb0a7f482"}, - {file = "xxhash-3.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ec28adb204b759306a3d64358a5e5c07d7b1dd0ccbce04aa76cb9377b7b70296"}, - {file = "xxhash-3.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1328f6d8cca2b86acb14104e381225a3d7b42c92c4b86ceae814e5c400dbb415"}, - {file = "xxhash-3.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8d47ebd9f5d9607fd039c1fbf4994e3b071ea23eff42f4ecef246ab2b7334198"}, - {file = "xxhash-3.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b96d559e0fcddd3343c510a0fe2b127fbff16bf346dd76280b82292567523442"}, - {file = "xxhash-3.5.0-cp310-cp310-win32.whl", hash = "sha256:61c722ed8d49ac9bc26c7071eeaa1f6ff24053d553146d5df031802deffd03da"}, - {file = "xxhash-3.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:9bed5144c6923cc902cd14bb8963f2d5e034def4486ab0bbe1f58f03f042f9a9"}, - {file = "xxhash-3.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:893074d651cf25c1cc14e3bea4fceefd67f2921b1bb8e40fcfeba56820de80c6"}, - {file = "xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1"}, - {file = "xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28b2fdcee797e1c1961cd3bcd3d545cab22ad202c846235197935e1df2f8ef7"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:924361811732ddad75ff23e90efd9ccfda4f664132feecb90895bade6a1b4623"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89997aa1c4b6a5b1e5b588979d1da048a3c6f15e55c11d117a56b75c84531f5a"}, - {file = "xxhash-3.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:685c4f4e8c59837de103344eb1c8a3851f670309eb5c361f746805c5471b8c88"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbd2ecfbfee70bc1a4acb7461fa6af7748ec2ab08ac0fa298f281c51518f982c"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:25b5a51dc3dfb20a10833c8eee25903fd2e14059e9afcd329c9da20609a307b2"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a8fb786fb754ef6ff8c120cb96629fb518f8eb5a61a16aac3a979a9dbd40a084"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a905ad00ad1e1c34fe4e9d7c1d949ab09c6fa90c919860c1534ff479f40fd12d"}, - {file = "xxhash-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:963be41bcd49f53af6d795f65c0da9b4cc518c0dd9c47145c98f61cb464f4839"}, - {file = "xxhash-3.5.0-cp311-cp311-win32.whl", hash = "sha256:109b436096d0a2dd039c355fa3414160ec4d843dfecc64a14077332a00aeb7da"}, - {file = "xxhash-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:b702f806693201ad6c0a05ddbbe4c8f359626d0b3305f766077d51388a6bac58"}, - {file = "xxhash-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:c4dcb4120d0cc3cc448624147dba64e9021b278c63e34a38789b688fd0da9bf3"}, - {file = "xxhash-3.5.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:14470ace8bd3b5d51318782cd94e6f94431974f16cb3b8dc15d52f3b69df8e00"}, - {file = "xxhash-3.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59aa1203de1cb96dbeab595ded0ad0c0056bb2245ae11fac11c0ceea861382b9"}, - {file = "xxhash-3.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08424f6648526076e28fae6ea2806c0a7d504b9ef05ae61d196d571e5c879c84"}, - {file = "xxhash-3.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61a1ff00674879725b194695e17f23d3248998b843eb5e933007ca743310f793"}, - {file = "xxhash-3.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2f2c61bee5844d41c3eb015ac652a0229e901074951ae48581d58bfb2ba01be"}, - {file = "xxhash-3.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d32a592cac88d18cc09a89172e1c32d7f2a6e516c3dfde1b9adb90ab5df54a6"}, - {file = "xxhash-3.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70dabf941dede727cca579e8c205e61121afc9b28516752fd65724be1355cc90"}, - {file = "xxhash-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5d0ddaca65ecca9c10dcf01730165fd858533d0be84c75c327487c37a906a27"}, - {file = "xxhash-3.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e5b5e16c5a480fe5f59f56c30abdeba09ffd75da8d13f6b9b6fd224d0b4d0a2"}, - {file = "xxhash-3.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149b7914451eb154b3dfaa721315117ea1dac2cc55a01bfbd4df7c68c5dd683d"}, - {file = "xxhash-3.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:eade977f5c96c677035ff39c56ac74d851b1cca7d607ab3d8f23c6b859379cab"}, - {file = "xxhash-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fa9f547bd98f5553d03160967866a71056a60960be00356a15ecc44efb40ba8e"}, - {file = "xxhash-3.5.0-cp312-cp312-win32.whl", hash = "sha256:f7b58d1fd3551b8c80a971199543379be1cee3d0d409e1f6d8b01c1a2eebf1f8"}, - {file = "xxhash-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:fa0cafd3a2af231b4e113fba24a65d7922af91aeb23774a8b78228e6cd785e3e"}, - {file = "xxhash-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:586886c7e89cb9828bcd8a5686b12e161368e0064d040e225e72607b43858ba2"}, - {file = "xxhash-3.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37889a0d13b0b7d739cfc128b1c902f04e32de17b33d74b637ad42f1c55101f6"}, - {file = "xxhash-3.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:97a662338797c660178e682f3bc180277b9569a59abfb5925e8620fba00b9fc5"}, - {file = "xxhash-3.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f85e0108d51092bdda90672476c7d909c04ada6923c14ff9d913c4f7dc8a3bc"}, - {file = "xxhash-3.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2fd827b0ba763ac919440042302315c564fdb797294d86e8cdd4578e3bc7f3"}, - {file = "xxhash-3.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82085c2abec437abebf457c1d12fccb30cc8b3774a0814872511f0f0562c768c"}, - {file = "xxhash-3.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07fda5de378626e502b42b311b049848c2ef38784d0d67b6f30bb5008642f8eb"}, - {file = "xxhash-3.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c279f0d2b34ef15f922b77966640ade58b4ccdfef1c4d94b20f2a364617a493f"}, - {file = "xxhash-3.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:89e66ceed67b213dec5a773e2f7a9e8c58f64daeb38c7859d8815d2c89f39ad7"}, - {file = "xxhash-3.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bcd51708a633410737111e998ceb3b45d3dbc98c0931f743d9bb0a209033a326"}, - {file = "xxhash-3.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3ff2c0a34eae7df88c868be53a8dd56fbdf592109e21d4bfa092a27b0bf4a7bf"}, - {file = "xxhash-3.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:4e28503dccc7d32e0b9817aa0cbfc1f45f563b2c995b7a66c4c8a0d232e840c7"}, - {file = "xxhash-3.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a6c50017518329ed65a9e4829154626f008916d36295b6a3ba336e2458824c8c"}, - {file = "xxhash-3.5.0-cp313-cp313-win32.whl", hash = "sha256:53a068fe70301ec30d868ece566ac90d873e3bb059cf83c32e76012c889b8637"}, - {file = "xxhash-3.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:80babcc30e7a1a484eab952d76a4f4673ff601f54d5142c26826502740e70b43"}, - {file = "xxhash-3.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:4811336f1ce11cac89dcbd18f3a25c527c16311709a89313c3acaf771def2d4b"}, - {file = "xxhash-3.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6e5f70f6dca1d3b09bccb7daf4e087075ff776e3da9ac870f86ca316736bb4aa"}, - {file = "xxhash-3.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e76e83efc7b443052dd1e585a76201e40b3411fe3da7af4fe434ec51b2f163b"}, - {file = "xxhash-3.5.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33eac61d0796ca0591f94548dcfe37bb193671e0c9bcf065789b5792f2eda644"}, - {file = "xxhash-3.5.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ec70a89be933ea49222fafc3999987d7899fc676f688dd12252509434636622"}, - {file = "xxhash-3.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86b8e7f703ec6ff4f351cfdb9f428955859537125904aa8c963604f2e9d3e7"}, - {file = "xxhash-3.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0adfbd36003d9f86c8c97110039f7539b379f28656a04097e7434d3eaf9aa131"}, - {file = "xxhash-3.5.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:63107013578c8a730419adc05608756c3fa640bdc6abe806c3123a49fb829f43"}, - {file = "xxhash-3.5.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:683b94dbd1ca67557850b86423318a2e323511648f9f3f7b1840408a02b9a48c"}, - {file = "xxhash-3.5.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:5d2a01dcce81789cf4b12d478b5464632204f4c834dc2d064902ee27d2d1f0ee"}, - {file = "xxhash-3.5.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:a9d360a792cbcce2fe7b66b8d51274ec297c53cbc423401480e53b26161a290d"}, - {file = "xxhash-3.5.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:f0b48edbebea1b7421a9c687c304f7b44d0677c46498a046079d445454504737"}, - {file = "xxhash-3.5.0-cp37-cp37m-win32.whl", hash = "sha256:7ccb800c9418e438b44b060a32adeb8393764da7441eb52aa2aa195448935306"}, - {file = "xxhash-3.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c3bc7bf8cb8806f8d1c9bf149c18708cb1c406520097d6b0a73977460ea03602"}, - {file = "xxhash-3.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:74752ecaa544657d88b1d1c94ae68031e364a4d47005a90288f3bab3da3c970f"}, - {file = "xxhash-3.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dee1316133c9b463aa81aca676bc506d3f80d8f65aeb0bba2b78d0b30c51d7bd"}, - {file = "xxhash-3.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:602d339548d35a8579c6b013339fb34aee2df9b4e105f985443d2860e4d7ffaa"}, - {file = "xxhash-3.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:695735deeddfb35da1677dbc16a083445360e37ff46d8ac5c6fcd64917ff9ade"}, - {file = "xxhash-3.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1030a39ba01b0c519b1a82f80e8802630d16ab95dc3f2b2386a0b5c8ed5cbb10"}, - {file = "xxhash-3.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5bc08f33c4966f4eb6590d6ff3ceae76151ad744576b5fc6c4ba8edd459fdec"}, - {file = "xxhash-3.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160e0c19ee500482ddfb5d5570a0415f565d8ae2b3fd69c5dcfce8a58107b1c3"}, - {file = "xxhash-3.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f1abffa122452481a61c3551ab3c89d72238e279e517705b8b03847b1d93d738"}, - {file = "xxhash-3.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d5e9db7ef3ecbfc0b4733579cea45713a76852b002cf605420b12ef3ef1ec148"}, - {file = "xxhash-3.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:23241ff6423378a731d84864bf923a41649dc67b144debd1077f02e6249a0d54"}, - {file = "xxhash-3.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:82b833d5563fefd6fceafb1aed2f3f3ebe19f84760fdd289f8b926731c2e6e91"}, - {file = "xxhash-3.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a80ad0ffd78bef9509eee27b4a29e56f5414b87fb01a888353e3d5bda7038bd"}, - {file = "xxhash-3.5.0-cp38-cp38-win32.whl", hash = "sha256:50ac2184ffb1b999e11e27c7e3e70cc1139047e7ebc1aa95ed12f4269abe98d4"}, - {file = "xxhash-3.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:392f52ebbb932db566973693de48f15ce787cabd15cf6334e855ed22ea0be5b3"}, - {file = "xxhash-3.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfc8cdd7f33d57f0468b0614ae634cc38ab9202c6957a60e31d285a71ebe0301"}, - {file = "xxhash-3.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0c48b6300cd0b0106bf49169c3e0536408dfbeb1ccb53180068a18b03c662ab"}, - {file = "xxhash-3.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe1a92cfbaa0a1253e339ccec42dbe6db262615e52df591b68726ab10338003f"}, - {file = "xxhash-3.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33513d6cc3ed3b559134fb307aae9bdd94d7e7c02907b37896a6c45ff9ce51bd"}, - {file = "xxhash-3.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eefc37f6138f522e771ac6db71a6d4838ec7933939676f3753eafd7d3f4c40bc"}, - {file = "xxhash-3.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a606c8070ada8aa2a88e181773fa1ef17ba65ce5dd168b9d08038e2a61b33754"}, - {file = "xxhash-3.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42eca420c8fa072cc1dd62597635d140e78e384a79bb4944f825fbef8bfeeef6"}, - {file = "xxhash-3.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:604253b2143e13218ff1ef0b59ce67f18b8bd1c4205d2ffda22b09b426386898"}, - {file = "xxhash-3.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6e93a5ad22f434d7876665444a97e713a8f60b5b1a3521e8df11b98309bff833"}, - {file = "xxhash-3.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7a46e1d6d2817ba8024de44c4fd79913a90e5f7265434cef97026215b7d30df6"}, - {file = "xxhash-3.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:30eb2efe6503c379b7ab99c81ba4a779748e3830241f032ab46bd182bf5873af"}, - {file = "xxhash-3.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c8aa771ff2c13dd9cda8166d685d7333d389fae30a4d2bb39d63ab5775de8606"}, - {file = "xxhash-3.5.0-cp39-cp39-win32.whl", hash = "sha256:5ed9ebc46f24cf91034544b26b131241b699edbfc99ec5e7f8f3d02d6eb7fba4"}, - {file = "xxhash-3.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:220f3f896c6b8d0316f63f16c077d52c412619e475f9372333474ee15133a558"}, - {file = "xxhash-3.5.0-cp39-cp39-win_arm64.whl", hash = "sha256:a7b1d8315d9b5e9f89eb2933b73afae6ec9597a258d52190944437158b49d38e"}, - {file = "xxhash-3.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2014c5b3ff15e64feecb6b713af12093f75b7926049e26a580e94dcad3c73d8c"}, - {file = "xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fab81ef75003eda96239a23eda4e4543cedc22e34c373edcaf744e721a163986"}, - {file = "xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e2febf914ace002132aa09169cc572e0d8959d0f305f93d5828c4836f9bc5a6"}, - {file = "xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d3a10609c51da2a1c0ea0293fc3968ca0a18bd73838455b5bca3069d7f8e32b"}, - {file = "xxhash-3.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a74f23335b9689b66eb6dbe2a931a88fcd7a4c2cc4b1cb0edba8ce381c7a1da"}, - {file = "xxhash-3.5.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b4154c00eb22e4d543f472cfca430e7962a0f1d0f3778334f2e08a7ba59363c"}, - {file = "xxhash-3.5.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d30bbc1644f726b825b3278764240f449d75f1a8bdda892e641d4a688b1494ae"}, - {file = "xxhash-3.5.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa0b72f2423e2aa53077e54a61c28e181d23effeaafd73fcb9c494e60930c8e"}, - {file = "xxhash-3.5.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13de2b76c1835399b2e419a296d5b38dc4855385d9e96916299170085ef72f57"}, - {file = "xxhash-3.5.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0691bfcc4f9c656bcb96cc5db94b4d75980b9d5589f2e59de790091028580837"}, - {file = "xxhash-3.5.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:297595fe6138d4da2c8ce9e72a04d73e58725bb60f3a19048bc96ab2ff31c692"}, - {file = "xxhash-3.5.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc1276d369452040cbb943300dc8abeedab14245ea44056a2943183822513a18"}, - {file = "xxhash-3.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2061188a1ba352fc699c82bff722f4baacb4b4b8b2f0c745d2001e56d0dfb514"}, - {file = "xxhash-3.5.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38c384c434021e4f62b8d9ba0bc9467e14d394893077e2c66d826243025e1f81"}, - {file = "xxhash-3.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e6a4dd644d72ab316b580a1c120b375890e4c52ec392d4aef3c63361ec4d77d1"}, - {file = "xxhash-3.5.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:531af8845aaadcadf951b7e0c1345c6b9c68a990eeb74ff9acd8501a0ad6a1c9"}, - {file = "xxhash-3.5.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ce379bcaa9fcc00f19affa7773084dd09f5b59947b3fb47a1ceb0179f91aaa1"}, - {file = "xxhash-3.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd1b2281d01723f076df3c8188f43f2472248a6b63118b036e641243656b1b0f"}, - {file = "xxhash-3.5.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c770750cc80e8694492244bca7251385188bc5597b6a39d98a9f30e8da984e0"}, - {file = "xxhash-3.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b150b8467852e1bd844387459aa6fbe11d7f38b56e901f9f3b3e6aba0d660240"}, - {file = "xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f"}, -] - -[[package]] -name = "yarl" -version = "1.18.3" -description = "Yet another URL library" -optional = false -python-versions = ">=3.9" -files = [ - {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, - {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, - {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, - {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, - {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, - {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, - {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, - {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, - {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, - {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, - {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, - {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, - {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, - {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, - {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, - {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, - {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, - {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, - {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, - {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, - {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, - {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, - {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, - {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, - {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, - {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, - {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, - {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, - {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, - {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, - {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, - {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, - {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, - {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, - {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, - {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, - {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, - {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, - {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, - {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, - {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, - {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, - {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, - {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, - {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, - {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, - {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, - {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, - {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, - {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, - {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, - {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, - {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, - {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, - {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, - {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, - {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, -] - -[package.dependencies] -idna = ">=2.0" -multidict = ">=4.0" -propcache = ">=0.2.0" - -[metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "ddd1896418384a59ea5cc93165805531aaa09c17748180768da7266c57c8307e" diff --git a/pyproject.toml b/pyproject.toml index e7eb36a..a6da4fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,35 +1,60 @@ -[tool.poetry] +[project] name = "pdftext" version = "0.6.3" description = "Extract structured text from pdfs quickly" -authors = ["Vik Paruchuri "] -license = "Apache-2.0" +authors = [ + {name = "Vik Paruchuri", email = "vik.paruchuri@gmail.com"} +] +license = {text = "Apache-2.0"} readme = "README.md" -repository = "https://github.com/VikParuchuri/pdftext" +requires-python = ">=3.10" keywords = ["pdf", "text", "extraction"] -packages = [ - {include = "pdftext"} +classifiers = [ + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "License :: OSI Approved :: Apache Software License", + "Operating System :: OS Independent", +] +dependencies = [ + "click>=8.1.8", + "pypdfium2==4.30.0", + "pydantic>=2.7.1,<3.0.0", + "pydantic-settings>=2.2.1,<3.0.0", + "numpy>=2.2.4", + "pillow>=10.3.0,<11.0.0", + "pytest>=8.3.5", + "mypy>=1.15.0", + "aiofiles>=24.1.0", ] -[tool.poetry.dependencies] -python = "^3.10" -pypdfium2 = "=4.30.0" -pydantic = "^2.7.1" -pydantic-settings = "^2.2.1" - -click = "^8.1.8" -[tool.poetry.group.dev.dependencies] -pymupdf = "^1.24.2" -datasets = "^2.19.0" -pdfplumber = "^0.11.0" -pillow = "^10.3.0" -rapidfuzz = "^3.8.1" -tabulate = "^0.9.0" - -pytest = "^8.3.4" -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" +[project.urls] +Repository = "https://github.com/VikParuchuri/pdftext" -[tool.poetry.scripts] +[project.scripts] pdftext = "pdftext.scripts.extract_text:extract_text_cli" + +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[tool.setuptools] +packages = ["pdftext", "pdftext.scripts", "pdftext.pdf"] + +[tool.pytest.ini_options] +minversion = "6.0" +addopts = "-ra -q" +testpaths = [ + "tests", +] + +[tool.mypy] +# Default mypy settings can go here if needed in the future + +[[tool.mypy.overrides]] +module = "pdftext.tables" +ignore_errors = true + +[project.optional-dependencies] +dev = ["aiofiles"] diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..0bb3211 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,8 @@ +-r requirements.txt +pymupdf>=1.24.2,<2.0.0 +datasets>=2.19.0,<3.0.0 +pdfplumber>=0.11.0,<0.12.0 +pillow>=10.3.0,<11.0.0 +rapidfuzz>=3.8.1,<4.0.0 +tabulate>=0.9.0,<0.10.0 +pytest>=8.3.4,<9.0.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a6a7fed --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +pypdfium2==4.30.0 +pydantic>=2.7.1,<3.0.0 +pydantic-settings>=2.2.1,<3.0.0 +click>=8.1.8,<9.0.0 \ No newline at end of file diff --git a/test.py b/test.py new file mode 100644 index 0000000..fe8a5ac --- /dev/null +++ b/test.py @@ -0,0 +1,364 @@ +from pdftext.extraction import dictionary_output +import argparse +import json +import pypdfium2 as pdfium +import asyncio +import aiofiles +import io +import base64 +import os +from pathlib import Path +from typing import List, Optional, Dict, Any, Union, Tuple +from PIL import Image, ImageDraw +from pdftext.schema import Bbox + + +def parse_range_str(range_str: str) -> List[int]: + """Parse a string of page ranges into a list of page numbers. + + Examples: + "1,2-4,10" -> [0, 1, 2, 3, 9] # 0-indexed + """ + pages = [] + for part in range_str.split(","): + if "-" in part: + start, end = map(int, part.split("-")) + pages.extend(range(start - 1, end)) # Convert to 0-indexed + else: + pages.append(int(part) - 1) # Convert to 0-indexed + return pages + + +def extract_text_from_pdf( + pdf_path: str, + sort: bool = False, + page_range: Optional[str] = None, + flatten_pdf: bool = False, + keep_chars: bool = False, + keep_hyphens: bool = False, + workers: Optional[int] = None, +) -> List[Dict[str, Any]]: + """Extract text from PDF synchronously using dictionary_output.""" + pdf_path = Path(pdf_path) + + # Extract page range if provided + pages = None + if page_range is not None: + pdf_doc = pdfium.PdfDocument(pdf_path) + pages = parse_range_str(page_range) + doc_len = len(pdf_doc) + pdf_doc.close() + if not all(0 <= p < doc_len for p in pages): + raise ValueError("Invalid page number(s) provided") + + # Extract text using dictionary_output + extracted_data = dictionary_output( + pdf_path, + sort=sort, + page_range=pages, + flatten_pdf=flatten_pdf, + keep_chars=keep_chars, + workers=workers, + disable_links=True, + ) + + return extracted_data + + +def preprocess_image(page_image: Union[str, io.BytesIO]) -> Image.Image: + """Preprocess the page image from base64 string or BytesIO object.""" + if isinstance(page_image, io.BytesIO): + image = Image.open(page_image) + else: + image_data = base64.b64decode(page_image) + image = Image.open(io.BytesIO(image_data)) + return image + + +def resize_image(image: Image.Image, max_size: int) -> Image.Image: + """Resize image if it exceeds the maximum size.""" + # Calculate current size in bytes (approximate) + current_size = image.width * image.height * len(image.getbands()) + + if current_size <= max_size: + return image + + # Calculate scale factor to reduce to max_size + scale_factor = (max_size / current_size) ** 0.5 + new_width = int(image.width * scale_factor) + new_height = int(image.height * scale_factor) + + return image.resize((new_width, new_height), Image.LANCZOS) + + +def get_encoded_image(pil_image: Image.Image) -> str: + """Convert PIL image to base64 encoded string.""" + max_size = 3 * 1024 * 1024 # 3 MB + pil_image = resize_image(pil_image, max_size) + img_bytes = io.BytesIO() + pil_image.save(img_bytes, format="PNG") + img_bytes = img_bytes.getvalue() + encoded_img = base64.b64encode(img_bytes).decode("utf-8") + return encoded_img + + +def rescale_bbox( + src_bbox: List[float], dst_bbox: List[float], bbox: List[float] +) -> List[float]: + """Rescale a bounding box from one coordinate system to another.""" + src_width = src_bbox[2] - src_bbox[0] + src_height = src_bbox[3] - src_bbox[1] + dst_width = dst_bbox[2] - dst_bbox[0] + dst_height = dst_bbox[3] - dst_bbox[1] + + x_scale = dst_width / src_width + y_scale = dst_height / src_height + + return [ + dst_bbox[0] + (bbox[0] - src_bbox[0]) * x_scale, + dst_bbox[1] + (bbox[1] - src_bbox[1]) * y_scale, + dst_bbox[0] + (bbox[2] - src_bbox[0]) * x_scale, + dst_bbox[1] + (bbox[3] - src_bbox[1]) * y_scale, + ] + + +def union_bbox(bbox1: Optional[List[float]], bbox2: List[float]) -> List[float]: + """Compute the union of two bounding boxes.""" + if bbox1 is None: + return bbox2 + return [ + min(bbox1[0], bbox2[0]), + min(bbox1[1], bbox2[1]), + max(bbox1[2], bbox2[2]), + max(bbox1[3], bbox2[3]), + ] + + +def visualize_bboxes( + page: Dict[str, Any], + text_color: str = "red", + image_color: str = "blue", + crop_flag: bool = True, +) -> Tuple[str, Image.Image]: + """Draw bounding boxes on the page image and return the encoded image and PIL Image.""" + # Extract all bboxes from the page + text_bboxes = [] + image_bboxes = [] + + blocks = page.get("blocks", []) + page_image = page.get("page_image", "") + width = page.get("width", 0) + height = page.get("height", 0) + + for block in blocks: + # all_bboxes.append(block.get('bbox', [])) + for line in block.get("lines", []): + # all_bboxes.append(line.get('bbox', [])) + for span in line.get("spans", []): + text_bboxes.append(span.get("bbox", [])) + + images = page.get("images", []) + for image in images: + image_bboxes.append(image.bbox) + + img = preprocess_image(page_image) + img_bbox = [0, 0, img.size[0], img.size[1]] + + # Scale page bboxes to image coordinates + page_bbox = [0, 0, width, height] + scaled_text_bboxes = [ + rescale_bbox(page_bbox, img_bbox, bbox) for bbox in text_bboxes + ] + scaled_image_bboxes = [ + rescale_bbox(page_bbox, img_bbox, bbox) for bbox in image_bboxes + ] + all_scaled_bboxes = scaled_text_bboxes + scaled_image_bboxes + + # Draw boxes on the image + draw = ImageDraw.Draw(img) + for box in scaled_text_bboxes: + draw.rectangle(box, outline=text_color, width=1) + for box in scaled_image_bboxes: + draw.rectangle(box, outline=image_color, width=1) + + if crop_flag and all_scaled_bboxes: + # Find the union of all bboxes + missing_boxes_bound = None + for box in all_scaled_bboxes: + missing_boxes_bound = union_bbox(missing_boxes_bound, box) + + # Add some padding + padding = img.height * 0.05 + crop = ( + max(0, missing_boxes_bound[0] - padding), + max(0, missing_boxes_bound[1] - padding), + min(img.width, missing_boxes_bound[2] + padding), + min(img.height, missing_boxes_bound[3] + padding), + ) + + # Ensure minimum height + if crop[3] - crop[1] < img.height * 0.1: + diff = img.height * 0.1 - (crop[3] - crop[1]) + crop = ( + crop[0], + max(0, crop[1] - diff / 2), + crop[2], + min(img.height, crop[3] + diff / 2), + ) + + img = img.crop(crop) + + return get_encoded_image(img), img + + +async def save_visualization_image( + image: Image.Image, output_path: str, page_num: int +) -> str: + """Save visualization image to disk and return the file path.""" + # Create directory if it doesn't exist + os.makedirs(output_path, exist_ok=True) + + # Generate filename + filename = f"page_{page_num+1}_visualization.png" + filepath = os.path.join(output_path, filename) + + # Save image + image.save(filepath) + return filepath + + +async def process_pages_with_ocr( + extracted_data: List[Dict[str, Any]], + visualize: bool = False, + viz_output_dir: Optional[str] = None, +) -> Dict[str, Any]: + """Process extracted pages through OCR asynchronously.""" + results = [] + visualization_paths = [] + + for page_idx, page_data in enumerate(extracted_data): + + # Visualize bounding boxes if requested + if visualize: + _, pil_img = visualize_bboxes(page_data) + + # Always save visualization as separate file + output_dir = viz_output_dir or os.path.join( + os.path.dirname(os.path.abspath(__file__)), "visualizations" + ) + filepath = await save_visualization_image(pil_img, output_dir, page_idx) + visualization_paths.append(filepath) + # Count lines in dictionary format + num_lines = sum( + len(block.get("lines", [])) for block in page_data.get("blocks", []) + ) + print( + f"Page {page_idx+1}: Found {num_lines} lines, saved visualization to {filepath}" + ) + + output = {"pages": results} + if visualize and visualization_paths: + output["visualization_paths"] = visualization_paths + + return output + + +class BboxEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Bbox): + return obj.bbox + return super().default(obj) + + +async def save_output( + output_data: Dict[str, Any], out_path: Optional[str] = None +) -> None: + """Save output data to a file or print to stdout.""" + if out_path: + async with aiofiles.open(out_path, "w") as f: + await f.write(json.dumps(output_data, cls=BboxEncoder)) + else: + print(json.dumps(output_data, cls=BboxEncoder)) + + +async def main(): + parser = argparse.ArgumentParser( + description="Extract plain text or JSON from PDF and process with OCR." + ) + parser.add_argument("pdf_path", type=str, help="Path to the input PDF file") + parser.add_argument( + "--out_path", type=str, help="Path to the output file, defaults to stdout" + ) + parser.add_argument( + "--json", + dest="json_output", + action="store_true", + help="Output json instead of plain text", + ) + parser.add_argument( + "--sort", action="store_true", help="Attempt to sort the text by reading order" + ) + parser.add_argument( + "--keep_hyphens", action="store_true", help="Keep hyphens in words" + ) + parser.add_argument( + "--page_range", + type=str, + help="Page numbers or ranges to extract, comma separated like 1,2-4,10", + ) + parser.add_argument( + "--flatten_pdf", + action="store_true", + help="Flatten form fields and annotations into page contents", + ) + parser.add_argument( + "--keep_chars", action="store_true", help="Keep character level information" + ) + parser.add_argument( + "--workers", type=int, help="Number of workers to use for parallel processing" + ) + parser.add_argument( + "--visualize", + action="store_true", + help="Visualize bounding boxes on the page image", + ) + parser.add_argument( + "--viz_output_dir", + type=str, + help="Directory to save visualization images (defaults to ./visualizations)", + ) + + args = parser.parse_args() + + try: + # Extract text synchronously + extracted_data = extract_text_from_pdf( + pdf_path=args.pdf_path, + sort=args.sort, + page_range=args.page_range, + flatten_pdf=args.flatten_pdf, + keep_chars=args.keep_chars, + keep_hyphens=args.keep_hyphens, + workers=args.workers, + ) + + # Process with OCR asynchronously + ocr_results = await process_pages_with_ocr( + extracted_data, visualize=args.visualize, viz_output_dir=args.viz_output_dir + ) + + # Save or print results + if args.json_output: + # If JSON output is requested, serialize extracted_data instead of ocr_results + await save_output({"pages": extracted_data}, args.out_path) + else: + await save_output(ocr_results, args.out_path) + except Exception as e: + print(f"Error processing PDF: {e}") + import traceback + + traceback.print_exc() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..dfc0321 --- /dev/null +++ b/test.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +FILE_NAME="deepseek_1" +# Default values +INPUT_FILE="./input/${FILE_NAME}.pdf" +OUTPUT_JSON="./output/${FILE_NAME}_bbox.json" +VIZ_DIR="./output/${FILE_NAME}" +LOG_FILE="./output/${FILE_NAME}.log" +VISUALIZE="--visualize" + +# Help function +show_help() { + echo "Usage: ./run.sh [options]" + echo "Options:" + echo " -i, --input FILE Input PDF file (default: $INPUT_FILE)" + echo " -o, --output FILE Output JSON file (default: $OUTPUT_JSON)" + echo " -v, --viz-dir DIR Visualization output directory (default: $VIZ_DIR)" + echo " -n, --no-visualize Disable visualization" + echo " -h, --help Show this help message" + exit 1 +} + +# Parse command line arguments +while [[ $# -gt 0 ]]; do + case "$1" in + -i|--input) + INPUT_FILE="$2" + shift 2 + ;; + -o|--output) + OUTPUT_JSON="$2" + shift 2 + ;; + -v|--viz-dir) + VIZ_DIR="$2" + shift 2 + ;; + -n|--no-visualize) + VISUALIZE="" + shift + ;; + -h|--help) + show_help + ;; + *) + echo "Unknown option: $1" + show_help + ;; + esac +done + +# Run the parser with the specified or default options +python3 test.py "$INPUT_FILE" --json --out_path "$OUTPUT_JSON" --viz_output_dir "$VIZ_DIR" $VISUALIZE > "$LOG_FILE" diff --git a/tests/test_extraction.py b/tests/test_extraction.py index dc8fdde..6802245 100644 --- a/tests/test_extraction.py +++ b/tests/test_extraction.py @@ -7,7 +7,7 @@ def test_paginated_output(pdf_path, pdf_doc): assert len(text) == len(pdf_doc) assert "Subspace" in text[0] -def text_plain_text_output(pdf_path): +def test_plain_text_output(pdf_path): text = plain_text_output(pdf_path) assert "Subspace" in text diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..d0663de --- /dev/null +++ b/uv.lock @@ -0,0 +1,503 @@ +version = 1 +revision = 1 +requires-python = ">=3.10" + +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[package]] +name = "mypy" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433 }, + { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472 }, + { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424 }, + { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450 }, + { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765 }, + { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701 }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "numpy" +version = "2.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/78/31103410a57bc2c2b93a3597340a8119588571f6a4539067546cb9a0bfac/numpy-2.2.4.tar.gz", hash = "sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", size = 20270701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/89/a79e86e5c1433926ed7d60cb267fb64aa578b6101ab645800fd43b4801de/numpy-2.2.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8146f3550d627252269ac42ae660281d673eb6f8b32f113538e0cc2a9aed42b9", size = 21250661 }, + { url = "https://files.pythonhosted.org/packages/79/c2/f50921beb8afd60ed9589ad880332cfefdb805422210d327fb48f12b7a81/numpy-2.2.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e642d86b8f956098b564a45e6f6ce68a22c2c97a04f5acd3f221f57b8cb850ae", size = 14389926 }, + { url = "https://files.pythonhosted.org/packages/c7/b9/2c4e96130b0b0f97b0ef4a06d6dae3b39d058b21a5e2fa2decd7fd6b1c8f/numpy-2.2.4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:a84eda42bd12edc36eb5b53bbcc9b406820d3353f1994b6cfe453a33ff101775", size = 5428329 }, + { url = "https://files.pythonhosted.org/packages/7f/a5/3d7094aa898f4fc5c84cdfb26beeae780352d43f5d8bdec966c4393d644c/numpy-2.2.4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:4ba5054787e89c59c593a4169830ab362ac2bee8a969249dc56e5d7d20ff8df9", size = 6963559 }, + { url = "https://files.pythonhosted.org/packages/4c/22/fb1be710a14434c09080dd4a0acc08939f612ec02efcb04b9e210474782d/numpy-2.2.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7716e4a9b7af82c06a2543c53ca476fa0b57e4d760481273e09da04b74ee6ee2", size = 14368066 }, + { url = "https://files.pythonhosted.org/packages/c2/07/2e5cc71193e3ef3a219ffcf6ca4858e46ea2be09c026ddd480d596b32867/numpy-2.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adf8c1d66f432ce577d0197dceaac2ac00c0759f573f28516246351c58a85020", size = 16417040 }, + { url = "https://files.pythonhosted.org/packages/1a/97/3b1537776ad9a6d1a41813818343745e8dd928a2916d4c9edcd9a8af1dac/numpy-2.2.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:218f061d2faa73621fa23d6359442b0fc658d5b9a70801373625d958259eaca3", size = 15879862 }, + { url = "https://files.pythonhosted.org/packages/b0/b7/4472f603dd45ef36ff3d8e84e84fe02d9467c78f92cc121633dce6da307b/numpy-2.2.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:df2f57871a96bbc1b69733cd4c51dc33bea66146b8c63cacbfed73eec0883017", size = 18206032 }, + { url = "https://files.pythonhosted.org/packages/0d/bd/6a092963fb82e6c5aa0d0440635827bbb2910da229545473bbb58c537ed3/numpy-2.2.4-cp310-cp310-win32.whl", hash = "sha256:a0258ad1f44f138b791327961caedffbf9612bfa504ab9597157806faa95194a", size = 6608517 }, + { url = "https://files.pythonhosted.org/packages/01/e3/cb04627bc2a1638948bc13e818df26495aa18e20d5be1ed95ab2b10b6847/numpy-2.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:0d54974f9cf14acf49c60f0f7f4084b6579d24d439453d5fc5805d46a165b542", size = 12943498 }, + { url = "https://files.pythonhosted.org/packages/16/fb/09e778ee3a8ea0d4dc8329cca0a9c9e65fed847d08e37eba74cb7ed4b252/numpy-2.2.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e9e0a277bb2eb5d8a7407e14688b85fd8ad628ee4e0c7930415687b6564207a4", size = 21254989 }, + { url = "https://files.pythonhosted.org/packages/a2/0a/1212befdbecab5d80eca3cde47d304cad986ad4eec7d85a42e0b6d2cc2ef/numpy-2.2.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9eeea959168ea555e556b8188da5fa7831e21d91ce031e95ce23747b7609f8a4", size = 14425910 }, + { url = "https://files.pythonhosted.org/packages/2b/3e/e7247c1d4f15086bb106c8d43c925b0b2ea20270224f5186fa48d4fb5cbd/numpy-2.2.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bd3ad3b0a40e713fc68f99ecfd07124195333f1e689387c180813f0e94309d6f", size = 5426490 }, + { url = "https://files.pythonhosted.org/packages/5d/fa/aa7cd6be51419b894c5787a8a93c3302a1ed4f82d35beb0613ec15bdd0e2/numpy-2.2.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:cf28633d64294969c019c6df4ff37f5698e8326db68cc2b66576a51fad634880", size = 6967754 }, + { url = "https://files.pythonhosted.org/packages/d5/ee/96457c943265de9fadeb3d2ffdbab003f7fba13d971084a9876affcda095/numpy-2.2.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fa8fa7697ad1646b5c93de1719965844e004fcad23c91228aca1cf0800044a1", size = 14373079 }, + { url = "https://files.pythonhosted.org/packages/c5/5c/ceefca458559f0ccc7a982319f37ed07b0d7b526964ae6cc61f8ad1b6119/numpy-2.2.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4162988a360a29af158aeb4a2f4f09ffed6a969c9776f8f3bdee9b06a8ab7e5", size = 16428819 }, + { url = "https://files.pythonhosted.org/packages/22/31/9b2ac8eee99e001eb6add9fa27514ef5e9faf176169057a12860af52704c/numpy-2.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:892c10d6a73e0f14935c31229e03325a7b3093fafd6ce0af704be7f894d95687", size = 15881470 }, + { url = "https://files.pythonhosted.org/packages/f0/dc/8569b5f25ff30484b555ad8a3f537e0225d091abec386c9420cf5f7a2976/numpy-2.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db1f1c22173ac1c58db249ae48aa7ead29f534b9a948bc56828337aa84a32ed6", size = 18218144 }, + { url = "https://files.pythonhosted.org/packages/5e/05/463c023a39bdeb9bb43a99e7dee2c664cb68d5bb87d14f92482b9f6011cc/numpy-2.2.4-cp311-cp311-win32.whl", hash = "sha256:ea2bb7e2ae9e37d96835b3576a4fa4b3a97592fbea8ef7c3587078b0068b8f09", size = 6606368 }, + { url = "https://files.pythonhosted.org/packages/8b/72/10c1d2d82101c468a28adc35de6c77b308f288cfd0b88e1070f15b98e00c/numpy-2.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:f7de08cbe5551911886d1ab60de58448c6df0f67d9feb7d1fb21e9875ef95e91", size = 12947526 }, + { url = "https://files.pythonhosted.org/packages/a2/30/182db21d4f2a95904cec1a6f779479ea1ac07c0647f064dea454ec650c42/numpy-2.2.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", size = 20947156 }, + { url = "https://files.pythonhosted.org/packages/24/6d/9483566acfbda6c62c6bc74b6e981c777229d2af93c8eb2469b26ac1b7bc/numpy-2.2.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", size = 14133092 }, + { url = "https://files.pythonhosted.org/packages/27/f6/dba8a258acbf9d2bed2525cdcbb9493ef9bae5199d7a9cb92ee7e9b2aea6/numpy-2.2.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", size = 5163515 }, + { url = "https://files.pythonhosted.org/packages/62/30/82116199d1c249446723c68f2c9da40d7f062551036f50b8c4caa42ae252/numpy-2.2.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", size = 6696558 }, + { url = "https://files.pythonhosted.org/packages/0e/b2/54122b3c6df5df3e87582b2e9430f1bdb63af4023c739ba300164c9ae503/numpy-2.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", size = 14084742 }, + { url = "https://files.pythonhosted.org/packages/02/e2/e2cbb8d634151aab9528ef7b8bab52ee4ab10e076509285602c2a3a686e0/numpy-2.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", size = 16134051 }, + { url = "https://files.pythonhosted.org/packages/8e/21/efd47800e4affc993e8be50c1b768de038363dd88865920439ef7b422c60/numpy-2.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", size = 15578972 }, + { url = "https://files.pythonhosted.org/packages/04/1e/f8bb88f6157045dd5d9b27ccf433d016981032690969aa5c19e332b138c0/numpy-2.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", size = 17898106 }, + { url = "https://files.pythonhosted.org/packages/2b/93/df59a5a3897c1f036ae8ff845e45f4081bb06943039ae28a3c1c7c780f22/numpy-2.2.4-cp312-cp312-win32.whl", hash = "sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", size = 6311190 }, + { url = "https://files.pythonhosted.org/packages/46/69/8c4f928741c2a8efa255fdc7e9097527c6dc4e4df147e3cadc5d9357ce85/numpy-2.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", size = 12644305 }, + { url = "https://files.pythonhosted.org/packages/2a/d0/bd5ad792e78017f5decfb2ecc947422a3669a34f775679a76317af671ffc/numpy-2.2.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", size = 20933623 }, + { url = "https://files.pythonhosted.org/packages/c3/bc/2b3545766337b95409868f8e62053135bdc7fa2ce630aba983a2aa60b559/numpy-2.2.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", size = 14148681 }, + { url = "https://files.pythonhosted.org/packages/6a/70/67b24d68a56551d43a6ec9fe8c5f91b526d4c1a46a6387b956bf2d64744e/numpy-2.2.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", size = 5148759 }, + { url = "https://files.pythonhosted.org/packages/1c/8b/e2fc8a75fcb7be12d90b31477c9356c0cbb44abce7ffb36be39a0017afad/numpy-2.2.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", size = 6683092 }, + { url = "https://files.pythonhosted.org/packages/13/73/41b7b27f169ecf368b52533edb72e56a133f9e86256e809e169362553b49/numpy-2.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", size = 14081422 }, + { url = "https://files.pythonhosted.org/packages/4b/04/e208ff3ae3ddfbafc05910f89546382f15a3f10186b1f56bd99f159689c2/numpy-2.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", size = 16132202 }, + { url = "https://files.pythonhosted.org/packages/fe/bc/2218160574d862d5e55f803d88ddcad88beff94791f9c5f86d67bd8fbf1c/numpy-2.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", size = 15573131 }, + { url = "https://files.pythonhosted.org/packages/a5/78/97c775bc4f05abc8a8426436b7cb1be806a02a2994b195945600855e3a25/numpy-2.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", size = 17894270 }, + { url = "https://files.pythonhosted.org/packages/b9/eb/38c06217a5f6de27dcb41524ca95a44e395e6a1decdc0c99fec0832ce6ae/numpy-2.2.4-cp313-cp313-win32.whl", hash = "sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", size = 6308141 }, + { url = "https://files.pythonhosted.org/packages/52/17/d0dd10ab6d125c6d11ffb6dfa3423c3571befab8358d4f85cd4471964fcd/numpy-2.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", size = 12636885 }, + { url = "https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", size = 20961829 }, + { url = "https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", size = 14161419 }, + { url = "https://files.pythonhosted.org/packages/03/68/07b4cd01090ca46c7a336958b413cdbe75002286295f2addea767b7f16c9/numpy-2.2.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", size = 5196414 }, + { url = "https://files.pythonhosted.org/packages/a5/fd/d4a29478d622fedff5c4b4b4cedfc37a00691079623c0575978d2446db9e/numpy-2.2.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", size = 6709379 }, + { url = "https://files.pythonhosted.org/packages/41/78/96dddb75bb9be730b87c72f30ffdd62611aba234e4e460576a068c98eff6/numpy-2.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", size = 14051725 }, + { url = "https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", size = 16101638 }, + { url = "https://files.pythonhosted.org/packages/fa/03/74c5b631ee1ded596945c12027649e6344614144369fd3ec1aaced782882/numpy-2.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", size = 15571717 }, + { url = "https://files.pythonhosted.org/packages/cb/dc/4fc7c0283abe0981e3b89f9b332a134e237dd476b0c018e1e21083310c31/numpy-2.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", size = 17879998 }, + { url = "https://files.pythonhosted.org/packages/e5/2b/878576190c5cfa29ed896b518cc516aecc7c98a919e20706c12480465f43/numpy-2.2.4-cp313-cp313t-win32.whl", hash = "sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", size = 6366896 }, + { url = "https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl", hash = "sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", size = 12739119 }, + { url = "https://files.pythonhosted.org/packages/b2/5c/f09c33a511aff41a098e6ef3498465d95f6360621034a3d95f47edbc9119/numpy-2.2.4-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7051ee569db5fbac144335e0f3b9c2337e0c8d5c9fee015f259a5bd70772b7e8", size = 21081956 }, + { url = "https://files.pythonhosted.org/packages/ba/30/74c48b3b6494c4b820b7fa1781d441e94d87a08daa5b35d222f06ba41a6f/numpy-2.2.4-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:ab2939cd5bec30a7430cbdb2287b63151b77cf9624de0532d629c9a1c59b1d5c", size = 6827143 }, + { url = "https://files.pythonhosted.org/packages/54/f5/ab0d2f48b490535c7a80e05da4a98902b632369efc04f0e47bb31ca97d8f/numpy-2.2.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0f35b19894a9e08639fd60a1ec1978cb7f5f7f1eace62f38dd36be8aecdef4d", size = 16233350 }, + { url = "https://files.pythonhosted.org/packages/3b/3a/2f6d8c1f8e45d496bca6baaec93208035faeb40d5735c25afac092ec9a12/numpy-2.2.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b4adfbbc64014976d2f91084915ca4e626fbf2057fb81af209c1a6d776d23e3d", size = 12857565 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pdftext" +version = "0.6.2" +source = { editable = "." } +dependencies = [ + { name = "aiofiles" }, + { name = "click" }, + { name = "mypy" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "pypdfium2" }, + { name = "pytest" }, +] + +[package.optional-dependencies] +dev = [ + { name = "aiofiles" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiofiles", specifier = ">=24.1.0" }, + { name = "aiofiles", marker = "extra == 'dev'" }, + { name = "click", specifier = ">=8.1.8" }, + { name = "mypy", specifier = ">=1.15.0" }, + { name = "numpy", specifier = ">=2.2.4" }, + { name = "pillow", specifier = ">=10.3.0,<11.0.0" }, + { name = "pydantic", specifier = ">=2.7.1,<3.0.0" }, + { name = "pydantic-settings", specifier = ">=2.2.1,<3.0.0" }, + { name = "pypdfium2", specifier = "==4.30.0" }, + { name = "pytest", specifier = ">=8.3.5" }, +] +provides-extras = ["dev"] + +[[package]] +name = "pillow" +version = "10.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271 }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658 }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075 }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808 }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290 }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163 }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100 }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880 }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218 }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487 }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265 }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655 }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304 }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804 }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126 }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541 }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616 }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213 }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498 }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219 }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350 }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980 }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799 }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973 }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054 }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484 }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375 }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773 }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690 }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951 }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427 }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685 }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883 }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837 }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562 }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761 }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767 }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989 }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255 }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603 }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972 }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889 }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160 }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020 }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539 }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125 }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373 }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pydantic" +version = "2.11.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591 }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 }, + { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 }, + { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 }, + { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 }, + { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 }, + { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 }, + { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 }, + { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 }, + { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 }, + { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 }, + { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 }, + { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 }, + { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 }, + { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 }, + { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 }, + { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 }, + { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 }, + { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 }, + { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 }, + { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 }, + { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 }, + { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 }, + { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 }, + { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 }, + { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 }, + { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 }, + { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 }, + { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, + { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, + { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, + { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, + { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, + { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, + { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, + { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, + { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, + { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, + { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, + { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, + { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, + { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, + { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, + { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, + { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, + { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, + { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, + { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, + { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, + { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, + { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, + { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, + { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, + { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, + { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, + { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, + { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, + { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, + { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, + { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 }, + { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 }, + { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 }, + { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 }, + { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 }, + { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 }, + { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 }, + { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 }, + { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 }, + { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 }, + { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 }, + { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 }, + { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 }, + { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 }, + { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 }, + { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 }, + { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 }, + { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 }, +] + +[[package]] +name = "pydantic-settings" +version = "2.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/82/c79424d7d8c29b994fb01d277da57b0a9b09cc03c3ff875f9bd8a86b2145/pydantic_settings-2.8.1.tar.gz", hash = "sha256:d5c663dfbe9db9d5e1c646b2e161da12f0d734d422ee56f567d0ea2cee4e8585", size = 83550 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/53/a64f03044927dc47aafe029c42a5b7aabc38dfb813475e0e1bf71c4a59d0/pydantic_settings-2.8.1-py3-none-any.whl", hash = "sha256:81942d5ac3d905f7f3ee1a70df5dfb62d5569c12f51a5a647defc1c3d9ee2e9c", size = 30839 }, +] + +[[package]] +name = "pypdfium2" +version = "4.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/14/838b3ba247a0ba92e4df5d23f2bea9478edcfd72b78a39d6ca36ccd84ad2/pypdfium2-4.30.0.tar.gz", hash = "sha256:48b5b7e5566665bc1015b9d69c1ebabe21f6aee468b509531c3c8318eeee2e16", size = 140239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/9a/c8ff5cc352c1b60b0b97642ae734f51edbab6e28b45b4fcdfe5306ee3c83/pypdfium2-4.30.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b33ceded0b6ff5b2b93bc1fe0ad4b71aa6b7e7bd5875f1ca0cdfb6ba6ac01aab", size = 2837254 }, + { url = "https://files.pythonhosted.org/packages/21/8b/27d4d5409f3c76b985f4ee4afe147b606594411e15ac4dc1c3363c9a9810/pypdfium2-4.30.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4e55689f4b06e2d2406203e771f78789bd4f190731b5d57383d05cf611d829de", size = 2707624 }, + { url = "https://files.pythonhosted.org/packages/11/63/28a73ca17c24b41a205d658e177d68e198d7dde65a8c99c821d231b6ee3d/pypdfium2-4.30.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6e50f5ce7f65a40a33d7c9edc39f23140c57e37144c2d6d9e9262a2a854854", size = 2793126 }, + { url = "https://files.pythonhosted.org/packages/d1/96/53b3ebf0955edbd02ac6da16a818ecc65c939e98fdeb4e0958362bd385c8/pypdfium2-4.30.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3d0dd3ecaffd0b6dbda3da663220e705cb563918249bda26058c6036752ba3a2", size = 2591077 }, + { url = "https://files.pythonhosted.org/packages/ec/ee/0394e56e7cab8b5b21f744d988400948ef71a9a892cbeb0b200d324ab2c7/pypdfium2-4.30.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc3bf29b0db8c76cdfaac1ec1cde8edf211a7de7390fbf8934ad2aa9b4d6dfad", size = 2864431 }, + { url = "https://files.pythonhosted.org/packages/65/cd/3f1edf20a0ef4a212a5e20a5900e64942c5a374473671ac0780eaa08ea80/pypdfium2-4.30.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1f78d2189e0ddf9ac2b7a9b9bd4f0c66f54d1389ff6c17e9fd9dc034d06eb3f", size = 2812008 }, + { url = "https://files.pythonhosted.org/packages/c8/91/2d517db61845698f41a2a974de90762e50faeb529201c6b3574935969045/pypdfium2-4.30.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:5eda3641a2da7a7a0b2f4dbd71d706401a656fea521b6b6faa0675b15d31a163", size = 6181543 }, + { url = "https://files.pythonhosted.org/packages/ba/c4/ed1315143a7a84b2c7616569dfb472473968d628f17c231c39e29ae9d780/pypdfium2-4.30.0-py3-none-musllinux_1_1_i686.whl", hash = "sha256:0dfa61421b5eb68e1188b0b2231e7ba35735aef2d867d86e48ee6cab6975195e", size = 6175911 }, + { url = "https://files.pythonhosted.org/packages/7a/c4/9e62d03f414e0e3051c56d5943c3bf42aa9608ede4e19dc96438364e9e03/pypdfium2-4.30.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:f33bd79e7a09d5f7acca3b0b69ff6c8a488869a7fab48fdf400fec6e20b9c8be", size = 6267430 }, + { url = "https://files.pythonhosted.org/packages/90/47/eda4904f715fb98561e34012826e883816945934a851745570521ec89520/pypdfium2-4.30.0-py3-none-win32.whl", hash = "sha256:ee2410f15d576d976c2ab2558c93d392a25fb9f6635e8dd0a8a3a5241b275e0e", size = 2775951 }, + { url = "https://files.pythonhosted.org/packages/25/bd/56d9ec6b9f0fc4e0d95288759f3179f0fcd34b1a1526b75673d2f6d5196f/pypdfium2-4.30.0-py3-none-win_amd64.whl", hash = "sha256:90dbb2ac07be53219f56be09961eb95cf2473f834d01a42d901d13ccfad64b4c", size = 2892098 }, + { url = "https://files.pythonhosted.org/packages/be/7a/097801205b991bc3115e8af1edb850d30aeaf0118520b016354cf5ccd3f6/pypdfium2-4.30.0-py3-none-win_arm64.whl", hash = "sha256:119b2969a6d6b1e8d55e99caaf05290294f2d0fe49c12a3f17102d01c441bd29", size = 2752118 }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/ad/cd3e3465232ec2416ae9b983f27b9e94dc8171d56ac99b345319a9475967/typing_extensions-4.13.1.tar.gz", hash = "sha256:98795af00fb9640edec5b8e31fc647597b4691f099ad75f469a2616be1a76dff", size = 106633 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/c5/e7a0b0f5ed69f94c8ab7379c599e6036886bffcde609969a5325f47f1332/typing_extensions-4.13.1-py3-none-any.whl", hash = "sha256:4b6cf02909eb5495cfbc3f6e8fd49217e6cc7944e145cdda8caa3734777f9e69", size = 45739 }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, +]