From f31f341111581783c87bf86b420171dc3b2315e7 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sat, 2 Aug 2025 09:15:49 -0400 Subject: [PATCH 01/24] attempt 1 --- src/langchain_v1/extraction.md | 197 +++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 src/langchain_v1/extraction.md diff --git a/src/langchain_v1/extraction.md b/src/langchain_v1/extraction.md new file mode 100644 index 000000000..ab60ec23d --- /dev/null +++ b/src/langchain_v1/extraction.md @@ -0,0 +1,197 @@ +# Document extraction + +This guide shows you how to extract information from documents using LangChain's **prebuilt** extraction functionality. The extraction chain can produce either text summaries or structured data from one or more documents. + +## Prerequisites + +Before you start this tutorial, ensure you have the following: + +- An [Anthropic](https://console.anthropic.com/settings/keys) API key + +## 1. Install dependencies + +If you haven't already, install LangGraph and LangChain: + +```bash +pip install -U langgraph "langchain[anthropic]" +``` + +!!! info + + LangChain is installed so the extractor can call the [model](https://python.langchain.com/docs/integrations/chat/). + +## 2. Set up documents + +First, create some documents to extract information from: + +```python +from langchain_core.documents import Document + +documents = [ + Document( + id="1", + page_content="""Bobby Luka was 10 years old. +Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU's "ReFuelEU" mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene.""", + metadata={"source": "synthetic_fuel_aviation"}, + ), + Document( + id="2", + page_content=""" +AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data.""", + metadata={"source": "ai_drug_discovery"}, + ), + Document( + id="3", + page_content="""Jack Johnson was 23 years old and blonde. +Bobby Luka's hair is brown.""", + metadata={"source": "people_info"}, + ), +] +``` + +## 3. Configure a model + +Configure an LLM for extraction using [init_chat_model](https://python.langchain.com/api_reference/langchain/chat_models/langchain.chat_models.base.init_chat_model.html): + +```python +from langchain.chat_models import init_chat_model + +model = init_chat_model( + "anthropic:claude-3-5-sonnet-latest", + temperature=0 +) +``` + +## 4. Extract a basic summary + +Create an extractor to produce text summaries from documents: + +```python +from langchain.chains.summarization import create_summarizer + +# Create a basic summarizer +summarizer = create_summarizer( + model, + initial_prompt="Produce a concise summary of the following document in 2-3 sentences.", + strategy="sequential" # Process documents one by one +).compile(name="TextSummarizer") + +# Extract summary +result = summarizer.invoke({"documents": documents}) +print(result["result"]) +``` + +## 5. Extract structured summaries + +To produce structured responses with a specific format, use the `response_format` parameter with a Pydantic model: + +```python +from pydantic import BaseModel +from langchain.chains.summarization import create_summarizer + +class Summary(BaseModel): + """Structured summary with title and key points.""" + + title: str + key_points: list[str] + +# Create structured summarizer +structured_summarizer = create_summarizer( + model, + initial_prompt="Extract the main topics and create a structured summary with a title and up to 3 key points.", + response_format=Summary, + strategy="batch" # Process all documents together +).compile(name="StructuredSummarizer") + +# Extract structured summary +result = structured_summarizer.invoke({"documents": documents}) + +# Access structured fields +print(f"Title: {result['result'].title}") +print("Key points:") +for point in result['result'].key_points: + print(f" • {point}") +``` + +## 6. Extract entities with source tracking + +Extract specific entities while tracking which documents they came from: + +```python +from typing import Optional +from pydantic import BaseModel, Field + +class Person(BaseModel): + """Person entity with source tracking.""" + + name: str + age: Optional[str] = None + hair_color: Optional[str] = None + source_doc_ids: list[str] = Field( + default=[], + description="The IDs of the documents where the information was found.", + ) + +class PeopleExtraction(BaseModel): + """Collection of extracted people.""" + + people: list[Person] + +# Create entity extractor +entity_extractor = create_summarizer( + model, + initial_prompt="Extract information about people mentioned in the documents. Include the document IDs where each piece of information was found.", + refine_prompt="Update the extracted people information with any new facts found in the current document. Make sure to include the source document IDs for all information.", + response_format=PeopleExtraction, + strategy="sequential" +).compile(name="EntityExtractor") + +# Extract entities +result = entity_extractor.invoke({"documents": documents}) + +# Display extracted people with sources +for person in result['result'].people: + print(f"Name: {person.name}") + if person.age: + print(f" Age: {person.age}") + if person.hair_color: + print(f" Hair: {person.hair_color}") + print(f" Sources: {', '.join(person.source_doc_ids)}") + print() +``` + +## Processing strategies + +The extractor supports two processing strategies: + +- **sequential**: Processes documents one by one, refining results iteratively. More memory-efficient for large document collections. +- **batch**: Processes all documents together in a single request. Can be faster for smaller collections. + +```python +# Sequential processing (default) +sequential_extractor = create_summarizer( + model, + strategy="sequential" +).compile() + +# Batch processing +batch_extractor = create_summarizer( + model, + strategy="batch" +).compile() +``` + +## Custom prompts + +Customize extraction behavior with specific prompts: + +```python +custom_extractor = create_summarizer( + model, + initial_prompt="Focus on extracting technical information and key innovations mentioned in the documents.", + refine_prompt="Combine the technical information from previous results with new findings from the current document.", + strategy="sequential" +).compile() +``` + +For more advanced extraction patterns and customization, see the [extraction how-to guides](../how-tos/extraction/). \ No newline at end of file From 649d7b2030167b0b05320112e899e3bd38d393e2 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 12:06:12 -0400 Subject: [PATCH 02/24] x --- src/docs.json | 11 ++++++++++ src/langchain_v1/extraction.md | 39 ++++++---------------------------- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/src/docs.json b/src/docs.json index 5bd9c8bd2..49c52f685 100644 --- a/src/docs.json +++ b/src/docs.json @@ -52,6 +52,17 @@ }, "navigation": { "dropdowns": [ + { + "dropdown": "LangChain v1", + "icon": "/images/brand/langchain-pill.svg", + "description": "LangChain v1 documentation and guides", + "tabs": [ + { + "tab": "Extraction", + "pages": ["langchain_v1/extraction"] + } + ] + }, { "dropdown": "LangGraph Platform", "icon": "/images/brand/langgraph-platform-pill.svg", diff --git a/src/langchain_v1/extraction.md b/src/langchain_v1/extraction.md index ab60ec23d..507687619 100644 --- a/src/langchain_v1/extraction.md +++ b/src/langchain_v1/extraction.md @@ -16,9 +16,9 @@ If you haven't already, install LangGraph and LangChain: pip install -U langgraph "langchain[anthropic]" ``` -!!! info - + LangChain is installed so the extractor can call the [model](https://python.langchain.com/docs/integrations/chat/). + ## 2. Set up documents @@ -72,8 +72,7 @@ from langchain.chains.summarization import create_summarizer # Create a basic summarizer summarizer = create_summarizer( model, - initial_prompt="Produce a concise summary of the following document in 2-3 sentences.", - strategy="sequential" # Process documents one by one + initial_prompt="Produce a concise summary of the following document in 2-3 sentences." ).compile(name="TextSummarizer") # Extract summary @@ -99,8 +98,7 @@ class Summary(BaseModel): structured_summarizer = create_summarizer( model, initial_prompt="Extract the main topics and create a structured summary with a title and up to 3 key points.", - response_format=Summary, - strategy="batch" # Process all documents together + response_format=Summary ).compile(name="StructuredSummarizer") # Extract structured summary @@ -141,9 +139,7 @@ class PeopleExtraction(BaseModel): entity_extractor = create_summarizer( model, initial_prompt="Extract information about people mentioned in the documents. Include the document IDs where each piece of information was found.", - refine_prompt="Update the extracted people information with any new facts found in the current document. Make sure to include the source document IDs for all information.", - response_format=PeopleExtraction, - strategy="sequential" + response_format=PeopleExtraction ).compile(name="EntityExtractor") # Extract entities @@ -160,27 +156,6 @@ for person in result['result'].people: print() ``` -## Processing strategies - -The extractor supports two processing strategies: - -- **sequential**: Processes documents one by one, refining results iteratively. More memory-efficient for large document collections. -- **batch**: Processes all documents together in a single request. Can be faster for smaller collections. - -```python -# Sequential processing (default) -sequential_extractor = create_summarizer( - model, - strategy="sequential" -).compile() - -# Batch processing -batch_extractor = create_summarizer( - model, - strategy="batch" -).compile() -``` - ## Custom prompts Customize extraction behavior with specific prompts: @@ -188,9 +163,7 @@ Customize extraction behavior with specific prompts: ```python custom_extractor = create_summarizer( model, - initial_prompt="Focus on extracting technical information and key innovations mentioned in the documents.", - refine_prompt="Combine the technical information from previous results with new findings from the current document.", - strategy="sequential" + initial_prompt="Focus on extracting technical information and key innovations mentioned in the documents." ).compile() ``` From d0c99d5cb19c8dac520ba18fdc7c3451c6875d37 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 12:07:08 -0400 Subject: [PATCH 03/24] add notebooks --- src/langchain_v1/inline_summarizer.ipynb | 184 ++++++++++++++ src/langchain_v1/map_reduce.ipynb | 296 +++++++++++++++++++++++ src/langchain_v1/refine_summarizer.ipynb | 230 ++++++++++++++++++ 3 files changed, 710 insertions(+) create mode 100644 src/langchain_v1/inline_summarizer.ipynb create mode 100644 src/langchain_v1/map_reduce.ipynb create mode 100644 src/langchain_v1/refine_summarizer.ipynb diff --git a/src/langchain_v1/inline_summarizer.ipynb b/src/langchain_v1/inline_summarizer.ipynb new file mode 100644 index 000000000..b1f915f64 --- /dev/null +++ b/src/langchain_v1/inline_summarizer.ipynb @@ -0,0 +1,184 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "id": "425ca669-9caa-4bea-a1e7-fab8e95210d8", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.documents import Document\n", + "\n", + "from langchain.chains import summarization\n", + "from langchain.chat_models import init_chat_model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "15301db9-26cf-4da9-8d74-cd6eabef5b04", + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'langchain.chains.summarization' has no attribute 'InlineSummarizer'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 4\u001b[39m\n\u001b[32m 1\u001b[39m model = init_chat_model(\u001b[33m\"\u001b[39m\u001b[33mclaude-opus-4-20250514\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 3\u001b[39m summarizer = (\n\u001b[32m----> \u001b[39m\u001b[32m4\u001b[39m \u001b[43msummarization\u001b[49m\u001b[43m.\u001b[49m\u001b[43mInlineSummarizer\u001b[49m(model, prompt=\u001b[33m\"\u001b[39m\u001b[33mProduce a summary in french\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 5\u001b[39m .build()\n\u001b[32m 6\u001b[39m .compile()\n\u001b[32m 7\u001b[39m )\n", + "\u001b[31mAttributeError\u001b[39m: module 'langchain.chains.summarization' has no attribute 'InlineSummarizer'" + ] + } + ], + "source": [ + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "\n", + "summarizer = (\n", + " summarization.InlineSummarizer(model, prompt=\"Produce a summary in french\")\n", + " .build()\n", + " .compile()\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3488cf7a-1e7b-4d0a-83bc-307f10ce0344", + "metadata": {}, + "outputs": [], + "source": [ + "documents = [\n", + " Document(\n", + " page_content=\"\"\"\n", + "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", + "\n", + "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", + "\"\"\",\n", + " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "Small modular reactors (SMRs) are gaining attention as a scalable nuclear option for future grids. Unlike traditional plants, SMRs are factory-built, with designs that reduce capital risk and allow for phased deployment. Countries including Canada, Poland, and the UK have committed to SMR pilot projects. NuScale received the first-ever U.S. NRC certification for its design in 2023.\n", + "\n", + "The challenge lies in financing and regulatory friction. While the tech is mature, each deployment requires bespoke siting approvals. Critics argue that grid-scale renewables and battery storage will outcompete SMRs on price. Still, utilities facing baseload shortfalls—especially those decommissioning coal plants—are exploring SMRs as replacement assets with better public acceptance than legacy nuclear.\n", + "\"\"\",\n", + " metadata={\"source\": \"modular_nuclear_reactors\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "Vertical farming startups are shifting from premium greens to calorie crops like wheat and potatoes. Recent advances in LED efficiency and robotic harvesting have cut production costs by 40% over five years. Some companies now claim cost parity with traditional field-grown produce—especially when factoring in water savings and proximity to urban markets.\n", + "\n", + "However, energy use remains a concern. Large facilities still consume significant power, and most are not yet net-zero. Policy incentives in places like Singapore and the UAE are accelerating deployment, especially in food-insecure regions. In the U.S., real estate economics and regional energy prices dictate whether vertical farming is viable at scale.\n", + "\"\"\",\n", + " metadata={\"source\": \"vertical_farming\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "As EV demand surges, lithium production is becoming a geopolitical chokepoint. Traditional extraction via evaporation ponds takes months and is limited to specific geographies. Direct lithium extraction (DLE) technologies aim to recover lithium faster and from more varied sources, including oilfield brines and geothermal plants.\n", + "\n", + "Early pilots in Argentina and Utah show promise, with extraction times cut to hours and recovery rates above 85%. However, energy intensity and water usage vary widely depending on method. Major auto OEMs like GM and Ford have signed early agreements with DLE startups, aiming to secure supply without exposure to legacy mining delays or ESG blowback.\n", + "\"\"\",\n", + " metadata={\"source\": \"direct_lithium_extraction\"},\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "265349ed-4d7a-496b-8d13-869401fb7afe", + "metadata": {}, + "outputs": [], + "source": [ + "output = summarizer.invoke({\"documents\": documents})" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "abb40de0-8e75-4af9-afe3-24bdd3de21a2", + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Markdown" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d1787872-841f-42d8-ac61-ba49b89c2577", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "**Résumé des innovations technologiques émergentes**\n", + "\n", + "**Carburants synthétiques dans l'aviation**\n", + "Les carburants synthétiques, produits à partir de carbone capturé et d'hydrogène vert, gagnent du terrain dans l'aviation. Le mandat européen \"ReFuelEU\" impose l'utilisation croissante de carburant d'aviation durable (SAF) dès 2025. Airbus et Rolls-Royce ont réalisé des vols long-courriers entièrement alimentés au kérosène synthétique. Cependant, la production actuelle représente moins de 0,1% de la demande mondiale et les coûts restent 3 à 5 fois supérieurs aux alternatives fossiles. De nouvelles raffineries sont en construction en Norvège, au Chili et au Texas, avec une montée en puissance prévue entre 2026-2030.\n", + "\n", + "**IA dans la découverte pharmaceutique**\n", + "L'intelligence artificielle accélère la découverte de médicaments, notamment dans l'identification de cibles et la génération de molécules. Des plateformes comme BenevolentAI utilisent des modèles génératifs, mais le principal obstacle reste la qualité des données d'entraînement. Pour y remédier, certaines startups s'associent à des organisations de recherche contractuelle pour générer des ensembles de données propriétaires. La FDA a lancé des programmes pilotes pour évaluer la validation des candidats générés par IA.\n", + "\n", + "**Petits réacteurs modulaires (SMR)**\n", + "Les SMR attirent l'attention comme option nucléaire évolutive. Contrairement aux centrales traditionnelles, ils sont fabriqués en usine avec des designs réduisant les risques financiers. Le Canada, la Pologne et le Royaume-Uni se sont engagés dans des projets pilotes. NuScale a reçu la première certification américaine en 2023. Les défis restent le financement et les frictions réglementaires, bien que les services publics confrontés à des déficits de charge de base explorent cette option.\n", + "\n", + "**Agriculture verticale**\n", + "Les startups d'agriculture verticale passent des légumes premium aux cultures caloriques comme le blé et les pommes de terre. Les progrès en efficacité LED et récolte robotisée ont réduit les coûts de production de 40% en cinq ans. Certaines entreprises revendiquent la parité des coûts avec l'agriculture traditionnelle. Cependant, la consommation énergétique reste préoccupante, et la viabilité dépend largement des incitations politiques et des économies régionales.\n", + "\n", + "**Extraction directe du lithium**\n", + "Face à la demande croissante de véhicules électriques, la production de lithium devient un enjeu géopolitique. Les technologies d'extraction directe du lithium (DLE) visent à récupérer le lithium plus rapidement et de sources plus variées. Les projets pilotes en Argentine et dans l'Utah montrent des résultats prometteurs avec des temps d'extraction réduits à quelques heures et des taux de récupération supérieurs à 85%. Les grands constructeurs automobiles comme GM et Ford ont signé des accords avec des startups DLE pour sécuriser leur approvisionnement." + ], + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Markdown(output[\"summary\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6f70faa-7ced-4bf6-b79b-a5372786da01", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/langchain_v1/map_reduce.ipynb b/src/langchain_v1/map_reduce.ipynb new file mode 100644 index 000000000..b50e442cd --- /dev/null +++ b/src/langchain_v1/map_reduce.ipynb @@ -0,0 +1,296 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "79d8b593-724e-46be-b24d-b4f1d5d9e353", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain_core.documents import Document\n", + "from pydantic import BaseModel, Field, RootModel\n", + "\n", + "from langchain.chains.summarization.map_reduce import create_map_reduce_extractor\n", + "\n", + "# from langchain.extraction import create_batch_extractor, create_parallel_extractor\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Person to extract.\"\"\"\n", + "\n", + " name: str\n", + " age: Optional[str] = None\n", + " hair_color: Optional[str] = None\n", + " source_doc_ids: list[str] = Field(\n", + " default=[],\n", + " description=\"The IDs of the documents where the information was found.\",\n", + " )\n", + "\n", + "\n", + "class PeopleRoot(BaseModel):\n", + " people: list[Person] = []" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "metadata": {}, + "outputs": [], + "source": [ + "People = RootModel(list[Person])\n", + "\n", + "documents = [\n", + " Document(\n", + " id=\"1\",\n", + " page_content=\"\"\"Bobby Luka was 10 years old.\n", + "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", + "\n", + "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", + "\"\"\",\n", + " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", + " ),\n", + " Document(\n", + " id=\"2\",\n", + " page_content=\"\"\"\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "I love to eat tomatoes!!!!!\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " id=\"3\",\n", + " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\n", + "Bobby Luka's hair is brown.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + "]\n", + "\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "summarizer = create_map_reduce_extractor(\n", + " model,\n", + " response_format=PeopleRoot,\n", + ").compile(name=\"MapReducerExtractor\")\n", + "\n", + "\n", + "output = summarizer.invoke({\"documents\": documents})" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "82d868cb-a9dc-4be3-b48e-1cb6e3f1d7b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'indexes': [0],\n", + " 'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color=None, source_doc_ids=['1'])])},\n", + " {'indexes': [1], 'result': PeopleRoot(people=[])},\n", + " {'indexes': [2], 'result': PeopleRoot(people=[])},\n", + " {'indexes': [3],\n", + " 'result': PeopleRoot(people=[Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3']), Person(name='Bobby Luka', age=None, hair_color='brown', source_doc_ids=['3'])])}]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output[\"results\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f5a38106-7f29-4209-b6ff-cba0eb0efa0d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output[\"result\"]" + ] + }, + { + "cell_type": "markdown", + "id": "e75c1193-1eeb-4a7e-b5bd-8a59465443f5", + "metadata": {}, + "source": [ + "# Sequential extraction" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "be64cbd8-8664-412a-8097-fe4fd4f674bb", + "metadata": {}, + "outputs": [], + "source": [ + "documents = [\n", + " Document(\n", + " id=\"1\",\n", + " page_content=\"\"\"Bobby Luka was 10 years old.\n", + "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", + "\n", + "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", + "\"\"\",\n", + " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", + " ),\n", + " Document(\n", + " id=\"2\",\n", + " page_content=\"\"\"\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "I love to eat tomatoes!!!!!\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " id=\"3\",\n", + " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\n", + "Bobby Luka's hair is brown.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "19c70ec2-0142-43e4-95bd-745c66716149", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain_core.documents import Document\n", + "from pydantic import BaseModel, Field\n", + "\n", + "from langchain.chains.summarization import create_summarizer\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Person to extract.\"\"\"\n", + "\n", + " name: str\n", + " age: Optional[str] = None\n", + " hair_color: Optional[str] = None\n", + " source_doc_ids: list[str] = Field(\n", + " default=[],\n", + " description=\"The IDs of the documents where the information was found.\",\n", + " )\n", + "\n", + "\n", + "class PeopleRoot(BaseModel):\n", + " people: list[Person]\n", + "\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "\n", + "summarizer = create_summarizer(\n", + " model,\n", + " initial_prompt=\"Extract information from the text to match the expected output format.\",\n", + " refine_prompt=\"You are responsible for updating extracted information. The currently extracted information is provided in the context. Make sure to carry it forward and / or update it with any new found facts in the given text. Also if there's ne winformation that should be extracted in the given text please do so.\",\n", + " response_format=PeopleRoot,\n", + " strategy=\"batch\",\n", + ").compile(name=\"Summarizer\")\n", + "\n", + "output = summarizer.invoke({\"documents\": documents})\n", + "output" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c5a37fb5-97ba-4303-a927-c4a9f4ed557f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/langchain_v1/refine_summarizer.ipynb b/src/langchain_v1/refine_summarizer.ipynb new file mode 100644 index 000000000..9caaeebfb --- /dev/null +++ b/src/langchain_v1/refine_summarizer.ipynb @@ -0,0 +1,230 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "79d8b593-724e-46be-b24d-b4f1d5d9e353", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain_core.documents import Document\n", + "from pydantic import BaseModel, Field\n", + "\n", + "from langchain.chains.summarization import create_summarizer\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Person to extract.\"\"\"\n", + "\n", + " name: str\n", + " age: Optional[str] = None\n", + " hair_color: Optional[str] = None\n", + " source_doc_ids: list[str] = Field(\n", + " default=[],\n", + " description=\"The IDs of the documents where the information was found.\",\n", + " )\n", + "\n", + "\n", + "class PeopleRoot(BaseModel):\n", + " people: list[Person]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "metadata": {}, + "outputs": [], + "source": [ + "# People = RootModel(list[Person])\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "summarizer = create_summarizer(\n", + " model,\n", + " initial_prompt=\"Produce a summary in bullet with up to 3 bullets.\",\n", + " response_format=PeopleRoot,\n", + ").compile(name=\"Refiner\")\n", + "\n", + "\n", + "output = summarizer.invoke({\"documents\": documents})" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "82d868cb-a9dc-4be3-b48e-1cb6e3f1d7b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'result': PeopleRoot(people=[Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['2'])])}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output" + ] + }, + { + "cell_type": "markdown", + "id": "e75c1193-1eeb-4a7e-b5bd-8a59465443f5", + "metadata": {}, + "source": [ + "# Sequential extraction" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "be64cbd8-8664-412a-8097-fe4fd4f674bb", + "metadata": {}, + "outputs": [], + "source": [ + "documents = [\n", + " Document(\n", + " id=\"1\",\n", + " page_content=\"\"\"Bobby Luka was 10 years old.\n", + "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", + "\n", + "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", + "\"\"\",\n", + " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", + " ),\n", + " Document(\n", + " id=\"2\",\n", + " page_content=\"\"\"\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " page_content=\"\"\"\n", + "I love to eat tomatoes!!!!!\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + " Document(\n", + " id=\"3\",\n", + " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", + "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", + "\n", + "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", + "\n", + "Bobby Luka's hair is brown.\n", + "\"\"\",\n", + " metadata={\"source\": \"ai_drug_discovery\"},\n", + " ),\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "19c70ec2-0142-43e4-95bd-745c66716149", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Optional\n", + "\n", + "from langchain_core.documents import Document\n", + "from pydantic import BaseModel, Field\n", + "\n", + "from langchain.chains.summarization import create_summarizer\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Person to extract.\"\"\"\n", + "\n", + " name: str\n", + " age: Optional[str] = None\n", + " hair_color: Optional[str] = None\n", + " source_doc_ids: list[str] = Field(\n", + " default=[],\n", + " description=\"The IDs of the documents where the information was found.\",\n", + " )\n", + "\n", + "\n", + "class PeopleRoot(BaseModel):\n", + " people: list[Person]\n", + "\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "\n", + "summarizer = create_summarizer(\n", + " model,\n", + " initial_prompt=\"Extract information from the text to match the expected output format.\",\n", + " refine_prompt=\"You are responsible for updating extracted information. The currently extracted information is provided in the context. Make sure to carry it forward and / or update it with any new found facts in the given text. Also if there's ne winformation that should be extracted in the given text please do so.\",\n", + " response_format=PeopleRoot,\n", + " strategy=\"batch\",\n", + ").compile(name=\"Summarizer\")\n", + "\n", + "output = summarizer.invoke({\"documents\": documents})\n", + "output" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c5a37fb5-97ba-4303-a927-c4a9f4ed557f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 386bac9e127ba17e010d177091ed9539521c4a7d Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 12:13:06 -0400 Subject: [PATCH 04/24] x --- src/docs.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/docs.json b/src/docs.json index 49c52f685..993c86be7 100644 --- a/src/docs.json +++ b/src/docs.json @@ -60,6 +60,14 @@ { "tab": "Extraction", "pages": ["langchain_v1/extraction"] + }, + { + "tab": "Notebooks", + "pages": [ + "langchain_v1/inline_summarizer", + "langchain_v1/map_reduce", + "langchain_v1/refine_summarizer" + ] } ] }, From 468b744c3464cd0ac4c6715362d624ad0fb156b9 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 12:13:28 -0400 Subject: [PATCH 05/24] hanele ipynb files --- pipeline/core/builder.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pipeline/core/builder.py b/pipeline/core/builder.py index f73b3fb66..769e6cd4d 100644 --- a/pipeline/core/builder.py +++ b/pipeline/core/builder.py @@ -9,6 +9,7 @@ from tqdm import tqdm from pipeline.preprocessors import preprocess_markdown +from pipeline.tools.notebook.convert import convert_notebook logger = logging.getLogger(__name__) @@ -40,6 +41,7 @@ def __init__(self, src_dir: Path, build_dir: Path) -> None: self.copy_extensions: set[str] = { ".mdx", ".md", + ".ipynb", ".json", ".svg", ".png", @@ -188,6 +190,34 @@ def _process_markdown_file(self, input_path: Path, output_path: Path) -> None: logger.exception("Failed to process markdown file %s", input_path) raise + def _process_notebook_file(self, input_path: Path, output_path: Path) -> None: + """Process a Jupyter notebook file and convert to markdown. + + This method converts a Jupyter notebook to markdown, applies preprocessing, + and writes the processed content to the output path as an .mdx file. + + Args: + input_path: Path to the source notebook file. + output_path: Path where the processed file should be written. + """ + try: + # Convert notebook to markdown + markdown_content = convert_notebook(input_path) + + # Apply markdown preprocessing + processed_content = self._process_markdown_content(markdown_content, input_path) + + # Convert .ipynb to .mdx + output_path = output_path.with_suffix(".mdx") + + # Write the processed content + with output_path.open("w", encoding="utf-8") as f: + f.write(processed_content) + + except Exception: + logger.exception("Failed to process notebook file %s", input_path) + raise + def build_file(self, file_path: Path) -> None: """Build a single file by copying it to the build directory. @@ -227,6 +257,10 @@ def build_file(self, file_path: Path) -> None: if file_path.suffix.lower() in {".md", ".mdx"}: self._process_markdown_file(file_path, output_path) logger.info("Processed markdown: %s", relative_path) + # Handle notebook files with conversion to markdown + elif file_path.suffix.lower() == ".ipynb": + self._process_notebook_file(file_path, output_path) + logger.info("Converted notebook: %s", relative_path) else: shutil.copy2(file_path, output_path) logger.info("Copied: %s", relative_path) @@ -269,6 +303,10 @@ def _build_file_with_progress(self, file_path: Path, pbar: tqdm) -> bool: if file_path.suffix.lower() in {".md", ".mdx"}: self._process_markdown_file(file_path, output_path) return True + # Handle notebook files with conversion to markdown + elif file_path.suffix.lower() == ".ipynb": + self._process_notebook_file(file_path, output_path) + return True shutil.copy2(file_path, output_path) return True return False From 841c9c0dba0eacaf71c2353ff51a9060bba07db2 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 15:15:43 -0400 Subject: [PATCH 06/24] x --- pipeline/core/builder.py | 34 ++- pipeline/core/watcher.py | 3 +- src/docs.json | 6 +- src/langchain_v1/inline_summarizer.ipynb | 184 ------------- src/langchain_v1/map_reduce.ipynb | 336 ++++++++--------------- src/langchain_v1/refine_summarizer.ipynb | 230 ---------------- 6 files changed, 153 insertions(+), 640 deletions(-) delete mode 100644 src/langchain_v1/inline_summarizer.ipynb delete mode 100644 src/langchain_v1/refine_summarizer.ipynb diff --git a/pipeline/core/builder.py b/pipeline/core/builder.py index 769e6cd4d..8841ad121 100644 --- a/pipeline/core/builder.py +++ b/pipeline/core/builder.py @@ -53,6 +53,35 @@ def __init__(self, src_dir: Path, build_dir: Path) -> None: ".css", } + def _should_ignore_file(self, file_path: Path) -> bool: + """Check if a file should be ignored during build. + + This method filters out cached files, temporary files, and other + files that should not be included in the build process. + + Args: + file_path: Path to the file to check. + + Returns: + True if the file should be ignored, False otherwise. + """ + filename = file_path.name + + # Ignore files starting with .~ (cached/temporary files) + if filename.startswith(".~"): + return True + + # Ignore files starting with ~ (backup files) + if filename.startswith("~"): + return True + + # Ignore hidden files starting with . (except specific ones we want) + if filename.startswith(".") and filename not in {".gitkeep"}: + return True + + # Ignore common temporary file patterns + return bool(filename.endswith((".tmp", ".temp"))) + def build_all(self) -> None: """Build all documentation files from source to build directory. @@ -78,7 +107,8 @@ def build_all(self) -> None: # Collect all files to process all_files = [ - file_path for file_path in self.src_dir.rglob("*") if file_path.is_file() + file_path for file_path in self.src_dir.rglob("*") + if file_path.is_file() and not self._should_ignore_file(file_path) ] if not all_files: @@ -304,7 +334,7 @@ def _build_file_with_progress(self, file_path: Path, pbar: tqdm) -> bool: self._process_markdown_file(file_path, output_path) return True # Handle notebook files with conversion to markdown - elif file_path.suffix.lower() == ".ipynb": + if file_path.suffix.lower() == ".ipynb": self._process_notebook_file(file_path, output_path) return True shutil.copy2(file_path, output_path) diff --git a/pipeline/core/watcher.py b/pipeline/core/watcher.py index 3da8f7599..ca2633d66 100644 --- a/pipeline/core/watcher.py +++ b/pipeline/core/watcher.py @@ -67,7 +67,8 @@ def on_modified(self, event: FileSystemEvent) -> None: src_path = event.src_path file_path = Path(src_path) - if file_path.suffix.lower() in self.builder.copy_extensions: + if (file_path.suffix.lower() in self.builder.copy_extensions and + not self.builder._should_ignore_file(file_path)): logger.info("File changed: %s", file_path) # Put file change event in queue for async processing self.loop.call_soon_threadsafe(self.event_queue.put_nowait, file_path) diff --git a/src/docs.json b/src/docs.json index 993c86be7..e2bde9b7e 100644 --- a/src/docs.json +++ b/src/docs.json @@ -64,9 +64,9 @@ { "tab": "Notebooks", "pages": [ - "langchain_v1/inline_summarizer", + "langchain_v1/stuff", "langchain_v1/map_reduce", - "langchain_v1/refine_summarizer" + "langchain_v1/recursive" ] } ] @@ -335,4 +335,4 @@ } ] } -} \ No newline at end of file +} diff --git a/src/langchain_v1/inline_summarizer.ipynb b/src/langchain_v1/inline_summarizer.ipynb deleted file mode 100644 index b1f915f64..000000000 --- a/src/langchain_v1/inline_summarizer.ipynb +++ /dev/null @@ -1,184 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 3, - "id": "425ca669-9caa-4bea-a1e7-fab8e95210d8", - "metadata": {}, - "outputs": [], - "source": [ - "from langchain_core.documents import Document\n", - "\n", - "from langchain.chains import summarization\n", - "from langchain.chat_models import init_chat_model" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "15301db9-26cf-4da9-8d74-cd6eabef5b04", - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "module 'langchain.chains.summarization' has no attribute 'InlineSummarizer'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 4\u001b[39m\n\u001b[32m 1\u001b[39m model = init_chat_model(\u001b[33m\"\u001b[39m\u001b[33mclaude-opus-4-20250514\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 3\u001b[39m summarizer = (\n\u001b[32m----> \u001b[39m\u001b[32m4\u001b[39m \u001b[43msummarization\u001b[49m\u001b[43m.\u001b[49m\u001b[43mInlineSummarizer\u001b[49m(model, prompt=\u001b[33m\"\u001b[39m\u001b[33mProduce a summary in french\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 5\u001b[39m .build()\n\u001b[32m 6\u001b[39m .compile()\n\u001b[32m 7\u001b[39m )\n", - "\u001b[31mAttributeError\u001b[39m: module 'langchain.chains.summarization' has no attribute 'InlineSummarizer'" - ] - } - ], - "source": [ - "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "\n", - "summarizer = (\n", - " summarization.InlineSummarizer(model, prompt=\"Produce a summary in french\")\n", - " .build()\n", - " .compile()\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3488cf7a-1e7b-4d0a-83bc-307f10ce0344", - "metadata": {}, - "outputs": [], - "source": [ - "documents = [\n", - " Document(\n", - " page_content=\"\"\"\n", - "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", - "\n", - "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", - "\"\"\",\n", - " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "Small modular reactors (SMRs) are gaining attention as a scalable nuclear option for future grids. Unlike traditional plants, SMRs are factory-built, with designs that reduce capital risk and allow for phased deployment. Countries including Canada, Poland, and the UK have committed to SMR pilot projects. NuScale received the first-ever U.S. NRC certification for its design in 2023.\n", - "\n", - "The challenge lies in financing and regulatory friction. While the tech is mature, each deployment requires bespoke siting approvals. Critics argue that grid-scale renewables and battery storage will outcompete SMRs on price. Still, utilities facing baseload shortfalls—especially those decommissioning coal plants—are exploring SMRs as replacement assets with better public acceptance than legacy nuclear.\n", - "\"\"\",\n", - " metadata={\"source\": \"modular_nuclear_reactors\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "Vertical farming startups are shifting from premium greens to calorie crops like wheat and potatoes. Recent advances in LED efficiency and robotic harvesting have cut production costs by 40% over five years. Some companies now claim cost parity with traditional field-grown produce—especially when factoring in water savings and proximity to urban markets.\n", - "\n", - "However, energy use remains a concern. Large facilities still consume significant power, and most are not yet net-zero. Policy incentives in places like Singapore and the UAE are accelerating deployment, especially in food-insecure regions. In the U.S., real estate economics and regional energy prices dictate whether vertical farming is viable at scale.\n", - "\"\"\",\n", - " metadata={\"source\": \"vertical_farming\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "As EV demand surges, lithium production is becoming a geopolitical chokepoint. Traditional extraction via evaporation ponds takes months and is limited to specific geographies. Direct lithium extraction (DLE) technologies aim to recover lithium faster and from more varied sources, including oilfield brines and geothermal plants.\n", - "\n", - "Early pilots in Argentina and Utah show promise, with extraction times cut to hours and recovery rates above 85%. However, energy intensity and water usage vary widely depending on method. Major auto OEMs like GM and Ford have signed early agreements with DLE startups, aiming to secure supply without exposure to legacy mining delays or ESG blowback.\n", - "\"\"\",\n", - " metadata={\"source\": \"direct_lithium_extraction\"},\n", - " ),\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "265349ed-4d7a-496b-8d13-869401fb7afe", - "metadata": {}, - "outputs": [], - "source": [ - "output = summarizer.invoke({\"documents\": documents})" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "abb40de0-8e75-4af9-afe3-24bdd3de21a2", - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import Markdown" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d1787872-841f-42d8-ac61-ba49b89c2577", - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "**Résumé des innovations technologiques émergentes**\n", - "\n", - "**Carburants synthétiques dans l'aviation**\n", - "Les carburants synthétiques, produits à partir de carbone capturé et d'hydrogène vert, gagnent du terrain dans l'aviation. Le mandat européen \"ReFuelEU\" impose l'utilisation croissante de carburant d'aviation durable (SAF) dès 2025. Airbus et Rolls-Royce ont réalisé des vols long-courriers entièrement alimentés au kérosène synthétique. Cependant, la production actuelle représente moins de 0,1% de la demande mondiale et les coûts restent 3 à 5 fois supérieurs aux alternatives fossiles. De nouvelles raffineries sont en construction en Norvège, au Chili et au Texas, avec une montée en puissance prévue entre 2026-2030.\n", - "\n", - "**IA dans la découverte pharmaceutique**\n", - "L'intelligence artificielle accélère la découverte de médicaments, notamment dans l'identification de cibles et la génération de molécules. Des plateformes comme BenevolentAI utilisent des modèles génératifs, mais le principal obstacle reste la qualité des données d'entraînement. Pour y remédier, certaines startups s'associent à des organisations de recherche contractuelle pour générer des ensembles de données propriétaires. La FDA a lancé des programmes pilotes pour évaluer la validation des candidats générés par IA.\n", - "\n", - "**Petits réacteurs modulaires (SMR)**\n", - "Les SMR attirent l'attention comme option nucléaire évolutive. Contrairement aux centrales traditionnelles, ils sont fabriqués en usine avec des designs réduisant les risques financiers. Le Canada, la Pologne et le Royaume-Uni se sont engagés dans des projets pilotes. NuScale a reçu la première certification américaine en 2023. Les défis restent le financement et les frictions réglementaires, bien que les services publics confrontés à des déficits de charge de base explorent cette option.\n", - "\n", - "**Agriculture verticale**\n", - "Les startups d'agriculture verticale passent des légumes premium aux cultures caloriques comme le blé et les pommes de terre. Les progrès en efficacité LED et récolte robotisée ont réduit les coûts de production de 40% en cinq ans. Certaines entreprises revendiquent la parité des coûts avec l'agriculture traditionnelle. Cependant, la consommation énergétique reste préoccupante, et la viabilité dépend largement des incitations politiques et des économies régionales.\n", - "\n", - "**Extraction directe du lithium**\n", - "Face à la demande croissante de véhicules électriques, la production de lithium devient un enjeu géopolitique. Les technologies d'extraction directe du lithium (DLE) visent à récupérer le lithium plus rapidement et de sources plus variées. Les projets pilotes en Argentine et dans l'Utah montrent des résultats prometteurs avec des temps d'extraction réduits à quelques heures et des taux de récupération supérieurs à 85%. Les grands constructeurs automobiles comme GM et Ford ont signé des accords avec des startups DLE pour sécuriser leur approvisionnement." - ], - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Markdown(output[\"summary\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a6f70faa-7ced-4bf6-b79b-a5372786da01", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/src/langchain_v1/map_reduce.ipynb b/src/langchain_v1/map_reduce.ipynb index b50e442cd..65cf5dbca 100644 --- a/src/langchain_v1/map_reduce.ipynb +++ b/src/langchain_v1/map_reduce.ipynb @@ -1,274 +1,170 @@ { "cells": [ { - "cell_type": "code", - "execution_count": 1, - "id": "79d8b593-724e-46be-b24d-b4f1d5d9e353", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", + "cell_type": "markdown", + "id": "4b43aef4-1930-47d6-a112-73a2cfbae0a1", "metadata": {}, - "outputs": [], "source": [ - "from typing import Optional\n", + "---\n", + "title: \"Map reduce\"\n", + "icon: \"rhombus\"\n", + "---\n", "\n", - "from langchain_core.documents import Document\n", - "from pydantic import BaseModel, Field, RootModel\n", + "**Map Reduce** chains enable efficient parallel processing of multiple documents by dividing the task into two stages:\n", "\n", - "from langchain.chains.summarization.map_reduce import create_map_reduce_extractor\n", + "1. **Map:** Each document is processed independently and concurrently—similar to having multiple readers analyze different books at the same time.\n", + "2. **Reduce (optional):** The individual outputs are then aggregated into a single, cohesive result.\n", "\n", - "# from langchain.extraction import create_batch_extractor, create_parallel_extractor\n", - "from langchain.chat_models import init_chat_model\n", + "This method is particularly valuable in two scenarios:\n", "\n", + "* When processing **many large documents** that, together, would exceed the context window of a language model.\n", + "* When documents are **independent** and can be processed in parallel to improve efficiency.\n", "\n", - "class Person(BaseModel):\n", - " \"\"\"Person to extract.\"\"\"\n", + "By splitting the workload, Map Reduce helps scale processing while maintaining performance and coherence.\n", "\n", - " name: str\n", - " age: Optional[str] = None\n", - " hair_color: Optional[str] = None\n", - " source_doc_ids: list[str] = Field(\n", - " default=[],\n", - " description=\"The IDs of the documents where the information was found.\",\n", - " )\n", + "```mermaid\n", + "graph TD\n", + " A[Input: Individual Documents] --> B1[Map: Process Doc 1]\n", + " A --> B2[Map: Process Doc 2]\n", + " A --> B3[Map: Process Doc 3]\n", + " A --> Bn[Map: Process Doc N]\n", "\n", + " B1 --> C[Intermediate Results]\n", + " B2 --> C\n", + " B3 --> C\n", + " Bn --> C\n", "\n", - "class PeopleRoot(BaseModel):\n", - " people: list[Person] = []" + " C -- Optional --> D[Reduce: Aggregate Results]\n", + " D --> E[Final Output]\n", + "```\n" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "execution_count": 18, + "id": "ea9f2d4b-5d65-4227-95ef-095c16fcbaf5", "metadata": {}, "outputs": [], "source": [ - "People = RootModel(list[Person])\n", + "from langchain.documents import Document\n", "\n", "documents = [\n", " Document(\n", - " id=\"1\",\n", - " page_content=\"\"\"Bobby Luka was 10 years old.\n", - "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", - "\n", - "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", - "\"\"\",\n", - " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", - " ),\n", - " Document(\n", - " id=\"2\",\n", - " page_content=\"\"\"\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", + " page_content=(\n", + " \"Richard Feynman was born on May 11, 1918, in Queens, New York. He showed an early \"\n", + " \"interest in science, especially radios and engineering. As a teenager, he repaired \"\n", + " \"radios as a hobby and even earned some money doing it.\\n\\n\"\n", + " \"He attended the Massachusetts Institute of Technology (MIT) for his undergraduate \"\n", + " \"studies and later earned his PhD in physics from Princeton University in 1942. At \"\n", + " \"Princeton, he impressed many with his quick mind and problem-solving skills.\\n\\n\"\n", + " \"After completing his PhD, he joined the Los Alamos Laboratory as part of the Manhattan Project.\"\n", + " ),\n", + " metadata={\"source\": \"early_life\"},\n", + " id=\"1\"\n", " ),\n", " Document(\n", - " page_content=\"\"\"\n", - "I love to eat tomatoes!!!!!\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", + " page_content=(\n", + " \"During World War II, Feynman worked on the Manhattan Project, the top-secret effort \"\n", + " \"to build the first atomic bomb. He was based at Los Alamos Laboratory in New Mexico.\\n\\n\"\n", + " \"There, he worked under physicist Hans Bethe and was known for his creativity and sense \"\n", + " \"of humor. One of his habits was picking locks and cracking safes—not to steal secrets, \"\n", + " \"but to prove how insecure they were.\\n\\n\"\n", + " \"Feynman’s contributions helped the U.S. develop nuclear weapons, which were used in \"\n", + " \"1945 to end the war.\"\n", + " ),\n", + " metadata={\"source\": \"manhattan_project\"},\n", + " id=\"2\"\n", " ),\n", " Document(\n", - " id=\"3\",\n", - " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\n", - "Bobby Luka's hair is brown.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", + " page_content=(\n", + " \"After the war, Feynman became a professor at Cornell University and later at the \"\n", + " \"California Institute of Technology (Caltech). In 1965, he won the Nobel Prize in \"\n", + " \"Physics for his work on quantum electrodynamics, shared with Julian Schwinger and \"\n", + " \"Sin-Itiro Tomonaga.\\n\\n\"\n", + " \"He became famous for his lectures, especially the Feynman Lectures on Physics, which \"\n", + " \"are still used today. In 1986, he served on the Rogers Commission that investigated \"\n", + " \"the Space Shuttle Challenger disaster.\\n\\n\"\n", + " \"Feynman died on February 15, 1988, in Los Angeles, California, after a long battle \"\n", + " \"with cancer.\"\n", + " ),\n", + " metadata={\"source\": \"later_career\"},\n", + " id=\"3\"\n", " ),\n", - "]\n", - "\n", - "\n", - "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "summarizer = create_map_reduce_extractor(\n", - " model,\n", - " response_format=PeopleRoot,\n", - ").compile(name=\"MapReducerExtractor\")\n", - "\n", - "\n", - "output = summarizer.invoke({\"documents\": documents})" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "82d868cb-a9dc-4be3-b48e-1cb6e3f1d7b0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'indexes': [0],\n", - " 'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color=None, source_doc_ids=['1'])])},\n", - " {'indexes': [1], 'result': PeopleRoot(people=[])},\n", - " {'indexes': [2], 'result': PeopleRoot(people=[])},\n", - " {'indexes': [3],\n", - " 'result': PeopleRoot(people=[Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3']), Person(name='Bobby Luka', age=None, hair_color='brown', source_doc_ids=['3'])])}]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "output[\"results\"]" + "]" ] }, { "cell_type": "code", - "execution_count": 8, - "id": "f5a38106-7f29-4209-b6ff-cba0eb0efa0d", + "execution_count": 24, + "id": "3785b5fb-e29b-4f95-97c0-3c3a76aad09b", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "{'indexes': [0], 'result': \"Based on the document, the following locations are mentioned:\\n\\n1. **Queens, New York** - Richard Feynman's birthplace\\n2. **Massachusetts Institute of Technology (MIT)** - Where he attended undergraduate studies\\n3. **Princeton University** - Where he earned his PhD in physics in 1942\\n4. **Los Alamos Laboratory** - Where he worked after completing his PhD as part of the Manhattan Project\\n\\nThese locations trace Feynman's early life journey from his birth in New York through his education in Massachusetts and New Jersey, to his work on the Manhattan Project in New Mexico.\"}\n", + "--\n", + "{'indexes': [1], 'result': \"Based on the document, the following locations are mentioned:\\n\\n1. **Los Alamos Laboratory** - Where Feynman was based during his work on the Manhattan Project\\n2. **New Mexico** - The state where Los Alamos Laboratory is located\\n3. **U.S. (United States)** - The country that developed the nuclear weapons\\n\\nThese are the only specific locations mentioned in this document about Feynman's work during World War II on the Manhattan Project.\"}\n", + "--\n", + "{'indexes': [2], 'result': 'Based on the document, the following locations are mentioned:\\n\\n1. **Cornell University** - Where Feynman became a professor after the war\\n2. **California Institute of Technology (Caltech)** - Where he later became a professor\\n3. **Los Angeles, California** - Where Feynman died on February 15, 1988\\n\\nThese are the only specific locations explicitly mentioned in this document.'}\n", + "--\n", + "Based on the documents, here are the locations associated with Richard Feynman's life and career:\n", + "\n", + "**Early Life and Education:**\n", + "- **Queens, New York** - Birthplace\n", + "- **Massachusetts Institute of Technology (MIT)** - Undergraduate studies\n", + "- **Princeton University** - PhD in physics (1942)\n", + "\n", + "**Manhattan Project:**\n", + "- **Los Alamos Laboratory, New Mexico** - Worked on nuclear weapons development during World War II\n", + "\n", + "**Academic Career:**\n", + "- **Cornell University** - Professor position after the war\n", + "- **California Institute of Technology (Caltech)** - Later professor position\n", + "\n", + "**Death:**\n", + "- **Los Angeles, California** - Died February 15, 1988\n", + "\n", + "These locations trace Feynman's journey from his New York origins through his education in the Northeast, his wartime service in New Mexico, his post-war academic positions at prestigious universities, and his final years in California.\n" + ] } ], "source": [ - "output[\"result\"]" - ] - }, - { - "cell_type": "markdown", - "id": "e75c1193-1eeb-4a7e-b5bd-8a59465443f5", - "metadata": {}, - "source": [ - "# Sequential extraction" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "be64cbd8-8664-412a-8097-fe4fd4f674bb", - "metadata": {}, - "outputs": [], - "source": [ - "documents = [\n", - " Document(\n", - " id=\"1\",\n", - " page_content=\"\"\"Bobby Luka was 10 years old.\n", - "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", - "\n", - "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", - "\"\"\",\n", - " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", - " ),\n", - " Document(\n", - " id=\"2\",\n", - " page_content=\"\"\"\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "I love to eat tomatoes!!!!!\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - " Document(\n", - " id=\"3\",\n", - " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\n", - "Bobby Luka's hair is brown.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "19c70ec2-0142-43e4-95bd-745c66716149", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from langchain_core.documents import Document\n", - "from pydantic import BaseModel, Field\n", - "\n", - "from langchain.chains.summarization import create_summarizer\n", + "from langchain.chains import create_map_reduce_chain\n", "from langchain.chat_models import init_chat_model\n", "\n", + "model = init_chat_model(\"claude-opus-4-20250514\", max_tokens=32_000)\n", "\n", - "class Person(BaseModel):\n", - " \"\"\"Person to extract.\"\"\"\n", - "\n", - " name: str\n", - " age: Optional[str] = None\n", - " hair_color: Optional[str] = None\n", - " source_doc_ids: list[str] = Field(\n", - " default=[],\n", - " description=\"The IDs of the documents where the information was found.\",\n", + "chain = (\n", + " create_map_reduce_chain(\n", + " model, \n", + " map_prompt=\"Which locations are mentioned in the document?\",\n", " )\n", + " .compile(name='location-extractor')\n", + ")\n", "\n", "\n", - "class PeopleRoot(BaseModel):\n", - " people: list[Person]\n", + "response = chain.invoke({\"documents\": documents})\n", + "for mapped_result in response['map_results']:\n", + " print(mapped_result)\n", + " print('--')\n", "\n", "\n", - "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "\n", - "summarizer = create_summarizer(\n", - " model,\n", - " initial_prompt=\"Extract information from the text to match the expected output format.\",\n", - " refine_prompt=\"You are responsible for updating extracted information. The currently extracted information is provided in the context. Make sure to carry it forward and / or update it with any new found facts in the given text. Also if there's ne winformation that should be extracted in the given text please do so.\",\n", - " response_format=PeopleRoot,\n", - " strategy=\"batch\",\n", - ").compile(name=\"Summarizer\")\n", - "\n", - "output = summarizer.invoke({\"documents\": documents})\n", - "output" + "# And examine the default reduce result\n", + "print(response['result'])" ] }, { - "cell_type": "code", - "execution_count": 17, - "id": "c5a37fb5-97ba-4303-a927-c4a9f4ed557f", + "cell_type": "markdown", + "id": "064470e6-f6a3-4ea4-a979-800dc079ef10", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "output" + "# Rate Limiting\n", + "\n", + "You may need to rate limit the requests to the LLM when issuing requests in parallel.\n", + "\n", + "Please see the documentation in **CHAT MODELS** for information on how to add a rate limiter." ] } ], diff --git a/src/langchain_v1/refine_summarizer.ipynb b/src/langchain_v1/refine_summarizer.ipynb deleted file mode 100644 index 9caaeebfb..000000000 --- a/src/langchain_v1/refine_summarizer.ipynb +++ /dev/null @@ -1,230 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "79d8b593-724e-46be-b24d-b4f1d5d9e353", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from langchain_core.documents import Document\n", - "from pydantic import BaseModel, Field\n", - "\n", - "from langchain.chains.summarization import create_summarizer\n", - "from langchain.chat_models import init_chat_model\n", - "\n", - "\n", - "class Person(BaseModel):\n", - " \"\"\"Person to extract.\"\"\"\n", - "\n", - " name: str\n", - " age: Optional[str] = None\n", - " hair_color: Optional[str] = None\n", - " source_doc_ids: list[str] = Field(\n", - " default=[],\n", - " description=\"The IDs of the documents where the information was found.\",\n", - " )\n", - "\n", - "\n", - "class PeopleRoot(BaseModel):\n", - " people: list[Person]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", - "metadata": {}, - "outputs": [], - "source": [ - "# People = RootModel(list[Person])\n", - "\n", - "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "summarizer = create_summarizer(\n", - " model,\n", - " initial_prompt=\"Produce a summary in bullet with up to 3 bullets.\",\n", - " response_format=PeopleRoot,\n", - ").compile(name=\"Refiner\")\n", - "\n", - "\n", - "output = summarizer.invoke({\"documents\": documents})" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "82d868cb-a9dc-4be3-b48e-1cb6e3f1d7b0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'result': PeopleRoot(people=[Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['2'])])}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "output" - ] - }, - { - "cell_type": "markdown", - "id": "e75c1193-1eeb-4a7e-b5bd-8a59465443f5", - "metadata": {}, - "source": [ - "# Sequential extraction" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "be64cbd8-8664-412a-8097-fe4fd4f674bb", - "metadata": {}, - "outputs": [], - "source": [ - "documents = [\n", - " Document(\n", - " id=\"1\",\n", - " page_content=\"\"\"Bobby Luka was 10 years old.\n", - "Synthetic fuels—produced from captured carbon and green hydrogen—are gaining traction in aviation. The EU’s “ReFuelEU” mandate requires increasing blends of sustainable aviation fuel (SAF) starting in 2025. Airbus and Rolls-Royce have completed long-haul test flights powered entirely by synthetic kerosene. However, current production is less than 0.1% of global jet fuel demand, and costs remain 3–5x higher than fossil alternatives.\n", - "\n", - "New refineries are under construction in Norway, Chile, and Texas. Analysts expect rapid scaling between 2026–2030 as demand certainty from mandates intersects with cheaper electrolyzer technology. Airlines like Lufthansa and United are signing multi-year offtake agreements, often at fixed above-market prices, to secure early access.\n", - "\"\"\",\n", - " metadata={\"source\": \"synthetic_fuel_aviation\"},\n", - " ),\n", - " Document(\n", - " id=\"2\",\n", - " page_content=\"\"\"\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - " Document(\n", - " page_content=\"\"\"\n", - "I love to eat tomatoes!!!!!\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - " Document(\n", - " id=\"3\",\n", - " page_content=\"\"\"Jack Johnson was 23 years old and blonde.\n", - "AI is accelerating early-stage drug discovery, especially in target identification and molecule generation. Platforms like BenevolentAI and Insilico Medicine have generated preclinical candidates using generative models trained on biological and chemical data. However, the biggest bottleneck is not compute—it’s high-quality training data. Much of the biomedical literature is unstructured, biased, or contradictory.\n", - "\n", - "To address this, some startups are partnering with CROs (contract research organizations) to generate clean, proprietary datasets. Others are building large-scale knowledge graphs across modalities—genomics, imaging, EMRs—enabling more robust model fine-tuning. The FDA has begun pilot programs to assess how AI-generated candidates can be validated through adaptive trial design.\n", - "\n", - "Bobby Luka's hair is brown.\n", - "\"\"\",\n", - " metadata={\"source\": \"ai_drug_discovery\"},\n", - " ),\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "19c70ec2-0142-43e4-95bd-745c66716149", - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Optional\n", - "\n", - "from langchain_core.documents import Document\n", - "from pydantic import BaseModel, Field\n", - "\n", - "from langchain.chains.summarization import create_summarizer\n", - "from langchain.chat_models import init_chat_model\n", - "\n", - "\n", - "class Person(BaseModel):\n", - " \"\"\"Person to extract.\"\"\"\n", - "\n", - " name: str\n", - " age: Optional[str] = None\n", - " hair_color: Optional[str] = None\n", - " source_doc_ids: list[str] = Field(\n", - " default=[],\n", - " description=\"The IDs of the documents where the information was found.\",\n", - " )\n", - "\n", - "\n", - "class PeopleRoot(BaseModel):\n", - " people: list[Person]\n", - "\n", - "\n", - "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "\n", - "summarizer = create_summarizer(\n", - " model,\n", - " initial_prompt=\"Extract information from the text to match the expected output format.\",\n", - " refine_prompt=\"You are responsible for updating extracted information. The currently extracted information is provided in the context. Make sure to carry it forward and / or update it with any new found facts in the given text. Also if there's ne winformation that should be extracted in the given text please do so.\",\n", - " response_format=PeopleRoot,\n", - " strategy=\"batch\",\n", - ").compile(name=\"Summarizer\")\n", - "\n", - "output = summarizer.invoke({\"documents\": documents})\n", - "output" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c5a37fb5-97ba-4303-a927-c4a9f4ed557f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'result': PeopleRoot(people=[Person(name='Bobby Luka', age='10', hair_color='brown', source_doc_ids=['1', '3']), Person(name='Jack Johnson', age='23', hair_color='blonde', source_doc_ids=['3'])])}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "output" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From d185903b53bfad0e4fe506a75d43ef600c5ead28 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 15:15:51 -0400 Subject: [PATCH 07/24] x --- src/langchain_v1/recursive.ipynb | 234 +++++++++++++++++++++++++ src/langchain_v1/stuff.ipynb | 281 +++++++++++++++++++++++++++++++ 2 files changed, 515 insertions(+) create mode 100644 src/langchain_v1/recursive.ipynb create mode 100644 src/langchain_v1/stuff.ipynb diff --git a/src/langchain_v1/recursive.ipynb b/src/langchain_v1/recursive.ipynb new file mode 100644 index 000000000..bde4b7dd8 --- /dev/null +++ b/src/langchain_v1/recursive.ipynb @@ -0,0 +1,234 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "57ad9ff9-68b6-47ef-842e-4254177b8028", + "metadata": {}, + "source": [ + "---\n", + "title: \"Recursive\"\n", + "icon: \"arrows-spin\"\n", + "---\n", + "\n", + "\n", + "\n", + "```mermaid\n", + "graph TD\n", + " %% Level 0 - Original Docs\n", + " A1[Doc1] --> B1[Sum1]\n", + " A2[Doc2] --> B2[Sum2]\n", + " A3[Doc3] --> B3[Sum3]\n", + " A4[Doc4] --> B4[Sum4]\n", + " A5[Doc5] --> B5[Sum5]\n", + " A6[Doc6] --> B6[Sum6]\n", + " A7[Doc7] --> B7[Sum7]\n", + " A8[Doc8] --> B8[Sum8]\n", + "\n", + " %% Level 1 - First Combines\n", + " B1 --> C1[CombSum1]\n", + " B2 --> C1\n", + " B3 --> C2[CombSum2]\n", + " B4 --> C2\n", + " B5 --> C3[CombSum3]\n", + " B6 --> C3\n", + " B7 --> C4[CombSum4]\n", + " B8 --> C4\n", + "\n", + " %% Level 2 - Mega Combines\n", + " C1 --> D1[MegaSum1]\n", + " C2 --> D1\n", + " C3 --> D2[MegaSum2]\n", + " C4 --> D2\n", + "\n", + " %% Level 3 - Final Summary\n", + " D1 --> E[FINAL_SUMMARY]\n", + " D2 --> E\n", + "```\n", + "\n", + "\n", + "## Example dataset\n", + "\n", + "\n", + "This text is sourced from [Project Gutenberg](https://www.gutenberg.org/ebooks/2600) and is in the public domain. Redistribution is permitted, but the following attribution must be preserved:\n", + "\n", + "> This eBook is for the use of anyone anywhere at no cost and with\n", + "> almost no restrictions whatsoever. You may copy it, give it away or\n", + "> re-use it under the terms of the Project Gutenberg License included\n", + "> with this eBook or online at [www.gutenberg.org](https://www.gutenberg.org).\n", + ">\n", + "> Public domain text provided by Project Gutenberg:\n", + "> [https://www.gutenberg.org/ebooks/2600](https://www.gutenberg.org/ebooks/2600)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b7b505b7-0118-43a6-8c56-0c3a81636533", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File 'war_and_peace_gutenberg.txt' already exists. Skipping download.\n" + ] + } + ], + "source": [ + "from pathlib import Path\n", + "import requests\n", + "\n", + "# URL of the plain text file from Project Gutenberg\n", + "url = \"https://www.gutenberg.org/cache/epub/1184/pg1184.txt\"\n", + "output_path = Path(\"war_and_peace_gutenberg.txt\")\n", + "\n", + "# Check if file already exists\n", + "if output_path.exists():\n", + " print(f\"File '{output_path}' already exists. Skipping download.\")\n", + "else:\n", + " response = requests.get(url)\n", + " if response.status_code == 200:\n", + " output_path.write_text(response.text + attribution, encoding=\"utf-8\")\n", + " print(f\"Downloaded and saved to '{output_path}' with attribution.\")\n", + " else:\n", + " print(f\"Failed to download. Status code: {response.status_code}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "96e32c70-4e90-4340-a92f-6758dab9c390", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.documents import Document" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "813a1aca-cdba-40f0-aba1-9ae92f119e46", + "metadata": {}, + "outputs": [], + "source": [ + "text = output_path.read_text()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "72432c2e-bea4-4b70-8b97-0059d7b146cb", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", + "splitter = RecursiveCharacterTextSplitter(chunk_size=100_000)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "1c2c45b8-c3a7-48d4-9e48-333be73c46c1", + "metadata": {}, + "outputs": [], + "source": [ + "texts = splitter.split_text(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "b09885cb-7079-41ac-b087-6a148d4dd708", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "27" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(texts)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "from langchain.chains.summarization import create_summarizer\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_core.documents import Document\n", + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class Person(BaseModel):\n", + " \"\"\"Person to extract.\"\"\"\n", + "\n", + " name: str\n", + " age: str | None = None\n", + " hair_color: str | None = None\n", + " source_doc_ids: list[str] = Field(\n", + " default=[],\n", + " description=\"The IDs of the documents where the information was found.\",\n", + " )\n", + "\n", + "\n", + "class PeopleRoot(BaseModel):\n", + " people: list[Person]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "metadata": {}, + "outputs": [], + "source": [ + "# People = RootModel(list[Person])\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\")\n", + "summarizer = create_summarizer(\n", + " model,\n", + " initial_prompt=\"Produce a summary in bullet with up to 3 bullets.\",\n", + " response_format=PeopleRoot,\n", + ").compile(name=\"Refiner\")\n", + "\n", + "\n", + "output = summarizer.invoke({\"documents\": documents})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/langchain_v1/stuff.ipynb b/src/langchain_v1/stuff.ipynb new file mode 100644 index 000000000..c7998012b --- /dev/null +++ b/src/langchain_v1/stuff.ipynb @@ -0,0 +1,281 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "32610a5b-23ea-4880-8013-001b114b555a", + "metadata": {}, + "source": [ + "---\n", + "title: \"Stuff chain\"\n", + "icon: \"Book\"\n", + "---\n", + "\n", + "A chain that \"stuffs\" all the documents into the context to run summarization or extraction tasks." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "425ca669-9caa-4bea-a1e7-fab8e95210d8", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains import create_stuff_documents_chain\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain.documents import Document" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3488cf7a-1e7b-4d0a-83bc-307f10ce0344", + "metadata": {}, + "outputs": [], + "source": [ + "documents = [\n", + " Document(\n", + " page_content=(\n", + " \"Richard Feynman was born on May 11, 1918, in Queens, New York. He showed an early \"\n", + " \"interest in science, especially radios and engineering. As a teenager, he repaired \"\n", + " \"radios as a hobby and even earned some money doing it.\\n\\n\"\n", + " \"He attended the Massachusetts Institute of Technology (MIT) for his undergraduate \"\n", + " \"studies and later earned his PhD in physics from Princeton University in 1942. At \"\n", + " \"Princeton, he impressed many with his quick mind and problem-solving skills.\\n\\n\"\n", + " \"After completing his PhD, he joined the Los Alamos Laboratory as part of the Manhattan Project.\"\n", + " ),\n", + " metadata={\"source\": \"early_life\"},\n", + " id=\"1\"\n", + " ),\n", + " Document(\n", + " page_content=(\n", + " \"During World War II, Feynman worked on the Manhattan Project, the top-secret effort \"\n", + " \"to build the first atomic bomb. He was based at Los Alamos Laboratory in New Mexico.\\n\\n\"\n", + " \"There, he worked under physicist Hans Bethe and was known for his creativity and sense \"\n", + " \"of humor. One of his habits was picking locks and cracking safes—not to steal secrets, \"\n", + " \"but to prove how insecure they were.\\n\\n\"\n", + " \"Feynman’s contributions helped the U.S. develop nuclear weapons, which were used in \"\n", + " \"1945 to end the war.\"\n", + " ),\n", + " metadata={\"source\": \"manhattan_project\"},\n", + " id=\"2\"\n", + " ),\n", + " Document(\n", + " page_content=(\n", + " \"After the war, Feynman became a professor at Cornell University and later at the \"\n", + " \"California Institute of Technology (Caltech). In 1965, he won the Nobel Prize in \"\n", + " \"Physics for his work on quantum electrodynamics, shared with Julian Schwinger and \"\n", + " \"Sin-Itiro Tomonaga.\\n\\n\"\n", + " \"He became famous for his lectures, especially the Feynman Lectures on Physics, which \"\n", + " \"are still used today. In 1986, he served on the Rogers Commission that investigated \"\n", + " \"the Space Shuttle Challenger disaster.\\n\\n\"\n", + " \"Feynman died on February 15, 1988, in Los Angeles, California, after a long battle \"\n", + " \"with cancer.\"\n", + " ),\n", + " metadata={\"source\": \"later_career\"},\n", + " id=\"3\"\n", + " ),\n", + "]\n" + ] + }, + { + "cell_type": "markdown", + "id": "e1a42b30-c290-419a-a0d7-60a1517eb0d0", + "metadata": {}, + "source": [ + "## Summarization" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a0581ab0-634a-447e-b8cb-bfe1ef1dde67", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here are 3 key sentences summarizing Richard Feynman's life:\n", + "\n", + "1. Richard Feynman was a brilliant physicist born in 1918 in Queens, New York, who showed early aptitude for science and engineering, eventually earning his PhD from Princeton in 1942.\n", + "\n", + "2. During World War II, he made significant contributions to the Manhattan Project at Los Alamos, where he was known both for his scientific creativity and his playful habit of picking locks to demonstrate security flaws.\n", + "\n", + "3. After the war, he became a renowned professor at Caltech, won the 1965 Nobel Prize in Physics for his work on quantum electrodynamics, created the famous Feynman Lectures on Physics, and served on the commission investigating the Challenger disaster before his death in 1988.\n" + ] + } + ], + "source": [ + "model = init_chat_model(\"claude-opus-4-20250514\", max_tokens=32_000)\n", + "\n", + "summarizer = (\n", + " create_stuff_documents_chain(\n", + " model, \n", + " prompt=\"Summarize the contents into 3 key sentences.\"\n", + " )\n", + " .compile(name='summarize')\n", + ")\n", + "\n", + "print(summarizer.invoke({\"documents\": documents})['result'])" + ] + }, + { + "cell_type": "markdown", + "id": "aab1b929-ddb9-4ceb-a74c-1b2bb830ef31", + "metadata": {}, + "source": [ + "## Structured summary" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9c96df90-0a3e-43cc-8606-a394b1cb6381", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: Richard Feynman: Pioneering Physicist and Nobel Laureate\n", + " * Born May 11, 1918, in Queens, New York, Feynman showed early aptitude for science and engineering, earning money repairing radios as a teenager (1)\n", + " * Completed undergraduate studies at MIT and earned PhD in physics from Princeton University in 1942, impressing colleagues with his problem-solving abilities (1)\n", + " * Worked on the Manhattan Project at Los Alamos Laboratory during WWII under Hans Bethe, contributing to the development of the atomic bomb (1, 2)\n", + " * Known for his creativity and humor at Los Alamos, including his habit of picking locks and cracking safes to demonstrate security vulnerabilities (2)\n", + " * Won the 1965 Nobel Prize in Physics for quantum electrodynamics work, shared with Julian Schwinger and Sin-Itiro Tomonaga (3)\n", + " * Taught at Cornell University and Caltech, creating the influential Feynman Lectures on Physics that remain widely used today (3)\n", + " * Served on the Rogers Commission investigating the 1986 Space Shuttle Challenger disaster (3)\n", + " * Died February 15, 1988, in Los Angeles, California, after battling cancer (3)\n" + ] + } + ], + "source": [ + "from pydantic import BaseModel, Field\n", + "from typing import Optional, List\n", + "\n", + "class BulletPoint(BaseModel):\n", + " \"\"\"Represents a single key idea with supporting document references.\"\"\"\n", + " content: str = Field(description=\"A concise bullet point summarizing a key idea.\")\n", + " source_doc_ids: List[str] = Field(default_factory=list, description=\"Document IDs supporting this bullet point.\")\n", + "\n", + "class StructuredSummary(BaseModel):\n", + " \"\"\"Structured summary including a title and supporting bullet points.\"\"\"\n", + " title: str = Field(description=\"A concise title summarizing the main theme.\")\n", + " bullet_points: List[BulletPoint] = Field(description=\"List of bullet points with supporting document references.\")\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\", max_tokens=32_000)\n", + "\n", + "chain = (\n", + " create_stuff_documents_chain(\n", + " model,\n", + " response_format=StructuredSummary,\n", + " )\n", + " .compile(name='structured_summary_extractor')\n", + ")\n", + "\n", + "structured_summary = chain.invoke({\"documents\": documents})['result']\n", + "\n", + "print(f\"Title: {structured_summary.title}\")\n", + "\n", + "for bullet_point in structured_summary.bullet_points:\n", + " if not bullet_point.source_doc_ids:\n", + " continue\n", + " sources = ', '.join(bullet_point.source_doc_ids)\n", + " print(f\" * {bullet_point.content} ({sources})\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "781bb94a-d043-4d47-a02b-619e7826fd93", + "metadata": {}, + "source": [ + "## Extraction" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "273f6c13-04d6-4ddb-b339-044a36e90129", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracted facts that have dates:\n", + " * on 1918-05-11: Born in Queens, New York (sources: 1)\n", + " * on 1942: PhD from Princeton University (sources: 1)\n", + " * on 1965: Won Nobel Prize in Physics (sources: 3)\n", + " * on 1986: Served on Rogers Commission (sources: 3)\n", + " * on 1988-02-15: Died in Los Angeles, California (sources: 3)\n" + ] + } + ], + "source": [ + "from pydantic import BaseModel, Field\n", + "from typing import Optional, List\n", + "\n", + "class Fact(BaseModel):\n", + " \"\"\"Fact about Richard Feynman.\"\"\"\n", + " content: str = Field(description=\"The content of the fact. No more than a few words.\")\n", + " iso_8601_date: Optional[str] = Field(default=None, description=\"The date associated with the fact if available. Formatted as YYYY-MM-DD.\")\n", + " source_doc_ids: List[str] = Field(default_factory=list, description=\"The document or documents in which the fact appeared.\")\n", + "\n", + "class Data(BaseModel):\n", + " \"\"\"Facts to extract\"\"\"\n", + " facts: List[Fact]\n", + "\n", + "model = init_chat_model(\"claude-opus-4-20250514\", max_tokens=32_000)\n", + "\n", + "chain = (\n", + " create_stuff_documents_chain(\n", + " model,\n", + " response_format=Data,\n", + " )\n", + " .compile(name='fact_extractor')\n", + ")\n", + "\n", + "fact_data = chain.invoke({\"documents\": documents})['result']\n", + "\n", + "print(\"Extracted facts that have dates:\")\n", + "for fact in fact_data.facts:\n", + " if not fact.source_doc_ids:\n", + " continue\n", + " if not fact.iso_8601_date:\n", + " continue\n", + " date_str = f\" on {fact.iso_8601_date}\" if fact.iso_8601_date else \"\"\n", + " sources = ', '.join(fact.source_doc_ids)\n", + " print(f\" * {date_str}: {fact.content} (sources: {sources})\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a530c10-7d4a-49a9-837d-855cebf35752", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 7788cf141c1884a3d2c232a78b76a07846ca70a9 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 15:29:08 -0400 Subject: [PATCH 08/24] x --- src/langchain_v1/recursive.ipynb | 192 ++++++++++++++++++++++--------- 1 file changed, 135 insertions(+), 57 deletions(-) diff --git a/src/langchain_v1/recursive.ipynb b/src/langchain_v1/recursive.ipynb index bde4b7dd8..b5f8a71ee 100644 --- a/src/langchain_v1/recursive.ipynb +++ b/src/langchain_v1/recursive.ipynb @@ -63,9 +63,17 @@ "\n" ] }, + { + "cell_type": "markdown", + "id": "ad27b7f1-a866-4785-8ffe-593dc8ea20c0", + "metadata": {}, + "source": [ + "## 🛠️ Step 1: Download the Text" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "id": "b7b505b7-0118-43a6-8c56-0c3a81636533", "metadata": {}, "outputs": [ @@ -98,115 +106,185 @@ ] }, { - "cell_type": "code", - "execution_count": 31, - "id": "96e32c70-4e90-4340-a92f-6758dab9c390", + "cell_type": "markdown", + "id": "84220f8a-b877-4785-a01a-35ffcbf62f0d", "metadata": {}, - "outputs": [], "source": [ - "from langchain.documents import Document" + "## 🧱 Step 2: Split Text into Chunks" ] }, { "cell_type": "code", - "execution_count": 32, - "id": "813a1aca-cdba-40f0-aba1-9ae92f119e46", + "execution_count": 2, + "id": "b41fb753-2184-4dd4-930f-60f997cc2535", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Chunks created: 27\n" + ] + } + ], "source": [ - "text = output_path.read_text()" + "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", + "\n", + "text = output_path.read_text()\n", + "\n", + "splitter = RecursiveCharacterTextSplitter(\n", + " chunk_size=100_000,\n", + " chunk_overlap=500,\n", + ")\n", + "\n", + "texts = splitter.split_text(text)\n", + "print(f\"Chunks created: {len(texts)}\")" ] }, { - "cell_type": "code", - "execution_count": 33, - "id": "72432c2e-bea4-4b70-8b97-0059d7b146cb", + "cell_type": "markdown", + "id": "8aaaacc2-bc99-4ce6-83a3-e71f393a5a0e", "metadata": {}, - "outputs": [], "source": [ - "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", - "splitter = RecursiveCharacterTextSplitter(chunk_size=100_000)" + "## 🧾 Step 3: Convert to Document Format" ] }, { "cell_type": "code", - "execution_count": 34, - "id": "1c2c45b8-c3a7-48d4-9e48-333be73c46c1", + "execution_count": 3, + "id": "c9e60652-9f13-45aa-bc33-1a75c200aed5", "metadata": {}, "outputs": [], "source": [ - "texts = splitter.split_text(text)" + "from langchain_core.documents import Document\n", + "\n", + "documents = [Document(page_content=chunk) for chunk in texts]" ] }, { - "cell_type": "code", - "execution_count": 35, - "id": "b09885cb-7079-41ac-b087-6a148d4dd708", + "cell_type": "markdown", + "id": "a395680c-9fd6-4245-bd63-3fd56a0e5c3d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "27" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "len(texts)\n" + "## 🔄 Step 4: Define Output Schema (Optional)" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", + "execution_count": 4, + "id": "e5185b45-df3c-4426-beae-001281a07932", "metadata": {}, "outputs": [], "source": [ - "\n", - "from langchain.chains.summarization import create_summarizer\n", - "from langchain.chat_models import init_chat_model\n", - "from langchain_core.documents import Document\n", "from pydantic import BaseModel, Field\n", "\n", - "\n", "class Person(BaseModel):\n", - " \"\"\"Person to extract.\"\"\"\n", - "\n", " name: str\n", " age: str | None = None\n", " hair_color: str | None = None\n", " source_doc_ids: list[str] = Field(\n", " default=[],\n", - " description=\"The IDs of the documents where the information was found.\",\n", + " description=\"The IDs of the documents where the information was found.\"\n", " )\n", "\n", - "\n", "class PeopleRoot(BaseModel):\n", - " people: list[Person]" + " people: list[Person]\n" + ] + }, + { + "cell_type": "markdown", + "id": "1fe4b01b-c514-46a5-b860-2766afaf5316", + "metadata": {}, + "source": [ + "## 🤖 Step 5: Build Recursive Summarizer" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "execution_count": 5, + "id": "aae93f68-f7de-49c0-a9ce-f884b29ff7cc", "metadata": {}, "outputs": [], "source": [ - "# People = RootModel(list[Person])\n", + "from langchain.chains import create_recursive_document_chain\n", + "from langchain.chat_models import init_chat_model\n", "\n", + "# Choose model ID (adjust to what your setup supports)\n", "model = init_chat_model(\"claude-opus-4-20250514\")\n", - "summarizer = create_summarizer(\n", - " model,\n", - " initial_prompt=\"Produce a summary in bullet with up to 3 bullets.\",\n", - " response_format=PeopleRoot,\n", - ").compile(name=\"Refiner\")\n", - "\n", "\n", - "output = summarizer.invoke({\"documents\": documents})" + "summarizer = create_recursive_document_chain(\n", + " model,\n", + " map_prompt=\"Produce a summary in bullet points with up to 3 bullets.\",\n", + ").compile(name=\"RecursiveSummarizer\")" + ] + }, + { + "cell_type": "markdown", + "id": "d523c7a8-3e49-48d5-9b5b-7b154bca323f", + "metadata": {}, + "source": [ + "## 🚀 Step 6: Run Summarization" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "ffaa45f3-4531-48c2-b229-fc51bdee328c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Output parser received a `max_tokens` stop reason. The output is likely incomplete—please increase `max_tokens` or shorten your prompt.\n", + "Traceback (most recent call last):\n", + " File \"/home/eugene/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/output_parsers/openai_tools.py\", line 336, in parse_result\n", + " pydantic_objects.append(name_dict[res[\"type\"]](**res[\"args\"]))\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"/home/eugene/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/pydantic/main.py\", line 253, in __init__\n", + " validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + "pydantic_core._pydantic_core.ValidationError: 1 validation error for PeopleRoot\n", + "people\n", + " Field required [type=missing, input_value={}, input_type=dict]\n", + " For further information visit https://errors.pydantic.dev/2.11/v/missing\n" + ] + }, + { + "ename": "ValidationError", + "evalue": "1 validation error for PeopleRoot\npeople\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.11/v/missing", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mValidationError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m output = \u001b[43msummarizer\u001b[49m\u001b[43m.\u001b[49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mdocuments\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdocuments\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[32;43m8\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 2\u001b[39m \u001b[38;5;28mprint\u001b[39m(output)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/main.py:3015\u001b[39m, in \u001b[36mPregel.invoke\u001b[39m\u001b[34m(self, input, config, context, stream_mode, print_mode, output_keys, interrupt_before, interrupt_after, durability, **kwargs)\u001b[39m\n\u001b[32m 3012\u001b[39m chunks: \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any] | Any] = []\n\u001b[32m 3013\u001b[39m interrupts: \u001b[38;5;28mlist\u001b[39m[Interrupt] = []\n\u001b[32m-> \u001b[39m\u001b[32m3015\u001b[39m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mstream\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 3016\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 3017\u001b[39m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3018\u001b[39m \u001b[43m \u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcontext\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3019\u001b[39m \u001b[43m \u001b[49m\u001b[43mstream_mode\u001b[49m\u001b[43m=\u001b[49m\u001b[43m[\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mupdates\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mvalues\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[32m 3020\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mstream_mode\u001b[49m\u001b[43m \u001b[49m\u001b[43m==\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mvalues\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\n\u001b[32m 3021\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mstream_mode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3022\u001b[39m \u001b[43m \u001b[49m\u001b[43mprint_mode\u001b[49m\u001b[43m=\u001b[49m\u001b[43mprint_mode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3023\u001b[39m \u001b[43m \u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[43m=\u001b[49m\u001b[43moutput_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3024\u001b[39m \u001b[43m \u001b[49m\u001b[43minterrupt_before\u001b[49m\u001b[43m=\u001b[49m\u001b[43minterrupt_before\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3025\u001b[39m \u001b[43m \u001b[49m\u001b[43minterrupt_after\u001b[49m\u001b[43m=\u001b[49m\u001b[43minterrupt_after\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3026\u001b[39m \u001b[43m \u001b[49m\u001b[43mdurability\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdurability\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3027\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3028\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 3029\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mstream_mode\u001b[49m\u001b[43m \u001b[49m\u001b[43m==\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mvalues\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\n\u001b[32m 3030\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mchunk\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[43m==\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m2\u001b[39;49m\u001b[43m:\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/main.py:2642\u001b[39m, in \u001b[36mPregel.stream\u001b[39m\u001b[34m(self, input, config, context, stream_mode, print_mode, output_keys, interrupt_before, interrupt_after, durability, subgraphs, debug, **kwargs)\u001b[39m\n\u001b[32m 2640\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m task \u001b[38;5;129;01min\u001b[39;00m loop.match_cached_writes():\n\u001b[32m 2641\u001b[39m loop.output_writes(task.id, task.writes, cached=\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[32m-> \u001b[39m\u001b[32m2642\u001b[39m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m_\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mrunner\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtick\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2643\u001b[39m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mloop\u001b[49m\u001b[43m.\u001b[49m\u001b[43mtasks\u001b[49m\u001b[43m.\u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m.\u001b[49m\u001b[43mwrites\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2644\u001b[39m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mstep_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2645\u001b[39m \u001b[43m \u001b[49m\u001b[43mget_waiter\u001b[49m\u001b[43m=\u001b[49m\u001b[43mget_waiter\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2646\u001b[39m \u001b[43m \u001b[49m\u001b[43mschedule_task\u001b[49m\u001b[43m=\u001b[49m\u001b[43mloop\u001b[49m\u001b[43m.\u001b[49m\u001b[43maccept_push\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 2647\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 2648\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# emit output\u001b[39;49;00m\n\u001b[32m 2649\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield from\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m_output\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 2650\u001b[39m \u001b[43m \u001b[49m\u001b[43mstream_mode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprint_mode\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msubgraphs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mqueue\u001b[49m\u001b[43m.\u001b[49m\u001b[43mEmpty\u001b[49m\n\u001b[32m 2651\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 2652\u001b[39m loop.after_tick()\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/_runner.py:253\u001b[39m, in \u001b[36mPregelRunner.tick\u001b[39m\u001b[34m(self, tasks, reraise, timeout, retry_policy, get_waiter, schedule_task)\u001b[39m\n\u001b[32m 251\u001b[39m \u001b[38;5;66;03m# panic on failure or timeout\u001b[39;00m\n\u001b[32m 252\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m253\u001b[39m \u001b[43m_panic_or_proceed\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 254\u001b[39m \u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m.\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m.\u001b[49m\u001b[43munion\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mfutures\u001b[49m\u001b[43m.\u001b[49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 255\u001b[39m \u001b[43m \u001b[49m\u001b[43mpanic\u001b[49m\u001b[43m=\u001b[49m\u001b[43mreraise\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 256\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 257\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 258\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m tb := exc.__traceback__:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/_runner.py:511\u001b[39m, in \u001b[36m_panic_or_proceed\u001b[39m\u001b[34m(futs, timeout_exc_cls, panic)\u001b[39m\n\u001b[32m 509\u001b[39m interrupts.append(exc)\n\u001b[32m 510\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m fut \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m SKIP_RERAISE_SET:\n\u001b[32m--> \u001b[39m\u001b[32m511\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[32m 512\u001b[39m \u001b[38;5;66;03m# raise combined interrupts\u001b[39;00m\n\u001b[32m 513\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m interrupts:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/_executor.py:81\u001b[39m, in \u001b[36mBackgroundExecutor.done\u001b[39m\u001b[34m(self, task)\u001b[39m\n\u001b[32m 79\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"Remove the task from the tasks dict when it's done.\"\"\"\u001b[39;00m\n\u001b[32m 80\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m81\u001b[39m \u001b[43mtask\u001b[49m\u001b[43m.\u001b[49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 82\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m GraphBubbleUp:\n\u001b[32m 83\u001b[39m \u001b[38;5;66;03m# This exception is an interruption signal, not an error\u001b[39;00m\n\u001b[32m 84\u001b[39m \u001b[38;5;66;03m# so we don't want to re-raise it on exit\u001b[39;00m\n\u001b[32m 85\u001b[39m \u001b[38;5;28mself\u001b[39m.tasks.pop(task)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py:449\u001b[39m, in \u001b[36mFuture.result\u001b[39m\u001b[34m(self, timeout)\u001b[39m\n\u001b[32m 447\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[32m 448\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._state == FINISHED:\n\u001b[32m--> \u001b[39m\u001b[32m449\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 451\u001b[39m \u001b[38;5;28mself\u001b[39m._condition.wait(timeout)\n\u001b[32m 453\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/concurrent/futures/_base.py:401\u001b[39m, in \u001b[36mFuture.__get_result\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 399\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._exception:\n\u001b[32m 400\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m401\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m._exception\n\u001b[32m 402\u001b[39m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[32m 403\u001b[39m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[32m 404\u001b[39m \u001b[38;5;28mself\u001b[39m = \u001b[38;5;28;01mNone\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.local/share/uv/python/cpython-3.12.8-linux-x86_64-gnu/lib/python3.12/concurrent/futures/thread.py:59\u001b[39m, in \u001b[36m_WorkItem.run\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 56\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[32m 58\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m59\u001b[39m result = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 60\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 61\u001b[39m \u001b[38;5;28mself\u001b[39m.future.set_exception(exc)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/pregel/_retry.py:42\u001b[39m, in \u001b[36mrun_with_retry\u001b[39m\u001b[34m(task, retry_policy, configurable)\u001b[39m\n\u001b[32m 40\u001b[39m task.writes.clear()\n\u001b[32m 41\u001b[39m \u001b[38;5;66;03m# run the task\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m42\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mtask\u001b[49m\u001b[43m.\u001b[49m\u001b[43mproc\u001b[49m\u001b[43m.\u001b[49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask\u001b[49m\u001b[43m.\u001b[49m\u001b[43minput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 43\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m ParentCommand \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 44\u001b[39m ns: \u001b[38;5;28mstr\u001b[39m = config[CONF][CONFIG_KEY_CHECKPOINT_NS]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/_internal/_runnable.py:657\u001b[39m, in \u001b[36mRunnableSeq.invoke\u001b[39m\u001b[34m(self, input, config, **kwargs)\u001b[39m\n\u001b[32m 655\u001b[39m \u001b[38;5;66;03m# run in context\u001b[39;00m\n\u001b[32m 656\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m set_config_context(config, run) \u001b[38;5;28;01mas\u001b[39;00m context:\n\u001b[32m--> \u001b[39m\u001b[32m657\u001b[39m \u001b[38;5;28minput\u001b[39m = \u001b[43mcontext\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstep\u001b[49m\u001b[43m.\u001b[49m\u001b[43minvoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 658\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 659\u001b[39m \u001b[38;5;28minput\u001b[39m = step.invoke(\u001b[38;5;28minput\u001b[39m, config)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/docs/.venv/lib/python3.12/site-packages/langgraph/_internal/_runnable.py:401\u001b[39m, in \u001b[36mRunnableCallable.invoke\u001b[39m\u001b[34m(self, input, config, **kwargs)\u001b[39m\n\u001b[32m 399\u001b[39m run_manager.on_chain_end(ret)\n\u001b[32m 400\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m401\u001b[39m ret = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 402\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.recurse \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(ret, Runnable):\n\u001b[32m 403\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m ret.invoke(\u001b[38;5;28minput\u001b[39m, config)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/src/langchain/libs/langchain_v1/langchain/chains/documents/recursive.py:329\u001b[39m, in \u001b[36m_RecursiveSummarizer.create_map_node.._map_node\u001b[39m\u001b[34m(state, runtime, config)\u001b[39m\n\u001b[32m 325\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_map_node\u001b[39m(\n\u001b[32m 326\u001b[39m state: MapState, runtime: Runtime, config: RunnableConfig\n\u001b[32m 327\u001b[39m ) -> \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mlist\u001b[39m[\u001b[38;5;28mstr\u001b[39m]]:\n\u001b[32m 328\u001b[39m prompt = \u001b[38;5;28mself\u001b[39m._get_map_prompt(state, runtime)\n\u001b[32m--> \u001b[39m\u001b[32m329\u001b[39m response = cast(\u001b[33m\"\u001b[39m\u001b[33mAIMessage\u001b[39m\u001b[33m\"\u001b[39m, \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43minvoke\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprompt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m=\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[32m 330\u001b[39m result = response \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.response_format \u001b[38;5;28;01melse\u001b[39;00m response.text()\n\u001b[32m 331\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[33m\"\u001b[39m\u001b[33msummaries\u001b[39m\u001b[33m\"\u001b[39m: [\u001b[38;5;28mstr\u001b[39m(result)]}\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/runnables/base.py:3046\u001b[39m, in \u001b[36mRunnableSequence.invoke\u001b[39m\u001b[34m(self, input, config, **kwargs)\u001b[39m\n\u001b[32m 3044\u001b[39m input_ = context.run(step.invoke, input_, config, **kwargs)\n\u001b[32m 3045\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m3046\u001b[39m input_ = \u001b[43mcontext\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstep\u001b[49m\u001b[43m.\u001b[49m\u001b[43minvoke\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minput_\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 3047\u001b[39m \u001b[38;5;66;03m# finish the root run\u001b[39;00m\n\u001b[32m 3048\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/output_parsers/base.py:196\u001b[39m, in \u001b[36mBaseOutputParser.invoke\u001b[39m\u001b[34m(self, input, config, **kwargs)\u001b[39m\n\u001b[32m 188\u001b[39m \u001b[38;5;129m@override\u001b[39m\n\u001b[32m 189\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34minvoke\u001b[39m(\n\u001b[32m 190\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 193\u001b[39m **kwargs: Any,\n\u001b[32m 194\u001b[39m ) -> T:\n\u001b[32m 195\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[32m--> \u001b[39m\u001b[32m196\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_call_with_config\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 197\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mlambda\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43minner_input\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 198\u001b[39m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[43m=\u001b[49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[32m 199\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 200\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 201\u001b[39m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 202\u001b[39m \u001b[43m \u001b[49m\u001b[43mrun_type\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mparser\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 203\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 204\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._call_with_config(\n\u001b[32m 205\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m.parse_result([Generation(text=inner_input)]),\n\u001b[32m 206\u001b[39m \u001b[38;5;28minput\u001b[39m,\n\u001b[32m 207\u001b[39m config,\n\u001b[32m 208\u001b[39m run_type=\u001b[33m\"\u001b[39m\u001b[33mparser\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 209\u001b[39m )\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/runnables/base.py:1939\u001b[39m, in \u001b[36mRunnable._call_with_config\u001b[39m\u001b[34m(self, func, input_, config, run_type, serialized, **kwargs)\u001b[39m\n\u001b[32m 1935\u001b[39m child_config = patch_config(config, callbacks=run_manager.get_child())\n\u001b[32m 1936\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m set_config_context(child_config) \u001b[38;5;28;01mas\u001b[39;00m context:\n\u001b[32m 1937\u001b[39m output = cast(\n\u001b[32m 1938\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mOutput\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m-> \u001b[39m\u001b[32m1939\u001b[39m \u001b[43mcontext\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1940\u001b[39m \u001b[43m \u001b[49m\u001b[43mcall_func_with_variable_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[arg-type]\u001b[39;49;00m\n\u001b[32m 1941\u001b[39m \u001b[43m \u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1942\u001b[39m \u001b[43m \u001b[49m\u001b[43minput_\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1943\u001b[39m \u001b[43m \u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1944\u001b[39m \u001b[43m \u001b[49m\u001b[43mrun_manager\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1945\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1946\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[32m 1947\u001b[39m )\n\u001b[32m 1948\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 1949\u001b[39m run_manager.on_chain_error(e)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/runnables/config.py:429\u001b[39m, in \u001b[36mcall_func_with_variable_args\u001b[39m\u001b[34m(func, input, config, run_manager, **kwargs)\u001b[39m\n\u001b[32m 427\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m run_manager \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m accepts_run_manager(func):\n\u001b[32m 428\u001b[39m kwargs[\u001b[33m\"\u001b[39m\u001b[33mrun_manager\u001b[39m\u001b[33m\"\u001b[39m] = run_manager\n\u001b[32m--> \u001b[39m\u001b[32m429\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/output_parsers/base.py:197\u001b[39m, in \u001b[36mBaseOutputParser.invoke..\u001b[39m\u001b[34m(inner_input)\u001b[39m\n\u001b[32m 188\u001b[39m \u001b[38;5;129m@override\u001b[39m\n\u001b[32m 189\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34minvoke\u001b[39m(\n\u001b[32m 190\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 193\u001b[39m **kwargs: Any,\n\u001b[32m 194\u001b[39m ) -> T:\n\u001b[32m 195\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28minput\u001b[39m, BaseMessage):\n\u001b[32m 196\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._call_with_config(\n\u001b[32m--> \u001b[39m\u001b[32m197\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mparse_result\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 198\u001b[39m \u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43mChatGeneration\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage\u001b[49m\u001b[43m=\u001b[49m\u001b[43minner_input\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[32m 199\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m,\n\u001b[32m 200\u001b[39m \u001b[38;5;28minput\u001b[39m,\n\u001b[32m 201\u001b[39m config,\n\u001b[32m 202\u001b[39m run_type=\u001b[33m\"\u001b[39m\u001b[33mparser\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 203\u001b[39m )\n\u001b[32m 204\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._call_with_config(\n\u001b[32m 205\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m inner_input: \u001b[38;5;28mself\u001b[39m.parse_result([Generation(text=inner_input)]),\n\u001b[32m 206\u001b[39m \u001b[38;5;28minput\u001b[39m,\n\u001b[32m 207\u001b[39m config,\n\u001b[32m 208\u001b[39m run_type=\u001b[33m\"\u001b[39m\u001b[33mparser\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 209\u001b[39m )\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/langchain_core/output_parsers/openai_tools.py:336\u001b[39m, in \u001b[36mPydanticToolsParser.parse_result\u001b[39m\u001b[34m(self, result, partial)\u001b[39m\n\u001b[32m 334\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(msg)\n\u001b[32m 335\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m336\u001b[39m pydantic_objects.append(\u001b[43mname_dict\u001b[49m\u001b[43m[\u001b[49m\u001b[43mres\u001b[49m\u001b[43m[\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mtype\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mres\u001b[49m\u001b[43m[\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43margs\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[32m 337\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m (ValidationError, \u001b[38;5;167;01mValueError\u001b[39;00m):\n\u001b[32m 338\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m partial:\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/.cache/uv/archive-v0/H7PJAEZVghiAsX_gNYVSD/lib/python3.12/site-packages/pydantic/main.py:253\u001b[39m, in \u001b[36mBaseModel.__init__\u001b[39m\u001b[34m(self, **data)\u001b[39m\n\u001b[32m 251\u001b[39m \u001b[38;5;66;03m# `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks\u001b[39;00m\n\u001b[32m 252\u001b[39m __tracebackhide__ = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m253\u001b[39m validated_self = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m__pydantic_validator__\u001b[49m\u001b[43m.\u001b[49m\u001b[43mvalidate_python\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mself_instance\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 254\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m validated_self:\n\u001b[32m 255\u001b[39m warnings.warn(\n\u001b[32m 256\u001b[39m \u001b[33m'\u001b[39m\u001b[33mA custom validator is returning a value other than `self`.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[33m'\u001b[39m\n\u001b[32m 257\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mReturning anything other than `self` from a top level model validator isn\u001b[39m\u001b[33m'\u001b[39m\u001b[33mt supported when validating via `__init__`.\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m 258\u001b[39m \u001b[33m'\u001b[39m\u001b[33mSee the `model_validator` docs (https://docs.pydantic.dev/latest/concepts/validators/#model-validators) for more details.\u001b[39m\u001b[33m'\u001b[39m,\n\u001b[32m 259\u001b[39m stacklevel=\u001b[32m2\u001b[39m,\n\u001b[32m 260\u001b[39m )\n", + "\u001b[31mValidationError\u001b[39m: 1 validation error for PeopleRoot\npeople\n Field required [type=missing, input_value={}, input_type=dict]\n For further information visit https://errors.pydantic.dev/2.11/v/missing", + "During task with name 'map_summarize' and id '8137de8e-dab2-7a83-871c-1b1c8975ef4d'" + ] + } + ], + "source": [ + "output = summarizer.invoke({\"documents\": documents[:8]})\n", + "print(output)" ] } ], From 1141f3a6c89018c3cdfc8f5aeae0944e08ef98af Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Sun, 3 Aug 2025 17:19:20 -0400 Subject: [PATCH 09/24] x --- src/langchain_v1/recursive.ipynb | 9 ++ src/langchain_v1/stuff.ipynb | 207 ++++++++++++++++++++++++++++--- 2 files changed, 198 insertions(+), 18 deletions(-) diff --git a/src/langchain_v1/recursive.ipynb b/src/langchain_v1/recursive.ipynb index b5f8a71ee..d48f7a193 100644 --- a/src/langchain_v1/recursive.ipynb +++ b/src/langchain_v1/recursive.ipynb @@ -12,6 +12,15 @@ "---\n", "\n", "\n", + "\n", + "This chain will not be released! \n", + " \n", + "It seems pretty unimportant these days and replceable with a simple map reduce given that context windows are so large.\n", + "\n", + "Likely it'll appear for some speciality use cases and in these cases users will probably can optimize the graph on their own.\n", + "\n", + "\n", + "\n", "\n", "```mermaid\n", "graph TD\n", diff --git a/src/langchain_v1/stuff.ipynb b/src/langchain_v1/stuff.ipynb index c7998012b..71d7185b7 100644 --- a/src/langchain_v1/stuff.ipynb +++ b/src/langchain_v1/stuff.ipynb @@ -10,7 +10,29 @@ "icon: \"Book\"\n", "---\n", "\n", - "A chain that \"stuffs\" all the documents into the context to run summarization or extraction tasks." + "The **Stuff Documents** chain processes all documents in a **single pass** by **concatenating their content** and inserting it into the **context window** of the language model (LLM). This approach is ideal when:\n", + "\n", + "- The combined size of all documents **fits within the model’s context window**.\n", + "- You want **joint analysis**, such as summarizing or reasoning across the entire content.\n", + "- You may optionally apply **refinement**, where previous outputs are reprocessed along with new documents.\n", + "\n", + "```mermaid\n", + "graph TD\n", + " A[Documents] --> B[Concatenate all]\n", + " C[Optional question] --> E[Prompt construction: all stuffed in context window]\n", + " D[Optional response format] --> E\n", + " B --> E\n", + " E --> F[LLM Processes input]\n", + " F --> H[\"Extraction / Summary / Answer\"]\n", + "````" + ] + }, + { + "cell_type": "markdown", + "id": "ed5cf593-14c8-4073-adaa-c708daf25ab7", + "metadata": {}, + "source": [ + "# 1. Set up data" ] }, { @@ -82,7 +104,7 @@ "id": "e1a42b30-c290-419a-a0d7-60a1517eb0d0", "metadata": {}, "source": [ - "## Summarization" + "## Configure for summarization" ] }, { @@ -97,11 +119,11 @@ "text": [ "Here are 3 key sentences summarizing Richard Feynman's life:\n", "\n", - "1. Richard Feynman was a brilliant physicist born in 1918 in Queens, New York, who showed early aptitude for science and engineering, eventually earning his PhD from Princeton in 1942.\n", + "1. Richard Feynman was a brilliant physicist born in 1918 in Queens, New York, who showed early aptitude for science and engineering, eventually earning his PhD from Princeton University in 1942.\n", "\n", - "2. During World War II, he made significant contributions to the Manhattan Project at Los Alamos, where he was known both for his scientific creativity and his playful habit of picking locks to demonstrate security flaws.\n", + "2. During World War II, he worked on the Manhattan Project at Los Alamos Laboratory, contributing to the development of the atomic bomb while becoming known for his creativity, humor, and habit of picking locks to expose security flaws.\n", "\n", - "3. After the war, he became a renowned professor at Caltech, won the 1965 Nobel Prize in Physics for his work on quantum electrodynamics, created the famous Feynman Lectures on Physics, and served on the commission investigating the Challenger disaster before his death in 1988.\n" + "3. After the war, he became a renowned professor at Cornell and Caltech, won the 1965 Nobel Prize in Physics for his work on quantum electrodynamics, created the famous Feynman Lectures on Physics, and served on the commission investigating the Challenger disaster before his death in 1988.\n" ] } ], @@ -124,7 +146,7 @@ "id": "aab1b929-ddb9-4ceb-a74c-1b2bb830ef31", "metadata": {}, "source": [ - "## Structured summary" + "### Structured summarization" ] }, { @@ -137,15 +159,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Title: Richard Feynman: Pioneering Physicist and Nobel Laureate\n", - " * Born May 11, 1918, in Queens, New York, Feynman showed early aptitude for science and engineering, earning money repairing radios as a teenager (1)\n", - " * Completed undergraduate studies at MIT and earned PhD in physics from Princeton University in 1942, impressing colleagues with his problem-solving abilities (1)\n", + "Title: Richard Feynman: The Life and Legacy of a Nobel Prize-Winning Physicist\n", + " * Born May 11, 1918 in Queens, New York, showing early interest in science and engineering, repairing radios as a teenager (1)\n", + " * Educated at MIT for undergraduate studies and earned PhD in physics from Princeton University in 1942 (1)\n", " * Worked on the Manhattan Project at Los Alamos Laboratory during WWII under Hans Bethe, contributing to the development of the atomic bomb (1, 2)\n", - " * Known for his creativity and humor at Los Alamos, including his habit of picking locks and cracking safes to demonstrate security vulnerabilities (2)\n", + " * Known for his creativity, humor, and unconventional habits like picking locks and cracking safes at Los Alamos (2)\n", + " * Became professor at Cornell University and later at Caltech after the war (3)\n", " * Won the 1965 Nobel Prize in Physics for quantum electrodynamics work, shared with Julian Schwinger and Sin-Itiro Tomonaga (3)\n", - " * Taught at Cornell University and Caltech, creating the influential Feynman Lectures on Physics that remain widely used today (3)\n", - " * Served on the Rogers Commission investigating the 1986 Space Shuttle Challenger disaster (3)\n", - " * Died February 15, 1988, in Los Angeles, California, after battling cancer (3)\n" + " * Created the famous Feynman Lectures on Physics, which remain widely used educational resources (3)\n", + " * Served on the Rogers Commission investigating the Space Shuttle Challenger disaster in 1986 (3)\n", + " * Died February 15, 1988 in Los Angeles, California after battling cancer (3)\n" ] } ], @@ -189,7 +212,7 @@ "id": "781bb94a-d043-4d47-a02b-619e7826fd93", "metadata": {}, "source": [ - "## Extraction" + "## Configure for extraction" ] }, { @@ -248,13 +271,161 @@ " print(f\" * {date_str}: {fact.content} (sources: {sources})\")\n" ] }, + { + "cell_type": "markdown", + "id": "73aa5880-6851-42e0-96ca-e9d6db994c9e", + "metadata": {}, + "source": [ + "## Use for Q&A" + ] + }, { "cell_type": "code", - "execution_count": null, - "id": "2a530c10-7d4a-49a9-837d-855cebf35752", + "execution_count": 7, + "id": "dc9f950d-20bc-495e-b312-961f5a4e9b48", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Based on the documents, here are the key locations where Richard Feynman spent significant time:\n", + "\n", + "1. Queens, New York - His birthplace\n", + "2. Massachusetts Institute of Technology (MIT) - Undergraduate studies\n", + "3. Princeton University - PhD studies\n", + "4. Los Alamos Laboratory, New Mexico - Worked on the Manhattan Project during World War II\n", + "5. Cornell University - Professor\n", + "6. California Institute of Technology (Caltech) - Professor\n", + "7. Los Angeles, California - Where he died in 1988\n" + ] + } + ], + "source": [ + "from pydantic import BaseModel, Field\n", + "from typing import Optional, List\n", + "\n", + "model = init_chat_model(\"claude-3-5-haiku-latest\", max_tokens=5_000)\n", + "\n", + "chain = (\n", + " create_stuff_documents_chain(model)\n", + " .compile(name='Q&A')\n", + ")\n", + "\n", + "response = chain.invoke({\n", + " \"documents\": documents,\n", + " # A question can be provided during run time. \n", + " \"question\": \"Identify locations where Richard Feynman spent significant time\"\n", + "})\n", + "print(response['result'])" + ] + }, + { + "cell_type": "markdown", + "id": "0efd196d-1503-46e0-b331-6515ac743b26", + "metadata": {}, + "source": [ + "## Refinment\n", + "\n", + "Refinment can be achieved using LangGraph's persistence layer." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "11fb5dda-7bf9-429f-a068-c02964373d32", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " * Became professor at Caltech (sources: 3)\n", + " * Gave famous Feynman Lectures on Physics (sources: 3)\n", + " * Served on Rogers Commission investigating Challenger disaster (sources: 3)\n" + ] + } + ], + "source": [ + "from langgraph.checkpoint.memory import InMemorySaver\n", + "import uuid\n", + "\n", + "model = init_chat_model(\"claude-3-5-haiku-latest\", max_tokens=5_000)\n", + "\n", + "checkpointer = InMemorySaver()\n", + "\n", + "class Fact(BaseModel):\n", + " \"\"\"Fact.\"\"\"\n", + " content: str = Field(description=\"The content of the fact. No more than a few words.\")\n", + " source_doc_ids: List[str] = Field(default_factory=list, description=\"The document or documents in which the fact appeared.\")\n", + "\n", + "class Data(BaseModel):\n", + " \"\"\"Facts to extract\"\"\"\n", + " facts: List[Fact]\n", + "\n", + "chain = (\n", + " create_stuff_documents_chain(\n", + " model, \n", + " prompt=\"Extract any facts about Richard Feynman's time at Caltech.\",\n", + " response_format=Data\n", + " )\n", + " .compile(name='Q&A', checkpointer=checkpointer)\n", + ")\n", + "\n", + "thread_id = uuid.uuid4()\n", + "\n", + "response = chain.invoke(\n", + " {\n", + " \"documents\": documents,\n", + " },\n", + " {\n", + " 'configurable': {\n", + " 'thread_id': thread_id,\n", + " }\n", + " }\n", + ")\n", + "\n", + "for fact in response['result'].facts:\n", + " sources = ', '.join(fact.source_doc_ids)\n", + " print(f\" * {fact.content} (sources: {sources})\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "48e395bd-8ed6-4fdd-ba4a-52cfaf52ad52", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " * Became professor at Caltech (sources: 3)\n", + " * Gave famous Feynman Lectures on Physics (sources: 3)\n", + " * Served on Rogers Commission investigating Challenger disaster (sources: 3)\n", + " * Loved eating ice cream at Caltech (sources: 4)\n" + ] + } + ], + "source": [ + "response = chain.invoke(\n", + " {\n", + " \"documents\": [\n", + " Document(id=4, page_content=\"Richard Feynman used to eat a ton of icecream while at Caltech\")\n", + " ],\n", + " },\n", + " {\n", + " 'configurable': {\n", + " 'thread_id': thread_id,\n", + " }\n", + " }\n", + ")\n", + "\n", + "\n", + "for fact in response['result'].facts:\n", + " sources = ', '.join(fact.source_doc_ids)\n", + " print(f\" * {fact.content} (sources: {sources})\")" + ] } ], "metadata": { From 4fbafdbf31dce037f19b694b57897a78a7602168 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Mon, 4 Aug 2025 17:08:39 -0400 Subject: [PATCH 10/24] x --- src/docs.json | 9 +++------ src/langchain_v1/stuff.ipynb | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/docs.json b/src/docs.json index e2bde9b7e..93649891d 100644 --- a/src/docs.json +++ b/src/docs.json @@ -58,15 +58,12 @@ "description": "LangChain v1 documentation and guides", "tabs": [ { - "tab": "Extraction", - "pages": ["langchain_v1/extraction"] - }, - { - "tab": "Notebooks", + "tab": "Prebuilts", "pages": [ "langchain_v1/stuff", "langchain_v1/map_reduce", - "langchain_v1/recursive" + "langchain_v1/recursive", + "langchain_v1/rag_agent" ] } ] diff --git a/src/langchain_v1/stuff.ipynb b/src/langchain_v1/stuff.ipynb index 71d7185b7..134c875f7 100644 --- a/src/langchain_v1/stuff.ipynb +++ b/src/langchain_v1/stuff.ipynb @@ -7,7 +7,7 @@ "source": [ "---\n", "title: \"Stuff chain\"\n", - "icon: \"Book\"\n", + "icon: \"book\"\n", "---\n", "\n", "The **Stuff Documents** chain processes all documents in a **single pass** by **concatenating their content** and inserting it into the **context window** of the language model (LLM). This approach is ideal when:\n", From 6d19c8d1ce9a9c0b59d88c8ff9771b624696c7d4 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Mon, 4 Aug 2025 17:08:48 -0400 Subject: [PATCH 11/24] x --- src/langchain_v1/rag_agent.ipynb | 360 +++++++++++++++++++++++++++++++ 1 file changed, 360 insertions(+) create mode 100644 src/langchain_v1/rag_agent.ipynb diff --git a/src/langchain_v1/rag_agent.ipynb b/src/langchain_v1/rag_agent.ipynb new file mode 100644 index 000000000..d897328cf --- /dev/null +++ b/src/langchain_v1/rag_agent.ipynb @@ -0,0 +1,360 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "0979f90f-448e-413a-83e9-d2dc6022e899", + "metadata": {}, + "source": [ + "---\n", + "title: \"RAG Agent\"\n", + "icon: \"search\"\n", + "---\n", + "\n", + "**Agentic Retrieval-Augmented Generation (RAG)** combines the strengths of Retrieval-Augmented Generation with agent-based reasoning. Instead of retrieving documents before answering, an agent (powered by an LLM) reasons step-by-step and decides **when** and **how** to retrieve information during the interaction.\n", + "\n", + "\n", + "The only thing an agent needs to enable RAG behavior is access to one or more **tools** that can fetch external knowledge — such as documentation loaders, web APIs, or database queries. This tool-based architecture makes Agentic RAG modular, flexible, and ideal for evolving knowledge environments.\n", + "\n", + "\n", + "```mermaid\n", + "graph TD\n", + " A[User Input / Question] --> B[\"Agent (LLM)\"]\n", + " B --> C{Need external info?}\n", + " C -- Yes --> D[\"Search using tool(s)\"]\n", + " D --> H{Enough to answer?}\n", + " H -- No --> B\n", + " H -- Yes --> I[Generate final answer]\n", + " C -- No --> I\n", + " I --> J[Return to user]\n", + "\n", + " %% Dark-mode friendly styling\n", + " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", + " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", + " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", + "\n", + " class A,J startend\n", + " class B,D,I process\n", + " class C,H decision\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "9ede709a-e5c4-4aa5-a083-9a052f2884e7", + "metadata": {}, + "source": [ + "### 🧪 Example: Agentic RAG with LangGraph Documentation\n", + "\n", + "This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading `llms.txt`, which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "2383a10c-4127-42b0-83a2-ce81365382cd", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "unterminated string literal (detected at line 60) (2269097100.py, line 60)", + "output_type": "error", + "traceback": [ + " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[46]\u001b[39m\u001b[32m, line 60\u001b[39m\n\u001b[31m \u001b[39m\u001b[31m\"Write a short example of a langgraph agent using the\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m unterminated string literal (detected at line 60)\n" + ] + } + ], + "source": [ + "from markdownify import markdownify\n", + "import requests\n", + "\n", + "from langchain_core.tools import tool\n", + "from langgraph.prebuilt import create_react_agent\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "ALLOWED_DOMAINS = [\"https://langchain-ai.github.io/\"]\n", + "LLMS_TXT = 'https://langchain-ai.github.io/langgraph/llms.txt'\n", + "\n", + "@tool\n", + "def fetch_documentation(url: str) -> str:\n", + " \"\"\"Fetch and convert documentation from a URL\"\"\"\n", + " if not any(url.startswith(domain) for domain in ALLOWED_DOMAINS):\n", + " return f\"Error: URL not allowed. Must start with one of: {', '.join(ALLOWED_DOMAINS)}\"\n", + " response = requests.get(url, timeout=10.0)\n", + " response.raise_for_status()\n", + " return markdownify(response.text)\n", + "\n", + "# We will fetch the content of llms.txt, so this can be done ahead of time without requiring an LLM request.\n", + "llms_txt_content = requests.get(LLMS_TXT).text\n", + "\n", + "# System prompt for the agent\n", + "system_prompt = f\"\"\"\n", + "You are an expert Python developer and technical assistant. \n", + "Your primary role is to help users with questions about LangGraph and related tools.\n", + "\n", + "Instructions:\n", + "\n", + "1. If a user asks a question you're unsure about — or one that likely involves API usage, \n", + " behavior, or configuration — you MUST use the `fetch_documentation` tool to consult the relevant docs.\n", + "2. When citing documentation, summarize clearly and include relevant context from the content.\n", + "3. Do not use any URLs outside of the allowed domain.\n", + "4. If a documentation fetch fails, tell the user and proceed with your best expert understanding.\n", + "\n", + "You can access official documentation from the following approved sources:\n", + "\n", + "{llms_txt_content}\n", + "\n", + "You MUST consult the documentation to get up to date documentation \n", + "before answering a user's question about LangGraph.\n", + "\n", + "Your answers should be clear, concise, and technically accurate.\n", + "\"\"\"\n", + "\n", + "tools = [fetch_documentation]\n", + "\n", + "model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000)\n", + "\n", + "agent = create_react_agent(\n", + " model=model,\n", + " tools=tools,\n", + " prompt=system_prompt,\n", + ")\n", + "\n", + "response = agent.invoke({\n", + " 'messages': [{\n", + " 'role': 'user',\n", + " 'content': (\n", + " \"Write a short example of a langgraph agent using the \n", + " prebuilt create react agent. the agent should be able \n", + " to loook up stock pricing information.\"\n", + " )\n", + " }]\n", + "})\n", + "\n", + "print(response['messages'][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "a8e2e6f7-3d5e-4fcc-b807-64262de10fcf", + "metadata": {}, + "source": [ + "## Dedicated RAG architecture\n", + "\n", + "## Dedicated RAG Architecture (Improved Visualization)\n", + "\n", + "```mermaid\n", + "graph TD\n", + " %% Entry\n", + " A[\"Start (User Query)\"] --> B[Generate Query or Respond directly]\n", + "\n", + " %% Decision: Need tools?\n", + " B -->|Uses retrieval tools| C[Retrieve Documents]\n", + " B -->|Responds directly| Z[Final Answer → User]\n", + "\n", + " %% Retrieval path\n", + " C -->|Grading enabled| D{Grade Retrieved Docs?}\n", + " C -->|Grading disabled| G[Generate Answer]\n", + "\n", + " %% Grading logic\n", + " D -->|Yes| G\n", + " D -->|No + Rewriting enabled| E[Rewrite Question]\n", + " D -->|No + Rewriting disabled| Z\n", + "\n", + " %% Loop after rewriting\n", + " E --> B\n", + "\n", + " %% Final output\n", + " G --> Z\n", + "\n", + " %% Styling for dark mode\n", + " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", + " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", + " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", + "\n", + " class A,Z startend\n", + " class B,C,E,G process\n", + " class D decision\n", + "```\n", + "\n", + "\n", + "\n", + "```mermaid\n", + "graph TD\n", + " %% Entry point\n", + " Start([Start]) --> GQR[generate_query_or_respond]\n", + "\n", + " %% Decision based on tool invocation\n", + " GQR -->|tools used| RETRIEVE[retrieve]\n", + " GQR -->|direct response| End([End])\n", + "\n", + " %% Optional: Grading after retrieval\n", + " RETRIEVE -->|enable_grading = true| GRADE{grade_documents?}\n", + " RETRIEVE -->|enable_grading = false| GEN_ANS[generate_answer]\n", + "\n", + " %% Grader branch\n", + " GRADE -->|yes| GEN_ANS\n", + " GRADE -->|no & enable_question_rewriting| REWRITE[rewrite_question]\n", + " GRADE -->|no & not rewriting| End\n", + "\n", + " %% Rewriting feeds back\n", + " REWRITE --> GQR\n", + "\n", + " %% Final node\n", + " GEN_ANS --> End\n", + "\n", + " %% Dark-mode friendly styling\n", + " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", + " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", + " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", + "\n", + " class Start,End startend\n", + " class GQR,RETRIEVE,GEN_ANS,REWRITE process\n", + " class GRADE decision\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "d5f0ce94-50ce-4b69-9d97-467f0fdba718", + "metadata": {}, + "source": [ + "## Misc\n", + "\n", + "Here's another idea of a tool we could use for demoing.\n", + "\n", + "We could do something with the open library API. But it might be a bit less interesting since it involves querying a structured search engine; i.e., it's not open ended enough!" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "1e46e8e0-4238-40aa-bd92-5d0085786675", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from typing import Optional, Annotated\n", + "from langchain_core.tools import tool\n", + "\n", + "@tool\n", + "def search_books(\n", + " title: Optional[str] = None,\n", + " author: Optional[str] = None,\n", + " subject: Optional[str] = None,\n", + " year: Optional[int] = None,\n", + " max_results: Annotated[int, \"Maximum number of results to return\"] = 5,\n", + ") -> str:\n", + " \"\"\"Search for books using the Open Library API.\n", + "\n", + " You can search by title, author, subject, and optional publication year.\n", + " Returns a list of matching books with title, author, and link.\n", + " \"\"\"\n", + "\n", + " # Base URL\n", + " base_url = \"https://openlibrary.org/search.json\"\n", + "\n", + " # Build query parameters\n", + " params = {}\n", + " if title:\n", + " params[\"title\"] = title\n", + " if author:\n", + " params[\"author\"] = author\n", + " if subject:\n", + " params[\"subject\"] = subject\n", + " if year:\n", + " params[\"publish_year\"] = year\n", + "\n", + " try:\n", + " response = requests.get(base_url, params=params, timeout=10)\n", + " response.raise_for_status()\n", + " data = response.json()\n", + " except Exception as e:\n", + " return f\"Error fetching data from Open Library: {str(e)}\"\n", + "\n", + " docs = data.get(\"docs\", [])\n", + " if not docs:\n", + " return \"No books found for the given query.\"\n", + "\n", + " # Format top N results\n", + " results = []\n", + " for i, book in enumerate(docs[:max_results]):\n", + " title = book.get(\"title\", \"Unknown Title\")\n", + " authors = \", \".join(book.get(\"author_name\", [\"Unknown Author\"]))\n", + " year = book.get(\"first_publish_year\", \"Unknown Year\")\n", + " key = book.get(\"key\", \"\")\n", + " url = f\"https://openlibrary.org{key}\" if key else \"N/A\"\n", + "\n", + " results.append(\n", + " f\"{i+1}. Title: {title}\\n Author(s): {authors}\\n First Published: {year}\\n URL: {url}\"\n", + " )\n", + "\n", + " return \"Top results:\\n\\n\" + \"\\n\\n\".join(results)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "9e8b4fda-ad1e-4f59-b494-1b808ecfe175", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Top results:\n", + "\n", + "1. Title: Foundation\n", + " Author(s): Isaac Asimov\n", + " First Published: 1951\n", + " URL: https://openlibrary.org/works/OL46125W\n", + "\n", + "2. Title: Foundation and Empire\n", + " Author(s): Isaac Asimov\n", + " First Published: 1945\n", + " URL: https://openlibrary.org/works/OL46224W\n", + "\n", + "3. Title: Second Foundation\n", + " Author(s): Isaac Asimov\n", + " First Published: 1953\n", + " URL: https://openlibrary.org/works/OL46309W\n", + "\n", + "4. Title: Foundation's Edge\n", + " Author(s): Isaac Asimov\n", + " First Published: 1977\n", + " URL: https://openlibrary.org/works/OL46302W\n", + "\n", + "5. Title: The Foundation Trilogy\n", + " Author(s): Isaac Asimov\n", + " First Published: 1950\n", + " URL: https://openlibrary.org/works/OL46390W\n" + ] + } + ], + "source": [ + "print(search_books.invoke({\"title\": \"Foundation\", \"author\": \"Asimov\"}))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2790ae2a316962b0224910dcf1d7e0fb488a863d Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Mon, 4 Aug 2025 17:31:23 -0400 Subject: [PATCH 12/24] x --- src/langchain_v1/rag_agent.ipynb | 59 ++++---------------------------- 1 file changed, 6 insertions(+), 53 deletions(-) diff --git a/src/langchain_v1/rag_agent.ipynb b/src/langchain_v1/rag_agent.ipynb index d897328cf..705b600e8 100644 --- a/src/langchain_v1/rag_agent.ipynb +++ b/src/langchain_v1/rag_agent.ipynb @@ -51,19 +51,10 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "2383a10c-4127-42b0-83a2-ce81365382cd", "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "unterminated string literal (detected at line 60) (2269097100.py, line 60)", - "output_type": "error", - "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[46]\u001b[39m\u001b[32m, line 60\u001b[39m\n\u001b[31m \u001b[39m\u001b[31m\"Write a short example of a langgraph agent using the\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m unterminated string literal (detected at line 60)\n" - ] - } - ], + "outputs": [], "source": [ "from markdownify import markdownify\n", "import requests\n", @@ -124,9 +115,9 @@ " 'messages': [{\n", " 'role': 'user',\n", " 'content': (\n", - " \"Write a short example of a langgraph agent using the \n", - " prebuilt create react agent. the agent should be able \n", - " to loook up stock pricing information.\"\n", + " \"Write a short example of a langgraph agent using the \"\n", + " \"prebuilt create react agent. the agent should be able \"\n", + " \"to loook up stock pricing information.\"\n", " )\n", " }]\n", "})\n", @@ -141,8 +132,6 @@ "source": [ "## Dedicated RAG architecture\n", "\n", - "## Dedicated RAG Architecture (Improved Visualization)\n", - "\n", "```mermaid\n", "graph TD\n", " %% Entry\n", @@ -175,43 +164,7 @@ " class A,Z startend\n", " class B,C,E,G process\n", " class D decision\n", - "```\n", - "\n", - "\n", - "\n", - "```mermaid\n", - "graph TD\n", - " %% Entry point\n", - " Start([Start]) --> GQR[generate_query_or_respond]\n", - "\n", - " %% Decision based on tool invocation\n", - " GQR -->|tools used| RETRIEVE[retrieve]\n", - " GQR -->|direct response| End([End])\n", - "\n", - " %% Optional: Grading after retrieval\n", - " RETRIEVE -->|enable_grading = true| GRADE{grade_documents?}\n", - " RETRIEVE -->|enable_grading = false| GEN_ANS[generate_answer]\n", - "\n", - " %% Grader branch\n", - " GRADE -->|yes| GEN_ANS\n", - " GRADE -->|no & enable_question_rewriting| REWRITE[rewrite_question]\n", - " GRADE -->|no & not rewriting| End\n", - "\n", - " %% Rewriting feeds back\n", - " REWRITE --> GQR\n", - "\n", - " %% Final node\n", - " GEN_ANS --> End\n", - "\n", - " %% Dark-mode friendly styling\n", - " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", - " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", - " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", - "\n", - " class Start,End startend\n", - " class GQR,RETRIEVE,GEN_ANS,REWRITE process\n", - " class GRADE decision\n", - "```\n" + "```" ] }, { From e71c961dfe764d9e00ec26ea3e5c9ce686ca3c11 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 5 Aug 2025 14:37:29 -0400 Subject: [PATCH 13/24] x --- src/langchain_v1/rag_agent.ipynb | 374 +++++++++++++++++++------------ src/langchain_v1/rag_systems.png | Bin 0 -> 71792 bytes 2 files changed, 230 insertions(+), 144 deletions(-) create mode 100644 src/langchain_v1/rag_systems.png diff --git a/src/langchain_v1/rag_agent.ipynb b/src/langchain_v1/rag_agent.ipynb index 705b600e8..d6c295bcb 100644 --- a/src/langchain_v1/rag_agent.ipynb +++ b/src/langchain_v1/rag_agent.ipynb @@ -3,14 +3,52 @@ { "attachments": {}, "cell_type": "markdown", - "id": "0979f90f-448e-413a-83e9-d2dc6022e899", + "id": "59f4cf61-43f4-4290-b87e-903b74fedcfe", "metadata": {}, "source": [ "---\n", - "title: \"RAG Agent\"\n", + "title: \"RAG\"\n", "icon: \"search\"\n", "---\n", "\n", + "**Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model \"knows\" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information.\n", + "\n", + "### RAG Architectures\n", + "\n", + "RAG can be implemented in multiple ways, depending on your system's needs:\n", + "\n", + "- **2-Step RAG**: Retrieval always happens before generation. Simple and predictable.\n", + "- **Agentic RAG**: An LLM-powered agent decides *when* and *how* to retrieve during reasoning.\n", + "\n", + "![rag architectures](./rag_systems.png)\n", + "\n", + "\n", + "| Architecture | Control | Flexibility | Example Use Case |\n", + "| ------------ | --------- | ----------- | ------------------------ |\n", + "| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots |\n", + "| Hybrid | ⚖️ Medium | ⚖️ Medium | Technical Q\\&A |\n", + "| Agentic RAG | ❌ Low | ✅ High | Research assistants |\n", + "\n", + "\n", + "\n", + "## Building a knowledge base\n", + "\n", + "Section contains cross-links to documentation about vectorstores and custom retrievers.\n", + "\n", + "\n", + "\n", + "## ⚙️ Implementation\n", + "\n", + "We’ll walk through three progressively more dynamic implementations.\n" + ] + }, + { + "cell_type": "markdown", + "id": "9ede709a-e5c4-4aa5-a083-9a052f2884e7", + "metadata": {}, + "source": [ + "## 1. Agentic RAG\n", + "\n", "**Agentic Retrieval-Augmented Generation (RAG)** combines the strengths of Retrieval-Augmented Generation with agent-based reasoning. Instead of retrieving documents before answering, an agent (powered by an LLM) reasons step-by-step and decides **when** and **how** to retrieve information during the interaction.\n", "\n", "\n", @@ -18,7 +56,7 @@ "\n", "\n", "```mermaid\n", - "graph TD\n", + "graph LR\n", " A[User Input / Question] --> B[\"Agent (LLM)\"]\n", " B --> C{Need external info?}\n", " C -- Yes --> D[\"Search using tool(s)\"]\n", @@ -36,14 +74,27 @@ " class A,J startend\n", " class B,D,I process\n", " class C,H decision\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "id": "9ede709a-e5c4-4aa5-a083-9a052f2884e7", - "metadata": {}, - "source": [ + "```\n", + "\n", + "\n", + "```python\n", + "from langchain_core.tools import tool\n", + "from langgraph.prebuilt import create_react_agent\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000)\n", + "\n", + "agent = create_react_agent(\n", + " model=model,\n", + " # Include tools that include retrieval tools\n", + " tools=tools, # [!code highlight] \n", + " # Customize the prompt with instructions on how to retrieve\n", + " # the data.\n", + " prompt=system_prompt,\n", + ")\n", + "```\n", + "\n", + "\n", "### 🧪 Example: Agentic RAG with LangGraph Documentation\n", "\n", "This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading `llms.txt`, which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question." @@ -51,10 +102,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 90, "id": "2383a10c-4127-42b0-83a2-ce81365382cd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "KeyboardInterrupt\n", + "\n" + ] + } + ], "source": [ "from markdownify import markdownify\n", "import requests\n", @@ -109,6 +170,7 @@ " model=model,\n", " tools=tools,\n", " prompt=system_prompt,\n", + " name=\"Agentic RAG\",\n", ")\n", "\n", "response = agent.invoke({\n", @@ -127,165 +189,189 @@ }, { "cell_type": "markdown", - "id": "a8e2e6f7-3d5e-4fcc-b807-64262de10fcf", + "id": "7ec52e1c-3b5f-48ae-b1de-6f49f6786a66", "metadata": {}, "source": [ - "## Dedicated RAG architecture\n", + "# 2. Retrieval -> Generation workflow\n", "\n", - "```mermaid\n", - "graph TD\n", - " %% Entry\n", - " A[\"Start (User Query)\"] --> B[Generate Query or Respond directly]\n", - "\n", - " %% Decision: Need tools?\n", - " B -->|Uses retrieval tools| C[Retrieve Documents]\n", - " B -->|Responds directly| Z[Final Answer → User]\n", - "\n", - " %% Retrieval path\n", - " C -->|Grading enabled| D{Grade Retrieved Docs?}\n", - " C -->|Grading disabled| G[Generate Answer]\n", - "\n", - " %% Grading logic\n", - " D -->|Yes| G\n", - " D -->|No + Rewriting enabled| E[Rewrite Question]\n", - " D -->|No + Rewriting disabled| Z\n", + "- **2-Step RAG**: Retrieval always happens before generation.\n", "\n", - " %% Loop after rewriting\n", - " E --> B\n", - "\n", - " %% Final output\n", - " G --> Z\n", + "```mermaid\n", + "graph LR\n", + " A[User Question] --> B[\"Retrieve Relevant Documents\"]\n", + " B --> C[\"Generate Answer\"]\n", + " C --> D[Return Answer to User]\n", "\n", - " %% Styling for dark mode\n", + " %% Styling\n", " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", - " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", "\n", - " class A,Z startend\n", - " class B,C,E,G process\n", - " class D decision\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "d5f0ce94-50ce-4b69-9d97-467f0fdba718", - "metadata": {}, - "source": [ - "## Misc\n", - "\n", - "Here's another idea of a tool we could use for demoing.\n", - "\n", - "We could do something with the open library API. But it might be a bit less interesting since it involves querying a structured search engine; i.e., it's not open ended enough!" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1e46e8e0-4238-40aa-bd92-5d0085786675", - "metadata": {}, - "outputs": [], - "source": [ - "import requests\n", - "from typing import Optional, Annotated\n", - "from langchain_core.tools import tool\n", - "\n", - "@tool\n", - "def search_books(\n", - " title: Optional[str] = None,\n", - " author: Optional[str] = None,\n", - " subject: Optional[str] = None,\n", - " year: Optional[int] = None,\n", - " max_results: Annotated[int, \"Maximum number of results to return\"] = 5,\n", - ") -> str:\n", - " \"\"\"Search for books using the Open Library API.\n", - "\n", - " You can search by title, author, subject, and optional publication year.\n", - " Returns a list of matching books with title, author, and link.\n", - " \"\"\"\n", - "\n", - " # Base URL\n", - " base_url = \"https://openlibrary.org/search.json\"\n", - "\n", - " # Build query parameters\n", - " params = {}\n", - " if title:\n", - " params[\"title\"] = title\n", - " if author:\n", - " params[\"author\"] = author\n", - " if subject:\n", - " params[\"subject\"] = subject\n", - " if year:\n", - " params[\"publish_year\"] = year\n", - "\n", - " try:\n", - " response = requests.get(base_url, params=params, timeout=10)\n", - " response.raise_for_status()\n", - " data = response.json()\n", - " except Exception as e:\n", - " return f\"Error fetching data from Open Library: {str(e)}\"\n", - "\n", - " docs = data.get(\"docs\", [])\n", - " if not docs:\n", - " return \"No books found for the given query.\"\n", - "\n", - " # Format top N results\n", - " results = []\n", - " for i, book in enumerate(docs[:max_results]):\n", - " title = book.get(\"title\", \"Unknown Title\")\n", - " authors = \", \".join(book.get(\"author_name\", [\"Unknown Author\"]))\n", - " year = book.get(\"first_publish_year\", \"Unknown Year\")\n", - " key = book.get(\"key\", \"\")\n", - " url = f\"https://openlibrary.org{key}\" if key else \"N/A\"\n", - "\n", - " results.append(\n", - " f\"{i+1}. Title: {title}\\n Author(s): {authors}\\n First Published: {year}\\n URL: {url}\"\n", - " )\n", + " class A,D startend\n", + " class B,C process\n", + "```\n", "\n", - " return \"Top results:\\n\\n\" + \"\\n\\n\".join(results)" + "### 🧪 Example: Working with LangGraph GitHub issues" ] }, { "cell_type": "code", - "execution_count": 30, - "id": "9e8b4fda-ad1e-4f59-b494-1b808ecfe175", + "execution_count": 96, + "id": "c8065af8-c5a1-4e08-baef-f0a758096ab5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Top results:\n", + "Based on the recent GitHub issues, here are the main themes:\n", "\n", - "1. Title: Foundation\n", - " Author(s): Isaac Asimov\n", - " First Published: 1951\n", - " URL: https://openlibrary.org/works/OL46125W\n", + "## **Documentation & Developer Experience**\n", + "- Multiple documentation improvement requests, including:\n", + " - Command.goto behavior with static edges ([#5829](https://github.com/langchain-ai/langgraph/issues/5829))\n", + " - RemainingSteps managed value clarity ([#5775](https://github.com/langchain-ai/langgraph/issues/5775))\n", + " - Message history with memory ([#5773](https://github.com/langchain-ai/langgraph/issues/5773))\n", + " - Checkpointer documentation for subgraphs ([#5734](https://github.com/langchain-ai/langgraph/issues/5734))\n", + " - Self-hosted lite setup issues ([#5754](https://github.com/langchain-ai/langgraph/issues/5754))\n", "\n", - "2. Title: Foundation and Empire\n", - " Author(s): Isaac Asimov\n", - " First Published: 1945\n", - " URL: https://openlibrary.org/works/OL46224W\n", + "## **CLI & Development Tools Issues**\n", + "- Problems with `langgraph dev` command:\n", + " - Ignoring checkpointer configuration ([#5790](https://github.com/langchain-ai/langgraph/issues/5790))\n", + " - Windows path issues in build/dockerfile commands ([#5815](https://github.com/langchain-ai/langgraph/issues/5815))\n", + " - HTTP client resource errors ([#5766](https://github.com/langchain-ai/langgraph/issues/5766))\n", "\n", - "3. Title: Second Foundation\n", - " Author(s): Isaac Asimov\n", - " First Published: 1953\n", - " URL: https://openlibrary.org/works/OL46309W\n", + "## **Serialization & Data Handling Problems**\n", + "- JSON serialization issues affecting multiple components:\n", + " - PostgresSaver serialization ([#5769](https://github.com/langchain-ai/langgraph/issues/5769))\n", + " - Pydantic model caching ([#5733](https://github.com/langchain-ai/langgraph/issues/5733))\n", + " - Send objects in output events ([#5725](https://github.com/langchain-ai/langgraph/issues/5725))\n", + " - Tool argument parsing ([#5704](https://github.com/langchain-ai/langgraph/issues/5704))\n", "\n", - "4. Title: Foundation's Edge\n", - " Author(s): Isaac Asimov\n", - " First Published: 1977\n", - " URL: https://openlibrary.org/works/OL46302W\n", + "## **Tool Integration & LLM Interaction Issues**\n", + "- Various tool-related problems:\n", + " - OpenRouter tool type errors ([#5822](https://github.com/langchain-ai/langgraph/issues/5822))\n", + " - Parameterless tool invocation errors ([#5722](https://github.com/langchain-ai/langgraph/issues/5722))\n", + " - Tool usage result handling ([#5760](https://github.com/langchain-ai/langgraph/issues/5760))\n", "\n", - "5. Title: The Foundation Trilogy\n", - " Author(s): Isaac Asimov\n", - " First Published: 1950\n", - " URL: https://openlibrary.org/works/OL46390W\n" + "## **Runtime & Streaming Functionality**\n", + "- Runtime context and streaming issues:\n", + " - Null runtime context from stream endpoint ([#5804](https://github.com/langchain-ai/langgraph/issues/5804))\n", + " - Missing error events in debug streaming ([#5764](https://github.com/langchain-ai/langgraph/issues/5764))\n", + " - Runtime support improvements needed ([#5776](https://github.com/langchain-ai/langgraph/issues/5776))\n", + "\n", + "## **Graph Structure & Command Pattern**\n", + "- Issues with graph behavior and commands:\n", + " - Virtual edge creation problems with Commands ([#5772](https://github.com/langchain-ai/langgraph/issues/5772))\n", + " - RemoveMessage not working across subgraphs ([#5755](https://github.com/langchain-ai/langgraph/issues/5755))\n", + " - Caching not considering function code changes ([#5820](https://github.com/langchain-ai/langgraph/issues/5820))\n", + "\n", + "## **Code Quality & Maintenance**\n", + "- Internal refactoring and improvement tasks:\n", + " - React agent refactoring ([#5710](https://github.com/langchain-ai/langgraph/issues/5710), [#5692](https://github.com/langchain-ai/langgraph/issues/5692))\n", + " - Type annotation updates ([#5739](https://github.com/langchain-ai/langgraph/issues/5739))\n", + " - Import test suite addition ([#5810](https://github.com/langchain-ai/langgraph/issues/5810))\n", + "\n", + "The issues suggest LangGraph is actively being developed with focus on improving reliability, developer experience, and fixing integration problems with various LLM providers and tools.\n" ] } ], "source": [ - "print(search_books.invoke({\"title\": \"Foundation\", \"author\": \"Asimov\"}))" + "import requests\n", + "from typing import TypedDict, NotRequired\n", + "from langgraph.graph import StateGraph, END\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "class GraphState(TypedDict):\n", + " question: str\n", + " retrieved_content: NotRequired[str]\n", + " answer: NotRequired[str]\n", + "\n", + "llm = init_chat_model('claude-sonnet-4-0', max_tokens=32000)\n", + "\n", + "\n", + "def retrieval_step(state: GraphState) -> GraphState:\n", + " headers = {\n", + " \"Accept\": \"application/vnd.github+json\",\n", + " \"User-Agent\": \"langgraph-rag-example\",\n", + " }\n", + "\n", + " url = \"https://api.github.com/repos/langchain-ai/langgraph/issues\"\n", + " params = {\n", + " \"state\": \"open\",\n", + " \"per_page\": 50,\n", + " }\n", + " response = requests.get(url, headers=headers, params=params)\n", + " response.raise_for_status()\n", + " \n", + " items = response.json()\n", + " base_url = \"https://github.com/langchain-ai/langgraph/issues/\"\n", + " # Filter out PRs (issues with \"pull_request\" key are actually PRs)\n", + " issues = [f\"- {issue['title']} {base_url}{issue['number']}\" for issue in items if \"pull_request\" not in issue]\n", + " retrieved = \"\\n\".join(issues) if issues else \"No issues found.\"\n", + " \n", + " return {\n", + " \"retrieved_content\": retrieved\n", + " }\n", + "\n", + "\n", + "def generate_response(state: GraphState) -> GraphState:\n", + " prompt = [\n", + " {\n", + " \"role\": \"system\",\n", + " \"content\": (\n", + " \"You are a helpful assistant. Use the following GitHub issue data to answer the user's question. \"\n", + " \"When relevant also include urls to the issues in the response.\\n\\n---\\n\\n\"\n", + " f\"Retrieved GitHub Issues:\\n{state['retrieved_content']}\"\n", + " )\n", + " },\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": state[\"question\"]\n", + " }\n", + " ]\n", + " response = llm.invoke(prompt)\n", + " return {\n", + " \"question\": state[\"question\"],\n", + " \"retrieved_content\": state[\"retrieved_content\"],\n", + " \"answer\": response.content\n", + " }\n", + "\n", + "\n", + "builder = StateGraph(GraphState)\n", + "builder.add_node(\"retrieval\", retrieval_step)\n", + "builder.add_node(\"generation\", generate_response)\n", + "builder.set_entry_point(\"retrieval\")\n", + "builder.add_edge(\"retrieval\", \"generation\")\n", + "builder.add_edge(\"generation\", END)\n", + "\n", + "graph = builder.compile(name=\"2-step rag\")\n", + "\n", + "response = graph.invoke({\n", + " \"question\": \"What are the themes in the recent issues?\",\n", + "})\n", + "\n", + "print(response['answer'])" + ] + }, + { + "cell_type": "markdown", + "id": "a8e2e6f7-3d5e-4fcc-b807-64262de10fcf", + "metadata": {}, + "source": [ + "## 3. Hybrid architectures\n", + "\n", + "There are many possible variations on RAG architectures.\n", + "\n", + "\n", + "1. The retrieval step can involve an LLM to either interpret the question, to re-write the question or write multiple versions of it.\n", + "2. Reflection steps after retrieval: to decide whether retrieved results make sense and if not re-execute retrieval.\n", + "3. Reflection steps after generation: to decide whether the the generated answer is good and if not, to try re-execute retrieval or generation.\n", + "4. Variations could allow for up to a certain number of loop iterations that invclude retrieval and post generation etc.\n", + "\n", + "Here's an example of \n", + "\n", + "Examples\n", + "\n", + "* [Agentic RAG with Self correction](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag)" ] } ], diff --git a/src/langchain_v1/rag_systems.png b/src/langchain_v1/rag_systems.png new file mode 100644 index 0000000000000000000000000000000000000000..2111bdabdbcfc45f4bcf7bf17d3e99a0ac6d06b2 GIT binary patch literal 71792 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 m`DdAbU)TREe5yknFN) Date: Tue, 5 Aug 2025 14:39:06 -0400 Subject: [PATCH 14/24] x --- src/langchain_v1/rag_agent.ipynb | 399 ------------------------------- src/langchain_v1/rag_agent.md | 267 +++++++++++++++++++++ 2 files changed, 267 insertions(+), 399 deletions(-) delete mode 100644 src/langchain_v1/rag_agent.ipynb create mode 100644 src/langchain_v1/rag_agent.md diff --git a/src/langchain_v1/rag_agent.ipynb b/src/langchain_v1/rag_agent.ipynb deleted file mode 100644 index d6c295bcb..000000000 --- a/src/langchain_v1/rag_agent.ipynb +++ /dev/null @@ -1,399 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "id": "59f4cf61-43f4-4290-b87e-903b74fedcfe", - "metadata": {}, - "source": [ - "---\n", - "title: \"RAG\"\n", - "icon: \"search\"\n", - "---\n", - "\n", - "**Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model \"knows\" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information.\n", - "\n", - "### RAG Architectures\n", - "\n", - "RAG can be implemented in multiple ways, depending on your system's needs:\n", - "\n", - "- **2-Step RAG**: Retrieval always happens before generation. Simple and predictable.\n", - "- **Agentic RAG**: An LLM-powered agent decides *when* and *how* to retrieve during reasoning.\n", - "\n", - "![rag architectures](./rag_systems.png)\n", - "\n", - "\n", - "| Architecture | Control | Flexibility | Example Use Case |\n", - "| ------------ | --------- | ----------- | ------------------------ |\n", - "| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots |\n", - "| Hybrid | ⚖️ Medium | ⚖️ Medium | Technical Q\\&A |\n", - "| Agentic RAG | ❌ Low | ✅ High | Research assistants |\n", - "\n", - "\n", - "\n", - "## Building a knowledge base\n", - "\n", - "Section contains cross-links to documentation about vectorstores and custom retrievers.\n", - "\n", - "\n", - "\n", - "## ⚙️ Implementation\n", - "\n", - "We’ll walk through three progressively more dynamic implementations.\n" - ] - }, - { - "cell_type": "markdown", - "id": "9ede709a-e5c4-4aa5-a083-9a052f2884e7", - "metadata": {}, - "source": [ - "## 1. Agentic RAG\n", - "\n", - "**Agentic Retrieval-Augmented Generation (RAG)** combines the strengths of Retrieval-Augmented Generation with agent-based reasoning. Instead of retrieving documents before answering, an agent (powered by an LLM) reasons step-by-step and decides **when** and **how** to retrieve information during the interaction.\n", - "\n", - "\n", - "The only thing an agent needs to enable RAG behavior is access to one or more **tools** that can fetch external knowledge — such as documentation loaders, web APIs, or database queries. This tool-based architecture makes Agentic RAG modular, flexible, and ideal for evolving knowledge environments.\n", - "\n", - "\n", - "```mermaid\n", - "graph LR\n", - " A[User Input / Question] --> B[\"Agent (LLM)\"]\n", - " B --> C{Need external info?}\n", - " C -- Yes --> D[\"Search using tool(s)\"]\n", - " D --> H{Enough to answer?}\n", - " H -- No --> B\n", - " H -- Yes --> I[Generate final answer]\n", - " C -- No --> I\n", - " I --> J[Return to user]\n", - "\n", - " %% Dark-mode friendly styling\n", - " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", - " classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000\n", - " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", - "\n", - " class A,J startend\n", - " class B,D,I process\n", - " class C,H decision\n", - "```\n", - "\n", - "\n", - "```python\n", - "from langchain_core.tools import tool\n", - "from langgraph.prebuilt import create_react_agent\n", - "from langchain.chat_models import init_chat_model\n", - "\n", - "model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000)\n", - "\n", - "agent = create_react_agent(\n", - " model=model,\n", - " # Include tools that include retrieval tools\n", - " tools=tools, # [!code highlight] \n", - " # Customize the prompt with instructions on how to retrieve\n", - " # the data.\n", - " prompt=system_prompt,\n", - ")\n", - "```\n", - "\n", - "\n", - "### 🧪 Example: Agentic RAG with LangGraph Documentation\n", - "\n", - "This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading `llms.txt`, which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question." - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "2383a10c-4127-42b0-83a2-ce81365382cd", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "KeyboardInterrupt\n", - "\n" - ] - } - ], - "source": [ - "from markdownify import markdownify\n", - "import requests\n", - "\n", - "from langchain_core.tools import tool\n", - "from langgraph.prebuilt import create_react_agent\n", - "from langchain.chat_models import init_chat_model\n", - "\n", - "ALLOWED_DOMAINS = [\"https://langchain-ai.github.io/\"]\n", - "LLMS_TXT = 'https://langchain-ai.github.io/langgraph/llms.txt'\n", - "\n", - "@tool\n", - "def fetch_documentation(url: str) -> str:\n", - " \"\"\"Fetch and convert documentation from a URL\"\"\"\n", - " if not any(url.startswith(domain) for domain in ALLOWED_DOMAINS):\n", - " return f\"Error: URL not allowed. Must start with one of: {', '.join(ALLOWED_DOMAINS)}\"\n", - " response = requests.get(url, timeout=10.0)\n", - " response.raise_for_status()\n", - " return markdownify(response.text)\n", - "\n", - "# We will fetch the content of llms.txt, so this can be done ahead of time without requiring an LLM request.\n", - "llms_txt_content = requests.get(LLMS_TXT).text\n", - "\n", - "# System prompt for the agent\n", - "system_prompt = f\"\"\"\n", - "You are an expert Python developer and technical assistant. \n", - "Your primary role is to help users with questions about LangGraph and related tools.\n", - "\n", - "Instructions:\n", - "\n", - "1. If a user asks a question you're unsure about — or one that likely involves API usage, \n", - " behavior, or configuration — you MUST use the `fetch_documentation` tool to consult the relevant docs.\n", - "2. When citing documentation, summarize clearly and include relevant context from the content.\n", - "3. Do not use any URLs outside of the allowed domain.\n", - "4. If a documentation fetch fails, tell the user and proceed with your best expert understanding.\n", - "\n", - "You can access official documentation from the following approved sources:\n", - "\n", - "{llms_txt_content}\n", - "\n", - "You MUST consult the documentation to get up to date documentation \n", - "before answering a user's question about LangGraph.\n", - "\n", - "Your answers should be clear, concise, and technically accurate.\n", - "\"\"\"\n", - "\n", - "tools = [fetch_documentation]\n", - "\n", - "model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000)\n", - "\n", - "agent = create_react_agent(\n", - " model=model,\n", - " tools=tools,\n", - " prompt=system_prompt,\n", - " name=\"Agentic RAG\",\n", - ")\n", - "\n", - "response = agent.invoke({\n", - " 'messages': [{\n", - " 'role': 'user',\n", - " 'content': (\n", - " \"Write a short example of a langgraph agent using the \"\n", - " \"prebuilt create react agent. the agent should be able \"\n", - " \"to loook up stock pricing information.\"\n", - " )\n", - " }]\n", - "})\n", - "\n", - "print(response['messages'][-1].content)" - ] - }, - { - "cell_type": "markdown", - "id": "7ec52e1c-3b5f-48ae-b1de-6f49f6786a66", - "metadata": {}, - "source": [ - "# 2. Retrieval -> Generation workflow\n", - "\n", - "- **2-Step RAG**: Retrieval always happens before generation.\n", - "\n", - "```mermaid\n", - "graph LR\n", - " A[User Question] --> B[\"Retrieve Relevant Documents\"]\n", - " B --> C[\"Generate Answer\"]\n", - " C --> D[Return Answer to User]\n", - "\n", - " %% Styling\n", - " classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff\n", - " classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff\n", - "\n", - " class A,D startend\n", - " class B,C process\n", - "```\n", - "\n", - "### 🧪 Example: Working with LangGraph GitHub issues" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "c8065af8-c5a1-4e08-baef-f0a758096ab5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Based on the recent GitHub issues, here are the main themes:\n", - "\n", - "## **Documentation & Developer Experience**\n", - "- Multiple documentation improvement requests, including:\n", - " - Command.goto behavior with static edges ([#5829](https://github.com/langchain-ai/langgraph/issues/5829))\n", - " - RemainingSteps managed value clarity ([#5775](https://github.com/langchain-ai/langgraph/issues/5775))\n", - " - Message history with memory ([#5773](https://github.com/langchain-ai/langgraph/issues/5773))\n", - " - Checkpointer documentation for subgraphs ([#5734](https://github.com/langchain-ai/langgraph/issues/5734))\n", - " - Self-hosted lite setup issues ([#5754](https://github.com/langchain-ai/langgraph/issues/5754))\n", - "\n", - "## **CLI & Development Tools Issues**\n", - "- Problems with `langgraph dev` command:\n", - " - Ignoring checkpointer configuration ([#5790](https://github.com/langchain-ai/langgraph/issues/5790))\n", - " - Windows path issues in build/dockerfile commands ([#5815](https://github.com/langchain-ai/langgraph/issues/5815))\n", - " - HTTP client resource errors ([#5766](https://github.com/langchain-ai/langgraph/issues/5766))\n", - "\n", - "## **Serialization & Data Handling Problems**\n", - "- JSON serialization issues affecting multiple components:\n", - " - PostgresSaver serialization ([#5769](https://github.com/langchain-ai/langgraph/issues/5769))\n", - " - Pydantic model caching ([#5733](https://github.com/langchain-ai/langgraph/issues/5733))\n", - " - Send objects in output events ([#5725](https://github.com/langchain-ai/langgraph/issues/5725))\n", - " - Tool argument parsing ([#5704](https://github.com/langchain-ai/langgraph/issues/5704))\n", - "\n", - "## **Tool Integration & LLM Interaction Issues**\n", - "- Various tool-related problems:\n", - " - OpenRouter tool type errors ([#5822](https://github.com/langchain-ai/langgraph/issues/5822))\n", - " - Parameterless tool invocation errors ([#5722](https://github.com/langchain-ai/langgraph/issues/5722))\n", - " - Tool usage result handling ([#5760](https://github.com/langchain-ai/langgraph/issues/5760))\n", - "\n", - "## **Runtime & Streaming Functionality**\n", - "- Runtime context and streaming issues:\n", - " - Null runtime context from stream endpoint ([#5804](https://github.com/langchain-ai/langgraph/issues/5804))\n", - " - Missing error events in debug streaming ([#5764](https://github.com/langchain-ai/langgraph/issues/5764))\n", - " - Runtime support improvements needed ([#5776](https://github.com/langchain-ai/langgraph/issues/5776))\n", - "\n", - "## **Graph Structure & Command Pattern**\n", - "- Issues with graph behavior and commands:\n", - " - Virtual edge creation problems with Commands ([#5772](https://github.com/langchain-ai/langgraph/issues/5772))\n", - " - RemoveMessage not working across subgraphs ([#5755](https://github.com/langchain-ai/langgraph/issues/5755))\n", - " - Caching not considering function code changes ([#5820](https://github.com/langchain-ai/langgraph/issues/5820))\n", - "\n", - "## **Code Quality & Maintenance**\n", - "- Internal refactoring and improvement tasks:\n", - " - React agent refactoring ([#5710](https://github.com/langchain-ai/langgraph/issues/5710), [#5692](https://github.com/langchain-ai/langgraph/issues/5692))\n", - " - Type annotation updates ([#5739](https://github.com/langchain-ai/langgraph/issues/5739))\n", - " - Import test suite addition ([#5810](https://github.com/langchain-ai/langgraph/issues/5810))\n", - "\n", - "The issues suggest LangGraph is actively being developed with focus on improving reliability, developer experience, and fixing integration problems with various LLM providers and tools.\n" - ] - } - ], - "source": [ - "import requests\n", - "from typing import TypedDict, NotRequired\n", - "from langgraph.graph import StateGraph, END\n", - "from langchain.chat_models import init_chat_model\n", - "\n", - "class GraphState(TypedDict):\n", - " question: str\n", - " retrieved_content: NotRequired[str]\n", - " answer: NotRequired[str]\n", - "\n", - "llm = init_chat_model('claude-sonnet-4-0', max_tokens=32000)\n", - "\n", - "\n", - "def retrieval_step(state: GraphState) -> GraphState:\n", - " headers = {\n", - " \"Accept\": \"application/vnd.github+json\",\n", - " \"User-Agent\": \"langgraph-rag-example\",\n", - " }\n", - "\n", - " url = \"https://api.github.com/repos/langchain-ai/langgraph/issues\"\n", - " params = {\n", - " \"state\": \"open\",\n", - " \"per_page\": 50,\n", - " }\n", - " response = requests.get(url, headers=headers, params=params)\n", - " response.raise_for_status()\n", - " \n", - " items = response.json()\n", - " base_url = \"https://github.com/langchain-ai/langgraph/issues/\"\n", - " # Filter out PRs (issues with \"pull_request\" key are actually PRs)\n", - " issues = [f\"- {issue['title']} {base_url}{issue['number']}\" for issue in items if \"pull_request\" not in issue]\n", - " retrieved = \"\\n\".join(issues) if issues else \"No issues found.\"\n", - " \n", - " return {\n", - " \"retrieved_content\": retrieved\n", - " }\n", - "\n", - "\n", - "def generate_response(state: GraphState) -> GraphState:\n", - " prompt = [\n", - " {\n", - " \"role\": \"system\",\n", - " \"content\": (\n", - " \"You are a helpful assistant. Use the following GitHub issue data to answer the user's question. \"\n", - " \"When relevant also include urls to the issues in the response.\\n\\n---\\n\\n\"\n", - " f\"Retrieved GitHub Issues:\\n{state['retrieved_content']}\"\n", - " )\n", - " },\n", - " {\n", - " \"role\": \"user\",\n", - " \"content\": state[\"question\"]\n", - " }\n", - " ]\n", - " response = llm.invoke(prompt)\n", - " return {\n", - " \"question\": state[\"question\"],\n", - " \"retrieved_content\": state[\"retrieved_content\"],\n", - " \"answer\": response.content\n", - " }\n", - "\n", - "\n", - "builder = StateGraph(GraphState)\n", - "builder.add_node(\"retrieval\", retrieval_step)\n", - "builder.add_node(\"generation\", generate_response)\n", - "builder.set_entry_point(\"retrieval\")\n", - "builder.add_edge(\"retrieval\", \"generation\")\n", - "builder.add_edge(\"generation\", END)\n", - "\n", - "graph = builder.compile(name=\"2-step rag\")\n", - "\n", - "response = graph.invoke({\n", - " \"question\": \"What are the themes in the recent issues?\",\n", - "})\n", - "\n", - "print(response['answer'])" - ] - }, - { - "cell_type": "markdown", - "id": "a8e2e6f7-3d5e-4fcc-b807-64262de10fcf", - "metadata": {}, - "source": [ - "## 3. Hybrid architectures\n", - "\n", - "There are many possible variations on RAG architectures.\n", - "\n", - "\n", - "1. The retrieval step can involve an LLM to either interpret the question, to re-write the question or write multiple versions of it.\n", - "2. Reflection steps after retrieval: to decide whether retrieved results make sense and if not re-execute retrieval.\n", - "3. Reflection steps after generation: to decide whether the the generated answer is good and if not, to try re-execute retrieval or generation.\n", - "4. Variations could allow for up to a certain number of loop iterations that invclude retrieval and post generation etc.\n", - "\n", - "Here's an example of \n", - "\n", - "Examples\n", - "\n", - "* [Agentic RAG with Self correction](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.8" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/src/langchain_v1/rag_agent.md b/src/langchain_v1/rag_agent.md new file mode 100644 index 000000000..38a00b18d --- /dev/null +++ b/src/langchain_v1/rag_agent.md @@ -0,0 +1,267 @@ +**Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model "knows" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information. + +--- +title: RAG Architectures +--- + +RAG can be implemented in multiple ways, depending on your system's needs: + +* **2-Step RAG**: Retrieval always happens before generation. Simple and predictable. +* **Agentic RAG**: An LLM-powered agent decides *when* and *how* to retrieve during reasoning. + +![rag architectures](./rag_systems.png) + +| Architecture | Control | Flexibility | Example Use Case | +| ------------ | --------- | ----------- | ------------------------ | +| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | +| Hybrid | ⚖️ Medium | ⚖️ Medium | Technical Q\&A | +| Agentic RAG | ❌ Low | ✅ High | Research assistants | + +## Building a knowledge base + +Section contains cross-links to documentation about vectorstores and custom retrievers. + +## ⚙️ Implementation + +We’ll walk through three progressively more dynamic implementations. + +## 1. Agentic RAG + +**Agentic Retrieval-Augmented Generation (RAG)** combines the strengths of Retrieval-Augmented Generation with agent-based reasoning. Instead of retrieving documents before answering, an agent (powered by an LLM) reasons step-by-step and decides **when** and **how** to retrieve information during the interaction. + + + +The only thing an agent needs to enable RAG behavior is access to one or more **tools** that can fetch external knowledge — such as documentation loaders, web APIs, or database queries. This tool-based architecture makes Agentic RAG modular, flexible, and ideal for evolving knowledge environments. + + + +```mermaid +graph LR + A[User Input / Question] --> B["Agent (LLM)"] + B --> C{Need external info?} + C -- Yes --> D["Search using tool(s)"] + D --> H{Enough to answer?} + H -- No --> B + H -- Yes --> I[Generate final answer] + C -- No --> I + I --> J[Return to user] + + %% Dark-mode friendly styling + classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff + classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000 + classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff + + class A,J startend + class B,D,I process + class C,H decision +``` + +```python +from langchain_core.tools import tool +from langgraph.prebuilt import create_react_agent +from langchain.chat_models import init_chat_model + +model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000) + +agent = create_react_agent( + model=model, + # Include tools that include retrieval tools + tools=tools, # [!code highlight] + # Customize the prompt with instructions on how to retrieve + # the data. + prompt=system_prompt, +) +``` + +### 🧪 Example: Agentic RAG with LangGraph Documentation + +This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading `llms.txt`, which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question. + +```python +from markdownify import markdownify +import requests + +from langchain_core.tools import tool +from langgraph.prebuilt import create_react_agent +from langchain.chat_models import init_chat_model + +ALLOWED_DOMAINS = ["https://langchain-ai.github.io/"] +LLMS_TXT = 'https://langchain-ai.github.io/langgraph/llms.txt' + +@tool +def fetch_documentation(url: str) -> str: + """Fetch and convert documentation from a URL""" + if not any(url.startswith(domain) for domain in ALLOWED_DOMAINS): + return f"Error: URL not allowed. Must start with one of: {', '.join(ALLOWED_DOMAINS)}" + response = requests.get(url, timeout=10.0) + response.raise_for_status() + return markdownify(response.text) + +# We will fetch the content of llms.txt, so this can be done ahead of time without requiring an LLM request. +llms_txt_content = requests.get(LLMS_TXT).text + +# System prompt for the agent +system_prompt = f""" +You are an expert Python developer and technical assistant. +Your primary role is to help users with questions about LangGraph and related tools. + +Instructions: + +1. If a user asks a question you're unsure about — or one that likely involves API usage, + behavior, or configuration — you MUST use the `fetch_documentation` tool to consult the relevant docs. +2. When citing documentation, summarize clearly and include relevant context from the content. +3. Do not use any URLs outside of the allowed domain. +4. If a documentation fetch fails, tell the user and proceed with your best expert understanding. + +You can access official documentation from the following approved sources: + +{llms_txt_content} + +You MUST consult the documentation to get up to date documentation +before answering a user's question about LangGraph. + +Your answers should be clear, concise, and technically accurate. +""" + +tools = [fetch_documentation] + +model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000) + +agent = create_react_agent( + model=model, + tools=tools, + prompt=system_prompt, + name="Agentic RAG", +) + +response = agent.invoke({ + 'messages': [{ + 'role': 'user', + 'content': ( + "Write a short example of a langgraph agent using the " + "prebuilt create react agent. the agent should be able " + "to loook up stock pricing information." + ) + }] +}) + +print(response['messages'][-1].content) +``` + +```output + +KeyboardInterrupt +``` + +# 2. Retrieval -> Generation workflow + +* **2-Step RAG**: Retrieval always happens before generation. + +```mermaid +graph LR + A[User Question] --> B["Retrieve Relevant Documents"] + B --> C["Generate Answer"] + C --> D[Return Answer to User] + + %% Styling + classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff + classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff + + class A,D startend + class B,C process +``` + +### 🧪 Example: Working with LangGraph GitHub issues + +```python +import requests +from typing import TypedDict, NotRequired +from langgraph.graph import StateGraph, END +from langchain.chat_models import init_chat_model + +class GraphState(TypedDict): + question: str + retrieved_content: NotRequired[str] + answer: NotRequired[str] + +llm = init_chat_model('claude-sonnet-4-0', max_tokens=32000) + + +def retrieval_step(state: GraphState) -> GraphState: + headers = { + "Accept": "application/vnd.github+json", + "User-Agent": "langgraph-rag-example", + } + + url = "https://api.github.com/repos/langchain-ai/langgraph/issues" + params = { + "state": "open", + "per_page": 50, + } + response = requests.get(url, headers=headers, params=params) + response.raise_for_status() + + items = response.json() + base_url = "https://github.com/langchain-ai/langgraph/issues/" + # Filter out PRs (issues with "pull_request" key are actually PRs) + issues = [f"- {issue['title']} {base_url}{issue['number']}" for issue in items if "pull_request" not in issue] + retrieved = "\n".join(issues) if issues else "No issues found." + + return { + "retrieved_content": retrieved + } + + +def generate_response(state: GraphState) -> GraphState: + prompt = [ + { + "role": "system", + "content": ( + "You are a helpful assistant. Use the following GitHub issue data to answer the user's question. " + "When relevant also include urls to the issues in the response.\n\n---\n\n" + f"Retrieved GitHub Issues:\n{state['retrieved_content']}" + ) + }, + { + "role": "user", + "content": state["question"] + } + ] + response = llm.invoke(prompt) + return { + "question": state["question"], + "retrieved_content": state["retrieved_content"], + "answer": response.content + } + + +builder = StateGraph(GraphState) +builder.add_node("retrieval", retrieval_step) +builder.add_node("generation", generate_response) +builder.set_entry_point("retrieval") +builder.add_edge("retrieval", "generation") +builder.add_edge("generation", END) + +graph = builder.compile(name="2-step rag") + +response = graph.invoke({ + "question": "What are the themes in the recent issues?", +}) + +print(response['answer']) +``` + +## 3. Hybrid architectures + +There are many possible variations on RAG architectures. + +1. The retrieval step can involve an LLM to either interpret the question, to re-write the question or write multiple versions of it. +2. Reflection steps after retrieval: to decide whether retrieved results make sense and if not re-execute retrieval. +3. Reflection steps after generation: to decide whether the the generated answer is good and if not, to try re-execute retrieval or generation. +4. Variations could allow for up to a certain number of loop iterations that invclude retrieval and post generation etc. + +Here's an example of + +Examples + +* [Agentic RAG with Self correction](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag) From e7b98b70e92917d12583cfd14033a5a0261692af Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 5 Aug 2025 14:51:21 -0400 Subject: [PATCH 15/24] x --- src/langchain_v1/rag_agent.md | 88 ++++++++++++++++++++--------------- 1 file changed, 50 insertions(+), 38 deletions(-) diff --git a/src/langchain_v1/rag_agent.md b/src/langchain_v1/rag_agent.md index 38a00b18d..af5e9b38e 100644 --- a/src/langchain_v1/rag_agent.md +++ b/src/langchain_v1/rag_agent.md @@ -1,9 +1,10 @@ -**Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model "knows" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information. - --- -title: RAG Architectures +title: RAG --- +**Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model "knows" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information. + + RAG can be implemented in multiple ways, depending on your system's needs: * **2-Step RAG**: Retrieval always happens before generation. Simple and predictable. @@ -11,11 +12,11 @@ RAG can be implemented in multiple ways, depending on your system's needs: ![rag architectures](./rag_systems.png) -| Architecture | Control | Flexibility | Example Use Case | -| ------------ | --------- | ----------- | ------------------------ | -| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | -| Hybrid | ⚖️ Medium | ⚖️ Medium | Technical Q\&A | -| Agentic RAG | ❌ Low | ✅ High | Research assistants | +| Architecture | Control | Flexibility | Example Use Case | +|--------------|-----------|-------------|---------------------------------------------------| +| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | +| Hybrid | ⚖️ Medium | ⚖️ Medium | | +| Agentic RAG | ❌ Low | ✅ High | Research assistants with access to multiple tools | ## Building a knowledge base @@ -57,47 +58,52 @@ graph LR ``` ```python -from langchain_core.tools import tool -from langgraph.prebuilt import create_react_agent from langchain.chat_models import init_chat_model +from langgraph.prebuilt import create_react_agent model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000) agent = create_react_agent( model=model, # Include tools that include retrieval tools - tools=tools, # [!code highlight] + tools=tools, # [!code highlight] # Customize the prompt with instructions on how to retrieve # the data. prompt=system_prompt, ) ``` -### 🧪 Example: Agentic RAG with LangGraph Documentation -This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading `llms.txt`, which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question. + + +This example implements an **Agentic RAG system** to assist users in querying LangGraph documentation. The agent begins by loading [llms.txt](https://llmstxt.org/), which lists available documentation URLs, and can then dynamically use a `fetch_documentation` tool to retrieve and process the relevant content based on the user’s question. ```python -from markdownify import markdownify import requests - +from langchain.chat_models import init_chat_model from langchain_core.tools import tool from langgraph.prebuilt import create_react_agent -from langchain.chat_models import init_chat_model +from markdownify import markdownify ALLOWED_DOMAINS = ["https://langchain-ai.github.io/"] LLMS_TXT = 'https://langchain-ai.github.io/langgraph/llms.txt' + @tool -def fetch_documentation(url: str) -> str: +def fetch_documentation(url: str) -> str: # [!code highlight] """Fetch and convert documentation from a URL""" if not any(url.startswith(domain) for domain in ALLOWED_DOMAINS): - return f"Error: URL not allowed. Must start with one of: {', '.join(ALLOWED_DOMAINS)}" + return ( + "Error: URL not allowed. " + f"Must start with one of: {', '.join(ALLOWED_DOMAINS)}" + ) response = requests.get(url, timeout=10.0) response.raise_for_status() return markdownify(response.text) -# We will fetch the content of llms.txt, so this can be done ahead of time without requiring an LLM request. + +# We will fetch the content of llms.txt, so this can +# be done ahead of time without requiring an LLM request. llms_txt_content = requests.get(LLMS_TXT).text # System prompt for the agent @@ -129,8 +135,8 @@ model = init_chat_model('claude-sonnet-4-0', max_tokens=32_000) agent = create_react_agent( model=model, - tools=tools, - prompt=system_prompt, + tools=tools, # [!code highlight] + prompt=system_prompt, # [!code highlight] name="Agentic RAG", ) @@ -147,15 +153,11 @@ response = agent.invoke({ print(response['messages'][-1].content) ``` + -```output - -KeyboardInterrupt -``` - -# 2. Retrieval -> Generation workflow +# 2. RAG with 2-Step workflow -* **2-Step RAG**: Retrieval always happens before generation. +In **2-Step RAG**, the retrieval step is always executed before the generation step. This architecture is straightforward and predictable, making it suitable for many applications where the retrieval of relevant documents is a clear prerequisite for generating an answer. ```mermaid graph LR @@ -171,23 +173,29 @@ graph LR class B,C process ``` -### 🧪 Example: Working with LangGraph GitHub issues + + +This example demonstrates a simple 2-step RAG system that retrieves open GitHub issues from the LangGraph repository and generates an answer based on the retrieved content. ```python -import requests from typing import TypedDict, NotRequired -from langgraph.graph import StateGraph, END + +import requests from langchain.chat_models import init_chat_model +from langgraph.graph import StateGraph, END + class GraphState(TypedDict): question: str retrieved_content: NotRequired[str] answer: NotRequired[str] + llm = init_chat_model('claude-sonnet-4-0', max_tokens=32000) -def retrieval_step(state: GraphState) -> GraphState: +def retrieval_step(state: GraphState): # [!code highlight] + """Retrieve open issues from the LangGraph GitHub repository.""" headers = { "Accept": "application/vnd.github+json", "User-Agent": "langgraph-rag-example", @@ -200,19 +208,21 @@ def retrieval_step(state: GraphState) -> GraphState: } response = requests.get(url, headers=headers, params=params) response.raise_for_status() - + items = response.json() base_url = "https://github.com/langchain-ai/langgraph/issues/" # Filter out PRs (issues with "pull_request" key are actually PRs) - issues = [f"- {issue['title']} {base_url}{issue['number']}" for issue in items if "pull_request" not in issue] + issues = [f"- {issue['title']} {base_url}{issue['number']}" for issue in items if + "pull_request" not in issue] retrieved = "\n".join(issues) if issues else "No issues found." - + return { "retrieved_content": retrieved } -def generate_response(state: GraphState) -> GraphState: +def generate_response(state: GraphState): # [!code highlight] + """Generate an answer based on the retrieved content and the user's question.""" prompt = [ { "role": "system", @@ -236,8 +246,8 @@ def generate_response(state: GraphState) -> GraphState: builder = StateGraph(GraphState) -builder.add_node("retrieval", retrieval_step) -builder.add_node("generation", generate_response) +builder.add_node("retrieval", retrieval_step) # [!code highlight] +builder.add_node("generation", generate_response) # [!code highlight] builder.set_entry_point("retrieval") builder.add_edge("retrieval", "generation") builder.add_edge("generation", END) @@ -251,6 +261,8 @@ response = graph.invoke({ print(response['answer']) ``` + + ## 3. Hybrid architectures There are many possible variations on RAG architectures. From 4f295d9721c42b410b70cfee9c1f08e8d4821cc1 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 5 Aug 2025 15:01:14 -0400 Subject: [PATCH 16/24] x --- src/langchain_v1/rag_agent.md | 69 ++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/src/langchain_v1/rag_agent.md b/src/langchain_v1/rag_agent.md index af5e9b38e..0181832c3 100644 --- a/src/langchain_v1/rag_agent.md +++ b/src/langchain_v1/rag_agent.md @@ -14,19 +14,11 @@ RAG can be implemented in multiple ways, depending on your system's needs: | Architecture | Control | Flexibility | Example Use Case | |--------------|-----------|-------------|---------------------------------------------------| -| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | -| Hybrid | ⚖️ Medium | ⚖️ Medium | | | Agentic RAG | ❌ Low | ✅ High | Research assistants with access to multiple tools | +| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | +| Hybrid | ⚖️ Medium | ⚖️ Medium | Domain-specific Q&A with quality validation | -## Building a knowledge base - -Section contains cross-links to documentation about vectorstores and custom retrievers. - -## ⚙️ Implementation - -We’ll walk through three progressively more dynamic implementations. - -## 1. Agentic RAG +## Agentic RAG **Agentic Retrieval-Augmented Generation (RAG)** combines the strengths of Retrieval-Augmented Generation with agent-based reasoning. Instead of retrieving documents before answering, an agent (powered by an LLM) reasons step-by-step and decides **when** and **how** to retrieve information during the interaction. @@ -155,7 +147,7 @@ print(response['messages'][-1].content) ``` -# 2. RAG with 2-Step workflow +## 2-step workflow In **2-Step RAG**, the retrieval step is always executed before the generation step. This architecture is straightforward and predictable, making it suitable for many applications where the retrieval of relevant documents is a clear prerequisite for generating an answer. @@ -263,17 +255,52 @@ print(response['answer']) -## 3. Hybrid architectures +## Hybrid RAG + +Hybrid RAG combines characteristics of both 2-Step and Agentic RAG. It introduces intermediate steps such as query preprocessing, retrieval validation, and post-generation checks. These systems offer more flexibility than fixed pipelines while maintaining some control over execution. + +Typical components include: -There are many possible variations on RAG architectures. +* **Query enhancement**: Modify the input question to improve retrieval quality. This can involve rewriting unclear queries, generating multiple variations, or expanding queries with additional context. +* **Retrieval validation**: Evaluate whether retrieved documents are relevant and sufficient. If not, the system may refine the query and retrieve again. +* **Answer validation**: Check the generated answer for accuracy, completeness, and alignment with source content. If needed, the system can regenerate or revise the answer. -1. The retrieval step can involve an LLM to either interpret the question, to re-write the question or write multiple versions of it. -2. Reflection steps after retrieval: to decide whether retrieved results make sense and if not re-execute retrieval. -3. Reflection steps after generation: to decide whether the the generated answer is good and if not, to try re-execute retrieval or generation. -4. Variations could allow for up to a certain number of loop iterations that invclude retrieval and post generation etc. +The architecture often supports multiple iterations between these steps: + +```mermaid +graph LR + A[User Question] --> B[Query Enhancement] + B --> C[Retrieve Documents] + C --> D{Sufficient Info?} + D -- No --> E[Refine Query] + E --> C + D -- Yes --> F[Generate Answer] + F --> G{Answer Quality OK?} + G -- No --> H{Try Different Approach?} + H -- Yes --> E + H -- No --> I[Return Best Answer] + G -- Yes --> I + I --> J[Return to User] -Here's an example of + classDef startend fill:#2e7d32,stroke:#1b5e20,stroke-width:2px,color:#fff + classDef decision fill:#f9a825,stroke:#f57f17,stroke-width:2px,color:#000 + classDef process fill:#1976d2,stroke:#0d47a1,stroke-width:1.5px,color:#fff + + class A,J startend + class B,C,E,F,I process + class D,G,H decision +``` + +This architecture is suitable for: + +* Applications with ambiguous or underspecified queries +* Systems that require validation or quality control steps +* Workflows involving multiple sources or iterative refinement + +**Example** [Agentic RAG with Self-Correction](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag) + +## Building a knowledge base -Examples +A key component of RAG systems is a **knowledge base**—a repository of documents or data that the retrieval step can query. -* [Agentic RAG with Self correction](https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_agentic_rag) +If you want to build a custom knowledge base, you can use LangChain's document loaders and vector stores to create one from your own data. \ No newline at end of file From e0dd3e9fe415b4334d8eb62350b14abb52361ca8 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Wed, 6 Aug 2025 11:14:08 -0400 Subject: [PATCH 17/24] x --- src/langchain_v1/rag_agent.md | 36 ++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/langchain_v1/rag_agent.md b/src/langchain_v1/rag_agent.md index 0181832c3..3590e9649 100644 --- a/src/langchain_v1/rag_agent.md +++ b/src/langchain_v1/rag_agent.md @@ -4,19 +4,13 @@ title: RAG **Retrieval-Augmented Generation (RAG)** is a method for enhancing the responses of language models by injecting external knowledge at generation time. Instead of relying solely on what the model "knows" (from training), RAG enables the model to query external sources—like search engines, databases, APIs, or custom document stores—to access the most relevant and up-to-date information. - RAG can be implemented in multiple ways, depending on your system's needs: -* **2-Step RAG**: Retrieval always happens before generation. Simple and predictable. -* **Agentic RAG**: An LLM-powered agent decides *when* and *how* to retrieve during reasoning. - -![rag architectures](./rag_systems.png) - -| Architecture | Control | Flexibility | Example Use Case | -|--------------|-----------|-------------|---------------------------------------------------| -| Agentic RAG | ❌ Low | ✅ High | Research assistants with access to multiple tools | -| 2-Step RAG | ✅ High | ❌ Low | FAQs, documentation bots | -| Hybrid | ⚖️ Medium | ⚖️ Medium | Domain-specific Q&A with quality validation | +| Architecture | Description | Control | Flexibility | Example Use Case | +|-----------------|----------------------------------------------------------------------------|-----------|-------------|---------------------------------------------------| +| **Agentic RAG** | An LLM-powered agent decides *when* and *how* to retrieve during reasoning | ❌ Low | ✅ High | Research assistants with access to multiple tools | +| **2-Step RAG** | Retrieval always happens before generation. Simple and predictable | ✅ High | ❌ Low | FAQs, documentation bots | +| **Hybrid** | Combines characteristics of both approaches with validation steps | ⚖️ Medium | ⚖️ Medium | Domain-specific Q&A with quality validation | ## Agentic RAG @@ -65,6 +59,26 @@ agent = create_react_agent( ) ``` +### Bounded Agentic RAG + +Agentic RAG systems can be configured with a limit on how many reasoning/retrieval loops the agent may perform. This provides a useful balance between **flexibility** and **predictability**. + +A common pattern is **1-loop Agentic RAG**: + +* The agent decides whether to retrieve. +* If it does retrieve, it may rewrite the query. +* After at most one retrieval step, it generates the final answer. + +This setup enables paraphrasing and tool use without allowing open-ended loops. If the LLM supports it, tool calls may run in parallel. + +```python +agent = create_react_agent( + model=model, + tools=tools, + prompt=system_prompt, + max_iterations=1, # Limits agent to one loop +) +``` From cb9b5d4a7b092b448c78886130fce54276883997 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Wed, 6 Aug 2025 11:23:16 -0400 Subject: [PATCH 18/24] x --- src/langchain_v1/rag_agent.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/langchain_v1/rag_agent.md b/src/langchain_v1/rag_agent.md index 3590e9649..a609e420a 100644 --- a/src/langchain_v1/rag_agent.md +++ b/src/langchain_v1/rag_agent.md @@ -6,11 +6,16 @@ title: RAG RAG can be implemented in multiple ways, depending on your system's needs: -| Architecture | Description | Control | Flexibility | Example Use Case | -|-----------------|----------------------------------------------------------------------------|-----------|-------------|---------------------------------------------------| -| **Agentic RAG** | An LLM-powered agent decides *when* and *how* to retrieve during reasoning | ❌ Low | ✅ High | Research assistants with access to multiple tools | -| **2-Step RAG** | Retrieval always happens before generation. Simple and predictable | ✅ High | ❌ Low | FAQs, documentation bots | -| **Hybrid** | Combines characteristics of both approaches with validation steps | ⚖️ Medium | ⚖️ Medium | Domain-specific Q&A with quality validation | +| Architecture | Description | Control | Flexibility | Latency | Example Use Case | +|-------------------------|----------------------------------------------------------------------------|-----------|-------------|----------------|----------------------------------------------------| +| **Agentic RAG** | An LLM-powered agent decides *when* and *how* to retrieve during reasoning | ❌ Low | ✅ High | ⏳ Variable | Research assistants with access to multiple tools | +| **Bounded Agentic RAG** | Agentic RAG with a fixed number of reasoning/retrieval loops | ✅ Medium | ✅ Medium | ⏱️ Predictable | Smart assistants with predictable runtime/behavior | +| **2-Step RAG** | Retrieval always happens before generation. Simple and predictable | ✅ High | ❌ Low | ⚡ Fast | FAQs, documentation bots | +| **Hybrid** | Combines characteristics of both approaches with validation steps | ⚖️ Medium | ⚖️ Medium | ⏳ Variable | Domain-specific Q&A with quality validation | + + +**Latency**: Latency is generally more **predictable** in both **Bounded Agentic RAG** and **2-Step RAG**, as the maximum number of LLM calls is known and capped. This predictability assumes that LLM inference time is the dominant factor. However, real-world latency may also be affected by the performance of retrieval steps—such as API response times, network delays, or database queries—which can vary based on the tools and infrastructure in use. + ## Agentic RAG From 12d89227073132904d40915e356cd1f357e775fe Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Fri, 8 Aug 2025 11:01:49 -0400 Subject: [PATCH 19/24] x --- src/docs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/docs.json b/src/docs.json index 93649891d..b3d35c742 100644 --- a/src/docs.json +++ b/src/docs.json @@ -63,7 +63,8 @@ "langchain_v1/stuff", "langchain_v1/map_reduce", "langchain_v1/recursive", - "langchain_v1/rag_agent" + "langchain_v1/rag_agent", + "langchain_v1/data_analysis" ] } ] From c7d04e29159bd047bbb813b4acc7b23e67e4c487 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Fri, 8 Aug 2025 11:16:43 -0400 Subject: [PATCH 20/24] x --- src/langchain_v1/data_analysis.ipynb | 269 +++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 src/langchain_v1/data_analysis.ipynb diff --git a/src/langchain_v1/data_analysis.ipynb b/src/langchain_v1/data_analysis.ipynb new file mode 100644 index 000000000..1837d1833 --- /dev/null +++ b/src/langchain_v1/data_analysis.ipynb @@ -0,0 +1,269 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "63e58898-44fa-49e5-abe4-c88b552ae014", + "metadata": {}, + "source": [ + "---\n", + "title: \"Data analysis\"\n", + "icon: \"chart-line\"\n", + "---\n", + "\n", + "**Data Analysis Agents** use language models to write and run Python code for exploring and visualizing data. This guide shows how to analyze a CSV file using a LangChain agent with code execution capabilities.\n", + "\n", + "## 1. Configure the sandbox" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f847013-ae15-46a4-92d4-88890d6ee3c6", + "metadata": {}, + "outputs": [], + "source": [ + "# todo: move to langchain_daytona\n", + "from langchain.sandboxes import DaytonaSandboxManager\n", + "import csv\n", + "\n", + "filename = \"sales_data.csv\"\n", + "data = [\n", + " [\"Date\", \"Product\", \"Units Sold\", \"Revenue\"],\n", + " [\"2025-08-01\", \"Widget A\", 10, 250],\n", + " [\"2025-08-02\", \"Widget B\", 5, 125],\n", + " [\"2025-08-03\", \"Widget A\", 7, 175],\n", + " [\"2025-08-04\", \"Widget C\", 3, 90],\n", + " [\"2025-08-05\", \"Widget B\", 8, 200]\n", + "]\n", + "\n", + "with open(filename, mode=\"w\", newline=\"\") as file:\n", + " writer = csv.writer(file)\n", + " writer.writerows(data)\n", + "\n", + "\n", + "# TODO: Fix life cycle management for the sandbox\n", + "sandbox_manager = DaytonaSandboxManager()\n", + "sandbox = sandbox_manager.create()\n", + "print(sandbox.get_capabilities())" + ] + }, + { + "cell_type": "markdown", + "id": "1310eef7-a2e4-48a1-96cf-a00785909446", + "metadata": {}, + "source": [ + "## 2. Configure the agent\n", + "\n", + "We initialize a language model and create a DataAnalysisAgent, passing it:\n", + "* the sandbox\n", + "* the model\n", + "* available tools (run_code, exec)\n", + "* any files to attach" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "701e58bd-0570-48eb-9720-49b5113a4e0c", + "metadata": {}, + "outputs": [], + "source": [ + "import uuid\n", + "from langchain.agents.data_analysis import create_data_analysis_agent\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "thread_id = uuid.uuid4()\n", + "\n", + "\n", + "model = init_chat_model('anthropic:claude-3-7-sonnet-latest', max_tokens=32_000)\n", + "\n", + "data_analysis_agent = create_data_analysis_agent(\n", + " model,\n", + " sandbox,\n", + " tools=['run_code', 'exec'],\n", + " files=[{\n", + " \"source\": \"sales_data.csv\",\n", + " \"destination\": \"./data/sales_data.csv\",\n", + " }]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "42d7f12b-f6d8-4e24-baa3-c5bcb5f3b3fb", + "metadata": {}, + "source": [ + "## 3. Run the agent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8cfe63a-9ae7-4227-9810-3e36d0afde79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## Sales Data Analysis Summary\n", + "\n", + "I've created a comprehensive analysis of the sales data with a beautiful dashboard visualization. Here are the key findings:\n", + "\n", + "### Overall Summary Statistics:\n", + "- **Total Revenue**: $840\n", + "- **Total Units Sold**: 33\n", + "- **Average Price Per Unit**: $25.45\n", + "- **Best Selling Product**: Widget A (17 units)\n", + "- **Highest Revenue Product**: Widget A ($425)\n", + "\n", + "### Product-Specific Analysis:\n", + "\n", + "**Widget A**:\n", + "- Total Units Sold: 17 units\n", + "- Total Revenue: $425\n", + "- Average Price Per Unit: $25.00\n", + "- Sales Trend: Decreasing or Stable (from 10 to 7 units)\n", + "\n", + "**Widget B**:\n", + "- Total Units Sold: 13 units\n", + "- Total Revenue: $325\n", + "- Average Price Per Unit: $25.00\n", + "- Sales Trend: Increasing (from 5 to 8 units)\n", + "\n", + "**Widget C**:\n", + "- Total Units Sold: 3 units\n", + "- Total Revenue: $90\n", + "- Average Price Per Unit: $30.00\n", + "- Only appeared in sales on one day (2025-08-04)\n", + "\n", + "### Key Insights:\n", + "1. Widget A is the most popular product in terms of both units sold and revenue generated.\n", + "2. Widget C has the highest price per unit at $30.00, compared to $25.00 for Widgets A and B.\n", + "3. The data shows a strong positive correlation between units sold and revenue (as shown in the scatter plot).\n", + "4. Widget B is showing an upward sales trend, which might indicate growing popularity.\n", + "5. Sales are distributed throughout the 5-day period with different products having stronger performance on different days.\n", + "\n", + "The dashboard visualization includes:\n", + "- Bar charts showing units sold and revenue by product\n", + "- A time series of daily sales\n", + "- A pie chart showing the distribution of sales across products\n", + "- A horizontal bar chart showing average price per unit\n", + "- A scatter plot showing the correlation between units sold and revenue\n", + "\n", + "This comprehensive analysis provides a clear picture of the sales performance across different products and over time, highlighting key trends and patterns in the data.\n" + ] + } + ], + "source": [ + "response = data_analysis_agent.invoke(\n", + " {\n", + " \"messages\": [{\n", + " \"role\": \"user\",\n", + " \"content\": \"Make a beautiful plot of provided data using matplotlib and add some summarys stats while you're at it.\",\n", + " }]\n", + " },\n", + " config={\"configurable\": {\"thread_id\": thread_id}}\n", + ")\n", + "print(response['messages'][-1].content)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "672a4876-7e4f-40bb-9b12-22f854f178e8", + "metadata": {}, + "outputs": [], + "source": [ + "response = data_analysis_agent.invoke(\n", + " {\n", + " \"messages\": [{\n", + " \"role\": \"user\",\n", + " \"content\": \"Did you save the generated plot to a file? if not please do and put it in sales_analysis.png\",\n", + " }]\n", + " },\n", + " config={\"configurable\": {\"thread_id\": thread_id}}\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "42efc694-a341-41b0-ba13-2825eb4e5044", + "metadata": {}, + "outputs": [], + "source": [ + "f = sandbox.download_file('./sales_analysis.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d7730439-caf2-4619-9659-09de43f3ce69", + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Image" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d895f0a7-769b-4f6c-8ac0-060c1be9578c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAEsAAAA4QCAYAAADmR3Z/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAuIwAALiMBeKU/dgABAABJREFUeJzs3Wd4VOXWxvE7nRRKaKH3EpSqAem9SxMERKoIUlTgWODYKJYjoiDNQu9ViqB06SCdIBCa9JaEHiCQkDLvBy94VWZPMpk9kwT+v+viA1nPXs+ayezZO5q5cbNYLBYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALuKe2gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg6UIAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyKACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4FAFYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCkCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBSBGABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADApQjAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEsRgAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXIgALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkUAFgAAAAAAAAAAAAAAAAAA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+vXl5eVldw97zwt77d69W5MnT9ZPP/2kW7duOdSrePHiatiwodq1a6fq1avL3d3d4fnMZuua6Kz7TCPt2rXTTz/9ZFjv2LGjZs+e7dAe6fV6ee3aNU2ZMkWzZs1SWFiYQ70CAwNVo0YNtWnTRi1btlTmzJntOt7WvVDXrl01ffr0x76+bt06ffnll9q4cWOy93Fzc1PDhg01dOhQU4PPunXrphkzZlitWbufPnDggP73v/9pyZIldl27ateurY8++ugf9xTOdujQIY0cOVJLlizRnTt37DrWzc1NNWrUUJ8+fdSuXTunvl+dOXNGS5cu1caNG7VlyxbDe6ykuLm5qXLlyurdu7c6dOiQomuKLfbeE0RHR2vChAn67rvvdPr06ST723vdiouL0w8//KDRo0frzJkzyT4ue/bseuutt9S/f39lyZLlH7WhQ4dq2LBhVo/buHGjateunex9AAAAAAAAAAAAAMAIAVgAAAAAAAAAAAAATOHn52cYPjNs2DANHjzYxROlzObNmzV79mwtXrxYN2/eNLW3h4eHunXrphEjRihr1qym9XVlANbly5f13nvvacGCBXaFpxgJCgrSyJEj1bFjRxOm+3+hoaHq06ePdu3aZWrfh3r27KmJEyc6pXdKpaUALEmaMGGCevfubVgPCQnRnj177O576dIlzZgxQ/PmzdPhw4cdGdGq8uXLa9y4capevXqKjk9LAVj37t3T3LlzNW/ePG3atMmUc/bvcuXKpc8//1yvv/66qX1T25o1awyDnvLly6dz5849FvrQo0cPw1CjN998U+PHjzd9Tin5QT937tzR+++/r4kTJ6Y4zFGS2rdvr8mTJysgICDFPf4uNDRUM2bM0MKFCxUeHm5Kz7976aWXNHr0aBUoUMC0no4GYMXHx6tAgQKGj3fXrl2qVKmSo2Maio2NVb58+QxDfUJDQ1W+fPlk9bp9+7aGDBmicePGpTiwzJbAwECdP3/e7tebswKwIiMj9f7772vWrFkp7mFL8eLFdeLECaf0dkRaCsA6cuSIypQpY3g98/b2VkREhAIDA+3qm56vl4mJiZo4caI+/PBD0392kf56TlevXm3zHvPf7AnAioyM1JtvvqnFixeneEY3Nze9/fbb+uabb0wJOEpuAFZMTIw++ugjjR492qHXzEsvvaSJEycqe/bsKe6RlIiICA0YMEAL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cuXKpRdeeMFqLT09V+fPn9f69esN6127drWrX8OGDZUrVy6rtfv372vevHl29UupvHnzql27dqb0qly5suFjOn36tGJiYkzZx2xG19zExET9/vvvLp7GupCQEFWsWNFq7fDhww7PGRMTo5kzZxrW33jjjWT3MrrePqnX2qft8aYn7u7u8vf3N6yntXsLM6+XT8J9b6VKlVStWjVTejVv3tzwZ86wsDBT9vi3WrVqqX79+qb0CgoKshkebc89w88//6zo6GjD+vDhw+2azZbOnTurTJkyhvXZs2ebtpdZQkJClCdPHqs1Z923lihRQo0aNTKt3/nz520Gu3322Wem7fXpp58+keGWAAAAAAAAAAAAANImArAAAAAAAAAAAAAAmM7NzU3Dhg3Txo0b9cwzzzhlj02bNunll19W2bJltXbtWqfs4Qy2Pux96NAhF05i3apVq3T37l2rtZdffll+fn6m75ktWzbD8I/ffvstWccbSU8hPE+qDBky2KynteCcjBkzqmzZslZraeEcTWuM3tOOHDmixMREF0+TMtOnTzecNTg4WJUqVbKrn4eHhzp16mRYnzp1ql39Uuq1116Tl5eXaf2MzovExESdOXPGtH3MlNavuQ/17dvXsDZx4kSHei9atEg3btywWqtRo4Zd92lG19sjR44Y7pGeGT3enTt3KiEhwcXT4N9s3V+ktXsLybzr5ZNw32tP8F5S/P39VaxYMau18PBwp4Shde7c2dR+tu4Z/vzzT50+fTpZfVavXm1YCwkJ0bPPPmv3bLbYCgjdsmVLmguic3NzU9WqVa3WnHVP8Nprr5nab82aNYYB4AULFlT16tVN26tIkSKGzxcAAAAAAAAAAAAAmI0ALAAAAAAAAAAAAABOU7NmTf3xxx+aMmWKgoODnbLH4cOH1ahRI3Xt2lXR0dFO2cNMQUFBhrXjx4+7cBLrVq1aZVhr37690/atXbu21a8fPXo0yQ9Pe3p6Kl++fFZrP//8s3bu3OnoeHCAj4+PzXpaDKkwOk/Twjma1hg9V/fv39f58+ddPI39LBaLpk+fbljv0qVLivraOm737t0KCwtLUV971KpVy9R+pUuXNqxFRkaaupdZ/P395e/vb7WWls7n9u3bK2vWrFZrCxcu1K1bt1Lce8KECYa1Xr162dWrcOHCVr8eFxenTz75xK5e6YHR442MjNSo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2LBBdevW1bp16xQXF+fwXraeq+joaDVp0kRLly5Ndj+LxaKZM2cqJCTksec4rb+nJSQkaNasWYb1Ro0aKXv27C6c6C+dOnUyrP3xxx/at2+fC6dxrSxZstgMqPzpp5/08ssv68aNG8nuef78eXXo0EEDBgz4RyCfm5ubfHx8HJo3rejTp49d6/Ply6emTZuaPsfJkyfVt29f5cuXTz169NCaNWscet/av3+/XnjhBYWFhRmuMTPIy16hoaHq1KmTChQooP79+2vbtm0OBRauX79elSpVUkREhNW6p6enXn/99RT3Ty/u3bunffv2acaMGerdu7eKFSum0qVLa8SIEckKtMyUKZOWLl2q5s2bOzRHer1e3rx5U19++aUKFSqkli1bavbs2Q4FeYaHh+ull17SzJkzDdek5nmYlnh7e//j7/3791efPn2SDGx7KDExUePGjVODBg109+5dw3X9+/dXyZIlUzTjl19+qVy5chnWDxw4oJCQEG3atCnZPSMiItSyZUuNHj3a5rqxY8cqU6ZMye4r2T4PIyMjVadOHW3dujXZ/eLi4jR69GhVrVpVly5d+kctrd+3Jtcbb7yh8uXLG9b/+OMPVaxYUdu3b092z4MHD6py5cravHnzP77+79c8AAAAAAAAAAAAADiDZ2oPAAAAAAAAAAAAAODJdv78eQ0fPlzDhw9Xvnz5VK9ePdWsWVPly5fXs88+azOY4s6dOzp06JC2bt2q+fPn68CBA8nac+DAgapRo4Zdcw4dOlSvvPKKYf2HH37QqlWr9Pbbb+vll19WgQIFHltz9+5drV27VkuWLNH8+fOVkJDw2JqvvvpK/fv3t2u21NKuXTsdP35cgwcPNlxz7NgxdezYUR999JFeffVV1axZU9WqVVNAQIDhMTdu3NCBAwcUGhqqvXv3as2aNbp586Zpcx86dEiHDh3SJ598otKlS6tu3bp6/vnnFRISouDgYLm7W/+3ouLj4xUWFqaVK1dqypQpSYZwffXVV3JzczNtbmfr2rWrfH19ba5JTExUTEyMYmJidP36dUVEROjevXsp3rNNmzaaNm2aMmbMmOIeD7311lsaNWqUrl69arUeFhamkJAQde7cWa+//rpCQkLk6fnPX4uwWCzau3evli9frqlTp+ry5cuP9alYsaJKlCihOXPmODzz31WvXl2FCxfWmTNnrNY3b96szZs3y8vLS8WKFVPWrFnl7+9v+Brr1KmTYYhS5cqV1bhxY61evdpq/datW2rdurUaN26svn37qk6dOlbP2dOnT2v58uWaNWuW9u/f/1g9c+bMeueddzRkyBCjh53qVq5cqfDwcMO6rSAqZ2ratKkCAwMN3/umTp2q559/3sVTuc6wYcO0Zs0aw/rSpUu1fft29enTR6+++qpKlCjx2JrY2Fht2LBBy5Yt08yZM62GVA4YMEBLlizRuXPnTJ0/NTRt2lSFChXS2bNnk7W+R48e8vDwcNo8N27c0JQpUzRlyhQFBgaqcePGqlixop5//nk999xzNu8DwsPD9dtvv2nhwoX69ddfbe7TsmVLVatWzezx7RYeHq6xY8dq7Nixyp07txo1aqSQkBCFhISoXLlyhqEqFotF586d09q1azVnzhxt2bLF5j5vvvmmChYs6IyH4BQjR47U/Pnzba6xWCyKjY1VbGysoqKiFB4erlu3bqV4z9KlS2vx4sVW3xfsld6vlw8ePNDy5cu1fPlyeXt7q27duqpSpcqj+96goCDDY2/fvq3t27dr6dKlmjVrlmJiYgzX5s2bV/369TN19vTq448/fuxnox9//FFLly7VW2+9pVdeeUXFihV77LirV69q+fLlGjNmjA4dOmRzjzJlyujzzz9P8YxZsmTR3Llz1aBBA6s/j0p//Yxep04dNW3aVL1791a9evXk5+f3jzUWi0V//PGHZs2apYkTJ9oM7JL+Cklr06aN3fO2a9dOn3/+uWEQ4sWLF1W7dm29/PLL6tWrl6pVq2b1vyGEhYVp+fLlmj59uk6cOPFYvWDBgmrdurW+/fZbu2dMazw8PDRnzhw9//zzhufuuXPnVKNGDbVq1Uq9e/dWrVq1Hnve4uPjtX37dk2ePFnz5s177PWSM2dOtWvXTuPHj3faYwEAAAAAAAAAAAAAiQAsAAAAAAAAAAAAAC508eJFzZgxQzNmzJAkubm5KSgoSHnz5pW/v798fHx079493b59Wzdv3tSlS5dksVjs2qN9+/b63//+Z/ds7dq10+jRo7Vz507DNWfPntW7776rd999V7lz51a+fPmUKVMmRUVFKTIyUhEREYqLizM8vnnz5nr77bfTTQCWJH3yySeKjo7WV199ZXPd2bNn9b///U//+9//5OHhoZw5cypr1qzKmjWrPD09devWrUd/zAy7Ssrhw4d1+PDhR3/38fFR9uzZFRgYqMDAQHl7eys6Olo3btzQmTNnbH7//u61115Tq1atnDS1cyQVumGm/Pnza+TIkWrbtq1pPQMCAvTpp5+qT58+hmtiY2M1efJkTZ48WX5+fipWrJgCAwOVmJioyMhIhYeH686dO4bHBwYGas6cOfriiy9Mm/shd3d3ffzxx3r99ddtrouLi9PRo0eT7Fe5cmWb9eHDh2vDhg168OCB4ZrVq1dr9erV8vDwUPHixZUtWzZ5e3vr6tWrioiI0LVr1wyPdXNz06RJkxQdHZ3krKlp6tSphrWAgAC1aNHChdP8P29vb7388suaNGmS1fq8efM0cuRIw1Cd9O6FF15Q+/bttWDBAsM1V65c0bBhwzRs2DBlz55dBQsWVObMmRUdHf3ofI6NjTU8PiQkRF9++aWWLFnijIfgcu7u7urVq5c++OCDJNd6eHioR48eLpjqLzdv3tS8efM0b948SX/NmjVrVgUGBipr1qzKmDGjYmJidOfOHZ09e1ZRUVHJ6ps7d25NmDDBmaOnSHh4uKZPn67p06dL+uv5zpYt26PH7O/vr3v37unOnTs6ffp0st8nS5cunaJ72NT07/ssZ/Lz89OHH36o9957z2aArr2elOvlgwcPHs35UObMmR+9LgMDAxUfH6+7d+/q8uXLNsMh/87Dw0OzZs2yGWr3NOncubNCQ0O1dOnSf3w9MjJSn3zyiT755BPlzJlTRYsWVUBAgGJiYnThwgWdO3cuWT/XZs+eXYsXL3b4NV6nTh2NHz/e5n2z9FdQ6MqVK+Xl5aWiRYsqKChIXl5eioqK0p9//pnssLp69epp7NixKZrV3d1dI0aMULNmzQyfo8TERC1cuFALFy6Ut7e3ihcvrqxZs8rd3V1XrlxRRESEzZ8xfXx8NGfOHK1bty5FM6ZFzzzzjCZPnmwzzNVisWjp0qVaunSpfHx8VLx4ceXIkUNubm66fv26Tpw4YTVAVPrrvWvixIkKDQ111kMAAAAAAAAAAAAAgEcIwAIAAAAAAAAAAACQaiwWiyIiIhQREWFKv759+2rs2LFyc3Oz+1g3NzctXrxYlSpV0qVLl5JcHx4enuwPjktSlSpVNH/+/BTNltqGDx+ufPny6Z133klWQFRCQoLdz4+rxMbG6tKlS8n6Hhtp3rx5mgzkSAvy5s2rfv366c0335S/v7/p/Xv37q09e/bYDDV66N69ezp48GCye/v6+urXX39V8eLFHRnRptdee01LlizRihUrnLbHQ+XKldOkSZPUtWvXJNcmJCTo2LFjdvV/GHD2MAAmLbpy5YrN5/qll16Sn5+fCyf6p44dOxoGYN28eVNLly5Vhw4dXDyV60yePFlHjx5N1nl67do1mwEz/1asWDGtWLHC1JCctOD111/XkCFDbAb1SFKzZs2UN29eF031uMTERLu/Z/+WPXt2rVmzRkFBQSZO5hwJCQm6cuWKrly5kuIeRYsW1apVq1L1PSmt8vPz02uvvaZBgwYpf/78pvd/kq+XUVFRioqK0pkzZ1J0vIeHh6ZPn646deqYPFn6NmvWLNWoUcMwGCil7weZMmXSL7/8Ytq9aO/evRUXF6cBAwYoMTHR5tq4uDgdO3bM7te3JNWvX1/Lli2Tt7d3SkdV06ZNNXToUA0ZMiTJtQ8ePFBYWFiye7u7u2vOnDmqVq3aExWAJf11L3n58mUNHDgwybWxsbF2BRZ+8cUXatmyJQFYAAAAAAAAAAAAAFzCPbUHAAAAAAAAAAAAAPBkKFGiRKqFO2XPnl0LFy7Ud999Jw8PjxT3yZMnj1asWKE8efKYON1fgUlr1qxJ16EGb731ln7//XeVLFnSZXv6+vq6bK/kcHd313/+8x8tWbJEXl5eqT1OmuHp6alGjRpp1qxZOnPmjAYOHOiU8KuHfvzxR7Vq1crUnrly5dKGDRtUtWpVU/v+m5ubmxYuXKi2bds6dZ+HunTpouHDh8vd3bxfD/Hy8tLEiRP1n//8x7SezjJr1iyboX0dO3Z04TSPq1mzps0wl+QEvaVnAQEB+vXXXxUcHGxq38qVK2vbtm3KmTOnqX3Tghw5cujll19Ocl2vXr1cMI3zVKhQQbt27VKZMmVSexSXqF+/vnbu3Kl8+fKl9ihpynPPPacRI0bowoULGj9+vFPCrx562q+X1uTMmVMrV65Up06dUnuUNMff31/r1q1TlSpVTOuZJ08ebdq0SZUrVzatpyS9/fbbWrZsmbJkyWJq34f69etnWnjf4MGD9eabb5ow1f/LmDGjli1bpjZt2pjaNy15//339eOPP8rT07x/D/nzzz/XBx98YFo/AAAAAAAAAAAAAEgKAVgAAAAAAAAAAAAATDFz5kxdvnxZP/74oxo3bixvb2+n7xkYGKiPP/5Yp06dMi1Qply5cgoNDVXdunUd7hUQEKCvv/5aP//8szJmzGjCdKkrJCREhw4d0ujRo50WLOLm5qbatWtr2rRp+vPPP5N1TPXq1dWqVSsFBAQ4ZSZJqlq1qnbv3q1Ro0aZ+uHi9KpYsWLq3r27ZsyYocjISK1evVqdOnVySTCYl5eXlixZouHDhzsUePdQq1attHfvXtMDB4z4+flp4cKFWr58udMDtyRp0KBBWrlypbJly+Zwr7Jly2rLli3q2bOnCZM537Rp0wxrQUFBql+/vguneZybm5s6dOhgWN+wYYPOnz/vwolcL3/+/NqzZ49eeeUVh3t5eXlp0KBB2rhxo4KCgkyYLm3q27evzXrBggXVqFEj0/f18/PTW2+9pcKFC5ve+6Fs2bLp+++/1969e1WkSBGn7ZMc+fLl0+uvv67cuXM7bY/8+fNr/vz5WrdunbJnz+60fdKLnDlzqnXr1ho9erROnjypffv26f3331fWrFldsn96uV6+/vrrCgkJcVrwsKenpwYMGKATJ06oYcOGTtnjSZAtWzatX79e/fr1czg4rWXLljpw4IAqVKhg0nT/1KxZMx09elTt27c37XUTHBys9evXa8yYMab+bDR+/HjNmDHDlECtmjVravfu3WrWrJkJk6VtvXr10tatW1W8eHGH+gQFBWnJkiX66KOPTJoMAAAAAAAAAAAAAJKH38oFAAAAAAAAAAAAYJpcuXKpV69e6tWrl+7cuaOtW7dq27Zt2rZtm/bs2aOYmBiH9/D19VWDBg3Upk0btW3bVr6+viZM/k85c+bUunXrtHTpUn311Vfas2ePXccHBgbq9ddf14ABA5Q3b97H6kYfrM+cOXOK5nUlLy8v9e/fX71799aCBQs0c+ZMbd68WfHx8SnuGRgYqDp16qh+/fpq2rSpChYsaNfxISEhWrp0qWJjY7V582atXr1a27dv14EDB/TgwYMUzxUQEKCXXnpJnTp1UoMGDZwWNJBWeHh4yMfHR97e3sqQIYOyZs2qnDlzKigoSHnz5lXJkiUVHBysZ555JtWDOtzc3DRo0CC1atVKX331lebMmWPX99rd3V1NmjTRO++8YzXsLmPGjIbnqRmhW5LUvHlzNW/eXOfOndO6deu0e/dunThxQhcuXND169d17949xcXFmbJXo0aNdPz4cY0bN07jx4/X9evX7Tq+fPny6tevnzp37vxYyEGGDBkMn6sMGTKkeGZH7dq1S2FhYYb19u3bm/a9dETHjh01YsQIq7XExERNmzZNQ4YMcfFUrhUQEKB58+bp9ddf1/Dhw7V+/Xq7jvfz81OnTp307rvvqkSJEo/Vs2bNqrt371r9enpUrVo1FS9e3DAksmfPng6HsVjj7e2tcePGady4cTpy5IhWrlypzZs3a+fOnbp27ZpDvatWrapOnTqpQ4cOypIlizkDOyh79uyaPHmyLBaL9u/fr5UrV2rLli3avXu3bt++neK+Hh4eqlevnjp27Oi0+9i0xN3dXd7e3vLx8ZGPj48yZcqkoKAg5cyZU7lz51bx4sUVHBysUqVK2X3/5wzp4Xr59ttv6+2331ZERIRWrlyp9evXa8eOHTpz5oxds/5bsWLF1LFjR3Xt2tWpQXdPEl9fX40ZM0adO3fW//73Py1btkyJiYnJPr5mzZr6+OOP1aBBAydO+ZdcuXJp/vz5+uijjzRq1CgtXrxYd+7csauHm5ubqlevrjfffFNt27Z1yrVGkrp06aK6detq5MiRmjRpkqKjo+06vkaNGhowYIBat279WM3Pz8/wPHRFkK8zVa5cWWFhYfrhhx/07bff6uzZs8k+NmvWrOrTp4/eeeeddHt/BAAAAAAAAAAAACB9c7NYLJbUHgIAAAAAAAAAAADAk+/Bgwc6dOiQjh8/rj///FN//vmnTp06pZs3b+rOnTu6c+eOoqOj5eHhIW9vb2XKlEk5cuRQ7ty5VaxYMZUsWVKVKlVShQoV5O3t7dLZDxw4oA0bNmjz5s06deqUrl+/rhs3bkj6K7gjR44cKlGihEqXLq369eurevXqLp8xNd28eVNbtmzRnj17dPjwYZ07d06XL19WdHS07t+//+j7mTFjRmXOnFmFCxdWcHCwgoODVbp0aZUtW9YpH6COiYnRvn37dODAAZ06dUqnTp3SmTNndPPmTd29e1fR0dFyd3dXpkyZlClTJgUGBqpkyZIqX768KlSooCpVqsjPz8/0uWC+K1eu6LffftOmTZu0f/9+Xbt2TdevX9f9+/fl7++vTJkyqUiRIgoODlb16tXVsGFDBQUFpfbYqeLevXvatGmTNm3apB07digiIkLXr1/X7du3lSFDBgUEBCh//vyP3nMbNmyo4ODg1B4bT5Hjx49r/fr12rx5s44ePfrompuQkKCAgABlzZpVxYsX1zPPPKO6deuqdu3a8vf3T+2xXeb69evKmzevYmNjH6t5enrq/Pnzyp07t0tnOnHihPbs2aMTJ048ut5GRkbq7t27unv3rh48eKCAgABlzpxZmTJlUoECBVSuXDmVL19elStXVoECBVw6ryMSExMVFhamvXv36uTJk48e79WrVx893oSEBGXMmFGZMmV6dN9Tvnx5lS9fXlWrVlXOnDlT+2EgGdLb9TIyMlI7d+7U0aNHH70uL168qDt37uju3bu6d++e/Pz8Ht33BgUFqWzZsipfvrxCQkJUtmzZVJv9SREREaEVK1Zo69atCgsL0/nz53Xnzh09ePBA/v7+yp07t0qVKqXq1aurWbNmKlmyZKrNev/+fW3cuFHbtm3TH3/8oVOnTunKlSuKjo5WQkKCfH19FRgYqEKFCik4OFhVq1ZV/fr1lS9fPpfOeevWLW3YsEGbNm3S7t27deXKFd24cUN3796Vr6+vMmXKpIIFC6pkyZKqUqWKGjVqlCbC9FJbYmLio2DovXv36sSJE7px44ZiY2Pl5+enLFmyqESJEipbtqwaNmyoOnXqyMfHJ7XHBgAAAAAAAAAAAPAUIwALAAAAAAAAAAAAAAAAANKBb7/9Vu+8847VWuvWrbV48WIXTwQAAAAAAAAAAAAAAAAAKWf+P6ELAAAAAAAAAAAAAAAAADDd5MmTDWu9evVy4SQAAAAAAAAAAAAAAAAA4Dg3i8ViSe0hAAAAAAAAAAAAAAAAAADGtmzZolq1almtFSlSRCdPnpSbm5uLpwIAAAAAAAAAAAAAAACAlHNP7QEAAAAAAAAAAAAAAAAAALb98MMPhrWePXsSfgUAAAAAAAAAAAAAAAAg3XGzWCyW1B4CAAAAAAAAAAAAAAAAAGDd2bNnVbx4ccXHxz9W8/b21oULF5QzZ85UmAwAAAAAAAAAAAAAAAAAUs49tQcAAAAAAAAAAAAAAAAAABj74osvrIZfSVL79u0JvwIAAAAAAAAAAAAAAACQLrlZLBZLag8BAAAAAAAAAAAAAAAAAHjcnj17VLlyZSUmJlqth4aGqnz58q4dCgAAAAAAAAAAAAAAAABM4J7aAwAAAAAAAAAAAAAAAAAAHnf16lV17NjRMPyqWbNmhF8BAAAAAAAAAAAAAAAASLcIwAIAAAAAAAAAAAAAAACANCQuLk4LFixQSEiI/vzzT6tr3N3d9dlnn7l4MgAAAAAAAAAAAAAAAAAwj2dqDwAAAAAAAAAAAAAAAAAAT6ORI0dq3bp1j/6ekJCgmzdv6siRI7p//77NY7t166by5cs7eUIAAAAAAAAAAAAAAAAAcB4CsAAAAAAAAAAAAAAAAAAgFRw6dEhr1qyx+7jcuXNrxIgRTpgIAAAAAAAAAAAAAAAAAFzHPbUHAAAAAAAAAAAAAAAAAAAkj5eXl+bOnats2bKl9igAAAAAAAAAAAAAAAAA4BACsAAAAAAAAAAAAAAAAAAgHfD19dW8efNUu3bt1B4FAAAAAAAAAAAAAAAAABxGABYAAAAAAAAAAAAAAAAApHF169bVgQMH1KZNm9QeBQAAAAAAAAAAAAAAAABM4ZnaAwAAAAAAAAAAAAAAAAAA/p+/v78CAwNVokQJValSRe3bt1eZMmVSeywAAAAAAAAAAAAAAAAAMJWbxWKxpPYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHq4p/YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8fefUdLVV6P496X3hGQqkiJFSWAWEBpdlFRFGxYwC7G8jFGk2CPaIKmmNhiiUqwIDawiwVEEaUrRUFUUJSiNGlS5/dHfvgV51yYuWW4wPOsddcK+5z3PXvmnDkzy7OzX7YvGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAAAAAAAAAAAAAAAAAAAAAAkFMaYAEAAAAAAAAAAAAAAAAAAAAAAJBTGmABAAAAAAAAAAAAAAAAAAAAAACQUxpgAQAA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R8af//zn2HXXXfOd59VXX40rrrgih5kDAACwvdIACwAAAOD/V7Vq1WjUqFF06dIl/v73v8fXX38dF110Ub77//GPf4y1a9fmMEMAqlSpEo0bN44TTzwx/v3vf8esWbPiuOOOS9x3zZo1ceWVV+Y4QwAAAAAAAACArdOIESNi0KBBafFKlSrFiy++GP369Ytq1aplNWflypXjlFNOiaeeeiq++uqruPnmm6NevXpFlTKQhbJly0a9evXioIMOij/84Q8xbdq0+Ne//hXlypVL3P/f//53TJo0KcdZAgAAsL3RAAsAAAAgH5UqVYp///vfcc011yRunzFjRgwcODDHWQHwc7Vr144XXnghevTokbh9zJgxMXjw4NwmBQAAAAAAAACwFXr44YcT43//+9/jqKOOKvT8derUiRtuuCFmzZqVdSMtoOiVKlUqLrvsshg8eHCUKpX+fzdev359XH/99VsgMwAAALYnGmABAAAAbMaf//znaNasWeK2V155JcfZAPBLeXl58dBDD0WjRo0Stz/11FM5zggAAAAAAAAAYOuybt26eOmll9LijRs3jgsvvLBIj1WuXLnEZjvAltG5c+f43e9+l7jtlVdeiWXLluU4IwAAALYn/isRAAAAwGaUKlUqfvvb3yZue/PNNyOVSuU4IwB+qWLFinH11VcnbnvrrbfcqwEAAAAAAAAANmH69OmxYMGCtPgJJ5wQeXl5WyAjIJeuvvrqqFixYlp8zZo1MXz48NwnBAAAwHajzJZOAAAAAHJp8uTJ8dJLL8X7778f06dPjzlz5sTy5cujbNmyUb169WjcuHG0bNkyDjnkkDjuuOOicuXKWR9jwIABMWvWrJ/+vWTJkrR9XnzxxZg9e3ZG81122WVRvXr1jPb9/vvvY/jw4TFu3Lj49NNPfypIWbp0aaxduzZq1KgRNWvWjPr160fbtm2jffv20b59+6hUqVJmL247dsQRRyTGv/vuu1i0aFHUrFmz0MeYOHFivPbaa/HBBx/E9OnT49tvv43ly5dHqVKlonr16tGoUaNo1apVHHroodGlS5cCXZ9bo6VLl8Yrr7wS77zzTnz00Ucxc+bMWLx4caxatSoqVqwYdevWjd133z0OOuigOOGEE6J58+Y5y23OnDnxzDPPxJtvvhmTJ0+O+fPnx6pVq6JWrVpRp06daN26dXTu3DmOOeaY7eZ8bVCSz1tRWb58eQwZMiReffXV+Pjjj+Prr7+OpUuXRrly5aJu3bqxzz77xBFHHBGnn3567LjjjlnNvXbt2rjtttti/fr1G8XbtWsXhx9+eJG9hieeeCKmT5++Uax27drxm9/8psiOkUtdu3aNSy+9NC3+3XffxYwZM2K33XYr1PyTJ0+OF154IUaOHBnTpk2L+fPnx4oVK6JatWqx++67x9133x377bdfRnPNnTs3Bg8eHO+++25MnTo1vvrqq1i2bFmkUqmoWrVqNGzYMJo1axbt27ePrl27Rv369QuV++ZyefLJJ+ONN96IKVOmxHfffRdr166NqlWr/vTb6Ljjjotjjz02ypUrV2x5bC0mTpwYQ4cOjQ8//DBmzJgR33zzTSxbtizWr18fVatWjRo1asTuu+8ezZo1i3bt2sWhhx4a1apVy3e+jz/+OF544YWf/j1ixIi0fWbNmhV9+/bNKL8OHTpEhw4dsn9hAAAAAAAAlAjqm9Q3ba1WrFgRQ4YMiVdeeSUmTpwYX3/9dSxfvjyqV68etWvXjj322CM6d+4cXbp0iQYNGuQ0ty35XHbOnDkxZMiQGDduXEycODHmzp0bP/zwQyxfvjzKly8flSpV+qk2rHHjxtG8efNo06ZNtGrVKsqXL5/ZCywic+fOTYw3adIkp3lkKxf3zVzZ3mo43n///Rg8eHB8+OGHMX369Fi8eHGsW7cudthhh9htt92iffv20b1794zrcX7u2WefjUmTJm0Uq1KlSvzud78rqvRj6tSpMWjQoLT4BRdcEDvttFORHSdXdtxxxzj44IPjzTffTNs2atSoOO644wo1/6JFi+KFF16It956KyZPnhxfffVVLF26NEqXLh0NGzaMXr16xR//+MeM5lq9enUMHTo03nrrrRg3blx88cUXsWjRop/qE+vUqRO77rprtGnTJjp37hxt2rQpVO6bsnbt2njhhRfixRdfjHHjxsWsWbNi+fLlUalSpahTp040a9YsDjvssOjevftWeV0Ute+//z5efvnleP/992PSpEnx1VdfxeLFi+PHH3+MSpUqRbVq1WKXXXaJZs2axb777htHHnlk7Lrrrpuc8+ff34sXL07c5+67744ddthhs/ntsMMOiTWIAABAMUsBAABACRQRaX8dO3Ys8HwvvfRSav/990+cN7+/ypUrp6688srU/PnzszpWx44dszrO5v6+/PLLTR5v2rRpqZtuuinVokWLVF5eXtbz16xZM3XTTTelFi5cWOD3N5VKpYYNG5Y4/5aQXy433nhjoeatUKFC4rzTpk0r8Jzr1q1L9e/fP7XPPvtkdd6qVKmSuuaaa1KLFi3K+Fhz5sxJlS5dOm2uvn37Fjj/X1q9enWqdu3aacfo2bNn1nN9/vnnqfPPPz9VsWLFrN6bAw88MDV06NACv4ZMruWFCxemLr744lS5cuUyyqlu3bqpBx54ILVu3boC5XTjjTcW6T1xg6Rchw0bVqg5t9R5K0pJ9/Gf3z/Wrl2buv3221O1atXK6LWVL18+deWVV6aWLFmSVR5HHXVU2lx77713kb3OH374IVW5cuW0Y1x99dVFdoxN+fLLLxPfr4LcL35u5513Tpz33XffTdz/kUceSdu3UaNGG+3z4Ycfpjp06LDZc/38889vNr9JkyalunXrlng/zu+vVKlSqRNPPDH18ccfF+q9+aUFCxakLrnkklTZsmUzymOnnXZKPfjggxvN0bNnzwKfw/yugc399tmcwuSUnx9//DF17733pvbYY4+s7m0RkSpTpkzqyCOPTD399NOp1atXp82ddA0W5q+wv3cAAAAAAADITNKzGvVNydQ3pWvUqNFmn1UXhaJ4Np80/uf1JWvXrk397W9/S+24444Znc/y5cunrrnmmqzrKH5uc7Udv7QlnstOmDAhdcwxx2RVH/DzvypVqqR69OiReueddwr8PmVr4MCBibncd999OcshG7m8b/5S0mf4kUceKfB8W7qGoyhlUovz3nvvpfbbb7+Mz1v79u1TY8eOzSqPJ598MnGuMWPGFNlrPeuss9Lmb9CgQWrNmjVFdoxNye/7vDCuu+66xDnPO++8fMds7nti0aJFqcsvvzxVqVKlTZ7nE044YbP5LV26NPWnP/0p49q9DX+77757qn///qn169cX6v35pf/+97/51qv98q9s2bKp8847L7VgwYKfxhf2t0m234eZKK7fS++9917q+OOPL9D34q677pq69dZbU99++23i3NnOt6m/4vg9BgAAbF6pAAAAgG3YokWL4sQTT4zjjjsuxowZk9XY5cuXxz/+8Y/Yc889E1doKgmuuOKK2GOPPeKmm26Kjz76KFKpVNZzLFy4MG666abYdddd4+233y6GLLcdNWvWTIwvWLCgQPNNmjQpDjjggOjZs2dMnjw5q7HLli2L22+/PZo1a5a42laSevXqxVFHHZUW/+9//5vVsTfllVdeie+++y4t3qtXr4znWLduXdxyyy3RrFmzeOihh2LlypVZ5fDhhx/GkUceGT179owVK1ZkNTYTo0aNimbNmsW///3vWL16dUZj5s2bFxdeeGGcfvrpsWbNmiLPqSQo6eetqCxYsCA6dOgQ11xzTcaf/VWrVsU//vGPaNWqVUycODHjY1188cVpsSlTpsT777+f8Ryb8sQTT8Ty5cs3iuXl5cUFF1xQJPNvKbVr106Mf//99wWa7+abb462bdsmrv6ajfXr18cNN9wQrVq1imeffTbWrVuX1djnn38+9t1337juuuti/fr1hcolImL06NHRsmXLuPfeezO+L33zzTdxwQUXRNeuXbP+jG/Nhg0bFvvss09ccsklMW3atKzHr127NoYOHRonn3xyPPHEE8WQIQAAAAAAAFsz9U2bp76p5Jo7d260a9currrqqoyfy69atSpuv/32OOigg2LOnDnFnOGWcd1118V+++0Xr7zySlb1AT+3bNmyeOKJJ+Jf//pXEWeXvzJlyiTGv/nmm5zlkIlt7b65vdVw3HbbbdGhQ4cYO3ZsxmPefffdaNOmTfztb3/LeMxJJ50UderUSYs/8MADGc+xKYsXL45nnnkmLX7OOefk+1naGhR17dWHH34YzZo1i3/961+Frgt85513Yp999okbbrgh67rd6dOnR8+ePaNDhw4xa9asQuUR8b97Sbdu3eLss8+O2bNnZzRmzZo18Z///Cf23nvvGDduXKFz2Fp8//33ceqpp0a7du3ihRdeKND34owZM+Laa6+NHj16FEOGAABASaABFgAAANusWbNmxQEHHBCDBw8u1DwLFy6MU089NW655ZaiSawIzZs3r8jmWrhwYRx11FHx0EMPFdmc25r8Hr6XLVs267meeeaZaNOmTaEfYs+ZMyeOPvroePTRRzPaP6kR1fTp02PUqFGFymOD/v37p8WaNGkSHTt2zGj8Dz/8EEcffXTccMMNsWrVqkLl8t///jc6duwYixYtKtQ8P/fWW2/FoYceGnPnzi3Q+EGDBm2TD+BL+nkrKkuWLIlOnToVuAHVF198EZ06dYoPPvggo/27dOkSO++8c1r8wQcfLNDxfympmKtTp06x2267Fcn8W0qFChUS4wUp9rv88svjpptuKnTDqVWrVsUJJ5wQt9xyS6xdu7bA86xduzZuvfXWOP744wv1WRsxYkQcdthh8fXXXxdo/JAhQ+K4447bZhv6/Vy/fv3i8MMPjxkzZhTJfAUp5gcAAAAAAGDbpb4pO+qbSpbZs2dH27ZtM66D+KUpU6ZE+/btY8mSJUWc2ZZ1ySWXxK233lrgxldb0o477pgYf/3113OcSf62tfvm9lbDccMNN8S1115boFqctWvXxu9+97v4wx/+kNH+5cqVi3PPPTct/uSTT8ayZcuyPv4vDRgwIK0eqVSpUnH++ecXeu4tqShrr0aOHBmHHHJIkTQ77N+/fxx++OGFbl713nvvxQEHHBDjx48v8BzLli2LI444Ip577rkCjZ87d24ccsghWS2mubWaMGFCtGrVqsgaDqq9AgCAbdfW20oaAAAANmHhwoVx6KGHxhdffJHvPvvuu2/8+te/jgYNGsTy5ctj9uzZ8fbbb+fbdOWGG26ISpUqxVVXXVVcaReZWrVqRcuWLWOXXXaJHXbYIapVqxYrV66MRYsWxeTJk2PixImJD6PXrl0bvXv3jn322SfatGmzBTIvuX788cd8i61q1qyZ1VwDBw6MM888M98ip4oVK0abNm1it912i1q1akUqlYp58+bFqFGj4tNPP03bf926dXHeeedF3bp1o3Pnzps89vHHHx81a9aMhQsXbhTv379/tG3bNqvX8UsLFiyIl19+OS1+9tlnR15e3mbHL1u2LI488sj48MMP892nSZMm0bZt26hTp05Uq1YtFi5cGF9++WUMHz48li9fnrb/2LFj4/jjj4/hw4dH6dKls3tBvzBlypTo2rVr/PjjjxvF99hjjzjwwAOjTp06Ub58+Zg/f36MHDkypk6dmjjPM888E0888cQ20wirpJ+3onTWWWfF5MmTN4qVL18+DjnkkGjSpEnUqlUr5s+fH9OnT49333038TO+ZMmS6NKlS4wZMyYaN268yeOVLl06zj///Ljppps2ig8aNCj++c9/RrVq1Qr8WsaPH59YxHPhhRcWeM6S4pf3tw2yvVc/8MADcdddd6XFmzdvHq1atYq6detGhQoV4vvvv48JEybE6NGj853rtNNOi5deeinf7Y0aNYqDDz44dtppp8jLy4tvvvkmRo0ale/vmJdffjlOOeWUGDx4cEb315/77LPP4oQTTsi3kG/DNd20adOoWbNmzJs3L6ZNmxbvvffeRsWHb7/9dvzud7/L6thbmz59+sSf//znTe7TrFmzaNGiRdSpUyeqV68eS5YsiQULFsSkSZNiypQphWp4BgAAAAAAwLZNfZP6pq3Z8uXL4+ijj46ZM2duFK9Tp0507NgxGjRoENWrV//p+enIkSMT6yg+//zzuPrqqxMX8doaPfHEE3Hfffflu71p06bRokWLaNSoUVSpUiVKlSoVS5YsiUWLFsWnn34aU6ZMSaylyZVdd901MT5mzJh44YUX4vjjj89xRhvb1u6b21sNx3PPPZfYcOzXv/51tGrVKnbaaadYsWLFT+csvxqgfv36RcOGDeM3v/nNZo954YUXxu23377R+7Vs2bIYOHBgoRtVJS1ieMQRR2y2JqykK6raqzlz5sRll12W9l1eq1at6NSpUzRo0CBq1qwZy5cvj+nTp8c777yT71zPPfdcnHvuufk2TqtYsWIceuih0bhx46hRo0a+n5UN5s+fH0cccUSMGjUqdt9996xeVyqVitNPP32Ti87+/Jpevnx5fP311zFs2LCN7kNLly6N448/PrE+bVsxZsyYOOKIIzbZ6LJGjRrRrl27qF+/ftSpUydWr179U33p2LFjt7kmmQAAwCakAAAAoASKiLS/jh07Zjz+lFNOSZwjIlInn3xyatq0aYnjVq1alXr88cdTdevWTRxbtmzZ1Lhx47J6LY0aNUqb55FHHslqjvyceuqpqYhIlSlTJnX44Yen7rvvvtRXX3212XErVqxIPfLII6nddtst8XU2btw4tWzZsqxyGTZsWOJcW0J+udx4440FnvPtt99OnLNy5cqpdevWZTzPBx98kCpfvnziXPvss0/qscceS61atSrf8VOnTk2deOKJiePr1q2bmj9//mZzuOSSS9LG7rDDDqkff/wx49eR5K677kqbNy8vL/X5559vduz69etTXbt2TXxd5cuXT1188cWp6dOn5zv+xx9/TP373/9O1alTJ3GOm2++OePXkd/106xZs41eV48ePfK9l6RSqdSYMWNSrVu3TpyrTp06Wb3fN954Y6HuiflJym3YsGEZjy9J560odezYcZPnf8Pru+2221KLFi1KnGPOnDmpK6+8MlWqVKnE13bEEUdklMvs2bNTZcqUSRt/zz33FOo1XnTRRWlz7rjjjpu8/xS1L7/8MvG96dmzZ4HnXLVqVapixYqJ844dOzZxzCOPPJK2b/Xq1VNVqlT56d+lSpVKnX/++amZM2fme+yZM2emvvjii7T4Pffck5hPRKRatmyZGj58eGr9+vWJc7777rv53kciIvWvf/0rq/dn/fr1qQ4dOuT7md3UNf3NN9+kLr/88lReXt5G98K99tqrwOcwv2vgyy+/zOp1/VLPnj0LfV098MAD+b7vFStWTF177bWbzXPFihWpwYMHp0499dSfrstMfgMW1z0fAAAAAACAopX0LEl9Uzr1TcmS3vNGjRoV+XGK4tl80vhf1lG0adMmNWzYsHyff3/zzTep0047LXGuvLy8rK/ZpNqObGrDiuO57OrVq1P169fP9/2eOnXqZudYt25daty4cakbbrghtffee6ciItWtW7dC5ZWt3XffPfE1VK1aNfXiiy/mNJdf2pbumyWthqMoJdXi1KpVK61GrHPnzqnJkycnzrF69erUwIEDU/Xq1cu3dmPGjBkZ5XP00Uenjd9///0L9RpHjRqVmNezzz5bqHmzlXQvLOz32nnnnZc456WXXprvmKT9d9ppp43+3aJFi9TQoUPzrbddtWpVauTIkWnx2bNnp2rUqJF4jMqVK6fuvPPO1A8//JA45zfffJO64oorNvqs/PzvwAMPTK1duzar9+ehhx7K9z60qWt6w33ol5+DDff6gp7Dwn4fJimK30tff/11vvfciEgdeeSRqXfeeWeT7//69etTEydOTP3hD39INW7cOOPv6uKqSQMAAIpXqQAAAIBtzJNPPhmDBg1Ki5cqVSoefvjhGDRoUL4r9pQrVy569OgRkydPjrZt26ZtX7NmTZx11lnx448/FnneBVG1atW48sor48svv4w33ngjLr744mjYsOFmx1WsWDF69eoVH330UZxzzjlp22fOnBn9+/cvjpS3Wk888URivE2bNlGqVGb/iWXFihXRo0ePWLVqVdq23/3udzFhwoQ444wzoly5cvnOsddee8Vzzz0X99xzT9px582bFxdffPFm8+jVq1dabPHixTFkyJDNv4hNSLpm2rdvH02bNt3s2Pvvvz8GDx6cFm/atGm8//77cd9998Vuu+2W7/jy5cvHRRddFBMnToxWrVqlbb/llltiwoQJm81jU6ZOnRoR//v8DB48OB5//PFNrv613377xTvvvBPt2rVL2zZ//vzE17u12RrOW1HZcP4j/rda6ZgxY+KPf/xj7LDDDon716tXL/7+97/H0KFDo2LFimnb33jjjXjsscc2e9yddtopunTpkhZPWkEwU8uXL0+8p/Xs2XOT95+twYcffpi4AnCpUqUyuhdtsGTJkp9W16xcuXIMHTo0HnzwwWjUqFG+Yxo1ahRNmjTZKDZjxoy45pprEve/8MILY/To0dGxY8fIy8tL3Kddu3bxwQcfxCWXXJK4/fe//31MmzYtk5cUEREPP/xwjBgxIi2eyTXdoEGD+Oc//xmvvPJKlC9fPiIiUqlUfPLJJxkff2sxffr0uOKKKxK3tWnTJqZPnx59+/bd7IqdFStWjBNOOCEGDhwYM2fOjKuvvjqqVKlSDBkDAAAAAACwtVHfpL5pa/fzOoo+ffrEqFGjolOnTvk+/27QoEE8+eSTceWVV6ZtS6VShaqDKCmGDRsWc+bMSYvfc8898eijj8Zee+212TlKlSoV++67b9x8880xefLkGDp0aLRv37440s3XKaeckhhfunRpdOnSJTp37hyvvPJKrFmzJqd5bWv3ze2thmPBggUxf/78n/7dr1+/eOWVV2LvvfdO3L9s2bJx6qmnxuTJk6NNmzZp21euXJlRrWRERO/evdNiY8aMiY8++ijD7NMl3bPq1asXxx9/fIHnLCmGDx+eGN91112zmuebb7756X9fcsklMW7cuDjiiCPyrbctV65cHHTQQWnx8847LxYtWpQWb9q0aXz88cdxxRVXRNWqVRPnbNCgQdx555351vB9+OGHcdttt2X6kuK7777LtxZsc9f0z+9D++2330/xKVOmZHz8rUUqlYpevXrFvHnz0rZVrlw5nn/++Xj99dejQ4cOUbp06XznycvLixYtWsSf//znmDFjRjz22GPRrFmz4kwdAADYgjTAAgAAYJuybt26+P3vf5+47Z///GdiMVSSHXfcMV566aXEopOpU6fGf/7zn0LlWVTuv//++Pvf/x4777xzgcZXrFgx/vOf/0T37t3Ttt1zzz2FTW+bMWnSpHwL5nr06JHxPH/+85/jiy++SIvfdtttcccdd0SZMmUynuuSSy6Jv/3tb2nx559/frOFLPvvv3/iQ/ZHH3004+P/0tSpU2Ps2LFp8aRmW7+0cOHC+MMf/pAW32WXXWLkyJGx7777ZpxH/fr14+23305rSrJ27dro169fxvPkJy8vL55//vmMC1UqV64cAwYMSCye2NqLMLem81aUKlWqFC+//HI0b948o/0PO+ywePLJJxMLPK+55pqMigGTirUmTpyY+JnLxMCBA2Pp0qVp8QsuuKBA85Uk9957b2K8VatWUaNGjaznK1WqVLz44otx2GGHFSifG264IZYvX54WP/nkk+O+++6LsmXLbnaOMmXKxN133x2nn3562raVK1fGddddl1Euq1evjj/+8Y9p8Wyv6aOPPjoef/zxfIuWtwWXX355YiO1ww47LN58880C/e6qU6dO3H777Ym/uQAAAAAAANi+qG/Kjvqmkq1Pnz5x6623Zrz/7bffnvh8euDAgbF69eqiTC3n3njjjbRY+/bt8130KhNHHHFEvgs4FZcrr7wy32YyERGvvfZaHHvssVG7du3o3r17/P3vf49Ro0YVa/Oobe2+ub3XcPz+97/Pt4nQL9WqVSteeumlxOZmb775Zrz88subnePYY49NbLxY0MZ7P/zwQzz11FNp8V69emVVA1oSvf766/H5558nbito/dQ555wT99xzzyYbHeVn6NCh8frrr6fF69SpE0OHDs14QcTDDz88Bg0alJjDbbfdFgsWLMhonr59+8bChQvT4tlc07Vr145XXnklfvWrX2W0/9boqaeeirfeeistXr169Xjrrbeia9euWc9ZunTpOOOMM/KtDwQAALZ+GmABAACwTXnhhRfi66+/TosfddRRcemll2Y1V82aNeORRx5JLA4oKcVT+a2ElI28vLy46667okqVKhvFp06dGuPHjy/0/Fu7GTNmRJcuXRKb1DRq1CjjBlgLFy6MO++8My3erVu3xGKWTPzf//1fHH744RvFUqlU/Otf/9rs2J49e6bFhg4dGnPnzi1QLknNnCpXrhwnn3zyZsf+7W9/iyVLlmwUK126dAwZMiTq1auXdS477LBDDBgwIC3+7LPPxuzZs7Oe7+f+7//+L4466qisxjRu3DjOPvvstPjIkSMjlUoVKp8taWs6b0WpT58+G63AlokTTjgh8RqYM2dOvPjii5sdf8QRRyQWvDzwwANZ5bFBUvFWhw4dYo899ijQfCXF8OHD4+mnn07cduSRRxZozt/85jdxyCGHFGjsvHnz4tlnn02L16lTJx588MGsvsPz8vLi/vvvT/xsDR48eKMVE/Pz/PPPx3fffZcWL8g13a1btzjjjDOyGrO1GDVqVGLhXL169WLQoEFRuXLlLZAVAAAAAAAA2xL1TdlT31Qy7b///nHzzTdnNaZMmTLRp0+ftPjixYtj0qRJRZXaFpH0uT722GO3QCaFU7Nmzbj77rs3u9+SJUvi2WefjauuuioOOuigqFatWrRu3Tp69+4dAwYMiK+++qrIctrW7pvbcw3HXnvtFX379s1qTK1ateL+++9P3JZf/OdKly4d559/flr88ccfT1wgbXOeeOKJtAXx8vLytvrFB1esWBFXX3114rYGDRrEPvvsk/WcO+20U2LdbKby+0zeeeedWTeQOu644+Kiiy5Ki//444/x0EMPbXb8jz/+mFjfWJBrunbt2hldu1ujVCoVN910U+K2e++9Nw488MDcJgQAAGw1NMACAABgm5L0sLNUqVIFfoB64IEHxplnnpkW/+STT+Ltt98u0JwlUb169aJLly5p8Q8++GALZFMyLFq0KO64447Yd999Y9asWWnbS5UqFffee29UqFAho/kGDBgQy5Yt2yhWrly5uOOOOwqV5/XXX594rKSGXT935plnpq1mtW7dunjssceyziG/cSeddFJa4eEvrVmzJrF44Nxzz42WLVtmncsG7dq1S2tas3bt2sQChExVrFgxrr322gKNPe2009JiP/zwQ76rpZV0W9N5K0o77bRTXHXVVQUa++c//znxfpHJSoJ5eXmJxTdPPvlk2n1lcz7++OP48MMP0+IXXnhhVvOUNKNHj46TTz451q1bl7atQoUKBVpNtVy5cnHjjTcWOKcHH3wwcXXavn37RvXq1bOer2rVqomr5q5duzajgqikz2xhrul+/fpF+fLlCzS2JLvvvvsS4/fcc0/UrFkzx9kAAAAAAACwLVLfVDDqm0qem266KcqUKZP1uOOPPz4qVqyYFp8wYUJRpLXFLFy4MC1Wo0aNLZBJ4Z199tlZNzdbs2ZNjB8/Pv7973/H2WefHY0aNYrGjRvH5ZdfXuhGddvafXN7ruHo169fge4bnTp1iuOPPz4t/sorr2S0cNz555+fdtzFixfHoEGDss4lqd7rsMMOi6ZNm2Y9V0mxdOnSOOWUU/JtRHjllVcWaN4//OEPUa1atQKNnTVrVrz00ktp8YMOOihOP/30As15yy23xA477JAWv++++2L9+vWbHPvss8/GokWL0uIFvaYPO+ywOO6447IeV9INGzYspk2blhbv0qVLxgsOAwAA2ycNsAAAANhmLFu2LIYPH54WP+SQQ2LPPfcs8Ly9e/dOjL/44osFnrMk+mXTmYhIbJKyNRsxYkT07ds3378//OEPcdFFF0WbNm2iXr16cc0118TSpUvT5snLy4u///3vccwxx2R87CeeeCItdsIJJ0STJk0K9Zo6dOgQjRs33ii2fPnyzRaE1a9fP4488si0eP/+/bPO4c0334xvv/02Ld6rV6+Mxs6fPz8t/n//939Z5/FLPXv2TIu9++67BZ7v5JNPjlq1ahVo7H777Ze4auCUKVMKnM+WtDWdt6J05plnZtz07pfq16+fuKrn0KFDM2pidc4556QVqi1btiwGDhyYVR5JBVg1a9aM7t27ZzVPSTFv3rzo06dPtG/fPr7//vvEfXr37h0777xz1nOfcMIJBf7MRyT/TqhatWpiAWWmevTokdg8a3O/SX744YfEAs3CXNMNGjTYKleq3ZTVq1fH888/nxbfdddd48QTT9wCGQEAAAAAALCtUd9UONtDfdPWonHjxtG5c+cCja1UqVLss88+afGttY5mg6SFAqdOnboFMikaN9xwQzzzzDMFWuRrg1mzZsVdd90VrVu3jlatWsWrr76a9Rzb2n1ze67hyK9+KlMXXHBBWmzdunUxZMiQzY5t0KBBYgOtTBYv/Llx48YlNnTbWhcfXLduXQwcODBat24dL7/8cuI+DRo0iEsvvTTrucuXLx9nnHFGgXN75ZVXEptS5ffZzUTNmjXjlFNOSYvPmjUr3+ZfGyTVFBX2mt5ar5tNeeqppxLj11xzTY4zAQAAtjbZtxYGAACAEmrMmDGxbt26tHhhHqBGRLRt2zZ+9atfxeeff75RfFtbPbB+/fppsa29qOiXhg0bFsOGDSvUHLVq1Yr7778/unXrlvGY77//PsaOHZsWL6qGMx06dIiZM2duFHv//ffjgAMO2OS4Xr16pRUVTZ48OcaPHx/77rtvxsdPaprVqFGjxKLDX3rttdfSYnvttVc0a9Ys4+Pnp0OHDmmxDz74IFKpVGIzqs059NBDC5xLlSpVomHDhvHVV19tFE9a+XFrsDWdt6J06qmnFmp8jx494tlnn90otn79+hg3blx07Nhxk2N33HHH6NatW1ozvQceeCDOP//8jI6/cuXKeOyxx9LiZ599dolaBfLjjz+Ovn375rt9+fLlsWDBghg/fnxMnDgx8bt/g/322y9uueWWAuVRmOKkVatWxcSJE9PiJ554YuIqtpmqUKFCdOvWLR5++OGN4pMmTYoVK1ZEpUqVEseNHTs2sSCsKK7p5557rlBzlCQjR45MbEh34YUXbvH7DwAAAAAAANsG9U2Fsz3UN20tOnXqVKjnqHvttVeMGTNmo9jWWkezQaNGjdJijzzySFx++eXRtGnTLZBR4XXr1i0OOeSQ6NevX9x9992xYsWKAs81ceLEOOaYY+Koo46K/v37R926dTMat63dN7fnGo6TTz45SpUqVeDxRx11VNSsWTPtXvHLe0l+Lr744rT3aOTIkTF16tSM694eeOCBtFidOnWia9euGY3PlU3VXq1duzYWLlwYn3/+eYwcOTKWLFmS777ly5ePJ598skDN2dq2bRs1atTIetwGSZ/FSpUqFfq9PvPMMxPP4wcffBAtWrTId9zo0aPTYoW9po8++uioUaNGLFq0qMBzlDRJtaXNmjWLdu3abYFsAACArYkGWAAAAGwz8is8SGqmkq0OHTqkFTpMmDAhVq9eHeXKlSv0/MVhxYoVMXny5Jg1a1YsXbo0li5dGsuXL08snoiI+PLLL9Ni29JD1cJq3Lhx9OzZM6688sqsV7X78MMPE9/3gw46qEhy22233dJiSauM/dIJJ5yQ+PC8f//+GTfA+uGHH2Lw4MFp8bPPPjujIrf3338/LVZU70uTJk2iTJkysXbt2p9iixYtii+//LJARWX7779/ofKpUaNGWgOsTRWPlGRb03krKpUrV46WLVsWao783qPRo0dvtgFWxP+KsH7ZAGvMmDHx0UcfbbL4ZoOnn346Fi9enBZPWh1xS5owYUJMmDCh0PPsvvvu8fLLL0flypULND6bRoC/NH78+Fi9enVavCh+k3Ts2DGtAda6detizJgx+V5HSYV+RXFNH3zwwYUaX9IkFapFRBx++OE5zgQAAAAAAIBtlfqmjalv2noVRR3NL22tdTQbdOrUKe68886NYj/88EO0a9cu7rzzzujevXuhGqVsKTVr1ox+/fpFnz594plnnonHH3883n333Y1qe7Lx+uuvx/777x8vvPBCRnUL29p9c3uu4ShsjmXLlo39998/Xn/99Y3i+dV7/NLhhx8eu+66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azhyobA5rlmzJrHmraC1V/vuu2/a+UilUvGf//wnIv5Xg/Lf//43bdzZZ59drNcI/5P02R83blysWLGiUPOOHj06fvzxx4yOt0H9+vVj5513TosX1zWdjZJUW1q7du1o0qRJWrwk1F5FlIzveQAAIH8aYAEAALDN2H///aN06dJp8SeeeKJQ844ePfqnZiI/l19To1+qUqVKWmzlypWFymnBggVpsRo1ahR4vjFjxsS0adMKk9J24corr0x8WPzEE0/E9OnT8x236667JjaHeu6554o0v8I68MADY6+99kqL/7zh1ezZs+Ptt99O2yepeVYmjjnmmLTY999/XyQFStuSmjVrpsW++uqrTa5+uDmFacC2vZ63p556qlDjk76PSpUqFfvtt1+B5mvWrFl06NAhLb5h5cGkFQgPOOCA7b6INRfKly+fWKz83HPPJRZQZWrVqlXxzDPPpMWbN28elStXznfcfvvtF3l5eWnx4rims1G6dOnE79VPPvmkwHO+//77BV71tm3bton5PPDAAzktgCqO344AAAAAAACUDOqb1Ddt0KFDh8TnuM8++2yRHWPmzJkxduzYtPg+++wTtWrVKrLjbI1K8nPZHj16JMaTmsptbWbPnp0YT2oss0FJvW8WVEmt4ciFZ555JtavX1/g8a+//npiY5+kpmKZSlqA8JFHHom1a9fGs88+m3g8iw/mRtJncfny5TFkyJBCzfvYY49lfLyfS7rOCntNv/baa7Fo0aICj49Iri0tTO1VKpWKd955p8Djjz766LTYlClTctqkL+k7PqLkfM8DAADJNMACAABgm1GlSpXo1KlTWvytt96KGTNmFHje++67LzHepUuXjMZXrVo1LVbY1XWSmlwkFY1l6p///Gdh0tlu1KhRIy6//PK0+Lp16+JPf/rTJscmFSYNHz48Ro0aVWT5FYWePXumxYYMGRJLliyJiIgBAwakPbCvWLFinHrqqQU6XpcuXRI/I7feemuB5ttW7b333mmxVCoVY8aMKdB833//fQwaNKjA+Wyv5+2xxx4rcPOiOXPmxMsvv5wWP/zwwxPfy0wlFWH1798/pk2blrhymgKs3En6nfDDDz/Ek08+WeA5Bw4cmFj0tLnfJNWrV49DDjkkLV6Ya/rbb79NvKazlXR/+/DDDws837333lvgsWXLlo1u3bqlxT/77LNCF89lozh+OwIAAAAAAFAyqG9S37RB3bp1ExfM+vzzzwv1zPTn8muIk7Tw2famJD+Xza8ZVEEXgypJXnvttcR4Uu3ABiX1vllQJbmGo7gVNs+HHnooLVa6dOk44YQTCjznaaedFjvssMNGsQ15PvDAA2n7t2vXLnGRUYreMcccE6VKpf/fn++///4Cz7l48eIYOHBgWrxRo0bRvHnzTY7t2rVrWqyw13TSApfZSrp/Tpo0KVasWFGg+V555ZWYNWtWgfM57bTTEuN33HFHgefMVn71mCXlex4AAEimARYAAADblN/85jdpsXXr1sWVV15ZoPnGjh0b//3vf9Pie+21Vxx66KEZzVGvXr20WGFXI6xdu3Za7L333ivQXG+99dZWsfpXSfHb3/42qlWrlhZ/8sknN3leL7rooihfvnxa/NJLLy1RqwqdddZZaUUDP/74408P/fv37582pmvXronvSSaqVq0avXr1Sou/8cYbhV7Vbluy2267Jb7HBX2PbrvttgIXTEVsv+ftm2++ib/97W8FGtunT5/E9/yCCy4oVE7dunVL+06YP39+nHrqqZFKpTaKV61aNd8CE4reBRdcEOXKlUuLX3vttbFs2bKs51u2bFn06dMnLV6mTJm46KKLNjv+/PPPT4sV5pr+/e9/XyTFta1bt06LDRkypEBzjx8/Pp5//vlC5dO7d+/E+CWXXFLoFRczlfTbcdasWYW6bwMAAAAAAFByqG/K3rZa35S0UF1ExDXXXFPouefNm5dvs4mkmo/tTUl+Ljtv3rzEeIMGDYr92HPnzo1JkyYVy9xvvfVW4tzlypWLdu3abXJsSbxvFkZJreHIhd///vexdu3arMe98847iYuXHX300fk2jctExYoVE+/FN954Y7zzzjtp8cLWepG5Ro0axXHHHZcWf+edd+LZZ58t0Jw33HBDYv1P7969E5tt/Vz37t3TmqVFFPyafvvtt+PFF1/MetwvJdVerVy5skBzr127Nm6++eZC5dOhQ4fEplxDhgxJbD5WHMqWLRs1a9ZMixf2ty0AAFC8NMACAABgm3L88cdHw4YN0+IvvfRS1ivlLF68OHr16hXr169P25ZUUJGfFi1apMXeeOONWL16dVb5/Ny+++6bFnvssceyXiXxq6++il69eqU1SSF/NWrUiMsvvzwtvn79+vjTn/6U77j69evHZZddlhYfP3589OzZs0APwJOsWbMmJk6cWODxDRo0iCOOOCIt3r9///jwww8THwAXtiiuT58+UaVKlbT4OeecEx988EGh5v65zz77LBYvXlxk8+VSXl5eYqHXf//736xX23rttdfizjvvLHRO2+t5u+2222LcuHFZjXnhhRcSm8fVrVu3UCsQRvyvCPDcc89Ni3/00UdpsR49eiSusEvxqFu3bnTr1i0tPmfOnOjdu3dW372pVCp69+4d3377bdq2rl27xk477bTZOU466aTYcccd0+IFuaafe+65ePzxx7Mak58OHTqkxRYvXhz/+te/sppn6dKl0aNHj1i3bl2h8tl///0Ti+fmzJkTp512WoFXR8xG0m/HtWvXxtChQ4v92AAAAAAAABQ/9U3qmzbo2bNn4nPcESNGFKq2Y+3atXHRRRcl1lscc8wxsddeexV47m1FcTyXHTx4cJFcp4MGDUqL5eXlxW677VbouTdn9uzZ0aJFizjllFNi6tSpRTbv3Llz820cdOyxx2528cWSeN8sjJJaw5ELn3zySVx33XVZjVmwYEFceOGFidvyi2fj4osvTosl1V7VqFEjTj755EIfj8zl95m87LLL4quvvspqrtdeey3uvffetHiFChUSm9L9UsWKFePMM89Mixfkmv7uu++K5NqNiGjevHliY67bbrst6zqqG264IcaMGVPonPJronXJJZfE2LFjCz1/JpK+519++eWcHBsAACgYDbAAAADYppQuXTr69euXuK13797x5JNPZjTPwoULo0uXLjFlypS0bc2aNYvzzjsv45wOPPDAtNi8efPi0ksvLfCqW0ceeWRabMmSJXH66adnXHj2ySefRPv27WP27NkFymF79tvf/jax6GbgwIHxySef5DvuhhtuiKZNm6bFn3766ejUqVOhzsWiRYvir3/9azRt2jT+8pe/FHieiOSGVqNGjYrrr78+Lb7zzjvH4YcfXqjj1atXL/Fzu3LlyujUqVP8+9//LtT87733Xpx44omx5557xty5cws115aUtNLcihUr4qyzzsq4IcvgwYPjpJNOKpJiu+31vK1YsSKOOeaYmDx5ckb7v/3223Haaaclvuf9+vWLsmXLFjqniy66KPLy8ja7X1EVzZC5P/3pT1GpUqW0+GOPPRZXXHFFRkVG69atiyuuuCIee+yxtG0VK1aMvn37ZpRL+fLl49Zbb02LZ3tNv/7663HGGWcUWXH58ccfHzVq1EiL33zzzRk305s7d2507NixyFbpu/POOxPP29ChQ+PII49MbES2OfPmzYtrrrkmnnnmmc3uu8suuySuNnzVVVfF9OnTsz42AAAAAAAAJYv6JvVNG1SpUiVuvPHGxG1XXnll/PnPf8762eyyZcuiW7duMWTIkLRtZcqUidtuu61AuW5riuO57Iknnhh77bVXPPTQQ7F8+fICzTFmzJjEa+Lggw9OzLc4pFKpePrpp6N58+Zx4oknxgsvvBBr1qwp8Hzjx4+Pdu3axZdffpm4/Q9/+MNm5yiJ983CKKk1HLnSr1+/uOOOOzLad8M5S/pcHnLIIXH88ccXOp8999wzOnbsuNn9zjzzzKhYsWKhj0fmjjzyyMTfE3PmzIkjjzwy4yZYw4YNi+7duyfWavXp0ydq1aqV0TzXXXddYp1TNtf0999/H8cee2x8/vnnGe2/OeXKlYvTTz89Lf7xxx/H73//+4znufbaa+PPf/5zkeTUrVu3OProo9PiixYtikMPPTReeumlrOdct25dPPbYY3HJJZdktH/Sb9vBgwfHww8/nPWxAQCA3NAACwAAgG3O6aefnrjK0rp166JHjx5x5pln5vvgcPXq1TFw4MDYe++947333kvbXrZs2RgwYEBUqFAh43wOO+ywqF+/flr8wQcfjPr168dJJ50UV199ddx8883Rt2/ftL8lS5akjT3llFMSVwB74403ok2bNjFy5Mh885k7d2788Y9/jJYtW2708He//fbL+DVt72rUqBGXXXZZWnz9+vXxpz/9Kd9xVatWjYEDByY21Rg5cmTssccecemll2a8et6XX34ZDz30UHTu3Dnq1q0bV199dZEU/HXt2jVxRag33ngjLXbWWWdFqVKF/09Ml1xySZxyyilp8VWrVkXv3r2jVatW8cQTT8SyZcs2O9fy5ctjxIgRcdVVV0Xjxo2jffv2MXjw4MRV+7YmJ5xwQtStWzct/u6770anTp02ufrf9OnT44wzzoiTTjopVq5cGRH/K9oqrO3pvP38/Zo/f37st99+8Ze//CVxtdSI/xUCX3XVVXHEEUf89J7/3KGHHprY1KwgmjRpEkcdddQm92ndunXi6roUr1133TXf4qa77rprs9/Z77//frRt2zbuuuuuxO39+vWLPfbYI+N8Lrjggjj44IPT4j+/ppN+d0T8r3DsiiuuiM6dO8ePP/4YEf9bYbawKwOXL18+zj777LT48uXL46ijjor77rsv30Zhy5Yti3/84x+x9957x4QJEyIiolSpUlm9J0l+9atfxT333JO4beTIkbHbbrvFDTfcELNmzdrkPCtXrowhQ4bEaaedFo0bN4477rgjo/thRCSuGDljxozYa6+9on379vGb3/wmbrjhhsTfjiNGjMjoGAAAAAAAAGw56pvUN21wySWXRKdOnRK39enTJ1q2bBnPPffcZhdH++677+Kf//xn/OpXv4oXXnghcZ/rrrsuWrRoUdiUtxnF8Vx22rRpccEFF0SdOnXi1FNPjWeeeSbmzZu32VzmzZsXN9xwQ3To0CGxedbll1+e/QsspPXr18fgwYPjhBNOiJ122imuuOKKeP311zNaqG/9+vUxfPjw6NmzZ+y///753s8uvPDCOOCAAzLKp6TdNwurJNZwFKdatWpFnTp1fvr3NddcE8cee2xiM7KIiDVr1sSgQYNin332iVGjRqVtr1ChQtx///1Fll/v3r03u4/FB7eMhx9+OLHp1LRp06J58+Zx77335tt0cM6cOfHb3/42Dj/88MR9DjjggOjTp0/GudStWzffZnwbrun86n9Xr14dTz75ZOyzzz4xZsyYn+J77713xsfPzwUXXJC4gObf/va3OPPMM2POnDmJ41KpVAwbNizatm27UYPMoqgt/c9//pP423Lp0qXRpUuX6Ny5c7z33nubXEAylUrFRx99FH369Ilf/epXcdZZZ2VcX530HZ9KpeK8886Lpk2bxllnnRV//OMf45Zbbkn7jr/77rszf6EAAECRyUttbS2+AQAA2C4kPYjr2LFjDB8+PKPxCxYsiAMOOCC++OKLfPfZf//9o3nz5lG/fv1YsWJFfP311/H222/HwoUL8x3z17/+Na666qqMcvjluKuvvjrrcRH/a3LUuHHjtPidd94ZV155Zb7j9thjj2jbtm3Ur18/8vLyYt68eTFlypT48MMP01b82meffeKOO+6Izp07p82T6X86GD58eBxyyCEFHl+U8svlxhtvjJtuuqlIjrFw4cJo0qRJ/PDDDxvFS5UqFZMmTdrkA+BXXnklunXr9lPxSZI6der8dP5q1qwZpUuXjsWLF8fixYvjq6++io8++ijfxjunnnpqDBw4sECva4OLL744owKRTz/9tNCNRjZYtWpVHH/88TF06NB89ylTpky0atUqmjVrFjVr1oxq1arFihUrYvHixbFgwYKYMmVKfPbZZ/k2Tfrkk09izz333GQexXUtd+rUKd55552NYtlekwMHDkxcrWuD5s2bR9u2baNOnTqxatWqmD9/fnzwwQcxbdq0jfarXLlyfPDBB9G8efO0OYYNG5ZvYWWSknLeilJ+52r8+PHx4osvbhQvX758HHroodG0adOoWbNmzJ8/P6ZPnx4jRozItzijVq1aMXr06GjatGmR5TxkyJDo2rVrvtvvv//+EleENXPmzGjSpElavGfPnvHoo4/mLI9HH300zjnnnI1ijRo1ipkzZxbZMU488cQYPHhwvtubNGkSBx10UOy0006Rl5cX3377bbz//vubXOmvS5cuMWTIkMTfTJsybdq0OPDAA/Mtkky6pj/99NN499130z6jl19+eSxZsiT69++/UTzbc7ho0aJo1qxZzJ07N3F7rVq14vDDD4+GDRtGhQoV4vvvv4/p06fHe++9l7Yy9I033hgzZ84sdE4REddff3307dt3k/vsvffe0bJly6hdu3ZUr149lixZEgsWLIhJkybF5MmTY+3atRvt/8gjj0SvXr02e+yZM2dG8+bNM26Y9XNF+XsHAAAAAACA/Klv+n/UNxXOggUL4qCDDorp06fnu0+5cuWiTZs20bRp06hVq1ZUqVLlp7qLSZMmxccff7zJ19G9e/cYNGhQ1s+YI5Kv9WzrS37ppptuiptvvnmjWDafn6Kowynq57Kbem8bNmwYLVu2jLp160aNGjWicuXKsWLFipg7d25Mnjw5Jk6cmG/dTNeuXeP555/POseCGDt2bOy///6b3Kd06dKxxx57xB577BENGzaMatWqRZkyZWLZsmWxZMmS+PTTT2PSpEn51rZtcNBBB8Wbb74ZFStWzDi/knTfbNy4cdrCWZnWBGxQEms4ikJ+tTh/+9vfonv37mn7t2jRIvbdd9+oX79+rFy5MmbPnh1vv/12LFiwIN9j/POf/yzSxnBr1qyJnXfeOebPn5+4vW3btvH+++8X2fGKStK9MCL332vF8T3xc88991ycfPLJ+d4nK1WqFIceemg0btw4atSoEfPnz49p06bFiBEj8h1Ts2bNGDVqVOy+++5Z5ZJKpeK4446LV155Jd99WrZsGa1atYoGDRps8j7UsGHDuOuuuxLr/rI9h5uq+S1Tpky0a9cu9tlnn6hZs2b88MMP8e2338Y777yT1qSxWbNmcfvtt8dxxx1X6JzGjRsXhx12WL73uIj/nYf27dtH/fr1o3bt2rF69epYuHBhfPnllzF27Ni075Jsfiscd9xx8fLLL2eVc0TR1w4CAACZKbOlEwAAAIDiUKtWrXjrrbfi8MMPz7d5xJgxYzZaRWdzbrrppgIVh0VE/Pa3v43hw4cX6EFafq644op4991347nnnkvcPm3atLSmN0l23nnneOWVVzbZZIN0NWvWjMsuuyxuvfXWjeLr16+Pm2++OZ566ql8xx5zzDExdOjQ6N69e74FE/Pnz48hQ4YUac7Z6NWr12YbYLVp06bIml9F/K9g58UXX4wLL7wwrRBng7Vr12b92d2WnHbaaTF48OB8r69JkybFpEmTNjlH+fLl4/nnn4999tmnSHLans7bgAED4uCDD95o5cFVq1bFq6++mvEcVatWjRdeeKFIm19F/K9YY+edd47Zs2enbatSpUr06NGjSI9HdgYOHBjdunXL93fAl19+GV9++WXG83Xu3LnAhcl77LFHPP/883Hcccclrsqa6TV96KGHxl//+te44IILss7hl2rUqBEPPvhgdO3aNbFx3IIFCzb5vbrBueeeGzfddFNWxaSbcsstt0TFihXj+uuvz7cYbsqUKfmuRloYjRs3jvvvvz/OPvvsTa50CAAAAAAAwNZLfZP6pg1q1aoV77zzThxzzDExYcKExH1Wr14dI0aMiBEjRmQ9f8+ePeOhhx4q0DPmbVkun8t+/fXX8fXXX2c9rlOnTvHf//63GDIquHXr1sXUqVNj6tSpBZ7j2GOPjSeffDKr5lcRJe++WVglsYajOHXr1i2uv/76uOWWWzaKf/TRR/HRRx9lPM9VV11VpM2vIiLKli0b5557bvzlL39J3F7SFh7c3px00knx0EMPxYUXXpi2GF1ExIoVK+Kll17KeL7atWvHq6++mnXzq4j/NfsaOHBgHHHEEfHhhx8m7jNx4sSYOHHiJufZUEe4uWaBmbr99tvj7bffjs8++yxt29q1a2P48OGbbRy1yy67xGuvvVZkv7dat24db731Vhx//PHx7bffJu6zcOHCYquVfvjhh+OAAw5Ia1YIAACUTKW2dAIAAABQXBo3bhyjR4+OE044oVDz1KxZMwYOHBg33nhjgecoVapUDBkyJG6++eaoWrVqofLZIC8vLwYMGBCnnHJKgedo3bp1fPDBB9GwYcMiyWl789vf/jaqVauWFn/66adj8uTJmxzbvn37+Pjjj+Pkk08u0pxq1KgRBx98cKHnadOmTey5556b3KeoGoz8XLly5eLRRx+NJ554IurVq1ekc7dt2zZq1qxZpHNuCY899licfvrpBRpbu3btePPNN+OII44o0py2l/NWvXr1GD58eBx00EEFGt+4ceNCjd+U0qVL51vEdtppp0WVKlWK/Jhkrnz58jFkyJC49tpro0yZgq9LUbp06fjjH/8YL774YlSoUKHA8xxyyCHx1ltvxU477VSg8SeccEK89NJLUbZs2QLn8EvHHXdcPP3001GuXLmsx+bl5cUf//jHeOihh4osnw369OkTr776ajRq1KhI5itVKvPHMj169Ihhw4ZFs2bNiuTYAAAAAAAAlDzqmzZve6lvqlevXowaNSp+97vfFdmz2B133DEeeeSRePTRRwv1rHpbVlKfy5YqVSouueSSePXVV4vs85iJXXbZJc4+++xiq9WpW7duPPbYY/HSSy8V+HWVpPtmUSiJNRzF6U9/+lP07ds3q/qJDcqUKRP9+vWLv/71r8WQWcRFF12UmFf16tUL9T1G0TjnnHPijTfeKPTvgYMOOihGjx4drVu3LvAcVatWjTfffLPA96F69erFsGHDomXLlgXO4ZeqVasWI0aMiObNmxdofOvWrWPUqFFF/nurdevWMX78+ELfszfI5t5Rp06dGD9+fPTo0SNKly5dJMcHAACKjwZYAAAAbNNq1qwZgwcPjhdeeCH233//rMZWrlw5rrjiivjkk0/i1FNPLXQupUuXjhtuuCHmzp0bjz32WPTu3TsOOuig2HnnnaN69eoFerhWqVKleOqpp+L++++PnXfeOeNxderUidtvvz0++OCDAhdO8L/r67LLLkuLp1KpuPnmmzc7vm7dujFo0KAYNWpUnHzyyQUuQqlZs2Z07949Bg0aFHPmzEnMqSB69uyZ77YKFSoUyeciP6effnp89tln8de//jWaNm1aoDny8vKiVatWcd1118X06dPj/fffjzp16hRxprlXpkyZePzxx+Phhx+OBg0aZDymV69eMWXKlGjXrl2x5bY9nLcdd9wxRowYEf369cu42K98+fJx+eWXx4QJE2Lfffctttx+9atfJcatQFgylC5dOvr27Rvjxo2Lk046KatinFKlSkXXrl1j3LhxcdtttxVJQU6bNm3io48+iosvvjjj758GDRrEgw8+GIMHD856FdZMnHjiiTFmzJg4/PDDMx7TsmXLePvtt+O2224rttWKjzzyyJg6dWrccccdBSryKleuXHTp0iVeeumlOPPMM7Ma2759+5gyZUqMHDkyrr322jj22GPjV7/6Vey4445Rvnz5rHMBAAAAAACg5FHflGx7rG8qX7583HHHHTF16tTo3bt34sJ8mdhll12ib9++MWPGjGJZ4G5bU1TPZWfNmhV33313dO7cOSpXrlygXMqVK/fTs/N77rmnUItjFUSdOnWif//+MW/evHjzzTfjiiuuiFatWhW6TqFNmzZx9913x/Tp0+OMM84odJ4l6b5ZFEpiDUdxuvbaa2PEiBGx3377ZTzm4IMPjvfffz+uueaaYsurbt26iZ/dM844IypVqlRsxyVznTp1iilTpsRNN90UtWrVymrs7rvvHo888ki8++670bhx40LnUqVKlRg8eHA88sgjGf9OKVu2bJx33nkxefLkQjXgyk+9evXi/fffjz59+mR8X9hhhx2ib9++MWrUqIzrUbNVt27dGDx4cAwdOjQOO+ywAtV47b333vG3v/0tnnnmmazG1axZMx5//PH4+uuv45///GecddZZ0aJFi6hfv35UqVKl2OrNAACA7OWlUqnUlk4CAAAAcmXSpEnx4osvxvvvvx/Tp0+PuXPnxooVK6JMmTJRvXr1aNy4cbRo0SIOPfTQ6NKlS4ELUbaE1atXx+DBg+PNN9+MDz74IObNmxeLFi2K0qVLR/Xq1aNp06bRsmXLOPLII6Nz585pxTkrVqyIr776Km3ePffcM1cvYbu3ZMmSeO2112LkyJHx8ccfx6xZs+L777+PlStXRtmyZaNq1apRrVq1aNiwYey5556x1157Rdu2baN169YFWhFtazJ+/Ph48803Y8yYMfHZZ5/F7NmzY9myZbF27dqoXLlyVK1aNWrVqhW777577LnnntGiRYvo1KlT7Ljjjls69WK1YsWKePXVV+PVV1+NsWPHxrx582LBggVRtmzZqF27duy9995x6KGHximnnLJFVkLd1s/b8uXLY/DgwfHaa6/FRx99FF999VUsW7YsypYtG3Xr1o3mzZvH4YcfHj169IjatWsXez6HH354vPXWWxvFWrZsGRMmTCj2YxfE4sWL484770yLt2zZMrp27ZrzfHJtzpw58fzzz8e7774bU6dOja+//jqWLl0aEf9bJXDnnXeOZs2aRfv27ePEE08stgKjDbk88cQT8eabb8aUKVNi/vz5sW7duqhatWo0btw4WrVqFcccc0x06dIlypUrV2x5/NyYMWPi5Zdfjrfffju+/vrr+O67/4+9e4+yuqz3B/6ZcRwGGIZBEBIZLoFyyZAksUS5BJodIzAFL5SXUH9qJnkBsyyE9Jh60PSoGYriybukoOI5FSVqYIjXUlBBBwYGERAGucwwCPP7o+WuzXCZwZnv5vJ6rcVafJ79PM/ns1drsVquZ733iqisrIymTZtGp06d4qijjoqTTjop+vbtm8g8n6mqqoq//vWv8ac//SnmzJkTCxYsiI8++ig2bNgQ+++/f+Tn58cBBxwQnTt3jq5du8axxx4b/fv336P+PyUAAAAAAACZ5X2T902f2bhxYzz//PPxwgsvxBtvvBHFxcWxbNmyWL9+fWzatCkaNGgQTZo0idatW8chhxwSPXv2jAEDBkTPnj0FOmTYp59+Gm+++Wa89NJL8fbbb8f7778fxcXFsXr16li3bl1s3rw5CgoKUm/BevToET179oxBgwbV+AfZkrR27dp46aWX4u9//3vMnz8/5s+fn3rn8Mknn0RlZWXk5+dHQUFBNGnSJIqKiuLwww+PHj16xNe+9rXo0KFDvc63N/27uTu+4ahPM2fOjClTpsTs2bPjvffei7Kysti8eXMUFhbGIYccEr17946hQ4dGr1696n2WBx54IL7//e9XW3/jjTfi8MMPr/f+u2LSpEmxcOHCauvXXHNN4rMkrbKyMv7whz/E9OnT49VXX43i4uJYtWpVVFZWRsOGDaNly5apN0bf+ta34uijj663WTZt2hRTp06Np59+Ol599dUoKSmJ9evXR6NGjaJly5bxpS99Kfr37x9Dhw6tVRjo57Fs2bJ4+umn4//+7/9i7ty5sWLFiigrK4tGjRrFwQcfHIcffnh861vfiu9+97vRpEmTRGb6TElJSerf7H9/N7dly5bIz89P/XvXtWvX6NmzZxx//PF1EloGAADs3gRgAQAAAADs4YqLi6Njx46x9X/uvfPOO+PC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AAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAAAAAAJEoAFgAAAAAAAAAAAAAAAAAAAAAAAIkSgAUAAAAAAAAAAAAAAAAAAAAAAECiBGABAAAAAAAAAAAAAAAAAAAAAACQKAFYAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAAAAAAAAAAAAAAAAAAQKIEYAEAAAAAAAAAAAAAAAAAAAAAAJAoAVgAAAAAAAAAAAAAAAAAAAAAAAAkSgAWAAAAAAAAAAAAAAAAAAAAAAAAiRKABQAAAAAA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O955553Yc889U2uKi4ujZ8+eMWnSpBKfBQAAAAAAAAAAUBq1atUq85oHHHBA3H333TF69OhYsGBBjB07NoYPHx7ff/99/PDDD/GnP/0patSokVq/atWq6NGjR3z++edl3gsAAAAAAAAAAGSLAKwK5vXXX4+pU6fG/fffH2eddVbssMMOaeFTq9WvXz/OO++8+Oqrr6J9+/Zp7/r27RurVq3a4DkPP/xwfP3112n1hg4dGj169IgqVaqk5hs0aBA33nhjPPbYY2n7//GPf8R333230d+zcuXKuPLKK9PmLrjggnjmmWdip512Sps/6qij4oMPPoh99903Nbdo0aLo16/fRs8BAAAAAAAAAADYmNq1a8cRRxwRV1xxRTzzzDMxadKkeOWVV8qkdk5OTpx11lkxatSo+Pjjj+Piiy+O3Xbbba11jRo1imuuuSY+/vjjaNCgQWq+sLAwLr300jLpBQAAAAAAAAAAtgQCsCqYPffcMxKJRInX169fPx5//PG0PTNmzIhhw4atd8/KlSvjxhtvTJu77bbb1nnZarUzzjgjzjrrrNS4qKgo+vfvv9H+HnrooZg0aVJqvNNOO8Udd9yx3t9Yt27dePTRRyM/Pz81969//SvGjh270bMAAAAAAAAAAADW5cQTT4zRo0fHggULYsiQIfHnP/85Tj311GjVqlWZ1G/btm189dVX8dhjj8Xuu+9eoj177rlnDBo0KG3ugw8+iPHjx5dJTwAAAAAAAAAAkG0CsLYCu+66a3To0CFtbsyYMetd/+abb8aUKVNS49atW0evXr02ek7//v3TgqueeeaZWLhw4Qb3PPjgg2njq6++OqpVq7bBPbvttlucdtppqXFxcfFaF70AAAAAAAAAAABKaocddojddtstcnLK50pd27ZtSxx89XNdunRZ68OF//nPf8qqLQAAAAAAAAAAyCoBWFuJHXbYIW08Z86c9a596aWX0sa9evVKC7ba0BmHH354alxYWBivv/76etdPnTo1Pvvss9S4Vq1a0b17942eExFxzjnnbLBnAAAAAAAAAACAyuDQQw9NG0+ePDlLnQAAAAAAAAAAQNkSgLWVWL58edq4Xr1661372muvpY1/8YtflPicY445Jm386quvlvicgw8+OGrWrFmicw4++OCoUaNGajxu3Lj47rvvStwnAAAAAAAAAABARVC/fv20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eZ3V9bPhk08+iRdeeCEjZ3344Ydx/PHHx7Jly9Lm69WrF23atIn58+fHlClTori4OPXun//8ZyxevDieffbZSCQSGekTAAAAAAAAAADK21YRgDV//vx4/PHH44033ojPPvssZs+evcm1EolEVi9arVavXr0444wz4oQTTohDDz00ateunXpXXFwcQ4cOjeuuuy6GDh2amh8xYkScffbZ8eyzz5b6vF/84hdxxRVXlEnv63L55ZenhV/l5ORE375947LLLkt95XHlypXxxBNPxOWXXx7z58+PiIjZs2dH9+7d45NPPonc3Nxy6w8AAAAAAAAAALZ2zZo1Sz1PnTo1vv3222jbtu0m1xs3blxMmTIlFejUtGnTze6xPNSqVSsWL15cJrXmz58fp512Wlr4VatWreKvf/1rdOnSJfX/YurUqXHjjTfGfffdl1r3/PPPxx133BGXX355mfQCAAAAAAAAAADZVukDsO6888649tprY+nSpRHx09cHK7LWrVvHH//4xzjjjDOievXq61yTm5sbRxxxRAwZMiQuuuiiuP/++1PvnnvuuRgyZEgceeSRpTq3WbNmcfTRR29W7+szduzYeOCBB9LmHn/88Tj99NPT5vLz8+Pss8+Ojh07xiGHHBILFiyIiIjPP/88/vnPf0avXr3KpT8AAAAAAAAAACBi9913j4hIhTRdf/318fjjj29yveuvvz4ifrrTlUgkYo899tj8JjdT7dq1o0OHDtGxY8fYb7/9omPHjjFx4sRS37dan1tvvTWmT5+eGrdp0yY+/PDD2HbbbdPWNW/ePO69995o2bJl9O3bNzV//fXXR69evVIfFQQAAAAAAAAAgIosJ9sNlKcLLrgg/vCHP8SSJUtSwVerL19VRAMGDIhx48bFOeecs97wq5/Lzc2Ne+65J/bdd9+0+QcffLC8Wtwk/fr1i+Li4tT4N7/5zVrhVz+3++67x2233ZY2N2DAgCgsLCy3HgEAAAAAAAAAYGvXoUOH2GGHHSLip9CqJ598Mm6++eZNqnXTTTfFk08+mbrPtf3220eHDh3KrNfSOvHEE2P06NGxYMGCGDJkSPz5z3+OU089NVq1alVmZ8yePTv+9re/pc098MADa4Vf/dzVV18dhx12WGq8cOHCte5OAQAAAAAAAABARZWX7QbKy6OPPhr3339/RPwUepVMJiOZTEb9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u+++tP19+/aNBg0alOp3AQAAAAAAAADAlmqrCsAaP358vPDCCzF06NAYM2ZMzJs3LxYuXBgREW+99VZ06tRprT0zZsyIwsLCiIioXr16NGrUKKM9/9x777231tx11123SbWGDBkSRxxxxAbXTJs2Le6888648847IyJiu+22iwYNGkTNmjXjxx9/jMmTJ8fixYvX2pdIJOLOO++MX/3qVyXu54477ojPPvssPv3004iIWLVqVdxwww1xyy23RJs2baJq1aoxYcKEtc5r2LBhPPPMM5GXt1X9UwYAAAAAAAAAgC3GkCFD4v7774+hQ4fGjBkz1ruuWbNmcfjhh8d555230btL2XDmmWdGQUHBRtf98MMPccwxx6zzXc+ePeORRx5Z794GDRrE008/HZ07d47ly5dHRERBQUF07do16tWrF23atIkFCxbE5MmTo7i4OG1v165do3fv3iX/QQAAAAAAAAAAsIXbKlKDJkyYEH/4wx/ilVdeiWQyGRGR+m9EpL6aty79+/ePBx98MCIiGjVqFNOmTYvc3NzybXgLNW3atJg2bdoG1zRr1iweffTR9V7wWp8aNWrEm2++Gd26dYvBgwen5leuXBnjxo1b557WrVvHyy+/HG3bti3VWQAAAAAAAAAAwOYbNWpU9OzZM7744ouISL+TtS7Tp0+Pp556Kp566qlo3759PPLII7H77rtnoNMty2GHHRavvfZadOvWLebNm5eaX7BgQXz++efr3HPGGWfEww8/vMG7bgAAAAAAAAAAUNHkZLuB8vbcc89F+/bt4+WXX45Vq1alvSvJZaA//OEPEfHT5azZs2fHq6++Wi59bkk6deoUAwYMiCOOOCJq16690fU5OTnRvn37uPfee2P8+PGlDr9arUGDBvH222/H/fffHzvuuOMG111zzTXx9ddfR7t27TbpLAAAAAAAAAAAYNM9+uij0bFjx/jiiy9SwVeJRGK9d7J+/i6ZTMbIkSNj3333jX/+858Z63lL0qlTp/jmm2/iwgsvjBo1aqx33T777BPPPfdc/Otf/4qqVatmsEMAAAAAAAAAACh/edluoDy9/vrr8etf/zqKi4vTLk81bdo0WrRoEZ988slGa7Rt2zYOPvjg+PDDDyMi4vnnn4+uXbuWa9/rs7EvJJaVli1bxnXXXRfXXXddJJPJ+P7772P8+PExZcqUWLBgQSxfvjxq1qwZ9evXjxYtWsR+++0XderUKZOzc3Jy4rzzzovzzjsvvv766/jss89ixowZUVxcHNtss03ssccesf/++0eVKlXK5DwAAAAAAAAAAKB0XnjhhTj33HNT97ISiUTqblOLFi1ir732ioYNG0bNmjVjyZIlMWfOnPjyyy9jypQpEfG/DxeuWLEizjnnnKhbt27W7mT93KRJkzJ6XpMmTeKee+6J22+/PT766KMYM2ZMLFiwIPLz82O77baL/ffff4MfEgQAAAAAAAAAgIqu0gZgzZ49O04//fTUJatkMhndunWLP/7xj9GuXbuI+ClsaX1fHPy5U045JT788MNIJpPxzjvvlHfrW5REIhE77rhjVi5StWvXLvV3BQAAAAAAAAAAZN/cuXOjV69eafeyqlevHr///e/j//7v/zZ4z+j777+Phx56KO66665YtmxZJBKJKC4ujrPPPjvGjx8f22yzTQZ/yZajevXqcdRRR8VRRx2V7VYAAAAAAAAAACCjcrLdQHm54YYbYtGiRanxn//853j66ac3KVDpyCOPTD3PnDkzJk+eXCY9AgAAAAAAAAAAVCTXX399/Pjjj6nwq3bt2sU333wTAwcO3OhH9nbYYYcYOHBgjB49Otq1axfJZDIiIn788ce48cYbM9E+AAAAAAAAAACwBamUAVirVq2Kxx9/PBKJRCQSiTj11FOjd+/em1xvt912i/z8/NR4zJgxZdEmAAAAAAAAAABAhZFMJuPJJ59MhV+1bNkyPvjgg2jVqlWp6rRq1Sree++9aNWqVarWv/71r3LqGgAAAAAAAAAA2FJVygCs//73v7FgwYLUFwL/+Mc/bla9vLy82G677VLjyZMnb1Y9AAAAAAAAAACAimbEiBExZ86cSCaTkUgk4vbbb4+6detuUq169erFbbfdlrrjNXfu3BgxYkRZtgsAAAAAAAAAAGzhKmUA1nfffZd6bty4cbRr126za9arVy/1vHDhws2uBwAAAAAAAAAAUJH8/F5WrVq1omvXrptVr0uXLlG7du3U+Ntvv92segAAAAAAAAAAQMVSKQOwZs+eHRERiUQimjdvXiY18/LyUs9FRUVlUhMAAAAAAAAAAKCimDVrVkT8dC+rdevWaXeqNkWVKlWidevWa9UHAAAAAAAAAAC2DpUyACsn538/a9WqVWVSc968eann+vXr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5JJLinTWo48+mt7ftm3bKFeuXLG+CwAAAAAAAAAAsHErswFYJ510UjroKiIyQq+qV68e3bt3j549e8Zee+2V404BAAAAAAAAAAA2DpUqVYp+/fpFly5dYsmSJel7V59++ml89tlnEREZd7KW/++JJ54Yu+++e6HPGTx4cIwfPz5do0OHDsX8JgAAAAAAAAAAwMauzAZgLbf8AlYqlYouXbpEz54948gjj4yKFSvmujUAAAAAAAAAAICNTvv27eOZZ56J7t27x4IFC9IhVcutOE6SJDp16hR33HFHkc646aabMu52HXLIIcXSOwAAAAAAAAAAUHrk5bqBkpQkSWy77bZxww03xIQJE+K1116LY445RvgVAAAAAAAAAADAWhxyyCHxxRdfxJFHHhnlypWLJElW+atZs2Zcc8018frrr0eFChUKXfuDDz6I1157LZIkiYiIhg0bRps2bUrqVQAAAAAAAAAAgI1Ufq4bKCl//vOfo2fPnrH77rvnuhUAAAAAAAAAAIBSp1mzZvHMM8/EzJkzY8iQITFx4sSYPXt21KxZM7bffvvYc889o6CgoMh18/Lyol+/fulx06ZNi7FrAAAAAAAAAACgtCizAVj//ve/c90CAAAAAAAAAABAqVezZs044ogjiq1e27Zto23btsVWDwAAAAAAAAAAKJ3yct0AAAAAAAAAAAAAAAAAAAAAAAAAmxYBWAAAAAAAAAAAAAAAAAAAAAAAAGRVfq4byKYkSWLEiBHxzjvvxKhRo+KXX36JWbNmxbJly+KWW26JXXbZJdctAgAAAAAAAAAAAAAAAAAAAAAAlHmbRADW4sWL484774x//etfMX78+IzfkiSJVCoVM2bMWO3e3r17x5tvvhkREU2aNInBgweXeL8AAAAAAAAAAAAAAAAAAAAAAABlWZkPwBozZkwcffTRMXLkyEiSJCIiUqlURER6vDZHH3103HPPPRERMX78+Pjwww9jjz32KLmGAQAAAAAAAAAAAAAAAAAAAAAAyri8XDdQksaOHRt77713OvxqxeCrFcdr06lTp2jZsmV6/MQTT5RYvwAAAAAAAAAAAAAAAAAAAAAAAJuCMhuAtWjRojjooINiypQp6bkmTZrEv/71rxg1alTMmTOn0CFYf/jDH9LPr7/+eon0CwAAAAAAAAAAAAAAAAAAAAAAsKkoswFYd955Z3zzzTfpgKsjjzwyvvzyyzjzzDOjZcuWUbly5ULX6tq1a0REJEkSX3/9dUyfPr1EegYAAAAAAAAAAAAAAAAAAAAAANgUlNkArNtuuy0dfrXrrrvG448/HpUqVVqvWjvvvHO6VkTEV199VSw9AgAAAAAAAAAAAAAAAAAAAAAAbIrKZADWqFGjYsKECZEkSUREXHvttVFQULDe9apUqRJbbrllevzdd99tcI8AAAAAAAAAAAAAAAAAAAAAAACbqjIZgPXJJ5+kn6tWrRqdO3fe4Jq1atVKP8+cOXOD6wEAAAAAAAAAAAAAAAAAAAAAAGyqymQA1tSpUyMiIpVKxVZbbRV5eRv+mpUrV04/z5s3b4PrAQAAAAAAAAAAAAAAAAAAAAAAbKrKZADWggUL0s8VKlQolpqzZs1KP1evXr1YagIAAAAAAAAAAAAAAAAAAAAAAGyKymQAVt26ddPP06ZN2+B6S5cujR9++CE9rlOnzgbXBAAAAAAAAAAAAAAAAAAAAAAA2FSVyQCsLbbYIiIikiSJ8ePHx6xZszao3ogRI2Lu3Lnp8TbbbLNB9QAAAAAAAAAAAAAAAAAAAAAAADZlZTIAq127dpGfnx+pVCqSJImnn356g+r997//TT/XrFkzdt111w1tEQAAAAAAAAAAAAAAAAAAAAAAYJOVn+sGSkKNGjWiXbt28fbbb0dExPXXXx/HHHNMVK5cuci1Pvjgg3j44YcjlUpFRETXrl2LtVcAAAAAAAAAAICybvTo0fHuu+/GtGnTolatWrHbbrvFbrvtluu2AAAAAAAAAACAHCqTAVgREeeff368/fbbkUqlYty4cXHcccfFk08+GQUFBYWuMXLkyPjDH/4QS5cujSRJIi8vLy6++OIS7BoAAAAAAAAAAGDjNXPmzPj444/T49atW0ft2rXXuH7atGnRq1evePXVV1f5beedd477778/WrduXSK9AgAAAAAAAAAAG7e8XDdQUg499NDo0KFDJEkSEREDBgyIPfbYIwYOHLjOvZMmTYq//e1vsffee8fkyZMjSZJIpVJx3HHHxQ477FDSrQMAAAAAAAAAAGyU/v3vf0eXLl2iS5cucdhhh0Ve3pqvoM2ZMyf22WefePXVVyNJklX+Pvnkk9h7771j2LBhWXwDAAAAAAAAAABgY5Gf6wZK0pNPPhl77LFHjB8/PiIiRo4cGfvvv3/Ur18/dt1114iIdLjVddddF//85z9jzJgx8e2332b8liRJ7LjjjnH33Xfn7F0AAAAAAAAAAABy7fnnn0/fq+rWrVvUqlVrjWsvvfTSGD16dKRSqfQ9rOVSqVRERMydOze6desWX3/9dVSqVKnE+wcAAAAAAAAAADYea/78XhlQt27deP3116Nly5YZYVaTJ0+OV155Jb0uSZIYPHhwvPrqq/HNN9+kvzC4fP0uu+wSL7/8sgtWAAAAAAAAAADAJmvu3Lnx2WefpcOrDj300DWunTJlSvz3v/9N38FKpVLRo0ePuOuuu+Lqq6+Oxo0bpwOxJk6cGLfddls2XgEAAAAAAAAAANiIlOkArIiIFi1axEcffRS9e/eOcuXKRcT/vh64/MuCy8crzkVElCtXLnr37h3vvfdebLnlltlvHgAAAAAAAAAAYCPxxRdfxNKlS9PBVfvss88a1z722GOxaNGidPjVHXfcEf3794/evXvHpZdeGh9//HG0aNEiHZD1wAMPZOktAAAAAAAAAACAjUWZD8CKiKhUqVLcddddMXbs2Ljwwgtjhx12iIiIJElW+9e8efP4y1/+EqNHj4677rorKlasmOM3AAAAAAAAAAAAyK2xY8emn+vWrRt169Zd49oXXngh/bz11lvHaaedlvF7rVq14pprrkmHaY0ZMybGjx9fzB0DAAAAAAAAAAAbs/xcN5BNDRs2jBtuuCFuuOGGmDlzZowePTqmT58eM2fOjMqVK0edOnViq622ii233DLXrQIAAAAAAAAAAGxUpkyZEhERqVQq6tWrt8Z1CxcujP/7v/+LVCoVERHHHnvsatcdeuihUVBQEIsXL46IiJEjR0aTJk2KuWsAAAAAAAAAAGBjtUkFYK2oZs2asccee+S6DQAAAAAAAAAAgFJh3rx56edq1aqtcd2IESNi4cKFEfFbWNaBBx642nUVK1aMZs2axejRoyMiYtKkScXYLQAAAAAAAAAAsLHLy3UDpcmAAQOibdu2uW4DAAAAAAAAAAAg6/Ly/nfdbHnA1eq8++676edKlSrF7rvvvsa1NWvWTD/Pnj17wxoEAAAAAAAAAABKlfxcN1AaPPfcc3HNNdfEyJEjc90KAAAAAAAAAABATlSvXj0iIpIkiUmTJq1x3aBBgyIiIpVKxR577BHlypVb49pFixYVb5MAAAAAAAAAAECpkbfuJZuup556Klq3bh1HHXVUjBw5MpIkyXVLAAAAAAAAAAAAOdG0adP085QpU+KHH35YZc2sWbNi6NChkUqlIiKiY8eOa635yy+/pJ+rVatWLH0CAAAAAAAAAAClgwCslSRJEo899ljssMMO8cc//jE+//xzwVcAAAAAAAAAAMAmb9ddd42ISIdb9e3bd5U19913XyxatCh956pTp05rrDd//vyYOHFiut6WW25Z3C0DAAAAAAAAAAAbsTITgDVp0qS47rrrYr/99osmTZpElSpVomrVqtG8efPo3r17PPPMM+sMsnr88cejVatW0aNHj/jqq68iSZJIpVKRSqUiSZLIz8+Pnj17ZumNAAAAAAAAAAAANh6bb7557LnnnhHx24cG//GPf0T//v3T97JeeumluPLKKzMCrfbaa6811vv0009j6dKl6f0tWrQo4TcAAAAAAAAAAAA2Jvm5bqA4XHbZZXHLLbfEwoULIyIygq7GjRsX33//fTzzzDPRunXreOqpp6J58+YZ+z/77LM49dRTY/jw4em9yy9hJUkSBQUF0bNnz7jkkkuiadOm2XkpAAAAAAAAAACAjcw555wTRx99dKRSqVi8eHGccMIJceaZZ0ZeXl78+uuvGfevzjjjjLXWeu2119LPVapUie22265EewcAAAAAAAAAADYuebluYEP16NEjrrvuuliwYEHG5akV/5IkiSRJYuTIkbH33nvHDz/8kN5/1113Rdu2bdPhVyvuKV++fJx++ukxZsyY6Nu3r/ArAAAAAAAAAABgk9atW7c44ogj0netkiSJ2bNnx6xZs9JzEREtW7aMc845Z621nnrqqYj47b7X7373u/ReAAAAAAAAAABg01CqA7Duu+++ePTRRyMiVgm7WvFv+e8RET///HP07t07IiL+8Y9/xF/+8pdYtGhRek2SJFGhQoU488wz47vvvov//Oc/0ahRoxy8HQAAAAAAAAAAwMbn8ccfj+OOOy59N2tFSZJEq1at4uWXX46KFSuuscbbb78do0aNSt/rOuCAA0qsXwAAAAAAAAAAYOOUn+sG1teSJUvi0ksvzfjqX5Ik0bZt2+jcuXM0bNgwkiSJiRMnxltvvRXDhw9PB1y9/vrrcd9998Ull1yS8SXCgoKC6N27d1x66aWx+eab5/DtAAAAAAAAAAAANk7ly5ePhx56KM4+++x4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dk3t2rXj9NNPj4svvjiqVKmy3mcBAAAAAAAAAADF4+uvv44ffvghZs2aFfPnz48kSYpc4/jjjy+BzjZuH330Udx6663x9NNPx8KFC9e4bsstt4yTTjopzj777Nhss82y2CEAAAAAAAAAAJQcAVilyJ///Oe49957VxtAtTqLFy+O559/Pp5//vk4/vjj49///ndUr169yOc++eSTccIJJ8S8efPWuCZJkhgyZEh07NgxLrzwwrj++uuL/MXBmTNnRvfu3ePNN99c67rp06fHNddcE48++mgMGDAgtt9++yKdAwAAAAAAAAAAbLjXX389+vbtG2+88cZa7xYV1qYUgLVs2bK45JJL4qabboply5atc/2kSZPiqquuiv/+97/xwAMPxIEHHpiFLgEAAAAAAAAAoGSVugCsCRMm5LqFaNy4cU7O/fDDD1cbflWuXLnYYostYvPNN4/FixfH+PHjY9asWRlr+vfvH19//XUMHDgwqlatWugzn3rqqTjmmGNWuWRVt27daNSoUUyZMiUmTZqU/mJjkiRx4403xsKFC+PWW28t9Dnz58+PAw44IIYNG5YxX758+WjatGlUqFAhxo4dG3Pnzk3/Nnbs2Nh3333j/fffj6233rrQZwEAAAAAAAAAAOtv5syZ0atXr3jxxRcjItJ3h9ZHKpWKJEmK/LG90q53795x7733rjJfuXLlaN68eVSqVCmmT58eY8eOzfj3/fnnn+Pwww+P559/Prp27ZrNlgEAAAAAAAAAoNiVugCspk2b5vSyUyqViiVLluTs/OVq1qwZxx57bBx88MGxzz77RLVq1dK/LV26NN555524/PLL45133knPDxs2LHr16hVPP/10oc747rvv4oQTTsgIv2rdunXceuutse+++6bnRo8eHZdcckk8++yz6bnbbrst9tlnn/j9739fqLPOO++8jPCrvLy8uPTSS+Pcc8+NWrVqRUTEokWL4tFHH43zzjsvZsyYERERU6dOje7du8fw4cOjXLlyhToLAAAAAAAAAABYP/PmzYsDDjggRowYkQ6uWh5itT42JDyrtHr66adXCb9q1apV3HTTTbH//vtHfv7/rvVNnTo17rrrrrj22mvTH09ctGhR9OzZM0aPHp2+WwUAAAAAAAAAAKVRqQvAWm5TvPgU8VsA2N///vc49thjo1KlSqtdU65cuejYsWMMHjw4zjjjjOjbt2/6t2eeeSYGDx6cEWC1JpdddlnMnTs3PW7Tpk289dZbUb169Yx1LVu2jKeffjpOO+20jLMuvPDCOOywwzIuZK3O119/Hffcc0/G3MMPPxzHHHNMxlz58uWjV69e0aZNm9h7771j5syZERHxySefRP/+/eOEE05Y5zsBAAAAAAAAAADr7/rrr4/hw4dnBF9VrFgx9t9//9h5552jXr16UaVKlVy3uVHr06dPxnj33XePIUOGrPbfrW7dunH55ZfH3nvvHQcccED6441Tp06Nu+++O/72t79lpWcAAAAAAAAAACgJpTYAa1PUp0+f6NKlS5QvX75Q68uVKxd33nlnfPzxxzFixIj0/L333rvOAKwvv/wynnjiifS4fPny8eCDD64SfrVcKpWKf/3rXzF48OD49ttvIyLiu+++i379+sUpp5yy1rOuuOKKWLp0aXr8pz/9aZXwqxVtv/32cfPNN8fJJ5+cnuvTp0/06NEjCgoK1noWAAAAAAAAAACwfhYtWhS33XZbOvgqIuKUU06JG2+8MWrWrJnb5kqJsWPHxhdffJExd+edd64zNKxTp05x0kknxX//+9/03IsvvigACwAAAAAAAACAUq3UBWD17Nkz1y3kzMEHH1zkPeXKlYsLL7wwunfvnp57/fXX17nv/vvvj2XLlqXHf/zjH2O77bZb656KFSvGxRdfHCeddFJ67t57711rANaMGTPi2WefTY9TqVRceeWV6+zvhBNOiKuvvjrGjx8fERHjx4+Pt956K7p27brOvQAAAAAAAAAAQNG9++67MXfu3EilUpFKpaJXr14ZgUys2+jRozPGDRs2jDZt2hRq7x/+8IeMf+8xY8YUa28AAAAAAAAAAJBtpS4Aq1+/frluodTZZ599MsbTp0+PefPmReXKlde4Z8CAARnjFUOt1uboo4+Os846K+bOnRsREcOHD48ff/wxGjRosNr1L7/8cixZsiQ97tixYzRr1myd5+Tl5cUJJ5yQEZb1/PPPC8ACAAAAAAAAAIASsjxwKUmSyMvLi2uvvTbHHZU+v/zyS8a4UaNGhd7buHHjjPHMmTOLoyUAAAAAAAAAAMiZvFw3QMmrVavWKnOzZs1a4/rRo0dnfB2wSpUq0a5du0KdtfLaJEni5ZdfXuP6lX/bf//9C3VORESXLl0yxi+99FKh9wIAAAAAAAAAAEUzffr0iIhIpVKx9dZbR/369XPcUelTo0aNjPH8+fMLvXfltXXq1CmWngAAAAAAAAAAIFcEYG0CJk2atMpc7dq117h+5MiRGeO2bdtGfn5+oc/ba6+91lpvbb8VNmgrImK33XaLChUqpMc//vhjTJ06tdD7AQAAAAAAAACAwqtUqVL6eXUf5WPddt5554zxqFGjYu7cuYXaO2zYsIxx27Zti6stAAAAAAAAAADICQFYm4B33nknY9ykSZMoX778GtePGjUqY9yqVasinbfy+pXrLbd48eIYM2bMep9VoUKFaN68eaHOAgAAAAAAAAAANszWW2+dfp4+fXoOOym9GjZsmPGRwIULF8btt9++zn0LFy6M2267LWPupJNOKu72AAAAAAAAAAAgqwRgbQLuv//+jPFBBx201vWjR4/OGDdq1KhI5628fuV6y40dOzaWLFmSHleqVCnq1KlTImcBAAAAAAAAAAAbpn379lG+fPlIkiTGjRsXM2bMyHVLpdKNN94YeXn/u7p3+eWXx4MPPrjG9TNnzoyjjjoq4+OAhx56aBx66KEl2icAAAAAAAAAAJQ0AVhl3CuvvBJvv/12xlyvXr3WumfKlCkZ44YNGxbpzC233DJjPHXq1EKds/K+9Tlr5ZoAAAAAAAAAAEDxqF69ehx77LEREbFs2bJ46KGHctxR6bT33nvHHXfcEalUKiIilixZEr169Yq2bdvGDTfcEM8991y89tpr8fDDD8eZZ54ZzZs3j5deeim9v0uXLvHYY4/lqn0AAAAAAAAAACg2+blugJLzyy+/RO/evTPmjjjiiGjbtu1a982ZMydjXKVKlSKdu/L6xYsXx8KFC6NChQrFes7q9qxcc31MmTJljaFdazJmzJgNPhcAAAAAAAAAADZ21113XQwYMCBmzJgRV199dRx22GHRtGnTXLdV6px++unRsmXLOOuss+LLL7+MiIjhw4fH8OHD17inWbNmceGFF8Ypp5wSeXnF9+1L96UAAAAAAAAAAMiVTSoA6+uvv473338/Pvnkk5g2bVrMnDkzFi5cWKQaqVQqBg4cWEIdFp9ly5ZFjx49YuLEiem5GjVqxO23377OvSuHSFWsWLFIZ1eqVGm1NdcVgFXUc1Z3VnEEYN15553Rp0+fDa4DAAAAAAAAAABlTf369eO5556Lrl27xvTp02O//faLp59+OnbZZZdct1bqdOrUKYYPHx6XX3553HrrrbF06dI1rm3cuHFccMEFceyxxxZr+FWE+1IAAAAAAAAAAOTOJhGA9cILL8QNN9wQw4YN26A6SZJEKpUqpq5K1l//+td49dVXM+b++9//RqNGjda5d8GCBRnj8uXLF+nslYOuIiLmz59f7Oes7qzVnQMAAAAAAAAAABSfffbZJ95+++3o3r17jB07NvbYY4846qijonv37rH77rtHvXr11usu0Kbm7rvvjquuuiomT568zrUTJkyIM844I/7+97/HTTfdFCeeeGIWOgQAAAAAAAAAgJJVpgOwli5dGr17945+/fpFRGaAVZIk6XWrC7Va1+8bs9tvvz3++c9/ZsxdeOGFcfTRRxdqf8WKFTPGixYtKtL5CxcuXGfN4jhndWet7hwAAAAAAAAAAKB4lCtXLmOcSqViyZIl8cQTT8QTTzyx3nWX19kULF68OI455ph45pln0nObbbZZ/OUvf4lDDjkkWrRoEVWqVIlp06bFiBEjol+/fvH8889HkiTxyy+/xEknnRSjRo2Km266KYdvAQAAAAAAAAAAG65MB2Cdc845cf/990dErBJ8tWKo1YphV8ut6/eN1aOPPhrnnHNOxlyvXr3ihhtuKHSNqlWrZowXLFhQpB7mz5+/zprFcc7qzlrdOUV1xhlnRLdu3Yq0Z8yYMXHEEUds8NkAAAAAAAAAALAxW92HBVOpVKm6Y5Vrp59+ekb4Vdu2beOFF16I+vXrZ6zbYost4tBDD41DDz00BgwYEEcffXT6jtXNN98crVq1ihNOOGGD+3FfCgAAAAAAAACAXCmzAVhDhw6N//znP+lLVuXLl4+//vWv0aNHj2jatGlUrFgx/dtbb70Ve++9d/zyyy/x5ZdfxqBBg+L++++Pn3/+OVKpVLRq1SoeeeSRaN26dS5faZ1eeuml6NmzZ8Zlst///vdx7733ZgR6rcvKIVJz584tUh8rr8/Pz4+KFSsW+zmr21McAVj16tWLevXqbXAdAAAAAAAAAAAoi5YHXhVH6NWmFp41ZMiQuO+++9LjevXqxUsvvRR169Zd677DDjss/vOf/8RJJ52UnvvrX/8af/zjH6NSpUob1JP7UgAAAAAAAAAA5EqZDcC6/vrrI+K3Lw7m5+fHiy++GJ07d17j+vLly0f9+vWjfv36sd9++8UVV1wRf//73+OWW26JUaNGRfv27eOll16KffbZJ1uvUCSDBw+Obt26xZIlS9JzXbp0icceeyzKlStXpForX2aaOHFikfZPmjQpY7ymy1krn7PyvvU5y0UsAAAAAAAAAAAoOe3bty/Sx/jIdPvtt2eMzznnnHWGXy3Xq1evuPHGG+Obb76JiIjp06fHs88+G8cdd1yx9wkAAAAAAAAAANlQJgOw5s6dGwMHDkxftDr11FPXGn61OuXLl49//OMf0bx58zj99NNj9uzZceSRR8aXX34Zm2++eUm0vd4+/PDDOOyww2LBggXpuXbt2sVzzz0X5cuXL3K9li1bZownTJhQpP0rr992221Xu65Zs2aRn5+fDu2aP39+TJ06tdAXuopyFgAAAAAAAAAAsOGGDBmS6xZKrSRJYtCgQRlzhx56aKH35+XlxcEHH5wOwIqIePvttwVgAQAAAAAAAABQauXluoGS8MEHH8TSpUsjSZKIiDjttNPWu1bv3r2jW7duERExY8aMuOyyy4qlx+Ly2WefRdeuXWPOnDnpuV122SVeeeWVqFKlynrVXDlE6quvvirS/lGjRq213nIFBQXRvHnz9T5r4cKFMXbs2EKdBQAAAAAAAAAAkEszZsyIWbNmZcxttdVWRaqx8vpJkyZtcF8AAAAAAAAAAJArZTIAa/z48ennGjVqxA477LDW9QsXLlzr75deemlE/PYFvkceeSQWLFiw4U0Wg9GjR0eXLl1ixowZ6bntttsuXn/99ahRo8Z61915550zxsOHD48lS5YUev9777231npr++39998v9DkfffRRxn+7LbbYIurVq1fo/QAAAAAAAAAAANmyuntq+fn5RapRUFCQMV66dOkG9QQAAAAAAAAAALlUJgOwfvnll4iISKVS0bhx49WuWfHi0LoCrXbaaafYfPPN02uLEtJUUsaPHx+dO3eOKVOmpOe22mqrePPNN6Nu3bobVHvbbbeN5s2bp8dz584t9DvPnTs3/u///i89TqVSccghh6xx/cq/vfnmm4Xuc+W1hx56aKH3AgAAAAAAAAAAZFPt2rVXmfvxxx+LVGPSpEkZ4w29KwYAAAAAAAAAALlUJgOwlixZkn6uUqXKatdUq1YtkiSJiMgIkVqThg0bpp9Hjx69gR1umMmTJ8d+++0XEydOTM9tueWWMXDgwNhyyy2L5YzDDjss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AAAAAAAAAAAAAACArBKABQAAAAAAAAAAAAAAAAAAAAAAQFYJwAIAAAAAAAAAAAAAAAAAAAAAACCrBGABAAAAAAAAAAAAAAAAAAAAAACQVQKwAAAAAAAAAAAAAAAAAAAAAAAAyCoBWAAAAAAAAAAAAAAAAAAAAAAAAGSVACwAAAAAAAAAAAAAAAAAAAAAAACySgAWAAAAAAAAAAAAAAAAAAAAAAAAWZWf6wZgdb777rsYNmxYTJw4MRYtWhS1atWKbbfdNtq1axcVK1bMdXsAAAAAAAAAAAAlYvTo0fHpp5/GxIkTY968eVGpUqXYfPPNY5tttonWrVtHhQoVct0iAAAAAAAAAAAUCwFYpdikSZNi2LBh8eGHH8awYcNixIgRMXv27PTvTZo0ie+//369aqdSqQ3qbdy4cdG0adMi73v++efj6quvjo8//ni1v1etWjV69eoVV1xxRdSpU2eDegQAAAAAAAAAANgYzJ49O/7973/HvffeG+PGjVvjuvLly0fbtm3jqKOOirPPPjuLHQIAAAAAAAAAQPETgFXKvPfee3HLLbfEhx9+GD/++GOu2yk2CxcujJNOOikeeeSRta6bM2dO3HHHHfHEE0/E008/He3bt89ShwAAAAAAAAAAAMXvpZdeipNPPjl+/vnnda5dtGhRvPvuu/Htt98KwAIAAAAAAAAAoNQTgFXKDB8+PJ577rlct1Gsli1bFkcffXS88MILGfPlypWLxo0bR40aNWLcuHExa9as9G9Tp06Nrl27xltvvRV77rlntlsGAAAAAAAAAADYYLfeemucf/75kSRJxnzFihWjQYMGUadOnZg/f35Mnjw5pk2blqMuAQAAAAAAAACgZAjAKkOqVq0ac+bMKfa6O+20U9xyyy1F2lO/fv1Cr73ppptWCb867bTT4rLLLosGDRpExG8hWS+88EKcc845MWHChIiImDdvXnTv3j2++OKLqFGjRpH6AwAAAAAAAAAAyKX77rsvzjvvvIy5rl27xllnnRX77rtvVKhQIeO3H3/8MQYNGhTPP/98DBs2LJutAgAAAAAAAABAiRCAVUpVq1Ytdtttt2jTpk20bds22rRpE+PGjYt999232M+qVatWdO7cudjrRkRMnz49rr322oy566+/Pi6++OKMuby8vDjyyCOjbdu2sffee8f3338fERETJ06Mf/7zn9GnT58S6Q8AAAAAAAAAAKC4jRkzJv7yl7+kxwUFBfHggw/GMcccs8Y9DRo0iB49ekSPHj1ixowZ2WgTAAAAAAAAAABKlACsUubQQw+N/fffP7bddtvIy8vL+G3cuHE56mr9/eMf/4jZs2enx+3bt4+LLrpojeu33HLLuPfeezMCuW699dY466yzonbt2iXaKwAAAAAAAAAAQHE49dRTY8GCBenxI488Et26dSv0/lq1apVEWwAAAAAAAAAAkFV5617CxqR58+bRqlWrVcKvSqNly5ZFv379MuauvPLKSKVSa9233377xT777JMez549O5588skS6REAAAAAAAAAAKA4vfDCCzF48OD0uFu3bkUKvwIAAAAAAAAAgLKi9KcoUWq9//77MXXq1PS4WbNm0bFjx0LtPemkkzLGzz//fDF2BgAAAAAAAAAAUDL69u2bMb7iiity1AkAAAAAAAAAAOSWACxy5uWXX84Yd+nSJVKpVKH2dunSJWM8ZMiQmDt3brH1BgAAAAAAAAAAUNwmTZoUr7/+enq88847x/bbb5/DjgAAAAAAAAAAIHcEYJEzI0eOzBi3a9eu0HsbNGgQTZs2TY8XLVoUX331VTF1BgAAAAAAAAAAUPxee+21WLp0aXq877775rAbAAAAAAAAAADILQFYFNrkyZPjo48+irfffjs+//zzmDx58gbVGzVqVMa4VatWRdq/8vqV6wEAAAAAAAAAAGxMhg8fnjFu3bp1+vmTTz6Js846K1q3bh21atWKypUrR9OmTaNLly5x8803x6RJk7LdLgAAAAAAAAAAlKj8XDfAxu/zzz+PZs2axbhx41b5rX79+tGhQ4fo1atXHHjggYWuOX/+/JgwYULGXKNGjYrU18rrR48eXaT9AAAAAAAAAAAA2bRyAFazZs1izpw5cfbZZ8f999+/yvrx48fH+PHj46233orLL788zjnnnOjTp08UFBRkq2UAAAAAAAAAACgxeblugI3fL7/8strwq4iIn376KZ544ono2rVr7LrrrvH5558Xqua0adMiSZL0uKCgIOrVq1ekvrbccsuM8ZQpU4q0HwAAAAAAAAAAIJvGjBmTMc7Ly4v27duvNvxqZfPnz4/rr78+DjrooJg9e3ZJtQgAAAAAAAAAAFmTn+sGKDs++eST2GOPPeLBBx+Mbt26rXXtnDlzMsaVK1eOVCpVpPOqVKmy1prra8qUKTF16tQi7Vn5YhoAAAAAAAAAAMCKli1btkpw1VlnnRWffPJJRESkUqk45JBD4qCDDoqGDRvG3Llz45NPPomHHnoofvzxx/Set956K3r16hXPPPNMsfTlvhQAAAAAAAAAALkiAIs1qlOnThxyyCHRuXPn2GmnnaJhw4ZRrVq1mDNnTkyYMCHeeeeduOeee+LTTz9N75k/f3706NEjNt9882jfvv0aa68cVlWxYsUi91epUqW11lxfd955Z/Tp06dYagEAAAAAAAAAAEREzJo1K5IkyZj7+OOPIyKidu3a8dxzz8U+++yT8fvRRx8df//736N3797x6KOPpuefffbZ6N+/fxx//PEb3Jf7UgAAAAAAAAAA5Eperhtg4/Twww/HpEmTol+/fnHcccfFjjvuGLVq1Yr8/PyoWbNm7LTTTvHnP/85Ro4cGXfffXdUqFAhvXfRokVx7LHHxoIFC9ZYf+XfypcvX+QeVzwz4rfwLQAAAAAAAAAAgI3Rmj7wV65cuXj55ZdXCb9armrVqvHQQw/F/vvvnzF/3XXXrRKoBQAAAAAAAAAApYkALFbruOOOK3Qo1fKvC+bl/e//TpMmTYr//Oc/a9xTsWLFjPGiRYuK3OPChQvXWhMAAAAAAAAAAGBjsab7TSeffHLssccea92bl5cXd911V8YdrdGjR8fQoUOLtUcAAAAAAAAAAMim/Fw3QNnw+9//Pv70pz/Fgw8+mJ576KGH4vzzz1/t+qpVq2aMFyxYUOQz58+fv9aa6+uMM86Ibt26FWnPmDFj4ogjjiiW8wEAAAAAAAAAgLJnTfebTjnllELtb9asWXTu3DneeOON9NzQoUOjY8eOG9SX+1IAAAAAAAAAAOSKACyKzfnnn58RgPXZZ5/Fzz//HJtvvvkqa1e+zDVv3rxIkiRSqVShz5s7d+5aa66vevXqRb169YqlFgAAAAAAAAAAQEREpUqVoly5crF06dL0XLVq1WKXXXYpdI0OHTpkBGCNGDFig/tyXwoAAAAAAAAAgFzJy3UDlB077rhjxkWoJEnim2++We3aOnXqZIRdLV68OKZMmVKk8yZNmpQxdgkLAAAAAAAAAADYmK18x2nrrbeOvLzCX+Nr2bJlxriod64AAAAAAAAAAGBjIgCLYtWwYcOM8dSpU1e7rlKlStG4ceOMuQkTJhTprJXXb7vttkXaDwAAAAAAAAAAkE3bbbddxrh69epF2r/y+hkzZmxwTwAAAAAAAAAAkCsCsChWBQUFGePFixevce3KgVVfffVVkc4aNWrUWusBAAAAAAAAAABsTFq1apUxXrhwYZH2L1iwIGNcuXLlDe4JAAAAAAAAAAByRQAWxeqnn37KGNetW3eNa3feeeeM8fvvv1/ocyZPnhzff/99elxQULDK5TAAAAAAAAAAAICNya677pox/vnnn4u0f8qUKRnj2rVrb3BPAAAAAAAAAACQKwKwKDYTJ06M8ePHZ8w1atRojesPOeSQjPFbb70VSZIU6qw33ngjY7zvvvtG1apVC9kpAAAAAAAAAABA9h188MGRl/e/a3vjxo2LX375pdD7P/roo4xxy5Yti603AAAAAAAAAADINgFYFJv77rsvY9yoUaNo0aLFGte3a9cu6tSpkx6PHTs2hgwZsl5nHX744YVvFAAAAAAAAAAAIAfq1asXe+21V8bcs88+W6i9S5Ysieeeey5jrmPHjsXVGgAAAAAAAAAAZJ0ALIrFqFGj4pZbbsmYO+KII9a6Jy8vL3r16pUx16dPn0iSZK37Bg4cGO+88056XK1atejevXuR+gUAAAAAAAAAAMiF3r17Z4xvuummWLhw4Tr33XPPPfHTTz+lx9WrV48DDjig2PsDAAAAAAAAAIBsEYBFhpEjR8att94a8+bNK9KeAw88MGbPnp2eq1SpUlx88cXr3HvRRRdF1apV0+OhQ4fGjTfeuMb1kyZNipNPPjlj7uyzz446deoUul8AAAAAAAAAAIBcOeaYY2LHHXdMj7/55pvo3bt3LFu2bI17Pvzww7jwwgsz5s4444yoUaNGifUJAAAAAAAAAAAlLT/XDVB07733XsyfP3+V+U8//TRjvGDBgnjrrbdWW6NBgwbRqlWrVeZnzpwZ5513Xlx77bXx+9//Po488sho06bNKgFTSZLEF198Effcc0/07dt3lS8QXn/99dGgQYN1vkudOnXikksuiUsuuSQ997e//S0mTJgQf//739M1li1bFgMGDIizzz47JkyYkPEe559//jrPAQAAAAAAAAAA2Bjk5eXFrbfeGl26dIkkSSIi4sEHH4xJkybFDTfcELvttlt67axZs+K+++6LK664IubMmZOe32abbTLuXAEAAAAAAAAAQGkkAKsUOu6442L8+PHrXPfzzz9Hly5dVvtbz54944EHHljj3unTp8c999wT99xzT0REbL755lGnTp2oVq1azJkzJyZNmhQzZsxY7d7zzz8/zj777HW/yP930UUXxfvvvx8vvfRSeu6uu+6Kvn37RpMmTaJGjRoxbty4mDlzZsa+SpUqxZNPPhk1a9Ys9FkAAAAAAAAAAAC5tt9++8X1118fF198cXrurbfeit133z3q168fDRs2jLlz58Z3330XixYtythbu3btePrpp6NatWrZbhsAAAAAAAAAAIqVACwK5eeff46ff/55rWuqV68ed955Zxx33HFFqp2XlxdPPfVUnHDCCfH444+n55cuXRpjx45d7Z7ll7j22muvIp0FAAAAAAAAAACwMbjooouicuXKcf7558fixYvT8z/99FP89NNPq93TsmXLePHFF6NFixbZahMAAAAAAAAAAEpMXq4bYOOy4447xo3/j717D7K6vA8//jkLLAssZbkIyMVlDa2A0ykWEyYwEHDBqAgYLWJsJmihjWIyySSCA15JzBgviZVUokaMOrXebxVMoigEZCtaLzEjyIiyUBAFgSVcdrnu74/fr+eXAyzs0eU5q75eM8zwPOf7fJ/PGf3zzJsbb4wzzjgjOnXq1Kgz/fr1i5tuuimqq6vzjl/9r5KSknjwwQfjsccei4EDBzb4XLt27WLq1KmxfPnyGDFixCe6CwAAAAAAAAAAoDn43ve+F2+99VZMnDgxWrVq1eBzFRUVcdttt8Vbb70lfgUAAAAAAAAAwOdGy0IPQP6qq6uP2bs7d+4c06dPj+nTp0dExJo1a+Ldd9+NtWvXxtatW6O2tjZKSkqiY8eOcfzxx8fgwYOjc+fOTXb/eeedF+edd16sWrUqli1bFuvXr489e/ZEWVlZ9O/fP4YOHRolJSVNdh8AAAAAAAAAAEAh9evXLx566KH485//HFVVVfHuu+/Gtm3borS0NLp16xZ///d/HyeddFKhxwQAAAAAAAAAgCYngMURlZeXR3l5efJ7+/btG3379k1+LwAAAAAAAAAAQCH81V/9VZxxxhlxxhlnFHoUAAAAAAAAAABIoqjQAwAAAAAAAAAAAAAAAAAAAAAAAPDFIoAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAA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AAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASEoACwAAAAAAAAAAAAAAAAAAAAAAgKQEsAAAAAAAAAAAAAAAAAAAAAAAAEhKAAsAAAAAAAAAAAAAAAAAAAAAAICkBLAAAAAAAAAAAAAAAAAAAAAAAABISgALAAAAAAAAAAAAAAAAAAAAAACApASwAAAAAAAAAAAAAAAAAAAAAAAASKploQcAAAAAAAAAAAAAAAAAAAAAGm/QtPsLPQIAQHKv3fztQo9AEysq9AAAAAAAAAAAAAAAAAAAAAAAAAB8sQhgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASQlgAQAAAAAAAAAAAAAAAAAAAAAAkJQAFgAAAAAAAAAAAAAAAAAAAAAAAEkJYAEAAAAAAAAAAAAAAAAAAAAAAJCUABYAAAAAAAAAAAAAAAAAAAAAAABJCWABAAAAAAAAAAAAAAAAAAAAAACQlAAWAAAAAAAAAAAAAAAAAAAAAAAASbUs9ABwsLq6uqiqqop33nkntm7dGsXFxdGrV68YPHhwnHjiiYUeDwAAAAAAAAAA4FOrr6+P6urq+NOf/hTr1q2LmpqaaN26dXTs2DH++q//Or785S9HSUlJoccEAAAAAAAAAIBjRgCLw7ruuuti1qxZn/j8pEmT4t57783rzKZNm2LWrFlx7733xs6dOw/7zKBBg+Lqq6+O8ePHf+LZAAAAAAAAAAAACmHr1q3x1FNPxe9+97t48cUX4+OPP27w2VatWsWYMWPiBz/4QXzta19LOCUAAAAAAAAAAKRRVOgBICJi0aJFMWDAgLj99tsbjF9FRLz22mtxzjnnxKRJk2LPnj0JJwQAAAAAAAAAAPjkLrvssujevXv80z/9UzzyyCNHjF9FROzduzeeeuqpGDFiREyaNCn+/Oc/J5oUAAAAAAAAAADSaFnoAeCll16Ks846K2pra3P2y8rKoqKiIrZu3Rr/8z//E/v3789+dv/998eOHTvisccei0wmk3pkAAAAAAAAAACAvCxbtuyw/+hfixYt4vjjj49u3brF3r17Y82aNbFt27acZ+6///5455134oUXXojS0tJUIwMAAAAAAAAAwDElgEWj3HLLLfF3f/d3jX6+R48ejXpu69atMXHixJz4VXl5edx2220xbty4bNxq3bp1cf3118edd96Zfe6JJ56IW2+9NX74wx82ei4AAAAAAAAAAIBCKysriwsvvDDGjBkTw4YNi/bt22c/279/fyxZsiSuueaaWLJkSXb/lVdeiYsuuigee+yxQowMAAAAAAAAAABNTgCLRhk0aFCMGDGiyd978803xwcffJBdV1RUxEsvvXRIQKtXr15xxx13xAknnBBXXnlldv/HP/5xXHzxxdGxY8cmnw0AAAAAAAAAAKAp9enTJ6666qq48MILo02bNod9pkWLFjFixIhYuHBhTJ06Ne66667sZ48//ngsXLgwRo4cmWpkAAAAAAAAAAA4ZooKPQBfXJs2bYpf/vKXOXu//vWvD4lf/aUZM2bE8OHDs+tt27bFLbfccsxmBAAAAAAAAAAAaAqzZs2KlStXxuTJkxuMX/2lFi1axJw5c+LUU0/N2b/77ruP1YgAAAAAAAAAAJCUABYF89BDD8WOHTuy6+HDh0dlZeURz2Qymbj22mtz9u65556or68/JjMCAAAAAAAAAAA0hTFjxkRxcXFeZ1q0aBHTp0/P2fv973/flGMBAAAAAAAAAEDBCGBRME8//XTOevLkyY06N3LkyKioqMiuP/zww3j55ZebdDYAAAAAAAAAAIDmYNiwYTnrzZs3x65duwo0DQAAAAAAAAAANB0BLApix44dsXjx4py9008/vVFnM5lMjBo1Kmdv3rx5TTYbAAAAAAAAAABAc9GxY8dD9rZt21aASQAAAAAAAAAAoGkJYFEQb7/9duzduze7rqioiO7duzf6/NChQ3PWb775ZlONBgAAAAAAAAAA0GysX7/+kL3OnTsXYBIAAAAAAAAAAGhaLQs9AJ8du3fvjvfffz82b94crVq1is6dO0ePHj2ibdu2eb9rxYoVOesBAwbkdf7g5w9+HwAAAAAAAAAAwOfBkiVLctbl5eVRXFxcoGkAAAAAAAAAAKDpCGDRKJdddlm8//77UVdXl7PfsmXLGDRoUJx55pkxderUOO644xr1vpUrV+ase/fundc8Bz+/Zs2aqKuri5KSkrzeAwAAAAAAAAAA0Jzdc889OeuzzjqrQJMAAAAAAAAAAEDTKir0AHw2LF++/JD4VUTEvn37YtmyZXHddddFeXl5XHPNNbF///6jvm/jxo056169euU1T7du3aJly//fbztw4EBs3rw5r3cAAAAAAAAAAAA0Z88++2wsXrw4Z++iiy4qzDAAAAAAAAAAANDEWh79EWic2tra+MlPfhJLliyJZ555JkpLSxt8dseOHTnrdu3a5XVXJpOJNm3axPbt2xt85ye1cePG2LRpU15nVq1a1SR3AwAAAAAAAAAARERs2bIlvvOd7+TsnXPOOfGVr3ylSe/xeykAAAAAAAAAAApFAIsGZTKZ+OpXvxpjxoyJr3zlK9G/f//o1KlTFBUVxebNm+P111+PefPmxX333Rd1dXXZc4sWLYoLLrggnn766WjRosVh331wrKqkpCTv+Y5VAGvOnDkxa9asJnkXAAAAAAAAAABAvg4cOBDf+ta3Yt26ddm9Dh06xOzZs5v8Lr+XAgAAAAAAAACgUIoKPQDN0+mnnx7vvPNOLF26NGbOnBmjRo2Knj17Rps2baJ169bRo0ePOPvss+OOO+6Id999N4YOHZpzfv78+TFnzpwG3/+XwayIiOLi4rxnbN26dc66trY273cAAAAAAAAAAAA0N9OmTYvf/va3OXt33nln9O7du0ATAQAAAAAAAABA0xPA4rCGDBkSf/M3f9OoZ3v16hULFiyIr371qzn7119/fezateuwZ0pKSnLWe/bsyXvG3bt3H/GdAAAAAAAAAAAAnzWzZ8+OX/ziFzl706dPj4kTJxZoIgAAAAAAAAAAODZaFnoAPh9KSkri/vvvj/79+8e+ffsiImLjxo3x3HPPxTnnnHPI86WlpTnrurq6vO+sra094js/qalTp8aECRPyOrNq1arDfk8AAAAAAAAAAIDG+o//+I/4wQ9+kLN30UUXxc9+9rNjdqffSwEAAAAAAAAAUCgCWDSZvn37xrhx4+KJJ57I7jU2gLVz58687qqvrz9mAayuXbtG165dm+RdAAAAAAAAAAAAjTFv3ryYNGlS1NfXZ/fOPffcuPvuuyOTyRyze/1eCgAAAAAAAACAQikq9AB8vlRWVuasV65cedjnDv7B1Lp16/K656OPPop9+/Zl10VFRdGlS5e83gEAAAAAAAAAANAcLFy4MCZMmJDzm6jRo0fHgw8+GC1atCjgZAAAAAAAAAAAcOwIYNGkevfunbPetGnTYZ876aSTctZr167N656Dny8vL4+SkpK83gEAAAAAAAAAAFBoy5Yti3HjxkVdXV12b8iQIfHkk09GcXFxAScDAAAAAAAAAIBjSwCLJtWqVauc9d69ew/7XL9+/XLWy5cvz+ueFStWHPF9AAAAAAAAAAAAzd1bb70VZ555ZuzYsSO7d8opp8Szzz4b7dq1K+BkAAAAAAAAAABw7Alg0aQ+/PDDnPVxxx132OdOPvnknFhWdXV1bNiwodH3LF26NGc9cODAxg8JAAAAAAAAAABQYCtXrozRo0fH1q1bs3v9+/eP3//+99GhQ4cCTgYAAAAAAAAAAGkIYNGkXnrppZx17969D/tc+/btY/jw4Tl7zz//fKPuqK+vjwULFuTsjR07No8pAQAAAAAAAAAACmfNmjUxatSo2LhxY3avoqIinn/++Qb/0UEAAAAAAAAAAPi8EcCiydTU1MTjjz+es1dZWdng8+PGjctZz507t1H3LFy4MFavXp1dd+vWLQYPHpzHpAAAAAAAAAAAAIWxYcOGqKysjHXr1mX3evbsGS+88EL07NmzgJMBAAAAAAAAAEBaAlg0mcsvvzxqamqy6+Li4jjzzDMbfP6CCy6Idu3aZdeLFy+OF1988Yh31NfXx6xZs3L2Lr744igq8r8yAAAAAAAAAADQvG3ZsiVGjx4d7733XnbvuOOOi+effz4qKioKOBkAAAAAAAAAAKSnGsQhfvazn8Vrr73W6Of37dsXP/rRj2Lu3Lk5+5dcckkcf/zxDZ7r2rVrfPe7383ZmzJlSnzwwQcNnrnhhhti8eLF2XWHDh1i2rRpjZ4VAAAAAAAAAACgELZv3x5nnHFGvP3229m9srKyeO6556J///4FnAwAAAAAAAAAAAqjZaEHoPn53e9+FzNmzIghQ4bE+eefH5WVldGvX79o2TL3f5dt27bFs88+GzfddFO8+eabOZ996Utfimuuueaod02fPj3uu++++PDDDyMiYvXq1TFkyJCYPXt2jB07NjKZTERErFu3Lq6//vq48847c85feeWV0alTp0/xbQEAAAAAAAAAAI69cePGxauvvpqz98Mf/jA+/vjjWLBgQV7vGjRoUHTs2LEpxwMAAAAAAAAAgOQEsGhQVVVVVFVVRURE69ato1evXtGhQ4do0aJFbN68Oaqrq+PAgQOHnOvevXv89re/jc6dOx/1jk6dOsXDDz8cX//616Ouri4iItasWRPjx4+PsrKyqKioiJqamli7dm3s378/5+z48ePj8ssvb4JvCgAAAAAAAAAAcGwtWrTokL3G/CODh7Nw4cIYMWLEpxsIAAAAAAAAAAAKTACLRtm9e3e89957R33urLPOit/85jfRtWvXRr97+PDhMX/+/JgwYUJs2bIlu19TUxNvvPHGYc9ceOGFcc8990Qmk2n0PQAAAAAAAAAAAAAAAAAAAAAAQPNQVOgBaH6uvPLKuOSSS+Lkk0+OFi1aHPX50tLSmDBhQvzhD3+I+fPn5xW/+l+nnXZaLF++PC699NJo27Ztg8+dcsop8fjjj8cDDzwQrVu3zvseAAAAAAAAAAAAAAAAAAAAAACg8FoWegCan9GjR8fo0aMjImLXrl2xfPnyqK6ujg0bNsSOHTviwIEDUVZWFh07dowBAwbE3/7t3zYqlHU03bp1izlz5sTPf/7zqKqqihUrVkRNTU0UFxdHz549Y/DgwdG3b99PfQ8AAAAAAAAAAEBq9fX1hR4BAAAAAAAAAACaFQEsjqht27Zx6qmnxqmnnprszjZt2kRlZWVUVlYmuxMAAAAAAAAAAAAAAAAAAAAAAEinqNADAAAAAAAAAAAAAAAAAAAAAAAA8MUigAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAC3BG/SAAEAAElEQVQAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAAAAAAAAAAACQlgAUAAAAAAAAAAAAAAAAAAAAAAEBSAlgAAAAAAAAAAAAAAAAAAAAAAAAkJYAFAAAAAAAAAAAAAAAAAAAAAABAUgJYAAAAAAAAAAAAAAAAAAAAAAAAJCWABQAAAAAAAAAAAAAAAAAAAAAAQFICWAAAAAAAAAAAAAAA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8d577+X999+v6T3PPPNMp+OXXnrpc49jVtT8wVu9PQQAgB733//+t7eHwExOHQ0AzG7U0HxeamgAYHakjp6ySfMbLS0tvTQSmEBeavZjjgoAzI7MUfk81NAAwOxIDc3noYYGAGZHaugpm5mzUhpg0WsmDV/169ev5nv0799/mvfsjt/97nf51a9+9bnusd12233ucQAAMGv48mVH9vYQAABgpqKGBgCA2qmju+bNN9/Mqquu2tvDYDYmLwUAwOzAHBUAAGqjhgYAgNqoobtmZspKFXt7AMy+xo8f3+m4T58+Nd+jb9++nY6bm5s/15gAAAAAAAAAAABmBHkpAAAAAAAAAADoTAMses2kTzBsbW2t+R4tLS3TvCcAAAAAAAAAAEA9kJcCAAAAAAAAAIDOGnt7AMy+Bg0a1Ol40iccdsWkTzCc9J7dccABB2SnnXaq6T2jR4/OP//5z8w555yZe+65s+iii072tEUAesdLL72U7bbbrnp86623Zumll+69AQEAQJ1TQwMAQG3U0AD1q6WlJW+++Wb1eP311+/F0YC8FAAznjkqAADURg0NAAC1UUMD1K+ZOSulARa9ZtLw1bhx41KpVFIoFLp8j7Fjx07znt0x//zzZ/7556/5fWuvvfbn/mwAZryll146K664Ym8PAwAAZhpqaAAAqI0aGqC+rLrqqr09BKiSlwKgp5mjAgBAbdTQAABQGzU0QH2ZWbNSxd4eALOveeedt1N4q62tLe+9915N93j77bc7HXcniAUAAAAAAAAAADCjyUsBAAAAAAAAAEBnGmDRa/r3758hQ4Z0OvfGG2/UdI9Jr19uueU+97gAAAAAAAAAAACmN3kpAAAAAAAAAADoTAMsetWkAaxnnnmmpvc/++yz07wfAAAAAAAAAABAvZCXAgAAAAAAAACAT2mARa9aZZVVOh0/8sgjXX7vO++8k9dee6163NTUlBVWWGE6jQwAAAAAAAAAAGD6kpcCAAAAAAAAAIBPaYBFr9p66607Hf/lL39JpVLp0nvvvvvuTscbbrhhBg0aNN3GBgAAAAAAAAAAMD3JSwEAAAAAAAAAwKc0wKJXff3rX8+8885bPX7llVdy3333dem9l1xySafj//u//5ueQwMAAAAAAAAAAJiu5KUAAAAAAAAAAOBTGmDRq4rFYvbaa69O5371q1995lMN77333jz44IPV4znmmCM777zzjBgiAAAAAAAAAADAdCEvBQAAAAAAAAAAn9IAi153+OGHZ9CgQdXj+++/P6eccspUr3/77bezzz77dDp30EEHdXoyIgAAAAAAAAAAQD2SlwIAAAAAAAAAgAk0wKLXzTvvvDniiCM6nfvFL36RAw44IP/73/+q58rlcm699dZ8/etfz2uvvVY9v/DCC+ewww7rqeECAAAAAAAAAAB0m7wUAAAAAAAAAABMoAEWdeHwww/P1ltv3enceeedlyFDhmSppZbKqquumnnmmSfbb7993njjjeo1/fv3zw033JC55567h0cMAAAAAAAAAADQPfJSAAAAAAAAAACgARZ1olgs5sYbb8wuu+zS6XypVMorr7ySJ554IiNHjuz02jzzzJM77rgjQ4cO7cGRAgAAAAAAAAAAfD7yUgAAAAAAAAAAkDT29gCgQ79+/XLttdfmm9/8Zk444YQ8+eSTU7xu4MCB2XPPPXPMMcdk/vnn79lBAjDTmW+++XLMMcd0OgYAAKZODQ0AALVRQwMA3SUvBcD0Zo4KAAC1UUMDAEBt1NAAzAiFSqVS6e1BwJS89NJLeeyxx/L222+ntbU1c889d5ZffvkMHTo0/fr16+3hAQAAAAAAAAAATDfyUgAAAAAAAAAAzG40wAIAAAAAAAAAAAAAAAAAAAAAAKBHFXt7AAAAAAAAAAAAAAAAAAAAAAAAAMxeNMACAAAAAAAAAAAAAAAAAAAAAACgR2mABQAAAAAAAAAAAAAAAAAAAAAAQI/SAAsAAAAAAAAAAAAAAAAAAAAAAIAepQEWAAAAAAAAAAAAAAAAAAAAAAAAPUoDLAAAAAAAAAAAAAAAAAAAAAAAAHqUBlgAAAAAAAAAAAAAAAAAAAAAAAD0KA2wAAAAAAAAAAAAAAAAAAAAAAAA6FEaYAEAAAAAAAAAAAAAAAAAAAAAANCjNMACAAAAAAAAAAAAAAAAAAAAAACgR2mABQAAAAAAAAAAAAAAAAAAAAAAQI/SAAsAAAAAAAAAAAAAAAAAAAAAAIAepQEWAAAAAAAAAAAAAAAAAAAAAAAAPUoDLAAAAAAAAAAAAAAAAAAAAAAAAHqUBlgAAAAAAAAAAAAAAAAAAAAAAAD0KA2wAAAAAAAAAIBUKpXeHgIAAAAAAAAAAECPkJcCqA8aYAEAAAAAAADAbGriEFehUMi4cePywQcf5L777su4ceN6cWQAAAAAAAAAAADTl7wUQP3RAAsAAAAAAAAAZkOVSiWFQiFJ8vLLL+dPf/pTNtlkk6y99trZeeedc+qppwp1AQAAAAAAAAAAswR5KYD61NjbAwAAAAAAmJ7K5XKKxQm9/ydeoAIAADrrqJXPP//8XHnllXniiScyfvz4FIvFlMvlXHXVVWlvb88RRxyRAQMG9PJoAQAAAAAAmBJ5KQAA6Bp5KYD6VOztAQAAAAAAfB6VSqXTcalUSpKMGjUqH3/88RRfAwCA2VVH/VypVPLvf/87BxxwQA444IA8+uijGT9+fKdrR44cmQcffDD33HPPZHU3AAAAAAAAvUNeCgAAuk5eCqD+FSr+rwsAUBdKpVIaGho+8xwAAPCpiZ9eOGLEiDz77LM544wz8tZbb+Xtt99OW1tbtt9++6y22mo58MADk3jKIQAAs6+OWrhUKuXuu+/OueeemzvvvLP6+he+8IXMO++8+f73v5+llloqG220UQqFQgYMGOBv1QAAAExXslIAANA98lIAANB18lIAMwcNsAAA6sDEi1DXX399xowZk3322aeXRwUAAPVt4jr6D3/4Q6644or86U9/Smtra5KkoaGh0xMMd9ppp1x22WXp379/p/cCAMDspFQq5aabbsq5556bhx9+uHp+6NCh2X///bP++uvni1/8Yqf3qJ8BAACYnmSlAACge+SlAACgdvJSAPVPAywAgF428ZMLjzvuuBx77LFJknXWWSf77bdf1lxzzSy99NLV602cAQCgc118zjnn5Pjjj8/HH3+cUqlUfVphpVJJsVisHpdKpWyxxRa55ZZb0rdvX08RBwBgtlOpVHLnnXfmpJNOyiOPPJJkwkaInXfeOVdffXWn6zwFHAAAgBlBVgoAALpHXgoAAGonLwUwc9AACwCgTvzqV7/Kr371qyRJ375909LSkrnmmitzzDFHjj766Hzta1/LKqusUr3ehBoAgNnVxEGsk08+OUceeWSn1/v165clllgiH330UcaOHZtPPvkkffv2TXt7e0qlUr797W93WqwCAIBZXceGiJdffjmHHHJI/vSnPyVJBg4cmB/84Ac59dRTk8SmBwAAAHqMrBQAAHSdvBQAANRGXgpg5qIBFgBAHbj55puz0047JUmamprS3t6eQqGQSqWSjnJtueWWy2abbZaDDjoo8847bwYNGiTYBQDAbGfiJxmecMIJOfroo6uvLbXUUtlggw1ywAEHZPHFF88HH3yQf//73zn88MPzyiuvpG/fvmlra0uhUMgll1yS73znO731NQAAoMdM/Hfkgw8+OGeffXb1tf322y/nnXdeEmEuAAAAeo6sFAAAdJ28FAAA1EZeCmDm09jbAwAAIGlpaUmS9OnTJ21tbUmS/v37p729PS0tLSkWi3n++efz3HPP5Z577snyyy+fI488MksvvXQGDRqUxFMOAQCY9U0rzLXKKqvkyCOPzAYbbJB55pkn5XI5gwcPzjLLLJO11lorG220UV588cU0Njamvb09TzzxhEAXAACzhY6/G1977bWdwlxbbbWVMBcAAAC9QlYKAAC6Rl4KAABqJy8FMPMp9vYAAABIdt1112yzzTZpbW1Nksw555zZaKONsv/++2fw4MEpl8tJJky8n3vuudx8883ZYIMNcuCBB+baa6+tvpZMmHgDAMCsZlphrtVWWy1nnHFGttlmm8wzzzxJUr22VCplkUUWybXXXpv5558/7e3tSZK///3v+eSTT3r4WwAAQM8rl8v55JNPcscdd1Tr5KWXXjonn3xyEmEuAAAAep6sFAAAfDZ5KQAA6B55KYCZjwZYAAC9rCOEtdtuu2Xw4MEpFAr55JNPMmTIkBx33HG5//77s8suu2TFFVdMpVKpLmSNHj06V111VXbbbbfsvPPOOeecczJu3DgTbwAAZjnTCnOtuuqqOf3007POOuukT58+k723oaEh5XI5X/rSl7L66qt3Ot+3b9/Jrq9UKjPgGwAAQO8pFot5/fXX84c//KG6gXiNNdbIkCFDksTflAEAAOhRslIAAPDZ5KUAAKD75KUAZj4aYAEA9LKOyfJ6662X+eabL+VyOaVSKeeff36efPLJfPnLX85FF12U2267LYccckiWWmqp6ns7FqxuuummHHzwwVlrrbVy4YUX5t///nenz+iYpAMAwMymVCpNM8x1xhln5Otf/3oaGxuneZ+BAwdm4YUXTjKhjl5nnXXS1NSUlpaWNDc3p7m5OcmnTwtXQwMAMCvo2LBwxx13ZMyYMWlqakoyYZPxnHPO2ZtDAwAAYDYlKwUAANMmLwUAAN0nLwUwc9IACwCgDlQqlSy44II5/vjj069fvzQ0NKRUKuXMM8/MRx99lIEDB2aJJZbI6aefnquvvjrnnHNO5ptvvmogrKGhIY2NjfnPf/6TQw89NJtsskmGDRuWxx57LEmqC2AAADAzqVQq1Zr3pJNO6hTmWnPNNTNs2LCsvfbanxnm6qiHR40alSRpb2/PHHPMkcsvvzybbrppVllllay11lr5xje+keOOOy7PPfecGhoAgFlCx4aFp59+OsmEWrhfv35ZdNFFbWIAAACg18hKAQDAlMlLAQDA5yMvBTBzKlQ6WhgCANDr/vvf/+Zb3/pWnnnmmSTJUkstldtvvz3LLrtsWltbq08xTJIXXnghd955Z6677rpqeCuZ8HSW1tbWJMniiy+e9dZbL4ceemgWXXTRDB48OJVKJYVCofpfAACod0cccUR+/etfJ5lQ75bL5Vx00UXZc889u3yPv/71r9lhhx0yevTozDXXXFlppZXy4IMPVl9vampKW1tbkglPPzz77LOz9dZbZ7755pu+XwYAAHpQpVJJuVzO5ptvnnvvvTcNDQ1ZYIEF8sILL2TAgAG9PTwAAABmc7JSAAAwZfJSAADQPfJSADMnbbkBAOrIiiuumF122aV6/PLLL+eEE05Ikk6BrkqlkmWXXTYHHXRQHnnkkZx88snZZpttkqQa6EqSN954I1dccUV22GGH7LHHHnnooYcyevToJBHoAgBgptDe3p4XXnghyYSneVcqlbS3t+eQQw7Jc889lyQplUrTvMfbb7+d2267LWPHjk1jY2NGjRpVDXN1PLmwvb09SdKvX7+MHTs2BxxwQM4999y8+eabM+qrAQBAj2hpackHH3yQZMLfhUulUnriOVmemAgAAMBnkZUCAIDJyUsBAMDnIy8FMPPRAAsAoE50TG6/853vZNVVV02xWEyxWMzDDz9cXWzqmGR3BLJKpVIKhUIOP/zwXHPNNbn22muz9tprp1+/ftVrisViXnnlldxxxx3ZaKONstdee+X8889PqVSqfqaJNQAA9aqxsTGXX3559t5775RKpbS1taV///4ZOXJkvv71r+e///1vGhoaphrqGjlyZG644YZcdNFFKZVKaW9vT2NjY1ZcccV8//vfz+GHH57tttsuX/7yl5Mk48ePT79+/dLS0pJTTjklN9xwQ8rlco8seAEAwPRWKBQyYMCADB48OMmEjQzvvvtunn766Rn2mR2bMG655ZaMHTt2hn0OAAAAMzdZKQAAmDJ5KQAA6D55KYCZkwZYAAB1ouNJKgsttFBWXHHFatDq1VdfzQMPPJBk8icRNjQ0VK8bOHBgdt5556yxxhppaWlJY2NjyuVy9fWmpqa0t7fntttuywEHHJBtttkmp5xySkaOHFn9bAAAqEcDBw7M2Wefnb322itJ0tzcXA11rbvuunnmmWemGOoaNWpUrr766vzyl7/M+PHjk0x4YuE555yTG2+8MRdccEFOPPHE3HLLLbnpppvygx/8IMmnoa7W1tYceeSR+dvf/pZCoSDUBQDATKcjXDX33HMnmfB34mKxmHfeeaf6+vRWKBQycuTInHnmmTnppJMybty46f4ZAAAAzPxkpQAAYOrkpQAAoHvkpQBmToWKv0IAANSNSqWSQqGQV199Neutt17efvvtJMmgQYNy7733ZvXVV5/qe997771cfPHFOeqoo6qT8AUXXDDbbbddbrrppowcOTLt7e3p27dvWlpaqu/70pe+lG9/+9vZYIMNst56683YLwgAAJ/DuHHj8sMf/jCXXXZZkqR///5pbm7O3HPPnYceeigrrLBCyuVyisViRo0alauuuio/+9nP0tzcXL3+jjvuyPrrr1+9Z2tra/r06VM9/vnPf55TTz01yYTw1/jx47PqqqvmrrvuyjzzzNNzXxYAAKajU089NT//+c/Tp0+ftLa2ZoMNNsitt96aOeecc4Z83gcffJBll102gwcPzu67756f//zn6d+//wz5LAAAAGZeslIAADBt8lIAANA98lIAMxePrwEAqCMdT0mZb775summmyZJ+vbtm/b29vztb39Lksme0pIkH3744WSBrgUWWCCPPvpofve73+XGG2/M8ccfn7nnnrsa6CoWixk4cGCef/75HHvssfn444976FsCAED3DBgwIOeee+4Un2y4zjrr5JlnnkmxWMyHH344xTDX/fffn/XXX7/TU1s6wlwdTwP/9a9/nX333TfJhCcbdjztZcSIET34TQEAYPpacMEFk0zY0FAoFPLaa6/l+eefTzLlvzl3V0et/de//jUjR47Mq6++mosuuijPPvvsdPsMAAAAZh2yUgAAMG3yUgAA0D3yUgAzFw2wAADqTKFQyKBBg7LzzjsnSVpaWjJ+/PhccsklGT16dBoaGqqLTcmEQNcFF1wwWaDroYceymKLLZZKpZL1118/hx9+eP7xj3/k8MMPz2qrrZZyuZyxY8cmSS699NL83//9X89/WQAAqNFnhbr+/ve/584775wszHXffffla1/7WsrlcgqFwmT3LRaL1Xr6wAMPzPLLL59isZhCoZB33nknf/3rX5OkUxgMAABmFjvvvHOGDh1aPX7ttdcybNiwJJnsb86fR0et/dJLL1XPLbbYYllxxRWny/0BAACY9chKAQDAtMlLAQBA7eSlAGYuGmABANSpzTbbrLpI1djYmBdffDHDhg1Le3t7isUJZdy0Al1LLbVUSqVSdQJdLpez1FJL5dhjj83dd9+dww47LF/5yldyySWXZM8990xicQoAgJnDtEJd3/jGN7LvvvtOFuZaffXVUy6Xq7X0lHTUziuuuGIWWWSRTuGvvn37droGAABmJo2Njfnyl7+cZMJTvYvFYm666aaceOKJSTpvcPi8nn322Vx44YXV40UXXTRNTU3T5d4AAADMumSlAABg6uSlAACgNvJSADMXDbAAAOrYWmutleTTsNWjjz6a8ePHJ0nee++9zwx0NTQ0VO/VsXDVt2/fDB48OMOGDcudd96Z7373u0ky1Se7AABAPZpSqKtv374ZN25ctWbu379/7r333i6FuTqUSqUUi8UstdRS1WMAAJjZNTY25sgjj8yCCy6YlpaW6t+Or7766lx99dVJJmxe+Dyhro7a+YEHHsjHH3+cJJl33nnzs5/9bLoGxgAAAJh1yUoBAMDUyUsBAEDXyUsBzFw0wAIAqGP77rtv1ltvvepE+K9//Wsuu+yytLW15ZJLLulyoGtS5XI5SbLwwgsnmRAa68riFgAA1JNJQ10dC1PFYjGFQiHDhw/PWmutlZaWli5vYOioo5ubm1MoFNLY2Ji55547q6yyygz6FgAAMOOVSqV88YtfzPHHH58555wzbW1tSZLnnnsuF1xwQe64444k3Q91dfxNetSoUfnNb36TMWPGJElWX331DBkypHpvAAAAmBZZKQAAmDZ5KQAA6Bp5KYCZi5U7AIA61RG82muvvTJo0KD06dMnSXLllVfm0EMPzS9/+ctuBbqSTBbgMpEGAGBmNWmoq+OJhJVKJQceeGD+/e9/p2/fvtX6uiv+9a9/5dZbb02lUklbW1u++MUvZqWVVppB3wAAAGa8jr8Zr7feetloo43S1NRUfe2hhx7K7373u9x+++1JJvy9uJb6ueNv0s3Nzdlxxx3z/PPPV1/bb7/9Mv/880+nbwEAAMCsTFYKAAC6Rl4KAAA+m7wUwMylsbcHAADAlHUErzbccMPMNddcefvtt5MkTzzxRP75z392O9AFAACzmo5QV5JcdtllaW9vT//+/fPRRx9lgw02yEMPPZQVVlihS/Xyhx9+mBtuuKH6hJe55porP/3pT9OvXz/1NgAAM71lllkmP/rRj/Laa6/lqaeeSrFYTKlUyh133JFRo0Zl5MiR2W233arnP6v+7bhm/PjxOfDAA/O3v/2t+tqxxx6bbbfddkZ/JQAAAGYRslIAANB18lIAANA18lIAM4fiZ18CAEBvqVQqWWyxxXLUUUdVQ16lUimNjRP6mAp0AQDABJM+2bC5uTn9+/fPyJEjs8466+SZZ55JQ0NDSqXSVO8xfvz43HPPPbn66qvT3NycYrGYtdZaK2uvvXaSqLcBAJipdWwU3nDDDfOrX/0qCyywQKe/Kz/88MM54YQTctxxxyX5tP6d1tMNO55kuPvuu+e6666rfsauu+6a3XbbrdPnAgAAwGeRlQIAgK6TlwIAgGmTlwKYeWiABQBQxwqFQpJktdVWy2KLLZZkwtMO29rassACC+Sf//ynQBcAAPz/Pk+oq6WlJXfffXeOPPLI6hPF55prrhx88MFZeumle/JrAADADFEoFKrhqm222SZnnnlmFlpooU6BrRdeeCHHHntsdtxxxzz88MMZNWpUdcNxh457vPfee3nkkUey3nrr5ZZbbsn48eOTJFtssUX233//LLXUUtXPBQAAgK6QlQIAgNrISwEAwNTJSwHMPAoV7QMBAGYKP/nJT3LGGWdUj7fddtvceuutSSZMoE2KAQBggnHjxuWHP/xhLrvssiRJ//7909zcnLnnnjsPPfRQVlhhhbS3t1efFt7S0pK77rorhxxySF599dXqfa699tp861vf6o2vAAAAM8zEf0/+05/+lGOPPTZPP/102tra0tTUlFKplHK5nC9+8YsZMmRIDjzwwCy00EJZYYUV0tjYmBdffDEvvPBCbrrppvzjH//IiBEjqvfefPPN88Mf/jBbbrllb309AAAAZhGyUgAA0HXyUgAAMHXyUgD1TwMsAIA6Vy6XUywW89///jc77bRTnnvuuRSLxfTt2zdXXXVVtt9++94eIgAA1J1phboefPDBrLjiikmS8ePH5+67754szHXppZdmzz33TGIT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Qw89lN/+9rdJkmKxmHK53DsDBQCAOtDY2Ji2trYsuuiieemll7LAAgukVCpVn8ZdLBaz2WabZY899sjgwYPVzwAAzPbU0AAAANQTWSkAAKiNtR4AAKiNGhqAiWmABQDQBYVCIU8//XS+9rWvpa2trXquUqmksbExI0aMyLBhw3LGGWckEewCAAAbIwAAoDZqaAAAAOqFrBQAANTOWg8AANRGDQ1ABw2wAAC6qL29PSussEKSZODAgTnxxBPzxS9+Me3t7WlsbMw777yT008/PWeeeWYSE2oAAGZvNkYAAEBt1NAAAADUE1kpAACojbUeAACojRoagA4aYAEAdNFXv/rVXHDBBdlkk01y2mmn5fDDD89jjz2WIUOGdAp2nXbaaYJdAAAQGyMAAKBWamgAAADqhawUAADUzloPAADURg0NQJIUKpVKpbcHAQAwM6hUKikUCvnwww/Tv3//9O/fP4VCIW+99VbWWWedvPHGG2lsbEx7e3sWWmih/OQnP8khhxySJCmXyykWu9Z7tONzAABgVvD//t//yxFHHJEddtgh++23X955552svfba061+BgCAWY0aGgAAgHogKwUAAN1jrQcAAGqjhgZAAywAgM+hra0tTU1NefvttzN06NBuT6hbW1szYsSILLDAAunbt69gFwAAswQbIwAAoDZqaAAAAOqZrBQAAEybtR4AAKiNGhqAJNHSEABgEuVyucvnm5qa0t7enkUWWSQPP/xwhgwZkvb29jQ2Nuadd97JaaedljPPPDNJUiwWp3iPlpaW3H777dl///0zfPjwjB8/3kQaAIBZQkddO88882TAgAEpFAppa2vLF7/4xW7Xzx1aW1vzxhtvpKWlJYVCIfr8AwAwK1BDAwAA0NNkpQAAYPqx1gMAALVRQwOQaIAFAFDVMdHtmDC/9957efHFF/PWW291en3SSW5H9+iuBrva29ur721pacndd9+dww47LH/+859zzjnn5NJLL53mpBsAAOqNjREAAFAbNTQAAAC9TVYKAAC6z1oPAADURg0NwLQ09vYAAAB6U6VSqU5ai8VinnzyyQwfPjyPPPJIXn755YwaNSpzzz13vvSlL2W55ZbLAQcckC9/+cvp379/p/dPGuwaOnRo3njjjU4T6vb29vz0pz9NY+OEEmzMmDG59957c9hhh+W1115Lkjz33HNZZJFFUizq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wQbTDHQ1NDRk/Pjx2XrrrfPXv/61+trtt9+eLbbYYnp/RQAAmO4mrZcnPe5QKpWy+uqr58knn0ySzDHHHNlqq61y3XXXVa/p6saIjie6rLfeennhhRdSLBaz/fbb59xzz80CCywwfb8gAABMZ2poAAAA6oGsFAAAdI+1HgAAqI0aGoAZrdjbAwAAmB46Al2PPPJI1lprreyzzz554IEHkkzo5Dxxz8+GhoY0NDRk1113zYILLphSqZSmpqbqhHvRRRfNhRdemI033vgzJ9AtLS3Zd99987e//a362kknnSTQBQDATKFcLqdQKOSpp56aav2cfLoxYtttt03//v3T0NCQMWPGTLYQddppp3VpIWr8+PHZdddd88ILL1THsffee1uIAgCg7qmhAQAAqAeyUgAA0D3WegAAoDZqaAB6ggZYAMAsoVgs5sEHH8w666yTlpaWvPXWWzn00ENz//33J5l8Ql2pVLLsssvmwgsvTENDQ9ra2tLY2JhCoZC2trY888wzKRY/LZUmfuphpVKpTqD333///P73v6/e+zvf+U722muv6nUAAFCvbIwAAIDaqKEBAACoF7JSAABQO2s9AABQGzU0AD1FAywAYJbx9ttvV39ubW3NU089lcMOO2yKwa6OnzfeeONcfPHF1WBXQ0NDRowYkR/84Ac5+eST8/HHHyeZMPnuMGbMmDz33HPZZJNNcvnll2fs2LFJkq222ir77LNPFlxwwepnAABAvbIxAgAAaqOGBgAAoJ7ISgEAQG2s9QAAQG3U0AD0lELF/+EBgJlUpVKZLDj1+9//PjvuuGP1uKGhISuvvHJOP/30rL/++lN8X3Nzcy666KIcdthhKZVK6du3b1paWpIk6667bpZbbrlsvfXWGTduXD766KP8+c9/zhNPPJG33nqreo8tt9wyBxxwQLbccssZ+ZUBAGC6uu6667LrrrsmmbA4VSgUplk/d/x8+eWXZ5999kmpVEpjY2Pa29vTp0+fHHPMMdl///0zePDgTp8zevTo/O9//8v3v//9PPzww9XzW221VQ4//PCss846PfSNAQDg81FDAwAA0FtkpQAA4POz1gMAALVRQwPQEzTAAgBmKpMGsp5++uk8/vjjefDBB1MqlbLaaqvl0ksvzX/+858UCoWUy+UuBbva2tpyww03ZK+99kqpVEqxWEy5XK6+PunxxHbffffst99+GTp06BTvDQAA9cLGCAAAqI0aGgAAgN4kKwUAAJ+PtR4AAKiNGhqA3qABFgAw05h4AvzCCy/kzjvvzBFHHJFyuVyd+E6so5t0qVTq0oQ6SR5++OH84he/yHPPPZcPPvggDQ0N1cl1W1tbGhoa0tbWlqamphQKhRx33HHZbbfdssgii0z1ngAA0JtsjAAAgNqooQEAAKgHslIAANA91noAAKA2amgAepsGWADATOfxxx/P+eefn6uuuirt7e1JkgEDBmSRRRbJkksumTfffDOtra156aWXqu/pCHhNa0Ld8fObb76Zv//977nyyivzzDPP5PXXX09TU1PGjx+f+eabL/POO2++/e1vZ911163eBwAA6pGNEQAAUBs1NAAAAPVGVgoAALrOWg8AANRGDQ1APdAACwCYqbz88ss5+eSTc9lll1W7RC+99NI577zzsuSSS2bIkCEZNWpUyuVyLrjggjz44IO58847kyQNDQ1J0qVgV4c33ngj77zzTkqlUsaOHZshQ4ZkkUUWyaBBg6rXmDwDAFDvbIwAAIDaqKEBAACoB7JSAADQPdZ6AACgNmpoAHqTBlgAwEyhXC6nWCzm9NNPz89//vOUSqUkyWabbZbzzz8/iy22WPXaiSfHL730Uq677rocffTRSboW7Jr48z5rPAAAUO9sjAAAgNqooQEAAOhtslIAANB91noAAKA2amgAepsGWADATOOZZ57J6quvnubm5iTJkksumXvvvTeLLbbYZCGrSSe3w4cPzz777JOk68EuAACYmdkYAQAAtVFDAwAAUE9kpQAAoDbWegAAoDZqaADqhQZYAECPGjt2bAYOHFjTezomrWeeeWYOO+yw9OnTJ0ly7bXXZvvtt+/ypPbKK6/MnnvumSQpFospFAqCXQAAzNJsjAAAgNqooQEAAJieZKUAAKBnWesBAIDaqKEBqAfaHwIAPeaGG27IkUcemRdffLGm93VMkB988MEkSWtrawYOHJilllqq0+tT09Hvc4899siwYcOSTAiKlUqlPPXUUznssMNy//33J0kKhUL0BwUAoJ6MHTu25veUy+UkyV133ZXm5ub06dMnffr0ybBhw6a4EJVkskWlvffeO5dffnmSpFQqpVKpqJ8BAJgpqKEBAACoB7JSAADQPdZ6AACgNmpoAGZ2GmABAD3immuuyS677JKzzz47w4cPz8svv1zzPUaOHJlCoZBisZhFFlmkGur6LBNPqvfcc8/suuuuSSaEwQS7AACoZzZGAABAbdTQAAAA1ANZKQAA6B5rPQAAUBs1NACzAg2wAIAZ7umnn87uu+9ePT799NNzwQUXdDnYVSqVUiqVMnr06FQqlZTL5bzzzjv54IMPah7LvPPOm0022aQ6+Z402PXAAw8kmbwTNQAA9DQbIwAAoDZqaAAAAOqBrBQAAHSPtR4AAKiNGhqAWYUGWADADDdo0KD85Cc/yRxzzJEkaW9vz29+85suB7uKxWIaGhqy2mqrJUn69u1bDXYlE7pCd0XH5HjPPffMmmuumXK5XD3XMaE+6qij8o9//KPm7wgAANOTjREAAFAbNTQAAAD1QlYKAABqZ60HAABqo4YGYFaiARYAMMMtscQSOfDAA/OjH/0o/fr1S1JbsKtjUrvMMsskSVpaWvLxxx/n4osvTjJhMtyVzs+FQiFtbW1JksUXXzzJhIl1h0qlkn/84x855ZRT8uyzz9b2JQEAYDqyMQIAAGqjhgYAAKBeyEoBAEDtrPUAAEBt1NAAzEo0wAIAesRiiy2WffbZJ4ceemjNwa6Oye7WW2+dZZZZJk1NTSkWi7n77rtzyy23JOl65+eGhoYkyQILLJAk2XzzzXP11VcnmTAhHz9+fP7yl7/kxhtvzNixY7v3ZQEA4HOyMQIAAGqjhgYAAKCeyEoBAEBtrPUAAEBt1NAAzEo0wAIAesziiy/erWBXx0R6scUWy5JLLlmdDL/11lu56aab8uKLL3Z5DMXihPJn3LhxSZK77ror3/72t/O73/2ues3o0aNz8cUXV+/b1U7VAAAwPdkYAQAAtVFDAwAAUE9kpQAAoDbWegAAoDZqaABmFRpgAQA9qrvBrkqlkv79++ess87KF7/4xWrQ6rrrrssFF1yQd955p8tjeO6553L77bcnSRZZZJEkyf7775+jjjqqes1bb72Vn/70p2lpaakGwQAAoKfZGAEAALVRQwMAAFBPZKUAAKA21noAAKA2amgAZgVWKAGAHtedCXWhUEilUslSSy2VQw89NHPPPXf1tTPOOCNnnXVWXn311eq5qU1+x4wZkzvuuCOffPJJkmTuuedOqVRKkuy4445Ze+21UygU0tTUlJdeeinPPvtskk+7WQMAQE+zMQIAAGqjhgYAAKCeyEoBAEBtrPUAAEBt1NAAzOz8qwAA9IrFF1883//+92sOdjU0NGTbbbfNzjvvnIEDB1ZfO/XUU3PCCSfkr3/9a5IJHaMrlUqncNeoUaNy11135eyzz86oUaMyaNCg7L333mloaEiSrLTSSll99dVTqVTS1taW119/PQ888ED1swEAoLfYGAEAALVRQwMAAFBPZKUAAKA21noAAKA2amgAZmYaYAEAPa5SqaRSqWSxxRbL9773vRx00EHp379/kq51lV5yySVzwAEHZIsttsiAAQOq5y+99NIccsgh+elPf5r3338/zc3N1S7QTzzxRM4666wcdthheeONN6r3WXnllZN8OvHeYYcdMnDgwPTp0ydJ8uabb1bHDAAAvcnGCAAAqI0aGgAAgHogKwUAAN1jrQcAAGqjhgZgZtXY2wMAAGYvlUolhUIh48aNy4ABAzL33HNnq622St++fXPSSSelUqlUJ9RJst9++2WppZaa7D4rrbRSfvGLX2TOOefMTTfdlNGjR6dQKOQ///lPnn766dx2220ZOHBgFl988bS2tubBBx9MqVRKc3Nz9R5HH310vvzlLydJNfw1aNCglMvltLe3J0nefffdJBNCXx0TbgAA6Gkdmww6NkaUSqWcffbZaW5u7lL93LEx4qOPPsodd9yRcePGJZmwMeKf//xnNt100/zsZz/LwIEDqxsnnnjiifzxj3/MJZdcUt3sMOnGiGKxmB122CGXXHJJ2tra0tra2mljhAUpAAB6ixoaAACAeiArBQAA3WOtBwAAaqOGBmBmpgEWADDDTTwJbWtry6OPPpqzzjorL730Ut5+++1UKpXMM888KRQKKZVKaWxs7NKE+qtf/Wp+9rOfZbHFFst5552XESNGpE+fPmlra8urr76aUqmUp556KsViMeVyudNE+LLLLssOO+xQHV+lUkmxWMx7772XJNX3rLjiikki0AUAQK+xMQIAAGqjhgYAAKA3yUoBAMDnY60HAABqo4YGYGanARYAMMN1hKmefPLJXH/99Rk2bFjK5XKna0aOHFm9tr29PX379k1LS8tnTqiXXXbZHHLIIdlss83y4x//OC+88EJGjhxZ7VZdLBarAa2BAwdmiSWWyLHHHpvtt98+yacT+44x3nfffWlubq5OrBdZZJHp/vsAAIDPYmMEAADURg0NAABAvZCVAgCA2lnrAQCA2qihAZiVaIAFAPSIf/3rXznjjDNy/fXXVwNdc801V9Zdd90su+yyKRQKeeaZZ/LOO+/kySefTEtLS4rFYnVCXalUsv/++09xQj1o0KCsscYauffee3PPPffk3nvvzeOPP56XXnopjY2NGTx4cOaZZ57st99++epXv5qvfOUrSTpP8JPk4Ycfzh//+MckEzpHDx06NLvuumsP/HYAAKAzGyMAAKA2amgAAADqiawUAADUxloPAADURg0NwKykUOn4VwYAYAZ59913c/LJJ+fcc89NuVxOnz59suqqq+biiy/Osssum8bGT3tyfvzxxxk+fHguvPDCvPrqq2lvb0+SNDY25uCDD57qhLpcLlcnv0nS3Nyc0aNHp1QqZeDAgRk4cGCnz5k00PX222/n9NNPzznnnJNSqZQvfOELOeKII3LQQQelWCx2uhYAAHrCxBsjSqVSkmlvjEg+fSJKY2NjDjrooKlujOgwduzYz70xYt99982zzz6bJBk6dGjuv//+TrU5AAD0FDU0AAAA9UBWCgAAusdaDwAA1EYNDcCsovGzLwEA+Hwefvjh/Pa3v612j15zzTVz5ZVXZsiQIdXQVltbW5qamjJ48OAcdthhWXXVVXPllVfm2muvTUtLS/XphsmUu0p3THY7wl39+vVL//79O10z6cS5w3vvvZerrroq5557bnWS/5WvfCW77rprGhoapuvvAgAAuuLdd9/NFVdckeuuu67mjRHlcjnt7e0566yzUigUprkxYuDAgdluu+2y3XbbdWtjxM0335wXXnghSfKFL3wh22+/fSqVylRrbwAAmFHU0AAAANQLWSkAAKidtR4AAKiNGhqAWUmhUqlUensQAEB965hIdmdCOWLEiGy00UZ57rnnkiSDBw/O3//+9yyzzDKTPYkw6fx0wmeffTaXXnppzj333IwfPz7JZz/dsCsm/oynnnoq119/fU477bRqwGyJJZbIXXfdlaWXXrpb9wcAgM/rlltuybe+9a3qpoN1112308aIxsbG6saIDn/72986bYxIulY/d9THU6r3Jz438c/vvfdeLr300hx11FHVOnr99dfPtddemwUXXHD6/jIAAKAL1NAAAABML7JSAADQ86z1AABAbdTQAMxKGj/7EgBgdvfWW29l0UUX7Vawq6WlJSNHjkxTU1Pa2tryve99L8sss0xKpdIUnxg48SR4+eWXz3777ZeWlpZccMEFaW1trT7dsFKpZP/9968p2NUxye4IdF1yySW5+eabc88991Qn+fPNN1/+9Kc/CXQBAPC5fN6NEb/85S+rNergwYNz8cUXZ8iQISmXy9UnpHQsRHXUuRtuuGEWXHDBzDvvvNWNEZ/1dPDk0yeET2mcHee6sjHioosushAFAEC3qaEBAACoF7JSAABQO2s9AABQGzU0AHxKAywAYJquvfba7LXXXrnsssvy7W9/u+YJ9eOPP54RI0ZUA1xLLrlkkkwx0NVh4nsvtdRS2XvvvfP666/nT3/6UxoaGtLW1pazzjorSWoKdhWLxXz00Uf53e9+lyeffDK33HJLp++z9NJL57bbbstyyy3XpfsBAMDU2BgBAAC1UUMDAABQD2SlAACge6z1AABAbdTQAPCpYm8PAACoX9dee2122223tLW15aCDDspNN92UZMpdmqemY4La8Z655pqr5nGsvPLK2WOPPVIsFtPW1pY+ffqkvb09Z511Vs4///y8/PLLXb7XyJEjc8011+SWW26pTtoXWGCB/N///V/uvPNOgS4AAD63a6+9NksvvXSuvfbaJKkuSHVVx8aIcrmcpPsbIzbffPMUi8U0NTV1u37u2Bhxwgkn5Jvf/Ga+//3v56677kqpVEqhUMgyyyyT+++/P8svv3yX7wkAAJNSQwMAAFAPZKUAAKB7rPUAAEBt1NAA0JkGWADAZCqVSt5999384Ac/SJL069cvH3zwQfbff/9cccUVNd1rvvnmq06Ak+T9999P8mnYqytjSZIdd9wxBx54YJKktbU1jY2NNU+oK5VKllxyydxyyy1ZccUVUy6XM3To0Bx99NE5//zzq5N8AADoLhsjAACgNmpoAAAAepusFAAAdJ+1HgAAqI0aGgAmpwEWADCZQqGQBRZYINdff30WXXTRjB8/Pn369MlHH32U22+/vaZ7zTXXXCmXy2lubk6S3HzzzWlvb59mJ+lJx9LRhXqjjTZKQ0NDisVidYLe3t6e3/3udznnnHPy4osvduleyy23XG688cacdtppueOOO7Lvvvtm/vnnr+l7AQDAxGyMAACA2qihAQAAqBeyUgAAUDtrPQAAUBs1NABMnQZYAMBkOiavm222WYYPH56FF144ra2t2WabbXL99dfXdK9lllkma665ZgqFQhobG/Piiy/m7rvv7vQ5n6VYnFCybLjhhllggQVSLpez1FJLZcCAAUmS5ubmnH322Rk1alSX7tUR7Dr00EMzxxxzdDlgBgAAU2NjBAAA1EYNDQAAQL2QlQIAgNpZ6wEAgNqooQFg6jTAAgCqOkJWHRPOSqWSjTfeOBdccEF233333HbbbUkmTF4nfc/UAlpzzTVXvva1r6VSqaRUKmXEiBG55pprOn1OV7S3t6dYLGbgwIFJkjXXXDPHHXdc9fWLL744X/va17p0r46QGAAATC82RgAAQG3U0AAAAPQ2WSkAAOg+az0AAFAbNTQATJ0VTQAgSVIqlVIoFJIkY8eOrU44K5VKttpqq1xxxRVJJoSrGhsbq2Gsjz76KMmEgNakE+OOaw455JCsuOKK1devueaaHHPMMUk+ndh+lsbGxnz44YcZOXJkkmTuuefO7rvvnsMOOyyXX3559t577yRdn5wDAMD0YGMEAADURg0NAABAPZCVAgCA7rHWAwAAtVFDA8Bn868IAJBSqVTtpnzqqafmRz/6UT755JM0NDRUg14dOgJdxWIxDz30UJZbbrlcffXVSSYPdnVMWBdYYIFsv/32GTRoUBobG5Mkxx9/fE4//fTqdaVSaZrjS5LXX389LS0tSZKPP/44888/f4466qjsscceSSaEyCYdLwAAzCg2RgAAQG3U0AAAANQDWSkAAOgeaz0AAFAbNTQAdI0GWABANdB1wgkn5Oc//3keffTRvPDCC0kyxbBVR6Brk002yYcffphDDjkkN954Y5IpT6gHDhyYvffeOyuuuGLa29vTp0+fJMnhhx+eX//6153GMKmOwFlra2uOPPLIjB49On369MkGG2yQJJljjjk6jQsAAHqCjREAAFAbNTQAAAD1QlYKAABqZ60HAABqo4YGgK6z8gkAJEkuvvjiHH300UmS559/PqecckqSCWGriSfHlUolo0aNyq677pqWlpb0798/H3zwQfbdd9+pBrsqlUoWX3zxXHTRRVl44YXT2tqavn37plwu54gjjshhhx2Wd955J+3t7UnSqbN0Q0NDmpubs//+++ehhx5KkrS2tma55ZarfhYAAPQ0GyMAAKA2amgAAADqiawUAADUxloPAADURg0NAF3nXxsAIKVSKR988EEGDhyY/v37p1Ao5MYbb8xvfvObJJ2DU4VCIXPNNVcuvPDCLLroomlubk5DQ0NGjRo11WBXoVBIuVzOl7/85fzhD3/InHPOmZaWluqE+swzz8xee+2VU045JSNGjMi4ceOSJO+++26effbZbLvttrn66qur9/vFL36RddZZp6d+PQAAMEU2RgAAQG3U0AAAANQDWSkAAOgeaz0AAFAbNTQAdI0GWABAGhoa8v3vfz8rrrhimpub09TUlCS59dZb89RTT3W6tmOCvPnmm2f48OFZcMEFq92epxXsKhaLKZfLWXXVVXPfffdlySWXTGtra/W+99xzT4466qisvvrqWX/99bPddttlvfXWy8Ybb5x77703bW1tSZJtttkmO++8c6exAABAT7MxAgAAaqOGBgAAoF7ISgEAQO2s9QAAQG3U0ADQdYWK1VAAmO2Vy+UUi8X8+9//zje+8Y188MEH1ddOPvnkHH744alUKtUJ9cQ/33vvvdljjz0yYsSINDQ0pFQqVSfaO+2002TXd3zWs88+m1/84hd5/PHHq+8tFovV8FbHvRobG6sdprfccssccMAB2XLLLXvsdwMAAFPz4YcfZquttsrjjz+ePn36pLW1Neutt17OOuusrLzyytXrpkf9/OSTT+ab3/xmXnnllcnGscgii2T++efPoosummeffTZjxozJiBEjqq9vs802Oe6447Lyyit3ujcAAPQ0NTQAAAD1QFYKAAC6x1oPAADURg0NAF2jARYAkGTChLe1tTUnn3xyTj311LS0tFQnqg888ECGDh062fUdk9i//OUv+c53vlPzhHrEiBG58847c9lll+XBBx/sdP+OyXyH/fbbL3vuuWfWWmutye4HAAA9zcYIAACojRoaAACAeiIrBQAAtbHWAwAAtVFDA0DXaYAFAHTyj3/8I9/97nfzzDPPpH///mlubs5mm22WCy64IEOGDOl07eeZUE8ayrr44ovz/PPP54477sjo0aPTt2/fFIvFrL/++tlqq62y3XbbTfFzAQCgt9gYAQAAtVFDAwAAUG9kpQAAoOus9QAAQG3U0ADQNRpgAQCTGT58ePbZZ5/q8XzzzZdhw4blO9/5TnUS3OHzBLuSpFQqpaGhoXo8bty4agfpxsbGNDU1zeivCwAAn4uNEQAAUBs1NAAAAPVEVgoAAGpjrQcAAGqjhgaAadMACwComniCuu++++biiy+uvrbKKqvkgQceyKBBg6Z7sGtik9570mMAAKhHNkYAAEBt1NAAAAD0NlkpAADoPms9AABQGzU0AEydFVIAmIWVy+UkEyavXel5OfEEd8cdd8zyyy+fQqGQxsbGPPnkk/nRj36USqUyWciqUChU77/xxhvnyiuvzIILLlidJI8aNSr77rtvbrzxxsmun9Sk9xboAgCgnnXUtXvvvXenxaj3338/v/nNb/LJJ5+kWCxWa/Pk89fPEy9EJUm/fv0yxxxzpH///mlqaur0WQAAUG/U0AAAAMwoslIAADDjWesBAIDaqKEB4LNZJQWAWdTEHZ/HjBnTKbDVlYDXJptskg033LDa+blYLOb+++/PrbfeOsXrp2ewCwAAeouNEQAAUBs1NAAAAPVAVgoAALrHWg8AANRGDQ0A059/mQBgFjRxoOvII4/MwgsvnOuvvz6vv/56kgkT2Wl1aO54/+mnn57VVlstbW1tqVQqee2113Lrrbemra0tyeThsEkn1FdccYVgFwAAMw0bIwAAoDZqaAAAAOqBrBQAAHSPtR4AAKiNGhoAZgwNsABgFjPxBPqEE07IySefnHHjxuUHP/hBfvrTn+aPf/xjkk87NE9pMlssFlMqldK3b98cddRRWWihharXXXnllRk+fHiSzp2nO0w8Qf7GN75hQg0AwEzBxggAAKiNGhoAAIB6ICsFAADdY60HAABqo4YGgBlHAywAmMVMHOg6+uijkyT9+vXLyJEjc8stt2S77bbLsccem1dffbXaJbpUKk12n4aGhiTJGmuskQ022KB6nyT59a9/nUceeWSqY+jqhPrmm2+uXg8AAL3FxggAAKiNGhoAAIB6ISsFAAC1s9YDAAC1UUMDwIylARYAzII++eSTXHbZZUmS/v37Z/z48SkWiymXy6lUKjnuuOOy//7755xzzqlOcKdmwQUXzEEHHZQBAwZk/PjxaWhoyIgRI3Lbbbflk08+meokeNIJ9aTBrjFjxmS33XbLNddcM92/PwAA1MLGCAAAqI0aGgAAgHoiKwUAALWx1gMAALVRQwPAjKUBFgDMYiqVSgYNGpSrrroqc889d5qbm9PQ0JBFFlkkQ4YMqV53zz335Je//GW22GKLvPDCC2lubu50j4l/XmONNXLaaaclSUqlUlpaWnLppZfm+eefT6FQSLlcnuJYptZVulwup1wup7W1dUb8CgAAoGY2RgAAQG3U0AAAANQDWSkAAOgeaz0AAFAbNTQAzDgaYAHALKZjArvyyivn+9//fvr06ZNSqZQ+ffrk4osvzoEHHpiFF144yYQJ91/+8pdstdVWOf300/Pf//63eo+J75ckm2++ebbddtskSWNjYz744IPst99++eijj1IsFrs0od54441z1VVXZc4550ySXHrppdl1111nzC8CAAC6yMYIAACojRoaAACAeiErBQAAtbPWAwAAtVFDA8CMpQEWAMyCCoVC+vfvn2222SaLLrpokuTll1/Oueeem3POOScXXnhhvvWtb1Wvf/nllzNs2LB885vfzB/+8IdOE+NSqZQkWXzxxbPtttt2Cok999xzOf/889Pa2topCDal8XRMqDfaaKNcf/31ue6667LnnnsmyVQn4gAA0BNsjAAAgNqooQEAAKgnslIAAFAbaz0AAFAbNTQAzFiFytT+1QMAZgnnnHNODjrooOrxSSedlJ///Odpa2vLhRdemOOPPz6jRo1KS0tL9ZqDDjooW221Vb7xjW8kSdrb29PY2Jgk2XvvvXPZZZdVJ8hrr712Lr/88iy99NIplUppaGiY6lgqlcpk4a9yuZxiUU9OAADqw0MPPZTvfve7efnll5Mk2267bW699dbccccdufLKK3P99ddXr51jjjmy8MIL55RTTsnWW29drWsnrouHDx+eAw44IG1tbWlqakpjY2OOOOKI/OQnP0mfPn2mOZaJ6+e77747I0eOzM4775xEHQ0AQP1QQwMAAFBPZKUAAKA21noAAKA2amgAmP40wAKAWdTEE9c99tgjV199dZJkjTXWyFlnnZU111wzSfLAAw/khhtuyPXXX58PP/yw+v7ll18+2267bU4++eRO933zzTez00475fHHH6+e22+//XLeeedN9rkAADAzsjECAABqo4YGAACgt8lKAQBA91nrAQCA2qihAWD68q8WAMyiJp6w7rTTTllmmWWSJI8//nhuueWW6mvrrbdefvWrX+WGG27I8ssvXz3/7LPP5pRTTslmm22WP/zhD/noo4+SJPPMM0922GGHzDHHHNXJ9YUXXpgrrrhiss8FAICZSUef+B/96EfZbbfdqudvvfXWPPbYY2lqasqBBx6YG264Id/73vcyzzzzVK8566yzctBBB+UXv/hFklRr5ST51a9+lTXWWKN6/0cffTSnn356kqShoSHT6k8/pfraQhQAAPVCDQ0AAEC9kJUCAIDaWesBAIDaqKEBYMbwLxcAzESmNUmdli233DLrrLNO9XjYsGG5+eabq8fzzDNPNtxwwzz88MM59NBDs/LKK1dfu+eee3LIIYfkhz/8YZ5//vkMGDAge+65Z5Zbbrm0t7enT58+SZJbbrklr7zySje/GQAA9D4bIwAAoDZqaAAAAGYkWSkAAJixrPUAAEBt1NAAMGMUKt1dHQYAelSpVEpDQ0OSpLW1NX369Ol0bmrK5XKKxWLGjBmTtddeO88880ySZOjQobnggguywgordLr/+PHj869//SsXXHBBrrzyyhQKhWqY7Atf+EKGDRuWHXfcMW+++WaGDh2a0aNHJ5nQbfr888/P3nvvnUqlYkINAEBd6G5t2t7env322y+XXnpp9dyNN96YHXfcsdN1I0eOzAknnJB77703Tz31VPX8EksskTXXXDPHHHNMvvSlL+Xdd9/Ntttum3/84x/p06dP2trass022+SMM87Ikksu2f0vCAAA05kaGgAAgHogKwUAAN1jrQcAAGqjhgaA3qcBFgDMBCYOb51zzjl54okncuqpp2beeeet6f3XXXddDj744Lz33nuZc845c9xxx+XHP/5xNfg16UT97LPPzrXXXpv/9//+X9rb25Mkffv2zSabbJKdd9457777bo466qi0tLSkUqlk4MCBefjhh7PSSitN/18CAADUyMYIAACojRoaAACAeiArBQAA3WOtBwAAaqOGBoD6oAEWAMxETjjhhBx99NFJkmWWWSann356VltttSy00EJJPrvT9JtvvpmDDjoot912WyqVShZZZJE8+OCDWXzxxasT7iSdfn788cdz11135cQTT0xra2uSpFgspm/fvllppZXy2muv5d13301TU1Pa2tqy66675je/+U2XA2cAADAj2BgBAAC1UUMDAABQb2SlAACg66z1AABAbdTQAFA/NMACgJnEueeemx//+MdJkoEDB2bs2LEZPHhwttpqq+y+++7ZdNNNq9dOK9x13333ZeONN652h958881z4403ZuDAgZ2um/Qejz32WA4++OC8+OKL+eijjzpd23FdpVLJAgsskAsvvDDbbLPN5//SAADwOdkYAQAAtVFDAwAAUA9kpQAAoHus9QAAQG3U0ADQ+4q9PQAA4LONHz8+7e3tWXvttZMk48aNS7FYzMcff5xrr70222+/fYYNG5Z33nknyYSQValUmuK9NthggwwbNqx6/K9//SvXXHNNyuVyp+smnpCXy+WsueaaueGGG3LkkUdm1VVXTZLqZLtYLKapqSlJ8u67705zMg8AAD3l3HPPrS5EDRw4MC+++GL23HPPHH744bn77ruTdN6gMCWLLrpodXNFkrz99ts54IADMnbs2Go9nKT6ZJYkWWONNXLUUUfl/vvvz5prrpkvfOELKZfLaW5uzmOPPVatmTue1nLvvffm0Ucfnf6/AAAAqJEaGgAAgHogKwUAAN1jrQcAAGqjhgaA+qABFgDMBPr165cf/ehHuffee3PAAQdkwQUXrIawGhoa0tzcnMMPPzz77bdfLrzwwur5qU2ot9pqq2y++eZJkvfeey8333xzPv744ySZLNyVfDqxXnTRRXPggQfmj3/8Y3bZZZf079+/+p6OLtOXXnpptt566+n7CwAAgBrZGAEAALVRQwMAAFAvZKUAAKB21noAAKA2amgAqB+FytRWewGAulKpVKoT1FtuuSV/+tOfctlllyVJ+vTpUw1VzTnnnNloo41yzjnnZL755kufPn2meL/f/va3Ofjgg6sT7p///Oc56aSTJvusabnoooty++235w9/+EOS5LLLLst3vvOdJBMm3xN3pwYAgJ5WKpXS1taWn/zkJ/n9739fXXiauH7eeuuts/XWW2ffffdNMvVa+Pnnn88hhxySP//5z0mSTTfdNFdffXXmmWeeqda+HfdqbW3Nhx9+mMMOOyx//OMfM3bs2BQKheomjEsvvTR77rnnDPkdAABALdTQAAAA1AtZKQAAqJ21HgAAqI0aGgDqgwZYADATmXhiPHr06Nxxxx057LDD8tFHH6WlpSXFYrHaRXr55ZfPXnvtle233z5LL7109b2lUikNDQ1Jkp133jk33XRTkmSOOebIZZddlu233/4zxzHxPd54443ccMMNGTx4cL73ve9NNk4AAOgtNkYAAEBt1NAAAADUE1kpAACojbUeAACojRoaAOqDBlgAMJOZdJL7xBNP5Kqrrsrvf//7vPbaa2lqakq5XE6pVMpcc82VpZZaKr/+9a/zjW98o/qe1tbW9OnTJ88//3x22WWXPPXUU2loaMi3v/3tnHLKKVlooYVqHkcHE2gAAOqJjREAAFAbNTQAAAD1RFYKAABqY60HAABqo4YGgN6nARYAzAJGjRqVl156KQcffHAe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AAAAAAAAAAAAAAAAAAAAwKNogAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPogEWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIoGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAoGmABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAo2iABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+iARYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8igZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8CgaYAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCjaIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj6IBFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyKBlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwKBpgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKNogAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPogEWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIoGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAoGmABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAo2iABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+iARYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8igZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8CgaYAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCjaIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj6IBFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyKBlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwKBpgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKNogAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPogEWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIoGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAoGmABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAo2iABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+iARYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8igZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8CgaYAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCjaIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj6IBFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyKBlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwKBpgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwKNogAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPogEWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPIoGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAoGmABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAo2iABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+iARYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8igZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8CgaYAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCjaIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj6IBFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyKBlgAAAAAACDdCw8Pl4+PT5I/I0aMsHv8iBEjTOPDw8NTLV8AAGDbtGnTTN/LYWFhaZ0WAAAAAAAAAAAAAACwwH1+pDVvrAFdvXq1KScfH580ycUqj9WrV6dJLoC3CwsLM10v06ZNS+u0AAAAgPuef1onAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMdFR0drx44d+vfffxUZGanIyEgZhqHg4GAFBwcrT548Klq0qIoUKaKMGTOmdboAAAAAAABJ0AALAAAAAIA0tnr1ajVs2NChMYGBgcqYMaMyZsyonDlzKk+ePMqfP79Kly6tsmXLqlq1aipSpEgqZYwHxahRoxwekzFjRmXNmlVZs2ZVzpw5VbFiReXKlSsVsgPgLb744gtFRkamdRp3vPTSS8qWLVtapwEAAAAAAAAAAACk6MSJE5o5c6ZDY3x8fBQUFKRs2bIpa9asyp8/vypWrKjg4OBUyhIA7n8jRozQyJEjTfFVq1YpPDzcrccKDw/XmjVrTHHDMNx6HNz/9u7dq8mTJ2vFihXat2+fEhISUhzj4+OjokWLqmrVqqpWrZpq166tGjVqyM/PzwMZA/e3Xbt2aeHChQ6N8fX1VebMmZU9e3Zly5ZNxYoVU7ly5bgmAQAAADxwaIAFAAAAAEA6FBsbq9jYWEVFRenChQvat2+faZ9ChQqpcePG6tChg5o0aaKAgIA0yBTp2dChQ90yT4ECBVSnTh1169ZNzZo148Y8cJ/5+OOPdeLEibRO446uXbvSAAsAAAAAAAAAAADpwrFjx9xyb97X11elSpVS48aN1bNnT1WuXNkN2QEA4BmRkZH69NNPTfEBAwYoe/bsHs/H223btk0DBw7UunXrHB5rGIaOHj2qo0ePas6cOZKk7Nmzq0mTJnrjjTdUtWpVd6cLPDC2b9/ult/2wcHBqly5sp566il169aNz0Gke9OmTdPx48eTxMLDw93eZBQAAADpGw2wAAAAAAC4T506dUrTpk3TtGnTlDt3br300kvq16+fQkJC0jo1PGDOnDmjOXPmaM6cOcqfP78+/PBDdenSJa3TAgAAAAAAAAAAAADgvpCYmKgDBw7owIEDmjBhgqpUqaKvv/6aJhYAgHQhMjJSI0eONMV79OhB45e7xMXFadiwYfroo4+UkJDgtnkjIyM1d+5c1alTh98OgBeIjo7WunXrtG7dOg0ZMkS9e/fW6NGjFRQUlNapAU6ZNm2a1qxZY4rTAAsAAAB3803rBAAAAAAAQOq7cOGChg4dqhIlSuirr75SYmJiWqeEB9TZs2fVtWtXtWzZUtevX0/rdAAAAAAAAAAAAAAAuO/89ddfqlmzpoYOHZrWqQAAADdISEhQ586dNWbMGLc2vwLg3WJiYvS///1PjzzyiP7666+0TgcAAAAAUo1/WicAAAAAAACsNWzYUI0aNbLcZhiGbt68qRs3bujChQs6c+aM9u7dq4sXLyY7Z0REhPr166d58+Zp9uzZypkzZ2qkDqTo119/VZs2bbRkyRIFBgamdToAAAAAAAAAAAAAANxXEhISNGrUKEnSe++9l8bZAAAAV/Tu3Vtz5861ub1GjRp68sknValSJZUpU0bZsmVTcHCwrl27pitXrujcuXPatm2btm7dqnXr1unUqVMezB6Aqw4fPqwmTZpo/fr1KleuXFqnAwAAAABuRwMsAAAAAAC8VP369fXOO+84NObMmTNasWKFfvnlF/3666+Ki4uz3G/FihWqWrWq1qxZoyJFirgj3TS1evXqtE7hgdGgQYNkX+8bN24oMjJShw4d0oYNGzR16lQdPnzYct8VK1Zo0KBB+vzzz1MpWwCecPz4cafHhoeHa82aNaa4YRguZAQAAAAAAAAAAACkb8OHD9eIESNsbr/dzGLXrl1atWqVpk+fritXrljuO2rUKFWsWFFPPfVUKmULAHjQ9ejRQz169EjrNO5bv/32m6ZNm2a5rX79+vrss8/0yCOPWG7PkSOHcuTIoeLFi6tu3bp34lu2bNHcuXP1448/6uTJk6mQNYDbpk6davMz0jAMRUZG6vz589q0aZPmz5+vX3/91bJ+LjIyUs2aNdPff/+tkJCQVM4aAAAAADzLN60TAAAAAAAA7lOgQAF169ZN8+fP16lTp/Tqq68qMDDQct8TJ06oUaNGOn/+vIezxP0sU6ZMypcvnxo0aKAhQ4bo4MGDmjBhgjJmzGi5/9dff22zQRYAAAAAAAAAAAAAADDLkiWLihQpopYtW2rcuHE6deqU+vbta3P/IUOGKD4+3oMZAgAAd0hISNCAAQMst/Xp00erVq2y2fwqOdWrV9eHH36oo0eP6qefflKdOnXk4+PjWrIAHObj46McOXKoTJky6tGjhxYuXKjt27erVKlSlvufOnVKo0eP9nCWAAAAAJD6aIAFAAAAAMB9Kk+ePBo3bpy2bdum8uXLW+5z9OhRde3aVYmJiR7ODg8KHx8f9evXTz/99JN8fc1/FRUfH6+xY8emQWYAAAAAAAAAAAAAANwfgoKC9PXXX+v111+33P7PP/9o9uzZHs4KAAC4at26dTp06JApXrt2bX311VeWNXmO8PPz01NPPaU///wz2WaaADznkUce0ZYtW1SmTBnL7V988YXOnTvn4awAAAAAIHXRAAsAAAAAgPvcQw89pPXr16tevXqW2//44w9NmDDBw1nhQfPEE0+oT58+ltt+++03D2cDAAAAAAAAAAAAAMD9Z/To0SpXrpzltiVLlng4GwAA4KpffvnFMv7++++73PzqXhkzZnTrfACcly1bNpsLz968eVMLFy5Mg6wAAAAAIPXQAAsAAAAAgAdAtmzZtHDhQpUqVcpy+4gRIxQREeHhrPCgee211yzjZ8+e1d69ez2cDQAAAAAAAAAAAAAA9xdfX18NHDjQctsff/whwzA8nBEAAHDFxo0bTbEcOXKofv36aZANAE+qUKGC2rZta7lt+fLlHs4GAAAAAFKXf1onAAAAAAAAPCN79uyaOXOmateurYSEhCTbrly5oq+++kpvvfWWU3MnJiZqx44dWrdunfbu3asDBw7o5MmTioqK0vXr1xUUFKSQkBCFhISoXLlyql+/vho0aGCzIVd68Mknn+jatWtJYhUqVNBTTz3ltmMsWbJEW7ZsSRILDAzUkCFD5OPj47bjeErx4sVVtGhRHTt2zLTt4MGDKl++vMvHOHPmjBYtWqQ///xT+/fv18mTJ3Xt2jUlJCQoc+bMKliw4J33YNu2bZUvXz6Xj5keJCQkaNWqVVqxYoW2bdumI0eO6NKlS4qJiVFgYKBCQ0NVrFgxVa9eXY899pgaNWrk9hUCbYmJidGCBQu0ZMkS/f333zp16pSio6OVLVs25cqVS6VLl1bz5s3VsmVL5c+f3yM5eQtvPm/p1Z49e7Rw4UKtX79eBw8e1IULFxQTE6OsWbOqVKlS+uKLL1S1alW75zt8+LAWL16sDRs26MCBAzp9+rSio6NlGIayZMmiwoUL66GHHlJ4eLjatGmjkJCQVHx2SW3atEnz58/Xxo0bdejQIUVGRiogIEC5cuVSgQIF1LBhQz3++OOqWbNmqhz/xo0bmjt3rpYsWaIdO3bozJkzunHjhjJnzqy8efPqoYceUtOmTdWuXTuFhoamSg4AAAAAAAAAAAAPoqZNm1rGL168qIiICLfcs/r777+1dOlSbdq0SYcOHdLZs2cVHR0tX19fZcuWTUWKFFGlSpXUqFEjtWzZUsHBwS4fMz24du2alixZojVr1mjnzp06fvy4IiMjdevWLWXKlEl58uRRqVKlVLt2bbVu3VoPPfSQx3I7d+6c5s6dqz/++EN79uzRhQsXdOvWLYWGhip37tyqUqWKmjdvrhYtWjww5+s2bz5v6dmmTZu0fPly7dixQ/v27VNkZKSioqIUFxenTJkyKSgoSHny5FFYWJiKFSumqlWrqmbNmipevHhap35fSevageSMGjXqzn9HRkZa7vPFF18oe/bsKc6VPXt29e/f367jxsXF6bffftP69eu1Y8cOHTlyRFevXlVUVJR8fHwUFBSk4OBgFShQQGFhYSpZsqRq1KihmjVrKleuXHYdw53+/fdfU6xIkSJeXSMUGRmpBQsWaM2aNdq9e7dOnDihqKioOzV8BQoUUOnSpVWnTh21adNGxYoVS+uUbYqPj9fChQu1aNEi/fXXXzpx4oSio6MVFBSk3Llzq1y5cmrcuLGeeuopFShQIK3TddnZs2c1b948rVixQnv37tX58+cVExOjoKAgFS5cWJUqVdLjjz+uJ598UhkyZHBo7iNHjmjmzJmmeNeuXVWiRAm35G8YhsaMGaNbt24liVerVk2PP/64W47haW3atNHcuXNNcavmeI4yDEOrVq3Sb7/9pm3btunw4cOKiIhQbGyscubMqQoVKmjBggUKCgqya749e/bo119/1YYNG3To0CGdO3dO0dHRCggIULZs2RQWFqZHHnlEDRs21BNPPJGqvzl37dqlOXPmaO3atTp48KAiIiLk5+enbNmyqVSpUqpevbratGmjunXrploO6UV8fLxWr16t1atXa9u2bTp27JjOnz+v6Oho+fv7K0uWLMqVK5fKli17pxaydu3aCggIsDnnokWLtHPnzjuPT5w4Ydpn7dq1SX4LJOeZZ55RkSJFHH9yAAAASF8MAAAAAACQplatWmVIMv0ZPnx4qhyve/fulscrVKiQER8fb/c8N27cMObNm2e0b9/eyJ49u+WcKf1p1KiRsWLFCpefU4MGDVx6/YYPH24a36BBg2TH9O3b1zQmNDTUuHnzpmtP5v9LSEgwwsLCTMdo3769W+a3h9U5S+l1SUmzZs0s5/3mm29cmnfNmjXGY489Zvj4+Nj9/vP19TU6dOhgHDx40KFjlS9f3jRXkyZNXMr/Xq1btzYdo2jRokZiYqJD80RGRhrvvvuukTt3boeuzcKFCxtfffWVQ58J97Kad9WqVXe2x8fHG5988omRM2dOu3LKkCGD8frrrxtXr151Kh9bn7WucvXzx0panjdPs3r9HD0vU6dONY0vUqRIkn02b95s1K9fP8XX8Oeff7brmAsWLDBq1arl0PkJDAw0+vTpY5w5c8ah53c3q+/w7t27J9lnw4YNRo0aNezOq2HDhsb27dudzule8fHxxvjx442QkBC7jh8UFGQMHjzYiI6OvjOHPecUAAAAAAAAAADgfpBaNSMZM2a0nNfR++N3S0hIMKZPn25UqFDBoftkmTNnNl5//XUjIiLC7mOdO3fO8PPzM801atQop/O/V2xsrJErV64U77/Z48iRI0bv3r2NTJkyOfTa1KhRw/j999+dfg723Ae/cuWK8fzzzxuBgYF25ZQnTx5j4sSJRkJCglM5OVODYw+rXO+uQXBGWp03V3j7tZGYmGh88803RqlSpRx6Te/+U7x4ceOtt94yzp8/77bnZA+r96473mdWXK2V8MbaAWfu8zv7HrH6Y09NQVRUlPHGG28YoaGhTh3Dx8fHqFWrlvHpp596tDbH6ju9Ro0aHju+I44fP2706tXL7u+c238aNWpkrFu3zqVjp8b3z4wZM4yCBQva9RwCAgKMXr16GZcvX74zPrXq1ZyR0ufb5cuXjeeee87uc5c7d27jyy+/dOj3QkxMjJEjRw7TXC+++KLbnueKFSss8128eLHbjpEcq89CScbUqVOdnvOff/6xnNPf39/mGHu+J7777jujRIkSKZ5re37D//rrr0a1atUcuu6Dg4ONV1991bhw4YLTr42Vffv2GY899pjdeVSuXNlYu3ZtkjmKFCni9DlMrbo3V3Ky5fz588aQIUOc+l7MnDmz0b17d+PPP/+0nNvWv1Vw9k9q/B4DAACA9/HeVt8AAAAAACBVvPnmm5bxU6dOacOGDXbNceLECeXJk0ft2rXTTz/9ZHMFtpSsXLlSjRs3VufOnXXjxg2n5kgrzz//vCl2+fJlzZs3zy3zL1++XMePHzfF+/Tp45b504qtlWQvX77s1HxXrlxRp06d1KBBAy1btkyGYdg9NjExUXPmzNHDDz+scePG2T2ue/fuptjKlSt1+vRpu+dIzqVLl7RkyRJTvFu3bvLx8bF7nvnz56tMmTIaNmyYLly44FAOJ0+e1AsvvKBatWpZvg9d9e+//6pu3boaNGiQLl26ZNeYW7du6cMPP1Tt2rV17tw5t+fkLbz5vKVXI0eOVK1atbR27VqX5zp58qSaNm2q1q1bO7yKXmxsrCZOnKhy5cpp1qxZLudyL8MwNGLECNWtW1ebN2+2e9yqVatUo0YNy5UCHXXhwgU1bNhQr776qq5cuWLXmJiYGH300UeqXLmyjh075nIOAAAAAAAAAAAAcP+9+d27d6t69erq3r279uzZ49DY69ev68MPP1S5cuX0xx9/2DUmb968euyxx0zxGTNmOHTs5CxZskQXL140xXv06GH3HAkJCXrvvfdUrlw5TZ482eHal82bN+vRRx9V9+7dFRMT49BYe2zcuFHlypXT119/rdjYWLvGnD9/Xn369FGnTp0UFxfn9py8gbeft+R487Vx9uxZ1a5dW3379tWhQ4ecPv6RI0f0wQcfaMuWLU7P8SDzhtoBb7R27VqVK1dOY8eOdfq70DAMbdy4UQMGDPBoraO/v78pdubMGY8d314TJkxQuXLlNGXKFLu/c25buXKl6tWrpz59+nhFHWl0dLTatWunbt262V0TGBcXpylTpqh8+fL666+/UjlD99q+fbsqVKigSZMm2X3uLly4oH79+umxxx6zu0YoU6ZM6tatmyn+/fffu+28T5o0yRQrXLiwmjVr5pb500KuXLks4/Hx8U7Vbl+/fl2tW7dW165d9c8//7iUW0REhJ588kk98cQT2rp1q0Njo6OjNX78eJUpU0Zz5sxxKY/bpk6dqsqVK2vZsmV2j9m+fbsaNGig999/3y05pBcTJkxQqVKlNHr0aKe+F69fv67p06erbt26OnHiRCpkCAAAgAcRDbAAAAAAAHjAlClTRrVr17bc9uuvv9o1x40bNxQVFeW2nH744QfVr1/f6eKStPDII4+oZs2aprjVDXRnTJw40RQrXry4Gjdu7Jb504qtwr+AgACH59q7d6+qVq2q2bNnu5TTrVu3NGjQIPXp08euBlrPPPOM/Pz8ksQSExM1c+ZMl/K4bdasWaYiUh8fH8vGW7a88cYbateunf7991+Xctm6dauqVaumv//+26V57nb69GnVqlVLmzZtcmr83r17Va9ePV29etVtOXkLbz5v6dXLL7+sESNGKDEx0eW51q5dqypVqthdlG/L1atX1aVLF7333nsu53S3vn37auTIkU4917i4OD399NNasGCB08c/d+6c6tWrp3Xr1jk1/uDBg6pbt65OnTrldA4AAAAAAAAAAAD4jzvvzc+dO1c1a9Z0uZnDuXPn1KxZM02bNs2u/a2a7Rw6dMjhhWpsmT59uilWtGhRNWjQwK7xUVFRatasmYYNG6Zbt265lMuMGTPUoEEDRUREuDTP3VasWKFGjRo5ff95zpw56ty5s9vy8Rbeft7s4Y3XxpkzZ9SgQQOna0HgPmldO+CNVq1apebNm7ttcUNPy5kzpyl2+vRp7du3Lw2yMTMMQ3379lX//v1dbgo4adIkNWjQwO6GSqnh+vXratq0qebPn+/U+H///VcNGzZMN3Vbf//9t8LDw51ekPKPP/5QgwYN7F4E02rh2cjISLc0QLp06ZJ+/vlnU7xXr17y9U2//4w6Y8aMNrc52jgsJiZGTZs21cKFC11NSydOnFD16tX1yy+/uDTPlStX1LFjR5dr6caNG6eePXvq5s2bDo81DEPvvPOOhg4d6lIO6cHNmzf11FNPqX///m6rwXVk4WIAAAAgOeYW4AAAAAAA4L7XsmVLbdiwwRRfs2aNS/P6+fmpdOnSqlChgkJDQ5UtWzYFBATo6tWrOnPmjLZt22ZzpZdt27bp2WefdcuNVU95/vnnTYVbq1ev1uHDh1WyZEmn5z1//rwWLVpkivfu3Vs+Pj5Oz+sNzp8/bxm3tfqsLfv27VPDhg0tV5yUJF9fX1WsWFGVKlVSaGioMmTIoAsXLmjv3r3atGmTEhISTGMmTZqk0NBQjR49Otlj315Nc8mSJUni06dP15AhQxx6HlasCgnr16+vokWL2jW+f//+mjBhgs3toaGhqlu3rgoWLKiQkBBFR0frzJkzWr16teX5uXTpkpo2baq///5bBQoUsP+JWIiOjlazZs10/PjxJPHcuXOrQYMGyp8/v7Jly6bLly9r9+7dWr9+veW5OnLkiAYPHmzZKC698ubzll5NnDhRn3/+uSn+0EMPqVKlSsqTJ48yZsyoS5cuaceOHcmuHrtmzRq1aNEi2X8oULVqVZUvX16hoaHy9/fX+fPn9ddff+nvv/+2LPIYNmyYcufOrb59+zr/JP+/kSNHmhowBgYGqk6dOipZsqRy586tGzdu6OTJk1qxYoVloWBCQoL69u2r+vXrK0eOHA4d/9atW2rZsqXNVXx9fHxUo0YNlS9fXnnz5tXVq1d14sQJrVixIslrevbsWT355JOWxW4AAAAAAAAAAACwz82bN23+Y2ZH783Pnj1bXbt2tbxvK0mZMmVSzZo1VbJkSYWGhsowDJ0/f14bN27UgQMHTPsnJCSoV69eypMnj5o3b57ssVu1aqWQkBDTva3p06erVq1aDj2Pe12+fFmLFy82xbt162ZXXcb169f16KOPavPmzTb3KVq0qGrVqqXcuXMra9asunLlio4dO6bVq1crOjratP+2bdvUqlUrrV692rQol6P27t2rNm3amBoAlC5dWjVq1FDu3Lnv1FGsX7/eZhOVuXPnatasWfdNIyxvP2/28sZro2fPnvrnn38st/n7+6tq1aoqXbq0cufOreDg4DufU+fPn9fu3bt15MgRtyxs9aBL69oBbxQZGamnn37aZr1HlixZVL16dZUoUUI5cuRQxowZdf36dUVFRenkyZPauXOn042B3KVEiRKmWitJGjp0qObNm+f5hO7x6quvJlvDlTt3boWHh6tAgQLKmDGjzpw5o+3bt2vPnj2W+2/dulWPPfaY/vzzT2XIkCG10rZkGIY6deqUbEPBhx9+WJUqVVKBAgUUHR2tU6dOadWqVUmaIV67dk2tWrWyrFvyJlevXlW3bt107dq1JPGQkBA1atRIBQsWVFBQ0J1ztnv3bst59uzZo1atWmnNmjUpNlstU6aMwsPDtXr16iTxSZMmObRAqJUZM2aYmlv6+fmpV69eLs2b1pJrCOfob/vevXubap79/f1Vu3ZtlSpVSnny5JFhGDpz5ow2bdqkgwcP2sypUaNGOnr0qM1jVa5cWQ8//LDy58+v6OhonT59WitXrrTZOHTYsGEKCgrSoEGDHHpOkvTTTz/ptddes7k9NDRUDRs2vPOePn36tOXn0KhRo1SpUiWHj59e3Lp1Sy1atNCqVats7uPn56caNWqoRIkSyp07tzJlyqQrV67cqYU8duyYBzMGAADAA8cAAAAAAABpatWqVYYk05/hw4en2jE3btxoecxMmTIZ8fHxKY7fv3//nTGFChUyXnrpJWP16tXGjRs3Uhy7a9cuo0+fPoavr69lDhMmTHD4+TRo0MCl12/48OGm8Q0aNEhx3I0bN4wcOXKYxg4ePNjh53C30aNHm+YMCAgw/v33X5fmdZTV+bHndbHlxo0bRoYMGSzn3bRpk93zXL582ShWrJjlPLlz5zY++OAD4/LlyzbHX7x40Rg0aJARGBhoGu/r62usWrUqxRzmzJnj8vOwsnv3bst5v/32W7vGjx8/3nK8JKNFixbGmjVrjMTERMuxiYmJxrJly4yKFStajm/cuLHNsVas5ihXrlySxzVr1jRWrVplc94zZ84YTz/9tOVcPj4+xl9//WV3PrY+a13l6uePYXjXefM0q9fP0fMydepU0/hs2bIZmTNnTnJt9+7d2zh+/LjNeY4fP24cPXrUFD9y5IgREhJimWdYWJgxYcIE4/r16zbnPXnypPHss89afu9lypTJ2L9/v93PtXv37qY5ypQpk2Tu0NBQY/z48ca1a9cs54iPjze++OILI0uWLJbP6eWXX7Y7n9veeecdm+/h7t27G8eOHbMcd/36deOLL75Icq4kGeXLlzfNU6RIEYfzAgAAAAAAAAAA8HapUTOycuVKyzmDg4ONhIQEu+fZtGmTzXv8FSpUML777jvj1q1bNsfv27fPePLJJy3H58mTx7hw4UKKOfTr1880Nnv27MbNmzftfh5WPv/8c8t70EeOHElxbGJiotGmTRvL55UhQwbj+eefNw4dOmRz/M2bN42vv/7ayJ07t+UcI0eOtPt52Hr/3H1v3sfHx+jcubNx8OBBm/Ns3brVqFKliuVcuXPnduj1drYGJyVWudlT33GbN503d/Cma2PRokWWr0loaKjx2WefGVevXk3xuNevXzd+/vln49lnnzWyZ89uSDIWLVrk0nNxlNV719H3mb1crZXwxtoBq9oNR+7zHzt2zDIPW/UG9ho0aJDlvOXLlzd+/vlnIzY2NsU5zp07Z0yePNlo1aqV4e/vb0iy+bqmhg8++MDyOUgyXnjhBbtqNlPL4sWLbeZWtGhRY8GCBTbrUXfu3Gk0bdrU5viBAwc6lIs7vn8mT55sM5/mzZsbe/bssRx369Yt4/vvvzd9R1jVvzhyrbtTSr8XJBn58uUzfvzxR5vXxe7du41mzZrZfI1GjRplVy6zZ8+2HL93716XnmOZMmVMc7Zs2dKlOR1l9VkoyZg6darTc65bt85yzsyZM9scY/U9UaBAgSSPs2TJYowdO9aIiIiwOc+GDRssf1t06NDB5vugffv2Nn933r5W8uTJYzk2ICDAoZpQwzCMCxcu2Kzty5cvnzFnzhyb7+mdO3caTZo0STImT548RmhoqNPn0NXvQ1uKFCni8vuqS5cuNs9bgQIFjIkTJxpXrlxJdo4LFy4YEydONBo1amT4+PjY/V3tjjpbAAAA3P9ogAUAAAAAQBpLiwZY0dHRNhtQHThwIMXx+/fvN6pXr27MmzfPoeLIu/3555+WNwnz589vxMXFOTRXWjXAMgzDePXVV01jc+fObVdxjJXExESjePHipjnbtWvn1HyusHp/uFKU+N1331nOGRwc7FAhTseOHS3nefTRR+0qkL1t/fr1lu/BQoUKGdHR0cmOvXnzpuVN8xdeeMHu41t57bXXLF8fe4qmdu7caQQEBFiO/+677+zOITY21njmmWcsX+P//e9/ds9j60b57T9vvfWW3XNZXWeSjOeff97uOby1AZa3nTdPS60GWPe+ln/88YdT+SUkJBi1a9e2nLdr167JNr661/z5841MmTKZ5qlSpYrdTcqsipPu/lO5cmW7myVu2LDBCAoKMs2RI0cOhz6T9+3bZ9lQ0M/Pz5g1a5Zdcxw9etQoWrRoss+NBlgAAAAAAAAAAOB+lBo1I71797acs3HjxnbPER0dbXNhqtdee82huo4JEyZY1qi0bds2xbFbtmyxzOHHH3+0+/hWqlatapqzfv36do396quvLHMqVqyYQ/9g/+zZs0alSpVM8/j7+xvbt2+3aw5b75/bfzJlymQsWLDArrmuX79u1K1b13Ke2bNn2/28vLUBljedN3fwpmujU6dOpjG5c+e2XIDKHteuXTPGjx/v8iJ0jkrvDbDSunbAGxtgJSYmGvnz57f8TEqpNsyWEydOGAMHDjRiYmKczstRBw8etFnrKf23eNu4ceOM8+fPeywnw/hvEct8+fJZ5tSyZUu76t0SExNtNvjy9fU1Vq9ebXc+rn7/JNdEZ+zYsXbPYfU56uy17k4p5VSnTp1kFx29m61zljFjRuPw4cMpjo+NjbVsgDRgwACnn9/atWstc/J0M8XUaID17rvvWs75yCOP2ByT0vdEyZIljRMnTjiVz6xZs2xes/Yu9Hrx4kWjVq1alvOUK1fOoe+frl27uvSeTkxMNEaMGJHiNZLeG2DNmDHD5nPr06ePU9+Lu3btMtq3b2/Xe4kGWAAAALCHrwAAAAAAwAMnKChIhQsXttx26tSpFMeXKlVKmzdvVtu2beXr69xfL9SpU0fLli1TYGBgkvjZs2c1f/58p+ZMC3379jXFLly4oAULFjg138qVK3XkyBFT/LnnnnNqPm9x/fp1jRw50nJb27ZtlTFjRrvmWbFihX788UdTvHnz5lqyZIly5cpld061a9fWkiVLFBAQkCR+6tQpzZgxI9mxGTJk0NNPP22Kz549W7du3bI7h7slJCTo+++/N8XbtWunzJkzpzj+xRdfVFxcXJJYYGCgFi9erC5dutidR0BAgGbMmKE2bdqYtn344YeKj4+3ey5b3nrrLb3//vt27//hhx/qoYceMsVnz56t2NhYl/NJS+npvKVHvr6+WrRokRo3buzU+KlTp2rDhg2meJ8+fTRz5kwFBwfbPdeTTz5peY3/9ddfWrZsmVP53a106dJavXq18uTJY9f+tWrV0vDhw03xiIgILVy40O7jvvnmm5bX4RdffKFOnTrZNUfRokW1bNkyhYaG2n1cAAAAAAAAAAAAmO3evVvTp0+33Na5c2e75xk9erSOHj1qin/wwQf66KOP5O/vb/dc/fr10yeffGKK//zzz9q/f3+yY6tVq6by5cub4tOmTbP7+Pfat2+ftm3bZor36NEjxbFXrlzRm2++aYoXLlxY69evV+XKle3OI1++fFq5cqXCwsKSxOPj4zV27Fi757HFx8dHP//8s1q1amXX/sHBwZo5c6YyZcpk2mbrPZVepKfzZi9vujaWL19uio0ePVpFixZ1Ko/MmTNrwIABqlGjhlPjH3RpVTvgjfbt26ezZ88mifn4+GjKlCkKCgpyas7ChQvrk08+sfysTC2lSpWyrFO77fjx4xo4cKDy5cunOnXqaMiQIVq4cKHOnz+fqnl9/PHHOnfunClep04dzZkzx656Nx8fHw0ZMkRvvPGGaVtiYqIGDx7sllztMWrUKF25csUUf+ONN/T666/bNUeuXLm0ZMkSFS9e3N3ppaoyZcpo0aJFCgkJsWv/IUOGaODAgab4zZs3NWTIkBTHBwQEqGfPnqb4zJkzna69nDhxoilWsGBBNW/e3Kn5vEVcXJwmT55suc3Zerh8+fJpzZo1NmvIk5OQkGB5vUrSZ599pmeffdaueXLmzKlff/1VZcuWNW3bt2+fpkyZYtc8O3bs0HfffWeKO/Ke9vHx0fDhw/XSSy/Zdcz06Nq1axo0aJDltjfffFPffPONU9+LDz30kObMmePUewkAAACwQgMsAAAAAAAeUPny5bOMnzlzJsWxzja9uleVKlX08ssvm+JWNyS9VenSpdWwYUNT3OqGuj0mTZpkioWFhenRRx91aj5vcP36dbVv316HDx82bfPz87O7QESShg0bZooVKVJEc+bMkZ+fn8O5Va9e3XLO//3vfymOtSrwc6X46/fff7csCrKnyHb58uX6888/TfGPP/5YDRo0cCqfb7/91tRQ7PTp05o3b55T891WrVo1m83QbPH399dbb71likdGRmr37t0u5ZOW0tN5S69efPFFy89oe8THx+vdd981xatXr64JEyY4NeeTTz6pXr16meKfffaZU/Pd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97gzZ85oypQpatSokUqUKKHp06crISHBoWOntuRqvrxpTthWqVIl/fXXX2rZsqVD4/bu3avRo0erfPnyql+/vtauXZtKGXpGaGio+vfvr3/++UevvPKKzf2WLl2qnTt32txuqyFNai6a5ukGWA9K/UtqPk9HGmA1btxYJUuWTBIzDENTpkyxOWbbtm3asWOHKW5Vv+sNpk6darO5rWEYunbtmk6fPq09e/Zo4cKFGjp0qJo1a6aMGTO6LQdX6+msrsPUXizR1rVv6/31oFy79rpx44ZlnAZYAAAA8FY0wAIAAAAA4AG0a9cuy1XzgoODVbx48WTHJiQk6Omnn9b58+ctt+fPn19du3bVV199pWXLlmnfvn26ePGioqKiFBsba3nztkGDBm55Xt6gV69ephvFJ0+e1NKlSy3337hxo2WxqbfeiHdEQECAhg0bpq+//tpy+0svvaQjR47YNZe3Fbfdq3r16ipbtqwpntJqmlbbCxUqpIYNG9p9bG9/bWCN8+bdOD8AAAAAAAAAAABIL3LmzKmffvpJXbp0MW2LiYlR586d7V6Mxdvvkz3zzDPy8/NLEouLi9MPP/xgc4xhGJZNfp588kllyZLFruN6++sCaw/SeUura+NuGTJk0Mcff6yDBw/qtddeU968eR0af/ToUfXo0UN169a1ubBjavL397eMR0dHu/1Y169ft/v4cI8CBQpo4cKFWr9+vbp27aqgoCCHxq9bt04NGjRQ7969dfPmzVTK0jMyZMigTz/9VCNHjrS5z5IlSxye12qRTGe4ax6kHz4+Purbt68pPnXqVMXHx1uOsVp0Nm/evGrVqpXb84NtXPfpE683AAAAvBV/OwYAAAAAwANo1apVlvGKFSvK1zf5ftkTJ07Url27TPFcuXLpf//7n5566imHC3LsLbRMD/LmzavWrVtr7ty5SeKTJk1SixYtTPtPnDjRFCtYsKCaN2+eajl6Wp8+fbRz5059+eWXSeIxMTHq06ePVqxYkeIctlayevXVVxUSEuKWPK3kyJHD7n27d++uN998M0ns119/1ZUrVyxzjI6O1rx580zxbt26pXgd3i1jxoymVUsrVqyop556yu45HFWxYsVUm/tBwXnzbrY+c0aOHOnQ9Xk/s1rpLioqyi1zX7161S3zAAAAAAAAAAAAPCh8fX01efJk7d+/X9u3b0+ybffu3Ro7dqyGDh2a4jxW98myZs2qwYMHuy3Xe2XPnt3uffPly6emTZuaFiGbPn26XnrpJcsxa9eu1fHjx03xHj162H1cW/cP27RpoypVqtg9j6MqV66canM/CB6k85ZW14aVsLAwffTRRxozZoy2bt2qFStWaPXq1dq4caNdzaQ2bdqkGjVqaMuWLSpYsKBLuTjC1vvFqlmVq6zmtHV8uFft2rVVu3Ztff3111q3bp1WrFihNWvWaMeOHTYb7dxtypQpOnbsmJYuXWpaJDO9GTp0qH755Rft2LHDtG3VqlUaMmSI5Thb39tRUVHKmjWry3lZ1Yw4UsPnqAe5/iU1n6cjv++k/7573nnnnSQN5s6ePavFixerdevWSfa9fv26ZYPHZ599lmaCqcjqnKb2tWLr2re6bj2RT3qTKVMmy3hkZKRnEwEAAADsxP/RAQAAAADwAFq4cKFlvGHDhimOtWrYlDNnTm3btk2FCxd2Kp8rV644Nc5bvfDCC6YGWL/++qv+/fffJKsbRkVFac6cOabxPXv2NK3KmN59+OGHWrJkialwbuXKlZo3b57atWuX7HhbN7K7du3qNQWfzzzzjN5+++0kK4jGxsZq1qxZ6t+/v2n/efPmWRa0OVpImCNHDlMjpcKFC+udd95xaB44x57iNyucN+9m6zOnf//+qdp0Lz1JzaImd80DAAAAAAAAAADwIMmYMaO+/fZbVa1a1XQfc8yYMerRo4cKFSqU7BxW98kMw/Cq+5g9evQwNfn566+/tGfPHlWoUMG0//Tp002xQoUKqVGjRnYf09b9w3r16mngwIF2zwPnuHJf3sr9et7S4tpIjp+fn2rWrKmaNWvq7bffVnx8vLZv3641a9bojz/+0OrVq20umnju3Dl17NhR69evd0su9rD1fkmN+9dWc6Zmgx+YBQcHq1mzZmrWrJmk/xYyXL9+vdauXavffvvN1EzybitXrtSIESP0/vvveyrdVOHj46P+/furV69epm1Hjx61Oc7WezUyMtItTes83QDLqv4lOjpaCQkJLtdwenv9izvyi4+P140bN0xxRxtghYaGqn379po5c2aS+KRJk0wNsGbPnq1r164lifn4+Kh3794OHROOsboO3dVIydEGWJkyZVKGDBl069atJPHUfE+nNWd+D2fPnl3+/v6msREREe5KCwAAAHArlqoHAAAAAOAB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dOiQunTporZt2975h/jlypVzOacH7bx58tpITEzU/PnzVbduXRUtWlRvvvmmNm7caFfDhk2bNqlZs2b68MMPTdvy5s1ruUheasufP7/NJhEbNmxQiRIlNHLkyBQ/w+Li4rR8+XLVq1dPPXv2tKxjKlu2rEaOHOmOtO8LVjV2hmGoV69eKlasmJ555hkNGTJE7733nqme8osvvrCcMzo6Wp999plKlCih6tWr65NPPtG+fftSvF7j4uI0b948Va1aVatWrTJtb9GihYoXL+7cE3XB/v37NWjQIBUsWFAtW7bU1KlTderUKbvGHj9+XGPGjFHJkiU1ffp0y33y5cunUaNG2TVfSEiIJk+ebLlt3rx5qlixopYsWaKEhATLfXbv3q1mzZrp9ddft9w+YMAAhYeH25WLO+TJk8dmY5/XX39djz/+uM3fPbGxsfrhhx9UoUIFbd269U7c2+tf7v5+Xb9+vcqXL6+ffvpJcXFxlvvv3btXzZs315AhQyy3v/32226pg5Skjh07WjYku1v37t0tF55E6urUqZPl93NCQoI6d+6srl272mwCFxsbq9mzZ6t8+fKWi90GBARo5syZypgxo935jB8/3vK9sn79elWoUCHZ9/SuXbv02GOPadiwYXdiefLkcWhhaSvVq1dXxYoVTfEDBw6obt26+uOPP2yOPXPmjPr3768GDRrcWUwyT548CgkJcSmnp59+2rIxlyR99dVXKlWqlKZMmWK5wO/dLl68qEmTJqlhw4Z65JFHNGfOHLt+A5cuXVpVq1Y1xRctWqT8+fPr8ccf18CBAzVixAjLfzdx4sQJu54nAAAA0jf/tE4AAAAAAABYW7VqlWXxhCty5syp0aNHq1evXvLx8XFqjpdeekmff/65zp49myQeFxenESNG6KOPPlKdOnVUrlw5ZcuWTZGRkTpz5oxWr16tS5cumeabMGGCJk+erMOHDzuVT3rw/PPPJ7ta5LPPPit//wfvr2maNGmiunXrmm5knzx5Ut9++63NVbxy5MihZcuWKTw83HRT0zAMLVq0SIsWLVJwcLBq1qypsLAwhYSEKCgoSFFRUYqMjNT58+e1c+dOnTlzJtWeX48ePbRs2bIU97N1U9kZ/fr10/nz5y0Llc+dO6c333xTb775pkqWLKkqVaooZ86cCgkJUVxcnCIjIxUZGalDhw5pz549unXrltvy8ibjxo3T8uXLTavKnjt3Th07dtTAgQPVqFEj5c+fX/7+/rpw4YL27t2rzZs3mwqyJkyYoGnTptls7mMvzpt3CwsL05IlS9S0aVPTqnDx8fH67rvv9N133yl79uyqVauWChYsqJCQEGXIkEFXr15VZGSkzp49q7///tuplWDTg6FDh+q3337Tjh07TNumT5+uGTNmqGbNmipfvrzy5s2rqKgoHT9+XCtWrDA1aKtcubJeeOEFPffcc55KHwAAAAAAAAAA4L42cOBAff7554qKikoSnzNnjoYOHWqzuVC1atX0008/qV27dqZGNjExMZowYYImTJig3Llzq1atWsqXL59CQkLk5+d35z7myZMntXPnzhT/IbWzMmbMqI4dO+qbb75JcV933pufMWOGIiMjLRfB+vvvv9WlSxf5+/urUqVKKleunEJCQpQ1a1bFxMQoMjJSly9f1t69e3X48GGvaprkLhkyZNCnn36qTp06mbZt3bpVVatW1UMPPaRatWrp/7F33/FV1/f+wN8ng72XDGUpS1AQEFSmA+dt9bqq1lacddTaWmdvb9Xa9mrVWrW1aq2i1rZu6t4yHAgICqjI3sreYQRyfn/489RDAiSQnBPg+Xw88mg++3VIcqDNp+9vkyZNYsOGDbFo0aIYNWpUsQcI1axZM5544ok44IADdjrXnvR1y9bPxqxZs+LWW2+NW2+9NfLy8qJLly7RsWPHaNCgQTRo0CASiUSsXr06Zs6cGWPHjt3mvZ377rsv6tSpU27ZyuLcc8+NSZMmxR/+8IdiY6tWrYobb7wxbrzxxmjfvn107949dY9j/fr1sXTp0pgzZ068//7723xgWZMmTeKFF16I6tWrV+RL2aV07tw5TjjhhHjppZeKjc2cOTNmzpy51bWtWrWKH//4x9vcf8yYMTFmzJi46qqrolatWnHQQQel7pXVq1cvdQ9nypQpMXr06GJ/b36jdu3a27wLmAmbNm2KF198MV588cWI+Lo4ygEHHBCtWrWKxo0bR/Xq1WP9+vWxevXqmDNnTkyYMGG795tq1KgRzz77bJmKrBx//PFxxRVXxF133VVsbOrUqXHCCSdE06ZNY8CAAdGiRYuoVq1aLFiwID766KOYOHHiVvft2bNn/Pa3vy11jvJywQUXxNChQ+Pll18uNvbyyy/Hyy+/HN26dYuDDjoomjdvHgUFBTF37tx4++23Y9myZWnz99lnn/jtb38bJ510UobSl93vfve7uPzyy1NF1L788ss4/fTTo2HDhnHEEUfE3nvvHdWrV48vv/wyxo0bF5988slW9+rdu3dce+215ZatevXqcc4552y1IGFExEUXXVRu51E2f/nLX+Kjjz5Ke+DhNx5//PF4/PHH4+CDD44DDjggmjVrts2flW/7v//7v+jevXuZsuy1115x7733lvjvzgULFsTpp58ejRo1isMPPzz22Wef7b4P3XvvvXHllVemik/tqHvvvTf69etX7N+MU6ZMiUGDBsW+++4bAwYMiKZNm0ZRUVEsWrQoxo0bFx9//HHa/Nzc3Pj73/8eF1xwwTb/7Erj/vvvj3nz5sVbb71VbGzevHlxwQUXxMUXXxyHHHJI7LffftGkSZOoWrVqLF++PBYuXLjVr3lpXXvttSUWTysoKEi9x25N3759o1WrVjt8NgAAu4Y97/9ZCQAAAHugZs2axU9+8pO45JJLom7duju1V82aNeO5556LAQMGlPikvrVr18brr79e4mWxLd1www1x9tlnb/VJYLuLrl27xiGHHBKjRo0qNpZIJOKCCy7IQqrK4YYbbohBgwYV6//d734X55133laf0NW6det4//3348QTT4yxY8eWOGft2rUl/qI2U755mua2LvJWq1YtzjjjjHI996abborGjRvHlVdeudUnV02dOnW3Ljq3LW3bto3bb789Lr300hLH58+fH4899th297npppti8ODBMWTIkHLJ5etWufXo0SPefffdOPHEE2PatGklzlmxYkW88sorGU5WOVSrVi1efPHFGDBgQIl/PslkMj744IP44IMPtrlPs2bNYujQoVl97wYAAAAAANjdNGjQIC6//PJihSSKioripptuiieeeGKra48//vh4/fXX49RTT41FixaVOGfRokXx73//u1wzl8XgwYO3W+TnkEMOiQ4dOpTbmVWrVo0XXnghLrroonjkkUdKnLNp06ZUsZU90RlnnBFDhw7d6vfXxIkTt1n8JOLrP+fnnnsuunTpUi6Z9rSvWzZ+Nr5t06ZN8fHHHxcr5LA9iUQi7rrrrjjxxBMrJFdp3XHHHVG1atX4v//7v63OmTJlSkyZMqXMe7dp0yZeffXV2HfffXcm4m7poYceil69ehV7KGJ5W7NmTYwcOTJGjhxZpnV169aNF198MfbZZ58KSrZjFi5cGAsXLtzh9XvttVc899xzccghh5R57Z133hkFBQXx17/+tcTxr776apv/1thSz54947XXXotq1aqVOcvOSiQS8a9//SsGDRoUH374YYlzSvO+Vrt27Xj++ecrrABoealbt248//zz0b9//1i9enWqf+nSpfHUU0+Vep9OnTrF888/v9W7njvq4osv3moBrAEDBkT79u3L9TxKr2HDhvHWW2/FUUcdFdOnTy9xTln/PXXjjTfGz3/+8x3Kc8YZZ8ScOXO2WoRtyZIlpfqe/uUvfxknn3xyXHnllTuU49sOO+ywuPrqq+PWW28tcXz69Olb/bP7RiKRiAcffDCOOuqonc4T8Z9/C5911lkxdOjQEuds2rQp3n333WIPNi4Pp556alxyySXxl7/8pdz3BgBg95CT7QAAAABAxWjZsmWcf/758dprr8WcOXPiuuuu2+niV9/o1atX/Pvf/y7T076+LT8/P+6+++648cYbyyXPruCSSy4psf/II4+Mtm3bZjhN5XHUUUdF3759i/XPnTt3u4XRmjdvHu+//3788pe/LNcLL1WqVImjjz56p/f55mma23LSSSeV28/lt/34xz+ODz74oMxPw9qetm3bRqdOncp1z2y45JJL4p577olEIlHmtXl5efGnP/0pfvWrX5V7Ll+3ym3//feP8ePHx8UXXxy5ubnltm+NGjXi8MMPL7f9sqV58+YxcuTIOOyww3ZofYcOHeK9996rdJdEAQAAAAAAdgdXXnll1KlTp1j/U089FZMmTdrm2n79+sWECRPitNNOK9dM9evXjz59+uz0Poccckh07Nhxm3MGDx680+dsqUqVKjFkyJD4xz/+EU2bNi3XvQ899NAdvpNTmfz973+PM888c4fWNm7cON58880SH6q2M/akr1smfjZ25N7FtjRt2jSeeuqpuPzyy8t13x31u9/9Ll588cVo2bJlueyXSCRi8ODBMX78eIVbtqJJkyYxbty4OOuss3b6bkZ5f3927949RowYUeJdt4p03nnnRefOnStk75ycnLjkkkti8uTJceihh+7QHolEIh544IG4++67o0aNGjuV5/zzz48RI0Zk9b20du3a8eabb+5wEb6mTZvGO++8E926dSvfYBWkW7du8c4770SzZs12aP3hhx8eI0aMiCZNmpRzsq/v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jahbt240bNgwDjjggDjooINi0KBBWSl6tT1FRUUxYcKE1M/a1KlTY8aMGbFs2bJYvXp1rF27NqpWrZr6+7hhw4bRpUuX6NatWxx00EHRu3fvCv2ZW758eQwdOjSGDx8eEydOjDlz5sSqVati8+bNUbNmzWjRokV07Ngx+vTpEyeddNJWHy5aGRQWFsa///3veOGFF+Kjjz6KOXPmxNq1a6NGjRrRpEmT6Ny5cxx++OFx2mmnxd57753tuDtt/vz58fTTT8fbb78dn376aSxcuDD187HPPvtE9+7d4/jjj4+TTz45qlWrVqFZCgoKolmzZrFq1aq0/p/+9Kdx5513VujZO+rjjz+OoUOHFus/6aSTolu3bhnPk2kTJ06MF154Id5///2YMmVKfPXVV1FQUBB5eXlRt27daN26dXTt2jWOOOKI+M53vlOhfzd+8skn8cQTT8SIESNiypQpsWLFisjJyYm6detG+/bto1evXnHSSSdFv379KizDt23atClef/31eOWVV+L999+PhQsXxpIlSyKRSETDhg2jU6dO0b9//zj99NOjQ4cOGcn0jXXr1sWrr74aw4YNi/Hjx8fMmTNj2bJlsX79+tQd1b322is6duwYXbp0iSOOOKLC/x4BAGDPpAAWAAAAQAVbs2ZNNGvWLNasWZPWf80118Stt96apVQAAAAAAAAAAAAAULk88sgjMXjw4GL9n332WXTq1CnzgQAAAKhQu/ejMwAAAAAqgccff7xY8atEIhEXXnhhlhIBAAAAAAAAAAAAQOVz3333Fevr27ev4lcAAAC7KQWwAAAAACpQMpmMe++9t1j/oEGDYr/99stCIgAAAAAAAAAAAACofMaNGxejRo0q1n/ppZdmIQ0AAACZoAAWAAAAQAV6/vnnY8KECcX6f/zjH2chDQAAAAAAAAAAAABUTjfffHOxvqZNm8app56ahTQAAABkggJYAAAAABVk3bp18fOf/7xYf7t27eKEE07IQiIAAAAAAAAAAAAAqHxef/31GDp0aLH+yy67LPLz8zMfCAAAgIxQAAsAAACgAixfvjxOPfXUmD59erGxG2+8MXJy/M8yAAAAAAAAAAAAAPD+++/HWWedVay/YcOGccUVV2QhEQAAAJmSl+0AAAAAALuylStXxj333JNqr1+/PqZOnRqvvPJKrF69utj8rl27xhlnnJHJ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bW8AAAAAAAAgc87o1TLychLZjpFy9iGtsh2BLFAAC6j0jui4V3y3a/MKPePEbs3j8I5NKvQMAAAAAAAAAAAASq9evXpx3nnnpfWdd955MWHChG2uu+GGG+Kll15KtXNycuJnP/vZVudfccUVkUj851L3n//853j88ce3ecaDDz4YDz744DbnlOT4449Pa1977bVRUFCw1flr166N733vezF37twynXPDDTekvaZ//OMf8dOf/jSSyWSp1r/11ltbHevcuXNa+5lnnilTNgAAAAAAAKBy2KtOtRi0/17ZjhEREbWq5sV/d2+R7RhkgQJYwC7hpu92jr3qVK2QvfeqUzVu/E7n7U8EAAAAAAAAAAAgo377299G69atU+3ly5fHYYcdFnfccUcsX748be6kSZPilFNOiV//+tdp/VdffXUcdNBBWz3j0EMPjfPPPz/VTiaT8YMf/CB+8pOfFCs8NWvWrLjkkkvioosuiohIy1Ya3//+96NGjRqp9ieffBJHHXVUjB8/Pm3e+vXr49lnn42DDz44XnvttahSpUrsvffepT7nqKOOiiuvvDKt76677ooePXrEs88+G2vXri22Ztq0aXHXXXdFz54946ijjtrq3gcddFA0atQo1R42bFgcccQRcd9998XLL78cb775ZtoHAAAAAAAAUHld0K9tfOvZOllzRq99olbVvGzHIAt81YFdQv2aVeKR83rF9+4fFSvXFZbbvnWr58cj5/WK+jWrlNueAAAAAAAAAAAAlI/atWvHU089FUcffXSq4NXatWvjqquuiuuvvz7atGkTderUiS+//DLmz59fbP2xxx5brCBWSe6444746KOPUoWokslk3HPPPfGnP/0p2rRpEw0bNowlS5bEzJkz07Lde++9cfzxx5f69TRs2DB+/etfx1VXXZXq++CDD6J79+7RokWLaN68eaxduzZmzpwZ69atS825++6745///GfMmzev1GfdcsstMXfu3HjyySdTfePHj49TTjklqlSpEq1atYoGDRrE2rVrY968ebFixYpS7Zufnx8/+clP4le/+lWq75133ol33nmnxPnJZLLUmQEAAAAAAIDM6tGqfny/d6v4+6jZWcuwT4PqceWg9lk7n+zKyXYAgNLq2LROPPGjQ2KvOlXLZb8GNavEEz86JDo2rVMu+wEAAAAAAAAAAFD+evbsGSNG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s8+Os88+e5tzAAAAAAAAAPhaXrYDAOxqjurUJHq2qh9jZy8vNjZx/sp4ceKX8d2uzbOQDAAAAAAAAAAAqGiPfzgnxs1ZkdUM4+Ysj8c/nBM/OLRVVnNkUo0aNaJnz57xwQcfpPpGjBgRZ5111jbXfbvA1UEHHRQ1a9aMfv36xYQJE1Lj11133Tb3+Pjjj2PVqlWpdt26daNbt2478Cq2r6CgIIYNGxazZ8+OZcuWRd26daNTp07Rp0+fqFatWrmdk0wmY/To0fH555/HV199FXl5edGqVavo06dPNG9e/vffCgoK4r333ov58+fHokWLIjc3N5o0aRL7779/dO/ePRKJRLmfmQlTpkxJ+57s2bNndOjQISIiOnfuHJ9++mlERLzzzjsxd+7c2GeffbKSEwAAAAAAAKCyysl2AIBdTSKRiOuP77jV8dtf+yI2ZunpjgAAAAAAAAAAQMX627szsh0hIiIeem9mtiNk3IABA9Law4cP3+6ab8/p379/RET069cv1ffee+/F5s2bS71HRETfvn0jJ6fkK7itW7eORCIRiUQiWrduvd1831i+fHlcfPHF0aRJkzjhhBPi0ksvjV/+8pdx+eWXx1FHHRVNmjSJa6+9NtauXVvqPUtSVFQUd999d7Rs2TIOOeSQOPfcc+P666+Pq6++Ok4//fTYe++947jjjouJEyem1nzzehKJRAwcOLBM57333ntx/PHHR4MGDeLoo4+Oc889N6699tq46qqr4oc//GH07NkzmjZtGr/61a9i9erV29xr4MCBqRzfNnz48LSMW37ceOONZcpcFo888kha++yzzy7x86Kionj00UcrLAcAAAAAAADArkoBLIAd0KNVgzh6/71KHJuzrCD+OXpOhhMBAAAAAAAAAAAVbcSUxTFraUG2Y0RExMwla2PElMXZjpFRWxbAGjFixDbnr1q1Kj755JNU+5vCV98ugLVq1ar4+OOPt7nPludsmWNnjR07Nvbff/+4//77t1rgavXq1fH73/8+Dj744Jg3b94OnbNixYro169fXHHFFVvdI5lMxquvvho9e/aMJ554YofOiYhYu3ZtnH766dG3b9945ZVXYsOGDVudu2jRorj55pujffv2MWbMmB0+M9OKioriscceS7Vzc3PjjDPOSLXPOuustGJdCmABAAAAAAAAFKcAFsAOuubYDpGTKHns7remxpoNmzIbCAAAAAAAAAAAqFB/HzU72xHSVLY8Fa1Pnz6Rm5ubak+ePDkWLVq01fnvvfdebN68OSIiEolEqvBV8+bNo02bNql52yqklUwm4913303rK88CWJMmTYpjjjkmvvrqq7T+KlWqRIcOHaJHjx7RpEmTVP/nn38exx9/fKxbt65M56xduzaOPvroeP/994uNtWzZMg4++ODYb7/9Ii8vLyIiNm7cGGeffXYMHz68zK9p0aJFMWDAgHjqqaeKje29997Ro0eP6NatW9SvXz9t7KuvvoqBAwcW+/OurN5+++2YO3duqn3UUUfFXnv958GaLVu2TCu2NmXKlBL//AEAAAAAAAD2ZApgAeyg/ZrUjtN77lPi2NK1G+OBETMynAgAAAAAAAAAAKgomzYXxfApi7MdI82IqYtjc1Ey2zEypnbt2nHQQQel9W2reNW3xzp37hwNGjRItb9dmGhbRZ4+++yzWLJkSapdq1at6N69e5lyb01hYWGcddZZsWzZslRf7dq146677opFixbF5MmTY+zYsbFw4cIYNWpU9O/fPyIiJk6cGL///e/LdNb1118fY8aMSbUTiURccMEFMW3atJg9e3aMHj06pk6dGl999VXccsstUaNGjdi0aVOce+65ZTqnqKgozjjjjPjoo49SfY0bN47bbrstvvzyy5g7d26MHTs2xo8fH0uWLIl33303jjjiiNTcgoKCOPPMM2Pp0qXF9r7jjjvijTfeiDfeeCOt/8ADD0z1l/Txwx/+sEyvobSGDBmS1j777LOLzdmy75FHHqmQLAAAAAAAAAC7qrxsB2DHJZPJmDVrVkycODHmzZsXK1asiKpVq0b9+vWjXbt2cfDBB0e1atWyHXOHffrpp/HRRx/Fl19+GZs3b46GDRtGly5donfv3qknjEG2/fSo9jH04/mxvrCo2NiDI2fE2Ye0jCa1d92fQwAAAAAAAACAysBdKSqDqYvWxIZNxe8JZdP6wqKYumh1dGxaJ9tRMmbAgAExduzYVHvEiBFx6qmnljj32wWwvl3w6pv2o48+GhER7777biSTyUgkEtvcIyKiT58+5fZzeeedd8bEiRNT7fr168eIESOiS5cuxeb27t07hg0bFuecc0489thjMWvWrFKf88knn8Sf//zntL777rsvLrroomJzGzZsGNdee20cfvjhcdRRR8XMmTNL/4Ii4rbbbot33nknLffzzz8fTZo0KTY3Jycn+vTpE2+88UZcccUV8ac//SkiIubNmxe//vWv46677kqb36NHjxLPrF+/fhx11FFlyrmzVq9eHc8991yqXbNmzfjv//7vYvNOO+20uPzyy2PDhg0REfHEE0/EXXfdtUv/nQUAAAAAAABQntyM2cUsX748hg4dGq+++mq8/fbbaU8V21J+fn6ccMIJ8dOf/jQGDBhQIXlee+21OPbYY4v1v/POOzFw4MAy75dMJuPhhx+OW2+9NaZMmVLinIYNG8Yll1wS1113XdSsWbPMZ0B5alq3WpzXp03cO2x6sbGCjZvjnremxc0nFb+MBAAAAAAAAADAtrkr5a5UZTNp/spsRyjRpPkr96gCWP3794877rgj1d6yQNU31q1bl1Yoq3///mnj3y6ItXTp0vj0009LLDy15f7l9R6zefPmuPvuu9P6/vrXv5aY4RuJRCL+9re/xUcffRSfffZZqc/605/+FEVF/yneNnjw4BKLX31br1694s4774wLLrig1OcUFBTE73//+1S7WbNm8fLLL0eDBg22uS4nJyf++Mc/xtixY2PUqFEREfHQQw/FTTfdFPXq1Sv1+Zn05JNPRkFBQap90kknlfg+Xa9evTjhhBPi2WefjYiIlStXxtChQ+OMM87IWFYAAAAAAACAyiwn2wEovcsuuyyaNm0a5513Xjz55JPbvNAVEVFYWBhDhw6NgQMHxjnnnBOrVq0q1zxr1qzZ7gWIslixYkUcc8wxcf7552/1QlfE1xdNfvOb38SBBx4Yn376abmdDzvqRwP2jXo18ksc++foOTFzydoMJwIAAAAAAAAA2LW5K/U1d6Uql8++LN/vq/Ly2YLKmaui9OvXL3Jy/nP9deLEibFixYpi80aNGhUbN25MW/dtHTp0iCZNmqTaWyukNXLkyLR2eRXAev3112P+/Pmp9sEHHxynnHLKdtfl5+fH7373u1Kfs3HjxvjXv/6Vaufm5sZvf/vbUq0977zzon379qU+69FHH41ly5al2jfeeON2i199O9f111+faq9ZsyZee+21Up+daUOGDElrn3322Vudu+XYlmsBAAAAAAAA9mQKYO1CPvzww7TLGN/Izc2NvffeO3r06BEHHnhg1K1bt9icRx99NAYNGhRr1qwptzzXXXddzJkzp1z2WrduXRxzzDHxxhtvpPVXqVIl2rdvHwcccECxJ2PNmDEjDj/88Jg2bVq5ZIAdVbd6fvz48P1KHNtUlIzbX/siw4kAAAAAAAAAAHZt7kq5K1UZrVxXmO0IJaqsuSpK/fr144ADDki1i4qKihWpikgvaNW2bdto0aJFsTl9+/ZNfT58+PBi49OnT08rUlWjRo04+OCDdzj7tw0bNiyt/cMf/rDUa0844YRo3LhxqeZ+8sknae+HAwcOjObNm5dqbSKRiO9///ulzvXyyy+nPs/Ly4szzjij1GsjIo488si04mYlfV0rg+nTp8e7776bau+1114xaNCgrc4/4YQTon79+qn2m2++GQsWLKjQjAAAAAAAAAC7CgWwdlH16tWLSy+9NF566aVYvnx5zJ07N8aOHRuffPJJLF26NN55551iTysbPXp0DB48uFzOf++99+Lee++NiIicnJyoVq3aTu135ZVXxujRo1PtnJyc+N///d/46quv4osvvogJEybEsmXL4uGHH067BLB48eI4/fTTY/PmzTt1PuysHxzaKlrUq17i2EsTv4yP567IbCAAAAAAAAAAgN2Eu1Jfc1cq+wo3FWU7QokKNyezHSHjBgwYkNb+drGrb3y7oNWW7xEl9ZdUbGnLoliHHnpo5Ofnlynr1nz7fSDi68JUpZWXlxd9+vQp1dyxY8emtQ877LBSn1OW+clkMt57771Uu3379lGnTp0ynVWzZs1o2LBhqv3555+XaX2mPPLII2nt733ve5Gbm7vV+VWqVIlTTz011d68eXM89thjFZYPAAAAAAAAYFeiANYupnXr1vHggw/GggUL4s9//nMcf/zxUbt27bQ5ubm5MXDgwHjnnXfioosuSht75pln4p133tmpDBs2bIjzzz8/ksmvL81cdtllsddee+3wfpMnT46//vWvaX1///vf49e//nXaBa4qVarE4MGDY+TIkVGvXr1U//jx4+PRRx/d4fOhPFTNy42fH91+q+O3vPJ56mcGAAAAAAAAAIDtc1fKXanKJj+vcl65zM9NZDtCxvXv3z+tvWUBrMLCwhg1atRW53/j2wWwvvzyy5g6deo2992y8NbOmDlzZurz3Nzc6NixY5nWH3DAAaWaN3/+/LR2p06dynROaecvXLgwli1blmp/9tlnkUgkyvyxePHi1B7f3q+ySCaTxd6Hzz777O2u23LO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wkS7q5YtW0arVq1i9uzZEfH1+8E3atSoET169CjVPvXq1YsuXbrEhAkTiu2Tl5cXhx12WDmm/o8rr7wyHnvssfjss88iImL58uVx2GGHxW9/+9s455xzok6dOqm5o0ePjmuuuSaGDx8eERGtW7eOWbNmleqcatWqxV//+tc44ogjUq9t/Pjx0aVLlzjttNPi8MMPjyZNmsTKlStj7Nix8Y9//CO++uqriIj40Y9+FPfdd1+pX9M111wTI0eOTL2nrl69Ok466aQ46aST4sc//nH06dOn2Pvr+vXrY8KECfHmm2/GM888kyoG9cQTT2z1nKOPPjpeeeWVVPu///u/40c/+lH06NEj6tatm1bQrG3bttG2bckPsyyNIUOGpLVPPvnkqFKlyg7vl5+fH6ecckr89a9/TfU98sgj0b179x3eEwAAAAAAAGBXlbP9KeyKrr766rRf7EdE3H///bHPPvuUav2iRYvipz/9aap93nnnlfsTzNavX5/W3pHLAFtegli3bt1OZYLyVqtqXvzkyHYljhUlI2599YsMJwIAAAAAAAAA2L24K0U27Nu4VlxzbIesnH3tsR1j38a1snJ2ZbS1n9dDDjkk8vPzS71Pv379Suzv0aNH1KpVMX/eVapUiX/+859Rv379VN/q1avjJz/5STRp0iQ6deoUPXv2jL322it69+6dKn514IEHxjXXXFOmswYMGBAPP/xwWmGodevWxaOPPhrnnntunHDCCXHWWWfFH/7wh1Txq969e8cf/vCHtH3y8rb97N2cnJz4xz/+EQMHDkz1JZPJeO655+LII4+MunXrRocOHeKQQw6Jbt26RevWraNWrVrRu3fv+J//+Z9U8avt+eEPfxiNGjVKtVesWBG33nprnH766XHMMcfEoEGDUh+PPvpoqfYsSUFBQTz99NNpfWecccYO7/eNM888M639j3/8IwoLC3d6XwAAAAAAAIBdjQJYu6G777672IWDa665Jr73ve+Veo/LL788li5dGhERe+21V9x2223lmjGi+FMMN27cWOY9NmzYsM09oTI4s1fLaNWwRoljb3y2MMbOWpbhRAAAAAAAAAAAuwd3pcim8/u2jXP7tM7omef1aR3n9W2T0TMru60VwNpaQaut2dr88i6It6UDDzwwXn311WjSpEla/4YNG2Ly5Mnx0UcfxaJFi1L9nTp1ipde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cebBLaN+zSpZSAYAAAAAAAAAUPm4K+Wu1K4uNycRHZvWiY5N60T0yHYa9mTTpk2LCy+8MK644oo4+uijo1evXtG2bduoW7durF27NhYsWBAjR46MF154IdavX5+29tJLL43+/ftnKTkAAAAAAAAAuysFsHZBX375ZRx55JExb968VF+LFi3irbfeihYtWuzU3u3bt4/27duXeV21atXS2j169IiBAwdud93xxx8feXl5sWnTpoiIGDZsWMyYMSPatm27zXXJZDKGDBmS1nfiiSeWKTNkyz4NasTZh7SKh96bWWxs9fpNce+wafE/J+yfhWQAAAAAAAAAAJWLu1LuSgHlr6CgIIYOHRpDhw4t1fxTTz01br/99ooNBQAAAAAAAMAeKSfbASibZcuWxaBBg2L69OmpvsaNG8cbb7wRbdq0yWKyHdOgQYM46aSTUu1kMhk33njjdtc99NBDMWvWrFS7VatWcdRRR5V/QKggPz5iv6hdteQahI+8PzvmLS/IcCIAAAAAAAAAgMrFXamvuSsFlJe99967TPMbNmwYt912Wzz55JPFiv8BAAAAAAAAQHlQAGsXsnr16jj22GPj008/TfXVq1cvXn/99ejUqVMWk+2cm266KXJy/vOt+Nhjj8U///nPrc7/7LPP4qqrrkrr+9///d+oUqVKhWWE8tagZpW4eOC+JY5t3FwUf3hjSoYTAQAAAAAAAABUHu5Kfc1dKaA8vfvuuzF+/Pi47bbb4tRTT42uXbtGw4YNo2rVqpGfnx9NmjSJ/fffP374wx/Gww8/HLNmzYqrrroqEolEtqMDAAAAAAAAsJvKy3YASu+73/1ujBkzJq3vyiuvjCVLlsSbb75Zpr169OgR9evXL894O2z//fePCy64IB544IFU39lnnx2ff/55/OxnP0vlLCwsjMcffzyuvPLKWLFiRWrugQceGOecc06mY8NOO7dP63jk/VmxaPWGYmPPjZ8fF/ZrG52a1clCMgAAAAAAAACA7HJXyl0poGJ069YtunXrlu0YAAAAAAAAABARCmDtUoYNG1as71e/+tUO7fXOO+/EwIEDdy5QObrzzjtj3LhxMXbs2IiIKCoqiptvvjluvfXWaNOmTVStWjVmzJgRa9asSVvXqFGjeOqppyIvz7cyu54aVfLip0e1j188N7HYWDIZceurk2PIub2ykAwAAAAA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N2/ePK688sr44Q9/GEVFRdU6M5PKysq455574vbbb4+lS5dWqScSiTjllFNi7Nix0bdv39Tcx0pKSmLixInVvm/q1Klxyy23xPPPPx/bt2/PuKZdu3ZxxRVXxDXXXBPNmzff41kjR46s8msR8dGvz94aaN14441x0003VTvz/pIpY9OmTXOQBAAAAAAAAKDuOHA++gugAbru1J57rP1kwjuxrbwii2kAAAAAAAAAAOAA8PIvcp3gI6/cm+sEWVdSUpI2njx58l7Xb9y4MWbOnJkaDx8+PO2/H695880393rO7vfsnuPTmjFjRvTu3Tt++ctfZmx+FRGxadOmGDt2bAwcODBj46rqWL9+fQwfPjyuuuqqPZ6RTCbj6aefjgEDBsRf/vKXT3RPRERZWVmce+65MWzYsHjqqaf22PwqImLlypXx4x//OLp37x7Tp+e4udx+NHfu3LRxmzZtolWrVjlKAwAAAAAAAFA3aIAFUI/1Paw4zjy2Q8baBxu2xe9fWpzdQAAAAAAAAAAA0JAtfC5i7Xu5TvGRNe9GvPt8rlNk1dChQyM/Pz81njdvXqxcuXKP66dOnRoVFR99iGAikUg1vurQoUN06dIltW5vjbSSyWS8+OKLaXO12QBr1qxZccopp8SKFSvS5hs1ahQ9evSI/v37R7t27VLzc+fOjdNPPz22bt1ao3vKyspizJgx8dJLL1WpHX744TFw4MA46qijoqCgICIiduzYERdccEFMmjSpxt/TypUro6SkJB555JEqtcMOOyz69+8f/fr1q9L8acWKFTFy5MgqP98Nxf333582HjVqVI6SAAAAAAAAANQdGmAB1HPXjOkRhfmJjLVfvLAwNmwpz3IiAAAAAAAAAABooGb8b64TpJv+61wnyKrmzZvHcccdlza3t+ZVu9aOPvroaN26dWr8cTOsiNhrk6c5c+bE6tWrU+ODDjoojj/++Brl3pPy8vL48pe/HGvXrk3NNW/ePO66665YuXJlzJs3L2bMmBEffvhhvPLKKzFixIiIiHj77bdj7NixNbrrhhtuiOnTp6fGiUQiLr300li4cGGUlpbGtGnTYsGCBbFixYq49dZbo1mzZrFz58742te+VqN7Kisr47zzzovXXnstNde2bdu4/fbb44MPPoglS5bEjBkz4o033ojVq1fHiy++GJ/5zGdSa7ds2RLnn39+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qalE4l8fyphMJvfbPbv6/ve/nzaeMWNGjBs3Lit3AwAAAAAAADRUGmABsN999+Ru0bQw80O7X09ZFCs3bstyIgAAAAAAAAAAqLlze5yb6whpvtTzS7mOkFMjRoxIG0+ePDmtkdSwYcMiL2/fT2WHDx+edsauTbQiPmpW1bRp00+ZNt3IkSPTxg888EC19z755JOxevXqaq3t0KFD9O/fPzVevnx5PPbYY9Xa+/7778cTTzxR7Vynnnpq2vjnP/95tffWVFFRUerrLVu27Ld7djV69Ojo169f2tzll18eGzZs+FTnVlRUxPjx4z/VGQAAAAAAAAD1lQZYAOx37Vo0ia8P65KxtrW8In723IIsJwIAAAAAAAAAgJob2nFodG7ROdcxIiKic4vOMaTDkFzHyKmSkpK08cSJE+PFF19MjXdtbLU3u65755134uGHH97rPbXhlFNOiY4dO6bG06dPj0cffXSf+8rLy+OGG26o0V2XXXZZ2vjqq6+ONWvW7HVPZWVlXHnllbFtW/U/3PDSSy+Nli1bpsZ//etf48knn6xR1upq3bp16uvFixfvlzsy+dWvfhWFhYWp8bJly+KMM874xE2wVq5cGaeddlo89NBDtRURAAAAAAAAoF7RAAuArLiipGu0alaYsfaX6Uvi3VWbs5wIAAAAAAAAAABq7oJeF+Q6QkTUnRy5lKkB1urVq1PjESNGVOucoUOHRl7ev57U/vWvf93rPbUhPz8/vv3tb6fNXXbZZTFr1qw97kkmk3HppZfG3Llza3TXRRddFN26dUuNS0tLY/To0fHee+9lXL9x48b46le/GuPGjYtEIlHte4qLi+O6665LjSsrK+P888+Pxx9/vEZ5X3vttfjSl7601zVHH3106uvVq1fHxIkTa3THJzVw4MC47bbb0uamTp0aw4cPj2nTplX7nIqKivjNb34Tffr0iQkTJtR2TAAAAAAAAIB6QwMsALKieZPC+PfPdMtYq6hMxh3PzM9yIgAAAAAAAAAAqLlze5wbx7Y9NqcZjm17bJzb49ycZqgLDj/88OjcuXNqXFlZmfq6WbNm0b9//2qd07Jly+jTp0/GcwoKCmLIkCG1kLaqq6++Onr37p0ar1u3LoYMGRI///nPY+PGjWlrp02bFieddFI88MADERFxxBFHVPueJk2axP3335/W5OuNN96IPn36xEUXXRS/+93vYty4cfGnP/0pvv/970ePHj3ioYceioiIK664okbf07XXXhunn356arxp06Y466yz4t/+7d/i+eefj+3bt1fZs23btpg2bVr893//d/Tv3z8GDBgQDz/88F7vGTNmTNr4C1/4Qlx//fXxyCOPxPjx4+PZZ59N/dhTo69P6nvf+15ceumlaXNvv/12nHDCCXH22WfHI488Ehs2bKiyr7KyMl555ZX4P//n/0T37t3j61//eqxatapWswEAAAAAAADUNwW5DgDAgeMrJxwev5m6KJau21ql9tSsFfH6++vi+MNb5SAZAAAAAAAAAABUT14iL3489MdxzhPnxPaKqs189rfG+Y3jx0N/HHkJn4EaEVFSUpJqCrWrE044IQoLC6t9zvDhw+Ott96qMt+/f/846KCDPlXGPWnUqFH86U9/ipEjR8a6desi4qOGUd/5znfimmuuiS5dukRRUVEsWbIkVq5cmdp3zDHHxDe+8Y345je/We27SkpK4re//W187WtfSzX42rp1azzwwAMZf/4iIgYPHhw/+clP4r777kvNFRTs/elxXl5ePPTQQ3HWWWfFxIkTIyIimUzG3//+9/j73/8ejRs3js6dO0erVq1i27ZtsX79+li6dGlUVFRU+3uJiLjwwgvjlltuidWrV0dExPr16+O2227LuPbGG2+Mm266qUbn78uvfvWraN++ffzXf/1XJJPJiPjo+3z00Ufj0Ucfjby8vGjbtm20a9cuGjduHB9++GGsWLEiysvLM57Xvn37Ws0HAAAAAAAAUF94/QBA1jQuyI8fjOmxx/qtT81LPQYCAAAAAAAAAIC6qktxl7jq+KtycvdVx18VXYq75OTuuqikpCTj/PDhw2t0zp7W7+n82nLMMcfE008/He3atUub3759e8ybNy9ee+21tOZXvXr1iieffDKaNm1a47suvPDCePzxx+Owww7b59pzzjknJkyYUKUxVXFx8T73FhcXx4QJE+Lqq6+u0jBr+/bt8c4778Srr74aM2fOjNLS0ozNrzp16rTXO1q3bh2PPvpolZ+3bEkkEnHzzTfHxIkTo2/fvlXqlZWV8eGHH8bbb78dM2bMiCVLlmRsftW7d+944okn4n/+53+yERsAAAAAAACgztEAC4Cs+tyxHaJ3+xYZa9MWrY0X5q/MWAMAAAAAAAAAgLrkq72/Gl/p9ZWs3nlBrwviq72/mtU767o9NagaMWJEjc7ZUwOsmp7zSQwaNCjmzp0bl112WTRr1izjmubNm8c111wT06dPr1YDqz0544wzYu7cufGrX/0qxowZE506dYpGjRpFs2bNomfPnnHppZfGiy++GA8//HA0b9481q5dm7a/Og2wIiIKCgrizjvvjPnz58fll19erUZVRxxxRFx++eUxfvz4WLx48T7XjxgxIubNmxf33HNPnHnmmdGlS5do3rx55OVl73n0iBEjYubMmfHPf/4zzj777CgqKtrnnnbt2sVFF10UEydOjFmzZsVnP/vZLCQFAAAAAAAAqJsSyWQymesQUN/Nnj07+vTpkxrPmjUrjj766Bwmgrpt8jur4sLfTMtY63FI8xh31fDIz0tkORUAAAAAAAAADYn3HLD/1Obvr507d8aCBQvS5rp16xYFBQWfKmM23Trt1vjj3D/u93su6HVBXDfouv1+D7lVVlYWL7zwQpSWlsa6deuiuLg4evXqFcOGDYsmTZpkPc8///nPOPPMM1Pjm266KW688cYan5NMJmP27Nkxe/bsWL16daxfvz4aN24cxcXF0aVLl+jdu3d06NChNqPnxM6dO2PWrFkxf/78+OCDD6KsrCwKCgqidevW0bZt2+jXr18cccQR++Xe+v5nKQAAAAAAAPDJ1ee3Uv5VE4CsG97t4Bh6VJuYunBNldr8DzfF315fGucM6JSDZAAAAAAAAAAAUDPXD7o+Oh7UMe56/a7YXrG91s9vnN84rjr+qvhq76/W+tnUPUVFRfHZz3421zFSnnvuubTxgAEDPtE5iUQi+vTpk/bguiEqKCiIfv36Rb9+/XIdBQAAAAAAAKBe0ACrHksmk7F48eJ4++23Y+nSpalPw2rVqlV069YtBg4cWGuf9rV+/fp4++2345133ol169ZFeXl5tGrVKg499NAYPHhwtG/fvlbu+VgymYzXX3893nzzzVi5cmVERBxyyCFx7LHHxvHHHx+JRKJW7wOyK5FIxPWn9ooz73kxY/0nE96JM4/tEE0K87OcDAAAAAAAAACoi7yVoq77au+vxrCOw+I/p/5nzFw1s9bOPbbtsfHjoT+OLsVdau1MqK6NGzfG73//+9S4oKAgBg8enMNEAAAAAAAAADQ0GmDVM+vWrYvHHnssnn766Xj++edj9erVe1xbWFgYZ5xxRnz3u9+NkpKSGt1TWVkZEydOjCeeeCKeffbZmDVr1l7X9+7dO771rW/FxRdfHM2aNavRXbsqLy+Pu+66K372s5/FsmXLMq457LDD4rvf/W585zvficLCwk98F5BbfQ8rjjOP7RBPzFxepfbBhm3xwMuL4/IRR+YgGQAAAAAAAABQF3gr5a1UfdOluEs8cNoD8fD8h+MPc/8QpRtLP/FZnVt0jgt6XRDn9jg38hJ5tZiSA1kymax2U71kMhlXXnllrFu3LjV35plnxsEHH7y/4gEAAAAAAABwAEokk8lkrkNQPd/61rfi17/+dezYsaPGey+88ML4+c9/Hi1atNjn2meeeSa+9rWvxQcffFDje7p16xZ//OMfY+DAgTXeu2TJkvj85z8fb7zxRrXW9+/fP/7xj39Ex44da3xXbZs9e3b06dMnNZ41a1YcffTROUwE9UPpmrIY9ZNJUV5R9a+i4qaFMfmak6K4mcebAAAAAAAAANSc9xz1m7dS6erSW6mI2v39tXPnzliwYEHaXLdu3aKgoP5/vudLy1+Kv8z7S7y0/KXYVrFtn+ub5DeJIR2GxJd6fimGdBiShYQcaEaNGhXnnXdenH/++VFUVLTHdStWrIh///d/j7/+9a+puUQiERMnTowRI0ZkIyo11JD/LAUAAAAAAAD2rT6/lfKvmvXIq6++mvFBV35+frRv3z4OOeSQKC8vj9LS0tiwYUPamgceeCDmzZsXzz33XBx00EF7vWfBggV7fNDVunXrOPTQQ6OoqCg+/PDDeP/996vsLSkpiaeffrpGjxxWrlwZJ510Urz77rtp802bNo2uXbtGZWVlLFq0KLZt+9cjoNdeey1OOumkeOmll3yiGNRTndsUxVcGd47fvbS4Sm3D1vK4d9LCuOG0XtkPBgAAAAAAAADklLdS3ko1BEM6DIkhHYZERWVFvLfhvZizZk7MWzsvNu7YGOWV5VGYVxgtGrWInq17Ru82vaNrcdfIz8vPdWwasIULF8Zll10WV111VYwZMyYGDRoUXbt2jeLi4igrK4vly5fHlClT4oknnkj7Mygi4pvf/KbmVwAAAAAAAADUOg2w6qmWLVvGl7/85TjjjDNi+PDh0bx581StoqIipkyZEj/84Q9jypQpqflp06bFxRdfnPaJXPuSSCRSn/g1cuTI6Nq1a1r9/fffj7vvvjt+9rOfRUVFRUREbN26Nc4888yYO3dudOjQoVr3XHzxxWkPupo0aRK33nprXHbZZdGsWbOIiCgrK4tf/epX8R//8R+phxULFiyISy65JB5//PFqf09A3fLtzxwVj8xYEmU7KqrUfjt1cVx04hHRoWXTHCQDAAAAAAAAAOoCb6W8larv8vPyo1urbtGtVbf4fHw+13EgtmzZEo899lg89thj1Vp/9tlnxx133LF/QwEAAAAAAABwQMrLdQBq5ogjjohf//rXsXz58vjFL34Rp59+etqDroiPPuVw5MiR8cILL8Tll1+eVnv00UfjhRde2Oc9jRo1in//93+P9957L8aPHx+XXHJJlQddERGHH3543HHHHfHMM89E48aNU/MbN26MG264oVrf0/jx4+Opp55KjQsLC+OZZ56Jq666KvWgKyKiqKgovve978XTTz8dhYWFqfknnniiWt8TUDcdfFDjuHzEkRlrO3ZWxs+efSfLiQAAAAAAAACAusBbKW+lgNp12GGH1Wh9mzZt4vbbb4+HH344mjRpsp9SAQAAAAAAAHAg0wCrHvnRj34U8+fPj69//evRtGnTfa7Pz8+Pe++9NwYMGJA2/+tf/3qv+4YMGRLvvPNO3H333XHEEUdUK9vJJ58cY8eOTZv7y1/+Eps3b97n3v/8z/9MG19//fUxYsSIPa4vKSmJ6667Lm3u//7f/1utnEDddOnwLnHwQY0z1v762tJ458NNWU4EAAAAAAAAAOSSt1If8VYKqE0vvvhivPHGG3H77bfH2WefHccee2y0adMmGjduHIWFhdGuXbvo3bt3XHjhhfHb3/42Fi9eHD/4wQ8ikUjkOjoAAAAAAAAADVQimUwmcx2C/euRRx6Jc889NzVu06ZNrF69utbvKS8vj7Zt28aGDRtSc0888UR89rOf3eOet99+O4455pjUuKioKD744IMqn9S4u02bNkX79u2jrKwsNTdnzpzo1avXp/gOPrnZs2dHnz59UuNZs2bF0UcfnZMsUF89+Epp/OdjszLWRvVqF7++aGCWEwEAAAAAAABQn3nPcWDyVio7avP3186dO2PBggVpc926dYuCgoJPlRHgQOLPUgAAAAAAADiw1ee3Unm5DsD+N3z48LTxmjVrYsuWLbV+T2FhYZxwwglpc++///5e9/zjH/9IG5977rn7fNAVEdG8efM455xz0uYe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AAAAAACNjQFYAECjds3wQZGTylz75aszYlNRabKBAAAAAAAAGoBb/jU5NlbxOcrwIbvGsMFdE04EAAAAAAAAAAAANDYGYAEAjdrAXdrElw/okbG2cmNxPPD6nIQTAQAAAAAA1G+vTV8Rz328JGOtZUFu3HjangknAgAAAAAAAAAAABojA7AAgEbvihMGRrO8zL/t+f2YWbFyY1HCiQAAAAAAAOqnwpKyuPHpiVXWrzh+YOzWvkWCiQAAAAAAAAAAAIDGygAsAKDR69auRVx8eN+MtU3FZfGrV2cknAgAAAAAAKB++s3oWTFv1eaMtcG7tomLDu+TbCAAAAAAAAAAAACg0crLdgAajgULFsT7778fS5YsibVr10Z+fn60b98+BgwYEAcccEC0adOm1vZatGhRvP322zFv3rzYsmVLtG3bNgYOHBhHHHFEtG7dutb2AaDpuOzo/vHo2PmxbkvJVrW/vjs/vn5E3+jdqVUWkgEAAAAAANQPs1dsjPtGz6qyftuZQyM/11lrQNOgVwoAAAAAAAAAAOqeAVgN2KJFi2Ls2LHx7rvvxtixY+P999+PDRs2VNR79+4dc+fO3ak9CgsL43e/+13cd999MXXq1Crvy8nJieHDh8d///d/x4knnrjD+7322mtx0003xejRozPWCwoK4pxzzolbbrkl+vTps8P7AND0tGuZH98Ztnv86PkpW9VKy9Nx18vT41fn7ZeFZAAAAAAAANmXTqfjxqcnRXFZecb6uQf1jAP7dEw4FcC/6ZXqs8P7AAAAAAAAAABAfWUAVgPz5ptvxs9+9rN49913Y/HixXW61/jx4+O8887bZjPXp8rLy+P555+P559/Ps4777x44IEHomXLltXeK51Ox7XXXhs//elPt3lfcXFx/OUvf4knnngi/vSnP8WXvvSlau8BABd8rnc89OacWLyucKvasx8tjkuP7Bt792iffDAAAAAAAIAse/bjJfHGzJUZax1bFcS1wwcnnAhAr5ReKQAAAAAAAAAAGrucbAegZt5777148skn67yha8KECXHsscdmbOjq3bt3HHzwwbHPPvtE27Ztt6o/+uijcdppp0VxcXG19/ve9763VUNXKpWKnj17xv777x+dO3euVNu0aVOcc8458eSTT1Z7DwBonp8bV544qMr67S9MjXQ6nWAiAAAAAACA7FtfWBK3/mtylfXrTh4cHVoVJJgI4BN6pT6hVwoAAAAAAAAAgMbKAKxGpHXr1rXynrKysrjgggtizZo1Fddyc3PjqquuioULF8bcuXPj3XffjfHjx8eaNWti5MiRcfDBB1d6x8iRI7d7QuGnHn/88bj33nsrXfvSl74U06ZNi/nz58e4ceNixYoV8corr8Tee+9dKeeFF14Yc+fO3fFfLABNzhf26x6Dd22TsfbWrFXx+ozMJ5sDAAAAAAA0Vj97aVqs2FCUsXZQnw7x5f17JJwIYPv0SgEAAAAAAAAAQMNnAFYD1aZNmzjmmGPi6quvjr///e8xd+7cePbZZ2vl3U899VR89NFHla799a9/jZ/+9KfRvXv3StdzcnJi2LBh8cYbb8RJJ51UqXbHHXdEUVHmBtlPFRcXx7XXXlvp2re+9a34+9//HgMGDKh0/bjjjosxY8bEgQceWHFtw4YN8cMf/rDavzYAyM1JxbXDB1dZv/2FqVFenk4wEQAAAAAAQPZMWLgu/vLOvIy1vJxU3HbmXpGTk0o4FUBleqU+oVcKAAAAAAAAAIDGxgCs/7Bhw4ZYuHBhzJ8/P4qLi7MdJ6PTTjstJk2aFGvXro1Ro0bFnXfeGV/+8pejd+/etbbH008/XWl9yimnxDnnnLPNZ/Lz8+P++++PvLy8imsbNmyI1157bZvP/eEPf6h0KuGAAQPiF7/4RaRSmZtn27VrF3/605+ioKCg4tpf//rXmDp16jb3AYD/dMygLnFI344Za5OXrI9nPlqccCIAAAAAAIDklZWn4/+emhBVnQ1yyRF9Y9CubZINBSSqvvdL6ZXSKwUAAAAAAAAAQOPWpAdgjRw5Mr797W/H3nvvHQUFBdG+ffvo3bt39O3bN954442Mz4wbNy7GjBkTY8aMiY8//jjhxBH9+/ePPffcM3Jy6u5/umnTplVaf/GLX6zWcz179oyDDz640rWZM2du85kHHnig0vr666+P5s2bb/OZPffcs1KTWVlZWTz00EPVyggAERGpVCquO3lwlfW7Xp4WRaVlCSYCAAAAAABI3iPvzouPF67LWNutXfP43nEDEk4E1LWG1i+lV0qvFAAAAAAAAAAAjVuTHID1zjvvxH777RcnnHBC3HfffTFx4sQoLS2NdDod6XQVx5r+f4899lgMGzYshg0bFkcffXQUFhYmlDo5q1evrrTu2bNntZ/t1atXpfXatWurvHfhwoXxwQcfVKxbt24dZ599drX2ueSSSyqtP3sSIwBsz369OsQpe+2asbZwzZZ4+J35CScCAAAAAABIzvINhXHnS9OqrN90+pBo1SwvwURAXdIvVTW9UgAAAAAAAAAAkD1NbgDWL3/5yzj66KPj448/3qp5K5VKbff5733ve5GbmxvpdDrWr18f//znP+sqata0a9eu0nrLli3Vfvaz93bu3LnKe5977rlK68MPPzxatWpVrX0OP/zwaNmyZcV62rRpMWPGjGrnBICIiKtOHBS5OZn/+X/vyBmxvrAk4UQAAAAAAADJ+PFzU2JDYWnG2vF7dI0Th2Q+SARoePRLbZteKQAAAAAAAAAAyJ4mNQDrwQcfjCuuuCJKSv49zCI3NzcOOeSQOOuss7Z7mmFERI8ePeLYY4+tWD/zzDN1kjWb9t1330rr9957r1rPpdPpre49+OCDq7x//PjxldaHHXZYtfaJiMjLy9vq3Z99HwBsT78urePcgzKf3rtmc0n8/rXZCScCAAAAAACoe2/OXBlPjV+csdY8Pyd+eNqQhBMBdUW/1PbplQIAAAAAAAAAgOxpMgOw5s6dG5dffnmkUqmKH1dffXUsXbo03n777XjssccionqnGn7pS1+KiE+amF599dU6zZ0N55xzTqX1/fffH2vXrt3uc3/5y19i8eJ/N8juv//+WzWI/acpU6ZUWu+55541yvnZ+z/7PgCojv8+fkC0yM/NWHvgjdmxfH1hwokAAAAAAADqTlFpWdzw1MQq6987bkD07NgywURAXdEvVT16pQAAAAAAAAAAIHuazACsG2+8MYqLiyOdTkcqlYpHHnkk7rjjjujYsWON33XkkUdW/HzNmjUxa9as2oyadSeccEKceOKJFevly5fHaaedFsuWLavymWeeeSYuu+yyinV+fn78+te/3uY+06ZNq7Tu2bNnjXJ+9v7Pvg8AqqNrm+Zx6ZF9M9YKS8rjF6/MSDgRAAAAAABA3fn9a7Nj9spNGWsDuraObxzRL+FEQF3RL1U9eqUAAAAAAAAAACB78rIdIAnFxcXxxBNPVJxW+F//9V9x9tln7/D7Bg4cGC1btozNmzdHxCen6fXv379WstYXf/3rX2PYsGExceInp76+8cYbMWDAgDj33HPj8MMPj65du0ZxcXHMnDkznnnmmRgzZkzFsy1btoyHH344Dj300G3usWLFikrrHj161Chj9+7dK62XL19eo+cB4FOXHtUvHn53fqzeVLxV7fH3F8QlR/SN3bu2zkIyAAAAAACA2jN/1ea4d9TMKuu3njk0CvKazFlq0Kjpl6oZvVIAAAAAAAAAAJAdTWIA1ptvvlnRfJVKpeLqq6/eqffl5OREt27dKk4yXLRo0U5nrG86d+4c77zzTlx//fXxu9/9LoqLi2PDhg1x//33x/3335/xmfz8/PjiF78Yt956awwYMGCb79+yZUuUlZVVutaqVasaZfzs/Rs3bqzR81VZvnz5Vg1n2zNzZtUNwgDUf22a58d3j909bn528la1svJ03PXStLjvggOykAwAAAAAAKB2pNPpuPGZiVFUWp6x/qX9e8Sh/TolnAqoK/qlaqYp90pF6JcCAAAAAAAAACB7msQArDlz5lT8vHv37tG3b9+dfmf79u0rfr5+/fqdfl991KpVq7jnnnvi3HPPjUsvvTQmT956KMh/Ovfcc+Pb3/72dhu6IjI3YDVv3rxG+Vq0aLHdd+6I3/zmN3HzzTfXyrsAaDi+ckjvePDNObFg9Zatai9OWhrj5q2JA3p3yEIyAAAAAACAnffixKUxelrm4SbtWuTH/54yOOFEQF3SL1VzTbVXKkK/FAAAAAAAAAAA2ZOT7QBJ+PR0ulQqFd26dav195eXZz4dtaGbM2dOnHnmmXHEEUdst6ErIuIvf/lLHHrooXHqqafG4sWLt3lvYWHhVtcKCgpqlK9Zs2aV1lu2bD2wBACqqyAvJ646cVCV9TtemBrpdDrBRAAAAAAAALVjY1Fp3Pxs1Z/7Xzt8cHRq3azKOtDw6JeqOb1SAAAAAAAAAACQvCYxAOs/m3+Ki4tr5Z2rVq2q+HmnTp1q5Z31yahRo2LfffeNp59+umLYx3HHHRePP/54zJ8/P4qKimLdunUxfvz4uOOOO6J79+4Vzz7//PNx4IEHxowZM6p8f6YTDGv6v01RUdF23wkANXHa3rvF0O5tM9bGzl0dI6cuTzgRAAAAAADAzvvFiOmxdP3Ww1ciIvbr1T7OPahnwomAuqZfqmb0SgEAAAAAAAAAQHbkZTtAErp27RoREel0OhYtWrTT71u7dm3Mnz8/UqlUpfc3FtOmTYvTTjstNm3aFBEROTk58bvf/S6+8Y1vVLqvoKAg9tlnn9hnn33iW9/6Vpxzzjnx4osvRkTEkiVL4rTTTovx48dnbLZq3br1VtcKCwtr1Jj12VMMM71zR1x++eVx1lln1eiZmTNnxplnnlkr+wOQPTk5qbhu+B7x1T+8m7F+x4tT45hBXSM3J5VwMgAAAAAAgB0zefH6+ONbczPWclIRt505NHJ89gGNjn6p6mvqvVIR+qUAAAAAAAAAAMieJjEAa/fdd6/4+apVq2Lq1KkxePDgHX7fSy+9FOXl5RERkUql4qCDDtrpjPXJt771rYqGroiIG2+8cauGrs9q27Zt/POf/4z9998/pk2bFhGfNIfdc889cc0112x1f4sWLSI3NzfKysoqrm3atCnat29f7Zz/mTGi9pq6unbt2qia9AComSMGdI4jB3SO12es3Ko2fdnG+OcHC+PsA52CDgAAAAAA1H/l5en4wVMToqw8nbF+0WF9Y8hu7RJOBSRBv1T1NfVeqQj9UgAAAAAAAAAAZE9OtgMk4cADD4yOHTtWnEB4//3379T77rrrroqfDxw4MLp167ZT76tPPv744xg9enTFukOHDnH11VdX69mWLVvGDTfcUOnatv677tKlS6X1woULqx80YqvTKTVhAVBbrh1edeP3L0ZMj8KSsirrAAAAAAAA9cVj7y+ID+avzVjbpW2zuPLEgckGAhKjX6p69EoBAAAAAAAAAEB2NYkBWDk5OXHGGWdEOp2OdDodv/71r+PDDz/coXfdeuutMW7cuIj45DTDCy64oDajZt2rr75aaX3sscdGy5Ytq/38qaeeWtE4FxExc+bMWLJkScZ7Bw0aVGk9f/78GiTd+v6dOaUSAP7T0O7t4vR9dstYW7KuMP701txkAwEAAAAAANTQqo1FcfsLU6us//C0IdG6WV6CiYAk6ZeqHr1SAAAAAAAAAACQXU1iAFZExI033hgFBQWRSqWiuLg4hg8fHu+++261ny8rK4vrr78+brrppoqmpfbt28d3v/vduoqcFXPmzKm07tu3b42eb9++fXTo0KHStc+ePvipzzZhTZ48uUZ7TZkyZZvvA4CdcdWJgyI/N5Wx9utRM2Pt5uKEEwEAAAAAAFTfT16YGuu2lGSsHT2wS5w8dNeEEwFJ0y+1fXqlAAAAAAAAAAAgu5rMAKzevXvHD37wg0in05FKpWLFihVxxBFHxAUXXBAvv/xyrFq1KiIi0ul0RHzSwLVy5cp455134sc//nH0798/7rzzzopTEVOpVPzyl7+MNm3aZPOXVeuKiooqrfPyan7aa35+fqV1WVlZxvv23XffSuu33nqr2nuUlpbG2LFjt/k+ANgZvTq1jK8c0jtjbX1hafx29KyEEwEAAAAAAFTPu7NXxT/GLcxYa5aXE7ecMaRimA3QeOmX2j69UgAAAAAAAAAAkF0179hpwH7wgx/EzJkz489//nOkUqkoKyuLRx55JB555JFK96XT6Rg+fPhW1yIiUqlUpNPpuOKKK+KrX/1qYtmT0qlTp0rrxYsX1+j5oqKiiua4T3Xp0iXjvaeeemql9VtvvRWbNm2KVq1abXefN998MzZv3lyxHjhwYAwcOLBGWQFge7577O7xj3ELY2NR6Va1h96aGxce1id2a98iC8kAAAAAAAAyKy4tjx88NbHK+reH7R69O23/c3mgcdAvtW16pQAAAAAAAAAAILtysh0gaQ8++GDccMMNlU4y/c9TCj/98em1/6xFfNLQ9ZOf/CTuuuuubP0S6lSfPn0qrUePHl3RzFYdr732WpSW/ntISLNmzaJ79+4Z7+3Zs2fst99+FeuNGzfG448/Xq19/vCHP1Ran3HGGdXOCADV1al1s/jmUf0y1opLy+PnI6YnnAgAAAAAAGDb/vDGnJixfGPGWr/OreKbR2f+7ANovPRLVU2vFAAAAAAAAAAAZFeTG4CVk5MTN998c4wZMyZOPPHEKhuWPm3s+lQ6nY5hw4bFmDFj4tprr00qbuKOO+64Suv58+dXu9EqnU7H7bffXunaEUccEc2aNavymUsuuaTS+vbbb4/CwsJt7jNlypR47LHHKtY5OTlx0UUXVSsjANTUJUf2jc6tM/+z7J8fLIypS9cnnAgAAAAAACCzhWs2xz2vzqiyfuuZQ6NZXm6CiYD6QL9U1fRKAQAAAAAAAABAdjW5AVifOuyww+LFF1+MyZMnx89+9rM488wzY+DAgdGpU6fIzc2NNm3aRN++feO4446L2267Ld5///149dVX47DDDst29DrVv3//OPTQQytdu+yyy+Ljjz/e5nPpdDquv/76GDVqVKXrF1544Tafu/TSS6NXr14V6+nTp8cVV1xRZaPd+vXr42tf+1oUFxdXXDv//PNjzz333OY+ALCjWhbkxfePH5Cxlk5H/PTFaQknAgAAAAAAyOymZybHlpKyjLUz9t0tDt+9c8KJgPpEv9TW9EoBAAAAAAAAAEB25WU7QLYNHjw4Bg8eHFdccUW2o1Tbm2++GVu2bNnq+kcffVRpXVhYGK+88krGd+y2225VNkLdfvvtMWzYsIrGqjVr1sTnPve5uO666+LSSy+NXXfdteLe8vLyePvtt+PWW2+Nl156qdJ79tprr/jKV76yzV9LQUFB3H777XH++edXXLvvvvti5cqV8eMf/zgGDPj3wJGRI0fGFVdcUanBrHXr1nHLLbdscw8A2FnnHNQzHnxjTsxeuWmr2qtTl8e7s1fFIf06ZSEZAAAAAADAJ0ZMXhavTFmWsdameV7836l7JJwIqK8aWr+UXim9UgAAAAAAAAAANF6pdFXHx1Fv9enTJ+bNm7dT77jwwgvjj3/8Y5X1O+64I6677roq9+/atWsUFRXF3LlzY926dVvd06VLl3jnnXeiX79+1cpz+eWXx29/+9tK11KpVPTs2TO6dOkS8+bNi5UrV1aq5+TkxGOPPRZf/vKXq7VHXZo0aVIMHTq0Yj1x4sQYMmRIFlI6O8YAAQAASURBVBMBUNtemLAkLvvrBxlr+/VqH09cdlikUqmEUwEAAAAAAERsLi6NE34+Jhat3XpATETELWcMia99rk+yoaAe0M/ROOiV+kR96pWK8PcXAAAAAAAAAEB90pB7OfKyHYD66dprr4327dvHlVdeGZs3b65Umzt3bsydO7fKZw844IB45JFHqt3QFRFx7733RvPmzeMXv/hFxbV0Oh3z58+P+fPnb3V/y5Yt46GHHqo3DV0ANH7Dh+4a+/RsHx8tWLtV7cP5a+OlSUtj+NBuyQcDAAAAAACavF++OqPK4Vd792gXXzmkd8KJABoWvVIAAAAAAAAAAJAdOdkOQP31zW9+MyZPnhxXXXVVdOnSZZv3plKpOPjgg+Ohhx6Kt99+OwYOHFijvXJycuLnP/95jBw5Mo488sgq7ysoKIivfOUrMXHixDj77LNrtAcA7IxUKhXXnzy4yvqdL06L0rLyBBMBAAAAAABETFu6If7w+pyMtVQq4rYzh0ZuTirhVAANj14pAAAAAAAAAABIXiqdTqezHYL6L51Ox4wZM+LDDz+MlStXxrp16yI/Pz/at28fvXr1ioMPPjg6dOhQa/stXLgw3nrrrZg/f34UFhZGmzZtYsCAAXHEEUdE27Zta22f2jJp0qQYOnRoxXrixIkxZMiQLCYCoK58/Y/vxcipyzPWfvSFoU5QBwAAAAAAEpNOp+Oc370TY+euzlj/2ud6xy1nDM1Yg6ZAPwc7Sq/U9vn7CwAAAAAAAACg/mjIvRx52Q5Aw5BKpWLgwIE1Pq1wR/Xo0cOphQDUS9cMHxSjpi2PTCNE735lRnxhv+7RssBvsQAAAAAAgLr3j3ELqxx+1bl1s/ifEwclnAigcdArBQAAAAB8auXGopi4aF1MWLQulq0rjKLS8sjJSUXLgtzYvUvrGNq9XQzu1iaa5eVmOyoAAAA0SE1mOkNubt384UEqlYrS0tI6eTcAUP8M3rVtfHG/HvHPDxZuVVuxoSgefGNOfOfYAVlIBgAAAAAANCVrNhXHT16YWmX9hs/vEe1a5CeYCKhv9EsBAAAAAOyYBas3x8PvzItnP1oci9cVbvf+/NxU7NOjfZx3cK/4/N7dolm+YVgAAABQXU1mAFY6nc52BACgkbjyxIHx7MeLo7i0fKvafa/NjvMP6R0dWxVkIRkAAAAAANBU3PnS1Fi9qThj7fDdO8Xp++yWcCKgvtEvBQAAAABQM+PmrYl7R86M16Yvj/Ia/BFrSVk63p+3Jt6ftyZue25ynHtQr7jsmP7R1mElAAAAsF052Q6QpFQqVeP7M/0AAJq27u1bxEWH9clY21hUGr8aOSPZQAAAAAAAQJMybt7qeHTsgoy1gtycuPWMofobgIjQLwUAAAAAUB2FJWVx678mx1n3vRWjptVs+NVnrdlcEr99bVac+IsxMWrq8toLCQAAAI1UXrYDJOWoo46qcTPW5s2bY8WKFTF37tyI+HdDWM+ePaNfv361HREAaEAuP6Z/PDp2fmwoLN2q9vA78+Lrh/eNnh1bZiEZAAAAAADQmJWWlcf/PTmxyvq3ju4X/bq0TjARUF/plwIAAAAA2L7x89fE9x8bH3NXba7V9y5dXxgX//G9OOuAHnHzGUOiZUGT+TovAAAA1EiT+Tfm0aNH7/Czq1atir/97W9x5513xoIFC2L58uXxgx/8IC699NLaCwgANCjtWxbE5cfsHne8OHWrWklZOn728rS4+9z9spAMAAB2Tjqdjo1FpVFSlo783FS0bpZX4y9KAgAAUHf++NbcmLp0Q8Zar44t4/JhuyecCKiv9EsBAAAAAGzba9OWxzcfHheFJeV1tsffxy2MWSs2xR8vPijatsivs30AAACgoWoyA7B2RqdOneLb3/52XHDBBXH22WfHyy+/HN/61reiqKgovvOd72Q7HgCQJRcf3if+9NbcWLq+cKvaU+MXxzeO7BdDu7fLQjIAAKiZqUvXxzPjF8dHC9fGxEXrY92Wkopauxb5MbR729inR/s4Y9/uMWjXNllMCgAA0LQtWbclfjFiepX1W84YEs3zcxNMBDRW+qUAAAAAgMbu9Rkr4tI/j4visrobfvWpD+avia89ODb++o1DolUzX+sFAACA/5ST7QANSdu2beOJJ56IPfbYI9LpdFxxxRXx/vvvZzsWAJAlzfNz48oTBlZZv+PFqQmmAQCAmhs5dVmcfd/bMfzu1+M3o2fFmzNXVRp+FRGxbktJvDlzVfxm9Kw46e4xcfZ9b8eoqcuzlBgAAKBpu+XZybGpuCxj7dS9usUxg7omnAho7PRLAQAAAACN0YxlG+Kbf0lm+NWnxi9YG99+5IPE9gMAAICGwgCsGmrZsmXceuutERFRXl4eV199dZYTAQDZ9MX9u8eArq0z1l6fsTLemLEy4UQAALB9azYVx/ce/TC+/sf3Y+zc1TV6duzc1XHxH9+L//7bh7FmU3EdJQQAAOCzRk1bHi9MXJqx1qogN274/J4JJwKaCv1SAAAAAEBjUlaejqv+/lFsruLQkbo0etqKeOTd+YnvCwAAAPWZAVg74NRTT40WLVpEOp2OMWPGxLx587IdCQDIkrzcnLh2+OAq63e8ODXKy9MJJgIAgG2bsmR9DP/lmHjmo8U79Z6nxy+O4b8cE1OXrq+lZAAAAFSlsKQsbnx6YpX1K08cFLu2a55gIqCp0S8FAAAAADQWvx8zKz5auC5r+//4+SmxaO2WrO0PAAAA9Y0BWDugWbNm0bdv34r1W2+9lcU0AEC2HbdH1zioT4eMtQmL1sW/JixJOBEAAGQ2Zcn6OPf378Sy9UW18r5l64vinN+9YwgWAABAHbt35MxYsDrzFyH27NY2Lvxc74QTAU2NfikAAAAAoDGYv2pz3P3KjKxm2FhUus2DTwAAAKCpMQBrB7Vq1ari5wsWLMhiEgAg21KpVFx38uAq63e9NC2KS8sTTAQAAFtbs6k4LnpobKzbUlKr7123pSQufHBsrNlUXKvvBQAA4BMzl2+M342ZlbGWSkXc9oWhkZer/QOoe/qlAAAAAICG7s/vzI2ievD9jpFTl8fsFRuzHQMAAADqBR2QO2jx4sUVP0+lUllMAgDUBwf07hgnDdklY23+6s3x6Nj5CScCAIDKfvjMpFi2vqhO3r1sfVHc9OykOnk3AABAU5ZOp+OGpyZGSVk6Y/3cg3rF/r06JJwKaKr0SwEAAAAADVlhSVn8Y9zCbMeIiIh0OuKv7/qeCQAAAEQYgLVDxo8fH4sWLapo5OrcuXOWEwEA9cHVJw2OnCr6vO95dUZsKCxJNhAAAPx/I6cui2c+Wrz9G3fC0+MXx8ipy+p0DwAAgKbm6fGL4+3ZqzLWOrUqiGuHD0o4EdBU6ZcCAAAAABq6f328ONZurj/f6/j7uAWxpbgs2zEAAAAg6wzAqqHCwsL49re/HRGfnLQaEbHffvtlMxIAUE/s3rV1nHNQz4y1VZuK4/7X5yScCAAAPnHf6NnJ7PNaMvsAAAA0Beu2lMRtz02usv6/p+wR7VsWJJgIaKr0SwEAAAAAjcGrU5ZnO0Il67eUxrh5a7IdAwAAALLOAKwaGDFiRBx22GHxzjvvVJxm2KtXr9h3332zGwwAqDe+f/zAaJ6f+bdYD7w+O5ZvKEw4EQAATd3Upetj7NzView1ds7qmLZ0QyJ7AQAANHZ3vTQtVm4szlg7pG/H+OL+3RNOBDRF+qUAAAAAgMZiwqJ12Y6wlQmL1mY7AgAAAGRdXrYDJOXrX//6Dj23ZcuWWLZsWXz88cexZs2aSKfTkUqlKv7zlltuqeWkAEBDtkvb5nHJEX3j16NmbVXbXFwW97w6I247c68sJAMAoKl6ZvziZPf7aFFcvevgRPcEAABobMYvWBsPvzsvYy0vJxW3nTm0YhANQFX0SwEAAAAAfGLNpuJYuGZLtmNspT4O5QIAAICkNZkBWH/84x93qvkznU5HRFR6x6WXXhoXXHDBTmcDABqXbx7dP/767vxYu7lkq9qjYxfE1w/vG/26tM5CMgAAmqKPFq5Ndr8FGnIAAAB2Rll5On7w1IT4/20KW7n0qH4xYJc2yYYCGiT9UgAAAAAAn5i8ZH22I2Q0aXH9zAUAAABJysl2gIbi00audDodLVq0iLvuuit++9vfZjkVAFAftW2eH98ZtnvGWll5On728vSEEwEA0FSl0+mYuCjZBpkJi9ZVfDkSAACAmvvL23Or/He57u1bxPeOHZBwIqCp0i8FAAAAADQWmQ44rw/WbamfuQAAACBJedkOkKSd+eJdly5dYv/9949TTjklvvKVr0THjh1rMRkA0Nhc8Lne8dCbc2PR2i1b1Z6bsCQuXbA29u3ZPvlgAAA0KRuLShNvkFm3pSQ2FZdF62ZN6o8eAQAAasXy9YXbPEjj5tOHRIuC3AQTAQ2dfikAAAAAgIjisvJsR8iouLR+5gIAAIAkNZlvoc2ZM6fGz6RSqWjevHm0bds2mjdvXgepAIDGqlleblx10sC44rGPMtZvf2FKPHrpoRWnJgMAQF0oKdvxLzjujOLS8ohmWdkaAACgQbv1uSmxoag0Y+2EPXeJ4/fcJeFEQEOmXwoAAAAA4BP5ufXzuxv5uTnZjgAAAABZ12QGYPXu3TvbEQCAJuaMfbrH78fMiSlL1m9Ve2f26hg9fUUMG9Q1C8kAAGgqstW0U5CnKQcAAKCmXp+xIp79aHHGWov83Ljp9CEJJwIaOv1SAAAAAACfaNciP9sRMmrbosl8xRcAAACq5JtoAAB1JCcnFdcOH1Rl/Y4XpkZZeTrBRAAANDWtm+Ul3rjTrkV+tCrITXRPAACAhq6wpCxufHpSlfXvHz8gurdvkWAiAAAAAACAxmOPbm2zHSGjPbu1y3YEAAAAyDoDsAAA6tDRA7vEYf07ZaxNXbohnvpwUcKJAABoSlKpVAztnmzjzl7d20UqlUp0TwAAgIbuvtdmxZyVmzLWBu3SJr5+RN+EEwEAAAAAADQenVs3i27tmmc7xlb26m4AFgAAABiABQBQh1KpVFw7fHCV9Z+PmB6FJWUJJgIAoKnZp0f7ZPfrqSEHAACgJuau3BS/GT2ryvptXxga+bnaOwAAAAAAAHbG3j3qX2/bXgkfcAkAAAD1kQ5JAIA6tk/P9nHq3t0y1hat3RIPvzMv4UQAADQlrZvlJbrf6ft0T3Q/AACAhiydTscNT0+M4tLyjPWzDugRB/XpmHAqAAAAAACAxufogV2yHaGS1s3y4kCfAwEAAIABWAAASbj6xEGRl5PKWLt31MxYt6Uk4UQAADR2m4tL4+q/fxR3vjQtsT0P7tsxBu3aJrH9AAAAGrrnJiyJ12eszFhr3zI/rj9lj4QTAQAAAAAANE5n7Ns92iR8oOS2nLlf92hVj/IAAABAtjTZfzueMGFCvPDCC/HBBx/EggULYt26dbFly5ZIp9M1ek8qlYpZs2bVUUoAoLHo07lVnH9Ir/jz2/O2qq3dXBL3vTYrrh0+OAvJAABojKYt3RDffuSDmLl8Y6L7XnZ0/0T3AwAAaMg2FJbELc9OrrJ+/cmDo2OrggQTAY2dfikAAAAAoClr1SwvvrB/94zf68iGCw7tne0IAAAAUC80uQFY48aNi+985zsxduzYStdr2sj1qVQqVRuxAIAm4LvHDoh/jlsYm4rLtqo9+MacuPBzfWLXds2zkAwAgMYinU7H395bEDc9MymKSssT3fuMfXeLYYO7JronAABAQ/bzEdNj+YaijLUDeneIsw7omXAioLHSLwUAAAAA8IkLD+sTj7w7P0rLd+zPR2vLEbt3jkG7tslqBgAAAKgvcrIdIEl/+tOf4nOf+1yMHTs20ul0pSauVCpV4x8AADXRpU2zuPSofhlrRaXlcfcr0xNOBABAY7KhsCS+97fxcf0TExIffpWbSsWVxw9MdE8AAICGbOKidfGnt+ZmrOXmpOK2M4dGTo6+BGDn6ZcCAAAAAPi3/l1ax2XH9M9qhub5OXHrmUOzmgEAAADqk7xsB0jKm2++Gd/4xjeirKysoiHr06auvLy8aN++fbRq1SrbMQGARu4bR/aLh9+ZFys3Fm9Ve/z9BXHJEX1jwC5O8QAAoGYmLFwX33n0g5i3avM278tJRRTk5URhSe0OyCpLp+OHz06KP1x4UOT6gjYAAMA2lZWn4/+emhhVHSz+9cP7xB7d2iYbCmiU9EsBAAAAAGztu8cOiBGTl8XUpRuysv81Jw2Ovp392SwAAAB8qskMwLrqqqsqmrnS6XS0bNkyvvvd78Y555wTQ4cOjby8JvNfBQCQRa2b5cX3jhsQNz49aataeTrizpemxf1fOzALyQAAaIjS6XQ89Obc+MkLU6KkrIpvTv9/3du3iHvO2y9aNcuNCx8cG8vWF9VqltHTVsQvRkyPq04aVKvvBQAAaGweHTs/PlqwNmOtW7vm8f3jByYbCGi09EsBAAAAAGytIC8n7jprn/jSb9+KotLaPUxyew7p2zEuOqxPonsCAABAfdckupjmzZsX7777bkUzV/fu3WPkyJExYMCAbEcDAJqgcw/qFX94Y07MW7V5q9qIycvi/bmr48A+HbOQDACAhmTt5uK46u8fxytTlm333hP33CV++uV9ol3L/IiIePG/j4qbnp0UT49fXKuZ7h01M/bq0S5OGrJrrb4XAACgsVixoSjufHFqlfUfnrZntGrWJFo5gDqmXwoAAAAAoGpDu7eLX523X1z21w+irHzbh0/WlsG7tonff+3AyMlJJbIfAAAANBQ52Q6QhLfeeisiItLpdKRSqfj1r3+tmQsAyJqCvJy4+qRBVdZ/8sLUSKeT+QAFAICG6f25q+OUX76+3eFXBbk5cdNpe8bvLjigYvhVRESHVgXxy3P3iwcvOjAO7luz4asH9u4Q3do1r7L+P49/FDOXb6jROwEAAJqKnzw/JdYXlmasDRvUxUBhoNbolwIAAAAA2LYTh+wavzpvvyjIrfuv2e7ZrW08/I1Dol2L/O3fDAAAAE1Mkzg2dOnSpRU/b9++fZx22mlZTAMAEHHK0G6xd4/Z8fHCdVvVxs1bEyMmL4sTfckFAIDPKC9Px29fmxU/HzF9u6fO9enUMu49f/8Y2r1dlfccO3iXOHbwLjFt6YZ45qNF8dGCdTFh0bpYt6Wk4p52LfJjr+7tYp+e7eL0fbrHoF3bxOwVG+OMe9+MDUVbf2l7Y1Fp/NdfxsXT3z482jTXrAMAAPCpt2etiic+XJSx1iwvJ245Y2ikUk78BmqHfikAAPh/7N13eFR12sbx+0x6IQkQeodAIIQOohQRVASUJhZQsCsWytp711VEXUUU0bWLYAcREAFFKdJrIKGF0CG0hJCQOuf9w9eskTOTAMmZSeb7uS6vN5P7NzN39lU3zD7nOQAAAEDx+rWqpajQAN335XodPJFdJu9xWcsaGn9VG0Ww/AoAAAAAAEs+sQArJydHkmQYhho3bszAKAAA8DiHw9AjfZrruv8ut8xfmbtFvZpXl78NdxIBAABA+XA4I0f3fbVOi7YdKfbswLa19eLgVgoPKtnHf7E1K+nBms0lSaZpKjO3QLn5TgX6OxQW6Hfa52mNq4XrP9e21W2frrJ8veTDmbrvq/WaPLyDHA4+iwMAAACA3Hynnpi+0WU+5uKmqlcl1MZGACo65qUAAAAAAAAAoGS6NInWz/deqOd/3KyvV+8ttdetHBqgZwe01IC2dUrtNQEAAAAAqIh8YqNC9erVC7/Oz8/3YBMAAID/6RITrR7Nqllm21NP6ts1pfc/nAAAAKB8W7L9iPpNWFTs8qvgAIdeGdJab1zbtsTLr/7JMAyFB/mrSligwoP8XV4ceUlcDY29uKnL15m3+ZDe/nX7WXUAAAAAgIrm/UXJ2nE40zJrUi1Mt3dvbHMjABUd81IAAAAAAAAAUHIRIQEaf3UbfXJzJ3VsUPmcXis00E/Xd66vn+/twfIrAAAAAABK4OyugitnOnbsKEkyTVN79uzxcBsAAID/ebhPc/2+7bBM8/Ts9XlbNaBNHYUE+tlfDAAAAF4hv8CpCQu26a1ft1v+zvh3TauH6+3r26tZjUr2lJM09uKmStiXrgVJqZb56/O3Kr5OpHo2r26ZAwAAAIAv2HMsSxMWbHOZPz8oXoH+PnH/MgA2Yl4KAAAAAAAAAM5cj9jq6hFbXYkHTujzZbs0c/1+ncgu2U0GmtUI13WdG2hI+zqqFBxQxk0BAAAAAKg4fGIBVuvWrRUbG6stW7bo+PHjWrlypTp16uTpWgAAAIqrHaFBbevo+7X7TssOncjRR0t36u6LYjzQDAAAAJ52IP2Uxk5dpxUpx4o9O7RTPT3dv6Xty1MdDkOvX9tWg95eop1HMk/LTVMaM22tZo7qpobRYbZ2AwAAAABvYJqmnv5hk3LynZb54HZ11KVJtM2tAPgC5qUAAAAAAAAA4Oy1qBWhFwe30ouDWyn58Ekl7EvXxn0ndOhEtnLynXIYUmign2Kqhyu+TqRa1YlUVGigp2sDAAAAAFAu+cwtRJ966qnCr5999lkPNgEAACjqvkubKdDP+teySQt36Hhmrs2NAAAA4Gm/JB1SvzcXFbv8KizQT28ObauXh7S2ffnVXyJDAjR5RAeFunj/jOx83fHZKmXmlOwueAAAAABQkczddEi/JKVaZhHB/nqsXwubGwHwJcxLAQAAAAAAAMC5a1wtXAPa1tHjl7fQhGHtNHlEB00a3kGvXdNWd10Uo+5Nq7H8CgAAAACAc+AzC7CGDRum6667TqZpas6cOQx1AQAAr1GvSqhGXNDAMsvIztfbv263uREAAAA8JTffqRdnbdYtH6/S8aw8t2db1o7Qj2O6a2DbOja1c61ZjUp69eo2LvOth07qoW83yDRNG1sBAAAAgGdl5uTr2ZmbXOYP9WmuapWCbGwEwNcwLwUAAAAAAAAAAAAAAADA2/nMAixJ+uijjzR06FCZpqnnnntOQ4YMUVJSkqdrAQAA6J6eMaoU5G+ZffrHLu09nmVzIwAAANhtz7EsXT35D72/aGexZ2/q0lDf3d1FjaLDbGhWMv1a1dJdFzVxmc/acEDv/Z5sYyMAAAAA8Kw3F2zTgfRsy6xNvShdd159mxsB8EXMSwEAAAAAAAAAAAAAAADwZtZbFiqg5557TpLUvHlzNW7cWMnJyZo+fbqmT5+uVq1aqWPHjqpevbqCg4PP+LWfeuqp0q4LAAB8TJWwQN15URONn7vltCy3wKnX523V69e0tb8YAAAAbDF74wE9/O0GZWTnuz0XEeyv8Ve30WUta9rU7Mw80DtWCfvStWjbEct83E9Jiqsdoe5Nq9ncDAAAAADslXTwhD5YbL3g2GFILw6Kl8Nh2NwKgK9hXgoAAAAAAAAAAAAAAACAtzNM0zQ9XcIODodDhlF0ePTvP/o/szNRUFBw1s9FxbBp0ybFx8cXPk5ISFDLli092AgAUB6dyi1Qj/G/KjUj57TMMKTZY7qrRa0IDzQDAABAWcnOK9ALszbr82W7iz3bvn6UJgxrp7qVQ21odvbSsnLVf+Ji7Tl2yjKPCg3QzFHdVK+Kd/8cAAAAAHC2nE5TV0/+Q6t3HbfMb+rSUM8M4H9PBuzg6/MczEuhLPn6P18AAAAAAAAAAAAAAADepDzPcjg8XcCTDMMo/Ots+MjuMAAAYJOQQD/de2kzy8w0pXE/JdncCAAAAGVpx+GTGvT2khItv7rroib6cuQFXr/8SpKiQgM1eXhHBQdYf/SYlpWnkZ+t1qlcLpIEAAAAUDF9vXqPy+VX1SsF6f7e1v9bAADYgXkpAAAAAAAAAAAAAAAAAN7EpxZgmaZZqn8BAACUtqs71FWTamGW2cIth7V0xxGbGwEAAKAsfLdmr/q/tVhJBzPcnqsaFqiPb+6kh/s0V4Bf+fkoL652hMYNae0y33zghB77fiOfsQEAAACocI5l5uqlOa5vaPHkFXGqFBxgYyMAvo55KQAAAAAAAAAAAAAAAADezN/TBezy66+/eroCAABAsfz9HHqoT3ON/Gy1ZT5uTpKm39P1rO/IDAAAAM/KzMnXUzM26ds1e4s9e0HjqnpjaFvViAi2oVnpG9i2jjbsTdcHi3da5t+v3afWdSN1c9dGNjcDAAAAgLLz8pxEpWXlWWbdm0brita1bG4EwJcxLwUAAAAAAAAAAAAAAADA2/nMAqwePXp4ugIAAECJ9I6rofb1o7Rmd9pp2fq96Zq98aAu5wIZAACAcifxwAmN+mKNdhzOdHvOYUhjL26mUb1i5Oco34tPH+3bXJv2p2tZ8jHL/IVZiWpRK0LnN65qczMAAAAAKH2rUo7pq1XWC48D/R16bmA8N7gAYCvmpQAAAAAAAAAAAAAAAAB4O4enCwAAAKAowzD0SN8WLvPxc5OUV+C0sREAAADOhWmamrJ8lwa+vaTY5Vc1IoL0xe3na+wlTcv98itJ8vdzaOJ17VUrMtgyL3CaGvXFGh1IP2VzMwAAAAAoXXkFTj3+fYLL/O6LmqhRdJiNjQAAAAAAAAAAAAAAAAAAALwfC7AAAAC80HmNquiSFtUts5SjWZq2co/NjQAAAHA2TmTnadTUtXr8+wTl5rtfYnpRbDXNHtNd5zeualM7e0SHB+nd4R0U6G/9UeSRk7m68/M1ys4rsLkZAAAAAJSeDxfv1JZDGZZZw6qhurNHE5sbAQAAAAAAAAAAAAAAAAAAeD8WYAEAAHiph/o0l8Owzt6cv02ZOfn2FgIAAMAZWb8nTVdMWKxZGw64PefvMPRYv+b68MZOqhoeZFM7e7WpF6UXBsW7zNfvSdPTMzbJNE0bWwEAAABA6diXdkpvzN/mMn9+ULyCA/xsbAQAAAAAAAAAAAAAAAAAAFA+sAALAADASzWrUUlXdahrmR05maP/LtppcyMAAACUhGma+u+iZF317lLtPpbl9mydqBB9fecFuuPCJnK42n5aQVzTsZ5GnN/AZf7lqj36YsVuGxsBAAAAQOl49odNOpVXYJld0bqWujetZnMjAAAAAAAAAAAAAAAAAACA8sHf0wU8yTRNrVq1SosWLVJiYqKOHTum9PR0OZ1Ovfbaa2rXrp2nKwIAAB9376XNNGPdfuXkO0/L3vt9h64/v76iw4M80AwAAABWjmfm6oGv12tBUmqxZ/u0rKlxQ1orMjTAhmbe4ckr4pR44IRW7TpumT/zwyY1rxmhDg0q29wMAAAAAM7OgsRD+nnzIcssPMhfT14RZ3MjAHCPeSkAAAAAAAAAAAAAAAAA3sQnF2Dl5eXpnXfe0Ztvvqldu3YVyUzTlGEYOn7c+iK8kSNHat68eZKkBg0a6Ndffy3zvgAAwHfVigzRzV0b6d3fdpyWZeYWaOIv2/XMgJYeaAYAAIB/WplyTGOmrtWB9Gy35wL9HHryihYafn4DGYZhUzvvEOjv0DvXt9cVby1WakbOaXlegam7Pl+tH0d3U/WIYA80BAAAAICSO5VboKd/2OQyf6B3M9XgzzYAvATzUgAAAAAAAAAAAAAAAAC8kcPTBey2fft2nX/++brvvvuUkpIi0zQLs79/7cq1116rlJQUpaSk6Pfff9fy5cvLsi4AAIDu6tFEkSEBltmU5bu062imzY0AAADwdwVOUxN/2aah7y0rdvlV4+gwfX9PF424oKHPLb/6S/WIYE0a3l4BftY/f2pGju6eska5+U6bmwEAAADAmXnrl23ae/yUZRZfJ0IjLmhobyEAcIF5KQAAAAAAAAAAAAAAAADeyqcWYCUnJ6tbt25at25d4Z0LpT8Huf7+2J1evXopNja28PGXX35ZZn0BAAAkKTI0QPf0bGKZ5RWYevXnrTY3AgAAwF9SM7J144cr9OrPW1XgdH+x4KC2tfXD6G5qWTvSpnbeq0ODKnq6f0uX+apdx/X8j5ttbAQAAAAAZ2bboQy9vyjZMjMM6cVBreTn8M3FxwC8C/NSAAAAAAAAAAAAAAAAALyZzyzAys3NVb9+/ZSamlr4vQYNGujNN99UYmKiTp48WeKhriFDhhR+PXfu3DLpCwAA8Hc3XNBQtSODLbOZ6/dr4950mxsBAABg8bYj6vfmYi3efsTtuZAAP71yVWv959q2Cg/yt6md97u+c31d07Guy/yzZbv09ao9NjYCAAAAgJIxTVNPTE9QXoH1IuTrO9dXm3pR9pYCAAvMSwEAAAAAAAAAAAAAAADwdj6zAOudd97R1q1bCwe2Bg8erE2bNmn06NGKjY1VaGhoiV+rb9++kv4cak1KStLRo0fLpDMAAMBfggP8dF/vWJf5yz8lyjStL7QBAABA6covcOrVuVs04sPlOnIyx+3Z2BqV9MOorrqmY70SXUjoSwzD0HMD49WmbqTLM49PT9CGvWn2lQIAAACAEvhuzT4t33nMMosOD9SDlzW3uREAWGNeCgAAAAAAAAAAAAAAAIC385kFWG+88UbhMFf79u01bdo0hYSEnNVrtW3btsgFi5s3by6VjgAAAO4MbldHsTUqWWZLth/Vom1HbG4EAADge/anndKw95dp4q/bVdz+0WHn1deMUV3V1MXvcPhz0euk4R1UNSzQMs/Nd+rOz1YXu2gMAAAAAOySlpWrf89OdJk/fnkLRYYE2NgIAFxjXgoAAAAAAAAAAAAAAACAt/OJBViJiYnavXu3zP+/KvHFF19UQMDZD5yGhYWpTp06hY937Nhxzh0BAACK4+cw9HDfWJf5y3OS5HQWs4UBAAAAZ23+5kPqN2GRVqYcd3suPMhfbw1rp5eubKXgAD+b2pVftaNC9Pb17eXnMCzz/enZGvXFGuUXOG1uBgAAAACne2XuFh3NzLXMLmhcVYPa1rHMAMBuzEsBAAAAAAAAAAAAAAAAKA98YgHW2rVrC78ODw/XJZdccs6vWbly5cKv09LSzvn1AAAASqJnbHV1blTFMtt84IRmbthvcyMAAICKLzffqed/3KzbPl2ltKw8t2db1YnUj6O7qX+b2ja1qxjOb1xVj/dr4TJflnxML89JsrERAAAAAJxu7e7jmrpit2UW4Gfo+UHxMgzr5b4AYDfmpQAAAAAAAAAAAAAAAACUBz6xAOvw4cOSJMMw1KhRIzkc5/5jh4aGFn6dlZV1zq8HAABQEoZh6JG+zV3m4+duUU5+gY2NAAAAKrZdRzN11btL9cHincWevaVrI31z1wVqGB1mQ7OK5+auDTWorevFYf9dvFMz1u2zsREAAAAA/E9+gVOPf58g07TOR17YRDHVw+0tBQBuMC8FAAAAAAAAAAAAAAAAoDzwiQVY2dnZhV8HBQWVymump6cXfh0REVEqrwkAAFAS7epXVt/4mpbZ3uOnNGWZ9d3nAQAAcGZ+3LBfV0xYrA17092eiwwJ0Ps3dNRT/eMU5O9nU7uKxzAMvXRla8XVcv1Z28PfbtDm/SdsbAUAAAAAf/rkj13afMD6zyP1qoRoVK8YmxsBgHvMSwEAAAAAAAAAAAAAAAAoD3xiAVa1atUKvz5y5Mg5v15BQYH27NlT+Dg6OvqcXxMAAOBMPHhZrPwchmX21i/bdCI7z+ZGAAAAFUd2XoEe+36jRn2xVhk5+W7PdmhQWbPHdtelcTVsalexhQT6afKIDooKDbDMs/OcGvn5KqVl5drcDAAAAIAvO5ierdd/3uIyf25AvIIDWIgMwLswLwUAAAAAAAAAAAAAAACgPPCJBVi1atWSJJmmqV27dhW5G+HZWLVqlTIzMwsfN2vW7JxeDwAA4Ew1rhauoZ3qWWbHs/L03m/JNjcCAACoGLanntSgt5foi+W73Z4zDOnui5po2h3nq05UiE3tfEO9KqF6a1g7udj3qj3HTmn01LUqcJr2FgMAAADgs57/cbMycwsssz4ta6pn8+o2NwKA4jEvBQAAAAAAAAAAAAAAAKA88IkFWF26dJG/v78Mw5Bpmvrmm2/O6fUmT55c+HVUVJTat29/rhUBAADO2NiLmyrExR3l/7s4Waknsm1uBAAAUL59s3qv+r+1WEkHM9yeiw4P1Cc3n6eH+jRXgJ9PfLxmu+5Nq+mhPs1d5ou2HdFrP2+xsREAAAAAX/Xb1sOatfGAZRYa6Ken+sfZ3AgASoZ5KQAAAAAAAAAAAAAAAADlgU9coRcZGakuXbrINE2ZpqmXXnpJWVlZZ/Vay5Yt0+effy7DMGQYhvr27VvKbQEAAEqmekSwbuveyDLLznPqjQXbbG4EAABQPmXm5Ou+L9fpga/X61RegduzXWOqavbY7rqwWTWb2vmukRc21uWtarnM31m4Q3NcXIQOAAAAAKUhO69AT81IcJnfd2kz1Y4KsbERAJQc81IAAAAAAAAAAAAAAAAAygOfWIAlSffff78kyTAM7dy5U9dff73y8vLO6DXWrVunIUOGqKCgQKZpyjAMPfLII2VRFwAAoETuuLCxqoQFWmZfrtyjHYdP2twIAACgfNm8/4T6v7VY363d5/acw5Ae6N1Mn97SWdUrBdvUzrcZhqFXrmqtZjXCXZ554Ov12nYow8ZWAAAAAHzJOwt3aNdR62UxzWtW0k1dGtpbCADOEPNSAAAAAAAAAAAAAAAAALydzyzA6t+/v3r06CHTNCVJP/zwgzp37qwFCxYU+9x9+/bp0UcfVbdu3XTgwIHCYa7rr79e8fHxZV0dAADApUrBARrdK8YyK3CaGv/TFpsbAQAAlA+maeqzZbs06J0lSj6S6fZszYhgTb39fI3q1VR+DsOmhpCksCB/vTeioyoF+1vmmbkFuuOz1TqRfWYXbgIAAABAcZIPn9S7C3e4zF8cHC9/P58ZuQBQTjEvBQAAAAAAAAAAAAAAAMDb+dQ05ldffaWGDRsWPl63bp169+6tOnXqqH///pJUOPD173//W1dccYWaN2+u+vXr65VXXlFWVpYM48+LHFu1aqV3333X9p8BAADgn67rXF/1qoRYZj9tOqg1u4/b3AgAAMC7pZ/K091T1ujJ6QnKzXe6PdureXXNHttdnRtXtakd/qlhdJjeHNpWhovdYzuPZOreaevkdJr2FgMAAABQYZmmqSdnJCi3wPrPjEM71VOHBlVsbgUAZ4d5KQAAAAAAAAAAAAAAAADezKcWYFWrVk1z585VbGxs4V0JTdPUgQMHNHv27MJzpmnq119/1Zw5c7R161aZplnkfLt27TRr1iyFhFgvmgAAALBTkL+fHugd6zJ/eXZS4dA6AACAr1u3J02XT1ikOQkH3Z7zdxh64vIW+uDGjqoSFmhTO7jSq3kN3XtJM5f5gqRUTfhlm42NAAAAAFRkP6zfryXbj1pmVcIC9XCf5jY3AoCzx7wUAAAAAAAAAAAAAAAAAG/mUwuwJKlp06ZavXq1Ro4cKT8/P0kqvEuhYRiFf/3l74/9/Pw0cuRILVmyRHXq1LG/PAAAgAv9W9dWy9oRltmKlGP6JSnV5kYAAADexek09f7vybpq0lLtPX7K7dl6VUL0zV1ddFv3xkU+J4JnjeoZo0ta1HCZvzF/mxYkHrKxEQAAAICK6ER2nl6Ylegyf6Rvc1VmUTKAcoZ5KQAAAAAAAAAAAAAAAADeyucWYElSSEiIJk2apOTkZD300EOKj4+XpMI7F/7zryZNmmjUqFHasmWLJk2apODgYA//BAAAAEU5HIYe6ev6jvPjfkpSgdO0sREAAID3OJaZq9s+XaUXZycqv5jfifq1qqkfR3dX23pR9pRDiTkchl6/to0aR4e5PPOvaeuUfPikja0AAAAAVDSvzd2iwxk5llmnhpV1Vfu6NjcCgNLBvBQAAAAAAAAAAAAAAAAAb+Tv6QKeVLduXb388st6+eWXlZaWpi1btujo0aNKS0tTaGiooqOj1ahRI+5eCAAAyoXuTaupW0y0Fm8/clq29dBJfbdmr67uWM8DzQAAADxnefJRjZ22TgdPZLs9F+jv0FNXxOn6zvVlGIZN7XCmIoID9N4NHTRw4hJl5haclmfk5GvkZ6v1/T1dFR7k0x99AgAAADgLG/em67Nluywzf4ehFwa1ksPBnxkBlG/MSwEAAAAAAAAAAAAAAADwJlwF9v+ioqLUuXNnT9cAAAA4J4/0ba4r3lpsmb0+b6v6t6mt4AA/m1sBAADYr8Bp6p1ft+s/87fKabo/27hamCYOa6+42hH2lMM5ialeSa9d01Z3fr7aMt+WelIPfr1e71zfnmVmAAAAAEqswGnq8ekbXf4Z8tbujRRbs5K9pQCgjDEvBQAAAAAAAAAAAAAAAMDTHJ4uAAAAgNITXydSA9rUtswOpGfrk6Up9hYCAADwgNQT2RrxwXK9Nq/45VdXtq+jmaO6sfyqnOkTX1Ojesa4zOckHNSk33bY2AgAAABAeTdl+S5t2JtumdWJCtHYi5va3AgAAAAAAAAAAAAAAAAAAKDi85kFWPn5+Z6uAAAAYIsHescqwM+wzN7+dbvSs/JsbgQAAGCf37ceVr8Ji7R0x1G350IC/PTq1W30+jVtFRbkb1M7lKZ7L22mHs2quczHz92i37YetrERAAAAgPIqNSNb43/a4jJ/un+cQgP5syOA8od5KQAAAAAAAAAAAAAAAADezmcWYNWqVUtjxozRqlWrPF0FAACgTNWvGqrrOzewzE5k5+ud37bb3AgAAKDs5RU4Ne6nJN3w4QodOZnr9mzzmpU0c3Q3XdWhrk3tUBb8HIYmDG2n+lVCLXPTlMZMXavdR7NsbgYAAACgvHlxVqIycqyXxFzSorp6t6xpcyMAKB3MSwEAAAAAAAAAAAAAAADwdj6zAOvo0aN6++231blzZ7Vs2VLjx4/X/v37PV0LAACgTIzuFaPwIOu70X+0JEX7007Z3AgAAKDs7Es7paHvLdOkhTuKPXt95/qafk9XxVQPt6EZylpkaIAmj+igkAA/yzz9VJ5Gfr5ap3ILbG4GAAAAoLxYsv2IZqyznh0IDnDo6f4tbW4EAKWHeSkAAAAAAAAAAAAAAAAA3s5nFmD9xTRNJSYm6pFHHlGDBg3Up08fTZs2TdnZ2Z6uBgAAUGqqhgfpjgsbW2a5+U79Z95WmxsBAACUjXmbD6nfm4u0etdxt+cqBfnr7eva68XBrRTsYlkSyqcWtSI07qrWLvPEAyf0yHcbZJqmja0AAAAAlAc5+QV6cnqCy3zsxc1Ur0qojY0AoGwwLwUAAAAAAAAAAAAAAADAW/nMAqywsLDCi9wMw5BpmiooKNC8efN0/fXXq2bNmrrjjju0ePFiDzcFAAAoHbd1b6To8CDL7Ns1e7XlYIbNjQAAAEpPTn6Bnp25Sbd/ukrpp/Lcnm1dN1KzxnTX5a1r2dQOdhvQprZu797IZT5j3X59sHinjY0AAAAAlAfv/Zas5COZllnT6uG6tZvrP2cAQHnAvBQAAAAAAAAAAAAAAAAAb+czC7AOHTqkjz/+WL169ZJhGJJU+H9N09SJEyf0wQcfqEePHoqJidHzzz+vlJQUDzYGAAA4N6GB/vrXJU0tM6cpvfJTks2NAAAASkfKkUwNmbRUHy1JKfbsbd0a6Zs7u6h+1dCyLwaPerhPc3VpUtVl/tKcJC3dccTGRgAAAAC82a6jmZr463aX+QuD4hXo7zMjFQAqKOalAAAAAAAAAAAAAAAAAHg7n5nWDA0N1Q033KD58+crJSVFL7zwgpo1a1bkLofSn8NdycnJeuaZZxQTE6OLLrpIH3/8sU6ePOnJ+gAAAGfl2k711Cg6zDJbkJSq5clHbW4EAABwbn5Yv19XvLVYCftOuD0XFRqgD27sqCeuiOOCZR/h7+fQxOvaq05UiGVe4DQ16ou12pd2yuZmAAAAALyNaZp6asYm5eQ7LfMh7euqc2PXC3YBoLxgXgoAAAAAAAAAAAAAAACAt/PJq//q1q2rxx57TImJiVq2bJnuuusuVa5c+bThLqfTqUWLFunWW29VzZo1CwfCAAAAyosAP4cevCzWZf7yT0mFvwMBAAB4s1O5BXr0uw0aM3WtTubkuz3bqWFlzR7TXRe3qGFTO3iLKmGBend4B5dLz45l5uquz1crO6/A5mYAAAAAvMmchIP6bethyywyJECP9WtucyMAKHvMSwEAAAAAAAAAAAAAAADwRj65AOvvzjvvPL399ts6cOCAvv32Ww0YMED+/v4yTbPIXQ6zsrI0ZcoUXXbZZapfv74ef/xxbdmyxcPtAQAAitc3vqba1IuyzNbuTtPcTYfsLQQAAHCGth3K0MC3F2vqij1uzxmGNLpXjKbefr5qR4XY1A7eplXdSL00uJXLfMPedD0xPYFFsAAAAICPOpmTr+dmbnaZP9ynuaqGB9nYCADsx7wUAAAAAAAAAAAAAAAAAG/h8wuw/hIQEKDBgwdr+vTp2r9/v9544w21b9/+tLscmqapvXv36uWXX1ZcXJzOP/98T9YGAAAolmEYerSv67vVvzI3SfkFThsbAQAAlIxpmvpq5R71n7hYWw+ddHs2OjxIn93SWff3jpW/Hx95+bohHerqxgsauMy/Wb1Xny/bZWMjAAAAAN7iP/O26uCJbMusXf0oDe1Uz+ZGAOA5zEsBAAAAAAAAAAAAAAAA8DSuBrRQtWpVjRkzRitXrlRCQoIefPBB1apVq3C4S/pzsMs0Ta1cudKDTQEAAErm/MZV1TO2mmWWfDhTX63aa3MjAAAA907m5OveL9fpoW83KDvP/bLObjHRmjO2u7o1jbapHcqDJ66I03kNq7jMn525WatSjtnYCAAAAICnbd5/Qh8vTbHM/ByGXhzUSg6HYW8pAPASzEsBAAAAAAAAAAAAAAAA8AQWYBUjLi5O48aN0549ezR37lxdd911CgoKKrzDIQAAQHnxcN/mcvUrzBvztyorN9/eQgAAAC5s2p+u/m8t1vR1+92e83MYevCyWH16y3mqVinIpnYoLwL8HJp4fTvViLD+eyPfaequKWt06ES2zc0AAAAAeILTaerx6RtV4DQt85u6NFRc7QibWwGAd2JeCgAAAAAAAAAAAAAAAIBdWIBVQhkZGdq1a5d27dqlnJwcT9cBAAA4Y81rRujKdnUts9SMHH24eKfNjQAAAIoyTVOf/pGiwW8v1c4jmW7P1ooM1rQ7ztc9PWPkcHDhHaxVrxSsScM7KMDP+u+Rwxk5uuvz1crNd9rcDAAAAIDdpq3co7W70yyzmhHBuvfSZvYWAoBygHkpAAAAAAAAAAAAAAAAAGWNBVhuOJ1OzZkzR8OGDVOtWrU0cuRILV26lLsZAgCAcuu+3s0U6G/9K+C7vyXrWGauzY0AAAD+lJ6Vpzs/X62nZmxSboH7ZUSXtKiu2WO6q1PDKja1Q3nWvn5lPTcw3mW+Zneanp25ycZGAAAAAOx25GSOxv2U5DJ/qn+cwoP8bWwEAN6LeSkAAAAAAAAAAAAAAAAAdmKC08KGDRv06aef6osvvtChQ4ckSaZpSpIMwyj8Ojg4WAMHDvRYTwAAgDNVJypEN17QQO8v2nladjInXxN/2a6n+sd5oBkAAPBla3Yf1+gv1mpf2im35wL8DD3St4Vu6dqQC+5wRoadV18b9qZp6oo9lvmU5bvVum6kru1U3+ZmAAAAAOzw0uwkpZ/Ks8x6NKumvvE1bW4EAN6HeSkAAAAAAAAAAAAAAAAAnsACrP+XmpqqKVOm6NNPP9WGDRskFR3i+muQyzRNdenSRTfeeKOuueYaRUZGerI2AADAGbunZ4ymrdyjjOz807LPlqXo5q4NVa9KqAeaAQAAX+N0mnp/UbLGz92ifKfp9mz9KqGaeF07ta4bZU85VDjPDGipxAMZWrcnzTJ/cvomxdaMUNt6Ubb2AgAAAFC2licf1bdr9lpmQf4OPTewJUuWAfgs5qUAAAAAAAAAAAAAAAAAeJpPL8DKzc3V9OnT9cknn2jevHkqKChwOcTVoEEDjRgxQjfccINiYmI83BwAAODsRYUG6u6LYjTup6TTsrwCU6/9vEVvDG3ngWYAAMCXHD2Zo/u/Xq+FWw4Xe/by1rX00pWtFBEcYEMzVFRB/n56d3gHXfHWYh05mXNanlvg1J2frdbM0d1UrVKQBxoCAAAAKG25+U49MT3BZX5Pzxg1qBpmYyMA8DzmpQAAAAAAAAAAAAAAAAB4E59cgLVkyRJ98skn+uabb5Seni6p6N0L/xriCgsL05AhQ3TjjTeqZ8+enqwMAABQqm7u2lCfLE3RwRPZp2XT1+3Xbd0bK74Od24GAABlY1nyUY2dtlaHTpy+hOjvgvwderp/Sw07r54Mw7CpHSqympHBeuf69rru/WXKd5qn5QdPZOueL9Zoym2dFeDn8EBDAAAAAKXpg8U7tS31pGXWODpMI3s0trkRAHgO81IAAAAAAAAAAAAAAAAAvJHPLMDauXOnPv30U33++edKTk6WJMu7F0pSz549deONN2rIkCEKC+NurwAAoOIJDvDTfZc200PfbrDMX5m7RZ/ecp7NrQAAQEVX4DT11i/bNGHBNlnsHiqiSbUwvX19ezWvGWFPOfiM8xpV0ZNXxOnpHzZZ5it2HtO/Zyfq6f4tbW4GAAAAoDTtOZalNxdsdZm/MCheQf5+NjYCAPsxLwUAAAAAAAAAAAAAAADA2/nMAqwmTZoUGdr6+xCXaZpq2rSpbrjhBo0YMUL169f3cFsAAICyd2X7Onp/UbK2pZ48Lft962Et2X5EXWOiPdAMAABURIdOZOtf09bpj+SjxZ69qkNdPTewpUIDfeajK9jshgsaaP3eNH23Zp9l/tGSFLWuG6nB7era3AwAAABAaXl25iZl5zkts4Fta6sLn38D8AHMSwEAAAAAAAAAAAAAAADwdj53FeHfh7giIyN1zTXX6MYbb1SXLl08XQ0AAMBW/n4OPdSnuW7/dJVl/vKcJM24p6scDsPmZgAAoKJZuCVV93+1Xkczc92eCw300wuD4nVle5YOoWwZhqF/D26lrYcylLDvhOWZR77dqKbVKym+TqTN7QAAAACcq583HdT8xFTLrFKwvx6/vIXNjQDAs5iXAgAAAAAAAAAAAAAAAOCtfGoBlmma8vPz06WXXqobb7xRgwYNUlBQkKdrAQAAeMwlLaqrU8PKWply/LRs4750zdp4QP3b1PZAMwAAUBHkFTj12s9b9e5vO4o926JWhCZe105NqoXb0AyQggP89O7wDur/1mIdz8o7Lc/Jd2rkZ6s1c3Q3VQkL9EBDAAAAAGcjKzdfz87c7DJ/8LJYVa8UbGMjAPAs5qUAAAAAAAAAAAAAAAAAeDOHpwvYpWXLlnrllVe0Z88ezZ49W9deey3DXAAAwOcZhqFH+jZ3mY+fu0W5+U4bGwEAgIpi7/EsXTv5jxItvxpxfgN9f3cXll/BdnUrh+rt69rLYVjn+9JOaczUtcov4HdiAAAAoLx4c8E27Us7ZZm1rhup6zs3sLkRAHgO81IAAAAAAAAAAAAAAAAAvJ2/pwvYZePGjZ6uAAAA4JU6NKii3nE19PPmQ6dlu49laeqK3bqxS0P7iwEAgHJr7qaDevDr9TqRne/2XKVgf70ypLX6tqplUzPgdF1iovVI3+b69+wky3zx9iMa//MWPdq3hc3NAAAAAJypLQcz9MGinZaZw5BeHNRKfq424AJABcS8FAAAAAAAAAAAAAAAAABv5/B0AQAAAHjeQ31i5eqanwkLtulkjvvlFQAAAJKUnVegp2ckaORnq4tdftWmXpRmj+nO8it4hdu7N9YVrV3/vTj5t2T9uGG/jY0AAAAAnCnTNPXk9ATlO03LfMT5DdSqbqTNrQAAAAAAAAAAAAAAAAAAAOAOC7AAAACgmOqVdG2nepbZ0cxcvf97ss2NAABAebPzSKaGTFqqT/7YVezZOy5srK9HXqB6VUJtaAYUzzAMvXJVazWvWcnlmYe+2aAtBzNsbAUAAADgTHyzeq9WpByzzKpVCtL9l8Xa3AgAAAAAAAAAAAAAAAAAAADF8fd0AU8zTVNr165VYmKijh07pvT0dDmdTt1www1q2LChp+sBAADYZuzFzfT92n3KznOelr2/KFnXn19f1SsFe6AZAADwdjPW7dNj321UZm6B23OVQwP02jVt1Kt5DZuaASUXGuivySM6qP9bi3UiO/+0PCu3QCM/W6UZo7opMiTAAw0BAAAAuHI8M1f/np3oMn/i8haKCOb3eAD4C/NSAAAAAAAAAAAAAAAAALyFzy7AWr9+vV577TXNmDFDJ0+ePC3v1q2b5UDXK6+8oqSkJElS/fr19cwzz5RxUwAAAHvUjAzWLV0b6Z2FO07LsnIL9NaC7Xp+ULwHmgEAAG91KrdAz/ywSV+u2lPs2fMaVdGbQ9uqVmSIDc2As9OgapgmDGunmz9eKdM8PU85mqV/TVurD27sJIfDsL8gAAAAAEvjfkrS8aw8y6xrTFUNaFPb5kYA4J2YlwIAAAAAAAAAAAAAAADgbXxuAVZubq7uvfdevfvuu5L+vKPhPxmG64vXatasqUceeUSGYcgwDN10003c+RAAAFQYd17URF+s2K00iwuFpq7YrVu6NVKj6DAPNAMAAN5m66EM3TNljbalnn6h3N8ZhjS6V1ON6RUjfz+HTe2As3dRbHXdf2kzvfrzVsv81y2H9cb8rbqvd6zNzQAAAABYWb3rmKattF7MHOjn0PMD493OAACAL2BeCgAAAAAAAAAAAAAAAIC38qmrDrOystSjRw+9++67ZzzI9ZfrrrtO1apVk2maMk1TU6ZMKYuqAAAAHhERHKBRPWMss3ynqVfnbrG5EQAA8DamaerLlbs1YOLiYpdfVasUpCm3dtZ9lzZj+RXKlbsvitFlLWu4zCf8sl0/bzpoYyMAAAAAVvILnHr8+wSX+Z09GqtxtXAbGwGA92FeCgAAAAAAAAAAAAAAAIA386krD4cNG6bly5cXPjYMQ4MHD9akSZP0448/Wg55/ZO/v78GDx5c+HjOnDll0hUAAMBTRlzQQHWiQiyzWRsPaN2eNHsLAQAAr5GRnaex09bp4W83KjvP6fZs96bRmj2mu7rERNvUDig9DoehV69uoybVwlyeue+r9dpezBI4AAAAAGXr46UpSjqYYZk1qBqqu13c8AEAfAnzUgAAAAAAAAAAAAAAAAC8mc8swJo5c6ZmzpxZeNfCpk2bat26dfr22281cuRI9evXT1LJ7mrYv39/SZJpmlqxYoVOnTpVdsUBAABsFuTvp/t7N3OZvzwnsUSD8AAAoGJJ2Jeu/m8t1g/r97s95+cw9FCfWH1y83mqVinIpnZA6asUHKD3buio8CB/y/xkTr5GfrZKGdl5NjcDAAAAIEn7007p9XlbXebPDYxXcICfjY0AwPswLwUAAAAAAAAAAAAAAADA2/nMAqznn39e0p9DWDVq1NDChQsVHx9/Vq/VqVOnwq8LCgqUmJhYKh0BAAC8xaC2ddSiVoRltiz5mBZuPWxzIwAA4CmmaeqjJTt15TtLlXI0y+3Z2pHB+mrk+br7ohg5HMVfNAd4uybVwvX6NW1c5jsOZ+r+r9bL6WRBLAAAAGC352ZuVlZugWV2eata6tGsms2NAMD7MC8FAAAAAAAAAAAAAAAAwNv5xAKsQ4cOafXq1TIMQ4Zh6Pnnn1etWrXO+vWqV6+uatX+Nyy7ZcuW0qgJAADgNRwOQw/3iXWZj5uTpAIu8gcAoMJLy8rVyM9W69mZm5Vb4HR79pIWNTR7bHd1aFDFpnaAPXq3rKkxvWJc5j9vPqR3Fm63sREAAACAX5NS9dOmg5ZZWKCfnrwizuZGAOB9mJcCAAAAAAAAAAAAAAAAUB74xAKsJUuWyDRNmaYpf39/DR069JxfMzo6uvDrI0eOnPPrAQAAeJsezarpgsZVLbOkgxmasW6fzY0AAICdVu86rssnLNbPmw+5PRfo59DT/eP0/g0dFBUaaFM7wF7/uqSZesZWc5m/Nm+rft2SamMjAAAAwHedyi3QUz8kuMzv6x2rmpHBNjYCAO/EvBQAAAAAAAAAAAAAAACA8sAnFmAdPPjnnV8Nw1BMTIzCwsLO+TUjIiIKvz558uQ5vx4AAIC3MQxDj/Rt7jJ/7eetys4rsLERAACwg9NpatLCHbpm8h/al3bK7dkGVUP17V1ddHPXRjIMw6aGgP0cDkNvDG2nhlVDLXPTlMZOXatdRzNtbgYAAAD4nrd/3a49x6z/vBpXK0I3XtDA5kYA4J2YlwIAAAAAAAAAAAAAAABQHvjEAqz09PTCr/8+iHUuMjP/dzFbSEhIqbwmAACAt2lTL0qXt65lme1LO6XPl+2yuREAAChLR07m6KaPV2rcT0kqcJpuz/ZvU1s/ju6mVnUjbWoHeFZkSIAmj+io0EA/y/xEdr5GfrZaWbn5NjcDAAAAfMf21JOa/PsOy8wwpBcHx8vfzyfGIACgWMxLAQAAAAAAAAAAAAAAACgP/D1dwA6VK1cu/Prvw13n4q+7JEpS1apVS+U1y4vMzEwtX75cW7du1fHjxyVJkZGRatSokeLj41WvXr1zfo8dO3ZoxYoV2rt3r3Jzc1W5cmU1b95cXbp0UXBw8Dm/PgAAKLkHe8dqbsJB5VsswZj463Zd3bGeIkMCPNAMAACUpqU7juhf09YpNSPH7bkgf4eeHdBS13aqJ8MwbGoHeIfYmpU0/qo2uueLNZZ50sEMPfTNBr01rB3/fAAAAAClzDRNPTk9QXkF1gubh51XX+3qV7bMAMAXMS9VupiXAgAAAAAAAAAAAAAAAMqGTyzAqlGjhqQ/B2J37typ3NxcBQYGnvXrbdu2TUeOHCl8XBoDTGdj3759WrFihZYvX64VK1Zo1apVysjIKMwbNGiglJSUUnu/RYsW6fXXX9fs2bOVm5vr8lydOnV02WWX6f7771dcXNwZvcf06dP1/PPPa80a64sIw8PDddNNN+npp59WdHT0Gb02AAA4Ow2jw3Rd5/r69I9dp2VpWXma/NsOPdSnuQeaAQCA0lDgNPXmgm1665dtMq2vIS7UtHq4Jl7XXrE1K9lTDvBCl7eupQ37Gmvyb8mW+Y8bDqh13UjdcWETm5sBAAAAFduMdfv1R/JRy6xqWKAevozPqQHg75iXKh3MSwEAAAAAAAAAAAAAAABlyycWYHXs2LHw69zcXP3yyy/q06fPWb/elClTCr8ODAzU+eeff079zsSSJUv02muvafny5dq/f78t75menq67775bX3zxRYnO79u3Tx9++KE6depU4oGunJwc3XrrrUX+s7Vy8uRJTZw4UV9++aW++eYbXXjhhSV6fQAAcG5G92qqb1bvVVZuwWnZh0t26oYLGqpmJHcdBgCgvDmYnq2x09Zq+c5jxZ69pmNdPTOgpUIDfeLjJMCtB3vHatO+E1q8/Yhl/vKcJLWsHamuMVyQCAAAAJSG9Kw8vTBrs8v8sX4tFBkaYGMjAPB+zEudG+alAAAAAAAAAAAAAAAAAHs4PF3ADvXq1VNcXJwMw5AkjRs37qxf68CBA3rrrbdkGIYMw1C3bt0UHGzfsoeVK1fq+++/t22Ya9++ferSpYvlMFeNGjXUunVrderUSTExMfL3P7sLYJ1Op6699trThrn8/PzUqFEjtW3bVpGRkUWyw4cPq2/fvvrjjz/O6j0BAMCZqVYpSLd3b2yZZec59cb8rTY3AgAA5+rXpFT1m7Co2OVXYYF+euPatnrlqjYsvwL+n7+fQ28Na6e6lUMsc6cpjfpijfYez7K5GQAAAFAxjf85SUdO5lpmnRtV0ZXt69jcCAC8H/NSZ495KQAAAAAAAAAAAAAAAMA+PrEAS5Juv/12maYpSfr999/14osvnvFrZGRk6KqrrtLx48cLX+tf//pXadY8J+Hh4aX6eidOnFCfPn20efP/7qRbuXJljRs3TsnJyTp48KDWr1+vFStWaNu2bcrMzNSyZcv01FNPqUmTJiV+n/Hjx2vGjBlFvnfnnXdq9+7dSk5O1tq1a3Xs2DF99913ql+/fuGZrKwsXXPNNUpPTz/3HxYAABTr9gsbKzo80DL7atUebU/NsLkRAAA4G3kFTr00O1E3f7xSxzKtLx7+S1ytCM0c3U2D2nEhMfBPlcMC9e7wDgryt/6I9XhWnkZ+tlrZeQU2NwMAAAAqlnV70jRl+W7LzN9h6IVB8YXLXQAARTEvdeaYlwIAAAAAAAAAAAAAAADs5TMLsO6++241bNhQkmSapp566indc889JR4Gmjt3rs477zwtW7as8G6GnTp10uWXX16GrV2rVKmSLrroIj344IP6+uuvlZKSopkzZ5bqe9x3331KSEgofNyjRw9t27ZNDz30kBo1anTa+cDAQHXu3FnPPvustm3bpqFDhxb7HkePHj1tuO6ll17SpEmTVLt27cLvORwODR48WEuXLi38/6Mk7d27V6+//vpZ/HQAAOBMhQf5a8zFTS0zpym98tMWmxsBAIAztedYlq5+9w9N/j252LM3XtBA393dRY2rle4FZEBFEl8nUi8PaeUy37T/hB77fmPhxaEAAAAAzkyB09QT0zfK1a/Ut1/YWE1rVLK3FACUI8xLnTnmpQAAAAAAAAAAAAAAAAB7+Xu6gF0CAgI0depU9erVS9nZ2TJNU++++64+/fRT9e/fXx06dJD057CXYRiaNWuW1qxZo+3bt+uXX37Rjh07CjPTNFWlShVNnTrV9p+jf//+6t27t5o3by6Ho+j+sp07d5ba+yxcuFAffvhh4eNOnTpp9uzZCg0NLdHzDcNQVFRUsedeeeUVZWRkFD6+8MIL9fDDD7s8X6dOHf33v//VJZdcUvi9//znPxozZoyqVq1aom4AAODsDe1UXx8s3qldR7NOy37efEirUo6pY8MqHmgGAACKM2fjAT307QZlZOe7PRcR7K9XrmqtPvG1bGoGlG+D29XVhr3p+mhJimX+3Zp9alM3Sjd2aWhrLwAAAKAi+OyPFCXsO2GZ1a0cojG9rG/aAAD4E/NSZ4Z5KQAAAAAAAAAAAAAAAMB+juKPVBydO3fWtGnTFBwcLMMwJEmZmZn68ssv9dBDDxWeM01Tb7zxhh5++GG9//772r59e5FhrsjISH3zzTeWd/Ura02aNFFcXNxpw1yl7b777pP5/7fR9ff313//+98SD3OVlNPp1EcffVTke88880zh/29cufjii9W9e/fCxxkZGfrqq69KtRsAALAW6O/QA71jXeYvz0kq/B0CAAB4h+y8Aj01I0F3TVlT7PKrtvWiNGtMd5ZfAWfosX4t1LmR60Wwz/+4WSt2HrOxEQAAAFD+HTqRrVd/3uoyf3ZAS4UE+tnYCADKJ+alSo55KQAAAAAAAAAAAAAAAMB+PrUAS/rzjoArVqxQXFxc4ZDWXwzDKPzLNM3Cgaa/f69ly5Zavny5LrroIg/9BGVv5cqVWrt2beHjQYMGqXXr1qX+PkuXLtXhw4cLHzdu3LjE/7neeuutRR5Pnz69FJsBAAB3Lm9VS63rRlpmq3Yd1/zEVJsbAQAAV5IPn9SV7yzVp3/sKvbsyB6N9fWdF6heldK9oAvwBQF+Dk28rr1qRQZb5vlOU3dPWa2D6dk2NwMAAADKr+d/3KyTOdaLnHvH1dDFLWrY3AgAyi/mpYrHvBQAAAAAAAAAAAAAAADgGT63AEuSWrZsqXXr1umLL77QeeedJ0mFA1x/H+T6+/dbtmypTz75ROvXr1ezZs08Vd0WH3zwQZHHw4cPL5P3mTVrVpHHl156abF3M/z72b9buHChMjMzS60bAABwzeEw9Eif5i7zcT8lKb/AaWMjAABg5fu1e3XFW4u1+cAJt+eqhAXqo5s76dG+LRTg55MfFQGlolqlIE0a3kGBLv45OnIyV3d+vlo5+QU2NwMAAADKn0XbDuvHDQcss5AAPz09oKXNjQCg/GNeyj3mpQAAAAAAAAAAAAAAAADP8Pd0AU/x8/PT0KFDNXToUB07dkyLFy9WYmKijh49qrS0NIWGhio6OlqNGjVSz549Vbt2bU9Xts0/B63K6u6N69atK/K4S5cuJX5u7dq11bBhQ6WkpEiScnNztXnzZnXq1KkUGwIAAFe6xETrwmbV9PvWw6dl21NP6ts1e3Vtp/oeaAYAALJy8/X0jE36evXeYs92blRFE4a1U42IYBuaARVf23pRen5QSz387UbLfN2eND3zwya9dGVrm5sBAAAA5Ud2XoGenJ7gMv/XJU1VJyrExkYAUHEwL+Ua81IAAAAAAAAAAAAAAACAZ/jsAqy/q1KligYMGKABAwac0fNSU1M1fvx4jR8/voya2e/gwYPau/d/F8g2bNhQkZGRkqSTJ0/q66+/1tSpU7V161YdOHBAERERqlmzprp27ar+/furX79+Jb4rYWJiYpHHcXFxZ9Q1Li6ucKDrr9djoAsAAPs83CdWi7Yd1t9uBl3oP/O2aUCbOgoJ9LO/GAAAPizp4AmN+mKttqeedHvOMKQxvZpqzMVN5eco2Z/jAZTMtZ3qa8PedE1Zvtsyn7pij1rVidJ1nVkYCwAAAFh597cdSjmaZZnF1qikW7o1srkRAFRMzEv9D/NSAAAAAAAAAAAAAAAAgOc4PF2gPDp48KDuvfdeNW7cWK+//rqn65SqlStXFnncuHFjSdL8+fMVGxurW265RfPmzdOuXbuUm5urI0eOKCEhQZMnT9YVV1yhTp06acWKFcW+z6lTp7R7d9GLAOvVq3dGXf95fsuWLWf0fAAAcG5a1o7UoLZ1LLODJ7L10dKdNjcCAMB3maapqSt2a+DEJcUuv6peKUhTbuusey9txvIroIw83b+l2tePcp3/kKA1u4/bVwgAAAAoJ1KOZOqdhTtc5i8MjleAH2MOAOAJzEsxLwUAAAAAAAAAAAAAAACUBSZDz8C+ffs0evRoNW7cWBMmTFBWlvVdZ8uz7du3F3kcERGhzz//XL1799b+/fuLff7q1avVo0cPff/9927PHTlyRKZpFj4OCAhQ9erVz6hrnTpFF26kpqae0fMBAMC5u+/SZgp0cbHRpIU7dDwz1+ZGAAD4nozsPI2eulaPfrdROflOt2d7NKum2WO7q0uTaJvaAb4p0N+hScM7qFqlIMs8r8DUXZ+vVmpGts3NAAAAAO9lmqaenJGgXBd/tr2mY111aljF5lYAAOalmJcCAAAAAAAAAAAAAAAAypK/pwuUB3v27NG///1vffzxx8rNzS0yiFTRpKWlFXm8bds23XbbbYU/c926dTV8+HC1bdtWYWFh2rt3r3788UfNmjWr8DnZ2dkaOnSoli5dqg4dOli+z8mTJ4s8Dg0NlWEYZ9Q1LCzM7WuerdTUVB0+fPiMnvPPQTgAAHxFvSqhGn5+A324ZOdpWUZ2vt5ZuF2PXx7ngWYAAPiGDXvTNOqLtdp9zP1FZ34OQw9eFqs7ujeWw3Fmf/4GcHZqRARr0vXtNfS9Zcp3nv554qETObpnyhpNue18BfpznwIAAABg1sYDWrTtiGUWFRqgR/q2sLkRAPg25qWYlyoO81IAAAAAAAAAAAAAAAAoDRV6AdbSpUu1YMECbd++XUeOHJFhGKpRo4Y6dOigK6+8UjVr1nT7/N27d+v555/XZ599pry8vMKhpr8Gj0zTVExMTJn/HHb650DXpk2bCr++6aab9Pbbbys0NLTImTvvvFO//vqrrrzyysLn5+bmatiwYdq8ebP8/U//2+yfw1fBwcFn3DUkJMTta56td955R88++2ypvBYAAL5gVK8Yfb1qjzJy8k/LPlm6Szd2aai6lUMtngkAAM6WaZr6aEmKXpqTqLwC9xee1YkK0YRh7dShQWWb2gH4S8eGVfR0/zg9OWOTZb4y5bhenLVZzw6Mt7kZAAAA4F0ysvP03MzNLvNH+zZXlbBAGxsBQPnFvNSZY16KeSkAAAAAAAAAAAAAAAB4jsPTBcrCvHnz1Lp1a3Xv3l3PPPOMPv/8c/3000+aM2eOPv74Y40ePVr169fX2LFjlZOTc9rzT506pYcfflixsbH68MMPC+9iaBiGDMOQaZpq1qyZPv30UyUmJnrgJyw7roai+vfvrw8//PC0Ya6/9OzZUzNmzJDD8b+/pbZt26avvvrK8nx2dnaRx4GBZz6sHBQUVOTxqVOnzvg1AADAuasSFqg7L2pimeUWOPX6vK02NwIAoGJLy8rV7Z+u1nM/bi52+dVlLWto9pjuLL8CPGj4+Q10dYe6LvNP/tilb1fvtbERAAAA4H1e+3mrUjNO/9/uJalDg8q6ukM9mxsBQPnDvNTZY14KAAAAAAAAAAAAAAAA8JwKtwBr0qRJ6tevnzZt2iTTNAv/+stfj/Pz8zVx4kRdcsklRYa6Vq9erVatWunVV19VTk5O4SDXX8+Ni4vT1KlTtXnzZg0fPrzIAFNFYHVnQX9/f7399tuF/zm4cuGFF+qGG24o8r333nuvRO+Tm5t7hk112jDe2dwVEQAAlI6buzZU9UpBltn3a/cp8cAJmxsBAFAxrUo5pn5vLtL8xENuzwX6OfTsgJZ6d3gHRYYG2NQOgBXDMPT8oHi1rhvp8sxj32/Uxr3pNrYCAAAAvEfCvnR9+keKZebnMPTCoHg5HO7/t2oA8HXMS50b5qUAAAAAAAAAAAAAAAAAz/H3dIHStGTJEo0ePVpOp1OSigxi/X2o6+/fX7p0qR566CG9+eabWrBggQYOHKhTp04VDnL99dw2bdroiSee0JAhQ+z/wWwUHh5+2vf69OmjevVKdkfdO+64Qx9//HHh4+XLlys3N/e0Oxb+833+eYfDkvjnHQytup+Nu+++W1dfffUZPWf79u0aNGhQqbw/AADlUWigv+69tJke/W7jaZlpSq/8lKSPbj7PA80AAKgYnE5Tk37bodfnbVWB03R7tmHVUE28rr3i67hetgPAXsEBfpo0vIP6v7VYxzJPv7AxJ9+pOz9frR9GdVXVcOvFsgAAAEBFVOA09fj0BLn6o+4tXRuqRa0Ie0sBQDnDvNS5Y16KeSkAAAAAAAAAAAAAAAB4ToVagHXXXXfJ6XQWGdgKDAxUx44dVbduXZmmqb1792r16tXKzc0tHNh69913NXz4cF111VXKysqSYRiFWevWrfXcc89pwIABHv7p7GE1FNWjR48SP79Tp04KCQkpHLbKzs7Wxo0b1aFDB7fvk5WVVeTukSWRmZnp9jXPVvXq1VW9evVSeS0AAHzJ1R3q6v1FyUo+nHla9uuWw/pjx1Fd0KSqB5oBAFC+Hc7I0X1frdOibUeKPTuwbW29OLiVwoMq1Ec+QIVQJypEE69rpxEfrLBcZLcv7ZRGT12rT285T/5+Dg80BAAAAOw3dcVurd+TZpnVigzWvy5pZm8hACiHmJc6d8xLMS8FAAAAAAAAAAAAAAAAz6kwV1L98ccfSkhIKBzEkqQHH3xQhw4d0uLFizVt2jR9+eWXWrJkiQ4ePKj7779f0p93N8zPz1f//v2Vnp5e+PzKlSvrgw8+0Nq1a31mmEuSatSocdr3mjUr+VCxv7+/mjRpUuR7qampp52Ljo4uMryVl5dnec6dffv2FXnMEBYAAJ7l7+fQQ5c1d5m/PCexyF2mAQBA8ZZsP6J+ExYVu/wqOMChV4a01hvXtmX5FeDFujSJ1qN9Xf/OvHTHUY37KcnGRgAAAIDnHM7I0Stufv99un9LhfFnXABwi3mp0sG8FAAAAAAAAAAAAAAAAOA5FWYB1syZMyWp8K5448eP17hx4xQZGXna2aioKI0fP16vvPJK4fBXampq4YBRmzZttG7dOt18881ndIe9iqBFixanfS8iIuKMXuOf548fP37amZCQENWvX7/I93bv3n1G7/PP882bu754EAAA2OOyljXUvn6UZbZ+b7rmJBy0txAAAOVUfoFTr/28RcM/WK7DGTluzzarEa4fRnXTNZ3q+dznGEB5dGu3RhrYtrbL/P1FO/XD+v02NgIAAAA849+zE3UiO98y69W8ui5refoyEgBAUcxLlQ7mpQAAAAAAAAAAAAAAAADPqTALsFavXl34dbNmzXTfffcV+5z7779fsbGxklR4J8Pq1atr3rx5qlu3bpl19WZxcXGnfS8nx/2Ftv+UnZ1d5HFoaKjluX8OYG3evPmM3icxMdHt6wEAAPsZhqFH+p4+IP6X8XO3KK/AaWMjAADKnwPpp3Td+8v11i/b9f/Xobk0tFM9zbinm5rVqGRPOQDnzDAMvXxla7Wo5foiyoe/2aDEAydsbAUAAADYa+mOI/p+7T7LLDjAoWcHtPS55SsAcDaYlyodzEsBAAAAAAAAAAAAAAAAnlNhFmBt3bpV0p+DWVdddVWJn3fVVVfJNM3COyHee++9io6OLquaXq9q1aqn3Wnw0KFDZ/Qaqampp72mlbZt2xZ5vHTp0hK/x4EDB5SSklL4OCAgwHIYDQAA2O+8RlV0SYvqltnOI5matnKPzY0AACg/fkk6pH5vLtKKlGNuz4UF+unNoW318pDWCgn0s6kdgNISEuinycM7KDIkwDI/lVegkZ+tVlpWrs3NAAAAgLKXm+/Uk9MTXOajezVVvSrWS0MAAEUxL1U6mJcCAAAAAAAAAAAAAAAAPKfCLMBKT08v/LpVq1Ylft4/z/br16/UOpVXAwYMKPL473eLLM6hQ4e0d+/eIt9r1qyZ5dkrrriiyOP58+fLNM0Svc/PP/9c5HHPnj0VHh5e4p4AAKBsPdSnuRyGdfbm/G3KzMm3txAAAF4uN9+pF37crFs+XqXjWXluz8bXidCsMd01sG0dm9oBKAv1q4bqrWHtXP7evPtYlsZOW6cCZ8k+LwMAAADKi/cXJWvH4UzLrEm1MN3evbHNjQCg/GJeqvQwLwUAAAAAAAAAAAAAAAB4RoVZgHXixAkZxp9Xi1WuXLnEz4uKiiryuHFjhmkHDx5c5PH06dPldDpL9NxvvvmmyOMWLVqoRo0alme7dOlS5O6RycnJWrhwYYne54MPPijyeODAgSV6HgAAsEezGpV0VYe6ltmRkzn6YPFOmxsBAOC9dh/N0tXvLtV/S/Dfjzd1aahv7+qihtFhNjQDUNYubFZND1wW6zL/beth/WfeVhsbAQAAAGVrz7EsTViwzWX+wqBWCvSvMGMMAFDmmJcqPcxLAQAAAAAAAAAAAAAAAJ5RYSZH/z5w5OfnV+Ln/fNsaGhoqXUqr3r06KHY2P9deLd792598sknxT4vKytLr732WpHvXXPNNS7POxwO3XTTTUW+9+yzzxZ7V8MFCxZo0aJFhY8rVark9n0AAIBn/OuSZgpycaHS5N926MjJHJsbAQDgfWZvPKDLJyzS+r3pbs9FBPtr8ogOemZASwX5l/xzDwDe764eTdQ3vqbLfOKv2/VTwkEbGwEAAABlwzRNPf3DJuXkWy8TubJdHV3QpKrNrQCgfGNeqvQwLwUAAAAAAAAAAAAAAAB4RoVZgIXS4+fnpxdeeKHI9+69916tWbPG5XMKCgp06623aufOnYXfCwsL0+jRo92+18MPP6zw8PDCx7/99pvGjRvn8vy+fft02223Ffne2LFji9wZEQAAeIfaUSG6qWtDyywzt0ATf9lubyEAALxIdl6Bnpi+UXdPWaOMnHy3Z9vXj9Lssd11WUvXC3IAlF+GYWj81W3UtHq4yzP3f7VO21MzbGwFAAAAlL65mw7pl6RUyywi2F+PXd7C5kYAAPwP81IAAAAAAAAAAAAAAACAZ/h7ugDO3JIlS3Tq1KnTvr9+/foij7OzszV//nzL16hdu7bi4uJcvsdVV12lHj166LfffpMkpaenq2fPnnruued08803KyIiovDsqlWr9OCDD2rhwoVFXuP1119X1aru79AbHR2txx57TI899ljh9x599FHt3r1bTzzxhGrXri3pzztW/vDDDxo7dqx2795d5Oe4//773b4HAADwnLt7xGjaij1KP5V3WjZl+S7d3LWhGlQN80AzAAA8Z3vqSY36Yo2SDha/zOaui5rovkubKcCPHeZARRYe5K/JIzpo4MQllkvxMnMLdMenqzV9VFdFBAd4oCEAAABwbjJz8vXszE0u84f6NFd0eJCNjQAA5Q3zUsxLAQAAAAAAAAAAAAAAoGIyTNM0PV2iNDgcDhmGIUmaN2+eevXqVaLnLViwQJdeeqkkyTAMFRQUlFnH0tKwYUPt2rXrnF7jxhtv1Mcff+z2zIEDB9S1a9cidymUpMDAQDVp0kRhYWHau3evDh48eNpzb7/9dr333nsl6uJ0OjVw4ED9+OOPRb7v5+enBg0aKDIyUjt37lRaWlqRPCQkRPPmzVPXrl1L9D5ladOmTYqPjy98nJCQoJYtW3qwEQAA3uO933fo37OTLLMBbWprwrB2NjcCAMBzvl29V0/OSFBWrvvPH6qGBer1a9uqR7NqNjUD4A0WJB7SrZ+scplf0qKG3hvRQQ6HYWMrAAAA4Ny9OGuz3l+00zJrUy9K39/Vhd9zAZSJij7PwbzUmWFeqnRV9H++AAAAAAAAAAAAAAAAypPyPMvh7+kCZWH9+vXy9y/Zj/bPuwAuWrRIZ7oT7MILLzyj8+VFrVq19Pvvv2vw4MFatep/F97l5uYqMTHR8jkOh0NPPfWUnn766RK/j8Ph0Ndff62bb75Z06ZNK/x+QUGBkpOTLZ9TtWpVffPNN14xzAUAANy74YKG+nhJivanZ5+W/bB+v27v3lit6kZ6oBkAAPbJzMnXUzM26ds1e4s9e0HjqnpjaFvViAi2oRkAb3Jxixr61yVN9cb8bZb5/MRDmvjrdo25uKnNzQAAAICzl3jghD5ckmKZOQzpxUHxLL8CgFLAvFTpYF4KAAAAAAAAAAAAAAAAsFeFW4BlmqYeeOCBs37uRRdddEbPMQxD+fn5Z/V+5UHdunX1xx9/aPLkyfrPf/6jHTt2WJ4LCgpSv3799NxzzxXZBldSwcHBmjp1qq666iq98MILWrduneW5sLAw3XjjjXr66adVvXr1M34fAABgv+AAP917aTM9+M0Gy3zcT0n6/LbONrcCAMA+iQdOaNQXa7TjcKbbcw5DGntxM43qFSM/LvwFfNaYXk2VsC9d8xNTLfP/zN+q+DoR6tW8hs3NAAAAgDPndJp6YnqCCpzWS1VuuKCh4utwgwQAOFfMS5Uu5qUAAAAAAAAAAAAAAAAA+xjmmd6+z0s5HA4Zxp8Xh57pj/TX8872uQUFBWf0nPIsISFBa9eu1f79++V0OhUdHa0GDRqoW7duCg0NLbX32b59u5YvX659+/YpNzdXUVFRatGihbp27arg4OBSe5/SsmnTpiKDbAkJCWrZsqUHGwEA4F0KnKb6vblIWw5lWOaf3XqeujetZnMrAADKlmmamrJ8t577cbNy851uz9aICNKbQ9vp/MZVbWoHwJudyM7ToIlLlHzEenFepWB//TCqmxpFh9ncDAAAADgzX67crYe/3WiZVa8UpAX391Cl4ACbWwHwJRV9noN5KXswL2Wtov/zBQAAAAAAAAAAAAAAUJ6U51kOf08XKAt/H9Aqy+dWkN1hZyQ+Pv6s7lh4pmJiYhQTE1Pm7wMAAOzh5zD0cN9Y3fLxKsv85TlJ6tokWg7H2f8eBwCANzmRnadHv92oWRsPFHv2othqeu3qNqoaHmRDMwDlQURwgCaP6KBBby9RZu7pF5NmZOdr5Ger9P3dXRUWVCE/4gUAAEAFcCwzVy/NSXKZP9U/juVXAFCKmJcqO8xLAQAAAAAAAAAAAAAAAGWnwlwdVb9+/XMa5AIAAEDZ6hlbXec1qqIVO4+dlm3af0IzN+zXwLZ1PNAMAIDStX5PmkZNXaM9x065PefvMPRQn1jd1q0xSyABnKZpjUp69eo2umvKGst866GTevCb9Xr7uvZ8LgoAAACv9NLsRKVl5Vlm3ZtG6/JWtWxuBAAVD/NSAAAAAAAAAAAAAAAAAMq7CrMAKyUlxdMVAAAA4IZhGHq0b3MNfmepZT5+7hb1ia+pIH8/m5sBAFA6TNPUB4t3atxPScorMN2erVs5RG8Na6d29Svb1A5AedS3VS3dfVETvbNwh2U+e+NBTf49WXf2aGJzMwAAAMC9lSnH9PXqvZZZoL9Dzw+MZ2ELAJQC5qUAAAAAAAAAAAAAAAAAlHcOTxcAAACA72hXv7L6xte0zPYeP6Upy3bb3AgAgNJxPDNXt32ySi/MSix2+VXf+JqaNaY7y68AlMj9vWN1YbNqLvNXfkrSom2HbWwEAAAAuJdX4NQT3ye4zO++qIkaRofZ2AgAAAAAAAAAAAAAAAAAAADeigVYAAAAsNUDl8XKz2FYZm/9sk0nsvNsbgQAwLlZmXJM/SYs0oKkVLfnAv0cen5gS71zfXtFhgTY1A5AeefnMDRhaFvVqxJimTtNafTUtdpzLMvmZgAAAIC1Dxfv1JZDGZZZw6qhurNHE5sbAQAAAAAAAAAAAAAAAAAAwFuxAAsAAAC2alItXNd2qmeZHc/K0/u/J9vcCACAs1PgNDXxl20a+t4yHUjPdnu2cXSYvr+ni0Zc0FCGYb0IEgBciQoN1OThHRUcYP1xblpWnkZ+tlqncgtsbgYAAAAUtS/tlN6Yv81l/vygeAUH+NnYCAAAAAAAAAAAAAAAAAAAAN6MBVgAAACw3b8ubqoQFxc5/XfRTqWecL9EBAAAT0vNyNaNH67Qqz9vVYHTdHt2cLs6+mF0N7WsHWlTOwAVUVztCI0b0tplvvnACT363QaZpvt/JwEAAABl6dkfNulUnvVi1v5taqt702o2NwIAAAAAAAAAAAAAAAAAAIA3YwEWAAAAbFc9Ili3dW9kmZ3KK9AbC7bZ3AgAgJJbtO2w+r25SIu3H3F7LiTAT+Ovaq3Xr2mj8CB/m9oBqMgGtq2j27pZ/x4tSdPX7ddHS1LsKwQAAAD8zfzNh/Tz5kOWWaUgfz15eQubGwEAAAAAAAAAAAAAAAAAAMDbsQALAAAAHnHHhY1VJSzQMvty5R7tOHzS5kYAALiXX+DU+LlJuuHDFTpyMtft2dgalTRzdFdd3bGeDMOwqSEAX/BI3+a6oHFVl/mLsxO1LPmojY0AAAAAKSs3X0//sMllfn/vZqoeEWxjIwAAAAAAAAAAAAAAAAAAAJQHLMACAACAR1QKDtDoXjGWWYHT1Ktzt9jcCAAA1/anndKw95fp7V93yDTdnx12Xn3NGNVVMdUr2VMOgE/x93No4nXtVDvSenlAgdPUPVPWaH/aKZubAQAAwJe99ct27XPxO2h8nQiNuKChvYUAAAAAAAAAAAAAAAAAAABQLrAACwAAAB5zXef6qlclxDKbk3BQa3Yft7kRAACnm7/5kPpNWKSVKe7/eyk8yF9vDWunl65speAAP5vaAfBFVcOD9O6IDgr0t/5492hmru76fLWy8wpsbgYAAABftO1Qht7/PdkyMwzpxUGt5OcwbG4FAAAAAAAAAAAAAAAAAACA8oAFWAAAAPCYIH8/PdA71mX+8uwkmaZpYyMAAP4nN9+p52Zu1m2frlJaVp7bs63qRGrWmG7q36a2Te0A+LrWdaP04qB4l/n6vel6akYCv08DAACgTJmmqSemJyjfaf175/Wd66tNvSh7SwEAAAAAAAAAAAAAAAAAAKDcYAEWAAAAPKp/69pqWTvCMluRcky/bkm1uREAANKuo5m66t2l+nDJzmLP3tK1kb656wI1qBpmQzMA+J+rO9bTDRc0cJl/tWqvpizfbWMjAAAA+Jrv1uzT8p3HLLPo8EA9eFlzmxsBAAAAAAAAAAAAAAAAAACgPGEBFgAAADzK4TD0SF/XF0GNm7NFBU7TxkYAAF/344b9umLCYm3Ym+72XGRIgN6/oaOe6h+nIH8/m9oBQFFPXB6njg0qu8yfnblJq3dZLyQAAAAAzkVaVq7+PTvRZf7E5XGKDAmwsREAAAAAAAAAAAAAAAAAAADKGxZgAQAAwOO6N62mbjHRltmWQxn6bs1emxsBAHxRdl6BHvt+o0Z9sVYZOfluz3ZsUFmzx3bXpXE1bGoHANYC/R16Z3h7Va8UZJnnFZi68/M1Sj2RbXMzAAAAVHTjftqio5m5llmXJlU1sG1tmxsBAAAAAAAAAAAAAAAAAACgvGEBFgAAALzCw32au8xen7dV2XkFNrYBAPia7akZGvT2En2xfLfbc4Yh3dOziabdcb7qRIXY1A4A3KteKViThndQgJ9hmR/OyNFdU9YoN99pczMAAABUVGt2H9fUFdZ/hg7wM/TcwHgZhvXvpwAAAAAAAAAAAAAAAAAAAMBfWIAFAAAAr9CqbqQGtKltmR1Iz9anf6TYWwgA4DO+Wb1X/d9aoqSDGW7PRYcH6pObz9ODlzWXvx8fqQDwLh0aVNYzA1q6zFfvOq7nf9xsYyMAAABUVPkFTj3+fYLLfOSFTRRTPdzGRgAAAAAAAAAAAAAAAAAAACivuFoTAAAAXuOB3rEK8DMss7d/3aH0rDybGwEAKrLMnHzd9+U6PfD1ep3KK3B7tmtMVc0e210XNqtmUzsAOHPXnVdf13as5zL/bNkufbVqj42NAAAAUBF98scuJR44YZnVqxKiUb1ibG4EAAAAAAAAAAAAAAAAAACA8ooFWAAAAPAa9auG6vrODSyz9FN5eue37TY3AgBUVJv2p6v/W4v13dp9bs85DOmB3s306S2dVb1SsE3tAODsGIahZwe2VJt6US7PPDE9Qev3pNnWCQAAABXLwfRsvf7zFpf5cwPiFRzgZ2MjAAAAAAAAAAAAAAAAAAAAlGcswAIAAIBXGd0rRuFB/pbZR0tStD/tlM2NAAAViWma+uyPFA1+Z6mSj2S6PVszIljT7rhAo3o1lZ/DsKkhAJyb4AA/vTu8vaLDAy3z3Hyn7vx8tY6czLG5GQAAACqC53/crMzcAsusb3xN9Wxe3eZGAAAAAAAAAAAAAAAAAAAAKM9YgAUAAACvUjU8SHdc2Ngyy8136j/zttrcCABQUaSfytPdU9boyRmblJvvdHu2V/Pqmj22u85rVMWmdgBQempFhujt69rL38XyvgPp2Rr1xRrlF7j/dyEAAADwdwu3pGrWxgOWWVign57qH2dzIwAAAAAAAAAAAAAAAAAAAJR3LMACAACA17m1WyNFhwdZZt+u2astBzNsbgQAKO/W7UnT5RMWaU7CQbfnAvwMPXF5C31wY0dVCQu0qR0AlL7Ojavq8ctbuMyXJR/TS3OSbGwEAACA8iw7r0BPzdjkMr/30maqFRliYyMAAAAAAAAAAAAAAAAAAABUBCzAAgAAgNcJC/LX2EuaWmZOUxo/lwv1AQAl43Saev/3ZF01aan2Hj/l9my9KiH6+s4uuq17YxmGYVNDACg7N3VpqMHt6rjMP1i8UzPW7bOxEQAAAMqrd37drt3Hsiyz5jUr6aYuDe0tBAAAAAAAAAAAAAAAAAAAgAqBBVgAAADwSkM71VOj6DDLbH5iqlbsPGZzIwBAeXMsM1e3frJSL85OVL7TdHu2X6uamjWmu9rWi7KnHADYwDAM/XtwK7WsHeHyzMPfbtCm/ek2tgIAAEB5k3z4pN79Ldll/uLgePn7MXoAAAAAAAAAAAAAAAAAAACAM8cUKgAAALxSgJ9DD14W6zJ/aU6iTNP9MhMAgO9annxU/d5cpF+3HHZ7LtDfoRcGxevt69orIjjApnYAYJ+QQD+9O7yDKoda/zsuO8+pOz9freOZuTY3AwAAQHlgmqaenJGg3AKnZT60Uz11aFDF5lYAAAAAAAAAAAAAAAAAAACoKFiABQAAAK/VN76m2tSLsszW7k7T3E2H7C0EAPB6BU5TExZs07D3l+ngiWy3ZxtXC9P0u7tq+PkNZBiGTQ0BwH71qoTqrWHt5XDxr7o9x05pzLS1KnCyYBYAAABF/bB+v5ZsP2qZVQkL1MN9mtvcCAAAAAAAAAAAAAAAAAAAABUJC7AAAADgtQzD0KN9XV9A9crcJOUXOG1sBADwZqknsjXig+V6fd5WFbfDZUj7upo5qpviakfYUw4APKxb02i3ywkWbTuiV3/eYmMjAAAAeLsT2Xl6YVaiy/zRvs1VOSzQxkYAAAAAAAAAAAAAAAAAAACoaFiABQAAAK92fuOq6hlbzTJLPpypr1bttbkRAMAb/b71sPq+uUhLdxx1ey4kwE+vXt1Gr13TRmFB/ja1AwDvcMeFjXV561ou80kLd2j2xgM2NgIAAIA3e23uFh3OyLHMzmtYRVd1qGtzIwAAAAAAAAAAAAAAAAAAAFQ0LMACAACA13uoT3MZhnX2xvytysrNt7cQAMBr5BU4Ne6nJN3w4Qodzcx1e7Z5zUqaObobF+gC8FmGYeiVIa0VW6OSyzMPfL1eWw9l2NgKAAAA3mjD3jR9umyXZebvMPTC4HgZrj60BQAAAAAAAAAAAAAAAAAAAEqIBVgAAADwei1qRWhwuzqWWWpGjj5akmJvIQCAV9iXdkpD31umSQt3FHv2+s71Nf2eroqpHm5DMwDwXmFB/po8ooMigv0t86zcAo38bLXST+XZ3AwAAADeosBp6vHvE2Sa1vmt3RupmZulqgAAAAAAAAAAAAAAAAAAAEBJsQALAAAA5cL9vWMV6G/96+u7C3foWGauzY0AAJ7086aD6vfmIq3eddztuUpB/nr7uvZ6cXArBQf42dQOALxbw+gwvTm0nQzDOt95JFP3fblOTqeLjQcAAACo0KYs36WN+9ItszpRIRp7cVObGwEAAAAAAAAAAAAAAAAAAKCiYgEWAAAAyoU6USG68YIGlllGTr4m/rLd5kYAAE/IyS/QszM36Y7PViv9VJ7bs23qRmrWmO66vHUtm9oBQPnRs3l13XdJM5f5gqRUvblgm42NAAAA4A1SM7I1/qctLvOn+8cpNNDfxkYAAAAAAAAAAAAAAAAAAACoyFiABQAAgHLj7otiVCnY+uKqz5alaM+xLJsbAQDslHIkU0MmLdVHS1KKPXtbt0b6+s4uql81tOyLAUA5dU/PGF0aV8Nl/uaCbZq3+ZCNjQAAAOBpL85KVEZOvmV2SYsa6t2yps2NAAAAAAAAAAAAAAAAAAAAUJGxAAsAAADlRuWwQN19UYxllldg6vV5W21uBACwyw/r9+uKtxYrYd8Jt+eiQgP0wY0d9cQVcQr052MPAHDH4TD0+jVt1LhamMsz9325TjsOn7SxFQAAADxlyfYjmrFuv2UWEuCnZwbE2dwIAAAAAAAAAAAAAAAAAAAAFR1XggIAAKBcublrQ9WMCLbMpq/bp037021uBAAoS6dyC/TItxs0ZupanczJd3u2U8PKmjO2uy5uUcOmdgBQ/lUKDtB7IzoqPMjfMs/IydfIz1YX++9gAAAAlG85+QV6cnqCy3zMxU1Vt3KojY0AAAAAAAAAAAAAAAAAAADgC1iABQAAgHIlOMBP917a1DIzTWncT1tsbgQAKCvbDmVo4NuLNW3lHrfnDEMa3StGU28/X7UiQ2xqBwAVR0z1cL12TRuX+fbUk3rgq/UyTdPGVgAAALDT5N+SlXwk0zJrWj1ct3ZrZHMjAAAAAAAAAAAAAAAAAAAA+AIWYAEAAKDcGdK+rppWD7fMft96WEu2H7G5EQCgNJmmqa9W7lH/iYu19dBJt2ejw4P02S2ddX/vWPn78TEHAJyty1rW1KieMS7znzYd1DsLd9jYCAAAAHbZdTRTE3/d7jJ/YVC8Av35MzcAAAAAAAAAAAAAAAAAAABKH1OqAAAAKHf8/Rx6qE9zl/nLc5LkdJo2NgIAlJaTOfm698t1eujbDcrOc7o9271ptOaM7a5uTaNtagcAFdu9lzbTRbHVXOav/rxFC7ek2tgIAAAAZc00TT01Y5Ny863/DD6kfV11blzV5lYAAAAAAAAAAAAAAAAAAADwFSzAAgAAQLl0SYvq6tigsmW2cV+6Zm08YHMjAMC5StiXrv5vLdb0dfvdnvNzGHrwslh9cvN5qlYpyKZ2AFDx+TkMvXltOzWoGmqZm6Y0dto67T6aZXMzAAAAlJU5CQf129bDlllkSIAe6+f6RgQAAAAAAAAAAAAAAAAAAADAuWIBFgAAAMolwzD0qJuLr179eYty8502NgIAnC3TNPXpHym68p2l2nkk0+3ZWpHBmnbH+bqnZ4wcDsOmhgDgOyJDAzR5RAeFBPhZ5umn8nTHZ6uUlZtvczMAAACUtpM5+Xpu5maX+SN9m6tqOIunAQAAAAAAAAAAAAAAAAAAUHZYgAUAAIByq0ODKuodV8My23U0S9NW7ra5EQDgTKVn5enOz1frqRmblFvgfnHhJS2qa/aY7urUsIpN7QDANzWvGaHxV7d2mScdzNAj326UaZo2tgIAAEBp+8+8rTp4Itsya18/Std2rGdzIwAAAAAAAAAAAAAAAAAAAPgaFmABAACgXHuoT6wchnX25vxtOpmTb28hAECJrdl9XP0mLNLcTYfcngvwM/TkFXF6/4aOqhwWaFM7APBtV7SurTsubOwy/2H9fn2weKeNjQAAAFCaNu1P10dLrH+f83MYemFQKzlcffAKAAAAAAAAAAAAAAAAAAAAlBIWYAEAAKBci6leSdd0rGeZHc3M1fu/J9vcCABQHKfT1OTfduiad//QvrRTbs/WrxKqb+/qolu7NZJhcOEtANjpocti1TWmqsv8pTlJWrrjiI2NAAAAUBqcTlNPTE+Q07TOb+rSUHG1I+wtBQAAAAAAAAAAAAAAAAAAAJ/EAiwAAACUe/+6pJmCA6x/tX1/UbIOZ+TY3AgA4MrRkzm65ZOVemlOkvJdXWn7/y5vXUs/jumm1nWj7CkHACjC38+ht4a1V52oEMu8wGlq1Bdri11mCAAAAO8ybeUerd2dZpnVjAjWvZc2s7cQAAAAAAAAAAAAAAAAAAAAfBYLsAAAAFDu1YwM1i1dG1lmWbkFmrBgm82NAABW/thxVP0mLNLCLYfdngvyd+jfg1tp4rB2iggOsKkdAMBKlbBATR7RQUH+1h8lH8vM1Z2frVZ2XoHNzQAAAHA2jpzM0bifklzmT/WPU3iQv42NAAAAAAAAAAAAAAAAAAAA4MtYgAUAAIAKYWSPJooKtV6SMnXFbu08kmlzIwDAXwqcpt6Yv1XX/3eZDp3IcXu2SbUwzRjVVdd1ri/DMGxqCABwJ75OpF66spXLfOO+dD3+fYJM07SxFQAAAM7GS7OTlH4qzzK7KLaa+sbXtLkRAAAAAAAAAAAAAAAAAAAAfBkLsAAAAFAhRIYEaFTPGMss32nq1Z+32NwIACBJh05k6/r/LtMb87fJWcxelKs71NXM0d3UvGaEPeUAACV2Zfu6uqlLQ5f5t2v26rNlu+wrBAAAgDO2LPmovl2z1zIL8nfouQHxLKMGAAAAAAAAAAAAAAAAAACArViABQAAgApjxAUNVCcqxDKbteGA1u9Js7cQAPi4hVtS1e/NRVqWfMztudBAP71+TRuNv7qNQgP9bWoHADhTj1/eQuc1rOIyf27mZq1Mcf/vfAAAAHhGbr5TT0xPcJmP6hmj+lVDbWwEAAAAAAAAAAAAAAAAAAAAsAALAAAAFUiQv5/u793MZf7ynCSZpmljIwDwTXkFTr00J1E3fbRSRzNz3Z5tUStCM0d305Xt69rUDgBwtgL8HHr7+vaqGRFsmec7Td31+RodTM+2uRkAAACK89/FydqeetIya1wtTHf0aGxzIwAAAAAAAAAAAAAAAAAAAIAFWAAAAKhgBrato+Y1K1lmfyQf1W9bD9vcCAB8y55jWbpm8h+a/FtysWdHnN9A39/dRU2qhdvQDABQGqpVCtKk4e0V6Gf90fKRkzm6a8pq5eQX2NwMAAAAruw5lqUJC7a5zF8YGK8gfz8bGwEAAAAAAAAAAAAAAAAAAAB/YgEWAAAAKhQ/h6FH+jZ3mb88J0lOp2ljIwDwHT8lHNTlExZp7e40t+cqBftr0vXt9fygeAUHcIEtAJQ37epX1nMDW7rM1+5O07MzN9vYCAAAAO48O3OTsvOcltnAtrXVJSba5kYAAAAAAAAAAAAAAAAAAADAn1iABQAAgAqnR7NquqBxVcss6WCGpq/bZ3MjAKjYsvMK9PSMBN35+WqdyM53e7ZNvSjNHtNdfVvVsqkdAKAsDD2vvoadV99l/sXy3Zq2YreNjQAAAGDl500HNT8x1TKrFOyvxy9vYXMjAAAAAAAAAAAAAAAAAAAA4H9YgAUAAIAKxzAMPdK3ucv8tZ+3KjuvwMZGAFBx7TySqSGTluqTP3YVe/aOCxvr65EXqF6VUBuaAQDK2jMD4tSufpTL/KkZm7R293H7CgEAAKCIrNx8PTtzs8v8octiVb1SsI2NAAAAAAAAAAAAAAAAAAAAgKJYgAUAAIAKqU29KF3eupZlti/tlD5fVvyiFgCAezPW7dMVExZp0/4Tbs9VDg3QRzd10mP9WijQn48iAKCiCPL306TrOyg6PMgyzy1w6q7P1+hwRo7NzQAAACBJby7Ypn1ppyyz1nUjdV3nBjY3AgAAAAAAAAAAAAAAAAAAAIriqlMAAABUWA/0jpW/w7DMJv66XSey82xuBAAVw6ncAj38zQaNnbZOmbkFbs+e16iKZo/trp7Nq9vUDgBgp5qRwZo0vL3L37sPnsjWPVPWKK/AaXMzAAAA37blYIY+WLTTMnMY0ouDWsnPxe9wAAAAAAAAAAAAAAAAAAAAgF1YgAUAAIAKq1F0mIadV98yS8vK07sLd9jcCADKv62HMjRg4mJ9uWqP23OGIY25uKm+uK2zakWG2NQOAOAJnRpW0VP941zmK1KO6cVZiTY2AgAA8G1Op6knpm9UvtO0zEec30Ct6kba3AoAAAAAAAAAAAAAAAAAAAA4HQuwAAAAUKGNubipQgP9LLMPl+zUwfRsmxsBQPlkmqamrditARMXa1vqSbdnq1UK0pRbO+u+S5vJ34+PHgDAF4w4v4GGtK/rMv94aYq+W7PXxkYAAAC+65s1e7Uy5bhlVq1SkO6/LNbmRgAAAAAAAAAAAAAAAAAAAIA1rkIFAABAhVatUpBu797YMsvOc+rNBVttbgQA5U9Gdp7GTFunR77bqOw8p9uz3ZtGa87Y7uoSE21TOwCANzAMQy8Ojld8nQiXZx79bqMS9qXb2AoAAMD3HM/M1UuzE13mT1zeQhHBATY2AgAAAAAAAAAAAAAAAAAAAFxjARYAAAAqvNsvbKyqYYGW2Zcr92h7aobNjQCg/EjYl64r3lqsmev3uz3n5zD0UJ9YfXLzeYoOD7KpHQDAmwQH+Ond4R1UxcXv3jn5To38bLWOZeba3AwAAMB3jPspScez8iyzbjHRGtCmts2NAAAAAAAAAAAAAAAAAAAAANdYgAUAAIAKLzzIX2MubmqZOU3plZ+22NwIALyfaZr6aMlOXfnOUu06muX2bJ2oEH018nzdfVGMHA7DpoYAAG9Ut3KoJg5rJ1f/dbAv7ZRGT12j/AKnvcUAAAB8wOpdxzRt5R7LLNDPoecGtpRh8Od2AAAAAAAAAAAAAAAAAAAAeA8WYAEAAMAnDDuvvhpUDbXMft58SKt3HbO5EQB4r7SsXI38bLWenblZucUsKLk0roZmjemmDg2q2NQOAODtusRE69G+LVzmS7Yf1fi5LKEFAAAoTXkFTj3+fYLL/M6LmqhxtXAbGwEAAAAAAAAAAAAAAAAAAADFYwEWAAAAfEKgv0MP9I51mb80O0mmadrYCAC80+pdx3X5hMX6efMht+cC/Rx6pn+c3hvRQVGhgTa1AwCUF7d1b6T+bWq7zCf/nqwfN+y3sREAAEDF9vGSFCUdzLDMGlQN1d0XNbG5EQAAAAAAAAAAAAAAAAAAAFA8FmABAADAZ1zeqpZa1Ym0zFbtOq75iak2NwIA7+F0mpq0cIeumfyH9qWdcnu2QdVQfXtXF93UtZEMw7CpIQCgPDEMQ+OGtFLzmpVcnnnw6w1KOnjCxlYAAAAV0/60U/rP/K0u8+cGxis4wM/GRgAAAAAAAADwf+zdd5hddbk24HdPT++F9J6QBBIIUgJBeq+CCFIsqBQpigKKCCKgogLSiygqVUB6L1ICAQJJCOmV9J6Qnsm0/f3hdzgH2XtCkpk17b6vi+s6e5531no8x6Mze37r3QAAAAAA8OVYgAUAQIORk5OKnx0+IGv++xenRll5RYKNAGqHFes3x7f/9kFc9+LUKK9IVzp79JBO8ez5+8ROXTIvFASA/9G4IC/uOn1YtGiUnzHfVFoeZ903JtZsLE24GQBA/fLrZybHxpLyjNmRO+0QX+3XLuFGAAAAAAAAAAAAAPDlWIAFAECDsneftrFvlge+ZixbH4+PXZhwI4CaNWrmijj8ppHx1vTllc4V5efE7762U9x88tBoVpR5kQkA/LfubZrETScPjVQqcz535ca48J/jtriAEQCAzF6fuixenLQkY9a0MC9+edTAhBsBAAAAAAAAAAAAwJdnARYAAA3OpYf1z5rd8Mr02FRSnmAbgJpRXpGOG16ZHqf+5f1Yvm5zpbN92zeNp364T5y8e7dIZdtgAgBZ7Ne/ffz0kOw/g78xbXn86dXpCTYCAKgfNpWUxxVPT8yaX3Rwv+jYoijBRgAAAAAAAAAAAACwdSzAAgCgwRnUqUUcN7RTxmzJ2uL426g5yRYCSNiSNcXxzT+/Fze/NiPS6cpnT9qtSzx13t7Rv2OzZMoBUC+du1/vOGxQx6z5Lf+eGS9NWpJgIwCAuu+212fG/FWbMmYDd2geZ+zVPeFGAAAAAAAAAAAAALB1LMACAKBB+skh/aMgN/OPw7e/MTNWbyxJuBFAMl6fuiyOuHlkvP/JqkrnmhTkxk0nD43fnzgkGhfkJdQOgPoqlUrFH08aEn3aN80685NHxsfMZesTbAUAUHfNXLYu7nprVsYslYq49vjBkZfl/U8AAAAAAAAAAAAAqC2ceAUAoEHq2rpxnLZn94zZuuKyuO31mQk3AqheJWUV8Zvnp8R3/vZBrNpQ+ZK/gTs0j2cvGBHHDu2cUDsAGoKmhXlx1+nDollh5sWK6zeXxQ/u+zDWFZcm3AwAoG5Jp9Nx+ZMTo7Q8nTE/ZfdusUu3Vgm3AgAAAAAAAAAAAICtZwEWAAAN1nkH9Mn68P3fR82NBZ9uTLgRQPWYv2pjnHTXu3H3W7O3OPutvbrH4+cOj55tmyTQDICGpne7pnHDN4ZmzWcv3xA/eWR8VFRkXuYAAEDEkx8tjPdmr8qYtWlSEJceOiDhRgAAAAAAAAAAAACwbSzAAgCgwWrdpCDO3q93xqykvCJufGVGwo0Aqt4LExbHETePjI/mr650rnlRXtx52q5x1bGDoyg/N5lyADRIBw/sEBcc2Ddr/vLkpXHb6zMTbAQAUHes2Vga1z43JWt+2RE7RovG+Qk2AgAAAAAAAAAAAIBtZwEWAAAN2nf27hHtmxVmzB4ftyCmLlmbcCOAqlFcWh6/fHJinPPA2FhXXFbp7C7dWsZzF4yIwwbvkFA7ABq6Hx3YNw4c0D5rfsOr0+P1acsSbAQAUDf84eWpsWJ9ScZsj56t42u7dk64EQAAAAAAAAAAAABsOwuwAABo0BoX5MWPDuqXMUunI657YWrCjQC23+zl6+P420fFfe/N3eLsWV/tFY+ctVd0bd04gWYA8B85Oam44RtDo2fbJhnzdDriwofGxZwVGxJuBgBQe300f3U88P68jFl+biquPX5wpFKphFsBAAAAAAAAAAAAwLazAAsAgAbvpN26RK92mR+8f33a8nh31sqEGwFsuyfGLYijbnk7pixeW+lc6yYFce93vhI/P3zHyM/19gAAyWvRKD/uOn1YNC7IzZivLS6Ls+4bExs2lyXcDACg9ikrr4hfPDEh0unM+fdH9Io+7ZslWwoAAAAAAAAAAAAAtpMnXAEAaPDycnPikkMHZM1/9+LUSGd7sgyglthYUhYXPzo+fvzP8bGxpLzS2T17tY4XLhwR+/dvn1A7AMisX4dm8cevD8maT1u6Li7518d+HgcAGrz73psbkxZlXnbdpVWjOP+Avgk3AgAAAAAAAAAAAIDtZwEWAABExKGDOsQu3VpmzMbPXx0vTFySbCGArTB1ydo45tZ34tExCyqdy0lF/OigvvHA9/aMDs2LEmoHAJU7Yqcd4uyv9s6aP/fx4vjzyNkJNgIAqF2Wri2O61+enjW/6phB0aggN8FGAAAAAAAAAAAAAFA1LMACAICISKVS8fPDd8ya/+GlaVFaXpFgI4AtS6fT8eD78+LYW9+JmcvWVzrbvllhPPC9PeNHB/WL3JxUQg0B4Mu5+ND+MaJv26z5716YGm/PWJFgIwCA2uPqZyfH+s1lGbNDBnaIA3fskHAjAAAAAAAAAAAAAKgaFmABAMD/t3vP1nHQju0zZp+s2BD//GB+wo0AsltXXBrnPzQuLntiQmwuq3xB31f7tYvnLxwRe/Vuk1A7ANg6uTmpuPnkXaJLq0YZ84p0xPkPjY35qzYm3AwAoGaNnLE8nv14ccascUFuXHnMoIQbAQAAAAAAAAAAAEDVsQALAAD+j4sPHRA5qczZn16dERs2lyVbCCCDjxesjiNvfjvrA7D/Iy8nFT8/fEDc++2vRNumhQm1A4Bt06pJQdx1+rAoys/8tvWnG0vj7PvHRHFpecLNAABqRnFpefzyyYlZ8x8d1Dc6t8y8QBQAAAAAAAAAAAAA6gILsAAA4P/o37FZnLBrl4zZivWb4y9vf5JwI4D/lU6n4y9vfxIn3DEq5q3aWOls55aN4pGz94qzvto7crJt9gOAWmZQpxZx3Qk7Z80nLVoblz0+IdLpdIKtAABqxp1vzoo5KzP//t+/Q7P4zt49E24EAAAAAAAAAAAAAFXLAiwAAPgvPz64XxTmZf5R+a43Z8XK9ZsTbgQQsXpjSXz/H2Pi6mcnR2l55Us/Dh3UIZ6/YETs2q1VQu0AoOocO7RzfLeSZQ6Pj1sYfx81J7lCAAA14JMVG+L212dlza89fnDk5/pzPwAAAAAAAAAAAAB1mxOxAADwXzq1bBTf3rtHxmxDSXnc8u+ZyRYCGrwP56yKI24aGa9OWVrpXEFuTlx1zKC487Rh0aJxfkLtAKDq/fyIAbFHz9ZZ86ufmxLvz16ZYCMAgOSk0+m44qmJUVJekTE/abcusVuP7D8rAQAAAAAAAAAAAEBdYQEWAABkcO5X+0TzoryM2QPvz415Kzcm3AhoiCoq0nHb6zPjG3e/F4vWFFc626NN43j83OHxreE9IpVKJdQQAKpHfm5O3HbqrrFDi6KMeXlFOn744NhYvGZTws0AAKrfsx8vjpEzVmTMWjbOj58dvmPCjQAAAAAAAAAAAACgeliABQAAGbRonB8/3L9Pxqy0PB1/fHlawo2Ahmb5us3xrXtHxx9emhblFelKZ48b2imevWBEDO7cIqF2AFD92jYtjDtPGxYFeZnfxl6xviTOvn9sbC4rT7gZAED1WVdcGlc/Ozlr/vPDB0TrJgUJNgIAAAAAAAAAAACA6mMBFgAAZPGt4T2iU4uijNnT4xfFxIVrEm4ENBTvzFwRh980MkbOWFHpXFF+Tvz+xJ3jxm8MjaaFeQm1A4DkDOnaMq45dnDWfPz81XHlU5MSbAQAUL2uf3l6LFu3OWO2W/dW8fVhXRNuBAAAAAAAAAAAAADVxwIsAADIoig/N358cL+s+e9emJpgG6AhKCuviOtfnhan/eX9WLE+88Ou/6Nfh6bx9Hn7xEm7dY1UKpVQQwBI3klf6Rqn7dkta/7wB/PjwffnJdgIAKB6TFy4Jv7x7pyMWW5OKq45fnDk5HgPAAAAAAAAAAAAAID6wwIsAACoxNd27RL9OzTLmL09c0WMnLE84UZAfbV4zab45p/fj1v+PTPS6cpnT9m9azz1w32iX5b/fAKA+uaKowbFsO6tsuZXPj0xxsz9NMFGAABVq7wiHb94YkJUZHlP4Mx9esaAjs2TLQUAAAAAAAAAAAAA1cwCLAAAqERuTiouPbx/1vx3L0yNimxPpQF8Sa9NWRpH3DQyRs9ZVelck4LcuOnkofHbr+0cjQpyE2oHADWvIC8n7jh112jfrDBjXlqejnMfGBPL1hUn3AwAoGo8OHpejF+wJmPWqUVRXHhg34QbAQAAAAAAAAAAAED1swALAAC2YP/+7WP3nq0zZpMWrY1nPl6UcCOgvigpq4hrnp0cZ/79w/h0Y2mls4M7N4/nLhgRxw7tnFA7AKhd2jcvijtO2zXyc1MZ86VrN8cPHxgbJWUVCTcDANg+y9dtjt+/ODVrfsXRg6JJYV6CjQAAAAAAAAAAAAAgGRZgAQDAFqRSqfjZ4QOy5n98eVpsLitPsBFQH8xbuTG+fueouOftT7Y4++3hPeJf5wyPHm2bJNAMAGqvYd1bxxVHD8qafzDn07jmuckJNgIA2H6/eX5KrCsuy5gdMKB9HDqoQ8KNAAAAAAAAAAAAACAZFmABAMCXsGu3VnHYoI4Zs/mrNsWD789LuBFQlz338eI48uaRMX7BmkrnWjTKj7tOHxa/OmZQFOblJtQOAGq30/boFift1iVr/o9358ZjYxYk2AgAYNuNmrUinhi3MGNWlJ8TVx0zKFKpVMKtAAAAAAAAAAAAACAZFmABAMCXdPFh/SM3J/PDZrf8e2asKy5NuBFQ1xSXlscvnpgQP3xwbKzbXFbp7K7dWsbzF46IQ7Ms3wOAhiqVSsWvjx0cQ7q0yDpz2RMTYsIWFk0CANS0krKK+OWTE7Pm5x/QN7q2bpxgIwAAAAAAAAAAAABIlgVYAADwJfVu1zS+8ZWuGbNVG0ri7rdmJ9wIqEtmLlsfx932Tjzw/rwtzp6zX+/451l7ReeWjRJoBgB1T1F+btxx2rBo06QgY15SVhFn3fdhrFy/OeFmAABf3p9Hzo5ZyzdkzPq0bxrfH9Er4UYAAAAAAAAAAAAAkCwLsAAAYCv86MC+0Sg/N2N2z8hPYtna4oQbAXXBv8YsiGNufTumLllX6VybJgXx9+/uHpceNiDyc/3KDgCV6dSyUdz6zV0jNyeVMV+0pjjOe3BclJVXJNwMAGDL5q3cGDe/NiNrfvWxg6Mgz3sDAAAAAAAAAAAAANRvTswCAMBWaN+8KL43omfGbFNpedxUyUNrQMOzYXNZXPTIR/GTR8fHxpLySmeH924TL1w4Ir7ar11C7QCg7turd5u47Igds+bvzl4Zv3thaoKNAAC2LJ1Ox5VPT4zNZZkXdX5tl86xV+82CbcCAAAAAAAAAAAAgORZgAUAAFvpB/v2ilaN8zNmD38wP2YtX59wI6A2mrJ4bRx969vx+NiFlc7lpCIuOrhf3HfmHtG+eVFC7QCg/vju3j3iuKGdsub3vP1JPPVR5f99DACQpJcmLYnXpy3PmDUvyovLjsy+4BMAAAAAAAAAAAAA6hMLsAAAYCs1K8qP8w/omzErr0jHH1+alnAjoDZJp9Nx/3tz49jb3onZyzdUOtuheWE8+P0944ID+0ZuTiqhhgBQv6RSqfjt13aOgTs0zzpz6b8+jsmL1ibYCgAgsw2by+KqZyZnzS85bEC0bVqYYCMAAAAAAAAAAAAAqDkWYAEAwDY4dc9u0aVVo4zZCxOXxNh5nybcCKgN1haXxnkPjovLn5wYJWUVlc7u379dPH/BiNizV5uE2gFA/dWoIDfuOn1YtGycnzEvLq2Is+7/MFZvLEm4GQDA5/3p1emxeE1xxmxo15bxzd27JdwIAAAAAAAAAAAAAGqOBVgAALANCvNy4+JD+2fNf/fC1Ein0wk2Amra+Pmr48ibR8ZzExZXOpeXk4pfHLFj/OVbX4k2TQsTagcA9V/X1o3jllN2iZxU5nz+qk1xwcMfRXmFn9MBgJoxZfHa+Os7czJmOamIa44bHDnZfpgBAAAAAAAAAAAAgHrIAiwAANhGR+/cKQbu0DxjNvqTVfH6tGUJNwJqQjqdjntGzo4T7xwV81dtqnS2S6tG8ejZe8X39+3lgVYAqAYj+raLiw8dkDV/a/ryuOGVaQk2AgD4j4qKdFz+5MSsyzi/NbxHDO7cIuFWAAAAAAAAAAAAAFCzLMACAIBtlJOTip8dnv3h+utemJb1gTagfvh0Q0l87+8fxjXPTYnS8sr///3wwR3juQtGxC7dWiXUDgAaprO/2iuO2Klj1vy212fFixMXJ9gIACDikQ/nx5i5n2bMOjQvjIsO7pdwIwAAAAAAAAAAAACoeRZgAQDAdti3X7vYp0/bjNm0peviiXELE24EJGX0J6viiJtHxmtTl1U6V5CXE1cfOyhuP3XXaNEoP6F2ANBwpVKp+MOJQ6Jfh6ZZZ37yyPiYsXRdgq0AgIZs1YaS+N2LU7PmvzxqYDQr8p4BAAAAAAAAAAAAAA2PBVgAALCdLj1sQNbshpenRXFpeYJtgOpWXpGOW16bESff/W4sXlNc6Wyvtk3iiXOHx+l79YhUKpVQQwCgSWFe3HX6btGsKC9jvqGkPM66b0ysLS5NuBkA0BD99vkpsXpj5p87RvRtG0futEPCjQAAAAAAAAAAAACgdrAACwAAttNOXVrE0UM6ZcwWrSmOf7w7J9lCQLVZtq44zvjr+3H9K9OjIl357PG7dI5nzt8nBnVqkUw5AOBzerZtEjedPDSy7aCcvWJDXPTPj6JiS/+lDgCwHT6YsyoeHbMgY1aQlxNXHzvY0mwAAAAAAAAAAAAAGiwLsAAAoApcfEj/yM/N/KDaba/PijUbSxNuBFS1kTOWxxE3jYx3Zq6sdK5Rfm784cSd44aThkSTwryE2gEAmRwwoEP86MB+WfNXpyyLW/49M8FGAEBDUlpeEZc/MTFr/sP9+kSPtk0SbAQAAAAAAAAAAAAAtYsFWAAAUAW6tWkcp+7RPWO2ZlNp3PHmrIQbAVWlrLwi/vDS1Djjr6NjxfqSSmf7d2gWz5y/d3x9t66RSmVeigcAJOv8A/rEQTt2yJrf+Or0eG3K0gQbAQANxV/f/iSmLV2XMevZtkmcvV+vhBsBAAAAAAAAAAAAQO1iARYAAFSR8w7oE00KcjNm977zSSxavSnhRsD2WrR6U5x893tx2+uzIp2ufPabe3SLp87bO/q0b5ZMOQDgS8nJScUN3xgSvdo2yTrzo39+FJ+s2JBgKwCgvlvw6cb406szsuZXHzs4CvMyv5cIAAAAAAAAAAAAAA2FBVgAAFBF2jYtjB/s2ztjtrmsIv706vSEGwHb49XJS+OIm0fGh3M/rXSuaWFe3HLKLvGb43eKonwPrgJAbdS8KD/uPmNY1oW164rL4gf/+DDWby5LuBkAUF9d9czk2FRanjE7ekin2Kdv24QbAQAAAAAAAAAAAEDtYwEWAABUoe+N6BltmxZmzB4bsyCmL12XcCNga5WUVcSvn5kc3/vHh7F6Y2mlszt1bhHPXbBPHD2kU0LtAIBt1ad9s7j+pCFZ8xnL1sclj42PdDqdYCsAoD56dfLSeGXy0oxZs8K8+OWROybcCAAAAAAAAAAAAABqJwuwAACgCjUpzIsLD+qbMatIR/z+xakJNwK2xtyVG+LEO0fFX9/5ZIuz3927Zzx2zl7RvU2TBJoBAFXhsME7xA/37501f37CkrjzzdkJNgIA6puNJWVx5dOTsuY/OaRftG9elGAjAAAAAAAAAAAAAKi9LMACAIAqdvJXukbPtpkX4rw6ZVmM/mRVwo2AL+OZ8YviyJvfjo8XrKl0rkWj/PjzGbvFFUcPjMK83ITaAQBV5aKD+8e+/dplzf/w0tR4a/ryBBsBAPXJLf+eGQtXb8qY7dS5RZy+V49kCwEAAAAAAAAAAABALWYBFgAAVLH83Jy4+ND+WfPfvTAl0ul0go2AyhSXlsfPH58Q5z80LtZvLqt0drfureL5C0fEwQM7JNQOAKhquTmpuPnkodGtdeOMeUU64vyHxsX8VRsTbgYA1HUzlq6LP781O2OWSkVce/zgyM1JJdwKAAAAAAAAAAAAAGqvvJouAJnMmjUrRo8eHQsWLIiSkpJo1apVDBgwIIYPHx5FRUU1XQ8AYIsOH9wxhnRtGePnr/5CNnbe6nh58tI4dFDH5IsBnzNz2bo478FxMXXJukrnUqmIc/frHT8+qF/k5dolDQB1XcvGBXHX6cPia7ePik2l5V/I12wqjR/cNyYeP2d4NCrIrYGGAEBdk06n4xdPToyyisyL70/bo3vs3KVlsqUAgDrFeSkAAAAAAAAAABoiC7DqsIULF8bo0aPj/fffj9GjR8eHH34Y69b970Pb3bt3jzlz5lTb/SdMmBDDhg2L0tLSz3393nvvjW9/+9vbdM0nn3wyrr766hg7dmzGvGnTpvHtb387rrzyymjbtu023QMAIAmpVCp+dtiAOOXP72XMf//i1DhwQHuLdKCGpNPpeGzMgrjiqUkZl178X22bFsSN3xgaI/q2S6gdAJCEHXdoHteduHNc8NC4jPmUxWvjZ49/HH/6xtBIpVIJtwMA6pp/jV0Yoz9ZlTFr27Qwfnpo/4QbAUD95LyU81IAAAAAAAAAANQvFmDVMe+8805cf/318f7778eiRYtqrEd5eXmceeaZXzjMta02b94cZ555ZjzwwAOVzq1fvz5uvfXW+Oc//xmPPfZY7LvvvlVyfwCA6rBX7zaxX/928ca05V/IZi3fEI+OWRCn7N6tBppBw7Z+c1n88smJ8cS4hVuc3btPm7jxG0OjfTOfrA4A9dExQzrFhAWr488jP8mYP/XRoti5S8s4c5+eCTcDAOqS1RtL4jfPT8maX37kjtGiUX6CjQCgfnFeynkpAAAAAAAAAADqr5yaLsDW+eCDD+KJJ56o0cNcERE33nhjfPDBB1VyrYqKivjGN77xhcNcubm50bNnzxg6dGi0aNHic9ny5cvj8MMPj3fffbdKOgAAVJdLDxsQqVTm7MZXpsemkvJkC0EDN2nRmjjmlre3uPwqJxXx00P6xT++u4flVwBQz1162IAY3rtN1vw3z0+Jd2etTLARAFDXXPfitFi1oSRjNrx3mzh2aKeEGwFA/eK81H84LwUAAAAAAAAAQH1kAVY90rRp00TuM2vWrLjiiis+e92kSZPtut4f/vCHeOqppz73tbPPPjvmzZsXs2fPjnHjxsWqVavi8ccfj27dun02s3HjxjjppJNizZo123V/AIDqtOMOzeP4XTpnzJat2xx/feeThBtBw5ROp+O+d+fE8bePitkrNlQ627F5UTz8g73ivAP6Rm5Olg12AEC9kZebE7ecskt0btkoY15ekY7zHhwbi1ZvSrgZAFAXjJ33aTw0el7GLD83Fb8+dnCksm3IBwC2m/NSAAAAAAAAAABQt1mAVUc1a9Ys9ttvv7j44ovj0UcfjTlz5sQzzzxT7fdNp9Px/e9/PzZt+s/DXkcffXTstttu23y9lStXxrXXXvu5r/32t7+NO+64Izp1+t9PQs7JyYnjjz8+Ro0aFT169Pjs6wsWLIgbbrhhm+8PAJCEiw7uFwW5mX/0vvONWbFqQ0nCjaBhWbOpNM59YGz88qlJUVJWUensgQPax/MXjojde7ZOqB0AUBu0aVoYd542LAryMv/cvnJDSZx9/5goLi1PuBkAUJuVlVfEL56YmDU/+6u9o0/7ZJZyAEBD4LzUfzgvBQAAAAAAAABAfWIBVh1z9NFHx6RJk2L16tXx+uuvx+9///s48cQTo3v37onc/89//nO8/vrrEfGfT1C87bbbtut6v//972PdunWfvd53333j0ksvzTrfuXPnuOeeez73tRtvvDFWrly5XT0AAKpTl1aN41vDM/+8tm5zWdz2+syEG0HDMW7ep3HkzSPjhYlLKp3Lz03F5UfuGPd8a7do3aQgoXYAQG2yU5cW8Zvjd8qaf7xgTfzyyYmRTqcTbAUA1GZ/f3duTFm8NmPWrXXj+OH+fRJuBAD1k/NSzksBAAAAAAAAAFB/WYBVx/Tu3TsGDhwYOTnJ/59u4cKFcckll3z2+tprr42uXbtu8/UqKiri3nvv/dzXfvWrX0Uqlar0+w488MAYMWLEZ6/XrVsXjzzyyDb3AABIwrn79YlmRXkZs/venRvzV21MuBHUbxUV6fjzW7Pj63e+Gws+3VTpbNfWjeLRs4fH90b02uLvIwBA/XbisC5xxl7ZH559dMyCuP/9eQk2AgBqq8VrNsUNL0/Lml917KAoys9NsBEA1F/OSzkvBQAAAAAAAABA/WUBFl/aueeeG2vWrImIiN133z3OO++87breqFGjYvny5Z+97tWrV+y3335f6nvPPPPMz71+8sknt6sLAEB1a9WkIM7Zr3fGrKS8Im54ZXrCjaD+WrWhJM78+wdx7fNToqwiXenskTvtEM9dMCKGdm2ZTDkAoNa7/MiB8ZUerbLmv35mUnw4Z1WCjQCA2ujqZyfHhpLyjNnhgzvG/v3bJ9wIAKgOzksBAAAAAAAAAED1sgCLL+Xhhx+Op59+OiIi8vLy4s9//vN2f6ric88997nXBx988BY/zfD/zv5fb7zxRmzYsGG7+gAAVLfv7t0zOjYvypg9+dHCmLRoTcKNoP55b/bKOPymt+L1acsrnSvIy4lrjx8ct35zl2helJ9QOwCgLijIy4nbTt01OjQvzJiXlqfjnAfGxtK1xQk3AwBqizemLYvnJyzJmDUpyI0rjh6YcCMAoDo4LwUAAAAAAAAAANXPAiy2aOXKlXHBBRd89vonP/lJ7Lzzztt93Y8++uhzr4cPH/6lv7dTp07Ro0ePz16XlJTE5MmTt7sTAEB1KsrPjR8f3Ddjlk5H/P7FaQk3gvqjvCIdN782I7755/di6drNlc72atcknvrh3nHqHt2/9EMlAEDD0r5ZUdxx2rDIz838s8LydZvj3AfGRklZRcLNAICaVlxaHlc8NSlr/uOD+8UOLRol2AgAqA7OSwEAAAAAAAAAQDIswGKLLrzwwli+fHlERPTu3TuuvPLKKrnulClTPvd64MCt+yTk/57/7+sBANRGJ+zaJfq0b5oxe3P68hg1c0XCjaDuW7a2OE7/y/txwyvToyJd+ewJu3aJZ87bJ3bcoXky5QCAOmvXbq3iqmMGZ83HzP00fv1s9uUXAED9dPvrM2Peqo0Zsx13aB7fHt4j2UIAQLVwXgoAAAAAAAAAAJJhARaVev755+OBBx747PWdd94ZjRpt/ycWb9q0KebNm/e5r3Xt2nWrrvHf89OmTdvuXgAA1S0vNycuObR/1vy3L0yNii1t8AE+8+b05XH4TSNj1KyVlc41LsiN678+JK4/aUg0KcxLqB0AUNd9c49ucfJXsr9vef978+KRD+Yn2AgAqEmzl6+PO9+cnTW/5rjBkZfrT/AAUNc5LwUAAAAAAAAAAMlx+pas1q1bF2efffZnr08//fQ46KCDquTaK1asiHT6fxc75OfnR/v27bfqGp07d/7c62XLllVJNwCA6nbwwA6xW/dWGbMJC9fE8xMXJ9wI6p7S8oq47sWp8a2/jo6VG0oqnR3QsVk8fd4+ccKwLgm1AwDqk6uOHRRDu7bMml/+5MQYP391Yn0AgJqRTqfjl09NjJLyioz5Kbt3jWFZ3vMDAOoO56UAAAAAAAAAACBZeTVdgNrr0ksvjfnz50dERNu2beOGG26osmuvX7/+c68bN24cqVRqq67RpEmTSq+5rZYtWxbLly/fqu+ZOXNmldwbAGgYUqlU/OzwAXHine9mzP/w0rQ4ZGDHKMizrxYyWbh6U5z/4NgYO2/1FmdP3aNb/PKogVGUn1v9xQCAeqkwLzfuOG3XOPqWt2PF+i8u3iwpr4iz7x8Tz5y/T7RtWlgDDQGAJDw9flG8M3Nlxqx1k4K49LABCTcCAKqD81JfnvNSAAAAAAAAAABUBQuwyGjkyJFx5513fvb6+uuvj7Zt21bZ9f/78FVRUdFWX6NRo0aVXnNb3X777XHVVVdVybUAALLZrUfrOHhgh3hl8tIvZHNXboyHP5gXZ+zVI/liUMu9PGlJXPzYx7FmU2mlc80K8+J3J+wcR+68Q0LNAID6bIcWjeK2b+4ap97zfpRVpL+QL15THD98YGzc/709Ij/XIlsAqG/WbCqNq5+dkjX/+eEDomXjggQbAQDVwXkp56UAAAAAAAAAAEieJ3H4guLi4jjzzDMjnf7Pg1wHHXRQnHHGGVV+j/+roGDrD4QXFhZ+7vWmTZu2qxMAQNIuPax/5GT5UOebX5sR6zeXJVsIarHNZeXxq6cnxQ/uG7PF5VdDurSI5y4YYfkVAFCl9ujVJi4/cses+fufrIrfPj81wUYAQFKuf3larFi/OWO2e4/WceKwLgk3AgCqmvNSAAAAAAAAAABQMyzA4guuvPLKmDFjRkT851MD/+8nG1aV//4Ew5KSkq2+xubNnz9kvi2figgAUJP6tG8WJ+3WNWO2Yn1J3DNydsKNoHaas2JDnHDHqPjbqDlbnP3ePj3j0bOHR7c2jau/GADQ4HxreI/42i6ds+Z/feeTeGLcggQbAQDV7eMFq+O+9+ZmzPJyUnHN8YMjlcqy5R4AqDOclwIAAAAAAAAAgJqRV9MFqF3Gjh0b119//Wevr7jiiujdu3eV36dp06afe/3fn3D4Zfz3Jxj+9zW31bnnnhtf//rXt+p7Zs6cGccdd1yV3B8AaFh+dFC/eGLcwthcVvGF7O63Zsepe3SPds0KM3wnNAxPj18Ulz0+IdZvLqt0rmXj/Lj+60PiwB07JNQMAGiIUqlU/OZrO8W0peti0qK1GWd+/viE6NehWQzq1CLhdgBAVSuvSMcvnpgY6XTm/HsjekW/Ds2SLQUAVDnnpZyXAgAAAAAAAACg5liAxWfKysriu9/9bpSXl0dExM477xw//elPq+Ve/334auPGjZFOp7fq05E3bNhQ6TW3Vfv27aN9+/ZVci0AgC3p2KIovrtPz7jjjVlfyDaWlMct/54Rvz52cA00g5q1qaQ8rnpmUjz8wfwtzu7eo3XcdMrQ2KFFowSaAQANXVF+btx1+rA4+pa349ONpV/Ii0sr4qz7xsQz5+0TrZoU1EBDAKCqPPD+3JiwcE3GrHPLRnHBgX0SbgQAVDXnpf7DeSkAAAAAAAAAAGpKTk0XoPa4//77Y/z48RERkZOTE3fffXfk5VXPjrS2bdt+7vBWaWlpLFu2bKuusXDhws+9dggLAKirzv5q72jZOD9j9uD782LOig0ZM6ivZixdF8fe9vYWl1+lUhHnH9AnHvz+HpZfAQCJ6tKqcdxyyq6Rk+X51AWfbooLHh4X5RXpZIsBAFVm2dri+MOL07LmvzpmUDQu8HlTAFDXOS8FAAAAAAAAAAA1ywIsPrN69erP/ueKiorYc889I5VKbfGfN99883PX+c53vvO5/LjjjvvCvRo1ahTdunX73NfmzZu3VX3/e37AgAFb9f0AALVFi0b5cd7+fTJmZRXp+MPL2R+0g/oknU7HIx/Mj6NvfTumL11f6WzbpoVx/5l7xE8O6R95uX61BQCSt0/ftvGzw7O/Jzlyxor4w0t+lgeAuuqa56bEus1lGbODduwQBw/skHAjAKA6OC8FAAAAAAAAAAA1y1PC1Jj/PoA1efLkrfr+KVOmVHo9AIC65LQ9u0fnlo0yZs99vDjGz1+dbCFI2PrNZfGjf34Ul/zr4ygurah0dkTftvHChSNi7z5tE2oHAJDZ90f0iqN23iFrfuebs+K5jxcn2AgAqApvz1gRT49flDFrlJ8bvzpmYMKNAID6wnkpAAAAAAAAAAD4PAuwqDFDhw793OtRo0Z96e9dvHhxzJkz57PX+fn5MXCgg+YAQN1VlJ8bPzmkX9b8dy9MjXQ6nWAjSM7EhWvi6Fvejqc+yvxg6f/IzUnFxYf2j79/Z/do16wwoXYAANmlUqn4/Yk7R/8OzbLOXPzY+Ji2ZF2CrQCA7bG5rDyueGpi1vyCA/tGl1aNE2wEANQnzksBAAAAAAAAAMDn5dV0AWqPE044IQYPHrzV3/eTn/wkPv74489eX3zxxXHIIYd89rp9+/YZv++oo46K66677rPXr776aqTT6UilUlu858svv/y51/vvv380bdp0a6sDANQqxw7tHHe/NTumZng4/t3ZK+PN6ctjv/6Zf7aCuiidTsc/3p0b1z43JUrKKyqd7dSiKG4+ZZfYrUfrhNoBAHw5jQvy4q7Th8Uxt74da4vLvpBvLCmPs+77MJ46b59o0Si/BhoCAFvjrjdnx+wVGzJm/To0je+N6JlwIwCgOjkvBQAAAAAAAAAANcsCLD7TtWvX6Nq161Z/X6tWrT73euDAgXHQQQdt8fuGDx8ebdu2jRUrVkRExOzZs+ONN96I/ffff4vf+5e//OVzr4899titaAwAUDvl5qTi0sMHxHfu/SBj/rsXpsa+fdtFTs6WD8BDbbdmY2lc8q/x8dKkpVucPWjH9vGHE4dEqyYFCTQDANh6Pdo2iZtO2SW++7cPIp3+Yj5n5cb40cPj4i/f+oqf5wGgFpu7ckPc+vrMrPk1x+0U+bk5CTYCAKqb81IAAAAAAAAAAFCznM6lxuTk5MS3v/3tz33tqquuinSmJ8T+j9deey1Gjhz52etmzZrFSSedVB0VAQASt1+/drFXrzYZs6lL1sVT4xcm3Aiq3th5n8YRN4/c4vKr/NxU/PKogfHnM3az/AoAqPX2798+fnJwv6z569OWx59em5FgIwBga6TT6bjiqUlRUlaRMT9xWJfYvWfrhFsBAPWN81IAAAAAAAAAAPB5FmBRoy699NJo2rTpZ6/ffPPNuO6667LOL1y4ML73ve997msXXnhhtG3btto6AgAkKZVKxc8OH5A1/+NL02NzWXmCjaDqVFSk4843Z8VJd74bC1dvqnS2W+vG8a9zhseZ+/SMVCqVUEMAgO1z7n594pCBHbLmN782I16ZXPkSUACgZjw/YUm8OX15xqxFo/z4eSXv2QEAbA3npQAAAAAAAAAA4H/l1XQBtt4777wTmzZ98WHx8ePHf+51cXFxvPrqqxmv0alTpxg4cGC19Nsabdu2jcsuuywuu+yyz77285//PObNmxeXX355dOrUKSIiKioq4umnn44LL7ww5s2b99lsp06d4ic/+UnivQEAqtOQri3jyJ12iOcmLP5CtnD1prjv3bnxvRG9aqAZbLuV6zfHRY+Mz/og6f915M47xG+/tlM0L8pPoBkAQNXJyUnF9ScNieNueydmLd+QcebH//wonjpv7+jdrmnGHABI3rri0vj1s5Oy5j87fEC0aVqYYCMA4L85L+W8FAAAAAAAAAAA9ZMFWHXQqaeeGnPnzt3i3NKlS+Pggw/OmH3rW9+Kv/3tb1XcbNtceumlMWrUqHj22Wc/+9odd9wRd999d3Tv3j1atGgRn3zySaxevfpz39eoUaN45JFHomXLlskWBgBIwE8P7R8vTVoSZRXpL2S3vj4zTvpKV8uBqDPenbUyLnx4XCxbt7nSucK8nLjy6EFxyu5dI5VKJdQOAKBqNSvKj7tO3y2Ou+2dWL+57Av5+s1lcdZ9Y+LJH+4dTQu9RQ8AtcGNr8yIpWszv2+xa7eW8Y3duibcCAD4b85L/YfzUgAAAAAAAAAA1Dc5NV0AcnJy4tFHH42TTz75c18vLy+P2bNnx7hx475wmKtNmzbx/PPPx957751gUwCA5PRs2yRO2b1bxmz1xtK4681ZCTeCrVdekY4/vTo9Tr3nvS0uv+rdrkk8dd7e8c09ull+BQDUeX3aN40bThqSNZ+5bH385JGPoiLDwlsAIFmTFq2Jv436JGOWm5OKa47bKXJyvFcBAFQt56UAAAAAAAAAAOA/LMCiVigqKoqHHnooHnvssRg6dGjWuSZNmsS5554bkydPjv322y+xfgAANeH8A/tE44LcjNlf3v4klqwpTrgRfHlL1xbHqfe8F396dUZsaa/D14d1iWfO3ycGdGyeTDkAgAQcMqhjnH9An6z5S5OWxh0W2wJAjaqoSMflT07M+t7Fd4b3iIGdvF8BAFQP56UAAAAAAAAAACAir6YLsPXmzJlT0xU+54033qiya51wwglxwgknxMyZM+P999+PhQsXRklJSbRs2TJ23HHH2HvvvaOoqKjK7gcAUJu1b1YU3xvRK25+bcYXsuLSirjptenx26/tXAPNoHJvTFsWFz0yPlZtKKl0rnFBblx7/OA4fpcuCTUDAEjWjw7qFxMXronXpy3PmP/x5WkxqFPz2K9/+4SbAQAREQ9/MD/GzVudMevYvCh+dHC/ZAsBAFk5L+W8FAAAAAAAAAAA9ZMFWNRKffr0iT59+tR0DQCAGveDfXvFA+/NjZUZFgn984P5ceY+vaJP+6Y10Ay+qLS8Iv748rS4683ZW5zdcYfmces3d4ne7fz7FwCov3JzUvGnb+wSx9z2dsxdufELeTodccFD4+KZ8/eJ7m2a1EBDAGi4VqzfHL97YUrW/MqjB0bTQn9OBwCS47wUAAAAAAAAAAANUU5NFwAAALJrWpgXFxzYN2NWkY74w0tTE24Emc1ftTFOuuvdL7X86vQ9u8cT5w63/AoAaBBaNM6Pu0/fLRoX5GbM1xaXxVn3jYmNJWUJNwOAhu03z0+JtcWZ//t3v/7t4rDBHRNuBAAAAAAAAAAAAAANjwVYAABQy52ye7fo1rpxxuylSUtjzNxVCTeCz3tx4pI48uaRMW7e6krnmhXlxR2n7hpXHzc4ivIzL4AAAKiP+ndsFr8/cees+dQl6+LSf02IdDqdYCsAaLjem70yHh+7MGNWmJcTvz5mcKRSqYRbAQAAAAAAAAAAAEDDYwEWAADUcgV5OfHTQ/tnzX/3wlQPylMjikvL48qnJsbZ94+JtcVllc4O6doynr9gRBy+0w4JtQMAqF2O2rlTnLVvr6z5M+MXxT0jP0mwEQA0TCVlFXH5kxOz5uft3ye6tcm8jB4AAAAAAAAAAAAAqFoWYAEAQB1w1E47xE6dW2TMPpjzabw2ZVnCjWjoPlmxIU64Y1T8/d25W5z9wb694tGz9oqurT08CgA0bBcf2j/26dM2a/7bF6bEqJkrEmwEAA3PPW/PjpnL1mfMerVrEj/4avaFlQAAAAAAAAAAAABA1bIACwAA6oCcnFT87PABWfPrXpwaZeUVCTaiIXvqo4Vx1M0jY9KitZXOtWqcH/d++ytx2RE7RkGeXz8BAPJyc+KWU3aJzi0bZcwr0hHnPTQuFny6MeFmANAwzF+1MW5+bUbW/JpjB0dhXm6CjQAAAAAAAAAAAACgYfMEMgAA1BF792kbI/q2zZjNWLY+Hh+7MOFGNDQbS8riksfGx4UPfxQbSsornd29Z+t44cJ9Y/8B7RNqBwBQN7RqUhB3nT4sCrMsCF21oSTOvn9MFJdW/vMWALB10ul0/OrpSVFcmnmJ/HFDO8XwPpnfewMAAAAAAAAAAAAAqocFWAAAUIf87PABWbMbXpnuIXmqzbQl6+LYW9+JRz5cUOlcKhVxwYF948Hv7REdWxQl1A4AoG4Z3LlF/PZrO2XNJy5cG5c9MSHS6XSCrQCgfnt58tJ4beqyjFmzorz4xZEDE24EAAAAAAAAAAAAAFiABQAAdcigTi3iuKGdMmZL1hbHve/MSbYQ9V46nY6HR8+LY259O2YsW1/pbLtmhfHAmXvERQf3i7xcv24CAFTma7t2iW8P75E1f3zswvjHu3OTKwQA9diGzWVx1dOTsuaXHNo/2jUrTLARAAAAAAAAAAAAABBhARYAANQ5PzmkfxRkWS50+xszY/XGkoQbUV+tKy6NCx7+KH72+ITYXFZR6eyIvm3jhQtHxPA+bRNqBwBQ9/3iyB1j956ts+ZXPzs5Rn+yKsFGAFA/3fzajFi0pjhjtnOXFvHNPbon3AgAAAAAAAAAAAAAiLAACwAA6pyurRvHaXtmfihvXXFZ3P7GrIQbUR9NWLAmjrrl7Xhm/KJK53JzUnHpYQPi79/ZPdo2LUyoHQBA/ZCfmxO3fXPX6Ni8KGNeVpGOcx8YG0uyLOwAALZs2pJ18Ze3P8mY5aQirj1up8jNSSXcCgAAAAAAAAAAAACIsAALAADqpPMO6BNNC/MyZn8bNScWrt6UcCPqi3Q6Hfe+80l87Y53Yu7KjZXOdm7ZKB45a884Z7/ekeNBUQCAbdKuWWHcefqwKMjN/Hb9ivWb4+z7x8TmsvKEmwFA3VdRkY7Ln5wQZRXpjPkZe/WInbq0SLgVAAAAAAAAAAAAAPA/LMACAIA6qHWTgjj7q70yZiVlFXHDy9MTbkR9sHpjSZx135i46pnJUVqe+cHQ/3HwwA7x3AX7xLDurRNqBwBQfw3t2jKuPm5Q1vyj+avjV09PTrARANQPj41dEB/M+TRj1q5ZYVx0SL+EGwEAAAAAAAAAAAAA/5cFWAAAUEd9d5+e0b5ZYcbs8XELYuqStQk3oi4bM3dVHHnz2/Hy5KWVzhXk5sSvjh4Yd58+LFo2LkioHQBA/feNr3SLb+7RLWv+0Oh58dDoeQk2AoC67dMNJfHb56dkzX951MBoXpSfYCMAAAAAAAAAAAAA4L9ZgAUAAHVU44K8+NFB/TJm6XTE71+clnAj6qKKinTc/sbMOOmu92Lh6k2VznZv0zj+dc7w+PbePSOVSiXUEACg4bjy6IGxS7eW2fOnJsW4eZ8mVwgA6rDfvTA1Pt1YmjHbp0/bOHrnHRJuBAAAAAAAAAAAAAD8NwuwAACgDjtpty7Rq22TjNm/py6L92avTLgRdcmK9ZvjW/eOjt+/OC3KK9KVzh49pFM8e/4+sVOXFgm1AwBoeArzcuPO04ZFu2aFGfOS8oo45/6xsXzd5oSbAUDd8uGcVfHPD+dnzApyc+LXxw6y3BsAAAAAAAAAAAAAagELsAAAoA7Ly82JSw7rnzX/7QtTI52ufLERDdOomSvi8JtGxsgZKyqdK8rPid99bae4+eSh0awoP6F2AAANV4fmRXH7qbtGXk7mpRxL1hbHDx8YG6XlFQk3A4C6obS8Ii5/cmLW/Oz9ekevdk0TbAQAAAAAAAAAAAAAZGMBFgAA1HGHDuoYu3RrmTEbP391vDhxSbKFqNXKyivihpenxal/eT+Wr9tc6Wzf9k3jqR/uEyfv3i1SqcwLGAAAqHpf6dE6rjx6YNZ89JxVce1zUxJsBAB1x9/emRNTl6zLmHVv0zjO3a93wo0AAAAAAAAAAAAAgGwswAIAgDoulUrFzw4bkDX/w0vTorS8IsFG1FZL1hTHN+95P27+98xIpyuf/cZuXePp8/aJ/h2bJVMOAIDPOW3P7nHisC5Z87+NmhP/GrMgwUYAUPstWr0pbnx1etb818cOjqL83AQbAQAAAAAAAAAAAACVsQALAADqgT16tYkDB7TPmM1esSH++cH8hBtR27w+dVkcftNbMfqTVZXONSnIjZtOHhrXnbhzNCrwQCgAQE1JpVJxzXGDY6fOLbLOXPbEhJi4cE2CrQCgdvv1M5NjY0l5xuzInXeIr/Zrl3AjAAAAAAAAAAAAAKAyFmABAEA9cclhAyInlTn706szYsPmsmQLUSuUlFXEb56fEt/52wfx6cbSSmcHdWoez14wIo4d2jmhdgAAVKYoPzfuPH1YtG5SkDHfXFYRZ903JlZtKEm4GQDUPv+eujRenLQkY9a0MC+uOGpgwo0AAAAAAAAAAAAAgC2xAAsAAOqJ/h2bxQm7dsmYrVi/Of769icJN6KmzV+1Mb5+17tx91uztzj77eE94vFzh0fPtk0SaAYAwJfVuWWjuPWbu0Rulm23C1dvivMfGhtl5RUJNwOA2mNTSXlc8dSkrPlFB/eLDs2LEmwEAAAAAAAAAAAAAHwZFmABAEA98uOD+0VBXuYf8+96a3asXL854UbUlBcmLI4jbh4Z4+evrnSueVFe3HnasPjVMYOiMC83mXIAAGyV4b3bxs8PH5A1f2fmyvj9S9MSbAQAtcutr8+IBZ9uypgN3KF5nLFX94QbAQAAAAAAAAAAAABfhgVYAABQj3Rq2Si+M7xHxmz95rK45d8zky1E4opLy+OXT06Mcx4YG+uKyyqd3aVby3jughFx2OCOCbUDAGBbnblPzzhmSKes+d1vzY5nxi9KsBEA1A4zl62Lu9+anTFLpSKuPX5w5OX6szgAAAAAAAAAAAAA1EZO+gIAQD1z7n59onlRXsbsgffnxryVGxNuRFJmL18fx98+Ku57b+4WZ8/6aq945Ky9omvrxgk0AwBge6VSqbjuhJ1jQMdmWWcueezjmLpkbYKtAKBmpdPpuPzJiVFans6Yf3P3brFLt1YJtwIAAAAAAAAAAAAAviwLsAAAoJ5p0Tg/frh/n4xZaXk6/vjytIQbkYTHxy6Io255O6YsrnzhQZsmBfG373wlfn74jpGf61dCAIC6pFFBbtx9+m7RolF+xnxTaXn84B9jYs3G0oSbAUDNePKjhfHe7FUZs7ZNC+KSQwck3AgAAAAAAAAAAAAA2BqedgYAgHroW8N7xA4tijJmT49fFBMXrkm4EdVlY0lZ/PTR8XHRI+NjY0l5pbN79modz184Ivbr3z6hdgAAVLVubRrHzafsEqlU5nzeqo1x4T/HRXlFOtliAJCwNRtL49rnpmTNLztix2jROPPSSAAAAAAAAAAAAACgdrAACwAA6qGi/Ny46OB+WfPrXpyaYBuqy9Qla+PoW96Ox8YsqHQuJxXxo4P6xgPf2zM6NM+8GA0AgLrjq/3axU8P6Z81f2Pa8rjxlekJNgKA5P3+pamxYn1JxmzPXq3j+F06J9wIAAAAAAAAAAAAANhaFmABAEA99bVdu0S/Dk0zZiNnrIiRM5Yn3Iiqkk6n48H358Wxt74Ts5ZvqHS2fbPCeOB7e8aPDuoXuTmphBoCAFDdzt2vdxw+uGPW/NbXZ8ZLk5Yk2AgAkvPR/NXx4Oh5GbP83FRcc9zgSKW8DwIAAAAAAAAAAAAAtZ0FWAAAUE/l5qTi0sMGZM1/98LUqKhIJ9iIqrC2uDTOe2hcXPbEhNhcVlHp7H7928ULF46IvXq3SagdAABJSaVS8YevD4m+7TMvvY2I+Mkj42PmsnUJtgKA6ldWXhG/eGJCpLO8rfX9Eb2iT/tmyZYCAAAAAAAAAAAAALaJBVgAAFCPHTCgfezeo3XGbNKitfHMx4sSbsT2+HjB6jjq5rfjuY8XVzqXl5OKnx8+IP76ra9Em6aFCbUDACBpTQvz4q7Th0WzwryM+frNZfGD+8bEuuLShJsBQPW57725MWnR2oxZl1aN4vwD+ibcCAAAAAAAAAAAAADYVhZgAQBAPZZKpeJnRwzImv/x5WlRUlaRYCO2RTqdjr+8/UmccMeomLdqY6WznVs2ikfO3ivO+mrvyMlJJdQQAICa0qtd07jxG0Oz5rOXb4iLHhkfFRXp5EoBQDVZurY4rn95etb818cOikYFuQk2AgAAAAAAAAAAAAC2hwVYAABQz+3arVUcNqhjxmz+qk3xwPtzE27E1vh0Q0l8/x9j4upnJ0dpeeVLCw4d1CGev2BE7NqtVULtAACoDQ4a2CEuPLBv1vyVyUvjttdnJtgIAKrH1c9OjvWbyzJmhw7qEAcM6JBwIwAAAAAAAAAAAABge1iABQAADcDFh/WP3JxUxuyWf8+MdcWlCTfiy/hgzqo44uaR8eqUpZXOFeTmxK+PHRR3njYsWjTOT6gdAAC1yYUH9o0DB7TPmt/w6vR4feqyBBsBQNV6a/ryePbjxRmzxgW5ceXRgxJuBAAAAAAAAAAAAABsLwuwAACgAejdrml84ytdM2arNpTEn9+anXAjKlNRkY7bXp8ZJ9/9XixeU1zpbI82jePxc4fHGXv1iFQq85IzAADqv5ycVNx48tDo2bZJxjydjrjg4XExZ8WGhJsBwPYrLi2PK56amDX/0UF9o1PLRgk2AgAAAAAAAAAAAACqggVYAADQQPzowL7RKD83Y/bnkZ/EsnWVL1oiGcvXbY5v3Ts6/vDStCivSFc6e9zQTvHsBSNicOcWCbUDAKA2a16UH3edPiwaF2T+uX9dcVn84L4PY8PmsoSbAcD2ueONWTFn5caMWf8OzeI7e/dMuBEAAAAAAAAAAAAAUBUswAIAgAaiffOiOHOfzA8Dbiotj5tenZFwI/7b2zNWxOE3jYyRM1ZUOleUnxO/P3HnuPEbQ6NpYV5C7QAAqAv6dWgW1399SNZ8+tL1ccm/Po50uvJlqwBQW3yyYkPc8casrPm1xw+O/Fx/9gYAAAAAAAAAAACAushJYAAAaEB+8NVe0apxfsbs4Q/mx+zl6xNuREREWXlF/PGlaXH6X9+PFes3Vzrbr0PTeOa8feKk3bpGKpVKqCEAAHXJ4TvtEOfs1ztr/tzHi+Put2Yn2AgAtk06nY4rnpoYJeUVGfNv7NY1duvROuFWAAAAAAAAAAAAAEBVsQALAAAakOZF+XH+AX0zZuUV6fjjy9MSbsTiNZvilD+/F7e+PjPS6cpnT9m9azz1w32ib4dmyZQDAKDO+ukh/WNE37ZZ8+tenBojZyxPsBEAbL1nP14cI2esyJi1apwfPzt8QMKNAAAAAAAAAAAAAICqZAEWAAA0MKfu2S26tGqUMXt+wpIYN+/ThBs1XK9NWRpH3DQyPphT+f/Omxbmxc2n7BK//drO0aggN6F2AADUZbk5qbjllF2ia+vMP/tXpCPOf2hczF+1MeFmAPDlrC0ujaufnZw1//nhO0arJgUJNgIAAAAAAAAAAAAAqpoFWAAA0MAU5uXGTw/pnzX/7QtTI51OJ9io4Skpq4hrnp0cZ/79w/h0Y2mls4M7N49nz98njhnSKaF2AADUFy0bF8Rdp+0WRfmZ/xSwemNpnHXfmNhUUp5wMwDYshtenh7L1m3OmO3WvVWcOKxLwo0AAAAAAAAAAAAAgKpmARYAADRAxwzpFAN3aJ4xG/3Jqnhj2vKEGzUc81ZujK/fOSruefuTLc5+Z+8e8a9zhkePtk0SaAYAQH00sFPzuO6EnbPmkxevjcuemGAJLgC1ysSFa+If787JmOXmpOKa4wdHTk4q2VIAAAAAAAAAAAAAQJWzAAsAABqgnJxU/OzwAVnz616cGuUVHoCvas99vDiOvHlkjF+wptK5Fo3y467Th8WVRw+KwrzchNoBAFBfHTu0c5y5T8+s+RPjFsbfRs1JrhAAVKK8Ih2/eGJCZHtr6sx9esaAjpkXuwMAAAAAAAAAAAAAdYsFWAAA0ECN6Ns29u7TJmM2dcm6eGLcwoQb1V/FpeXxiycmxA8fHBvrNpdVOjuse6t4/sIRceigjgm1AwCgIfj54QNiz16ts+bXPDcl3pu9MsFGAJDZg6PnZV0e3qlFUVx4YN+EGwEAAAAAAAAAAAAA1cUCLAAAaKBSqVT87LAds+Y3vDwtikvLE2xUP81ctj6Ou+2deOD9eVucPXe/3vHwD/aMzi0bJdAMAICGJC83J2795q7RqUVRxry8Ih3nPTg2Fq/ZlHAzAPhfy9dtjt+/ODVrfuUxg6JJYV6CjQAAAAAAAAAAAACA6mQBFgAANGA7dWkRRw/plDFbtKY47nt3bsKN6pfHxiyIo295O6YuWVfpXJsmBfH37+4elxw2IPJz/ZoGAED1aNu0MO48fVgU5GX+mXPF+pI4+/6xFuECUGN+8/yUWFdcljE7cED7OGRgh4QbAQAAAAAAAAAAAADVyZPVAADQwP30kH6Rl5PKmN36+sxYs7E04UZ134bNZXHRIx/FTx8dH5u2sDxgeO828cKFI+Kr/dol1A4AgIZs5y4t45rjBmfNx89fHVc+NSnS6XSCrQAgYtTMFfHEuIUZs6L8nPjVMYMilcr8HhYAAAAAAAAAAAAAUDdZgAUAAA1c9zZN4tQ9umXM1mwqjTvenJVwo7ptyuK1cfStb8fjYzM/sPk/clIRFx3cL+47c49o37wooXYAABBx0m5d4/Q9u2fN//nh/Hhw9LwEGwHQ0G0uK4/Ln5qYNT//gL7RtXXjBBsBAAAAAAAAAAAAAEmwAAsAAIjzD+wbTQpyM2b3vvNJLF6zKeFGdU86nY7735sbx972TsxevqHS2Q7NC+Oh7+8ZFxzYN3JzUgk1BACA//XLowbGbt1bZc1/9fSkGDP30wQbAdCQ/fmt2VnfT+nTvml8f0SvhBsBAAAAAAAAAAAAAEmwAAsAAIi2TQvjB/v2zphtLquIG1+ZnnCjumVtcWmc9+C4uPzJiVFSVlHp7P7928ULF+4be/Rqk1A7AAD4ooK8nLj91F2jfbPCjHlpeTrOuX9MLFtbnHAzABqaeSs3xi3/npk1v/rYwVGQ58/aAAAAAAAAAAAAAFAfOSkMAABERMT3RvSMtk0zP/z+2JgFMX3puoQb1Q3j56+OI28eGc9NWFzpXF5OKn5xxI7xl299JVo3KUioHQAAZNe+eVHccdqwyM9NZcyXrdsc5z4wdotLXgFgW6XT6bjy6YmxOct/13xt186xV29LxAEAAAAAAAAAAACgvrIACwAAiIiIJoV5ceFBfTNmFemI3784LeFGtVs6nY57Rs6OE+8cFfNXbap0tkurRvHo2XvF9/ftFTk5mZcLAABATRjWvVVcefSgrPmHcz+Nq5+dnGAjABqSlyYtidenLc+YtWiUH5cdsWPCjQAAAAAAAAAAAACAJFmABQAAfObkr3SNHm0aZ8xenbI0PpizKuFGtdOqDSVx5t8/jGuemxKl5elKZw8f3DGeu2BE7NKtVULtAABg65y6R7f4xm5ds+b3vTc3Hv1wfoKNAGgI1m8ui6ueyb5k8ZLD+kfbpoUJNgIAAAAAAAAAAAAAkmYBFgAA8Jn83Jy4+NABWfPfPj8l0unKFz7Vd6M/WRVH3DQy/j11WaVzBXk5cfWxg+L2U3eNFo3yE2oHAABbL5VKxVXHDoohXVpknfnFkxPj4wWrkysFQL33p1emx+I1xRmzoV1bxilf6ZZwIwAAAAAAAAAAAAAgaRZgAQAAn3PETh2zPvg+dt7qeHny0oQb1Q7lFem45bUZcfLd78aStZkfzvwfvdo2iSfOHR6n79UjUqlUQg0BAGDbFeXnxh2nDYs2TQoy5iVlFXH2fWNixfrNCTcDoD6asnht3DtqTsYsJxVxzXGDIyfHeyoAAAAAAAAAAAAAUN9ZgAUAAHxOKpWKnx2+Y9b89y9OjbLyigQb1bxl64rjjL++H9e/Mj0q0pXPfm2XzvHM+fvEoE6Zl4gBAEBt1allo7jt1F0jN8vCkUVriuO8B8c2uN8HAKhaFRXp+MUTE6I8y5ss3xreIwZ39r4KAAAAAAAAAAAAADQEFmABAABfsFfvNrFf/3YZs1nLN8SjYxYk3KjmjJyxPI64aWS8M3NlpXON8nPjj18fEjd8Y2g0KcxLqB0AAFStPXu1iV8ckX0h7nuzV8XvXpiaYCMA6ptHPpwfY+etzph1aF4YFx3cL9lCAAAAAAAAAAAAAECNsQALAADI6NLDBkQqlTm78ZXpsamkPNlCCSsrr4g/vDQ1zvjr6FixvqTS2f4dmsUz5+8dJw7rklA7AACoPt/Zu0ccv0vnrPk9b38ST320MMFGANQXqzaUxO9ezL5I8YqjBkWzovwEGwEAAAAAAAAAAAAANckCLAAAIKMdd2ie9aH3Zes2x1/f+SThRslZtHpTnHz3e3Hb67Mina589pt7dIunzts7+rRvlkw5AACoZqlUKn5z/E4xcIfmWWcu/dfHMXnR2gRbAVAf/Pb5KbF6Y2nGbN9+7eKInTom3AgAAAAAAAAAAAAAqEkWYAEAAFlddHC/KMjN/GvDnW/Mik83lCTcqPq9MnlpHHHzyPhw7qeVzjUrzItbv7lL/Ob4naIoPzehdgAAkIxGBblx1+nDomXj/Ix5cWlFnHX/h7F6Y/37nQCA6jH6k1Xx6JgFGbOCvJz49TGDIpVKJdwKAAAAAAAAAAAAAKhJFmABAABZdWnVOM7Yq3vGbN3msrj19ZkJN6o+m8vK46pnJsX3//FhrN5YWunsTp1bxLMX7BNH7dwpoXYAAJC8rq0bxy2n7BI5WXaRzF+1Kc5/aFyUV6STLQZAnVNaXhGXPzkha/7D/fpEj7ZNEmwEAAAAAAAAAAAAANQGFmABAACV+uH+faJZUV7G7L5358b8VRsTblT15q7cECfe8W7c+86cLc5+d++e8dg5e0X3Nh7KBACg/hvRt11cctiArPnIGSvi+penJdgIgLroL29/EtOXrs+Y9WzbJM7er1fCjQAAAAAAAAAAAACA2sACLAAAoFKtmhTEOfv1zpiVlFfEja9MT7hR1Xpm/KI48ua3Y8LCNZXOtWycH/ecsVtccfTAKMzLTagdAADUvLP27RVH7rRD1vz2N2bFCxMWJ9gIgLpkwacb46ZXZ2TNrz52sPdaAAAAAAAAAAAAAKCBsgALAADYou8M7xkdmhdmzJ74aGFMXrQ24Ubbr7i0PH7++IQ4/6FxsX5zWaWzu3VvFc9fMCIOGtghoXYAAFB7pFKp+P2JO0e/Dk2zzvz00fExY+m6BFsBUFdc9czk2FRanjE7Zkin2Kdv24QbAQAAAAAAAAAAAAC1hQVYAADAFjUqyI0fH9QvY5ZOR1z34tSEG22fGUvXxbG3vhMPjZ5X6VwqFXHe/n3i4R/sGZ1aNkqoHQAA1D5NCvPi7tN3i2ZFeRnzDSXl8YP7xsTa4tKEmwFQm706eWm8MnlpxqxZYV5cftSOCTcCAAAAAAAAAAAAAGoTC7AAAIAv5cRhXaJP+6YZszenL49RM1ck3GjrpdPpePTD+XHMre/EtKXrKp1t27Qg/vHd3eOnh/aPvFy/OgEAQI+2TeKmk4dGKpU5/2TFhvjxwx9FRUU62WIA1EobS8riyqcnZc1/emj/aN+sKMFGAAAAAAAAAAAAAEBt4yluAADgS8nLzYlLDu2fNf/di1Nr9YPu6zeXxUWPjI+LH/s4NpWWVzq7d5828fyFI2JE33YJtQMAgLrhgAEd4scH9cuavzZ1Wdz87xkJNgKgtrr5tZmxcPWmjNlOnVvEaXt2T7gRAAAAAAAAAAAAAFDbWIAFAAB8aQcP7BDDurfKmH28YE08P3Fxwo2+nEmL1sQxt7wdT4xbWOlcTirip4f0i398d49o36wooXYAAFC3nLd/nzhoxw5Z8z+9OiNenbw0wUYA1DbTl66Le0bOzpilUhHXHj84cnNSCbcCAAAAAAAAAAAAAGobC7AAAIAvLZVKxc8PH5A1/8NL06K0vCLBRpVLp9Nx37tz4vjbR8XsFRsqne3YvCge/sFecd4BfT2ACQAAlcjJScUN3xgSvdo1yTrz439+FLOXr0+wFQC1RTqdjsufnBhlFemM+Wl7dI+du7RMthQAAAAAAAAAAAAAUCtZgAUAAGyV3Xq0joMHdsiYzV25MR4ePS/hRpmt2VQa5z4wNn751KQoKat8KdeBA9rH8xeOiN17tk6oHQAA1G3Ni/Lj7tOHRZOC3Iz5us1lcdZ9Y2L95rKEmwFQ0/41dmGM/mRVxqxt08L46aH9E24EAAAAAAAAAAAAANRWFmABAABb7ZJD+0dOKnN202szavwh93HzPo0jbx4ZL0xcUulcfm4qLj9yx7jnW7tF6yYFCbUDAID6oU/7ZnH9SUOz5jOWrY+LHx0f6XQ6uVIA1KjVG0viN89PyZr/8qgdo0Wj/AQbAQAAAAAAAAAAAAC1mQVYAADAVuvboVl8fVjXjNmK9SVxz8jZCTf6j4qKdNz91qz4+p3vxoJPN1U627V1o3js7OHxvRG9IpXKss0LAACo1GGDO8Z5+/fJmr8wcUnc8easBBsBUJOue3FarNpQkjHbu0+bOGZIp4QbAQAAAAAAAAAAAAC1mQVYAADANvnxwf2iMC/zrxR/fmt2LF+3OdE+qzaUxJl//yB+8/zUKKtIVzp75E47xHMXjIghXVsmUw4AAOqxHx/cL77ar13W/A8vTYs3py9PsBEANWHM3E/jodHzMmYFuTnx62MHW0IOAAAAAAAAAAAAAHxOXk0XAAAA6qaOLYriu/v0jDvemPWFbENJedzy7xnx62MHJ9Llvdkr48KHx8XStZUv3SrIy4krjx4Y39y9mwcuAQCgiuTmpOLmk3eJo299O+at2viFPJ2OuOChcfHMeftEtzaNa6AhANWtrLwiLn9yYtb8rK/2it7tmibYCAAAAACodcqKI5ZOilj0UcSaBf95nUpF5DeKaNM3otPQiLb9IlI+5x0AAAAAABoSC7AAAIBtdvZXe8dDo+fF6o2lX8gefH9efHfvntGjbZNqu395RTpu/ffMuOm16VGRrny2d7smces3d40dd2hebX0AAKChatE4P+46fVh87fZRsam0/Av5mk2l8YP7PozHzx0ejQv8aQKgvvnbqDkxZfHajFm31o3jh/v3SbgRAAAAAFArFK+OGPdAxMePRCydGFFRVvl8QZOILl+J2OX0iIHHRuTmJ1ITAAAAAACoOT4aAwAA2GYtGuXHeVkeYCyrSMcfX55WbfdetrY4Trvn/bjx1S0vvzph1y7x9Hn7WH4FAADVaMcdmsd1J+6cNZ+6ZF387F8TIp3ewg/wANQpi9dsihtfmZ41v+rYQVGUn5tgIwAAAACgxq2aHfH0+RHX7xjx0mURiz/a8vKriIiSDRGz34j415kRNw6M+PfV/1miBQAAAAAA1FsWYAEAANvltD27R+eWjTJmz368OD5esLrK7/nm9OVx+E0j493ZKyuda1yQG9d/fUhcf9KQaFKYV+U9AACAzztmSKf4wb69suZPj18Uf3n7kwQbAVDdrn52cmwoKc+YHbFTx9i/f/uEGwEAAAAANSZdEfHubRF3DI8Y+4+I0o3bfq31yyLe+mPE7XtFzHi56joCAAAAAAC1igVYAADAdinKz42LDu6XNf/dC1MjnU5Xyb1Kyyviuhenxrf+OjpWbiipdHZAx2bx9Hn7xAnDulTJvQEAgC/nkkP7x9592mTNf/vC1Bg1a0WCjQCoLm9MWxbPT1iSMWtSkBtXHDUo4UYAAAAAQI35dE7EvUdEvHRZROmmqrvu2kURD3w94slzI0rWV911AQAAAACAWsECLAAAYLsdt0vnGNCxWcZs1KyV8daM/zzcnk6nY11xaazaUBLriku3ajHWgk83xjfuejfueGPWFmdP27NbPPnDvaNP+6Zf+voAAEDVyMvNiVtO2TU6t2yUMS+vSMd5D46Lhaur8MEHABJXXFoeVzw1KWv+44P7RccWRQk2AgAAAABqzJIJEX85OGLeu9V3j48eiPj70REbV1XfPQAAAAAAgMTl1XQBAACg7svNScWlhw+I79z7Qcb8on9+FP07NotJi9bGmk2ln329RaP8GNy5eQzp0jKOHdo5+mdZovXSpCVx8aPjY21xWaU9mhXmxXUn7hxH7LTDtv+LAQAAtlvrJgVx1+nD4oQ7RsXmsoov5Ks2lMQ594+JR87aK4ryc2ugIQDb67bXZ8a8VRszZjvu0Dy+PbxHsoUAAAAAgJqxbMp/FlNt+rT677VwbMQ/jo349rMRRS2q/34AAAAAAEC1y6npAgAAQP2wX792sWev1hmzlRtKYtSslZ9bfhURsWZTabwzc2Xc/sasOPRPb8VJd74br09d9lm+uaw8fvX0pDjrvjFbXH41pEuLeO6CEZZfAQBALTG4c4v4zfE7Zc0/XrAmLn9yYqTT6QRbAVAVZi1fH3e+OStrfs1xgyMv15+iAQAAAKDe27A84r7jkll+9T+WfBzx8KkR6S9+CAsAAAAAAFD3OHUMAABUiVQqFT87fMftusboOaviO3/7IC58eFyMn786TrhjVPxt1Jwtft/3R/SMR88eHt3aNN6u+wMAAFXrhGFd4lt7dc+aPzZmQdz/3twEGwGwvdLpdPzyyYlRWp55geEpu3eNYd1bJdwKAAAAAKgRz14UsW5J8vedMzLivduTvy8AAAAAAFDl8mq6AAAAUH8U5uVEYV5ObC7bvk/Xe+qjRfH0R4si82OU/6tV4/y4/qQhccCADtt1PwAAoPpcftTAmLJ4XYyesypjftUzk2PHHZrHbj1aJ9wMgG3x9PhFMWrWyoxZ6yYFcelhAxJuBAAAAADUiImPR0x5uubu/+9rIvodFtGmT811AAAAAAAAtltOTRcAAADqhymL18bJd7+33cuv/seWll/t3qN1PH/hCMuvAACglsvPzYlbT90lOjQvzJiXVaTjnAfGxtK1xQk3A2BrrdlUGlc/OyVrftkRO0bLxgUJNgIAAAAAakTxmojnf1qzHUo3RTx9fs12AAAAAAAAtpsFWAAAwHb7dENJfPve0bFmU2m13yuVijj/gD7x4Pf3iB1aNKr2+wEAANuvfbOiuOO0YVGQm/nPEsvXbY5z7h8TJVW0UBeA6nH9y9NixfrNGbPde7aOE3btnHAjAAAAAKBGfPRAxMaVNd0iYu6oiIVjaroFAAAAAACwHSzAAgAAttuVT0+KpWszP/xYldo2LYz7z9wjfnJI/8jL8uA8AABQO+3arVVcdeygrPnYeavjqmcmJdgIgK3x8YLVcd97czNmeTmpuOa4wZFKpRJuBQAAAADUiA/+UtMN/tcH99R0AwAAAAAAYDt4YhwAANgu/566NJ4ev6ja7zOoU/N44cIRsXefttV+LwAAoHqcsnu3OGX3rlnzB96fF//8YF6CjQD4Msor0vGLJyZGOp05/96IXtGvQ7NkSwEAAAAANWP2GxErZ9Z0i/818fGITZ/WdAsAAAAAAGAbWYAFAABslzvfmJ3IfZoU5EW7ZoWJ3AsAAKg+vzpmUAzt2jJr/ssnJ8VH81cn1geALbv/vbkxYeGajFnnlo3iggP7JNwIAAAAAKgx056v6QafV1YcMevfNd0CAAAAAADYRhZgAQAA22zqkrUxes6qRO41es6qmLZkXSL3AgAAqk9hXm7cedqwaNs084LbkvKKOPu+MbF83eaEmwGQybK1xfHHl6ZlzX91zKBoXJCXYCMAAAAAoEYt+qimG3zRonE13QAAAAAAANhGFmABAADb7OmPFiV7v/ELE70fAABQPTq2KIrbT9018nJSGfMla4vjhw+OjdLyioSbAfDfrnluSqzbXJYxO2jHDnHwwA4JNwIAAAAAakxFecSSCTXd4otq41IuAAAAAADgS7EACwAA2GbjF6xO9n7z1yR6PwAAoPrs3rN1/PKogVnz0Z+sit88PyXBRgD8t7dnrIinx2degN4oPzd+dUz2/xwHAAAAAOqhlTMiSjfWdIsvWvJxTTcAAAAAAAC2kQVYAADANkmn0zFx4dpE7zlh4ZpIp9OJ3hMAAKg+Z+zVPb62a+es+b3vzIknxi1IsBEA/6O4tDx++dTErPmFB/WNLq0aJ9gIAAAAAKhxG1fWdIPMitdEVJTVdAsAAAAAAGAbWIAFAABsk/Wby2LNptJE77lmU2lsKClP9J4AAED1SaVS8Zvjd4rBnZtnnfnZvybExIVrEmwFQETEXW/Ojk9WbMiY9evQNM7cp2fCjQAAAACAGlee7HmxrVK2uaYbAAAAAAAA28ACLAAAYJuUlqdr5L4lZRU1cl8AAKB6FOXnxp2nDYvWTQoy5pvLKuKs+8bEqg0lCTcDaLjmrNgQt70xM2t+zXE7RX6uPzUDAAAAQIOTk1fTDbLLzfy3JgAAAAAAoHZzKhkAANgm+bmpGrlvQZ5fYwAAoL7p0qpx3HrKLpGT5deMhas3xQUPjYuycgtxAapbOp2OK56elHUJ+YnDusTuPVsn3AoAAAAAqBWKmtd0g8zyiiJy82u6BQAAAAAAsA08OQ4AAGyTpoV50aJRsoeGWjTKjyYFuYneEwAASMbwPm3j54fvmDV/e+aK+MPL0xJsBNAwPT9hSbw1fXnGrEWj/Pj54QMSbgQAAAAA1Bpt+9fORVMdB9d0AwAAAAAAYBtZgAUAAGyTVCoVgzsn+4l+O3VuEalUKtF7AgAAyfneiJ5x9JBOWfO73pwdz368KMFGAA3LuuLS+PWzk7LmPz98QLRpWphgIwAAAACgVskrjGiX/QNNaswOQ2u6AQAAAAAAsI0swAIAALbZkC4tk71f1xaJ3g8AAEhWKpWK607YKQZ0bJZ15pLHPo5pS9Yl2Aqg4bjxlRmxdO3mjNmu3VrGSbt1TbgRAAAAAFDrdBpa0w2+qDZ2AgAAAAAAvhQLsAAAgG12zNBOyd5vSOdE7wcAACSvcUFe3HX6sGhelJcx31hSHmfd92Gs2VSacDOA+m3iwjXxt1GfZMxyc1Jx7fE7RU5OKuFWAAAAAECt0/vAmm7weamciF771XQLAAAAAABgG1mABQAAbLMBHZvH7j1aJ3Kv3Xu2jv4dmyVyLwAAoGZ1b9Mkbj5ll0hl2bMyZ+XG+NHD46KiIp1sMYB6qqIiHZc/OTGy/cfqd4b3iB13aJ5sKQAAAACgdhpwZETTDjXd4n/1PSSiRdeabgEAAAAAAGwjC7AAAIDtcvZ+vRK5zzlf7Z3IfQAAgNphv/7t46eH9M+avz5tefzp1ekJNgKovx76YF58NH91xqxj86L40cH9ki0EAAAAANReufkRu55R0y3+11e+V9MNAAAAAACA7WABFgAAsF0OGNAhjhnSqVrvcezQTrH/gPbVeg8AAKD2OXe/3nHooOyfIH7zv2fGy5OWJNgIoP5ZsX5zXPfC1Kz5lUcPjKaFeQk2AgAAAABqvd2+E5FXVNMtItr2jeh7cE23AAAAAAAAtoMFWAAAwHa76phB0aF5YbVcu0PzwvjV0YOq5doAAEDtlkql4o9fHxK92zXJOnPRI+Nj5rL1CbYCqF9+8/yUWFtcljHbr3+7OGxwx4QbAQAAAAC1XvPOEftfVrMdUqmIo2+u2Q4AAAAAAMB2swALAADYbq2aFMTfv7t7tGiUX6XXbdEoP/7+3d2jVZOCKr0uAABQdzQryo+7z9gtmhbmZczXby6Ls+77MNYVlybcDKDue2/2ynh87MKMWWFeTvz6mMGRSqUSbgUAAAAA1Al7nRfRZbeau//uZ0V0H15z9wcAAAAAAKqEBVgAAECVGNCxefzzrD2jQ/PCKrleh+aF8c+z9owBHZtXyfUAAIC6q3e7pnHjN4ZmzWct3xA/eWR8VFSkkysFUMeVlFXE5U9OzJqff0Cf6NamcYKNAAAAAIA6JSc34rg7IvIbJX/vNr0jDroy+fsCAAAAAABVzgIsAACgygzo2DxevHDfOHZop+26zrFDO8WLF+5r+RUAAPCZgwd2iAsO6JM1f3ny0rj9jZkJNgKo2/48cnbMXLY+Y9arXZP4/r69Em4EAAAAANQ5bftFnHRfRG5+cvds1jHitMcj8i3wBwAAAACA+sACLAAAoEq1alIQN528S/z127vF7j1bb9X37t6zddz77a/ETSfvEq2aFFRTQwAAoK760UH9Yv/+7bLm178yPV6ftizBRgB10/xVG+OWf8/Iml9z7OAozMtNsBEAAAAAUGf1PTji63+PyCus/ns17xRxxtMRrXpU/70AAAAAAIBE5NV0AQAAoH46YECHOGBAh5i2ZF08PX5hjJ+/JiYsXBNrNpV+NtOiUX7s1LlFDOnaIo4Z0jn6d2xWg40BAIDaLicnFX86eZc49ta3Y87KjV/I0+mICx8aF8+cv090b9OkBhoC1H7pdDp+9fSkKC6tyJgfN7RTDO/TNuFWAAAAAECdNuDIiNMej3j8+xFrF1XPPToPi/j6vREtu1fP9QEAAAAAgBphARYAAFCt+ndsFhd3HBAR/3nAckNJeZSUVURBXk40KciNVCpVww0BAIC6pEWj/Ljr9N3i+NvfiY0l5V/I1xaXxVn3jYnHzx0ejQv8GQTgv708eWm8NnVZxqxZUV784siBCTcCAAAAAOqFHvtEnPtuxIuXRXz0QNVdN68wYr/LIoafH5GTW3XXBQAAAAAAaoWcmi4AAAA0HKlUKpoW5kXrJgXRtDDP8isAAGCb9O/YLP5w4pCs+dQl6+KSxz6OdDqdYCuA2m/D5rK46ulJWfNLDhsQ7ZoVJtgIAAAAAKhXilpGHHd7xKmPRXTedfuulcqJ6H94xFlvRezzI8uvAAAAAACgnvLR5wAAAAAAQJ1z5M47xMcLe8Vdb87OmD/78eLYuUuL+MG+vRNuBlB73fzajFi0pjhjNqRLi/jm7t0SbgQAAAAA1Et9D/7PP4vGRXxwT8TExyNKN365723SLmLXMyKGfTuipfcsAQAAAACgvrMACwAAAAAAqJMuOXRATF60NkbOWJEx/90LU2NQpxaxd5+2CTcDqH2mLlkbf3n7k4xZTiri2uN3itycVMKtAAAAAIB6rdMuEcfeFnHUnyKWT4lY9NF//lkzP6KsOCKVE5HfKKJN34hOQyN2GBrRxoebAAAAAABAQ2IBFgAAAAAAUCfl5qTi5pN3iaNvfTsWfLrpC3lFOuK8B8fGM+fvE11aNa6BhgC1Q0VFOi5/YmKUVaQz5mfs1SMGd26RcCsAAAAAoMHIzY/ouPN//tn1jJpuAwAAAAAA1CIWYLFF69evj0mTJsXUqVNj5cqVUVxcHC1btoz27dvHbrvtFj169Kjye06aNCnGjBkTixcvjvLy8mjTpk0MHjw49thjj8jL829bAAAAAAD+o1WTgrjztGFxwh2jYnNZxRfyTzeWxln3jYl/nTM8ivJza6AhQM17bMyC+HDupxmzds0K46JD+iXcCACgdnNeCgAAAAAAAAAAkuFkTB22cOHCGD16dLz//vsxevTo+PDDD2PdunWf5d27d485c+Zs07Xff//9ePLJJ+O1116LMWPGREXFFx8a+r/3Ofvss+Oss86KVq1abdP9IiLS6XTce++9cd1118X06dMzzrRp0ybOOeec+NnPfhZNmjTZ5nsBAAAAAFB/DO7cIn53wk7x43+Oz5hPWrQ2LntiQlz/9SGRSqUSbgdQsz7dUBK/fWFK1vyXRw2M5kX5CTYCANh2zks5LwUAAAAAAAAAQP1iAVYd884778T1118f77//fixatKjKr//RRx/FCSecELNnz/7S3zN37tz4+c9/HjfddFPce++9cdhhh231fVevXh0nnXRSvPLKK5XOrVy5Mq655pp48MEH4+mnn45BgwZt9b0AAAAAAKh/jt+lS3y8YE3c+86cjPnjYxfGkC4t41vDeyTaC6Cm/e6FqfHpxtKM2T592sbRO++QcCMAgK3jvJTzUgAAAAAAAAAA1F85NV2ArfPBBx/EE088US2HuSIiFixYkPUwV4sWLaJ///6x++67R69evSKVSn0uX7JkSRx55JHx8MMPb9U9N23aFIceeugXDnMVFBREv379YqeddvrCpxfOnj079t9//5g5c+ZW3QsAAAAAgPrrsiN2jD16ts6aX/3s5Bj9yaoEGwHUrA/nrIp/fjg/Y1aQlxNXHzf4C3/zAwCobZyX+g/npQAAAAAAAAAAqI8swKpHmjZtWuXX3HPPPePWW2+NSZMmxerVq2Pq1Knx/vvvx6xZs2Lp0qVx7bXXRuPGjT+br6ioiDPOOCPGjRv3pe9x0UUXxejRoz97nZOTE7/85S9jyZIlMW3atPj4449j1apVce+990arVq0+m1u+fHmcdNJJUV5eXjX/YgEAAAAAqNPyc3PitlN3jR1aFGXMyyrSce4DY2Lxmk0JNwNIXml5RVz+5MSs+Tlf7R092zbJmgMA1AXOSwEAAAAAAAAAQN1mAVYd1axZs9hvv/3i4osvjkcffTTmzJkTzzzzTJVcOycnJ0477bSYOHFivPvuu/HDH/4wBg4c+IW5du3axWWXXRbvvvv/2LvvMLvKcm/Az56a3klCeiM9EAiCgtKlCUlQQUCiePRIEbvooROaiopHEGkWFBBBpUdFQJASBElCSA8hCSG99+mzvz/OZ3SSvUMmmVl7yn3/967fWuv9RYLXxbXf/exXo1OnTjuuV1RUxNe+9rU92mvu3Llxzz331Lh2//33x3XXXVfj8FZRUVGcf/758dJLL0WHDh12XJ82bVr85je/qd0fEAAAAACAJqtLm+K447wxUZSf+SOQtVvL46L7p0ZZpS8LA03br15ZFHNXbsmY9evcKi46ZmDCjQAA9o3zUv/HeSkAAAAAAAAAAJoSA7AamdNPP33Hrws+//zzcfPNN8cnP/nJ6Nu3b528f/DgwfHWW2/FfffdFyNGjNijZw488MD41a9+VePaiy++GAsWLHjfZ6+55poav0g4YcKEOOecc7LeP2LEiPjhD39Y49rEiROjoqJij7oCAAAAAND0je7dIW4YPzJr/uZ7G+PaJ2Yl2AggWcs3lsT/Pvt21vy6cSOjRWF+go0AAPae81LOSwEAAAAAAAAA0HQZgNXIDBw4MIYPHx55efXzj27w4MF7fJDrP40dO3aXXz38y1/+sttnNmzYEI888siOdSqVimuvvfZ99/rc5z5X4wDbu+++G88++2ztCgMAAAAA0KSd9YHe8enD+2TNH3z9vfjta0sSbASQnIlPzort5VUZs48duH8cNXi/hBsBAOw956WclwIAAAAAAAAAoOkyAIs685GPfKTGesmS3X9xaNKkSVFZWbljfcwxx8SAAQPed5+8vLz43Oc+V+PaY489tudFAQAAAABoFq45fUQc0qdD9vyJmTF1yYbkCgEk4G9zV8XTs1ZlzNoUF8TVpw3PmAEAUHvOSwEAAAAAAAAAwL4xAIs607FjxxrrTZs27fb+SZMm1VifeOKJe7zXRz/60Rrrp556ao+fBQAAAACgeSgqyIs7zhsT+7UtzphXVKXjovunxOotpQk3A6gfJeVVcfXjs7Lm3zxxcHRr1yLBRgAATZvzUgAAAAAAAAAAsG8MwKLOLFu2rMa6c+fOu73/zTffrLE+4ogj9nivMWPGRHHxv7+wtHz58lizZs0ePw8AAAAAQPPQrV2LuOPTh0RBXipjvmpzWXzpgalRXlmdcDOAuvfT59+OpRtKMmYjerSLCR/sm3AjAICmzXkpAAAAAAAAAADYNwZgUSfS6XS8/PLLNa4NHjw46/0VFRWxYMGCGteGDx++x/sVFxfHwIEDa1ybM2fOHj8PAAAAAEDzcWi/TnHN2BFZ838u3hA3TpqdYCOAurdg9Za4+8WFGbNUKuLGM0ZFQb6PhwEA6orzUgAAAAAAAAAAsO+ccKZOvPDCC7Fo0aId61QqFSeffHLW+xcuXBiVlZU71i1btowuXbrUas/evXvXWM+bN69WzwMAAAAA0Hycd3ifOHNMr6z5r199N/4wZWmCjQDqTjqdjisfmxkVVemM+bmH9YnRvTskWwoAoIlzXgoAAAAAAAAAAPadAVjss+rq6rjssstqXDv55JOje/fuWZ9ZvXp1jXXPnj1rve/Oz+z8TgAAAAAA+JdUKhXXjx8ZB/Zqn/Weyx+dETOWbkqwFUDdeHTasvjHwvUZsy5tiuLbJw1NuBEAQNPmvBQAAAAAAAAAANSNglwXoPH74Q9/GK+99tqOdV5eXtx44427fWbr1q011q1bt671vjs/s/M799bq1atjzZo1tXpmwYIFdbI3AAAAAAD1p0Vhftx53pg4/baXY9228l3y8srquPD+KfHEJUdG5zbFOWgIUHubtlfEjZPmZM0vP3VYtG9VmGAjAICmz3kp56UAAAAAAAAAAKgbBmCxT1566aW44ooralz72te+FgcffPBun9v58FWLFi1qvXfLli13+8699bOf/SwmTpxYJ+8CAAAAAKBh6dGhZfz03EPivF+8FlXV6V3yZRtL4ssPTovf/NdhUZCfl4OGALVz89NzMw71i4j44IBOccbBPRNuBADQtDkvBQAAAAAAAAAAdcc3N9hrCxcujI9//ONRWVm549ro0aPjpptuet9nS0tLa6yLiopqvX9xcXGNdUlJSa3fAQAAAABA8/OhgZ3jslOGZs0nv7Muvv+XuQk2Atg7b763MX77+pKMWWF+Km4YPzJSqVTCrQAAmi7npQAAAAAAAAAAoG4ZgMVeWbt2bZxyyimxdu3aHde6desWjzzyyC4HrTLZ+RcMy8sz/yr17pSVle32nQAAAAAAkM3nP9w/xo3ukTW/56VF8cT05Qk2AqidyqrquOLRGZFOZ86/eNSAGNS1bbKlAACaMOelAAAAAAAAAACg7hXkugCNz5YtW+KUU06J+fPn77jWvn37ePrpp6N///579I42bdrUWO/8C4d7YudfMNz5nXvr4osvjjPPPLNWzyxYsCDGjx9fJ/sDAAAAAFD/UqlUfO/jB8b8VVtjzorNGe/5zh/eigO6tolh+7dLuB3A+/vNq+/GrOWZ//+rV8eWccmxByTcCACg6XJealfOSwEAAAAAAAAAUBcMwKJWSktLY+zYsfHGG2/suNaqVauYNGlSHHTQQXv8np0PX23btq3WXXZ+pq4OdHXt2jW6du1aJ+8CAAAAAKDhalmUH3dPGBOn//Tl2Li9Ype8pKIqLrhvSjxxyZHRoVVRDhoCZLZqc2nc8sz8rPl140ZEy6L8BBsBADRdzksBAAAAAAAAAED9yct1ARqPioqKOOuss+KFF17Yca2oqCgeeeSROPLII2v1rp0PTC1btqzWfXZ+xiEsAAAAAABqq3enVnHr2QdHXipzvmT99vjq796Mqup0ssUAduO6p2bH1rLKjNlJI7rFcUO7JdwIAKBpcl4KAAAAAAAAAADqlwFY7JHq6ur4zGc+E08++eSOa/n5+fHb3/42TjrppFq/b8CAAVFQULBjXVJSEmvWrKnVO5YsWVJjPXTo0Fr3AAAAAACAowbvF986aUjW/O/z18Qtz8xLsBFAdi/OXxOT3lqRMWtVlB/XnD4i4UYAAE2T81IAAAAAAAAAAFD/DMDifaXT6fjiF78Yv/vd73ZcS6VS8fOf/zw+8YlP7NU7CwsLY+DAgTWuzZ49e4+fLysri4ULF9a45kAXAAAAAAB766KjB8apo7pnzW9//p34y8yVCTYC2FVpRVVc/fjMrPnXTxgcPTq0TLARAEDT5LwUAAAAAAAAAAAkwwAs3tfXv/71+MUvflHj2q233hrnn3/+Pr139OjRNdaTJ0/e42enTJkSZWVlO9b7779/dO3adZ/6AAAAAADQfKVSqbj5kwfFAV3bZL3nmw+/GQtWb0mwFUBNd7zwTixetz1jNrR72zj/yH7JFgIAaKKclwIAAAAAAAAAgGQYgMVuXXXVVfGTn/ykxrWbbropLrnkkn1+92mnnVZj/cwzz+zxszvfe/rpp+9zHwAAAAAAmrc2xQVx14Qx0ba4IGO+rbwqvvibKbG5tCLhZgARi9ZuizteeCdrfsP4kVGY7+NfAIB95bwUAAAAAAAAAAAkxwlosvrBD34QN9xwQ41rl112WVx22WV18v5TTz01Cgr+/SWiF154IRYuXPi+z6XT6bj33ntrXBs3blyddAIAAAAAoHkbsF+b+N+zR2fNF67dFt94aHpUV6eTKwU0e+l0Oq56bGaUV1VnzD91aO84tF+nhFsBADQ9zksBAAAAAAAAAECyDMAio7vuuiu+/e1v17h2ySWXxE033VRne3Tq1CnGjx+/Y51Op+Paa6993+d++ctfxuLFi3es+/btGyeccEKd9QIAAAAAoHk7fli3+NoJB2TNn52zKn76/IIEGwHN3ZNvrYiXF6zNmHVsVRj/c8rQhBsBADQ9zksBAAAAAAAAAEDyDMBiF7/97W/j4osvrnHtc5/7XNx66611vtfEiRMjL+/ffw3vu+++ePDBB7PeP3v27PjWt75V49pVV10VRUVFdd4NAAAAAIDm6yvHHRAnDOuaNf/xs/Pjb3NXJdgIaK42l1bE9U/Nzppfdsqw6NjaZ2UAAPvCeSkAAAAAAAAAAMiNglwXoPZeeeWVKCkp2eX69OnTa6xLS0vj2WefzfiOHj16xPDhw3e5/uyzz8ZnP/vZqK6u3nFt6NCh8alPfSqee+65WvXs2LFjjBkzZrf3DB8+PL7whS/E3XffvePaeeedF3PmzImvf/3r0bFjx4iIqKioiAceeCC+8Y1vxMaNG3fce+CBB8ZnP/vZWvUCAAAAAID3k5eXils+NTrG//SVWLh22y55Oh3x1d+9GU9c8uHo36V1DhoCzcUtf50fa7aUZcwO7dsxPjmmV8KNAACS57zUxh33Oi8FAAAAAAAAAEBTkkqn0+lcl6B2+vXrF+++++4+veOzn/1s3Hvvvbtcv/baa2PixIn79O5/Ofroo+OFF1543/u2b98eRx99dLzxxhs1rhcVFUX//v2juLg4Fi5cGFu3bq2Rd+nSJV555ZUYPHhwnfTdF7NmzYqRI0fuWM+cOTNGjBiRw0YAAAAAANSFt1dtifG3vxLbyqsy5oO7tYlHLz4yWhf7zRGg7s1ctinG/vTlqM7wiW5BXiqe+sqHY2j3dskXA4BGwnmOpsN5qf/jvBQAAAAAAAAAAJk05rMcebkuAK1atYqnn346jjvuuBrXy8vLY968efHWW2/tcpirX79+8be//a1BHOYCAAAAAKDpOqBb2/jRWQdlzeev2hqX/mF6+L0RoK5VVafjikdnZBx+FRHx+Q/3N/wKAKCRcl4KAAAAAAAAAAD+jwFYNAidOnWKZ555Ju6+++4YNGjQbu+7/PLLY8aMGTFq1KgEGwIAAAAA0FydPHL/uPiYgVnzP81YGXe9uDDBRkBz8NvXl8T0pZsyZj3at4ivHH9Awo0AAKhLzksBAAAAAAAAAEBEKu0nyWmAZsyYEVOnTo0VK1ZEVVVVdO7cOUaOHBmHH354FBYW5rreLmbNmhUjR47csZ45c2aMGDEih40AAAAAAKhLVdXp+Ny9/4wX56/JmOelIn79X4fFRw7YL+FmQFO0ektpHP+jv8eW0sqM+V0TxsRJI7on3AoAGh/nOWhMnJcCAAAAAAAAAGBvNeazHAW5LgCZjBo1yi8WAgAAAADQYOTnpeLWs0fH6T99Od5bX7JLXp2O+PKD0+LJSz4cvTu1ykFDoCm5adKcrMOvjh/aNU4c3i3hRgAA1DfnpQAAAAAAAAAAaI7ycl0AAAAAAACgMejQqijuOu/QaFGY+eOVjdsr4oL7pkRJeVXCzYCmZPKCtfHYm8szZi0K8+LasSMilUol3AoAAAAAAAAAAAAAoO4ZgAUAAAAAALCHhvdoF9//xIFZ89krNsdlj7wV6XQ6wVZAU1FWWRVXPj4za/6V4w+I3p1aJdgIAAAAAAAAAAAAAKD+GIAFAAAAAABQC+NG94wvfLh/1vyxN5fHr15ZnFwhoMm458WFsXDNtozZAV3bxBc+PCDhRgAAAAAAAAAAAAAA9ccALAAAAAAAgFr6n1OGxocGdM6a3/inOfGPhesSbAQ0dkvWbY/b/rYga379+JFRVODjXQAAAAAAAAAAAACg6XBCGgAAAAAAoJYK8vPip+ceHD3at8iYV1Wn40sPTI3lG0sSbgY0Rul0Oq5+YmaUVVZnzD9+SM/44G6G7gEAAAAAAAAAAAAANEYGYAEAAAAAAOyFzm2K464Jh0ZRQeaPW9ZtK4+L7p8SpRVVCTcDGpu/zFwZL8xbkzFr37IwLj91WMKNAAAAAAAAAAAAAADqnwFYAAAAAAAAe2lUr/Zx4/iRWfPpSzfF1Y/PjHQ6nWAroDHZWlYZE5+cnTX/9slDokub4gQbAQAAAAAAAAAAAAAkwwAsAAATi3hNAAEAAElEQVQAAACAfXDmob3jMx/qmzV/+I2l8cBrSxJsBDQm//vM/Fi5uTRjNrp3hzjnA30SbgQAAAAAAAAAAAAAkAwDsAAAAAAAAPbRlR8bHof27Zg1n/jkrJjy7voEGwGNwZwVm+NXkxdnzPJSETeeMTLy8lLJlgIAAAAAAAAAAAAASIgBWAAAAAAAAPuoqCAvfnbeIdG1bXHGvKIqHRfePzVWby5NuBnQUFVXp+OKR2dEVXU6Y37+Ef1jRI/2CbcCAAAAAAAAAAAAAEiOAVgAAAAAAAB1oGvbFnHHeWOiMD+VMV+zpSwuemBqlFdWJ9wMaIgefuO9mLpkY8asW7vi+MaJg5MtBAAAAAAAAAAAAACQMAOwAAAAAAAA6siYvh3j2rEjsuZT3t0Q1z81O8FGQEO0bmtZfPfPc7PmV582ItoUFyTYCAAAAAAAAAAAAAAgeQZgAQAAAAAA1KFzD+sTZ3+gd9b8vn+8Gw+/8V6CjYCG5rt/nhubSioyZkcN3i9OHdU94UYAAAAAAAAAAAAAAMkzAAsAAAAAAKAOpVKpmDhuRBzUu0PWe658bGZMf29jYp2AhuP1RevjD1OWZsyKCvLiurEjIpVKJdwKAAAAAAAAAAAAACB5BmABAAAAAADUseKC/LjzvEOiS5uijHl5ZXVceP+UWLu1LOFmQC5VVFXHlY/NyJp/6ZhB0a9L6wQbAQAAAAAAAAAAAADkjgFYAAAAAAAA9WD/9i3j9nMPiYK8VMZ8xabSuOS3U6OyqjrhZkCu/OLlRTF/1daM2YAurePCYwYk3AgAAAAAAAAAAAAAIHcMwAIAAAAAAKgnhw/oHFd8bFjW/B8L18d3/zw3wUZArizdsD1+8uzbWfPrx4+M4oL8BBsBAAAAAAAAAAAAAOSWAVgAAAAAAAD16Pwj+sUZB/fMmv/i5UXx+JvLEmwE5MK1T8yOkoqqjNnYg3rEkYO6JNwIAAAAAAAAAAAAACC3DMACAAAAAACoR6lUKm46Y1SM6NEu6z3f+eNbMWv5pgRbAUl6ZvaqeHbOqoxZ2+KCuPK0YQk3AgAAAAAAAAAAAADIPQOwAAAAAAAA6lnLovy487wx0bFVYca8tKI6Lrx/SmzYVp5wM6C+bS+vjGufmJU1/9ZJQ6Jr2xYJNgIAAAAAAAAAAAAAaBgMwAIAAAAAAEhA706t4rZzDom8VOb8vfUl8ZXfTYuq6nSyxYB6detzC2LZxpKM2aie7eO8D/ZNuBEAAAAAAAAAAAAAQMNgABYAAAAAAEBCPnxAl/jOyUOz5i+9vTZ++Nd5CTYC6tP8VVvi5y8tzJilUhE3njEy8rNNxQMAAAAAAAAAAAAAaOIMwAIAAAAAAEjQF48aEB87cP+s+R0vvBN/mrEiwUZAfUin03HlYzOjsjqdMZ/wwb5xYK8OyZYCAAAAAAAAAAAAAGhADMACAAAAAABIUCqVips/cWAM6dY26z3f+v30mL9qS4KtgLr2x6nL4vVF6zNmXdoUxzdPHJJwIwAAAAAAAAAAAACAhsUALAAAAAAAgIS1Li6IuyaMiXYtCjLm28ur4oL7psSmkoqEmwF1YcO28rjpT3Oy5ledNizatyxMsBEAAAAAAAAAAAAAQMNjABYAAAAAAEAO9OvSOn5y9sGRSmXOF63dFt946M2ork4nWwzYZzc/PTfWbyvPmB05qHOMPahHwo0AAAAAAAAAAAAAABoeA7AAAAAAAABy5NihXeMbJwzOmj83d3X85Lm3E2wE7Ksp726IB19/L2NWlJ8X140bGalsk+8AAAAAAAAAAAAAAJoRA7AAAAAAAABy6EvHDoqPDu+WNf/Jc2/HM7NXJdgI2FuVVdVx5WMzs+YXHD0gBu7XJsFGAAAAAAAAAAAAAAANlwFYAAAAAAAAOZSXl4pbzjooBuzXOus933jozXhnzdYEWwF7497Ji2POis0Zsz6dWsWXjh2UcCMAAAAAAAAAAAAAgIbLACwAAAAAAIAca9uiMO6ecGi0KS7ImG8pq4wL7psSW8sqE24G7KkVm0rix8/Mz5pfN25EtCjMT7ARAAAAAAAAAAAAAEDDZgAWAAAAAABAAzCoa5v40VkHZc0XrN4a33p4eqTT6QRbAXvquidnx7byqozZqaO6xzFDuibcCAAAAAAAAAAAAACgYTMACwAAAAAAoIE4aUT3+PJxg7Lmf5m1Mn72wjsJNgL2xPPzVsefZ67MmLUuyo+rTxuRcCMAAAAAAAAAAAAAgIbPACwAAAAAAIAG5GsnDI5jhuyXNf/hX+fFC/NWJ9gI2J3Siqq45vFZWfOvf3RwdG/fIsFGAAAAAAAAAAAAAACNgwFYAAAAAAAADUh+Xip+8qmDo2/nVhnzdDriq797M5as255wMyCT259fEEvWZ/73cdj+7eL8I/olWwgAAAAAAAAAAAAAoJEwAAsAAAAAAKCBad+qMO6aMCZaFuZnzDeVVMQX73sjtpdXJtwM+E/vrNkad/79nYxZKhVx4xkjoyDfR7IAAAAAAAAAAAAAAJk4bQ0AAAAAANAADe3eLn5w5oFZ87krt8T//HFGpNPpBFsB/5JOp+Oqx2ZGRVXmfwfP/kCfOKRPx4RbAQAAAAAAAAAAAAA0HgZgAQAAAAAANFCnHdgjLjhqQNb8ienL4xcvL0qwEfAvT0xfHpPfWZcx69y6KL5z8pCEGwEAAAAAAAAAAAAANC4GYAEAAAAAADRgl540JI4c1Dlr/t0/z43JC9Ym2AjYVFIR1z81O2t+2anDokOrogQbAQAAAAAAAAAAAAA0PgZgAQAAAAAANGAF+Xlx2zmHRM8OLTPmVdXpuOTBabFsY0nCzaD5+uHT82Lt1vKM2WH9O8UnDumZcCMAAAAAAAAAAAAAgMbHACwAAAAAAIAGrlProrhrwpgoLsj80c76beVx4X1TorSiKuFm0PxMf29j3P/auxmzgrxU3DB+ZKRSqYRbAQAAAAAAAAAAAAA0PgZgAQAAAAAANAIje7aP7358VNZ8xrJNccWjMyOdTifYCpqXqup0XPnYzMj2r9kXPjIgBndrm2wpAAAAAAAAAAAAAIBGygAsAAAAAACARuLjh/SK84/olzX/49Slcd8/3k2uEDQz9//j3ZixbFPGrGeHlvGV4wcl3AgAAAAAAAAAAAAAoPEyAAsAAAAAAKARueJjw+Kwfp2y5tc9OTv+uXh9go2geVi9uTR++PS8rPnEsSOiVVFBgo0AAAAAAAAAAAAAABo3A7AAAAAAAAAakcL8vLj904dE93YtMuaV1em46P6psXJTacLNoGm7ftKc2FJWmTH76PBuccLwbgk3AgAAAAAAAAAAAABo3AzAAgAAAAAAaGT2a1scd5x3SBTlZ/6oZ+3WsrjogSlRVlmVcDNoml56e008OX15xqxlYX5cO3ZEwo0AAAAAAAAAAAAAABo/A7AAAAAAAAAaoYP7dIzrxmUfujNtycaY+OTsBBtB01RaURVXPz4ra/7VEw6Inh1aJtgIAAAAAAAAAAAAAKBpMAALAAAAAACgkTr7sD5xzmF9sua/fW1J/O71JQk2gqbnrr8vjEVrt2XMBndrE5//cP+EGwEAAAAAAAAAAAAANA0GYAEAAAAAADRi144dHgf36ZA1v/rxWTFtyYbkCkETsnjttrj9hQVZ8xvGj4rCfB+5AgAAAAAAAAAAAADsDaexAQAAAAAAGrHigvy487wx0aVNcca8vKo6Lrp/aqzZUpZwM2jc0ul0XP3ErCivrM6YnzmmVxzWv1PCrQAAAAAAAAAAAAAAmg4DsAAAAAAAABq5bu1axB3nHRIFeamM+crNpfGlB6ZGRVXmQT7Arv40Y2W8OH9NxqxDq8K47NRhCTcCAAAAAAAAAAAAAGhaDMACAAAAAABoAj7Qr1NcffrwrPnri9fHjZPmJNgIGq8tpRUx8clZWfP/OXlodGpdlGAjAAAAAAAAAAAAAICmxwAsAAAAAACAJmLCB/vGJw7plTW/d/LieGTq0gQbQeN0yzPzY/WWsozZIX06xFmH9k64EQAAAAAAAAAAAABA02MAFgAAAAAAQBORSqXixjNGxqie7bPec9kjM2Lmsk0JtoLGZeayTfHryYszZvl5qbjxjFGRl5dKthQAAAAAAAAAAAAAQBNkABYAAAAAAEAT0qIwP+6cMCY6tS7KmJdVVscF902J9dvKE24GDV91dTqufGxmVKcz5587ol8M279dsqUAAAAAAAAAAAAAAJooA7AAAAAAAACamJ4dWsZPzzk48lKZ82UbS+LLD06NyqrqZItBA/fgP5fEm+9tzJjt375FfO2jg5MtBAAAAAAAAAAAAADQhBmABQAAAAAA0AQdMahLXH7qsKz5KwvWxQ+enpdgI2jY1m4ti+//eW7W/JrTh0eb4oIEGwEAAAAAAAAAAAAANG0GYAEAAAAAADRRn/9w/zj9oB5Z87teXBhPvbU8wUbQcN00aU5sLq3MmB07ZL84aUT3hBsBAAAAAAAAAAAAADRtBmABAAAAAAA0UalUKr7/iVExtHvbrPdc+vu3Yu7KzQm2gobn1XfWxSPTlmXMigvyYuLYkZFKpRJuBQAAAAAAAAAAAADQtBmABQAAAAAA0IS1KiqIuyaMifYtCzPmJRVVccF9U2LT9oqEm0HDUF5ZHVc9PjNr/uXjBkWfzq0SbAQAAAAAAAAAAAAA0DwYgAUAAAAAANDE9e3cOn5y9uhIpTLn767bHl99aFpUVaeTLQYNwD0vLYwFq7dmzAbs1zr++6gBCTcCAAAAAAAAAAAAAGgeDMACAAAAAABoBo4Z0jW+deKQrPkL89bE/z47P8FGkHvvrd8et/3t7az5DeNHRnFBfoKNAAAAAAAAAAAAAACaDwOwAAAAAAAAmomLjxkYJ4/onjW/7W8L4ulZKxNsBLmTTqfj2idmRWlFdcb8jIN7xhEDuyTcCgAAAAAAAAAAAACg+TAACwAAAAAAoJlIpVLxw7MOikFd22S955sPT48Fq7cm2Apy46+zV8Vzc1dnzNq1KIjLTx2WcCMAAAAAAAAAAAAAgObFACwAAAAAAIBmpE1xQdw1YUy0LS7ImG8tq4wv3vdGbCmtSLgZJGdbWWVc+8SsrPmlJw+N/doWJ9gIAAAAAAAAAAAAAKD5MQALAAAAAACgmRm4X5u45VOjs+YL12yLbz48Paqr08mVggT95Lm3Y8Wm0ozZQb3ax7mH9Um4EQAAAAAAAAAAAABA82MAFgAAAAAAQDP00eHd4ivHH5A1/+vsVXH78wsSbATJmLtyc/zi5UUZs7xUxI1njIr8vFTCrQAAAAAAAAAAAAAAmh8DsAAAAAAAAJqprx1/QBw/tGvW/JZn58fz81Yn2AjqV3V1Oq58dGZUVacz5p/5UL8Y2bN9wq0AAAAAAAAAAAAAAJonA7AAAAAAAACaqby8VNzyqdHRv0vrjHk6HfHVB6fF4rXbEm4G9eMPU5bGG+9uyJh1bVsc3zhxcMKNAAAAAAAAAAAAAACaLwOwAAAAAAAAmrH2LQvjrgljolVRfsZ8c2llXHDflNhWVplwM6hbG7aVx3f/PCdrftVpw6Ndi8IEGwEAAAAAAAAAAAAANG8GYAEAAAAAADRzg7u1jR+eeVDWfN6qLfHtP74V6XQ6wVZQt77357mxYXtFxuwjB3SJ0w7cP+FGAAAAAAAAAAAAAADNmwFYAAAAAAAAxKmj9o8Ljx6YNZ/01oq456WFCTaCuvPG4vXx0BvvZcyKCvLiunEjI5VKJdwKAAAAAAAAAAAAAKB5MwALAAAAAACAiIi49KQh8ZEDumTNv/fnufHy22sTbAT7rqKqOq54dGbW/KKjB0b/Lq0TbAQAAAAAAAAAAAAAQIQBWAAAAAAAAPx/+XmpuPXsg6NXx5YZ8+p0xJcfnBrvrd+ecDPYe796ZVHMW7UlY9avc6u46JiBCTcCAAAAAAAAAAAAACDCACwAAAAAAAD+Q8fWRXHXhDHRojDzx0gbtlfEhfdPidKKqoSbQe0t31gS//vs21nz68aNjBaF+Qk2AgAAAAAAAAAAAADgXwzAAgAAAAAAoIYRPdrH9z9xYNZ81vLNcfkjMyKdTifYCmpv4pOzYnt55mFtpx24fxw1eL+EGwEAAAAAAAAAAAAA8C8GYAEAAAAAALCLcaN7xn8d2T9r/si0ZfHryYuTKwS19NycVfH0rFUZszbFBXHVacMTbgQAAAAAAAAAAAAAwH8yAAsAAAAAAICMLjt1aHxwQKes+fWT5sRrC9cl2Aj2TEl5VVzzxKys+TdPHBzd2rVIsBEAAAAAAAAAAAAAADszAAsAAAAAAICMCvPz4qfnHhL7t888KKiqOh1f+u3UWLGpJOFmsHu3/e3tWLoh89/LET3axYQP9k24EQAAAAAAAAAAAAAAOzMACwAAAAAAgKy6tCmOO88bE0UFmT9WWru1PC68f2qUVVYl3AwyW7B6S9zz0sKMWSoVceMZo6Ig38ekAAAAAAAAAAAAAAC55mQ3AAAAAAAAu3VQ7w5xw/iRWfPp722Max6flWAjyCydTseVj82Miqp0xvzcw/rE6N4dki0FAAAAAAAAAAAAAEBGBmABAAAAAADwvs46tHec98E+WfPf/fO9+O1rSxJsBLt6dNqy+MfC9RmzLm2K4tsnDU24EQAAAAAAAAAAAAAA2RiABQAAAAAAwB65+rQRMaZvx6z5NU/MjCnvbkiwEfzbpu0VceOkOVnzKz42LNq3KkywEQAAAAAAAAAAAAAAu2MAFgAAAAAAAHukqCAv7vj0IdG1bXHGvKIqHRc/MCVWbylNuBlE3Pz03Fi3rTxj9qEBnWP86J4JNwIAAAAAAAAAAAAAYHcMwAIAAAAAAGCPdW3XIu4475AozE9lzFdtLosvPTA1yiurE25GczZtyYb47etLMmaF+am4fvzISKUy/50FAAAAAAAAAAAAACA3DMACAAAAAACgVsb07RTXnD4ia/7PxRvihkmzE2xEc1ZZVR1XPDoz0unM+RePGhCDurZJthQAAAAAAAAAAAAAAO/LACwAAAAAAABq7dOH94mzDu2VNf/Nq+/GH6YsTbARzdVvXn03Zq/YnDHr1bFlXHLsAQk3AgAAAAAAAAAAAABgTxiABQAAAAAAQK2lUqm4btzIOKhX+6z3XP7ojJixdFOCrWhuVm0ujVuemZ81v27ciGhZlJ9gIwAAAAAAAAAAAAAA9pQBWAAAAAAAAOyVFoX5ccd5Y6Jz66KMeXlldVxw3xuxbmtZws1oLq57anZsLavMmJ08onscN7Rbwo0AAAAAAAAAAAAAANhTBmABAAAAAACw13p0aBm3f/qQyM9LZcyXbyqNS347LSqrqhNuRlP39/lrYtJbKzJmrYry4+rThyfcCAAAAAAAAAAAAACA2jAACwAAAAAAgH3ywQGd4/JTh2XNX124Lr7357kJNqKpK62oiqsfn5k1//oJg6NHh5YJNgIAAAAAAAAAAAAAoLYMwAIAAAAAAGCf/deR/WL86B5Z85+/vCgef3NZgo1oyn72wjvx7rrtGbOh3dvG+Uf2S7YQAAAAAAAAAAAAAAC1ZgAWAAAAAAAA+yyVSsV3P35gDN+/XdZ7vvPHt2L28s0JtqIpWrhma9z5wjtZ8xvGj4zCfB+DAgAAAAAAAAAAAAA0dE5+AwAAAAAAUCdaFuXHXRPGRIdWhRnz0orquOD+N2Lj9vKEm9FUpNPpuPrxWVFeVZ0x/9ShvePQfp0SbgUAAAAAAAAAAAAAwN4wAAsAAAAAAIA607tTq7jtnIMjL5U5f299SXzld29GVXU62WI0CU++tSJeXrA2Y9axVWH8zylDE24EAAAAAAAAAAAAAMDeMgALAAAAAACAOvWRA/aLS0/KPojoxflr4pZn5iXYiKZgc2lFXP/U7Kz5ZacOi46tixJsBAAAAAAAAAAAAADAvjAACwAAAAAAgDp34dED4tRR3bPmtz//Tvxl5ooEG9HY3fLX+bFmS1nG7AP9OsYnD+mVcCMAAAAAAAAAAAAAAPaFAVgAAAAAAADUuVQqFT/45EExuFubrPd88+Hp8faqLQm2orGasXRT/ObVxRmzgrxU3DB+VOTlpZItBQAAAAAAAAAAAADAPjEACwAAAAAAgHrRurgg7ppwaLRtUZAx31ZeFV+8b0psLq1IuBmNSVV1Oq54bEZUpzPnn/9w/xjSvW2ypQAAAAAAAAAAAAAA2GcGYAEAAAAAAFBv+ndpHT85e3SkUpnzRWu3xTceejOqs003otn77WvvxltLN2XMerRvEV85/oCEGwEAAAAAAAAAAAAAUBcMwAIAAAAAAKBeHTe0W3zt+MFZ82fnrI7b/rYgwUY0Fqu3lMbNT8/Lml8zdkS0Li5IsBEAAAAAAAAAAAAAAHXFACwAAAAAAADq3ZePGxQnDOuWNf/xs/PjuTmrEmxEY3DTpDmxpbQyY3bCsK5x4vDsf6cAAAAAAAAAAAAAAGjYDMACAAAAAACg3uXlpeKWTx0UA7q0znrP1x56Mxat3ZZgKxqyyQvWxmNvLs+YtSjMi2tOHxGpVCrhVgAAAAAAAAAAAAAA1BUDsAAAAAAAAEhEuxaFcfdnxkTrovyM+ZbSyvjib96IrWWVCTejoSmrrIorH5uZNf/K8QdE706tEmwEAAAAAAAAAAAAAEBdMwALAAAAAACAxAzq2jZ+dNZBWfO3V2+Nb/9heqTT6QRb0dDc/feFsXDttozZAV3bxBc+PCDhRgAAAAAAAAAAAAAA1DUDsAAAAAAAAEjUySP3jy8dOzBr/qcZK+POvy9MsBENyZJ12+Onzy/Iml8/fmQUFfiYEwAAAAAAAAAAAACgsXMyHAAAAAAAgMR946ND4qjB+2XNf/D03Hhx/poEG9EQpNPpuPqJmVFWWZ0x//ghPeODAzon3AoAAAAAAAAAAAAAgPpgABYAAAAAAACJy89Lxa1nj44+nVplzKvTEV9+cFq8t357ws3Ipb/MXBkvzMs8+Kx9y8K4/NRhCTcCAAAAAAAAAAAAAKC+GIAFAAAAAABATnRoVRR3TRgTLQvzM+abSirii/dNiZLyqoSbkQtbyypj4pOzs+bfOXlodGlTnGAjAAAAAAAAAAAAAADqkwFYAAAAAAAA5Myw/dvF9z95YNZ8zorN8T+PvBXpdDrBVuTC/z4zP1ZuLs2YHdynQ5z9gd4JNwIAAAAAAAAAAAAAoD4ZgAUAAAAAAEBOjT2oR/z3R/pnzR9/c3n88pXFyRUicbOXb45fTV6cMctLRdwwfmTk5aWSLQUAAAAAAAAAAAAAQL0yAAsAAAAAAICc+87JQ+OIgZ2z5jf9aU68+s66BBuRlOrqdFz52Iyoqk5nzM8/on+M6NE+4VYAAAAAAAAAAAAAANQ3A7AAAAAAAADIuYL8vLjtnIOjZ4eWGfOq6nRc8tupsXxjScLNqG8PvfFeTF2yMWPWrV1xfOPEwckWAgAAAAAAAAAAAAAgEQW5LkDjUVpaGpMnT465c+fGhg0boqioKHr16hWHH354DBgwoE73euedd+L111+PpUuXRnl5eXTs2DGGDh0aRxxxRLRo0aJO9wIAAAAAABqGzm2K487zxsQn7pwc5ZXVu+TrtpXHhfdPiYcv+FC0KMzPQUPq2rqtZfG9P8/Nml992ohoU+wjTQAAcsN5KQAAAAAAAAAAqF9Oizdiy5Yti9dffz1ee+21eP311+ONN96ILVu27Mj79u0bixcv3ud91qxZExMnTox77703tm3blvGeMWPGxFVXXRXjxo3bp70ee+yxuP7662Pq1KkZ8zZt2sT5558f11xzTXTp0mWf9gIAAAAAABqeUb3ax01njIpv/X56xvytpZviqsdmxs2fPDBSqVTC7ahr3/3z3NhUUpExO3rwfnHqqO4JNwIAoCFzXsp5KQAAAAAAAAAAmhYDsBqZV155JX70ox/Fa6+9FsuXL6/3/V544YU488wzY+3atbu9b8qUKTF+/Pj4zGc+E/fcc08UFRXVap+ysrL4/Oc/Hw888MBu79u6dWv89Kc/jYceeij+8Ic/xFFHHVWrfQAAAAAAgIbvk2N6xYylG+PXr76bMf/9lKVxYO8OMeGDfRNuRl16beG6+MOUpRmz4oK8uG7cCEPOAABwXsp5KQAAAAAAAAAAmrC8XBegdv75z3/Go48+mshhrpdffjlOPfXUXQ5zdejQIQ4++ODo169f5Ofn18h+85vfxDnnnBPpdHqP96muro5PfepTuxzmys/Pj/79+8fo0aOjffv2NbI1a9bEKaecEq+++mot/1QAAAAAAEBjcOVpw+MD/Tpmza97cla8sXh9go2oS+WV1XHlYzOz5l86dlD07dw6wUYAADRUzkv9H+elAAAAAAAAAABoigzAakLatGlTZ+/asGFDfOpTn4qSkpId1/r27RuPPfZYrF+/PqZOnRqLFi2KxYsXxwUXXFDj2UceeSR+/OMf7/FeP/jBD+Lxxx+vce3CCy+MJUuWxMKFC2PatGmxfv36eOSRR6JPnz477tm+fXucddZZsWnTpr38UwIAAAAAAA1VYX5e3P7pQ6Jbu+KMeUVVOi56YGqs2lyacDPqwi9eXhRvr96aMRvQpXVccPSAhBsBANAYOS8FAAAAAAAAAACNmwFYjVTbtm3jmGOOiUsvvTR+//vfx+LFi+PJJ5+ss/f/4Ac/qPGrif3794/JkyfHuHHjIpVK7bjeq1evuPPOO+PGG2+s8fx1110XGzZseN991q1bt8uz3/3ud+OOO+6IHj167LiWl5cXZ5xxRkyePDn69eu34/rSpUvjlltuqe0fDwAAAAAAaAS6tm0Rd5w3JgrzUxnzNVvK4uIHpkZ5ZXXCzdgXSzdsj1ufeztrfv34kVFckJ9gIwAAGgPnpf6P81IAAAAAAAAAADQlBmA1MqeffnrMmjUrNm7cGM8//3zcfPPN8clPfjL69u1bZ3usWbMmbrvtthrX7rnnnhoHrHZ22WWXxVFHHbVjvWnTpvjhD3/4vnvdfPPNsWXLlh3ro446Kr7zne9kvb9nz57x85//vMa1H//4x7Fu3br33QsAAAAAAGh8DunTMSaOHZk1n/LuhrjuqVkJNmJfXfvE7CipqMqYjT2oRxw5qEvCjQAAaMicl3JeCgAAAAAAAACApssArEZm4MCBMXz48MjLq79/dL/73e9i69atO9ZHHXVUHH/88bt9JpVKxTXXXFPj2i9/+ctIp9NZn6muro5f/epXNa5de+21NX4xMZPjjz8+PvKRj+xYb9myJR5++OHdPgMAAAAAADRe5x7eJ845rHfW/P5/LImH//lego3YW8/MXhXPzlmVMWvboiCuPG1Ywo0AAGjonJdyXgoAAAAAAAAAgKbLACx28fjjj9dYf/7zn9+j54499tjo37//jvXKlSvjH//4R9b7J0+eHGvWrNmxHjBgQBxzzDF7tNfOnR577LE9eg4AAAAAAGicrh07Ikb37pA1v/KxmTH9vY2J9aH2tpdXxrVPzMqaX3rSkOjatkWCjQAA4P84LwUAAAAAAAAAALlhABY1bN26NV588cUa10488cQ9ejaVSsUJJ5xQ49pTTz2V9f5JkybVWH/0ox99318z/M97/9MLL7wQ27Zt26NnAQAAAACAxqe4ID/uOO+Q6NKmKGNeXlUdF94/JdZuLUu4GXvq1ucWxLKNJRmzA3u1j08f3jfhRgAA4LwUAAAAAAAAAADkkgFY1DBr1qyoqKjYse7fv3907959j58/8sgja6zffPPNrPfunB1xxBF7vE+PHj2iX79+O9bl5eUxe/bsPX4eAAAAAABofPZv3zJuP/eQKMjL/AXxFZtK40sPTI2KquqEm/F+5q3cEj9/aWHGLJWKuGH8yMjP8s8VAADqk/NSAAAAAAAAAACQOwZgUcOcOXNqrIcPH16r53e+f+f35WovAAAAAACgaTh8QOe48mPDsuavLVof3/3T3AQb8X7S6XRc9djMqKxOZ8wnfLBvHNirQ7KlAADg/3NeCgAAAAAAAAAAcscALGqYN29ejXXv3r1r9fzO97/77rtRWlq6y30lJSWxZMmSOt1r5+4AAAAAAEDT9Nkj+sXHD+6ZNf/lK4vi0WlLE2zE7vxhytJ4ffH6jFmXNsXxzROHJNwIAAD+zXkpAAAAAAAAAADIHQOwqGH16tU11r169arV8926dYuCgoId6+rq6li3bt0u961duzbS6X//yndhYWF07dq1Vnv17Fnziy07dwcAAAAAAJqmVCoVN318VIzo0S7rPZc9MiNmLd+UYCsy2bCtPL7757lZ86tOGxbtWxYm2AgAAGpyXgoAAAAAAAAAAHKn4P1voTnZunVrjXXr1q1r9XwqlYqWLVvGli1bsr4z07VWrVpFKpWq1V47d8u0z95YvXp1rFmzplbPLFiwoE72BgAAAAAA9kyLwvy4a8KYOP22l2PD9opd8tKK6rjgvinx5CUfjo6ti3LQkIiIm5+eG+u3lWfMjhzUOcYe1CPhRgAAUJPzUs5LAQAAAAAAAACQOwZgUcPOh6JatGhR63fszYGuvd1nd+/cWz/72c9i4sSJdfIuAAAAAACg/vTq2Cp+eu4hMeEXr0V1etd86YaS+MrvpsW9nzss8vNq98Vy9t2UdzfEg6+/lzErys+L68eNrPUX/gEAoK45L+W8FAAAAAAAAAAAuZOX6wI0LKWlpTXWRUW1/0X04uLiGuuSkpKc7QMAAAAAADRtRw7qEv9zytCs+Utvr40fPD0vwUZERFRWVccVj87Iml949IAYsF+bBBsBAEBmzksBAAAAAAAAAEDuGIBFDTv/smB5eXmt31FWVrbbdya5DwAAAAAA0PT990cGxGkH7p81v/Pv78Skt1Yk2Ih7Jy+OuSu3ZMz6dGoVFx87KOFGAACQmfNSAAAAAAAAAACQOwW5LkDD0qZNzV/a3vmXB/fEzr8suPM7k9xnb1x88cVx5pln1uqZBQsWxPjx4+tkfwAAAAAAoHZSqVTc/MkDY8HqrVmHLl36h+kxqGubGNK9bcLtmp8Vm0rix8/Mz5pfN25EtCjMT7ARAABk57yU81IAAAAAAAAAAOSOAVjUsPOhqG3bttXq+XQ6vVcHurZv3x7pdDpSqdQe77Vzt7o60NW1a9fo2rVrnbwLAAAAAABIRquigrhrwpg4/baXY3Np5S759vKquOC+N+LxSz4c7VsW5qBh83Hdk7NjW3lVxuzUUd3jmCE+hwEAoOFwXsp5KQAAAAAAAAAAcicv1wVoWHY+yLR06dJaPb9q1aqorPz3l0ry8vKiS5cuu9zXpUuXGoe3KioqYvXq1bXaa9myZTXWDmEBAAAAAEDz1rdz6/jJOQdHtu+PL163Pb72u2lRXZ1Otlgz8vy81fHnmSszZq2L8uPq00Yk3AgAAHbPeSkAAAAAAAAAAMgdA7CoYciQITXWS5YsqdXzO9/ft2/faNGixS73tWzZMvr06VOnew0dOrRWzwMAAAAAAE3PsUO6xjc/Ojhr/vy8NfG/z72dYKPmo7SiKq55fFbW/BsnDonu7Xf93AgAAHLJeSkAAAAAAAAAAMgdA7CoYedDUbNnz67V83PmzNnt+3K1FwAAAAAA0HxcfMygOHF4t6z5rc+9Hc/MXpVgo+bh9ucXxJL12zNmw/dvF5/9UN+EGwEAwPtzXgoAAAAAAAAAAHLHACxqGDFiRBQWFu5YL168OFasWLHHz7/yyis11qNHj856787Z5MmT93ifFStWxOLFi3esCwsLY/jw4Xv8PAAAAAAA0HTl5aXiR2cdFAP3a531nq8/9Ga8s2Zrgq2atgWrt8adf38nY5ZKRdxwxsgoyPfRJAAADY/zUgAAAAAAAAAAkDtOmVND27Zt46ijjqpx7ZlnntmjZ9PpdDz77LM1rp1++ulZ7z/ttNNqrJ999tlIp9N7tNdf//rXGutjjz022rRps0fPAgAAAAAATV/bFoVx92cOjTbFBRnzrWWVccF9U2JrWWXCzZqedDodVz02MyqqMn/Oc/YH+sQhfTom3AoAAPaM81IAAAAAAAAAAJA7BmCxi7Fjx9ZY/+IXv9ij555//vlYtGjRjnW3bt3i8MMPz3r/EUccEV26dNmxXrhwYbzwwgt7tNfOncaNG7dHzwEAAAAAAM3HwP3axC1nHZQ1X7B6a3zz4TejunrPvnBOZo+/uTxeXbguY9a5dVF85+QhCTcCAIDacV4KAAAAAAAAAABywwAsdnH22WdH69atd6xffPHF+Nvf/rbbZ9LpdEycOLHGtc997nORl5f9r1heXl6cf/75Na5NnDjxfX/V8LnnnouXXnppx7pt27Zx1lln7fYZAAAAAACgeTpxRPf4ynGDsuZPz1oVd/z9nQQbNS2bSirihkmzs+aXnTosOrQqSrARAADUnvNSAAAAAAAAAACQGwZgsYuuXbvGJZdcUuPaF77whVi+fHnWZ7773e/Giy++uGPdvn37uPTSS993r+985zvRpk2bHeu///3v8f3vfz/r/cuWLYsvfOELNa599atfrfHLiAAAAAAAAP/paycMjmOH7Jc1/+Ff58UL81Yn2Kjp+OHT82Lt1vKM2eH9O8UnDumZcCMAAKg956UAAAAAAAAAACA3CnJdgNp75ZVXoqSkZJfr06dPr7EuLS2NZ599NuM7evToEcOHD8+6x7e//e349a9/HStXroyIiEWLFsURRxwRt956a5x++umRSqUiImLp0qVxww03xF133VXj+SuuuCI6der0vn+WLl26xOWXXx6XX375jmuXXXZZLFmyJK688sro0aNHRERUV1fHE088EV/96ldjyZIlNf4c3/zmN993HwAAAAAAoPnKy0vF/37q4Bh7+8vx7rrtu+TpdMRXHpwWT375w9G3c+scNGycpr+3Me5/7d2MWUFeKm4YP3LHZ0oAALAvnJdyXgoAAAAAAAAAgKYplU6n07kuQe3069cv3n0385cJ9tRnP/vZuPfee3d7z4svvhgnnXRSlJaW1rjeoUOH6N+/f2zcuDGWLFkSVVVVNfJx48bFo48+usdfaKiuro5x48bFU089VeN6fn5+9O3bN9q3bx+LFi2KjRs31shbtmwZzzzzTBx55JF7tE99mjVrVowcOXLHeubMmTFixIgcNgIAAAAAAHY2b+WWOONnr8T28qqM+dDubeORi4+IVkV+Q+b9VFWnY9ztL8fMZZsz5hcdMzC+c/LQhFsBANTkPEfT4bzU/3FeCgAAAAAAAACATBrzWY68XBeg4TrqqKNi0qRJu/wy4caNG2PatGmxaNGiXQ5znXvuufHQQw/V6te88/Ly4ve//32cffbZNa5XVVXFwoULY9q0absc5urcuXP86U9/ahCHuQAAAAAAgMZhSPe2cfMnD8yaz125Jb7zxxnh92Pe332vLs46/Kpnh5bxleMOSLgRAADsO+elAAAAAAAAAAAgWQZgsVvHHXdczJ49Oy666KJo1apV1vsOPvjg+OMf/xgPPPBAFBcX13qfFi1axIMPPhh/+MMfYvTo0Vnva926dVx88cUxe/bsOOaYY2q9DwAAAAAA0LyddmCPuODoAVnzJ6cvj5+/tCjBRo3P6s2l8aO/zs+aTxw7IloW5SfYCAAA6o7zUgAAAAAAAAAAkJxU2k9Ys4dKSkpi8uTJMWfOnNi4cWMUFRVFz5494/DDD49BgwbV6V4LFiyI1157LZYtWxbl5eXRoUOHGDZsWBx55JHRokWLOt2rLsyaNStGjhy5Yz1z5swYMWJEDhsBAAAAAADZVFZVx/m/+me8vGBtxjwvFXH/5w+PIwZ1SbhZ4/DlB6fFk9OXZ8w+Orxb3POZQxNuBACQmfMc7CvnpbLz7xcAAAAAAAAAQMPRmM9yFOS6AI1Hy5Yt4/jjj4/jjz++3vcaNGhQnR8SAwAAAAAAiIgoyM+L2845OE677eVYtrFkl7w6HXHJg9PiiUuOjF4dW+WgYcP10ttrsg6/almYH9eObRwfkgIAwJ5wXgoAAAAAAAAAAOpXXq4LAAAAAAAAQNI6ti6KuyaMieKCzB+Xrd9WHhfePyVKK6oSbtZwlVZUxdWPz8qaf+2EA6Jnh5YJNgIAAAAAAAAAAAAAoDEzAAsAAAAAAIBmaWTP9vG9T4zKms9ctjkuf3RGpNPpBFs1XHf9fWEsWrstYzakW9v4rw/3T7gRAAAAAAAAAAAAAACNmQFYAAAAAAAANFtnHNwrzj+iX9b8kanL4jevvptcoQZq8dptcfsLC7LmN5wxMgrzffQIAAAAAAAAAAAAAMCecwodAAAAAACAZu2Kjw2Lw/p3yppf/9TseH3R+gQbNSzpdDquenxmlFdWZ8zPHNMrPtAv+/9+AAAAAAAAAAAAAACQiQFYAAAAAAAANGuF+Xlx+7mHRPd2LTLmldXpuPiBqbFyU2nCzRqGSTNWxEtvr82YdWhVGJedOizhRgAAAAAAAAAAAAAANAUGYAEAAAAAANDs7de2OO6cMCaK8jN/fLZ2a1lceP+UKKusSrhZbm0prYjrnpydNf+fk4dGp9ZFCTYCAAAAAAAAAAAAAKCpMAALAAAAAAAAImJ07w5x/fgRWfM339sY1z6RfRhUU3TLM/Nj9ZayjNmYvh3jrEN7J9wIAAAAAAAAAAAAAICmwgAsAAAAAAAA+P8+9YE+ce7hfbLmD76+JB58fUmCjXJn5rJN8evJizNm+XmpuGH8yMjLSyVbCgAAAAAAAAAAAACAJsMALAAAAAAAAPgP15w+PA7p0yF7/vismLZkQ3KFcqCqOh1XPDYzqtOZ8/86sl8M279dsqUAAAAAAAAAAAAAAGhSDMACAAAAAACA/1BckB93nDcm9mtbnDEvr6qOi+6fGqu3lCbcLDkPvr4kpr+3MWO2f/sW8bUTBidbCAAAAAAAAAAAAACAJscALAAAAAAAANhJt3Yt4mefPiQK8lIZ85WbS+OSB6ZFRVV1ws3q35otZXHzX+Zmza85fXi0Li5IsBEAAAAAAAAAAAAAAE2RAVgAAAAAAACQwQf6dYprTh+eNX998fq4cdKcBBsl47t/mhObSyszZscO2S9OGtE94UYAAAAAAAAAAAAAADRFBmABAAAAAABAFud9sG98ckyvrPm9kxfHH6csTbBR/Xr1nXXxyLRlGbPigryYOHZkpFKphFsBAAAAAAAAAAAAANAUGYAFAAAAAAAAWaRSqbhh/Mg4sFf7rPdc/uiMmLlsU4Kt6kd5ZXVc9fjMrPlXjj8g+nRulWAjAAAAAAAAAAAAAACaMgOwAAAAAAAAYDdaFObHHeeNiU6tizLmZZXVccF9U2L9tvKEm9Wte15aGAtWb82YDdyvdfz3RwYk3AgAAAAAAAAAAAAAgKbMACwAAAAAAAB4Hz07tIyfnntw5OelMubLNpbElx+cGpVV1Qk3qxvvrd8etz73dtb8+vEjo6jAR4sAAAAAAAAAAAAAANQdp9QBAAAAAABgDxwxsEtcdsrQrPkrC9bFzU/PS7BR3Uin03HNE7OirDLz8K4zDu4ZRwzsknArAAAAAAAAAAAAAACaOgOwAAAAAAAAYA99/sP9Y9zoHlnzu19cGE9OX55go3339KxV8be5qzNm7VoUxOWnDku4EQAAAAAAAAAAAAAAzYEBWAAAAAAAALCHUqlUfO/jB8bQ7m2z3vPtP7wVc1ZsTrDV3ttWVhkTn5yVNb/05KGxX9viBBsBAAAAAAAAAAAAANBcGIAFAAAAAAAAtdCyKD/unnBotG9ZmDEvqaiKC+6bEpu2VyTcrPZ+8tzbsWJTacbsoN4d4tzD+iTcCAAAAAAAAAAAAACA5sIALAAAAAAAAKilPp1bxa3nHBypVOZ8yfrt8dWHpkVVdTrZYrUwd+Xm+MXLizJmeamIG8ePjPy8LH9AAAAAAAAAAAAAAADYRwZgAQAAAAAAwF44evB+celJQ7LmL8xbEz9+Zn6CjfZcdXU6rnx0ZtYBXZ/5UL8Y2bN9wq0AAAAAAAAAAAAAAGhODMACAAAAAACAvXTR0QPjlJHds+Y/fX5BPD1rZYKN9szvp7wXb7y7IWPWtW1xfPPEwQk3AgAAAAAAAAAAAACguTEACwAAAAAAAPZSKpWKH5x5UBzQtU3We7758PRYsHpLgq12b/228vjun+dmza86bXi0bVGYYCMAAAAAAAAAAAAAAJojA7AAAAAAAABgH7QpLoi7JoyJtsUFGfOtZZXxxfumxJbSioSbZfa9P8+Jjdszd/nIAV3itAP3T7gRAAAAAAAAAAAAAADNkQFYAAAAAAAAsI8G7Ncm/vfs0VnzhWu2xTcenh7V1enkSmXwxuL18fAbSzNmRQV5cd24kZFKpRJuBQAAAAAAAAAAAABAc2QAFgAAAAAAANSB44d1i68ef0DW/JnZq+Knzy9IsFFNFVXVccWjM7PmFx8zMPp3aZ1gIwAAAAAAAAAAAAAAmjMDsAAAAAAAAKCOfPX4A+L4oV2z5j9+dn48P3d1go3+7VevLIp5q7ZkzPp1bhUXHj0w4UYAAAAAAAAAAAAAADRnBmABAAAAAABAHcnLS8WPzx4d/bu0zpin0xFf+d20WLx2W6K9lm0siR8/83bW/PrxI6NFYX6CjQAAAAAAAAAAAAAAaO4MwAIAAAAAAIA61K5FYdw9YUy0Lso8UGpLaWV88b43YltZZWKdJj4xK0oqqjJmpx24f3zkgP0S6wIAAAAAAAAAAAAAABEGYAEAAAAAAECdO6Bb2/jhmQdlzeev2hrf/uNbkU6n673Lc3NWxV9nr8qYtSkuiKtOG17vHQAAAAAAAAAAAAAAYGcGYAEAAAAAAEA9OGXU/nHRMQOz5pPeWhF3v7iwXjuUlFfFNU/Mypp/88TB0a1di3rtAAAAAAAAAAAAAAAAmRiABQAAAAAAAPXkWycOiY8c0CVr/v2/zI2X3l5Tb/vf9re3Y+mGkozZyJ7tYsIH+9bb3gAAAAAAAAAAAAAAsDsGYAEAAAAAAEA9yc9LxW3nHBy9O7XMmFenI7784LR4b/32Ot97weotcc9LCzNmqVTEjeNHRUG+jwsBAAAAAAAAAAAAAMgNJ9oBAAAAAACgHnVoVRR3nXdotCjM/NHcxu0VccF9U6KkvKrO9kyn03HFozOjoiqdMf/04X3ioN4d6mw/AAAAAAAAAAAAAACorYJcFwAAAAAAAICmbniPdvH9TxwYX/3dmxnz2Ss2x+WPzohbzjooUqnUPu/3yNRl8dqi9RmzLm2K4tKThu7zHgAAACRv0aZFMWfdnJi1blYs3bo0yirLIiKiRUGL6N22d4zoPCKGdx4efdr1yXFTAAAAAAAAAID3ZwAWAAAAAAAAJGDc6J7x1tJN8YuXF2XMH522LA7s1T4+d2T/fdpn4/byuOlPc7LmV3xsWLRvWbhPewAAAJCcxZsWx0PzHoonFz4Zm8o27dEznVp0inEDx8VZQ86KXm171XNDAAAAAAAAAIC9YwAWAAAAAAAAJOSyU4bGrOWb4h8L12fMb5g0J4bt3y4+OKDzXu9x89PzYt228ozZhwZ0jvGje+71uwEAAEjOW2veitum3RavrXgt0pGu1bPrS9fHr2b9Kn49+9dxZI8j48sHfzmGdR5WT00BAAAAAAAAAPZOXq4LAAAAAAAAQHNRkJ8Xt597SPRo3yJjXlWdjkt+OzVWbCrZq/dPW7IhHnx9ScasMD8V148fGalUaq/eDQAAQDLKqsriR2/8KCb8eUL8Y8U/aj386j9Vp6vjpWUvxbmTzo3bp90eFdUVddgUAAAAAAAAAGDfGIAFAAAAAAAACercpjjunDAmigoyf1S3dmt5XHj/1CitqMqYp9Pp2FJaEeu3lceW0opIp//vi9CVVdVxxaMzI53le9EXHDUwBnVtUyd/BgAAAOrHvPXz4swnz4x7Z90b1enqOntvZboy7nzrzjj7qbNj0aZFdfZeAAAAAAAAAIB9UZDrAgAAAAAAANDcHNirQ9w4fmRc+oe3MubT39sY1zw+K773iVGRSqVi7srN8cSby2P60o0xc9nm2FRSsePe9i0LY2TPdhERMXvF5ozv692pZVxy3KC6/4MAAABQZ6atnhZfevZLsaViS73tMX/D/Pjsnz8bd370zhjeeXi97QMAAAAAAAAAsCcMwAIAAAAAAIAcOPPQ3vHW0k1x3z/ezZg/9MZ7UVSYF/NWbInXF6/P+p5NJRXxyoJ1u93rurEjo0Vh/j71BQAAoP7MXDszLnzmwtheub3e99pQtiH++6//HfeefG8c0PGAet8PAAAAAAAAACCbvFwXAAAAAAAAgObqqtOGx6F9O2bN73v13d0Ov9oTJ4/oHscO7bpP7wAAAKD+rC1ZGxc/e3Eiw6/+ZXP55rjw2QtjU9mmxPYEAAAAAAAAANiZAVgAAAAAAACQI0UFefGzTx8SXdsW18v7UxHx6cP71Mu7AQAAqBvXvXpdbCjbkPi+q7evju+9/r3E9wUAAAAAAAAA+BcDsAAAAAAAACCHurZrEXecNyYK81N1/u50RFzy4LSYu3Jznb8bAACAfffUO0/F8+89n7v9Fz4Vzy/J3f4AAAAAAAAAQPNmABYAAAAAAADk2Ji+HePSk4bUy7s3lVTEZ3/5emzYVl4v7wcAAGDvbKvYFt/75/dyXSOu/8f1UV7lvxkBAAAAAAAAgOQZgAUAAAAAAAANwMxlm+rt3as2l8W1T86qt/cDAABQe0++82RsKqu//xbcU2tK1sTTi5/OdQ0AAAAAAAAAoBkyAAsAAAAAAABy7G9zV8UT01fU6x6Pv7k8/jZ3Vb3uAQAAwJ57eN7Dua6ww0PzHsp1BQAAAAAAAACgGTIACwAAAAAAAHLszhcWJrPP35PZBwAAgN2bsmpKvL3x7VzX2GH6mukxZ92cXNcAAAAAAAAAAJoZA7AAAAAAAAAgh+au3ByvL16fyF6vL1of81ZuSWQvAAAAspu8fHKuK+yiIXYCAAAAAAAAAJo2A7AAAAAAAAAgh554c3my+01fluh+AAAA7Gr2utm5rrCLhtgJAAAAAAAAAGjaDMACAAAAAACAHJq+dGOy+723KdH9AAAA2FVDHDbVEDsBAAAAAAAAAE2bAVgAAAAAAACQI+l0OmYu25zonjOWbYp0Op3ongAAAPzbmu1rYn3p+lzX2MXSrUtja/nWXNcAAAAAAAAAAJoRA7AAAAAAAAAgR7aWVcamkopE99xUUhHbyqsS3RMAAIB/21rRcIdMbavYlusKAAAAAAAAAEAzYgAWAAAAAAAA5EhFVTon+5ZXVudkXwAAACIqqpIdhFwbFdUNtxsAAAAAAAAA0PQYgAUAAAAAAAA5Upifysm+RQU+JgQAAMiVwvzCXFfIqiF3AwAAAAAAAACaHifbAQAAAAAAIEfaFBdE+5bJfrm4fcvCaF2Un+ieAAAA/FuH4g65rpBRXiov2hW1y3UNAAAAAAAAAKAZMQALAAAAAAAAciSVSsXInsl+uXhUz/aRSqUS3RMAAIB/69iiY3Rr1S3XNXbRt13faFnQMtc1AAAAAAAAAIBmxAAsAAAAAAAAyKGDenVIdr/e7RPdDwAAgF2N6Dwi1xV20RA7AQAAAAAAAABNmwFYAAAAAAAAkENjR/dIdr+Deia6HwAAALsa3nl4rivsoiF2AgAAAAAAAACaNgOwAAAAAAAAIIeGdm8Xh/XrlMheh/XvFEO6t01kLwAAALI7pvcxua5QQypScXSvo3NdAwAAAAAAAABoZgzAAgAAAAAAgBy78JgBiexz0dEDE9kHAACA3RvSaUgctN9Bua6xw4d6fCj6tOuT6xoAAAAAAAAAQDNjABYAAAAAAADk2HFDu8XYg3rU6x7jRveIY4d2rdc9AAAA2HPnDD0n1xV2OHvo2bmuAAAAAAAAAAA0QwZgAQAAAAAAQAMwceyI6NauuF7e3a1dcVx7+oh6eTcAAAB758S+J8b+rffPdY3o365/HN3r6FzXAAAAAAAAAACaIQOwAAAAAAAAoAHo2Loofv1fh0X7loV1+t72LQvj1/91WHRsXVSn7wUAAGDfFOYXxsQjJua0Q14qL6478rrISzlOCgAAAAAAAAAkz4kFAAAAAAAAaCCGdm8XD13wwejWrrhO3tetXXE8dMEHY2j3dnXyPgAAAOrWh3p8KD55wCdztv95w86L0V1H52x/AAAAAAAAAKB5MwALAAAAAAAAGpCh3dvFX756VIwb3WOf3jNudI/4y1ePMvwKAACggfvWB74Vvdv2TnzfQR0GxZcP/nLi+wIAAAAAAAAA/IsBWAAAAAAAANDAdGxdFD85++D45fmHxmH9O9Xq2cP6d4pfnf+B+MnZB0fH1kX11BAAAIC60rqwddz90buja6uuie3Zs03PuPOjd0aLghaJ7QkAAAAAAAAAsLOCXBcAAAAAAAAAMjtuaLc4bmi3mLdySzwxfVlMf29TzFi2KTaVVOy4p33LwhjVs30c1Lt9jD2oZwzp3jaHjQEAANgbvdr2il+e9Mv477/+d6zYtqJe9+rbrm/c89F7olurbvW6DwAAAAAAAADA+zEACwAAAAAAABq4Id3bxqXdh0ZERDqdjm3lVVFeWR1FBXnRuig/UqlUjhsCAACwr/q26xv3nXpfXPXyVfHqilfrZY+jex0dE4+YGJ1bdq6X9wMAAAAAAAAA1IYBWAAAAAAAANCIpFKpaFNcEFGc6yYAAADUtW6tusXdJ94dv5/3+/jRlB/FtoptdfLedkXt4juHfSfGDhxbJ+8DAAAAAAAAAKgLBmABAAAAAAAAAAAANCBnDjkzjux5ZPx8xs9j0sJJsb1y+169p01hmxg7cGx8ftTno2urrnXcEgAAAAAAAABg3xiABQAAAAAAAAAAANDA9GjTI67+0NXxjTHfiCcXPhmPLXgs5q+fH5Xpyt0+V5BXEMM7DY/xg8bHxwZ8LFoVtkqoMQAAAAAAAABA7RiABQAAAAAAAAAAANBAtSlqE+cMPSfOGXpOlFWVxfwN82P2utmxdMvSKKsqi4iI4vzi6NO2TwzvPDwGdxwchfmFOW4NAAAAAAAAAPD+DMACAAAAAAAAAAAAaASK84tjVJdRMarLqFxXAQAAAAAAAADYZ3m5LgAAAAAAAAAAAAAAAAAAAAAAAEDzYgAWAAAAAAAAAAAAAAAAAAAAAAAAiTIACwAAAAAAAAAAAAAAAAAAAAAAgEQZgAUAAAAAAAAAAAAAAAAAAAAAAECiDMACAAAAAAAAAAAAAAAAAAAAAAAgUQZgAQAAAAAAAAAAAAAAAAAAAAAAkCgDsAAAAAAAAAAAAAAAAAAAAAAAAEiUAVgAAAAAAAAAAAAAAAAAAAAAAAAkygAsAAAAAAAAAAAAAAAAAAAAAAAAEmUAFgAAAAAAAAAAAAAAAAAAAAAAAIkyAAsAAAAAAAAAAAAAAAAAAAAAAIBEGYAFAAAAAAAAAAAAAAAAAAAAAABAogzAAgAAAAAAAAAAAAAAAAAAAAAAIFEGYAEAAAAAAAAAAAAAAAAAAAAAAJAoA7AAAAAAAAAAAAAAAAAAAAAAAABIlAFYAAAAAAAAAAAAAAAAAAAAAAAAJMoALAAAAAAAAAAAAAAAAAAAAAAAABJlABYAAAAAAAAAAAAAAAAAAAAAAACJMgALAAAAAAAAAAAAAAAAAAAAAACARBmABQAAAAAAAAAAAAAAAAAAAADA/2PvzsN0qv8/jr/ubXZmDNmy7zsRSsqaENEi0YIoIZVfpShZUlRapLIvqSRbsn1lKUShlCX7boydGdts93J+f7juk9s6w8zcM7fn47pc3865zzn3+8z3+pz3OZ/783kfAMhUFMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABApqIAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIVBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQqSiABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgExFASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkKgpgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFNRAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZigJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyFQUwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECmogAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhUFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCpKIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACATEUBLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQqCmABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgU1EACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmKAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIVHZ/BwAEguTkZJ/lXbt2+SkSAAAAAAAAAAAAAAAASJeP37h0fAeAG8d4KQAAAAAAAAAAAAAAgKwjO4+VogAWkA5iYmJ8llu3bu2fQAAAAAAAAAAAAAAAAHBFMTExql69ur/DAAIC46UAAAAAAAAAAAAAAACyruw0Vsrq7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwa6EAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKVxTAMw99BANldfHy8li9fbi4XLlxYwcHBfozo1rVr1y61bt3aXJ49e7ZKlSrlv4AA3DTaNRBYaNNA4KFdA4GHdg0EHto1EHho10DgoV0DgYU2nXUkJycrJibGXK5Xr56ioqL8FxAQQBgvlTWQcwBkJK4xADIS1xgAGYlrDICMxDUGQEbiGgMgI3GNAZCRuMZkDdl5rJTd3wEAgSAqKkqtWrXydxi4glKlSqlixYr+DgNAOqJdA4GFNg0EHto1EHho10DgoV0DgYd2DQQe2jUQWGjT/lW9enV/hwAEJMZLZU3kHAAZiWsMgIzENQZARuIaAyAjcY0BkJG4xgDISFxjAGQkrjH+k13HSln9HQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuLRTAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQKaiABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyFQWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkKkogAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBMRQEsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCoKYAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBTUQALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmYoCWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhUFMACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABApqIAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKV3d8BAEB6uu2229S/f3+fZQDZG+0aCCy0aSDw0K6BwEO7BgIP7RoIPLRrIPDQroHAQpsGAGQWcg6AjMQ1BkBG4hoDICNxjQGQkbjGAMhIXGMAZCSuMQAyEtcY3CyLYRiGv4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADArcPq7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwa6EAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIVBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQqSiABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgExFASwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkKgpgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFNRAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZigJYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyFQUwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECmogAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhUFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCpKIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACATGX3dwAAAAAAAAAAAAAAAAAAAAC4tpSUFG3btk379u1TbGyszp49K6fTqZw5cyp37tyqUqWKypcvL5vN5u9QAQAAAMCvtm/frg0bNujgwYNKSEhQaGio8uXLpzJlyqhq1aoKDg72d4gAAACm5ORk/fPPP9q6davi4uKUmJionDlzKm/evKpevbpKlSoli8Xi7zABZFNnz57VypUrdfDgQZ04cUJ2u12FChXSnXfeqdKlS/s7PAC3oKSkJP3+++/atm2b4uLiFBQUpEKFCql27doqUaKEv8ODn1AACwAAAAAAAAAAAAAAAAAAIAuaMWOGlixZolWrVmnbtm1yuVzX3D4yMlLt2rXTyy+/rHLlymVSlAAAAADgf2fPntWIESM0btw47d2796rbBQUFqVatWnrsscf08ssvZ2KEAAAAvtatW6dPP/1UM2bMUHJy8lW3u/3229W5c2e9/PLLio6OzsQIAWRnf/zxhwYOHKilS5de9felSpUq6fXXX9fTTz9NoT3gFhYbG6u1a9dqzZo1Wrt2rf766y+dPXvW/Lxo0aLat2/fTX/P8ePHNXDgQE2aNEnnz5+/4jY1atRQv3791KpVq5v+PmQvFsMwDH8HAQAAAAAAAAAAAAAAAAAAAF+FChVSbGxsmvdzOBzq27ev+vfvz4QFADetXbt2mjp1qs+69JrsACBwDRgwQAMHDrzh/Tt06KBJkyalX0AAAtq8efPUpUsXHT16NNX75MuXT0eOHMnAqABkRx07dtTXX3+dLsfiuQnA1Xg8HvXt21cfffSRPB5PqvfLly+fJk2apKZNm2ZgdACyO5fLpZdeekkjR45M9T5NmjTR1KlTlStXrgyMDEBWsmrVKn388cdas2aNDh06dM1t0+PZZtmyZWrTpo1OnDiRqu2feeYZjR07VkFBQTf1vcg+7P4OAAAAAAAAAAAAAAAAAAAAAKkTEhKiIkWKKDIyUh6PRydOnNCBAwd08ftQnU6nBg4cqJiYGI0fP96P0QLI7ubOnXtZ8SsAAICs5NNPP9Wrr77q80wkXXh2KliwoPLkyaPExEQdPnw41ZMsASA9MFEbwNV07dpV48aNu2x9WFiYSpYsqdDQUJ08eVJ79uzxucc5evSoWrVqpdmzZ6tZs2aZGTKAbMLtdqtVq1ZasGDBZZ8VLFhQBQsW1Llz57R79245nU7zs0WLFun+++/X8uXLFR4enpkhA/CTP//8Uz/++GOmfNfKlSvVvHlzJSYm+qyPiopS8eLFFRcXp5iYGLndbvOzyZMn69y5c5oxYwYvfLpFWP0dAAAAAAAAAAAAAAAAAAAAAK6sYMGCeu655/TNN99o165dOn/+vLZv3661a9fqr7/+0r59+3Ty5EmNGTNGhQoV8tl3woQJmjhxop8iB5DdnT59Wt26dfN3GAAAAFc1fvx4/d///Z9PYYhmzZrpf//7n+Lj47V7926tWbNGGzdu1PHjxxUbG6tvvvlGjz76KIVpAGS4Fi1a+DsEAFnQjBkzLit+VaFCBc2fP1+nT5/Wxo0btWbNGu3atUtHjx7VwIEDfe5bUlJS1KFDB8XFxWV26ACygbfffvuy4lctW7bUxo0bFRsbqz///FNbt27V8ePH9emnnypHjhzmduvWrVP37t0zO2QAWVBERES6HSsuLk5t27b1KX5VtGhRzZ49W6dOndLff/+tvXv3at++feratavPvrNmzdKnn36abrEga7MYl5a3BwBkCYZhUI0SAIAsjnwNAEDWQ34GAhttHAg8tGsAALI+8jUA+NfGjRtVuXLlVF+L4+Li1LhxY/3999/mugIFCujgwYOyWnlnKoC0ef755zV27FhJUnh4uM6fP29+VrRoUe3bt89PkQHIDgYMGKCBAweay8OGDVPVqlVTvX/BggVVoUKFjAgNQIDYtWuXKleurKSkJEmSw+HQ119/rXbt2qVq/7i4OOXKlSsjQwSQDW3ZskWHDh1K8347d+68rGDEhg0bVKVKlfQKDUCAqFy5sv79919z+c4779SyZcsUHh5+1X1++eUXPfDAA3K5XOa6999/X3369MnQWAFkL7t27VK5cuXkdrvNdS+99JKGDx9+1X3+/vtvNWzYUKdPnzbX/fnnn7rzzjszNFYA/vfZZ5+pV69eypEjh2rUqKGaNWuqVq1aqlmzpvbu3asGDRqY297Mb0J9+/bVkCFDzOXixYtr5cqVKliw4BW3f//99/XWW2+Zy5GRkdq7dy99OLcACmABAABkgGtNBGCSABB4aNdA9nSttuvxeJgEAgAAAADAddAXDgAAkDVt3bpVFStW1MXDQ1esWKF7773Xj1EByG6WLVumhg0byjAMWa1WDR06VL179zY/pwAWgOu5tADWr7/+qvr16/svIAABp2HDhvr111/N5WnTpqlNmzZ+jAjArezSSd133HGHT4FyAJCkPXv2qGTJkj7r1q5dq5o1a1533xdeeEGjR482l++++279/vvv6R4jgOyra9euGjNmjLlco0YNrVmzRjab7Zr7TZw4Uc8++6y53LhxYy1evDjD4gSQNezevVvJyckqV67cZXPoli1bli4FsI4fP64SJUro3Llz5rolS5aoUaNGV93HMAzVr19fK1asMNf17dtX7733Xpq/H9mL3d8BAACkffv2aceOHfr555/lcrlksVgUERGhxx57TNHR0SpSpIi5LZMFgOwhJSVFSUlJWr16tc6cOSOn06lcuXKpdu3aioqKoh0D2VBsbKwOHDigJUuWSJIsFouio6PVokUL5cyZU1FRUea25Gsge/B4PEpJSdGmTZt09uxZud1u5c2bV+XKlVNISIi/wwNwA3bu3Kn169fr559/Nt/uGRoaqkceeUSFCxdWpUqVzG3J10DWd+7cOZ07d06//vqrTp8+rZSUFIWFhalRo0bKnTu3cubM6e8QAaQRfeFA4KEvHAg85GsACAzly5dXjRo19Ndff5nrtm7dSgEsAKmWmJioLl26mIX0evbsmaqJmAAAAJnlp59+8il+1aZNG4pfAfAbj8ejb775xmddx44d/RMMgCxt+/btPsuFChVKdZ/Lo48+6lMAa9euXekaG4Dsb86cOT7Lb7zxxnWLX0nSM888o/79+ysmJkbSheI0e/fuVfHixTMkTgBZw6VFOTPC1KlTfYpf3XfffdcsfiVdmLfbv39/n+0mTJigwYMHM04pwFEACwD8KD4+Xj/99JPefPNNJSQk6OzZsz6fjxo1SuHh4erZs6caNmyo6tWry2KxyOPxXFZJE0DWsW7dOn355Zf6448/fDomrVarihUrpscff1ytW7dWrVq1/BglgNQ6e/as5s+fr759++r06dOKi4vz+Xzw4MEqXry4unbtqqZNmypv3rzkayAb2LBhgyZOnKhff/1VO3bsUHJysiQpMjJSRYoUUffu3XXfffepfPnyfo4UQGqcOnVKM2fO1BtvvKHk5GQlJib6fP7DDz/I4/GYbbtFixZ0fANZ3Jo1azRs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lx4PgYcCWACQyRYvXqzhw4ebEwPq16+viRMnqkiRIuY29erVU7169dS8eXOtWbNG/fr10969e2Wz2WSxWPT3339ryJAhOnr0qLp06aLbbrvNX6cD3PJOnz6tYcOGmRN+HA6HKlSooIkTJ6p06dIKDw83t924caOmTJmiDz/8UImJiQoKCtLJkyc1ZswYVa5c2XyLNgD/W7hwob766iuzs69hw4YaP368ihYtam5TrFgxSVLr1q21cOFCjRw5UrGxsQoODpbT6dSKFSv02muvqXfv3mrRooVy5Mjhj1MBICkuLk4fffSRWfzK4XCoTJkyGj9+vEqWLOnzpooFCxZo+vTp+vrrr+VyuWSxWLR582bNmjVLFStWlNVqveyHAQD+8csvv2jYsGEyDEOSVLduXU2ePFmFCxeWYRiyWCwqVaqUSpUqpSZNmmjnzp3q3r27NmzYIEmyWCzauXOnxowZo2PHjumtt95S4cKF/XlKwC3rzJkz+vTTT81n66CgIFWuXFkTJ05UuXLlZLf/91PGiRMn9M033+jVV19VQkKCWVRjyJAhqlSpEu0YyELoCwcCC33hQGAiXwNAYPr666/VvXt3c9lqteqLL76QxWLxY1QAsoMtW7bovffeM5c/+OCDNL2JGwBSIzk5WXv27NHJkyflcDiUO3duFSxYUGFhYf4ODUA2cmkBrBIlSujcuXN6+eWXNWHChMu2379/v/bv368lS5bonXfe0SuvvKKBAwfK4XBkVsgAAtikSZN8lp988kmfsS4AcKkPPvhA9erVM3+je+edd1SwYEF16NDhitvHx8fr6aef9in60LJlS7Vs2TJT4gWQPURHR/sse18Mn1pX2n7r1q0UwAJww7Zv3+6znNZx/pduv3//fiUlJSkkJOSmY0PWxJM0AGSikydPauDAgWbnRP78+TV+/HgVKVJEbrdbNptNkuTxeGS1WlWyZEmVLFlS999/vzp27Kjly5crISFBFotFu3fv1siRIxUfH69XXnlFBQoU8OepAbes6dOn66uvvjLfit2gQQONGTPGbNfSherXDodDVapUUfny5RUUFKTBgwcrJSVFkrR06VIdO3aMST9AFnH48GG99dZbZhsuVKiQWfzKm68Nw5BhGLJarapevboqVaqk1q1bq127dtq0aZOsVqssFos2bNigwYMHKy4uTu3atVOuXLn8fHbArWnq1KkaNWqUeZ/dsGFDjR49WkWKFDHvzb35unnz5qpYsaKCgoI0duxYGYahhIQETZkyRS+99JJPsSwA/nPmzBkNHTrULH6VJ08ejRs3ToULF/Z5vvYWwsqTJ4/y5Mmj5cuX64033tD8+fN18OBBSRd+rPvhhx8UFxenoUOHqnjx4n47L+BWNWvWLI0YMcLMy/Xq1dPYsWOv+GydJ08e9erVS0FBQerZs6f5Bs0tW7Zo9+7dPkXwAPgPfeFA4KEvHAg85GsAyL527NihAwcOmMtOp1NxcXH6999/9dNPP2nLli3mZ0FBQRozZowaNWrkj1ABZCMej0edO3c2n+HuvfdePffcc36OCkCg6dGjh/bs2aOkpCSf9Xa7XTVq1FCzZs3UvXt3iisDuK5du3b5LFutVt133336559/rruv9wVLf/75p2bNmsXLTQHclF27dmnVqlU+6zp16uSnaABkF3Xr1tUXX3yhHj16yDAMuVwudezYUV9++aUeeeQRlS1bVqGhoTpx4oTWrFmjKVOm6NSpU+b+999/v77//ns/ngGArKhEiRI+y/v27dPx48dT3c/y119/Xbbu6NGj6RIbgFvTpYX1ChUqlKb98+XLJ7vdLpfLJenCb1knT56kMF8As/o7AAC4lZw+fVpHjhyRzWaTzWbTK6+8omLFivkMIJYu/ADj5Xa7ddttt2nq1Knq2rWrihUrZk7wPXjwoCZNmqSPPvoozdV4Ady8devW6cUXXzQn95QuXVqjRo0yi2l42/XFbwdyOBzq1KmTmjVrZi4fPnxYo0aNkiSzfQPwn+PHjysuLk52u102m039+vXzKX4lSRaLxSdfOxwOVahQQStWrNCjjz6q8PBwc9L91q1b9cknn+ibb77RmTNn/HVawC1rzZo1evnll818XbZsWY0cOdLM1962fHG+Llq0qJ5++mlVr15dFotFQUFB2r17t7755htJMicFAvCfhIQE7du3T9KFZ+hOnTqpZMmScrlcPs/XFxfAcbvdypkzpz7++GP93//9n6pXr25+dvr0ac2bN0+vvvqqz8QxABnvn3/+UY8ePcxcXbJkSZ9ClZc+W3ufm7t06aKOHTtKkmw2m06dOqUxY8Zk/gkAuCL6woHAQl84EJjI1wCQfX311Ve6//77zX/NmzfXk08+qSFDhpjFrywWi5o1a6a1a9eqQ4cOfo4YQHbw+eefa/Xq1ZL+K57HiwYApLctW7ZcVvxKklwul9asWaMBAwaoaNGieuedd8y+KAC4lMfj0dmzZ33WvfTSS2bxK4vFopYtW2rkyJGaO3eupk6dqjfeeEMFCxb02WfJkiXmb84AcKO+/vprn+Xq1aurcuXKfooGQHbSrVs3LVmyRBUrVjTX/fnnn+rTp48eeeQRNWvWTE8//bS++OILs/hViRIlNGrUKC1cuFDh4eH+Ch1AFlWiRInLnnt++OGHVO177tw5zZs374rrAeBGXXoNSev9i8ViUWho6DWPicBCASwAyES//fabDh06JOnC4OD8+fNLks8A4kvZbDZ5PB7lyJFDgwcPVvfu3VWuXDnz8+PHj2vatGkaNWqUTyVvABnryJEjGjhwoPnWw5w5c+r7779XsWLFfIppXEnx4sVVp04dSf8V0PBOsmfgGOB/v/zyi44fPy6PxyO32618+fJJuna+tlgscrvdioyM1IQJE9ShQwflzZvXLIK1Z88ejRw5UrNnz1ZCQkJmnQpwy4uNjdXbb79tVnqPjIzU1KlTU5Wv69atq7vuust8q4504Y3qkq65H4DM8eeff2r//v3mM3OBAgUkXXgz8NV4tw0LC1P37t3Vu3dv875cuvCGz6VLl2rgwIHmszuAjHX8+HENGTJEiYmJkqQcOXLou+++u2au9j43BwcH67777jO3sVqtio2N9dkGgP/QFw4EDvrCgcBFvgaAwNamTRu99dZbqlq1qr9DAZAN7N27V2+//ba53KdPH5/7PADITImJiXr33XfVuHFjJjMBuKLTp09f9pKFv//+W5KUO3duLV++XHPmzNELL7ygFi1aqG3btho6dKi2b9+u9u3b++w3a9YsTZ48OdNiBxBYDMO47BpCYT0AadGwYUP9+eefeu211675G50kFSlSRK+99prat2/PWHYAV9W6dWuf5aFDhyo+Pv66+w0ZMkRnzpy5bD19MwBuxqXXkJCQkDQfgwJYtxbucgEgE3kH89vtdtlsNnMQsXfQ/9VYrVZ5PB6FhobqxRdf1EsvveQzQO3QoUOaNGmSvv/+e50/fz7jTgCA2V7/+ecf801BDodDL730kipXrnzdCT/eH1y7deumkiVLmsdbuXKlWXAHgH9526nD4VBQUJCKFSvms/5qLp74M2TIED377LMqXLiwWQRr+/bt+vjjj/XLL7/whkIgg3nz6erVq/Xvv/9KuvCW4t69e6cqX3v3f/nll5U/f35z25UrVyo5OZk2DGQBVqtVFotFNptNVqtVOXLkkCSzYN219jMMQ0FBQXrkkUfUp08fNWjQwPz87NmzmjNnjj799FOdPHkyQ88BuJV57623bNmitWvXSrrQX/b888+rSpUqMgwjVYN02rVrp0qVKsntdsvj8Wjt2rVmwUoA/kVfOJD90RcOBD7yNQAEtmnTpqlu3bq67777tGvXLn+HAyCLe/755817t3Llyqlv375+jghAILFYLKpTp47ee+89LV68WAcPHlRCQoKSkpIUGxuruXPnqmvXrpdNflq2bJmeeOIJxmgAuMzVJjrabDbNnz9f99577xU/j4iI0DfffKMmTZr4rH///fevOz4UAK7kl19+MV/+Il0Yp3ppoT0AuJZRo0apZMmSGjZs2HWffQ4cOKDu3burWLFimjBhQiZFCCC76dWrl894ntjYWD366KPX/O3+m2++0QcffHDFz7wvuAWAG5GUlOSzHBQUlOZjBAcH+yxzXQpsFMACgEzkrTLpdrvldru1bNmyVO/rnaQbEhKiZ599Vt27d1eFChUkXfhxeN++fRo1apTWrVsn6fpFOgDcGG8HwKeffqrY2FhzXYMGDWS32687QddiscgwDNlsNkVERJhtNS4uTmfOnKEKP5AFeAdTeTwepaSkaOXKleby9Xgn/oSHh6tfv37q0KGD8ufPbxbB2rRpk95//33z+sFEPyBjePPpF198oaNHj0qSwsLCVK9ePZ/Pr7d/RESEHA6HWVDnwIEDOnv27HXfsAMg44WEhMgwDDmdTnk8Hq1YsULShUm71+O9J7fb7WratKl69+7tM/jx5MmTmjFjhubPny+n05lh5wDcyrwT7YcNG2YOBHS5XGrUqJFCQkLMz6/F4/HIYrGYk/StVqucTucV30AFIPPRFw5kf/SFA4GPfA0A2ddnn30mwzDMfwkJCYqJidG8efPUuXNnn7fg/vbbb6pZs6b++usvP0YMICsbP368lixZIunCvdyYMWNuaAICAFxJkyZNtG3bNq1atUp9+/ZV48aNdfvttys0NFTBwcEqWLCgWrRooVGjRmnnzp265557fPafP3++vvrqKz9FDyCrurRgnleXLl1Uu3bta+5rtVo1cuRInz7q7du3a/ny5ekaI4Bbw9df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o0aNuuZvaLt27VL79u191pUuXVp33313hsUKIHs6cOCA8uTJo7CwsOtuu3XrVjVr1kwnT540173++uuqUKFCRoYI4BaSN29evfjii/rggw/MdV26dNHKlStVsGDBK+4zZMgQrVixwlyOjIzU66+/nuGxwv8YUQYAabB37169+eab6t27t5KSknw6FbwD7h0Oh5KTk80fR1q3bq2vv/5aiYmJ5ht0L1apUiX16dPHfKOatwDG8uXL1apVK23duvW6A4i9xzx79qycTqdZ8bt58+YKDg5mADFwHatWrVKlSpXUrVs3/fvvv1csbJERDMNQUlKSOdn/1KlTkv5r01ea8CNd6Oz0TvjxeDxM+AEusW/fPr355pt6+eWXdf78eXk8HvMzb44MDg5WQkKCpk+frs6dO+uZZ57Rr7/+qpSUFHPiz8X7NGnSRC+++KKqVKliro+Li9PMmTP1wgsvaM+ePWYBjqvxtm3vAC1vLE2aNJHFYiFfA9exatUqlS9fXu3bt9eZM2cy/Pu8+dVut8vlcl3WhtOarwH42rt3r/r06aO3337bzL+Xstls8ng8Onr0qIYOHaonn3xSQ4cO1blz53yer705NCoqSu+//75at24t6cJk+eDgYO3bt09169bVr7/+6nOvf6X7fu/9dVJSks6fPy+bzSar1armzZsz2BG4jlWrVqlatWrq3bu3lixZcllhu4zidDqVkJBgft+JEyckpS5Xe4tf8WwNXI6+cCAw0RcOBBbyNQDcGhYtWqRatWqpdu3a+uSTT7R+/forFhU1DEPbtm3Tu+++q7Jly2rJkiU+n/fq1UuVK1fOrLABAAA0dOhQrVu3LtXbu1wuvfrqqxo/frzP+hdeeEEFChRI7/AABACr1apPP/3Up+/466+/1gMPPHDZ9ef06dP65JNP1LhxY5/iNWXKlFHfvn0zLWYA2Zt3nInXk08+afaBA0BqPfDAA2rQoIHPurFjx6pevXpaunSp+SJIr5MnT+rjjz/WnXfeab5c1uv9999P1YtrANxa5syZoyJFiuiVV17R8uXLlZiYeNk2mzZtUu/evVWtWjXt37/fXH/33XerX79+mRkuAD9btWqVlixZctm/S/tWkpKSrrjdkiVLtGXLlmt+R+/evZU/f35zee/evapTp47mzJnjM4bx4MGDeuGFF/TWW2/57P/WW28pOjo6Hc4WWR1P2ACQSocOHVL//v01ZcoUcwJ7UFCQSpQooaioKKWkpGjDhg3mgN6QkBAlJSVpwYIF2rp1q/7880+9//77ioyMlMvlMjs5rVar6tSpo379+ikoKEiLFy+Wx+ORw+HQ5s2bdc8992jSpEm69957lStXLknyeSvuxW/YHTFihHbs2GH+iFOmTJlM/RsB2dGqVavUuHFjSdLvv/+u119/XR9++KEqV66c4ZNpvG/Y9t6geyf/2Gy2a074mTx5siTxhmzgCg4ePKh+/frp+++/N/O1zWZTvnz5FBUVpeTkZO3atcscFB4UFKSkpCR9++232rp1qx599FH17NlT4eHhZo41DENBQUF67LHH5HK59NVXX+mvv/6SJJ0/f17z58/Xli1bNG3aNNWoUcOM5Wr5evTo0dq/f795jSldunSm/X2A7GrVqlW6//77JUkLFizQ888/r9GjR2dKMRrvfbs3XycnJ0siXwM348iRIxowYIC+++47M1+HhYXpjjvuUHR0tFJSUrRx40YdPXpUbrfbLES3Zs0abd26VWvXrtXEiROVJ0+ey45drFgxffTRRwoKCtK0adOUnJys0NBQnTp1Sq1bt9Z7772npk2bqlSpUmbRyyvl648//lgbNmww79fLly+feX8gIBu6+Nl669atGjx4sDwejx544AEFBQVl2PcahiGbzeYzmNA7AIhcDdw4+sKBwERfOBBYyNcAcOtZu3at1q5dK+nCNf/2229XVFSUgoKCdPbsWcXExOjs2bNX3LdDhw4+b9QFAADIDAsXLlSfPn1Up04dPf7442rUqJHKlSt3WZGI06dPa8GCBfrwww+1fv16n89Kliypd955JxOjBpDdNGrUSEOGDNGbb75prluyZInuvPNO5c+fX4UKFdL58+e1e/fuy17ilDt3bs2YMUM5cuTI7LABZEP79+/XsmXLfNZ17NjRL7EAyP6mTJmiOnXqaO/evea6lStXqnHjxoqIiFDx4sUVGhqqkydPas+ePVd8udWrr76qxx57LDPDBpCNnDx5UsOHD9fw4cNls9lUvHhx5cqVS4mJiTp8+LBOnjx52T41a9bU3LlzFRIS4oeIAfjLk08+6VMI72qOHj1qzu27VIcOHS4rGHyx6Oho/fDDD3rggQeUlJQk6cIzVqtWrRQVFaXixYsrPj5eBw4cuOxlfq1atdJrr72W+hNC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/vjjGj16tCIjIzMkjh07dqhcuXLmcvfu3dWjRw+9/vrrWrBggbmefA1cm2EYslgs6tGjh0aOHClJypkzp37//XdVqFDhiu3Gu09SUpK2bdumN954Q4sXL5bNZpPNZlNKSooKFy6sL774Qs2aNZPdbr9sX0n64osvNHbsWG3ZskVut1vBwcFKTk42t42IiJDL5ZLValVCQoK5vmzZsurRo4c6duyoiIiIjPzzANmS0+nU2LFjNXDgQJ04cULenxq8bcxiscgwDNWuXVt9+/bVAw88oKCgoHSNwe12KzExUaVLlzbvtxs1aqSPPvpI77zzjubNm2duS64Gro2+cCAw0RcOBBbyNQDA4/Fo586d2rVrlw4cOKAzZ87I6XQqR44cioyMVLFixVS9enXlzJnT36ECCFDLli1TgwYNzOWiRYtq3759/gsIQJa2ePFizZo1S7/99pu2bdvmM+7jSiIiItSsWTO9+OKLuu+++zIpSgCB6MyZM/r999+1c+dOnT59WhEREcqXL5+qV6+usmXL+js8ANnQypUrde+995rLQUFBOnz4sKKjo/0YFYBAc/bsWf3111/as2eP4uPjlZSUpJw5cyp37tyqUqWKKlSowG/oANJsz549+vfff83flaQLc+7Kli2r2rVrM6cNgN8kJibq999/19atWxUfH6+goCDdfvvtql27tkqVKuXv8OAnFMACgOtISUlR9erVtWXLFklS69atNWPGDBmG4VMI40rcbrd2796tl19+WT///LPPQOKSJUtq4cKFKlmypE9RjYsHFU+dOlXz5s3T1KlT5fF4zG2sVqv5Q7C30IbH41H16tXVtWtXtW3blsFswBV429fu3bv16KOPauPGjeZnb775pn777TetWrUq0yb+JCQkqEyZMjp27JhcLpfuv/9+5cyZUzNnzjS3YcIPkDpnzpxRjRo1tHv3blksFnXs2FHjx4+/rHDVxbyFMc6fP69Vq1bp3Xff1apVq2S1WmW325WSkqLKlStr2bJlypUr11WPNWLECM2cOVMrV66Ux+NRUFCQXC6XeQzpwgQgb76uVq2ann/+ebVv3558DVyBN99t3bpVbdu21b///mt+1qdPH02ePFmxsbEKCQlRcnJyhhfBOnz4sMqXL6/ExEQ5nU499thjstvtmjp1qrkN+RpIvZo1a2rdunWSpPr162vBggVyOBzX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nvhjGIb++ecfffvttz7HBJB+vO2vdevWat++vbn+xIkT+vjjj/X777+n+ZgWi0Uej0dly5bV+++/L7vdLofDIbfbre+++05ut/uaBXIAZJ70KIJlGIY2b96sOXPmSLowEZd8DWSMBg0aaMiQIZIkl8slp9OppUuX6uuvv1ZsbGyaj2cYhvLnz69BgwYpODhYKSkpcrvdmjBhgk6ePCmLxZLepwAgjdKjCJZhGFq/fr1GjhxpFqcFkL7oCwdubfSFA9kD+RoAAAAAAAAAAAAAAAAAEGgogAUA13HxRNn27dvrgQceMNcfO3ZMgwcP1rx588y366bluIZhqGzZsipcuLA5WPno0aNKTk5OvxMAcNMunfhz1113XTbx5/XXX/eZ+HPx/27evFn9+vXTM888o7feess8JoD0483XUVFRat++vapVqybpQluLiYlRjx499Mcff6T5uFbrhUemypUrKywsTE6nU5K0bds2ud1u83MA/ndxEaxVq1apYMGClxXBev75569YBMubr/v06aPWrVvrk08+MY8JIH1575OffvppdejQwVx/+vRpjR8/Xt98842OHj2apmNaLBa53W6VL19etWrVkiTZ7XadPXv2hib9AsgYFxfBGjFixBWLYL333nv6+eefzb4xb8HZi5+te/TooV69eqW5Lw7A9dEXDoC+cCDrI18DAAAAAAAAAAAAAAAAAAINs7UBIA3uuOMOPfHEEypWrJgMw5DNZtPBgwfVp08fLV68WElJSWk6nsViUalSpXT33XdLknm83bt3Z0T4AG7CxRN/pk+fftnEn8WLF6t3797atGmTPB6PLBaLPB6P/v33X7311ltasGCBJGnIkCGaPn26n88GCGzNmzdXmzZtzMn0DodDu3fvVqdOnbRhw4YbOuZdd92le+65R9KFghqxsbE6dOhQeoYNIB1483WxYsW0cuXKy4pgTZ8+/bIiWIZhmPl63rx5kqTXXntNCxcu9NdpAAHNO1E3X758ateune666y5z/fHjxzV8+HD98MMPOn78eJqOa7PZFBkZqerVq0u60LYPHz6s7du3p+8JALgp3iJYt9122xWLYK1du1bvvfeeFi1apKSkJHN7b66eP3++JGn06NGaOnWqn88GCGz0hQO3LvrCgeyDfA0AAAAAAAAAAAAAAAAACAQUwAKAVPK+5bZDhw7q1KmToqKi5PF4ZLfbdeDAAb388suaM2eOzp49m+pjulwuSdJtt91mrnM4HIqIiEjf4AGki+tN/Fm0aJFef/11bdmyRW63W1u3btVbb72luXPnmsdo37692rRp48ezAAKbx+ORJPXp00fPPPOMPB6PPB6PgoKCtGPHDrVt21Zr165N0zG9+Tpnzpzmstvtlt1uT9/gAaSL1BTBeu6553Tu3DlJ0qZNm8x87S3M8+STT6pp06b+PA3gltCkSRN17txZ5cqVk2EYslqtOnr0qIYOHapJkyalqdikN18XKlRI0oUiOyEhIYqMjMyQ2AHcuNQWwVq6dKkSExO1Y8eOKz5bd+rUyY9nAQQ2+sIB0BcOZH3kawAAAAAAAAAAAAAAAABAoKAAFgCkkvcN1pLUr18/de7c2ZywZ7fbtX//fr322muaMWOGjh8/nupjStKpU6ckSW632zwegKzpehN/Fi9erFdffVU//vij+vTpo3nz5pn7PvXUU/r2228l/VekB0D6slqtcrvdkqSRI0eqXbt2Zn71FsF66qmn9Msvvyg5OTnVx5Sk8+fPm+ssFou5HkDWc70iWDNmzNCzzz6r33//Xe+8846Zrw3D0FNPPaVvvvlGEvkayEjeibqdO3fWc889p9tvv10ej0dWq1VHjhzRsGHDNHr0aO3evfuyfa7E+3x9+PBhSZLT6ZRhGAoNDc3AswBwo1JTBOvdd9/VuHHj9Nprr/FsDWQy+sIBSPSFA1kd+RoAAAAAAAAAAAAAAAAAECgsxrVmjgEALuN2u2Wz2SRJ3bp105gxYyT9V3Ajf/78evbZZ/X000+rbNmykmRO3ruYd2KvJDVs2FDLli2T1WpVs2bNNHv2bPM7AGRN3mtBbGys2rRpo9WrV8tut8vtdsswDN12220+EwqeeuopTZ48WZJv+weQMS7O161atdLcuXNls9lktVrldDpVtGhR9e3bVy1atFCBAgUkXTtfu1wu1a1bV3/99ZckqW3btvruu+8y96QApJn3WrBv3z7VrVtXhw4dUkhIiJKTk2UYhgoWLKhDhw6Z25Ovgcx1cTt79913NXLkSB05ckQWi0WGYShXrlxq1qyZXn75ZdWsWTNVx2nRooUWLFggq9Wqe+65R3PnzlXOnDkz5XwApJ23/R4/flw9e/bU3LlzlZiY6HMdiIuLM7cnVwOZi75wABJ94UBWR74GAAAAAAAAAAAAAAAAAGR3jDYFgDTyvvFakkaOHKmXXnpJERERcrvdslqtOnLkiL788kv17t1by5Ytk/Tf23K9b+H1bitJ77//vrmdx+NRtWrVGEAMZAPea8Htt9+uadOm6a677pLL5ZLVapXFYlFcXJzZ9pnwA2Q+m80ml8slSfrpp5/Upk0bud1uud1u2e127d+/X/369dOQIUO0bt06Sf/la2+N4Ivz9dChQ7V27VoZhiGPx6NKlSr54awApJU3XxcrVky//fabChYsqKSkJAUFBclisej48ePka8CPrFar+Zzcr18/9erVS6VLlzZzcVxcnGbOnKnOnTvrp59+8tnX+1x+cb7+4IMPtGDBAkkX2nGtWrUofgVkcd7rwG233abhw4froYceUmhoqDkh/+zZs+RqwI/oCwcg0RcOZHXkawAAAAAAAAAAAAAAAABAdmcxvDPKAABpcvHbdPv3768JEyYoNjbW/Nxischut+vDDz9U48aNVbFixcuO8dlnn2nIkCHmm7Hvu+8+LVy4UCEhIVd88y6ArMflcslutysmJkYtW7bUxo0bZbPZzCI5TPgB/MvbRiXpueee06RJk+R2u2WxWGQYhkJCQlSgQAENGjRILVq0UGRk5GXHGD58uAYPHqyTJ09Kkho2bKhFixbJarWSr4Fswul0yuFwaM+ePbr77rt1/Phx8jWQhVzc7kaPHq2xY8fq77//luRbJOvNN99U/fr11aRJk8uO8cknn+iDDz4wn6/r1q2rn376Sbly5SJfA9mA97796NGj6tixo5YsWSJJ5Gogi6AvHIBEXziQ1ZGvAQAAAAAAAAAAAAAAAADZld3fAQBAduV9m67NZtPAgQOVL18+TZ06VStXrpQkBQcHKykpSb169VLFihV1xx13qF69eipYsKC2bNmif/75R1OmTDEHCleoUEEvvviigoODGUAMZCN2u11Op1MWi0V58+aVxARdICux2+1mvh47dqzy5cun6dOna+fOnZIuTNzbu3evnn76aTVq1EiVK1fW/fffr8jISG3fvl0rV67UxIkTffJ1z549KX4FZDMOh0NOp1OhoaGqUqWKfv31V/I1kIV4i1xZrVZ17dpV+fLl05QpUzRjxgx5PB6FhoYqMTFRQ4cO1dixY1W7dm3VqlVLpUqV0ubNm7Vjxw7NnDnTzMvly5dX9+7dzcKW5Gsg67Pb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ypcvr9dff13z5883f/PyvvSlatWqCg0NNY/bsGFDvf3223r33Xc1efJk7d69W5IUHx+vTz/9VHfccYeaNGliFtsCAAAAAAAAAGQ9y5YtM19EJklVqlTRXXfd5ceIAAAAAAAAsj4KYOH/27vvKDvK+n/g77slPZCQGEILCSS0BARDr6EqIL2IjaLwE1BUmqiUEIoCIkVFkK4goDQRVI4iUoTQEek9+VJCCRCSkLLl3t8fOXtlU2DTdpPJ63WOx31mnpn53Jh3znX2mc/AYqOmpqbaBOeT3nygWQ4sPuQaimnzzTfPtddem/79+8/1sZVKJV27dq02yUuSqVOnLugSgbkk11BMH3/Idk5aGuUcddRRefLJJ6vbjz322HznO9/JSiut1Gr+0UcfnZ133jlrrrlmfv7zn1cXcz322GP597//nWHDhlUfEgYWLJmGJUNLw4sRI0bk9ttvT1NTU26++ebstdde1ftnMzfLaW5uztVXX51XX301pVKp2pg2SQ455JCMHDkyffr06cBPBUs2uYbFU1uaYO255575whe+kOuuuy7JjPtkBx10UC655JLqd+iPf59uampKXV1dTjzxxPTv3z/nnntunnvuudTV1eWdd97JUUcdlfvuu09zOwAAAABgofrwww9zzz335KWXXsrUqVPTp0+fDB48OJtvvnk6d+7c0eW12VtvvZXHHnssY8aMycSJE1Mul9OtW7f069cvq6yySoYNG5YePXos8Ou+/vrrrcZrrLHGAr/Gp2loaMjo0aPz6quv5p133kltbW369euXIUOGZMMNN+yQdR6PPPJInn766YwbNy51dXVZeeWVs+mmm2aFFVZo91oAAACARY8GWMBipVQqtXnex5vllEqlnH322XnggQdaNcupVCo54ogjsu666y7cwoE5kmsophVXXLHN+f64UqmUfv36pWfPnpk2bVoaGhrS3NycJG1+sN4D+LBwyDUsmZ599tkcfPDBefXVV6vbfvrTn+a4446rjlu+p7dkdY011sh3v/vdfPTRR7noootSKpUyefLk/OIXv8jXv/71dO/evSM+ChCZhiKora1Nkqy33nqpVCpJZizcTtLqO/PHm+WMGjUqzc3NOfvss9PY2FjNec+ePdOnT5/q93zfu6FjyDUsvmZuglUqlXL00UdXm2A9//zzGTNmTPV3XPvvv38uu+yyJGnV4K5FXV1d9XyHHHJIJk6cmGOPPTblcjmdOnXKiy++mD//+c/5+te/Xj0eAAAAAGBujRgxInfffXd13PL7iXHjxuX444/P73//+1Yv32jRvXv3fP/738+PfvSjNq0VuOuuu7L11ltXxyNHjszJJ5/cas7JJ5+cUaNGzfb4T7oHutVWW+Wuu+6a7b7rr78+5557bkaPHv2J9dXW1madddbJ7rvvnu985ztZZpllPnF+W02aNKnVuGW9ZHt49dVXc9JJJ+WWW26ZpY4Wffv2zZe//OWcdNJJ6du370Kv6Yorrsjpp5+el19+eZZ9pVIp22+/fX72s59lnXXWWei1AAAAAIsuq12BwmpZSJwke+yxR4455phsvPHG1Zvg06ZNy7XXXptf/vKX+c9//jPH81QqlTz33HO5//77M23atPYoHZgDuYbFx/w8eNPywE/LL3zn9AvYj6tUKhkzZkwmT56cmpqadv1lMSwp5BqWTEOHDs1KK61UHZ911lnVRjkt381b/n34+EO7K620Uvbcc8+stNJKKZVK6dy5c95888288sor7Vg9MDOZhmIol8tZZZVV0rt379TU1OTxxx/PU089Ndt5Lf7yl7+koaGhVbOMiRMn5rrrrstll12W8ePHa5IDHUiuYfHV0gQrSQ4//PD8/Oc/T+fOndPc3JyamppqTr/whS/k3HPPTTLjHtmc7rV9/HxHH310dtttt5TL5TQ2NqaxsTH3339/kvm7VwcAAAAAMLN77703w4YNyxVXXDHb5ldJ8tFHH+X000/P1ltvnffff7+dK/x006dPz5577pl99933U5tfJTPu1T7++OMZOXJkHnvssQVWR69evVqNH3rooVa/41lYzjvvvKyxxhq5+uqrP3GN5vjx4/PLX/4yq666am666aaFVs+0adOyyy675Bvf+MZsm18lM9aq/P3vf88GG2yQa6+9dqHVAgAAACz6rHgFOlzLw3Vzu68t5rVZTsvN5Uqlkqeffjrf/va384UvfCG33XabZjnQBnINxbMwc/1x5XK5+mBQS26nTp2aJHN8YK8l14cffni22267vP/++6mtrV2gdUERyTUUz4LOdXNzc2pra3PHHXdk0003zSmnnJJjjjkmyYxsf9rDttttt1023HDDlMvlNDQ0ZOLEiRkzZsxc1wFLKpmG4llQua6pqckqq6ySddZZJ+VyORMnTsw777zTak5TU1Pq6uoyZcqUDB8+PE888UR1X8+ePasNc8aMGZNf//rXufzyy/Pee+/N/YeCJZxcQ/HMS67n1ASrXC6nUqlk0KBBOeyww9K7d+8kSW1t7SfWUFNTk6ampiTJV77yldTX16dTp05JkscffzxTpkxpl4elAAAAAIAlw6OPPpodd9yx2tSqpqYmq666ajbccMMMGTJklvUEDz/8cA488MAOqPSTHXzwwbn55ptn2d6vX7+st9562XjjjTN06NB85jOfWah1DB06tNX4tddey69+9auFes0TTzwxRx555CzNy3r16pXPfvazGTZsWHr06NFq38SJE7PvvvvmiiuuWOD1NDU1Za+99sptt902y74VV1wx66+/flZdddXqGtKGhobsv//+ueuuuxZ4LQAAAMDioa6jCwAolUopl8sZP3589UG8fv36VfctiPO3LPrfY489kiRnn312HnjggVQqlWqznCQ54ogjsu6666ampibNzc155plncsIJJ+Rf//pXkuTLX/5y7r///mywwQbzXRcUmVxD8SzsXLeoqalJjx490rVr10ycODGVSiWNjY1JUs39x7U0yTn++ONz++23J0m23Xbb/Pvf/0737t0XWF1QRHINxbOgc11bW1t9yP7ee++tnqNcLs+xgV2LljlrrLFGkqS+vj4NDQ2f+pAv8D8yDcWzoHLd0kxjxRVXTDKjwd19992XbbbZJuVyOeVyudokZ4sttsjjjz9ePfawww5L165dc+ONN2bs2LEplUoZO3ZsLrrooiQzFoUvs8wys/2uDsxKrqF45jXXLU2wampqcvjhhydJfvCDH2TKlCkZNmxYttxyy7mqo65uxnKe4cOHp1OnTtWG8h988EH1egAAAAAAC8K+++6bjz76KMsss0xOOOGE7L///unTp091/5tvvpnjjz8+V155ZXXbrbfemr/97W/Zcccd5+va+++/fzbffPMkydFHH53//ve/1X3/+Mc/5nhcywsHWjz88MO5+uqrq+O6uroce+yx+da3vpWVV155luPffvvt3Hvvvbn11ltz/fXXz9dnmNkmm2yS3r17V+/nJsn3v//9PP300znuuOOyyiqrLNDr3XrrrTnttNNabRs2bFjOPvvsbLfddtW1HQ0NDbnlllty9NFH57XXXksy43dShx56aIYPH5511llngdV09tln569//Wurbfvtt19GjhxZXXuSJG+99VZ++ctf5qyzzkpTU1MOOuigBVYDAAAAsHjRAAvoUA8//HB++9vf5oEHHsjbb7+djz76KJ07d86IESMyZMiQfPOb30zv3r2z1FJLzdfC/LY2y6lUKvn+97+fddZZJ88991yOP/743HbbbdXjd911V01y4FPINRRPe+W6RX19ffVhoSSZPHlykhm/ZG156CeZ0STnqaeeygknnJBbb721mus11lhDkxz4FHINxbOwcl1XV9dqfqVSadNDtpVKJUnStWvXJDMezO3cuXP1gX7gk8k0FM+CzHVLbnfeeedcc801qVQqefjhh5PMyOucmuR85zvfycknn5xu3bpl6aWXzuWXX15tljNmzJhcfPHFSZKDDjpoob/1GIpArqF45jfXMzfBamxszOmnn56TTjopSy+99FzfZ2tubm7VuDZJevXqlW7dui24Dw0AAAAALPFeeeWVDBw4MHfccUdWXXXVWfYvv/zyueKKK1JfX59LLrmkuv3iiy+e7wZYq6yySrUh1MxNrbbbbrs2n2fmJlYXX3zxJzZTWnbZZbP33ntn7733zjnnnFO9B7sgdOrUKUcffXROOOGE6rZKpZKLL744F198cYYPH56tt946G2+8cTbYYIMMGDBgnq81ZcqUHHLIIa22bb/99rn11lvTuXPnWeraZ599st1222WrrbbKk08+mWRGY6wDDjig1e+g5sfYsWMzatSoVttOO+20HH/88bPM7d+/f04//fRsvvnm2W233TJmzJgFUgMAAACw+NEAC+gQ48aNy2WXXZaRI0dWH6Dr1KlTGhoakiR//OMfU6lUcs0112SjjTbKkUcemfXXX796/Lw8hN+WZjnXXXddkmTHHXfMNddck9tuu616va997Wv53e9+lyTVhcvA/8g1FE9H5DpJmpqaqm8bSlK93se3zdwkp2Xbx3O9IJr2QNHINRRPe+T64/vbmsHa2tpMnTq1+ibGadOmZemll07Pnj3n6vPBkkamoXgWZq779OlTPefYsWMzfvz49O3bNx999FG23HLLVguUjzjiiBx77LHp1atXampqcvTRR6dSqeSKK67I2LFjU1tbm1deeSUnn3xyhg4dmp133nlh/ZHAYk+uoXgWZK4/3gTre9/7XoYPH56VV155nu5r1dbWVo9rqWf55ZdPY2Njamtr/V4LAAAAAFggamtrc/3118+2+dXHnXnmmbnqqqsybdq0JMnf//73RWYN/gsvvFD9uUePHtl///3bfGyfPn0WeD3HHXdc7rzzztx5552z7Hv00Ufz6KOPVsf9+vXL5ptvnhEjRmTXXXfNyiuv3ObrXH311Xn77ber4+WXXz433HDDLM2vPq53797585//nLXWWitTp05NkvznP//JP//5z2y77bZtvvacXHTRRdW/I0nyxS9+cbbNrz5uxx13zMiRI1s1DQMAAACWLB1/hwlY4rz66qv54Q9/mFGjRlUXECf/ewg+Serq6lJTU5NXXnkl1157bbbYYouce+65eemll5LMeDhvXt6w0NIsJ0n22GOPHHPMMdl4442ri42nTZuWa665Jsccc0xuueWW6nGa5MAnk2sono7MdadOndKlS5dqjpuamlrtn12TnGTWXGuSA63JNRRPR+b6kzQ3NydJnnrqqbz++uvV79oHHHBABg0atECvBUUi01A8CzvX66+/ftZaa60kyZNPPpkPPvgg06dPn2OTnBVXXDE1NTVpbm5Ot27dcuyxx+aggw7KoEGDqlnfddddNcmBTyDXUDwLI9ctTbCSZPPNN0/fvn3n+r5WpVJJpVLJjTfemMmTJ1fvp33xi19MfX2932sBAAAAAAvMXnvt1arp/5z07t07O+ywQ3U8ZcqUPPfccwuztDZraeSUzLhH29H3UOvq6nLbbbflG9/4xqfOfeedd3LTTTflu9/9bgYNGpTtttsu99xzT5uuc+mll7Yajxo1KksttdSnHjdw4MB873vfa7Xt4osvbtM1P0mlUsmVV17ZatuZZ57ZpmOPOeaY9O/ff75rAAAAABZPVsQB7eqtt97KKaeckt///vfVhfdLLbVUttpqqxx44IHZeeeds8Yaa6Surq66KLhLly6ZPn16jj322IwcOTK33XZbktYLh+fGzM1yjj766FbNchoaGvLmm29Wx5rkwCeTayiejs51fX19klRzPWnSpOq4rU1y5Bpak2sono7O9ZyUy+XU1tYmmbEo6uWXX06lUkl9fX023njjBXINKCKZhuJpj1z37Nmzuni5S5cuufvuu7PpppvOsUlOi9ra2pTL5XTt2jXHHntsDjzwwHTu3Dlf/vKXc9111yXJAm+mB0Ug11A8CzPX83Mvq6URfKlUyr333ptkxn20QYMG5XOf+9w8nxcAAAAAYHa+9KUvtXnuuuuu22r82muvLeBq5s3yyy9f/XnixImt1iJ2lK5du+ayyy7Lgw8+mN122626jvKTVCqV/POf/8xWW22V/fffv1Vjr5lNnjw5jz32WHXcrVu37Lfffm2ub+bmXC33o+fHc889l7feeqs6Hj58ePXlL5+mc+fOc1U/AAAAUCx1HV0AsGT53e9+l9///vcpl8upr6/P8OHDc8kll2SVVVZJ165dk8x488Itt9ySO+64I5dffnmmTZtWfWvuddddl6eeeirjxo3LIYccUl1IPLcLiFua5ZRKpey5555JklNPPTX//e9/U1NTU30Q30P38OnkGopnUch1Xd3//q/K9OnTkyTNzc15/vnnNcmBeSDXUDyLQq5n9vHjzzrrrFx22WVJZizM2nfffS1Qgk8g01A8CzvX5XI5dXV12XzzzfPggw9m2rRpOeKII6rftZPZN8lp0XK+rl275uijj87aa6+d3XffvXpu38FhVnINxbOofw8fNWpUtcFWpVLJjjvumPXWW2/+PzgAAAAAwMesv/76bZ7br1+/VuMPP/xwQZczT7bffvtceeWV1fFXv/rVnHzyyfnmN7+ZXr16dVhdSbLhhhvmT3/6U8aPH5+//OUvufvuu3PfffflxRdfrL5UdHauuuqqvPzyy7nzzjvTuXPnWfY/8sgj1Zc7JMkGG2yQHj16tLmuIUOGZKWVVqo2MRs3blzGjh2blVdeeS4+XWsPPfRQq/GIESPm6vgRI0bkvPPOm+frAwAAAIsvq1yBdvPII4/khBNOSFNTU5JknXXWyXXXXZehQ4emU6dOSZKmpqZ07do1++23Xy699NJcfPHFWXfddatvOqhUKnnqqacyatSonHvuuUlmLOj/+E3btiqVStWf11577dTX11cb5JTLZQ/dQxvINRRPR+e6Uqmkrq4uPXr0qGa65brPPfdcjj/+eE1yYC7JNRRPR+d6dpqbm6t5/fWvf52f/exn1cxvvvnmOfPMM5PMyDXQmkxD8bRHrlsyut5661UXRX/8u/MnNclp0dKko1u3bprkwKeQayieRf17+AUXXJCf//zn1X1bb711zj777Op1AQAAAAAWlJmbWn2S7t27txpPnTp1QZczT/bZZ5+stdZa1fHkyZNzzDHHZNlll80OO+yQM844I//+978zbdq0Dquxb9++OeCAA3L55Zfn+eefz4QJE/Kvf/0ro0aNysYbbzzbY+6///4cc8wxs903duzYVuN11llnrmv67Gc/22r8f//3f3N9jo979dVXW42HDRs2V8evvfba83V9AAAAYPFlpSuw0LUswP3Tn/6UpqamlEqldOvWLZdddlkGDBiQcrmc2traJEldXV2rYw4++OCcf/75+fKXv5xu3bolmbFoeNy4cTnppJNy2mmnJUlqa2vn6YG7SqWSJ554Iscee2weeeSR6tt6PXQPn0yuoXgWlVyXSqXU1tZWm9clyQcffJCnnnoqxx13nCY5MBfkGopnUcn17LRc95xzzslpp52W999/P5VKJeuss06OPPLILLvsstVrAjPINBRPR+R6xIgROfTQQ5P8b3F5W5rktJg5x3INrck1FM/i8D38vPPOy09+8pN89NFHSZJ11103Rx99dLp06ZJKpdLqhTAAAAAAAPOrS5cu83zsotKwv76+PrfeemtWX331VtsbGhryj3/8Iz/60Y+yxRZbpFevXtl6661z3nnn5e233+6gamdYaqmlMmLEiJx00kkZPXp0nnnmmey6666zzLvooosyZsyYWbZ/8MEHrcZ9+/ad6xpmPmbmc86tCRMmtBr36dNnro6f2/kAAABAcdR1dAFA8ZVKpVQqldx3331JZtzgXnvttTN48OA0NjZW35A7u2NKpVK22GKL9O/fP4MHD85ZZ52VSZMmpa6uLh999FFOP/30dOnSJcccc0z1rdZtXcjf8kbek046qfrQfaVS8dA9tIFcQ/EsSrme+QGe119/PT/4wQ9y++23V7fJNXw6uYbiWZRynbTOakNDQ0466aT87Gc/q9a2+uqr59vf/nY+//nPVx/iBf5HpqF4OiLXyy23XI466qg0NzfnkksuyWGHHdbmJjnAp5NrKJ5F+Xt4c3NzTjjhhJx99tkpl8utvodvvfXW1VoAAAAAgMVfSwP+FtOnT5/nc02bNq3VeHb3OZcEq6yySh577LGcd955+fWvf5033nhjljnTp0/PXXfdlbvuuivHHXdcvvWtb+X0009Pz549O6Di1tZcc83ccsst+eEPf5gzzzyzur2pqSl/+MMfctxxx7WaP3ny5Fbj7t27z/U1Zz5m0qRJc32OT6qp5WUS81oPAAAAsOTwNCnQLt5///2MGzeuuiC3b9++6dat2yfeWP/44t0hQ4bkkEMOyamnnpqllloqTU1Nqa+vz/Tp0/Ozn/0sF154YZIZb9htyxskKpVK/vvf/7ZqkpN46B7mhlxD8Swque7UqVOWXnrpJDPeeP/GG2/k9ttvr15LrqHt5BqKZ1HJdcuciRMn5rrrrsuXvvSlnHXWWalUKqlUKhk6dGiOOOKIfOlLX5rrhUywJJFpKJ72zHVzc3OSZPDgwTnmmGPyhz/8IT/84Q81yYEFTK6heBa17+GTJk3KH//4x+yzzz4588wz09zcnEqlkrXWWivf/va3s88++6Rr164L4JMDAAAAAIuKXr16tRrP3DhobszctGjmcy9JunXrlh//+Mf5v//7v9xzzz05+eSTM2LEiNneY21oaMgvf/nLbLDBBnnnnXc6oNrZO/3007Paaqu12nbvvffOMq9Hjx6txh999NFcX2vmY+a3EdjMDaymTJkyX/UAAAAAS466T58CMP/K5XIaGxurC3wbGxuTpPqm3Lbo169fDjjggPTo0SNHHXVUJk6cmNra2owfPz7nnXde+vbtm3322adN55swYUJ+8pOf5JZbbkldXV2ampo8dA9zSa6heBaVXJdKpXTq1Kl67dra2lQqlZTLZbmGuSTXUDyLSq6feuqp/POf/8y1116bV199Ne+++2513yabbJIjjzwyX/jCF2ZZaAW0JtNQPO2Z69ra2up36CFDhmSVVVZJbW3tQvtssKSSayieReV7+LPPPps77rgj1113XV5++eVWD1htuOGG+d73vpcvfvGL8/3AEQAAAACw6Jm5SdXbb789z+eauXnTktwAq0VNTU222GKLbLHFFhk5cmQaGxvzyCOP5Pbbb88111yTl156qTr3+eefz4EHHpi//vWvHVjx/9TW1mbPPffMGWecUd32xhtvzDKvd+/ercbvvffeXF9r/Pjxn3jOuTXz372Zz/9p5uUzAAAAAMXgqVKgXSy99NKtboQ++OCDefrpp9u8gPjj59lnn31y+umnp2fPntU3Yb/00ku5+uqr89///rdN5+natWu22mqr9OjRI01NTdl///09dA9zSa6heBaVXDc1NaWhoSFJUldXp0kOzAe5huJZFHJdqVQyffr0XHrppXnooYfy/vvvV6+/xx575LLLLstuu+2mUQ60gUxD8bR3rj/+HVqTHFg45BqKZ1H4Hp4k9fX1ufzyyzN69Oh88MEH1evvvPPOueCCC7LXXntpfgUAAAAABTVo0KBW43fffXeumwW1ePrpp1uNBw4cOK9lFVZ9fX022WSTjBo1Ki+88EIuuOCCVr+T+dvf/pZnn322Aytsbeb/DadMmTLLnJVXXrnV+Iknnpjr68x8zMznnFurrLJKq/FTTz01V8e39dkRAAAAoHg8WQosdOVyOUkyZMiQJDNuHDc2NubFF19MkupC4Lbq2bNnvvSlL+X4449P9+7dU6lUUqlU8pe//CU33XRTyuVy9W29c9KlS5cccMABOe200/LNb34zV155ZbVWD93Dp5NrKJ5FKdd1dXU54IADsuKKK6ahoUGTHJhHcg3Fs6jkulQqZfjw4bnwwguz4oorprm5OcOHD88pp5ySG2+8MWussUbq6+vn89NC8ck0FM+ikmtgwZFrKJ5FKdeDBw/O7373u6yyyippbGzMSiutlO9///u59dZbM3z48HTq1Gk+PikAAAAAsChbYYUVsuKKK7badt99983TuWY+bpNNNpnnujrSzGsIF9bvTEqlUg4//PB85StfabX93//+90K53rz46KOPWo379u07y5z111+/1ctUHn744UyePLnN13jppZfy2muvVcfLLbdcBgwYMA/V/s8GG2zQanz33XfP1fFzOx8AAAAoDk+XAgtdTU1NOnXqlN122y1J0tjYmClTpmTkyJGZMGFCamtr5/rGdN++fbPvvvvm61//ejp37pxkxmLlU089NXfddVeb3s7bvXv3fOtb38oll1xSPd5D99A2cg3Fs6jlervttssPfvCDlEql7LXXXprkwDyQayieRS3Xm2++ea6++ur84he/yIUXXpgTTjihejzw6WQaimdRyzUw/+QaimdRy/Xaa6+dm266KT/84Q9z/vnn55xzzkmy8B7sAgAAAAAWHVtttVWr8XXXXTfX53jmmWfy3//+t9W2Lbfccr7q6ijdu3dvNZ4yZcpCvd5mm23Wajx+/PiFer258fDDD7caz64xVY8ePTJ8+PDqeMqUKfnjH//Y5mtcfvnlrcYz/32cF2uuuWaWXXbZ6vjRRx/NM88806Zjp0+fnmuvvXa+awAAAAAWT54wBdrNsGHDsvrqq1cXFT///PP5xS9+kenTp8/TYv6BAwfmgAMOyEYbbZRSqZQuXbqkUqlk1KhRGTduXJvO0bIAuVKpeOge5oFcQ/EsKrnu169f9t1339x+++25/vrrk2iSA/NKrqF4FpVcJzMWzH3nO9+pLqbyPRzmnkxD8SxKuQYWDLmG4lmUcr3OOuvklFNOqTblqlQqmuEBAAAAwBLgkEMOaTW+/vrr8/jjj8/VOX74wx+2Gm+99dYZPHjwfNfWEZZZZplW41dffXWhXm/mhle9e/deIOd98MEHM3r06Hk+/uWXX84tt9zSatvnP//52c49+OCDW41POumkTJ48+VOvMXbs2Jx//vmtts3893FelEqlHHjgga22HXfccW069uyzz87bb7893zUAAAAAiydPrgDtZtiwYdluu+1SLpfT2NiYhoaG3HrrrXnggQfm+ZwbbbRRDj300FQqlUybNi01NTV58cUX8+KLLyaZ8UB9W1hADPNGrqF4FqVc9+vXL9tvv311jgfvYd7INRTPopTrmfkeDnNPpqF4FuVcA/NGrqF4FrVc19XVVX/2PRwAAAAAlgxbbbVVNthgg+q4ubk5e++9d1555ZU2HX/iiSfm1ltvbbXtmGOOWaA1tqehQ4e2Gt9www1tPvarX/1q7r777jbP/+CDD3LppZe22tbysrD59eyzz2bTTTfNjjvumDvvvDOVSqXNx7722mvZddddM3Xq1Oq2Xr16Zdddd53t/K9+9atZdtllq+M33ngj++67bxoaGuZ4jQkTJmS33XbLlClTqtvWW2+9bLPNNm2u85Mceuih1ZeaJ8ltt92Wn/zkJ594zO23355Ro0YtkOsDAAAAiydPmgLtomUx76hRo7L++utXb+A++uijOe+886pd+ufmxm7L3P322y9HH310ddtbb72V3/zmN0nigXpYiOQaimdRzrXsw7yRayieRTnXwNyTaSgeuYbikWsoHrkGAAAAABYVV155Zbp161Ydv/LKK1lvvfVyyimn5OWXX55l/tSpU3P77bdnq622ymmnndZq34EHHpiddtppode8sLS8XLPFqaeemoMOOihXXXVVbr/99txxxx3V/zz66KOt5v7lL3/JiBEjstZaa2XkyJEZPXp0qwZPLaZOnZrrr78+G220UcaOHVvd/tnPfrZVM7IF4fbbb8+2226bQYMG5cc//nH+/ve/Z+LEibPMq1QqeeaZZ3LCCSdkrbXWyjPPPNNq/ymnnJJllllmttfo1q1bLrnkklbb/va3v2XDDTfMP/7xj1YvZmhoaMiNN96YddddN0888UR1e6dOnXLllVfOxydtbeDAgTnxxBNbbTv++OPzla98Jc8991yr7W+//XZOOOGE7LLLLmlsbMzAgQMXWB0AAADA4sXqOqBdtCzm7dGjR770pS+lX79+1X233HJL9eZmqVRq8xutPz53r732ysCBA1NbW5u6urq8+OKLmTx58gL+FMDHyTUUj1xD8cg1FI9cQ7HINBSPXEPxyDUUj1wDAAAAAIuKtdZaK7/97W/TuXPn6raJEydm5MiRGTx4cJZddtmss8462WijjTJkyJD07t07O+64Y+65555W59lyyy1zwQUXtHf5C9R6662XbbbZpjoul8u58sors//++2fHHXfM9ttvX/1Py4sIZvbss8/mlFNOyaabbpqllloqAwcOzOc+97lsvPHGWWONNbL00ktn3333zYsvvlg9plu3brn88ssX2ucaO3ZsfvrTn+bzn/98evfuneWWWy5rr712NtlkkwwbNixLL710hg4dmtNPP32We8mHH354vvOd73zi+XfZZZeccMIJrbY98cQT2WGHHdK3b9+st956WWedddK3b9/svfferRp/1dTU5KKLLso666yz4D5wkh/84Af5/Oc/32rbtddemzXXXDMDBgzIhhtumCFDhmSFFVbI6aefnqamptTV1eWKK65YoHUAAAAAiw8NsIB21alTp3zta1/L5ptvniTVm/SXXnppvvvd7yaZcQO1ubm5TedrWZw8fPjwrLrqqmlqakpTU1MeeeSRWd56ACwccg3FI9dQPHINxSPXUCwyDcUj11A8cg3FI9cAAAAAwKJg7733zl133ZUBAwbMsu+dd97Jk08+mYceeigvvfRSpk+f3mp/TU1NDj/88Nxxxx3p1q1be5W80Fx11VX53Oc+t0DO1dzcnLFjx+bxxx/Pgw8+mOeffz6NjY2t5qywwgq54447Ftg1k2TgwIFZccUVZ7uvXC7nrbfeylNPPZUHHnggTz/9dCZNmjTLvJ49e+a8887Lr371q5RKpU+95qmnnppzzz03nTp1arX9gw8+yH/+8588+eSTs1xnqaWWyvXXX5+DDjpoLj5d29TX1+fmm2/OjjvuOMu+1157LQ8//HBeeuml6v33Tp065aqrrsqIESMWeC0AAADA4kEDLKBdVSqVLLvssjnjjDMyYMCATJ8+PV27dk2S/OpXv8oxxxyTJKmtrU2lUmnTOcvlcurr67P99tsn+d/C5ClTpiyETwDMTK6heOQaikeuoXjkGopFpqF45BqKR66heOQaAAAAAFhUbLzxxnnxxRdzySWXZPjw4dWG+3PSp0+fHHjggXnqqadywQUXpL6+vp0qXbiWX375PPDAA7n++uvzla98JUOHDk2vXr1SV1f3icc99NBDOeuss7Ltttume/fun3qdwYMH59RTT83zzz+fTTbZZEGVnyQZMWJE/u///i8PPPBATjjhhGyxxRbVe8WfZujQofnJT36SF154Id/73vfa1Pyqxfe///08++yz+drXvpYePXrMcV6fPn1yxBFH5KWXXsqee+7Z5vPPra5du+avf/1rLr300qyyyipznLf99tvn4Ycfzn777bfQagEAAAAWfZ989wdgASuVSimXyxk8eHBuu+22bL755pk4cWK6du2aqVOn5pxzzklTU1POO++8Nt+obbmx379//+o1gPYj11A8cg3FI9dQPHINxSLTUDxyDcUj11A8cg0AAAAALEo6deqUgw8+OAcffHA+/PDDPPjgg3nzzTfz3nvvZfr06enVq1f69OmTtdZaK8OGDZvn+4933XXXPNd44IEH5sADD2zT3BEjRrT55QIfV19fn7333jt77713m49ZbbXVcuyxx+bYY49Nc3Nznn322bz44ot54403MmnSpCRJz549s8IKK2TdddfNoEGD5rquuVEqlbLRRhtlo402SpI0NjbmpZdeygsvvJBx48Zl4sSJaWxsTI8ePbL00ktn4MCBWXfdddOrV6/5uu4qq6ySq666Kg0NDbn//vvz6quv5t13301NTU369euX1VZbLRtuuOGnNlib2cknn5yTTz55nmr65je/mW9+85t5+OGH89RTT+Wtt95KXV1dBgwYkM033zwrrLBCq/nz8ncGAAAAWPxpgAW0u5qamjQ3N2fYsGH529/+li984QuZNGlSdSHxL37xi0yfPj1nnXVWevbsmWTGDcw53Zxvbm5ObW1tnn/++STJtGnTkiRLLbVU+3wgQK6hgOQaikeuoXjkGopFpqF45BqKR66heOQaAAAAAFgULb300tlhhx06uozFUm1tbYYNG5Zhw4Z1dClV9fX1WXPNNbPmmmu2y/U6deqUESNGZMSIEe1yvbbYYIMNssEGG3R0GQAAAMAiau7adQMsILW1talUKtlkk01y/fXXp2fPnpk6dWq6du2a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1Km6/ePnnJ3m5uYkyQUXXJBbbrnFAmJYCOQaikeuoXjkGopHrqFYZBqKR66heOQaikeuAQAAAAAAAAAAgEQDLFiilEqlJMk///nPVCqVNDc3Z4UVVsjgwYOTZJYFxC3q6uqq/93Q0JDa2tpsvfXW6d27d/WcM6tUKqmtra0uQN5ll12SWEAMC5pcQ/HINRSPXEPxyDUUi0xD8cg1FI9cQ/HINQAAAAAAAAAAAJAkdR1dANC+JkyYkFdeeSX19fVpbGzMiiuumAEDBqRSqXziguBSqZQpU6YkmbEQeOWVV87LL7+c6667Lq+//np10fAuu+yS1VdfPYMGDUryvwXILSwghgVPrqF45BqKR66heOQaikWmoXjkGopHrqF45BoAAAAAAAAAAADQAAuWMJMmTcq4ceOqb7cdO3Zs3nvvvfTp02eOx5RKpbzzzju58sorkyQ9e/bM2LFjs9VWW+XNN99sNfeaa65J7969c+6552a33XZbaJ8D+B+5huKRaygeuYbikWsoFpmG4pFrKB65huKRawAAAAAAAAAAAKCmowsA2tdSSy2VlVZaKbW1tamvr897772XW265pbqoeHamT5+eO+64I0899VSSGQuRr7vuurz55pvVt+LW19dX37Q7ZsyY7LHHHjn//PPz0UcftcvngiWZXEPxyDUUj1xD8cg1FItMQ/HINRSPXEPxyDUAAAAAAAAAAACgARYsYZZeeumst956aW5uTlNTU3VB8NNPP51yuZwkaW5uTqVSSZJMmTIld999d376059m3Lhx1fN06tQpQ4cOzUYbbZTPfe5z6dOnTyqVShobG9O1a9ckyVFHHZXf//73SVI9H7DgyTUUj1xD8cg1FI9cQ7HINBSPXEPxyDUUj1wDAAAAAAAAAAAApYqVfbDEKJfLqampyR/+8Id8//vfz9tvv13dt+OOO+a73/1uttpqq3Tp0iVJMmbMmPz1r3/NBRdckGeffbY69+CDD87uu++enXbaqbrt8ccfzw033JCf/vSnSZLOnTtn+vTpSZK///3v2W677drjI8ISR66heOQaikeuoXjkGopFpqF45BqKR66heOQaAAAAAAAAAAAASDTAgiXSu+++m0MPPTQ333xz6urq0tTUlCQZNGhQVlxxxWywwQZpamrKrbfemgkTJuSDDz6oHnvqqafm+OOPr46nT5+ezp07V8cXXXRRjjjiiDQ3N6dr166ZOnVq1llnndxyyy1ZeeWV2+9DwhJGrqF45BqKR66heOQaikWmoXjkGopHrqF45BoAAAAAAAAAAACWbBpgwRKmUqmkVCplzJgx+dKXvpSHH344pVIpSVJbW5umpqbU1NSkUqmkUqmktrY2zc3NSZKRI0dm5MiRsz1vyxt6k+SXv/xlvve97yVJampq0qtXr1x55ZX54he/2GoesGDINRSPXEPxyDUUj1xDscg0FI9cQ/HINRSPXAMAAAAAAAAAAABW8sESplQqpVwuZ+DAgfnDH/6QvffeOyuuuGIqlUp1sXC5XE6lUslKK62U2traJMmee+6Zo48+urp/ZjU1NdXtRxxxRL72ta9V973//vu5+uqrq9cHFiy5huKRaygeuYbikWsoFpmG4pFrKB65huKRawAAAAAAAAAAAKCuowsA5l/Lm3HnNJ5Zy4LfgQMH5qKLLsoTTzyRP/zhD3n11Vfz2muvZeONN86GG26Yz3zmMznooIPS0NCQTTbZJD169KgeP6fztlx7+PDhufrqq1NTU5NSqZQPP/wwiUXE0FZyDcUj11A8cg3FI9dQLDINxSPXUDxyDcUj1wAAAAAAAAAAAMDc0AALCqBlYW65XK6+Cbe+vr66f3aLilsW/C6zzDLZeuuts/XWWydJGhoa0qlTp1Qqley4446ZPHly+vbtm913332uatl0003TvXv3TJkyJZVKJe+8807K5fIcFyADrck1FI9cQ/HINRSPXEOxyDQUj1xD8cg1FI9cAwAAAAAAAAAAAHNDAyxYzD355JO5/fbbc+edd+bDDz/MlClT0r179+y2225ZddVVs9dee1UXEc+8iPfji49bttfW1iZJJk2alJdffjnJjIXF5XJ5ruoql8spl8splUqpVCrp16/fbGsAZiXXUDxyDcUj11A8cg3FItNQPHINxSPXUDxyDQAAAAAAAAAAAMwtDbBgMfXOO+/k97//fX784x+noaEhlUoldXV1aWpqSpI88MADqVQq2W677bLTTjvlq1/9aj7zmc/M9lwfX9Tbsoj45Zdfzssvv5y6urrU19dn4sSJSZLm5ubqnNlp2f/QQw9l2rRp1YXKO+20U0ql0ixv8wX+R66heOQaikeuoXjkGopFpqF45BqKR66heOQaAAAAAAAAAAAAmFdeZQmLoTFjxuRHP/pRfvCDH2T69OnVRb2VSqU6p76+PqVSKXfccUdOPPHEjBgxIvfdd1+mTZtWnfPx+TNr2VepVPLee+/lpptuSjJjkfGcjiuXy9Va7rvvvuq8vn37Zu21156PTwzFJ9dQPHINxSPXUDxyDcUi01A8cg3FI9dQPHINAAAAAAAAAAAAzA8NsGAx8+abb+akk07Kb3/72zQ3NydJOnXqlEGDBmXzzTfPkCFD0qNHj+qbdUulUhobG/Pss89m9913z69+9as8//zzSZJSqTTHBcEDBgzIcsstl7q6uiTJH/7wh/z1r3+d43Hlcrn6Nt4zzjgjf/zjH6vbd9lll4wYMWKB/1lAUcg1FI9cQ/HINRSPXEOxyDQUj1xD8cg1FI9cAwAAAAAAAAAAAPOrrqMLAObOxRdfnGuvvTblcjl1dXUZOnRofvOb32SllVbKcsstlw8++CBvvfVWLrvssowePTqjR49OY2Nj6uvr895772XUqFF5/PHHc/jhh2ezzTarLggulUqtrtO5c+f06dMn48aNS01NTcaMGZOLL744PXr0yJZbbplSqZRyuZwkqampqS4gvvDCC3PeeedVz7PZZpvljDPOSJLZXgeQaygiuYbikWsoHrmGYpFpKB65huKRaygeuQYAAAAAAAAAAADmWwVYbNxzzz2V2traSqlUqpRKpcpmm21WGTt2bKVSqVSam5srlUql0tTUVKlUKpXp06dX3nnnncphhx1W6dKlS/WYUqlU6dy5c2X77bev/OMf/6ieu1wuz/LzddddV+natWv1uNra2soXvvCFytVXX92qrqampkpjY2PlpJNOqvTq1atSU1NTKZVKlbXXXrty4403VhobGxfqnwsszuQaikeuoXjkGopHrqFYZBqKR66heOQaikeuAQAAAAAAAAAAgAWhVKlUKh3dhAv4ZJVKJQ0NDfnGN76Ra6+9Nkmy9NJL58EHH8xqq62WcrlcfYvt7Fx00UW57LLL8uijj1a31dXVZd11181JJ52UL37xi9XrfPwtt2PGjMmJJ56YP/7xj2lsbEyS6v599tknQ4YMyeqrr5677rorL7/8cu6+++7qsauvvnq+973v5etf/3q6d+++4P4woCDkGopHrqF45BqKR66hWGQaikeuoXjkGopHrgEAAAAAAAAAAIAFqa6jCwA+XalUSrlcztNPP13dttNOO2W11VZLY2Nj6uvrZ3tcc3Nzamtrc+ihh2bAgAG54oorcuONNyZJmpqa8thjj+XEE09MfX19Pv/5z6dUKrVaSDxw4MD8v//3//Lee+/lzjvvTENDQ+rq6tLY2Jg//vGPc6x33XXXzbe//e3ss88+FhDDHMg1FI9cQ/HINRSPXEOxyDQUj1xD8cg1FI9cAwAAAAAAAAAAAAuSBliwmHjxxRfz8ssvp6amJuVyOZ/5zGeSZI4LiJOktra2+obdnXbaKX369EmPHj3y29/+NsmMt+Y+/fTTOeOMM9K1a9dsueWW1QXELYuJt9hii9TW1ma55ZbLddddl6lTp6Zz585pbGxMbW1t6uvrM2XKlGpd22+/fY488shsueWW6dat28L/g4HFmFxD8cg1FI9cQ/HINRSLTEPxyDUUj1xD8cg1AAAAAAAAAAAAsKBogAWLkXK5XF3k27J4uOVNuXNSU1NTXRC80UYbpWvXrunWrVsuvPDCVCqVNDU1ZfTo0Tn//PPTq1evrLPOOknS6o26m266aZZbbrlsu+22+dGPfpT33nsv06dPT7lcTmNjY5Jk+PDh2XLLLfPTn/40dXX+aYG2kmsoHrmG4pFrKB65hmKRaSgeuYbikWsoHrkGAAAAAAAAAAAAFgQr/WAxscwyy6RHjx559913kyT33HNPJk6cmJ49e37qsR9fELzOOuvksMMOy7Rp03LFFVckSRoaGnL77bdn6NChGTBgQHr16lU9rsWgQYMyaNCgbLPNNnnmmWfyyCOPZOrUqenVq1dWW221rLvuulluueWS/O8NvMAnk2soHrmG4pFrKB65hmKRaSgeuYbikWsoHrkGAAAAAAAAAAAAFpRSpVKpdHQRwCerVCp5++23s8022+S5555LTU1Nlltuudxzzz0ZNGhQyuVyampq5uqcDz/8cM4555z84Q9/qG7r3bt3fve732XnnXee7Tnbch0LiKFt5BqKR66heOQaikeuoVhkGopHrqF45BqKR64BAAAAAAAAAACABWnuVh0CHaJUKqV///7Zddddq+M33ngjp5xySpLM1QLilp53G2ywQQ4++OBsttlmSZLa2tp88MEH+da3vpU33nhjtuec3baZe+hZQAxtI9dQPHINxSPXUDxyDcUi01A8cg3FI9dQPHINAAAAAAAAAAAALEgaYMFioGWh7uc+97l06tQpNTU1qampyT333JM///nP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+Oy0007529/+lq222mohVgoAAAAAAAAAAAAAAAAAC09NRxcAAAAAAMyqa9eu+X//7//lv//9b4488shW+6ZOnZp99tkn48aN66DqAAAAAAAAAAAAAAAAAGD+aIAFAAAAAIuwurq6nHPOOTnnnHNabX/33Xdz7LHHdlBVAAAAAAAAAAAAAAAAADB/6jq6AAAAAADg0x155JG59957c/PNN1e3XXPNNTnxxBOz+uqrt+kcr7/+ep5++um8+uqr+fDDD5MkyyyzTFZYYYVssskm6d2790KpfV49//zzeeKJJ/Luu+/mww8/zDLLLJPll18+m2++eZZZZpmOLg8AAAAAAAAAAAAAAACA+aABFgAAAAAsJs4+++zccsstKZfLSZJKpZLf/OY3Oeecc2Y7v6mpKXfccUduuOGG3HHHHRk7duwcz10qlbLxxhvnBz/4QXbbbbeUSqU5zr3rrruy9dZbz3bfnLa3qFQqn7h/8uTJ+fnPf57f/va3efXVV2c7p7a2NltssUVOOeWUbLHFFp94PgAAAAAAAAAAAAAAAAAWTTUdXQAAAAAA0DarrLJKdtlll1bb/vSnP81x/n777Zcdd9wxl1122Sc2v0pmNKYaPXp09thjj+y999756KOPFkTJc+W2227LqquumpNPPnmOza+SpLm5OXfddVe23HLLfOtb30pTU1M7VgkAAAAAAAAAAAAAAADAgqABFgAAAAAsRvbcc89W41dffXWOza2mTZs2y7bPfOYzWWuttbLRRhvls5/9bPr27TvLnJtuuim77bZbyuXygim6DS6++OLsvvvueeedd1pt79atW9Zcc81suOGGGTx4cGpqamY5bu+9906lUmm3WgEAAAAAAAAAAAAAAACYf3UdXQAAAAAA0HYbbbTRLNsef/zxrLzyyrOd37dv3+y7777Zeeeds+GGG8624dVLL72Uyy+/POeee261adY///nPnH/++TnyyCNnmf/Zz342//jHP5Ikv/vd73LVVVdV95199tn57Gc/O1ef6Z///GcOO+ywVg23dtlllxx99NHZbLPNUlf3v9uY77//fi699NKcdtppmTRpUpLklltuyVlnnZXjjjturq4LAAAAAAAAAAAAAAAAQMcpVSqVSkcXAQAAAABFNXDgwIwdO7Y6/te//pURI0bM8/kqlUqWWmqpTJ48ubrt5z//eY466qhZ5o4ePTrrrbdeunTp0qZz/+c//8m2226b999/P0mywgorZMyYMa0aUM3s5JNPzqhRo6rjuf18EyZMyJprrpm33norSVJTU5NLLrkk3/jGNz7xuGeeeSYjRozIu+++myTp1KlTxo4dm/79+7f52gAAAAAAAAAAAAAAAAB0nJqOLgAAAAAAaLtSqZQ+ffq02jZu3LjZzt1kk03a3PwqSdZdd92cddZZ1fEbb7yRv//97/NWaBtddNFF1eZXSXL66ad/avOrJFlrrbVy5ZVXVscNDQ351a9+tTBKBAAAAAAAAAAAAAAAAGAh0AALAAAAABYzvXr1ajWePHnyAjv3fvvtl9ra2ur4/vvvX2Dnnllzc3N++ctfVscDBgzI0Ucf3ebjd9ppp6y33nrV8Y033rhA6wMAAAAAAAAAAAAAAABg4dEACwAAAAAWMz169Gg1bmhoWGDn7t69e/r161cdP/744wvs3DN74okn8uabb1bH++23X+rr6+fqHDvssEP15+eeey7jx49fYPUBAAAAAAAAAAAAAAAAsPDUdXQBAAAAAMDcmTRpUqtx586dP/WYp59+OjfccEMee+yxPPPMM/nggw8yceLENDY2fuJxC7Oh1L333ttqvP7668/1OQYMGNBq/Oyzz2aLLbaYr7oAAAAAAAAAAAAAAAAAWPg0wAIAAACAxcyHH37YatyjR485zn3yySfzne98J/fcc888XWvChAnzdFxbPPvss63G++6773yf8/3335/vcwAAAAAAAAAAAAAAAACw8GmABQAAAACLkUqlkvHjx7fatvzyy8927m233Za99torDQ0N83y96dOnz/Oxn+a9995b4OecuTkYAAAAAAAAAAAAAAAAAIsmDbAAAAAAYDHy3HPP5aOPPmq1bdVVV51l3gsvvJC99967VfOrUqmUDTfcMJtuumlWWWWV9O/fP126dEmXLl1aHfu1r30tb7/99sL5AB8zYcKEBX7Ocrm8wM8JAAAAAAAAAAAAAAAAwIKnARYAAAAALEYeeuihWbatt956s2z74Q9/mOnTp1fHG264YX77299mjTXW+NRrlEql+Suyjbp169ZqfMYZZ2T48OHzdc6hQ4fO1/EAAAAAAAAAAAAAAAAAtA8NsAAAAABgMXLDDTe0Gg8ePDgrrrhiq22TJ0/OX/7yl+p42WWXze23357evXu36RoffPDB/BfaBn379m01HjRoULbbbrt2uTYAAAAAAAAAAAAAAAAAHaumowsAAAAAANrmlVdeyV//+tdW2/bYY49Z5j322GNpaGiojr/85S+3ufnVSy+9lOnTp89foW00aNCgWa4NAAAAAAAAAAAAAAAAwJJBAywAAAAAWEwcc8wxKZfL1XFNTU3+3//7f7PMe/vtt1uNV1999TZf484775yrmmpqWt9irFQqbT526623nq9rAwAAAAAAAAAAAAAAALD40gALAAAAABYD5557bm6++eZW2/bff/8MHjx4lrkzN6FqaGho0zUqlUouvPDCuaqre/furcZTpkxp87EbbrhhevfuXR3feeedeeaZZ+bq+gAAAAAAAAAAAAAAAAAsnjTAAgAAAIBFWFNTU44++ugcddRRrbb3798/Z5555myP6d+/f6vxv//97zZd68ILL8x//vOfuapvmWWWaTV+9dVX23xsfX19vv/971fHlUol3/rWt9LY2DhXNQAAAAAAAAAAAAAAAACw+NEACwAAAAAWQdOmTcsll1ySddZZJ+ecc06rfd26dcsNN9yQfv36zfbY4cOHp1OnTtXxTTfdlPvvv/8Tr3fbbbfN0mSrLYYOHdpqfOONN87V8d/73vey7LLLVsf//ve/s/fee+fDDz9s8zk++uij/OIXv8hll102V9cGAAAAAAAAAAAAAAAAoOPUdXQBAAAAALAkefTRR9PU1NRqW2NjYyZMmJAJEyZkzJgxeeCBB/LII49kypQpsxy/7LLL5oYbbshmm202x2t07949e+21V6699tokSXNzc3bcccf87Gc/y/77758uXbpU57744os599xz85vf/Cblcjn9+vVLc3Nz3nvvvTZ9nvXWWy99+/bN+PHjkyR33XVXttlmm+y7774ZMGBAq0ZcSbLddtu1Gi+99NK5/vrrs+2226axsTFJ8uc//zlDhw7NkUcemX322ScDBgyY5bqvvfZaHnzwwfzpT3/KrbfemokTJ2bkyJFtqhkAAAAAAAAAAAAAAACAjleqVCqVji4CAAAAAIpq4MCBGTt27AI513777Zdzzz03/fv3/9S5L7/8cj73uc9l4sSJrbZ36dIlq622Wjp37pxx48bl9ddfr+6rra3NrbfemsMOO6xa88orr5wxY8Z84rVOPfXUnHTSSW36DHO6HXndddfloIMOyrRp02bZt9xy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", + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Image(f)" + ] + }, + { + "cell_type": "markdown", + "id": "3b60d930-e74e-41ae-9cf5-8d3386dda63c", + "metadata": {}, + "source": [ + "\n", + "\n", + "The sandboxed environment allows for arbitrary code execution. To ensure safety:\n", + "\n", + "* **Never place secrets (e.g., API keys, credentials) or sensitive files inside the sandbox**.\n", + " The agent operates on untrusted input, and **prompt injection attacks can exfiltrate anything inside the sandbox**.\n", + "\n", + "* The sandbox **does protect your local/production machine** from harmful code (e.g., file deletion, network access), as code execution is fully isolated.\n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 7ab035be85e6d780a1bc9148c84bd620668ae248 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 12 Aug 2025 11:35:40 -0400 Subject: [PATCH 21/24] x --- src/langchain_v1/supervisor.ipynb | 219 ++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 src/langchain_v1/supervisor.ipynb diff --git a/src/langchain_v1/supervisor.ipynb b/src/langchain_v1/supervisor.ipynb new file mode 100644 index 000000000..cf8d39841 --- /dev/null +++ b/src/langchain_v1/supervisor.ipynb @@ -0,0 +1,219 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d15bdb75-9473-461f-b13f-9c7a9bf89817", + "metadata": {}, + "source": [ + "---\n", + "title: \"Multiagent\"\n", + "ico\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "e6bf293b-831d-4ea7-8550-2c44d2874011", + "metadata": {}, + "source": [ + "# Multiagent" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "492b1e12-bc6d-411e-bf57-dab4435dcd33", + "metadata": {}, + "source": [ + "# Using agents as tools (supervisor)\n", + "\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdf55510-ede2-4ef1-834d-3ad5e2ec983e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chat_models import init_chat_model\n", + "from langchain_core.tools import tool\n", + "from langgraph.prebuilt import create_react_agent\n", + "\n", + "chat_model = init_chat_model(\"anthropic:claude-opus-4-20250514\")\n", + "\n", + "def book_hotel(hotel_name: str):\n", + " \"\"\"Book a hotel\"\"\"\n", + " return f\"Successfully booked a stay at {hotel_name}.\"\n", + "\n", + "def book_flight(from_airport: str, to_airport: str):\n", + " \"\"\"Book a flight\"\"\"\n", + " return f\"Successfully booked a flight from {from_airport} to {to_airport}.\"\n", + "\n", + "flight_assistant = create_react_agent(\n", + " model=\"anthropic:claude-opus-4-20250514\",\n", + " tools=[book_flight],\n", + " prompt=\"You are a flight booking assistant\",\n", + " name=\"flight_assistant\"\n", + ")\n", + "\n", + "hotel_assistant = create_react_agent(\n", + " model=\"anthropic:claude-opus-4-20250514\",\n", + " tools=[book_hotel],\n", + " prompt=\"You are a hotel booking assistant\",\n", + " name=\"hotel_assistant\"\n", + ")\n", + "\n", + "\n", + "@tool\n", + "def booking_agent(instructions: str):\n", + " \"\"\"Give instructions to the booking agent about what flight to book.\"\"\"\n", + " results = flight_assistant.invoke({\n", + " \"messages\": [{\n", + " \"role\": \"user\",\n", + " \"content\": instructions\n", + " }]\n", + " })\n", + " return results['messages'][-1].content\n", + "\n", + "\n", + "@tool\n", + "def hotel_agent(instructions: str):\n", + " \"\"\"Give instructions to the hotel assistant about what hotel to book.\"\"\"\n", + " result = hotel_assistant.invoke({\n", + " \"messages\": [{\n", + " \"role\": \"user\",\n", + " \"content\": instructions\n", + " }]\n", + " })\n", + " return result['messages'][-1].content\n", + "\n", + "supervisor = create_react_agent(\n", + " model=chat_model,\n", + " prompt=(\n", + " \"You manage a hotel booking assistant and a\"\n", + " \"flight booking assistant. Assign work to them based on the user requests.\"\n", + " ),\n", + " tools=[hotel_agent, booking_agent],\n", + ")\n", + "\n", + "response = supervisor.invoke(\n", + " {\n", + " \"messages\": [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"book a flight from BOS to JFK and a stay at McKittrick Hotel\"\n", + " }\n", + " ]\n", + " }\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "id": "f7432fb3-cc9f-4b7f-a6db-aa9cba7ca7ea", + "metadata": {}, + "source": [ + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1db1ec20-3630-46b3-a733-214f4241060f", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import create_react_agent\n", + "from langgraph_supervisor import create_supervisor\n", + "from langchain.chat_models import init_chat_model\n", + "\n", + "chat_model = init_chat_model(\"google_vertexai: gemini-2.5-flash\")\n", + "\n", + "def book_hotel(hotel_name: str):\n", + " \"\"\"Book a hotel\"\"\"\n", + " return f\"Successfully booked a stay at {hotel_name}.\"\n", + "\n", + "def book_flight(from_airport: str, to_airport: str):\n", + " \"\"\"Book a flight\"\"\"\n", + " return f\"Successfully booked a flight from {from_airport} to {to_airport}.\"\n", + "\n", + "flight_assistant = create_react_agent(\n", + " model=\"anthropic:claude-opus-4-20250514\",\n", + " tools=[book_flight],\n", + " prompt=\"You are a flight booking assistant\",\n", + " name=\"flight_assistant\"\n", + ")\n", + "\n", + "hotel_assistant = create_react_agent(\n", + " model=\"anthropic:claude-opus-4-20250514\",\n", + " tools=[book_hotel],\n", + " prompt=\"You are a hotel booking assistant\",\n", + " name=\"hotel_assistant\"\n", + ")\n", + "\n", + "\n", + "hotel_assistant = create_react_agent(\n", + " model=\"anthropic:claude-opus-4-20250514\",\n", + " tools=[book_hotel],\n", + " prompt=\"You are a hotel booking assistant\",\n", + " name=\"hotel_assistant\"\n", + ")\n", + "\n", + "supervisor = create_supervisor(\n", + " model=chat_model,\n", + " prompt=(\n", + " \"You manage a hotel booking assistant and a\"\n", + " \"flight booking assistant. Assign work to them.\"\n", + " ),\n", + " agents=[flight_assistant, hotel_assistant],\n", + ").compile()\n", + "\n", + "response = supervisor.invoke(\n", + " {\n", + " \"messages\": [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"book a flight from BOS to JFK and a stay at McKittrick Hotel\"\n", + " }\n", + " ]\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "09a0b435-715f-4904-9001-fb3e291d8556", + "metadata": {}, + "source": [ + " \n", + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From f2ecb8268ab31a97b6677c6bac34b49710d18a76 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 12 Aug 2025 13:22:30 -0400 Subject: [PATCH 22/24] x --- src/langchain_v1/supervisor.md | 319 +++++++++++++++++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 src/langchain_v1/supervisor.md diff --git a/src/langchain_v1/supervisor.md b/src/langchain_v1/supervisor.md new file mode 100644 index 000000000..439df24ab --- /dev/null +++ b/src/langchain_v1/supervisor.md @@ -0,0 +1,319 @@ +--- +title: Multi-agent +icon: "people-group" +--- + +**Multi-agent systems** break a complex application into multiple specialized agents that work together to solve problems. +Instead of relying on a single agent to handle every step, **multi-agent architectures** allow you to compose smaller, focused agents into a coordinated workflow. + +Multi-agent systems are useful when: + +* A single agent has too many tools and makes poor decisions about which to use. +* Context or memory grows too large for one agent to track effectively. +* Tasks require **specialization** (e.g., a planner, researcher, math expert). + +Benefits include: + +| Benefit | Description | +|--------------------|-------------------------------------------------------------------| +| **Modularity** | Easier to develop, test, and maintain smaller, focused agents. | +| **Specialization** | Each agent can be optimized for a particular domain or task type. | +| **Control** | Explicitly define communication and control flow between agents. | + +## Two common patterns + +| Pattern | How it Works | Control Flow | Example Use Case | +|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|--------------------------------------------------| +| **Tool Calling** | A central agent calls other agents as *tools*. The “tool” agents don’t talk to the user directly — they just run their task and return results. | Centralized — all routing passes through the calling agent. | Task orchestration, structured workflows. | +| **Handoffs** | The current agent decides to **transfer control** to another agent. The active agent changes, and the user may continue interacting directly with the new agent. | Decentralized — agents can change who is active. | Multi-domain conversations, specialist takeover. | + +### Tool calling + +In **tool calling**, one agent (the “**controller**”) treats other agents as *tools* to be invoked when needed. + +Flow: + +1. The **controller** receives input and decides which tool (subagent) to call. +2. The **tool agent** runs its task based on the controller’s instructions. +3. The **tool agent** returns results to the controller. +4. The **controller** decides the next step or finishes. + +✅ Predictable, centralized routing. +⚠️ Tool agents won’t initiate new questions to the user — their role is fully defined by the controller. + +```mermaid +graph LR + A[User] --> B[Controller Agent] + B --> C[Tool Agent 1] + B --> D[Tool Agent 2] + C --> B + D --> B + B --> E[User Response] +```` + +### Handoffs + +In **handoffs**, agents can directly pass control to each other. The “active” agent changes, and the user interacts with whichever agent currently has control. + +Flow: + +1. The **current agent** decides it needs help from another agent. +2. It passes control (and state) to the **next agent**. +3. The **new agent** interacts directly with the user until it decides to hand off again or finish. + +✅ Flexible, more natural conversational flow between specialists. +⚠️ Less centralized — harder to guarantee predictable behavior. + +```mermaid +graph LR + A[User] --> B[Agent A] + B --> C[Agent B] + C --> A +``` + +## Choosing between tool calling and handoffs + +| Question | Tool Calling | Handoffs | +|-------------------------------------------------------|--------------|----------| +| Need centralized control over workflow? | ✅ Yes | ❌ No | +| Want agents to interact directly with the user? | ❌ No | ✅ Yes | +| Complex, human-like conversation between specialists? | ❌ Limited | ✅ Strong | + + +You can also combine these patterns — e.g., use a top-level **tool-calling controller** for high-level routing, but allow **handoffs** within a team of related agents for smoother conversation. + + +**Example**: [Multi-agent Tool Calling](https://langchain-ai.github.io/langgraph/tutorials/multi_agent/agent_supervisor) · [Handoffs](https://langchain-ai.github.io/langgraph/how-tos/multi_agent/#handoffs) + +## How handoffs work + +Under the hood, **handoffs** are implemented as tools. +When an agent decides to hand off, it invokes a special *handoff tool* that: + +1. Updates the **graph state** with any necessary information. +2. Changes the **active agent** so that subsequent steps are handled by the new agent. + +This means that supporting handoffs in your system requires tracking the **currently active agent** in the shared graph state, so the runtime always knows which agent is “in control.” + + +### Context engineering + +Whether you’re implementing handoffs or tool calling, the quality of your system depends heavily on **how you pass context** to agents and subagents. + +LangGraph gives you fine-grained control over this process, allowing you to: + +* Decide **which parts of the conversation history** or state are passed to each agent. +* Provide **specialized prompts** for different subagents. +* Include or exclude **intermediate reasoning steps** from the shared state. +* Tailor inputs so that each agent gets exactly the information it needs to work effectively. + +This **context engineering** capability lets you fine-tune every aspect of agent behavior, ensuring that each agent receives the right data, at the right time, in the right format — whether it’s acting as a tool or taking over as the active agent via a handoff. + +## Supervisor (using tools) + + + + +```python Expandable Supervisor from scratch +from langchain.chat_models import init_chat_model +from langchain_core.tools import tool +from langgraph.prebuilt import create_react_agent + +chat_model = init_chat_model("anthropic:claude-opus-4-20250514") + +def book_hotel(hotel_name: str): + """Book a hotel""" + return f"Successfully booked a stay at {hotel_name}." + +def book_flight(from_airport: str, to_airport: str): + """Book a flight""" + return f"Successfully booked a flight from {from_airport} to {to_airport}." + +flight_assistant = create_react_agent( + model="anthropic:claude-opus-4-20250514", + tools=[book_flight], + prompt="You are a flight booking assistant", + name="flight_assistant" +) + +hotel_assistant = create_react_agent( + model="anthropic:claude-opus-4-20250514", + tools=[book_hotel], + prompt="You are a hotel booking assistant", + name="hotel_assistant" +) + + +@tool +def booking_agent(instructions: str): + """Give instructions to the booking agent about what flight to book.""" + results = flight_assistant.invoke({ + "messages": [{ + "role": "user", + "content": instructions + }] + }) + return results['messages'][-1].content + +@tool +def hotel_agent(instructions: str): + """Give instructions to the hotel assistant about what hotel to book.""" + result = hotel_assistant.invoke({ + "messages": [{ + "role": "user", + "content": instructions + }] + }) + return result['messages'][-1].content + +supervisor = create_react_agent( + model=chat_model, + prompt=( + "You manage a hotel booking assistant and a" + "flight booking assistant. Assign work to them based on the user requests." + ), + tools=[hotel_agent, booking_agent], +) + +response = supervisor.invoke( + { + "messages": [ + { + "role": "user", + "content": "book a flight from BOS to JFK and a stay at McKittrick Hotel" + } + ] + } +) + +``` + + + + + +```python Expandable Supervisor prebuilt +from langgraph.prebuilt import create_react_agent +from langgraph_supervisor import create_supervisor +from langchain.chat_models import init_chat_model + +chat_model = init_chat_model("google_vertexai: gemini-2.5-flash") + +def book_hotel(hotel_name: str): + """Book a hotel""" + return f"Successfully booked a stay at {hotel_name}." + +def book_flight(from_airport: str, to_airport: str): + """Book a flight""" + return f"Successfully booked a flight from {from_airport} to {to_airport}." + +flight_assistant = create_react_agent( + model="anthropic:claude-opus-4-20250514", + tools=[book_flight], + prompt="You are a flight booking assistant", + name="flight_assistant" +) + +hotel_assistant = create_react_agent( + model="anthropic:claude-opus-4-20250514", + tools=[book_hotel], + prompt="You are a hotel booking assistant", + name="hotel_assistant" +) + + +hotel_assistant = create_react_agent( + model="anthropic:claude-opus-4-20250514", + tools=[book_hotel], + prompt="You are a hotel booking assistant", + name="hotel_assistant" +) + +supervisor = create_supervisor( + model=chat_model, + prompt=( + "You manage a hotel booking assistant and a" + "flight booking assistant. Assign work to them." + ), + agents=[flight_assistant, hotel_assistant], +).compile() + +response = supervisor.invoke( + { + "messages": [ + { + "role": "user", + "content": "book a flight from BOS to JFK and a stay at McKittrick Hotel" + } + ] + } +) +``` + + + + +### Context engineering with tools + +LangGraph tools are flexible and give you the ability to both read and write context appropriately. + +### Include the final result + +```python +@tool +def booking_agent(instructions: str): + """Give instructions to the booking agent about what flight to book.""" + results = flight_assistant.invoke({ + "messages": [{ + "role": "user", + "content": instructions + }] + }) + return results['messages'][-1].content +``` + +### Include internal message history in ToolMessage + +```python +@tool +def booking_agent(instructions: str) -> str: + """Use an agent to book a flight.""" + result = flight_assistant.invoke({ + "messages": [{ + "role": "user", + "content": instructions + }] + }) + if len(result['messages']) == 0: + raise AssertionError("No messages in the result from flight assistant.") + + content = "" + for msg in result['messages'][:-1]: + content += f"{msg['content']}" + content += "" + content += f"{result['messages'][-1]['content']}" + return content +``` + +### Attach internal message history to the overall graph state + +```python +@tool +def booking_agent(instructions: str) -> str: + """Use an agent to book a flight.""" + result = flight_assistant.invoke({ + "messages": [{ + "role": "user", + "content": instructions + }] + }) + if len(result['messages']) == 0: + raise AssertionError("No messages in the result from flight assistant.") + + content = "" + for msg in result['messages'][:-1]: + content += f"{msg['content']}" + content += "" + content += f"{result['messages'][-1]['content']}" + return content +``` From eca8d2ad99eb0efd0fef84a65fba19b0cde26c6c Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 12 Aug 2025 13:31:01 -0400 Subject: [PATCH 23/24] x --- src/docs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/docs.json b/src/docs.json index b3d35c742..a437216b0 100644 --- a/src/docs.json +++ b/src/docs.json @@ -64,7 +64,8 @@ "langchain_v1/map_reduce", "langchain_v1/recursive", "langchain_v1/rag_agent", - "langchain_v1/data_analysis" + "langchain_v1/data_analysis", + "langchain_v1/supervisor" ] } ] From edb3b45334e329422cebbbb46fc912de97741f28 Mon Sep 17 00:00:00 2001 From: Eugene Yurtsev Date: Tue, 12 Aug 2025 13:39:07 -0400 Subject: [PATCH 24/24] x --- src/langchain_v1/supervisor.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/langchain_v1/supervisor.md b/src/langchain_v1/supervisor.md index 439df24ab..b363a50c9 100644 --- a/src/langchain_v1/supervisor.md +++ b/src/langchain_v1/supervisor.md @@ -96,7 +96,7 @@ When an agent decides to hand off, it invokes a special *handoff tool* that: This means that supporting handoffs in your system requires tracking the **currently active agent** in the shared graph state, so the runtime always knows which agent is “in control.” -### Context engineering +## Context engineering Whether you’re implementing handoffs or tool calling, the quality of your system depends heavily on **how you pass context** to agents and subagents. @@ -111,6 +111,7 @@ This **context engineering** capability lets you fine-tune every aspect of agent ## Supervisor (using tools) +